Acked-by: Latchesar Ionkov <[EMAIL PROTECTED]>

On Nov 3, 2008, at 2:36 PM, Abhishek Kulkarni wrote:


This patch fixes a couple of bugs which prevented xgroupset, xuserset to
skip entries which already existed in the pool.

xp_nodeerror_print() deletes an error from the errorpool after printing
it.

Index: utils/xgroupset.c
===================================================================
--- utils/xgroupset.c   (revision 720)
+++ utils/xgroupset.c   (working copy)
@@ -141,10 +141,8 @@
               if (!strcmp("delete", cmd)) {
                       if (groupfile) {
                               setgrent();
-                               while ((gr = getgrent()) != NULL) {
- if (xp_group_del(nds, adminkey,
gr->gr_name) < 0)
-                                               goto error;
-                               }
+                               while ((gr = getgrent()) != NULL)
+                                       xp_group_del(nds, adminkey,
gr->gr_name);
                               endgrent();
                       } else {
                               groupname = argv[optind++];
@@ -154,10 +152,8 @@
               } else { /* group add */
                       if (groupfile) {
                               setgrent();
-                               while ((gr = getgrent()) != NULL) {
- if (xp_group_add(nds, adminkey,
gr->gr_name, gr->gr_gid) < 0)
-                                               goto error;
-                               }
+                               while ((gr = getgrent()) != NULL)
+                                       xp_group_add(nds, adminkey,
gr->gr_name, gr->gr_gid);
                               endgrent();
                       } else {
                               groupname = argv[optind++];
Index: utils/xuserset.c
===================================================================
--- utils/xuserset.c    (revision 720)
+++ utils/xuserset.c    (working copy)
@@ -179,10 +179,8 @@
               if (!strcmp("delete", cmd)) {
                       if (passwdfile) {
                               setpwent();
-                               while ((pw = getpwent()) != NULL) {
-                                       if (xp_user_del(nds, adminkey,
pw->pw_name) < 0)
-                                               goto error;
-                               }
+                               while ((pw = getpwent()) != NULL)
+                                       xp_user_del(nds, adminkey,
pw->pw_name);
                               endpwent();
                       } else {
                               username = argv[optind++];
@@ -204,9 +202,8 @@
                                               continue;
                                       }

-                                       if (xp_user_add(nds, adminkey,
pw->pw_name, pw->pw_uid,
-                                                       gr->gr_name,
userkey) < 0)
-                                               goto error;
+                                       xp_user_add(nds, adminkey,
pw->pw_name, pw->pw_uid,
+                                                   gr->gr_name,
userkey);
                               }
                               endpwent();
                       } else {
Index: libxcpu/node.c
===================================================================
--- libxcpu/node.c      (revision 720)
+++ libxcpu/node.c      (working copy)
@@ -167,6 +167,9 @@
       for(pe = NULL, ne = errorpool; ne != NULL; pe = ne, ne =
ne->next) {
               fprintf(stderr, "%s: %s: Error %d: %s\n",
                        prog, ne->node->name, ne->ecode, ne->ename);
+
+               errorpool = ne->next;
+               free(ne);
                
                if(pe != NULL)
                        free(pe);

--
Signed-off-by: Abhishek Kulkarni <[EMAIL PROTECTED]>


Reply via email to