mirror of
https://github.com/shadow-maint/shadow.git
synced 2024-11-27 12:04:17 +08:00
* NEWS, src/gpasswd.c: Use getopt_long instead of getopt. Added
support for long options --add (-a), --delete (-d), --remove-password (-r), --restrict (-R), --administrators (-A), and --members (-M) * man/gpasswd.1.xml: Document the new long options. * src/gpasswd.c: The sgrp structure is only used if SHADOWGRP is defined.
This commit is contained in:
parent
7cc0389757
commit
cfeacc4d67
10
ChangeLog
10
ChangeLog
@ -1,3 +1,13 @@
|
||||
2008-08-20 Nicolas François <nicolas.francois@centraliens.net>
|
||||
|
||||
* NEWS, src/gpasswd.c: Use getopt_long instead of getopt. Added
|
||||
support for long options --add (-a), --delete (-d),
|
||||
--remove-password (-r), --restrict (-R), --administrators (-A),
|
||||
and --members (-M)
|
||||
* man/gpasswd.1.xml: Document the new long options.
|
||||
* src/gpasswd.c: The sgrp structure is only used if SHADOWGRP is
|
||||
defined.
|
||||
|
||||
2008-08-18 Nicolas François <nicolas.francois@centraliens.net>
|
||||
|
||||
* src/grpck.c: Added function fail_exit(). Check failure to unlock
|
||||
|
4
NEWS
4
NEWS
@ -6,6 +6,10 @@ shadow-4.1.2.1 -> shadow-4.1.3 UNRELEASED
|
||||
- packaging
|
||||
* Added support for OpenPAM.
|
||||
|
||||
- gpasswd
|
||||
* Added support for long options --add (-a), --delete (-d),
|
||||
--remove-password (-r), --restrict (-R), --administrators (-A), and
|
||||
--members (-M).
|
||||
- groupmems
|
||||
* Check if user exist before they are added to groups.
|
||||
* Avoid segfault in case the specified group does not exist in /etc/group.
|
||||
|
@ -91,7 +91,7 @@
|
||||
<variablelist remap='IP'>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<option>-a</option> <replaceable>user</replaceable>
|
||||
<option>-a</option>, <option>--add</option> <replaceable>user</replaceable>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
@ -104,7 +104,7 @@
|
||||
<variablelist remap='IP'>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<option>-d</option> <replaceable>user</replaceable>
|
||||
<option>-d</option>, <option>--delete</option> <replaceable>user</replaceable>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
@ -117,7 +117,7 @@
|
||||
<variablelist remap='IP'>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<option>-r</option>
|
||||
<option>-r</option>, <option>--remove-password</option>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
@ -132,7 +132,7 @@
|
||||
<variablelist remap='IP'>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<option>-R</option>
|
||||
<option>-R</option>, <option>--restrict</option>
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
@ -147,7 +147,7 @@
|
||||
<variablelist remap='IP' condition="gshadow">
|
||||
<varlistentry>
|
||||
<term>
|
||||
<option>-A</option> <replaceable>user</replaceable>,...
|
||||
<option>-A</option>, <option>--administrators</option> <replaceable>user</replaceable>,...
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
@ -159,7 +159,7 @@
|
||||
<variablelist remap='IP'>
|
||||
<varlistentry>
|
||||
<term>
|
||||
<option>-M</option> <replaceable>user</replaceable>,...
|
||||
<option>-M</option>, <option>--members</option> <replaceable>user</replaceable>,...
|
||||
</term>
|
||||
<listitem>
|
||||
<para>
|
||||
|
@ -36,6 +36,7 @@
|
||||
|
||||
#include <errno.h>
|
||||
#include <fcntl.h>
|
||||
#include <getopt.h>
|
||||
#include <grp.h>
|
||||
#include <pwd.h>
|
||||
#include <signal.h>
|
||||
@ -244,8 +245,18 @@ static void failure (void)
|
||||
static void process_flags (int argc, char **argv)
|
||||
{
|
||||
int flag;
|
||||
int option_index = 0;
|
||||
static struct option long_options[] = {
|
||||
{"add", required_argument, NULL, 'a'},
|
||||
{"delete", required_argument, NULL, 'd'},
|
||||
{"remove-password", no_argument, NULL, 'r'},
|
||||
{"restrict", no_argument, NULL, 'R'},
|
||||
{"administrators", required_argument, NULL, 'A'},
|
||||
{"members", required_argument, NULL, 'M'},
|
||||
{NULL, 0, NULL, '\0'}
|
||||
};
|
||||
|
||||
while ((flag = getopt (argc, argv, "a:A:d:gM:rR")) != EOF) {
|
||||
while ((flag = getopt_long (argc, argv, "a:A:d:gM:rR", long_options, &option_index)) != -1) {
|
||||
switch (flag) {
|
||||
case 'a': /* add a user */
|
||||
user = optarg;
|
||||
@ -605,7 +616,9 @@ static void get_group (struct group *gr)
|
||||
#endif
|
||||
{
|
||||
struct group const*tmpgr = NULL;
|
||||
#ifdef SHADOWGRP
|
||||
struct sgrp const*tmpsg = NULL;
|
||||
#endif
|
||||
|
||||
if (gr_open (O_RDONLY) == 0) {
|
||||
fprintf (stderr, _("%s: cannot open %s\n"), Prog, gr_dbname ());
|
||||
|
Loading…
Reference in New Issue
Block a user