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