1
0
Fork 0
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.

--

GnuPG-bug-id: 4398
This commit is contained in:
Werner Koch 2021-03-04 16:52:03 +01:00
parent 20c6007686
commit 089c943967
No known key found for this signature in database
GPG key ID: E3FDFF218E45B72B
4 changed files with 325 additions and 18 deletions

View file

@ -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 = gpgrt_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;
}