* 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>
nfs_export *exp;
setexportent(fname, "r");
- while ((eep = getexportent()) != NULL) {
+ while ((eep = getexportent(0,1)) != NULL) {
exp = export_lookup(eep->e_hostname, eep->e_path, 0);
if (!exp)
export_create(eep,0);
xlog(L_FATAL, "unknown client type in export_add");
epp = exportlist + type;
- while (*epp && slen < strlen((*epp)->m_export.e_path))
+ while (*epp && slen <= strlen((*epp)->m_export.e_path))
epp = &((*epp)->m_next);
exp->m_next = *epp;
*epp = exp;
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;
/* Try the longest matching exported pathname. */
while (1) {
exp = export_allowed_internal (hp, epath);
- if (exp) {
- dupexportent(&ee, &exp->m_export);
- return ⅇ
- }
+ if (exp)
+ return exp;
/* We have to treat the root, "/", specially. */
if (p == &epath[1]) break;
p = strrchr(epath, '/');
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;