diff -ru hypermail-2b28/patchlevel.h hypermail/patchlevel.h --- hypermail-2b28/patchlevel.h Mon Dec 6 17:22:27 1999 +++ hypermail/patchlevel.h Tue Nov 30 23:57:14 1999 @@ -1,2 +1,2 @@ -#define VERSION "2b30" +#define VERSION "2b30++" #define PATCHLEVEL "0" diff -ru hypermail-2b28/src/hypermail.c hypermail/src/hypermail.c --- hypermail-2b28/src/hypermail.c Mon Dec 6 17:22:28 1999 +++ hypermail/src/hypermail.c Tue Nov 30 23:57:14 1999 @@ -390,6 +390,11 @@ authname = setindex(set_defaultindex, "author", set_htmlsuffix); /* + * Set name of the overviewfile. FIXME, this is hardcoded + */ + overviewname = "archive_overview.haof" ; + + /* * General settings for mail command and rewriting. */ @@ -496,6 +501,7 @@ writethreads(amount_new); writesubjects(amount_new); writeauthors(amount_new); + writeoverview(amount_new); } else { printf("No mails to output!\n"); diff -ru hypermail-2b28/src/hypermail.h hypermail/src/hypermail.h --- hypermail-2b28/src/hypermail.h Mon Dec 6 17:22:28 1999 +++ hypermail/src/hypermail.h Tue Nov 30 23:57:14 1999 @@ -252,6 +252,7 @@ VAR char *datename; /* By date index file */ VAR char *subjname; /* By subject index file */ VAR char *thrdname; /* By thread index file */ +VAR char *overviewname; /* Easily parsable overview file */ VAR int use_mailcommand; VAR int use_mailto; --- hypermail-2b30/src/print.c.orig Thu Sep 21 19:43:29 2000 +++ hypermail-2b30/src/print.c Sun Dec 10 23:35:36 2000 @@ -381,6 +381,38 @@ } } +/* +** Pretty-prints the items for the overviewfile. +*/ + +void printoverviewitems(FILE *fp, struct header *hp) +{ + char *subj, *from_name, *from_emailaddr; + if (hp != NULL) { + struct emailinfo *em = hp->data; + printoverviewitems(fp, hp->left); + subj = convchars(em->subject); + from_name = convchars(em->name); + from_emailaddr = convchars(em->emailaddr); + fprintf(fp, + " \n" + " %s\n" + " %s\n" + " %s\n" + " %s\n" + " %s\n" + " \"%.4d.%s\"\n" + " \n\n" + ,subj, getdatestr(em->date), from_name, from_emailaddr, em->msgid, + em->msgnum, set_htmlsuffix); + + free(subj); + free(from_name); + free(from_emailaddr); + printoverviewitems(fp, hp->right); + } +} + int showheader(char *header) { return (inlist(set_show_headers, header) || inlist(set_show_headers, "*")); @@ -1547,6 +1579,67 @@ printfooter(fp, ihtmlfooterfile, set_label, set_dir, lang[MSG_BY_AUTHOR], authname); + + fclose(fp); + + if (newfile && chmod(filename, set_filemode) == -1) { + sprintf(errmsg, "%s \"%s\": %o.", + lang[MSG_CANNOT_CHMOD], filename, set_filemode); + progerr(errmsg); + } + + if (set_showprogress) + putchar('\n'); +} + +/* +** Write the overviewfile. Might be XML based. Should be easily parseble. +*/ + +void writeoverview(int amountmsgs) +{ + int newfile; + char filename[MAXFILELEN]; + FILE *fp; + + sprintf(filename, "%s%s%s", set_dir, + (set_dir[strlen(set_dir) - 1] == '/') ? "" : "/", overviewname); + + if (isfile(filename)) + newfile = 0; + else + newfile = 1; + + if ((fp = fopen(filename, "w")) == NULL) { + sprintf(errmsg, "%s \"%s\".", lang[MSG_COULD_NOT_WRITE], filename); + progerr(errmsg); + } + + if (set_showprogress) + printf("%s \"%s\"...", lang[MSG_WRITING_DATE_INDEX], filename); + + + fprintf(fp,"\n\n"); + fprintf(fp," \n\n" + ); + fprintf(fp," \n\n"); + + fprintf(fp," \n"); + fprintf(fp," %s\n",datename); + fprintf(fp," %s\n",thrdname); + fprintf(fp," %s\n",subjname); + fprintf(fp," %s\n",authname); + fprintf(fp," \n\n"); + + fprintf(fp," \n\n"); + printoverviewitems(fp,datelist); + fprintf(fp," \n"); + + + fprintf(fp," "); + fclose(fp);