#include #include #define LD_EXTERN extern __attribute__((weak)) LD_EXTERN int ld_execl(const char *path, const char *arg1, va_list arg); LD_EXTERN int ld_execlp(const char *file, const char *arg1, va_list arg); LD_EXTERN int ld_execle(const char *path, const char *arg1, va_list arg); LD_EXTERN int ld_execv(const char *path, char *const argv[]); LD_EXTERN int ld_execvp(const char *file, char *const argv[]); LD_EXTERN int ld_execvpe( const char *file, char *const argv[], char *const envp[]); int execl(const char *path, const char *arg, ...) { va_list arglist; va_start(arglist, arg); int err = ld_execl(path, arg, arglist); va_end(arglist); if (err < 0) { return __set_errno(-err); } /* this shouldn't happen */ return __set_errno(ENOEXEC); } int execlp(const char *file, const char *arg, ...) { va_list arglist; va_start(arglist, arg); int err = ld_execlp(file, arg, arglist); va_end(arglist); if (err < 0) { return __set_errno(-err); } /* this shouldn't happen */ return __set_errno(ENOEXEC); } int execle(const char *path, const char *arg, ...) { va_list arglist; va_start(arglist, arg); int err = ld_execle(path, arg, arglist); va_end(arglist); if (err < 0) { return __set_errno(-err); } /* this shouldn't happen */ return __set_errno(ENOEXEC); } int execv(const char *path, char *const argv[]) { int err = ld_execv(path, argv); if (err < 0) { return __set_errno(-err); } /* this shouldn't happen */ return __set_errno(ENOEXEC); } int execvp(const char *file, char *const argv[]) { int err = ld_execvp(file, argv); if (err < 0) { return __set_errno(-err); } /* this shouldn't happen */ return __set_errno(ENOEXEC); } int execvpe(const char *file, char *const argv[], char *const envp[]) { int err = ld_execvpe(file, argv, envp); if (err < 0) { return __set_errno(-err); } /* this shouldn't happen */ return __set_errno(ENOEXEC); }