search : delimiter in ipsec.secrets entries from the rear
[strongswan.git] / src / libstrongswan / utils / lexparser.h
1 /**
2 * @file lexparser.h
3 *
4 * @brief lexical parser for text-based configuration files
5 *
6 */
7
8 /*
9 * Copyright (C) 2001-2006 Andreas Steffen, Zuercher Hochschule Winterthur
10 *
11 * This program is free software; you can redistribute it and/or modify it
12 * under the terms of the GNU General Public License as published by the
13 * Free Software Foundation; either version 2 of the License, or (at your
14 * option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>.
15 *
16 * This program is distributed in the hope that it will be useful, but
17 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
18 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
19 * for more details.
20 *
21 * RCSID $Id$
22 */
23
24 #include <library.h>
25
26 /**
27 * @brief Eats whitespace
28 */
29 bool eat_whitespace(chunk_t *src);
30
31 /**
32 * @brief Compare null-terminated pattern with chunk
33 */
34 bool match(const char *pattern, const chunk_t *ch);
35
36 /**
37 * @brief Extracts a token ending with the first occurence a given termination symbol
38 */
39 bool extract_token(chunk_t *token, const char termination, chunk_t *src);
40
41 /**
42 * @brief Extracts a token ending with the last occurence a given termination symbol
43 */
44 bool extract_last_token(chunk_t *token, const char termination, chunk_t *src);
45
46 /**
47 * @brief Fetches a new text line terminated by \n or \r\n
48 */
49 bool fetchline(chunk_t *src, chunk_t *line);
50
51 /**
52 * @brief Extracts a value that might be single or double quoted
53 */
54 err_t extract_value(chunk_t *value, chunk_t *line);
55
56 /**
57 * @brief extracts a name: value pair from a text line
58 */
59 err_t extract_name_value(chunk_t *name, chunk_t *value, chunk_t *line);
60
61 /**
62 * @brief extracts a parameter: value from a text line
63 */
64 err_t extract_parameter_value(chunk_t *name, chunk_t *value, chunk_t *line);