Martin v. Löwis <[EMAIL PROTECTED]> wrote: > Nick Craig-Wood schrieb: > > So it looks like python mkdir() is applying the umask where as > > /bin/mkdir doesn't. From man 2 mkdir > > Actually, mkdir(1) has no chance to not apply the umask: it also > has to use mkdir(2), which is implemented in the OS kernel, and > that applies the umask. Try
Yes you are right of course. I didn't think that statment through did I! > strace mkdir -m770 test > > to see how mkdir solves this problem; the relevant fragment > is this: > > umask(0) = 022 > mkdir("test", 0770) = 0 > chmod("test", 0770) = 0 > > So it does *both* set the umask to 0, and then apply chmod. > > Looking at the source, I see that it invokes umask(0) not to > clear the umask, but to find out what the old value was. > It then invokes chmod to set any "special" bits (s, t) that > might be specified, as mkdir(2) isn't required (by POSIX spec) > to honor them. That makes sense - the odd sequence above is one of those Unix workarounds then... -- Nick Craig-Wood <[EMAIL PROTECTED]> -- http://www.craig-wood.com/nick -- http://mail.python.org/mailman/listinfo/python-list