On 15 April 2004 17:26, David T-G wrote: > Mike, et al -- > > ...and then Ford, Mike [LSS] said... > % > % On 15 April 2004 16:26, David T-G wrote: > % > % > but chmod() needs a permissions setting rather than a umask. % > > % > The challenge is in representing this as octal. With some ... > % > to feed to chmod() -- and apparently I can't just % > > % > $r = 0.$r ; > % > % That would be > % > % $r = '0'.$r; > > Hmmm... OK. > > > % > % I'm not sure, however, that this is a totally foolproof way > of doing it, as > % it would fail with any permission set (however unlikely) > where the owner > > Would it? Suppose I were setting it to 007; that would be 0007 with > the leading zero and should still be fine.
No. The way you're building it, $r would be an integer before you add the leading zero -- 007 would thus be represented as just 7, and adding the leading zero the way I've shown above would give '07'. Not good. > > > % odgit was a zero -- perhaps you should be sprintf()-ing it? > > Heck, I'll take any advice I can get :-) I think, though, that the > problem is that I'm trying to use a string -- if I can get it built > correctly in the first place -- as an octal digit. Possibly, but I think you're making the whole thing more complicated than it need be. After a quick look at the manual, I'd suggest this: $u = umask(); // Integer value of umask -- no need to convert // to octal representation as that's just a human // convenience of no value to your computer ;) $m = 0777; // $m is now an integer corresponding to octal // 0777 again, the visual representation of this // in octal (or binary, or hex...) is just a // human convenience. $r = $m ^ $u; // remove bits set in $u from $m (subtract should // work too, but since this is technically a // bitwise operation, I prefer the bitwise // operator! // $r is now the correct value, and just needs representing in octal: $r = sprintf('%04o', $r); // Done -- use it as you wish. Of course, I've been quite verbose there -- the short version is: $r = sprintf('%04o', 0777 ^ umask()); ... ;)) Cheers! Mike --------------------------------------------------------------------- Mike Ford, Electronic Information Services Adviser, Learning Support Services, Learning & Information Services, JG125, James Graham Building, Leeds Metropolitan University, Beckett Park, LEEDS, LS6 3QS, United Kingdom Email: [EMAIL PROTECTED] Tel: +44 113 283 2600 extn 4730 Fax: +44 113 283 3211 -- PHP General Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php