Trivial diff to avoid storing the result of getc() into a `char' variable, and comparing the variable to EOF later on, since on platforms where `char' is unsigned by default (such as arm and powerpc), EOF can't fit a `char'.
While there avoid writing past a local buffer. Index: sync.c =================================================================== RCS file: /cvs/src/games/sail/sync.c,v retrieving revision 1.9 diff -u -p -r1.9 sync.c --- sync.c 27 Oct 2009 23:59:27 -0000 1.9 +++ sync.c 19 Jun 2011 15:16:52 -0000 @@ -253,16 +253,18 @@ Sync() if (isstr != 0 && isstr != 1) goto bad; if (isstr) { + int ch; char *p; + for (p = buf;;) { - switch (*p++ = getc(sync_fp)) { + ch = getc(sync_fp); + switch (ch) { case '\n': - p--; case EOF: break; default: - if (p >= buf + sizeof buf) - p--; + if (p < buf + sizeof buf) + *p++ = ch; continue; } break;