- setbuf(fi, (char *)NULL);
- }
- else
- fi=stdin;
-
- /* store descriptor for the tty */
- ttyfd = fileno(fi);
-
- if(istty)
- {
- /* preserve tty state before turning off echo */
- save_tty_state();
-
- /* now that we have the current tty state, we can catch SIGINT and
- exit gracefully */
- sig = signal(SIGINT, sigint_handler);
-
- /* turn off echo on the tty */
- disable_tty_echo();
- }
-
- /* display the prompt and get the input string */
- if(istty)
- fprintf(stderr, "%s", prompt); fflush(stderr);
- for (p=pbuf; (c = getc(fi))!='\n' && c!=EOF;) {
- if (p < &pbuf[INPUT_BUF_SIZE - 1])
- *p++ = c;
- }
- *p = '\0';
-
- /* write a newline so cursor won't appear to hang */
- if(fi!=stdin)
- {
- fprintf(stderr, "\n"); fflush(stderr);
- }
- if(istty)
- {
- /* restore previous state of the tty */
- restore_tty_state();
-
- /* restore previous state of SIGINT */
- signal(SIGINT, sig);
- }
- if (fi != stdin)
- fclose(fi);
-
- return(pbuf);
-
+ fi = stdin;
+
+ /* store descriptor for the tty */
+ ttyfd = fileno(fi);
+
+ if (istty)
+ {
+ /* preserve tty state before turning off echo */
+ save_tty_state();
+
+ /* now that we have the current tty state, we can catch SIGINT and
+ exit gracefully */
+ sig = set_signal_handler(SIGINT, sigint_handler);
+
+ /* turn off echo on the tty */
+ disable_tty_echo();
+
+ /* display the prompt and get the input string */
+ fprintf(stderr, "%s", prompt);
+ }
+
+ for (p = pbuf; (c = getc(fi))!='\n' && c!=EOF;)
+ {
+ if (p < &pbuf[INPUT_BUF_SIZE - 1])
+ *p++ = c;
+ }
+ *p = '\0';
+
+ /* write a newline so cursor won't appear to hang */
+ if (fi != stdin)
+ fprintf(stderr, "\n");
+
+ if (istty)
+ {
+ /* restore previous state of the tty */
+ restore_tty_state();
+
+ /* restore previous state of SIGINT */
+ set_signal_handler(SIGINT, sig);
+ }
+ if (fi != stdin)
+ fclose(fi); /* not checking should be safe, file mode was "r" */
+
+ return(pbuf);
+#endif /* !(defined(HAVE_TCSETATTR) || ... */