summaryrefslogtreecommitdiffstats
path: root/src/util
diff options
context:
space:
mode:
authorJakub Hrozek <jhrozek@redhat.com>2014-10-21 22:36:59 +0200
committerJakub Hrozek <jhrozek@redhat.com>2014-11-05 19:55:09 +0100
commit77b13371c87702aee3f858f6b2b73826cf5a01bd (patch)
tree11fbb98aa528b9e35a1718b7a6f8e7fd2f0b03a7 /src/util
parent06f10b2a0ebb26f2460cd445f8040e9205de7500 (diff)
downloadsssd-77b13371c87702aee3f858f6b2b73826cf5a01bd.tar.gz
sssd-77b13371c87702aee3f858f6b2b73826cf5a01bd.tar.xz
sssd-77b13371c87702aee3f858f6b2b73826cf5a01bd.zip
UTIL: Remove more code duplication setting up child processes
All our child processes duplicated the same code that set up the debugging all around. Instead of adding yet another copy for the selinux_child, add a common utility function. Reviewed-by: Michal Židek <mzidek@redhat.com>
Diffstat (limited to 'src/util')
-rw-r--r--src/util/child_common.c29
-rw-r--r--src/util/child_common.h2
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__ */