]> Trent Huber's Code - thus.git/commitdiff
Fix bug in verbose quoting
authorTrent Huber <trentmhuber@gmail.com>
Fri, 28 Nov 2025 06:28:59 +0000 (01:28 -0500)
committerTrent Huber <trentmhuber@gmail.com>
Fri, 28 Nov 2025 06:28:59 +0000 (01:28 -0500)
src/utils.c

index a59c0b7e73f2e5d95ad9d41275325a13c68e68c9..6665eaa68fe4feec53f36e433f84aab4700716df 100644 (file)
@@ -109,6 +109,7 @@ char *quoted(char *token) {
        DOUBLE,
        SINGLE,
        ESCAPEDOUBLE,
+       ANY,
    } degree;
    static char buffer[MAXCHARS + 1];
 
@@ -128,17 +129,18 @@ char *quoted(char *token) {
    case '|':
    case ';':
    case ' ':
-       if (degree < DOUBLE) degree = DOUBLE;
+       degree |= ANY;
        break;
    case '$':
    case '~':
    case '"':
-       if (degree < SINGLE) degree = SINGLE;
+       degree |= SINGLE;
        break;
    case '\'':
-       if (degree == NONE || degree == SINGLE) ++degree;
+       degree |= DOUBLE;
    }
    if (degree == NONE) return token;
+   degree = degree == ANY ? DOUBLE : degree & ~ANY;
 
    quote = degree == SINGLE ? '\'' : '"';
    p = buffer;