Jeremy Soller 6 vuotta sitten
vanhempi
commit
9790289aec
2 muutettua tiedostoa jossa 24 lisäystä ja 0 poistoa
  1. 1 0
      include/bits/unistd.h
  2. 23 0
      src/c/unistd.c

+ 1 - 0
include/bits/unistd.h

@@ -9,6 +9,7 @@ extern "C" {
 
 int execl(const char *path, const char* argv0, ...);
 int execle(const char *path, const char* argv0, ...);
+int execlp(const char *file, const char* argv0, ...);
 
 #ifdef __cplusplus
 } // extern "C"

+ 23 - 0
src/c/unistd.c

@@ -47,3 +47,26 @@ int execle(const char *path, const char* argv0, ...)
 		return execve(path, argv, envp);
 	}
 }
+
+int execvp(const char *file, char *const *argv);
+
+int execlp(const char *file, const char* argv0, ...)
+{
+	int argc;
+	va_list ap;
+	va_start(ap, argv0);
+	for (argc = 1; va_arg(ap, const char*); argc++);
+	va_end(ap);
+	{
+		int i;
+		char *argv[argc+1];
+		va_start(ap, argv0);
+		argv[0] = (char *)argv0;
+		for (i = 1; i < argc; i++) {
+			argv[i] = va_arg(ap, char *);
+		}
+		argv[i] = NULL;
+		va_end(ap);
+		return execvp(file, argv);
+	}
+}