Make sure we don't user std{err,in,out} if they don't exist.

This is required for target build in libosmocore

Signed-off-by: Sylvain Munaut <tnt@246tNt.com>
This commit is contained in:
Sylvain Munaut 2010-09-17 14:38:17 +02:00
parent 77b6f6c536
commit af5ee34c35
2 changed files with 8 additions and 4 deletions

View File

@ -294,14 +294,11 @@ void log_set_category_filter(struct log_target *target, int category,
target->categories[category].loglevel = level; target->categories[category].loglevel = level;
} }
/* since C89/C99 says stderr is a macro, we can safely do this! */
#ifdef stderr
static void _file_output(struct log_target *target, const char *log) static void _file_output(struct log_target *target, const char *log)
{ {
fprintf(target->tgt_file.out, "%s", log); fprintf(target->tgt_file.out, "%s", log);
fflush(target->tgt_file.out); fflush(target->tgt_file.out);
} }
#endif
struct log_target *log_target_create(void) struct log_target *log_target_create(void)
{ {
@ -374,8 +371,12 @@ void log_target_destroy(struct log_target *target)
log_del_target(target); log_del_target(target);
if (target->output == &_file_output) { if (target->output == &_file_output) {
/* since C89/C99 says stderr is a macro, we can safely do this! */
#ifdef stderr
/* don't close stderr */ /* don't close stderr */
if (target->tgt_file.out != stderr) { if (target->tgt_file.out != stderr)
#endif
{
fclose(target->tgt_file.out); fclose(target->tgt_file.out);
target->tgt_file.out = NULL; target->tgt_file.out = NULL;
} }

View File

@ -63,9 +63,12 @@ int osmo_daemonize(void)
return rc; return rc;
/* Redirect stdio to /dev/null */ /* Redirect stdio to /dev/null */
/* since C89/C99 says stderr is a macro, we can safely do this! */
#ifdef stderr
freopen("/dev/null", "r", stdin); freopen("/dev/null", "r", stdin);
freopen("/dev/null", "w", stdout); freopen("/dev/null", "w", stdout);
freopen("/dev/null", "w", stderr); freopen("/dev/null", "w", stderr);
#endif
return 0; return 0;
} }