diff options
author | Christian Grothoff <christian@grothoff.org> | 2011-12-06 18:06:13 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2011-12-06 18:06:13 +0000 |
commit | c49a66e6dc9a7ba97e43a8b0f7d175c2a9e25fbf (patch) | |
tree | 2a2fd50bb3e6ac0b2db74c9a80115ee455154ac4 /src/util/common_logging.c | |
parent | d234059375e77fe46c57e98751dc8491dff46e85 (diff) | |
download | gnunet-c49a66e6dc9a7ba97e43a8b0f7d175c2a9e25fbf.tar.gz gnunet-c49a66e6dc9a7ba97e43a8b0f7d175c2a9e25fbf.zip |
LRN: Ensure that GTK can then do the internal call write(2, message, strlen
(message)); successfully by default.
Diffstat (limited to 'src/util/common_logging.c')
-rw-r--r-- | src/util/common_logging.c | 32 |
1 files changed, 28 insertions, 4 deletions
diff --git a/src/util/common_logging.c b/src/util/common_logging.c index 22901bf26..ba51e550c 100644 --- a/src/util/common_logging.c +++ b/src/util/common_logging.c | |||
@@ -546,6 +546,7 @@ GNUNET_log_setup (const char *comp, const char *loglevel, const char *logfile) | |||
546 | int dirwarn; | 546 | int dirwarn; |
547 | char *fn; | 547 | char *fn; |
548 | const char *env_logfile = NULL; | 548 | const char *env_logfile = NULL; |
549 | int altlog_fd; | ||
549 | 550 | ||
550 | min_level = get_type (loglevel); | 551 | min_level = get_type (loglevel); |
551 | #if !defined(GNUNET_CULL_LOGGING) | 552 | #if !defined(GNUNET_CULL_LOGGING) |
@@ -569,8 +570,33 @@ GNUNET_log_setup (const char *comp, const char *loglevel, const char *logfile) | |||
569 | if (NULL == fn) | 570 | if (NULL == fn) |
570 | return GNUNET_SYSERR; | 571 | return GNUNET_SYSERR; |
571 | dirwarn = (GNUNET_OK != GNUNET_DISK_directory_create_for_file (fn)); | 572 | dirwarn = (GNUNET_OK != GNUNET_DISK_directory_create_for_file (fn)); |
572 | altlog = FOPEN (fn, "a"); | 573 | altlog_fd = OPEN (fn, O_APPEND | |
573 | if (altlog == NULL) | 574 | #if WINDOWS |
575 | O_BINARY | | ||
576 | #endif | ||
577 | O_WRONLY); | ||
578 | if (altlog_fd != -1) | ||
579 | { | ||
580 | int dup_return; | ||
581 | if (GNUNET_stderr != NULL) | ||
582 | fclose (GNUNET_stderr); | ||
583 | dup_return = dup2 (altlog_fd, 2); | ||
584 | close (altlog_fd); | ||
585 | if (dup_return != -1) | ||
586 | { | ||
587 | altlog = fdopen (2, "ab"); | ||
588 | if (altlog == NULL) | ||
589 | { | ||
590 | close (2); | ||
591 | altlog_fd = -1; | ||
592 | } | ||
593 | } | ||
594 | else | ||
595 | { | ||
596 | altlog_fd = -1; | ||
597 | } | ||
598 | } | ||
599 | if (altlog_fd == -1) | ||
574 | { | 600 | { |
575 | GNUNET_log_strerror_file (GNUNET_ERROR_TYPE_ERROR, "fopen", fn); | 601 | GNUNET_log_strerror_file (GNUNET_ERROR_TYPE_ERROR, "fopen", fn); |
576 | if (dirwarn) | 602 | if (dirwarn) |
@@ -581,8 +607,6 @@ GNUNET_log_setup (const char *comp, const char *loglevel, const char *logfile) | |||
581 | return GNUNET_SYSERR; | 607 | return GNUNET_SYSERR; |
582 | } | 608 | } |
583 | GNUNET_free (fn); | 609 | GNUNET_free (fn); |
584 | if (GNUNET_stderr != NULL) | ||
585 | fclose (GNUNET_stderr); | ||
586 | GNUNET_stderr = altlog; | 610 | GNUNET_stderr = altlog; |
587 | return GNUNET_OK; | 611 | return GNUNET_OK; |
588 | } | 612 | } |