2 * UCW Library -- String Routines
4 * (c) 2006 Pavel Charvat <pchar@ucw.cz>
5 * (c) 2007--2011 Martin Mares <mj@ucw.cz>
7 * This software may be freely distributed and used according to the terms
8 * of the GNU Lesser General Public License.
17 uns strnlen(const char *str, uns n);
20 char *str_format_flags(char *dest, const char *fmt, uns flags);
21 uns str_count_char(const char *str, uns chr);
25 char *str_unesc(char *dest, const char *src);
29 int str_sepsplit(char *str, uns sep, char **rec, uns max);
30 int str_wordsplit(char *str, char **rec, uns max);
32 /* str-(i)match.c: Matching of shell patterns */
34 int str_match_pattern(const char *patt, const char *str);
35 int str_match_pattern_nocase(const char *patt, const char *str);
39 void mem_to_hex(char *dest, const byte *src, uns bytes, uns flags);
40 const char *hex_to_mem(byte *dest, const char *src, uns max_bytes, uns flags);
42 // Bottom 8 bits of flags are an optional separator of bytes, the rest is:
43 #define MEM_TO_HEX_UPCASE 0x100
47 int str_has_prefix(char *str, char *prefix); /** Tests if @str starts with @prefix. **/
48 int str_has_suffix(char *str, char *suffix); /** Tests if @str ends with @suffix. **/
51 * Let @str and @prefix be hierarchical names with components separated by
52 * a character @sep. Returns true if @str starts with @prefix, respecting
53 * component boundaries.
55 * For example, when @sep is '/' and @str is "/usr/local/bin", then:
56 * - "/usr/local" is a prefix
57 * - "/usr/local/" is a prefix, too
58 * - "/usr/loc" is not,
59 * - "/usr/local/bin" is a prefix,
60 * - "/usr/local/bin/" is not,
64 int str_hier_prefix(char *str, char *prefix, uns sep);
65 int str_hier_suffix(char *str, char *suffix, uns sep); /** Like @str_hier_prefix(), but for suffixes. **/