]> git.decadent.org.uk Git - nfs-utils.git/blobdiff - support/nfs/nfsexport.c
Cleanup xlog logging code to be safe and usable for all
[nfs-utils.git] / support / nfs / nfsexport.c
index 0e8b52b334ba3e69e8bd676c64c7f3d66827e51a..f129fd2e088a6808200043fed007302c92577fdf 100644 (file)
@@ -6,7 +6,9 @@
  * Copyright (C) 1995, 1996 Olaf Kirch <okir@monad.swb.de>
  */
 
-#include "config.h"
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
 
 #include <string.h>
 #include <sys/types.h>
@@ -36,6 +38,7 @@ exp_unexp(struct nfsctl_export *exp, int export)
        char fsidstr[8];
        __u16 dev;
        __u32 inode;
+       int err;
 
 
        f = fopen("/proc/net/rpc/nfsd.export/channel", "w");
@@ -51,7 +54,7 @@ exp_unexp(struct nfsctl_export *exp, int export)
        } else
                qword_printint(f, 1);
 
-       qword_eol(f);
+       err = qword_eol(f);
        fclose(f);
 
        if (stat(exp->ex_path, &stb) != 0)
@@ -69,7 +72,7 @@ exp_unexp(struct nfsctl_export *exp, int export)
                } else
                        qword_printint(f, 1);
 
-               qword_eol(f);
+               err = qword_eol(f) || err;
        }
        qword_print(f,exp->ex_client);
        qword_printint(f,0);
@@ -83,9 +86,9 @@ exp_unexp(struct nfsctl_export *exp, int export)
                qword_print(f, exp->ex_path);
        } else
                qword_printint(f, 1);
-       qword_eol(f);
+       err = qword_eol(f) || err;
        fclose(f);
-       return 0;
+       return err;
 }
 
 int
@@ -93,7 +96,7 @@ nfsexport(struct nfsctl_export *exp)
 {
        struct nfsctl_arg       arg;
        int fd;
-       if ((fd=open("/proc/net/rpc/nfsd.fh/channel", O_RDWR))>= 0) {
+       if ((fd=open("/proc/net/rpc/nfsd.fh/channel", O_WRONLY))>= 0) {
                close(fd);
                return exp_unexp(exp, 1);
        }
@@ -108,7 +111,7 @@ nfsunexport(struct nfsctl_export *exp)
        struct nfsctl_arg       arg;
 
        int fd;
-       if ((fd=open("/proc/net/rpc/nfsd.fh/channel", O_RDWR))>= 0) {
+       if ((fd=open("/proc/net/rpc/nfsd.fh/channel", O_WRONLY))>= 0) {
                close(fd);
                return exp_unexp(exp, 0);
        }