Mention new config option "allow-cgi-request-crunching".
[privoxy.git] / loadcfg.c
index 8722b7c..260f921 100644 (file)
--- a/loadcfg.c
+++ b/loadcfg.c
@@ -1,4 +1,4 @@
-const char loadcfg_rcs[] = "$Id: loadcfg.c,v 1.60 2007/01/27 13:09:16 fabiankeil Exp $";
+const char loadcfg_rcs[] = "$Id: loadcfg.c,v 1.64 2007/05/21 10:44:08 fabiankeil Exp $";
 /*********************************************************************
  *
  * File        :  $Source: /cvsroot/ijbswa/current/loadcfg.c,v $
@@ -35,6 +35,25 @@ const char loadcfg_rcs[] = "$Id: loadcfg.c,v 1.60 2007/01/27 13:09:16 fabiankeil
  *
  * Revisions   :
  *    $Log: loadcfg.c,v $
+ *    Revision 1.64  2007/05/21 10:44:08  fabiankeil
+ *    - Use strlcpy() instead of strcpy().
+ *    - Stop treating actions files special. Expect a complete file name
+ *      (with or without path) like it's done for the rest of the files.
+ *      Closes FR#588084.
+ *    - Remove an unnecessary temporary memory allocation.
+ *    - Don't log anything to the console when running as
+ *      daemon and no errors occurred.
+ *
+ *    Revision 1.63  2007/04/09 18:11:36  fabiankeil
+ *    Don't mistake VC++'s _snprintf() for a snprintf() replacement.
+ *
+ *    Revision 1.62  2007/03/17 15:20:05  fabiankeil
+ *    New config option: enforce-blocks.
+ *
+ *    Revision 1.61  2007/03/16 16:47:35  fabiankeil
+ *    - Mention other reasons why acl directive loading might have failed.
+ *    - Don't log the acl source if the acl destination is to blame.
+ *
  *    Revision 1.60  2007/01/27 13:09:16  fabiankeil
  *    Add new config option "templdir" to
  *    change the templates directory.
@@ -406,9 +425,6 @@ const char loadcfg_rcs[] = "$Id: loadcfg.c,v 1.60 2007/01/27 13:09:16 fabiankeil
 #  include "w32log.h"
 # endif /* ndef _WIN_CONSOLE */
 
-/* VC++ has "_snprintf", not "snprintf" */
-#define snprintf _snprintf
-
 #else /* ifndef _WIN32 */
 
 #ifndef __OS2__
@@ -479,6 +495,7 @@ static struct file_list *current_configfile = NULL;
 #define hash_actions_file                1196306641ul /* "actionsfile" */
 #define hash_accept_intercepted_requests 1513024973ul /* "accept-intercepted-requests" */
 #define hash_admin_address               4112573064ul /* "admin-address" */
+#define hash_allow_cgi_request_crunching  258915987ul /* "allow-cgi-request-crunching" */
 #define hash_buffer_limit                1881726070ul /* "buffer-limit */
 #define hash_confdir                        1978389ul /* "confdir" */
 #define hash_debug                            78263ul /* "debug" */
@@ -486,6 +503,7 @@ static struct file_list *current_configfile = NULL;
 #define hash_enable_edit_actions         2517097536ul /* "enable-edit-actions" */
 #define hash_enable_remote_toggle        2979744683ul /* "enable-remote-toggle" */
 #define hash_enable_remote_http_toggle    110543988ul /* "enable-remote-http-toggle" */
+#define hash_enforce_blocks              1862427469ul /* "enforce-blocks" */
 #define hash_filterfile                   250887266ul /* "filterfile" */
 #define hash_forward                        2029845ul /* "forward" */
 #define hash_forward_socks4              3963965521ul /* "forward-socks4" */
@@ -664,7 +682,10 @@ struct configuration_spec * load_config(void)
                 configfile);
    }
 
-   log_error(LOG_LEVEL_INFO, "loading configuration file '%s':", configfile);
+   if (NULL != current_configfile)
+   {
+      log_error(LOG_LEVEL_INFO, "Reloading configuration file '%s'", configfile);
+   }
 
 #ifdef FEATURE_TOGGLE
    global_toggle_state      = 1;
@@ -723,7 +744,7 @@ struct configuration_spec * load_config(void)
       int vec_count;
       char *vec[3];
 
-      strcpy(tmp, buf);
+      strlcpy(tmp, buf, sizeof(tmp));
 
       /* Copy command (i.e. up to space or tab) into cmd */
       p = buf;
@@ -741,7 +762,7 @@ struct configuration_spec * load_config(void)
       }
 
       /* Copy the argument into arg */
-      strcpy(arg, p);
+      strlcpy(arg, p, sizeof(arg));
 
       /* Should never happen, but check this anyway */
       if (*cmd == '\0')
@@ -782,15 +803,8 @@ struct configuration_spec * load_config(void)
                   MAX_AF_FILES);
             }
             config->actions_file_short[i] = strdup(arg);
-            p = malloc(strlen(arg) + sizeof(".action"));
-            if (p == NULL)
-            {
-               log_error(LOG_LEVEL_FATAL, "Out of memory");
-            }
-            strcpy(p, arg);
-            strcat(p, ".action");
-            config->actions_file[i] = make_path(config->confdir, p);
-            free(p);
+            config->actions_file[i] = make_path(config->confdir, arg);
+
             continue;
 /* *************************************************************************
  * accept-intercepted-requests
@@ -814,6 +828,20 @@ struct configuration_spec * load_config(void)
             config->admin_address = strdup(arg);
             continue;
 
+/* *************************************************************************
+ * allow-cgi-request-crunching
+ * *************************************************************************/
+         case hash_allow_cgi_request_crunching:
+            if ((*arg != '\0') && (0 != atoi(arg)))
+            {
+               config->feature_flags |= RUNTIME_FEATURE_CGI_CRUNCHING;
+            }
+            else
+            {
+               config->feature_flags &= ~RUNTIME_FEATURE_CGI_CRUNCHING;
+            }
+            continue;
+
 /* *************************************************************************
  * buffer-limit n
  * *************************************************************************/
@@ -958,6 +986,22 @@ struct configuration_spec * load_config(void)
             }
             continue;
 
+/* *************************************************************************
+ * hash_enforce_blocks 0|1
+ * *************************************************************************/
+#ifdef FEATURE_FORCE_LOAD
+         case hash_enforce_blocks:
+            if ((*arg != '\0') && (0 != atoi(arg)))
+            {
+               config->feature_flags |= RUNTIME_FEATURE_ENFORCE_BLOCKS;
+            }
+            else
+            {
+               config->feature_flags &= ~RUNTIME_FEATURE_ENFORCE_BLOCKS;
+            }
+            continue;
+#endif /* def FEATURE_FORCE_LOAD */
+
 /* *************************************************************************
  * filterfile file-name
  * In confdir by default.
@@ -976,14 +1020,8 @@ struct configuration_spec * load_config(void)
                   MAX_AF_FILES);
             }
             config->re_filterfile_short[i] = strdup(arg);
-            p = malloc(strlen(arg) + 1);
-            if (p == NULL)
-            {
-               log_error(LOG_LEVEL_FATAL, "Out of memory");
-            }
-            strcpy(p, arg);
-            config->re_filterfile[i] = make_path(config->confdir, p);
-            free(p);
+            config->re_filterfile[i] = make_path(config->confdir, arg);
+
             continue;
 
 /* *************************************************************************