5accccd051
unsigned character machines. So that people don't have to reverse engineer this again: mksyntax detects if characters are signed or not and builts a syntax table that has a base of 129 for signed characters or 1 for unsigned characters. This is so the largest negative signed char [-128] + the base == 1. 0 is special and means end of file in both cases. PEOF is -1 for the unsigned character case and -129 for the signed character case, so that syntax[PEOF + base] == syntax[0] == CEOF So PEOF has to be -1, but it is explicitly compared with unsigned characters on machines where characters are unsigned. The quick fix is to define UPEOF the (unsigned char) version of PEOF and use that. A better fix is to always use unsigned characters when referencing symbol table entries, but that would require extensive changes to the shell. So to summarize syntax[0] == CEOF, base + PEOF == 0 unsigned signed base 1 129 PEOF -1 -129 |
||
---|---|---|
bin | ||
distrib | ||
etc | ||
games | ||
gnu | ||
include | ||
lib | ||
libexec | ||
regress | ||
sbin | ||
share | ||
sys | ||
usr.bin | ||
usr.sbin | ||
Makefile |