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]="";
"%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",
/*
* 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;
+}