POSIX requires that awk support \v and \a escapes. I used '\007'
authormillert <millert@openbsd.org>
Wed, 24 Jan 2018 16:28:25 +0000 (16:28 +0000)
committermillert <millert@openbsd.org>
Wed, 24 Jan 2018 16:28:25 +0000 (16:28 +0000)
for BEL since that is what lex.c uses, though we could safely use
'\a' there instead.  OK martijn@

usr.bin/awk/b.c
usr.bin/awk/tran.c

index cfc0a57..5091823 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: b.c,v 1.19 2017/10/09 14:51:31 deraadt Exp $  */
+/*     $OpenBSD: b.c,v 1.20 2018/01/24 16:28:25 millert Exp $  */
 /****************************************************************
 Copyright (C) Lucent Technologies 1997
 All Rights Reserved
@@ -260,6 +260,8 @@ int quoted(uschar **pp)     /* pick up next thing after a \\ */
 
        if ((c = *p++) == 't')
                c = '\t';
+       else if (c == 'v')
+               c = '\v';
        else if (c == 'n')
                c = '\n';
        else if (c == 'f')
@@ -268,6 +270,8 @@ int quoted(uschar **pp)     /* pick up next thing after a \\ */
                c = '\r';
        else if (c == 'b')
                c = '\b';
+       else if (c == 'a')
+               c = '\007';
        else if (c == '\\')
                c = '\\';
        else if (c == 'x') {    /* hexadecimal goo follows */
index 6bebe2e..1105b5d 100644 (file)
@@ -1,4 +1,4 @@
-/*     $OpenBSD: tran.c,v 1.16 2017/10/09 14:51:31 deraadt Exp $       */
+/*     $OpenBSD: tran.c,v 1.17 2018/01/24 16:28:25 millert Exp $       */
 /****************************************************************
 Copyright (C) Lucent Technologies 1997
 All Rights Reserved
@@ -434,9 +434,11 @@ char *qstring(const char *is, int delim)   /* collect string up to next delim */
                        case '\\':      *bp++ = '\\'; break;
                        case 'n':       *bp++ = '\n'; break;
                        case 't':       *bp++ = '\t'; break;
+                       case 'v':       *bp++ = '\v'; break;
                        case 'b':       *bp++ = '\b'; break;
                        case 'f':       *bp++ = '\f'; break;
                        case 'r':       *bp++ = '\r'; break;
+                       case 'a':       *bp++ = '\007'; break;
                        default:
                                if (!isdigit(c)) {
                                        *bp++ = c;