fprintf(f, "%d ", num);
}
-void qword_eol(FILE *f)
+int qword_eol(FILE *f)
{
fprintf(f,"\n");
- fflush(f);
+ return fflush(f);
}
*/
char *new;
int nl;
- *lenp += 128;
+ *lenp *= 2;
new = realloc(*buf, *lenp);
if (new == NULL)
return 0;
- nl = read(fd, *buf +len, *lenp - len);
- if (nl <= 0 )
+ *buf = new;
+ nl = read(fd, *buf + len, *lenp - len);
+ if (nl <= 0)
return 0;
- new += nl;
+ len += nl;
}
- (*buf)[len-1] = 0;
+ (*buf)[len-1] = '\0';
return 1;
}
int c;
char stime[20];
char path[200];
+ time_t now;
/* Note: the order of these caches is important.
- * The need to be flushed in dependancy order. So
+ * They need to be flushed in dependancy order. So
* a cache that references items in another cache,
* as nfsd.fh entries reference items in nfsd.export,
* must be flushed before the cache that it references.
*/
static char *cachelist[] = {
"auth.unix.ip",
+ "auth.unix.gid",
"nfsd.fh",
"nfsd.export",
NULL
};
- stb.st_mtime = time(0);
- if (!force)
- stat(_PATH_ETAB, &stb);
+ now = time(0);
+ if (force ||
+ stat(_PATH_ETAB, &stb) != 0 ||
+ stb.st_mtime > now)
+ stb.st_mtime = time(0);
sprintf(stime, "%ld\n", stb.st_mtime);
for (c=0; cachelist[c]; c++) {