summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'net-mail/ezmlm-idx/files/from-header.patch')
-rw-r--r--net-mail/ezmlm-idx/files/from-header.patch209
1 files changed, 209 insertions, 0 deletions
diff --git a/net-mail/ezmlm-idx/files/from-header.patch b/net-mail/ezmlm-idx/files/from-header.patch
new file mode 100644
index 000000000000..c5a306a5ab28
--- /dev/null
+++ b/net-mail/ezmlm-idx/files/from-header.patch
@@ -0,0 +1,209 @@
+--- Makefile.orig Mon Nov 27 19:20:43 2000
++++ Makefile Mon Nov 27 18:41:29 2000
+@@ -350,9 +350,9 @@
+ ezmlm-gate: \
+ load ezmlm-gate.o subdb.a auto_bin.o getopt.a getln.a env.a sig.a strerr.a \
+ stralloc.a alloc.a error.a str.a case.a wait.a substdio.a open.a lock.a \
+-fs.a getconf.o slurpclose.o slurp.o seek.a conf-sqlld
++fs.a getconf.o slurpclose.o slurp.o seek.a conf-sqlld get_header.a
+ ./load ezmlm-gate subdb.a getconf.o slurpclose.o slurp.o \
+- getopt.a getln.a auto_bin.o env.a sig.a fs.a \
++ getopt.a getln.a auto_bin.o env.a sig.a fs.a get_header.a \
+ strerr.a substdio.a stralloc.a alloc.a error.a str.a case.a wait.a \
+ open.a lock.a seek.a ${SQLLD}
+
+@@ -362,7 +362,7 @@
+
+ ezmlm-gate.o: \
+ compile ezmlm-gate.c idx.h errtxt.h subscribe.h auto_bin.h \
+-sgetopt.h subgetopt.h substdio.h getconf.h \
++sgetopt.h subgetopt.h substdio.h getconf.h get_header.h substdio.h \
+ env.h sig.h strerr.h stralloc.h alloc.h error.h str.h case.h \
+ fork.h wait.h exit.h getln.h open.h
+ ./compile ezmlm-gate.c
+@@ -469,19 +469,20 @@
+
+ ezmlm-issubn: \
+ load ezmlm-issubn.o subdb.a getconf.o slurpclose.o slurp.o \
+-env.a fs.a strerr.a getln.a getopt.a conf-sqlld \
+-substdio.a stralloc.a alloc.a error.a str.a case.a open.a lock.a
++env.a fs.a strerr.a getln.a getopt.a conf-sqlld get_header.a \
++substdio.a stralloc.a alloc.a error.a str.a case.a open.a lock.a get_header.a
+ ./load ezmlm-issubn subdb.a getconf.o slurpclose.o slurp.o \
+- getopt.a env.a fs.a strerr.a \
++ getopt.a env.a fs.a strerr.a get_header.a substdio.a \
+ getln.a substdio.a stralloc.a alloc.a error.a str.a case.a \
+- open.a lock.a ${SQLLD}
++ open.a lock.a get_header.a ${SQLLD}
+
+ ezmlm-issubn.0: \
+ ezmlm-issubn.1
+ nroff -man ezmlm-issubn.1 > ezmlm-issubn.0
+
+ ezmlm-issubn.o: \
+-compile ezmlm-issubn.c strerr.h subscribe.h env.h errtxt.h sgetopt.h idx.h
++compile ezmlm-issubn.c strerr.h subscribe.h env.h errtxt.h sgetopt.h idx.h \
++substdio.h readwrite.h
+ ./compile ezmlm-issubn.c
+
+ ezmlm-limit: \
+@@ -1280,6 +1281,14 @@
+ stralloc.0: \
+ stralloc.3
+ nroff -man stralloc.3 > stralloc.0
++
++get_header.o: \
++compile get_header.c get_header.h substdio.h seek.h stralloc.h strerr.h \
++ ./compile get_header.c
++
++get_header.a: \
++makelib get_header.o
++ ./makelib get_header.a get_header.o stralloc.a seek_set.o strerr.a
+
+ stralloc.a: \
+ makelib stralloc_eady.o stralloc_pend.o stralloc_copy.o \
+--- ezmlm-gate.c.orig Mon Nov 27 19:20:49 2000
++++ ezmlm-gate.c Mon Nov 27 19:04:57 2000
+@@ -17,12 +17,18 @@
+ #include "errtxt.h"
+ #include "idx.h"
+ #include "subscribe.h"
++#include "get_header.h"
++#include "substdio.h"
++#include "readwrite.h"
+
+ #define FATAL "ezmlm-gate: fatal: "
+
++char buf0[256];
++substdio ssin = SUBSTDIO_FDBUF(read,0,buf0,(int) sizeof(buf0));
++
+ void die_usage()
+ {
+- strerr_die1x(100,"ezmlm-gate: usage: ezmlm-gate [-cCmMpPqrRsSvV] "
++ strerr_die1x(100,"ezmlm-gate: usage: ezmlm-gate [-fFcCmMpPqrRsSvV] "
+ "dir [moddir [...]]");
+ }
+ void die_nomem() { strerr_die2x(111,FATAL,ERR_NOMEM); }
+@@ -89,6 +95,9 @@
+ int opt;
+ int ret = 0;
+ unsigned int i,j,k;
++ int usefrom = 0;
++
++ char *from_addr = (char *)0;
+
+ umask(022);
+ sig_pipeignore();
+@@ -98,7 +107,7 @@
+ if (!stralloc_copys(&storeopt," -")) die_nomem();
+
+ while ((opt = getopt(argc,argv,
+- "cCmMpPq:Q:sSrRt:T:vV")) != opteof)
++ "fFcCmMpPq:Q:sSrRt:T:vV")) != opteof)
+ switch(opt) { /* pass on unrecognized options */
+ case 'c': /* ezmlm-send flags */
+ case 'C':
+@@ -116,6 +125,8 @@
+ szchar[0] = opt;
+ if (!stralloc_append(&storeopt,szchar)) die_nomem();
+ break;
++ case 'f': usefrom = 1; break;
++ case 'F': usefrom = 0; break;
+ case 'q': /* allow both qQ to be nice */
+ case 'Q': if (optarg) queryext = optarg; break;
+ case 'v':
+@@ -124,6 +135,10 @@
+ die_usage();
+ }
+
++ if (usefrom) {
++ from_addr = get_from(&ssin);
++ }
++
+ dir = argv[optind++];
+ if (!dir) die_usage();
+ if (chdir(dir) == -1)
+@@ -155,8 +170,12 @@
+ moddir = argv[optind++];
+ if (moddir && !ret) { /* if exit 0 and moddir, add issub */
+ pmod = (char *) 0;
+- while (moddir && !pmod && sender) {
+- pmod = issub(moddir,sender,(char *) 0,FATAL);
++ while (moddir && !pmod && (sender || from_addr)) {
++ if (sender)
++ pmod = issub(moddir,sender,(char *) 0,FATAL);
++ if (!pmod && from_addr)
++ pmod = issub(moddir,from_addr,(char *) 0,FATAL);
++
+ closesql();
+ moddir = argv[optind++];
+ }
+--- ezmlm-issubn.c.orig Mon Nov 27 19:20:54 2000
++++ ezmlm-issubn.c Mon Nov 27 19:05:59 2000
+@@ -6,14 +6,21 @@
+ #include "sgetopt.h"
+ #include "errtxt.h"
+ #include "idx.h"
++#include "get_header.h"
++#include "substdio.h"
++#include "readwrite.h"
+
+ #define FATAL "ezmlm-issubn: fatal: "
+
++char buf0[256];
++substdio ssin = SUBSTDIO_FDBUF(read,0,buf0,(int) sizeof(buf0));
++
+ void *psql = (void *) 0;
+
+ void die_usage()
+ {
+- strerr_die1x(100,"ezmlm-issubn: usage: ezmlm-issubn [-nN] dir [dir1 ...]");
++ strerr_die1x(100,
++ "ezmlm-issubn: usage: ezmlm-issubn [-fF] [-nN] dir [dir1 ...]");
+ }
+
+ void die_sender()
+@@ -28,15 +35,19 @@
+ char *dir;
+ char *addr;
+ int flagsub = 0;
++ int usefrom = 0;
+ int opt;
++ char *from_addr = (char *)0;
+
+ addr = env_get("SENDER");
+ if (!addr) die_sender(); /* REQUIRE sender */
+
+- while ((opt = getopt(argc,argv,"nNvV")) != opteof)
++ while ((opt = getopt(argc,argv,"fFnNvV")) != opteof)
+ switch(opt) {
+ case 'n': flagsub = 99; break;
+ case 'N': flagsub = 0; break;
++ case 'f': usefrom = 1; break;
++ case 'F': usefrom = 0; break;
+ case 'v':
+ case 'V': strerr_die2x(0,
+ "ezmlm-issubn version: ezmlm-0.53+",EZIDX_VERSION);
+@@ -44,6 +55,11 @@
+ die_usage();
+ }
+
++
++ if (usefrom) {
++ from_addr = get_from(&ssin);
++ }
++
+ dir = argv[optind];
+ if (chdir(dir) == -1)
+ strerr_die4sys(111,FATAL,ERR_SWITCH,dir,": ");
+@@ -54,6 +70,9 @@
+ if (issub(dir,addr,(char *) 0,FATAL)) {
+ closesql();
+ _exit(flagsub); /* subscriber */
++ } else if (from_addr && issub(dir, from_addr, (char *) 0, FATAL)) {
++ closesql();
++ _exit(flagsub);
+ }
+ }
+ closesql();
+