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");
*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");
{
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)?