Index: ossp-pkg/petidomo/main.c RCS File: /v/ossp/cvs/ossp-pkg/petidomo/main.c,v rcsdiff -q -kk '-r1.18' '-r1.19' -u '/v/ossp/cvs/ossp-pkg/petidomo/main.c,v' 2>/dev/null --- main.c 2001/01/20 13:52:41 1.18 +++ main.c 2001/01/21 12:00:35 1.19 @@ -48,7 +48,7 @@ char * incoming_mail; argv_t args[] = { - {ARGV_MAND, "mode", ARGV_CHAR_P, &mode, "mode", "listserv, deliver, or approve."}, + {ARGV_MAND, "mode", ARGV_CHAR_P, &mode, "mode", "listserv, deliver, approve or dump."}, {ARGV_MAYBE, "listname", ARGV_CHAR_P, &listname, "listname", "Default mailing list."}, {ARGV_MAYBE, "masterconf", ARGV_CHAR_P, &masterconfig_path, "masterconf", "Path to petidomo.conf."}, {ARGV_MAYBE, "approved", ARGV_BOOL, &g_is_approved, "approved", "approved flag."}, @@ -90,6 +90,29 @@ argv_version_string = (char *)petidomo_version.v_gnu; argv_process(args, argc, argv); + /* Member Dump Mode */ + if (strcasecmp(mode, "dump") == 0) { + char *cp; + const struct List_Config *ListConfig; + if (listname == NULL) { + fprintf(stderr, "petidomo: dump mode requires a list name argument\n"); + exit(1); + } + if (InitPetidomo(masterconfig_path) != 0) { + fprintf(stderr, "petidomo: failed load master configuration.\n"); + exit(1); + } + MasterConfig = getMasterConfig(); + ListConfig = getListConfig(listname); + if ((cp = loadfile(ListConfig->address_file)) == NULL) { + fprintf(stderr, "petidomo: failed to open file \"%s\"\n", ListConfig->address_file); + exit(1); + } + fwrite(cp, strlen(cp), 1, stdout); + free(cp); + exit(0); + } + /* Log a few helpful facts about this Petidomo instance. */ syslog(LOG_DEBUG, "%s starting up; mode=%s, listname=%s, masterconf=%s, approved=%s, ruid=%d, euid=%d, gid=%d, egid=%d", Index: ossp-pkg/petidomo/petidomo-kickout RCS File: /v/ossp/cvs/ossp-pkg/petidomo/petidomo-kickout,v rcsdiff -q -kk '-r1.1' '-r1.2' -u '/v/ossp/cvs/ossp-pkg/petidomo/petidomo-kickout,v' 2>/dev/null --- petidomo-kickout 2001/01/18 15:31:30 1.1 +++ petidomo-kickout 2001/01/21 12:00:35 1.2 @@ -20,10 +20,6 @@ } } -# locate the Petidomo basedir -my $basedir = `petidomo --version 2>&1`; -$basedir =~ s|^.+\((\S+)\).*$|$1|s; - # read config my $list = {}; open(FP, "<$config") || die "No ~/.petidomo file found"; @@ -32,17 +28,16 @@ if (m|^\s*(\S+)\s+(\S+)|) { my ($l, $pw) = ($1, $2); $l =~ s|@[^@]+$||; - if (-f "$basedir/$l.list") { - $list->{$l} = {}; - $list->{$l}->{PASSWORD} = $pw; - $list->{$l}->{MEMBERS} = []; - open(LST, "<$basedir/$l.list"); - while () { - s|\n$||s; - push(@{$list->{$l}->{MEMBERS}}, $_); - } - close(LST); + $list->{$l} = {}; + $list->{$l}->{PASSWORD} = $pw; + $list->{$l}->{MEMBERS} = []; + next if ($l eq 'petidomo'); + open(DUMP, "./petidomo --masterconf=../test/petidomo.conf --mode=dump $l |") || die "fuck"; + while () { + s|\n$||s; + push(@{$list->{$l}->{MEMBERS}}, $_); } + close(DUMP); } } close(FP); @@ -70,6 +65,5 @@ } } } -sleep(1); exit(0);