Date: Sat, 13 Aug 2005 20:51:19 +0400 From: Igor Pokrovsky <ip@doom.homeunix.org> To: hackers@freebsd.org Subject: Re: perl's tie problem Message-ID: <20050813165119.GA1234@doom.homeunix.org> In-Reply-To: <200508122034.j7CKYp2x033829@wattres.watt.com> References: <20050812194927.GA74052@doom.homeunix.org> <200508122034.j7CKYp2x033829@wattres.watt.com>
index | next in thread | previous in thread | raw e-mail
On Fri, Aug 12, 2005 at 01:34:51PM -0700, Steve Watt wrote:
> In article <20050812194927.GA74052@doom.homeunix.org> you write:
> >Hi all,
> >
> >Consider the following except from a perl program:
> >
> >tie(%foodb, 'MLDBM', $BAR_FILE, O_CREAT | O_RDWR, 0666)
> > or die("Cannot open $BAR_FILE: $!\n");
> >
> >I expect it to create a new $BAR_FILE, if none existed, with 0666
> >permissions. But it doesn't. It creates a file with default umask
> >specified permissions - 0644. So I have to manually do chmod on that
> >file afterwards. Is there anything I don't understand?
> >
> >%uname -a
> >FreeBSD doom.homeunix.org 4.11-STABLE FreeBSD 4.11-STABLE #0:
> >Tue Jul 5 21:05:20 MSD 2005 [...] i386
>
> umask applies after the open call's permissions, and is used to remove
> bits from the value passed in to the open. That's the way POSIX
> says it works, and that's how it works on UNIX machines.
>
> Down in the guts of the open() syscall, there's a line that
> effectively says
> file_permissions = passed_in_permissions & ~umask;
>
> It's working as designed.
Thanks for explanation guys. I guess I'm still thinking windoze.
-ip
--
If there isn't a law, there will be.
help
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20050813165119.GA1234>
