
We recently added a call to getpass(3) function. Needless to say this doesn't exist on Windows. More seriously the man-page for getpass on Linux has strong exhortations not to use the function. NAME getpass - get a password SYNOPSIS #include <unistd.h> char *getpass( const char * prompt ); DESCRIPTION This function is obsolete. Do not use it. The getpass() function opens /dev/tty (the controlling terminal of the process), outputs the string prompt, turns off echoing, reads one line (the "password"), restores the terminal state and closes /dev/tty again. [...] CONFORMING TO Present in SUSv2, but marked LEGACY. Removed in POSIX.1-2001. Should we remove it? Replace it? Rich. -- Emerging Technologies, Red Hat - http://et.redhat.com/~rjones/ Registered Address: Red Hat UK Ltd, Amberley Place, 107-111 Peascod Street, Windsor, Berkshire, SL4 1TE, United Kingdom. Registered in England and Wales under Company Registration No. 03798903

On Thu, Dec 06, 2007 at 02:28:58PM +0000, Richard W.M. Jones wrote:
We recently added a call to getpass(3) function. Needless to say this doesn't exist on Windows. More seriously the man-page for getpass on Linux has strong exhortations not to use the function.
NAME getpass - get a password
SYNOPSIS #include <unistd.h>
char *getpass( const char * prompt );
DESCRIPTION This function is obsolete. Do not use it.
The getpass() function opens /dev/tty (the controlling terminal of the process), outputs the string prompt, turns off echoing, reads one line (the "password"), restores the terminal state and closes /dev/tty again. [...] CONFORMING TO Present in SUSv2, but marked LEGACY. Removed in POSIX.1-2001.
Should we remove it? Replace it?
I'm open to suggestions? I'm not aware of any 'easy' functions to do the same thing. Could write a whole tonne of sick code which uses the tcgetattr/tcsetattr() apis to turn off echoing on stdin, but getpass was simpler. Maybe gnulib has something we can use ? Regards, Dan -- |=- Red Hat, Engineering, Emerging Technologies, Boston. +1 978 392 2496 -=| |=- Perl modules: http://search.cpan.org/~danberr/ -=| |=- Projects: http://freshmeat.net/~danielpb/ -=| |=- GnuPG: 7D3B9505 F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 -=|

Daniel P. Berrange wrote:
On Thu, Dec 06, 2007 at 02:28:58PM +0000, Richard W.M. Jones wrote:
We recently added a call to getpass(3) function. Needless to say this doesn't exist on Windows. More seriously the man-page for getpass on Linux has strong exhortations not to use the function.
NAME getpass - get a password
SYNOPSIS #include <unistd.h>
char *getpass( const char * prompt );
DESCRIPTION This function is obsolete. Do not use it.
The getpass() function opens /dev/tty (the controlling terminal of the process), outputs the string prompt, turns off echoing, reads one line (the "password"), restores the terminal state and closes /dev/tty again. [...] CONFORMING TO Present in SUSv2, but marked LEGACY. Removed in POSIX.1-2001.
Should we remove it? Replace it?
I'm open to suggestions? I'm not aware of any 'easy' functions to do the same thing. Could write a whole tonne of sick code which uses the tcgetattr/tcsetattr() apis to turn off echoing on stdin, but getpass was simpler. Maybe gnulib has something we can use ?
Sorry should have checked that. Yes, gnulib does have getpass, LGPLv2+, written by Jim Meyering. Rich. -- Emerging Technologies, Red Hat - http://et.redhat.com/~rjones/ Registered Address: Red Hat UK Ltd, Amberley Place, 107-111 Peascod Street, Windsor, Berkshire, SL4 1TE, United Kingdom. Registered in England and Wales under Company Registration No. 03798903

On Thu, Dec 06, 2007 at 02:36:04PM +0000, Daniel P. Berrange wrote:
On Thu, Dec 06, 2007 at 02:28:58PM +0000, Richard W.M. Jones wrote:
We recently added a call to getpass(3) function. Needless to say this doesn't exist on Windows. More seriously the man-page for getpass on Linux has strong exhortations not to use the function.
NAME getpass - get a password
SYNOPSIS #include <unistd.h>
char *getpass( const char * prompt );
DESCRIPTION This function is obsolete. Do not use it.
The getpass() function opens /dev/tty (the controlling terminal of the process), outputs the string prompt, turns off echoing, reads one line (the "password"), restores the terminal state and closes /dev/tty again. [...] CONFORMING TO Present in SUSv2, but marked LEGACY. Removed in POSIX.1-2001.
Should we remove it? Replace it?
I'm open to suggestions? I'm not aware of any 'easy' functions to do the same thing. Could write a whole tonne of sick code which uses the tcgetattr/tcsetattr() apis to turn off echoing on stdin, but getpass was simpler. Maybe gnulib has something we can use ?
And looking at the glibc source, this is basically what gepass() does. It opens /dev/tty, uses tcgetattr/tcsetattr to turn off echo, reads a single line and then cleans up restoring echo and closing /dev/tty. Dan. -- |=- Red Hat, Engineering, Emerging Technologies, Boston. +1 978 392 2496 -=| |=- Perl modules: http://search.cpan.org/~danberr/ -=| |=- Projects: http://freshmeat.net/~danielpb/ -=| |=- GnuPG: 7D3B9505 F3C9 553F A1DA 4AC2 5648 23C1 B3DF F742 7D3B 9505 -=|
participants (3)
-
Daniel P. Berrange
-
Jim Meyering
-
Richard W.M. Jones