X-Git-Url: https://git.decadent.org.uk/gitweb/?a=blobdiff_plain;f=utils%2Fgssd%2Fcacheio.c;h=e24ef56f7970dd17e5219e12d7ccc2d6f4cad8b0;hb=53a9b4a2ea971d5718ccfcc2f2825ff9af81cd23;hp=07658e977a16685be7375e0a6f5ba9fbfb55da74;hpb=ee664fd246d77010af13fb557407c612752a5ea8;p=nfs-utils.git diff --git a/utils/gssd/cacheio.c b/utils/gssd/cacheio.c index 07658e9..e24ef56 100644 --- a/utils/gssd/cacheio.c +++ b/utils/gssd/cacheio.c @@ -55,6 +55,7 @@ #include #include #include +#include #include "err_util.h" void qword_add(char **bpp, int *lp, char *str) @@ -131,6 +132,17 @@ void qword_addint(char **bpp, int *lp, int n) *lp -= len; } +void qword_adduint(char **bpp, int *lp, unsigned int n) +{ + int len; + + len = snprintf(*bpp, *lp, "%u ", n); + if (len > *lp) + len = *lp; + *bpp += len; + *lp -= len; +} + void qword_addeol(char **bpp, int *lp) { if (*lp <= 0) @@ -172,11 +184,13 @@ void qword_printint(FILE *f, int num) printerr(2, "%d ", num); } -void qword_eol(FILE *f) +int qword_eol(FILE *f) { + int err; fprintf(f,"\n"); - fflush(f); + err = fflush(f); printerr(2, "\n"); + return err; } @@ -264,7 +278,8 @@ int readline(int fd, char **buf, int *lenp) } len = read(fd, *buf, *lenp); if (len <= 0) { - printerr(2, "read error in readline: %d\n", len); + printerr(0, "readline: read error: len %d errno %d (%s)\n", + len, errno, strerror(errno)); return 0; } while ((*buf)[len-1] != '\n') { @@ -280,12 +295,14 @@ int readline(int fd, char **buf, int *lenp) *buf = new; nl = read(fd, *buf +len, *lenp - len); if (nl <= 0 ) { - printerr(2, "read error in readline: %d\n", nl); + printerr(0, "readline: read error: len %d " + "errno %d (%s)\n", nl, errno, strerror(errno)); return 0; } len += nl; } (*buf)[len-1] = 0; - printerr(1, "read line with %d characters:\n%s\n", *lenp, *buf); + printerr(3, "readline: read %d chars into buffer of size %d:\n%s\n", + len, *lenp, *buf); return 1; }