You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gentoo-overlay/net-mail/ezmlm-idx/files/from-header.patch

210 lines
6.0 KiB

--- 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();