Add 'x' to the mode bits to specify O_EXCL, like glibc.

This commit is contained in:
christos 2012-11-15 03:50:36 +00:00
parent cb292d56ab
commit 42837a5b3c
2 changed files with 14 additions and 4 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: flags.c,v 1.16 2012/03/15 18:22:30 christos Exp $ */
/* $NetBSD: flags.c,v 1.17 2012/11/15 03:50:36 christos Exp $ */
/*-
* Copyright (c) 1990, 1993
@ -37,7 +37,7 @@
#if 0
static char sccsid[] = "@(#)flags.c 8.1 (Berkeley) 6/4/93";
#else
__RCSID("$NetBSD: flags.c,v 1.16 2012/03/15 18:22:30 christos Exp $");
__RCSID("$NetBSD: flags.c,v 1.17 2012/11/15 03:50:36 christos Exp $");
#endif
#endif /* LIBC_SCCS and not lint */
@ -90,6 +90,7 @@ __sflags(const char *mode, int *optr)
* [rwa]\+ or [rwa]b\+ means read and write
* f means open only plain files,
* e means set close on exec.
* x means exclusive open.
*/
for (; *mode; mode++)
switch (*mode) {
@ -103,6 +104,9 @@ __sflags(const char *mode, int *optr)
case 'e':
o |= O_CLOEXEC;
break;
case 'x':
o |= O_EXCL;
break;
case 'b':
break;
default: /* We could produce a warning here */

View File

@ -1,4 +1,4 @@
.\" $NetBSD: fopen.3,v 1.28 2012/07/02 20:02:43 wiz Exp $
.\" $NetBSD: fopen.3,v 1.29 2012/11/15 03:50:36 christos Exp $
.\"
.\" Copyright (c) 1990, 1991, 1993
.\" The Regents of the University of California. All rights reserved.
@ -33,7 +33,7 @@
.\"
.\" @(#)fopen.3 8.1 (Berkeley) 6/4/93
.\"
.Dd July 18, 2011
.Dd November 14, 2012
.Dt FOPEN 3
.Os
.Sh NAME
@ -117,6 +117,12 @@ will fail.
This is a non
.St -ansiC
extension.
.It Sq x
The letter
.Sq x
in the mode turns on exclusive open mode to the file (
.Dv O_EXCL )
which means that the file will not be created if it already exists.
.El
.Pp
Any created files will have mode