httpd-cvs mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From minf...@apache.org
Subject svn commit: r910705 - in /httpd/httpd/trunk: CHANGES docs/manual/programs/htcacheclean.xml support/htcacheclean.c
Date Tue, 16 Feb 2010 21:42:03 GMT
Author: minfrin
Date: Tue Feb 16 21:42:03 2010
New Revision: 910705

URL: http://svn.apache.org/viewvc?rev=910705&view=rev
Log:
support/htcacheclean: Teach it how to write a pid file (modelled on
httpd's writing of a pid file) so that it becomes possible to run
more than one instance of htcacheclean on the same machine.

Modified:
    httpd/httpd/trunk/CHANGES
    httpd/httpd/trunk/docs/manual/programs/htcacheclean.xml
    httpd/httpd/trunk/support/htcacheclean.c

Modified: httpd/httpd/trunk/CHANGES
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/CHANGES?rev=910705&r1=910704&r2=910705&view=diff
==============================================================================
--- httpd/httpd/trunk/CHANGES [utf-8] (original)
+++ httpd/httpd/trunk/CHANGES [utf-8] Tue Feb 16 21:42:03 2010
@@ -2,6 +2,11 @@
 
 Changes with Apache 2.3.7
 
+  *) support/htcacheclean: Teach it how to write a pid file (modelled on
+     httpd's writing of a pid file) so that it becomes possible to run
+     more than one instance of htcacheclean on the same machine.
+     [Graham Leggett]
+
   *) Log command line on startup, so there's a record of command line
      arguments like -f.
      PR 48752.  [Dan Poirier]

Modified: httpd/httpd/trunk/docs/manual/programs/htcacheclean.xml
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/docs/manual/programs/htcacheclean.xml?rev=910705&r1=910704&r2=910705&view=diff
==============================================================================
--- httpd/httpd/trunk/docs/manual/programs/htcacheclean.xml (original)
+++ httpd/httpd/trunk/docs/manual/programs/htcacheclean.xml Tue Feb 16 21:42:03 2010
@@ -49,6 +49,7 @@
     [ -<strong>n</strong> ]
     [ -<strong>t</strong> ]
     [ -<strong>i</strong> ]
+    [ -<strong>P</strong><var>pidfile</var> ]
     -<strong>d</strong><var>interval</var>
     -<strong>p</strong><var>path</var>
     -<strong>l</strong><var>limit</var></code></p>
@@ -95,6 +96,10 @@
     should be the same value as specified with the <directive
     module="mod_disk_cache">CacheRoot</directive> directive.</dd>
 
+    <dt><code>-P<var>pidfile</var></code></dt>
+    <dd>Specify <var>pidfile</var> as the name of the file to write the
+    process ID to when daemonized.</dd>
+
     <dt><code>-l<var>limit</var></code></dt>
     <dd>Specify <var>limit</var> as the total disk cache size limit. The
value
     is expressed in bytes by default (or attaching <code>B</code> to the

Modified: httpd/httpd/trunk/support/htcacheclean.c
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/support/htcacheclean.c?rev=910705&r1=910704&r2=910705&view=diff
==============================================================================
--- httpd/httpd/trunk/support/htcacheclean.c (original)
+++ httpd/httpd/trunk/support/htcacheclean.c Tue Feb 16 21:42:03 2010
@@ -708,8 +708,8 @@
     }
     apr_file_printf(errfile,
     "%s -- program for cleaning the disk cache."                             NL
-    "Usage: %s [-Dvtrn] -pPATH -lLIMIT"                                      NL
-    "       %s [-nti] -dINTERVAL -pPATH -lLIMIT"                             NL
+    "Usage: %s [-Dvtrn] -pPATH -lLIMIT [-PPIDFILE]"                          NL
+    "       %s [-nti] -dINTERVAL -pPATH -lLIMIT [-PPIDFILE]"                 NL
                                                                              NL
     "Options:"                                                               NL
     "  -d   Daemonize and repeat cache cleaning every INTERVAL minutes."     NL
@@ -735,6 +735,8 @@
                                                                              NL
     "  -p   Specify PATH as the root directory of the disk cache."           NL
                                                                              NL
+    "  -P   Specify PIDFILE as the file to write the pid file to."           NL
+                                                                             NL
     "  -l   Specify LIMIT as the total disk cache size limit. Attach 'K'"    NL
     "       or 'M' to the number for specifying KBytes or MBytes."           NL
                                                                              NL
@@ -770,7 +772,7 @@
     int retries, isdaemon, limit_found, intelligent, dowork;
     char opt;
     const char *arg;
-    char *proxypath, *path;
+    char *proxypath, *path, *pidfile;
     char errmsg[1024];
 
     interrupted = 0;
@@ -786,6 +788,7 @@
     intelligent = 0;
     previous = 0; /* avoid compiler warning */
     proxypath = NULL;
+    pidfile = NULL;
 
     if (apr_app_initialize(&argc, &argv, NULL) != APR_SUCCESS) {
         return 1;
@@ -807,7 +810,7 @@
     apr_getopt_init(&o, pool, argc, argv);
 
     while (1) {
-        status = apr_getopt(o, "iDnvrtd:l:L:p:", &opt, &arg);
+        status = apr_getopt(o, "iDnvrtd:l:L:p:P:", &opt, &arg);
         if (status == APR_EOF) {
             break;
         }
@@ -912,6 +915,14 @@
                                        proxypath, apr_strerror(status, errmsg, sizeof errmsg)));
                 }
                 break;
+
+            case 'P':
+                if (pidfile) {
+                    usage_repeated_arg(pool, opt);
+                }
+                pidfile = apr_pstrdup(pool, arg);
+                break;
+
             } /* switch */
         } /* else */
     } /* while */
@@ -957,6 +968,22 @@
     }
 #endif
 
+    if (pidfile) {
+        apr_file_t *file;
+        pid_t mypid = getpid();
+        if (APR_SUCCESS == (status = apr_file_open(&file, pidfile, APR_WRITE
+                | APR_CREATE | APR_TRUNCATE,
+                APR_UREAD | APR_UWRITE | APR_GREAD, pool))) {
+            apr_file_printf(file, "%ld" APR_EOL_STR, (long) mypid);
+            apr_file_close(file);
+        }
+        else if (!isdaemon) {
+            apr_file_printf(errfile,
+                    "Could not write the pid file '%s': %s" APR_EOL_STR,
+                    pidfile, apr_strerror(status, errmsg, sizeof errmsg));
+        }
+    }
+
     do {
         apr_pool_create(&instance, pool);
 



Mime
View raw message