diff --git a/src/elogd.c b/src/elogd.c
index 973cdd2b..c04bf84c 100755
--- a/src/elogd.c
+++ b/src/elogd.c
@@ -6,6 +6,9 @@
Contents: Web server program for Electronic Logbook ELOG
$Log$
+ Revision 1.494 2004/10/13 20:15:06 midas
+ Use rsputs3 for proper display of HTML logbook entries
+
Revision 1.493 2004/10/13 18:21:49 midas
Fixed compiler warning
@@ -2192,6 +2195,10 @@ INT sendmail(LOGBOOK * lbs, char *smtp_host, char *from, char *to,
offset = (-(int) timezone);
if (ts->tm_isdst)
offset += 3600;
+ if (verbose) {
+ snprintf(str, strsize - 1, "timezone: %d, offset: %d", (int) timezone, (int) offset);
+ efputs(str);
+ }
snprintf(str, strsize - 1, "Date: %s %+03d%02d\r\n", buf, (int) (offset / 3600),
(int) ((abs((int) offset) / 60) % 60));
send(s, str, strlen(str), 0);
@@ -5200,7 +5207,7 @@ void rsputs2(const char *str)
if (strncmp(str + i, key_list[l], strlen(key_list[l])) == 0) {
p = (char *) (str + i + strlen(key_list[l]));
i += strlen(key_list[l]);
- for (k = 0; *p && strcspn(p, " \t\n\r({[)}]") && k < (int) sizeof(link); k++, i++)
+ for (k = 0; *p && strcspn(p, " \t\n\r({[)}]\"") && k < (int) sizeof(link); k++, i++)
link[k] = *p++;
link[k] = 0;
i--;
@@ -8200,13 +8207,15 @@ void show_edit_form(LOGBOOK * lbs, int message_id, BOOL breply, BOOL bedit, BOOL
rsprintf(str);
}
- rsputs(text);
+ /* use rsputs3 which just converts "<", ">", "&", "\"" to > etc. */
+ /* otherwise some HTML statments would break the page syntax */
+ rsputs3(text);
if (getcfg(lbs->name, "Append on edit", str, sizeof(str))) {
strsubst(str, slist, svalue, j);
while (strstr(str, "\\n"))
memcpy(strstr(str, "\\n"), "\r\n", 2);
- rsprintf(str);
+ rsputs3(str);
}
}
} else if (breply) {
@@ -8221,7 +8230,7 @@ void show_edit_form(LOGBOOK * lbs, int message_id, BOOL breply, BOOL bedit, BOOL
strsubst(str, slist, svalue, j);
while (strstr(str, "\\n"))
memcpy(strstr(str, "\\n"), "\r\n", 2);
- rsprintf(str);
+ rsputs3(str);
}
p = text;
@@ -8235,11 +8244,11 @@ void show_edit_form(LOGBOOK * lbs, int message_id, BOOL breply, BOOL bedit, BOOL
*strchr(p, '\n') = 0;
if (encoding[0] == 'H') {
- rsputs2(reply_string);
+ rsputs3(reply_string);
rsprintf("%s
\n", p);
} else {
rsputs(reply_string);
- rsputs2(p);
+ rsputs3(p);
rsprintf("\n");
}
@@ -8248,11 +8257,11 @@ void show_edit_form(LOGBOOK * lbs, int message_id, BOOL breply, BOOL bedit, BOOL
p++;
} else {
if (encoding[0] == 'H') {
- rsputs2(reply_string);
+ rsputs3(reply_string);
rsprintf("%s
\n", p); } else { rsputs(reply_string); - rsputs2(p); + rsputs3(p); rsprintf("\n\n"); } @@ -8271,7 +8280,7 @@ void show_edit_form(LOGBOOK * lbs, int message_id, BOOL breply, BOOL bedit, BOOL strsubst(str, slist, svalue, j); while (strstr(str, "\\n")) memcpy(strstr(str, "\\n"), "\r\n", 2); - rsprintf(str); + rsputs3(str); } } } @@ -8297,14 +8306,14 @@ void show_edit_form(LOGBOOK * lbs, int message_id, BOOL breply, BOOL bedit, BOOL read(fh, buffer, length); buffer[length] = 0; close(fh); - rsputs(buffer); + rsputs3(buffer); xfree(buffer); } else { j = build_subst_list(lbs, slist, svalue, attrib, TRUE); strsubst(str, slist, svalue, j); while (strstr(str, "\\n")) memcpy(strstr(str, "\\n"), "\r\n", 2); - rsputs(str); + rsputs3(str); } } @@ -18602,6 +18611,7 @@ void interprete(char *lbook, char *path) strlcpy(css, str, sizeof(css)); else if (lbs == NULL && getcfg("global", "CSS", str, sizeof(str))) strlcpy(css, str, sizeof(css)); + /* check if guest access */ if (!(getcfg(lbs->name, "Guest menu commands", str, sizeof(str)) && *getparam("unm") == 0 && !isparam("wpwd")