]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
libsmartcols: improve parser error messages
authorKarel Zak <kzak@redhat.com>
Thu, 2 Nov 2023 13:11:22 +0000 (14:11 +0100)
committerKarel Zak <kzak@redhat.com>
Mon, 20 Nov 2023 21:25:47 +0000 (22:25 +0100)
* remove T_ prefix for tokens in error message (the error message is generated
  by bison)

* use rename T_NAME to T_HOLDER to be consistent with library API

Signed-off-by: Karel Zak <kzak@redhat.com>
libsmartcols/src/filter-parser.h
libsmartcols/src/filter-parser.y
libsmartcols/src/filter-scanner.l

index 7aa620a38f66f8453efff339dc555304e47b9cc5..81eed1fbf584a833fa92eb698c145f97967a6ba9 100644 (file)
@@ -62,7 +62,7 @@ extern int yydebug;
     YYUNDEF = 257,                 /* "invalid token"  */
     T_NUMBER = 258,                /* T_NUMBER  */
     T_STRING = 259,                /* T_STRING  */
-    T_NAME = 260,                  /* T_NAME  */
+    T_HOLDER = 260,                /* T_HOLDER  */
     T_FLOAT = 261,                 /* T_FLOAT  */
     T_OR = 262,                    /* T_OR  */
     T_AND = 263,                   /* T_AND  */
@@ -87,7 +87,7 @@ extern int yydebug;
 #define YYUNDEF 257
 #define T_NUMBER 258
 #define T_STRING 259
-#define T_NAME 260
+#define T_HOLDER 260
 #define T_FLOAT 261
 #define T_OR 262
 #define T_AND 263
index e1fa48ce03cfcd05efcd71b9cb9c60772dd2cdeb..0af556c25a18831d60e0c87987b2193eb9b288f1 100644 (file)
@@ -42,7 +42,7 @@ void yyerror(yyscan_t *locp, struct libscols_filter *fltr, char const *msg);
 }
 %token <param_number> T_NUMBER
 %token <param_string> T_STRING
-%token <param_name> T_NAME
+%token <param_name> T_HOLDER
 %token <param_float> T_FLOAT
 %type <param> param expr
 
@@ -87,7 +87,7 @@ expr:
 param:
        T_NUMBER        { $$ = filter_new_param(fltr, SCOLS_DATA_U64, 0, (void *) (&$1)); }
        | T_FLOAT       { $$ = filter_new_param(fltr, SCOLS_DATA_FLOAT, 0, (void *) (&$1)); }
-       | T_NAME        { $$ = filter_new_param(fltr, SCOLS_DATA_NONE, F_HOLDER_COLUMN, (void *) $1); }
+       | T_HOLDER      { $$ = filter_new_param(fltr, SCOLS_DATA_NONE, F_HOLDER_COLUMN, (void *) $1); }
        | T_STRING      { $$ = filter_new_param(fltr, SCOLS_DATA_STRING, 0, (void *) $1); }
        | T_TRUE        {
                bool x = true;
@@ -108,9 +108,18 @@ void yyerror (yyscan_t *locp __attribute__((__unused__)),
              char const *msg)
 {
        if (msg && fltr) {
+               char *p;
+
                if (fltr->errmsg)
                        free(fltr->errmsg);
                fltr->errmsg = strdup(msg);
+
+               p = strstr(fltr->errmsg, "T_");
+               if (p) {
+                       size_t sz = strlen(fltr->errmsg);
+                       memmove(p, p + 2, sz - 1 - (p - fltr->errmsg));
+               }
+
                if (!fltr->errmsg)
                        return;
        }
index 1c06e8e7c92538f9e099946915946614c6962bb8..8de686818f69fa0281d0e26a651f7e32d57cbbe1 100644 (file)
@@ -50,7 +50,7 @@ true|TRUE     return T_TRUE;
 
 {id} {
        yylval->param_name = yytext;
-       return T_NAME;
+       return T_HOLDER;
 }
 
 {str_ap}|{str_qu} {