define __KERNEL_STRICT_NAMES to avoid inclusion of kernel types on systems that carry...
[cake.git] / compiler / clib / execlp.c
blobe08014e657d87c503227ce8e5fefb353c759f9f4
1 /*
2 Copyright © 2008-2009, The AROS Development Team. All rights reserved.
3 $Id$
5 POSIX function execlp().
6 */
8 #include <aros/debug.h>
9 #include <errno.h>
10 #include <assert.h>
11 #include <stdlib.h>
13 #include "__exec.h"
15 /*****************************************************************************
17 NAME */
18 #include <unistd.h>
20 int execlp(
22 /* SYNOPSIS */
23 const char *file,
24 const char *arg, ...)
26 /* FUNCTION
27 Executes a file with given name. The search paths for the executed
28 file are paths specified in the PATH environment variable.
30 INPUTS
31 file - Name of the file to execute.
32 arg - First argument passed to the executed file.
33 ... - Other arguments passed to the executed file.
35 RESULT
36 Returns -1 and sets errno appropriately in case of error, otherwise
37 doesn't return.
39 NOTES
41 EXAMPLE
43 BUGS
45 SEE ALSO
46 execve(), execl(), execv(), execvp()
48 INTERNALS
50 ******************************************************************************/
52 va_list args;
53 char *const *argv;
55 va_start(args, arg);
57 if(!(argv = __exec_valist2array(arg, args)))
59 errno = ENOMEM;
60 return -1;
63 va_end(args);
65 APTR id = __exec_prepare(file, 1, argv, environ);
66 __exec_cleanup_array();
67 if (!id)
68 return -1;
70 __exec_do(id);
72 assert(0); /* Should not be reached */
73 return -1;
74 } /* execlp() */