--- networking/httpd.c +++ networking/httpd.c @@ -246,6 +246,7 @@ //usage: "\n -e STRING HTML encode STRING" //usage: "\n -d STRING URL decode STRING" +#define WANT_PIDFILE 1 #include "libbb.h" #include "common_bufsiz.h" #if ENABLE_PAM @@ -2599,6 +2600,7 @@ IF_FEATURE_HTTPD_BASIC_AUTH( r_opt_realm ,) IF_FEATURE_HTTPD_AUTH_MD5( m_opt_md5 ,) IF_FEATURE_HTTPD_SETUID( u_opt_setuid ,) + p_opt_pidfile , p_opt_port , p_opt_inetd , p_opt_foreground, @@ -2610,6 +2612,7 @@ OPT_REALM = IF_FEATURE_HTTPD_BASIC_AUTH( (1 << r_opt_realm )) + 0, OPT_MD5 = IF_FEATURE_HTTPD_AUTH_MD5( (1 << m_opt_md5 )) + 0, OPT_SETUID = IF_FEATURE_HTTPD_SETUID( (1 << u_opt_setuid )) + 0, + OPT_PIDFILE = 1 << p_opt_pidfile, OPT_PORT = 1 << p_opt_port, OPT_INETD = 1 << p_opt_inetd, OPT_FOREGROUND = 1 << p_opt_foreground, @@ -2623,6 +2626,7 @@ int server_socket = server_socket; /* for gcc */ unsigned opt; char *url_for_decode; + char *pidfilename; IF_FEATURE_HTTPD_ENCODE_URL_STR(const char *url_for_encode;) IF_FEATURE_HTTPD_SETUID(const char *s_ugid = NULL;) IF_FEATURE_HTTPD_SETUID(struct bb_uidgid_t ugid;) @@ -2646,12 +2650,14 @@ IF_FEATURE_HTTPD_BASIC_AUTH("r:") IF_FEATURE_HTTPD_AUTH_MD5("m:") IF_FEATURE_HTTPD_SETUID("u:") + "P:" "p:ifv", &opt_c_configFile, &url_for_decode, &home_httpd IF_FEATURE_HTTPD_ENCODE_URL_STR(, &url_for_encode) IF_FEATURE_HTTPD_BASIC_AUTH(, &g_realm) IF_FEATURE_HTTPD_AUTH_MD5(, &pass) IF_FEATURE_HTTPD_SETUID(, &s_ugid) + , &pidfilename , &bind_addr_or_port , &verbose ); @@ -2733,6 +2739,8 @@ #if BB_MMU if (!(opt & OPT_FOREGROUND)) bb_daemonize(0); /* don't change current directory */ + if (opt & OPT_PIDFILE) + write_pidfile(pidfilename); mini_httpd(server_socket); /* never returns */ #else mini_httpd_nommu(server_socket, argc, argv); /* never returns */