diff options
| -rw-r--r-- | networking/udhcp/common.c | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/networking/udhcp/common.c b/networking/udhcp/common.c index bfdc7ba8d..8542c664c 100644 --- a/networking/udhcp/common.c +++ b/networking/udhcp/common.c | |||
| @@ -59,15 +59,14 @@ void background(const char *pidfile) | |||
| 59 | #else /* __uClinux__ */ | 59 | #else /* __uClinux__ */ |
| 60 | int pid_fd; | 60 | int pid_fd; |
| 61 | 61 | ||
| 62 | if (!pidfile) return; | 62 | /* hold lock during fork. */ |
| 63 | 63 | if (pidfile) pid_fd = pidfile_acquire(pidfile); | |
| 64 | pid_fd = pidfile_acquire(pidfile); /* hold lock during fork. */ | ||
| 65 | if (daemon(0, 0) == -1) { | 64 | if (daemon(0, 0) == -1) { |
| 66 | perror("fork"); | 65 | perror("fork"); |
| 67 | exit(1); | 66 | exit(1); |
| 68 | } | 67 | } |
| 69 | daemonized++; | 68 | daemonized++; |
| 70 | pidfile_write_release(pid_fd); | 69 | if (pidfile) pidfile_write_release(pid_fd); |
| 71 | #endif /* __uClinux__ */ | 70 | #endif /* __uClinux__ */ |
| 72 | } | 71 | } |
| 73 | 72 | ||
| @@ -97,8 +96,10 @@ void start_log_and_pid(const char *client_server, const char *pidfile) | |||
| 97 | sanitize_fds(); | 96 | sanitize_fds(); |
| 98 | 97 | ||
| 99 | /* do some other misc startup stuff while we are here to save bytes */ | 98 | /* do some other misc startup stuff while we are here to save bytes */ |
| 100 | pid_fd = pidfile_acquire(pidfile); | 99 | if (pidfile) { |
| 101 | pidfile_write_release(pid_fd); | 100 | pid_fd = pidfile_acquire(pidfile); |
| 101 | pidfile_write_release(pid_fd); | ||
| 102 | } | ||
| 102 | 103 | ||
| 103 | /* equivelent of doing a fflush after every \n */ | 104 | /* equivelent of doing a fflush after every \n */ |
| 104 | setlinebuf(stdout); | 105 | setlinebuf(stdout); |
