/*
* citadel_dirs.c : calculate pathnames for various files used in the Citadel system
*
- * Copyright (c) 1987-2009 by the citadel.org team
+ * Copyright (c) 1987-2014 by the citadel.org team
*
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or
- * (at your option) any later version.
+ * This program is open source software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 3.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#include <unistd.h>
#include <stdio.h>
#include <ctype.h>
#include <string.h>
#include <limits.h>
-
-
-#if TIME_WITH_SYS_TIME
-# include <sys/time.h>
-# include <time.h>
-#else
-# if HAVE_SYS_TIME_H
-# include <sys/time.h>
-# else
-# include <time.h>
-# endif
-#endif
-
+#include <time.h>
#include <errno.h>
#include <libcitadel.h>
-
-
#include "citadel.h"
/* our directories... */
/* some of our files, that are needed in several places */
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]="";
char file_citadel_socket[PATH_MAX]="";
+char file_citadel_admin_socket[PATH_MAX]="";
char file_mail_aliases[PATH_MAX]="";
char file_pid_file[PATH_MAX]="";
char file_pid_paniclog[PATH_MAX]="";
"%scitadel.config",
ctdl_autoetc_dir);
StripSlashes(file_citadel_config, 0);
- snprintf(file_citadel_rc,
- sizeof file_citadel_rc,
- "%scitadel.rc",
+ snprintf(file_citadel_urlshorteners,
+ sizeof file_citadel_urlshorteners,
+ "%scitadel_urlshorteners.rc",
ctdl_etc_dir);
- StripSlashes(file_citadel_rc, 0);
+ StripSlashes(file_citadel_urlshorteners, 0);
snprintf(file_lmtp_socket,
sizeof file_lmtp_socket,
"%slmtp.socket",
"%scitadel.socket",
ctdl_run_dir);
StripSlashes(file_citadel_socket, 0);
+ snprintf(file_citadel_admin_socket,
+ sizeof file_citadel_admin_socket,
+ "%scitadel-admin.socket",
+ ctdl_run_dir);
+ StripSlashes(file_citadel_admin_socket, 0);
snprintf(file_pid_file,
sizeof file_pid_file,
"%scitadel.pid",
DBG_PRINT(ctdl_bin_dir);
DBG_PRINT(ctdl_utilbin_dir);
DBG_PRINT(file_citadel_control);
- DBG_PRINT(file_citadel_rc);
DBG_PRINT(file_citadel_config);
DBG_PRINT(file_lmtp_socket);
DBG_PRINT(file_lmtp_unfiltered_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 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;
}
-void create_run_directories(long UID, long GID)
+int create_run_directories(long UID, long GID)
{
int rv;
- rv = create_dir(ctdl_info_dir , 0700, UID, -1);
- rv = create_dir(ctdl_bio_dir , 0700, UID, -1);
- rv = create_dir(ctdl_usrpic_dir , 0700, UID, -1);
- rv = create_dir(ctdl_message_dir , 0700, UID, -1);
- rv = create_dir(ctdl_hlp_dir , 0700, UID, -1);
- rv = create_dir(ctdl_image_dir , 0700, UID, -1);
- rv = create_dir(ctdl_bb_dir , 0700, UID, -1);
- rv = create_dir(ctdl_file_dir , 0700, UID, -1);
- rv = create_dir(ctdl_netcfg_dir , 0700, UID, -1);
- rv = create_dir(ctdl_key_dir , 0700, UID, -1);
- rv = create_dir(ctdl_run_dir , 0700, UID, GID);
-
+ 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;
}