]> code.citadel.org Git - citadel.git/blobdiff - citadel/citserver.c
* added server command line option "-f" to defrag databases on startup
[citadel.git] / citadel / citserver.c
index 45e36721a170baa86aba19403a5cf164289f70fc..e79fc29dbfae7b8de124e2b0815a921071076903 100644 (file)
@@ -40,6 +40,7 @@
 
 struct CitContext *ContextList = NULL;
 int ScheduledShutdown = 0;
+int do_defrag = 0;
 
 /*
  * Various things that need to be initialized at startup
@@ -48,6 +49,9 @@ void master_startup(void) {
        lprintf(7, "Opening databases\n");
        open_databases();
 
+       if (do_defrag)
+               defrag_databases();
+
        lprintf(7, "Checking floor reference counts\n");
        check_ref_counts();
 
@@ -152,6 +156,17 @@ void cleanup_stuff(void *arg)
        }
 
 
+/*
+ * Get a dynamic symbol number for per-session user data.
+ * This API call should be made only ONCE per symbol per citserver run.
+ */
+int CtdlGetDynamicSymbol() 
+{
+       static unsigned int next_symbol = SYM_MAX;
+       return ++next_symbol;
+}
+
+
 
 /*
  * Return a pointer to some generic per-session user data.
@@ -813,7 +828,7 @@ void *context_loop(struct CitContext *con)
        strcpy(CC->cs_clientname, "(unknown)");
        strcpy(CC->curr_user,"(not logged in)");
        strcpy(CC->net_node,"");
-       snprintf(CC->temp, sizeof CC->temp, "/tmp/CitServer.%d.%d", getpid(), CC->cs_pid);
+       snprintf(CC->temp, sizeof CC->temp, tmpnam(NULL));
        strcpy(CC->cs_room, "(no room)");
        strncpy(CC->cs_host, config.c_fqdn, sizeof CC->cs_host);
        CC->cs_host[sizeof CC->cs_host - 1] = 0;