diff options
Diffstat (limited to 'src/util')
-rw-r--r-- | src/util/child_common.c | 29 | ||||
-rw-r--r-- | src/util/child_common.h | 2 |
2 files changed, 31 insertions, 0 deletions
diff --git a/src/util/child_common.c b/src/util/child_common.c index e4a885b6e..cc6a8fa75 100644 --- a/src/util/child_common.c +++ b/src/util/child_common.c @@ -801,3 +801,32 @@ int child_io_destructor(void *ptr) return EOK; } + +errno_t child_debug_init(const char *logfile, int *debug_fd) +{ + int ret; + FILE *debug_filep; + + if (debug_fd == NULL) { + return EOK; + } + + if (debug_to_file != 0 && *debug_fd == -1) { + ret = open_debug_file_ex(logfile, &debug_filep, false); + if (ret != EOK) { + DEBUG(SSSDBG_FATAL_FAILURE, "Error setting up logging (%d) [%s]\n", + ret, sss_strerror(ret)); + return ret; + } + + *debug_fd = fileno(debug_filep); + if (*debug_fd == -1) { + DEBUG(SSSDBG_FATAL_FAILURE, + "fileno failed [%d][%s]\n", errno, strerror(errno)); + ret = errno; + return ret; + } + } + + return EOK; +} diff --git a/src/util/child_common.h b/src/util/child_common.h index 261da7f9c..e159719a2 100644 --- a/src/util/child_common.h +++ b/src/util/child_common.h @@ -120,4 +120,6 @@ void child_cleanup(int readfd, int writefd); int child_io_destructor(void *ptr); +errno_t child_debug_init(const char *logfile, int *debug_fd); + #endif /* __CHILD_COMMON_H__ */ |