source: mainline/uspace/lib/conf/src/text_parse.c@ 102f641

Last change on this file since 102f641 was 102f641, checked in by Matthieu Riolo <matthieu.riolo@…>, 6 years ago

Correcting syntax according to ccheck

  • Property mode set to 100644
File size: 2.6 KB
Line 
1/*
2 * Copyright (c) 2015 Michal Koutny
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 *
9 * - Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * - Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
14 * - The name of the author may not be used to endorse or promote products
15 * derived from this software without specific prior written permission.
16 *
17 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AS IS'' AND ANY EXPRESS OR
18 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 */
28
29#include "conf/text_parse.h"
30
31#include <assert.h>
32#include <stdlib.h>
33
34/** Constructor of parse structure */
35void text_parse_init(text_parse_t *parse)
36{
37 assert(parse);
38 list_initialize(&parse->errors);
39 parse->has_error = false;
40}
41
42/** Destructor of parse structure
43 *
44 * It must be called before parse structure goes out of scope in order to avoid
45 * memory leaks.
46 */
47void text_parse_deinit(text_parse_t *parse)
48{
49 assert(parse);
50 list_foreach_safe(parse->errors, cur_link, next_link) {
51 list_remove(cur_link);
52 text_parse_error_t *error =
53 list_get_instance(cur_link, text_parse_error_t, link);
54 free(error);
55 }
56}
57
58/** Add an error to parse structure
59 *
60 * @param[in] parse the parse structure
61 * @param[in] lineno line number where error originated (or zero)
62 * @param[in] parse_errno user error code
63 */
64void text_parse_raise_error(text_parse_t *parse, size_t lineno,
65 int parse_errno)
66{
67 assert(parse);
68
69 parse->has_error = true;
70
71 text_parse_error_t *error = malloc(sizeof(text_parse_error_t));
72 /* Silently ignore failed malloc, has_error flag is set anyway */
73 if (!error) {
74 return;
75 }
76 error->lineno = lineno;
77 error->parse_errno = parse_errno;
78 list_append(&error->link, &parse->errors);
79}
Note: See TracBrowser for help on using the repository browser.