* Silently try to create the database subdirectory. If it's
* already there, no problem.
*/
- mkdir(ctdl_data_dir, 0700);
- chmod(ctdl_data_dir, 0700);
- chown(ctdl_data_dir, CTDLUID, (-1));
-
+ if ((mkdir(ctdl_data_dir, 0700) != 0) && (errno != EEXIST)){
+ CtdlLogPrintf(CTDL_EMERG,
+ "unable to create database directory [%s]: %s",
+ ctdl_data_dir, strerror(errno));
+ }
+ if (chmod(ctdl_data_dir, 0700) != 0){
+ CtdlLogPrintf(CTDL_EMERG,
+ "unable to set database directory accessrights [%s]: %s",
+ ctdl_data_dir, strerror(errno));
+ }
+ if (chown(ctdl_data_dir, CTDLUID, (-1)) != 0){
+ CtdlLogPrintf(CTDL_EMERG,
+ "unable to set the owner for [%s]: %s",
+ ctdl_data_dir, strerror(errno));
+ }
CtdlLogPrintf(CTDL_DEBUG, "bdb(): Setting up DB environment\n");
db_env_set_func_yield(sched_yield);
ret = db_env_create(&dbenv, 0);
}
else if (!strncmp(argv[a], "-t", 2)) {
- freopen(&argv[a][2], "w", stderr);
+ if (freopen(&argv[a][2], "w", stderr) != stderr)
+ {
+ CtdlLogPrintf(CTDL_EMERG,
+ "unable to open your trace log [%s]: %s",
+ &argv[a][2],
+ strerror(errno));
+ exit(1);
+ }
}
else if (!strncmp(argv[a], "-D", 2)) {
#else // HAVE_GETPWUID_R
pwp = NULL;
#endif // HAVE_GETPWUID_R
- mkdir(ctdl_run_dir, 0755);
- chown(ctdl_run_dir, config.c_ctdluid, (pwp==NULL)?-1:pw.pw_gid);
+
+ if ((mkdir(ctdl_run_dir, 0755) != 0) && (errno != EEXIST))
+ CtdlLogPrintf(CTDL_EMERG,
+ "unable to create run directory [%s]: %s",
+ ctdl_run_dir, strerror(errno));
+
+ if (chown(ctdl_run_dir, config.c_ctdluid, (pwp==NULL)?-1:pw.pw_gid) != 0)
+ CtdlLogPrintf(CTDL_EMERG,
+ "unable to set the access rights for [%s]: %s",
+ ctdl_run_dir, strerror(errno));
}
* We don't just call close() because we don't want these fd's
* to be reused for other files.
*/
- chdir(ctdl_run_dir);
+ if (chdir(ctdl_run_dir) != 0)
+ CtdlLogPrintf(CTDL_EMERG,
+ "unable to change into directory [%s]: %s",
+ ctdl_run_dir, strerror(errno));
child = fork();
if (child != 0) {
setsid();
umask(0);
- freopen("/dev/null", "r", stdin);
- freopen("/dev/null", "w", stdout);
- freopen("/dev/null", "w", stderr);
+ if ((freopen("/dev/null", "r", stdin) != stdin) ||
+ (freopen("/dev/null", "w", stdout) != stdout) ||
+ (freopen("/dev/null", "w", stderr) != stderr))
+ CtdlLogPrintf(CTDL_EMERG,
+ "unable to reopen stdin/out/err %s",
+ strerror(errno));
+
do {
current_child = fork();