diff options
author | Marcus Brinkmann <mb@g10code.com> | 2001-12-14 02:23:07 +0100 |
---|---|---|
committer | Marcus Brinkmann <mb@g10code.com> | 2001-12-14 02:23:07 +0100 |
commit | 788a9bc51f9d02fc74266f913b8e8f5347ed11d5 (patch) | |
tree | 077e09e3b79ea7d0085bbdb50ba7509a992255fe /assuan | |
parent | assuan/ (diff) | |
download | gnupg2-788a9bc51f9d02fc74266f913b8e8f5347ed11d5.tar.xz gnupg2-788a9bc51f9d02fc74266f913b8e8f5347ed11d5.zip |
2001-12-14 Marcus Brinkmann <marcus@g10code.de>
* assuan-buffer.c (_assuan_read_line): New variable ATTICLEN, use
it to save the number of bytes left over after the complete line.
Rediddle the code a bit to make it more clear what happens.
Diffstat (limited to 'assuan')
-rw-r--r-- | assuan/ChangeLog | 6 | ||||
-rw-r--r-- | assuan/assuan-buffer.c | 28 |
2 files changed, 22 insertions, 12 deletions
diff --git a/assuan/ChangeLog b/assuan/ChangeLog index b7d32a6d1..383ed888c 100644 --- a/assuan/ChangeLog +++ b/assuan/ChangeLog @@ -1,5 +1,11 @@ 2001-12-14 Marcus Brinkmann <marcus@g10code.de> + * assuan-buffer.c (_assuan_read_line): New variable ATTICLEN, use + it to save the number of bytes left over after the complete line. + Rediddle the code a bit to make it more clear what happens. + +2001-12-14 Marcus Brinkmann <marcus@g10code.de> + * assuan-defs.h (LINELENGTH): Define as ASSUAN_LINELENGTH. assuan.h: Define ASSUAN_LINELENGTH. diff --git a/assuan/assuan-buffer.c b/assuan/assuan-buffer.c index ee085d0c1..399d11dbf 100644 --- a/assuan/assuan-buffer.c +++ b/assuan/assuan-buffer.c @@ -89,27 +89,30 @@ int _assuan_read_line (ASSUAN_CONTEXT ctx) { char *line = ctx->inbound.line; - int n, nread; + int n, nread, atticlen; int rc; - + if (ctx->inbound.eof) return -1; - if (ctx->inbound.attic.linelen) + atticlen = ctx->inbound.attic.linelen; + if (atticlen) { - memcpy (line, ctx->inbound.attic.line, ctx->inbound.attic.linelen); - nread = ctx->inbound.attic.linelen; + memcpy (line, ctx->inbound.attic.line, atticlen); ctx->inbound.attic.linelen = 0; - for (n=0; n < nread && line[n] != '\n'; n++) + for (n=0; n < atticlen && line[n] != '\n'; n++) ; - if (n < nread) - rc = 0; /* found another line in the attic */ + if (n < atticlen) + { + rc = 0; /* found another line in the attic */ + nread = atticlen; + atticlen = 0; + } else { /* read the rest */ - n = nread; - assert (n < LINELENGTH); - rc = readline (ctx->inbound.fd, line + n, LINELENGTH - n, - &nread, &ctx->inbound.eof); + assert (atticlen < LINELENGTH); + rc = readline (ctx->inbound.fd, line + atticlen, + LINELENGTH - atticlen, &nread, &ctx->inbound.eof); } } else @@ -124,6 +127,7 @@ _assuan_read_line (ASSUAN_CONTEXT ctx) } ctx->inbound.attic.pending = 0; + nread += atticlen; for (n=0; n < nread; n++) { if (line[n] == '\n') |