annotate extern/libmustach/mustach.h @ 75:b12491ceabfd

pasterd: begin of custom theme
author David Demelier <markand@malikania.fr>
date Wed, 15 Mar 2023 20:15:00 +0100
parents 67b3d13a5035
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
74
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
1 /*
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
2 Author: José Bollo <jobol@nonadev.net>
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
3
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
4 https://gitlab.com/jobol/mustach
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
5
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
6 SPDX-License-Identifier: ISC
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
7 */
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
8
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
9 #ifndef _mustach_h_included_
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
10 #define _mustach_h_included_
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
11
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
12 struct mustach_sbuf; /* see below */
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
13
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
14 /**
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
15 * Current version of mustach and its derivates
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
16 */
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
17 #define MUSTACH_VERSION 102
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
18 #define MUSTACH_VERSION_MAJOR (MUSTACH_VERSION / 100)
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
19 #define MUSTACH_VERSION_MINOR (MUSTACH_VERSION % 100)
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
20
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
21 /**
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
22 * Maximum nested imbrications supported
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
23 */
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
24 #define MUSTACH_MAX_DEPTH 256
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
25
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
26 /**
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
27 * Maximum length of tags in mustaches {{...}}
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
28 */
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
29 #define MUSTACH_MAX_LENGTH 4096
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
30
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
31 /**
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
32 * Maximum length of delimitors (2 normally but extended here)
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
33 */
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
34 #define MUSTACH_MAX_DELIM_LENGTH 8
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
35
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
36 /**
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
37 * Flags specific to mustach core
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
38 */
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
39 #define Mustach_With_NoExtensions 0
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
40 #define Mustach_With_Colon 1
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
41 #define Mustach_With_EmptyTag 2
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
42 #define Mustach_With_AllExtensions 3
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
43
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
44 /*
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
45 * Definition of error codes returned by mustach
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
46 */
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
47 #define MUSTACH_OK 0
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
48 #define MUSTACH_ERROR_SYSTEM -1
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
49 #define MUSTACH_ERROR_UNEXPECTED_END -2
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
50 #define MUSTACH_ERROR_EMPTY_TAG -3
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
51 #define MUSTACH_ERROR_TAG_TOO_LONG -4
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
52 #define MUSTACH_ERROR_BAD_SEPARATORS -5
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
53 #define MUSTACH_ERROR_TOO_DEEP -6
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
54 #define MUSTACH_ERROR_CLOSING -7
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
55 #define MUSTACH_ERROR_BAD_UNESCAPE_TAG -8
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
56 #define MUSTACH_ERROR_INVALID_ITF -9
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
57 #define MUSTACH_ERROR_ITEM_NOT_FOUND -10
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
58 #define MUSTACH_ERROR_PARTIAL_NOT_FOUND -11
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
59 #define MUSTACH_ERROR_UNDEFINED_TAG -12
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
60
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
61 /*
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
62 * You can use definition below for user specific error
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
63 *
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
64 * The macro MUSTACH_ERROR_USER is involutive so for any value
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
65 * value = MUSTACH_ERROR_USER(MUSTACH_ERROR_USER(value))
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
66 */
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
67 #define MUSTACH_ERROR_USER_BASE -100
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
68 #define MUSTACH_ERROR_USER(x) (MUSTACH_ERROR_USER_BASE-(x))
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
69 #define MUSTACH_IS_ERROR_USER(x) (MUSTACH_ERROR_USER(x) >= 0)
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
70
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
71 /**
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
72 * mustach_itf - pure abstract mustach - interface for callbacks
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
73 *
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
74 * The functions enter and next should return 0 or 1.
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
75 *
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
76 * All other functions should normally return MUSTACH_OK (zero).
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
77 *
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
78 * If any function returns a negative value, it means an error that
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
79 * stop the processing and that is reported to the caller. Mustach
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
80 * also has its own error codes. Using the macros MUSTACH_ERROR_USER
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
81 * and MUSTACH_IS_ERROR_USER could help to avoid clashes.
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
82 *
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
83 * @start: If defined (can be NULL), starts the mustach processing
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
84 * of the closure, called at the very beginning before any
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
85 * mustach processing occurs.
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
86 *
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
87 * @put: If defined (can be NULL), writes the value of 'name'
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
88 * to 'file' with 'escape' or not.
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
89 * As an extension (see NO_ALLOW_EMPTY_TAG), the 'name' can be
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
90 * the empty string. In that later case an implementation can
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
91 * return MUSTACH_ERROR_EMPTY_TAG to refuse empty names.
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
92 * If NULL and 'get' NULL the error MUSTACH_ERROR_INVALID_ITF
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
93 * is returned.
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
94 *
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
95 * @enter: Enters the section of 'name' if possible.
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
96 * Musts return 1 if entered or 0 if not entered.
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
97 * When 1 is returned, the function 'leave' will always be called.
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
98 * Conversely 'leave' is never called when enter returns 0 or
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
99 * a negative value.
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
100 * When 1 is returned, the function must activate the first
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
101 * item of the section.
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
102 *
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
103 * @next: Activates the next item of the section if it exists.
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
104 * Musts return 1 when the next item is activated.
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
105 * Musts return 0 when there is no item to activate.
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
106 *
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
107 * @leave: Leaves the last entered section
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
108 *
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
109 * @partial: If defined (can be NULL), returns in 'sbuf' the content of the
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
110 * partial of 'name'. @see mustach_sbuf
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
111 * If NULL but 'get' not NULL, 'get' is used instead of partial.
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
112 * If NULL and 'get' NULL and 'put' not NULL, 'put' is called with
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
113 * a true FILE.
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
114 *
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
115 * @emit: If defined (can be NULL), writes the 'buffer' of 'size' with 'escape'.
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
116 * If NULL the standard function 'fwrite' is used with a true FILE.
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
117 * If not NULL that function is called instead of 'fwrite' to output
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
118 * text.
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
119 * It implies that if you define either 'partial' or 'get' callback,
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
120 * the meaning of 'FILE *file' is abstract for mustach's process and
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
121 * then you can use 'FILE*file' pass any kind of pointer (including NULL)
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
122 * to the function 'fmustach'. An example of a such behaviour is given by
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
123 * the implementation of 'mustach_json_c_write'.
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
124 *
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
125 * @get: If defined (can be NULL), returns in 'sbuf' the value of 'name'.
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
126 * As an extension (see NO_ALLOW_EMPTY_TAG), the 'name' can be
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
127 * the empty string. In that later case an implementation can
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
128 * return MUSTACH_ERROR_EMPTY_TAG to refuse empty names.
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
129 * If 'get' is NULL and 'put' NULL the error MUSTACH_ERROR_INVALID_ITF
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
130 * is returned.
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
131 *
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
132 * @stop: If defined (can be NULL), stops the mustach processing
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
133 * of the closure, called at the very end after all mustach
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
134 * processing occurered. The status returned by the processing
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
135 * is passed to the stop.
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
136 *
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
137 * The array below summarize status of callbacks:
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
138 *
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
139 * FULLY OPTIONAL: start partial
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
140 * MANDATORY: enter next leave
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
141 * COMBINATORIAL: put emit get
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
142 *
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
143 * Not definig a MANDATORY callback returns error MUSTACH_ERROR_INVALID_ITF.
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
144 *
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
145 * For COMBINATORIAL callbacks the array below summarize possible combinations:
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
146 *
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
147 * combination : put : emit : get : abstract FILE
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
148 * -------------+---------+---------+---------+-----------------------
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
149 * HISTORIC : defined : NULL : NULL : NO: standard FILE
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
150 * MINIMAL : NULL : NULL : defined : NO: standard FILE
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
151 * CUSTOM : NULL : defined : defined : YES: abstract FILE
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
152 * DUCK : defined : NULL : defined : NO: standard FILE
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
153 * DANGEROUS : defined : defined : any : YES or NO, depends on 'partial'
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
154 * INVALID : NULL : any : NULL : -
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
155 *
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
156 * The DUCK case runs on one leg. 'get' is not used if 'partial' is defined
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
157 * but is used for 'partial' if 'partial' is NULL. Thus for clarity, do not use
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
158 * it that way but define 'partial' and let 'get' be NULL.
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
159 *
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
160 * The DANGEROUS case is special: it allows abstract FILE if 'partial' is defined
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
161 * but forbids abstract FILE when 'partial' is NULL.
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
162 *
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
163 * The INVALID case returns error MUSTACH_ERROR_INVALID_ITF.
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
164 */
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
165 struct mustach_itf {
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
166 int (*start)(void *closure);
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
167 int (*put)(void *closure, const char *name, int escape, FILE *file);
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
168 int (*enter)(void *closure, const char *name);
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
169 int (*next)(void *closure);
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
170 int (*leave)(void *closure);
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
171 int (*partial)(void *closure, const char *name, struct mustach_sbuf *sbuf);
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
172 int (*emit)(void *closure, const char *buffer, size_t size, int escape, FILE *file);
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
173 int (*get)(void *closure, const char *name, struct mustach_sbuf *sbuf);
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
174 void (*stop)(void *closure, int status);
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
175 };
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
176
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
177 /**
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
178 * mustach_sbuf - Interface for handling zero terminated strings
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
179 *
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
180 * That structure is used for returning zero terminated strings -in 'value'-
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
181 * to mustach. The callee can provide a function for releasing the returned
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
182 * 'value'. Three methods for releasing the string are possible.
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
183 *
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
184 * 1. no release: set either 'freecb' or 'releasecb' with NULL (done by default)
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
185 * 2. release without closure: set 'freecb' to its expected value
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
186 * 3. release with closure: set 'releasecb' and 'closure' to their expected values
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
187 *
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
188 * @value: The value of the string. That value is not changed by mustach -const-.
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
189 *
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
190 * @freecb: The function to call for freeing the value without closure.
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
191 * For convenience, signature of that callback is compatible with 'free'.
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
192 * Can be NULL.
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
193 *
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
194 * @releasecb: The function to release with closure.
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
195 * Can be NULL.
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
196 *
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
197 * @closure: The closure to use for 'releasecb'.
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
198 *
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
199 * @length: Length of the value or zero if unknown and value null terminated.
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
200 * To return the empty string, let it to zero and let value to NULL.
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
201 */
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
202 struct mustach_sbuf {
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
203 const char *value;
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
204 union {
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
205 void (*freecb)(void*);
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
206 void (*releasecb)(const char *value, void *closure);
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
207 };
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
208 void *closure;
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
209 size_t length;
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
210 };
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
211
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
212 /**
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
213 * mustach_file - Renders the mustache 'template' in 'file' for 'itf' and 'closure'.
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
214 *
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
215 * @template: the template string to instantiate
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
216 * @length: length of the template or zero if unknown and template null terminated
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
217 * @itf: the interface to the functions that mustach calls
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
218 * @closure: the closure to pass to functions called
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
219 * @file: the file where to write the result
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
220 *
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
221 * Returns 0 in case of success, -1 with errno set in case of system error
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
222 * a other negative value in case of error.
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
223 */
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
224 extern int mustach_file(const char *template, size_t length, const struct mustach_itf *itf, void *closure, int flags, FILE *file);
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
225
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
226 /**
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
227 * mustach_fd - Renders the mustache 'template' in 'fd' for 'itf' and 'closure'.
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
228 *
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
229 * @template: the template string to instantiate
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
230 * @length: length of the template or zero if unknown and template null terminated
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
231 * @itf: the interface to the functions that mustach calls
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
232 * @closure: the closure to pass to functions called
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
233 * @fd: the file descriptor number where to write the result
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
234 *
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
235 * Returns 0 in case of success, -1 with errno set in case of system error
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
236 * a other negative value in case of error.
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
237 */
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
238 extern int mustach_fd(const char *template, size_t length, const struct mustach_itf *itf, void *closure, int flags, int fd);
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
239
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
240 /**
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
241 * mustach_mem - Renders the mustache 'template' in 'result' for 'itf' and 'closure'.
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
242 *
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
243 * @template: the template string to instantiate
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
244 * @length: length of the template or zero if unknown and template null terminated
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
245 * @itf: the interface to the functions that mustach calls
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
246 * @closure: the closure to pass to functions called
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
247 * @result: the pointer receiving the result when 0 is returned
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
248 * @size: the size of the returned result
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
249 *
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
250 * Returns 0 in case of success, -1 with errno set in case of system error
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
251 * a other negative value in case of error.
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
252 */
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
253 extern int mustach_mem(const char *template, size_t length, const struct mustach_itf *itf, void *closure, int flags, char **result, size_t *size);
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
254
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
255 /***************************************************************************
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
256 * compatibility with version before 1.0
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
257 */
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
258 #ifdef __GNUC__
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
259 #define DEPRECATED_MUSTACH(func) func __attribute__ ((deprecated))
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
260 #elif defined(_MSC_VER)
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
261 #define DEPRECATED_MUSTACH(func) __declspec(deprecated) func
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
262 #elif !defined(DEPRECATED_MUSTACH)
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
263 #pragma message("WARNING: You need to implement DEPRECATED_MUSTACH for this compiler")
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
264 #define DEPRECATED_MUSTACH(func) func
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
265 #endif
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
266 /**
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
267 * OBSOLETE use mustach_file
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
268 *
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
269 * fmustach - Renders the mustache 'template' in 'file' for 'itf' and 'closure'.
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
270 *
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
271 * @template: the template string to instantiate, null terminated
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
272 * @itf: the interface to the functions that mustach calls
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
273 * @closure: the closure to pass to functions called
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
274 * @file: the file where to write the result
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
275 *
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
276 * Returns 0 in case of success, -1 with errno set in case of system error
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
277 * a other negative value in case of error.
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
278 */
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
279 DEPRECATED_MUSTACH(extern int fmustach(const char *template, const struct mustach_itf *itf, void *closure, FILE *file));
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
280
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
281 /**
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
282 * OBSOLETE use mustach_fd
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
283 *
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
284 * fdmustach - Renders the mustache 'template' in 'fd' for 'itf' and 'closure'.
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
285 *
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
286 * @template: the template string to instantiate, null terminated
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
287 * @itf: the interface to the functions that mustach calls
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
288 * @closure: the closure to pass to functions called
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
289 * @fd: the file descriptor number where to write the result
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
290 *
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
291 * Returns 0 in case of success, -1 with errno set in case of system error
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
292 * a other negative value in case of error.
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
293 */
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
294 DEPRECATED_MUSTACH(extern int fdmustach(const char *template, const struct mustach_itf *itf, void *closure, int fd));
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
295
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
296 /**
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
297 * OBSOLETE use mustach_mem
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
298 *
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
299 * mustach - Renders the mustache 'template' in 'result' for 'itf' and 'closure'.
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
300 *
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
301 * @template: the template string to instantiate, null terminated
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
302 * @itf: the interface to the functions that mustach calls
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
303 * @closure: the closure to pass to functions called
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
304 * @result: the pointer receiving the result when 0 is returned
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
305 * @size: the size of the returned result
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
306 *
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
307 * Returns 0 in case of success, -1 with errno set in case of system error
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
308 * a other negative value in case of error.
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
309 */
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
310 DEPRECATED_MUSTACH(extern int mustach(const char *template, const struct mustach_itf *itf, void *closure, char **result, size_t *size));
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
311
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
312 #endif
67b3d13a5035 pasterd: make own HTML code for good
David Demelier <markand@malikania.fr>
parents:
diff changeset
313