Bump copyright for the config file
[privoxy.git] / actions.c
index 38ddfc9..f089836 100644 (file)
--- a/actions.c
+++ b/actions.c
@@ -1,4 +1,4 @@
-const char actions_rcs[] = "$Id: actions.c,v 1.83 2012/06/08 15:15:11 fabiankeil Exp $";
+const char actions_rcs[] = "$Id: actions.c,v 1.86 2012/11/11 12:37:10 fabiankeil Exp $";
 /*********************************************************************
  *
  * File        :  $Source: /cvsroot/ijbswa/current/actions.c,v $
@@ -156,11 +156,7 @@ jb_err merge_actions (struct action_spec *dest,
       if (str)
       {
          freez(dest->string[i]);
-         dest->string[i] = strdup(str);
-         if (NULL == dest->string[i])
-         {
-            return JB_ERR_MEMORY;
-         }
+         dest->string[i] = strdup_or_die(str);
       }
    }
 
@@ -212,7 +208,7 @@ jb_err merge_actions (struct action_spec *dest,
  *          1  :  dest = Destination of copy.
  *          2  :  src = Source for copy.
  *
- * Returns     :  N/A
+ * Returns     :  JB_ERR_OK or JB_ERR_MEMORY
  *
  *********************************************************************/
 jb_err copy_action (struct action_spec *dest,
@@ -232,11 +228,7 @@ jb_err copy_action (struct action_spec *dest,
       char * str = src->string[i];
       if (str)
       {
-         str = strdup(str);
-         if (!str)
-         {
-            return JB_ERR_MEMORY;
-         }
+         str = strdup_or_die(str);
          dest->string[i] = str;
       }
    }
@@ -403,7 +395,17 @@ jb_err get_action_token(char **line, char **name, char **value)
    str++;
    *value = str;
 
-   str = strchr(str, '}');
+   /* The value ends with the first non-escaped closing curly brace */
+   while ((str = strchr(str, '}')) != NULL)
+   {
+      if (str[-1] == '\\')
+      {
+         /* Overwrite the '\' so the action doesn't see it. */
+         string_move(str-1, str);
+         continue;
+      }
+      break;
+   }
    if (str == NULL)
    {
       /* error */
@@ -739,11 +741,7 @@ jb_err merge_current_action (struct current_action_spec *dest,
       char * str = src->string[i];
       if (str)
       {
-         str = strdup(str);
-         if (!str)
-         {
-            return JB_ERR_MEMORY;
-         }
+         str = strdup_or_die(str);
          freez(dest->string[i]);
          dest->string[i] = str;
       }
@@ -1330,15 +1328,7 @@ static int load_one_actions_file(struct client_state *csp, int fileid)
              *
              * buf + 1 to skip the leading '{'
              */
-            actions_buf = strdup(buf + 1);
-            if (actions_buf == NULL)
-            {
-               fclose(fp);
-               log_error(LOG_LEVEL_FATAL,
-                  "can't load actions file '%s': out of memory",
-                  csp->config->actions_file[fileid]);
-               return 1; /* never get here */
-            }
+            actions_buf = strdup_or_die(buf + 1);
 
             /* check we have a trailing } and then trim it */
             end = actions_buf + strlen(actions_buf) - 1;
@@ -1391,14 +1381,7 @@ static int load_one_actions_file(struct client_state *csp, int fileid)
             char *version_string, *fields[3];
             int num_fields;
 
-            if ((version_string = strdup(buf + 20)) == NULL)
-            {
-               fclose(fp);
-               log_error(LOG_LEVEL_FATAL,
-                         "can't load actions file '%s': out of memory!",
-                         csp->config->actions_file[fileid]);
-               return 1; /* never get here */
-            }
+            version_string = strdup_or_die(buf + 20);
 
             num_fields = ssplit(version_string, ".", fields, SZ(fields));
 
@@ -1482,14 +1465,7 @@ static int load_one_actions_file(struct client_state *csp, int fileid)
             return 1; /* never get here */
          }
 
-         if ((new_alias->name = strdup(buf)) == NULL)
-         {
-            fclose(fp);
-            log_error(LOG_LEVEL_FATAL,
-               "can't load actions file '%s': out of memory!",
-               csp->config->actions_file[fileid]);
-            return 1; /* never get here */
-         }
+         new_alias->name = strdup_or_die(buf);
 
          strlcpy(actions_buf, start, sizeof(actions_buf));
 
@@ -1603,7 +1579,7 @@ char * actions_to_text(const struct action_spec *action)
 {
    unsigned long mask = action->mask;
    unsigned long add  = action->add;
-   char *result = strdup("");
+   char *result = strdup_or_die("");
    struct list_entry * lst;
 
    /* sanity - prevents "-feature +feature" */
@@ -1692,7 +1668,7 @@ char * actions_to_html(const struct client_state *csp,
 {
    unsigned long mask = action->mask;
    unsigned long add  = action->add;
-   char *result = strdup("");
+   char *result = strdup_or_die("");
    struct list_entry * lst;
 
    /* sanity - prevents "-feature +feature" */
@@ -1798,9 +1774,9 @@ char *current_action_to_html(const struct client_state *csp,
 {
    unsigned long flags  = action->flags;
    struct list_entry * lst;
-   char *result   = strdup("");
-   char *active   = strdup("");
-   char *inactive = strdup("");
+   char *result   = strdup_or_die("");
+   char *active   = strdup_or_die("");
+   char *inactive = strdup_or_die("");
 
 #define DEFINE_ACTION_BOOL(__name, __bit)  \
    if (flags & __bit)                      \