aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/estream.c16
1 files changed, 7 insertions, 9 deletions
diff --git a/src/estream.c b/src/estream.c
index f554bf8..7e1d55c 100644
--- a/src/estream.c
+++ b/src/estream.c
@@ -2140,10 +2140,11 @@ func_file_create_w32 (void **cookie, HANDLE *rethd, const char *path,
*
* share=[r][w][d][0]
*
- * Under Windows with the "sysopen" flag use FILE_SHARE_READ,
- * FILE_SHARE_WRITE, or SHARE_MODE_DELETE depending on the given
- * letters. If no letter or 0 is given, share mode 0 is used. The
- * default is to use a share mode depending on the open mode.
+ * Under Windows use FILE_SHARE_READ, FILE_SHARE_WRITE, or
+ * SHARE_MODE_DELETE depending on the given letters. If no letter
+ * or 0 is given, share mode 0 is used. The default is to use a
+ * share mode depending on the open mode. The use of this flag
+ * implicitly enables the "sysopen" flag.
*
* wipe
*
@@ -2293,7 +2294,8 @@ parse_mode (const char *modestr,
{
modestr += 6;
*r_xmode |= X_SHARE_CUSTOM;
- for ( ; *modestr; modestr++)
+ *r_xmode |= X_SYSOPEN; /* "share" implies "sysopen". */
+ for ( ; *modestr && !strchr (" \t,", *modestr); modestr++)
switch (*modestr)
{
case 'w': *r_xmode |= X_SHARE_WRITE; break;
@@ -2301,10 +2303,6 @@ parse_mode (const char *modestr,
case 'd': *r_xmode |= X_SHARE_DEL; break;
case '0': *r_xmode &= ~(X_SHARE_READ|X_SHARE_WRITE|X_SHARE_DEL);
break;
- case ' ':
- case '\t':
- _set_errno (EINVAL);
- return -1;
default: break; /* Ignore other letters. */
}
}