]> git.decadent.org.uk Git - nfs-utils.git/commitdiff
gssd: refactor update_client_list()
authorOlga Kornievskaia <aglo@citi.umich.edu>
Mon, 16 Nov 2009 14:14:31 +0000 (09:14 -0500)
committerSteve Dickson <steved@redhat.com>
Mon, 16 Nov 2009 14:14:31 +0000 (09:14 -0500)
Split out the processing for a pipe to a separate routine.  The next
patch adds a new pipe to be processed.

Signed-off-by: Olga Kornievskaia <aglo@citi.umich.edu>
Signed-off-by: Kevin Coffman <kwc@citi.umich.edu>
Signed-off-by: Steve Dickson <steved@redhat.com>
utils/gssd/gssd_main_loop.c
utils/gssd/gssd_proc.c

index 917b66221bfd536419146f1881b293a2831bf406..397fd1461f3c873077ecbd7c2f78548bf8b0ea9e 100644 (file)
@@ -132,8 +132,7 @@ gssd_run()
                while (dir_changed) {
                        dir_changed = 0;
                        if (update_client_list()) {
-                               printerr(0, "ERROR: couldn't update "
-                                        "client list\n");
+                               /* Error msg is already printed */
                                exit(1);
                        }
                }
index 37e2aa512f3fc6783bb34bb4eede9a15bcb99243..1942175bc9434cc6b197de05d1c48a1d5842a1fc 100644 (file)
@@ -478,25 +478,25 @@ find_client(char *dirname)
        return 0;
 }
 
-/* Used to read (and re-read) list of clients, set up poll array. */
-int
-update_client_list(void)
+static int
+process_pipedir(char *pipe_name)
 {
        struct dirent **namelist;
        int i, j;
 
-       if (chdir(pipefs_nfsdir) < 0) {
+       if (chdir(pipe_name) < 0) {
                printerr(0, "ERROR: can't chdir to %s: %s\n",
-                        pipefs_nfsdir, strerror(errno));
+                        pipe_name, strerror(errno));
                return -1;
        }
 
-       j = scandir(pipefs_nfsdir, &namelist, NULL, alphasort);
+       j = scandir(pipe_name, &namelist, NULL, alphasort);
        if (j < 0) {
                printerr(0, "ERROR: can't scandir %s: %s\n",
-                        pipefs_nfsdir, strerror(errno));
+                        pipe_name, strerror(errno));
                return -1;
        }
+
        update_old_clients(namelist, j);
        for (i=0; i < j; i++) {
                if (i < FD_ALLOC_BLOCK
@@ -507,9 +507,23 @@ update_client_list(void)
        }
 
        free(namelist);
+
        return 0;
 }
 
+/* Used to read (and re-read) list of clients, set up poll array. */
+int
+update_client_list(void)
+{
+       int retval = -1;
+
+       retval = process_pipedir(pipefs_nfsdir);
+       if (retval)
+               printerr(0, "ERROR: processing %s\n", pipefs_nfsdir);
+
+       return retval;
+}
+
 static int
 do_downcall(int k5_fd, uid_t uid, struct authgss_private_data *pd,
            gss_buffer_desc *context_token)