diff options
author | Ondrej Kos <okos@redhat.com> | 2013-05-20 17:23:27 +0200 |
---|---|---|
committer | Jakub Hrozek <jhrozek@redhat.com> | 2013-05-21 16:40:12 +0200 |
commit | db78f4c750943fcd4b60bca5f3fdfd6cc5d3d4f8 (patch) | |
tree | 0ca0aa94c24e590d0193ed5f7d2f7ee8e72b35fc /src/tools | |
parent | 2f6b38151c6dd21cbe0cf2579c20f8c5a358d956 (diff) | |
download | sssd-db78f4c750943fcd4b60bca5f3fdfd6cc5d3d4f8.tar.gz sssd-db78f4c750943fcd4b60bca5f3fdfd6cc5d3d4f8.tar.bz2 sssd-db78f4c750943fcd4b60bca5f3fdfd6cc5d3d4f8.zip |
Move nscd.c from tools to util
Preparation for the following patch which will include the nscd.c in the
monitor code due to newly introduced function for checking the nscd
configuration file.
Diffstat (limited to 'src/tools')
-rw-r--r-- | src/tools/nscd.c | 97 | ||||
-rw-r--r-- | src/tools/tools_util.h | 8 |
2 files changed, 0 insertions, 105 deletions
diff --git a/src/tools/nscd.c b/src/tools/nscd.c deleted file mode 100644 index b9f2ba88..00000000 --- a/src/tools/nscd.c +++ /dev/null @@ -1,97 +0,0 @@ -/* - SSSD - - nscd.c - - Copyright (C) Jakub Hrozek <jhrozek@redhat.com> 2010 - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ - -#include <talloc.h> -#include <stdlib.h> -#include <sys/types.h> -#include <sys/wait.h> - -#include "config.h" -#include "util/util.h" -#include "tools/tools_util.h" - -#ifndef NSCD_RELOAD_ARG -#define NSCD_RELOAD_ARG "-i" -#endif - -#if defined(NSCD_PATH) && defined(HAVE_NSCD) -int flush_nscd_cache(enum nscd_db flush_db) -{ - const char *service; - pid_t nscd_pid; - int ret, status; - - switch(flush_db) { - case NSCD_DB_PASSWD: - service = "passwd"; - break; - - case NSCD_DB_GROUP: - service = "group"; - break; - - default: - DEBUG(1, ("Unknown nscd database\n")); - ret = EINVAL; - goto done; - } - - nscd_pid = fork(); - switch (nscd_pid) { - case 0: - execl(NSCD_PATH, "nscd", NSCD_RELOAD_ARG, service, NULL); - /* if this returns it is an error */ - DEBUG(1, ("execl(3) failed: %d(%s)\n", errno, strerror(errno))); - exit(errno); - case -1: - DEBUG(1, ("fork failed\n")); - ret = EFAULT; - break; - default: - do { - errno = 0; - ret = waitpid(nscd_pid, &status, 0); - } while (ret == -1 && errno == EINTR); - if (ret > 0) { - if (WIFEXITED(status)) { - ret = WEXITSTATUS(status); - if (ret > 0) { - /* The flush fails if nscd is not running, so do not care - * about the return code */ - DEBUG(8, ("Error flushing cache, is nscd running?\n")); - } - } - } else { - DEBUG(5, ("Failed to wait for children %d\n", nscd_pid)); - ret = EIO; - } - } - -done: - return ret; -} - -#else /* defined(NSCD_PATH) && defined(HAVE_NSCD) */ -int flush_nscd_cache(enum nscd_db flush_db) -{ - return EOK; -} -#endif diff --git a/src/tools/tools_util.h b/src/tools/tools_util.h index 50f5a51f..cc35475d 100644 --- a/src/tools/tools_util.h +++ b/src/tools/tools_util.h @@ -120,14 +120,6 @@ int remove_tree(const char *root); int copy_tree(const char *src_root, const char *dst_root, mode_t mode_root, uid_t uid, gid_t gid); -/* from nscd.c */ -enum nscd_db { - NSCD_DB_PASSWD, - NSCD_DB_GROUP -}; - -int flush_nscd_cache(enum nscd_db flush_db); - /* from selinux.c */ int selinux_file_context(const char *dst_name); int reset_selinux_file_context(void); |