make udhcp work under uclinux, to an extent
No binary (build failed)
—
(log yok)
| @@ -102,6 +102,9 @@ static void exit_fun(void) | |
| void background(const char *pidfile) | |
| { | |
| + | #ifdef __uClinux__ |
| + | LOG(LOG_ERR, "Cannot background in uclinux (yet)"); |
| + | #else /* __uClinux__ */ |
| int pid_fd = -1; | |
| if (pidfile) { | |
| @@ -131,6 +134,7 @@ void background(const char *pidfile) | |
| lockf(pid_fd, F_UNLCK, 0); | |
| close(pid_fd); | |
| } | |
| + | #endif /* __uClinux__ */ |
| } | |
| /* Signal handler */ | |
| @@ -225,7 +225,7 @@ void run_script(struct dhcpMessage *packet, const char *name) | |
| return; | |
| /* call script */ | |
| - | pid = fork(); |
| + | pid = vfork(); |
| if (pid) { | |
| waitpid(pid, NULL, 0); | |
| return; | |
| @@ -235,7 +235,9 @@ void run_script(struct dhcpMessage *packet, const char *name) | |
| /* close fd's? */ | |
| /* exec script */ | |
| + | #ifndef __uClinux__ |
| DEBUG(LOG_INFO, "execle'ing %s", client_config.script); | |
| + | #endif /* __uClinux__ */ |
| execle(client_config.script, client_config.script, | |
| name, NULL, envp); | |
| LOG(LOG_ERR, "script %s failed: %m", client_config.script); | |