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]>