A while back Byron asked if I had the patch handy for a bug in the reader that someone noticed. Sorry for the delay, here's the diff. This diff also works around a bug in ObjectCenter's understanding of declarations. I know of a few other bugs, in the print library, but I think they are benign. [The fixes for those are reflected in the version of the print code that I sent to comp.sources.unix a while back, if anyone wants to integrate them. (Yeah, I ought to do it.)] diff -rc ./footobar.c /home/roke/src/rc1.5/footobar.c *** ./footobar.c Sun Mar 6 22:32:55 1994 --- /home/roke/src/rc1.5/footobar.c Tue Mar 29 23:32:56 1994 *************** *** 9,15 **** #ifdef PROTECT_ENV static bool Fconv(Format *f, int ignore) { ! unsigned const char *s = va_arg(f->args, unsigned const char *); int c; while ((c = *s++) != '\0') --- 9,15 ---- #ifdef PROTECT_ENV static bool Fconv(Format *f, int ignore) { ! const unsigned char *s = va_arg(f->args, const unsigned char *); int c; while ((c = *s++) != '\0') diff -rc ./input.c /home/roke/src/rc1.5/input.c *** ./input.c Sun Mar 6 22:33:03 1994 --- /home/roke/src/rc1.5/input.c Tue Apr 5 16:45:46 1994 *************** *** 140,145 **** --- 140,147 ---- long /*ssize_t*/ r = rc_read(istack->fd, inbuf + 2, BUFSIZE); sigchk(); if (r < 0) { + if (errno == EINTR) /*retry interrupted read*/ + continue; uerror("read"); rc_exit(1); } diff -rc ./print.c /home/roke/src/rc1.5/print.c *** ./print.c Sun Mar 6 22:33:10 1994 --- /home/roke/src/rc1.5/print.c Tue Mar 29 23:33:24 1994 *************** *** 240,246 **** */ extern int printfmt(Format *format, const char *fmt) { ! unsigned const char *s = (unsigned const char *) fmt; if (fmttab[0] == NULL) inittab(); --- 240,246 ---- */ extern int printfmt(Format *format, const char *fmt) { ! const unsigned char *s = (const unsigned char *) fmt; if (fmttab[0] == NULL) inittab();