X-Git-Url: https://code.citadel.org/?p=citadel.git;a=blobdiff_plain;f=citadel%2Fcitserver.c;fp=citadel%2Fcitserver.c;h=d0902e266985afbaf7e8cb1658507e3955ceef84;hp=18e0112487d70c1d98458a30c6536364714681a7;hb=8357d67fb22adec3b854d61bdbd898dcfcc91959;hpb=19576adee6e0a5fb959f8506eb68e31be590fe94 diff --git a/citadel/citserver.c b/citadel/citserver.c index 18e011248..d0902e266 100644 --- a/citadel/citserver.c +++ b/citadel/citserver.c @@ -117,12 +117,25 @@ void master_startup(void) { FILE *urandom; struct ctdlroom qrbuf; int rv; + struct passwd *pw; + gid_t gid; syslog(LOG_DEBUG, "master_startup() started\n"); time(&server_startup_time); get_config(); - syslog(LOG_INFO, "Opening databases\n"); + syslog(LOG_INFO, "Checking directory access"); + if ((pw = getpwuid(CTDLUID)) == NULL) { + gid = getgid(); + } else { + gid = pw->pw_gid; + } + + if (create_run_directories(CTDLUID, gid) != 0) { + syslog(LOG_EMERG, "failed to access & create directories"); + exit(1); + } + syslog(LOG_INFO, "Opening databases"); open_databases(); check_ref_counts();