diff options
author | Denis Vlasenko <vda.linux@googlemail.com> | 2007-03-28 02:01:31 +0400 |
---|---|---|
committer | Denis Vlasenko <vda.linux@googlemail.com> | 2007-03-28 02:01:31 +0400 |
commit | 10457b90db925369739a900445b640364eda5e4c (patch) | |
tree | 6d6f18564291257738360d97712724868175167e /networking/udhcp | |
parent | f4d40c87d3a18fccb8c0946fc09f1d8f24a2bcf3 (diff) |
make pidfile writing configurable.
[ui]toa_to_buf: change API. No users yet.
Diffstat (limited to 'networking/udhcp')
-rw-r--r-- | networking/udhcp/common.c | 45 |
1 files changed, 16 insertions, 29 deletions
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); } |