mirror of
https://github.com/ipxe/ipxe
synced 2025-12-22 04:50:25 +03:00
Added execv() and system().
This commit is contained in:
22
src/include/gpxe/command.h
Normal file
22
src/include/gpxe/command.h
Normal 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 */
|
||||
@@ -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
24
src/include/unistd.h
Normal 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 */
|
||||
Reference in New Issue
Block a user