tbetter open mode - plan9port - [fork] Plan 9 from user space
(HTM) git clone git://src.adamsgaard.dk/plan9port
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
(DIR) LICENSE
---
(DIR) commit 0d7fd01125a8a16807aa168172b2f514170b1dd3
(DIR) parent 05f50fe6bf2352ec4ec9c94d22414f0eceeeda72
(HTM) Author: rsc <devnull@localhost>
Date: Sun, 23 Jul 2006 03:08:51 +0000
better open mode
Diffstat:
M src/cmd/9pfuse/main.c | 15 ++++++++++-----
1 file changed, 10 insertions(+), 5 deletions(-)
---
(DIR) diff --git a/src/cmd/9pfuse/main.c b/src/cmd/9pfuse/main.c
t@@ -13,8 +13,6 @@
* allocates two more procs, one for reading and one for
* writing the 9P connection. Thus the many threads in the
* request proc can do 9P interactions without blocking.
- *
- * TODO: graceful shutdown.
*/
#define _GNU_SOURCE 1 /* for O_DIRECTORY on Linux */
t@@ -515,10 +513,8 @@ _fuseopenfid(uvlong nodeid, int isdir, int openmode, int *err)
newfid = fswalk(fid, nil);
if(newfid == nil){
*err = errstr2errno();
- // fsclose(fid);
return nil;
}
- // fsputfid(fid);
if(fsfopen(newfid, openmode) < 0){
*err = errstr2errno();
t@@ -544,12 +540,21 @@ _fuseopen(FuseMsg *m, int isdir)
CFid *fid;
int openmode, flags, err;
- /* TODO: better job translating openmode - see lib9 open */
in = m->tx;
flags = in->flags;
openmode = flags&3;
flags &= ~3;
flags &= ~(O_DIRECTORY|O_NONBLOCK|O_LARGEFILE);
+ if(flags & O_TRUNC){
+ openmode |= OTRUNC;
+ flags &= ~O_TRUNC;
+ }
+ /*
+ * Could translate but not standard 9P:
+ * O_DIRECT -> ODIRECT
+ * O_NONBLOCK -> ONONBLOCK
+ * O_APPEND -> OAPPEND
+ */
if(flags){
fprint(2, "unexpected open flags %#uo", (uint)in->flags);
replyfuseerrno(m, EACCES);