Saisie de mot de passe masquée

Portrait de trax

Ce petit bout de code (en grande partie provenant du livre "C en action" d'O'Reilly), permet de saisir un mot de passe en console sans afficher les caractères tapés.
Ce code existe également en syntaxe C++

#define _GNU_SOURCE
 
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
 
#include <termios.h>
 
char* get_pwd(){
	char *cr = NULL;
	unsigned int len; 
	struct termios t;
 
	tcgetattr (0, &t);
	t.c_lflag &= !ECHO;
	tcsetattr(0, TCSANOW, &t);
	getline(&cr, &len, stdin);
	cr[strlen(cr)-1] = 0;
	tcgetattr(0, &t);
	t.c_lflag |= ECHO;
	tcsetattr (0, TCSANOW, &t);
	return cr;
}
 
int main(){
	char *mdp;
	mdp = get_pwd();
	printf("ton mot de passe est : %s\n", mdp);
	free(mdp);
	return 0;
}