delorie.com/djgpp/doc/libc/libc_651.html   search  
libc.a reference

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

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

ANSI/ISO C No
POSIX No

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);
    }


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

  webmaster     delorie software   privacy  
  Copyright © 2004     Updated Apr 2004