[prev in list] [next in list] [prev in thread] [next in thread]
List: hypermail
Subject: [hypermail] Some improvements
From: "W. Tasin" <tasin () fhm ! edu>
Date: 2001-02-14 13:39:29
[Download RAW message or body]
Hi hypermail-developers,
thx for the great tool, I setted up some mailing lists with it.
I developed my own webmailer
(http://ftp.ee.fhm.edu/pub/unix/wxwmail-0.3beta1.tar.gz), because
I wanted to have a more flexible webmailer.
I think it is a good enhancement for hypermail usage.
If you like it, feel free to name it on your site ;-)
For me there were also some problems with hypermail,
which are now handled by the attached patch (can also be obtained at:
ftp://ftp.ee.fhm.edu/pub/unix/patches-hypermail-2b30.diff).
Please have a look at them, maybe they are of interest for your new
release:
=================
==Here a description of what I made:
=================
--- hypermail-2b30/src/lang.h Sun May 28 18:43:28 2000
+++ hypermail-2b30/src/lang.h Tue Jan 30 16:44:59 2001
@@ -159,10 +159,10 @@
"Über diese Liste", /* About this list -HTML*/
"Ende der Nachricht", /* End of Messages -HTML*/
"Anfang der Nachricht", /* Start of Messages -HTML*/
- "Datums-Sicht", /* Date view -HTML*/
- "Thread-Sicht", /* Thread view -HTML*/
- "Subject-Sicht", /* Subject view -HTML*/
- "Autor-Sicht", /* Author view -HTML*/
+ "Datumsansicht", /* Date view -HTML*/
+ "Baumansicht", /* Thread view -HTML*/
+ "Betreffansicht", /* Subject view -HTML*/
+ "Autorenansicht", /* Author view -HTML*/
"Weitere Gruppen", /* Other groups -HTML*/
......
=================
==some changements in the german translation
==(this is of course optional, because some like it in the first way...
==but I guess it would be a better translation ;-))
=================
--- hypermail-2b30/src/parse.c Thu Jun 8 00:10:44 2000
+++ hypermail-2b30/src/parse.c Sun Jan 28 16:05:56 2001
@@ -998,6 +998,7 @@
char *dir, int inlinehtml, /* if HTML should be inlined */
int startnum)
{
+
FILE *fp;
char *date = NULL;
char *subject = NULL;
@@ -1307,7 +1308,14 @@
file_created = MAKE_FILE; /* please make one */
}
}
+
else if (!strncasecmp(head->line, "Content-Base:", 13)) {
+
char *ptr = head->line + 13;
+ content=CONTENT_IGNORE;
+
/* we must make sure this is not parsed more times
+
than this */
+
head->parsedheader = TRUE;
+ }
else if (!strncasecmp(head->line, "Content-Type:", 13)) {
char *ptr = head->line + 13;
#define DISP_HREF 1
=================
==if a Content-Base is found so ignore the stuff because it is on another
==server and it would never be parsed well inside the mail...
==(this is more a workaround than a good patch... a better way would be to
==include this to every link inside the content... to show up also this
==external site... but I think it is an easy way to handle this problem)
=================
@@ -1994,7 +2002,7 @@
else
fname = FILE_SUFFIXER;
-
binname = maprintf("%s%c%.2d-%s",
+
binname = maprintf("%s%c%05d-%s",
att_dir, PATH_SEPARATOR,
att_counter, fname);
/* @@ move this one up */
=================
==expanding the att counter to 5 digits, not very important, but I think
=="02" instead of ".2" for the format specifier is more ANSI conforming. =
=================
--- hypermail-2b30/src/print.c Thu Jun 8 00:11:32 2000
+++ hypermail-2b30/src/print.c Sat Feb 3 23:14:09 2001
@@ -75,8 +75,9 @@
if (set_mailcommand) {
if (set_hmail) {
-
ptr = makemailcommand("mailto:$TO", set_hmail, "", "");
-
fprintf(fp, "<th><a href=\"%s\">%s</a></th>\n",
+
ptr = makemailcommand(set_mailcommand, set_hmail, "", "");
+ if (strcmp(ptr, "NONE")!=0)
+
fprintf(fp, "<th><a href=\"%s\">%s</a></th>\n",
ptr ? ptr : "", lang[MSG_NEW_MESSAGE]);
if (ptr)
free(ptr);
=================
==adding NONE as value for hm_mailcommand, so "New Message" will not be
shown
=================
@@ -86,7 +87,8 @@
ptr = makemailcommand(set_mailcommand, set_hmail,
currentid, cursub);
-
fprintf(fp, "<th><a href=\"%s\">%s</a></th>\n",
+
if (strcmp(ptr, "NONE")!=0)
+
fprintf(fp, "<th><a href=\"%s\">%s</a></th>\n",
ptr ? ptr : "", lang[MSG_REPLY]);
if (ptr)
free(ptr);
=================
==adding NONE as value for hm_mailcommand, so "New Message" will not be
shown
=================
@@ -498,6 +500,7 @@
}
else {
if (inheader) {
+ insig=0;
if (set_showhtml) {
if (pre) {
fprintf(fp, "</pre>\n");
=================
==that's the most important bugfix:
==after a signature a normal textfile could follow as an inline
==attachment.
==W/o this the attached textfile wouldn't be formatted well, so if a
==header follows the insig-flag would be resetted.
=================
@@ -756,7 +759,7 @@
#endif
if (!strcmp(email->name, email->emailaddr)) {
if (use_mailcommand) {
-
ptr = makemailcommand(set_mailcommand,
+
ptr = makemailcommand(set_bodymailcommand,
email->emailaddr,
email->msgid, email->subject);
fprintf(fp, "<strong>From:</strong> <a href=\"%s\">", ptr ? ptr : "");
@@ -768,8 +771,8 @@
fprintf(fp, "<em>%s</em><br>\n", email->name);
}
else {
-
if (use_mailcommand) {
-
ptr = makemailcommand(set_mailcommand,
+
if (use_mailcommand && strcmp(email->emailaddr,"(no email)")!=0) {
+
ptr = makemailcommand(set_bodymailcommand,
email->emailaddr,
email->msgid, email->subject);
fprintf(fp, "<strong>From:</strong> %s (<a href=\"%s\">",
@@ -779,9 +782,12 @@
fprintf(fp, "<em>%s</em></a>)<br>\n", email->emailaddr);
}
else
+
{
fprintf(fp,
"<strong>From:</strong> %s (<em>%s</em>)<br>\n",
-
email->name, email->emailaddr);
+
email->name,
+
(strcmp(email->emailaddr,"(no email)")!=0) ? email->emailaddr : "no email");
+
}
}
fprintf(fp, "<strong>Date:</strong> %s\n<p>\n",
getdatestr(email->date));
=================
==if "(no email)" was passed, so don't make this entry clickable!
=================
--- hypermail-2b30/src/setup.c Thu Jun 8 00:14:25 2000
+++ hypermail-2b30/src/setup.c Sun Jan 28 16:05:56 2001
@@ -47,6 +47,7 @@
int set_locktime;
char *set_mailcommand;
+char *set_bodymailcommand;
char *set_mailto;
char *set_hmail;
char *set_domainaddr;
@@ -219,6 +220,13 @@
"# This is an octal number representing the file permissions\n"
"# that new files are set to when they are created.\n"},
+ {"bodymailcommand", &set_bodymailcommand, MAILCOMMAND, CFG_STRING,
+ "# This specifies the mail command to use when converting\n"
+ "# email addresses to links. The variables $TO, $SUBJECT,\n"
+ "# and $ID can be used in constructing the command string.\n"
+ "# This command is used inside the mail bodies and in the\n"
+ "# From: line.\n"},
+
{"mailcommand", &set_mailcommand, MAILCOMMAND, CFG_STRING,
"# This specifies the mail command to use when converting\n"
"# email addresses to links. The variables $TO, $SUBJECT,\n"
@@ -622,6 +630,7 @@
printf("set_dateformat = %s\n",set_dateformat ? set_dateformat :
"Not set");
printf("set_stripsubject = %s\n",set_stripsubject ?
set_stripsubject : "Not set");
printf("set_mailcommand = %s\n",set_mailcommand ? set_mailcommand
: "Not set");
+ printf("set_bodymailcommand = %s\n",set_bodymailcommand ?
set_bodymailcommand : "Not set");
printf("set_mailto = %s\n",set_mailto ? set_mailto : "Not set");
printf("set_hmail = %s\n",set_hmail ? set_hmail : "Not set");
printf("set_domainaddr = %s\n",set_domainaddr ? set_domainaddr :
"Not set");
--- hypermail-2b30/src/setup.h Thu Jun 8 00:14:25 2000
+++ hypermail-2b30/src/setup.h Sun Jan 28 16:05:56 2001
@@ -73,6 +73,7 @@
extern char *set_label;
extern char *set_mailcommand;
+extern char *set_bodymailcommand;
extern char *set_mailto;
extern char *set_hmail;
extern char *set_domainaddr;
=================
==another enhancement! [;-)]
==I had the problem. My Webmail Form is fixed in the destination email
==address (only for posting into the mailinglist). For security
==consideration I don't want to allow the user to specify the destination,
==but clicking on a email address inside the mail content would start the
==webform. With this extension two different email commands could be
==specified.
==(e.g.
==hm_mailcommand="/cgi-bin/foren/wxwmail?replyof=$ID&subject=$SUBJECT&label=test"
==hm_bodymailcommand=mailto:$TO?subject=$SUBJECT)
=================
--- hypermail-2b30/src/string.c Thu Jun 8 00:15:34 2000
+++ hypermail-2b30/src/string.c Sun Jan 28 16:05:56 2001
@@ -568,7 +568,7 @@
char *newcmd = NULL;
char *newcmd2;
- if (isre(subject, NULL))
+ if (subject && isre(subject, NULL))
hasre = 1;
else
hasre = 0;
@@ -576,9 +576,9 @@
convsubj = convchars(subject);
/* remade to deal with any-length strings */
- tmpsubject = maprintf("%s%s", (hasre) ? "" : "Re: ", convsubj);
+ /* tmpsubject = maprintf("%s%s", (hasre) ? "" : "Re: ", (convsubj)
? convsubj : ""); */
+ tmpsubject = maprintf("%s%s", (convsubj && !hasre) ? "Re: " : "",
(convsubj) ? convsubj : "");
- if (tmpsubject) {
if ((cp = strrchr(email, ' ')) != NULL)
*cp = '\0';
@@ -587,7 +587,7 @@
newcmd2 = replace(newcmd, "$ID", id);
free(newcmd);
-
newcmd = replace(newcmd2, "$SUBJECT", tmpsubject);
+
newcmd = replace(newcmd2, "$SUBJECT", (tmpsubject) ? tmpsubject : "");
free(newcmd2);
newcmd2 = replacechar(newcmd, '%', "%25");
@@ -602,7 +602,7 @@
newcmd = newcmd2; /* this is the new string */
free(tmpsubject);
- }
+
free(convsubj);
return newcmd;
}
=================
==getting rid of (nil) inside the predefined fields of the web form...
=================
@@ -678,7 +678,7 @@
ptr-email, email, at, mailbuff);
if (valid_root_domain(mailaddr)) {
-
char *mailcmd = makemailcommand(set_mailcommand,
+
char *mailcmd = makemailcommand(set_bodymailcommand,
mailaddr, mid,
msubject);
msnprintf(tempbuff, sizeof(tempbuff),
=================
That's all!
Ciao
Walter
--
--
oohhh sveglia.... il mondo e' ammalato, ma x colpa di chi.........
(Zucchero)
:-------W. Tasin, FB 04,
FHM-------------------PGP-KeyID:0x7961A645----------:
<Key-Fingerprint: 1610 835F 0080 32F4 6140 6CF7 A7D0 44CD 7961A645>
<http://wwwkeys.pgp.net:11371/pks/lookup?op=index&search=0x7961A645&fingerprint=on>
["patches-hypermail-2b30.diff" (application/octet-stream)]
diff -ur hypermail-2b30/src/lang.h hypermail-2b30/src/lang.h
--- hypermail-2b30/src/lang.h Sun May 28 18:43:28 2000
+++ hypermail-2b30/src/lang.h Tue Jan 30 16:44:59 2001
@@ -159,10 +159,10 @@
"Über diese Liste", /* About this list -HTML*/
"Ende der Nachricht", /* End of Messages -HTML*/
"Anfang der Nachricht", /* Start of Messages -HTML*/
- "Datums-Sicht", /* Date view -HTML*/
- "Thread-Sicht", /* Thread view -HTML*/
- "Subject-Sicht", /* Subject view -HTML*/
- "Autor-Sicht", /* Author view -HTML*/
+ "Datumsansicht", /* Date view -HTML*/
+ "Baumansicht", /* Thread view -HTML*/
+ "Betreffansicht", /* Subject view -HTML*/
+ "Autorenansicht", /* Author view -HTML*/
"Weitere Gruppen", /* Other groups -HTML*/
"Nachrichten", /* Messages -HTML*/
"Anfang", /* Starting -HTML*/
@@ -170,12 +170,12 @@
"Über dieses Archiv", /* About this archive -HTML*/
"sortiert nach", /* sorted by -HTML*/
"Weitere Mail-Archive", /* Other mail archives -HTML*/
- "Datum", /* By Date -HTML*/
+ "nach Datum", /* By Date -HTML*/
"Neueste Nachrichten", /* Most recent messages-HTML*/
"Autor", /* author -HTML*/
"Datum", /* date -HTML*/
- "Thread", /* thread -HTML*/
- "Subject", /* subject -HTML*/
+ "Baum", /* thread -HTML*/
+ "Betreff", /* subject -HTML*/
"für Optionen", /* for options -STDOUT*/
"Schreibe Nachrichten in", /* Writing messages to-STDOUT*/
"Schreibe Datums-Index in", /* Writing date index to-STDOUT*/
@@ -183,18 +183,18 @@
"Schreibe Subject-Index in", /* Writing subject index to-STDOUT*/
"Schreibe Autoren-Index in", /* Writing author index to-STDOUT*/
"Letztes Datum", /* Last message date -HTML*/
- "Archiviert auf", /* Archived on -HTML*/
+ "Archiviert am", /* Archived on -HTML*/
"Kann Dateimodus nicht ändern", /* Can not chmod -STDERR*/
"Kann nicht schreiben", /* Could not write -STDERR*/
"Nächste Nachricht", /* Next message -HTML*/
"Vorherige Nachricht", /* Previous message -HTML*/
"Vielleicht als Antwort auf", /* Maybe in reply to -HTML*/
"Als Antwort auf", /* In reply to -HTML*/
- "Nächste im Thread", /* Next in thread -HTML*/
+ "Nächster Zweig", /* Next in thread -HTML*/
"Eventuelle Antwort", /* Maybe reply -HTML*/
- "Nach Thread", /* By Thread -HTML*/
- "Nach Subject", /* By Subject -HTML*/
- "Nach Autor", /* By Author -HTML*/
+ "als Baum", /* By Thread -HTML*/
+ "nach Betreff", /* By Subject -HTML*/
+ "nach Autor", /* By Author -HTML*/
"Kann das Verzeichnis nicht erstellen", /* Can not create directory -STDERR*/
"Erstelle Verzeichnis", /* Creating directory -STDOUT*/
"Konfiguration", /* Configuration Values -STDOUT*/
@@ -254,7 +254,7 @@
"Read only one mail from input",
"Autor", /* author -HTML*/
"Datum", /* date -HTML*/
- "Subject", /* subject -HTML*/
+ "Betreff", /* subject -HTML*/
"Mail actions", /* Mail actions (MA) header -HTML*/
"mail a new topic", /* MA New Message -HTML*/
"respond to this message", /* MA Reply -HTML*/
diff -ur hypermail-2b30/src/parse.c hypermail-2b30/src/parse.c
--- hypermail-2b30/src/parse.c Thu Jun 8 00:10:44 2000
+++ hypermail-2b30/src/parse.c Sun Jan 28 16:05:56 2001
@@ -998,6 +998,7 @@
char *dir, int inlinehtml, /* if HTML should be inlined */
int startnum)
{
+
FILE *fp;
char *date = NULL;
char *subject = NULL;
@@ -1307,7 +1308,14 @@
file_created = MAKE_FILE; /* please make one */
}
}
+ else if (!strncasecmp(head->line, "Content-Base:", 13)) {
+ char *ptr = head->line + 13;
+ content=CONTENT_IGNORE;
+ /* we must make sure this is not parsed more times
+ than this */
+ head->parsedheader = TRUE;
+ }
else if (!strncasecmp(head->line, "Content-Type:", 13)) {
char *ptr = head->line + 13;
#define DISP_HREF 1
@@ -1994,7 +2002,7 @@
else
fname = FILE_SUFFIXER;
- binname = maprintf("%s%c%.2d-%s",
+ binname = maprintf("%s%c%05d-%s",
att_dir, PATH_SEPARATOR,
att_counter, fname);
/* @@ move this one up */
diff -ur hypermail-2b30/src/print.c hypermail-2b30/src/print.c
--- hypermail-2b30/src/print.c Thu Jun 8 00:11:32 2000
+++ hypermail-2b30/src/print.c Sat Feb 3 23:14:09 2001
@@ -75,8 +75,9 @@
if (set_mailcommand) {
if (set_hmail) {
- ptr = makemailcommand("mailto:$TO", set_hmail, "", "");
- fprintf(fp, "<th><a href=\"%s\">%s</a></th>\n",
+ ptr = makemailcommand(set_mailcommand, set_hmail, "", "");
+ if (strcmp(ptr, "NONE")!=0)
+ fprintf(fp, "<th><a href=\"%s\">%s</a></th>\n",
ptr ? ptr : "", lang[MSG_NEW_MESSAGE]);
if (ptr)
free(ptr);
@@ -86,7 +87,8 @@
ptr = makemailcommand(set_mailcommand, set_hmail,
currentid, cursub);
- fprintf(fp, "<th><a href=\"%s\">%s</a></th>\n",
+ if (strcmp(ptr, "NONE")!=0)
+ fprintf(fp, "<th><a href=\"%s\">%s</a></th>\n",
ptr ? ptr : "", lang[MSG_REPLY]);
if (ptr)
free(ptr);
@@ -498,6 +500,7 @@
}
else {
if (inheader) {
+ insig=0;
if (set_showhtml) {
if (pre) {
fprintf(fp, "</pre>\n");
@@ -756,7 +759,7 @@
#endif
if (!strcmp(email->name, email->emailaddr)) {
if (use_mailcommand) {
- ptr = makemailcommand(set_mailcommand,
+ ptr = makemailcommand(set_bodymailcommand,
email->emailaddr,
email->msgid, email->subject);
fprintf(fp, "<strong>From:</strong> <a href=\"%s\">", ptr ? ptr : "");
@@ -768,8 +771,8 @@
fprintf(fp, "<em>%s</em><br>\n", email->name);
}
else {
- if (use_mailcommand) {
- ptr = makemailcommand(set_mailcommand,
+ if (use_mailcommand && strcmp(email->emailaddr,"(no email)")!=0) {
+ ptr = makemailcommand(set_bodymailcommand,
email->emailaddr,
email->msgid, email->subject);
fprintf(fp, "<strong>From:</strong> %s (<a href=\"%s\">",
@@ -779,9 +782,12 @@
fprintf(fp, "<em>%s</em></a>)<br>\n", email->emailaddr);
}
else
+ {
fprintf(fp,
"<strong>From:</strong> %s (<em>%s</em>)<br>\n",
- email->name, email->emailaddr);
+ email->name,
+ (strcmp(email->emailaddr,"(no email)")!=0) ? email->emailaddr : "no email");
+ }
}
fprintf(fp, "<strong>Date:</strong> %s\n<p>\n",
getdatestr(email->date));
diff -ur hypermail-2b30/src/setup.c hypermail-2b30/src/setup.c
--- hypermail-2b30/src/setup.c Thu Jun 8 00:14:25 2000
+++ hypermail-2b30/src/setup.c Sun Jan 28 16:05:56 2001
@@ -47,6 +47,7 @@
int set_locktime;
char *set_mailcommand;
+char *set_bodymailcommand;
char *set_mailto;
char *set_hmail;
char *set_domainaddr;
@@ -219,6 +220,13 @@
"# This is an octal number representing the file permissions\n"
"# that new files are set to when they are created.\n"},
+ {"bodymailcommand", &set_bodymailcommand, MAILCOMMAND, CFG_STRING,
+ "# This specifies the mail command to use when converting\n"
+ "# email addresses to links. The variables $TO, $SUBJECT,\n"
+ "# and $ID can be used in constructing the command string.\n"
+ "# This command is used inside the mail bodies and in the\n"
+ "# From: line.\n"},
+
{"mailcommand", &set_mailcommand, MAILCOMMAND, CFG_STRING,
"# This specifies the mail command to use when converting\n"
"# email addresses to links. The variables $TO, $SUBJECT,\n"
@@ -622,6 +630,7 @@
printf("set_dateformat = %s\n",set_dateformat ? set_dateformat : "Not set");
printf("set_stripsubject = %s\n",set_stripsubject ? set_stripsubject : "Not set");
printf("set_mailcommand = %s\n",set_mailcommand ? set_mailcommand : "Not set");
+ printf("set_bodymailcommand = %s\n",set_bodymailcommand ? set_bodymailcommand : "Not set");
printf("set_mailto = %s\n",set_mailto ? set_mailto : "Not set");
printf("set_hmail = %s\n",set_hmail ? set_hmail : "Not set");
printf("set_domainaddr = %s\n",set_domainaddr ? set_domainaddr : "Not set");
diff -ur hypermail-2b30/src/setup.h hypermail-2b30/src/setup.h
--- hypermail-2b30/src/setup.h Thu Jun 8 00:14:25 2000
+++ hypermail-2b30/src/setup.h Sun Jan 28 16:05:56 2001
@@ -73,6 +73,7 @@
extern char *set_label;
extern char *set_mailcommand;
+extern char *set_bodymailcommand;
extern char *set_mailto;
extern char *set_hmail;
extern char *set_domainaddr;
diff -ur hypermail-2b30/src/string.c hypermail-2b30/src/string.c
--- hypermail-2b30/src/string.c Thu Jun 8 00:15:34 2000
+++ hypermail-2b30/src/string.c Sun Jan 28 16:05:56 2001
@@ -568,7 +568,7 @@
char *newcmd = NULL;
char *newcmd2;
- if (isre(subject, NULL))
+ if (subject && isre(subject, NULL))
hasre = 1;
else
hasre = 0;
@@ -576,9 +576,9 @@
convsubj = convchars(subject);
/* remade to deal with any-length strings */
- tmpsubject = maprintf("%s%s", (hasre) ? "" : "Re: ", convsubj);
+ /* tmpsubject = maprintf("%s%s", (hasre) ? "" : "Re: ", (convsubj) ? convsubj : ""); */
+ tmpsubject = maprintf("%s%s", (convsubj && !hasre) ? "Re: " : "", (convsubj) ? convsubj : "");
- if (tmpsubject) {
if ((cp = strrchr(email, ' ')) != NULL)
*cp = '\0';
@@ -587,7 +587,7 @@
newcmd2 = replace(newcmd, "$ID", id);
free(newcmd);
- newcmd = replace(newcmd2, "$SUBJECT", tmpsubject);
+ newcmd = replace(newcmd2, "$SUBJECT", (tmpsubject) ? tmpsubject : "");
free(newcmd2);
newcmd2 = replacechar(newcmd, '%', "%25");
@@ -602,7 +602,7 @@
newcmd = newcmd2; /* this is the new string */
free(tmpsubject);
- }
+
free(convsubj);
return newcmd;
}
@@ -678,7 +678,7 @@
ptr-email, email, at, mailbuff);
if (valid_root_domain(mailaddr)) {
- char *mailcmd = makemailcommand(set_mailcommand,
+ char *mailcmd = makemailcommand(set_bodymailcommand,
mailaddr, mid,
msubject);
msnprintf(tempbuff, sizeof(tempbuff),
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic