* Charles Bailey <[EMAIL PROTECTED]> [2008-12-10 03:15]: > It may well be that a fine-grained interface isn't practical, > but perhaps there are some basics that we could implement, such > as > > - set owner of this thing > - (maybe) set group of this thing > - give owner|everyone|?some-group the ability to read > from|write to|remove|run this thing > - tell me whether any of these is possible > - make the metadata for this thing the same as the metadata for > that thing > - tell me when this thing was created|last updated
There are many problematic suggestions here. Some examples: • Unix does not track file creation datetime at all. • The concept of making a file runnable doesn’t even exist on Windows: that property is derived from the filename extension. • Delete permission on a file is a concept that doesn’t exist on Unix. To be able to delete a file, you instead need write permission on the directory it resides in. Furthermore, in Win32, files and directories can inherit permissions, so the fact that a file has certain effective permissions does not mean that these permissions are set on the file itself. But if you set them on the file itself, you dissociate it from the inheritance chain. So reading permissions and then setting them the same, without changing anything, can still have unwanted side effects. Or if you try to make the API smart, and so make it set permissions only when they constitute a change from the effective permissions, then conversely the user no longer has a way to dissociate the file from iheritance if that *is* what they wanted. So the concept of inheritance must be exposed explicitly. This is the primary issue I was thinking of when I said that some differences between Win32 and Unix have such pervasive effects that it seems impossible to provide even a rudimentary abstract interface. Regards, -- Aristotle Pagaltzis // <http://plasmasturm.org/>