Ca dépend dans le cadre de quel cours c'est.
Si tu sais ce que tu fais et que tu sais expliquer comment ça fonctionne, et pourquoi tu as fait ce choix, y a pas de raison qu'il n'apprécie pas.
Maintenant, je ne savais pas que c'était pour un cours, c'est peut-être de l'overkill la configuration du terminal.
Le mieux serait de lui demander ce qu'il en pense.
Autrement ce n'est pas si difficile, c'est le principe des flags.
Tu récupères la configuration courante de ton terminal avec tcgetattr(). Tu en sauves une copie pour rétablir la configuration à la fin du programme.
Puis, tu modifies cette structure pour enlever le flag "ECHO" (avec un & logique sur ~ECHO (non bit à bit de ECHO)).
Exemple (à vérifier, j'écris ça à la main levée après un repas arrosé
) :
Code :
- #include <stdio.h>
- #include <termios.h>
- #include <unistd.h>
- int main(void)
- {
- struct termios config, sauvegarde;
- int code_retour;
- code_retour = tcgetattr(STDIN_FILENO, &config);
- if ( code_retour == -1 )
- {
- /* gerer l'erreur de tcgetattr */
- }
- /* sauvegarde */
- sauvegarde = config;
-
- /* on enleve l'echo */
- config.c_lflag &= ~ECHO;
- code_retour = tcsetattr(STDIN_FILENO, TCSANOW, &config);
- if ( code_retour == -1 )
- {
- /* gerer l'erreur de tcsetattr */
- }
- /* on releve le mot de passe */
- /* et maintenant on retablit la configuration initiale */
- code_retour = tcsetattr(STDIN_FILENO, TCSANOW, &sauvegarde);
- if ( code_retour == -1 )
- {
- /* erreur machin tout ca */
- }
- return 0;
- }
|
EDIT : testé et ça fonctionne. Aussi, j'ai corrigé les occurences de stdin (qui est un FILE*) par "0", qui est le descripteur d'entrée par défaut. Doit y avoir une constante pour ça, me souvient pas de laquelle c'est.
EDIT 2 : pfiou, temps que je parte en week-end. Le descripteur d'entrée par défaut c'est STDIN_FILENO, défini dans unistd.h
Message édité par Elmoricq le 10-06-2005 à 16:59:10