#include <arpa/inet.h>
#include "citadel.h"
#include "server.h"
-#include "dynloader.h"
+#include "serv_extensions.h"
#include "sysdep_decls.h"
#include "citserver.h"
#include "config.h"
char *unique_session_numbers;
int ScheduledShutdown = 0;
int do_defrag = 0;
+time_t server_startup_time;
/*
* Various things that need to be initialized at startup
*/
void master_startup(void) {
struct timeval tv;
+ struct quickroom qrbuf;
lprintf(9, "master_startup() started\n");
+ time(&server_startup_time);
+
lprintf(7, "Opening databases\n");
open_databases();
create_room(SYSCONFIGROOM, 3, "", 0, 1, 0);
create_room(config.c_twitroom, 0, "", 0, 1, 0);
+ /* The "Local System Configuration" room doesn't need to be visible */
+ if (lgetroom(&qrbuf, SYSCONFIGROOM) == 0) {
+ qrbuf.QRflags2 |= QR2_SYSTEM;
+ lputroom(&qrbuf);
+ }
+
+
lprintf(7, "Seeding the pseudo-random number generator...\n");
gettimeofday(&tv, NULL);
srand(tv.tv_usec);
unlink(con->temp);
lprintf(3, "[%3d] Session ended.\n", con->cs_pid);
-
syslog(LOG_NOTICE,"session %d: ended", con->cs_pid);
-
+
/* Deallocate any user-data attached to this session */
deallocate_user_data(con);
FILE *mfp;
char targ[SIZ];
char buf[SIZ];
+ char buf2[SIZ];
char *dirs[2];
extract(buf,mname,0);
-
dirs[0]=mallok(64);
dirs[1]=mallok(64);
strcpy(dirs[0],"messages");
strcpy(dirs[1],"help");
- mesg_locate(targ,sizeof targ,buf,2,(const char **)dirs);
+ snprintf(buf2, sizeof buf2, "%s.%d.%d", buf, CC->cs_clientdev, CC->cs_clienttyp);
+ mesg_locate(targ,sizeof targ,buf2,2,(const char **)dirs);
+ if (strlen(targ) == 0) {
+ snprintf(buf2, sizeof buf2, "%s.%d", buf, CC->cs_clientdev);
+ mesg_locate(targ,sizeof targ,buf2,2,(const char **)dirs);
+ if (strlen(targ) == 0) {
+ mesg_locate(targ,sizeof targ,buf,2,(const char **)dirs);
+ }
+ }
phree(dirs[0]);
phree(dirs[1]);
-
if (strlen(targ)==0) {
cprintf("%d '%s' not found.\n",ERROR,mname);
return;
cmd_lzrm(&cmdbuf[5]);
}
+ else if (!strncasecmp(cmdbuf,"LPRM",4)) {
+ cmd_lprm(&cmdbuf[5]);
+ }
+
else if (!strncasecmp(cmdbuf,"GETU",4)) {
cmd_getu();
}
cmd_msg4(&cmdbuf[5]);
}
+ else if (!strncasecmp(cmdbuf,"MSGP",4)) {
+ cmd_msgp(&cmdbuf[5]);
+ }
+
else if (!strncasecmp(cmdbuf,"OPNA",4)) {
cmd_opna(&cmdbuf[5]);
}
cmd_view(&cmdbuf[5]);
}
+ else if (!strncasecmp(cmdbuf, "ISME", 4)) {
+ cmd_isme(&cmdbuf[5]);
+ }
+
#ifdef DEBUG_MEMORY_LEAKS
else if (!strncasecmp(cmdbuf, "LEAK", 4)) {
dump_tracked();