[PATCH 1/3] PATCH FLX: Add command line option for specifying the pid file
--- sysdep/unix/main.c | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/sysdep/unix/main.c b/sysdep/unix/main.c index bd80ba2..c0b2b22 100644 --- a/sysdep/unix/main.c +++ b/sysdep/unix/main.c @@ -548,16 +548,17 @@ signal_init(void) * Parsing of command-line arguments */ -static char *opt_list = "c:dD:ps:u:g:"; +static char *opt_list = "c:dD:ps:u:g:P:"; static int parse_and_exit; char *bird_name; static char *use_user; static char *use_group; +static char *pid_file; static void usage(void) { - fprintf(stderr, "Usage: %s [-c <config-file>] [-d] [-D <debug-file>] [-p] [-s <control-socket>] [-u <user>] [-g <group>]\n", bird_name); + fprintf(stderr, "Usage: %s [-c <config-file>] [-d] [-D <debug-file>] [-p] [-s <control-socket>] [-u <user>] [-g <group>] [-P <pid-file>]\n", bird_name); exit(1); } @@ -621,6 +622,28 @@ get_gid(const char *s) return gr->gr_gid; } +static inline void +set_pid(const char *s) +{ + int fd; + char pid[6]; + + if (!s) + return; + + memset(pid, 0, sizeof(pid)); + + if((fd=open(s, O_WRONLY|O_CREAT, 0664)) == -1) + die("Cannot open pid file '%s'", s); + + snprintf(pid, sizeof(pid), "%u", getpid()); + + if(write(fd, pid, sizeof(pid)) == -1) + die("Cannot write pid file '%s'", s); + + return; +} + static void parse_args(int argc, char **argv) { @@ -662,6 +685,9 @@ parse_args(int argc, char **argv) case 'g': use_group = optarg; break; + case 'P': + pid_file = optarg; + break; default: usage(); } @@ -733,6 +759,7 @@ main(int argc, char **argv) dup2(0, 2); } + set_pid(pid_file); signal_init(); #ifdef LOCAL_DEBUG -- 1.8.1.1 --Multipart=_Tue__24_Sep_2013_16_35_48_+0200_AMU0Imo+Flc+Ayzu Content-Type: text/x-diff; name="0003-FEAT-Add-protocol-volatile.patch" Content-Disposition: attachment; filename="0003-FEAT-Add-protocol-volatile.patch" Content-Transfer-Encoding: 7bit
participants (1)
-
Exceliance