Clarify what Privoxy does if both +block{} and +redirect{} apply
[privoxy.git] / cgisimple.c
index 1a884a8..9a89e6f 100644 (file)
@@ -1,4 +1,4 @@
-const char cgisimple_rcs[] = "$Id: cgisimple.c,v 1.121 2014/05/05 09:55:51 fabiankeil Exp $";
+const char cgisimple_rcs[] = "$Id: cgisimple.c,v 1.127 2014/06/03 10:28:39 fabiankeil Exp $";
 /*********************************************************************
  *
  * File        :  $Source: /cvsroot/ijbswa/current/cgisimple.c,v $
@@ -6,7 +6,7 @@ const char cgisimple_rcs[] = "$Id: cgisimple.c,v 1.121 2014/05/05 09:55:51 fabia
  * Purpose     :  Simple CGIs to get information about Privoxy's
  *                status.
  *
- * Copyright   :  Written by and Copyright (C) 2001-2013 the
+ * Copyright   :  Written by and Copyright (C) 2001-2014 the
  *                Privoxy team. http://www.privoxy.org/
  *
  *                Based on the Internet Junkbuster originally written
@@ -142,12 +142,7 @@ jb_err cgi_error_404(struct client_state *csp,
       return JB_ERR_MEMORY;
    }
 
-   rsp->status = strdup("404 Privoxy configuration page not found");
-   if (rsp->status == NULL)
-   {
-      free_map(exports);
-      return JB_ERR_MEMORY;
-   }
+   rsp->status = strdup_or_die("404 Privoxy configuration page not found");
 
    return template_fill_for_cgi(csp, "cgi-error-404", exports, rsp);
 }
@@ -171,7 +166,6 @@ jb_err cgi_error_404(struct client_state *csp,
  * CGI Parameters : none
  *
  * Returns     :  JB_ERR_OK on success
- *                JB_ERR_MEMORY on out-of-memory error.
  *
  *********************************************************************/
 jb_err cgi_die (struct client_state *csp,
@@ -205,13 +199,8 @@ jb_err cgi_die (struct client_state *csp,
    rsp->head_length = 0;
    rsp->is_static = 0;
 
-   rsp->body = strdup(body);
-   rsp->status = strdup(status);
-
-   if ((rsp->body == NULL) || (rsp->status == NULL))
-   {
-      return JB_ERR_MEMORY;
-   }
+   rsp->body = strdup_or_die(body);
+   rsp->status = strdup_or_die(status);
 
    return JB_ERR_OK;
 }
@@ -374,11 +363,7 @@ jb_err cgi_send_banner(struct client_state *csp,
     */
    if (imagetype == 'r')
    {
-      rsp->status = strdup("302 Local Redirect from Privoxy");
-      if (rsp->status == NULL)
-      {
-         return JB_ERR_MEMORY;
-      }
+      rsp->status = strdup_or_die("302 Local Redirect from Privoxy");
       if (enlist_unique_header(rsp->headers, "Location",
                                csp->action->string[ACTION_STRING_IMAGE_BLOCKER]))
       {
@@ -697,8 +682,8 @@ static const char *get_content_type(const char *filename)
    int i;
    struct content_type
    {
-      const char *extension;
-      const char *content_type;
+      const char extension[6];
+      const char content_type[11];
    };
    static const struct content_type content_types[] =
    {
@@ -963,7 +948,7 @@ jb_err cgi_show_status(struct client_state *csp,
    }
 
 #else /* ndef FEATURE_STATISTICS */
-   err = err || map_block_killer(exports, "statistics");
+   if (!err) err = map_block_killer(exports, "statistics");
 #endif /* ndef FEATURE_STATISTICS */
 
    /*
@@ -1064,6 +1049,8 @@ jb_err cgi_show_status(struct client_state *csp,
    }
 #endif /* ndef CGI_EDIT_ACTIONS */
 
+   if (!err) err = map(exports, "force-prefix", 1, FORCE_PREFIX, 1);
+
    if (err)
    {
       free_map(exports);
@@ -1117,12 +1104,7 @@ jb_err cgi_show_url_info(struct client_state *csp,
    /*
     * Get the url= parameter (if present) and remove any leading/trailing spaces.
     */
-   url_param = strdup(lookup(parameters, "url"));
-   if (url_param == NULL)
-   {
-      free_map(exports);
-      return JB_ERR_MEMORY;
-   }
+   url_param = strdup_or_die(lookup(parameters, "url"));
    chomp(url_param);
 
    /*
@@ -1165,7 +1147,7 @@ jb_err cgi_show_url_info(struct client_state *csp,
        * No prefix or at least no prefix before
        * the first slash - assume http://
        */
-      char *url_param_prefixed = strdup("http://");
+      char *url_param_prefixed = strdup_or_die("http://");
 
       if (JB_ERR_OK != string_join(&url_param_prefixed, url_param))
       {
@@ -1277,7 +1259,7 @@ jb_err cgi_show_url_info(struct client_state *csp,
          }
       }
 
-      matches = strdup("<table summary=\"\" class=\"transparent\">");
+      matches = strdup_or_die("<table summary=\"\" class=\"transparent\">");
 
       for (i = 0; i < MAX_AF_FILES; i++)
       {
@@ -1516,7 +1498,7 @@ jb_err cgi_robots_txt(struct client_state *csp,
    (void)csp;
    (void)parameters;
 
-   rsp->body = strdup(
+   rsp->body = strdup_or_die(
       "# This is the Privoxy control interface.\n"
       "# It isn't very useful to index it, and you're likely to break stuff.\n"
       "# So go away!\n"
@@ -1524,10 +1506,6 @@ jb_err cgi_robots_txt(struct client_state *csp,
       "User-agent: *\n"
       "Disallow: /\n"
       "\n");
-   if (rsp->body == NULL)
-   {
-      return JB_ERR_MEMORY;
-   }
 
    err = enlist_unique(rsp->headers, "Content-Type: text/plain", 13);
 
@@ -1717,8 +1695,8 @@ static jb_err show_defines(struct map *exports)
 #endif
       },
       {
-         "STATIC_PCRE",
-#ifdef STATIC_PCRE
+         "FEATURE_DYNAMIC_PCRE",
+#ifdef FEATURE_DYNAMIC_PCRE
          1,
 #else
          0,
@@ -1753,7 +1731,7 @@ static jb_err show_defines(struct map *exports)
  *********************************************************************/
 static char *show_rcs(void)
 {
-   char *result = strdup("");
+   char *result = strdup_or_die("");
    char buf[BUFFER_SIZE];
 
    /* Instead of including *all* dot h's in the project (thus creating a