From c8d3f9ba84de1388f826d3bbb4c8a969b6f1f816 Mon Sep 17 00:00:00 2001 From: Stefan Ritt Date: Fri, 30 Jul 2004 20:47:57 +0000 Subject: [PATCH] Fixed wrong link for deleting entries during synchronization SVN revision: 1001 --- src/elogd.c | 62 ++++++++++++++++++++++++++++++++++------------------- 1 file changed, 40 insertions(+), 22 deletions(-) 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("