1 /***********************************************************************
3 * This software is part of the ast package *
4 * Copyright (c) 1985-2010 AT&T Intellectual Property *
5 * and is licensed under the *
6 * Common Public License, Version 1.0 *
7 * by AT&T Intellectual Property *
9 * A copy of the License is available at *
10 * http://www.opensource.org/licenses/cpl1.0.txt *
11 * (with md5 checksum 059e8cd6165cb4c31e351f2b69388fd9) *
13 * Information and Software Systems Research *
17 * Glenn Fowler <gsf@research.att.com> *
18 * David Korn <dgk@research.att.com> *
19 * Phong Vo <kpv@research.att.com> *
21 ***********************************************************************/
25 * OBSOLETE 20030321 -- use spawnveg()
31 #define spawnve ______spawnve
34 #define spawnvpe ______spawnvpe
37 #define spawnvp ______spawnvp
40 #define spawnlp ______spawnlp
59 #if defined(__EXPORT__)
60 #define extern __EXPORT__
70 spawnve(const char* cmd
, char* const argv
[], char* const envv
[])
72 return spawnveg(cmd
, argv
, envv
, 0);
84 spawnvpe(const char* name
, char* const argv
[], char* const envv
[])
86 register const char* path
= name
;
88 char buffer
[PATH_MAX
];
91 path
= pathpath(buffer
, name
, NULL
, PATH_REGULAR
|PATH_EXECUTE
);
92 if ((pid
= spawnve(path
, argv
, envv
)) >= 0)
96 register char** newargv
;
100 for (ov
= (char**)argv
; *ov
++;);
101 if (newargv
= newof(0, char*, ov
+ 1 - (char**)argv
, 0))
107 while (*nv
++ = *++ov
);
109 pid
= spawnve(path
, newargv
, environ
);
127 spawnvp(const char* name
, char* const argv
[])
129 return spawnvpe(name
, argv
, environ
);
141 spawnlp(const char* name
, const char* arg
, ...)
147 pid
= spawnvp(name
, (char* const*)&arg
);