r2230 - trunk/varnish-cache/bin/varnishncsa
des at projects.linpro.no
des at projects.linpro.no
Thu Nov 8 17:28:26 CET 2007
Author: des
Date: 2007-11-08 17:28:26 +0100 (Thu, 08 Nov 2007)
New Revision: 2230
Modified:
trunk/varnish-cache/bin/varnishncsa/varnishncsa.1
trunk/varnish-cache/bin/varnishncsa/varnishncsa.c
Log:
Copy&paste -D (daemonize) from varnishlog.
Modified: trunk/varnish-cache/bin/varnishncsa/varnishncsa.1
===================================================================
--- trunk/varnish-cache/bin/varnishncsa/varnishncsa.1 2007-11-08 16:27:53 UTC (rev 2229)
+++ trunk/varnish-cache/bin/varnishncsa/varnishncsa.1 2007-11-08 16:28:26 UTC (rev 2230)
@@ -28,7 +28,7 @@
.\"
.\" $Id$
.\"
-.Dd June 15, 2007
+.Dd November 8, 2007
.Dt VARNISHNCSA 1
.Os
.Sh NAME
@@ -40,10 +40,12 @@
.Op Fl b
.Op Fl C
.Op Fl c
+.Op Fl D
.Op Fl d
.Op Fl I Ar regex
.Op Fl i Ar tag
.Op Fl n Ar varnish_name
+.Op Fl P Ar file
.Op Fl r Ar file
.Op Fl V
.Op Fl w Ar file
@@ -82,6 +84,8 @@
is specified,
.Nm
acts as if they both were.
+.It Fl D
+Daemonize.
.It Fl d
Process old log entries on startup.
Normally,
@@ -109,6 +113,9 @@
If
.Fl n
is not specified, the host name is used.
+.It Fl P Ar file
+Write the process's PID to the specified
+.Ar file .
.It Fl r Ar file
Read log entries from
.Ar file
Modified: trunk/varnish-cache/bin/varnishncsa/varnishncsa.c
===================================================================
--- trunk/varnish-cache/bin/varnishncsa/varnishncsa.c 2007-11-08 16:27:53 UTC (rev 2229)
+++ trunk/varnish-cache/bin/varnishncsa/varnishncsa.c 2007-11-08 16:28:26 UTC (rev 2230)
@@ -69,10 +69,16 @@
#include <unistd.h>
#include <limits.h>
+#ifndef HAVE_DAEMON
+#include "compat/daemon.h"
+#endif
+
+#include "vsb.h"
+#include "vpf.h"
+
#include "libvarnish.h"
#include "shmlog.h"
#include "varnishapi.h"
-#include "vsb.h"
static struct logline {
char *df_H; /* %H, Protocol version */
@@ -434,7 +440,7 @@
usage(void)
{
- fprintf(stderr, "usage: varnishncsa %s [-aV] [-n varnish_name] [-w file]\n", VSL_ARGS);
+ fprintf(stderr, "usage: varnishncsa %s [-aDV] [-n varnish_name] [-P file] [-w file]\n", VSL_ARGS);
exit(1);
}
@@ -442,15 +448,17 @@
main(int argc, char *argv[])
{
int i, c;
+ int a_flag = 0, D_flag = 0;
+ const char *n_arg = NULL;
+ const char *P_arg = NULL;
+ const char *w_arg = NULL;
+ struct pidfh *pfh = NULL;
struct VSL_data *vd;
- const char *ofn = NULL;
- const char *n_arg = NULL;
- int append = 0;
FILE *of;
vd = VSL_New();
- while ((c = getopt(argc, argv, VSL_ARGS "an:Vw:")) != -1) {
+ while ((c = getopt(argc, argv, VSL_ARGS "aDn:P:Vw:")) != -1) {
i = VSL_Arg(vd, c, optarg);
if (i < 0)
exit (1);
@@ -458,16 +466,22 @@
continue;
switch (c) {
case 'a':
- append = 1;
+ a_flag = 1;
break;
+ case 'D':
+ D_flag = 1;
+ break;
case 'n':
n_arg = optarg;
break;
+ case 'P':
+ P_arg = optarg;
+ break;
case 'V':
varnish_version("varnishncsa");
exit(0);
case 'w':
- ofn = optarg;
+ w_arg = optarg;
break;
default:
if (VSL_Arg(vd, c, optarg) > 0)
@@ -479,22 +493,37 @@
if (VSL_OpenLog(vd, n_arg))
exit(1);
- if (ofn) {
- of = open_log(ofn, append);
+ if (P_arg && (pfh = vpf_open(P_arg, 0600, NULL)) == NULL) {
+ perror(P_arg);
+ exit(1);
+ }
+
+ if (D_flag && daemon(0, 0) == -1) {
+ perror("daemon()");
+ if (pfh != NULL)
+ vpf_remove(pfh);
+ exit(1);
+ }
+
+ if (pfh != NULL)
+ vpf_write(pfh);
+
+ if (w_arg) {
+ of = open_log(w_arg, a_flag);
signal(SIGHUP, sighup);
} else {
- ofn = "stdout";
+ w_arg = "stdout";
of = stdout;
}
while (VSL_Dispatch(vd, h_ncsa, of) == 0) {
if (fflush(of) != 0) {
- perror(ofn);
+ perror(w_arg);
exit(1);
}
if (reopen && of != stdout) {
fclose(of);
- of = open_log(ofn, append);
+ of = open_log(w_arg, a_flag);
reopen = 0;
}
}
More information about the varnish-commit
mailing list