84 |
|
int oflags = O_CLOEXEC; |
85 |
|
switch (flags & (RDSread|RDSwrite)) { |
86 |
|
case RDSread|RDSwrite: |
87 |
< |
oflags |= O_RDWR; |
87 |
> |
oflags |= O_RDWR|O_CREAT; |
88 |
|
break; |
89 |
+ |
case RDSwrite: |
90 |
+ |
oflags |= O_WRONLY|O_CREAT; |
91 |
+ |
break; |
92 |
|
case RDSread: |
93 |
|
oflags |= O_RDONLY; |
94 |
|
break; |
92 |
– |
case RDSwrite: |
93 |
– |
oflags |= O_WRONLY; |
94 |
– |
break; |
95 |
|
} |
96 |
< |
if (flags & RDSexcl) oflags |= O_CREAT|O_EXCL; |
96 |
> |
if (flags & RDSexcl) oflags |= O_EXCL; |
97 |
|
else if (flags & RDSextend && !siz) oflags |= O_TRUNC; |
98 |
|
fd = open(name, oflags, 0666); |
99 |
|
if (fd < 0) { |