qmail-local: Sender and environment settings in .qmail files.
[qmail] / qmail-local.c
index ec4e5e7..b6dd28c 100644 (file)
@@ -775,6 +775,12 @@ char **argv;
          strerr_die1x(111,"Uh-oh: first line of .qmail file is blank. (#4.2.1)");
        case '#':
          break;
+       case '<':
+        if (!stralloc_copys(&ueo, cmds.s + i + 1) ||
+            !stralloc_0(&ueo) ||
+            !env_put2("NEWSENDER", ueo.s))
+          temp_nomem();
+        break;
        case '.':
        case '/':
         ++count_file;
@@ -798,7 +804,20 @@ char **argv;
         break;
        case '&':
          ++i;
+        goto fwd;
+       case '!':
+        i++;
+        if (!cmds.s[i + str_chr(cmds.s + i, '=')]) {
+          if (!env_unset(cmds.s + i)) temp_nomem();
+        } else {
+        env:
+          if (!env_put(cmds.s + i)) temp_nomem();
+        }
+        break;
        default:
+        if (cmds.s[i + str_chr(cmds.s + i, '=')])
+          goto env;
+       fwd:
         ++count_forward;
          if (flagdoit) recips[numforward++] = cmds.s + i;
          else sayit("forward ",cmds.s + i,k - i);