X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=support%2Fnfs%2Fcacheio.c;h=9d271cd4733d77328a6f2b3e5ec8a80b5da8a73b;hb=9996ea948dd791066b190c5112d59b8e2ffcc9cc;hp=4df80a6f3efcf97e7be438e09b95a6f28669c045;hpb=e91ff0175602cc56f223f1d92de6511099fa40d1;p=nfs-utils.git diff --git a/support/nfs/cacheio.c b/support/nfs/cacheio.c index 4df80a6..9d271cd 100644 --- a/support/nfs/cacheio.c +++ b/support/nfs/cacheio.c @@ -17,6 +17,7 @@ #include #include +#include #include #include #include @@ -111,7 +112,18 @@ void qword_printint(FILE *f, int num) int qword_eol(FILE *f) { + int err; + fprintf(f,"\n"); + err = fflush(f); + /* + * We must send one line (and one line only) in a single write + * call. In case of a write error, libc may accumulate the + * unwritten data and try to write it again later, resulting in a + * multi-line write. So we must explicitly ask it to throw away + * any such cached data: + */ + __fpurge(f); return fflush(f); } @@ -256,6 +268,7 @@ cache_flush(int force) */ static char *cachelist[] = { "auth.unix.ip", + "auth.unix.gid", "nfsd.fh", "nfsd.export", NULL