Index: fusl/src/process/fexecve.c |
diff --git a/fusl/src/process/fexecve.c b/fusl/src/process/fexecve.c |
new file mode 100644 |
index 0000000000000000000000000000000000000000..6507b42949c915e757bfa71935388a0ea4e0a15d |
--- /dev/null |
+++ b/fusl/src/process/fexecve.c |
@@ -0,0 +1,13 @@ |
+#include <unistd.h> |
+#include <errno.h> |
+ |
+void __procfdname(char *, unsigned); |
+ |
+int fexecve(int fd, char *const argv[], char *const envp[]) |
+{ |
+ char buf[15 + 3*sizeof(int)]; |
+ __procfdname(buf, fd); |
+ execve(buf, argv, envp); |
+ if (errno == ENOENT) errno = EBADF; |
+ return -1; |
+} |