diff --git a/src/elogd.c b/src/elogd.c
index 7f54a80e..3a39f560 100755
--- a/src/elogd.c
+++ b/src/elogd.c
@@ -6,6 +6,9 @@
Contents: Web server program for Electronic Logbook ELOG
$Log$
+ Revision 1.296 2004/03/15 20:07:34 midas
+ Conditional attributes get evaluated correctly during editing of existing entries
+
Revision 1.295 2004/03/15 08:02:46 midas
Fixed crashing elogd in threaded display
@@ -6413,17 +6416,26 @@ void show_edit_form(LOGBOOK * lbs, int message_id, BOOL breply, BOOL bedit, BOOL
/* evaluate conditional attributes */
condition[0] = 0;
- for (i = 0; i < lbs->n_attr; i++) {
- if (strchr(attrib[i], '{') && strchr(attrib[i], '}')) {
- strlcpy(str, strchr(attrib[i], '{') + 1, sizeof(str));
- if (*strchr(str, '}'))
- *strchr(str, '}') = 0;
+ for (index = 0; index < lbs->n_attr; index++) {
+ for (i = 0; i < MAX_N_LIST && attr_options[index][i][0]; i++) {
- if (condition[0] == 0)
- strlcpy(condition, str, sizeof(condition));
- else {
- strlcat(condition, ",", sizeof(condition));
- strlcat(condition, str, sizeof(condition));
+ if (strchr(attr_options[index][i], '{') && strchr(attr_options[index][i], '}')) {
+
+ strlcpy(str, attr_options[index][i], sizeof(str));
+ *strchr(str, '{') = 0;
+
+ if (strieq(str, attrib[index])) {
+ strlcpy(str, strchr(attr_options[index][i], '{') + 1, sizeof(str));
+ if (*strchr(str, '}'))
+ *strchr(str, '}') = 0;
+
+ if (condition[0] == 0)
+ strlcpy(condition, str, sizeof(condition));
+ else {
+ strlcat(condition, ",", sizeof(condition));
+ strlcat(condition, str, sizeof(condition));
+ }
+ }
}
}
}
@@ -6950,11 +6962,9 @@ void show_edit_form(LOGBOOK * lbs, int message_id, BOOL breply, BOOL bedit, BOOL
if (strieq(attr_options[index][i], attrib[index])
|| strieq(str, attrib[index]))
- rsprintf("