--- flags.c.orig 2003-05-20 15:22:41.000000000 -0700 +++ flags.c 2005-11-16 17:49:13.000000000 -0800 @@ -85,10 +85,17 @@ } /* [rwa]\+ or [rwa]b\+ means read and write */ - if (*mode == '+' || (*mode == 'b' && mode[1] == '+')) { + if (*mode == 'b') + mode++; + if (*mode == '+') { ret = __SRW; m = O_RDWR; + mode++; + if (*mode == 'b') + mode++; } + if (*mode == 'x') + o |= O_EXCL; *optr = m | o; return (ret); }