From 77b13371c87702aee3f858f6b2b73826cf5a01bd Mon Sep 17 00:00:00 2001 From: Jakub Hrozek Date: Tue, 21 Oct 2014 22:36:59 +0200 Subject: UTIL: Remove more code duplication setting up child processes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- src/providers/ad/ad_gpo.c | 23 ++--------------------- src/providers/krb5/krb5_init_shared.c | 24 ++++++++---------------- src/providers/ldap/sdap_child_helpers.c | 22 +--------------------- src/util/child_common.c | 29 +++++++++++++++++++++++++++++ src/util/child_common.h | 2 ++ 5 files changed, 42 insertions(+), 58 deletions(-) (limited to 'src') diff --git a/src/providers/ad/ad_gpo.c b/src/providers/ad/ad_gpo.c index 80b0d45c2..83edbe4fb 100644 --- a/src/providers/ad/ad_gpo.c +++ b/src/providers/ad/ad_gpo.c @@ -1313,29 +1313,10 @@ ad_gpo_access_check(TALLOC_CTX *mem_ctx, } #define GPO_CHILD_LOG_FILE "gpo_child" + static errno_t gpo_child_init(void) { - int ret; - FILE *debug_filep; - - if (debug_to_file != 0 && gpo_child_debug_fd == -1) { - ret = open_debug_file_ex(GPO_CHILD_LOG_FILE, &debug_filep, false); - if (ret != EOK) { - DEBUG(SSSDBG_FATAL_FAILURE, "Error setting up logging (%d) [%s]\n", - ret, strerror(ret)); - return ret; - } - - gpo_child_debug_fd = fileno(debug_filep); - if (gpo_child_debug_fd == -1) { - DEBUG(SSSDBG_FATAL_FAILURE, - "fileno failed [%d][%s]\n", errno, strerror(errno)); - ret = errno; - return ret; - } - } - - return EOK; + return child_debug_init(GPO_CHILD_LOG_FILE, &gpo_child_debug_fd); } /* diff --git a/src/providers/krb5/krb5_init_shared.c b/src/providers/krb5/krb5_init_shared.c index 340eab1f0..3b4bf096e 100644 --- a/src/providers/krb5/krb5_init_shared.c +++ b/src/providers/krb5/krb5_init_shared.c @@ -30,7 +30,6 @@ errno_t krb5_child_init(struct krb5_ctx *krb5_auth_ctx, struct be_ctx *bectx) { errno_t ret; - FILE *debug_filep; time_t renew_intv = 0; krb5_deltat renew_interval_delta; char *renew_interval_str; @@ -83,23 +82,16 @@ errno_t krb5_child_init(struct krb5_ctx *krb5_auth_ctx, goto done; } - if (debug_to_file != 0) { - ret = open_debug_file_ex(KRB5_CHILD_LOG_FILE, &debug_filep, false); - if (ret != EOK) { - DEBUG(SSSDBG_FATAL_FAILURE, "Error setting up logging (%d) [%s]\n", - ret, strerror(ret)); - goto done; - } - - krb5_auth_ctx->child_debug_fd = fileno(debug_filep); - if (krb5_auth_ctx->child_debug_fd == -1) { - DEBUG(SSSDBG_FATAL_FAILURE, - "fileno failed [%d][%s]\n", errno, strerror(errno)); - ret = errno; - goto done; - } + krb5_auth_ctx->child_debug_fd = -1; /* -1 means not initialized */ + ret = child_debug_init(KRB5_CHILD_LOG_FILE, + &krb5_auth_ctx->child_debug_fd); + if (ret != EOK) { + DEBUG(SSSDBG_OP_FAILURE, "Could not set krb5_child debugging!\n"); + goto done; } + ret = EOK; + done: return ret; } diff --git a/src/providers/ldap/sdap_child_helpers.c b/src/providers/ldap/sdap_child_helpers.c index e5d46b9b7..400109890 100644 --- a/src/providers/ldap/sdap_child_helpers.c +++ b/src/providers/ldap/sdap_child_helpers.c @@ -466,25 +466,5 @@ static errno_t set_tgt_child_timeout(struct tevent_req *req, /* Setup child logging */ int sdap_setup_child(void) { - int ret; - FILE *debug_filep; - - if (debug_to_file != 0 && ldap_child_debug_fd == -1) { - ret = open_debug_file_ex(LDAP_CHILD_LOG_FILE, &debug_filep, false); - if (ret != EOK) { - DEBUG(SSSDBG_FATAL_FAILURE, "Error setting up logging (%d) [%s]\n", - ret, strerror(ret)); - return ret; - } - - ldap_child_debug_fd = fileno(debug_filep); - if (ldap_child_debug_fd == -1) { - DEBUG(SSSDBG_FATAL_FAILURE, - "fileno failed [%d][%s]\n", errno, strerror(errno)); - ret = errno; - return ret; - } - } - - return EOK; + return child_debug_init(LDAP_CHILD_LOG_FILE, &ldap_child_debug_fd); } 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__ */ -- cgit