summaryrefslogtreecommitdiffstats
path: root/src/tools
diff options
context:
space:
mode:
authorOndrej Kos <okos@redhat.com>2013-05-20 17:23:27 +0200
committerJakub Hrozek <jhrozek@redhat.com>2013-05-21 16:40:12 +0200
commitdb78f4c750943fcd4b60bca5f3fdfd6cc5d3d4f8 (patch)
tree0ca0aa94c24e590d0193ed5f7d2f7ee8e72b35fc /src/tools
parent2f6b38151c6dd21cbe0cf2579c20f8c5a358d956 (diff)
downloadsssd-db78f4c750943fcd4b60bca5f3fdfd6cc5d3d4f8.tar.gz
sssd-db78f4c750943fcd4b60bca5f3fdfd6cc5d3d4f8.tar.xz
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.c97
-rw-r--r--src/tools/tools_util.h8
2 files changed, 0 insertions, 105 deletions
diff --git a/src/tools/nscd.c b/src/tools/nscd.c
deleted file mode 100644
index b9f2ba88c..000000000
--- 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 50f5a51f7..cc35475de 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);