=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/awk/b.c,v retrieving revision 1.31 retrieving revision 1.32 diff -u -r1.31 -r1.32 --- src/usr.bin/awk/b.c 2020/06/10 21:05:02 1.31 +++ src/usr.bin/awk/b.c 2020/06/26 15:57:39 1.32 @@ -1,4 +1,4 @@ -/* $OpenBSD: b.c,v 1.31 2020/06/10 21:05:02 millert Exp $ */ +/* $OpenBSD: b.c,v 1.32 2020/06/26 15:57:39 millert Exp $ */ /**************************************************************** Copyright (C) Lucent Technologies 1997 All Rights Reserved @@ -405,7 +405,7 @@ i++; } *bp = 0; - DPRINTF( ("cclenter: in = |%s|, out = |%s|\n", op, buf) ); + DPRINTF("cclenter: in = |%s|, out = |%s|\n", op, buf); xfree(op); return (char *) tostring((char *) buf); } @@ -741,7 +741,7 @@ { /* uses relex() to scan regular expression */ Node *np; - DPRINTF( ("reparse <%s>\n", p) ); + DPRINTF("reparse <%s>\n", p); lastre = prestr = (const uschar *) p; /* prestr points to string to be parsed */ rtok = relex(); /* GNU compatibility: an empty regexp matches anything */ @@ -1112,6 +1112,12 @@ if (!adjbuf((char **) &buf, &bufsz, bp-buf+1, 100, (char **) &bp, "relex2")) FATAL("out of space for reg expr %.10s...", lastre); if (cc->cc_func(i)) { + /* escape backslash */ + if (i == '\\') { + *bp++ = '\\'; + n++; + } + *bp++ = i; n++; }