From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from galapagos.cse.psu.edu ([130.203.2.12]) by hawkwind.utcs.utoronto.ca with SMTP id <24158>; Mon, 9 Jan 1995 23:07:07 -0500 Received: from localhost by galapagos.cse.psu.edu with SMTP id <12686>; Mon, 9 Jan 1995 23:06:44 -0500 To: rc@hawkwind.utcs.toronto.edu Subject: rc1.5 patch Date: Mon, 9 Jan 1995 23:06:34 -0500 From: Scott Schwartz Message-Id: <95Jan9.230644est.12686@galapagos.cse.psu.edu> 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();