From f6ba2191eb68d376afdb196b31a1bba92f57fd3c Mon Sep 17 00:00:00 2001 From: ritt Date: Tue, 19 Nov 2019 17:13:02 +0100 Subject: [PATCH] Apply "restrict edit time" also to multi-edits --- src/elogd.c | 3300 ++++++++++++++++++++++++--------------------------- 1 file changed, 1571 insertions(+), 1729 deletions(-) diff --git a/src/elogd.c b/src/elogd.c index ddf5f829..1bf65689 100755 --- a/src/elogd.c +++ b/src/elogd.c @@ -43,8 +43,8 @@ const char *_git_revision = GIT_REVISION; BOOL running_as_daemon; /* Running as a daemon/service? */ int elog_tcp_port; /* Server's TCP port */ -static void (*printf_handler) (const char *); /* Handler to printf for logging */ -static void (*fputs_handler) (const char *); /* Handler to fputs for logging */ +static void (*printf_handler)(const char *); /* Handler to printf for logging */ +static void (*fputs_handler)(const char *); /* Handler to fputs for logging */ static FILE *current_output_stream = NULL; /* Currently used output stream */ char *return_buffer; @@ -90,116 +90,177 @@ LOGBOOK *lb_list = NULL; SSL *_ssl_con; #endif -char *mname[] = { "January", "February", "March", "April", "May", "June", "July", "August", "September", - "October", "November", "December" +char *mname[] = {"January", "February", "March", "April", "May", "June", "July", "August", "September", + "October", "November", "December" }; char attr_list[MAX_N_ATTR][NAME_LENGTH]; char attr_options[MAX_N_ATTR][MAX_N_LIST][NAME_LENGTH]; int attr_flags[MAX_N_ATTR]; -char attr_list_default[][NAME_LENGTH] = { "Author", "Type", "Category", "Subject", "" }; +char attr_list_default[][NAME_LENGTH] = {"Author", "Type", "Category", "Subject", ""}; -char attr_options_default[][MAX_N_LIST][NAME_LENGTH] = { {""}, {"Routine", "Other"}, -{"General", "Other"}, {""} +char attr_options_default[][MAX_N_LIST][NAME_LENGTH] = {{""}, + {"Routine", "Other"}, + {"General", "Other"}, + {""} }; -int attr_flags_default[] = { AF_REQUIRED, 0, 0, 0 }; +int attr_flags_default[] = {AF_REQUIRED, 0, 0, 0}; struct { char ext[32]; char type[80]; } filetype[] = { - { - ".AI", "application/postscript"}, { - ".ASC", "text/plain"}, { - ".BZ2", "application/x-bzip2"}, { - ".CFG", "text/plain"}, { - ".CHRT", "application/x-kchart"}, { - ".CONF", "text/plain"}, { - ".CSH", "application/x-csh"}, { - ".CSS", "text/css"}, { - ".DOC", "application/msword"}, { - ".DVI", "application/x-dvi"}, { - ".EPS", "application/postscript"}, { - ".GIF", "image/gif"}, { - ".GZ", "application/x-gzip"}, { - ".HTM", "text/html"}, { - ".HTML", "text/html"}, { - ".ICO", "image/x-icon"}, { - ".JPEG", "image/jpeg"}, { - ".JPG", "image/jpeg"}, { - ".JS", "application/x-javascript"}, { - ".KPR", "application/x-kpresenter"}, { - ".KSP", "application/x-kspread"}, { - ".KWD", "application/x-kword"}, { - ".MP3", "audio/mpeg"}, { - ".OGG", "application/x-ogg"}, { - ".PDF", "application/pdf"}, { - ".PNG", "image/png"}, { - ".PS", "application/postscript"}, { - ".RAM", "audio/x-pn-realaudio"}, { - ".RM", "audio/x-pn-realaudio"}, { - ".RM", "audio/x-pn-realaudio"}, { - ".RM", "audio/x-pn-realaudio"}, { - ".RPM", "application/x-rpm"}, { - ".RTF", "application/rtf"}, { - ".SH", "application/x-sh"}, { - ".SVG", "image/svg+xml"}, { - ".TAR", "application/x-tar"}, { - ".TCL", "application/x-tcl"}, { - ".TEX", "application/x-tex"}, { - ".TGZ", "application/x-gzip"}, { - ".TIF", "image/tiff"}, { - ".TIFF", "image/tiff"}, { - ".TXT", "text/plain"}, { - ".WAV", "audio/x-wav"}, { - ".XLS", "application/x-msexcel"}, { - ".XML", "text/xml"}, { - ".XSL", "text/xml"}, { - ".ZIP", "application/x-zip-compressed"}, { + { + ".AI", "application/postscript"}, + { + ".ASC", "text/plain"}, + { + ".BZ2", "application/x-bzip2"}, + { + ".CFG", "text/plain"}, + { + ".CHRT", "application/x-kchart"}, + { + ".CONF", "text/plain"}, + { + ".CSH", "application/x-csh"}, + { + ".CSS", "text/css"}, + { + ".DOC", "application/msword"}, + { + ".DVI", "application/x-dvi"}, + { + ".EPS", "application/postscript"}, + { + ".GIF", "image/gif"}, + { + ".GZ", "application/x-gzip"}, + { + ".HTM", "text/html"}, + { + ".HTML", "text/html"}, + { + ".ICO", "image/x-icon"}, + { + ".JPEG", "image/jpeg"}, + { + ".JPG", "image/jpeg"}, + { + ".JS", "application/x-javascript"}, + { + ".KPR", "application/x-kpresenter"}, + { + ".KSP", "application/x-kspread"}, + { + ".KWD", "application/x-kword"}, + { + ".MP3", "audio/mpeg"}, + { + ".OGG", "application/x-ogg"}, + { + ".PDF", "application/pdf"}, + { + ".PNG", "image/png"}, + { + ".PS", "application/postscript"}, + { + ".RAM", "audio/x-pn-realaudio"}, + { + ".RM", "audio/x-pn-realaudio"}, + { + ".RM", "audio/x-pn-realaudio"}, + { + ".RM", "audio/x-pn-realaudio"}, + { + ".RPM", "application/x-rpm"}, + { + ".RTF", "application/rtf"}, + { + ".SH", "application/x-sh"}, + { + ".SVG", "image/svg+xml"}, + { + ".TAR", "application/x-tar"}, + { + ".TCL", "application/x-tcl"}, + { + ".TEX", "application/x-tex"}, + { + ".TGZ", "application/x-gzip"}, + { + ".TIF", "image/tiff"}, + { + ".TIFF", "image/tiff"}, + { + ".TXT", "text/plain"}, + { + ".WAV", "audio/x-wav"}, + { + ".XLS", "application/x-msexcel"}, + { + ".XML", "text/xml"}, + { + ".XSL", "text/xml"}, + { + ".ZIP", "application/x-zip-compressed"}, + { - /* Open XML file types */ - ".DOCM", "application/vnd.ms-word.document.macroEnabled.12"}, { - ".DOCX", "application/vnd.openxmlformats-officedocument.wordprocessingml.document"}, { - ".DOTM", "application/vnd.ms-word.template.macroEnabled.12"}, { - ".DOTX", "application/vnd.openxmlformats-officedocument.wordprocessingml.template"}, { - ".PPSM", "application/vnd.ms-powerpoint.slideshow.macroEnabled.12"}, { - ".PPSX", "application/vnd.openxmlformats-officedocument.presentationml.slideshow"}, { - ".PPTM", "application/vnd.ms-powerpoint.presentation.macroEnabled.12"}, { - ".PPTX", "application/vnd.openxmlformats-officedocument.presentationml.presentation"}, { - ".XLSB", "application/vnd.ms-excel.sheet.binary.macroEnabled.12"}, { - ".XLSM", "application/vnd.ms-excel.sheet.macroEnabled.12"}, { - ".XLSX", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"}, { - ".XPS", "application/vnd.ms-xpsdocument"}, { + /* Open XML file types */ + ".DOCM", "application/vnd.ms-word.document.macroEnabled.12"}, + { + ".DOCX", "application/vnd.openxmlformats-officedocument.wordprocessingml.document"}, + { + ".DOTM", "application/vnd.ms-word.template.macroEnabled.12"}, + { + ".DOTX", "application/vnd.openxmlformats-officedocument.wordprocessingml.template"}, + { + ".PPSM", "application/vnd.ms-powerpoint.slideshow.macroEnabled.12"}, + { + ".PPSX", "application/vnd.openxmlformats-officedocument.presentationml.slideshow"}, + { + ".PPTM", "application/vnd.ms-powerpoint.presentation.macroEnabled.12"}, + { + ".PPTX", "application/vnd.openxmlformats-officedocument.presentationml.presentation"}, + { + ".XLSB", "application/vnd.ms-excel.sheet.binary.macroEnabled.12"}, + { + ".XLSM", "application/vnd.ms-excel.sheet.macroEnabled.12"}, + { + ".XLSX", "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"}, + { + ".XPS", "application/vnd.ms-xpsdocument"}, + { -"", ""},}; + "", ""},}; struct { char language[32]; char abbrev[32]; } lang_table[] = { - - { "brazilian", "br"}, - { "bulgarian", "bg"}, - { "czech", "cz"}, - { "danish", "dk"}, - { "dutch", "nl"}, - { "french", "fr"}, - { "german", "de"}, - { "indonesia", "id"}, - { "italian", "it"}, - { "japanese", "jp"}, - { "polish", "pl"}, - { "ru_CP1251", "ru"}, - { "slowak", "sk"}, - { "spanish", "es"}, - { "swedish", "se"}, - { "turkish", "tr"}, - { "zh_CN-GB2314", "zh"}, - { "zh_CN-UTF8", "zh"}, - { "", "" } + + {"brazilian", "br"}, + {"bulgarian", "bg"}, + {"czech", "cz"}, + {"danish", "dk"}, + {"dutch", "nl"}, + {"french", "fr"}, + {"german", "de"}, + {"indonesia", "id"}, + {"italian", "it"}, + {"japanese", "jp"}, + {"polish", "pl"}, + {"ru_CP1251", "ru"}, + {"slowak", "sk"}, + {"spanish", "es"}, + {"swedish", "se"}, + {"turkish", "tr"}, + {"zh_CN-GB2314", "zh"}, + {"zh_CN-UTF8", "zh"}, + {"", ""} }; char _convert_cmd[256]; @@ -224,8 +285,7 @@ long _timezone; #define my_toupper(_c) ( ((_c)>='a' && (_c)<='z') ? ((_c)-'a'+'A') : (_c) ) #define my_tolower(_c) ( ((_c)>='A' && (_c)<='Z') ? ((_c)-'A'+'a') : (_c) ) -BOOL strieq(const char *str1, const char *str2) -{ +BOOL strieq(const char *str1, const char *str2) { char c1, c2; if (str1 == NULL && str2 == NULL) @@ -248,8 +308,7 @@ BOOL strieq(const char *str1, const char *str2) return TRUE; } -BOOL strnieq(const char *str1, const char *str2, int n) -{ +BOOL strnieq(const char *str1, const char *str2, int n) { char c1, c2; int i; @@ -273,8 +332,7 @@ BOOL strnieq(const char *str1, const char *str2, int n) return TRUE; } -char *stristr(const char *str, const char *pattern) -{ +char *stristr(const char *str, const char *pattern) { char c1, c2, *ps, *pp; if (str == NULL || pattern == NULL) @@ -316,8 +374,7 @@ void strextract(const char *str, char delim, char *extr, int size) extr[i] = 0; } -static BOOL chkext(const char *str, const char *ext) -{ +static BOOL chkext(const char *str, const char *ext) { int extl, strl; char c1, c2; @@ -338,25 +395,21 @@ static BOOL chkext(const char *str, const char *ext) return TRUE; } -int get_verbose(void) -{ +int get_verbose(void) { return _verbose_level; } -void set_verbose(int v) -{ +void set_verbose(int v) { _verbose_level = v; } /* workaround for some gcc versions bug for "%c" format (see strftime(3) */ -size_t my_strftime(char *s, size_t max, const char *fmt, const struct tm *tm) -{ +size_t my_strftime(char *s, size_t max, const char *fmt, const struct tm *tm) { return strftime(s, max, fmt, tm); } /* signal save read function */ -int my_read(int fh, void *buffer, unsigned int bytes) -{ +int my_read(int fh, void *buffer, unsigned int bytes) { #ifdef OS_UNIX int i, n = 0; @@ -386,8 +439,7 @@ int my_read(int fh, void *buffer, unsigned int bytes) } /* workaround for wong timezone under MAX OSX */ -long my_timezone() -{ +long my_timezone() { #if defined(OS_MACOSX) || defined(__FreeBSD__) || defined(__OpenBSD__) time_t tp; time(&tp); @@ -399,8 +451,7 @@ long my_timezone() /*---- Compose RFC2822 compliant date ---*/ -void get_rfc2822_date(char *date, int size, time_t ltime) -{ +void get_rfc2822_date(char *date, int size, time_t ltime) { time_t now; char buf[256]; int offset; @@ -425,8 +476,7 @@ void get_rfc2822_date(char *date, int size, time_t ltime) /*---- Safe malloc wrappers with out of memory checking from GNU ---*/ -static void memory_error_and_abort(char *func) -{ +static void memory_error_and_abort(char *func) { eprintf("%s: not enough memory\n", func); exit(EXIT_FAILURE); } @@ -434,8 +484,7 @@ static void memory_error_and_abort(char *func) /* Return a pointer to free()able block of memory large enough to hold BYTES number of bytes. If the memory cannot be allocated, print an error message and abort. */ -void *xmalloc(size_t bytes) -{ +void *xmalloc(size_t bytes) { char *temp; /* Align buffer on 4 byte boundery for HP UX and other 64 bit systems to prevent Bus error (core dump) */ @@ -454,8 +503,7 @@ void *xmalloc(size_t bytes) return (temp + 8); } -void *xcalloc(size_t count, size_t bytes) -{ +void *xcalloc(size_t count, size_t bytes) { char *temp; /* Align buffer on 4 byte boundery for HP UX and other 64 bit systems to prevent Bus error (core dump) */ @@ -475,8 +523,7 @@ void *xcalloc(size_t count, size_t bytes) return (temp + 8); } -void *xrealloc(void *pointer, size_t bytes) -{ +void *xrealloc(void *pointer, size_t bytes) { char *temp; int old_size; @@ -506,8 +553,7 @@ void *xrealloc(void *pointer, size_t bytes) return (temp + 8); } -void xfree(void *pointer) -{ +void xfree(void *pointer) { char *temp; int old_size; @@ -523,8 +569,7 @@ void xfree(void *pointer) free(temp - 8); } -char *xstrdup(const char *string) -{ +char *xstrdup(const char *string) { char *s; s = (char *) xmalloc(strlen(string) + 1); @@ -540,10 +585,10 @@ char *xstrdup(const char *string) #endif #ifndef HAVE_VASPRintF + /* vasprintf implementation taken (and adapted) from GNU libiberty */ -static int int_vasprintf(char **result, const char *format, va_list args) -{ +static int int_vasprintf(char **result, const char *format, va_list args) { const char *p = format; /* Add one to make sure that it is never zero, which might cause malloc to return NULL. */ @@ -581,34 +626,34 @@ static int int_vasprintf(char **result, const char *format, va_list args) */ total_width += 30; switch (*p) { - case 'd': - case 'i': - case 'o': - case 'u': - case 'x': - case 'X': - case 'c': - (void) va_arg(ap, int); - break; - case 'f': - case 'e': - case 'E': - case 'g': - case 'G': - (void) va_arg(ap, double); - /* + case 'd': + case 'i': + case 'o': + case 'u': + case 'x': + case 'X': + case 'c': + (void) va_arg(ap, int); + break; + case 'f': + case 'e': + case 'E': + case 'g': + case 'G': + (void) va_arg(ap, double); + /* * Since an ieee double can have an exponent of 307, we'll * make the buffer wide enough to cover the gross case. */ - total_width += 307; - break; - case 's': - total_width += strlen(va_arg(ap, char *)); - break; - case 'p': - case 'n': - (void) va_arg(ap, char *); - break; + total_width += 307; + break; + case 's': + total_width += strlen(va_arg(ap, char *)); + break; + case 'p': + case 'n': + (void) va_arg(ap, char *); + break; } p++; } @@ -626,23 +671,24 @@ static int int_vasprintf(char **result, const char *format, va_list args) #if defined (_BSD_VA_LIST_) && defined (__FreeBSD__) int vasprintf(char **result, const char *format, _BSD_VA_LIST_ args) #else + int vasprintf(char **result, const char *format, va_list args) #endif { return int_vasprintf(result, format, args); } + #endif /* ! HAVE_VASPRintF */ /* Safe replacement for vasprintf (adapted code from Samba) */ -int xvasprintf(char **ptr, const char *format, va_list ap) -{ +int xvasprintf(char **ptr, const char *format, va_list ap) { int n; va_list save; #ifdef va_copy va_copy(save, ap); #else -#ifdef __va_copy + #ifdef __va_copy __va_copy(save, ap); #else save = ap; @@ -660,8 +706,7 @@ int xvasprintf(char **ptr, const char *format, va_list ap) } /* Driver for printf_handler, drop-in replacement for printf */ -void eprintf(const char *format, ...) -{ +void eprintf(const char *format, ...) { va_list ap; char *msg; @@ -669,34 +714,31 @@ void eprintf(const char *format, ...) xvasprintf(&msg, format, ap); va_end(ap); - (*printf_handler) (msg); + (*printf_handler)(msg); free(msg); } /* Driver for fputs_handler, drop-in replacement for fputs(buf, fd) */ -void efputs(const char *buf) -{ - (*fputs_handler) (buf); +void efputs(const char *buf) { + (*fputs_handler)(buf); } /* Dump with the newline, drop-in replacement for puts(buf) */ -void eputs(const char *buf) -{ +void eputs(const char *buf) { char *p; p = xmalloc(strlen(buf) + 2); strcpy(p, buf); strcat(p, "\n"); - (*fputs_handler) (p); + (*fputs_handler)(p); xfree(p); } /* Flush the current output stream */ -void eflush(void) -{ +void eflush(void) { /* Do this only for non-NULL streams (uninitiated stream or a syslog) */ if (current_output_stream != NULL) fflush(current_output_stream); @@ -707,8 +749,7 @@ HANDLE hEventLog; #endif /* Print MSG to syslog */ -void print_syslog(const char *msg) -{ +void print_syslog(const char *msg) { char *p; /* strip trailing \r and \n */ @@ -726,14 +767,12 @@ void print_syslog(const char *msg) } /* Print MSG to stderr */ -void print_stderr(const char *msg) -{ +void print_stderr(const char *msg) { fprintf(stderr, "%s", msg); } /* Dump BUF to syslog */ -void fputs_syslog(const char *buf) -{ +void fputs_syslog(const char *buf) { char *p; /* strip trailing \r and \n */ @@ -751,15 +790,13 @@ void fputs_syslog(const char *buf) } /* Dump BUF to stderr */ -void fputs_stderr(const char *buf) -{ +void fputs_stderr(const char *buf) { fputs(buf, stderr); } /* Redirect all messages handled with eprintf/efputs to syslog (Unix) or event log (Windows) */ -void redirect_to_syslog(void) -{ +void redirect_to_syslog(void) { static int has_inited = 0; /* initiate syslog */ @@ -781,8 +818,7 @@ void redirect_to_syslog(void) } /* Redirect all messages handled with eprintf/efputs to stderr */ -void redirect_to_stderr(void) -{ +void redirect_to_stderr(void) { printf_handler = print_stderr; fputs_handler = fputs_stderr; @@ -791,11 +827,10 @@ void redirect_to_stderr(void) /*------------------------------------------------------------------*/ -int my_shell(char *cmd, char *result, int size) -{ +int my_shell(char *cmd, char *result, int size) { #ifdef OS_WINNT - HANDLE hChildStdinRd, hChildStdinWr, hChildStdinWrDup, + HANDLE hChildStdinRd, hChildStdinWr, hChildStdinWrDup, hChildStdoutRd, hChildStdoutWr, hChildStderrRd, hChildStderrWr, hSaveStdin, hSaveStdout, hSaveStderr; SECURITY_ATTRIBUTES saAttr; @@ -939,7 +974,7 @@ int my_shell(char *cmd, char *result, int size) return 0; } close(fh); - + if ((child_pid = fork()) < 0) return 0; else if (child_pid > 0) { @@ -947,12 +982,12 @@ int my_shell(char *cmd, char *result, int size) do { wait_status = waitpid(child_pid, &status, 0); } while (wait_status == -1 && errno == EINTR); - + /* read back result */ memset(result, 0, size); fh = open(tmp_filename, O_RDONLY); if (fh > 0) { - read(fh, result, size-1); + read(fh, result, size - 1); close(fh); } @@ -1302,8 +1337,7 @@ void stou(char *str) char *map = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; -int cind(char c) -{ +int cind(char c) { int i; if (c == '=') @@ -1316,8 +1350,7 @@ int cind(char c) return -1; } -void base64_decode(char *s, char *d) -{ +void base64_decode(char *s, char *d) { unsigned int t; while (s && *s) { @@ -1341,8 +1374,7 @@ void base64_decode(char *s, char *d) *d = 0; } -void base64_encode(unsigned char *s, unsigned char *d, int size) -{ +void base64_encode(unsigned char *s, unsigned char *d, int size) { unsigned int t, pad; unsigned char *p; @@ -1374,8 +1406,7 @@ void base64_encode(unsigned char *s, unsigned char *d, int size) *(--d) = '='; } -void base64_bufenc(unsigned char *s, int len, char *d) -{ +void base64_bufenc(unsigned char *s, int len, char *d) { unsigned int t, pad; int i; @@ -1406,8 +1437,7 @@ void base64_bufenc(unsigned char *s, int len, char *d) char *sha256_crypt(const char *key, const char *salt); -void do_crypt(const char *s, char *d, int size) -{ +void do_crypt(const char *s, char *d, int size) { strlcpy(d, sha256_crypt(s, "$5$") + 4, size); } @@ -1426,8 +1456,11 @@ typedef struct { /* prototypes of the support routines */ void _MD5_update(MD5_CONTEXT *, const void *, unsigned int); + void _MD5_transform(unsigned int[4], unsigned char[64]); + void _MD5_encode(unsigned char *, unsigned int *, unsigned int); + void _MD5_decode(unsigned int *, unsigned char *, unsigned int); /* F, G, H and I are basic MD5 functions */ @@ -1466,16 +1499,16 @@ void _MD5_decode(unsigned int *, unsigned char *, unsigned int); /* main MD5 checksum routine, returns digest from pdata buffer */ -void MD5_checksum(const void *pdata, unsigned int len, unsigned char digest[16]) -{ +void MD5_checksum(const void *pdata, unsigned int len, unsigned char digest[16]) { MD5_CONTEXT ctx; unsigned char bits[8]; unsigned int i, padlen; /* to allow multithreading we have to locate the padding memory here */ - unsigned char PADDING[64] = { 0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0 + unsigned char PADDING[64] = {0x80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0 }; memset(&ctx, 0, sizeof(MD5_CONTEXT)); @@ -1506,8 +1539,7 @@ void MD5_checksum(const void *pdata, unsigned int len, unsigned char digest[16]) /*------------------------------------------------------------------*/ -void _MD5_update(MD5_CONTEXT * pctx, const void *pdata, unsigned int len) -{ +void _MD5_update(MD5_CONTEXT *pctx, const void *pdata, unsigned int len) { unsigned char *pin; unsigned int i, index, partlen; @@ -1542,8 +1574,7 @@ void _MD5_update(MD5_CONTEXT * pctx, const void *pdata, unsigned int len) /*------------------------------------------------------------------*/ /* basic transformation, transforms state based on block */ -void _MD5_transform(unsigned int state[4], unsigned char block[64]) -{ +void _MD5_transform(unsigned int state[4], unsigned char block[64]) { unsigned int lA = state[0], lB = state[1], lC = state[2], lD = state[3]; unsigned int x[16]; @@ -1634,8 +1665,7 @@ void _MD5_transform(unsigned int state[4], unsigned char block[64]) /* encodes input (unsigned int) into output (unsigned char), assumes that lLen is a multiple of 4 */ -void _MD5_encode(unsigned char *pout, unsigned int *pin, unsigned int len) -{ +void _MD5_encode(unsigned char *pout, unsigned int *pin, unsigned int len) { unsigned int i, j; for (i = 0, j = 0; j < len; i++, j += 4) { @@ -1650,20 +1680,18 @@ void _MD5_encode(unsigned char *pout, unsigned int *pin, unsigned int len) /* encodes input (unsigned char) into output (unsigned int), assumes that lLen is a multiple of 4 */ -void _MD5_decode(unsigned int *pout, unsigned char *pin, unsigned int len) -{ +void _MD5_decode(unsigned int *pout, unsigned char *pin, unsigned int len) { unsigned int i, j; for (i = 0, j = 0; j < len; i++, j += 4) pout[i] = ((unsigned int) pin[j]) | (((unsigned int) pin[j + 1]) << 8) | (((unsigned int) pin[j + 2]) - << 16) | (((unsigned int) - pin[j + 3]) << 24); + << 16) | (((unsigned int) + pin[j + 3]) << 24); } /*------------------------------------------------------------------*/ -BOOL file_exist(char *file_name) -{ +BOOL file_exist(char *file_name) { int fh; fh = open(file_name, O_RDONLY); @@ -1704,8 +1732,8 @@ double date2serialdate(int day, int month, int year) ((month - 14) / 12))) / 12) - - (int) ((3 * ((int) ((year + 4900 + (int) ((month - 14) / 12)) - / 100))) / 4) + day - 2415019 - 32075; + (int) ((3 * ((int) ((year + 4900 + (int) ((month - 14) / 12)) + / 100))) / 4) + day - 2415019 - 32075; return serialdate; } @@ -1713,8 +1741,7 @@ double date2serialdate(int day, int month, int year) /*------------------------------------------------------------------*/ /* Wrapper for setegid. */ -int setegroup(char *str) -{ +int setegroup(char *str) { #ifdef OS_UNIX struct group *gr; @@ -1738,8 +1765,7 @@ int setegroup(char *str) } /* Wrapper for seteuid. */ -int seteuser(char *str) -{ +int seteuser(char *str) { #ifdef OS_UNIX struct passwd *pw; @@ -1763,8 +1789,7 @@ int seteuser(char *str) } /* Wrapper for setgid. */ -int setgroup(char *str) -{ +int setgroup(char *str) { #ifdef OS_UNIX struct group *gr; @@ -1776,7 +1801,8 @@ int setgroup(char *str) else { eprintf("Cannot set effective GID to group \"%s\"\n", gr->gr_name); eprintf("setgroup: %s\n", strerror(errno)); - } else + } + else eprintf("Group \"%s\" not found\n", str); return -1; @@ -1786,8 +1812,7 @@ int setgroup(char *str) } /* Wrapper for setuid. */ -int setuser(char *str) -{ +int setuser(char *str) { #ifdef OS_UNIX struct passwd *pw; @@ -1799,7 +1824,8 @@ int setuser(char *str) else { eprintf("Cannot set effective UID to user \"%s\"\n", str); eprintf("setuser: %s\n", strerror(errno)); - } else + } + else eprintf("User \"%s\" not found\n", str); return -1; @@ -1810,8 +1836,7 @@ int setuser(char *str) /*-------------------------------------------------------------------*/ -int send_with_timeout(void *p, int sock, char *buf, int buf_size) -{ +int send_with_timeout(void *p, int sock, char *buf, int buf_size) { int status, sent, send_size, send_packet; time_t start, now; char *pbuf; @@ -1824,53 +1849,52 @@ int send_with_timeout(void *p, int sock, char *buf, int buf_size) send_size = buf_size; pbuf = p; // fix compiler warning pbuf = buf; - + do { if (send_size > 65536) send_packet = 65536; else send_packet = send_size; - + #ifdef HAVE_SSL - ssl = (SSL *)p; + ssl = (SSL *) p; if (ssl) status = SSL_write(ssl, pbuf, send_packet); else #endif status = send(sock, pbuf, send_packet, 0); - + // abort after 30 seconds time(&now); - if (now > start+30) { + if (now > start + 30) { printf("Timeout after 30 seconds\n"); break; } - + // repeat if we were interrupted by alarm() signal if (status == -1 && errno == EINTR) { continue; } - + if (status == -1) break; - + if (status > 0) sent += status; - + if (status > 0 && sent < buf_size) { pbuf += status; send_size -= status; } - + } while (sent < buf_size); - + return sent; } /*-------------------------------------------------------------------*/ -int recv_string(int sock, char *buffer, int buffer_size, int millisec) -{ +int recv_string(int sock, char *buffer, int buffer_size, int millisec) { int i, n; fd_set readfds; struct timeval timeout; @@ -1912,8 +1936,7 @@ int recv_string(int sock, char *buffer, int buffer_size, int millisec) SESSION_ID *_sid = NULL; int _n_sid; -int sid_new(LOGBOOK * lbs, const char *user, const char *host, char *sid) -{ +int sid_new(LOGBOOK *lbs, const char *user, const char *host, char *sid) { double exp; time_t now; int i, new_i; @@ -1968,8 +1991,7 @@ int sid_new(LOGBOOK * lbs, const char *user, const char *host, char *sid) /*-------------------------------------------------------------------*/ -int sid_check(char *sid, char *user_name) -{ +int sid_check(char *sid, char *user_name) { int i; time_t now; @@ -1990,8 +2012,7 @@ int sid_check(char *sid, char *user_name) /*-------------------------------------------------------------------*/ -int sid_remove(char *sid) -{ +int sid_remove(char *sid) { int i; if (sid == NULL) @@ -2009,10 +2030,9 @@ int sid_remove(char *sid) /*-------------------------------------------------------------------*/ -void compose_email_header(LOGBOOK * lbs, char *subject, char *from, char *to, char *url, char *mail_text, +void compose_email_header(LOGBOOK *lbs, char *subject, char *from, char *to, char *url, char *mail_text, int size, int mail_encoding, int n_attachments, char *multipart_boundary, - int message_id, int reply_id) -{ + int message_id, int reply_id) { char buffer[256], charset[256], subject_enc[5000]; char buf[80], str[256]; int i, offset, multipart; @@ -2138,8 +2158,7 @@ void compose_email_header(LOGBOOK * lbs, char *subject, char *from, char *to, ch /*-------------------------------------------------------------------*/ -int check_smtp_error(char *str, int expected, char *error, int error_size) -{ +int check_smtp_error(char *str, int expected, char *error, int error_size) { if (atoi(str) != expected) { if (error) strlcpy(error, str + 4, error_size); @@ -2151,8 +2170,7 @@ int check_smtp_error(char *str, int expected, char *error, int error_size) /*-------------------------------------------------------------------*/ -int sendmail(LOGBOOK * lbs, char *smtp_host, char *from, char *to, char *text, char *error, int error_size) -{ +int sendmail(LOGBOOK *lbs, char *smtp_host, char *from, char *to, char *text, char *error, int error_size) { struct sockaddr_in bind_addr; struct hostent *phe; int i, n, s, strsize; @@ -2160,7 +2178,7 @@ int sendmail(LOGBOOK * lbs, char *smtp_host, char *from, char *to, char *text, c char list[MAX_N_EMAIL][NAME_LENGTH], buffer[10000], decoded[256]; memset(error, 0, error_size); - + if (get_verbose() >= VERBOSE_INFO) eprintf("\n\nEmail from %s to %s, SMTP host %s:\n", from, to, smtp_host); sprintf(buffer, "Email from %s to ", from); @@ -2177,12 +2195,12 @@ int sendmail(LOGBOOK * lbs, char *smtp_host, char *from, char *to, char *text, c strsize = MAX_CONTENT_LENGTH + 1000; str = xmalloc(strsize); - + /* connect to remote node port on SMTP port */ int smtp_port = 25; if (getcfg(lbs->name, "SMTP port", str, strsize)) smtp_port = atoi(str); - + memset(&bind_addr, 0, sizeof(bind_addr)); bind_addr.sin_family = AF_INET; bind_addr.sin_port = htons((short) smtp_port); @@ -2395,7 +2413,7 @@ int sendmail(LOGBOOK * lbs, char *smtp_host, char *from, char *to, char *text, c xfree(str); return 1; - smtp_error: + smtp_error: closesocket(s); xfree(str); @@ -2405,8 +2423,7 @@ int sendmail(LOGBOOK * lbs, char *smtp_host, char *from, char *to, char *text, c /*------------------------------------------------------------------*/ -int elog_connect(char *host, int port) -{ +int elog_connect(char *host, int port) { int status, sock; struct hostent *phe; struct sockaddr_in bind_addr; @@ -2441,40 +2458,40 @@ int elog_connect(char *host, int port) /*------------------------------------------------------------------*/ #ifdef HAVE_SSL -int ssl_connect(int sock, SSL ** ssl_con) -{ + +int ssl_connect(int sock, SSL **ssl_con) { SSL_METHOD *meth; SSL_CTX *ctx; X509 *cert = NULL; int i; - + SSL_library_init(); SSL_load_error_strings(); - + meth = (SSL_METHOD *) TLSv1_2_method(); ctx = SSL_CTX_new(meth); - + *ssl_con = SSL_new(ctx); SSL_set_fd(*ssl_con, sock); if (SSL_connect(*ssl_con) <= 0) return -1; - + cert = SSL_get_peer_certificate(*ssl_con); if (cert == NULL) return -1; - + i = SSL_get_verify_result(*ssl_con); if (i != X509_V_OK) printf("Possibly invalid certificate, continue on your own risk!\n"); - + return 0; } + #endif /*-------------------------------------------------------------------*/ -void split_url(const char *url, char *host, int *port, char *subdir, char *param) -{ +void split_url(const char *url, char *host, int *port, char *subdir, char *param) { const char *p; char str[256]; @@ -2528,8 +2545,7 @@ void split_url(const char *url, char *host, int *port, char *subdir, char *param /*-------------------------------------------------------------------*/ -int retrieve_url(LOGBOOK * lbs, const char *url, UNUSED(int ssl), char **buffer) -{ +int retrieve_url(LOGBOOK *lbs, const char *url, UNUSED(int ssl), char **buffer) { char str[1000], unm[256], upwd[256], host[256], subdir[256], param[256]; int port, bufsize; int i, n; @@ -2608,8 +2624,8 @@ int retrieve_url(LOGBOOK * lbs, const char *url, UNUSED(int ssl), char **buffer) strcat(str, "\r\n"); - send_with_timeout(ssl_con, sock, (char *)str, strlen(str)); - + send_with_timeout(ssl_con, sock, (char *) str, strlen(str)); + bufsize = TEXT_SIZE + 1000; *buffer = xmalloc(bufsize); memset(*buffer, 0, bufsize); @@ -2661,8 +2677,7 @@ int retrieve_url(LOGBOOK * lbs, const char *url, UNUSED(int ssl), char **buffer) /*-------------------------------------------------------------------*/ -int ss_daemon_init() -{ +int ss_daemon_init() { #ifdef OS_UNIX /* only implemented for UNIX */ @@ -2726,8 +2741,7 @@ time_t cfgfile_mtime = 0; /*-------------------------------------------------------------------*/ -void check_config_file(BOOL force) -{ +void check_config_file(BOOL force) { struct stat cfg_stat; if (force) { @@ -2747,13 +2761,11 @@ void check_config_file(BOOL force) /*-------------------------------------------------------------------*/ -void setcfg_topgroup(char *topgroup) -{ +void setcfg_topgroup(char *topgroup) { strcpy(_topgroup, topgroup); } -char *getcfg_topgroup() -{ +char *getcfg_topgroup() { if (_topgroup[0]) return _topgroup; @@ -2762,8 +2774,7 @@ char *getcfg_topgroup() /*------------------------------------------------------------------*/ -int is_logbook(char *logbook) -{ +int is_logbook(char *logbook) { char str[256]; if (strieq(logbook, "global")) @@ -2777,15 +2788,13 @@ int is_logbook(char *logbook) /*-------------------------------------------------------------------*/ -void set_condition(char *c) -{ +void set_condition(char *c) { strlcpy(_condition, c, sizeof(_condition)); } /*-------------------------------------------------------------------*/ -void evaluate_conditions(LOGBOOK * lbs, char attrib[MAX_N_ATTR][NAME_LENGTH]) -{ +void evaluate_conditions(LOGBOOK *lbs, char attrib[MAX_N_ATTR][NAME_LENGTH]) { char condition[256], str[256]; int index, i; @@ -2821,8 +2830,7 @@ void evaluate_conditions(LOGBOOK * lbs, char attrib[MAX_N_ATTR][NAME_LENGTH]) /*-------------------------------------------------------------------*/ -BOOL match_param(char *str, char *param, int conditional_only) -{ +BOOL match_param(char *str, char *param, int conditional_only) { int ncl, npl, nand, i, j, k; char *p, pcond[256], clist[10][NAME_LENGTH], plist[10][NAME_LENGTH], alist[10][NAME_LENGTH]; @@ -2876,15 +2884,13 @@ BOOL match_param(char *str, char *param, int conditional_only) /*-------------------------------------------------------------------*/ -int param_compare(const void *p1, const void *p2) -{ +int param_compare(const void *p1, const void *p2) { return stricmp(((CONFIG_PARAM *) p1)->uparam, ((CONFIG_PARAM *) p2)->uparam); } /*------------------------------------------------------------------*/ -void free_config() -{ +void free_config() { int i, j; for (i = 0; i < n_lb_config; i++) { @@ -3029,8 +3035,7 @@ int parse_config_file(char *file_name) /*-------------------------------------------------------------------*/ -int getcfg_simple(char *group, char *param, char *value, int vsize, int conditional) -{ +int getcfg_simple(char *group, char *param, char *value, int vsize, int conditional) { int i, j, status; char uparam[256]; @@ -3061,8 +3066,7 @@ int getcfg_simple(char *group, char *param, char *value, int vsize, int conditio /*-------------------------------------------------------------------*/ -int enumgrp(int index, char *group) -{ +int enumgrp(int index, char *group) { if (index < n_lb_config) { strcpy(group, lb_config[index].section_name); return 1; @@ -3119,8 +3123,7 @@ int getcfg(char *group, char *param, char *value, int vsize) /*-------------------------------------------------------------------*/ -char *find_param(char *buf, char *group, char *param) -{ +char *find_param(char *buf, char *group, char *param) { char *str, *p, *pstr, *pstart; /* search group */ @@ -3176,8 +3179,7 @@ char *find_param(char *buf, char *group, char *param) /*-------------------------------------------------------------------*/ -int is_group(char *group) -{ +int is_group(char *group) { int i; for (i = 0; i < n_lb_config; i++) @@ -3188,8 +3190,7 @@ int is_group(char *group) /*------------------------------------------------------------------*/ -int enumcfg(char *group, char *param, int psize, char *value, int vsize, int index) -{ +int enumcfg(char *group, char *param, int psize, char *value, int vsize, int index) { int i; for (i = 0; i < n_lb_config; i++) @@ -3210,8 +3211,7 @@ int enumcfg(char *group, char *param, int psize, char *value, int vsize, int ind /*-------------------------------------------------------------------*/ -int exist_top_group() -{ +int exist_top_group() { int i; char str[256]; @@ -3233,8 +3233,7 @@ char **_porig, **_ptrans; time_t _locfile_mtime = 0; /* check if language file changed and if so reload it */ -int check_language() -{ +int check_language() { char language[256], file_name[256], *p; int fh, length, n; struct stat cfg_stat; @@ -3340,8 +3339,7 @@ int check_language() /*-------------------------------------------------------------------*/ /* localization support */ -char *loc(char *orig) -{ +char *loc(char *orig) { int n; char language[256]; static char result[256]; @@ -3379,8 +3377,7 @@ char *loc(char *orig) /* translate back from localized string to english */ -char *unloc(char *orig) -{ +char *unloc(char *orig) { int n; if (!_locbuffer) @@ -3419,8 +3416,7 @@ char *month_name(int m) /*-------------------------------------------------------------------*/ -time_t date_to_ltime(char *date) -{ +time_t date_to_ltime(char *date) { struct tm tms; int i, date_zone, local_zone; time_t ltime; @@ -3487,16 +3483,14 @@ time_t date_to_ltime(char *date) /*-------------------------------------------------------------------*/ -void check_config() -{ +void check_config() { check_config_file(FALSE); check_language(); } /*-------------------------------------------------------------------*/ -void retrieve_domain(char *ret, int size) -{ +void retrieve_domain(char *ret, int size) { char smtp_host[80]; strlcpy(ret, "tmp.org", size); @@ -3508,11 +3502,10 @@ void retrieve_domain(char *ret, int size) /*-------------------------------------------------------------------*/ -void retrieve_email_from(LOGBOOK * lbs, char *ret, char *ret_name, char attrib[MAX_N_ATTR][NAME_LENGTH]) -{ +void retrieve_email_from(LOGBOOK *lbs, char *ret, char *ret_name, char attrib[MAX_N_ATTR][NAME_LENGTH]) { char email_from[256], email_from_name[256], str[256], *p, login_name[256], - slist[MAX_N_ATTR + 10][NAME_LENGTH], svalue[MAX_N_ATTR + 10][NAME_LENGTH], - full_name[256], user_email[256]; + slist[MAX_N_ATTR + 10][NAME_LENGTH], svalue[MAX_N_ATTR + 10][NAME_LENGTH], + full_name[256], user_email[256]; int i; if (getcfg(lbs->name, "Use Email from", str, sizeof(str))) { @@ -3577,8 +3570,7 @@ void retrieve_email_from(LOGBOOK * lbs, char *ret, char *ret_name, char attrib[M /*------------------------------------------------------------------*/ -void el_decode(char *message, char *key, char *result, int size) -{ +void el_decode(char *message, char *key, char *result, int size) { char *pc, *ph; int i; @@ -3621,8 +3613,7 @@ void el_decode(char *message, char *key, char *result, int size) /*------------------------------------------------------------------*/ -void el_decode_int(char *message, char *key, char *result, int size) -{ +void el_decode_int(char *message, char *key, char *result, int size) { char str[80]; if (result == NULL) @@ -3637,8 +3628,7 @@ void el_decode_int(char *message, char *key, char *result, int size) /*------------------------------------------------------------------*/ -void el_decode_intlist(char *message, char *key, char *result, int size) -{ +void el_decode_intlist(char *message, char *key, char *result, int size) { int i; if (result == NULL) @@ -3655,8 +3645,7 @@ void el_decode_intlist(char *message, char *key, char *result, int size) /*------------------------------------------------------------------*/ -void el_enum_attr(char *message, int n, char *attr_name, char *attr_value) -{ +void el_enum_attr(char *message, int n, char *attr_name, char *attr_value) { char *p, str[NAME_LENGTH], tmp[NAME_LENGTH]; int i; @@ -3706,42 +3695,41 @@ void el_enum_attr(char *message, int n, char *attr_name, char *attr_value) #define EOS '\0' -int fnmatch1(const char *pattern, const char *string) -{ +int fnmatch1(const char *pattern, const char *string) { char c, test; for (;;) switch (c = *pattern++) { - case EOS: - return (*string == EOS ? 0 : 1); - case '?': - if (*string == EOS) - return (1); - ++string; - break; - case '*': - c = *pattern; - /* Collapse multiple stars. */ - while (c == '*') - c = *++pattern; - - /* Optimize for pattern with * at end or before /. */ - if (c == EOS) - return (0); - - /* General case, use recursion. */ - while ((test = *string) != EOS) { - if (!fnmatch1(pattern, string)) - return (0); + case EOS: + return (*string == EOS ? 0 : 1); + case '?': + if (*string == EOS) + return (1); ++string; - } - return (1); - /* FALLTHROUGH */ - default: - if (c != *string) + break; + case '*': + c = *pattern; + /* Collapse multiple stars. */ + while (c == '*') + c = *++pattern; + + /* Optimize for pattern with * at end or before /. */ + if (c == EOS) + return (0); + + /* General case, use recursion. */ + while ((test = *string) != EOS) { + if (!fnmatch1(pattern, string)) + return (0); + ++string; + } return (1); - string++; - break; + /* FALLTHROUGH */ + default: + if (c != *string) + return (1); + string++; + break; } } @@ -3787,7 +3775,7 @@ int ss_file_find(const char *path, char *pattern, char **plist) #endif #ifdef OS_WINNT - HANDLE pffile; + HANDLE pffile; LPWIN32_FIND_DATA lpfdata; char str[255]; int i, first; @@ -3820,8 +3808,7 @@ int ss_file_find(const char *path, char *pattern, char **plist) /*------------------------------------------------------------------*/ -int eli_compare(const void *e1, const void *e2) -{ +int eli_compare(const void *e1, const void *e2) { if (((EL_INDEX *) e1)->file_time < ((EL_INDEX *) e2)->file_time) return -1; @@ -3832,43 +3819,41 @@ int eli_compare(const void *e1, const void *e2) /*------------------------------------------------------------------*/ -void generate_subdir_name(char *file_name, char *subdir, int size) -{ +void generate_subdir_name(char *file_name, char *subdir, int size) { char fn[MAX_PATH_LENGTH], path[MAX_PATH_LENGTH]; int year; - + // extract path from file_name strlcpy(path, file_name, size); if (strrchr(path, DIR_SEPARATOR)) - *(strrchr(path, DIR_SEPARATOR)+1) = 0; - + *(strrchr(path, DIR_SEPARATOR) + 1) = 0; + // extract file name if (strrchr(file_name, DIR_SEPARATOR)) - strlcpy(fn, strrchr(file_name, DIR_SEPARATOR)+1, sizeof(fn)); + strlcpy(fn, strrchr(file_name, DIR_SEPARATOR) + 1, sizeof(fn)); else strlcpy(fn, file_name, sizeof(fn)); - + // create subdir from name - year = (fn[0]-'0')*10+(fn[1]-'0'); + year = (fn[0] - '0') * 10 + (fn[1] - '0'); // month = (fn[2]-'0')*10+(fn[3]-'0'); if (year < 80) sprintf(subdir, "20%02d", year); else sprintf(subdir, "19%02d", year); - + strlcat(subdir, DIR_SEPARATOR_STR, size); } /*------------------------------------------------------------------*/ -int restructure_dir(char *dir) -{ +int restructure_dir(char *dir) { char *file_list; int n1, n2, index, status; char old_path[MAX_PATH_LENGTH], new_path[MAX_PATH_LENGTH], - subdir[MAX_PATH_LENGTH]; + subdir[MAX_PATH_LENGTH]; static int first = TRUE; - + /* go through all entry files */ n1 = ss_file_find(dir, "??????a.log", &file_list); for (index = 0; index < n1; index++) { @@ -3877,13 +3862,13 @@ int restructure_dir(char *dir) // create new subdir strlcpy(new_path, dir, MAX_PATH_LENGTH); strlcat(new_path, subdir, MAX_PATH_LENGTH); - + #ifdef OS_WINNT status = mkdir(new_path); #else status = mkdir(new_path, 0755); #endif - + if (status == 0) { if (first) { eprintf("\nFound old directory structure. Creating subdirectories and moving files...\n"); @@ -3896,18 +3881,18 @@ int restructure_dir(char *dir) eprintf("Cannot create directory \"%s\"\n", new_path); } } - + strlcpy(old_path, dir, sizeof(old_path)); strlcat(old_path, file_list + index * MAX_PATH_LENGTH, sizeof(old_path)); strlcpy(new_path, dir, sizeof(new_path)); strlcat(new_path, subdir, sizeof(new_path)); strlcat(new_path, file_list + index * MAX_PATH_LENGTH, sizeof(new_path)); - + rename(old_path, new_path); } if (file_list) xfree(file_list); - + /* go through all attachment files */ n2 = ss_file_find(dir, "??????_??????_*", &file_list); for (index = 0; index < n2; index++) { @@ -3916,126 +3901,124 @@ int restructure_dir(char *dir) // create new subdir strlcpy(new_path, dir, MAX_PATH_LENGTH); strlcat(new_path, subdir, MAX_PATH_LENGTH); - + #ifdef OS_WINNT status = mkdir(new_path); #else status = mkdir(new_path, 0755); #endif - + strlcpy(old_path, dir, sizeof(old_path)); strlcat(old_path, file_list + index * MAX_PATH_LENGTH, sizeof(old_path)); strlcpy(new_path, dir, sizeof(new_path)); strlcat(new_path, subdir, sizeof(new_path)); strlcat(new_path, file_list + index * MAX_PATH_LENGTH, sizeof(new_path)); - + rename(old_path, new_path); } if (file_list) xfree(file_list); - return n1+n2; + return n1 + n2; } /*------------------------------------------------------------------*/ -int parse_file(LOGBOOK *lbs, char *file_name) -{ +int parse_file(LOGBOOK *lbs, char *file_name) { char str[256], date[256], *buffer, *p, *pn, in_reply_to[80]; int length, i, fh, len; - + fh = open(file_name, O_RDONLY | O_BINARY, 0644); - + if (fh < 0) { sprintf(str, "Cannot open file \"%s\"", file_name); eprintf("%s; %s\n", str, strerror(errno)); return EL_FILE_ERROR; } - + /* read file into buffer */ length = lseek(fh, 0, SEEK_END); - + if (length > 0) { buffer = xmalloc(length + 1); lseek(fh, 0, SEEK_SET); read(fh, buffer, length); buffer[length] = 0; close(fh); - + /* go through buffer */ p = buffer; - + do { p = strstr(p, "$@MID@$:"); - + if (p) { lbs->el_index = xrealloc(lbs->el_index, sizeof(EL_INDEX) * (*lbs->n_el_index + 1)); if (lbs->el_index == NULL) { eprintf("Not enough memory to allocate entry index\n"); return EL_MEM_ERROR; } - - strlcpy(lbs->el_index[*lbs->n_el_index].subdir, file_name+strlen(lbs->data_dir), 256); + + strlcpy(lbs->el_index[*lbs->n_el_index].subdir, file_name + strlen(lbs->data_dir), 256); if (strrchr(lbs->el_index[*lbs->n_el_index].subdir, DIR_SEPARATOR)) - *(strrchr(lbs->el_index[*lbs->n_el_index].subdir, DIR_SEPARATOR)+1) = 0; - + *(strrchr(lbs->el_index[*lbs->n_el_index].subdir, DIR_SEPARATOR) + 1) = 0; + if (strrchr(file_name, DIR_SEPARATOR)) - strlcpy(str, strrchr(file_name, DIR_SEPARATOR)+1, sizeof(str)); + strlcpy(str, strrchr(file_name, DIR_SEPARATOR) + 1, sizeof(str)); else strlcpy(str, file_name, sizeof(str)); strcpy(lbs->el_index[*lbs->n_el_index].file_name, str); - + el_decode(p, "Date: ", date, sizeof(date)); el_decode_int(p, "In reply to: ", in_reply_to, sizeof(in_reply_to)); - + lbs->el_index[*lbs->n_el_index].file_time = date_to_ltime(date); - + lbs->el_index[*lbs->n_el_index].message_id = atoi(p + 8); lbs->el_index[*lbs->n_el_index].offset = p - buffer; lbs->el_index[*lbs->n_el_index].in_reply_to = atoi(in_reply_to); - + pn = strstr(p + 8, "$@MID@$:"); if (pn) len = pn - p; else len = strlen(p); - + MD5_checksum(p, len, lbs->el_index[*lbs->n_el_index].md5_digest); - + if (lbs->el_index[*lbs->n_el_index].message_id > 0) { if (get_verbose() == VERBOSE_DEBUG) { eprintf(" ID %3d, %s, ofs %5d, %s, MD5=", lbs->el_index[*lbs->n_el_index].message_id, str, lbs->el_index[*lbs->n_el_index].offset, lbs->el_index[*lbs->n_el_index].in_reply_to ? "reply" : "thead"); - + for (i = 0; i < 16; i++) eprintf("%02X", lbs->el_index[*lbs->n_el_index].md5_digest[i]); eprintf("\n"); } - + /* valid ID */ (*lbs->n_el_index)++; } - + p += 8; } - + } while (p); - + xfree(buffer); } - + return SUCCESS; } /*------------------------------------------------------------------*/ -int scan_dir_tree(LOGBOOK *lbs, const char *dir, char **file_list, int *n) -{ - int index, n_files; +int scan_dir_tree(LOGBOOK *lbs, const char *dir, char **file_list, int *n) { + int index, n_files; char str[MAX_PATH_LENGTH]; char *fl, *p; - + fl = NULL; n_files = ss_file_find(dir, "*", &fl); if (n_files == 0) { @@ -4043,24 +4026,24 @@ int scan_dir_tree(LOGBOOK *lbs, const char *dir, char **file_list, int *n) xfree(fl); return 0; } - + if (*file_list == NULL) - *file_list = (char *)xmalloc(n_files*MAX_PATH_LENGTH); + *file_list = (char *) xmalloc(n_files * MAX_PATH_LENGTH); else - *file_list = (char *)xrealloc(*file_list, ((*n)+n_files)*MAX_PATH_LENGTH); - + *file_list = (char *) xrealloc(*file_list, ((*n) + n_files) * MAX_PATH_LENGTH); + /* go through all files */ for (index = 0; index < n_files; index++) { if (fnmatch1("??????a.log", &fl[index * MAX_PATH_LENGTH]) == 0) { p = *file_list + ((*n) * MAX_PATH_LENGTH); strlcpy(p, dir, MAX_PATH_LENGTH); - if (p[strlen(p)-1] != DIR_SEPARATOR) + if (p[strlen(p) - 1] != DIR_SEPARATOR) strlcat(p, DIR_SEPARATOR_STR, MAX_PATH_LENGTH); strlcat(p, fl + index * MAX_PATH_LENGTH, MAX_PATH_LENGTH); (*n)++; } } - + /* go through all sub-directories */ for (index = 0; index < n_files; index++) { if (fnmatch1("????", &fl[index * MAX_PATH_LENGTH]) == 0 || @@ -4068,22 +4051,22 @@ int scan_dir_tree(LOGBOOK *lbs, const char *dir, char **file_list, int *n) if (strieq(fl + index * MAX_PATH_LENGTH, "..")) continue; strlcpy(str, dir, sizeof(str)); - if (str[strlen(str)-1] != DIR_SEPARATOR) + if (str[strlen(str) - 1] != DIR_SEPARATOR) strlcat(str, DIR_SEPARATOR_STR, sizeof(str)); strlcat(str, fl + index * MAX_PATH_LENGTH, sizeof(str)); scan_dir_tree(lbs, str, file_list, n); } } - + if (fl) xfree(fl); - + return *n; } /*------------------------------------------------------------------*/ -int el_build_index(LOGBOOK * lbs, BOOL rebuild) +int el_build_index(LOGBOOK *lbs, BOOL rebuild) /* scan all ??????a.log files and build an index table in eli[] */ { char *file_list, error_str[256], base_dir[256], *buffer; @@ -4124,17 +4107,17 @@ int el_build_index(LOGBOOK * lbs, BOOL rebuild) if (get_verbose() >= VERBOSE_DEBUG) eprintf("Entries:\n"); - + // move files to directories if (new layout to reduce number of files per directory) restructure_dir(base_dir); file_list = NULL; n = 0; scan_dir_tree(lbs, base_dir, &file_list, &n); - + /* go through all files */ for (index = 0; index < n; index++) { - status = parse_file(lbs, file_list+index*MAX_PATH_LENGTH); + status = parse_file(lbs, file_list + index * MAX_PATH_LENGTH); if (status != SUCCESS) { if (file_list) xfree(file_list); @@ -4159,14 +4142,13 @@ int el_build_index(LOGBOOK * lbs, BOOL rebuild) eprintf("Logbook files seem to have disappeared, aborting program.\n"); assert(rebuild && n > 0); } - + return EL_SUCCESS; } /*------------------------------------------------------------------*/ -int el_index_logbooks() -{ +int el_index_logbooks() { char str[256], data_dir[256], logbook[256], cwd[256], *p; int i, j, n, status = 0; @@ -4355,7 +4337,7 @@ int el_index_logbooks() /*------------------------------------------------------------------*/ -int el_search_message(LOGBOOK * lbs, int mode, int message_id, BOOL head_only) +int el_search_message(LOGBOOK *lbs, int mode, int message_id, BOOL head_only) /******************************************************************** Routine: el_search_message @@ -4450,7 +4432,7 @@ int el_search_message(LOGBOOK * lbs, int mode, int message_id, BOOL head_only) /*------------------------------------------------------------------*/ -int el_retrieve(LOGBOOK * lbs, int message_id, char *date, char attr_list[MAX_N_ATTR][NAME_LENGTH], +int el_retrieve(LOGBOOK *lbs, int message_id, char *date, char attr_list[MAX_N_ATTR][NAME_LENGTH], char attrib[MAX_N_ATTR][NAME_LENGTH], int n_attr, char *text, int *textsize, char *in_reply_to, char *reply_to, char attachment[MAX_ATTACHMENTS][MAX_PATH_LENGTH], char *encoding, char *locked_by, char *draft) @@ -4488,7 +4470,7 @@ int el_retrieve(LOGBOOK * lbs, int message_id, char *date, char attr_list[MAX_N_ \********************************************************************/ { int i, index, size, fh; - char str[NAME_LENGTH], file_name[MAX_PATH_LENGTH*3], *p; + char str[NAME_LENGTH], file_name[MAX_PATH_LENGTH * 3], *p; char *message, attachment_all[64 * MAX_ATTACHMENTS]; if (message_id == 0) @@ -4505,7 +4487,8 @@ int el_retrieve(LOGBOOK * lbs, int message_id, char *date, char attr_list[MAX_N_ if (index == *lbs->n_el_index) return EL_NO_MSG; - snprintf(file_name, sizeof(file_name), "%s%s%s", lbs->data_dir, lbs->el_index[index].subdir, lbs->el_index[index].file_name); + snprintf(file_name, sizeof(file_name), "%s%s%s", lbs->data_dir, lbs->el_index[index].subdir, + lbs->el_index[index].file_name); fh = open(file_name, O_RDONLY | O_BINARY, 0644); if (fh < 0) { /* file might have been deleted, rebuild index */ @@ -4644,10 +4627,10 @@ int el_retrieve(LOGBOOK * lbs, int message_id, char *date, char attr_list[MAX_N_ /*------------------------------------------------------------------*/ -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, subdir[MAX_PATH_LENGTH]; +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, subdir[MAX_PATH_LENGTH]; int fh; time_t now; struct tm tms; @@ -4682,15 +4665,15 @@ int el_submit_attachment(LOGBOOK * lbs, const char *afilename, const char *buffe strlcpy(str, lbs->data_dir, sizeof(str)); generate_subdir_name(ext_file_name, subdir, sizeof(subdir)); strlcat(str, subdir, sizeof(str)); - if (strlen(str) > 0 && str[strlen(str)-1] == DIR_SEPARATOR) - str[strlen(str)-1] = 0; - + if (strlen(str) > 0 && str[strlen(str) - 1] == DIR_SEPARATOR) + str[strlen(str) - 1] = 0; + #ifdef OS_WINNT mkdir(str); #else mkdir(str, 0755); #endif - + strlcat(str, DIR_SEPARATOR_STR, sizeof(str)); strlcat(str, ext_file_name, sizeof(str)); @@ -4712,8 +4695,7 @@ int el_submit_attachment(LOGBOOK * lbs, const char *afilename, const char *buffe /*------------------------------------------------------------------*/ -void el_delete_attachment(LOGBOOK * lbs, char *file_name) -{ +void el_delete_attachment(LOGBOOK *lbs, char *file_name) { int i; char str[MAX_PATH_LENGTH], subdir[MAX_PATH_LENGTH]; @@ -4750,10 +4732,9 @@ void el_delete_attachment(LOGBOOK * lbs, char *file_name) /*------------------------------------------------------------------*/ -int el_retrieve_attachment(LOGBOOK * lbs, int message_id, int n, char name[MAX_PATH_LENGTH]) -{ +int el_retrieve_attachment(LOGBOOK *lbs, int message_id, int n, char name[MAX_PATH_LENGTH]) { int i, index, size, fh; - char file_name[MAX_PATH_LENGTH*3], *p; + char file_name[MAX_PATH_LENGTH * 3], *p; char message[TEXT_SIZE + 1000], attachment_all[64 * MAX_ATTACHMENTS]; if (message_id == 0) @@ -4766,7 +4747,8 @@ int el_retrieve_attachment(LOGBOOK * lbs, int message_id, int n, char name[MAX_P if (index == *lbs->n_el_index) return EL_NO_MSG; - snprintf(file_name, sizeof(file_name), "%s%s%s", lbs->data_dir, lbs->el_index[index].subdir, lbs->el_index[index].file_name); + snprintf(file_name, sizeof(file_name), "%s%s%s", lbs->data_dir, lbs->el_index[index].subdir, + lbs->el_index[index].file_name); fh = open(file_name, O_RDONLY | O_BINARY, 0644); if (fh < 0) { /* file might have been deleted, rebuild index */ @@ -4825,7 +4807,7 @@ int el_retrieve_attachment(LOGBOOK * lbs, int message_id, int n, char name[MAX_P /*------------------------------------------------------------------*/ -int el_submit(LOGBOOK * lbs, int message_id, BOOL bedit, char *date, char attr_name[MAX_N_ATTR][NAME_LENGTH], +int el_submit(LOGBOOK *lbs, int message_id, BOOL bedit, char *date, char attr_name[MAX_N_ATTR][NAME_LENGTH], char attr_value[MAX_N_ATTR][NAME_LENGTH], int n_attr, char *text, char *in_reply_to, char *reply_to, char *encoding, char afilename[MAX_ATTACHMENTS][256], BOOL mark_original, char *locked_by, char *draft) @@ -4854,16 +4836,16 @@ int el_submit(LOGBOOK * lbs, int message_id, BOOL bedit, char *date, char attr_n BOOL mark_original Tag original message for replies char *locked_by User/Host which locked message for edit char *draft User which drafted message - + Function value: int New message ID \********************************************************************/ { int n, i, j, size, fh, index, tail_size, orig_size, delta, reply_id; - char file_name[MAX_PATH_LENGTH*3], dir[256], str[NAME_LENGTH], date1[256], attrib[MAX_N_ATTR][NAME_LENGTH], - reply_to1[MAX_REPLY_TO * 10], in_reply_to1[MAX_REPLY_TO * 10], encoding1[80], *message, *p, - *old_text, *buffer, locked_by1[256]; + char file_name[MAX_PATH_LENGTH * 3], dir[256], str[NAME_LENGTH], date1[256], attrib[MAX_N_ATTR][NAME_LENGTH], + reply_to1[MAX_REPLY_TO * 10], in_reply_to1[MAX_REPLY_TO * 10], encoding1[80], *message, *p, + *old_text, *buffer, locked_by1[256]; char attachment_all[64 * MAX_ATTACHMENTS], subdir[MAX_PATH_LENGTH]; time_t ltime; @@ -4896,7 +4878,8 @@ int el_submit(LOGBOOK * lbs, int message_id, BOOL bedit, char *date, char attr_n return -1; } - snprintf(file_name, sizeof(file_name), "%s%s%s", lbs->data_dir, lbs->el_index[index].subdir, lbs->el_index[index].file_name); + snprintf(file_name, sizeof(file_name), "%s%s%s", lbs->data_dir, lbs->el_index[index].subdir, + lbs->el_index[index].file_name); fh = open(file_name, O_CREAT | O_RDWR | O_BINARY, 0644); if (fh < 0) { xfree(message); @@ -5002,15 +4985,15 @@ int el_submit(LOGBOOK * lbs, int message_id, BOOL bedit, char *date, char attr_n generate_subdir_name(file_name, subdir, sizeof(subdir)); sprintf(str, "%s%s", dir, subdir); - if (strlen(str) > 0 && str[strlen(str)-1] == DIR_SEPARATOR) - str[strlen(str)-1] = 0; - + if (strlen(str) > 0 && str[strlen(str) - 1] == DIR_SEPARATOR) + str[strlen(str) - 1] = 0; + #ifdef OS_WINNT mkdir(str); #else mkdir(str, 0755); #endif - + sprintf(str, "%s%s%s", dir, subdir, file_name); fh = open(str, O_CREAT | O_RDWR | O_BINARY, 0644); if (fh < 0) { @@ -5139,7 +5122,7 @@ int el_submit(LOGBOOK * lbs, int message_id, BOOL bedit, char *date, char attr_n if (mark_original && in_reply_to[0] && !bedit && atoi(in_reply_to) > 0) { char date[80], attr[MAX_N_ATTR][NAME_LENGTH], enc[80], att[MAX_ATTACHMENTS][256], - reply_to[MAX_REPLY_TO * 10], in_reply_to[MAX_REPLY_TO * 10], lock[256], draft[256]; + reply_to[MAX_REPLY_TO * 10], in_reply_to[MAX_REPLY_TO * 10], lock[256], draft[256]; /* retrieve original message */ size = TEXT_SIZE + 100; @@ -5161,10 +5144,9 @@ int el_submit(LOGBOOK * lbs, int message_id, BOOL bedit, char *date, char attr_n /*------------------------------------------------------------------*/ -void remove_reference(LOGBOOK * lbs, int message_id, int remove_id, BOOL reply_to_flag) -{ +void remove_reference(LOGBOOK *lbs, int message_id, int remove_id, BOOL reply_to_flag) { char date[80], attr[MAX_N_ATTR][NAME_LENGTH], enc[80], in_reply_to[80], reply_to[MAX_REPLY_TO * 10], - att[MAX_ATTACHMENTS][256], lock[256], draft[256], *p, *ps, *message; + att[MAX_ATTACHMENTS][256], lock[256], draft[256], *p, *ps, *message; int size, status; /* retrieve original message */ @@ -5207,7 +5189,7 @@ void remove_reference(LOGBOOK * lbs, int message_id, int remove_id, BOOL reply_t /*------------------------------------------------------------------*/ -int el_delete_message(LOGBOOK * lbs, int message_id, BOOL delete_attachments, +int el_delete_message(LOGBOOK *lbs, int message_id, BOOL delete_attachments, char attachment[MAX_ATTACHMENTS][MAX_PATH_LENGTH], BOOL delete_bw_ref, BOOL delete_reply_to) /******************************************************************** @@ -5232,7 +5214,7 @@ int el_delete_message(LOGBOOK * lbs, int message_id, BOOL delete_attachments, \********************************************************************/ { int i, index, size, fh, tail_size, old_offset; - char str[MAX_PATH_LENGTH], file_name[MAX_PATH_LENGTH*3], reply_to[MAX_REPLY_TO * 10], in_reply_to[256]; + char str[MAX_PATH_LENGTH], file_name[MAX_PATH_LENGTH * 3], reply_to[MAX_REPLY_TO * 10], in_reply_to[256]; char *buffer, *p; char *message, attachment_all[64 * MAX_ATTACHMENTS]; char attrib[MAX_N_ATTR][NAME_LENGTH]; @@ -5244,7 +5226,8 @@ int el_delete_message(LOGBOOK * lbs, int message_id, BOOL delete_attachments, if (index == *lbs->n_el_index) return -1; - snprintf(file_name, sizeof(file_name), "%s%s%s", lbs->data_dir, lbs->el_index[index].subdir, lbs->el_index[index].file_name); + snprintf(file_name, sizeof(file_name), "%s%s%s", lbs->data_dir, lbs->el_index[index].subdir, + lbs->el_index[index].file_name); fh = open(file_name, O_RDWR | O_BINARY, 0644); if (fh < 0) return EL_FILE_ERROR; @@ -5414,13 +5397,13 @@ int el_delete_message(LOGBOOK * lbs, int message_id, BOOL delete_attachments, /*------------------------------------------------------------------*/ -int el_correct_links(LOGBOOK * lbs, int old_id, int new_id) +int el_correct_links(LOGBOOK *lbs, int old_id, int new_id) /* If a message gets resubmitted, the links to that message are wrong. This routine corrects that. */ { int i, i1, n, n1, size; - char date[80], *attrib, *text, in_reply_to[80], reply_to[MAX_REPLY_TO * 10], encoding[80], - locked_by[256], draft[256]; + char date[80], *attrib, *text, in_reply_to[80], reply_to[MAX_REPLY_TO * 10], encoding[80], + locked_by[256], draft[256]; char list[MAX_N_ATTR][NAME_LENGTH], list1[MAX_N_ATTR][NAME_LENGTH]; char *att_file; @@ -5491,11 +5474,10 @@ int el_correct_links(LOGBOOK * lbs, int old_id, int new_id) /*------------------------------------------------------------------*/ -int el_move_message_thread(LOGBOOK * lbs, int message_id) -{ +int el_move_message_thread(LOGBOOK *lbs, int message_id) { int i, n, size, new_id; char date[80], attrib[MAX_N_ATTR][NAME_LENGTH], *text, in_reply_to[80], reply_to[MAX_REPLY_TO * 10], - encoding[80], locked_by[256], draft[256]; + encoding[80], locked_by[256], draft[256]; char list[MAX_N_ATTR][NAME_LENGTH], str[256]; char att_file[MAX_ATTACHMENTS][256]; @@ -5532,11 +5514,10 @@ int el_move_message_thread(LOGBOOK * lbs, int message_id) /*------------------------------------------------------------------*/ -int el_move_message(LOGBOOK * lbs, int old_id, int new_id) -{ +int el_move_message(LOGBOOK *lbs, int old_id, int new_id) { int status, size; char date[80], attrib[MAX_N_ATTR][NAME_LENGTH], *text, in_reply_to[80], reply_to[MAX_REPLY_TO * 10], - encoding[80], locked_by[256], draft[256], att_file[MAX_ATTACHMENTS][256]; + encoding[80], locked_by[256], draft[256], att_file[MAX_ATTACHMENTS][256]; /* retrieve message */ text = xmalloc(TEXT_SIZE); @@ -5566,12 +5547,12 @@ int el_move_message(LOGBOOK * lbs, int old_id, int new_id) /*------------------------------------------------------------------*/ -int el_lock_message(LOGBOOK * lbs, int message_id, char *user, BOOL lock) +int el_lock_message(LOGBOOK *lbs, int message_id, char *user, BOOL lock) /* lock message for editing */ { int size; char date[80], attrib[MAX_N_ATTR][NAME_LENGTH], text[TEXT_SIZE], in_reply_to[80], - reply_to[MAX_REPLY_TO * 10], encoding[80], locked_by[256], draft[256]; + reply_to[MAX_REPLY_TO * 10], encoding[80], locked_by[256], draft[256]; char att_file[MAX_ATTACHMENTS][256]; /* retrieve message */ @@ -5588,30 +5569,29 @@ int el_lock_message(LOGBOOK * lbs, int message_id, char *user, BOOL lock) /*------------------------------------------------------------------*/ -int el_draft_message(LOGBOOK * lbs, int message_id, char *user, BOOL bdraft) +int el_draft_message(LOGBOOK *lbs, int message_id, char *user, BOOL bdraft) /* lock message for editing */ { int size; char date[80], attrib[MAX_N_ATTR][NAME_LENGTH], text[TEXT_SIZE], in_reply_to[80], - reply_to[MAX_REPLY_TO * 10], encoding[80], locked_by[256], draft[256]; + reply_to[MAX_REPLY_TO * 10], encoding[80], locked_by[256], draft[256]; char att_file[MAX_ATTACHMENTS][256]; - + /* retrieve message */ size = sizeof(text); el_retrieve(lbs, message_id, date, attr_list, attrib, lbs->n_attr, text, &size, in_reply_to, reply_to, att_file, encoding, locked_by, draft); - + /* submit message, undraft if bdraft == FALSE */ el_submit(lbs, message_id, TRUE, date, attr_list, attrib, lbs->n_attr, text, in_reply_to, reply_to, encoding, att_file, FALSE, locked_by, bdraft ? user : NULL); - + return EL_SUCCESS; } /*------------------------------------------------------------------*/ -void write_logfile(LOGBOOK * lbs, const char *text) -{ +void write_logfile(LOGBOOK *lbs, const char *text) { char file_name[MAX_PATH_LENGTH]; char str[MAX_PATH_LENGTH], unm[256]; int fh; @@ -5658,7 +5638,7 @@ void write_logfile(LOGBOOK * lbs, const char *text) strlcat(buf, text, sizeof(buf) - 1); #ifdef OS_WINNT - if (strlen(buf) > 0 && buf[strlen(buf) - 1] != '\n') + if (strlen(buf) > 0 && buf[strlen(buf) - 1] != '\n') strlcat(buf, "\r\n", sizeof(buf)); else if (strlen(buf) > 1 && buf[strlen(buf) - 2] != '\r') strlcpy(buf + strlen(buf) - 2, "\r\n", sizeof(buf) - (strlen(buf) - 2)); @@ -5708,10 +5688,9 @@ void write_logfile(LOGBOOK * lbs, const char *text) /*------------------------------------------------------------------*/ -char *html_tags[] = { "", "", "

", "
", "


", "" }; +char *html_tags[] = {"
", "", "

", "
", "


", ""}; -int is_html(char *s) -{ +int is_html(char *s) { char *str, *p; int i; @@ -5733,15 +5712,14 @@ int is_html(char *s) xfree(str); return TRUE; } - + xfree(str); return FALSE; } /*------------------------------------------------------------------*/ -int html_allowed(LOGBOOK * lbs) -{ +int html_allowed(LOGBOOK *lbs) { char str[80]; return (getcfg(lbs->name, "Allow HTML", str, sizeof(str)) && atoi(str) == 1); @@ -5750,13 +5728,12 @@ int html_allowed(LOGBOOK * lbs) /*------------------------------------------------------------------*/ -char *script_tags[] = { "onerror", "onabort", "onchange", "onclick", "ondblclick", "onfocus", "onkeydown", - "onkeyup", "onload", "onmousedonw", "onmousemove", "onmouseover", "onmouseup", - "onreset", "onselect", "onsubmit", "onunload", "javascript", NULL +char *script_tags[] = {"onerror", "onabort", "onchange", "onclick", "ondblclick", "onfocus", "onkeydown", + "onkeyup", "onload", "onmousedonw", "onmousemove", "onmouseover", "onmouseup", + "onreset", "onselect", "onsubmit", "onunload", "javascript", NULL }; -int is_script(char *s) -{ +int is_script(char *s) { char *str; int i; @@ -5779,10 +5756,9 @@ int is_script(char *s) /*------------------------------------------------------------------*/ -char *full_html_tags[] = { "", "", "", "" }; +char *full_html_tags[] = {"", "", "", ""}; -int is_full_html(char *file_name) -{ +int is_full_html(char *file_name) { char *str, *p; int i, fh, length; unsigned char *buf; @@ -5821,8 +5797,7 @@ int is_full_html(char *file_name) /*------------------------------------------------------------------*/ -int is_ascii(char *file_name) -{ +int is_ascii(char *file_name) { int i, fh, length; unsigned char *buf; @@ -5851,16 +5826,14 @@ int is_ascii(char *file_name) /*------------------------------------------------------------------*/ -int is_image(char *att) -{ +int is_image(char *att) { return (stristr(att, ".GIF") != NULL) || (stristr(att, ".JPG") != NULL) || (stristr(att, ".JPEG") != NULL) - || (stristr(att, ".PNG") != NULL) || (stristr(att, ".SVG") != NULL); + || (stristr(att, ".PNG") != NULL) || (stristr(att, ".SVG") != NULL); } /*------------------------------------------------------------------*/ -void strip_html(char *s) -{ +void strip_html(char *s) { char *p; while ((p = strchr(s, '<')) != NULL) { @@ -5873,8 +5846,7 @@ void strip_html(char *s) /*------------------------------------------------------------------*/ -int line_break(char *str, char *encoding) -{ +int line_break(char *str, char *encoding) { if (strieq(encoding, "plain") || strieq(encoding, "ELCode")) { return str[0] == '\n'; } @@ -5887,8 +5859,7 @@ int line_break(char *str, char *encoding) /*------------------------------------------------------------------*/ -void insert_breaks(char *str, int n, int size) -{ +void insert_breaks(char *str, int n, int size) { int i, j, i_last; i_last = 0; @@ -5920,8 +5891,7 @@ void insert_breaks(char *str, int n, int size) /*------------------------------------------------------------------*/ -void replace_inline_img(LOGBOOK * lbs, char *str) -{ +void replace_inline_img(LOGBOOK *lbs, char *str) { char *p, *pn, *pa, old[256], link[256], base_url[256], domain[256]; int index; @@ -5970,9 +5940,8 @@ void replace_inline_img(LOGBOOK * lbs, char *str) /*------------------------------------------------------------------*/ -void convert_elog_link(LOGBOOK * lbs, char *link, char *link_text, char *result, int absolute_link, - int message_id) -{ +void convert_elog_link(LOGBOOK *lbs, char *link, char *link_text, char *result, int absolute_link, + int message_id) { char str[256], base_url[256]; int i; @@ -6009,8 +5978,7 @@ void convert_elog_link(LOGBOOK * lbs, char *link, char *link_text, char *result, /*------------------------------------------------------------------*/ -void rsputs(const char *str) -{ +void rsputs(const char *str) { if (strlen_retbuf + (int) strlen(str) + 1 >= return_buffer_size) { return_buffer = xrealloc(return_buffer, return_buffer_size + (int) strlen(str) + 100000); memset(return_buffer + return_buffer_size, 0, (int) strlen(str) + 100000); @@ -6023,10 +5991,9 @@ void rsputs(const char *str) /*------------------------------------------------------------------*/ -char *key_list[] = { "http://", "https://", "ftp://", "mailto:", "elog:", "file://", "" }; +char *key_list[] = {"http://", "https://", "ftp://", "mailto:", "elog:", "file://", ""}; -void rsputs2(LOGBOOK * lbs, int absolute_link, const char *str) -{ +void rsputs2(LOGBOOK *lbs, int absolute_link, const char *str) { int i, j, k, l, n; char *p, *pd, link[1000], link_text[1000]; @@ -6089,18 +6056,18 @@ void rsputs2(LOGBOOK * lbs, int absolute_link, const char *str) for (n = 0; n < (int) strlen(link_text); n++) { switch (link_text[n]) { /* the translation for the search highliting */ - case '\001': - link_text[n] = '<'; - break; - case '\002': - link_text[n] = '>'; - break; - case '\003': - link_text[n] = '\"'; - break; - case '\004': - link_text[n] = ' '; - break; + case '\001': + link_text[n] = '<'; + break; + case '\002': + link_text[n] = '>'; + break; + case '\003': + link_text[n] = '\"'; + break; + case '\004': + link_text[n] = ' '; + break; } } @@ -6142,45 +6109,45 @@ void rsputs2(LOGBOOK * lbs, int absolute_link, const char *str) i += 3; } else switch (str[i]) { - case '&': - strcat(return_buffer, "&"); - j += 5; - break; - case '<': - strcat(return_buffer, "<"); - j += 4; - break; - case '>': - strcat(return_buffer, ">"); - j += 4; - break; + case '&': + strcat(return_buffer, "&"); + j += 5; + break; + case '<': + strcat(return_buffer, "<"); + j += 4; + break; + case '>': + strcat(return_buffer, ">"); + j += 4; + break; - /* suppress escape character '\' in front of HTML or ELCode tag */ - case '\\': - if (str[i + 1] != '<' && str[i + 1] != '[') + /* suppress escape character '\' in front of HTML or ELCode tag */ + case '\\': + if (str[i + 1] != '<' && str[i + 1] != '[') + return_buffer[j++] = str[i]; + break; + + /* the translation for the search highliting */ + case '\001': + strcat(return_buffer, "<"); + j++; + break; + case '\002': + strcat(return_buffer, ">"); + j++; + break; + case '\003': + strcat(return_buffer, "\""); + j++; + break; + case '\004': + strcat(return_buffer, " "); + j++; + break; + + default: return_buffer[j++] = str[i]; - break; - - /* the translation for the search highliting */ - case '\001': - strcat(return_buffer, "<"); - j++; - break; - case '\002': - strcat(return_buffer, ">"); - j++; - break; - case '\003': - strcat(return_buffer, "\""); - j++; - break; - case '\004': - strcat(return_buffer, " "); - j++; - break; - - default: - return_buffer[j++] = str[i]; } } } @@ -6191,30 +6158,29 @@ void rsputs2(LOGBOOK * lbs, int absolute_link, const char *str) /*------------------------------------------------------------------*/ -void rsputs3(const char *text) -{ +void rsputs3(const char *text) { int i; char str[2]; str[1] = 0; for (i = 0; i < (int) strlen(text); i++) { switch (text[i]) { - case '<': - rsputs("<"); - break; - case '>': - rsputs(">"); - break; - case '&': - rsputs("&"); - break; - case '\"': - rsputs("""); - break; + case '<': + rsputs("<"); + break; + case '>': + rsputs(">"); + break; + case '&': + rsputs("&"); + break; + case '\"': + rsputs("""); + break; - default: - str[0] = text[i]; - rsputs(str); + default: + str[0] = text[i]; + rsputs(str); } } } @@ -6228,112 +6194,111 @@ typedef struct { PATTERN_LIST pattern_list[] = { - /* smileys */ - {":))", "\"Happy\""}, - {":-))", "\"Happy\""}, - {":)", "\"Smile\""}, - {":-)", "\"Smile\""}, - {":(", "\"Frown\""}, - {":-(", "\"Frown\""}, - {";)", "\"Wink\""}, - {";-)", "\"Wink\""}, - {":d", "\"Big"}, - {"?-)", "\"Confused\""}, - {";(", "\"Crying\""}, - {";-(", "\"Crying\""}, - {":]", "\"Pleased\""}, - {":-]", "\"Pleased\""}, - {":o", "\"Yawn\""}, - {":-o", "\"Yawn\""}, - {"8-)", "\"Cool\""}, - {"8o", "\"Astonished\""}, - {"x-(", "\"Mad\""}, - {":p", "\"Tongue\""}, - {":-p", "\"Tongue\""}, + /* smileys */ + {":))", "\"Happy\""}, + {":-))", "\"Happy\""}, + {":)", "\"Smile\""}, + {":-)", "\"Smile\""}, + {":(", "\"Frown\""}, + {":-(", "\"Frown\""}, + {";)", "\"Wink\""}, + {";-)", "\"Wink\""}, + {":d", "\"Big"}, + {"?-)", "\"Confused\""}, + {";(", "\"Crying\""}, + {";-(", "\"Crying\""}, + {":]", "\"Pleased\""}, + {":-]", "\"Pleased\""}, + {":o", "\"Yawn\""}, + {":-o", "\"Yawn\""}, + {"8-)", "\"Cool\""}, + {"8o", "\"Astonished\""}, + {"x-(", "\"Mad\""}, + {":p", "\"Tongue\""}, + {":-p", "\"Tongue\""}, - /* formatting */ - {"[b]", ""}, - {"[/b]", ""}, - {"[u]", ""}, - {"[/u]", ""}, - {"[i]", ""}, - {"[/i]", ""}, - {"[center]", "
"}, - {"[/center]", "
"}, - {"[color=", ""}, - {"[/color]", ""}, - {"[size=", ""}, - {"[/size]", ""}, - {"[font=", ""}, - {"[/font]", ""}, - {"\r\n[code]", "
"},
-   {"[code]", "
"},
-   {"[/code]\r\n", "
"}, - {"[/code]", "
"}, - {"\r\n[code1]", "
"},
-   {"[code1]", "
"},
-   {"[/code1]\r\n", "
"}, - {"[/code1]", "
"}, + /* formatting */ + {"[b]", ""}, + {"[/b]", ""}, + {"[u]", ""}, + {"[/u]", ""}, + {"[i]", ""}, + {"[/i]", ""}, + {"[center]", "
"}, + {"[/center]", "
"}, + {"[color=", ""}, + {"[/color]", ""}, + {"[size=", ""}, + {"[/size]", ""}, + {"[font=", ""}, + {"[/font]", ""}, + {"\r\n[code]", "
"},
+        {"[code]",       "
"},
+        {"[/code]\r\n",  "
"}, + {"[/code]", "
"}, + {"\r\n[code1]", "
"},
+        {"[code1]",      "
"},
+        {"[/code1]\r\n", "
"}, + {"[/code1]", "
"}, - /* lists */ - {"[list]\r", "
    "}, - {"[list]", "
      "}, - {"[*]", "
    • "}, - {"[/list]\r", ""}, // either
    or - {"[/list]", ""}, - {"[list=", "
      "}, + /* lists */ + {"[list]\r", "
        "}, + {"[list]", "
          "}, + {"[*]", "
        • "}, + {"[/list]\r", ""}, // either
        or
    + {"[/list]", ""}, + {"[list=", "
      "}, - /* headings */ - {"[h1]", "

      "}, - {"[/h1]", "

      "}, - {"[h2]", "

      "}, - {"[/h2]", "

      "}, - {"[h3]", "

      "}, - {"[/h3]", "

      "}, + /* headings */ + {"[h1]", "

      "}, + {"[/h1]", "

      "}, + {"[h2]", "

      "}, + {"[/h2]", "

      "}, + {"[h3]", "

      "}, + {"[/h3]", "

      "}, - /* URLs */ - {"[url=", "
      %s"}, - {"[url]", "%s"}, - {"[/url]", ""}, - {"[email]", "%s"}, - {"[/email]", ""}, - {"[img]", ""}, - {"[/img]", ""}, + /* URLs */ + {"[url=", "%s"}, + {"[url]", "%s"}, + {"[/url]", ""}, + {"[email]", "%s"}, + {"[/email]", ""}, + {"[img]", ""}, + {"[/img]", ""}, - /* quote */ - {"[quote=", - "
      %s:
      "}, - {"[quote]", - "
      %s:
      "}, - {"[/quote]\r", "

      \r\n"}, - {"[/quote]", "
      \r\n"}, + /* quote */ + {"[quote=", + "
      %s:
      "}, + {"[quote]", + "
      %s:
      "}, + {"[/quote]\r", "

      \r\n"}, + {"[/quote]", "
      \r\n"}, - /* table */ - {"[table]", "
      "}, - {"[table ", "
      "}, - {"|-", "
      "}, - {"|", ""}, - {"[/table]", "
      "}, + /* table */ + {"[table]", "
      "}, + {"[table ", "
      "}, + {"|-", "
      "}, + {"|", ""}, + {"[/table]", "
      "}, - /* horizontal line */ - {"[line]", "
      "}, + /* horizontal line */ + {"[line]", "
      "}, - /* anchor */ - {"[anchor]", ""}, - {"[/anchor]", ""}, - {"", ""} + /* anchor */ + {"[anchor]", ""}, + {"[/anchor]", ""}, + {"", ""} }; char -*email_quote_table = - "
      %s:
      "; + *email_quote_table = + "\n\n"); /*---- entry form ----*/ @@ -10979,12 +10921,12 @@ void show_edit_form(LOGBOOK * lbs, int message_id, BOOL breply, BOOL bedit, BOOL if (j < n_moptions) rsprintf - ("\n", - str, str, user_list[i]); + ("\n", + str, str, user_list[i]); else rsprintf - ("\n", - str, str, user_list[i]); + ("\n", + str, str, user_list[i]); rsprintf("\n", str, user_list[i]); rsprintf("\n"); @@ -11036,12 +10978,12 @@ void show_edit_form(LOGBOOK * lbs, int message_id, BOOL breply, BOOL bedit, BOOL if (j < n_moptions) rsprintf - ("\n", - str, str, user_list[i]); + ("\n", + str, str, user_list[i]); else rsprintf - ("\n", - str, str, user_list[i]); + ("\n", + str, str, user_list[i]); rsprintf("\n", str, user_list[i]); rsprintf("\n"); @@ -11093,8 +11035,8 @@ void show_edit_form(LOGBOOK * lbs, int message_id, BOOL breply, BOOL bedit, BOOL strencode2(str, attrib[index], sizeof(str)); rsprintf - ("\n", - fid, input_size, input_maxlen, ua, str); + ("\n", + fid, input_size, input_maxlen, ua, str); fid[0] = 0; rsprintf("\n"); @@ -11123,21 +11065,21 @@ void show_edit_form(LOGBOOK * lbs, int message_id, BOOL breply, BOOL bedit, BOOL sprintf(str, "%s_2", ua); rsprintf("\n"); rsprintf - ("\" checked onChange=\"mod();\">\n", - str, ua); + ("\" checked onChange=\"mod();\">\n", + str, ua); rsprintf("\n", str, loc("keep original values")); rsprintf("\n"); } - /* display checkbox */ + /* display checkbox */ else if (atoi(attrib[index]) == 1) rsprintf - ("\n", - title, class_value, ua); + ("\n", + title, class_value, ua); else rsprintf - ("\n", - title, class_value, ua); + ("\n", + title, class_value, ua); } else { sprintf(str, "extend_%d", index); @@ -11150,12 +11092,12 @@ void show_edit_form(LOGBOOK * lbs, int message_id, BOOL breply, BOOL bedit, BOOL if (attr_flags[index] & (AF_MULTI | AF_MUSERLIST | AF_MUSEREMAIL)) rsprintf - ("\n", - input_maxlen, ua, attrib[index]); + ("\n", + input_maxlen, ua, attrib[index]); else rsprintf - ("\n", - input_maxlen, ua, attrib[index]); + ("\n", + input_maxlen, ua, attrib[index]); rsprintf("\n", index); rsprintf("\n"); @@ -11170,8 +11112,8 @@ void show_edit_form(LOGBOOK * lbs, int message_id, BOOL breply, BOOL bedit, BOOL rsprintf("\n"); sprintf(str, "%s_keep", ua); rsprintf - ("\" checked onChange=\"mod();\">\n", - str, ua); + ("\" checked onChange=\"mod();\">\n", + str, ua); rsprintf("\n", str, loc("keep original values")); rsprintf("\n"); @@ -11200,12 +11142,12 @@ void show_edit_form(LOGBOOK * lbs, int message_id, BOOL breply, BOOL bedit, BOOL if (j < n_moptions) rsprintf - ("\n", - str, str, attr_options[index][i]); + ("\n", + str, str, attr_options[index][i]); else rsprintf - ("\n", - str, str, attr_options[index][i]); + ("\n", + str, str, attr_options[index][i]); rsprintf("\n", str, attr_options[index][i]); rsprintf("\n"); @@ -11220,8 +11162,8 @@ void show_edit_form(LOGBOOK * lbs, int message_id, BOOL breply, BOOL bedit, BOOL if (attr_flags[index] & AF_EXTENDABLE) { sprintf(str, loc("Add %s"), attr_list[index]); rsprintf - ("\n", - index, str); + ("\n", + index, str); } rsprintf("\n"); @@ -11246,12 +11188,12 @@ void show_edit_form(LOGBOOK * lbs, int message_id, BOOL breply, BOOL bedit, BOOL if (strieq(attrib[index], attr_options[index][i]) || strieq(str, enc_attr)) rsprintf - ("\n", - str, ua, str); + ("\n", + str, ua, str); else rsprintf - ("\n", - str, ua, str); + ("\n", + str, ua, str); rsprintf("\n", str, str); @@ -11264,8 +11206,8 @@ void show_edit_form(LOGBOOK * lbs, int message_id, BOOL breply, BOOL bedit, BOOL if (attr_flags[index] & AF_EXTENDABLE) { sprintf(str, loc("Add %s"), attr_list[index]); rsprintf - ("\n", - index, str); + ("\n", + index, str); } rsprintf("\n"); @@ -11278,8 +11220,8 @@ void show_edit_form(LOGBOOK * lbs, int message_id, BOOL breply, BOOL bedit, BOOL for (i = 0; i < MAX_N_LIST && attr_options[index][i][0]; i++) { if (strstr(attrib[index], attr_options[index][i])) rsprintf - ("\n"); @@ -11420,7 +11362,8 @@ void show_edit_form(LOGBOOK * lbs, int message_id, BOOL breply, BOOL bedit, BOOL rsprintf(" "); ricon("code", loc("Insert code CTRL+O"), "elcode(document.form1.Text, 'CODE','')"); - rsprintf(" \"%s\"\n"); @@ -11496,12 +11439,13 @@ void show_edit_form(LOGBOOK * lbs, int message_id, BOOL breply, BOOL bedit, BOOL if (getcfg(lbs->name, "Message comment", comment, sizeof(comment)) && !message_id) { rsprintf("\n", comment); } - + if (getcfg(lbs->name, "Reply comment", comment, sizeof(comment)) && breply) { rsprintf("\n", comment); } - - rsprintf("
      %s:
      "; -void rsputs_elcode(LOGBOOK * lbs, BOOL email_notify, const char *str) -{ +void rsputs_elcode(LOGBOOK *lbs, BOOL email_notify, const char *str) { int i, j, k, l, m, elcode_disabled, elcode_disabled1, ordered_list, substituted, inside_table, - smileys_enabled; + smileys_enabled; char *p, *pd, link[1000], link_text[1000], tmp[1000], attrib[1000], hattrib[1000], value[1000], - subst[1000], base_url[256], param[256], *lstr, domain[256]; + subst[1000], base_url[256], param[256], *lstr, domain[256]; if (strlen_retbuf + (int) (2 * strlen(str) + 1000) >= return_buffer_size) { return_buffer = xrealloc(return_buffer, return_buffer_size + 100000); @@ -6538,9 +6503,7 @@ void rsputs_elcode(LOGBOOK * lbs, BOOL email_notify, const char *str) j += strlen(return_buffer + j); i += strlen(pattern_list[l].pattern) - 1; // 1 gets added in for loop... } - } - - else if (strstr(pattern_list[l].subst, "%#")) { + } else if (strstr(pattern_list[l].subst, "%#")) { /* special substitutions */ if (pattern_list[l].pattern[strlen(pattern_list[l].pattern) - 1] == '=') { @@ -6612,7 +6575,7 @@ void rsputs_elcode(LOGBOOK * lbs, BOOL email_notify, const char *str) } } - /* add http:// if missing */ + /* add http:// if missing */ else if ((!strnieq(attrib, "http://", 7) && !strnieq(attrib, "https://", 8)) && strstr(pattern_list[l].subst, "mailto") == NULL && strstr(pattern_list[l].subst, "img") == NULL && @@ -6741,50 +6704,50 @@ void rsputs_elcode(LOGBOOK * lbs, BOOL email_notify, const char *str) i += 3; } else switch (str[i]) { - case '\r': - if (!elcode_disabled && !elcode_disabled1 && !inside_table) { - strcat(return_buffer, "
      \r\n"); - j += 8; - } else { - strcat(return_buffer, "\r\n"); - j += 2; - } - break; - case '\n': - break; - case '&': - strcat(return_buffer, "&"); - j += 5; - break; - case '<': - strcat(return_buffer, "<"); - j += 4; - break; - case '>': - strcat(return_buffer, ">"); - j += 4; - break; + case '\r': + if (!elcode_disabled && !elcode_disabled1 && !inside_table) { + strcat(return_buffer, "
      \r\n"); + j += 8; + } else { + strcat(return_buffer, "\r\n"); + j += 2; + } + break; + case '\n': + break; + case '&': + strcat(return_buffer, "&"); + j += 5; + break; + case '<': + strcat(return_buffer, "<"); + j += 4; + break; + case '>': + strcat(return_buffer, ">"); + j += 4; + break; - /* the translation for the search highliting */ - case '\001': - strcat(return_buffer, "<"); - j++; - break; - case '\002': - strcat(return_buffer, ">"); - j++; - break; - case '\003': - strcat(return_buffer, "\""); - j++; - break; - case '\004': - strcat(return_buffer, " "); - j++; - break; + /* the translation for the search highliting */ + case '\001': + strcat(return_buffer, "<"); + j++; + break; + case '\002': + strcat(return_buffer, ">"); + j++; + break; + case '\003': + strcat(return_buffer, "\""); + j++; + break; + case '\004': + strcat(return_buffer, " "); + j++; + break; - default: - return_buffer[j++] = str[i]; + default: + return_buffer[j++] = str[i]; } } @@ -6795,8 +6758,7 @@ void rsputs_elcode(LOGBOOK * lbs, BOOL email_notify, const char *str) /*------------------------------------------------------------------*/ -void rsprintf(const char *format, ...) -{ +void rsprintf(const char *format, ...) { va_list argptr; char str[10000]; @@ -6817,8 +6779,7 @@ void rsprintf(const char *format, ...) /*------------------------------------------------------------------*/ -void flush_return_buffer() -{ +void flush_return_buffer() { #ifdef HAVE_SSL send_with_timeout(_ssl_con, _sock, return_buffer, strlen_retbuf); #else @@ -6832,16 +6793,14 @@ void flush_return_buffer() /* Parameter handling functions similar to setenv/getenv */ -void initparam() -{ +void initparam() { memset(_param, 0, sizeof(_param)); memset(_value, 0, sizeof(_value)); _mtext[0] = 0; _cmdline[0] = 0; } -int setparam(char *param, char *value) -{ +int setparam(char *param, char *value) { int i; char str[10000]; @@ -6903,8 +6862,7 @@ int setparam(char *param, char *value) return 1; } -char *getparam(char *param) -{ +char *getparam(char *param) { int i; if (strieq(param, "text")) @@ -6923,8 +6881,7 @@ char *getparam(char *param) return NULL; } -BOOL enumparam(int n, char *param, char *value) -{ +BOOL enumparam(int n, char *param, char *value) { param[0] = value[0] = 0; if (n >= MAX_PARAM) @@ -6939,8 +6896,7 @@ BOOL enumparam(int n, char *param, char *value) return TRUE; } -BOOL isparam(char *param) -{ +BOOL isparam(char *param) { int i; if (strieq(param, "text")) @@ -6956,8 +6912,7 @@ BOOL isparam(char *param) return FALSE; } -void unsetparam(char *param) -{ +void unsetparam(char *param) { int i; for (i = 0; i < MAX_PARAM; i++) @@ -6976,8 +6931,7 @@ void unsetparam(char *param) /*------------------------------------------------------------------*/ -void extract_path(char *str) -{ +void extract_path(char *str) { char *p, str2[256]; p = NULL; @@ -7002,8 +6956,7 @@ void extract_path(char *str) /*------------------------------------------------------------------*/ -void extract_host(char *str) -{ +void extract_host(char *str) { char *p, *ph, str2[256]; p = NULL; @@ -7026,7 +6979,7 @@ void extract_host(char *str) /*------------------------------------------------------------------*/ -void compose_base_url(LOGBOOK * lbs, char *base_url, int size, BOOL email_notify) +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) @@ -7070,8 +7023,7 @@ void compose_base_url(LOGBOOK * lbs, char *base_url, int size, BOOL email_notify /*------------------------------------------------------------------*/ -void set_location(LOGBOOK * lbs, char *rp) -{ +void set_location(LOGBOOK *lbs, char *rp) { char str[NAME_LENGTH], group[NAME_LENGTH], list[NAME_LENGTH], *p, rel_path[NAME_LENGTH]; int i; @@ -7243,8 +7195,7 @@ void set_location(LOGBOOK * lbs, char *rp) /*------------------------------------------------------------------*/ -void set_redir(LOGBOOK * lbs, char *redir) -{ +void set_redir(LOGBOOK *lbs, char *redir) { char str[NAME_LENGTH]; str[0] = 0; @@ -7264,8 +7215,7 @@ void set_redir(LOGBOOK * lbs, char *redir) /*------------------------------------------------------------------*/ -void set_cookie(LOGBOOK * lbs, char *name, char *value, BOOL global, char *expiration) -{ +void set_cookie(LOGBOOK *lbs, char *name, char *value, BOOL global, char *expiration) { char lb_name[256], str[NAME_LENGTH], format[80]; double exp; time_t now; @@ -7325,18 +7275,16 @@ void set_cookie(LOGBOOK * lbs, char *name, char *value, BOOL global, char *expir /*------------------------------------------------------------------*/ -const char *git_revision() -{ +const char *git_revision() { const char *p = _git_revision; if (strrchr(p, '-')) - p = strrchr(p, '-')+2; + p = strrchr(p, '-') + 2; return p; } /*------------------------------------------------------------------*/ -void redirect(LOGBOOK * lbs, char *rel_path) -{ +void redirect(LOGBOOK *lbs, char *rel_path) { /* redirect */ rsprintf("HTTP/1.1 302 Found\r\n"); rsprintf("Server: ELOG HTTP %s-%s\r\n", VERSION, git_revision()); @@ -7432,7 +7380,7 @@ int scan_attributes(char *logbook) and attr_flags arrays */ { char list[10000], str[NAME_LENGTH], str2[NAME_LENGTH], type[NAME_LENGTH], - tmp_list[MAX_N_ATTR][NAME_LENGTH]; + tmp_list[MAX_N_ATTR][NAME_LENGTH]; int i, j, n, m, n_options; if (getcfg(logbook, "Attributes", list, sizeof(list))) { @@ -7570,8 +7518,7 @@ int scan_attributes(char *logbook) /*------------------------------------------------------------------*/ -void show_http_header(LOGBOOK * lbs, BOOL expires, char *cookie) -{ +void show_http_header(LOGBOOK *lbs, BOOL expires, char *cookie) { char str[256]; rsprintf("HTTP/1.1 200 Document follows\r\n"); @@ -7598,8 +7545,7 @@ void show_http_header(LOGBOOK * lbs, BOOL expires, char *cookie) rsprintf("\r\n"); } -void show_plain_header(int size, char *file_name) -{ +void show_plain_header(int size, char *file_name) { /* header */ rsprintf("HTTP/1.1 200 Document follows\r\n"); rsprintf("Server: ELOG HTTP %s-%s\r\n", VERSION, git_revision()); @@ -7618,9 +7564,8 @@ void show_plain_header(int size, char *file_name) rsprintf("\r\n"); } -void show_html_header(LOGBOOK * lbs, BOOL expires, char *title, BOOL close_head, BOOL rss_feed, char *cookie, - int embed_css, int refresh) -{ +void show_html_header(LOGBOOK *lbs, BOOL expires, char *title, BOOL close_head, BOOL rss_feed, char *cookie, + int embed_css, int refresh) { int i, n; char css[1000], css_base[1000], str[1000], media[1000], file_name[256]; char css_list[MAX_N_LIST][NAME_LENGTH]; @@ -7662,16 +7607,16 @@ void show_html_header(LOGBOOK * lbs, BOOL expires, char *title, BOOL close_head, fseek(f, 0, SEEK_END); int size = TELL(fileno(f)); fseek(f, 0, SEEK_SET); - + char *buf = xmalloc(size + 100); fread(buf, 1, size, f); buf[size] = 0; fclose(f); - + rsprintf("\n"); - + xfree(buf); } } else { @@ -7699,7 +7644,7 @@ void show_html_header(LOGBOOK * lbs, BOOL expires, char *title, BOOL close_head, } else rsprintf("\n", css_base, css); } - + if (!embed_css) { rsprintf("\n"); rsprintf("\n"); @@ -7715,8 +7660,7 @@ 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")) @@ -7731,9 +7675,8 @@ void show_browser(char *browser) rsprintf("var browser = \"Other\";\n"); } -void show_standard_header(LOGBOOK * lbs, BOOL expires, char *title, char *path, BOOL rss_feed, char *cookie, - char *script, int refresh) -{ +void show_standard_header(LOGBOOK *lbs, BOOL expires, char *title, char *path, BOOL rss_feed, char *cookie, + char *script, int refresh) { if (script) { show_html_header(lbs, expires, title, FALSE, rss_feed, cookie, FALSE, refresh); @@ -7764,8 +7707,7 @@ void show_standard_header(LOGBOOK * lbs, BOOL expires, char *title, char *path, /*------------------------------------------------------------------*/ -void show_upgrade_page(LOGBOOK * lbs) -{ +void show_upgrade_page(LOGBOOK *lbs) { char str[1000]; show_html_header(lbs, FALSE, "ELOG Upgrade Information", TRUE, FALSE, NULL, FALSE, 0); @@ -7831,8 +7773,7 @@ LBLIST *get_subgroup(LBLIST pgrp, char *logbook) /*------------------------------------------------------------------*/ -LBLIST get_logbook_hierarchy(void) -{ +LBLIST get_logbook_hierarchy(void) { int i, j, n, m, flag; char str[1000], grpname[256], grpmembers[1000]; LBLIST root, *pgrp; @@ -7950,8 +7891,7 @@ LBLIST get_logbook_hierarchy(void) /*------------------------------------------------------------------*/ -void free_logbook_hierarchy(LBLIST root) -{ +void free_logbook_hierarchy(LBLIST root) { int i; for (i = 0; i < root->n_members; i++) { @@ -7988,8 +7928,7 @@ BOOL is_logbook_in_group(LBLIST pgrp, char *logbook) /*------------------------------------------------------------------*/ -void change_logbook_in_group(LOGBOOK * lbs, char *new_name) -{ +void change_logbook_in_group(LOGBOOK *lbs, char *new_name) { int i, j, n, flag; char str[1000], grpname[256], grpmembers[1000]; char grplist[MAX_N_LIST][NAME_LENGTH]; @@ -8024,8 +7963,7 @@ void change_logbook_in_group(LOGBOOK * lbs, char *new_name) /*------------------------------------------------------------------*/ -void add_logbook_to_group(LOGBOOK * lbs, char *new_name) -{ +void add_logbook_to_group(LOGBOOK *lbs, char *new_name) { int i, j, n, flag; char str[1000], grpname[256], grpmembers[1000]; char grplist[MAX_N_LIST][NAME_LENGTH]; @@ -8060,8 +7998,7 @@ void add_logbook_to_group(LOGBOOK * lbs, char *new_name) /*------------------------------------------------------------------*/ -void show_standard_title(LOGBOOK * lbs, char *text, int printable) -{ +void show_standard_title(LOGBOOK *lbs, char *text, int printable) { char str[NAME_LENGTH], ref[256], sclass[32], comment[256], full_name[256], url[256], logbook[256]; int i, j, level; LBLIST phier, pnode, pnext, flb; @@ -8074,7 +8011,7 @@ void show_standard_title(LOGBOOK * lbs, char *text, int printable) if (printable) rsprintf - ("\n\n"); + ("
      \n\n"); else rsprintf("
      \n\n"); @@ -8224,7 +8161,7 @@ void show_standard_title(LOGBOOK * lbs, char *text, int printable) rsprintf("%s", str); } else rsprintf("\"ELOG"); - + if (getcfg(logbook, "Title image URL", str, sizeof(str))) rsprintf("\n"); @@ -8235,8 +8172,7 @@ void show_standard_title(LOGBOOK * lbs, char *text, int printable) /*------------------------------------------------------------------*/ -void show_top_text(LOGBOOK * lbs) -{ +void show_top_text(LOGBOOK *lbs) { char str[NAME_LENGTH]; int size; @@ -8271,8 +8207,7 @@ void show_top_text(LOGBOOK * lbs) /*------------------------------------------------------------------*/ -void show_bottom_text(LOGBOOK * lbs) -{ +void show_bottom_text(LOGBOOK *lbs) { char str[NAME_LENGTH], slist[20][NAME_LENGTH], svalue[20][NAME_LENGTH]; int i, size; @@ -8317,14 +8252,13 @@ void show_bottom_text(LOGBOOK * lbs) } else /* add little logo */ rsprintf - ("
      ELOG V%s-%s
      ", - loc("Goto ELOG home page"), VERSION, git_revision()); + ("
      ELOG V%s-%s
      ", + loc("Goto ELOG home page"), VERSION, git_revision()); } /*------------------------------------------------------------------*/ -void show_bottom_text_login(LOGBOOK * lbs) -{ +void show_bottom_text_login(LOGBOOK *lbs) { char str[NAME_LENGTH], slist[20][NAME_LENGTH], svalue[20][NAME_LENGTH]; int i, size; @@ -8371,14 +8305,13 @@ void show_bottom_text_login(LOGBOOK * lbs) } else /* add little logo */ rsprintf - ("
      ELOG V%s-%s
      ", - loc("Goto ELOG home page"), VERSION, git_revision()); + ("
      ELOG V%s-%s
      ", + loc("Goto ELOG home page"), VERSION, git_revision()); } /*------------------------------------------------------------------*/ -void show_error(char *error) -{ +void show_error(char *error) { char str[256]; /* header */ @@ -8417,9 +8350,8 @@ void show_error(char *error) /*------------------------------------------------------------------*/ -void show_query(LOGBOOK * lbs, char *title, char *query_string, char *button1, char *button1_url, - char *button2, char *button2_url) -{ +void show_query(LOGBOOK *lbs, char *title, char *query_string, char *button1, char *button1_url, + char *button2, char *button2_url) { show_standard_header(lbs, TRUE, "ELog query", title, FALSE, NULL, NULL, 0); rsprintf("
      "); @@ -8445,8 +8377,7 @@ void show_query(LOGBOOK * lbs, char *title, char *query_string, char *button1, c /*------------------------------------------------------------------*/ -void set_sid_cookie(LOGBOOK * lbs, char *sid, char *full_name) -{ +void set_sid_cookie(LOGBOOK *lbs, char *sid, char *full_name) { char str[256], lb_name[256], exp[80]; BOOL global; @@ -8490,8 +8421,7 @@ void set_sid_cookie(LOGBOOK * lbs, char *sid, char *full_name) /*------------------------------------------------------------------*/ -void remove_all_login_cookies(LOGBOOK * lbs) -{ +void remove_all_login_cookies(LOGBOOK *lbs) { int i; rsprintf("HTTP/1.1 302 Found\r\n"); @@ -8512,8 +8442,7 @@ void remove_all_login_cookies(LOGBOOK * lbs) /*------------------------------------------------------------------*/ -int exist_file(char *file_name) -{ +int exist_file(char *file_name) { int fh; fh = open(file_name, O_RDONLY | O_BINARY); @@ -8526,8 +8455,7 @@ int exist_file(char *file_name) /*------------------------------------------------------------------*/ -void send_file_direct(char *file_name) -{ +void send_file_direct(char *file_name) { int fh, i, length, delta; char str[MAX_PATH_LENGTH], dir[MAX_PATH_LENGTH], charset[80]; @@ -8612,166 +8540,161 @@ void send_file_direct(char *file_name) /*------------------------------------------------------------------*/ -void strencode(char *text) -{ +void strencode(char *text) { int i; for (i = 0; i < (int) strlen(text); i++) { switch (text[i]) { - case '\n': - rsprintf("
      \n"); - break; - case '<': - rsprintf("<"); - break; - case '>': - rsprintf(">"); - break; - case '&': - rsprintf("&"); - break; - case '\"': - rsprintf("""); - break; - case ' ': - rsprintf(" "); - break; + case '\n': + rsprintf("
      \n"); + break; + case '<': + rsprintf("<"); + break; + case '>': + rsprintf(">"); + break; + case '&': + rsprintf("&"); + break; + case '\"': + rsprintf("""); + break; + case ' ': + rsprintf(" "); + break; - /* the translation for the search highliting */ + /* the translation for the search highliting */ - case '\001': - rsprintf("<"); - break; - case '\002': - rsprintf(">"); - break; - case '\003': - rsprintf("\""); - break; - case '\004': - rsprintf(" "); - break; + case '\001': + rsprintf("<"); + break; + case '\002': + rsprintf(">"); + break; + case '\003': + rsprintf("\""); + break; + case '\004': + rsprintf(" "); + break; - default: - rsprintf("%c", text[i]); + default: + rsprintf("%c", text[i]); } } } /*------------------------------------------------------------------*/ -void strencode_nouml(char *text) -{ +void strencode_nouml(char *text) { int i; for (i = 0; i < (int) strlen(text); i++) { switch (text[i]) { - case '\n': - rsprintf("
      \n"); - break; - case '<': - rsprintf("<"); - break; - case '>': - rsprintf(">"); - break; - case '\"': - rsprintf("""); - break; - case ' ': - rsprintf(" "); - break; + case '\n': + rsprintf("
      \n"); + break; + case '<': + rsprintf("<"); + break; + case '>': + rsprintf(">"); + break; + case '\"': + rsprintf("""); + break; + case ' ': + rsprintf(" "); + break; - /* the translation for the search highliting */ + /* the translation for the search highliting */ - case '\001': - rsprintf("<"); - break; - case '\002': - rsprintf(">"); - break; - case '\003': - rsprintf("\""); - break; - case '\004': - rsprintf(" "); - break; + case '\001': + rsprintf("<"); + break; + case '\002': + rsprintf(">"); + break; + case '\003': + rsprintf("\""); + break; + case '\004': + rsprintf(" "); + break; - default: - rsprintf("%c", text[i]); + default: + rsprintf("%c", text[i]); } } } /*------------------------------------------------------------------*/ -void xmlencode(char *text) -{ +void xmlencode(char *text) { int i; for (i = 0; i < (int) strlen(text); i++) { switch (text[i]) { - case '<': - rsprintf("<"); - break; - case '>': - rsprintf(">"); - break; - case '&': - rsprintf("&"); - break; - case '\"': - rsprintf("""); - break; + case '<': + rsprintf("<"); + break; + case '>': + rsprintf(">"); + break; + case '&': + rsprintf("&"); + break; + case '\"': + rsprintf("""); + break; - default: - rsprintf("%c", text[i]); + default: + rsprintf("%c", text[i]); } } } /*------------------------------------------------------------------*/ -void strencode2(char *b, const char *text, int size) -{ +void strencode2(char *b, const char *text, int size) { int i; *b = 0; for (i = 0; i < (int) strlen(text); i++) { switch (text[i]) { - case '\n': - if (strlen(b) + 5 >= (unsigned int) size) - return; - strcat(b, "
      \n"); - break; - case '<': - if (strlen(b) + 4 >= (unsigned int) size) - return; - strcat(b, "<"); - break; - case '>': - if (strlen(b) + 4 >= (unsigned int) size) - return; - strcat(b, ">"); - break; - case '\"': - if (strlen(b) + 6 >= (unsigned int) size) - return; - strcat(b, """); - break; - default: - if (strlen(b) + 1 >= (unsigned int) size) - return; - sprintf(b + strlen(b), "%c", text[i]); + case '\n': + if (strlen(b) + 5 >= (unsigned int) size) + return; + strcat(b, "
      \n"); + break; + case '<': + if (strlen(b) + 4 >= (unsigned int) size) + return; + strcat(b, "<"); + break; + case '>': + if (strlen(b) + 4 >= (unsigned int) size) + return; + strcat(b, ">"); + break; + case '\"': + if (strlen(b) + 6 >= (unsigned int) size) + return; + strcat(b, """); + break; + default: + if (strlen(b) + 1 >= (unsigned int) size) + return; + sprintf(b + strlen(b), "%c", text[i]); } } } /*------------------------------------------------------------------*/ -int build_subst_list(LOGBOOK * lbs, char list[][NAME_LENGTH], char value[][NAME_LENGTH], - char attrib[][NAME_LENGTH], BOOL format_date) -{ +int build_subst_list(LOGBOOK *lbs, char list[][NAME_LENGTH], char value[][NAME_LENGTH], + char attrib[][NAME_LENGTH], BOOL format_date) { int i; char str[NAME_LENGTH], format[256], full_name[256], user_email[256]; time_t t; @@ -8792,23 +8715,23 @@ int build_subst_list(LOGBOOK * lbs, char list[][NAME_LENGTH], char value[][NAME_ sprintf(str, "Date format %s", attr_list[i]); if (!getcfg(lbs->name, str, format, sizeof(format))) if (!getcfg(lbs->name, "Date format", format, sizeof(format))) - strcpy(format, DEFAULT_DATE_FORMAT); + strcpy(format, DEFAULT_DATE_FORMAT); my_strftime(value[i], NAME_LENGTH, format, ts); } else if ((attr_flags[i] & AF_DATETIME) && format_date) { - + t = (time_t) atoi(attrib[i]); ts = localtime(&t); assert(ts); - + sprintf(str, "Time format %s", attr_list[i]); if (!getcfg(lbs->name, str, format, sizeof(format))) if (!getcfg(lbs->name, "Time format", format, sizeof(format))) strcpy(format, DEFAULT_TIME_FORMAT); - + my_strftime(value[i], NAME_LENGTH, format, ts); - + } else strcpy(value[i], attrib[i]); } else @@ -8852,7 +8775,7 @@ int build_subst_list(LOGBOOK * lbs, char list[][NAME_LENGTH], char value[][NAME_ if (lbs) { strcpy(list[i], "logbook"); strlcpy(value[i++], lbs->name, NAME_LENGTH); - + /* add logbook */ strcpy(list[i], "elogbook"); strlcpy(value[i++], lbs->name_enc, NAME_LENGTH); @@ -8897,15 +8820,13 @@ int build_subst_list(LOGBOOK * lbs, char list[][NAME_LENGTH], char value[][NAME_ /*------------------------------------------------------------------*/ -void add_subst_list(char list[][NAME_LENGTH], char value[][NAME_LENGTH], char *item, char *str, int *i) -{ +void add_subst_list(char list[][NAME_LENGTH], char value[][NAME_LENGTH], char *item, char *str, int *i) { strlcpy(list[*i], item, NAME_LENGTH); strlcpy(value[(*i)++], str, NAME_LENGTH); } -void add_subst_time(LOGBOOK * lbs, char list[][NAME_LENGTH], char value[][NAME_LENGTH], char *item, - char *date, int *i, int flags) -{ +void add_subst_time(LOGBOOK *lbs, char list[][NAME_LENGTH], char value[][NAME_LENGTH], char *item, + char *date, int *i, int flags) { char format[80], str[256]; time_t ltime; struct tm *pts; @@ -8928,8 +8849,7 @@ void add_subst_time(LOGBOOK * lbs, char list[][NAME_LENGTH], char value[][NAME_L /*------------------------------------------------------------------*/ -BOOL get_password_file(LOGBOOK * lbs, char *file_name, int size) -{ +BOOL get_password_file(LOGBOOK *lbs, char *file_name, int size) { char str[256]; getcfg(lbs->name, "Password file", str, sizeof(str)); @@ -8949,8 +8869,7 @@ BOOL get_password_file(LOGBOOK * lbs, char *file_name, int size) /*------------------------------------------------------------------*/ -void show_change_pwd_page(LOGBOOK * lbs) -{ +void show_change_pwd_page(LOGBOOK *lbs) { char str[256], config[256], old_pwd[256], new_pwd[256], new_pwd2[256], user[256], auth[32], error_str[256]; int wrong_pwd; /* otherwise calls with null lbs which make this procedure crash */ @@ -8994,7 +8913,7 @@ void show_change_pwd_page(LOGBOOK * lbs) if (old_pwd[0] || new_pwd[0]) { if (user[0]) { - if (stristr(auth, "Kerberos") || stristr(auth, "Webserver") || stristr(auth, "PAM") ) { + if (stristr(auth, "Kerberos") || stristr(auth, "Webserver") || stristr(auth, "PAM")) { if (strcmp(new_pwd, new_pwd2) != 0) wrong_pwd = 2; } else { @@ -9017,7 +8936,7 @@ void show_change_pwd_page(LOGBOOK * lbs) error_str[0] = 0; if (!wrong_pwd) wrong_pwd = - (auth_change_password(lbs, user, old_pwd, new_pwd, error_str, sizeof(error_str)) == 0); + (auth_change_password(lbs, user, old_pwd, new_pwd, error_str, sizeof(error_str)) == 0); if (!wrong_pwd && isparam("unm") && strcmp(user, getparam("unm")) == 0) { redirect(lbs, ""); @@ -9055,8 +8974,7 @@ void show_change_pwd_page(LOGBOOK * lbs) if (error_str[0]) { strencode2(str, error_str, sizeof(str)); rsprintf("\n", str); - } - else + } else rsprintf("\n", loc("Wrong password")); } @@ -9104,7 +9022,7 @@ void show_change_pwd_page(LOGBOOK * lbs) /*------------------------------------------------------------------*/ -void get_auto_index(LOGBOOK * lbs, int index, char *format, char *retstr, int size) +void get_auto_index(LOGBOOK *lbs, int index, char *format, char *retstr, int size) /* return value of specific attribute of last entry, can be used to auto-increment tags */ { @@ -9169,8 +9087,7 @@ void get_auto_index(LOGBOOK * lbs, int index, char *format, char *retstr, int si /*------------------------------------------------------------------*/ -BOOL is_author(LOGBOOK * lbs, char attrib[MAX_N_ATTR][NAME_LENGTH], char *owner) -{ +BOOL is_author(LOGBOOK *lbs, char attrib[MAX_N_ATTR][NAME_LENGTH], char *owner) { char str[NAME_LENGTH], preset[NAME_LENGTH], full_name[NAME_LENGTH]; int i; @@ -9216,8 +9133,7 @@ BOOL is_author(LOGBOOK * lbs, char attrib[MAX_N_ATTR][NAME_LENGTH], char *owner) /*------------------------------------------------------------------*/ -BOOL get_author(LOGBOOK * lbs, char attrib[MAX_N_ATTR][NAME_LENGTH], char *author) -{ +BOOL get_author(LOGBOOK *lbs, char attrib[MAX_N_ATTR][NAME_LENGTH], char *author) { char str[NAME_LENGTH], preset[NAME_LENGTH]; int i; @@ -9248,8 +9164,7 @@ BOOL get_author(LOGBOOK * lbs, char attrib[MAX_N_ATTR][NAME_LENGTH], char *autho /*------------------------------------------------------------------*/ -BOOL is_cond_attr(int index) -{ +BOOL is_cond_attr(int index) { int i; for (i = 0; i < MAX_N_LIST && attr_options[index][i][0]; i++) @@ -9261,8 +9176,7 @@ BOOL is_cond_attr(int index) /*------------------------------------------------------------------*/ -void show_date_selector(int day, int month, int year, char *index) -{ +void show_date_selector(int day, int month, int year, char *index) { int i; rsprintf("\n", index); @@ -9377,8 +9290,7 @@ void show_time_selector(int hour, int min, int sec, char *index) /*------------------------------------------------------------------*/ -void attrib_from_param(int n_attr, char attrib[MAX_N_ATTR][NAME_LENGTH]) -{ +void attrib_from_param(int n_attr, char attrib[MAX_N_ATTR][NAME_LENGTH]) { int i, j, first, year, month, day, hour, min, sec; char str[NAME_LENGTH], ua[NAME_LENGTH]; time_t ltime; @@ -9486,11 +9398,10 @@ void attrib_from_param(int n_attr, char attrib[MAX_N_ATTR][NAME_LENGTH]) /*------------------------------------------------------------------*/ -void ricon(char *name, char *comment, char *onclick) -{ +void ricon(char *name, char *comment, char *onclick) { rsprintf - ("\"%s\"n_el_index) ; i++) - if (lbs->el_index[i].file_time > now-3600*24*7) { // only one week to reduce seek time + for (i = n_draft = 0; i < *(lbs->n_el_index); i++) + if (lbs->el_index[i].file_time > now - 3600 * 24 * 7) { // only one week to reduce seek time el_retrieve(lbs, lbs->el_index[i].message_id, NULL, attr_list, attrib, lbs->n_attr, NULL, NULL, NULL, NULL, NULL, NULL, NULL, draft); if (draft[0] && is_author(lbs, attrib, draft)) { if (n_draft == 0) - draft_id = (int *)xmalloc(sizeof(int)); + draft_id = (int *) xmalloc(sizeof(int)); else - draft_id = (int *)xrealloc(draft_id, sizeof(int)*(n_draft+1)); + draft_id = (int *) xrealloc(draft_id, sizeof(int) * (n_draft + 1)); draft_id[n_draft] = lbs->el_index[i].message_id; n_draft++; } } - + if (n_draft == 0) return 0; - + if (n_draft == 1) sprintf(title, "%s", loc("Pending draft available")); else sprintf(title, loc("%d pending drafts available"), n_draft); - + show_standard_header(lbs, TRUE, "Draft query", NULL, FALSE, NULL, NULL, 0); - + rsprintf("
      %s!
      %s!
      \n"); - + rsprintf("\n", title); - for (i=0 ; i\n", str); @@ -9605,39 +9513,74 @@ int check_drafts(LOGBOOK * lbs) loc("Edit"), draft_id[i], loc("Edit")); rsprintf("\n"); } - + rsprintf("\n\n"); - + rsprintf("
      "); rsprintf("%s
      "); sprintf(str, loc("Draft entry created on %s by %s"), datetime, draft); rsprintf("%s
      "); - rsprintf("\n", loc("Create new entry"), + rsprintf("\n", + loc("Create new entry"), loc("New")); rsprintf("
      \n"); show_bottom_text(lbs); rsprintf("\r\n"); - + xfree(draft_id); return 1; } /*------------------------------------------------------------------*/ -void show_edit_form(LOGBOOK * lbs, int message_id, BOOL breply, BOOL bedit, BOOL bupload, BOOL breedit, - BOOL bduplicate, BOOL bpreview) -{ +int check_edit_time(LOGBOOK *lbs, int message_id) { + char str[256]; + int i; + + if (is_admin_user(lbs, getparam("unm"))) { + if (getcfg(lbs->name, "Admin Restrict edit time", str, sizeof(str))) { + for (i = 0; i < *lbs->n_el_index; i++) + if (lbs->el_index[i].message_id == message_id) + break; + + if (i < *lbs->n_el_index && time(NULL) > lbs->el_index[i].file_time + atof(str) * 3600 && atof(str) > 0) { + sprintf(str, loc("Entry can only be edited %1.2lg hours after creation"), atof(str)); + show_error(str); + return 0; + } + } + } else { + if (getcfg(lbs->name, "Restrict edit time", str, sizeof(str))) { + for (i = 0; i < *lbs->n_el_index; i++) + if (lbs->el_index[i].message_id == message_id) + break; + + if (i < *lbs->n_el_index && time(NULL) > lbs->el_index[i].file_time + atof(str) * 3600) { + sprintf(str, loc("Entry can only be edited %1.2lg hours after creation"), atof(str)); + show_error(str); + return 0; + } + } + } + + return 1; +} + +/*------------------------------------------------------------------*/ + +void show_edit_form(LOGBOOK *lbs, int message_id, BOOL breply, BOOL bedit, BOOL bupload, BOOL breedit, + BOOL bduplicate, BOOL bpreview) { int i, j, n, index, aindex, size, width, height, fh, length, input_size, input_maxlen, - format_flags[MAX_N_ATTR], year, month, day, hour, min, sec, n_attr, n_disp_attr, n_lines, - attr_index[MAX_N_ATTR], enc_selected, show_text, n_moptions, display_inline, - allowed_encoding, thumb_status, max_n_lines, fixed_text, autosave, new_entry; + format_flags[MAX_N_ATTR], year, month, day, hour, min, sec, n_attr, n_disp_attr, n_lines, + attr_index[MAX_N_ATTR], enc_selected, show_text, n_moptions, display_inline, + allowed_encoding, thumb_status, max_n_lines, fixed_text, autosave, new_entry, status; char str[2 * NAME_LENGTH], str2[NAME_LENGTH], preset[2 * NAME_LENGTH], *p, *pend, star[80], - comment[10000], reply_string[256], list[MAX_N_ATTR][NAME_LENGTH], file_name[256], *buffer, - format[256], date[80], script_onload[256], script_onfocus[256], script_onunload[256], - attrib[MAX_N_ATTR][NAME_LENGTH], *text, orig_tag[80], reply_tag[MAX_REPLY_TO * 10], - att[MAX_ATTACHMENTS][256], encoding[80], slist[MAX_N_ATTR + 10][NAME_LENGTH], - svalue[MAX_N_ATTR + 10][NAME_LENGTH], owner[256], locked_by[256], class_value[80], class_name[80], - ua[NAME_LENGTH], mid[80], title[256], login_name[256], full_name[256], - orig_author[256], attr_moptions[MAX_N_LIST][NAME_LENGTH], ref[256], file_enc[256], tooltip[10000], - enc_attr[NAME_LENGTH], user_email[256], cmd[256], thumb_name[256], thumb_ref[256], **user_list, fid[20], - upwd[80], subdir[256], draft[256], page_title[300]; + comment[10000], reply_string[256], list[MAX_N_ATTR][NAME_LENGTH], file_name[256], *buffer, + format[256], date[80], script_onload[256], script_onfocus[256], script_onunload[256], + attrib[MAX_N_ATTR][NAME_LENGTH], *text, orig_tag[80], reply_tag[MAX_REPLY_TO * 10], + att[MAX_ATTACHMENTS][256], encoding[80], slist[MAX_N_ATTR + 10][NAME_LENGTH], + svalue[MAX_N_ATTR + 10][NAME_LENGTH], owner[256], locked_by[256], class_value[80], class_name[80], + ua[NAME_LENGTH], mid[80], title[256], login_name[256], full_name[256], + orig_author[256], attr_moptions[MAX_N_LIST][NAME_LENGTH], ref[256], file_enc[256], tooltip[10000], + enc_attr[NAME_LENGTH], user_email[256], cmd[256], thumb_name[256], thumb_ref[256], **user_list, fid[20], + upwd[80], subdir[256], draft[256], page_title[300]; time_t now, ltime; char fl[8][NAME_LENGTH]; struct tm *pts; @@ -9816,7 +9759,7 @@ void show_edit_form(LOGBOOK * lbs, int message_id, BOOL breply, BOOL bedit, BOOL /* do not format date for date attributes */ i = build_subst_list(lbs, slist, svalue, attrib, (attr_flags[index] & (AF_DATE | AF_DATETIME)) - == 0); + == 0); strsubst_list(preset, sizeof(preset), slist, svalue, i); strcpy(attrib[index], preset); } @@ -9836,7 +9779,7 @@ void show_edit_form(LOGBOOK * lbs, int message_id, BOOL breply, BOOL bedit, BOOL /* do not format date for date attributes */ i = build_subst_list(lbs, slist, svalue, attrib, (attr_flags[index] & (AF_DATE | AF_DATETIME)) - == 0); + == 0); strsubst_list(preset, sizeof(preset), slist, svalue, i); strcpy(attrib[index], preset); } @@ -9857,7 +9800,7 @@ void show_edit_form(LOGBOOK * lbs, int message_id, BOOL breply, BOOL bedit, BOOL /* do not format date for date attributes */ i = build_subst_list(lbs, slist, svalue, attrib, (attr_flags[index] & (AF_DATE | AF_DATETIME)) - == 0); + == 0); strsubst_list(preset, sizeof(preset), slist, svalue, i); strcpy(attrib[index], preset); } @@ -9877,7 +9820,7 @@ void show_edit_form(LOGBOOK * lbs, int message_id, BOOL breply, BOOL bedit, BOOL /* do not format date for date attributes */ i = build_subst_list(lbs, slist, svalue, attrib, (attr_flags[index] & (AF_DATE | AF_DATETIME)) - == 0); + == 0); strsubst_list(preset, sizeof(preset), slist, svalue, i); strcpy(attrib[index], preset); } @@ -9897,7 +9840,7 @@ void show_edit_form(LOGBOOK * lbs, int message_id, BOOL breply, BOOL bedit, BOOL /* do not format date for date attributes */ i = build_subst_list(lbs, slist, svalue, attrib, (attr_flags[index] & (AF_DATE | AF_DATETIME)) - == 0); + == 0); strsubst_list(preset, sizeof(preset), slist, svalue, i); strcpy(attrib[index], preset); } @@ -9937,7 +9880,7 @@ void show_edit_form(LOGBOOK * lbs, int message_id, BOOL breply, BOOL bedit, BOOL /* do not format date for date attributes */ i = build_subst_list(lbs, slist, svalue, attrib, (attr_flags[index] & (AF_DATE | AF_DATETIME)) - == 0); + == 0); strsubst_list(preset, sizeof(preset), slist, svalue, i); strcpy(attrib[index], preset); } @@ -9957,7 +9900,7 @@ void show_edit_form(LOGBOOK * lbs, int message_id, BOOL breply, BOOL bedit, BOOL /* do not format date for date attributes */ i = build_subst_list(lbs, slist, svalue, attrib, (attr_flags[index] & (AF_DATE | AF_DATETIME)) - == 0); + == 0); strsubst_list(preset, sizeof(preset), slist, svalue, i); strcpy(attrib[index], preset); } @@ -9977,7 +9920,7 @@ void show_edit_form(LOGBOOK * lbs, int message_id, BOOL breply, BOOL bedit, BOOL /* do not format date for date attributes */ i = build_subst_list(lbs, slist, svalue, attrib, (attr_flags[index] & (AF_DATE | AF_DATETIME)) - == 0); + == 0); strsubst_list(preset, sizeof(preset), slist, svalue, i); strcpy(attrib[index], preset); } @@ -10025,29 +9968,22 @@ void show_edit_form(LOGBOOK * lbs, int message_id, BOOL breply, BOOL bedit, BOOL } } - /* check for editing interval */ - if (is_admin_user(lbs, getparam("unm"))) { - if (bedit && getcfg(lbs->name, "Admin Restrict edit time", str, sizeof(str))) { - for (i = 0; i < *lbs->n_el_index; i++) - if (lbs->el_index[i].message_id == message_id) - break; - if (i < *lbs->n_el_index && time(NULL) > lbs->el_index[i].file_time + atof(str) * 3600 && atof(str) > 0) { - sprintf(str, loc("Entry can only be edited %1.2lg hours after creation"), atof(str)); - show_error(str); - xfree(text); - return; + if (bedit) { + if (isparam("nsel")) { + for (i = n = 0; i < atoi(getparam("nsel")); i++) { + sprintf(str, "s%d", i); + if (isparam(str)) { + status = check_edit_time(lbs, atoi(getparam(str))); + if (!status) { + xfree(text); + return; + } + } } - } - } else { - if (bedit && getcfg(lbs->name, "Restrict edit time", str, sizeof(str))) { - for (i = 0; i < *lbs->n_el_index; i++) - if (lbs->el_index[i].message_id == message_id) - break; - - if (i < *lbs->n_el_index && time(NULL) > lbs->el_index[i].file_time + atof(str) * 3600) { - sprintf(str, loc("Entry can only be edited %1.2lg hours after creation"), atof(str)); - show_error(str); + } else if (message_id) { + status = check_edit_time(lbs, message_id); + if (!status) { xfree(text); return; } @@ -10086,7 +10022,8 @@ void show_edit_form(LOGBOOK * lbs, int message_id, BOOL breply, BOOL bedit, BOOL if (getcfg(lbs->name, "Edit Page Title", str, sizeof(str))) { i = build_subst_list(lbs, (char (*)[NAME_LENGTH]) slist, (char (*)[NAME_LENGTH]) svalue, NULL, TRUE); - strsubst_list(page_title, sizeof(page_title), (char (*)[NAME_LENGTH]) slist, (char (*)[NAME_LENGTH]) svalue, i); + strsubst_list(page_title, sizeof(page_title), (char (*)[NAME_LENGTH]) slist, + (char (*)[NAME_LENGTH]) svalue, i); strip_html(page_title); } else sprintf(page_title, "ELOG %s", lbs->name); @@ -10129,7 +10066,7 @@ void show_edit_form(LOGBOOK * lbs, int message_id, BOOL breply, BOOL bedit, BOOL stou(ua); rsprintf(" try {\n"); // try-catch block in case attributes are not there (conditional) - + if (attr_flags[i] & AF_MULTI) { rsprintf(" if (\n"); for (j = 0; j < MAX_N_LIST && attr_options[i][j][0]; j++) { @@ -10223,7 +10160,7 @@ void show_edit_form(LOGBOOK * lbs, int message_id, BOOL breply, BOOL bedit, BOOL rsprintf(" return false;\n"); rsprintf(" }\n"); } - + rsprintf(" }\n"); rsprintf(" catch(err) {\n"); rsprintf(" }\n\n"); @@ -10352,12 +10289,12 @@ void show_edit_form(LOGBOOK * lbs, int message_id, BOOL breply, BOOL bedit, BOOL rsprintf("var checkTextTimer;\n"); rsprintf("var oldText;\n\n"); rsprintf("var initialText;\n\n"); - + if (getcfg(lbs->name, "Autosave", str, sizeof(str))) autosave = atoi(str); else autosave = 10; - + if (getcfg(lbs->name, "Save drafts", str, sizeof(str)) && atoi(str) == 0) autosave = 0; @@ -10365,7 +10302,7 @@ void show_edit_form(LOGBOOK * lbs, int message_id, BOOL breply, BOOL bedit, BOOL rsprintf("{\n"); if (autosave) { rsprintf(" if (!draft_modified)\n"); - rsprintf(" autoSaveTimer = setTimeout(save_draft, %d);\n", autosave*1000); + rsprintf(" autoSaveTimer = setTimeout(save_draft, %d);\n", autosave * 1000); } rsprintf(" entry_modified = true;\n"); rsprintf(" draft_modified = true;\n"); @@ -10399,11 +10336,12 @@ void show_edit_form(LOGBOOK * lbs, int message_id, BOOL breply, BOOL bedit, BOOL rsprintf(" checkTextTimer = setTimeout(checkText, 1000);\n"); } rsprintf("}\n\n"); - + rsprintf("function restoreText()\n"); rsprintf("{\n"); rsprintf(" if (initialText != null) {\n"); - rsprintf(" if (confirm('%s'+'\\n'+'%s')) {\n", loc("Do you want to restore your original text?"), loc("This will overwrite your current modifications.")); + rsprintf(" if (confirm('%s'+'\\n'+'%s')) {\n", loc("Do you want to restore your original text?"), + loc("This will overwrite your current modifications.")); rsprintf(" if (typeof(CKEDITOR) != 'undefined')\n"); rsprintf(" CKEDITOR.instances.Text.setData(initialText);\n"); rsprintf(" else\n"); @@ -10433,7 +10371,7 @@ void show_edit_form(LOGBOOK * lbs, int message_id, BOOL breply, BOOL bedit, BOOL rsprintf("}\n\n"); if (/*enc_selected != 2 && */ !getcfg(lbs->name, "Message height", str, sizeof(str)) && - !getcfg(lbs->name, "Message width", str, sizeof(str))) { + !getcfg(lbs->name, "Message width", str, sizeof(str))) { /* javascript for resizing edit box */ rsprintf("function init_resize()\n"); rsprintf("{\n"); @@ -10467,7 +10405,8 @@ void show_edit_form(LOGBOOK * lbs, int message_id, BOOL breply, BOOL bedit, BOOL rsprintf("function ToggleAll(attrib)\n"); rsprintf("{\n"); rsprintf(" for (var i = 0; i < document.form1.elements.length; i++) {\n"); - rsprintf(" if (document.form1.elements[i].type == 'checkbox' && document.form1.elements[i].disabled == false) {\n"); + rsprintf( + " if (document.form1.elements[i].type == 'checkbox' && document.form1.elements[i].disabled == false) {\n"); rsprintf(" a = document.form1.elements[i].name;\n"); rsprintf(" a = a.substring(0, attrib.length);\n"); rsprintf(" if (a == attrib)\n"); @@ -10478,7 +10417,7 @@ void show_edit_form(LOGBOOK * lbs, int message_id, BOOL breply, BOOL bedit, BOOL /* language for CKEDITOR */ if (getcfg("global", "language", str, sizeof(str))) { - for (i=0 ; lang_table[i].language[0] ; i++) { + for (i = 0; lang_table[i].language[0]; i++) { strlcpy(str2, str, sizeof(str2)); str2[strlen(lang_table[i].language)] = 0; if (stricmp(str2, lang_table[i].language) == 0) @@ -10490,7 +10429,7 @@ void show_edit_form(LOGBOOK * lbs, int message_id, BOOL breply, BOOL bedit, BOOL rsprintf("var CKEditorLang = 'en';\n"); } else rsprintf("var CKEditorLang = 'en';\n"); - + /* strings for elcode.js */ if (enc_selected == 0) { rsprintf("var linkText_prompt = \"%s\";\n", loc("Enter name of hyperlink")); @@ -10508,11 +10447,11 @@ void show_edit_form(LOGBOOK * lbs, int message_id, BOOL breply, BOOL bedit, BOOL break; } rsprintf("var page_title = '%s';\n", page_title); - + rsprintf("\n"); rsprintf("window.onbeforeunload = beforeunload;\n"); rsprintf("\n"); - + rsprintf("//-->\n"); rsprintf("\n"); @@ -10528,7 +10467,7 @@ void show_edit_form(LOGBOOK * lbs, int message_id, BOOL breply, BOOL bedit, BOOL fixed_text = getcfg(lbs->name, "Fix text", str, sizeof(str)) && atoi(str) == 1 && bedit && message_id; if (enc_selected == 2 && ckedit_exist && show_text && !fixed_text) { - rsprintf("\n"); + rsprintf("\n"); } rsprintf("\n"); @@ -10537,7 +10476,7 @@ void show_edit_form(LOGBOOK * lbs, int message_id, BOOL breply, BOOL bedit, BOOL /* drag-and-drip script */ rsprintf("\n"); - + /* CKEDITOR */ if (enc_selected == 2 && ckedit_exist && show_text && !fixed_text) rsprintf("\n"); @@ -10604,7 +10543,7 @@ void show_edit_form(LOGBOOK * lbs, int message_id, BOOL breply, BOOL bedit, BOOL rsprintf("\n"); rsprintf("\n"); rsprintf("\n"); - + if (new_entry) rsprintf("\n"); @@ -10626,28 +10565,31 @@ void show_edit_form(LOGBOOK * lbs, int message_id, BOOL breply, BOOL bedit, BOOL rsprintf("\n", loc("Submit")); - + if (!getcfg(lbs->name, "Save drafts", str, sizeof(str)) || atoi(str) == 1) rsprintf("\n", - loc("Save")); - + loc("Save")); + if (!getcfg(lbs->name, "Show text", str, sizeof(str)) || atoi(str) == 1) rsprintf("\n", - loc("Preview")); - + loc("Preview")); + if (message_id && (!getcfg(lbs->name, "Show text", str, sizeof(str)) || atoi(str) == 1)) - rsprintf("\n", - loc("Restore")); + rsprintf( + "\n", + loc("Restore")); if (!getcfg(lbs->name, "Save drafts", str, sizeof(str)) || atoi(str) == 1) rsprintf("\n", loc("Delete")); else rsprintf("\n", - loc("Back")); - - rsprintf("  %s 00:00:00", loc("Draft saved at")); - + loc("Back")); + + rsprintf( + "  %s 00:00:00", + loc("Draft saved at")); + rsprintf("
      ", - ua, attr_options[index][i]); + ("", + ua, attr_options[index][i]); else rsprintf("", ua, attr_options[index][i]); @@ -11345,8 +11287,8 @@ void show_edit_form(LOGBOOK * lbs, int message_id, BOOL breply, BOOL bedit, BOOL if (attr_flags[index] & AF_EXTENDABLE) { sprintf(str, loc("Add %s"), attr_list[index]); rsprintf - ("\n", - index, str); + ("\n", + index, str); } rsprintf("
      %s
      %s
      \n"); + + rsprintf( + "
      \n"); /* set textarea width */ width = 112; @@ -11607,7 +11551,7 @@ void show_edit_form(LOGBOOK * lbs, int message_id, BOOL breply, BOOL bedit, BOOL rsprintf("