[Mixmaster-devel] r839 - in branches/Mix-stats: . Src
Brought to you by:
weaselp
From: <co...@so...> - 2004-05-06 20:26:17
|
Author: colin Date: 2004-05-06 22:26:02 +0200 (Thu, 06 May 2004) New Revision: 839 Modified: branches/Mix-stats/Src/main.c branches/Mix-stats/Src/menustats.c branches/Mix-stats/Src/mix3.h branches/Mix-stats/TODO branches/Mix-stats/mixmaster.1 Log: non-interactive stats update implemented stats update ported to unix systems Modified: branches/Mix-stats/Src/main.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- branches/Mix-stats/Src/main.c 2004-05-06 14:34:49 UTC (rev 838) +++ branches/Mix-stats/Src/main.c 2004-05-06 20:26:02 UTC (rev 839) @@ -42,7 +42,8 @@ int error =3D 0, deflt =3D 1, help =3D 0, readmail =3D 0, send =3D -1,= sendpool =3D 0, header =3D 1, maint =3D 0, keygen =3D 0, verbose =3D 2, sign =3D 0, en= crypt =3D 0, redirect_mail =3D 0, about=3D0, version=3D0; - int daemon =3D 0, type_list =3D 0, nodetach =3D 0, update_pingerlist =3D= 0; + int daemon =3D 0, type_list =3D 0, nodetach =3D 0; + int update_stats =3D 0, update_pingerlist =3D 0; =20 #ifdef USE_SOCK int pop3 =3D 0; @@ -54,7 +55,7 @@ char *p, *q; char chain[1024] =3D ""; char nym[LINELEN] =3D ""; - BUFFER *nymopt, *pseudonym, *attachments; + BUFFER *nymopt, *pseudonym, *attachments, *statssrc; int numcopies =3D 0; /* default value set in mix.cfg */ BUFFER *msg, *chainlist, *field, *content; FILE *f; @@ -72,6 +73,7 @@ attachments =3D buf_new(); field =3D buf_new(); content =3D buf_new(); + statssrc =3D buf_new(); =20 #ifdef USE_NCURSES if (argc =3D=3D 1) { @@ -136,6 +138,29 @@ encrypt =3D 1; else if (streq(p, "update-pinger-list")) update_pingerlist =3D 1; + else if (streq(p, "update-stats")) { + buf_clear(statssrc); + f =3D mix_openfile(STATSSRC, "r"); + if (f !=3D NULL) { + buf_read(statssrc, f); + fclose(f); + } + if (statssrc->length > 0) { + update_stats =3D 1; + } else { + deflt =3D 0; + fprintf(stderr, "%s: No current stats source --%s\n", argv[0], p); + } + } + else if (strleft(p, "update-stats") && p[strlen("update-stats")] =3D=3D= '=3D') { + buf_clear(statssrc); + buf_appendf(statssrc, "%s", (p + strlen("update-stats") + 1)); + if (statssrc->length > 0) { + update_stats =3D 1; + } else { + fprintf(stderr, "%s: No stats source specified --%s\n", argv[0], p= ); + } + } else if ((q =3D largopt(p, "to", argv[0], &error)) !=3D NULL) { header =3D 0; buf_appendf(msg, "To: %s\n", q); @@ -355,6 +380,26 @@ ret =3D 0; goto end; } + if (update_stats) { + BUFFER *inifile; + inifile =3D buf_new(); + read_allpingers(inifile); + if (good_stats_source(inifile, statssrc->data) =3D=3D 1) { + if (stats_download(inifile, statssrc->data, 0) =3D=3D 0) { + f =3D mix_openfile(STATSSRC, "w+"); + if (f !=3D NULL) { + fprintf(f, "%s", statssrc->data); + fclose(f); + } else + fprintf(stderr, "Could not open stats source file for writing\= n"); + } + } + else + printf("Stats source does not include all required files.\n"); + ret =3D 0; + buf_free(inifile); + goto end; + } if (help ||about ||(isatty(fileno(stdin)) && isatty(fileno(stdout)))) fprintf(stderr, "Mixmaster %s\n", VERSION); if (help ||about) @@ -407,7 +452,8 @@ #endif /* USE_PGP */ "-v, --verbose output informational messages\n\ -f [file] read a mail folder\n\ - --update-pinger-list Download an updated all pingers list f= ile\n" + --update-pinger-list Download an updated all pingers list f= ile\n\ + --update-stats[=3Dsource] Download updated stats\n" =20 #ifndef USE_NCURSES "\n-fr, -ff, -fg [file] send reply/followup/group reply= to a message\n" @@ -655,6 +701,7 @@ buf_free(nymopt); buf_free(pseudonym); buf_free(attachments); + buf_free(statssrc); =20 if (daemon) { check_get_pass(1); Modified: branches/Mix-stats/Src/menustats.c =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- branches/Mix-stats/Src/menustats.c 2004-05-06 14:34:49 UTC (rev 838) +++ branches/Mix-stats/Src/menustats.c 2004-05-06 20:26:02 UTC (rev 839) @@ -42,7 +42,7 @@ return 0; #else char s[PATHMAX]; - snprintf(s, PATHMAX, "%s -nv %s -O %s", WGET, url, dest); + snprintf(s, PATHMAX, "%s -q %s -O %s", WGET, url, dest); err =3D system(s); =20 if (err !=3D -1) { @@ -146,7 +146,7 @@ =20 /* Download all the needed files from the specified source */ /* returns -1 on error */ -static int download (BUFFER *allpingers, char *sourcename) { +int stats_download(BUFFER *allpingers, char *sourcename, int curses) { char *localfiles[] =3D { TYPE2REL, TYPE1LIST, PUBRING, PGPREMPUBASC, TY= PE2LIST }; char path[PATHMAX]; BUFFER *value; @@ -156,13 +156,20 @@ =20 value =3D buf_new(); =20 - clear(); - standout(); + if (curses) { + clear(); + } =20 err =3D get_attribute(allpingers, sourcename, "base", value); - if (err =3D=3D 0) - printw("%s",value->data); - standend(); + if (err =3D=3D 0) { + if (curses) { + standout(); + printw("%s", value->data); + standend(); + } + else + printf("%s\n\r", value->data); + } =09 for (i=3D0; i<NUMFILES; i++) { err =3D get_attribute(allpingers, sourcename, files[i], value); @@ -172,20 +179,32 @@ break; } mixfile(path, localfiles[i]); - mvprintw(i+3, 0, "downloading %s from %s...", localfiles[i], value->da= ta); - refresh(); + if (curses) { + mvprintw(i+3, 0, "downloading %s from %s...", localfiles[i], value->d= ata); + refresh(); + } + else + printf("downloading %s from %s...", localfiles[i], value->data); err =3D url_download(value->data, path); if (err < 0) { - printw("failed to download.\n\rTry using another stats source."); + if (curses) + printw("failed to download.\n\rTry using another stats source."); + else + printf("failed to download.\n\rTry using another stats source.\n\r")= ; ret =3D -1; break; } - printw("done"); + if (curses) + printw("done"); + else + printf("done\n\r"); } -=09 - printw("\n\n\n\n\rPress any key to continue"); - getch(); - clear(); + + if (curses) {=09 + printw("\n\n\n\n\rPress any key to continue"); + getch(); + clear(); + } buf_free(value); return ret; } @@ -194,7 +213,7 @@ * 1 if it has, * 0 otherwise */ -static int good_source (BUFFER *allpingers, char *sourcename) { +int good_stats_source (BUFFER *allpingers, char *sourcename) { BUFFER *value; int i; int res =3D 1; @@ -279,7 +298,7 @@ buf_reset(goodpingers); buf_rewind(pingernames); while ((buf_getline(pingernames, line) !=3D -1) && num < MAXPING) { - if (good_source (inifile, line->data)) { + if (good_stats_source (inifile, line->data)) { buf_cat(goodpingers, line); buf_nl(goodpingers); num++; @@ -314,7 +333,7 @@ assert (err !=3D -1); c--; } - if (download(inifile, line->data) =3D=3D 0) { + if (stats_download(inifile, line->data, 1) =3D=3D 0) { f =3D mix_openfile(STATSSRC, "w+"); if (f !=3D NULL) { fprintf(f, "%s", line->data); @@ -334,7 +353,7 @@ menu_spawn_editor(path, 0); } else if ((c =3D=3D '\r') && statssrc->length) { - download(inifile, statssrc->data); + stats_download(inifile, statssrc->data, 1); break; } else if (c =3D=3D ' ') { Modified: branches/Mix-stats/Src/mix3.h =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- branches/Mix-stats/Src/mix3.h 2004-05-06 14:34:49 UTC (rev 838) +++ branches/Mix-stats/Src/mix3.h 2004-05-06 20:26:02 UTC (rev 839) @@ -125,7 +125,11 @@ int write_pidfile(char *pidfile); int clear_pidfile(char *pidfile); time_t parse_yearmonthday(char* str); + int url_download(char* url, char* dest); +void read_allpingers(BUFFER *allpingers); +int good_stats_source (BUFFER *allpingers, char *sourcename); +int stats_download(BUFFER *allpingers, char *sourcename, int curses); =20 typedef struct { char *name; Modified: branches/Mix-stats/TODO =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- branches/Mix-stats/TODO 2004-05-06 14:34:49 UTC (rev 838) +++ branches/Mix-stats/TODO 2004-05-06 20:26:02 UTC (rev 839) @@ -1,6 +1,3 @@ -in -stats branch: - - allow non-interactive stats update - Items that need to be completed before the next MAIN release: =20 - Full functionality / regression testing around chain operations @@ -8,8 +5,6 @@ - Full WIN32 support. - rename pop3.cfg to pop3.cfg.txt - different editor handling? if so, provide suggestions. -- stats stuff: - - port it to unix - Add equivalent features to -V and --about to mpgp and document in mpgp= .1 - Remove OpenSSL version checks. Maybe print a message stating the=20 supported versions, and leave it up to the user? Modified: branches/Mix-stats/mixmaster.1 =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D --- branches/Mix-stats/mixmaster.1 2004-05-06 14:34:49 UTC (rev 838) +++ branches/Mix-stats/mixmaster.1 2004-05-06 20:26:02 UTC (rev 839) @@ -117,6 +117,9 @@ .TP .B "\-\-update-pinger-list" Download an updated all pingers list file. +.TP +.B "\-\-update-stats\fI[=3Dsource\fR]" +Download updated stats. .SS Remailer options: .TP .B "\-\-config=3D\fIfilename" |