Index: lib/libc/stdio/flags.c =================================================================== --- lib/libc/stdio/flags.c (revision 282268) +++ lib/libc/stdio/flags.c (working copy) @@ -52,6 +52,7 @@ __sflags(const char *mode, int *optr) { int ret, m, o, known; + int do_locks = 0; switch (*mode++) { @@ -97,6 +98,10 @@ /* set close-on-exec */ o |= O_CLOEXEC; break; + case 'l': + /* shared or exclusive locking */ + do_locks = 1; + break; case 'v': /* verify */ o |= O_VERIFY; @@ -112,6 +117,10 @@ return (0); } + if (do_locks != 0) { + o |= (m == O_RDONLY) ? O_SHLOCK : O_EXLOCK; + } + *optr = m | o; return (ret); }