Jar Jar Intaigriste | J'ai un truc dégueulasse dans mes cartons, ah voilà :
Code :
- /* Une fonction à la con */
- static void prchar(char c)
- {
- write(1,&c,1);
- }
- /**************** readpass ****************
- * *
- * Demande un mot de passe, en affichant *
- * prompt, et l'enregistre dans pass. *
- * *
- ******************************************/
- static void readpass(char *prompt,char *pass)
- {
- struct termios ter,oter;
- int c;
- int ind=0;
- tcgetattr(0,&ter);
- oter=ter;
- ter.c_lflag &= ~ECHO;
- ter.c_lflag &= ~ICANON;
- ter.c_oflag &= ~ONLCR;
- ter.c_oflag &= ~OCRNL;
- ter.c_oflag &= ~ONLRET;
- ter.c_cc[VMIN]=1;
- ter.c_cc[VTIME]=0;
- tcsetattr(0,TCSANOW,&ter);
- printf(prompt);
-
- while(1)
- {
- c=getchar();
- if (c==EOF)
- exit(-1);
- if (c=='\n')
- {
- pass[ind]=0;
- break;
- }
- if (ind && (c==oter.c_cc[VERASE] || c==8))
- {
- ind--;
- if (oter.c_lflag & ECHOE)
- {
- write(1,"\b \b",3);
- }
- else
- prchar('\b');
- }
- else if(ind<8 && c>=' ' && c!=oter.c_cc[VERASE])
- {
- pass[ind++]=c;
- prchar('*');
- }
- }
- write(1,"\n\r",2);
- tcsetattr(0,TCSANOW,&oter);
- }
|
---------------
« No question is too silly to ask, but, of course, some are too silly to answer. » -- Perl book
|