1 #ifndef DOVEADM_PRINT_H
2 #define DOVEADM_PRINT_H
3 
4 #define DOVEADM_PRINT_TYPE_TAB "tab"
5 #define DOVEADM_PRINT_TYPE_FLOW "flow"
6 #define DOVEADM_PRINT_TYPE_PAGER "pager"
7 #define DOVEADM_PRINT_TYPE_TABLE "table"
8 #define DOVEADM_PRINT_TYPE_SERVER "server"
9 #define DOVEADM_PRINT_TYPE_JSON "json"
10 #define DOVEADM_PRINT_TYPE_FORMATTED "formatted"
11 
12 enum doveadm_print_header_flags {
13 	DOVEADM_PRINT_HEADER_FLAG_RIGHT_JUSTIFY 	= 0x01,
14 	DOVEADM_PRINT_HEADER_FLAG_STICKY	 	= 0x02,
15 	DOVEADM_PRINT_HEADER_FLAG_HIDE_TITLE	 	= 0x04,
16 	DOVEADM_PRINT_HEADER_FLAG_EXPAND	 	= 0x08,
17 	DOVEADM_PRINT_HEADER_FLAG_NUMBER		= 0x10
18 };
19 
20 extern const struct doveadm_print_vfuncs *doveadm_print_vfuncs_all[];
21 extern bool doveadm_print_hide_titles;
22 /* points to either stdout or to doveadm-server's TCP connection */
23 extern struct ostream *doveadm_print_ostream;
24 
25 bool doveadm_print_is_initialized(void);
26 
27 void doveadm_print_header(const char *key, const char *title,
28 			  enum doveadm_print_header_flags flags);
29 void doveadm_print_header_simple(const char *key_title);
30 unsigned int doveadm_print_get_headers_count(void);
31 
32 void doveadm_print(const char *value);
33 void doveadm_print_num(uintmax_t value);
34 /* Stream for same field continues until len=0 */
35 void doveadm_print_stream(const void *value, size_t size);
36 /* Print the whole input stream. Returns 0 if ok, -1 if stream read() failed.
37    The caller must log the error. */
38 int doveadm_print_istream(struct istream *input);
39 void doveadm_print_sticky(const char *key, const char *value);
40 void doveadm_print_flush(void);
41 void doveadm_print_unstick_headers(void);
42 
43 void doveadm_print_init(const char *name);
44 void doveadm_print_deinit(void);
45 
46 void doveadm_print_formatted_set_format(const char *format);
47 
48 #endif
49