--- 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;
}
|