Create and maintain a directory for pop3client uidl maps
authorArt Cancro <ajc@citadel.org>
Sat, 20 Oct 2007 05:06:14 +0000 (05:06 +0000)
committerArt Cancro <ajc@citadel.org>
Sat, 20 Oct 2007 05:06:14 +0000 (05:06 +0000)
citadel/citadel_dirs.c
citadel/citadel_dirs.h
citadel/modules/pop3client/serv_pop3client.c
citadel/setup.c

index 29552761e33e854535f0d5e63dd78d7da4af4ad0..86f2ecc86940212336d98eae127f714af7535362 100644 (file)
@@ -45,6 +45,7 @@ char ctdl_spool_dir[PATH_MAX]="network";
 char ctdl_netout_dir[PATH_MAX]="network/spoolout";
 char ctdl_netin_dir[PATH_MAX]="network/spoolin";
 char ctdl_netcfg_dir[PATH_MAX]="netconfigs";
+char ctdl_uidlmap_dir[PATH_MAX]="uidlmaps";
 char ctdl_utilbin_dir[PATH_MAX]="";
 char ctdl_sbin_dir[PATH_MAX]="";
 char ctdl_bin_dir[PATH_MAX]="";
@@ -112,6 +113,7 @@ void calc_dirs_n_files(int relh, int home, const char *relhome,const char  *ctdl
        basedir=ETC_DIR;
 #endif
        COMPUTE_DIRECTORY(ctdl_netcfg_dir);
+       COMPUTE_DIRECTORY(ctdl_uidlmap_dir);
        COMPUTE_DIRECTORY(ctdl_etc_dir);
 
 #ifndef HAVE_UTILBIN_DIR
index 16a4b6297d0083e8c0bac4c3a4c3368688f43851..c24e59729c518043c31de7dd686f366deb5c8fdf 100644 (file)
@@ -25,6 +25,7 @@ extern char ctdl_spool_dir[PATH_MAX];
 extern char ctdl_netout_dir[PATH_MAX];
 extern char ctdl_netin_dir[PATH_MAX];
 extern char ctdl_netcfg_dir[PATH_MAX];
+extern char ctdl_uidlmap_dir[PATH_MAX];
 extern char ctdl_bbsbase_dir[PATH_MAX];
 extern char ctdl_sbin_dir[PATH_MAX];
 extern char ctdl_bin_dir[PATH_MAX];
index 77089ec79d62f51295e07eab9365f6109b546fc0..037c1118b99fc18fec3c81c3bd927a6529789748 100644 (file)
@@ -23,6 +23,8 @@
 #include <ctype.h>
 #include <string.h>
 #include <errno.h>
+#include <sys/types.h>
+#include <sys/stat.h>
 #include "citadel.h"
 #include "server.h"
 #include "citserver.h"
@@ -34,6 +36,7 @@
 #include "clientsocket.h"
 #include "msgbase.h"
 #include "internet_addressing.h"
+#include "citadel_dirs.h"
 
 struct pop3aggr {
        struct pop3aggr *next;
@@ -255,6 +258,11 @@ void pop3client_scan(void) {
        if (doing_pop3client) return;
        doing_pop3client = 1;
 
+       /* We can silently fail on these if the directory already exists. */
+       mkdir(ctdl_uidlmap_dir, 0700);
+       chmod(ctdl_uidlmap_dir, 0700);
+       chown(ctdl_uidlmap_dir, config.c_ctdluid, -1);
+
        lprintf(CTDL_DEBUG, "pop3client started\n");
        ForEachRoom(pop3client_scan_room, NULL);
 
index 3dff70e1af0e4ec8d7853e2208b396c45ce88adf..c2d4bf78c7ac17632092f27b28fe12f1cf04f0af 100644 (file)
@@ -1229,6 +1229,10 @@ NEW_INST:
        chmod(ctdl_netcfg_dir, 0700);
        chown(ctdl_netcfg_dir, config.c_ctdluid, -1);
 
+       mkdir(ctdl_uidlmap_dir, 0700);
+       chmod(ctdl_uidlmap_dir, 0700);
+       chown(ctdl_uidlmap_dir, config.c_ctdluid, -1);
+
        /* Delete files and directories used by older Citadel versions */
        system("exec /bin/rm -fr ./rooms ./chatpipes ./expressmsgs ./sessions 2>/dev/null");
        unlink("citadel.log");