ezmlmx 0.68
ezmlmx
Loading...
Searching...
No Matches
ezmlm-list.c
Go to the documentation of this file.
1#include <unistd.h>
2#include "readwrite.h"
3#include "buffer.h"
4#include "subscribe.h"
5#include "exit.h"
6#include "fmt.h"
7#include "getoptb.h"
8#include "errtxt.h"
9#include "idx.h"
10#include "auto_version.h"
11#include "logmsg.h"
12
13#define WHO "ezmlm-list"
14
20
21int flagnumber = 0; /* default list subscribers, not number of */
22
23static char strnum[FMT_ULONG];
24
25static void die_nomem(void) { logmsg(WHO,111,FATAL,ERR_NOMEM); }
26static void die_write(void) { logmsg(WHO,111,FATAL,B(ERR_WRITE,"stdout")); }
27static void die_usage(void) { logmsg(WHO,100,USAGE,"ezmlm-list [-mMnNvV] dir"); }
28
29int subwrite(char *s,unsigned int l)
30{
31 return (buffer_put(buffer_1,s,l) | buffer_putflush(buffer_1,"\n",1));
32}
33
34int dummywrite(char *s,unsigned int l) { return (int) l; }
35
36int main(int argc,char **argv)
37{
38 char *dir;
39 int flagmysql = 1; /* use if supported */
40 unsigned long n;
41 int opt;
42
43 while ((opt = getoptb(argc,argv,"mMnNvV")) != opteof)
44 switch(opt) {
45 case 'm': flagmysql = 1; break;
46 case 'M': flagmysql = 0; break;
47 case 'n': flagnumber = 1; break;
48 case 'N': flagnumber = 0; break;
49 case 'v':
50 case 'V': logmsg(WHO,0,VERSION,auto_version);
51 default: die_usage();
52 }
53
54 dir = argv[optind++];
55 if (!dir) die_usage();
56
57 if (chdir(dir) == -1)
58 logmsg(WHO,111,FATAL,B(ERR_SWITCH,dir));
59
60 if (dir[0] != '/')
61 logmsg(WHO,100,FATAL,B(ERR_SLASH,dir));
62
63 if (flagnumber) {
64 n = putsubs(dir,0L,52L,dummywrite,flagmysql);
65 if (buffer_put(buffer_1,strnum,fmt_ulong(strnum,n)) == -1) die_write();
66 if (buffer_put(buffer_1,"\n",1) == -1) die_write();
67 } else
68 putsubs(dir,0L,52L,subwrite,flagmysql); // FIXME
69 if (buffer_flush(buffer_1) == -1) die_write();
70 closesql();
71 _exit(0);
72
73 return 0;
74}
const char auto_version[]
Error messages. If you translate these, I would urge you to keep the English version as well....
#define ERR_NOMEM
Definition errtxt.h:14
#define ERR_SWITCH
Definition errtxt.h:42
#define ERR_WRITE
Definition errtxt.h:17
#define ERR_SLASH
Definition errtxt.h:118
void closesql(void)
close connection to SQL server, if open
Definition opensql.c:21
unsigned long putsubs(const char *dir, unsigned long hash_lo, unsigned long hash_hi, int subwrite(), int flagsql)
Definition putsubs.c:49
void die_nomem()
Definition getconf.c:17
#define WHO
Definition author.c:1
char * dir
int main()
Definition ezmlm-weed.c:69
int opt
Definition ezmlm-cron.c:53
int flagnumber
Definition ezmlm-list.c:21
int subwrite(char *s, unsigned int l)
Definition ezmlm-list.c:29
int dummywrite(char *s, unsigned int l)
Definition ezmlm-list.c:34
const char * logmsg(const char *dir, unsigned long num, unsigned long listno, unsigned long subs, int done)
Definition loginfo.c:32
void die_write(void)
Definition subscribe.c:41