See if this works as well:

sed -i -e 's/(ECHO)/ECHO/' term-utils/agetty.c

   -- Bruce


xinglp wrote:
> ---------- Forwarded message ----------
> From: Karel Zak <[email protected]>
> Date: Mon, Sep 26, 2011 at 6:52 PM
> Subject: Re: agetty not show username as I input on a serial term
> To: xinglp <[email protected]>
> Cc: [email protected]
> 
> 
> On Fri, Sep 02, 2011 at 02:26:17PM +0800, xinglp wrote:
>> When I  login  on a serial term,  I type username, but nothing appear
>> on the screen, just as input password.
> 
> [...]
> 
>> It looks like the "ECHO bit in termios.c_cflag" was not properly set
>> before the get_logname() been called.
> 
> The code incorrectly checks c_cflag, but the ECHO is c_lflag flag
> constant.
> 
> See the patch below. Thanks!
> 
>    Karel
> 
> 
> From b9261127260ff2a8efbdc6e5f9d00ec7f736b445 Mon Sep 17 00:00:00 2001
> From: Karel Zak <[email protected]>
> Date: Mon, 26 Sep 2011 12:34:10 +0200
> Subject: [PATCH] agetty: test ECHO on c_lflag
> 
> Reported-by: xinglp <[email protected]>
> Addresses: http://bugzilla.redhat.com/show_bug.cgi?id=739522
> Signed-off-by: Karel Zak <[email protected]>
> ---
>  term-utils/agetty.c |    6 +++---
>  1 files changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/term-utils/agetty.c b/term-utils/agetty.c
> index 8398015..75c2b14 100644
> --- a/term-utils/agetty.c
> +++ b/term-utils/agetty.c
> @@ -1466,7 +1466,7 @@ static char *get_logname(struct options *op,
> struct termios *tp, struct chardata
>                        case '#':
>                                cp->erase = ascval; /* set erase character */
>                                if (bp > logname) {
> -                                       if ((tp->c_cflag & (ECHO)) == 0)
> +                                       if ((tp->c_lflag & ECHO) == 0)
>                                                write_all(1,
> erase[cp->parity], 3);
>                                        bp--;
>                                }
> @@ -1475,7 +1475,7 @@ static char *get_logname(struct options *op,
> struct termios *tp, struct chardata
>                        case '@':
>                                cp->kill = ascval;              /* set
> kill character */
>                                while (bp > logname) {
> -                                       if ((tp->c_cflag & (ECHO)) == 0)
> +                                       if ((tp->c_lflag & ECHO) == 0)
>                                                write_all(1,
> erase[cp->parity], 3);
>                                        bp--;
>                                }
> @@ -1487,7 +1487,7 @@ static char *get_logname(struct options *op,
> struct termios *tp, struct chardata
>                                        break;
>                                if ((size_t)(bp - logname) >=
> sizeof(logname) - 1)
>                                        log_err(_("%s: input overrun"), 
> op->tty);
> -                               if ((tp->c_cflag & (ECHO)) == 0)
> +                               if ((tp->c_lflag & ECHO) == 0)
>                                        write_all(1, &c, 1);    /* echo
> the character */
>                                *bp++ = ascval;                 /* and
> store it */
>                                break;
> --
> 1.7.6

-- 
http://linuxfromscratch.org/mailman/listinfo/lfs-dev
FAQ: http://www.linuxfromscratch.org/faq/
Unsubscribe: See the above information page

Reply via email to