mirror of
git://git.gnupg.org/gnupg.git
synced 2025-07-03 22:56:33 +02:00
added some stuff for signing keys
This commit is contained in:
parent
68ea0f4353
commit
15426c6d96
27 changed files with 750 additions and 267 deletions
|
@ -194,6 +194,7 @@ optfile_parse( FILE *fp, const char *filename, unsigned *lineno,
|
|||
char keyword[100];
|
||||
char *buffer = NULL;
|
||||
size_t buflen = 0;
|
||||
int inverse=0;
|
||||
|
||||
if( !fp ) /* same as arg_parse() in this case */
|
||||
return arg_parse( arg, opts );
|
||||
|
@ -216,6 +217,8 @@ optfile_parse( FILE *fp, const char *filename, unsigned *lineno,
|
|||
break;
|
||||
index = i;
|
||||
arg->r_opt = opts[index].short_opt;
|
||||
if( inverse )
|
||||
arg->r_opt = -arg->r_opt;
|
||||
if( !opts[index].short_opt )
|
||||
arg->r_opt = -2; /* unknown option */
|
||||
else if( (opts[index].flags & 8) ) /* no optional argument */
|
||||
|
|
49
util/iobuf.c
49
util/iobuf.c
|
@ -370,6 +370,36 @@ iobuf_create( const char *fname )
|
|||
return a;
|
||||
}
|
||||
|
||||
/****************
|
||||
* append to a iobuf if the file does not exits; create it.
|
||||
* cannont be used for stdout.
|
||||
*/
|
||||
IOBUF
|
||||
iobuf_append( const char *fname )
|
||||
{
|
||||
IOBUF a;
|
||||
FILE *fp;
|
||||
file_filter_ctx_t *fcx;
|
||||
size_t len;
|
||||
|
||||
if( !fname )
|
||||
return NULL;
|
||||
else if( !(fp = fopen(fname, "ab")) )
|
||||
return NULL;
|
||||
a = iobuf_alloc(2, 8192 );
|
||||
fcx = m_alloc( sizeof *fcx + strlen(fname) );
|
||||
fcx->fp = fp;
|
||||
strcpy(fcx->fname, fname );
|
||||
a->filter = file_filter;
|
||||
a->filter_ov = fcx;
|
||||
file_filter( fcx, IOBUFCTRL_DESC, NULL, (byte*)&a->desc, &len );
|
||||
file_filter( fcx, IOBUFCTRL_INIT, NULL, NULL, &len );
|
||||
if( DBG_IOBUF )
|
||||
log_debug("iobuf-%d.%d: append '%s'\n", a->no, a->subno, a->desc );
|
||||
|
||||
return a;
|
||||
}
|
||||
|
||||
/****************
|
||||
* Register an i/o filter.
|
||||
*/
|
||||
|
@ -709,8 +739,25 @@ iobuf_tell( IOBUF a )
|
|||
int
|
||||
iobuf_seek( IOBUF a, ulong newpos )
|
||||
{
|
||||
file_filter_ctx_t *b = NULL;
|
||||
|
||||
return -1;
|
||||
for( ; a; a = a->chain ) {
|
||||
if( !a->chain && a->filter == file_filter ) {
|
||||
b = a->filter_ov;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if( !a )
|
||||
return -1;
|
||||
|
||||
if( fseek( b->fp, newpos, SEEK_SET ) ) {
|
||||
log_error("can't seek to %lu: %s\n", newpos, strerror(errno) );
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* FIXME: flush all buffers (and remove filters?)*/
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -46,7 +46,7 @@ print_string( FILE *fp, byte *p, size_t n )
|
|||
else if( !*p )
|
||||
putc('0', fp);
|
||||
else
|
||||
printf("x%02x", *p );
|
||||
fprintf(fp, "x%02x", *p );
|
||||
}
|
||||
else
|
||||
putc(*p, fp);
|
||||
|
|
22
util/ttyio.c
22
util/ttyio.c
|
@ -60,6 +60,28 @@ tty_printf( const char *fmt, ... )
|
|||
}
|
||||
|
||||
|
||||
/****************
|
||||
* Print a string, but filter all control characters out.
|
||||
*/
|
||||
void
|
||||
tty_print_string( byte *p, size_t n )
|
||||
{
|
||||
for( ; n; n--, p++ )
|
||||
if( iscntrl( *p ) ) {
|
||||
putc('\\', stderr);
|
||||
if( *p == '\n' )
|
||||
putc('n', stderr);
|
||||
else if( !*p )
|
||||
putc('0', stderr);
|
||||
else
|
||||
fprintf(stderr, "x%02x", *p );
|
||||
}
|
||||
else
|
||||
putc(*p, stderr);
|
||||
}
|
||||
|
||||
|
||||
|
||||
char *
|
||||
tty_get( const char *prompt )
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue