1
0
mirror of git://git.gnupg.org/gnupg.git synced 2024-06-16 00:29:50 +02:00

common/iobuf.h: Replace further use of literals with symbolic constants.

* common/iobuf.c: Move BLOCK_FILTER_INPUT,
BLOCK_FILTER_OUTPUT_BLOCK_FILTER_TEMP from here...
* common/iobuf.h: ... to here and rename to IOBUF_INPUT, IOBUF_OUTPUT
and IOBUF_TEMP, respectively.  Where appropriate, use these macros
instead of a literal.

--
Signed-off-by: Neal H. Walfield <neal@g10code.com>.
This commit is contained in:
Neal H. Walfield 2015-08-09 10:52:34 +02:00
parent 91357b7722
commit c06eabac8e
2 changed files with 44 additions and 40 deletions

View File

@ -138,13 +138,6 @@ typedef struct
#define OP_MIN_PARTIAL_CHUNK 512 #define OP_MIN_PARTIAL_CHUNK 512
#define OP_MIN_PARTIAL_CHUNK_2POW 9 #define OP_MIN_PARTIAL_CHUNK_2POW 9
enum
{
BLOCK_FILTER_INPUT=1,
BLOCK_FILTER_OUTPUT=2,
BLOCK_FILTER_TEMP=3
};
/* The context we use for the block filter (used to handle OpenPGP /* The context we use for the block filter (used to handle OpenPGP
length information header). */ length information header). */
typedef struct typedef struct
@ -1001,7 +994,7 @@ block_filter (void *opaque, int control, iobuf_t chain, byte * buffer,
log_debug ("init block_filter %p\n", a); log_debug ("init block_filter %p\n", a);
if (a->partial) if (a->partial)
a->count = 0; a->count = 0;
else if (a->use == BLOCK_FILTER_INPUT) else if (a->use == IOBUF_INPUT)
a->count = a->size = 0; a->count = a->size = 0;
else else
a->count = a->size; /* force first length bytes */ a->count = a->size; /* force first length bytes */
@ -1015,7 +1008,7 @@ block_filter (void *opaque, int control, iobuf_t chain, byte * buffer,
} }
else if (control == IOBUFCTRL_FREE) else if (control == IOBUFCTRL_FREE)
{ {
if (a->use == BLOCK_FILTER_OUTPUT) if (a->use == IOBUF_OUTPUT)
{ /* write the end markers */ { /* write the end markers */
if (a->partial) if (a->partial)
{ {
@ -1105,9 +1098,8 @@ iobuf_print_chain (iobuf_t a)
/* Allocate a new io buffer, with no function assigned. /* Allocate a new io buffer, with no function assigned.
USE is the desired usage: BLOCK_FILTER_INPUT for input, USE is the desired usage: IOBUF_INPUT for input, IOBUF_OUTPUT for
BLOCK_FILTER_OUTPUT for output, or BLOCK_FILTER_TEMP for a temp output, or IOBUF_TEMP for a temp buffer.
buffer.
BUFSIZE is a suggested buffer size. BUFSIZE is a suggested buffer size.
*/ */
@ -1117,9 +1109,7 @@ iobuf_alloc (int use, size_t bufsize)
iobuf_t a; iobuf_t a;
static int number = 0; static int number = 0;
assert (use == BLOCK_FILTER_INPUT assert (use == IOBUF_INPUT || use == IOBUF_OUTPUT || use == IOBUF_TEMP);
|| use == BLOCK_FILTER_OUTPUT
|| use == BLOCK_FILTER_TEMP);
a = xcalloc (1, sizeof *a); a = xcalloc (1, sizeof *a);
a->use = use; a->use = use;
@ -1151,7 +1141,7 @@ iobuf_close (iobuf_t a)
for (; a && !rc; a = a2) for (; a && !rc; a = a2)
{ {
a2 = a->chain; a2 = a->chain;
if (a->use == BLOCK_FILTER_OUTPUT && (rc = iobuf_flush (a))) if (a->use == IOBUF_OUTPUT && (rc = iobuf_flush (a)))
log_error ("iobuf_flush failed on close: %s\n", gpg_strerror (rc)); log_error ("iobuf_flush failed on close: %s\n", gpg_strerror (rc));
if (DBG_IOBUF) if (DBG_IOBUF)
@ -1181,7 +1171,7 @@ iobuf_cancel (iobuf_t a)
char *remove_name = NULL; char *remove_name = NULL;
#endif #endif
if (a && a->use == BLOCK_FILTER_OUTPUT) if (a && a->use == IOBUF_OUTPUT)
{ {
s = iobuf_get_real_fname (a); s = iobuf_get_real_fname (a);
if (s && *s) if (s && *s)
@ -1233,7 +1223,7 @@ iobuf_temp ()
{ {
iobuf_t a; iobuf_t a;
a = iobuf_alloc (3, IOBUF_BUFFER_SIZE); a = iobuf_alloc (IOBUF_TEMP, IOBUF_BUFFER_SIZE);
return a; return a;
} }
@ -1244,7 +1234,7 @@ iobuf_temp_with_content (const char *buffer, size_t length)
iobuf_t a; iobuf_t a;
int i; int i;
a = iobuf_alloc (3, length); a = iobuf_alloc (IOBUF_TEMP, length);
/* memcpy (a->d.buf, buffer, length); */ /* memcpy (a->d.buf, buffer, length); */
for (i=0; i < length; i++) for (i=0; i < length; i++)
a->d.buf[i] = buffer[i]; a->d.buf[i] = buffer[i];
@ -1332,7 +1322,7 @@ iobuf_open (const char *fname)
return iobuf_fdopen (translate_file_handle (fd, 0), "rb"); return iobuf_fdopen (translate_file_handle (fd, 0), "rb");
else if ((fp = fd_cache_open (fname, "rb")) == GNUPG_INVALID_FD) else if ((fp = fd_cache_open (fname, "rb")) == GNUPG_INVALID_FD)
return NULL; return NULL;
a = iobuf_alloc (1, IOBUF_BUFFER_SIZE); a = iobuf_alloc (IOBUF_INPUT, IOBUF_BUFFER_SIZE);
fcx = xmalloc (sizeof *fcx + strlen (fname)); fcx = xmalloc (sizeof *fcx + strlen (fname));
fcx->fp = fp; fcx->fp = fp;
fcx->print_only_name = print_only; fcx->print_only_name = print_only;
@ -1361,7 +1351,8 @@ do_iobuf_fdopen (int fd, const char *mode, int keep_open)
fp = INT2FD (fd); fp = INT2FD (fd);
a = iobuf_alloc (strchr (mode, 'w') ? 2 : 1, IOBUF_BUFFER_SIZE); a = iobuf_alloc (strchr (mode, 'w') ? IOBUF_OUTPUT : IOBUF_INPUT,
IOBUF_BUFFER_SIZE);
fcx = xmalloc (sizeof *fcx + 20); fcx = xmalloc (sizeof *fcx + 20);
fcx->fp = fp; fcx->fp = fp;
fcx->print_only_name = 1; fcx->print_only_name = 1;
@ -1401,7 +1392,8 @@ iobuf_esopen (estream_t estream, const char *mode, int keep_open)
file_es_filter_ctx_t *fcx; file_es_filter_ctx_t *fcx;
size_t len; size_t len;
a = iobuf_alloc (strchr (mode, 'w') ? 2 : 1, IOBUF_BUFFER_SIZE); a = iobuf_alloc (strchr (mode, 'w') ? IOBUF_OUTPUT : IOBUF_INPUT,
IOBUF_BUFFER_SIZE);
fcx = xtrymalloc (sizeof *fcx + 30); fcx = xtrymalloc (sizeof *fcx + 30);
fcx->fp = estream; fcx->fp = estream;
fcx->print_only_name = 1; fcx->print_only_name = 1;
@ -1426,7 +1418,8 @@ iobuf_sockopen (int fd, const char *mode)
sock_filter_ctx_t *scx; sock_filter_ctx_t *scx;
size_t len; size_t len;
a = iobuf_alloc (strchr (mode, 'w') ? 2 : 1, IOBUF_BUFFER_SIZE); a = iobuf_alloc (strchr (mode, 'w') ? IOBUF_OUTPUT : IOBUF_INPUT,
IOBUF_BUFFER_SIZE);
scx = xmalloc (sizeof *scx + 25); scx = xmalloc (sizeof *scx + 25);
scx->sock = fd; scx->sock = fd;
scx->print_only_name = 1; scx->print_only_name = 1;
@ -1468,7 +1461,7 @@ iobuf_create (const char *fname, int mode700)
return iobuf_fdopen (translate_file_handle (fd, 1), "wb"); return iobuf_fdopen (translate_file_handle (fd, 1), "wb");
else if ((fp = direct_open (fname, "wb", mode700)) == GNUPG_INVALID_FD) else if ((fp = direct_open (fname, "wb", mode700)) == GNUPG_INVALID_FD)
return NULL; return NULL;
a = iobuf_alloc (2, IOBUF_BUFFER_SIZE); a = iobuf_alloc (IOBUF_OUTPUT, IOBUF_BUFFER_SIZE);
fcx = xmalloc (sizeof *fcx + strlen (fname)); fcx = xmalloc (sizeof *fcx + strlen (fname));
fcx->fp = fp; fcx->fp = fp;
fcx->print_only_name = print_only; fcx->print_only_name = print_only;
@ -1499,7 +1492,7 @@ iobuf_openrw (const char *fname)
return NULL; return NULL;
else if ((fp = direct_open (fname, "r+b", 0)) == GNUPG_INVALID_FD) else if ((fp = direct_open (fname, "r+b", 0)) == GNUPG_INVALID_FD)
return NULL; return NULL;
a = iobuf_alloc (2, IOBUF_BUFFER_SIZE); a = iobuf_alloc (IOBUF_OUTPUT, IOBUF_BUFFER_SIZE);
fcx = xmalloc (sizeof *fcx + strlen (fname)); fcx = xmalloc (sizeof *fcx + strlen (fname));
fcx->fp = fp; fcx->fp = fp;
strcpy (fcx->fname, fname); strcpy (fcx->fname, fname);
@ -1624,7 +1617,7 @@ iobuf_push_filter2 (iobuf_t a,
if (a->directfp) if (a->directfp)
BUG (); BUG ();
if (a->use == BLOCK_FILTER_OUTPUT && (rc = iobuf_flush (a))) if (a->use == IOBUF_OUTPUT && (rc = iobuf_flush (a)))
return rc; return rc;
if (a->subno >= MAX_NESTING_FILTER) if (a->subno >= MAX_NESTING_FILTER)
@ -1649,11 +1642,11 @@ iobuf_push_filter2 (iobuf_t a,
a->filter_ov = NULL; a->filter_ov = NULL;
a->filter_ov_owner = 0; a->filter_ov_owner = 0;
a->filter_eof = 0; a->filter_eof = 0;
if (a->use == BLOCK_FILTER_TEMP) if (a->use == IOBUF_TEMP)
/* make a write stream from a temp stream */ /* make a write stream from a temp stream */
a->use = BLOCK_FILTER_OUTPUT; a->use = IOBUF_OUTPUT;
if (a->use == BLOCK_FILTER_OUTPUT) if (a->use == IOBUF_OUTPUT)
{ /* allocate a fresh buffer for the { /* allocate a fresh buffer for the
original stream */ original stream */
b->d.buf = xmalloc (a->d.size); b->d.buf = xmalloc (a->d.size);
@ -1732,7 +1725,7 @@ pop_filter (iobuf_t a, int (*f) (void *opaque, int control,
log_bug ("pop_filter(): filter function not found\n"); log_bug ("pop_filter(): filter function not found\n");
/* flush this stream if it is an output stream */ /* flush this stream if it is an output stream */
if (a->use == BLOCK_FILTER_OUTPUT && (rc = iobuf_flush (b))) if (a->use == IOBUF_OUTPUT && (rc = iobuf_flush (b)))
{ {
log_error ("iobuf_flush failed in pop_filter: %s\n", gpg_strerror (rc)); log_error ("iobuf_flush failed in pop_filter: %s\n", gpg_strerror (rc));
return rc; return rc;
@ -1791,7 +1784,7 @@ underflow (iobuf_t a)
int rc; int rc;
assert (a->d.start == a->d.len); assert (a->d.start == a->d.len);
if (a->use == BLOCK_FILTER_TEMP) if (a->use == IOBUF_TEMP)
return -1; /* EOF because a temp buffer can't do an underflow */ return -1; /* EOF because a temp buffer can't do an underflow */
if (a->filter_eof) if (a->filter_eof)
@ -1853,7 +1846,7 @@ underflow (iobuf_t a)
/* if( a->no == 1 ) */ /* if( a->no == 1 ) */
/* log_hexdump (" data:", a->d.buf, len); */ /* log_hexdump (" data:", a->d.buf, len); */
} }
if (a->use == BLOCK_FILTER_INPUT && rc == -1) if (a->use == IOBUF_INPUT && rc == -1)
{ /* EOF: we can remove the filter */ { /* EOF: we can remove the filter */
size_t dummy_len = 0; size_t dummy_len = 0;
@ -1915,7 +1908,7 @@ iobuf_flush (iobuf_t a)
if (a->directfp) if (a->directfp)
return 0; return 0;
if (a->use == BLOCK_FILTER_TEMP) if (a->use == IOBUF_TEMP)
{ /* increase the temp buffer */ { /* increase the temp buffer */
unsigned char *newbuf; unsigned char *newbuf;
size_t newsize = a->d.size + IOBUF_BUFFER_SIZE; size_t newsize = a->d.size + IOBUF_BUFFER_SIZE;
@ -1930,7 +1923,7 @@ iobuf_flush (iobuf_t a)
a->d.size = newsize; a->d.size = newsize;
return 0; return 0;
} }
else if (a->use != BLOCK_FILTER_OUTPUT) else if (a->use != IOBUF_OUTPUT)
log_bug ("flush on non-output iobuf\n"); log_bug ("flush on non-output iobuf\n");
else if (!a->filter) else if (!a->filter)
log_bug ("iobuf_flush: no filter\n"); log_bug ("iobuf_flush: no filter\n");
@ -2346,7 +2339,7 @@ iobuf_seek (iobuf_t a, off_t newpos)
} }
clearerr (fp); clearerr (fp);
} }
else if (a->use != BLOCK_FILTER_TEMP) else if (a->use != IOBUF_TEMP)
{ {
for (; a; a = a->chain) for (; a; a = a->chain)
{ {
@ -2374,7 +2367,7 @@ iobuf_seek (iobuf_t a, off_t newpos)
#endif #endif
} }
/* Discard the buffer unless it is a temp stream. */ /* Discard the buffer unless it is a temp stream. */
if (a->use != BLOCK_FILTER_TEMP) if (a->use != IOBUF_TEMP)
a->d.len = 0; a->d.len = 0;
a->d.start = 0; a->d.start = 0;
a->nbytes = 0; a->nbytes = 0;
@ -2454,11 +2447,11 @@ iobuf_set_partial_block_mode (iobuf_t a, size_t len)
{ {
block_filter_ctx_t *ctx = xcalloc (1, sizeof *ctx); block_filter_ctx_t *ctx = xcalloc (1, sizeof *ctx);
assert (a->use == BLOCK_FILTER_INPUT || a->use == BLOCK_FILTER_OUTPUT); assert (a->use == IOBUF_INPUT || a->use == IOBUF_OUTPUT);
ctx->use = a->use; ctx->use = a->use;
if (!len) if (!len)
{ {
if (a->use == BLOCK_FILTER_INPUT) if (a->use == IOBUF_INPUT)
log_debug ("pop_filter called in set_partial_block_mode" log_debug ("pop_filter called in set_partial_block_mode"
" - please report\n"); " - please report\n");
pop_filter (a, block_filter, NULL); pop_filter (a, block_filter, NULL);

View File

@ -55,6 +55,13 @@ typedef enum
IOBUF_IOCTL_FSYNC = 4 /* Uses ptrval. */ IOBUF_IOCTL_FSYNC = 4 /* Uses ptrval. */
} iobuf_ioctl_t; } iobuf_ioctl_t;
enum
{
IOBUF_INPUT=1,
IOBUF_OUTPUT=2,
IOBUF_TEMP=3
};
typedef struct iobuf_struct *iobuf_t; typedef struct iobuf_struct *iobuf_t;
typedef struct iobuf_struct *IOBUF; /* Compatibility with gpg 1.4. */ typedef struct iobuf_struct *IOBUF; /* Compatibility with gpg 1.4. */
@ -62,7 +69,9 @@ typedef struct iobuf_struct *IOBUF; /* Compatibility with gpg 1.4. */
/* fixme: we should hide most of this stuff */ /* fixme: we should hide most of this stuff */
struct iobuf_struct struct iobuf_struct
{ {
int use; /* 1 input , 2 output, 3 temp */ /* The type of filter. Either IOBUF_INPUT, IOBUF_OUTPUT or
IOBUF_TEMP. */
int use;
off_t nlimit; off_t nlimit;
off_t nbytes; /* Used together with nlimit. */ off_t nbytes; /* Used together with nlimit. */
off_t ntotal; /* Total bytes read (position of stream). */ off_t ntotal; /* Total bytes read (position of stream). */
@ -184,6 +193,8 @@ void iobuf_skip_rest (iobuf_t a, unsigned long n, int partial);
#define iobuf_get_temp_buffer(a) ( (a)->d.buf ) #define iobuf_get_temp_buffer(a) ( (a)->d.buf )
#define iobuf_get_temp_length(a) ( (a)->d.len ) #define iobuf_get_temp_length(a) ( (a)->d.len )
#define iobuf_is_temp(a) ( (a)->use == 3 )
/* Whether the filter uses an in-memory buffer. */
#define iobuf_is_temp(a) ( (a)->use == IOBUF_TEMP )
#endif /*GNUPG_COMMON_IOBUF_H*/ #endif /*GNUPG_COMMON_IOBUF_H*/