summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/core/log.c8
-rw-r--r--src/core/log.h2
-rw-r--r--src/fe-common/core/fe-log.c11
3 files changed, 17 insertions, 4 deletions
diff --git a/src/core/log.c b/src/core/log.c
index e17f5c56..75768601 100644
--- a/src/core/log.c
+++ b/src/core/log.c
@@ -47,6 +47,7 @@ static const char *log_item_types[] = {
const char *log_timestamp;
static int log_file_create_mode;
+static int log_dir_create_mode;
static int rotate_tag;
static int log_item_str2type(const char *type)
@@ -116,7 +117,7 @@ int log_start_logging(LOG_REC *log)
/* path may contain variables (%time, $vars),
make sure the directory is created */
dir = g_dirname(log->real_fname);
- mkpath(dir, LOG_DIR_CREATE_MODE);
+ mkpath(dir, log_dir_create_mode);
g_free(dir);
}
@@ -557,6 +558,11 @@ static void read_settings(void)
{
log_timestamp = settings_get_str("log_timestamp");
log_file_create_mode = octal2dec(settings_get_int("log_create_mode"));
+
+ log_dir_create_mode = log_file_create_mode;
+ if (log_file_create_mode & 0400) log_dir_create_mode |= 0100;
+ if (log_file_create_mode & 0040) log_dir_create_mode |= 0010;
+ if (log_file_create_mode & 0004) log_dir_create_mode |= 0001;
}
void log_init(void)
diff --git a/src/core/log.h b/src/core/log.h
index da97fb2c..fae872c7 100644
--- a/src/core/log.h
+++ b/src/core/log.h
@@ -1,8 +1,6 @@
#ifndef __LOG_H
#define __LOG_H
-#define LOG_DIR_CREATE_MODE 0700
-
enum {
LOG_ITEM_TARGET, /* channel, query, .. */
LOG_ITEM_WINDOW_REFNUM
diff --git a/src/fe-common/core/fe-log.c b/src/fe-common/core/fe-log.c
index 215d4a52..1db74fe1 100644
--- a/src/fe-common/core/fe-log.c
+++ b/src/fe-common/core/fe-log.c
@@ -48,6 +48,8 @@ static THEME_REC *log_theme;
static int skip_next_printtext;
static const char *log_theme_name;
+static int log_dir_create_mode;
+
static char *log_colorizer_strip(const char *str)
{
return strip_codes(str);
@@ -438,7 +440,7 @@ static void autolog_open(SERVER_REC *server, const char *server_tag,
log_item_add(log, LOG_ITEM_TARGET, target, server_tag);
dir = g_dirname(log->real_fname);
- mkpath(dir, LOG_DIR_CREATE_MODE);
+ mkpath(dir, log_dir_create_mode);
g_free(dir);
log->temp = TRUE;
@@ -665,6 +667,7 @@ static void sig_theme_destroyed(THEME_REC *theme)
static void read_settings(void)
{
int old_autolog = autolog_level;
+ int log_file_create_mode;
autolog_path = settings_get_str("autolog_path");
autolog_level = !settings_get_bool("autolog") ? 0 :
@@ -684,6 +687,12 @@ static void read_settings(void)
log_theme = log_theme_name == NULL ? NULL :
theme_load(log_theme_name);
+
+ log_file_create_mode = octal2dec(settings_get_int("log_create_mode"));
+ log_dir_create_mode = log_file_create_mode;
+ if (log_file_create_mode & 0400) log_dir_create_mode |= 0100;
+ if (log_file_create_mode & 0040) log_dir_create_mode |= 0010;
+ if (log_file_create_mode & 0004) log_dir_create_mode |= 0001;
}
void fe_log_init(void)