You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

138 lines
3.3 KiB

autofs-5.1.1 - move check_nss_result() to nsswitchr.c
From: Ian Kent <raven@themaw.net>
The check_nss_result() function will be needed by the multi-map lookup
module so move it to the nss library module.
Signed-off-by: Ian Kent <raven@themaw.net>
---
daemon/lookup.c | 45 ---------------------------------------------
include/nsswitch.h | 1 +
lib/nsswitch.c | 45 +++++++++++++++++++++++++++++++++++++++++++++
3 files changed, 46 insertions(+), 45 deletions(-)
diff --git a/daemon/lookup.c b/daemon/lookup.c
index 62071df..53455a1 100644
--- a/daemon/lookup.c
+++ b/daemon/lookup.c
@@ -25,51 +25,6 @@
#include "automount.h"
#include "nsswitch.h"
-static int check_nss_result(struct nss_source *this, enum nsswitch_status result)
-{
- enum nsswitch_status status;
- struct nss_action a;
-
- /* Check if we have negated actions */
- for (status = 0; status < NSS_STATUS_MAX; status++) {
- a = this->action[status];
- if (a.action == NSS_ACTION_UNKNOWN)
- continue;
-
- if (a.negated && result != status) {
- if (a.action == NSS_ACTION_RETURN) {
- if (result == NSS_STATUS_SUCCESS)
- return 1;
- else
- return 0;
- }
- }
- }
-
- a = this->action[result];
-
- /* Check if we have other actions for this status */
- switch (result) {
- case NSS_STATUS_SUCCESS:
- if (a.action == NSS_ACTION_CONTINUE)
- break;
- return 1;
-
- case NSS_STATUS_NOTFOUND:
- case NSS_STATUS_UNAVAIL:
- case NSS_STATUS_TRYAGAIN:
- if (a.action == NSS_ACTION_RETURN) {
- return 0;
- }
- break;
-
- default:
- break;
- }
-
- return -1;
-}
-
static void nsslist_cleanup(void *arg)
{
struct list_head *nsslist = (struct list_head *) arg;
diff --git a/include/nsswitch.h b/include/nsswitch.h
index 2b445a9..d3e4027 100644
--- a/include/nsswitch.h
+++ b/include/nsswitch.h
@@ -56,6 +56,7 @@ struct nss_source {
};
int set_action(struct nss_action *a, char *status, char *action, int negated);
+int check_nss_result(struct nss_source *this, enum nsswitch_status result);
struct nss_source *add_source(struct list_head *head, char *source);
int free_sources(struct list_head *list);
diff --git a/lib/nsswitch.c b/lib/nsswitch.c
index c6163a7..74c7525 100644
--- a/lib/nsswitch.c
+++ b/lib/nsswitch.c
@@ -55,6 +55,51 @@ int set_action(struct nss_action *act, char *status, char *action, int negated)
return 1;
}
+int check_nss_result(struct nss_source *this, enum nsswitch_status result)
+{
+ enum nsswitch_status status;
+ struct nss_action a;
+
+ /* Check if we have negated actions */
+ for (status = 0; status < NSS_STATUS_MAX; status++) {
+ a = this->action[status];
+ if (a.action == NSS_ACTION_UNKNOWN)
+ continue;
+
+ if (a.negated && result != status) {
+ if (a.action == NSS_ACTION_RETURN) {
+ if (result == NSS_STATUS_SUCCESS)
+ return 1;
+ else
+ return 0;
+ }
+ }
+ }
+
+ a = this->action[result];
+
+ /* Check if we have other actions for this status */
+ switch (result) {
+ case NSS_STATUS_SUCCESS:
+ if (a.action == NSS_ACTION_CONTINUE)
+ break;
+ return 1;
+
+ case NSS_STATUS_NOTFOUND:
+ case NSS_STATUS_UNAVAIL:
+ case NSS_STATUS_TRYAGAIN:
+ if (a.action == NSS_ACTION_RETURN) {
+ return 0;
+ }
+ break;
+
+ default:
+ break;
+ }
+
+ return -1;
+}
+
struct nss_source *add_source(struct list_head *head, char *source)
{
struct nss_source *s;