Hello Mark,

Thanks for the rapid and detailed response. I'll have a play around with the things you suggest. However, I did try much smaller chunks initially (250Kb) but found the external drive which is used to hold both partitions (source & destination) went somewhat berserk and the copying was considerably slower! Given that the typical size of each backup file being copied is about 1.5Gb, 250Kb chunks would take too many cycles. This is why I increased the chunk size up to 10Mb.

I'll take a look at your AppleScript and shell suggestions for setting the dates.

Thanks again.

Regards,

Peter

On 6 Feb 2007, at 11:53 pm, Mark Schonewille wrote:

Hello Peter,

I think that 10MB is quit a big chunk of data. Have you tried smaller chunks as well? My experience is that smaller chunks give a smoother impression, while they don't slow down copying much.

I added a wait command to your code (see below).

To get and set the modification dates on Mac OS X, use AppleScript. To get the modification date (mind line wraps):

tell application "Finder" to set x to the modification date of file "System:Users:John:desktop:Untitled.html"

To set the modification date:

tell application "Finder" to set the modification date of file "System:Users:John:desktop:Untitled.html copy" to date "31-10-2007"

I believe that the date format needs to be the same as the system date if you want to write a date in abbreviated form.

AppleScript used by Revolution to copy modification dates:

on copyDate theSourceFile,theDestinationFile
if char 1 of theSourceFile is "~" then delete char 1 of theSourceFIle if char 1 of theDestinationFile is "~" then delete char 1 of theDestinationFile
  put "tell application 'Finder'" & cr & ¬
"set myDate to the modification date of POSIX file '/users/" & $USER & theSourceFile & "'" & cr & ¬ "set the modification date of POSIX file '/users/" & $USER & theDestinationFile & "' to myDate" & cr & ¬
  "end tell" into myScript
  replace "'" with quote in myScript
  do myScript as AppleScript
  return the result
end copyDate


usage of the copyDate command:

copyDate "~/desktop/Untitled.html","~/desktop/Untitled.html copy"
put the result

Note that the file paths need to be absolute file paths.

Unfortunately, I expect that using AppleScript to set modification dates may bring you back to the original problem, which was caused by AppleScript locking up Revolution. A better alternative might be to use a shell command, but I haven't looked into that yet. There is a command line utility (GetFileInfo) included in Apple's developer CD, which may be able to do the job.

Best,

Mark

--

Economy-x-Talk
Consultancy and Software Engineering
http://economy-x-talk.com
http://www.salery.biz

Get your store on-line within minutes with Salery Web Store software. Download at http://www.salery.biz

Op 6-feb-2007, om 23:24 heeft Peter Reid het volgende geschreven:

I've now managed to use buffered file copying for the problem I mentioned previously. Here is my file copying handler:

on copyAfile  sourceFile, destFolder, fCreatorType
  constant cBffrSize = 10485760 -- copy in 10Mbyte chunks
  set itemDelimiter to "/"
  put destFolder & last item of sourceFile into destFile

  -- set the Mac OS filetype & create destination file:
  set the fileType to fCreatorType
  open file destFile for binary write
  -- open source file:
  open file sourceFile for binary read

  -- copy the file data:
  put empty into dataBffr
  put false into gotEOF
  repeat until gotEOF
    read from file sourceFile for cBffrSize chars
    put the result is "eof" into gotEOF
    put it into dataBffr
    if dataBffr is not empty then
      write dataBffr to file destFile
    end if
wait 0 millisecs with messages -- increase number for more control over GUI
  end repeat

  close file destFile
  close file sourceFile

  -- copy Mac OS resource fork info:
  put getResources(sourceFile) into resourceList
  set itemDelimiter to comma
  repeat for each line i in resourceList
    put item 1 of i into resType
    put item 2 of i into resID
    put copyresource(sourceFile,destFile,resType,resID) into junk
wait 0 millisecs with messages -- increase number for more control over GUI
  end repeat
  put empty into junk
end copyAfile

The remaining problem I have is that the copied file has the current time & date NOT the same time & date as the original file. If I had used the revCopyFile, then the time & date would have been preserved.

Can anyone suggest how I can change the (creation or modified) time & date on a file so the copies are the same as the originals?

_______________________________________________
use-revolution mailing list
[email protected]
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-revolution

Reply via email to