URI:
       tvacfs: fix create srv with ORCLOSE on plan 9 - plan9port - [fork] Plan 9 from user space
  HTML git clone git://src.adamsgaard.dk/plan9port
   DIR Log
   DIR Files
   DIR Refs
   DIR README
   DIR LICENSE
       ---
   DIR commit 3a616eaa80070a1b89b907baacc8b603b02c670e
   DIR parent ac2662695a41207618873798914d70242b826a63
  HTML Author: David du Colombier <0intro@gmail.com>
       Date:   Fri,  3 Aug 2012 21:12:10 +0200
       
       vacfs: fix create srv with ORCLOSE on plan 9
       
       In the current code, the srv file is removed
       just after the main thread exits, while the
       srv thread is still running, which is not
       tthe expected behavior.
       We moved the srv creation just before the
       procrfork, in order that the srv file will
       not be removed until the srv thread exits.
       
       R=rsc
       http://codereview.appspot.com/6397047
       
       Diffstat:
         M src/cmd/vac/vacfs.c                 |      20 +++++++++++---------
       
       1 file changed, 11 insertions(+), 9 deletions(-)
       ---
   DIR diff --git a/src/cmd/vac/vacfs.c b/src/cmd/vac/vacfs.c
       t@@ -233,6 +233,17 @@ threadmain(int argc, char *argv[])
                        mfd[0] = p[0];
                        mfd[1] = p[0];
                        srvfd = p[1];
       +#ifndef PLAN9PORT
       +                if(defsrv){
       +                        srvname = smprint("/srv/%s", defsrv);
       +                        fd = create(srvname, OWRITE|ORCLOSE, 0666);
       +                        if(fd < 0)
       +                                sysfatal("create %s: %r", srvname);
       +                        if(fprint(fd, "%d", srvfd) < 0)
       +                                sysfatal("write %s: %r", srvname);
       +                        free(srvname);
       +                }
       +#endif
                }
        
        #ifdef PLAN9PORT
       t@@ -245,15 +256,6 @@ threadmain(int argc, char *argv[])
        
                if(!stdio){
                        close(p[0]);
       -                if(defsrv){
       -                        srvname = smprint("/srv/%s", defsrv);
       -                        fd = create(srvname, OWRITE|ORCLOSE, 0666);
       -                        if(fd < 0)
       -                                sysfatal("create %s: %r", srvname);
       -                        if(fprint(fd, "%d", srvfd) < 0)
       -                                sysfatal("write %s: %r", srvname);
       -                        free(srvname);
       -                }
                        if(defmnt){
                                if(mount(srvfd, -1, defmnt, MREPL|MCREATE, "") < 0)
                                        sysfatal("mount %s: %r", defmnt);