Also, I see apr_cstr_casecmp() but not a case insensitive version... ??
> On Jan 26, 2016, at 3:58 PM, William A Rowe Jr <wr...@rowe-clan.net> wrote:
>
> Sorry, meant to attach something legible...
> Apache Portable Runtime
> • Main Page
> • Related Pages
> • Modules
> • Namespaces
> • Data Structures
> • Files
>
> Functions
> C (POSIX locale) string functions
> String routines
> Functions
> apr_array_header_t * apr_cstr_split (const char *input, const char
> *sep_chars, int chop_whitespace, apr_pool_t *pool)
>
> void apr_cstr_split_append (apr_array_header_t *array, const char *input,
> const char *sep_chars, int chop_whitespace, apr_pool_t *pool)
>
> int apr_cstr_match_glob_list (const char *str, const apr_array_header_t
> *list)
>
> int apr_cstr_match_list (const char *str, const apr_array_header_t *list)
>
> char * apr_cstr_tokenize (const char *sep, char **str)
>
> int apr_cstr_count_newlines (const char *msg)
>
> char * apr_cstr_join (const apr_array_header_t *strings, const char
> *separator, apr_pool_t *pool)
>
> int apr_cstr_casecmp (const char *str1, const char *str2)
>
> apr_status_t apr_cstr_strtoi64 (apr_int64_t *n, const char *str, apr_int64_t
> minval, apr_int64_t maxval, int base)
>
> apr_status_t apr_cstr_atoi64 (apr_int64_t *n, const char *str)
>
> apr_status_t apr_cstr_atoi (int *n, const char *str)
>
> apr_status_t apr_cstr_strtoui64 (apr_uint64_t *n, const char *str,
> apr_uint64_t minval, apr_uint64_t maxval, int base)
>
> apr_status_t apr_cstr_atoui64 (apr_uint64_t *n, const char *str)
>
> apr_status_t apr_cstr_atoui (unsigned int *n, const char *str)
>
> const char * apr_cstr_skip_prefix (const char *str, const char *prefix)
>
> Detailed Description
>
> The apr_cstr_* functions provide traditional C char * string text handling,
> and notabilty they treat all text in the C (a.k.a. POSIX) locale using the
> minimal POSIX character set, represented in either ASCII or a corresponding
> EBCDIC subset.
>
> Character values outside of that set are treated as opaque bytes, and all
> multi-byte character sequences are handled as individual distinct octets.
>
> Multi-byte characters sequences whose octets fall in the ASCII range cause
> unexpected results, such as in the ISO-2022-JP code page where ASCII octets
> occur within both shift-state and multibyte sequences.
>
> In the case of the UTF-8 encoding, all multibyte characters all fall outside
> of the C/POSIX range of characters, so these functions are generally safe to
> use on UTF-8 strings. The programmer must be aware that each octet may not
> represent a distinct printable character in such encodings.
>
> The standard C99/POSIX string functions, rather than apr_cstr, should be used
> in all cases where the current locale and encoding of the text is significant.
>
> Function Documentation
>
> apr_status_t apr_cstr_atoi ( int * n,
> const char * str
> )
> Parse the C string str into a 32 bit number, and return it in *n. Assume that
> the number is represented in base 10. Raise an error if conversion fails
> (e.g. due to overflow).
>
> The behaviour otherwise is as described for apr_cstr_strtoi64().
>
> Since
> New in 1.6.
> apr_status_t apr_cstr_atoi64 ( apr_int64_t * n,
> const char * str
> )
> Parse the C string str into a 64 bit number, and return it in *n. Assume that
> the number is represented in base 10. Raise an error if conversion fails
> (e.g. due to overflow).
>
> The behaviour otherwise is as described for apr_cstr_strtoi64().
>
> Since
> New in 1.6.
> apr_status_t apr_cstr_atoui ( unsigned int * n,
> const char * str
> )
> Parse the C string str into an unsigned 32 bit number, and return it in *n.
> Assume that the number is represented in base 10. Raise an error if
> conversion fails (e.g. due to overflow).
>
> The behaviour otherwise is as described for apr_cstr_strtoui64(), including
> the upper limit of APR_INT64_MAX.
>
> Since
> New in 1.6.
> apr_status_t apr_cstr_atoui64 ( apr_uint64_t * n,
> const char * str
> )
> Parse the C string str into an unsigned 64 bit number, and return it in *n.
> Assume that the number is represented in base 10. Raise an error if
> conversion fails (e.g. due to overflow).
>
> The behaviour otherwise is as described for apr_cstr_strtoui64(), including
> the upper limit of APR_INT64_MAX.
>
> Since
> New in 1.6.
> int apr_cstr_casecmp ( const char * str1,
> const char * str2
> )
> Compare two strings atr1 and atr2, treating case-equivalent unaccented Latin
> (ASCII subset) letters as equal.
>
> Returns in integer greater than, equal to, or less than 0, according to
> whether str1 is considered greater than, equal to, or less thanstr2.
>
> Since
> New in 1.6.
> int apr_cstr_count_newlines ( const char * msg )
> Return the number of line breaks in msg, allowing any kind of newline
> termination (CR, LF, CRLF, or LFCR), even inconsistent.
>
> Since
> New in 1.6.
> char* apr_cstr_join ( const apr_array_header_t * strings,
> const char * separator,
> apr_pool_t * pool
> )
> Return a cstring which is the concatenation of strings (an array of char *)
> each followed by separator (that is, separator will also end the resulting
> string). Allocate the result in pool. If strings is empty, then return the
> empty string.
>
> Since
> New in 1.6.
> int apr_cstr_match_glob_list ( const char * str,
> const apr_array_header_t * list
> )
> Return TRUE iff str matches any of the elements of list, a list of zero or
> more glob patterns.
>
> int apr_cstr_match_list ( const char * str,
> const apr_array_header_t * list
> )
> Return TRUE iff str exactly matches any of the elements of list.
>
> Since
> new in 1.7
> const char* apr_cstr_skip_prefix ( const char * str,
> const char * prefix
> )
> Skip the common prefix prefix from the C string str, and return a pointer to
> the next character after the prefix. Return NULL if str does not start with
> prefix.
>
> Since
> New in 1.6.
> apr_array_header_t* apr_cstr_split ( const char * input,
> const char * sep_chars,
> int chop_whitespace,
> apr_pool_t * pool
> )
> Divide input into substrings, interpreting any char from sep as a token
> separator.
>
> Return an array of copies of those substrings (plain const char*), allocating
> both the array and the copies in pool.
>
> None of the elements added to the array contain any of the characters in
> sep_chars, and none of the new elements are empty (thus, it is possible that
> the returned array will have length zero).
>
> If chop_whitespace is TRUE, then remove leading and trailing whitespace from
> the returned strings.
>
> void apr_cstr_split_append ( apr_array_header_t * array,
> const char * input,
> const char * sep_chars,
> int chop_whitespace,
> apr_pool_t * pool
> )
> Like apr_cstr_split(), but append to existing array instead of creating a new
> one. Allocate the copied substrings in pool (i.e., caller decides whether or
> not to pass array->pool as pool).
>
> apr_status_t apr_cstr_strtoi64 ( apr_int64_t * n,
> const char * str,
> apr_int64_t minval,
> apr_int64_t maxval,
> int base
> )
> Parse the C string str into a 64 bit number, and return it in *n. Assume that
> the number is represented in base base. Raise an error if conversion fails
> (e.g. due to overflow), or if the converted number is smaller than minval or
> larger than maxval.
>
> Leading whitespace in str is skipped in a locale-dependent way. After that,
> the string may contain an optional '+' (positive, default) or '-' (negative)
> character, followed by an optional '0x' prefix if base is 0 or 16, followed
> by numeric digits appropriate for the base. If there are any more characters
> after the numeric digits, an error is returned.
>
> If base is zero, then a leading '0x' or '0X' prefix means hexadecimal, else a
> leading '0' means octal (implemented, though not documented, in
> apr_strtoi64() in APR 0.9.0 through 1.5.0), else use base ten.
>
> Since
> New in 1.6.
> apr_status_t apr_cstr_strtoui64 ( apr_uint64_t * n,
> const char * str,
> apr_uint64_t minval,
> apr_uint64_t maxval,
> int base
> )
> Parse the C string str into an unsigned 64 bit number, and return it in *n.
> Assume that the number is represented in base base. Raise an error if
> conversion fails (e.g. due to overflow), or if the converted number is
> smaller than minval or larger than maxval.
>
> Leading whitespace in str is skipped in a locale-dependent way. After that,
> the string may contain an optional '+' (positive, default) or '-' (negative)
> character, followed by an optional '0x' prefix if base is 0 or 16, followed
> by numeric digits appropriate for the base. If there are any more characters
> after the numeric digits, an error is returned.
>
> If base is zero, then a leading '0x' or '0X' prefix means hexadecimal, else a
> leading '0' means octal (implemented, though not documented, in
> apr_strtoi64() in APR 0.9.0 through 1.5.0), else use base ten.
>
> Warning
> The implementation used since version 1.7 returns an error if the parsed
> number is greater than APR_INT64_MAX, even if it is not greater than maxval.
> Since
> New in 1.6.
> char* apr_cstr_tokenize ( const char * sep,
> char ** str
> )
> Get the next token from *str interpreting any char from sep as a token
> separator. Separators at the beginning of str will be skipped. Returns a
> pointer to the beginning of the first token in *str or NULL if no token is
> left. Modifies str such that the next call will return the next token.
>
> Note
> The content of *str may be modified by this function.
> Since
> New in 1.6.
> Generated by 1.8.10
>
> On Tue, Jan 26, 2016 at 2:57 PM, William A Rowe Jr <wr...@rowe-clan.net>
> wrote:
> On Thu, Jan 21, 2016 at 4:18 PM, William A Rowe Jr <wr...@rowe-clan.net>
> wrote:
> This is as far as I got on my last iteration, electing what appear
> to be 'normal string' handling functions that are part of svn.
>
> Based on apr's short-name preference, I had yet to redecorate
> these functions as apr_cstr_* functions, but that I will get to
> tomorrow. If you see something that doesn't fall into the normal
> string / general purpose criteria, feel free to holler before the first
> commit...
>
> This is what is going in shortly... we don't have an svn_boolean_t
> so those become int's, while svn_error_t * becomes an apr_status_t.
>
> I'll proceed to commit this full set for scrutiny before digging through
> for the various overlapping functions within apr and even across httpd.
>
>
>
>