summaryrefslogtreecommitdiff
path: root/usr/src/cmd/awk_xpg4/awk1.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/cmd/awk_xpg4/awk1.c')
-rw-r--r--usr/src/cmd/awk_xpg4/awk1.c401
1 files changed, 208 insertions, 193 deletions
diff --git a/usr/src/cmd/awk_xpg4/awk1.c b/usr/src/cmd/awk_xpg4/awk1.c
index e63c550814..e9407c2cea 100644
--- a/usr/src/cmd/awk_xpg4/awk1.c
+++ b/usr/src/cmd/awk_xpg4/awk1.c
@@ -25,15 +25,17 @@
*/
/*
- * awk -- mainline, yylex, etc.
- *
* Copyright 1986, 1994 by Mortice Kern Systems Inc. All rights reserved.
- *
- * Based on MKS awk(1) ported to be /usr/xpg4/bin/awk with POSIX/XCU4 changes
*/
#pragma ident "%Z%%M% %I% %E% SMI"
+/*
+ * awk -- mainline, yylex, etc.
+ *
+ * Based on MKS awk(1) ported to be /usr/xpg4/bin/awk with POSIX/XCU4 changes
+ */
+
#include "awk.h"
#include "y.tab.h"
#include <stdarg.h>
@@ -47,13 +49,13 @@ static int proglen; /* Length of progptr */
static wchar_t context[NCONTEXT]; /* Circular buffer of context */
static wchar_t *conptr = &context[0]; /* context ptr */
static FILE *progfp; /* Stdio stream for programme */
-static char *filename;
+static char *filename;
#ifdef DEBUG
static int dflag;
#endif
-#define AWK_EXEC_MAGIC "<MKS AWKC>"
-#define LEN_EXEC_MAGIC 10
+#define AWK_EXEC_MAGIC "<MKS AWKC>"
+#define LEN_EXEC_MAGIC 10
static char unbal[] = "unbalanced E char";
@@ -61,7 +63,7 @@ static void awkarginit(int c, char **av);
static int lexid(wint_t c);
static int lexnumber(wint_t c);
static int lexstring(wint_t endc);
-static int lexregexp(register wint_t endc);
+static int lexregexp(wint_t endc);
static void awkvarinit(void);
static wint_t lexgetc(void);
@@ -70,10 +72,11 @@ static size_t lexescape(wint_t endc, int regx, int cmd_line_operand);
static void awkierr(int perr, char *fmt, va_list ap);
static int usage(void);
void strescape(wchar_t *str);
-static const char *toprint(wint_t);
+static const char *toprint(wint_t);
char *_cmdname;
static wchar_t *mbconvert(char *str);
+extern int isclvar(wchar_t *arg);
/*
* mainline for awk
@@ -81,28 +84,28 @@ static wchar_t *mbconvert(char *str);
int
main(int argc, char *argv[])
{
- register wchar_t *ap;
- register char *cmd;
+ wchar_t *ap;
+ char *cmd;
cmd = argv[0];
_cmdname = cmd;
- linebuf = emalloc(NLINE * sizeof(wchar_t));
+ linebuf = emalloc(NLINE * sizeof (wchar_t));
- /*l
+ /*
* At this point only messaging should be internationalized.
* numbers are still scanned as in the Posix locale.
*/
- (void) setlocale(LC_ALL,"");
- (void) setlocale(LC_NUMERIC,"C");
+ (void) setlocale(LC_ALL, "");
+ (void) setlocale(LC_NUMERIC, "C");
#if !defined(TEXT_DOMAIN)
#define TEXT_DOMAIN "SYS_TEST"
#endif
(void) textdomain(TEXT_DOMAIN);
-
+
awkvarinit();
- /*running = 1;*/
- while (argc>1 && *argv[1]=='-') {
+ /* running = 1; */
+ while (argc > 1 && *argv[1] == '-') {
void *save_ptr = NULL;
ap = mbstowcsdup(&argv[1][1]);
if (ap == NULL)
@@ -114,9 +117,9 @@ main(int argc, char *argv[])
save_ptr = (void *) ap;
++argv;
--argc;
- if (*ap=='-' && ap[1]=='\0')
+ if (*ap == '-' && ap[1] == '\0')
break;
- for ( ; *ap != '\0'; ++ap) {
+ for (; *ap != '\0'; ++ap) {
switch (*ap) {
#ifdef DEBUG
case 'd':
@@ -138,7 +141,7 @@ main(int argc, char *argv[])
case 'F':
if (ap[1] == '\0') {
if (argc < 2) {
- (void) fprintf(stderr,
+ (void) fprintf(stderr,
gettext("Missing field separator\n"));
return (1);
}
@@ -149,12 +152,12 @@ main(int argc, char *argv[])
++ap;
strescape(ap);
strassign(varFS, linebuf, FALLOC,
- wcslen(linebuf));
+ wcslen(linebuf));
break;
case 'v': {
- register wchar_t *vp;
- register wchar_t *arg;
+ wchar_t *vp;
+ wchar_t *arg;
if (argc < 2) {
(void) fprintf(stderr,
@@ -162,12 +165,23 @@ main(int argc, char *argv[])
return (1);
}
arg = mbconvert(argv[1]);
- if ((vp = wcschr(arg, '=')) != NULL) {
+ /*
+ * Ensure the variable expression
+ * is valid (correct form).
+ */
+ if (((vp = wcschr(arg, '=')) != NULL) &&
+ isclvar(arg)) {
*vp = '\0';
strescape(vp+1);
strassign(vlook(arg), linebuf,
- FALLOC|FSENSE, wcslen(linebuf));
+ FALLOC|FSENSE,
+ wcslen(linebuf));
*vp = '=';
+ } else {
+ (void) fprintf(stderr, gettext(
+ "Invalid form for variable "
+ "assignment: %S\n"), arg);
+ return (1);
}
--argc;
++argv;
@@ -175,7 +189,7 @@ main(int argc, char *argv[])
}
default:
- (void) fprintf(stderr,
+ (void) fprintf(stderr,
gettext("Unknown option \"-%S\"\n"), ap);
return (usage());
}
@@ -198,15 +212,15 @@ main(int argc, char *argv[])
awkarginit(argc, argv);
- /*running = 0;*/
- (void)yyparse();
+ /* running = 0; */
+ (void) yyparse();
lineno = 0;
/*
* Ok, done parsing, so now activate the rest of the nls stuff, set
* the radix character.
*/
- (void) setlocale(LC_ALL,"");
+ (void) setlocale(LC_ALL, "");
radixpoint = *localeconv()->decimal_point;
awk();
/* NOTREACHED */
@@ -223,7 +237,7 @@ main(int argc, char *argv[])
static void
awkvarinit()
{
- register NODE *np;
+ NODE *np;
(void) setvbuf(stderr, NULL, _IONBF, 0);
@@ -232,18 +246,18 @@ awkvarinit()
gettext("not enough available file descriptors"));
exit(1);
}
- ofiles = (OFILE *) emalloc(sizeof(OFILE)*NIOSTREAM);
+ ofiles = (OFILE *)emalloc(sizeof (OFILE)*NIOSTREAM);
#ifdef A_ZERO_POINTERS
- (void) memset((wchar_t *) ofiles, 0, sizeof(OFILE) * NIOSTREAM);
+ (void) memset((wchar_t *)ofiles, 0, sizeof (OFILE) * NIOSTREAM);
#else
{
- /* initialize file descriptor table */
- OFILE *fp;
- for (fp = ofiles; fp < &ofiles[NIOSTREAM]; fp += 1) {
- fp->f_fp = FNULL;
- fp->f_mode = 0;
- fp->f_name = (char *)0;
- }
+ /* initialize file descriptor table */
+ OFILE *fp;
+ for (fp = ofiles; fp < &ofiles[NIOSTREAM]; fp += 1) {
+ fp->f_fp = FNULL;
+ fp->f_mode = 0;
+ fp->f_name = (char *)0;
+ }
}
#endif
constant = intnode((INT)0);
@@ -260,14 +274,14 @@ awkvarinit()
field0 = node(FIELD, const0, NNULL);
{
- register RESFUNC near*rp;
+ RESFUNC near*rp;
for (rp = &resfuncs[0]; rp->rf_name != (LOCCHARP)NULL; ++rp) {
np = finstall(rp->rf_name, rp->rf_func, rp->rf_type);
}
}
{
- register RESERVED near*rp;
+ RESERVED near*rp;
for (rp = &reserved[0]; rp->r_name != (LOCCHARP)NULL; ++rp) {
switch (rp->r_type) {
@@ -282,7 +296,7 @@ awkvarinit()
(size_t)rp->r_ivalue);
else {
constant->n_int = rp->r_ivalue;
- (void)assign(np, constant);
+ (void) assign(np, constant);
}
running = 0;
break;
@@ -319,13 +333,13 @@ awkvarinit()
static void
awkarginit(int ac, char **av)
{
- register int i;
- register wchar_t *cp;
+ int i;
+ wchar_t *cp;
ARGVsubi = node(INDEX, vlook(s_ARGV), constant);
running = 1;
constant->n_int = ac;
- (void)assign(varARGC, constant);
+ (void) assign(varARGC, constant);
for (i = 0; i < ac; ++i) {
cp = mbstowcsdup(av[i]);
constant->n_int = i;
@@ -347,7 +361,7 @@ awkarginit(int ac, char **av)
void
uexit(NODE *np)
{
- register NODE *formal;
+ NODE *formal;
while ((formal = getlist(&np)) != NNULL)
delsymtab(formal, 0);
@@ -360,7 +374,7 @@ int
yylex()
#ifdef DEBUG
{
- register int l;
+ int l;
l = yyhex();
if (dflag)
@@ -370,7 +384,7 @@ yylex()
yyhex()
#endif
{
- register wint_t c, c1;
+ wint_t c, c1;
int i;
static int savetoken = 0;
static int wasfield;
@@ -379,13 +393,13 @@ yyhex()
static struct ctosymstruct {
wint_t c, sym;
} ctosym[] = {
- { '|', BAR }, { '^', CARAT },
- { '~', TILDE }, { '<', LANGLE },
- { '>', RANGLE }, { '+', PLUSC },
- { '-', HYPHEN }, { '*', STAR },
- { '/', SLASH }, { '%', PERCENT },
- { '!', EXCLAMATION }, { '$', DOLLAR },
- { '[', LSQUARE }, { ']', RSQUARE },
+ { '|', BAR }, { '^', CARAT },
+ { '~', TILDE }, { '<', LANGLE },
+ { '>', RANGLE }, { '+', PLUSC },
+ { '-', HYPHEN }, { '*', STAR },
+ { '/', SLASH }, { '%', PERCENT },
+ { '!', EXCLAMATION }, { '$', DOLLAR },
+ { '[', LSQUARE }, { ']', RSQUARE },
{ '(', LPAREN }, { ')', RPAREN },
{ ';', SEMI }, { '{', LBRACE },
{ '}', RBRACE }, { 0, 0 }
@@ -401,9 +415,9 @@ yyhex()
savetoken = c;
return (lexlast = lexregexp(c));
} else while ((c = lexgetc()) != WEOF) {
- if (iswalpha(c) || c=='_') {
+ if (iswalpha(c) || c == '_') {
c = lexid(c);
- } else if (iswdigit(c) || c=='.') {
+ } else if (iswdigit(c) || c == '.') {
c = lexnumber(c);
} else if (isWblank(c)) {
continue;
@@ -418,7 +432,7 @@ yyhex()
break;
case '#':
- while ((c = lexgetc())!='\n' && c!=WEOF)
+ while ((c = lexgetc()) != '\n' && c != WEOF)
;
lexungetc(c);
continue;
@@ -465,10 +479,10 @@ yyhex()
break;
case '/':
- if ((c1 = lexgetc()) == '='
- && lexlast!=RE && lexlast!=NRE
- && lexlast!=';' && lexlast!='\n'
- && lexlast!=',' && lexlast!='(')
+ if ((c1 = lexgetc()) == '=' &&
+ lexlast != RE && lexlast != NRE &&
+ lexlast != ';' && lexlast != '\n' &&
+ lexlast != ',' && lexlast != '(')
c = ADIV;
else
lexungetc(c1);
@@ -505,7 +519,7 @@ yyhex()
c = APPEND;
else {
lexungetc(c1);
- if (nparen==0 && inprint)
+ if (nparen == 0 && inprint)
c = WRITE;
}
break;
@@ -632,8 +646,8 @@ yyhex()
default:
if (!iswprint(c))
awkerr(
- gettext("invalid character \"%s\""),
- toprint(c));
+ gettext("invalid character \"%s\""),
+ toprint(c));
break;
}
break;
@@ -650,7 +664,7 @@ yyhex()
c = CONCAT;
catterm = 0;
} else if (!isfuncdef) {
- if ((c1=lexgetc()) != '(')
+ if ((c1 = lexgetc()) != '(')
++catterm;
lexungetc(c1);
}
@@ -672,7 +686,7 @@ yyhex()
case INC:
case DEC:
- if (!catterm || lexlast!=CONSTANT || wasfield)
+ if (!catterm || lexlast != CONSTANT || wasfield)
break;
case UFUNC:
@@ -688,7 +702,7 @@ yyhex()
}
break;
- /*{*/case '}':
+ /* { */ case '}':
if (nbrace == 0)
savetoken = ';';
case ';':
@@ -720,9 +734,9 @@ yyhex()
static int
lexnumber(wint_t c)
{
- register wchar_t *cp;
- register int dotfound = 0;
- register int efound = 0;
+ wchar_t *cp;
+ int dotfound = 0;
+ int efound = 0;
INT number;
cp = linebuf;
@@ -732,8 +746,8 @@ lexnumber(wint_t c)
else if (c == '.') {
if (dotfound++)
break;
- } else if (c=='e' || c=='E') {
- if ((c = lexgetc())!='-' && c!='+') {
+ } else if (c == 'e' || c == 'E') {
+ if ((c = lexgetc()) != '-' && c != '+') {
lexungetc(c);
c = 'e';
} else
@@ -745,13 +759,12 @@ lexnumber(wint_t c)
*cp++ = c;
} while ((c = lexgetc()) != WEOF);
*cp = '\0';
- if (dotfound && cp==linebuf+1)
+ if (dotfound && cp == linebuf+1)
return (DOT);
lexungetc(c);
errno = 0;
- if (!dotfound
- && !efound
- && ((number=wcstol(linebuf, (wchar_t **)0, 10)), errno!=ERANGE))
+ if (!dotfound && !efound &&
+ ((number = wcstol(linebuf, (wchar_t **)0, 10)), errno != ERANGE))
yylval.node = intnode(number);
else
yylval.node = realnode((REAL)wcstod(linebuf, (wchar_t **)0));
@@ -766,20 +779,20 @@ lexnumber(wint_t c)
static int
lexid(wint_t c)
{
- register wchar_t *cp;
- register size_t i;
- register NODE *np;
+ wchar_t *cp;
+ size_t i;
+ NODE *np;
cp = linebuf;
do {
*cp++ = c;
c = lexgetc();
- } while (iswalpha(c) || iswdigit(c) || c=='_');
+ } while (iswalpha(c) || iswdigit(c) || c == '_');
*cp = '\0';
lexungetc(c);
yylval.node = np = vlook(linebuf);
- switch(np->n_type) {
+ switch (np->n_type) {
case KEYWORD:
switch (np->n_keywtype) {
case PRINT:
@@ -801,16 +814,16 @@ lexid(wint_t c)
*/
if (funparm) {
do_funparm:
- np = emptynode(PARM, i=(cp-linebuf));
+ np = emptynode(PARM, i = (cp-linebuf));
np->n_flags = FSTRING;
np->n_string = _null;
np->n_strlen = 0;
(void) memcpy(np->n_name, linebuf,
- (i+1) * sizeof(wchar_t));
+ (i+1) * sizeof (wchar_t));
addsymtab(np);
yylval.node = np;
} else if (np == varNF || (np == varFS &&
- (!doing_begin || begin_getline))) {
+ (!doing_begin || begin_getline))) {
/*
* If the user program references NF or sets
* FS either outside of a begin block or
@@ -851,7 +864,7 @@ do_funparm:
static int
lexstring(wint_t endc)
{
- register size_t length = lexescape(endc, 0, 0);
+ size_t length = lexescape(endc, 0, 0);
yylval.node = stringnode(linebuf, FALLOC, length);
return (CONSTANT);
@@ -907,7 +920,7 @@ lexescape(wint_t endc, int regx, int cmd_line_operand)
(void) strcpy(eofre, gettext("EOF in regular expression\n"));
(void) strcpy(eofstr, gettext("EOF in string\n"));
first_time = 0;
- }
+ }
cp = linebuf;
while ((c = lexgetc()) != endc) {
@@ -949,7 +962,7 @@ lexescape(wint_t endc, int regx, int cmd_line_operand)
break;
case 'a':
- c = (char) 0x07;
+ c = (char)0x07;
break;
case 'x':
@@ -997,7 +1010,7 @@ lexescape(wint_t endc, int regx, int cmd_line_operand)
n = 0;
do {
n = (n<<3) + c-'0';
- if ((c = lexgetc())>'7' || c<'0')
+ if ((c = lexgetc()) > '7' || c < '0')
break;
} while (--max);
lexungetc(c);
@@ -1040,12 +1053,12 @@ lexescape(wint_t endc, int regx, int cmd_line_operand)
NODE *
renode(wchar_t *s)
{
- register NODE *np;
+ NODE *np;
int n;
np = emptynode(RE, 0);
np->n_left = np->n_right = NNULL;
- np->n_regexp = (REGEXP)emalloc(sizeof(regex_t));
+ np->n_regexp = (REGEXP)emalloc(sizeof (regex_t));
if ((n = REGWCOMP(np->n_regexp, s, REG_EXTENDED)) != REG_OK) {
int m;
char *p;
@@ -1063,10 +1076,10 @@ renode(wchar_t *s)
static wint_t
lexgetc()
{
- register wint_t c;
+ wint_t c;
static char **files = &progfiles[0];
- if (progfp!=FNULL && (c = fgetwc(progfp))!=WEOF)
+ if (progfp != FNULL && (c = fgetwc(progfp)) != WEOF)
;
else {
if (progptr != NULL) {
@@ -1077,16 +1090,17 @@ lexgetc()
} else {
if (progfp != FNULL)
if (progfp != stdin)
- (void)fclose(progfp);
+ (void) fclose(progfp);
else
clearerr(progfp);
progfp = FNULL;
if (files < progfilep) {
filename = *files++;
lineno = 1;
- if (filename[0]=='-' && filename[1]=='\0')
+ if (filename[0] == '-' && filename[1] == '\0')
progfp = stdin;
- else if ((progfp=fopen(filename, r)) == FNULL) {
+ else if ((progfp = fopen(filename, r))
+ == FNULL) {
(void) fprintf(stderr,
gettext("script file \"%s\""), filename);
exit(1);
@@ -1119,7 +1133,7 @@ lexungetc(wint_t c)
*--conptr = '\0';
}
if (progfp != FNULL) {
- (void)ungetwc(c, progfp);
+ (void) ungetwc(c, progfp);
return;
}
if (c == WEOF)
@@ -1134,7 +1148,7 @@ lexungetc(wint_t c)
void
yyerror(char *s, ...)
{
- if (lexlast==FUNC || lexlast==GETLINE || lexlast==KEYWORD)
+ if (lexlast == FUNC || lexlast == GETLINE || lexlast == KEYWORD)
if (lexlast == KEYWORD)
awkerr(gettext("inadmissible use of reserved keyword"));
else
@@ -1184,12 +1198,13 @@ awkierr(int perr, char *fmt, va_list ap)
(void) fprintf(stderr, "%s: ", _cmdname);
if (running) {
(void) fprintf(stderr, gettext("line %u ("),
- curnode==NNULL ? 0 : curnode->n_lineno);
+ curnode == NNULL ? 0 : curnode->n_lineno);
if (phase == 0)
- (void) fprintf(stderr, "NR=%lld): ", (INT)exprint(varNR));
+ (void) fprintf(stderr, "NR=%lld): ",
+ (INT)exprint(varNR));
else
- (void) fprintf(stderr, "%s): ",
- phase==BEGIN ? s_BEGIN : s_END);
+ (void) fprintf(stderr, "%s): ",
+ phase == BEGIN ? s_BEGIN : s_END);
} else if (lineno != 0) {
(void) fprintf(stderr, gettext("file \"%s\": "), filename);
(void) fprintf(stderr, gettext("line %u: "), lineno);
@@ -1198,9 +1213,9 @@ awkierr(int perr, char *fmt, va_list ap)
if (perr == 1)
(void) fprintf(stderr, ": %s", strerror(saveerr));
if (perr != 2 && !running) {
- register wchar_t *cp;
- register int n;
- register int c;
+ wchar_t *cp;
+ int n;
+ int c;
(void) fprintf(stderr, gettext(" Context is:%s"), sep1);
cp = conptr;
@@ -1209,10 +1224,10 @@ awkierr(int perr, char *fmt, va_list ap)
if (cp >= &context[NCONTEXT])
cp = &context[0];
if ((c = *cp++) != '\0')
- (void)fputs(c=='\n' ? sep1 : toprint(c),
- stderr);
+ (void) fputs(c == '\n' ? sep1 : toprint(c),
+ stderr);
} while (--n != 0);
- (void)fputs(sep2, stderr);
+ (void) fputs(sep2, stderr);
}
(void) fprintf(stderr, "\n");
exit(1);
@@ -1225,7 +1240,7 @@ emalloc(unsigned n)
if ((cp = malloc(n)) == NULL)
awkerr(nomem);
- return cp;
+ return (cp);
}
wchar_t *
@@ -1235,7 +1250,7 @@ erealloc(wchar_t *p, unsigned n)
if ((cp = realloc(p, n)) == NULL)
awkerr(nomem);
- return cp;
+ return (cp);
}
@@ -1276,53 +1291,53 @@ mbunconvert(wchar_t *str)
* Solaris port - following functions are typical MKS functions written
* to work for Solaris.
*/
-
+
wchar_t *
mbstowcsdup(s)
char *s;
{
- int n;
- wchar_t *w;
-
- n = strlen(s) + 1;
- if ((w = (wchar_t *)malloc(n * sizeof (wchar_t))) == NULL)
- return (NULL);
-
- if (mbstowcs(w, s, n) == -1)
- return (NULL);
- return (w);
-
+ int n;
+ wchar_t *w;
+
+ n = strlen(s) + 1;
+ if ((w = (wchar_t *)malloc(n * sizeof (wchar_t))) == NULL)
+ return (NULL);
+
+ if (mbstowcs(w, s, n) == -1)
+ return (NULL);
+ return (w);
+
}
-
+
char *
wcstombsdup(wchar_t *w)
{
- int n;
- char *mb;
-
- /* Fetch memory for worst case string length */
- n = wslen(w) + 1;
- n *= MB_CUR_MAX;
- if ((mb = (char *)malloc(n)) == NULL) {
- return (NULL);
- }
-
- /* Convert the string */
- if ((n = wcstombs(mb, w, n)) == -1) {
- int saverr = errno;
-
- free(mb);
- errno = saverr;
- return (0);
- }
-
- /* Shrink the string down */
- if ((mb = (char *)realloc(mb, strlen(mb)+1)) == NULL) {
- return (NULL);
- }
- return (mb);
+ int n;
+ char *mb;
+
+ /* Fetch memory for worst case string length */
+ n = wslen(w) + 1;
+ n *= MB_CUR_MAX;
+ if ((mb = (char *)malloc(n)) == NULL) {
+ return (NULL);
+ }
+
+ /* Convert the string */
+ if ((n = wcstombs(mb, w, n)) == -1) {
+ int saverr = errno;
+
+ free(mb);
+ errno = saverr;
+ return (0);
+ }
+
+ /* Shrink the string down */
+ if ((mb = (char *)realloc(mb, strlen(mb)+1)) == NULL) {
+ return (NULL);
+ }
+ return (mb);
}
-
+
/*
* The upe_ctrls[] table contains the printable 'control-sequences' for the
* character values 0..31 and 127. The first entry is for value 127, thus the
@@ -1330,11 +1345,11 @@ wcstombsdup(wchar_t *w)
*/
static const char *const upe_ctrls[] =
{
- "^?",
- "^@", "^A", "^B", "^C", "^D", "^E", "^F", "^G",
- "^H", "^I", "^J", "^K", "^L", "^M", "^N", "^O",
- "^P", "^Q", "^R", "^S", "^T", "^U", "^V", "^W",
- "^X", "^Y", "^Z", "^[", "^\\", "^]", "^^", "^_"
+ "^?",
+ "^@", "^A", "^B", "^C", "^D", "^E", "^F", "^G",
+ "^H", "^I", "^J", "^K", "^L", "^M", "^N", "^O",
+ "^P", "^Q", "^R", "^S", "^T", "^U", "^V", "^W",
+ "^X", "^Y", "^Z", "^[", "^\\", "^]", "^^", "^_"
};
@@ -1348,30 +1363,30 @@ static const char *
toprint(c)
wchar_t c;
{
- int n, len;
- unsigned char *ptr;
- static char mbch[MB_LEN_MAX+1];
- static char buf[5 * MB_LEN_MAX + 1];
-
- if ((n = wctomb(mbch, c)) == -1) {
- /* Should never happen */
- (void) sprintf(buf, "\\%x", c);
- return (buf);
- }
- mbch[n] = '\0';
- if (iswprint(c)) {
- return (mbch);
- } else if (c == 127) {
- return (upe_ctrls[0]);
- } else if (c < 32) {
- /* Print as in Table 5-101 in the UPE */
- return (upe_ctrls[c+1]);
- } else {
- /* Print as an octal escape sequence */
- for (len = 0, ptr = (unsigned char *) mbch; 0 < n; --n, ++ptr)
- len += sprintf(buf+len, "\\%03o", *ptr);
- }
- return (buf);
+ int n, len;
+ unsigned char *ptr;
+ static char mbch[MB_LEN_MAX+1];
+ static char buf[5 * MB_LEN_MAX + 1];
+
+ if ((n = wctomb(mbch, c)) == -1) {
+ /* Should never happen */
+ (void) sprintf(buf, "\\%x", c);
+ return (buf);
+ }
+ mbch[n] = '\0';
+ if (iswprint(c)) {
+ return (mbch);
+ } else if (c == 127) {
+ return (upe_ctrls[0]);
+ } else if (c < 32) {
+ /* Print as in Table 5-101 in the UPE */
+ return (upe_ctrls[c+1]);
+ } else {
+ /* Print as an octal escape sequence */
+ for (len = 0, ptr = (unsigned char *) mbch; 0 < n; --n, ++ptr)
+ len += sprintf(buf+len, "\\%03o", *ptr);
+ }
+ return (buf);
}
static int
@@ -1395,12 +1410,12 @@ wcoff(const wchar_t *astring, const int off)
}
int
-int_regwcomp(register regex_t *r, const wchar_t *pattern, int uflags)
+int_regwcomp(regex_t *r, const wchar_t *pattern, int uflags)
{
char *mbpattern;
int ret;
- if ((mbpattern = wcstombsdup((wchar_t *) pattern)) == NULL)
+ if ((mbpattern = wcstombsdup((wchar_t *)pattern)) == NULL)
return (REG_ESPACE);
ret = regcomp(r, mbpattern, uflags);
@@ -1419,9 +1434,9 @@ int_regwexec(const regex_t *r, /* compiled RE */
{
char *mbs;
regmatch_t *mbsub = NULL;
- register int i;
+ int i;
- if ((mbs = wcstombsdup((wchar_t *) astring)) == NULL)
+ if ((mbs = wcstombsdup((wchar_t *)astring)) == NULL)
return (REG_ESPACE);
if (nsub > 0 && sub) {
@@ -1433,7 +1448,7 @@ int_regwexec(const regex_t *r, /* compiled RE */
/* Now, adjust the pointers/counts in sub */
if (i == REG_OK && nsub > 0 && mbsub) {
- register int j, k;
+ int j, k;
for (j = 0; j < nsub; j++) {
regmatch_t *ms = &mbsub[j];
@@ -1457,7 +1472,7 @@ int_regwexec(const regex_t *r, /* compiled RE */
}
int
-int_regwdosuba(register regex_t *rp, /* compiled RE: Pattern */
+int_regwdosuba(regex_t *rp, /* compiled RE: Pattern */
const wchar_t *rpl, /* replacement string: /rpl/ */
const wchar_t *src, /* source string */
wchar_t **dstp, /* destination string */
@@ -1465,10 +1480,10 @@ int_regwdosuba(register regex_t *rp, /* compiled RE: Pattern */
int *globp) /* IN: occurence, 0 for all; OUT: substitutions */
{
wchar_t *dst, *odst;
- register const wchar_t *ip, *xp;
- register wchar_t *op;
- register int i;
- register wchar_t c;
+ const wchar_t *ip, *xp;
+ wchar_t *op;
+ int i;
+ wchar_t c;
int glob, iglob = *globp, oglob = 0;
#define NSUB 10
int_regwmatch_t rm[NSUB], *rmp;
@@ -1481,7 +1496,7 @@ int_regwdosuba(register regex_t *rp, /* compiled RE: Pattern */
#undef OVERFLOW
#define OVERFLOW(i) if (1) { \
int pos = op - dst; \
- dst = (wchar_t *) realloc(odst = dst, \
+ dst = (wchar_t *)realloc(odst = dst, \
(len += len + i) * sizeof (wchar_t)); \
if (dst == NULL) \
goto nospace; \
@@ -1490,7 +1505,7 @@ int_regwdosuba(register regex_t *rp, /* compiled RE: Pattern */
} else
#endif
- *dstp = dst = (wchar_t *) malloc(len * sizeof (wchar_t));
+ *dstp = dst = (wchar_t *)malloc(len * sizeof (wchar_t));
if (dst == NULL)
return (REG_ESPACE);
@@ -1560,11 +1575,11 @@ int_regwdosuba(register regex_t *rp, /* compiled RE: Pattern */
if (op + (i = wcslen(ip)) >= end)
OVERFLOW(i);
while (i--)
- *op++ = *ip++;
+ *op++ = *ip++;
*op++ = '\0';
- if ((*dstp = dst = (wchar_t *) realloc(odst = dst,
- sizeof (wchar_t) * (size_t)(op - dst))) == NULL) {
+ if ((*dstp = dst = (wchar_t *)realloc(odst = dst,
+ sizeof (wchar_t) * (size_t)(op - dst))) == NULL) {
nospace:
free(odst);
return (REG_ESPACE);