2 ** OSSP var - Variable Expansion
3 ** Copyright (c) 2001-2002 Ralf S. Engelschall <rse@engelschall.com>
4 ** Copyright (c) 2001-2002 The OSSP Project (http://www.ossp.org/)
5 ** Copyright (c) 2001-2002 Cable & Wireless Deutschland (http://www.cw.com/de/)
7 ** This file is part of OSSP var, a variable expansion
8 ** library which can be found at http://www.ossp.org/pkg/lib/var/.
10 ** Permission to use, copy, modify, and distribute this software for
11 ** any purpose with or without fee is hereby granted, provided that
12 ** the above copyright notice and this permission notice appear in all
15 ** For disclaimer see below.
18 * Modified for use with Bacula by Kern Sibbald, June 2003
21 Copyright (C) 2003-2006 Kern Sibbald
23 This program is free software; you can redistribute it and/or
24 modify it under the terms of the GNU General Public License
25 version 2 as amended with additional clauses defined in the
26 file LICENSE in the main source directory.
28 This program is distributed in the hope that it will be useful,
29 but WITHOUT ANY WARRANTY; without even the implied warranty of
30 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
31 the file LICENSE for additional details.
42 VAR_ERR_CALLBACK = -64,
43 VAR_ERR_FORMATTING_FAILURE = -45,
44 VAR_ERR_UNDEFINED_OPERATION = -44,
45 VAR_ERR_MALFORMED_OPERATION_ARGUMENTS = -43,
46 VAR_ERR_INVALID_CHAR_IN_LOOP_LIMITS = -42,
47 VAR_ERR_UNTERMINATED_LOOP_CONSTRUCT = -41,
48 VAR_ERR_DIVISION_BY_ZERO_IN_INDEX = -40,
49 VAR_ERR_UNCLOSED_BRACKET_IN_INDEX = -39,
50 VAR_ERR_INCOMPLETE_INDEX_SPEC = -37,
51 VAR_ERR_INVALID_CHAR_IN_INDEX_SPEC = -36,
52 VAR_ERR_ARRAY_LOOKUPS_ARE_UNSUPPORTED = -35,
53 VAR_ERR_INCOMPLETE_QUOTED_PAIR = -34,
54 VAR_ERR_INVALID_ARGUMENT = -34,
55 VAR_ERR_SUBMATCH_OUT_OF_RANGE = -33,
56 VAR_ERR_UNKNOWN_QUOTED_PAIR_IN_REPLACE = -32,
57 VAR_ERR_EMPTY_PADDING_FILL_STRING = -31,
58 VAR_ERR_MISSING_PADDING_WIDTH = -30,
59 VAR_ERR_MALFORMATTED_PADDING = -29,
60 VAR_ERR_INCORRECT_TRANSPOSE_CLASS_SPEC = -28,
61 VAR_ERR_EMPTY_TRANSPOSE_CLASS = -27,
62 VAR_ERR_TRANSPOSE_CLASSES_MISMATCH = -26,
63 VAR_ERR_MALFORMATTED_TRANSPOSE = -25,
64 VAR_ERR_OFFSET_LOGIC = -24,
65 VAR_ERR_OFFSET_OUT_OF_BOUNDS = -23,
66 VAR_ERR_RANGE_OUT_OF_BOUNDS = -22,
67 VAR_ERR_INVALID_OFFSET_DELIMITER = -21,
68 VAR_ERR_MISSING_START_OFFSET = -20,
69 VAR_ERR_EMPTY_SEARCH_STRING = -19,
70 VAR_ERR_MISSING_PARAMETER_IN_COMMAND = -18,
71 VAR_ERR_INVALID_REGEX_IN_REPLACE = -17,
72 VAR_ERR_UNKNOWN_REPLACE_FLAG = -16,
73 VAR_ERR_MALFORMATTED_REPLACE = -15,
74 VAR_ERR_UNKNOWN_COMMAND_CHAR = -14,
75 VAR_ERR_INPUT_ISNT_TEXT_NOR_VARIABLE = -13,
76 VAR_ERR_UNDEFINED_VARIABLE = -12,
77 VAR_ERR_INCOMPLETE_VARIABLE_SPEC = -11,
78 VAR_ERR_OUT_OF_MEMORY = -10,
79 VAR_ERR_INVALID_CONFIGURATION = -9,
80 VAR_ERR_INCORRECT_CLASS_SPEC = -8,
81 VAR_ERR_INCOMPLETE_GROUPED_HEX = -7,
82 VAR_ERR_INCOMPLETE_OCTAL = -6,
83 VAR_ERR_INVALID_OCTAL = -5,
84 VAR_ERR_OCTAL_TOO_LARGE = -4,
85 VAR_ERR_INVALID_HEX = -3,
86 VAR_ERR_INCOMPLETE_HEX = -2,
87 VAR_ERR_INCOMPLETE_NAMED_CHARACTER = -1,
92 typedef struct var_st var_t;
97 VAR_CONFIG_CB_OPERATION
101 char escape; /* default: '\' */
102 char delim_init; /* default: '$' */
103 char delim_open; /* default: '{' */
104 char delim_close; /* default: '}' */
105 char index_open; /* default: '[' */
106 char index_close; /* default: ']' */
107 char index_mark; /* default: '#' */
108 const char *name_chars; /* default: "a-zA-Z0-9_" */
111 typedef var_rc_t (*var_cb_value_t)(
112 var_t *var, void *ctx,
113 const char *var_ptr, int var_len, int var_inc, int var_idx,
114 const char **val_ptr, int *val_len, int *val_size
117 typedef var_rc_t (*var_cb_operation_t)(
118 var_t *var, void *ctx,
119 const char *op_ptr, int op_len,
120 const char *arg_ptr, int arg_len,
121 const char *val_ptr, int val_len,
122 const char **out_ptr, int *out_len, int *out_size
126 var_rc_t var_create (var_t **var);
127 var_rc_t var_destroy (var_t *var);
128 var_rc_t var_config (var_t *var, var_config_t mode, ...);
129 var_rc_t var_unescape (var_t *var, const char *src_ptr, int src_len, char *dst_ptr, int dst_len, int all);
130 var_rc_t var_expand (var_t *var, const char *src_ptr, int src_len, char **dst_ptr, int *dst_len, int force_expand);
131 var_rc_t var_formatv (var_t *var, char **dst_ptr, int force_expand, const char *fmt, va_list ap);
132 var_rc_t var_format (var_t *var, char **dst_ptr, int force_expand, const char *fmt, ...);
133 const char *var_strerror (var_t *var, var_rc_t rc);
135 #endif /* __VAR_H__ */