Source-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

NetBSD master CVS tree commits



christos
Sat Jul  5 17:25:10 EDT 1997
Update of /cvsroot/src/bin/sh
In directory netbsd1:/var/slash-tmp/cvs-serv28239

Modified Files:
        mksyntax.c 
Log Message:
Fix problem introduced in yesterday's commit that broke both signed and
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





Home | Main Index | Thread Index | Old Index