#endif
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
/**
* @package APR strings library
*/
/**
* Do a natural order comparison of two strings.
* @param a The first string to compare
* @param b The second string to compare
* @return Either <0, 0, or >0. If the first string is less than the second
* this returns <0, if they are equivalent it returns 0, and if the
* first string is greater than second string it retuns >0.
*/
int apr_strnatcmp(char const *a, char const *b);
/**
* Do a natural order comparison of two strings ignoring the case of the
* strings.
* @param a The first string to compare
* @param b The second string to compare
* @return Either <0, 0, or >0. If the first string is less than the second
* this returns <0, if they are equivalent it returns 0, and if the
* first string is greater than second string it retuns >0.
*/
int apr_strnatcasecmp(char const *a, char const *b);
/**
* duplicate a string into memory allocated out of a pool
* @param p The pool to allocate out of
* @param s The string to allocate
* @return The new string
* @deffunc char *apr_pstrdup(apr_pool_t *p, const char *s)
*/
APR_DECLARE(char *) apr_pstrdup(apr_pool_t *p, const char *s);
/**
* duplicate the first n characters of a string into memory allocated
* out of a pool; the new string will be '\0'-terminated
* @param p The pool to allocate out of
* @param s The string to allocate
* @param n The number of characters to duplicate
* @return The new string
* @deffunc char *apr_pstrndup(apr_pool_t *p, const char *s, apr_size_t n)
*/
APR_DECLARE(char *) apr_pstrndup(apr_pool_t *p, const char *s, apr_size_t n);
/**
* Concatenate multiple strings, allocating memory out a pool
* @param p The pool to allocate out of
* @param ... The strings to concatenate. The final string must be NULL
* @return The new string
* @deffunc char *apr_pstrcat(apr_pool_t *p, ...)
*/
APR_DECLARE_NONSTD(char *) apr_pstrcat(apr_pool_t *p, ...);
/**
* printf-style style printing routine. The data is output to a string
* allocated from a pool
* @param p The pool to allocate out of
* @param fmt The format of the string
* @param ap The arguments to use while printing the data
* @return The new string
* @deffunc char *apr_pvsprintf(apr_pool_t *p, const char *fmt, va_list ap)
*/
APR_DECLARE(char *) apr_pvsprintf(apr_pool_t *p, const char *fmt, va_list ap);
/**
* printf-style style printing routine. The data is output to a string
* allocated from a pool
* @param p The pool to allocate out of
* @param fmt The format of the string
* @param ... The arguments to use while printing the data
* @return The new string
* @deffunc char *apr_psprintf(apr_pool_t *p, const char *fmt, ...)
*/
APR_DECLARE_NONSTD(char *) apr_psprintf(apr_pool_t *p, const char *fmt, ...);
/**
* copy n characters from src to des>
* @param dst The destination string
* @param src The source string
* @param dst_size The number of characters to copy
* @tip
*
* We re-implement this function to implement these specific changes:
* 1) strncpy() doesn't always null terminate and we want it to.
* 2) strncpy() null fills, which is bogus, esp. when copy 8byte strings
* into 8k blocks.
* 3) Instead of returning the pointer to the beginning of the
* destination string, we return a pointer to the terminating '\0'
* to allow us to check for truncation.
*
* @deffunc char *apr_cpystrn(char *dst, const char *src, size_t dst_size)
*/
APR_DECLARE(char *) apr_cpystrn(char *dst, const char *src, size_t dst_size);
/**
* Strip spaces from a string
* @param dest The destination string. It is okay to modify the string
* in place. Namely dest == src
* @param src The string to rid the spaces from.
* @deffunc char *apr_collapse_spaces(char *dest, const char *src)
*/
APR_DECLARE(char *) apr_collapse_spaces(char *dest, const char *src);
/**
* Convert the arguments to a program from one string to an array of
* strings term inated by a NULL
* @param str The arguments to convert
* @param argv_out Output location. This is a pointer to an array of strings.
* @param token_context Pool to use.
* @deffunc apr_status_t apr_tokenize_to_argv(const char *arg_str, char ***argv_out, apr_pool_t *token_context);
*/
APR_DECLARE(apr_status_t) apr_tokenize_to_argv(const char *arg_str,
char ***argv_out,
apr_pool_t *token_context);
#ifdef __cplusplus
}
#endif
#endif /* !APR_STRINGS_H */