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.
This commit is contained in:
parent
0913218bcc
commit
c6cf950f9e
@ -1,3 +1,9 @@
|
|||||||
|
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>
|
2001-12-14 Marcus Brinkmann <marcus@g10code.de>
|
||||||
|
|
||||||
* assuan-defs.h (LINELENGTH): Define as ASSUAN_LINELENGTH.
|
* assuan-defs.h (LINELENGTH): Define as ASSUAN_LINELENGTH.
|
||||||
|
@ -89,27 +89,30 @@ int
|
|||||||
_assuan_read_line (ASSUAN_CONTEXT ctx)
|
_assuan_read_line (ASSUAN_CONTEXT ctx)
|
||||||
{
|
{
|
||||||
char *line = ctx->inbound.line;
|
char *line = ctx->inbound.line;
|
||||||
int n, nread;
|
int n, nread, atticlen;
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
if (ctx->inbound.eof)
|
if (ctx->inbound.eof)
|
||||||
return -1;
|
return -1;
|
||||||
|
|
||||||
if (ctx->inbound.attic.linelen)
|
atticlen = ctx->inbound.attic.linelen;
|
||||||
|
if (atticlen)
|
||||||
{
|
{
|
||||||
memcpy (line, ctx->inbound.attic.line, ctx->inbound.attic.linelen);
|
memcpy (line, ctx->inbound.attic.line, atticlen);
|
||||||
nread = ctx->inbound.attic.linelen;
|
|
||||||
ctx->inbound.attic.linelen = 0;
|
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)
|
if (n < atticlen)
|
||||||
rc = 0; /* found another line in the attic */
|
{
|
||||||
|
rc = 0; /* found another line in the attic */
|
||||||
|
nread = atticlen;
|
||||||
|
atticlen = 0;
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{ /* read the rest */
|
{ /* read the rest */
|
||||||
n = nread;
|
assert (atticlen < LINELENGTH);
|
||||||
assert (n < LINELENGTH);
|
rc = readline (ctx->inbound.fd, line + atticlen,
|
||||||
rc = readline (ctx->inbound.fd, line + n, LINELENGTH - n,
|
LINELENGTH - atticlen, &nread, &ctx->inbound.eof);
|
||||||
&nread, &ctx->inbound.eof);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -124,6 +127,7 @@ _assuan_read_line (ASSUAN_CONTEXT ctx)
|
|||||||
}
|
}
|
||||||
|
|
||||||
ctx->inbound.attic.pending = 0;
|
ctx->inbound.attic.pending = 0;
|
||||||
|
nread += atticlen;
|
||||||
for (n=0; n < nread; n++)
|
for (n=0; n < nread; n++)
|
||||||
{
|
{
|
||||||
if (line[n] == '\n')
|
if (line[n] == '\n')
|
||||||
|
Loading…
Reference in New Issue
Block a user