diff --git a/src/elogd.c b/src/elogd.c
index bdf73553..58fd34ac 100755
--- a/src/elogd.c
+++ b/src/elogd.c
@@ -6,6 +6,9 @@
Contents: Web server program for Electronic Logbook ELOG
$Log$
+ Revision 1.418 2004/07/30 20:47:57 midas
+ Fixed wrong link for deleting entries during synchronization
+
Revision 1.417 2004/07/30 19:51:10 midas
Improved error reporting by Recai Oktas
@@ -11368,7 +11371,7 @@ void submit_config(LOGBOOK * lbs, char *server, char *buffer, char *error_str)
void receive_config(LOGBOOK * lbs, char *server, char *error_str)
{
char str[256], pwd[256], *buffer, *p;
- int status;
+ int status, version;
error_str[0] = pwd[0] = 0;
@@ -11386,6 +11389,24 @@ void receive_config(LOGBOOK * lbs, char *server, char *error_str)
return;
}
+ /* check version */
+ p = strstr(buffer, "ELOG HTTP ");
+ if (!p) {
+ sprintf(error_str, "Remote server is not an ELOG server");
+ free(buffer);
+ return;
+ }
+ version = atoi(p + 10) * 100 + atoi(p + 12) * 10 + atoi(p + 14);
+ if (version < 254) {
+ strlcpy(str, p+10, 10);
+ if (strchr(str, '\r'))
+ *strchr(str, '\r') = 0;
+
+ sprintf(error_str, "Incorrect remote ELOG server version %s, must be 2.5.4 or later", str);
+ free(buffer);
+ return;
+ }
+
/* evaluate status */
p = strchr(buffer, ' ');
if (p == NULL) {
@@ -11393,6 +11414,7 @@ void receive_config(LOGBOOK * lbs, char *server, char *error_str)
*strchr(str, '?') = 0;
sprintf(error_str, "Received invalid response from elogd server at http://%s",
str);
+ free(buffer);
return;
}
p++;
@@ -11672,7 +11694,7 @@ void mprint(LOGBOOK * lbs, int mode, char *str)
eputs(str);
}
-void synchronize_logbook(LOGBOOK * lbs, int mode)
+void synchronize_logbook(LOGBOOK * lbs, int mode, BOOL sync_all)
{
int index, i, j, i_msg, i_remote, i_cache, n_remote, n_cache, nserver,
remote_id, exist_remote, exist_cache, message_id, max_id;
@@ -12384,8 +12406,12 @@ void synchronize_logbook(LOGBOOK * lbs, int mode)
if (getcfg_topgroup())
rsprintf("
", lbs->name_enc);
- else
- rsprintf("
", lbs->name_enc);
+ else {
+ if (sync_all)
+ rsprintf("
", lbs->name_enc);
+ else
+ rsprintf("
", lbs->name_enc);
+ }
if (n_delete > 1)
rsprintf(loc("Click here to delete %s entries"), n_delete);
@@ -12440,10 +12466,10 @@ void synchronize(LOGBOOK * lbs, int mode)
}
}
- synchronize_logbook(&lb_list[i], mode);
+ synchronize_logbook(&lb_list[i], mode, TRUE);
}
} else
- synchronize_logbook(lbs, mode);
+ synchronize_logbook(lbs, mode, FALSE);
if (mode == SYNC_HTML) {
rsprintf("