From: Wilfried Goesgens Date: Sun, 1 Sep 2013 18:13:44 +0000 (+0200) Subject: move config message loading from msgbase.c -> config.c X-Git-Tag: v9.01~269 X-Git-Url: https://code.citadel.org/?p=citadel.git;a=commitdiff_plain;h=2735841869b264ba98805f1679731cf86942c90b move config message loading from msgbase.c -> config.c --- diff --git a/citadel/config.c b/citadel/config.c index 4dc7698b4..8f3ec9db6 100644 --- a/citadel/config.c +++ b/citadel/config.c @@ -196,6 +196,7 @@ void get_config(void) { } } +long config_msgnum = 0; /* * Occasionally, we will need to write the config file, because some operations @@ -217,3 +218,62 @@ void put_config(void) } syslog(LOG_EMERG, "%s: %s", file_citadel_config, strerror(errno)); } + + + +void CtdlGetSysConfigBackend(long msgnum, void *userdata) { + config_msgnum = msgnum; +} + + +char *CtdlGetSysConfig(char *sysconfname) { + char hold_rm[ROOMNAMELEN]; + long msgnum; + char *conf; + struct CtdlMessage *msg; + char buf[SIZ]; + + strcpy(hold_rm, CC->room.QRname); + if (CtdlGetRoom(&CC->room, SYSCONFIGROOM) != 0) { + CtdlGetRoom(&CC->room, hold_rm); + return NULL; + } + + + /* We want the last (and probably only) config in this room */ + begin_critical_section(S_CONFIG); + config_msgnum = (-1L); + CtdlForEachMessage(MSGS_LAST, 1, NULL, sysconfname, NULL, + CtdlGetSysConfigBackend, NULL); + msgnum = config_msgnum; + end_critical_section(S_CONFIG); + + if (msgnum < 0L) { + conf = NULL; + } + else { + msg = CtdlFetchMessage(msgnum, 1); + if (msg != NULL) { + conf = strdup(msg->cm_fields[eMesageText]); + CM_Free(msg); + } + else { + conf = NULL; + } + } + + CtdlGetRoom(&CC->room, hold_rm); + + if (conf != NULL) do { + extract_token(buf, conf, 0, '\n', sizeof buf); + strcpy(conf, &conf[strlen(buf)+1]); + } while ( (!IsEmptyStr(conf)) && (!IsEmptyStr(buf)) ); + + return(conf); +} + + +void CtdlPutSysConfig(char *sysconfname, char *sysconfdata) { + CtdlWriteObject(SYSCONFIGROOM, sysconfname, sysconfdata, (strlen(sysconfdata)+1), NULL, 0, 1, 0); +} + diff --git a/citadel/config.h b/citadel/config.h index cc4a92ac4..f541ebfa2 100644 --- a/citadel/config.h +++ b/citadel/config.h @@ -17,3 +17,6 @@ void get_config(void); void put_config(void); +char *CtdlGetSysConfig(char *sysconfname); +void CtdlPutSysConfig(char *sysconfname, char *sysconfdata); + diff --git a/citadel/include/ctdl_module.h b/citadel/include/ctdl_module.h index 3cab315e1..8950a47ed 100644 --- a/citadel/include/ctdl_module.h +++ b/citadel/include/ctdl_module.h @@ -528,9 +528,6 @@ void CtdlUserLogout(void); /* * Expose API calls from msgbase.c */ -char *CtdlGetSysConfig(char *sysconfname); -void CtdlPutSysConfig(char *sysconfname, char *sysconfdata); - diff --git a/citadel/msgbase.c b/citadel/msgbase.c index f079bdcdc..39c79d3d7 100644 --- a/citadel/msgbase.c +++ b/citadel/msgbase.c @@ -65,7 +65,6 @@ #include "ctdl_module.h" -long config_msgnum; struct addresses_to_be_filed *atbf = NULL; /* This temp file holds the queue of operations for AdjRefCount() */ @@ -4872,67 +4871,6 @@ void CtdlWriteObject(char *req_room, /* Room to stuff it in */ - - - -void CtdlGetSysConfigBackend(long msgnum, void *userdata) { - config_msgnum = msgnum; -} - - -char *CtdlGetSysConfig(char *sysconfname) { - char hold_rm[ROOMNAMELEN]; - long msgnum; - char *conf; - struct CtdlMessage *msg; - char buf[SIZ]; - - strcpy(hold_rm, CC->room.QRname); - if (CtdlGetRoom(&CC->room, SYSCONFIGROOM) != 0) { - CtdlGetRoom(&CC->room, hold_rm); - return NULL; - } - - - /* We want the last (and probably only) config in this room */ - begin_critical_section(S_CONFIG); - config_msgnum = (-1L); - CtdlForEachMessage(MSGS_LAST, 1, NULL, sysconfname, NULL, - CtdlGetSysConfigBackend, NULL); - msgnum = config_msgnum; - end_critical_section(S_CONFIG); - - if (msgnum < 0L) { - conf = NULL; - } - else { - msg = CtdlFetchMessage(msgnum, 1); - if (msg != NULL) { - conf = strdup(msg->cm_fields[eMesageText]); - CM_Free(msg); - } - else { - conf = NULL; - } - } - - CtdlGetRoom(&CC->room, hold_rm); - - if (conf != NULL) do { - extract_token(buf, conf, 0, '\n', sizeof buf); - strcpy(conf, &conf[strlen(buf)+1]); - } while ( (!IsEmptyStr(conf)) && (!IsEmptyStr(buf)) ); - - return(conf); -} - - -void CtdlPutSysConfig(char *sysconfname, char *sysconfdata) { - CtdlWriteObject(SYSCONFIGROOM, sysconfname, sysconfdata, (strlen(sysconfdata)+1), NULL, 0, 1, 0); -} - - - /*****************************************************************************/ /* MODULE INITIALIZATION STUFF */ /*****************************************************************************/