From 465d738c96c562c8b2f80a7ab1ab1300bfa3a673 Mon Sep 17 00:00:00 2001 From: Stefan Ritt Date: Wed, 22 May 2019 09:30:20 +0200 Subject: [PATCH] Removed further compiler warnings --- src/elogd.h | 681 ++++++++++++++++++++++++++-------------------------- 1 file changed, 342 insertions(+), 339 deletions(-) diff --git a/src/elogd.h b/src/elogd.h index 8a51b1f2..2c92a9e3 100644 --- a/src/elogd.h +++ b/src/elogd.h @@ -1,339 +1,342 @@ -/******************************************************************** - - Name: elogd.h - Created by: Stefan Ritt - Copyright 2000 + Stefan Ritt - - ELOG is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - ELOG is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - In addition, as a special exception, the copyright holders give - permission to link the code of portions of this program with the - OpenSSL library under certain conditions as described in each - individual source file, and distribute linked combinations - including the two. - You must obey the GNU General Public License in all respects - for all of the code used other than OpenSSL. If you modify - file(s) with this exception, you may extend this exception to your - version of the file(s), but you are not obligated to do so. If you - do not wish to do so, delete this exception statement from your - version. If you delete this exception statement from all source - files in the program, then also delete it here. - - You should have received a copy of the GNU General Public License - along with ELOG. If not, see . - - - Contents: Header file for ELOG program - -\********************************************************************/ - -/* Include version from central version file */ -#include "elog-version.h" - -#define _GNU_SOURCE -#include -#include -#include -#include -#include -#include -#include -#include -#include - -/* Default name of the configuration file. */ -#ifndef CFGFILE -#define CFGFILE "elogd.cfg" -#endif - -/* Default TCP port for server. */ -#ifndef DEFAULT_PORT -#define DEFAULT_PORT 80 -#endif - -#ifdef _MSC_VER - -#define OS_WINNT - -#define DIR_SEPARATOR '\\' -#define DIR_SEPARATOR_STR "\\" - -#define snprintf _snprintf -#define strcasestr StrStrIA - -#include -#include -#include -#include -#include -#include -#include - -#include - -#else - -#define OS_UNIX - -#ifdef __APPLE__ -#define OS_MACOSX -#endif - -#define TRUE 1 -#define FALSE 0 - -#ifndef O_TEXT -#define O_TEXT 0 -#define O_BINARY 0 -#endif - -#define DIR_SEPARATOR '/' -#define DIR_SEPARATOR_STR "/" - -#ifndef DEFAULT_USER -#define DEFAULT_USER "nobody" -#endif - -#ifndef DEFAULT_GROUP -#define DEFAULT_GROUP "nogroup" -#endif - -#ifndef PIDFILE -#define PIDFILE "/var/run/elogd.pid" -#endif - -typedef int BOOL; - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#define closesocket(s) close(s) - -#ifndef stricmp -#define stricmp(s1, s2) strcasecmp(s1, s2) -#endif - -#endif /* OS_UNIX */ - -/* SSL includes */ -#ifdef HAVE_SSL -#include -#endif - -/* local includes */ -#include "regex.h" -#include "mxml.h" -#include "strlcpy.h" - -#define SYSLOG_PRIORITY LOG_NOTICE /* Default priority for syslog facility */ - -#define TELL(fh) lseek(fh, 0, SEEK_CUR) - -#ifdef OS_WINNT -#define TRUNCATE(fh) chsize(fh, TELL(fh)) -#else -#define TRUNCATE(fh) ftruncate(fh, TELL(fh)) -#endif - -#define NAME_LENGTH 1500 - -#define DEFAULT_TIME_FORMAT "%c" -#define DEFAULT_DATE_FORMAT "%x" - -#define DEFAULT_HTTP_CHARSET "ISO-8859-1" - -#define SUCCESS 1 -#define FAILURE 0 - -#define EL_SUCCESS 1 -#define EL_FIRST_MSG 2 -#define EL_LAST_MSG 3 -#define EL_NO_MSG 4 -#define EL_FILE_ERROR 5 -#define EL_UPGRADE 6 -#define EL_EMPTY 7 -#define EL_MEM_ERROR 8 -#define EL_DUPLICATE 9 -#define EL_INVAL_FILE 10 - -#define EL_FIRST 1 -#define EL_LAST 2 -#define EL_NEXT 3 -#define EL_PREV 4 - -#define MAX_GROUPS 32 -#define MAX_PARAM 200 -#define MAX_ATTACHMENTS 50 -#define MAX_N_LIST 100 -#define MAX_N_ATTR 100 -#define MAX_N_EMAIL 500 -#define MAX_REPLY_TO 100 -#define CMD_SIZE 10000 -#define TEXT_SIZE 250000 -#define MAX_PATH_LENGTH 256 - -#define MAX_CONTENT_LENGTH 10*1024*1024 - -/* attribute flags */ -#define AF_REQUIRED (1<<0) -#define AF_LOCKED (1<<1) -#define AF_MULTI (1<<2) -#define AF_FIXED_EDIT (1<<3) -#define AF_FIXED_REPLY (1<<4) -#define AF_ICON (1<<5) -#define AF_RADIO (1<<6) -#define AF_EXTENDABLE (1<<7) -#define AF_DATE (1<<8) -#define AF_DATETIME (1<<9) -#define AF_TIME (1<<10) -#define AF_NUMERIC (1<<11) -#define AF_USERLIST (1<<12) -#define AF_MUSERLIST (1<<13) -#define AF_USEREMAIL (1<<14) -#define AF_MUSEREMAIL (1<<15) - -/* attribute format flags */ -#define AFF_SAME_LINE 1 -#define AFF_MULTI_LINE 2 -#define AFF_DATE 4 -#define AFF_EXTENDABLE 8 - -typedef struct { - int message_id; - char subdir[256]; - char file_name[32]; - time_t file_time; - int offset; - int in_reply_to; - unsigned char md5_digest[16]; -} EL_INDEX; - -typedef struct { - char name[256]; - char name_enc[256]; - char data_dir[256]; - char top_group[256]; - EL_INDEX *el_index; - int *n_el_index; - int n_attr; - PMXML_NODE pwd_xml_tree; -} LOGBOOK; - -typedef struct { - int message_id; - unsigned char md5_digest[16]; -} MD5_INDEX; - -typedef struct LBNODE *LBLIST; - -typedef struct LBNODE { - char name[256]; - LBLIST *member; - int n_members; - int is_top; -} LBNODE; - -typedef struct { - LOGBOOK *lbs; - int index; - char string[256]; - int number; - int in_reply_to; -} MSG_LIST; - -typedef struct { - char user_name[256]; - char session_id[32]; - char host_ip[32]; - time_t time; -} SESSION_ID; - -void show_error(char *error); -int is_verbose(void); -extern void eprintf(const char *, ...); -BOOL enum_user_line(LOGBOOK * lbs, int n, char *user, int size); -int get_user_line(LOGBOOK * lbs, char *user, char *password, char *full_name, char *email, - BOOL email_notify[1000], time_t * last_access, int *inactive); -int get_full_name(LOGBOOK *lbs, char *uname, char *full_name); -int set_user_inactive(LOGBOOK * lbs, char *user, int inactive); -int strbreak(char *str, char list[][NAME_LENGTH], int size, char *brk, BOOL ignore_quotes); -int execute_shell(LOGBOOK * lbs, int message_id, char attrib[MAX_N_ATTR][NAME_LENGTH], - char att_file[MAX_ATTACHMENTS][256], char *sh_cmd); -BOOL isparam(char *param); -char *getparam(char *param); -void write_logfile(LOGBOOK * lbs, const char *str); -BOOL check_login_user(LOGBOOK * lbs, char *user); -LBLIST get_logbook_hierarchy(void); -BOOL is_logbook_in_group(LBLIST pgrp, char *logbook); -BOOL is_admin_user(LOGBOOK * lbs, char *user); -BOOL is_admin_user_global(char *user); -void free_logbook_hierarchy(LBLIST root); -void show_top_text(LOGBOOK * lbs); -void show_bottom_text(LOGBOOK * lbs); -int set_attributes(LOGBOOK * lbs, char attributes[][NAME_LENGTH], int n); -void show_elog_list(LOGBOOK * lbs, int past_n, int last_n, int page_n, BOOL default_page, char *info); -int change_config_line(LOGBOOK * lbs, char *option, char *old_value, char *new_value); -int read_password(char *pwd, int size); -int getcfg(char *group, char *param, char *value, int vsize); -int build_subst_list(LOGBOOK * lbs, char list[][NAME_LENGTH], char value[][NAME_LENGTH], - char attrib[][NAME_LENGTH], BOOL format_date); -void highlight_searchtext(regex_t * re_buf, char *src, char *dst, BOOL hidden); -int parse_config_file(char *config_file); -PMXML_NODE load_password_file(LOGBOOK * lbs, char *error, int error_size); -int load_password_files(void); -BOOL check_login(LOGBOOK * lbs, char *sid); -void compose_base_url(LOGBOOK * lbs, char *base_url, int size, BOOL email_notify); -void show_elog_entry(LOGBOOK * lbs, char *dec_path, char *command); -char *loc(char *orig); -void strencode(char *text); -void strencode_nouml(char *text); -char *stristr(const char *str, const char *pattern); -int scan_attributes(char *logbook); -int is_inline_attachment(char *encoding, int message_id, char *text, int i, char *att); -int setgroup(char *str); -int setuser(char *str); -int setegroup(char *str); -int seteuser(char *str); -void strencode2(char *b, const char *text, int size); -void load_config_section(char *section, char **buffer, char *error); -void remove_crlf(char *buffer); -time_t convert_date(char *date_string); -time_t convert_datetime(char *date_string); -int get_thumb_name(const char *file_name, char *thumb_name, int size, int index); -int create_thumbnail(LOGBOOK * lbs, char *file_name); -int ascii_compare(const void *s1, const void *s2); -int ascii_compare2(const void *s1, const void *s2); -void do_crypt(const char *s, char *d, int size); -BOOL get_password_file(LOGBOOK * lbs, char *file_name, int size); -LOGBOOK *get_first_lbs_with_global_passwd(void); - -/* functions from auth.c */ -int auth_verify_password(LOGBOOK *lbs, const char *user, const char *password, char *error_str, int error_size); -int auth_change_password(LOGBOOK *lbs, const char *user, const char *old_pwd, const char *new_pwd, char *error_str, int error_size); -int auth_verify_password_krb5(LOGBOOK *lbs, const char *user, const char *password, char *error_str, int error_size); -int auth_change_password_krb5(LOGBOOK *lbs, const char *user, const char *old_pwd, const char *new_pwd, char *error, int error_size); - +/******************************************************************** + + Name: elogd.h + Created by: Stefan Ritt + Copyright 2000 + Stefan Ritt + + ELOG is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + ELOG is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + In addition, as a special exception, the copyright holders give + permission to link the code of portions of this program with the + OpenSSL library under certain conditions as described in each + individual source file, and distribute linked combinations + including the two. + You must obey the GNU General Public License in all respects + for all of the code used other than OpenSSL. If you modify + file(s) with this exception, you may extend this exception to your + version of the file(s), but you are not obligated to do so. If you + do not wish to do so, delete this exception statement from your + version. If you delete this exception statement from all source + files in the program, then also delete it here. + + You should have received a copy of the GNU General Public License + along with ELOG. If not, see . + + + Contents: Header file for ELOG program + +\********************************************************************/ + +/* Include version from central version file */ +#include "elog-version.h" + +#define _GNU_SOURCE +#include +#include +#include +#include +#include +#include +#include +#include +#include + +/* Default name of the configuration file. */ +#ifndef CFGFILE +#define CFGFILE "elogd.cfg" +#endif + +/* Default TCP port for server. */ +#ifndef DEFAULT_PORT +#define DEFAULT_PORT 80 +#endif + +/* unused function parameters */ +#define UNUSED(x) __attribute__((unused)) x + +#ifdef _MSC_VER + +#define OS_WINNT + +#define DIR_SEPARATOR '\\' +#define DIR_SEPARATOR_STR "\\" + +#define snprintf _snprintf +#define strcasestr StrStrIA + +#include +#include +#include +#include +#include +#include +#include + +#include + +#else + +#define OS_UNIX + +#ifdef __APPLE__ +#define OS_MACOSX +#endif + +#define TRUE 1 +#define FALSE 0 + +#ifndef O_TEXT +#define O_TEXT 0 +#define O_BINARY 0 +#endif + +#define DIR_SEPARATOR '/' +#define DIR_SEPARATOR_STR "/" + +#ifndef DEFAULT_USER +#define DEFAULT_USER "nobody" +#endif + +#ifndef DEFAULT_GROUP +#define DEFAULT_GROUP "nogroup" +#endif + +#ifndef PIDFILE +#define PIDFILE "/var/run/elogd.pid" +#endif + +typedef int BOOL; + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#define closesocket(s) close(s) + +#ifndef stricmp +#define stricmp(s1, s2) strcasecmp(s1, s2) +#endif + +#endif /* OS_UNIX */ + +/* SSL includes */ +#ifdef HAVE_SSL +#include +#endif + +/* local includes */ +#include "regex.h" +#include "mxml.h" +#include "strlcpy.h" + +#define SYSLOG_PRIORITY LOG_NOTICE /* Default priority for syslog facility */ + +#define TELL(fh) lseek(fh, 0, SEEK_CUR) + +#ifdef OS_WINNT +#define TRUNCATE(fh) chsize(fh, TELL(fh)) +#else +#define TRUNCATE(fh) ftruncate(fh, TELL(fh)) +#endif + +#define NAME_LENGTH 1500 + +#define DEFAULT_TIME_FORMAT "%c" +#define DEFAULT_DATE_FORMAT "%x" + +#define DEFAULT_HTTP_CHARSET "ISO-8859-1" + +#define SUCCESS 1 +#define FAILURE 0 + +#define EL_SUCCESS 1 +#define EL_FIRST_MSG 2 +#define EL_LAST_MSG 3 +#define EL_NO_MSG 4 +#define EL_FILE_ERROR 5 +#define EL_UPGRADE 6 +#define EL_EMPTY 7 +#define EL_MEM_ERROR 8 +#define EL_DUPLICATE 9 +#define EL_INVAL_FILE 10 + +#define EL_FIRST 1 +#define EL_LAST 2 +#define EL_NEXT 3 +#define EL_PREV 4 + +#define MAX_GROUPS 32 +#define MAX_PARAM 200 +#define MAX_ATTACHMENTS 50 +#define MAX_N_LIST 100 +#define MAX_N_ATTR 100 +#define MAX_N_EMAIL 500 +#define MAX_REPLY_TO 100 +#define CMD_SIZE 10000 +#define TEXT_SIZE 250000 +#define MAX_PATH_LENGTH 256 + +#define MAX_CONTENT_LENGTH 10*1024*1024 + +/* attribute flags */ +#define AF_REQUIRED (1<<0) +#define AF_LOCKED (1<<1) +#define AF_MULTI (1<<2) +#define AF_FIXED_EDIT (1<<3) +#define AF_FIXED_REPLY (1<<4) +#define AF_ICON (1<<5) +#define AF_RADIO (1<<6) +#define AF_EXTENDABLE (1<<7) +#define AF_DATE (1<<8) +#define AF_DATETIME (1<<9) +#define AF_TIME (1<<10) +#define AF_NUMERIC (1<<11) +#define AF_USERLIST (1<<12) +#define AF_MUSERLIST (1<<13) +#define AF_USEREMAIL (1<<14) +#define AF_MUSEREMAIL (1<<15) + +/* attribute format flags */ +#define AFF_SAME_LINE 1 +#define AFF_MULTI_LINE 2 +#define AFF_DATE 4 +#define AFF_EXTENDABLE 8 + +typedef struct { + int message_id; + char subdir[256]; + char file_name[32]; + time_t file_time; + int offset; + int in_reply_to; + unsigned char md5_digest[16]; +} EL_INDEX; + +typedef struct { + char name[256]; + char name_enc[256]; + char data_dir[256]; + char top_group[256]; + EL_INDEX *el_index; + int *n_el_index; + int n_attr; + PMXML_NODE pwd_xml_tree; +} LOGBOOK; + +typedef struct { + int message_id; + unsigned char md5_digest[16]; +} MD5_INDEX; + +typedef struct LBNODE *LBLIST; + +typedef struct LBNODE { + char name[256]; + LBLIST *member; + int n_members; + int is_top; +} LBNODE; + +typedef struct { + LOGBOOK *lbs; + int index; + char string[256]; + int number; + int in_reply_to; +} MSG_LIST; + +typedef struct { + char user_name[256]; + char session_id[32]; + char host_ip[32]; + time_t time; +} SESSION_ID; + +void show_error(char *error); +int is_verbose(void); +extern void eprintf(const char *, ...); +BOOL enum_user_line(LOGBOOK * lbs, int n, char *user, int size); +int get_user_line(LOGBOOK * lbs, char *user, char *password, char *full_name, char *email, + BOOL email_notify[1000], time_t * last_access, int *inactive); +int get_full_name(LOGBOOK *lbs, char *uname, char *full_name); +int set_user_inactive(LOGBOOK * lbs, char *user, int inactive); +int strbreak(char *str, char list[][NAME_LENGTH], int size, char *brk, BOOL ignore_quotes); +int execute_shell(LOGBOOK * lbs, int message_id, char attrib[MAX_N_ATTR][NAME_LENGTH], + char att_file[MAX_ATTACHMENTS][256], char *sh_cmd); +BOOL isparam(char *param); +char *getparam(char *param); +void write_logfile(LOGBOOK * lbs, const char *str); +BOOL check_login_user(LOGBOOK * lbs, char *user); +LBLIST get_logbook_hierarchy(void); +BOOL is_logbook_in_group(LBLIST pgrp, char *logbook); +BOOL is_admin_user(LOGBOOK * lbs, char *user); +BOOL is_admin_user_global(char *user); +void free_logbook_hierarchy(LBLIST root); +void show_top_text(LOGBOOK * lbs); +void show_bottom_text(LOGBOOK * lbs); +int set_attributes(LOGBOOK * lbs, char attributes[][NAME_LENGTH], int n); +void show_elog_list(LOGBOOK * lbs, int past_n, int last_n, int page_n, BOOL default_page, char *info); +int change_config_line(LOGBOOK * lbs, char *option, char *old_value, char *new_value); +int read_password(char *pwd, int size); +int getcfg(char *group, char *param, char *value, int vsize); +int build_subst_list(LOGBOOK * lbs, char list[][NAME_LENGTH], char value[][NAME_LENGTH], + char attrib[][NAME_LENGTH], BOOL format_date); +void highlight_searchtext(regex_t * re_buf, char *src, char *dst, BOOL hidden); +int parse_config_file(char *config_file); +PMXML_NODE load_password_file(LOGBOOK * lbs, char *error, int error_size); +int load_password_files(void); +BOOL check_login(LOGBOOK * lbs, char *sid); +void compose_base_url(LOGBOOK * lbs, char *base_url, int size, BOOL email_notify); +void show_elog_entry(LOGBOOK * lbs, char *dec_path, char *command); +char *loc(char *orig); +void strencode(char *text); +void strencode_nouml(char *text); +char *stristr(const char *str, const char *pattern); +int scan_attributes(char *logbook); +int is_inline_attachment(char *encoding, int message_id, char *text, int i, char *att); +int setgroup(char *str); +int setuser(char *str); +int setegroup(char *str); +int seteuser(char *str); +void strencode2(char *b, const char *text, int size); +void load_config_section(char *section, char **buffer, char *error); +void remove_crlf(char *buffer); +time_t convert_date(char *date_string); +time_t convert_datetime(char *date_string); +int get_thumb_name(const char *file_name, char *thumb_name, int size, int index); +int create_thumbnail(LOGBOOK * lbs, char *file_name); +int ascii_compare(const void *s1, const void *s2); +int ascii_compare2(const void *s1, const void *s2); +void do_crypt(const char *s, char *d, int size); +BOOL get_password_file(LOGBOOK * lbs, char *file_name, int size); +LOGBOOK *get_first_lbs_with_global_passwd(void); + +/* functions from auth.c */ +int auth_verify_password(LOGBOOK *lbs, const char *user, const char *password, char *error_str, int error_size); +int auth_change_password(LOGBOOK *lbs, const char *user, const char *old_pwd, const char *new_pwd, char *error_str, int error_size); +int auth_verify_password_krb5(LOGBOOK *lbs, const char *user, const char *password, char *error_str, int error_size); +int auth_change_password_krb5(LOGBOOK *lbs, const char *user, const char *old_pwd, const char *new_pwd, char *error, int error_size); +