Commit | Line | Data |
---|---|---|
f8beb284 MW |
1 | /*$Id: ezmlm-list.c,v 1.15 1999/09/12 20:25:33 lindberg Exp $*/ |
2 | /*$Name: ezmlm-idx-040 $*/ | |
5b62e993 | 3 | #include "strerr.h" |
5b62e993 | 4 | #include "readwrite.h" |
f8beb284 MW |
5 | #include "substdio.h" |
6 | #include "subscribe.h" | |
5b62e993 | 7 | #include "exit.h" |
f8beb284 MW |
8 | #include "fmt.h" |
9 | #include "sgetopt.h" | |
10 | #include "errtxt.h" | |
11 | #include "idx.h" | |
5b62e993 MW |
12 | |
13 | #define FATAL "ezmlm-list: fatal: " | |
f8beb284 MW |
14 | |
15 | int flagnumber = 0; /* default list subscribers, not number of */ | |
16 | ||
17 | void *psql = (void *) 0; | |
18 | ||
19 | char strnum[FMT_ULONG]; | |
20 | ||
5b62e993 MW |
21 | void die_write() |
22 | { | |
f8beb284 MW |
23 | strerr_die3sys(111,FATAL,ERR_WRITE,"stdout: "); |
24 | } | |
25 | ||
26 | void die_usage() | |
27 | { | |
28 | strerr_die1x(100,"ezmlm-list: usage: ezmlm-list [-mMnNvV] dir"); | |
5b62e993 MW |
29 | } |
30 | ||
f8beb284 MW |
31 | static char outbuf[512]; |
32 | static substdio ssout = SUBSTDIO_FDBUF(write,1,outbuf,sizeof(outbuf)); | |
5b62e993 | 33 | |
f8beb284 MW |
34 | int subwrite(s,l) |
35 | char *s; | |
36 | unsigned int l; | |
37 | { | |
38 | return substdio_put(&ssout,s,l) | substdio_put(&ssout,"\n",1); | |
39 | } | |
5b62e993 | 40 | |
f8beb284 MW |
41 | int dummywrite(s,l) |
42 | char *s; /* ignored */ | |
43 | unsigned int l; | |
44 | { | |
45 | return (int) l; | |
46 | } | |
5b62e993 MW |
47 | |
48 | void main(argc,argv) | |
49 | int argc; | |
50 | char **argv; | |
51 | { | |
52 | char *dir; | |
f8beb284 MW |
53 | int flagmysql = 1; /* use if supported */ |
54 | unsigned long n; | |
55 | int opt; | |
5b62e993 | 56 | |
f8beb284 MW |
57 | while ((opt = getopt(argc,argv,"mMnNvV")) != opteof) |
58 | switch(opt) { | |
59 | case 'm': flagmysql = 1; break; | |
60 | case 'M': flagmysql = 0; break; | |
61 | case 'n': flagnumber = 1; break; | |
62 | case 'N': flagnumber = 0; break; | |
63 | case 'v': | |
64 | case 'V': strerr_die2x(0, | |
65 | "ezmlm-list version: ezmlml-0.53+",EZIDX_VERSION); | |
66 | default: | |
67 | die_usage(); | |
68 | } | |
5b62e993 | 69 | |
f8beb284 MW |
70 | dir = argv[optind++]; |
71 | if (!dir) die_usage(); | |
5b62e993 | 72 | |
f8beb284 MW |
73 | if (chdir(dir) == -1) |
74 | strerr_die4sys(111,FATAL,ERR_SWITCH,dir,": "); | |
5b62e993 | 75 | |
f8beb284 MW |
76 | if (dir[0] != '/') |
77 | strerr_die2x(100,FATAL,ERR_SLASH); | |
5b62e993 | 78 | |
f8beb284 MW |
79 | if (flagnumber) { |
80 | n = putsubs(dir,0L,52L,dummywrite,flagmysql,FATAL); | |
81 | if (substdio_put(&ssout,strnum,fmt_ulong(strnum,n)) == -1) die_write(FATAL); | |
82 | if (substdio_put(&ssout,"\n",1) == -1) die_write(FATAL); | |
83 | } else | |
84 | (void) putsubs(dir,0L,52L,subwrite,flagmysql,FATAL); | |
85 | if (substdio_flush(&ssout) == -1) die_write(FATAL); | |
86 | closesql(); | |
5b62e993 MW |
87 | _exit(0); |
88 | } |