summaryrefslogtreecommitdiffhomepage
path: root/networking
diff options
context:
space:
mode:
Diffstat (limited to 'networking')
-rw-r--r--networking/inetd.c10
-rw-r--r--networking/udhcp/common.c45
2 files changed, 18 insertions, 37 deletions
diff --git a/networking/inetd.c b/networking/inetd.c
index 4faa4203a..fd72aa726 100644
--- a/networking/inetd.c
+++ b/networking/inetd.c
@@ -1212,7 +1212,7 @@ static void goaway(int sig ATTRIBUTE_UNUSED)
}
(void) close(sep->se_fd);
}
- (void) unlink(_PATH_INETDPID);
+ remove_pidfile(_PATH_INETDPID);
exit(0);
}
@@ -1301,13 +1301,7 @@ int inetd_main(int argc, char *argv[])
setgroups(1, &gid);
}
- {
- FILE *fp = fopen(_PATH_INETDPID, "w");
- if (fp != NULL) {
- fprintf(fp, "%u\n", getpid());
- fclose(fp);
- }
- }
+ write_pidfile(_PATH_INETDPID);
if (getrlimit(RLIMIT_NOFILE, &rlim_ofile) < 0) {
bb_perror_msg("getrlimit");
diff --git a/networking/udhcp/common.c b/networking/udhcp/common.c
index 7b2e19c42..46cc0348f 100644
--- a/networking/udhcp/common.c
+++ b/networking/udhcp/common.c
@@ -22,47 +22,35 @@ long uptime(void)
return info.uptime;
}
-
+#if ENABLE_FEATURE_PIDFILE
static const char *saved_pidfile;
static void pidfile_delete(void)
{
if (saved_pidfile)
- unlink(saved_pidfile);
+ remove_pidfile(saved_pidfile);
}
+#endif
-static int pidfile_acquire(const char *pidfile)
+static void create_pidfile(const char *pidfile)
{
- int pid_fd;
- if (!pidfile) return -1;
+ if (!pidfile)
+ return;
- pid_fd = open(pidfile, O_CREAT|O_WRONLY|O_TRUNC, 0644);
- if (pid_fd < 0) {
- bb_perror_msg("cannot open pidfile %s", pidfile);
- } else {
- /* lockf(pid_fd, F_LOCK, 0); */
- if (!saved_pidfile)
- atexit(pidfile_delete);
- saved_pidfile = pidfile;
+ if (!write_pidfile(pidfile)) {
+ bb_perror_msg("cannot create pidfile %s", pidfile);
+ return;
}
-
- return pid_fd;
-}
-
-static void pidfile_write_release(int pid_fd)
-{
- if (pid_fd < 0) return;
-
- fdprintf(pid_fd, "%d\n", getpid());
- /* lockf(pid_fd, F_UNLCK, 0); */
- close(pid_fd);
+#if ENABLE_FEATURE_PIDFILE
+ /* lockf(pid_fd, F_LOCK, 0); */
+ if (!saved_pidfile)
+ atexit(pidfile_delete);
+ saved_pidfile = pidfile;
+#endif
}
-
void udhcp_make_pidfile(const char *pidfile)
{
- int pid_fd;
-
/* Make sure fd 0,1,2 are open */
bb_sanitize_stdio();
@@ -70,8 +58,7 @@ void udhcp_make_pidfile(const char *pidfile)
setlinebuf(stdout);
/* Create pidfile */
- pid_fd = pidfile_acquire(pidfile);
- pidfile_write_release(pid_fd);
+ create_pidfile(pidfile);
bb_info_msg("%s (v%s) started", applet_name, BB_VER);
}