* src/login.c, man/login.1.xml: the username is not an optional

parameter of -f. Fix the getopt optstring, remove the parsing of
	username in the -f processing block, and remove unnecessary checks
	(username cannot be parsed twice anymore), better documentation of
	the synopsis.
This commit is contained in:
nekral-guest 2008-09-20 20:20:19 +00:00
parent c8d2175981
commit d400af51fa
3 changed files with 18 additions and 24 deletions

View File

@ -10,6 +10,11 @@
sections.
* src/login.c: Erase the username later since it it used for the
fake password check (in case of empty password).
* src/login.c, man/login.1.xml: the username is not an optional
parameter of -f. Fix the getopt optstring, remove the parsing of
username in the -f processing block, and remove unnecessary checks
(username cannot be parsed twice anymore), better documentation of
the synopsis.
2008-09-20 Nicolas François <nicolas.francois@centraliens.net>

View File

@ -51,6 +51,7 @@
<cmdsynopsis>
<command>login</command>
<arg choice='opt'>-p</arg>
<arg choice='opt'>-h <replaceable>host</replaceable></arg>
<arg choice='opt'>
<replaceable>username</replaceable></arg>
<arg choice='opt' rep='repeat'> <replaceable>ENV=VAR</replaceable></arg>
@ -59,7 +60,8 @@
<command>login</command>
<arg choice='opt'>-p</arg>
<arg choice='opt'>-h <replaceable>host</replaceable></arg>
<arg choice='opt'>-f <replaceable>username</replaceable></arg>
<arg choice='plain'>-f</arg>
<arg choice='plain'><replaceable>username</replaceable></arg>
</cmdsynopsis>
<cmdsynopsis>
<command>login</command>
@ -161,7 +163,12 @@
<option>-f</option>
</term>
<listitem>
<para>Do not perform authentication, user is preauthenticated.
<para>
Do not perform authentication, user is preauthenticated.
</para>
<para>
Note: In that case, <replaceable>username</replaceable> is
mandatory.
</para>
</listitem>
</varlistentry>

View File

@ -265,27 +265,13 @@ static void process_flags (int argc, char *const *argv)
/*
* Process options.
*/
while ((flag = getopt (argc, argv, "d:f::h:pr:")) != EOF) {
while ((flag = getopt (argc, argv, "d:fh:pr:")) != EOF) {
switch (flag) {
case 'd':
/* "-d device" ignored for compatibility */
break;
case 'f':
/*
* username must be a separate token
* (-f root, *not* -froot). --marekm
*
* if -f has an arg, use that, else use the
* normal user name passed after all options
* --benc
*/
if (optarg != NULL && optarg != argv[optind - 1]) {
usage ();
}
fflg = true;
if (optarg) {
username = xstrdup (optarg);
}
break;
case 'h':
hflg = true;
@ -330,10 +316,6 @@ static void process_flags (int argc, char *const *argv)
* Get the user name.
*/
if (optind < argc) {
if (rflg || (fflg && (NULL != username))) {
usage ();
}
username = xstrdup (argv[optind]);
strzero (argv[optind]);
++optind;