X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?a=blobdiff_plain;f=groupmanage%2Fgroupmanage;h=24c007b72858b84656fc7349fa957af0f26bfffd;hb=b943240f15db6b7684fbd241dc0ab5445390dde5;hp=90957fdd415ced1c7b3eb984bedefcf840873aa0;hpb=2af9fec9f20de481bafa2f03f86dc8421fc0fee2;p=userv-utils.git diff --git a/groupmanage/groupmanage b/groupmanage/groupmanage index 90957fd..24c007b 100755 --- a/groupmanage/groupmanage +++ b/groupmanage/groupmanage @@ -1,23 +1,23 @@ #!/usr/bin/perl # -# Copyright (C) 1995-9, 2003 Ian Jackson -# Copyright (C) 1999, 2003 -# Chancellor Masters and Scholars of the University of Cambridge -# -# Improved by Ben Harris in 1999 and 2003 for Unix -# Support's own nefarious purposes. +# Copyright 1996-2013 Ian Jackson +# Copyright 1998 David Damerell +# Copyright 1999,2003 +# Chancellor Masters and Scholars of the University of Cambridge +# Copyright 2010 Tony Finch # # This is free software; you can redistribute it and/or modify it # under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. # -# It is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. # -# $Id$ +# You should have received a copy of the GNU General Public License +# along with userv-utils; if not, see http://www.gnu.org/licenses/. sub usage { &unlock; @@ -72,6 +72,7 @@ $callinguser= exists $ENV{'USERV_UID'} ? $ENV{'USERV_UID'} : $<; 'gtmp-file','gtmp', 'grouplist-file','grouplist', 'name-regexp','', + 'name-maxlen','8', 'admin-group','', 'finish-command',''); %ovalid= ('user-create','boolean', @@ -84,6 +85,7 @@ $callinguser= exists $ENV{'USERV_UID'} ? $ENV{'USERV_UID'} : $<; 'gtmp-file','string', 'grouplist-file','string', 'name-regexp','string', + 'name-maxlen','number', 'admin-group','string', 'finish-command','string'); @@ -148,7 +150,8 @@ END if ($ARGV[0] eq '--create') { $opt{'user-create'} || !$callinguser || &quit("group creation by users disabled by administrator"); - length($groupname) <= 8 || &quit("group names must be 8 chars or fewer"); + length($groupname) <= $opt{'name-maxlen'} || + &quit("group names must be $opt{'name-maxlen'} chars or fewer"); $!=0; (@pw= getpwuid($callinguser)) || &quit("cannot get your passwd entry: $!"); $createby= $pw[0]; @@ -227,7 +230,7 @@ while (@ARGV) { } elsif (m/^\w[-0-9A-Za-z]*$/) { y/\n//d; $chgu=$_; - getpwnam($chgu) || &quit("username $chgu does not exist"); + defined(getpwnam($chgu)) || &quit("username $chgu does not exist"); eval "\@l = \@$clist; 1" || &quit("internal error: $@"); $already= grep($_ eq $chgu, @l); if ($action eq 'add') {