X-Git-Url: https://code.citadel.org/?a=blobdiff_plain;f=citadel%2Futillib%2Fcitadel_dirs.c;h=8037b6d128aa6bae2c74e47db7d09f828fd5a396;hb=e26a8dee20d1726b4995821f717f867f50fc5659;hp=1aecdcded837b4ed4046fed42ba496169aab899c;hpb=f15df94047f9c4f9a2faddd4700ac24b46afd923;p=citadel.git diff --git a/citadel/utillib/citadel_dirs.c b/citadel/utillib/citadel_dirs.c index 1aecdcded..8037b6d12 100644 --- a/citadel/utillib/citadel_dirs.c +++ b/citadel/utillib/citadel_dirs.c @@ -74,6 +74,7 @@ char ctdl_bin_dir[PATH_MAX]=""; char file_citadel_control[PATH_MAX]=""; char file_citadel_rc[PATH_MAX]=""; char file_citadel_config[PATH_MAX]=""; +char file_citadel_urlshorteners[PATH_MAX]=""; char file_lmtp_socket[PATH_MAX]=""; char file_lmtp_unfiltered_socket[PATH_MAX]=""; char file_arcq[PATH_MAX]=""; @@ -243,6 +244,11 @@ void calc_dirs_n_files(int relh, int home, const char *relhome, char *ctdldir, "%scitadel.rc", ctdl_etc_dir); StripSlashes(file_citadel_rc, 0); + snprintf(file_citadel_urlshorteners, + sizeof file_citadel_urlshorteners, + "%scitadel_urlshorteners.rc", + ctdl_etc_dir); + StripSlashes(file_citadel_urlshorteners, 0); snprintf(file_lmtp_socket, sizeof file_lmtp_socket, "%slmtp.socket", @@ -373,9 +379,50 @@ void calc_dirs_n_files(int relh, int home, const char *relhome, char *ctdldir, /* * Generate an associated file name for a room */ -void assoc_file_name(char *buf, size_t n, +size_t assoc_file_name(char *buf, size_t n, struct ctdlroom *qrbuf, const char *prefix) { - snprintf(buf, n, "%s%ld", prefix, qrbuf->QRnumber); + return snprintf(buf, n, "%s%ld", prefix, qrbuf->QRnumber); } + +int create_dir(char *which, long ACCESS, long UID, long GID) +{ + int rv; + rv = mkdir(which, ACCESS); + if ((rv == -1) && (errno == EEXIST)) + return rv; + rv = chmod(which, ACCESS); + if (rv == -1) + return rv; + rv = chown(which, UID, GID); + return rv; +} + +int create_run_directories(long UID, long GID) +{ + int rv; + + rv = create_dir(ctdl_info_dir , S_IRUSR|S_IWUSR|S_IXUSR, UID, -1); + if (rv != -1) + rv = create_dir(ctdl_bio_dir , S_IRUSR|S_IWUSR|S_IXUSR, UID, -1); + if (rv != -1) + rv = create_dir(ctdl_usrpic_dir , S_IRUSR|S_IWUSR|S_IXUSR, UID, -1); + if (rv != -1) + rv = create_dir(ctdl_message_dir , S_IRUSR|S_IWUSR|S_IXUSR, UID, -1); + if (rv != -1) + rv = create_dir(ctdl_hlp_dir , S_IRUSR|S_IWUSR|S_IXUSR, UID, -1); + if (rv != -1) + rv = create_dir(ctdl_image_dir , S_IRUSR|S_IWUSR|S_IXUSR, UID, -1); + if (rv != -1) + rv = create_dir(ctdl_bb_dir , S_IRUSR|S_IWUSR|S_IXUSR, UID, -1); + if (rv != -1) + rv = create_dir(ctdl_file_dir , S_IRUSR|S_IWUSR|S_IXUSR, UID, -1); + if (rv != -1) + rv = create_dir(ctdl_netcfg_dir , S_IRUSR|S_IWUSR|S_IXUSR, UID, -1); + if (rv != -1) + rv = create_dir(ctdl_key_dir , S_IRUSR|S_IWUSR|S_IXUSR, UID, -1); + if (rv != -1) + rv = create_dir(ctdl_run_dir , S_IRUSR|S_IWUSR|S_IXUSR|S_IRGRP|S_IXGRP|S_IROTH|S_IXOTH, UID, GID); + return rv; +}