mirror of
git://git.gnupg.org/gnupg.git
synced 2025-01-22 14:57:02 +01:00
* main.h, misc.c (parse_options): New general option line parser. Fix the
bug in the old version that did not handle report syntax errors after a valid entry. * import.c (parse_import_options), export.c (parse_export_options): Call it here instead of duplicating the code.
This commit is contained in:
parent
d6e7a14fa7
commit
c8abff498a
@ -1,3 +1,13 @@
|
||||
2003-05-31 David Shaw <dshaw@jabberwocky.com>
|
||||
|
||||
* main.h, misc.c (parse_options): New general option line parser.
|
||||
Fix the bug in the old version that did not handle report syntax
|
||||
errors after a valid entry.
|
||||
|
||||
* import.c (parse_import_options), export.c
|
||||
(parse_export_options): Call it here instead of duplicating the
|
||||
code.
|
||||
|
||||
2003-05-30 David Shaw <dshaw@jabberwocky.com>
|
||||
|
||||
* keylist.c (list_one): Don't show the keyring filename when in
|
||||
|
38
g10/export.c
38
g10/export.c
@ -41,13 +41,7 @@ static int do_export_stream( IOBUF out, STRLIST users,
|
||||
int
|
||||
parse_export_options(char *str,unsigned int *options)
|
||||
{
|
||||
char *tok;
|
||||
int hit=0;
|
||||
struct
|
||||
{
|
||||
char *name;
|
||||
unsigned int bit;
|
||||
} export_opts[]=
|
||||
struct parse_options export_opts[]=
|
||||
{
|
||||
{"include-non-rfc",EXPORT_INCLUDE_NON_RFC},
|
||||
{"include-local-sigs",EXPORT_INCLUDE_LOCAL_SIGS},
|
||||
@ -57,34 +51,7 @@ parse_export_options(char *str,unsigned int *options)
|
||||
/* add tags for include revoked and disabled? */
|
||||
};
|
||||
|
||||
while((tok=strsep(&str," ,")))
|
||||
{
|
||||
int i,rev=0;
|
||||
|
||||
if(ascii_strncasecmp("no-",tok,3)==0)
|
||||
{
|
||||
rev=1;
|
||||
tok+=3;
|
||||
}
|
||||
|
||||
for(i=0;export_opts[i].name;i++)
|
||||
{
|
||||
if(ascii_strcasecmp(export_opts[i].name,tok)==0)
|
||||
{
|
||||
if(rev)
|
||||
*options&=~export_opts[i].bit;
|
||||
else
|
||||
*options|=export_opts[i].bit;
|
||||
hit=1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(!hit && !export_opts[i].name)
|
||||
return 0;
|
||||
}
|
||||
|
||||
return hit;
|
||||
return parse_options(str,options,export_opts);
|
||||
}
|
||||
|
||||
/****************
|
||||
@ -343,4 +310,3 @@ do_export_stream( IOBUF out, STRLIST users, int secret,
|
||||
log_info(_("WARNING: nothing exported\n"));
|
||||
return rc;
|
||||
}
|
||||
|
||||
|
37
g10/import.c
37
g10/import.c
@ -86,13 +86,7 @@ static int merge_keysigs( KBNODE dst, KBNODE src, int *n_sigs,
|
||||
int
|
||||
parse_import_options(char *str,unsigned int *options)
|
||||
{
|
||||
char *tok;
|
||||
int hit=0;
|
||||
struct
|
||||
{
|
||||
char *name;
|
||||
unsigned int bit;
|
||||
} import_opts[]=
|
||||
struct parse_options import_opts[]=
|
||||
{
|
||||
{"allow-local-sigs",IMPORT_ALLOW_LOCAL_SIGS},
|
||||
{"repair-hkp-subkey-bug",IMPORT_REPAIR_PKS_SUBKEY_BUG},
|
||||
@ -100,34 +94,7 @@ parse_import_options(char *str,unsigned int *options)
|
||||
{NULL,0}
|
||||
};
|
||||
|
||||
while((tok=strsep(&str," ,")))
|
||||
{
|
||||
int i,rev=0;
|
||||
|
||||
if(ascii_strncasecmp("no-",tok,3)==0)
|
||||
{
|
||||
rev=1;
|
||||
tok+=3;
|
||||
}
|
||||
|
||||
for(i=0;import_opts[i].name;i++)
|
||||
{
|
||||
if(ascii_strcasecmp(import_opts[i].name,tok)==0)
|
||||
{
|
||||
if(rev)
|
||||
*options&=~import_opts[i].bit;
|
||||
else
|
||||
*options|=import_opts[i].bit;
|
||||
hit=1;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(!hit && !import_opts[i].name)
|
||||
return 0;
|
||||
}
|
||||
|
||||
return hit;
|
||||
return parse_options(str,options,import_opts);
|
||||
}
|
||||
|
||||
void *
|
||||
|
10
g10/main.h
10
g10/main.h
@ -87,8 +87,16 @@ void deprecated_warning(const char *configname,unsigned int configlineno,
|
||||
const char *option,const char *repl1,const char *repl2);
|
||||
const char *compress_algo_to_string(int algo);
|
||||
int check_compress_algo(int algo);
|
||||
void compliance_failure(void);
|
||||
const char *compliance_option_string(void);
|
||||
void compliance_failure(void);
|
||||
|
||||
struct parse_options
|
||||
{
|
||||
char *name;
|
||||
unsigned int bit;
|
||||
};
|
||||
|
||||
int parse_options(char *str,unsigned int *options,struct parse_options *opts);
|
||||
|
||||
/*-- helptext.c --*/
|
||||
void display_online_help( const char *keyword );
|
||||
|
37
g10/misc.c
37
g10/misc.c
@ -593,3 +593,40 @@ compliance_failure(void)
|
||||
log_info(_("this message may not be usable by %s\n"),compliance_string());
|
||||
opt.compliance=CO_GNUPG;
|
||||
}
|
||||
|
||||
int
|
||||
parse_options(char *str,unsigned int *options,struct parse_options *opts)
|
||||
{
|
||||
char *tok;
|
||||
|
||||
while((tok=strsep(&str," ,")))
|
||||
{
|
||||
int i,rev=0;
|
||||
|
||||
if(tok[0]=='\0')
|
||||
continue;
|
||||
|
||||
if(ascii_strncasecmp("no-",tok,3)==0)
|
||||
{
|
||||
rev=1;
|
||||
tok+=3;
|
||||
}
|
||||
|
||||
for(i=0;opts[i].name;i++)
|
||||
{
|
||||
if(ascii_strcasecmp(opts[i].name,tok)==0)
|
||||
{
|
||||
if(rev)
|
||||
*options&=~opts[i].bit;
|
||||
else
|
||||
*options|=opts[i].bit;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if(!opts[i].name)
|
||||
return 0;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user