9fans - fans of the OS Plan 9 from Bell Labs
 help / color / mirror / Atom feed
* [9fans] Help with interrupting fgetc()
@ 2015-06-27 20:30 Nils M Holm
  2015-06-27 20:58 ` Charles Forsyth
                   ` (2 more replies)
  0 siblings, 3 replies; 7+ messages in thread
From: Nils M Holm @ 2015-06-27 20:30 UTC (permalink / raw)
  To: Fans of the Plan 9 OS


I'm trying to get the DEL key to cause an error in an interpreter I'm
writing. On Unix, I just catch SIGINT and set an error flag that causes
the interpreter to return to the REPL. On Plan9, fgetc() seems to return
EOF after catching an "interrupted" note.

To make a long story short, I expected the following code to echo
characters typed and print "oopsie" when DEL is pressed. It should
keep echoing after printing "oopsie", but it just exits instead.
What am I missing?

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
#include <u.h>
#include <libc.h>
#include <stdio.h>

void n(void *x, char *s) {
	if (!strcmp(s, "interrupt")) {
		print("oopsie!\n");
		noted(NCONT);
	}
	else {
		noted(NDFLT);
	}
}

main() {
	int	c;

	notify(n);
	c = fgetc(stdin);
	while (c != EOF) {
		fputc(c, stdout);
		c = fgetc(stdin);
	}
	return 0;
}
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

--
Nils M Holm  < n m h @ t 3 x . o r g >  www.t3x.org



^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2015-06-28  7:29 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-06-27 20:30 [9fans] Help with interrupting fgetc() Nils M Holm
2015-06-27 20:58 ` Charles Forsyth
2015-06-27 21:19   ` Nils M Holm
2015-06-27 21:12 ` Charles Forsyth
2015-06-27 21:21   ` Nils M Holm
2015-06-28  1:29 ` erik quanstrom
2015-06-28  7:29   ` Nils M Holm

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).