mirror of
git://git.gnupg.org/gnupg.git
synced 2025-07-02 22:46:30 +02:00
common,w32: Implement globing of command line args.
* common/w32-misc.c [W32]: Include windows.h
(struct add_arg_s): New.
(add_arg): New.
(glob_arg): New.
(parse_cmdstring): Add arg argvflags and set it.
(w32_parse_commandline): Add arg r_itemsalloced. Add globing.
* common/init.c (prepare_w32_commandline): Mark glob created items as
leaked.
* common/t-w32-cmdline.c : Include windows.h
(test_all): Add simple glob test for Unix.
(main): Add manual test mode for Windows.
* common/xasprintf.c (xtryreallocarray): New.
--
GnuPG-bug-id: 4398
Backported-from-master: 089c943967
)
This commit is contained in:
parent
4d6807b215
commit
09f49b4c9a
6 changed files with 380 additions and 18 deletions
|
@ -318,7 +318,7 @@ prepare_w32_commandline (int *r_argc, char ***r_argv)
|
|||
int argc;
|
||||
char **argv;
|
||||
const char *s;
|
||||
int globing;
|
||||
int i, globing, itemsalloced;
|
||||
|
||||
s = strusage (95);
|
||||
globing = (s && *s == '1');
|
||||
|
@ -349,13 +349,18 @@ prepare_w32_commandline (int *r_argc, char ***r_argv)
|
|||
}
|
||||
gpgrt_annotate_leaked_object (cmdline);
|
||||
|
||||
argv = w32_parse_commandline (cmdline, globing, &argc);
|
||||
argv = w32_parse_commandline (cmdline, globing, &argc, &itemsalloced);
|
||||
if (!argv)
|
||||
{
|
||||
log_error ("parsing command line failed: %s\n", "internal error");
|
||||
return; /* Ooops. */
|
||||
}
|
||||
gpgrt_annotate_leaked_object (argv);
|
||||
if (itemsalloced)
|
||||
{
|
||||
for (i=0; i < argc; i++)
|
||||
gpgrt_annotate_leaked_object (argv[i]);
|
||||
}
|
||||
*r_argv = argv;
|
||||
*r_argc = argc;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue