OSSP CVS Repository

ossp - Difference in ossp-pkg/lmtp2nntp/lmtp2nntp_config.c versions 1.25 and 1.26
Not logged in
[Honeypot]  [Browse]  [Home]  [Login]  [Reports
[Search]  [Ticket]  [Timeline
  [History

ossp-pkg/lmtp2nntp/lmtp2nntp_config.c 1.25 -> 1.26

--- lmtp2nntp_config.c   2002/01/31 14:20:09     1.25
+++ lmtp2nntp_config.c   2002/01/31 14:43:52     1.26
@@ -469,6 +469,33 @@
     catch (ex)
         rethrow;
 
+    /* --mailfrom SINGLE */
+    try {
+        char *cp;
+
+        if (   (val_get(ctx->val, "option.mailfrom", &ov) != VAL_OK)
+            || (ov->ndata != 1)
+            || (ov->data.s == NULL)
+              ) throw(0,0,0);
+        log1(ctx, TRACE, "--mailfrom = \"%s\"", ov->data.s);
+
+        ctx->option_mailfrom = strdup(ov->data.s);
+        /* protect ourselfs from the substitution of backreferences.
+         * Missing varargs would cause segfaults.  Rewrite capturing
+         * brackets to clustering syntax. Use poor man's s///g
+         * simulator as current str library doesn't support global
+         * substitution */
+        while (str_parse(ctx->option_mailfrom, "s/(.*?)\\((?!\\?:)(.*)/$1(?:$2/", &cp) > 0) {
+            free(ctx->option_mailfrom);
+            ctx->option_mailfrom = cp;
+        }
+        if (str_parse("<>", ctx->option_mailfrom) == -1) {
+            log1(ctx, ERROR, "option --mailfrom, illegal regex (%s)", ctx->option_mailfrom);
+            throw(0,0,0);
+        }
+    }
+    catch (ex)
+        rethrow;
 CUS:
     return;
 }

CVSTrac 2.0.1