mirror of
git://git.gnupg.org/gnupg.git
synced 2025-07-03 22:56:33 +02:00
See ChangeLog: Mon May 31 19:41:10 CEST 1999 Werner Koch
This commit is contained in:
parent
a6a548ab56
commit
c34c676958
18 changed files with 682 additions and 520 deletions
|
@ -1,3 +1,10 @@
|
|||
Mon May 31 19:41:10 CEST 1999 Werner Koch <wk@isil.d.shuttle.de>
|
||||
|
||||
* g10.c (main): Fix for SHM init (Michael).
|
||||
|
||||
* compress.c, encr-data.c, mdfilter.c,
|
||||
plaintext.c, free-packet.c: Speed patches (Rémi).
|
||||
|
||||
Thu May 27 09:40:55 CEST 1999 Werner Koch <wk@isil.d.shuttle.de>
|
||||
|
||||
* status.c (cpr_get_answer_yes_no_quit): New.
|
||||
|
|
|
@ -566,7 +566,6 @@ find_subpkt( byte *buffer, sigsubpkttype_t reqtype,
|
|||
return NULL;
|
||||
buflen = (*buffer << 8) | buffer[1];
|
||||
buffer += 2;
|
||||
log_debug("find_subpkt: tyoe=%d bufferlength=%d\n", reqtype, buflen );
|
||||
for(;;) {
|
||||
if( !buflen )
|
||||
return NULL; /* end of packets; not found */
|
||||
|
@ -587,7 +586,6 @@ find_subpkt( byte *buffer, sigsubpkttype_t reqtype,
|
|||
buffer++;
|
||||
buflen--;
|
||||
}
|
||||
log_debug("find_subpkt: this len=%u\n", n );
|
||||
if( buflen < n )
|
||||
break;
|
||||
type = *buffer & 0x7f;
|
||||
|
|
|
@ -132,8 +132,7 @@ do_uncompress( compress_filter_context_t *zfx, z_stream *zs,
|
|||
int zrc;
|
||||
int rc=0;
|
||||
size_t n;
|
||||
byte *p;
|
||||
int c;
|
||||
int nread, count;
|
||||
int refill = !zs->avail_in;
|
||||
|
||||
if( DBG_FILTER )
|
||||
|
@ -145,16 +144,17 @@ do_uncompress( compress_filter_context_t *zfx, z_stream *zs,
|
|||
n = zs->avail_in;
|
||||
if( !n )
|
||||
zs->next_in = zfx->inbuf;
|
||||
for( p=zfx->inbuf+n; n < zfx->inbufsize; n++, p++ ) {
|
||||
if( (c=iobuf_get(a)) == -1 ) {
|
||||
/* If we use the undocumented feature to suppress
|
||||
* the zlib header, we have to give inflate an
|
||||
* extra dummy byte to read */
|
||||
if( zfx->algo != 1 || zfx->algo1hack )
|
||||
break;
|
||||
zfx->algo1hack = 1;
|
||||
}
|
||||
*p = c & 0xff;
|
||||
count = zfx->inbufsize - n;
|
||||
nread = iobuf_read( a, zfx->inbuf + n, count );
|
||||
if( nread == -1 ) nread = 0;
|
||||
n += nread;
|
||||
/* If we use the undocumented feature to suppress
|
||||
* the zlib header, we have to give inflate an
|
||||
* extra dummy byte to read */
|
||||
if( nread < count && zfx->algo == 1 ) {
|
||||
*(zfx->inbuf + n) = 0xFF; /* is it really needed ? */
|
||||
zfx->algo1hack = 1;
|
||||
n++;
|
||||
}
|
||||
zs->avail_in = n;
|
||||
}
|
||||
|
|
|
@ -217,16 +217,11 @@ decode_filter( void *opaque, int control, IOBUF a, byte *buf, size_t *ret_len)
|
|||
decode_filter_ctx_t *fc = opaque;
|
||||
size_t n, size = *ret_len;
|
||||
int rc = 0;
|
||||
int c;
|
||||
|
||||
if( control == IOBUFCTRL_UNDERFLOW ) {
|
||||
assert(a);
|
||||
for(n=0; n < size; n++ ) {
|
||||
if( (c = iobuf_get(a)) == -1 )
|
||||
break;
|
||||
buf[n] = c;
|
||||
}
|
||||
|
||||
n = iobuf_read( a, buf, size );
|
||||
if( n == -1 ) n = 0;
|
||||
if( n )
|
||||
cipher_decrypt( fc->cipher_hd, buf, buf, n);
|
||||
else
|
||||
|
|
|
@ -229,7 +229,7 @@ free_compressed( PKT_compressed *zd )
|
|||
if( zd->buf ) { /* have to skip some bytes */
|
||||
/* don't have any information about the length, so
|
||||
* we assume this is the last packet */
|
||||
while( iobuf_get(zd->buf) != -1 )
|
||||
while( iobuf_read( zd->buf, NULL, 1<<30 ) != -1 )
|
||||
;
|
||||
}
|
||||
m_free(zd);
|
||||
|
@ -240,12 +240,12 @@ free_encrypted( PKT_encrypted *ed )
|
|||
{
|
||||
if( ed->buf ) { /* have to skip some bytes */
|
||||
if( iobuf_in_block_mode(ed->buf) ) {
|
||||
while( iobuf_get(ed->buf) != -1 )
|
||||
while( iobuf_read( ed->buf, NULL, 1<<30 ) != -1 )
|
||||
;
|
||||
}
|
||||
else {
|
||||
for( ; ed->len; ed->len-- ) /* skip the packet */
|
||||
iobuf_get(ed->buf);
|
||||
while( ed->len ) /* skip the packet */
|
||||
ed->len -= iobuf_read( ed->buf, NULL, ed->len );
|
||||
}
|
||||
}
|
||||
m_free(ed);
|
||||
|
@ -257,12 +257,12 @@ free_plaintext( PKT_plaintext *pt )
|
|||
{
|
||||
if( pt->buf ) { /* have to skip some bytes */
|
||||
if( iobuf_in_block_mode(pt->buf) ) {
|
||||
while( iobuf_get(pt->buf) != -1 )
|
||||
while( iobuf_read( pt->buf, NULL, 1<<30 ) != -1 )
|
||||
;
|
||||
}
|
||||
else {
|
||||
for( ; pt->len; pt->len-- ) /* skip the packet */
|
||||
iobuf_get(pt->buf);
|
||||
while( pt->len ) /* skip the packet */
|
||||
pt->len -= iobuf_read( pt->buf, NULL, pt->len );
|
||||
}
|
||||
}
|
||||
m_free(pt);
|
||||
|
|
|
@ -554,6 +554,11 @@ main( int argc, char **argv )
|
|||
opt.shm_coprocess = 1;
|
||||
requested_shm_size = pargs.r.ret_ulong;
|
||||
}
|
||||
else if ( pargs.r_opt == oStatusFD ) {
|
||||
/* this is needed to ensure that the status-fd filedescriptor is
|
||||
* initialized when init_shm_coprocessing() is called */
|
||||
set_status_fd( pargs.r.ret_int );
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
|
|
|
@ -42,17 +42,13 @@ md_filter( void *opaque, int control,
|
|||
{
|
||||
size_t size = *ret_len;
|
||||
md_filter_context_t *mfx = opaque;
|
||||
int i, c, rc=0;
|
||||
int i, rc=0;
|
||||
|
||||
if( control == IOBUFCTRL_UNDERFLOW ) {
|
||||
if( mfx->maxbuf_size && size > mfx->maxbuf_size )
|
||||
size = mfx->maxbuf_size;
|
||||
for(i=0; i < size; i++ ) {
|
||||
if( (c = iobuf_get(a)) == -1 )
|
||||
break;
|
||||
buf[i] = c;
|
||||
}
|
||||
|
||||
i = iobuf_read( a, buf, size );
|
||||
if( i == -1 ) i = 0;
|
||||
if( i ) {
|
||||
md_write(mfx->md, buf, i );
|
||||
if( mfx->md2 )
|
||||
|
|
107
g10/plaintext.c
107
g10/plaintext.c
|
@ -90,41 +90,92 @@ handle_plaintext( PKT_plaintext *pt, md_filter_context_t *mfx,
|
|||
|
||||
if( pt->len ) {
|
||||
assert( !clearsig );
|
||||
for( ; pt->len; pt->len-- ) {
|
||||
if( (c = iobuf_get(pt->buf)) == -1 ) {
|
||||
log_error("Problem reading source (%u bytes remaining)\n",
|
||||
(unsigned)pt->len);
|
||||
rc = G10ERR_READ_FILE;
|
||||
goto leave;
|
||||
}
|
||||
if( mfx->md )
|
||||
md_putc(mfx->md, c );
|
||||
if( convert && c == '\r' )
|
||||
continue; /* fixme: this hack might be too simple */
|
||||
if( fp ) {
|
||||
if( putc( c, fp ) == EOF ) {
|
||||
log_error("Error writing to `%s': %s\n",
|
||||
fname, strerror(errno) );
|
||||
rc = G10ERR_WRITE_FILE;
|
||||
if( convert ) { // text mode
|
||||
for( ; pt->len; pt->len-- ) {
|
||||
if( (c = iobuf_get(pt->buf)) == -1 ) {
|
||||
log_error("Problem reading source (%u bytes remaining)\n",
|
||||
(unsigned)pt->len);
|
||||
rc = G10ERR_READ_FILE;
|
||||
goto leave;
|
||||
}
|
||||
if( mfx->md )
|
||||
md_putc(mfx->md, c );
|
||||
if( c == '\r' )
|
||||
continue; /* fixme: this hack might be too simple */
|
||||
if( fp ) {
|
||||
if( putc( c, fp ) == EOF ) {
|
||||
log_error("Error writing to `%s': %s\n",
|
||||
fname, strerror(errno) );
|
||||
rc = G10ERR_WRITE_FILE;
|
||||
goto leave;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else if( !clearsig ) {
|
||||
while( (c = iobuf_get(pt->buf)) != -1 ) {
|
||||
if( mfx->md )
|
||||
md_putc(mfx->md, c );
|
||||
if( convert && c == '\r' )
|
||||
continue; /* fixme: this hack might be too simple */
|
||||
if( fp ) {
|
||||
if( putc( c, fp ) == EOF ) {
|
||||
log_error("Error writing to `%s': %s\n",
|
||||
fname, strerror(errno) );
|
||||
rc = G10ERR_WRITE_FILE;
|
||||
else { // binary mode
|
||||
byte *buffer = m_alloc( 32768 );
|
||||
while( pt->len ) {
|
||||
int len = pt->len > 32768 ? 32768 : pt->len;
|
||||
len = iobuf_read( pt->buf, buffer, len );
|
||||
if( len == -1 ) {
|
||||
log_error("Problem reading source (%u bytes remaining)\n",
|
||||
(unsigned)pt->len);
|
||||
rc = G10ERR_READ_FILE;
|
||||
m_free( buffer );
|
||||
goto leave;
|
||||
}
|
||||
if( mfx->md )
|
||||
md_write( mfx->md, buffer, len );
|
||||
if( fp ) {
|
||||
if( fwrite( buffer, 1, len, fp ) != len ) {
|
||||
log_error("Error writing to `%s': %s\n",
|
||||
fname, strerror(errno) );
|
||||
rc = G10ERR_WRITE_FILE;
|
||||
m_free( buffer );
|
||||
goto leave;
|
||||
}
|
||||
}
|
||||
pt->len -= len;
|
||||
}
|
||||
m_free( buffer );
|
||||
}
|
||||
}
|
||||
else if( !clearsig ) {
|
||||
if( convert ) { // text mode
|
||||
while( (c = iobuf_get(pt->buf)) != -1 ) {
|
||||
if( mfx->md )
|
||||
md_putc(mfx->md, c );
|
||||
if( convert && c == '\r' )
|
||||
continue; /* fixme: this hack might be too simple */
|
||||
if( fp ) {
|
||||
if( putc( c, fp ) == EOF ) {
|
||||
log_error("Error writing to `%s': %s\n",
|
||||
fname, strerror(errno) );
|
||||
rc = G10ERR_WRITE_FILE;
|
||||
goto leave;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else { // binary mode
|
||||
byte *buffer = m_alloc( 32768 );
|
||||
for( ;; ) {
|
||||
int len = iobuf_read( pt->buf, buffer, 32768 );
|
||||
if( len == -1 )
|
||||
break;
|
||||
if( mfx->md )
|
||||
md_write( mfx->md, buffer, len );
|
||||
if( fp ) {
|
||||
if( fwrite( buffer, 1, len, fp ) != len ) {
|
||||
log_error("Error writing to `%s': %s\n",
|
||||
fname, strerror(errno) );
|
||||
rc = G10ERR_WRITE_FILE;
|
||||
m_free( buffer );
|
||||
goto leave;
|
||||
}
|
||||
}
|
||||
}
|
||||
m_free( buffer );
|
||||
}
|
||||
pt->buf = NULL;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue