From de6a5fe1fa4ccdddaa80f8376c668f183e3844b9 Mon Sep 17 00:00:00 2001 From: mar Date: Fri, 28 Oct 1988 15:30:56 +0000 Subject: [PATCH] fix extraction of recursive members of specific credentials lists --- gen/nfs.qc | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/gen/nfs.qc b/gen/nfs.qc index d071e08c..914f51e1 100644 --- a/gen/nfs.qc +++ b/gen/nfs.qc @@ -130,7 +130,7 @@ int do_nfs() int do_lists(lists) struct save_queue *lists; ##{ - struct save_queue *sq; + struct save_queue *sq, *members; char file[64], *u; struct hash *users, *do_everyone(); struct stat sb; @@ -177,19 +177,24 @@ struct save_queue *lists; } sq = sq_create(); sq_save_data(sq, listname); + members = sq_create(); while (sq_get_data(sq, &lsname)) { ## repeat retrieve (lname = trim(l.name)) ## where m.list_id = l1.list_id and l1.name = @lsname and ## m.member_type = "LIST" and m.member_id = l.list_id { - sq_save_unique_string(sq, lname); + sq_save_unique_string(sq, strsave(lname)); ## } ## repeat retrieve (id = m.member_id) ## where m.list_id = l1.list_id and l1.name = @lsname and ## m.member_type = "USER" { - if (u = hash_lookup(users, id)) - fprintf(fd, "%s\n", u); + if (u = hash_lookup(users, id)) { + sq_save_unique_data(members, u); + } ## } } + while (sq_get_data(members, &lsname)) + fprintf(fd, "%s\n", lsname); + sq_destroy(members); sq_destroy(sq); if (fclose(fd)) { fprintf(stderr, "error closing %s\n", file); -- 2.45.2