summaryrefslogtreecommitdiffstats
path: root/assuan
diff options
context:
space:
mode:
authorMarcus Brinkmann <mb@g10code.com>2001-12-14 02:23:07 +0100
committerMarcus Brinkmann <mb@g10code.com>2001-12-14 02:23:07 +0100
commit788a9bc51f9d02fc74266f913b8e8f5347ed11d5 (patch)
tree077e09e3b79ea7d0085bbdb50ba7509a992255fe /assuan
parentassuan/ (diff)
downloadgnupg2-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/ChangeLog6
-rw-r--r--assuan/assuan-buffer.c28
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')