From eca0d0cc03fb4c593c9081d8f3ffec302ba948f9 Mon Sep 17 00:00:00 2001
From: Roman Tsisyk <roman@tsisyk.com>
Date: Sun, 22 Dec 2013 11:35:40 +0400
Subject: [PATCH] Fix say initialization

---
 src/say.c        | 9 +++++----
 src/say.h        | 4 ++--
 src/tarantool.cc | 4 ++--
 3 files changed, 9 insertions(+), 8 deletions(-)

diff --git a/src/say.c b/src/say.c
index 64a254fbea..06a49cdf7f 100644
--- a/src/say.c
+++ b/src/say.c
@@ -45,7 +45,8 @@ int sayfd = STDERR_FILENO;
 pid_t logger_pid;
 static bool booting = true;
 static const char *binary_filename;
-static int *log_level;
+static int log_level_default = S_INFO;
+static int *log_level = &log_level_default;
 
 static void
 sayf(int level, const char *filename, int line, const char *error,
@@ -75,15 +76,15 @@ level_to_char(int level)
 }
 
 void
-say_init(const char *argv0, int *level)
+say_init(const char *argv0)
 {
 	binary_filename = strdup(argv0);
-	log_level = level;
 }
 
 void
-say_logger_init(char *logger, int nonblock)
+say_logger_init(char *logger, int *level, int nonblock)
 {
+	log_level = level;
 	int pipefd[2];
 	pid_t pid;
 	char cmd[] = { "/bin/sh" };
diff --git a/src/say.h b/src/say.h
index a9c8ab5050..aa0a8eaefe 100644
--- a/src/say.h
+++ b/src/say.h
@@ -51,10 +51,10 @@ extern int sayfd;
 extern pid_t logger_pid;
 
 /** Basic init. */
-void say_init(const char *argv0, int *log_level);
+void say_init(const char *argv0);
 
 /* Move logging to a separate process. */
-void say_logger_init(char *logger, int nonblock);
+void say_logger_init(char *logger, int *log_level, int nonblock);
 
 void vsay(int level, const char *filename, int line, const char *error,
           const char *format, va_list ap)
diff --git a/src/tarantool.cc b/src/tarantool.cc
index 546a12e39e..f52f6c74e4 100644
--- a/src/tarantool.cc
+++ b/src/tarantool.cc
@@ -593,6 +593,7 @@ main(int argc, char **argv)
 	__libc_stack_end = (void*) &argv;
 #endif
 
+	say_init(argv[0]);
 	crc32_init();
 	stat_init();
 	memory_init();
@@ -607,7 +608,6 @@ main(int argc, char **argv)
 
 	void *opt = gopt_sort(&argc, (const char **)argv, opt_def);
 	main_opt = opt;
-	say_init(argv[0], &cfg.log_level);
 
 	if (gopt(opt, 'V')) {
 		printf("Tarantool %s\n", tarantool_version());
@@ -769,7 +769,7 @@ main(int argc, char **argv)
 		strcat(custom_proc_title, cfg.custom_proc_title);
 	}
 
-	say_logger_init(cfg.logger, cfg.logger_nonblock);
+	say_logger_init(cfg.logger, &cfg.log_level, cfg.logger_nonblock);
 
 	/* main core cleanup routine */
 	atexit(tarantool_free);
-- 
GitLab