[GRASS-dev] db.login: interactive PW implemented

Glynn Clements glynn at gclements.plus.com
Wed Nov 15 19:11:54 EST 2006

[I hit "send" too soon on the previous attempt.]

Markus Neteler wrote:

> when using db.login, I disliked to enter the password 
> in cleartext on command line. I have implemented an interactive
> password query. The behaviour is now like this:
> Example 1: Username and password specified: 
>   db.login user=bacava pass=secret
> Example 2: Username and empty password specified: 
>   db.login user=bacava pass=""
> Example 3: Username specified, password will be queried interactively: 
>   db.login user=bacava
> The only thing which I don't know how to fix is that
> G_gets() echoes the password. I wonder if we could have
> a G_gets_silent() or something (lib/gis/gets.c).


	#include <termios.h>
	#include <unistd.h>

	struct termios tios, tios2;
	tcgetattr(STDIN_FILENO, &tios);
	tios2 = tios;
	tios2.c_lflag &= ~ECHO;
	tcsetattr(STDIN_FILENO, TCSAFLUSH, &tios2);
	/* read password */
	tcsetattr(STDIN_FILENO, TCSANOW, &tios);

However, BSD historically used gtty/stty instead of tc{get,set}attr,
and some older systems used ioctl(TCGETS)/ioctl(TCSETS) (IIRC, Linux'
tc{get,set}attr are implemented on top of the ioctl()s).

And Windows uses something completely different (conio.h, maybe?).

Glynn Clements <glynn at gclements.plus.com>

More information about the grass-dev mailing list