From fa9eae54dd88af60907aae97529d798409474d2d Mon Sep 17 00:00:00 2001 From: Hartmut Birr Date: Sun, 23 Mar 2003 15:18:01 +0000 Subject: [PATCH] - Fixed a bug in valisttos. - Implemented _spawnlp. svn path=/trunk/; revision=4414 --- reactos/lib/msvcrt/misc/crtmain.c | 15 +-------------- reactos/lib/msvcrt/process/process.c | 23 ++++++++++++++++++++++- 2 files changed, 23 insertions(+), 15 deletions(-) diff --git a/reactos/lib/msvcrt/misc/crtmain.c b/reactos/lib/msvcrt/misc/crtmain.c index e3bb05aa5d3..af49ae9fd70 100644 --- a/reactos/lib/msvcrt/misc/crtmain.c +++ b/reactos/lib/msvcrt/misc/crtmain.c @@ -1,4 +1,4 @@ -/* $Id: crtmain.c,v 1.3 2002/12/05 15:30:44 robd Exp $ +/* $Id: crtmain.c,v 1.4 2003/03/23 15:18:01 hbirr Exp $ * * ReactOS MSVCRT.DLL Compatibility Library */ @@ -31,21 +31,8 @@ _local_unwind2(void) return 0; } -int -STDCALL -_spawnlp(int a, const char* b, const char* args, ...) -{ - return 0; -} - #else /*__GNUC__*/ -int -_spawnlp(int a, const char* b, const char* args, ...) -{ - return 0; -} - #endif /*__GNUC__*/ diff --git a/reactos/lib/msvcrt/process/process.c b/reactos/lib/msvcrt/process/process.c index 072a755a6e6..9577badf10f 100644 --- a/reactos/lib/msvcrt/process/process.c +++ b/reactos/lib/msvcrt/process/process.c @@ -1,4 +1,4 @@ -/* $Id: process.c,v 1.3 2002/12/09 20:06:24 hbirr Exp $ */ +/* $Id: process.c,v 1.4 2003/03/23 15:18:01 hbirr Exp $ */ #include #include #include @@ -150,6 +150,7 @@ valisttos(const char* arg0, va_list alist, char delim) { len = strlen(arg0); memcpy(ptr, arg0, len); + ptr += len; *ptr++ = delim; arg0 = va_arg(alist2, char*); } @@ -385,6 +386,26 @@ int _spawnvp(int mode, const char* cmdname, char* const* argv) return _spawnv(mode, find_exec(cmdname, pathname), argv); } +int _spawnlp(int mode, const char* cmdname, const char* arg0, .../*, NULL*/) +{ + va_list argp; + char* args; + int ret = -1; + char pathname[FILENAME_MAX]; + + DPRINT("_spawnlp('%s')\n", cmdname); + + va_start(argp, arg0); + args = valisttos(arg0, argp, ' '); + if (args) + { + ret = do_spawn(mode, find_exec(cmdname, pathname), args, NULL); + free(args); + } + return ret; +} + + int _spawnlpe(int mode, const char* cmdname, const char* arg0, .../*, NULL, const char* const* envp*/) { va_list argp;