[dcc2] MultiFile Transfer Headers

codemstr at ptdprolog.net codemstr at ptdprolog.net
Thu Apr 29 22:55:23 EDT 2004


> File permissions are a bit tricky, since each platform can specify them in 
> a different manner.  Any suggestions?

I think the best suggestion is to ditch this idea. The reason is, it is much 
MUCH more complex than simply adding a UNIX style bitmask. For example, 
Solaris2 supports ACLs. So should we transmit the ACL? That could be huge. 
Windows NT also has an ACL type thing. And some systems have more than the 
simple rwx system. Windows, for example, has the binary/text flag. Windows 
also has the archive flag, the system file flag, and even the OS protected 
file flag. Should they be sent? Some OSes allow you to treat an "append" 
different than a "write." And even on many UNIX based OSes. You have the S 
flag (setuid, setgid, sticky). Plus, as someone else mentioned, you have 
security issues/potential user confusion. "I just downloaded this file, how 
come it won't let me write to it???" (+r) "It's .sh, why won't my system let 
me execute it???" (-x) etc. Personally, I think the user should have control 
over what the permissions are for file on his/her own system, not the sender.

Honestly, I even see problems with the "created" header. UNIX doesn't have a 
created time stamp. People often think it does, but it doesn't. UNIX stores 
the modification time, and the access time for a file. The timestamp people 
usually think of as the creation (because it is referred to as ctime) is 
really the timestamp for inode change, not for file creation. So again, this 
isn't something that can be handled across OSes. And, then if you can't set 
the creation time, setting the modification time will just lead to 
confusion. "This file was modified before it was created?" Etc. "Why was this 
file created in the future?" Again, in my mind, the user should have control 
over that information, not the sender. But one thing, if you do decide to 
keep the timestamps, at least make it clear that the value should be in UTC 
time. Otherwise you'll get all sorts of interesting conflicts.

-- codemastr


More information about the dcc2 mailing list