I made a mimimal set of changes to mod_disk_cache.c so that I could
simply try out the current mod_disk_cache functionality. This patch
fixes a few core dumps related to usage of the apr_pstrcat method and
some minor compiler warnings.


Index: modules/experimental/mod_cache.c
===================================================================
RCS file: /home/cvspublic/httpd-2.0/modules/experimental/mod_cache.c,v
retrieving revision 1.25
diff -u -r1.25 mod_cache.c
--- modules/experimental/mod_cache.c    5 Feb 2002 00:15:42 -0000       1.25
+++ modules/experimental/mod_cache.c    5 Feb 2002 01:56:28 -0000
@@ -931,8 +931,8 @@
     conf->complete_set = 1;
     return NULL;
 }
-static cache_post_config(apr_pool_t *p, apr_pool_t *plog,
-                                apr_pool_t *ptemp, server_rec *s)
+static int 
+cache_post_config(apr_pool_t *p, apr_pool_t *plog, apr_pool_t *ptemp, server_rec *s)
 {
      /* This is the means by which unusual (non-unix) os's may find alternate
      * means to run a given command (e.g. shebang/registry parsing on Win32)
Index: modules/experimental/mod_disk_cache.c
===================================================================
RCS file: /home/cvspublic/httpd-2.0/modules/experimental/mod_disk_cache.c,v
retrieving revision 1.17
diff -u -r1.17 mod_disk_cache.c
--- modules/experimental/mod_disk_cache.c       4 Feb 2002 14:43:11 -0000       1.17
+++ modules/experimental/mod_disk_cache.c       5 Feb 2002 01:56:28 -0000
@@ -59,11 +59,13 @@
 #include "mod_cache.h"
 #include "apr_file_io.h"
 #include "apr_strings.h"
-#include "http_config.h"
-#include "http_log.h"
 #include "util_filter.h"
 #include "util_script.h"
 
+#if APR_HAVE_UNISTD_H
+#include <unistd.h> /* needed for unlink/link */
+#endif
+
 /*
  * disk_cache_object_t
  * Pointed to by cache_object_t::vobj
@@ -116,7 +118,7 @@
 {
     char *hashfile;
     hashfile = generate_name(p, dirlevels, dirlength, name);
-    return apr_pstrcat(p, root, "/", hashfile, CACHE_HEADER_SUFFIX);
+    return apr_pstrcat(p, root, "/", hashfile, CACHE_HEADER_SUFFIX, NULL);
 }
 
 static char *data_file(apr_pool_t *p, int dirlevels, int dirlength, 
@@ -124,7 +126,7 @@
 {
     char *hashfile;
     hashfile = generate_name(p, dirlevels, dirlength, name);
-    return apr_pstrcat(p, root, "/", hashfile, CACHE_DATA_SUFFIX);
+    return apr_pstrcat(p, root, "/", hashfile, CACHE_DATA_SUFFIX, NULL);
 }
 
 static int mkdir_structure(char *file, const char *root)
@@ -304,7 +306,7 @@
     obj->complete = 0;   /* Cache object is not complete */
 
     info = apr_pcalloc(r->pool, sizeof(cache_info));
-    info->name = key;
+    info->name = (char *) key;
     obj->info = *(info);
 
 #ifdef AS400
@@ -351,7 +353,6 @@
 {
     disk_cache_conf *conf = ap_get_module_config(r->server->module_config, 
                                                  &disk_cache_module);
-    apr_status_t ret = DECLINED;
     apr_status_t rc;
     char *data = data_file(r->pool, conf->dirlevels, conf->dirlength, 
                            conf->cache_root, key);
@@ -366,12 +367,12 @@
     }
 
     obj = apr_pcalloc(r->pool, sizeof(cache_object_t));
-    obj->key = key;
+    obj->key = (char *) key;
 
     rc = apr_file_open(&fd, data, APR_WRITE | APR_READ | APR_BINARY, 0, r->pool);
     if (rc == APR_SUCCESS) {
         info = apr_pcalloc(r->pool, sizeof(cache_info));
-        info->name = key;
+        info->name = (char *) key;
         /* XXX log message */
        info->fd = fd;
        info->datafile = data;
@@ -403,6 +404,7 @@
 
 static int remove_url(const char *type, char *key) 
 {
+  return OK;
 }
 
 static int remove_entity(cache_handle_t *h) 
@@ -458,7 +460,7 @@
     }
 
     /* XXX log */
-    if(rv = file_cache_read_mydata(fd, info, r) != APR_SUCCESS) {
+    if((rv = file_cache_read_mydata(fd, info, r)) != APR_SUCCESS) {
         /* XXX log message */
         apr_file_close(fd);
         return rv;
@@ -530,9 +532,9 @@
         else {
             /* XXX log message */
         }
-        if(rc = apr_file_open(&hfd, info->hdrsfile,
+        if((rc = apr_file_open(&hfd, info->hdrsfile,
                               APR_WRITE | APR_CREATE | APR_BINARY | APR_EXCL, /* 
XXX:? | APR_INHERIT | APR_NONQSYS, */
-                              0, r->pool) != APR_SUCCESS)   {
+                              0, r->pool)) != APR_SUCCESS)   {
             /* XXX log message */
             return rc;
         }
@@ -555,7 +557,7 @@
         buf = apr_pstrcat(r->pool, statusbuf, CRLF, NULL);
         amt = strlen(buf);
         apr_file_write(hfd, buf, &amt);
-        buf = apr_pstrcat(r->pool, r->status_line, '\n', NULL);
+        buf = apr_pstrcat(r->pool, r->status_line, "\n", NULL);
         amt = strlen(buf);
         apr_file_write(hfd, buf, &amt);
         buf = apr_pstrcat(r->pool, CRLF, NULL);
@@ -608,7 +610,7 @@
  * mod_disk_cache configuration directives handlers.
  */
 static const char
-*set_cache_root(cmd_parms *parms, void *struct_ptr, char *arg)
+*set_cache_root(cmd_parms *parms, void *in_struct_ptr, const char *arg)
 {
     disk_cache_conf *conf = ap_get_module_config(parms->server->module_config, 
                                                  &disk_cache_module);
@@ -616,7 +618,7 @@
     return NULL;
 }
 static const char
-*set_cache_size(cmd_parms *parms, char *struct_ptr, char *arg)
+*set_cache_size(cmd_parms *parms, void *in_struct_ptr, const char *arg)
 {
     disk_cache_conf *conf = ap_get_module_config(parms->server->module_config, 
                                                  &disk_cache_module);
@@ -624,7 +626,7 @@
     return NULL;
 }
 static const char
-*set_cache_gcint(cmd_parms *parms, char *struct_ptr, char *arg)
+*set_cache_gcint(cmd_parms *parms, void *in_struct_ptr, const char *arg)
 {
     disk_cache_conf *conf = ap_get_module_config(parms->server->module_config, 
                                                  &disk_cache_module);
@@ -632,7 +634,7 @@
     return NULL;
 }
 static const char
-*set_cache_dirlevels(cmd_parms *parms, char *struct_ptr, char *arg)
+*set_cache_dirlevels(cmd_parms *parms, void *in_struct_ptr, const char *arg)
 {
     disk_cache_conf *conf = ap_get_module_config(parms->server->module_config, 
                                                  &disk_cache_module);
@@ -640,7 +642,7 @@
     return NULL;
 }
 static const char
-*set_cache_dirlength(cmd_parms *parms, char *struct_ptr, char *arg)
+*set_cache_dirlength(cmd_parms *parms, void *in_struct_ptr, const char *arg)
 {
     disk_cache_conf *conf = ap_get_module_config(parms->server->module_config, 
                                                  &disk_cache_module);
@@ -648,7 +650,7 @@
     return NULL;
 }
 static const char
-*set_cache_exchk(cmd_parms *parms, char *struct_ptr, char *arg)
+*set_cache_exchk(cmd_parms *parms, void *in_struct_ptr, int flag)
 {
     disk_cache_conf *conf = ap_get_module_config(parms->server->module_config, 
                                                  &disk_cache_module);
@@ -656,7 +658,7 @@
     return NULL;
 }
 static const char
-*set_cache_minfs(cmd_parms *parms, char *struct_ptr, char *arg)
+*set_cache_minfs(cmd_parms *parms, void *in_struct_ptr, const char *arg)
 {
     disk_cache_conf *conf = ap_get_module_config(parms->server->module_config, 
                                                  &disk_cache_module);
@@ -664,7 +666,7 @@
     return NULL;
 }
 static const char
-*set_cache_maxfs(cmd_parms *parms, char *struct_ptr, char *arg)
+*set_cache_maxfs(cmd_parms *parms, void *in_struct_ptr, const char *arg)
 {
     disk_cache_conf *conf = ap_get_module_config(parms->server->module_config, 
                                                  &disk_cache_module);
@@ -672,7 +674,7 @@
     return NULL;
 }
 static const char
-*set_cache_minetm(cmd_parms *parms, char *struct_ptr, char *arg)
+*set_cache_minetm(cmd_parms *parms, void *in_struct_ptr, const char *arg)
 {
     disk_cache_conf *conf = ap_get_module_config(parms->server->module_config, 
                                                  &disk_cache_module);
@@ -680,7 +682,7 @@
     return NULL;
 }
 static const char
-*set_cache_gctime(cmd_parms *parms, char *struct_ptr, char *arg)
+*set_cache_gctime(cmd_parms *parms, void *in_struct_ptr, const char *arg)
 {
     disk_cache_conf *conf = ap_get_module_config(parms->server->module_config, 
                                                  &disk_cache_module);
@@ -688,7 +690,7 @@
     return NULL;
 }
 static const char
-*add_cache_gcclean(cmd_parms *parms, char *struct_ptr, char *arg)
+*add_cache_gcclean(cmd_parms *parms, void *in_struct_ptr, const char *arg, const char 
+*arg1)
 {
     disk_cache_conf *conf = ap_get_module_config(parms->server->module_config, 
                                                  &disk_cache_module);
@@ -696,7 +698,7 @@
     return NULL;
 }
 static const char
-*add_cache_gcclnun(cmd_parms *parms, char *struct_ptr, char *arg)
+*add_cache_gcclnun(cmd_parms *parms, void *in_struct_ptr, const char *arg, const char 
+*arg1)
 {
     disk_cache_conf *conf = ap_get_module_config(parms->server->module_config, 
                                                  &disk_cache_module);
@@ -704,7 +706,7 @@
     return NULL;
 }
 static const char
-*set_cache_maxgcmem(cmd_parms *parms, char *struct_ptr, char *arg)
+*set_cache_maxgcmem(cmd_parms *parms, void *in_struct_ptr, const char *arg)
 {
     disk_cache_conf *conf = ap_get_module_config(parms->server->module_config, 
                                                  &disk_cache_module);

Reply via email to