bglibs
Data Structures | Macros | Typedefs
str: Dynamically allocated string library.

Data Structures

struct  str
 
struct  str_sortentry
 

Macros

#define STR_BLOCKSIZE   16
 

Typedefs

typedef struct str str
 
typedef struct str_sortentry str_sortentry
 

Globals

const char str_lcase_digits [36] __DEPRECATED__
 
const char str_ucase_digits [36] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
 

Overhead Functions

int str_init (str *s)
 
int str_alloc (str *s, unsigned size, int copy)
 
void str_free (str *s)
 
int str_truncate (str *s, unsigned len)
 
#define str_ready(S, SZ)   str_alloc(S,SZ,0)
 
#define str_realloc(S, SZ)   str_alloc(S,SZ,1)
 

Assignment Functions

int str_copy (str *s, const str *in)
 
int str_copys (str *s, const char *in)
 
int str_copyb (str *s, const char *in, unsigned len)
 
int str_copyf (str *s, const char *format,...)
 
int str_copyfv (str *s, const char *format, va_list ap)
 
int str_copyns (str *s, unsigned int count,...)
 
int str_copy2s (str *s, const char *a, const char *b)
 
int str_copy3s (str *s, const char *a, const char *b, const char *c)
 
int str_copy4s (str *s, const char *a, const char *b, const char *c, const char *d)
 
int str_copy5s (str *s, const char *a, const char *b, const char *c, const char *d, const char *e)
 
int str_copy6s (str *s, const char *a, const char *b, const char *c, const char *d, const char *e, const char *f)
 

Appending Functions

int str_cat (str *s, const str *in)
 
int str_cats (str *s, const char *in)
 
int str_catc (str *s, char in)
 
int str_catb (str *s, const char *in, unsigned len)
 
int str_catf (str *s, const char *format,...)
 
int str_catfv (str *s, const char *format, va_list ap)
 
int str_cati (str *s, long in)
 
int str_catiw (str *s, long in, unsigned width, char pad)
 
int str_catu (str *s, unsigned long in)
 
int str_catuw (str *s, unsigned long in, unsigned width, char pad)
 
int str_catx (str *s, unsigned long in)
 
int str_catxw (str *s, unsigned long in, unsigned width, char pad)
 
int str_catill (str *s, long long in)
 
int str_catiwll (str *s, long long in, unsigned width, char pad)
 
int str_catull (str *s, unsigned long long in)
 
int str_catuwll (str *s, unsigned long long in, unsigned width, char pad)
 
int str_catxll (str *s, unsigned long long in)
 
int str_catxwll (str *s, unsigned long long in, unsigned width, char pad)
 
int str_catsnumw (str *s, long in, unsigned width, char pad, unsigned base, const char *digits)
 
int str_catunumw (str *s, unsigned long in, unsigned width, char pad, unsigned base, const char *digits)
 
int str_catsllnumw (str *s, long long in, unsigned width, char pad, unsigned base, const char *digits)
 
int str_catullnumw (str *s, unsigned long long in, unsigned width, char pad, unsigned base, const char *digits)
 
int str_catns (str *s, unsigned int count,...)
 
int str_cat2s (str *s, const char *a, const char *b)
 
int str_cat3s (str *s, const char *a, const char *b, const char *c)
 
int str_cat4s (str *s, const char *a, const char *b, const char *c, const char *d)
 
int str_cat5s (str *s, const char *a, const char *b, const char *c, const char *d, const char *e)
 
int str_cat6s (str *s, const char *a, const char *b, const char *c, const char *d, const char *e, const char *f)
 
int str_join (str *s, char sep, const str *t)
 
int str_joins (str *s, char sep, const char *in)
 
int str_joinb (str *s, char sep, const char *in, unsigned len)
 

In-place Modification Functions

void str_lower (str *s)
 
void str_upper (str *s)
 
long str_subst (str *s, char from, char to)
 
void str_lstrip (str *s)
 
void str_rstrip (str *s)
 
void str_lcut (str *s, unsigned count)
 
void str_rcut (str *s, unsigned count)
 
int str_sort (str *s, char sep, long count, int(*fn)(const str_sortentry *a, const str_sortentry *b))
 
int str_splice (str *s, unsigned start, unsigned len, const str *r)
 
int str_splices (str *s, unsigned start, unsigned len, const char *r)
 
int str_spliceb (str *s, unsigned start, unsigned len, const char *r, unsigned rlen)
 
long str_xlate (str *s, const char *from, const char *to, unsigned nchars)
 
#define str_strip(S)   (str_rstrip(S), str_lstrip(S))
 

Comparison Functions

int str_cmp (const str *a, unsigned aoffset, const str *b, unsigned boffset)
 
int str_cmps (const str *a, unsigned offset, const char *b)
 
int str_cmpb (const str *a, unsigned offset, const char *b, unsigned len)
 
int str_diff (const str *a, const str *b)
 
int str_diffs (const str *a, const char *b)
 
int str_diffb (const str *a, const char *b, unsigned len)
 
int str_start (const str *a, const str *b)
 
int str_starts (const str *a, const char *b)
 
int str_startb (const str *a, const char *b, unsigned len)
 
int str_case_start (const str *a, const str *b)
 
int str_case_starts (const str *a, const char *b)
 
int str_case_startb (const str *a, const char *b, unsigned len)
 
int str_end (const str *a, const str *b)
 
int str_ends (const str *a, const char *b)
 
int str_endb (const str *a, const char *b, unsigned len)
 
int str_case_end (const str *a, const str *b)
 
int str_case_ends (const str *a, const char *b)
 
int str_case_endb (const str *a, const char *b, unsigned len)
 

Searching Functions

void str_buildmap (int map[256], const char *list)
 
unsigned str_count (const str *s, char ch)
 
unsigned str_countof (const str *s, const char *list)
 
int str_findnext (const str *s, char ch, unsigned pos)
 
int str_findnextof (const str *s, const char *list, unsigned pos)
 
int str_findnextnot (const str *s, const char *list, unsigned pos)
 
int str_findprev (const str *s, char ch, unsigned pos)
 
int str_findprevof (const str *s, const char *list, unsigned pos)
 
int str_findprevnot (const str *s, const char *list, unsigned pos)
 
#define str_findfirst(S, C)   str_findnext(S,C,0)
 
#define str_findfirstof(S, L)   str_findnextof(S,L,0)
 
#define str_findfirstnot(S, L)   str_findnextnot(S,L,0)
 
#define str_findlast(S, C)   str_findprev(S,C,-1)
 
#define str_findlastof(S, L)   str_findprevof(S,L,-1)
 
#define str_findlastnot(S, L)   str_findprevof(S,L,-1)
 

Pattern Matching Functions

int str_match (const str *s, const str *pattern)
 
int str_matchb (const str *s, const char *pptr, unsigned plen)
 
int str_matchs (const str *s, const char *pattern)
 
int str_case_match (const str *s, const str *pattern)
 
int str_case_matchb (const str *s, const char *pptr, unsigned plen)
 
int str_case_matchs (const str *s, const char *pattern)
 
int str_glob (const str *s, const str *pattern)
 
int str_globb (const str *s, const char *pptr, unsigned plen)
 
int str_globs (const str *s, const char *pattern)
 
int str_case_glob (const str *s, const str *pattern)
 
int str_case_globb (const str *s, const char *pptr, unsigned plen)
 
int str_case_globs (const str *s, const char *pattern)
 

Detailed Description

Calling Convention
The standard calling convention to str functions is to pass the string being examined or modified as the first argument. For most functions, the return value will be 0 (false) if an error occurred (ie memory allocation failed) and non-zero (true) otherwise.

Macro Definition Documentation

◆ STR_BLOCKSIZE

#define STR_BLOCKSIZE   16

The block size in which string memory is allocated.

STR_BLOCKSIZE should be set to at least the size at which the allocator (ie malloc) will align the data it returns. String data will be allocated in steps of this number. Values smaller than the alignment will only cause a small amount of space to be wasted, and will not trigger bugs.

Referenced by str_alloc(), and str_init().

◆ str_ready

#define str_ready (   S,
  SZ 
)    str_alloc(S,SZ,0)

Make sure string S has at least SZ bytes ready (no copy)

Referenced by ibuf_getnetstring(), str_copy2s(), str_copy3s(), str_copy4s(), str_copy5s(), str_copy6s(), str_copyb(), and str_copyfv().

◆ str_realloc

#define str_realloc (   S,
  SZ 
)    str_alloc(S,SZ,1)

Typedef Documentation

◆ str

typedef struct str str

String structure typedef.

◆ str_sortentry

typedef struct str_sortentry str_sortentry

String sort entry typedef.

Function Documentation

◆ str_alloc()

int str_alloc ( str s,
unsigned  size,
int  copy 
)

Allocate storage for a string.

Parameters
sString to modify.
sizeMinimum number of bytes for which to allocate.
copyIf set, the existing string will be copied into the new string.

The size given is incremented to account for adding a trailing NUL byte (to ensure compatibility with C string functions) and is then rounded up to the nearest STR_BLOCKSIZE interval.

References s, size, and STR_BLOCKSIZE.

Referenced by str_free().

◆ str_buildmap()

void str_buildmap ( int  map[256],
const char *  list 
)

Build a map from the list of characters.

Each byte in the output map contains either -1 if the corresponding character was not present in the input string, or the offset of the last instance of the character in the list.

Referenced by str_countof(), str_findnextnot(), str_findnextof(), str_findprevnot(), and str_findprevof().

◆ str_case_end()

int str_case_end ( const str a,
const str b 
)

Match the suffix of the string to another string.

References len, obuf_endl(), obuf_putu(), outbuf, s, str_case_endb(), and str_case_ends().

◆ str_case_endb()

int str_case_endb ( const str a,
const char *  b,
unsigned  len 
)

Match the suffix of the string to a binary chunk.

References len, and s.

Referenced by str_case_end(), and str_case_ends().

◆ str_case_ends()

int str_case_ends ( const str a,
const char *  b 
)

Match the suffix of the string to a C string.

References str_case_endb().

Referenced by str_case_end().

◆ str_case_match()

int str_case_match ( const str s,
const str pattern 
)

Simple pattern match on dynamic string pattern.

References len, s, and str_case_matchb().

◆ str_case_matchb()

int str_case_matchb ( const str s,
const char *  pptr,
unsigned  plen 
)

Simple but fast (linear time) pattern matching on binary pattern.

References len, and s.

Referenced by str_case_match(), and str_case_matchs().

◆ str_case_matchs()

int str_case_matchs ( const str s,
const char *  pattern 
)

Simple pattern match on C string pattern.

References obuf_putc(), obuf_puts, outbuf, and str_case_matchb().

◆ str_case_start()

int str_case_start ( const str a,
const str b 
)

Match the prefix of the string to another string.

References len, obuf_endl(), obuf_putu(), outbuf, s, str_case_startb(), and str_case_starts().

◆ str_case_startb()

int str_case_startb ( const str a,
const char *  b,
unsigned  len 
)

Match the prefix of the string to a binary chunk.

References len, and s.

Referenced by str_case_start(), and str_case_starts().

◆ str_case_starts()

int str_case_starts ( const str a,
const char *  b 
)

Match the prefix of the string to a C string.

References str_case_startb().

Referenced by str_case_start().

◆ str_cat()

int str_cat ( str s,
const str in 
)

Append another string

References len, s, and str_catb().

◆ str_cat2s()

int str_cat2s ( str s,
const char *  a,
const char *  b 
)

Append 2 C strings

References len, s, str_copyb(), and str_realloc.

◆ str_cat3s()

int str_cat3s ( str s,
const char *  a,
const char *  b,
const char *  c 
)

Append 3 C strings

References len, s, str_copyb(), and str_realloc.

◆ str_cat4s()

int str_cat4s ( str s,
const char *  a,
const char *  b,
const char *  c,
const char *  d 
)

Append 4 C strings

References len, s, str_copyb(), and str_realloc.

◆ str_cat5s()

int str_cat5s ( str s,
const char *  a,
const char *  b,
const char *  c,
const char *  d,
const char *  e 
)

Append 5 C strings

References len, s, str_copyb(), and str_realloc.

◆ str_cat6s()

int str_cat6s ( str s,
const char *  a,
const char *  b,
const char *  c,
const char *  d,
const char *  e,
const char *  f 
)

Append 6 C strings

References len, s, str_copyb(), and str_realloc.

◆ str_catb()

int str_catb ( str s,
const char *  in,
unsigned  len 
)

Append a binary block

References len, s, and str_realloc.

Referenced by ibuf_readall(), str_cat(), str_cats(), and str_sort().

◆ str_catc()

int str_catc ( str s,
char  in 
)

Append a single character

References len, s, and str_realloc.

Referenced by dns_read_resolvconf(), ibuf_getstr(), path_mktemp(), and str_sort().

◆ str_catf()

int str_catf ( str s,
const char *  format,
  ... 
)

Append formatted data using fmt_multi from variable arguments

References str_catfv(), and str_copys().

◆ str_catfv()

int str_catfv ( str s,
const char *  format,
va_list  ap 
)

Append formatted data using fmt_multi from a va_list

References fmt_multiv(), len, s, and str_realloc.

Referenced by str_catf().

◆ str_cati()

int str_cati ( str s,
long  in 
)

Append a signed integer in decimal.

References fmt_lcase_digits, and str_catsnumw().

◆ str_catill()

int str_catill ( str s,
long long  in 
)

Append a signed long long integer in decimal.

References fmt_lcase_digits, and str_catsllnumw().

◆ str_catiw()

int str_catiw ( str s,
long  in,
unsigned  width,
char  pad 
)

Append a signed integer in decimal, padded to a minimum width.

References fmt_lcase_digits, and str_catsnumw().

◆ str_catiwll()

int str_catiwll ( str s,
long long  in,
unsigned  width,
char  pad 
)

Append a signed long long integer in decimal, padded to a minimum width.

References fmt_lcase_digits, and str_catsllnumw().

◆ str_catns()

int str_catns ( str s,
unsigned int  count,
  ... 
)

Append N C strings

References str_cats(), and str_copyb().

◆ str_cats()

int str_cats ( str s,
const char *  in 
)

Append a C string

References str_catb().

Referenced by str_catns(), and str_copyns().

◆ str_catsllnumw()

int str_catsllnumw ( str s,
long long  in,
unsigned  width,
char  pad,
unsigned  base,
const char *  digits 
)

Append a signed long long integer, optionally padded to a minimum width

References fmt_sllnumw(), len, s, and str_realloc.

Referenced by str_catill(), and str_catiwll().

◆ str_catsnumw()

int str_catsnumw ( str s,
long  in,
unsigned  width,
char  pad,
unsigned  base,
const char *  digits 
)

Append a signed integer, optionally padded to a minimum width

References fmt_snumw(), len, s, and str_realloc.

Referenced by str_cati(), and str_catiw().

◆ str_catu()

int str_catu ( str s,
unsigned long  in 
)

Append an unsigned integer in decimal, padded to a minimum width.

References fmt_lcase_digits, and str_catunumw().

Referenced by path_mktemp().

◆ str_catull()

int str_catull ( str s,
unsigned long long  in 
)

Append an unsigned long long integer in decimal.

References fmt_lcase_digits, and str_catullnumw().

◆ str_catullnumw()

int str_catullnumw ( str s,
unsigned long long  in,
unsigned  width,
char  pad,
unsigned  base,
const char *  digits 
)

Append an unsigned long long integer, optionally padded to a minimum width

References fmt_ullnumw(), len, s, and str_realloc.

Referenced by str_catull(), str_catuwll(), str_catxll(), and str_catxwll().

◆ str_catunumw()

int str_catunumw ( str s,
unsigned long  in,
unsigned  width,
char  pad,
unsigned  base,
const char *  digits 
)

Append an unsigned integer, optionally padded to a minimum width

References fmt_unumw(), len, s, and str_realloc.

Referenced by str_catu(), str_catuw(), str_catx(), and str_catxw().

◆ str_catuw()

int str_catuw ( str s,
unsigned long  in,
unsigned  width,
char  pad 
)

Append an unsigned integer in decimal.

References fmt_lcase_digits, and str_catunumw().

Referenced by path_mktemp().

◆ str_catuwll()

int str_catuwll ( str s,
unsigned long long  in,
unsigned  width,
char  pad 
)

Append an unsigned long long integer in decimal, padded to a minimum width.

References fmt_lcase_digits, and str_catullnumw().

◆ str_catx()

int str_catx ( str s,
unsigned long  in 
)

Append an unsigned integer in hexadecimal, padded to a minimum width.

References fmt_lcase_digits, and str_catunumw().

◆ str_catxll()

int str_catxll ( str s,
unsigned long long  in 
)

Append an unsigned long long integer in hexadecimal.

References fmt_lcase_digits, and str_catullnumw().

◆ str_catxw()

int str_catxw ( str s,
unsigned long  in,
unsigned  width,
char  pad 
)

Append an unsigned integer in hexadecimal.

References fmt_lcase_digits, and str_catunumw().

◆ str_catxwll()

int str_catxwll ( str s,
unsigned long long  in,
unsigned  width,
char  pad 
)

Append an unsigned long long integer in hexadecimal, padded to a minimum width.

References fmt_lcase_digits, and str_catullnumw().

◆ str_cmp()

int str_cmp ( const str a,
unsigned  aoffset,
const str b,
unsigned  boffset 
)

Compare part of two strings.

This function compares two strings, starting at aoffset bytes into a and boffset bytes into b. The first non-zero difference is returned. If the portion of b is longer than the portion of a, the result is positive.

References len, s, and str_cmpb().

◆ str_cmpb()

int str_cmpb ( const str a,
unsigned  offset,
const char *  b,
unsigned  len 
)

Compare a string against a binary block.

References len, and s.

Referenced by str_cmp(), and str_cmps().

◆ str_cmps()

int str_cmps ( const str a,
unsigned  offset,
const char *  b 
)

Compare a string against a C string.

References str_cmpb().

◆ str_copy()

int str_copy ( str s,
const str in 
)

Copy in a string

References len, s, and str_copyb().

Referenced by dns_resolvconfrewrite(), and str_sort().

◆ str_copy2s()

int str_copy2s ( str s,
const char *  a,
const char *  b 
)

Copy in the concatenation of 2 C strings

References len, s, and str_ready.

◆ str_copy3s()

int str_copy3s ( str s,
const char *  a,
const char *  b,
const char *  c 
)

Copy in the concatenation of 3 C strings

References len, s, and str_ready.

◆ str_copy4s()

int str_copy4s ( str s,
const char *  a,
const char *  b,
const char *  c,
const char *  d 
)

Copy in the concatenation of 4 C strings

References len, s, and str_ready.

◆ str_copy5s()

int str_copy5s ( str s,
const char *  a,
const char *  b,
const char *  c,
const char *  d,
const char *  e 
)

Copy in the concatenation of 5 C strings

References len, s, and str_ready.

◆ str_copy6s()

int str_copy6s ( str s,
const char *  a,
const char *  b,
const char *  c,
const char *  d,
const char *  e,
const char *  f 
)

Copy in the concatenation of 6 C strings

References len, s, and str_ready.

◆ str_copyb()

int str_copyb ( str s,
const char *  in,
unsigned  len 
)

Copy in a binary block

References len, s, str_copys(), and str_ready.

Referenced by path_match(), str_cat2s(), str_cat3s(), str_cat4s(), str_cat5s(), str_cat6s(), str_catns(), str_copy(), and str_copys().

◆ str_copyf()

int str_copyf ( str s,
const char *  format,
  ... 
)

Copy formatted data using fmt_multi from variable arguments

References str_copyfv().

◆ str_copyfv()

int str_copyfv ( str s,
const char *  format,
va_list  ap 
)

Copy formatted data using fmt_multi from a va_list

References fmt_multiv(), len, s, and str_ready.

Referenced by str_copyf().

◆ str_copyns()

int str_copyns ( str s,
unsigned int  count,
  ... 
)

Copy in the concatenation of N C strings

References len, and str_cats().

◆ str_copys()

int str_copys ( str s,
const char *  in 
)

◆ str_count()

unsigned str_count ( const str s,
char  ch 
)

Count the number of instances of a character

◆ str_countof()

unsigned str_countof ( const str s,
const char *  list 
)

Count the number of instances of a list of characters

References s, and str_buildmap().

◆ str_diff()

int str_diff ( const str a,
const str b 
)

Differentiate two strings.

The first non-zero difference between a and b is returned. If a is longer than b and no differences are found up to the length of b, then the return value is positive. If b is longer than a and no differences are found up to the length of a, then the return value is negative.

References len, s, and str_diffb().

◆ str_diffb()

int str_diffb ( const str a,
const char *  b,
unsigned  len 
)

Differentiate a string and a binary block.

References len, and s.

Referenced by str_diff(), and str_diffs().

◆ str_diffs()

int str_diffs ( const str a,
const char *  b 
)

Differentiate a string and a C string.

References str_diffb().

◆ str_end()

int str_end ( const str a,
const str b 
)

Match the suffix of the string to another string.

References len, s, and str_endb().

◆ str_endb()

int str_endb ( const str a,
const char *  b,
unsigned  len 
)

Match the suffix of the string to a binary chunk.

References len, obuf_endl(), obuf_putu(), outbuf, s, and str_ends().

Referenced by str_end(), and str_ends().

◆ str_ends()

int str_ends ( const str a,
const char *  b 
)

Match the suffix of the string to a C string.

References str_endb().

Referenced by str_endb().

◆ str_findnext()

int str_findnext ( const str s,
char  ch,
unsigned  pos 
)

Find the next instance of the given character, on or after pos

References len, obuf_puti(), outbuf, and s.

Referenced by striter_advance().

◆ str_findnextnot()

int str_findnextnot ( const str s,
const char *  list,
unsigned  pos 
)

Find the next instance of a character not in the given list of characters, on or after pos

References len, s, and str_buildmap().

◆ str_findnextof()

int str_findnextof ( const str s,
const char *  list,
unsigned  pos 
)

Find the next instance of the given list of characters, on or after pos

References len, obuf_puti(), outbuf, s, and str_buildmap().

◆ str_findprev()

int str_findprev ( const str s,
char  ch,
unsigned  pos 
)

Find the previous instance of the given character on or before pos

References len, obuf_puti(), outbuf, and s.

◆ str_findprevnot()

int str_findprevnot ( const str s,
const char *  list,
unsigned  pos 
)

Find the previous instance of a character not in the given list of characters, on or before pos

References len, obuf_puti(), outbuf, s, and str_buildmap().

◆ str_findprevof()

int str_findprevof ( const str s,
const char *  list,
unsigned  pos 
)

Find the previous instance of the given list of characters, on or before pos

References len, obuf_puti(), outbuf, s, and str_buildmap().

◆ str_free()

void str_free ( str s)

Free a string's storage. This function also sets all the members of the structure to zero.

References len, s, size, and str_alloc().

Referenced by path_match(), resolve_qualdns(), and str_sort().

◆ str_init()

int str_init ( str s)

Initialize a string, giving it a small empty allocation.

References len, s, size, and STR_BLOCKSIZE.

◆ str_join()

int str_join ( str s,
char  sep,
const str in 
)

Join two strings together with exactly one instance of the seperator.

References len, s, and str_joinb().

◆ str_joinb()

int str_joinb ( str s,
char  sep,
const char *  in,
unsigned  len 
)

Join a binary block to this string

References len, s, str_copys(), str_joins(), and str_realloc.

Referenced by str_join(), and str_joins().

◆ str_joins()

int str_joins ( str s,
char  sep,
const char *  in 
)

Join a C string to this string

References str_joinb().

Referenced by str_joinb().

◆ str_lcut()

void str_lcut ( str s,
unsigned  count 
)

Cut count bytes from the left (front) of the string

References len, s, and str_truncate().

◆ str_lower()

void str_lower ( str s)

Translate all upper-case characters to lower-case

References s.

◆ str_lstrip()

void str_lstrip ( str s)

Strip all white space from the left (front) of the string

References len, and s.

◆ str_match()

int str_match ( const str s,
const str pattern 
)

Simple pattern match on dynamic string pattern.

References len, s, and str_matchb().

◆ str_matchb()

int str_matchb ( const str s,
const char *  pptr,
unsigned  plen 
)

Simple but fast (linear time) pattern matching on binary pattern.

References len, and s.

Referenced by str_match(), and str_matchs().

◆ str_matchs()

int str_matchs ( const str s,
const char *  pattern 
)

Simple pattern match on C string pattern.

References obuf_putc(), obuf_puts, outbuf, and str_matchb().

◆ str_rcut()

void str_rcut ( str s,
unsigned  count 
)

Cut count bytes from the right (end) of the string

References len, and str_truncate().

◆ str_rstrip()

void str_rstrip ( str s)

Strip all white space from the right (end) of the string

References len, and s.

◆ str_sort()

int str_sort ( str s,
char  sep,
long  count,
int(*)(const str_sortentry *a, const str_sortentry *b)  fn 
)

Sort a string.

Parameters
sThe string to sort.
sepThe character which delimits the substrings.
countThe number of substrings within s (set to -1 if not known).
fnThe comparison function. Defaults to a function that works like memcmp.
Note
This function allocates a temporary array of substring pointers, and so may return 0 if memory allocation fails. The string itself is not reallocated.

References len, s, str_catb(), str_catc(), str_copy(), str_free(), and str_truncate().

Referenced by path_match().

◆ str_start()

int str_start ( const str a,
const str b 
)

Match the prefix of the string to another string.

References len, s, and str_startb().

◆ str_startb()

int str_startb ( const str a,
const char *  b,
unsigned  len 
)

Match the prefix of the string to a binary chunk.

References len, obuf_endl(), obuf_putu(), outbuf, s, and str_starts().

Referenced by str_start(), and str_starts().

◆ str_starts()

int str_starts ( const str a,
const char *  b 
)

Match the prefix of the string to a C string.

References str_startb().

Referenced by str_startb().

◆ str_subst()

long str_subst ( str s,
char  from,
char  to 
)

Substitute one character for another throughout the string.

Returns
the number of substitutions made.

References len, and s.

◆ str_truncate()

int str_truncate ( str s,
unsigned  len 
)

Truncate a string.

If len is larger than the current size, the string is reallocated. If len is less than the existing length (not size), the length of the string is reduced to len. A NUL marker is placed at len.

References len, s, and str_realloc.

Referenced by dns_qualify_rules(), ibuf_getstr(), ibuf_getstr_crlf(), str_lcut(), str_rcut(), and str_sort().

◆ str_upper()

void str_upper ( str s)

Translate all lower-case characters to upper-case

References s.

◆ str_xlate()

long str_xlate ( str s,
const char *  from,
const char *  to,
unsigned  nchars 
)

Substitute one character for another throughout the string.

Returns
the number of substitutions made.

References obuf_putu(), outbuf, s, and str_copys().

Variable Documentation

◆ str_ucase_digits

const char str_ucase_digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"

Upper-case digits.