* 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. sections.
* src/login.c: Erase the username later since it it used for the * src/login.c: Erase the username later since it it used for the
fake password check (in case of empty password). 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> 2008-09-20 Nicolas François <nicolas.francois@centraliens.net>

View File

@ -50,20 +50,22 @@
<refsynopsisdiv id='synopsis'> <refsynopsisdiv id='synopsis'>
<cmdsynopsis> <cmdsynopsis>
<command>login</command> <command>login</command>
<arg choice='opt'>-p </arg> <arg choice='opt'>-p</arg>
<arg choice='opt'>-h <replaceable>host</replaceable></arg>
<arg choice='opt'> <arg choice='opt'>
<replaceable>username</replaceable></arg> <replaceable>username</replaceable></arg>
<arg choice='opt' rep='repeat'> <replaceable>ENV=VAR</replaceable></arg> <arg choice='opt' rep='repeat'> <replaceable>ENV=VAR</replaceable></arg>
</cmdsynopsis> </cmdsynopsis>
<cmdsynopsis> <cmdsynopsis>
<command>login</command> <command>login</command>
<arg choice='opt'>-p </arg> <arg choice='opt'>-p</arg>
<arg choice='opt'>-h <replaceable>host</replaceable></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>
<cmdsynopsis> <cmdsynopsis>
<command>login</command> <command>login</command>
<arg choice='opt'>-p </arg> <arg choice='opt'>-p</arg>
<arg choice='plain'>-r <replaceable>host</replaceable></arg> <arg choice='plain'>-r <replaceable>host</replaceable></arg>
</cmdsynopsis> </cmdsynopsis>
</refsynopsisdiv> </refsynopsisdiv>
@ -161,7 +163,12 @@
<option>-f</option> <option>-f</option>
</term> </term>
<listitem> <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> </para>
</listitem> </listitem>
</varlistentry> </varlistentry>

View File

@ -265,27 +265,13 @@ static void process_flags (int argc, char *const *argv)
/* /*
* Process options. * Process options.
*/ */
while ((flag = getopt (argc, argv, "d:f::h:pr:")) != EOF) { while ((flag = getopt (argc, argv, "d:fh:pr:")) != EOF) {
switch (flag) { switch (flag) {
case 'd': case 'd':
/* "-d device" ignored for compatibility */ /* "-d device" ignored for compatibility */
break; break;
case 'f': 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; fflg = true;
if (optarg) {
username = xstrdup (optarg);
}
break; break;
case 'h': case 'h':
hflg = true; hflg = true;
@ -330,10 +316,6 @@ static void process_flags (int argc, char *const *argv)
* Get the user name. * Get the user name.
*/ */
if (optind < argc) { if (optind < argc) {
if (rflg || (fflg && (NULL != username))) {
usage ();
}
username = xstrdup (argv[optind]); username = xstrdup (argv[optind]);
strzero (argv[optind]); strzero (argv[optind]);
++optind; ++optind;