Relax unknown field handling: warn instead of error
[babeltrace.git] / formats / ctf / metadata / ctf-visitor-generate-io-struct.c
index 6e828fcd13059b20f466a53eb07f4ea7cf59a23a..70fd5df200c388be088871ce37d97c594a8a2f37 100644 (file)
@@ -1234,10 +1234,26 @@ struct declaration *ctf_declaration_integer_visit(FILE *fd, int depth,
                                return NULL;
                        }
                        g_free(s_right);
+               } else if (!strcmp(left->u.unary_expression.u.string, "map")) {
+                       char *s_right;
+
+                       if (right->u.unary_expression.type != UNARY_STRING) {
+                               fprintf(fd, "[error] %s: map: expecting identifier\n",
+                                       __func__);
+                               return NULL;
+                       }
+                       s_right = concatenate_unary_strings(&expression->u.ctf_expression.right);
+                       if (!s_right) {
+                               fprintf(fd, "[error] %s: unexpected unary expression for integer map\n", __func__);
+                               g_free(s_right);
+                               return NULL;
+                       }
+                       /* TODO: lookup */
+
                } else {
-                       fprintf(fd, "[error] %s: unknown attribute name %s\n",
+                       fprintf(fd, "[warning] %s: unknown attribute name %s\n",
                                __func__, left->u.unary_expression.u.string);
-                       return NULL;
+                       /* Fall-through after warning */
                }
        }
        if (!has_size) {
@@ -1311,9 +1327,9 @@ struct declaration *ctf_declaration_floating_point_visit(FILE *fd, int depth,
                        }
                        has_alignment = 1;
                } else {
-                       fprintf(fd, "[error] %s: unknown attribute name %s\n",
+                       fprintf(fd, "[warning] %s: unknown attribute name %s\n",
                                __func__, left->u.unary_expression.u.string);
-                       return NULL;
+                       /* Fall-through after warning */
                }
        }
        if (!has_mant_dig) {
@@ -1362,9 +1378,9 @@ struct declaration *ctf_declaration_string_visit(FILE *fd, int depth,
                        }
                        encoding_c = right->u.unary_expression.u.string;
                } else {
-                       fprintf(fd, "[error] %s: unknown attribute name %s\n",
+                       fprintf(fd, "[warning] %s: unknown attribute name %s\n",
                                __func__, left->u.unary_expression.u.string);
-                       return NULL;
+                       /* Fall-through after warning */
                }
        }
        if (encoding_c && !strcmp(encoding_c, "ASCII"))
@@ -1598,9 +1614,8 @@ int ctf_event_declaration_visit(FILE *fd, int depth, struct ctf_node *node, stru
                        }
                        CTF_EVENT_SET_FIELD(event, loglevel_value);
                } else {
-                       fprintf(fd, "[error] %s: attribute \"%s\" is unknown in event declaration.\n", __func__, left);
-                       ret = -EINVAL;
-                       goto error;
+                       fprintf(fd, "[warning] %s: attribute \"%s\" is unknown in event declaration.\n", __func__, left);
+                       /* Fall-through after warning */
                }
 error:
                g_free(left);
@@ -1783,9 +1798,8 @@ int ctf_stream_declaration_visit(FILE *fd, int depth, struct ctf_node *node, str
                        }
                        stream->packet_context_decl = container_of(declaration, struct declaration_struct, p);
                } else {
-                       fprintf(fd, "[error] %s: attribute \"%s\" is unknown in stream declaration.\n", __func__, left);
-                       ret = -EINVAL;
-                       goto error;
+                       fprintf(fd, "[warning] %s: attribute \"%s\" is unknown in stream declaration.\n", __func__, left);
+                       /* Fall-through after warning */
                }
 
 error:
@@ -1982,9 +1996,7 @@ int ctf_trace_declaration_visit(FILE *fd, int depth, struct ctf_node *node, stru
                        }
                        trace->packet_header_decl = container_of(declaration, struct declaration_struct, p);
                } else {
-                       fprintf(fd, "[error] %s: attribute \"%s\" is unknown in trace declaration.\n", __func__, left);
-                       ret = -EINVAL;
-                       goto error;
+                       fprintf(fd, "[warning] %s: attribute \"%s\" is unknown in trace declaration.\n", __func__, left);
                }
 
 error:
This page took 0.025947 seconds and 4 git commands to generate.