delorie.com/djgpp/doc/libc/libc_651.html
|
search
|
libc.a reference
redir_cmdline_parse
Syntax
| #include <debug/redir.h>
int redir_cmdline_parse (const char *args, cmdline_t *cmd);
|
Description
For the rationale and general description of the debugger redirection
issue, see redir_debug_init.
This function parses a command-line tail (i.e., without the program to
be invoked) passed as a string in args. For every redirection
directive in args, like `>> foo', it opens the file that is
the target of the redirection, and records in cmd the information
about these redirections. (See section redir_debug_init, for details of the
cmdline_t
structure that is used to hold this information.) The
command line with redirections removed is placed into
cmd->command
(typically, it will be used to call
v2loadimage
, see section v2loadimage), while the rest of information
is used by redir_to_child
and redir_to_debugger
to
redirect standard handles before and after calling run_child
.
Return Value
The function returns zero in case of success, -1 otherwise. Failure
usually means some kind of syntax error, like `>' without a file
name following it; or a file name that isn't allowed by the underlying
OS, like `lost+found' on DOS.
Portability
Example
| /* Init command line storage. */
if (redir_debug_init (&child_cmd) == -1)
fatal ("Cannot allocate redirection storage: not enough memory.\n");
/* Parse the command line and create redirections. */
if (strpbrk (args, "<>"))
{
if (redir_cmdline_parse (args, &child_cmd) == 0)
args = child_cmd.command;
else
error ("Syntax error in command line.");
}
else
child_cmd.command = strdup (args);
cmdline = (char *) alloca (strlen (args) + 4);
cmdline[0] = strlen (args);
strcpy (cmdline + 1, args);
cmdline[strlen (args) + 1] = 13;
if (v2loadimage (exec_file, cmdline, start_state))
{
printf ("Load failed for image %s\n", exec_file);
exit (1);
}
|