diff --git a/paraconf/src/api.c b/paraconf/src/api.c index 0c41eff..aa20313 100644 --- a/paraconf/src/api.c +++ b/paraconf/src/api.c @@ -215,7 +215,8 @@ PC_status_t PC_len( const PC_tree_t tree, int *res ) // check type if ( !tree.node ) { PC_handle_err(PC_make_err(PC_INVALID_NODE_TYPE, - "Expected node, found empty tree\n" + "In line %zu: Expected node, found empty tree\n", + tree.node->start_mark.line + 1 ), err0); } @@ -230,7 +231,9 @@ PC_status_t PC_len( const PC_tree_t tree, int *res ) *res = tree.node->data.scalar.length; } break; default: { - PC_handle_err(PC_make_err(PC_INVALID_NODE_TYPE, "Unknown yaml node type: #%d", tree.node->type), err0); + PC_handle_err(PC_make_err(PC_INVALID_NODE_TYPE, "In line %zu: Unknown yaml node type: #%d", + tree.node->start_mark.line + 1, + tree.node->type), err0); } break; } @@ -248,18 +251,22 @@ PC_status_t PC_int( const PC_tree_t tree, long *res ) // check type if ( !tree.node ) { PC_handle_err(PC_make_err(PC_INVALID_NODE_TYPE, - "Expected node, found empty tree\n" + "In line %zu: Expected node, found empty tree\n" ), err0); } if ( tree.node->type != YAML_SCALAR_NODE ) { - return PC_make_err(PC_INVALID_NODE_TYPE, "Expected a scalar, found %s\n", nodetype[tree.node->type]); + return PC_make_err(PC_INVALID_NODE_TYPE, "In line %zu: Expected a scalar, found %s\n", + tree.node->start_mark.line + 1, + nodetype[tree.node->type]); } char *endptr; long result = strtol((char*)tree.node->data.scalar.value, &endptr, 0); if ( *endptr ) { char *content; PC_handle_err(PC_string(tree, &content), err0); - status = PC_make_err(PC_INVALID_NODE_TYPE, "Expected integer, found `%s'\n", content); + status = PC_make_err(PC_INVALID_NODE_TYPE, "In line %zu: Expected integer, found `%s'\n", + tree.node->start_mark.line + 1, + content); free(content); PC_handle_err(status, err0); } @@ -279,19 +286,20 @@ PC_status_t PC_double( const PC_tree_t tree, double* value ) // check type if ( !tree.node ) { PC_handle_err(PC_make_err(PC_INVALID_NODE_TYPE, - "Expected node, found empty tree\n" - ), err0); + "In line %zu: Expected node, found empty tree\n", + tree.node->start_mark.line + 1), err0); } if ( tree.node->type != YAML_SCALAR_NODE ) { PC_handle_err(PC_make_err(PC_INVALID_NODE_TYPE, - "Expected a scalar, found %s\n", + "In line %zu: Expected a scalar, found %s\n", + tree.node->start_mark.line + 1, nodetype[tree.node->type]), err0); } char *endptr; *value = strtod((char*)tree.node->data.scalar.value, &endptr); if ( *endptr ) { char *content = NULL; PC_handle_err(PC_string(tree, &content), err0); - status = PC_make_err(PC_INVALID_PARAMETER, "Expected floating point, found `%s'\n", content); + status = PC_make_err(PC_INVALID_PARAMETER, "In line %zu: Expected floating point, found `%s'\n", content); free(content); PC_handle_err(status, err0); } @@ -310,13 +318,14 @@ PC_status_t PC_string( const PC_tree_t tree, char** value ) // check type if ( !tree.node ) { PC_handle_err(PC_make_err(PC_INVALID_NODE_TYPE, - "Expected node, found empty tree\n" + "In line %zu: Expected node, found empty tree\n" ), err0); } if ( tree.node->type != YAML_SCALAR_NODE ) { PC_handle_err(PC_make_err(PC_INVALID_NODE_TYPE, - "Expected a scalar, found %s\n", + "In line %zu: Expected a scalar, found %s\n", + tree.node->start_mark.line + 1, nodetype[tree.node->type]), err0); } @@ -340,13 +349,15 @@ PC_status_t PC_bool( const PC_tree_t tree, int *res ) // check type if ( !tree.node ) { PC_handle_err(PC_make_err(PC_INVALID_NODE_TYPE, - "Expected node, found empty tree\n" - ), err0); + "In line %zu: Expected node, found empty tree\n", + tree.node->start_mark.line + 1), err0); } if ( tree.node->type != YAML_SCALAR_NODE ) { PC_handle_err(PC_make_err(PC_INVALID_NODE_TYPE, - "Expected a scalar, found %s\n", nodetype[tree.node->type]), err0); + "In line %zu: Expected a scalar, found %s\n", + tree.node->start_mark.line + 1, + nodetype[tree.node->type]), err0); } char *value = (char*)tree.node->data.scalar.value; @@ -371,7 +382,9 @@ PC_status_t PC_bool( const PC_tree_t tree, int *res ) *res = 0; } else { char *content = NULL; PC_handle_err(PC_string(tree, &content), err0); - status = PC_make_err(PC_INVALID_PARAMETER, "Expected logical expression, found `%s'\n", content); + status = PC_make_err(PC_INVALID_PARAMETER, "In line %zu: Expected logical expression, found `%s'\n", + tree.node->start_mark.line + 1, + content); free(content); PC_handle_err(status, err0); } diff --git a/paraconf/src/ypath.c b/paraconf/src/ypath.c index b9c9268..4e4a3d8 100644 --- a/paraconf/src/ypath.c +++ b/paraconf/src/ypath.c @@ -49,7 +49,8 @@ static PC_tree_t get_seq_idx( const PC_tree_t tree, const char **req_index, cons // read '[' if ( *index != '[' ) { - PC_handle_err_tree(PC_make_err(PC_INVALID_PARAMETER, "Expected opening square bracket at char #%ld of `%.*s'\n", + PC_handle_err_tree(PC_make_err(PC_INVALID_PARAMETER, "In line %zu: Expected opening square bracket at char #%ld of `%.*s'\n", + tree.node->start_mark.line + 1, (long int)(index-full_index), full_index), err0); } @@ -60,7 +61,8 @@ static PC_tree_t get_seq_idx( const PC_tree_t tree, const char **req_index, cons long seq_idx = strtol(index, &post_index, 0); if ( post_index == index ) { PC_handle_err_tree(PC_make_err(PC_INVALID_PARAMETER, - "Expected integer at char #%ld of `%.*s'\n", + "In line %zu: Expected integer at char #%ld of `%.*s'\n", + tree.node->start_mark.line + 1, (long int)(index-full_index), full_index), err0); } @@ -69,7 +71,8 @@ static PC_tree_t get_seq_idx( const PC_tree_t tree, const char **req_index, cons // read ']' if ( *index != ']' ) { PC_handle_err_tree(PC_make_err(PC_INVALID_PARAMETER, - "Expected closing square bracket at char #%ld of `%.*s'\n", + "In line %zu: Expected closing square bracket at char #%ld of `%.*s'\n", + tree.node->start_mark.line + 1, (long int)(index-full_index), full_index), err0); } @@ -78,7 +81,8 @@ static PC_tree_t get_seq_idx( const PC_tree_t tree, const char **req_index, cons // check type if ( tree.node->type != YAML_SEQUENCE_NODE ) { PC_handle_err_tree(PC_make_err(PC_INVALID_NODE_TYPE, - "Expected sequence, found %s (ROOT)%.*s\n", + "In line %zu: Expected sequence, found %s (ROOT)%.*s\n", + tree.node->start_mark.line + 1, nodetype[tree.node->type], (int)(*req_index-full_index), full_index), err0); @@ -87,7 +91,8 @@ static PC_tree_t get_seq_idx( const PC_tree_t tree, const char **req_index, cons // handle index if ( seq_idx < 0 || seq_idx >= (tree.node->data.sequence.items.top - tree.node->data.sequence.items.start) ) { PC_handle_err_tree(PC_make_err(PC_NODE_NOT_FOUND, - "Index %ld out of range [0...%ld[ in (ROOT)%.*s\n", + "In line %zu: Index %ld out of range [0...%ld] in (ROOT)%.*s\n", + tree.node->start_mark.line + 1, seq_idx, (long)(tree.node->data.sequence.items.top - tree.node->data.sequence.items.start), (int)(*req_index-full_index), @@ -112,7 +117,8 @@ static PC_tree_t get_map_key_val( const PC_tree_t tree, const char **req_index, // read '.' if ( *index != '.' ) { - PC_handle_err_tree(PC_make_err(PC_INVALID_PARAMETER, "Expected dot at char #%ld of `%.*s'\n", + PC_handle_err_tree(PC_make_err(PC_INVALID_PARAMETER, "In line %zu: Expected dot at char #%ld of `%.*s'\n", + tree.node->start_mark.line + 1, (long int)(index-full_index), full_index), err0); } @@ -126,7 +132,8 @@ static PC_tree_t get_map_key_val( const PC_tree_t tree, const char **req_index, // check type if ( tree.node->type != YAML_MAPPING_NODE ) { - PC_handle_err_tree(PC_make_err(PC_INVALID_NODE_TYPE, "Expected mapping, found %s (ROOT)%.*s\n", + PC_handle_err_tree(PC_make_err(PC_INVALID_NODE_TYPE, "In line %zu: Expected mapping, found %s (ROOT)%.*s\n", + tree.node->start_mark.line + 1, nodetype[tree.node->type], (int)(*req_index-full_index), full_index), err0); @@ -145,7 +152,8 @@ static PC_tree_t get_map_key_val( const PC_tree_t tree, const char **req_index, if ( !cmp ) break; } if ( pair == tree.node->data.mapping.pairs.top ) { - PC_handle_err_tree(PC_make_err(PC_NODE_NOT_FOUND, "Key `%.*s' not found in (ROOT)%.*s\n", + PC_handle_err_tree(PC_make_err(PC_NODE_NOT_FOUND, "In line %zu: Key `%.*s' not found in (ROOT)%.*s\n", + tree.node->start_mark.line + 1, key_len, key, (int)(*req_index-full_index), @@ -172,7 +180,8 @@ static PC_status_t get_map_idx_pair( const PC_tree_t tree, const char **req_inde char *post_index; long map_idx = strtol(index, &post_index, 0); if ( post_index == index ) { - PC_handle_err(PC_make_err(PC_INVALID_PARAMETER, "Expected integer at char #%ld of `%.*s'\n", + PC_handle_err(PC_make_err(PC_INVALID_PARAMETER, "In line %zu: Expected integer at char #%ld of `%.*s'\n", + tree.node->start_mark.line + 1, (long int)(index-full_index), full_index), err0); } @@ -180,7 +189,8 @@ static PC_status_t get_map_idx_pair( const PC_tree_t tree, const char **req_inde // check type if ( tree.node->type != YAML_MAPPING_NODE ) { - PC_handle_err(PC_make_err(PC_INVALID_NODE_TYPE, "Expected mapping, found %s (ROOT)%.*s\n", + PC_handle_err(PC_make_err(PC_INVALID_NODE_TYPE, "In line %zu: Expected mapping, found %s (ROOT)%.*s\n", + tree.node->start_mark.line + 1, nodetype[tree.node->type], (int)(*req_index-full_index), full_index), err0); @@ -188,7 +198,8 @@ static PC_status_t get_map_idx_pair( const PC_tree_t tree, const char **req_inde // handle index if ( map_idx < 0 || map_idx >= (tree.node->data.mapping.pairs.top - tree.node->data.mapping.pairs.start) ) { - PC_handle_err(PC_make_err(PC_NODE_NOT_FOUND, "Index %ld out of range [0...%ld] in (ROOT)%.*s\n", + PC_handle_err(PC_make_err(PC_NODE_NOT_FOUND, "In line %zu: Index %ld out of range [0...%ld] in (ROOT)%.*s\n", + tree.node->start_mark.line + 1, map_idx, (long)(tree.node->data.mapping.pairs.top - tree.node->data.mapping.pairs.start), (int)(*req_index-full_index-1), @@ -214,7 +225,8 @@ static PC_tree_t get_map_idx_key( const PC_tree_t tree, const char **req_index, // read '{' if ( *index != '{' ) { PC_handle_err_tree(PC_make_err(PC_INVALID_PARAMETER, - "Expected opening curly bracket at char #%ld of `%.*s'\n", + "In line %zu: Expected opening curly bracket at char #%ld of `%.*s'\n", + tree.node->start_mark.line + 1, (long int)(index-full_index), full_index), err0); } @@ -227,7 +239,8 @@ static PC_tree_t get_map_idx_key( const PC_tree_t tree, const char **req_index, // read '}' if ( *index != '}' ) { PC_handle_err_tree(PC_make_err(PC_INVALID_PARAMETER, - "Expected closing curly bracket at char #%ld of `%.*s'\n", + "In line %zu: Expected closing curly bracket at char #%ld of `%.*s'\n", + tree.node->start_mark.line + 1, (long int)(index-full_index), full_index), err0); } @@ -254,7 +267,8 @@ static PC_tree_t get_map_idx_val( const PC_tree_t tree, const char **req_index, // read '<' if ( *index != '<' ) { PC_handle_err_tree(PC_make_err(PC_INVALID_PARAMETER, - "Expected opening angle bracket at char #%ld of `%.*s'\n", + "In line %zu: Expected opening angle bracket at char #%ld of `%.*s'\n", + tree.node->start_mark.line + 1, (long int)(index-full_index), full_index), err0); } @@ -267,7 +281,8 @@ static PC_tree_t get_map_idx_val( const PC_tree_t tree, const char **req_index, // read '>' if ( *index != '>' ) { PC_handle_err_tree(PC_make_err(PC_INVALID_PARAMETER, - "Expected closing angle bracket at char #%ld of `%.*s'\n", + "In line %zu: Expected closing angle bracket at char #%ld of `%.*s'\n", + tree.node->start_mark.line + 1, (long int)(index-full_index), full_index), err0); } @@ -292,7 +307,8 @@ PC_tree_t PC_sget( const PC_tree_t tree, const char *index ) // check type if ( *index && !tree.node ) { PC_handle_err_tree(PC_make_err(PC_INVALID_NODE_TYPE, - "Expected node, found empty tree\n" + "In line %zu: Expected node, found empty tree\n", + tree.node->start_mark.line + 1 ), err0); } @@ -316,7 +332,8 @@ PC_tree_t PC_sget( const PC_tree_t tree, const char *index ) assert(restree.node); goto err0; default: - PC_handle_err_tree(PC_make_err(PC_INVALID_PARAMETER, "Invalid character at char #%ld of `%.*s'\n", + PC_handle_err_tree(PC_make_err(PC_INVALID_PARAMETER, "In line %zu: Invalid character at char #%ld of `%.*s'\n", + tree.node->start_mark.line + 1, (long int)(index-full_index), full_index), err0); }