spawnv.c

来自「GUN开源阻止下的编译器GCC」· C语言 代码 · 共 72 行

C
72
字号
/* This is a kludge to get around the Microsoft C spawn functions' propensity   to remove the outermost set of double quotes from all arguments.  */#define index(s,c) strchr((s),(c))extern char *malloc ();const char * const *fix_argv (argv)  char **argv;{  static char sh_chars[] = "\"";  int i, len;  char *new_argv;  char *p, *ap;  for (i=1; argv[i]; i++)    {      len = strlen (argv[i]);      new_argv = malloc (2*len+3);      ap = new_argv;      for (p = argv[i]; *p != '\0'; ++p)        {          if (index (sh_chars, *p) != 0)            *ap++ = '\\';          *ap++ = *p;        }      *ap = '\0';      argv[i] = new_argv;    }  return (const char * const *) argv;}int __spawnv (mode, cmdname, argv)  int mode;  const char *cmdname;  char **argv;{  _spawnv (mode, cmdname, fix_argv (argv));}int __spawnvp (mode, cmdname, argv)  int mode;  const char *cmdname;  char **argv;{  _spawnvp (mode, cmdname, fix_argv (argv));}int spawnve (mode, cmdname, argv, envp)  int mode;  const char *cmdname;  char **argv;  const char *const *envp;{  _spawnve (mode, cmdname, fix_argv (argv), envp);}int __spawnvpe (mode, cmdname, argv, envp)  int mode;  const char *cmdname;  char **argv;  const char *const *envp;{  _spawnvpe (mode, cmdname, fix_argv (argv), envp);}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?