nsswrapper: implement group_del() in nss_wrapper.pl.
authorGünther Deschner <gd@samba.org>
Wed, 20 May 2009 00:10:12 +0000 (02:10 +0200)
committerGünther Deschner <gd@samba.org>
Wed, 20 May 2009 10:37:37 +0000 (12:37 +0200)
Guenther

lib/nss_wrapper/nss_wrapper.pl

index 88fdc7bca607c33c74e03a54ab28086d4d97846f..cfd3206c2ae759e3aa6376136afbd76ff86a020e 100644 (file)
@@ -246,6 +246,20 @@ sub passwd_remove_entry($$)
        delete $passwd->{uid}{${$eref}[2]};
 }
 
+sub group_remove_entry($$)
+{
+       my ($group, $eref) = @_;
+
+       for (my $i = 0; defined($group->{array}[$i]); $i++) {
+               if ($eref == $group->{array}[$i]) {
+                       $group->{array}[$i] = undef;
+               }
+       }
+
+       delete $group->{name}{${$eref}[0]};
+       delete $group->{gid}{${$eref}[2]};
+}
+
 sub passwd_save($)
 {
        my ($passwd) = @_;
@@ -360,7 +374,14 @@ sub group_delete($$)
 
        #print "group_delete: '$name' in '$path'\n";
 
-       die("group_delete: not implemented yet!");
+       my $group = group_load($path);
+
+       my $e = group_lookup_name($group, $name);
+       die("group[$name] does not exists in '$path'") unless defined($e);
+
+       group_remove_entry($group, $e);
+
+       group_save($group);
 
        return 0;
 }