In plan9port there is a libacme and <acme.h>
which makes some of this easier. It is basically
a wrapping of the routines from acme Mail.
Using libacme, your event waiter can do
something like this to send the events back:
while(winreadevent(w, e) > 0) {
switch(e->c1){
default:
Unknown:
print("unknown message %c%c\n", e->c1, e->c2);
break;
case 'E': /* write to body; can't affect us */
case 'F': /* generated by our actions; ignore */
case 'K': /* type away; we don't care */
break;
case 'M':
switch(e->c2){
case 'x':
case 'X':
case 'l':
case 'L':
/* send it back */
winwriteevent(w, e);
break;
case 'I': /* modify away; we don't care */
case 'D':
case 'd':
case 'i':
break;
default:
goto Unknown;
}
}
}
Russ