From: chip Date: Thu, 22 Nov 2001 01:32:54 +0000 (+0000) Subject: 2001-11-21 Chip Salzenberg X-Git-Tag: nfs-utils-1-0~15 X-Git-Url: https://git.decadent.org.uk/gitweb/?p=nfs-utils.git;a=commitdiff_plain;h=13e118068de064b9bd69c629b74ccb11745c20c9 2001-11-21 Chip Salzenberg * support/nfs/clients.c (cfname): Added: current clients file name. (setnfsclntent): Set it. ({get,end}nfsclntent, syntaxerr): Use it. * support/nfs/exports.c (efname): Added: current exports file name. (setnfsexportent): Set it. (endnfsexportent, parseopts, getexport, syntaxerr): Use it. --- diff --git a/ChangeLog b/ChangeLog index 36a1663..10b2a13 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2001-11-21 Chip Salzenberg + + * support/nfs/clients.c (cfname): Added: current clients file name. + (setnfsclntent): Set it. + ({get,end}nfsclntent, syntaxerr): Use it. + * support/nfs/exports.c (efname): Added: current exports file name. + (setnfsexportent): Set it. + (endnfsexportent, parseopts, getexport, syntaxerr): Use it. + 2001-10-11 Chip Salzenberg * utils/mountd/mountd.c (main): Close fds > 2 _before_ RPC init. diff --git a/support/nfs/clients.c b/support/nfs/clients.c index b1970e0..9f022b6 100644 --- a/support/nfs/clients.c +++ b/support/nfs/clients.c @@ -18,6 +18,7 @@ #include "exportfs.h" #include "xio.h" +static char *cfname = NULL; static XFILE *cfp = NULL; static int *squash_uids = NULL, *squash_gids = NULL; @@ -46,6 +47,7 @@ setnfsclntent(char *fname) fname = _PATH_NFSCLIENTS; if ((cfp = xfopen(fname)) == NULL) xlog(L_ERROR, "can't open %s for reading", fname); + cfname = strdup(fname); } struct nfsclntent * @@ -137,8 +139,9 @@ again: /* This is the anon entry */ if (!hosts) { if (strcmp(cle.c_tag, "anonymous")) { - xlog(L_ERROR, "nfsclients entry %s allows anonymous " - "access. Ignored.", cle.c_tag); + xlog(L_ERROR, + "%s:%d: entry %s allows anonymous access. Ignored.", + cfname, xfp->x_line, cle.c_tag); goto again; } return &cle; @@ -147,8 +150,9 @@ again: nexthost: if (*hostptr == ':' && strcmp(cle.c_tag, "anonymous")) { - xlog(L_ERROR, "nfsclients entry %s allows anonymous " - "access. Ignored.", cle.c_tag); + xlog(L_ERROR, + "%s:%d: entry %s allows anonymous access. Ignored.", + cfname, cfp->x_line, cle.c_tag); while (*hostptr == ':') hostptr++; } @@ -171,6 +175,8 @@ nexthost: void endnfsclntent(void) { + if (cfname) + free(cfname); if (cfp) xfclose(cfp); if (squash_uids) @@ -179,6 +185,7 @@ endnfsclntent(void) xfree(squash_gids); if (hosts) xfree(hosts); + cfname = NULL; cfp = NULL; squash_uids = NULL; squash_gids = NULL; @@ -307,7 +314,7 @@ getattr(char *attr, int alen, char *value, int vlen) xskip(cfp, " \t"); if ((ok = xgettok(cfp, '=', attr, alen)) < 0) - xlog(L_ERROR, "error parsing attribute"); + syntaxerr("missing attribute"); if (ok <= 0) return ok; xskip(cfp, " \t="); @@ -318,7 +325,7 @@ getattr(char *attr, int alen, char *value, int vlen) static void syntaxerr(char *msg) { - xlog(L_ERROR, "syntax error in nfsclients file (line %d): %s", - cfp->x_line, msg); + xlog(L_ERROR, "%s:%d: syntax error: %s", + cfname, cfp->x_line, msg); } diff --git a/support/nfs/exports.c b/support/nfs/exports.c index eb1bf2c..5a8e7e9 100644 --- a/support/nfs/exports.c +++ b/support/nfs/exports.c @@ -31,6 +31,7 @@ #define EXPORT_DEFAULT_FLAGS \ (NFSEXP_ASYNC|NFSEXP_READONLY|NFSEXP_ROOTSQUASH|NFSEXP_GATHERED_WRITES) +static char *efname = NULL; static XFILE *efp = NULL; static int first; static int *squids = NULL, nsquids = 0, @@ -55,6 +56,7 @@ setexportent(char *fname, char *type) if (!(efp = xfopen(fname, type))) xlog(L_ERROR, "can't open %s for %sing", fname, strcmp(type, "r")? "writ" : "read"); + efname = strdup(fname); first = 1; } @@ -205,6 +207,9 @@ endexportent(void) if (efp) xfclose(efp); efp = NULL; + if (efname) + free(efname); + efname = NULL; freesquash(); } @@ -349,9 +354,8 @@ parseopts(char *cp, struct exportent *ep) return -1; } } else { - xlog(L_ERROR, - "Unknown keyword \"%s\" in export file\n", - opt); + xlog(L_ERROR, "%s:%d: unknown keyword \"%s\"\n", + efname, efp->x_line, opt); ep->e_flags |= NFSEXP_ALLSQUASH | NFSEXP_READONLY; free(opt); return -1; @@ -468,14 +472,15 @@ getexport(char *exp, int len) xskip(efp, " \t"); if ((ok = xgettok(efp, 0, exp, len)) < 0) - xlog(L_ERROR, "error parsing export entry"); + xlog(L_ERROR, "%s:%d: syntax error", + efname, efp->x_line); return ok; } static void syntaxerr(char *msg) { - xlog(L_ERROR, "syntax error in exports file (line %d): %s", - efp->x_line, msg); + xlog(L_ERROR, "%s:%d: syntax error: %s", + efname, efp->x_line, msg); }