]> git.decadent.org.uk Git - nfs-utils.git/blobdiff - support/export/export.c
2005-08-26 Kevin Coffman <kwc@citi.umich.edu>
[nfs-utils.git] / support / export / export.c
index f95e729e63ee7eeb402bf0310e663716c9f1b973..eedbb751b5a505f860572fb77e914e3e29bb1316 100644 (file)
@@ -32,7 +32,7 @@ export_read(char *fname)
        nfs_export              *exp;
 
        setexportent(fname, "r");
-       while ((eep = getexportent(0)) != NULL) {
+       while ((eep = getexportent(0,1)) != NULL) {
          exp = export_lookup(eep->e_hostname, eep->e_path, 0);
          if (!exp)
            export_create(eep,0);
@@ -172,10 +172,9 @@ export_allowed_internal (struct hostent *hp, char *path)
        return NULL;
 }
 
-struct exportent *
+nfs_export *
 export_allowed(struct hostent *hp, char *path)
 {
-       static struct exportent ee;
        nfs_export              *exp;
        char                    epath[MAXPATHLEN+1];
        char                    *p = NULL;
@@ -188,10 +187,8 @@ export_allowed(struct hostent *hp, char *path)
        /* Try the longest matching exported pathname. */
        while (1) {
                exp = export_allowed_internal (hp, epath);
-               if (exp) {
-                       dupexportent(&ee, &exp->m_export);
-                       return &ee;
-               }
+               if (exp)
+                       return exp;
                /* We have to treat the root, "/", specially. */
                if (p == &epath[1]) break;
                p = strrchr(epath, '/');
@@ -239,6 +236,8 @@ export_freeall(void)
                                xfree(exp->m_export.e_squids);
                        if (exp->m_export.e_sqgids)
                                xfree(exp->m_export.e_sqgids);
+                       if (exp->m_export.e_mountpoint)
+                               free(exp->m_export.e_mountpoint);
                        xfree(exp);
                }
                exportlist[i] = NULL;