diff --git a/src/elogd.c b/src/elogd.c
index 1b0a8bd9..4c8012b4 100755
--- a/src/elogd.c
+++ b/src/elogd.c
@@ -6,6 +6,9 @@
Contents: Web server program for Electronic Logbook ELOG
$Log$
+ Revision 1.217 2004/01/29 09:41:28 midas
+ Implemented CSV output
+
Revision 1.216 2004/01/28 15:27:18 midas
Version 2.5.0
@@ -4240,7 +4243,7 @@ void rsprintf(const char *format, ...)
void flush_return_buffer()
{
- send(_sock, return_buffer, strlen_retbuf + 1, 0);
+ send(_sock, return_buffer, strlen_retbuf, 0);
memset(return_buffer, 0, return_buffer_size);
strlen_retbuf = 0;
}
@@ -4738,6 +4741,26 @@ void show_http_header(BOOL expires)
rsprintf("\r\n");
}
+void show_plain_header(int size)
+{
+ /* header */
+ rsprintf("HTTP/1.1 200 Document follows\r\n");
+ rsprintf("Server: ELOG HTTP %s\r\n", VERSION);
+ rsprintf("Accept-Ranges: bytes\r\n");
+
+ if (use_keepalive) {
+ rsprintf("Connection: Keep-Alive\r\n");
+ rsprintf("Keep-Alive: timeout=60, max=10\r\n");
+ }
+
+ rsprintf("Pragma: no-cache\r\n");
+ rsprintf("Expires: Fri, 01 Jan 1983 00:00:00 GMT\r\n");
+ rsprintf("Content-Type: text/plain\r\n");
+ if (size)
+ rsprintf("Content-Length: %d\r\n", size);
+ rsprintf("\r\n");
+}
+
void show_html_header(LOGBOOK * lbs, BOOL expires, char *title)
{
char css[256], str[256];
@@ -6711,6 +6734,13 @@ void show_find_form(LOGBOOK * lbs)
rsprintf("%s \n",
loc("Display threads"));
+ if (equal_ustring(mode, "CSV"))
+ rsprintf("%s \n",
+ loc("Display comma-separated values (CSV)"));
+ else
+ rsprintf("%s \n",
+ loc("Display comma-separated values (CSV)"));
+
rsprintf("\n");
rsprintf("
%s: ", loc("Options"));
@@ -8091,26 +8121,7 @@ int show_download_page(LOGBOOK * lbs, char *path)
message[size] = 0;
}
- /* header */
- rsprintf("HTTP/1.1 200 Document follows\r\n");
- rsprintf("Server: ELOG HTTP %s\r\n", VERSION);
- rsprintf("Accept-Ranges: bytes\r\n");
-
- /*
- time(&now);
- now += (int) (3600*3);
- gmt = gmtime(&now);
- strftime(str, sizeof(str), "%A, %d-%b-%y %H:%M:%S GMT", gmt);
- rsprintf("Expires: %s\r\n", str);
- */
-
- if (use_keepalive) {
- rsprintf("Connection: Keep-Alive\r\n");
- rsprintf("Keep-Alive: timeout=60, max=10\r\n");
- }
-
- rsprintf("Content-Type: text/plain\r\n");
- rsprintf("Content-Length: %d\r\n\r\n", size);
+ show_plain_header(size);
/* increase return buffer size if file too big */
if (size > return_buffer_size - (int) strlen(return_buffer)) {
@@ -9006,7 +9017,12 @@ void synchronize_logbook(LOGBOOK * lbs, BOOL bcron)
if (!bcron) {
rsprintf("%s", lbs->name_enc, lbs->name);
+
+ if (getcfg_topgroup())
+ sprintf(loc_ref, "%s", lbs->name_enc, lbs->name);
+ else
+ sprintf(loc_ref, "%s", lbs->name_enc, lbs->name);
+
sprintf(str, loc("Synchronizing logbook %s with server \"%s\""), loc_ref,
list[index]);
rsprintf("| %s | \n", str);
@@ -9213,8 +9229,15 @@ void synchronize_logbook(LOGBOOK * lbs, BOOL bcron)
logf(lbs, "Error receiving message: %s", error_str);
else
rsprintf("Error receiving message: %s\n", error_str);
- } else if (!bcron)
- rsprintf("ID%d:\tRemote entry received\n", message_id);
+ } else if (!bcron) {
+
+ if (getcfg_topgroup())
+ rsprintf("ID%d:\t", lbs->name_enc, message_id, message_id);
+ else
+ rsprintf("ID%d:\t", lbs->name_enc, message_id, message_id);
+
+ rsprintf("%s\n", loc("Remote entry received"));
+ }
md5_cache[i_cache].message_id = -1;
@@ -9366,8 +9389,15 @@ void synchronize_logbook(LOGBOOK * lbs, BOOL bcron)
logf(lbs, "Error receiving message: %s", error_str);
else
rsprintf("Error receiving message: %s\n", error_str);
- } else if (!bcron)
- rsprintf("ID%d:\tRemote entry received\n", message_id);
+ } else if (!bcron) {
+
+ if (getcfg_topgroup())
+ rsprintf("ID%d:\t", lbs->name_enc, message_id, message_id);
+ else
+ rsprintf("ID%d:\t", lbs->name_enc, message_id, message_id);
+
+ rsprintf("%s\n", loc("Remote entry received"));
+ }
} else {
@@ -10651,7 +10681,7 @@ void show_elog_list(LOGBOOK * lbs, INT past_n, INT last_n, INT page_n)
char mode[80];
char menu_str[1000], menu_item[MAX_N_LIST][NAME_LENGTH];
char *p, *pt, *pt1, *pt2;
- BOOL show_attachments, threaded, mode_commands, expand, filtering, disp_filter;
+ BOOL show_attachments, threaded, csv, mode_commands, expand, filtering, disp_filter;
time_t ltime, ltime_start, ltime_end, now;
struct tm tms, *ptms;
MSG_LIST *msg_list;
@@ -10757,12 +10787,18 @@ void show_elog_list(LOGBOOK * lbs, INT past_n, INT last_n, INT page_n)
strcpy(mode, "Full");
}
+ threaded = equal_ustring(mode, "threaded");
+ csv = equal_ustring(mode, "CSV");
+
+ if (csv) {
+ page_n = -1; /* display all pages */
+ show_attachments = FALSE; /* hide attachments */
+ }
+
/* supersede mode if in parameter */
if (*getparam("attach"))
show_attachments = (*getparam("attach") > 0);
- threaded = equal_ustring(mode, "threaded");
-
/*---- convert dates to ltime ----*/
time(&now);
@@ -11197,346 +11233,365 @@ void show_elog_list(LOGBOOK * lbs, INT past_n, INT last_n, INT page_n)
} else
sprintf(str, "ELOG %s", lbs->name);
- show_standard_header(lbs, TRUE, str, NULL);
+ if (csv) {
- /*---- title ----*/
+ /* no menus and tables */
+ show_plain_header(0);
- strcpy(str, ", ");
- if (past_n == 1)
- strcat(str, loc("Last day"));
- else if (past_n > 1)
- sprintf(str + strlen(str), loc("Last %d days"), past_n);
- else if (last_n)
- sprintf(str + strlen(str), loc("Last %d entries"), last_n);
- else if (page_n == -1)
- sprintf(str + strlen(str), loc("all entries"));
- else if (page_n)
- sprintf(str + strlen(str), loc("Page %d of %d"), page_n, (n_msg - 1) / n_page + 1);
- if (strlen(str) == 2)
- str[0] = 0;
-
- if (printable)
- show_standard_title(lbs->name, str, 1);
- else
- show_standard_title(lbs->name, str, 0);
-
- /*---- menu buttons ----*/
-
- if (!printable) {
- rsprintf(" \n\n");
- }
+ /*---- find menu text ----*/
- /*---- find menu text ----*/
+ if (getcfg(lbs->name, "find menu text", str) && !printable) {
+ FILE *f;
+ char file_name[256], *buf;
- if (getcfg(lbs->name, "find menu text", str) && !printable) {
- FILE *f;
- char file_name[256], *buf;
+ rsprintf("|
|