Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com Message-ID: <15FDCE057B48784C80836803AE3598D53B884C@racerx.ixiacom.com> From: Dan Kegel To: "'J. Scott Edwards '" , "'cygwin AT cygwin DOT com '" Subject: RE: Character at a time input (was Re: Where is less source?) Date: Fri, 23 Aug 2002 15:34:14 -0700 MIME-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" "man isatty" -----Original Message----- From: J. Scott Edwards Thanks that worked great! I have another dumb question: is there a simple way to determine if the stdin is from a terminal or is pipe'd in? Thanks again -Scott On Fri, 23 Aug 2002, Rick Hellicar (QMP) wrote: > Don't know about ioctl, but termios will do it. I've included a > simple program that shows it working. > > If you're planning on detecting arrow keys, function keys, etc., then > you have to remember that they produce an escape-sequence of several > characters, which you'll have to detect and decode. > > Hope this helps, > > Rick > > > > > #include > #include > #include > > int > main (void) > { > struct termios new_settings; > struct termios stored_settings; > char c; > > /* record the old settings to restore the terminal when finished */ > tcgetattr (0, &stored_settings); > new_settings = stored_settings; > > /* set things up for character-at-a-time */ > new_settings.c_lflag &= ~(ICANON | ECHO); > new_settings.c_cc[VTIME] = 0; /* don't think this is relevant if VMIN=1 */ > new_settings.c_cc[VMIN] = 1; > tcsetattr (0, TCSANOW, &new_settings); > > /* main loop - press q to exit */ > do > { > c = getchar (); > printf ("%d\t%c\n", c, c); > } > while (c != 'q'); > > /* restore the old settings */ > tcsetattr (0, TCSANOW, &stored_settings); > return 1; > } > > > > > -----Original Message----- > > From: J. Scott Edwards [mailto:sedwards AT xmission DOT com] > > Sent: 22 August 2002 23:23 > > To: Gerrit @ cygwin > > > > Thanks, I found it. But unfortunately it didn't answer my question: > > > > Can ioctl be used to change the standard input into character > > at a time > > mode or do I have to use ncurses or is there a better way to > > just get a > > character at a time? > -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Bug reporting: http://cygwin.com/bugs.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/ -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Bug reporting: http://cygwin.com/bugs.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/