1 /* $Id: util_str.h 2417 2007-10-09 22:44:33Z kuhlmann $ */ 2 3 #ifndef CLIMM_UTIL_STR_H 4 #define CLIMM_UTIL_STR_H 5 6 typedef struct str_s str_s; 7 typedef struct strc_s strc_s; 8 typedef struct str_s *str_t; 9 typedef const struct str_s *strc_t; 10 typedef const struct strc_s *strx_t; 11 12 struct str_s 13 { 14 char *txt; 15 UDWORD len; 16 UDWORD max; 17 }; 18 19 struct strc_s 20 { 21 const char *txt; 22 UDWORD len; 23 UDWORD max; 24 }; 25 26 str_t s_init (str_t str, const char *init, size_t add); 27 str_t s_blow (str_t str, size_t len); 28 str_t s_cat (str_t str, const char *add); 29 str_t s_catc (str_t str, char add); 30 str_t s_catn (str_t str, const char *add, size_t len); 31 str_t s_catf (str_t str, const char *fmt, ...) __attribute__ ((format (__printf__, 2, 3))); 32 str_t s_insn (str_t str, size_t pos, const char *ins, size_t len); 33 str_t s_insc (str_t str, size_t pos, char ins); 34 str_t s_delc (str_t str, size_t pos); 35 str_t s_deln (str_t str, size_t pos, size_t len); 36 void s_done (str_t str); 37 38 const char *s_sprintf (const char *fmt, ...) __attribute__ ((format (__printf__, 1, 2))); 39 const char *s_ip (UDWORD ip); 40 const char *s_status (status_t status, UDWORD nativestatus); 41 const char *s_status_short (status_t status); 42 const char *s_time (time_t *stamp); 43 const char *s_strftime (time_t *stamp, const char *fmt, char as_gmt); 44 const char *s_msgtok (char *); 45 46 const char *s_dump (const UBYTE *data, UWORD len); 47 const char *s_dumpnd (const UBYTE *data, UWORD len); 48 const char *s_ind (const char *str); 49 UDWORD s_strlen (const char *str); 50 UDWORD s_strnlen (const char *str, UDWORD len); 51 UDWORD s_offset (const char *str, UDWORD offset); 52 strc_t s_split (const char **str, UBYTE enc, int len); 53 void s_strrepl (str_t str, const char *olds, const char *news); 54 55 const char *s_quote (const char *input); 56 const char *s_cquote (const char *input, const char *color); 57 const char *s_mquote (const char *input, const char *color, BOOL allownl); 58 59 #define s_qquote(i) s_cquote (i, COLQUOTE) 60 #define s_wordquote(i) s_mquote (i, COLQUOTE, 0) 61 #define s_msgquote(i) s_mquote (i, COLQUOTE, 1) 62 63 #define s_repl(old,new) do { char **_p_p_ = old; const char *_q_q_ = new; \ 64 if (*_p_p_) free (*_p_p_); *_p_p_ = NULL; \ 65 if (_q_q_) *_p_p_ = strdup (_q_q_); } while (0) 66 67 #define s_free(old) do { char *_p_p_ = old; if (_p_p_) free (_p_p_); } while (0) 68 #define s_now s_time (NULL) 69 70 #endif /* CLIMM_UTIL_STR_H */ 71