Remove all kinds of wchar support. Mes Libc does not support wchar in any form, so we need to remove it. heirloom-devtools is all kinds of broken in this way. C standard dictates that wchar_t may be defined as char, however heirloom-devtools does not respect this, which makes this non-trivial. diff -U3 -r yacc/dextern yacc/dextern --- yacc/dextern 2005-11-10 20:31:45.000000000 +0000 +++ yacc/dextern 2021-01-25 18:21:45.286602527 +0000 @@ -39,7 +39,6 @@ #include #include #include -#include /* MANIFEST CONSTANT DEFINITIONS */ #define WORD32 @@ -166,17 +165,17 @@ } ITEM; typedef struct toksymb { - wchar_t *name; + char *name; int value; } TOKSYMB; typedef struct mbclit { - wchar_t character; + char character; int tvalue; /* token issued for the character */ } MBCLIT; typedef struct ntsymb { - wchar_t *name; + char *name; int tvalue; } NTSYMB; @@ -212,7 +211,7 @@ extern int nprod; /* number of productions */ extern int **prdptr; /* pointers to descriptions of productions */ extern int *levprd; /* contains production levels to break conflicts */ -extern wchar_t *had_act; /* set if reduction has associated action code */ +extern char *had_act; /* set if reduction has associated action code */ /* state information */ @@ -273,24 +272,15 @@ extern void go2out(void); extern void hideprod(void); extern void callopt(void); -extern void warray(wchar_t *, int *, int); -extern wchar_t *symnam(int); -extern wchar_t *writem(int *); +extern void warray(char *, int *, int); +extern char *symnam(int); +extern char *writem(int *); extern void exp_mem(int); extern void exp_act(int **); extern int apack(int *, int); extern int state(int); -extern void fprintf3(FILE *, const char *, const wchar_t *, const char *, ...); -extern void error3(const char *, const wchar_t *, const char *, ...); - - /* multibyte i/o */ - -#undef getwc -#define getwc(f) yacc_getwc(f) -extern wint_t yacc_getwc(FILE *); -#undef putwc -#define putwc(c, f) yacc_putwc(c, f) -extern wint_t yacc_putwc(wchar_t, FILE *); +extern void fprintf3(FILE *, const char *, const char *, const char *, ...); +extern void error3(const char *, const char *, const char *, ...); /* yaccpar location */ diff -U3 -r yacc/y1.c yacc/y1.c --- yacc/y1.c 2005-11-26 17:37:56.000000000 +0000 +++ yacc/y1.c 2021-01-25 18:02:31.251542365 +0000 @@ -41,12 +41,11 @@ #include #include #include /* For error() */ -#include static void mktbls(void); static void others(void); static void summary(void); -static wchar_t *chcopy(wchar_t *, wchar_t *); +static char *chcopy(char *, char *); static int setunion(int *, int *); static void prlook(LOOKSETS *); static void cpres(void); @@ -229,13 +228,13 @@ if (finput == NULL) error("cannot find parser %s", parser); - warray(L"yyr1", levprd, nprod); + warray("yyr1", levprd, nprod); aryfil(temp1, nprod, 0); /* had_act[i] is either 1 or 0 */ PLOOP(1, i) temp1[i] = ((prdptr[i+1] - prdptr[i]-2) << 1) | had_act[i]; - warray(L"yyr2", temp1, nprod); + warray("yyr2", temp1, nprod); aryfil(temp1, nstate, -10000000); TLOOP(i) @@ -244,14 +243,14 @@ NTLOOP(i) for (j = ntstates[i]; j != 0; j = mstates[j]) temp1[j] = -i; - warray(L"yychk", temp1, nstate); + warray("yychk", temp1, nstate); - warray(L"yydef", defact, nstate); + warray("yydef", defact, nstate); if ((fdebug = fopen(DEBUGNAME, "r")) == NULL) error("cannot open yacc.debug"); - while ((c = getwc(fdebug)) != EOF) - putwc(c, ftable); + while ((c = getc(fdebug)) != EOF) + putc(c, ftable); fclose(fdebug); ZAPFILE(DEBUGNAME); @@ -259,19 +258,19 @@ fprintf(ftable, "# line\t1 \"%s\"\n", parser); tmpline = 1; /* copy parser text */ - while ((c = getwc(finput)) != EOF) { + while ((c = getc(finput)) != EOF) { if (c == '\n') tmpline++; if (c == L'$') { - if ((c = getwc(finput)) != L'A') - putwc(L'$', ftable); + if ((c = getc(finput)) != L'A') + putc(L'$', ftable); else { /* copy actions */ tmpline++; faction = fopen(ACTNAME, "r"); if (faction == NULL) error("cannot open action tempfile"); - while ((c = getwc(faction)) != EOF) - putwc(c, ftable); + while ((c = getc(faction)) != EOF) + putc(c, ftable); fclose(faction); if (gen_lines) fprintf(ftable, @@ -279,18 +278,18 @@ tmpline, parser); ZAPFILE(ACTNAME); - c = getwc(finput); + c = getc(finput); } } - putwc(c, ftable); + putc(c, ftable); } fclose(ftable); } /* copies string q into p, returning next free char ptr */ -static wchar_t * -chcopy(wchar_t *p, wchar_t *q) +static char * +chcopy(char *p, char *q) { while (*p = *q++) ++p; @@ -299,16 +298,16 @@ #define ISIZE 400 /* creates output string for item pointed to by pp */ -wchar_t * +char * writem(int *pp) { int i, *p; static int isize = ISIZE; - static wchar_t *sarr = NULL; - wchar_t *q; + static char *sarr = NULL; + char *q; if (sarr == NULL) { - sarr = malloc(sizeof (wchar_t) * isize); + sarr = malloc(sizeof (char) * isize); if (sarr == NULL) error("could not allocate output string array"); for (i = 0; i < isize; ++i) @@ -317,7 +316,7 @@ for (p = pp; *p > 0; ++p) /* EMPTY */; p = prdptr[-*p]; q = chcopy(sarr, nontrst[*p-NTBASE].name); - q = chcopy(q, L" : "); + q = chcopy(q, " : "); for (;;) { *q++ = ++p == pp ? L'_' : L' '; @@ -326,7 +325,7 @@ break; q = chcopy(q, symnam(i)); while (q > &sarr[isize-30]) { - static wchar_t *sarrbase; + static char *sarrbase; sarrbase = sarr; isize += ISIZE; @@ -339,17 +338,17 @@ /* an item calling for a reduction */ if ((i = *pp) < 0) { - q = chcopy(q, L" ("); - swprintf(q, q + isize - sarr, L"%d)", -i); + q = chcopy(q, " ("); + sprintf(q, q + isize - sarr, "%d)", -i); } return (sarr); } /* return a pointer to the name of symbol i */ -wchar_t * +char * symnam(int i) { - wchar_t *cp; + char *cp; cp = (i >= NTBASE) ? nontrst[i-NTBASE].name : tokset[i].name; if (*cp == L' ') diff -U3 -r yacc/y2.c yacc/y2.c --- yacc/y2.c 2005-11-26 17:39:44.000000000 +0000 +++ yacc/y2.c 2021-01-25 19:02:52.472120036 +0000 @@ -35,9 +35,9 @@ * Sccsid @(#)y2.c 1.11 (gritter) 11/26/05 */ +#include #include "dextern" #include "sgs.h" -#include #include #define IDENTIFIER 257 @@ -66,17 +66,17 @@ char *infile; /* input file name */ static int numbval; /* value of an input number */ static int toksize = NAMESIZE; -static wchar_t *tokname; /* input token name */ +static char *tokname; /* input token name */ char *parser = NULL; /* location of common parser */ static void finact(void); -static wchar_t *cstash(wchar_t *); +static char *cstash(char *); static void defout(void); static void cpyunion(void); static void cpycode(void); static void cpyact(int); -static void lhsfill(wchar_t *); -static void rhsfill(wchar_t *); +static void lhsfill(char *); +static void rhsfill(char *); static void lrprnt(void); static void beg_debug(void); static void end_toks(void); @@ -85,9 +85,9 @@ static void exp_prod(void); static void exp_ntok(void); static void exp_nonterm(void); -static int defin(int, wchar_t *); +static int defin(int, char *); static int gettok(void); -static int chfind(int, wchar_t *); +static int chfind(int, char *); static int skipcom(void); static int findchtok(int); static void put_prefix_define(char *); @@ -101,11 +101,11 @@ * points to initial block - more space * is allocated as needed. */ -static wchar_t cnamesblk0[CNAMSZ]; -static wchar_t *cnames = cnamesblk0; +static char cnamesblk0[CNAMSZ]; +static char *cnames = cnamesblk0; /* place where next name is to be put in */ -static wchar_t *cnamp = cnamesblk0; +static char *cnamp = cnamesblk0; /* number of defined symbols output */ static int ndefout = 3; @@ -113,7 +113,7 @@ /* storage of types */ static int defunion = 0; /* union of types defined? */ static int ntypes = 0; /* number of types defined */ -static wchar_t *typeset[NTYPES]; /* pointers to type tags */ +static char *typeset[NTYPES]; /* pointers to type tags */ /* symbol tables for tokens and nonterminals */ @@ -143,8 +143,8 @@ /* output string */ -static wchar_t *lhstext; -static wchar_t *rhstext; +static char *lhstext; +static char *rhstext; /* storage for grammar rules */ @@ -158,7 +158,7 @@ int **prdptr; int *levprd; -wchar_t *had_act; +char *had_act; /* flag for generating the # line's default is yes */ int gen_lines = 1; @@ -181,7 +181,7 @@ int c; int *p; char *cp; - wchar_t actname[8]; + char actname[8]; unsigned int options = 0; char *file_prefix = DEFAULT_PREFIX; char *sym_prefix = ""; @@ -192,16 +192,16 @@ fdefine = NULL; i = 1; - tokname = malloc(sizeof (wchar_t) * toksize); + tokname = malloc(sizeof (char) * toksize); tokset = malloc(sizeof (TOKSYMB) * ntoksz); toklev = malloc(sizeof (int) * ntoksz); nontrst = malloc(sizeof (NTSYMB) * nnontersz); mem0 = malloc(sizeof (int) * new_memsize); prdptr = malloc(sizeof (int *) * (nprodsz+2)); levprd = malloc(sizeof (int) * (nprodsz+2)); - had_act = calloc(nprodsz + 2, sizeof (wchar_t)); - lhstext = malloc(sizeof (wchar_t) * LHS_TEXT_LEN); - rhstext = malloc(sizeof (wchar_t) * RHS_TEXT_LEN); + had_act = calloc(nprodsz + 2, sizeof (char)); + lhstext = malloc(sizeof (char) * LHS_TEXT_LEN); + rhstext = malloc(sizeof (char) * RHS_TEXT_LEN); aryfil(toklev, ntoksz, 0); aryfil(levprd, nprodsz, 0); for (ii = 0; ii < ntoksz; ++ii) @@ -307,10 +307,10 @@ lineno = 1; cnamp = cnames; - defin(0, L"$end"); + defin(0, "$end"); extval = 0400; - defin(0, L"error"); - defin(1, L"$accept"); + defin(0, "error"); + defin(1, "$accept"); mem = mem0; lev = 0; ty = 0; @@ -588,7 +588,7 @@ /* process a rule */ if (t == L'|') { - rhsfill((wchar_t *)0); /* restart fill of rhs */ + rhsfill((char *)0); /* restart fill of rhs */ *mem = *prdptr[nprod-1]; if (++mem >= &tracemem[new_memsize]) exp_mem(1); @@ -638,8 +638,8 @@ /* action within rule... */ lrprnt(); /* dump lhs, rhs */ - swprintf(actname, sizeof actname, - L"$$%d", nprod); + sprintf(actname, sizeof actname, + "$$%d", nprod); /* * make it nonterminal */ @@ -722,8 +722,8 @@ if (gen_lines) fprintf(ftable, "\n# line %d \"%s\"\n", lineno, infile); - while ((c = getwc(finput)) != EOF) - putwc(c, ftable); + while ((c = getc(finput)) != EOF) + putc(c, ftable); } fclose(finput); } @@ -736,15 +736,15 @@ fprintf(ftable, "# define YYERRCODE %d\n", tokset[2].value); } -static wchar_t * +static char * cstash(s) -register wchar_t *s; +register char *s; { - wchar_t *temp; + char *temp; static int used = 0; static int used_save = 0; static int exp_cname = CNAMSZ; - int len = wcslen(s); + int len = strlen(s); /* * 2/29/88 - @@ -755,7 +755,7 @@ exp_cname += CNAMSZ; if (!used) free(cnames); - if ((cnames = malloc(sizeof (wchar_t)*exp_cname)) == NULL) + if ((cnames = malloc(sizeof (char)*exp_cname)) == NULL) error("cannot expand string dump"); cnamp = cnames; used = 0; @@ -770,7 +770,7 @@ } static int -defin(int t, register wchar_t *s) +defin(int t, register char *s) { /* define s to be a terminal if t=0 or a nonterminal if t=1 */ @@ -820,7 +820,7 @@ } else if (s[2] <= L'7' && s[2] >= L'0') { /* \nnn sequence */ int i = 3; val = s[2] - L'0'; - while (iswdigit(s[i]) && i <= 4) { + while (isdigit(s[i]) && i <= 4) { if (s[i] >= L'0' && s[i] <= L'7') val = val * 8 + s[i] - L'0'; else @@ -831,17 +831,17 @@ error("illegal \\nnn construction"); if (val > 255) error( -"\\nnn exceed \\377; use \\xnnnnnnnn for wchar_t value of multibyte char"); +"\\nnn exceed \\377; use \\xnnnnnnnn for char value of multibyte char"); if (val == 0 && i >= 4) error("'\\000' is illegal"); } else if (s[2] == L'x') { /* hexadecimal \xnnn sequence */ int i = 3; val = 0; warning(1, "\\x is ANSI C hex escape"); - if (iswxdigit(s[i])) - while (iswxdigit(s[i])) { + if (isxdigit(s[i])) + while (isxdigit(s[i])) { int tmpval; - if (iswdigit(s[i])) + if (isdigit(s[i])) tmpval = s[i] - L'0'; else if (s[i] >= L'a') tmpval = s[i] - L'a' + 10; @@ -876,7 +876,7 @@ /* write out the defines (at the end of the declaration section) */ register int i, c; - register wchar_t *cp; + register char *cp; for (i = ndefout; i <= ntokens; ++i) { @@ -889,8 +889,8 @@ } for (; (c = *cp) != 0; ++cp) { - if (iswlower(c) || iswupper(c) || - iswdigit(c) || c == L'_') /* EMPTY */; + if (islower(c) || isupper(c) || + isdigit(c) || c == L'_') /* EMPTY */; else goto nodef; } @@ -919,14 +919,14 @@ reserve = 0; lineno += peekline; peekline = 0; - c = getwc(finput); + c = getc(finput); /* * while (c == ' ' || c == '\n' || c == '\t' || c == '\f') { */ - while (iswspace(c)) { + while (isspace(c)) { if (c == L'\n') ++lineno; - c = getwc(finput); + c = getc(finput); } if (c == L'/') { /* skip comment */ lineno += skipcom(); @@ -938,11 +938,11 @@ case EOF: return (ENDFILE); case L'{': - ungetwc(c, finput); + ungetc(c, finput); return (L'='); /* action ... */ case L'<': /* get, and look up, a type name (union member name) */ i = 0; - while ((c = getwc(finput)) != L'>' && + while ((c = getc(finput)) != L'>' && c != EOF && c != L'\n') { tokname[i] = c; if (++i >= toksize) @@ -954,7 +954,7 @@ if (i == 0) error("missing type name in < ... > clause"); for (i = 1; i <= ntypes; ++i) { - if (!wcscmp(typeset[i], tokname)) { + if (!strcmp(typeset[i], tokname)) { numbval = i; return (TYPENAME); } @@ -968,11 +968,11 @@ tokname[0] = L' '; i = 1; for (;;) { - c = getwc(finput); + c = getc(finput); if (c == L'\n' || c == EOF) error("illegal or missing ' or \""); if (c == L'\\') { - c = getwc(finput); + c = getc(finput); tokname[i] = L'\\'; if (++i >= toksize) exp_tokname(); @@ -986,7 +986,7 @@ case L'%': case L'\\': - switch (c = getwc(finput)) { + switch (c = getc(finput)) { case L'0': return (TERM); case L'<': return (LEFT); @@ -1001,81 +1001,81 @@ default: - if (iswdigit(c)) { /* number */ + if (isdigit(c)) { /* number */ numbval = c - L'0'; base = (c == L'0') ? 8 : 10; - for (c = getwc(finput); - iswdigit(c); - c = getwc(finput)) { + for (c = getc(finput); + isdigit(c); + c = getc(finput)) { numbval = numbval*base + c - L'0'; } - ungetwc(c, finput); + ungetc(c, finput); return (NUMBER); - } else if (iswlower(c) || iswupper(c) || + } else if (islower(c) || isupper(c) || c == L'_' || c == L'.' || c == L'$') { i = 0; - while (iswlower(c) || iswupper(c) || - iswdigit(c) || c == L'_' || + while (islower(c) || isupper(c) || + isdigit(c) || c == L'_' || c == L'.' || c == L'$') { tokname[i] = c; - if (reserve && iswupper(c)) - tokname[i] = towlower(c); + if (reserve && isupper(c)) + tokname[i] = tolower(c); if (++i >= toksize) exp_tokname(); - c = getwc(finput); + c = getc(finput); } } else return (c); - ungetwc(c, finput); + ungetc(c, finput); } tokname[i] = 0; if (reserve) { /* find a reserved word */ - if (!wcscmp(tokname, L"term")) + if (!strcmp(tokname, "term")) return (TERM); - if (!wcscmp(tokname, L"token")) + if (!strcmp(tokname, "token")) return (TERM); - if (!wcscmp(tokname, L"left")) + if (!strcmp(tokname, "left")) return (LEFT); - if (!wcscmp(tokname, L"nonassoc")) + if (!strcmp(tokname, "nonassoc")) return (BINARY); - if (!wcscmp(tokname, L"binary")) + if (!strcmp(tokname, "binary")) return (BINARY); - if (!wcscmp(tokname, L"right")) + if (!strcmp(tokname, "right")) return (RIGHT); - if (!wcscmp(tokname, L"prec")) + if (!strcmp(tokname, "prec")) return (PREC); - if (!wcscmp(tokname, L"start")) + if (!strcmp(tokname, "start")) return (START); - if (!wcscmp(tokname, L"type")) + if (!strcmp(tokname, "type")) return (TYPEDEF); - if (!wcscmp(tokname, L"union")) + if (!strcmp(tokname, "union")) return (UNION); error("invalid escape, or illegal reserved word: %ls", tokname); } /* look ahead to distinguish IDENTIFIER from C_IDENTIFIER */ - c = getwc(finput); + c = getc(finput); /* * while (c == ' ' || c == '\t' || c == '\n' || c == '\f' || c == '/') * { */ - while (iswspace(c) || c == L'/') { + while (isspace(c) || c == L'/') { if (c == L'\n') { ++peekline; } else if (c == L'/') { /* look for comments */ peekline += skipcom(); } - c = getwc(finput); + c = getc(finput); } if (c == L':') return (C_IDENTIFIER); - ungetwc(c, finput); + ungetc(c, finput); return (IDENTIFIER); } @@ -1096,19 +1096,19 @@ } static int -chfind(int t, register wchar_t *s) +chfind(int t, register char *s) { int i; if (s[0] == ' ') t = 0; TLOOP(i) { - if (!wcscmp(s, tokset[i].name)) { + if (!strcmp(s, tokset[i].name)) { return (i); } } NTLOOP(i) { - if (!wcscmp(s, nontrst[i].name)) { + if (!strcmp(s, nontrst[i].name)) { return (i + NTBASE); } } @@ -1137,11 +1137,11 @@ level = 0; for (;;) { - if ((c = getwc(finput)) == EOF) + if ((c = getc(finput)) == EOF) error("EOF encountered while processing %%union"); - putwc(c, ftable); + putc(c, ftable); if (fdefine) - putwc(c, fdefine); + putc(c, fdefine); switch (c) { @@ -1172,29 +1172,29 @@ /* copies code between \{ and \} */ int c; - c = getwc(finput); + c = getc(finput); if (c == L'\n') { - c = getwc(finput); + c = getc(finput); lineno++; } if (gen_lines) fprintf(ftable, "\n# line %d \"%s\"\n", lineno, infile); while (c != EOF) { if (c == L'\\') { - if ((c = getwc(finput)) == L'}') + if ((c = getc(finput)) == L'}') return; else - putwc(L'\\', ftable); + putc(L'\\', ftable); } else if (c == L'%') { - if ((c = getwc(finput)) == L'}') + if ((c = getc(finput)) == L'}') return; else - putwc(L'%', ftable); + putc(L'%', ftable); } - putwc(c, ftable); + putc(c, ftable); if (c == L'\n') ++lineno; - c = getwc(finput); + c = getc(finput); } error("eof before %%}"); } @@ -1207,17 +1207,17 @@ /* skipcom is called after reading a / */ - if (getwc(finput) != L'*') + if (getc(finput) != L'*') error("illegal comment"); - c = getwc(finput); + c = getc(finput); while (c != EOF) { while (c == L'*') { - if ((c = getwc(finput)) == L'/') + if ((c = getc(finput)) == L'/') return (i); } if (c == L'\n') ++i; - c = getwc(finput); + c = getc(finput); } error("EOF inside comment"); /* NOTREACHED */ @@ -1229,7 +1229,7 @@ { /* copy C action to the next ; or closing } */ int brac, c, match, i, t, j, s, tok, argument, m; - wchar_t id_name[NAMESIZE+1]; + char id_name[NAMESIZE+1]; int id_idx = 0; if (gen_lines) { @@ -1239,12 +1239,12 @@ brac = 0; id_name[0] = 0; loop: - c = getwc(finput); + c = getc(finput); swt: switch (c) { case L';': if (brac == 0) { - putwc(c, faction); + putc(c, faction); return; } goto lcopy; @@ -1255,13 +1255,13 @@ s = 1; tok = -1; argument = 1; - while ((c = getwc(finput)) == L' ' || c == L'\t') /* EMPTY */; + while ((c = getc(finput)) == L' ' || c == L'\t') /* EMPTY */; if (c == L'<') { /* type description */ - ungetwc(c, finput); + ungetc(c, finput); if (gettok() != TYPENAME) error("bad syntax on $ clause"); tok = numbval; - c = getwc(finput); + c = getc(finput); } if (c == L'$') { fprintf(faction, "yyval"); @@ -1272,10 +1272,10 @@ } goto loop; } - if (iswalpha(c)) { + if (isalpha(c)) { int same = 0; int id_sw = 0; - ungetwc(c, finput); + ungetc(c, finput); if (gettok() != IDENTIFIER) error("bad action format"); /* @@ -1290,16 +1290,16 @@ id_sw = 1; else id_sw = 0; - while ((c = getwc(finput)) == L' ' || + while ((c = getc(finput)) == L' ' || c == L'\t') /* EMPTY */; if (c == L'#') { - while ((c = getwc(finput)) == L' ' || + while ((c = getc(finput)) == L' ' || c == L'\t') /* EMPTY */; - if (iswdigit(c)) { + if (isdigit(c)) { m = 0; - while (iswdigit(c)) { + while (isdigit(c)) { m = m*10+c-L'0'; - c = getwc(finput); + c = getc(finput); } argument = m; } else @@ -1339,13 +1339,13 @@ } if (c == '-') { s = -s; - c = getwc(finput); + c = getc(finput); } - if (iswdigit(c)) { + if (isdigit(c)) { j = 0; - while (iswdigit(c)) { + while (isdigit(c)) { j = j*10 + c - L'0'; - c = getwc(finput); + c = getc(finput); } j = j*s - offset; if (j > 0) { @@ -1363,51 +1363,51 @@ } goto swt; } - putwc(L'$', faction); + putc(L'$', faction); if (s < 0) - putwc(L'-', faction); + putc(L'-', faction); goto swt; case L'}': if (--brac) goto lcopy; - putwc(c, faction); + putc(c, faction); return; case L'/': /* look for comments */ - putwc(c, faction); - c = getwc(finput); + putc(c, faction); + c = getc(finput); if (c != L'*') goto swt; /* it really is a comment */ - putwc(c, faction); - c = getwc(finput); + putc(c, faction); + c = getc(finput); while (c != EOF) { while (c == L'*') { - putwc(c, faction); - if ((c = getwc(finput)) == L'/') + putc(c, faction); + if ((c = getc(finput)) == L'/') goto lcopy; } - putwc(c, faction); + putc(c, faction); if (c == L'\n') ++lineno; - c = getwc(finput); + c = getc(finput); } error("EOF inside comment"); /* FALLTHRU */ case L'\'': /* character constant */ case L'"': /* character string */ match = c; - putwc(c, faction); - while ((c = getwc(finput)) != EOF) { + putc(c, faction); + while ((c = getc(finput)) != EOF) { if (c == L'\\') { - putwc(c, faction); - c = getwc(finput); + putc(c, faction); + c = getc(finput); if (c == L'\n') ++lineno; } else if (c == match) goto lcopy; else if (c == L'\n') error("newline in string or char. const."); - putwc(c, faction); + putc(c, faction); } error("EOF in string or character constant"); /* FALLTHRU */ @@ -1419,7 +1419,7 @@ goto lcopy; } lcopy: - putwc(c, faction); + putc(c, faction); /* * Save the possible identifier name. * Used to print out a warning message. @@ -1434,7 +1434,7 @@ * If c has a possibility to be a * part of identifier, save it. */ - else if (iswalnum(c) || c == L'_') { + else if (isalnum(c) || c == L'_') { id_name[id_idx++] = c; id_name[id_idx] = 0; } else { @@ -1446,28 +1446,28 @@ static void lhsfill(s) /* new rule, dump old (if exists), restart strings */ -wchar_t *s; +char *s; { static int lhs_len = LHS_TEXT_LEN; - int s_lhs = wcslen(s); + int s_lhs = strlen(s); if (s_lhs >= lhs_len) { lhs_len = s_lhs + 2; - lhstext = realloc(lhstext, sizeof (wchar_t)*lhs_len); + lhstext = realloc(lhstext, sizeof (char)*lhs_len); if (lhstext == NULL) error("couldn't expanded LHS length"); } rhsfill(NULL); - wcscpy(lhstext, s); /* don't worry about too long of a name */ + strcpy(lhstext, s); /* don't worry about too long of a name */ } static void -rhsfill(wchar_t *s) /* either name or 0 */ +rhsfill(char *s) /* either name or 0 */ { - static wchar_t *loc; /* next free location in rhstext */ + static char *loc; /* next free location in rhstext */ static int rhs_len = RHS_TEXT_LEN; static int used = 0; - int s_rhs = (s == NULL ? 0 : wcslen(s)); - register wchar_t *p; + int s_rhs = (s == NULL ? 0 : strlen(s)); + register char *p; if (!s) /* print out and erase old text */ { @@ -1481,10 +1481,10 @@ used = loc - rhstext; if ((s_rhs + 3) >= (rhs_len - used)) { - static wchar_t *textbase; + static char *textbase; textbase = rhstext; rhs_len += s_rhs + RHS_TEXT_LEN; - rhstext = realloc(rhstext, sizeof (wchar_t)*rhs_len); + rhstext = realloc(rhstext, sizeof (char)*rhs_len); if (rhstext == NULL) error("couldn't expanded RHS length"); loc = loc - textbase + rhstext; @@ -1508,15 +1508,15 @@ static void lrprnt (void) /* print out the left and right hand sides */ { - wchar_t *rhs; - wchar_t *m_rhs = NULL; + char *rhs; + char *m_rhs = NULL; if (!*rhstext) /* empty rhs - print usual comment */ - rhs = L" /* empty */"; + rhs = " /* empty */"; else { int idx1; /* tmp idx used to find if there are d_quotes */ int idx2; /* tmp idx used to generate escaped string */ - wchar_t *p; + char *p; /* * Check if there are any double quote in RHS. */ @@ -1525,8 +1525,8 @@ /* * A double quote is found. */ - idx2 = wcslen(rhstext)*2; - p = m_rhs = malloc((idx2 + 1)*sizeof (wchar_t)); + idx2 = strlen(rhstext)*2; + p = m_rhs = malloc((idx2 + 1)*sizeof (char)); if (m_rhs == NULL) error( "Couldn't allocate memory for RHS."); @@ -1617,7 +1617,7 @@ exp_tokname(void) { toksize += NAMESIZE; - tokname = realloc(tokname, sizeof (wchar_t) * toksize); + tokname = realloc(tokname, sizeof (char) * toksize); } @@ -1633,7 +1633,7 @@ prdptr = realloc(prdptr, sizeof (int *) * (nprodsz+2)); levprd = realloc(levprd, sizeof (int) * (nprodsz+2)); - had_act = realloc(had_act, sizeof (wchar_t) * (nprodsz+2)); + had_act = realloc(had_act, sizeof (char) * (nprodsz+2)); for (i = nprodsz-NPROD; i < nprodsz+2; ++i) had_act[i] = 0; diff -U3 -r yacc/y3.c yacc/y3.c --- yacc/y3.c 2005-11-26 17:37:56.000000000 +0000 +++ yacc/y3.c 2021-01-25 19:01:48.390375872 +0000 @@ -41,7 +41,7 @@ static void precftn(int, int, int); static void wract(int); static void wrstate(int); -static void wdef(wchar_t *, int); +static void wdef(char *, int); #ifndef NOLIBW static void wrmbchars(void); #endif /* !NOLIBW */ @@ -121,7 +121,7 @@ } fprintf(ftable, "\t};\n"); - wdef(L"YYNPROD", nprod); + wdef("YYNPROD", nprod); #ifndef NOLIBW if (nmbchars > 0) { wrmbchars(); @@ -485,14 +485,14 @@ } static void -wdef(wchar_t *s, int n) +wdef(char *s, int n) { /* output a definition of s to the value n */ fprintf(ftable, "# define %ls %d\n", s, n); } void -warray(wchar_t *s, int *v, int n) +warray(char *s, int *v, int n) { register int i; fprintf(ftable, "static YYCONST yytabelem %ls[]={\n", s); @@ -549,11 +549,11 @@ wrmbchars(void) { int i; - wdef(L"YYNMBCHARS", nmbchars); + wdef("YYNMBCHARS", nmbchars); qsort(mbchars, nmbchars, sizeof (*mbchars), (int (*)(const void *, const void *))cmpmbchars); fprintf(ftable, - "static struct{\n\twchar_t character;" + "static struct{\n\tchar character;" "\n\tint tvalue;\n}yymbchars[YYNMBCHARS]={\n"); for (i = 0; i < nmbchars; ++i) { fprintf(ftable, "\t{%#x,%d}", diff -U3 -r yacc/y4.c yacc/y4.c --- yacc/y4.c 2005-11-26 17:37:56.000000000 +0000 +++ yacc/y4.c 2021-01-25 19:02:06.780876425 +0000 @@ -36,7 +36,6 @@ */ #include "dextern" -#include #include #define NOMORE -1000 @@ -44,7 +43,7 @@ static void stin(int); static void osummary(void); static void aoutput(void); -static void arout(wchar_t *, int *, int); +static void arout(char *, int *, int); static int nxti(void); static int gtnm(void); @@ -414,13 +413,13 @@ /* write out the optimized parser */ fprintf(ftable, "# define YYLAST %d\n", maxa-amem + 1); - arout(L"yyact", amem, (maxa - amem) + 1); - arout(L"yypact", indgo, nstate); - arout(L"yypgo", pgo, nnonter + 1); + arout("yyact", amem, (maxa - amem) + 1); + arout("yypact", indgo, nstate); + arout("yypgo", pgo, nnonter + 1); } static void -arout(wchar_t *s, int *v, int n) +arout(char *s, int *v, int n) { register int i; @@ -448,8 +447,8 @@ s = 1; val = 0; - while ((c = getwc(finput)) != EOF) { - if (iswdigit(c)) + while ((c = getc(finput)) != EOF) { + if (isdigit(c)) val = val * 10 + c - L'0'; else if (c == L'-') s = -1; diff -U3 -r yacc/Makefile.mk yacc/Makefile.mk --- yacc/Makefile.mk 2007-01-04 23:31:24.000000000 +0000 +++ yacc/Makefile.mk 2021-01-25 01:25:15.592235579 +0000 @@ -1,4 +1,4 @@ -YOBJ = y1.o y2.o y3.o y4.o y5.o getopt.o +YOBJ = y1.o y2.o y3.o y4.o getopt.o LOBJ = libmai.o libzer.o