Added execv() and system().

This commit is contained in:
Michael Brown
2006-12-08 01:23:11 +00:00
parent e106a39ce8
commit f3d817d512
4 changed files with 186 additions and 0 deletions

View File

@@ -0,0 +1,22 @@
#ifndef _GPXE_COMMAND_H
#define _GPXE_COMMAND_H
#include <gpxe/tables.h>
/** A command-line command */
struct command {
/** Name of the command */
const char *name;
/**
* Function implementing the command
*
* @v argc Argument count
* @v argv Argument list
* @ret rc Return status code
*/
int ( * exec ) ( int argc, char **argv );
};
#define __command __table ( commands, 01 )
#endif /* _GPXE_COMMAND_H */

View File

@@ -5,6 +5,7 @@ extern unsigned long strtoul ( const char *p, char **endp, int base );
extern void * realloc ( void *old_ptr, size_t new_size );
extern void * malloc ( size_t size );
extern void free ( void *ptr );
extern int system ( const char *command );
/**
* Allocate cleared memory

24
src/include/unistd.h Normal file
View File

@@ -0,0 +1,24 @@
#ifndef _UNISTD_H
#define _UNISTD_H
#include <stddef.h>
#include <stdarg.h>
extern int execv ( const char *command, char * const argv[] );
/**
* Execute command
*
* @v command Command name
* @v arg ... Argument list (starting with argv[0])
* @ret rc Command exit status
*
* This is a front end to execv().
*/
#define execl( command, arg, ... ) ( { \
char * const argv[] = { (arg), ## __VA_ARGS__, NULL }; \
int rc = execv ( (command), argv ); \
rc; \
} )
#endif /* _UNISTD_H */