diff --git a/checklist.txt b/checklist.txt index 39508e20..08b7faa1 100755 --- a/checklist.txt +++ b/checklist.txt @@ -5,7 +5,7 @@ On PC6562: - Put all new options in doc/config.html - Increse version in elogd.c -- Do the same in doc/index.html +- Do the same in doc/index.html and index_d.html - Modify ChangeLog - Add release date to ChangeLog - Do a "make indent" diff --git a/doc/ChangeLog b/doc/ChangeLog index 95c072b7..586809a5 100755 --- a/doc/ChangeLog +++ b/doc/ChangeLog @@ -1,3 +1,31 @@ +Version 2.7.1, released Jan. 22th, 2008 +======================================= + +- Set current encoding to ELCode if 'allowed encoding = 3' +- Improved sorting speed when 100000's entries are present +- Fixed bug with truncated entries +- Implemented 'sort attributes = ID' +- Changed default encoding to 2 +- Do not translate 'activate' (gives problems by email program encoding) +- Implemented pipelining +- Changed default for allowed encoding +- Fixed possible buffer overflow +- Fixed possible endless loop in replace_inline_img +- Convert "elog:/" to "/" for HTML encoding +- Display icon comment also in threaded and summary view +- Fixed   & co. in summary view +- Fixed umlaute in summary display +- Added search button for quick filters for MSIE +- Upgraded to FCKeditor 2.5beta +- Implemented 'Use Email URL' +- Fixed bug with --+Text+-- +- Implement InsertLink +- Fixed double sent attachments in email notifications +- Added CTRL-N for new list item, thanks to Bill Pier +- Changed resource directoy to be removed on uninstall +- Added FCKeditor extraction to Makefile +- Fixed email notification with HTML inline images + Version 2.7.0, released Oct. 25th, 2007 ======================================= diff --git a/doc/index.html b/doc/index.html index 70128d4c..4ed29216 100755 --- a/doc/index.html +++ b/doc/index.html @@ -25,7 +25,7 @@  [Links]  * 

Home of the Electronic Logbook package by Stefan Ritt

-
Current version is : 2.7.0
+
Current version is : 2.7.1
certificate
diff --git a/doc/index_d.html b/doc/index_d.html index 772b8689..d5e5e918 100644 --- a/doc/index_d.html +++ b/doc/index_d.html @@ -25,7 +25,7 @@  [Links]  * 

Home of the Electronic Logbook package by Stefan Ritt

-
Current version is : 2.7.0
+
Current version is : 2.7.1
certificate diff --git a/resources/eloglang.swedish b/resources/eloglang.swedish index 3d85cf48..25b7de41 100644 --- a/resources/eloglang.swedish +++ b/resources/eloglang.swedish @@ -437,7 +437,6 @@ unspecified = ospecifiserad To subscribe to any logbook, click on 'Config' in that logbook = För att prenumerera på en loggbok, klicka på 'Konfigurera' i den loggboken ELOG XML import = ELOG XML-import Derive attributes from XML file = Hämta attribut från XML-fil -Keep original entry IDs (may overwrite existing entries, but is required if imported entries contain replies) = Behåll original post-ID (kan skriva över befintliga poster, men krävs om importerade poster innehåller svar) XML filename = XML filnamn Invalid date format = Ogiltigt datumformat XML file does not contain %s element = XML-filen innehåller inte %s element diff --git a/src/elog.c b/src/elog.c index d1af6924..0805696d 100755 --- a/src/elog.c +++ b/src/elog.c @@ -265,7 +265,7 @@ void convert_crlf(char *buffer, int bufsize) p = buffer; while ((p = strstr(p, "\\n")) != NULL) { - if ((int)p - (int)buffer < bufsize-2) { + if ((int) p - (int) buffer < bufsize - 2) { *(p++) = '\r'; *(p++) = '\n'; } diff --git a/src/elogd.c b/src/elogd.c index 0ca52ac0..d88a6378 100755 --- a/src/elogd.c +++ b/src/elogd.c @@ -10,7 +10,7 @@ \********************************************************************/ /* Version of ELOG */ -#define VERSION "2.7.0" +#define VERSION "2.7.1" char svn_revision[] = "$Id$"; /* ELOG identification */ @@ -4374,7 +4374,8 @@ int el_retrieve(LOGBOOK * lbs, /*------------------------------------------------------------------*/ -int el_submit_attachment(LOGBOOK * lbs, const char *afilename, const char *buffer, int buffer_size, char *full_name) +int el_submit_attachment(LOGBOOK * lbs, const char *afilename, const char *buffer, int buffer_size, + char *full_name) { char file_name[MAX_PATH_LENGTH], ext_file_name[MAX_PATH_LENGTH + 100], str[MAX_PATH_LENGTH], *p; int fh; @@ -5522,8 +5523,8 @@ void replace_inline_img(char *str) pn++; if (*pn == '>') pn++; - sprintf(p, "", index-1); - memmove(p+strlen(p), pn, strlen(pn)+1); + sprintf(p, "", index - 1); + memmove(p + strlen(p), pn, strlen(pn) + 1); p++; } else p++; @@ -6559,7 +6560,7 @@ void compose_base_url(LOGBOOK * lbs, char *base_url, int size, BOOL email_notify /* return URL for elogd with optional logbook subdirectory */ { if (email_notify) - if (getcfg(lbs->name, "Use Email URL", base_url, size)) + if (getcfg(lbs->name, "Use Email URL", base_url, size)) return; if (!getcfg("global", "URL", base_url, size)) { @@ -7172,7 +7173,8 @@ void show_html_header(LOGBOOK * lbs, BOOL expires, char *title, BOOL close_head, rsprintf("\n"); } -void show_browser(char *browser) { +void show_browser(char *browser) +{ if (stristr(browser, "opera")) rsprintf("var browser = \"Opera\";\n"); else if (stristr(browser, "konqueror")) @@ -9013,13 +9015,13 @@ void show_edit_form(LOGBOOK * lbs, int message_id, BOOL breply, BOOL bedit, BOOL else allowed_encoding = 7; - enc_selected = 2; /* Default is HTML */ + enc_selected = 2; /* Default is HTML */ - if (allowed_encoding == 2) /* select ELCode if the only one allowed */ + if (allowed_encoding == 2) /* select ELCode if the only one allowed */ enc_selected = 0; - else if (allowed_encoding == 1) /* select plain if the only one allowed */ + else if (allowed_encoding == 1) /* select plain if the only one allowed */ enc_selected = 1; - else if (allowed_encoding == 3) /* select ELCode if only plain and ELCode allowed */ + else if (allowed_encoding == 3) /* select ELCode if only plain and ELCode allowed */ enc_selected = 0; /* Overwrite from config file */ @@ -16588,16 +16590,16 @@ void display_line(LOGBOOK * lbs, int message_id, int number, char *mode, else if (attr_flags[i] & AF_ICON) { rsprintf("", sclass); - + sprintf(str, "Icon comment %s", attrib[i]); getcfg(lbs->name, str, comment, sizeof(comment)); if (!comment[0]) strcpy(comment, attrib[i]); if (attrib[i][0]) - rsprintf("\n\"%s\"", attrib[i], - comment, comment); - + rsprintf("\n\"%s\"", attrib[i], + comment, comment); + rsprintf(" "); } @@ -18884,7 +18886,7 @@ void show_elog_list(LOGBOOK * lbs, int past_n, int last_n, int page_n, BOOL defa continue; } } - } // if (filtering) + } // if (filtering) /* evaluate "sort attributes" */ if (sort_attributes) { @@ -18908,8 +18910,7 @@ void show_elog_list(LOGBOOK * lbs, int past_n, int last_n, int page_n, BOOL defa strlcat(msg_list[index].string, " ", sizeof(msg_list[index].string)); sprintf(str, "%08d", message_id); strlcat(msg_list[index].string, str, sizeof(msg_list[index].string)); - } - else if (strieq(sort_attr[i], loc("Logbook"))) { + } else if (strieq(sort_attr[i], loc("Logbook"))) { strlcpy(msg_list[index].string, msg_list[index].lbs->name, 256); } } @@ -18947,7 +18948,7 @@ void show_elog_list(LOGBOOK * lbs, int past_n, int last_n, int page_n, BOOL defa /*---- in threaded mode, set date of latest entry of thread ----*/ - if (threaded) { + if (threaded) { for (index = 0; index < n_msg; index++) { if (!msg_list[index].lbs) continue; @@ -18984,7 +18985,7 @@ void show_elog_list(LOGBOOK * lbs, int past_n, int last_n, int page_n, BOOL defa page_mid_head = message_id; /* search message head in list */ - for (j = 0 ; j < n_msg ; j++) + for (j = 0; j < n_msg; j++) if (msg_list[j].lbs == msg_list[index].lbs && msg_list[j].index == i) break; @@ -20090,7 +20091,7 @@ void format_email_attachments(LOGBOOK * lbs, int message_id, int attachment_type base64_bufenc((unsigned char *) buffer, n, str); - if (length + (int)strlen(str) + 2 < size) { + if (length + (int) strlen(str) + 2 < size) { strcpy(mail_text + length, str); length += strlen(str); strcpy(mail_text + length, "\r\n"); @@ -20893,7 +20894,8 @@ int set_attributes(LOGBOOK * lbs, char attributes[][NAME_LENGTH], int n) int submit_elog_reply(LOGBOOK * lbs, int message_id, char attrib[MAX_N_ATTR][NAME_LENGTH], char *text) { int n_reply, i, status; - char str1[80], str2[80], att_file[MAX_ATTACHMENTS][256], reply_to[MAX_REPLY_TO * 10], list[MAX_N_ATTR][NAME_LENGTH]; + char str1[80], str2[80], att_file[MAX_ATTACHMENTS][256], reply_to[MAX_REPLY_TO * 10], + list[MAX_N_ATTR][NAME_LENGTH]; status = el_retrieve(lbs, message_id, NULL, attr_list, NULL, 0, NULL, NULL, NULL, reply_to, att_file, NULL, NULL); @@ -21419,8 +21421,7 @@ void submit_elog(LOGBOOK * lbs) sprintf(str, "elog:%d/", message_id); strsubst(p, TEXT_SIZE, "elog:/", str); el_submit(lbs, message_id, TRUE, date, attr_list, attrib, n_attr, - p, in_reply_to, reply_to, - encoding, att_file, TRUE, NULL); + p, in_reply_to, reply_to, encoding, att_file, TRUE, NULL); } /*---- email notifications ----*/ @@ -24274,8 +24275,9 @@ void show_uploader_finished(LOGBOOK * lbs) rsprintf(" {\n"); rsprintf(" if (opener.document.title == \"FCKeditor\") {\n"); rsprintf(" i = opener.parent.next_attachment;\n"); - rsprintf(" opener.FCKeditorAPI.GetInstance('Text').InsertHtml('\"%s\"');\n", - att + 14, base_url, ref); + rsprintf + (" opener.FCKeditorAPI.GetInstance('Text').InsertHtml('\"%s\"');\n", + att + 14, base_url, ref); rsprintf(" opener.parent.document.form1.inlineatt.value = '%s';\n", att); rsprintf(" opener.parent.document.form1.jcmd.value = 'Upload';\n"); rsprintf(" opener.parent.document.form1.submit();\n"); @@ -25537,16 +25539,16 @@ void decode_post(char *logbook, LOGBOOK * lbs, const char *string, const char *b string = strstr(p, boundary) + strlen(boundary); if (stricmp(item, "text") == 0) { - if ((int)string - (int)p > TEXT_SIZE) { + if ((int) string - (int) p > TEXT_SIZE) { sprintf(str, "Error: Entry text too big (%lu bytes). Please increase TEXT_SIZE and recompile elogd\n", - (unsigned long) ((int)string - (int)p)); + (unsigned long) ((int) string - (int) p)); show_error(str); return; } strlcpy(_mtext, p, sizeof(_mtext)); if (strstr(_mtext, boundary)) - *strstr(_mtext, boundary) = 0; + *strstr(_mtext, boundary) = 0; ptmp = _mtext + (strlen(_mtext) - 1); while (*ptmp == '-') *ptmp-- = 0; @@ -25555,7 +25557,7 @@ void decode_post(char *logbook, LOGBOOK * lbs, const char *string, const char *b } else { strlcpy(str, p, sizeof(str)); if (strstr(str, boundary)) - *strstr(str, boundary) = 0; + *strstr(str, boundary) = 0; ptmp = str + (strlen(str) - 1); while (*ptmp == '-') *ptmp-- = 0; @@ -25594,7 +25596,7 @@ char remote_host[N_MAX_CONNECTION][256]; int process_http_request(const char *request, int i_conn) { int i, n, authorized, header_length, content_length; - char str[1000], url[256], pwd[256], cl_pwd[256], format[256], + char str[1000], url[256], pwd[256], cl_pwd[256], format[256], cookie[256], boundary[256], list[1000], theme[256], host_list[MAX_N_LIST][NAME_LENGTH], logbook[256], logbook_enc[256], global_cmd[256]; char *p; @@ -25706,11 +25708,11 @@ int process_http_request(const char *request, int i_conn) strlcpy(str, p, sizeof(str)); if (strchr(str, '\r')) *strchr(str, '\r') = 0; - #ifdef OS_WINNT +#ifdef OS_WINNT rem_addr.S_un.S_addr = inet_addr(str); - #else +#else rem_addr.s_addr = inet_addr(str); - #endif +#endif if (getcfg("global", "Resolve host names", str, sizeof(str)) && atoi(str) == 1) { phe = gethostbyaddr((char *) &rem_addr, 4, PF_INET); @@ -25740,8 +25742,7 @@ int process_http_request(const char *request, int i_conn) return_length = 0; /* extract logbook */ - if (strchr(request, '/') == NULL || strchr(request, '\r') == NULL - || strstr(request, "HTTP") == NULL) { + if (strchr(request, '/') == NULL || strchr(request, '\r') == NULL || strstr(request, "HTTP") == NULL) { /* invalid request, make valid */ return process_http_request("GET / HTTP/1.0\r\n\r\n", i_conn); } @@ -25792,7 +25793,7 @@ int process_http_request(const char *request, int i_conn) strcpy(logbook_enc, logbook); url_decode(logbook); /* check for trailing '/' after logbook */ - if (strncmp(request, "POST", 4) != 0) { // fix for konqueror + if (strncmp(request, "POST", 4) != 0) { // fix for konqueror if (logbook[0] && *p == ' ') { if (!chkext(logbook, ".css") && !chkext(logbook, ".htm") && !chkext(logbook, ".gif") && !chkext(logbook, ".jpg") @@ -26067,7 +26068,7 @@ int process_http_request(const char *request, int i_conn) return 0; *(strstr(request, "HTTP/1") - 1) = 0; /* strip logbook from path */ - strlcpy(str, request+5, sizeof(str)); + strlcpy(str, request + 5, sizeof(str)); p = str; for (i = 0; *p && *p != '/' && *p != '?'; p++); while (*p && *p == '/') @@ -26163,12 +26164,12 @@ void send_return(const char *net_buffer, int _sock) send(_sock, return_buffer, return_length, 0); if (verbose > 1) { if (strrchr(net_buffer, '/')) - strlcpy(str, strrchr(net_buffer, '/')+1, sizeof(str)); + strlcpy(str, strrchr(net_buffer, '/') + 1, sizeof(str)); else str[0] = 0; eprintf("==== Return ================================\n"); if (chkext(net_buffer, ".gif") || chkext(net_buffer, ".jpg") - || chkext(net_buffer, ".png") || chkext(net_buffer, ".ico") + || chkext(net_buffer, ".png") || chkext(net_buffer, ".ico") || chkext(net_buffer, ".pdf") || return_length > 10000) eprintf("\n<%d bytes of %s>\n\n", return_length, str); else @@ -26177,7 +26178,7 @@ void send_return(const char *net_buffer, int _sock) } } } -} +} /*------------------------------------------------------------------*/ @@ -26608,7 +26609,7 @@ void server_loop(void) len = 0; more_requests = 0; - do { /* pipleline loop */ + do { /* pipleline loop */ header_length = 0; n_error = 0; return_length = -1; @@ -26624,13 +26625,13 @@ void server_loop(void) i = recv(_sock, net_buffer + len, net_buffer_size - len, 0); else break; - + /* abort if connection got broken */ if (i < 0) break; if (i > 0) len += i; - + /* check if net_buffer needs to be increased */ if (len == net_buffer_size) { net_buffer = xrealloc(net_buffer, net_buffer_size + 100000); @@ -26662,11 +26663,11 @@ void server_loop(void) pend = NULL; if (strncmp(net_buffer, "GET", 3) == 0 && strncmp(net_buffer, "POST", 4) != 0) { if (len > 4 && strstr(net_buffer, "\r\n\r\n") != NULL) { - pend = strstr(net_buffer, "\r\n\r\n")+4; + pend = strstr(net_buffer, "\r\n\r\n") + 4; break; } if (len > 6 && strstr(net_buffer, "\r\r\n\r\r\n") != NULL) { - pend = strstr(net_buffer, "\r\r\n\r\r\n")+6; + pend = strstr(net_buffer, "\r\r\n\r\r\n") + 6; break; } } else if (strncmp(net_buffer, "POST", 4) == 0) { @@ -26678,7 +26679,7 @@ void server_loop(void) strlcpy(logbook, str, sizeof(logbook)); strlcpy(logbook_enc, str, sizeof(logbook)); url_decode(logbook); - + /* extract content length */ if (strstr(net_buffer, "Content-Length:")) content_length = atoi(strstr(net_buffer, "Content-Length:") + 15); @@ -26752,19 +26753,19 @@ void server_loop(void) } } while (1); - + /* now process HTTP request and put the result into the return_buffer */ if (process_http_request(net_buffer, i_conn)) { /* send back the return_buffer to the browser */ send_return(net_buffer, _sock); } - + /* check if the net_buffer contains more than one request (pipelining) */ if (pend && *pend) { - memmove(net_buffer, pend, strlen(pend)+1); + memmove(net_buffer, pend, strlen(pend) + 1); more_requests = 1; - len -= (int)pend - (int)net_buffer; + len -= (int) pend - (int) net_buffer; } } while (more_requests);