Mantis Bugtracker
  

Viewing Issue Simple Details Jump to Notes ] View Advanced ] Issue History ] Print ]
ID Category Severity Reproducibility Date Submitted Last Update
0006828 [Squeak] VM minor N/A 12-27-07 23:05 02-23-13 18:48
Reporter tim View Status public  
Assigned To lewis
Priority normal Resolution open  
Status assigned   Product Version 3.9
Summary 0006828: make FileCopyPlugin work on 32/64 bit images and 32/64 bit unix VMs
Description From: lewis@mail.msen.com
November 18, 2007 4:18:45 PM PST (CA)
This is a set of support code patches that make FileCopyPlugin work on
32/64 bit images and 32/64 bit unix VMs, plus a unit test for verification.

FileCopyPluginTest-dtl.cs provides a unit test to verify operation of
the FileCopyPlugin. Interestingly, the FileCopyPlugin has never worked
correctly on Unix because it answered a primitiveFail after a successful
copy operation. That means that the primitive code was doing the copy,
and the fallback code would re-do it afterward.

The support code changes are in the following files:

- For all platforms (unix and Mac OS are impacted):
   platforms/Cross/plugins/FileCopyPlugin/FileCopyPlugin.h

- For Unix:
   platforms/unix/plugins/FileCopyPlugin/sqUnixFileCopyPlugin.c
   platforms/unix/vm/sqUnixCharConv.c
   platforms/unix/vm/sqPlatformSpecific.h

- Mac OS platform code will need an update also, but I did not try to do
 this (it should be simple, but I cannot test the result).

- Win32 and RiscOS do not appear to be impacted.

Dave

Additional Information
Attached Files  FileCopyPluginFixes.zip [^] (5,262 bytes) 12-27-07 23:05

- Relationships

- Notes
(0011595 - 412 - 424 - 424 - 424 - 424 - 424)
tim
12-27-07 23:49

On 27-Dec-07, at 3:47 PM, tim Rowledge wrote:

Dave did the work to make the FileCopyPlugin work properly - and yes, I know it is vile, awful, tasteless and shouldn't exist, thank you, but until the file system is rewritten to a standard slightly better than that achievable by drunken macacque it is needed - and I don't know if the changes have been incorporated in the repository. Has anyone updated things?
 
(0011597 - 522 - 534 - 534 - 534 - 534 - 534)
johnmci
12-28-07 00:31

The unix file code just opens a new file, reads the old file, writes to the new file. This does not preserve file use attributes or create/mod dates, ACLs etc. Also for os-x HFS system you have HFS+ data, attributes, data/resource fork and a mess of other bits.

In os-x 10.4 there is a api now to copy file objects. I guess the question is now good do you want this to work? Note in Sophie we use FFI to copy files on the macintosh to preserve os-9 meta-data on media files so that quicktime will do the right thing.
 
(0011598 - 492 - 504 - 504 - 504 - 504 - 504)
tim
12-28-07 01:17

On any platform that has file ownership. permissions, creator types, metadata that affects what happens to the file, whatever, it should all be copied 'correctly' whatever that means.

The Squeak code to copy a file does none of that. On RISC OS for example that would mean the filetype going AWOL which then makes life annoying for anyone trying to read the file in a texteditor. On Macs the lack of file type metadata might mean the XCode app deciding it isn't really a C file. etc., etc.
 
(0014316 - 629 - 645 - 645 - 645 - 645 - 645)
tim
02-23-13 06:38

I would be *very* surprised if this were actually needed any more on *nix. It was only ever implemented as a quick hack to copy a file without losing the permissions & date that helped keep things straight for an early version of VMMaker. So far as I can see the unxi usage of VMMaker doesn't copy any files around and so it's hard to see it being worth keeping around.

For RISC OS it is essential for keeping the file meta-data correct - but then RISC OS does the proper sort of copy with a trivial system call, not the astonishing list of complicated flim-flammery unix seems to need. Similar reasons seem to exist on OS X.
 
(0014318 - 316 - 316 - 316 - 316 - 316 - 316)
lewis
02-23-13 13:57

The plugin is definitely not used on unix platforms, and should should be removed from the actual VM distributions for unix. Probably a good way to do that is just delete the platform support code for unix (platforms/unix/plugins/FileCopyPlugin) so that it does not get built, but leave the plugin in VMMaker itself.
 
(0014319 - 198 - 204 - 204 - 204 - 204 - 204)
tim
02-23-13 18:48

Yup. If Ian cares to pull the unix platform code for it, VMMaker will take care of the rest.
I wonder if the file system code will ever actually get improved enough to make it un-needed everywhere?
 

- Issue History
Date Modified Username Field Change
12-27-07 23:05 tim New Issue
12-27-07 23:05 tim Status new => assigned
12-27-07 23:05 tim Assigned To  => tim
12-27-07 23:05 tim File Added: FileCopyPluginFixes.zip
12-27-07 23:49 tim Note Added: 0011595
12-28-07 00:31 johnmci Note Added: 0011597
12-28-07 01:17 tim Note Added: 0011598
05-27-08 18:33 tim Status assigned => acknowledged
11-24-08 18:06 lewis Issue Monitored: lewis
01-09-11 22:50 lewis Status acknowledged => assigned
01-09-11 22:50 lewis Assigned To tim => lewis
02-23-13 06:38 tim Note Added: 0014316
02-23-13 13:57 lewis Note Added: 0014318
02-23-13 18:48 tim Note Added: 0014319


Mantis 1.0.8[^]
Copyright © 2000 - 2007 Mantis Group
62 total queries executed.
40 unique queries executed.
Powered by Mantis Bugtracker