X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=support%2Fnfs%2Fexports.c;h=eb1bf2c8db165bbd761603c4d06be5f74e569fa1;hb=37e49789ab1cd849def25ba4c4d97ccdb11d1e61;hp=3b34d4ee55e1f420a6923fada953aa15a30d51b3;hpb=4b5c4d21704d0767747c71b22f0e91efe59c07d6;p=nfs-utils.git diff --git a/support/nfs/exports.c b/support/nfs/exports.c index 3b34d4e..eb1bf2c 100644 --- a/support/nfs/exports.c +++ b/support/nfs/exports.c @@ -98,6 +98,8 @@ getexportent(void) if (ok == 0) exp[0] = '\0'; if ((opt = strchr(exp, '(')) != NULL) { + if (opt == exp) + xlog(L_WARNING, "No host name given with %s %s, suggest *%s to avoid warning", ee.e_path, exp, exp); *opt++ = '\0'; if (!(sp = strchr(opt, ')')) || sp[1] != '\0') { syntaxerr("bad option list"); @@ -106,6 +108,8 @@ getexportent(void) *sp = '\0'; if (parseopts(opt, &ee) < 0) return NULL; + } else { + xlog(L_WARNING, "No options for %s %s: suggest %s() to avoid warning", ee.e_path, exp, exp); } if (strlen(exp) >= sizeof(ee.e_hostname)) { syntaxerr("client name too long"); @@ -131,12 +135,19 @@ putexportent(struct exportent *ep) { FILE *fp; int *id, i; + char *esc=ep->e_path; if (!efp) return; fp = efp->x_fp; - fprintf(fp, "%s\t%s(", ep->e_path, ep->e_hostname); + for (i=0; esc[i]; i++) + if (iscntrl(esc[i]) || esc[i] == '"' || esc[i] == '\\'|| isspace(esc[i])) + fprintf(fp, "\\%03o", esc[i]); + else + fprintf(fp, "%c", esc[i]); + + fprintf(fp, "\t%s(", ep->e_hostname); fprintf(fp, "%s,", (ep->e_flags & NFSEXP_READONLY)? "ro" : "rw"); fprintf(fp, "%ssync,", (ep->e_flags & NFSEXP_ASYNC)? "a" : ""); fprintf(fp, "%swdelay,", (ep->e_flags & NFSEXP_GATHERED_WRITES)?