#include #include #include #include #include #include #include #include int main (int argc, char *argv[]) { int ret = -1; int fd = open ("/dev/tty",O_RDWR,0); if (fd == -1){ syslog (LOG_ERR,"Ne peut ouvrir /dev/tty (%s)\n",strerror(errno)); }else{ const char *msg = "Enter the pass phrase : "; write (fd,msg,strlen(msg)); struct termios term; if (tcgetattr(fd, &term)==-1){ fprintf (stderr,"goctl-ask: tcgetattr failed (%s)\n",strerror(errno)); }else{ term.c_lflag &= ~ECHO; if(tcsetattr(fd,TCSANOW,&term)==-1){ fprintf (stderr,"goctl-ask: tcsetattr failed (%s)\n",strerror(errno)); }else{ char buf[100]; int len = read (fd,buf,sizeof(buf)); write (fd,"\n",1); if (len > 0){ buf[len] = '\0'; while (len > 0 && isspace(buf[len-1])) buf[--len] = '\0'; write (1,buf,strlen(buf)); write (1,"\n",1); ret = 0; } term.c_lflag |= ECHO; tcsetattr(fd,TCSANOW,&term); } } close (fd); } return ret; }