commit - 05f50fe6bf2352ec4ec9c94d22414f0eceeeda72
commit + 0d7fd01125a8a16807aa168172b2f514170b1dd3
blob - cd045e94d8f2d79ef383aca8cc80af0648b584a8
blob + 148d7dfa6e9eb9cca29ed51f153076c5b46ca8d1
--- src/cmd/9pfuse/main.c
+++ src/cmd/9pfuse/main.c
* 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 */
newfid = fswalk(fid, nil);
if(newfid == nil){
*err = errstr2errno();
- // fsclose(fid);
return nil;
}
- // fsputfid(fid);
if(fsfopen(newfid, openmode) < 0){
*err = errstr2errno();
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);