]> wimlib.net Git - wimlib/blob - include/wimlib/textfile.h
d79f8b11b78b954fadc374095fdd0b2f690d9adb
[wimlib] / include / wimlib / textfile.h
1 #ifndef _WIMLIB_TEXTFILE_H_
2 #define _WIMLIB_TEXTFILE_H_
3
4 #include "wimlib/types.h"
5
6 struct string_list {
7         tchar **strings;
8         size_t num_strings;
9         size_t num_alloc_strings;
10 };
11
12 #define STRING_LIST_INITIALIZER \
13         { .strings = NULL, .num_strings = 0, .num_alloc_strings = 0, }
14
15 #define STRING_LIST(_strings) \
16         struct string_list _strings = STRING_LIST_INITIALIZER
17
18 typedef int (*line_mangle_t)(tchar *line, const tchar *filename,
19                              unsigned long line_no);
20
21 struct text_file_section {
22         const tchar *name;
23         struct string_list *strings;
24 };
25
26 #define LOAD_TEXT_FILE_REMOVE_QUOTES 0x00000001
27 #define LOAD_TEXT_FILE_NO_WARNINGS   0x00000002
28 #define LOAD_TEXT_FILE_ALLOW_STDIN   0x00000004
29
30 extern int
31 load_text_file(const tchar *path, const void *buf, size_t bufsize,
32                void **mem_ret,
33                const struct text_file_section *pos_sections,
34                int num_pos_sections,
35                int flags, line_mangle_t mangle_line);
36
37 #endif /* _WIMLIB_TEXTFILE_H_ */