diff options
author | Kevin Coffman <kwc@citi.umich.edu> | 2007-10-12 16:35:00 -0400 |
---|---|---|
committer | Neil Brown <neilb@suse.de> | 2007-10-15 09:50:56 +1000 |
commit | 01f6e717f3e0bf953fadd3de22096c9025c3d38d (patch) | |
tree | e66a677e45b7a32f051443f1cddedcfb6cf1fce2 /support/nfs/cacheio.c | |
parent | 44f7f2f92038572663acf22b4fd8dc34640c8c81 (diff) | |
download | nfs-utils-01f6e717f3e0bf953fadd3de22096c9025c3d38d.tar.gz nfs-utils-01f6e717f3e0bf953fadd3de22096c9025c3d38d.tar.xz nfs-utils-01f6e717f3e0bf953fadd3de22096c9025c3d38d.zip |
Copy new cacheio functions used by svcgssd to nfslib
Copy private qword_ functions from the svcgssd version into
the general nfslib library. Add prototypes as needed.
Also, update readline to use a bigger buffer allocation as is
needed in the svcgssd version.
Signed-off-by: Kevin Coffman <kwc@citi.umich.edu>
Signed-off-by: Neil Brown <neilb@suse.de>
Diffstat (limited to 'support/nfs/cacheio.c')
-rw-r--r-- | support/nfs/cacheio.c | 47 |
1 files changed, 40 insertions, 7 deletions
diff --git a/support/nfs/cacheio.c b/support/nfs/cacheio.c index 9d271cd..48292f8 100644 --- a/support/nfs/cacheio.c +++ b/support/nfs/cacheio.c @@ -88,6 +88,37 @@ void qword_addhex(char **bpp, int *lp, char *buf, int blen) *lp = len; } +void qword_addint(char **bpp, int *lp, int n) +{ + int len; + + len = snprintf(*bpp, *lp, "%d ", n); + if (len > *lp) + len = *lp; + *bpp += len; + *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) + return; + **bpp = '\n'; + (*bpp)++; + (*lp)--; +} + static char qword_buf[8192]; void qword_print(FILE *f, char *str) { @@ -192,23 +223,25 @@ int qword_get_int(char **bpp, int *anint) return 0; } +#define READLINE_BUFFER_INCREMENT 2048 + int readline(int fd, char **buf, int *lenp) { /* read a line into *buf, which is malloced *len long * realloc if needed until we find a \n * nul out the \n and return - * 0 of eof, 1 of success + * 0 on eof, 1 on success */ - int len = *lenp; + int len; - if (len == 0) { - char *b = malloc(128); + if (*lenp == 0) { + char *b = malloc(READLINE_BUFFER_INCREMENT); if (b == NULL) return 0; *buf = b; - *lenp = 128; + *lenp = READLINE_BUFFER_INCREMENT; } - len = read(fd, *buf, len); + len = read(fd, *buf, *lenp); if (len <= 0) return 0; while ((*buf)[len-1] != '\n') { @@ -217,7 +250,7 @@ int readline(int fd, char **buf, int *lenp) */ char *new; int nl; - *lenp *= 2; + *lenp += READLINE_BUFFER_INCREMENT; new = realloc(*buf, *lenp); if (new == NULL) return 0; |