GNU libmicrohttpd 0.9.77
Loading...
Searching...
No Matches
mhd_str.h File Reference

Header for string manipulating helpers. More...

#include "mhd_options.h"
#include <stdint.h>
Include dependency graph for mhd_str.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  _MHD_str_w_len
 

Macros

#define MHD_STATICSTR_LEN_(macro)   (sizeof(macro) / sizeof(char) - 1)
 
#define _MHD_S_STR_W_LEN(str)   { str, MHD_STATICSTR_LEN_(str) }
 
#define MHD_str_has_s_token_caseless_(str, tkn)    MHD_str_has_token_caseless_ ((str),(tkn),MHD_STATICSTR_LEN_ (tkn))
 

Functions

int MHD_str_equal_caseless_ (const char *str1, const char *str2)
 
int MHD_str_equal_caseless_n_ (const char *const str1, const char *const str2, size_t maxlen)
 
bool MHD_str_equal_caseless_bin_n_ (const char *const str1, const char *const str2, size_t len)
 
bool MHD_str_has_token_caseless_ (const char *str, const char *const token, size_t token_len)
 
bool MHD_str_remove_token_caseless_ (const char *str, size_t str_len, const char *const token, const size_t token_len, char *buf, ssize_t *buf_size)
 
bool MHD_str_remove_tokens_caseless_ (char *str, size_t *str_len, const char *const tokens, const size_t tokens_len)
 
size_t MHD_str_to_uint64_ (const char *str, uint64_t *out_val)
 
size_t MHD_str_to_uint64_n_ (const char *str, size_t maxlen, uint64_t *out_val)
 
size_t MHD_strx_to_uint32_ (const char *str, uint32_t *out_val)
 
size_t MHD_strx_to_uint32_n_ (const char *str, size_t maxlen, uint32_t *out_val)
 
size_t MHD_strx_to_uint64_ (const char *str, uint64_t *out_val)
 
size_t MHD_strx_to_uint64_n_ (const char *str, size_t maxlen, uint64_t *out_val)
 
size_t MHD_uint32_to_strx (uint32_t val, char *buf, size_t buf_size)
 
size_t MHD_uint16_to_str (uint16_t val, char *buf, size_t buf_size)
 
size_t MHD_uint64_to_str (uint64_t val, char *buf, size_t buf_size)
 
size_t MHD_uint8_to_str_pad (uint8_t val, uint8_t min_digits, char *buf, size_t buf_size)
 

Detailed Description

Header for string manipulating helpers.

Author
Karlson2k (Evgeny Grin)

Definition in file mhd_str.h.

Macro Definition Documentation

◆ _MHD_S_STR_W_LEN

#define _MHD_S_STR_W_LEN (   str)    { str, MHD_STATICSTR_LEN_(str) }

Static string initialiser for struct _MHD_str_w_len

Definition at line 66 of file mhd_str.h.

◆ MHD_STATICSTR_LEN_

#define MHD_STATICSTR_LEN_ (   macro)    (sizeof(macro) / sizeof(char) - 1)

Determine length of static string / macro strings at compile time.

Definition at line 54 of file mhd_str.h.

◆ MHD_str_has_s_token_caseless_

#define MHD_str_has_s_token_caseless_ (   str,
  tkn 
)     MHD_str_has_token_caseless_ ((str),(tkn),MHD_STATICSTR_LEN_ (tkn))

Check whether str has case-insensitive static tkn. Token could be surrounded by spaces and tabs and delimited by comma. Match succeed if substring between start, end of string or comma contains only case-insensitive token and optional spaces and tabs.

Warning
tkn must be static string
Parameters
strthe string to check
tknthe static string of token to find
Returns
non-zero if two strings are equal, zero otherwise.

Definition at line 151 of file mhd_str.h.

Function Documentation

◆ MHD_str_equal_caseless_()

int MHD_str_equal_caseless_ ( const char *  str1,
const char *  str2 
)

Check two strings for equality, ignoring case of US-ASCII letters.

Parameters
str1first string to compare
str2second string to compare
Returns
non-zero if two strings are equal, zero otherwise.

Check two string for equality, ignoring case of US-ASCII letters.

Parameters
str1first string to compare
str2second string to compare
Returns
non-zero if two strings are equal, zero otherwise.

Definition at line 346 of file mhd_str.c.

References charsequalcaseless, and toasciilower.

Referenced by build_header_response(), check_response_header_token_ci(), digest_calc_ha1_from_digest(), keepalive_possible(), method_string_to_enum(), MHD_add_response_header(), MHD_lookup_header_token_ci(), MHD_queue_response(), MHD_request_lookup_value(), MHD_response_get_header(), need_100_continue(), need_100_continue(), parse_connection_headers(), and parse_request_headers().

Here is the caller graph for this function:

◆ MHD_str_equal_caseless_bin_n_()

bool MHD_str_equal_caseless_bin_n_ ( const char *const  str1,
const char *const  str2,
size_t  len 
)

Check two string for equality, ignoring case of US-ASCII letters and checking exactly len characters. Compares exactly len characters, including binary zero characters.

Parameters
str1first string to compare
str2second string to compare
lennumber of characters to compare
Returns
non-zero if two strings are equal, zero otherwise.

Definition at line 445 of file mhd_str.c.

References charsequalcaseless.

Referenced by add_user_headers(), MHD_check_response_header_token_ci(), MHD_del_response_header(), MHD_get_response_element_n_(), MHD_get_response_header(), MHD_lookup_connection_value_n(), MHD_lookup_header_token_ci(), and MHD_str_remove_tokens_caseless_().

Here is the caller graph for this function:

◆ MHD_str_equal_caseless_n_()

int MHD_str_equal_caseless_n_ ( const char *const  str1,
const char *const  str2,
size_t  maxlen 
)

Check two string for equality, ignoring case of US-ASCII letters and checking not more than maxlen characters. Compares up to first terminating null character, but not more than first maxlen characters.

Parameters
str1first string to compare
str2second string to compare
maxlenmaximum number of characters to compare
Returns
non-zero if two strings are equal, zero otherwise.

Definition at line 378 of file mhd_str.c.

References charsequalcaseless, and toasciilower.

Referenced by add_user_headers(), lookup_sub_value(), MHD_create_post_processor(), MHD_post_process(), post_process_multipart(), process_multipart_headers(), and try_match_header().

Here is the caller graph for this function:

◆ MHD_str_has_token_caseless_()

bool MHD_str_has_token_caseless_ ( const char *  str,
const char *const  token,
size_t  token_len 
)

Check whether str has case-insensitive token. Token could be surrounded by spaces and tabs and delimited by comma. Match succeed if substring between start, end of string or comma contains only case-insensitive token and optional spaces and tabs.

Warning
token must not contain null-characters except optional terminating null-character.
Parameters
strthe string to check
tokenthe token to find
token_lenlength of token, not including optional terminating null-character.
Returns
non-zero if two strings are equal, zero otherwise.

Check whether str has case-insensitive token. Token could be surrounded by spaces and tabs and delimited by comma. Match succeed if substring between start, end (of string) or comma contains only case-insensitive token and optional spaces and tabs.

Warning
token must not contain null-charters except optional terminating null-character.
Parameters
strthe string to check
tokenthe token to find
token_lenlength of token, not including optional terminating null-character.
Returns
non-zero if two strings are equal, zero otherwise.

Check whether str has case-insensitive token. Token could be surrounded by spaces and tabs and delimited by comma. Match succeed if substring between start, end (of string) or comma contains only case-insensitive token and optional spaces and tabs.

Warning
token must not contain null-characters except optional terminating null-character.
Parameters
strthe string to check
tokenthe token to find
token_lenlength of token, not including optional terminating null-character.
Returns
non-zero if two strings are equal, zero otherwise.

Definition at line 412 of file mhd_str.c.

References charsequalcaseless, and toasciilower.

Referenced by check_response_header_token_ci(), MHD_check_response_header_token_ci(), MHD_lookup_header_token_ci(), and MHD_lookup_header_token_ci().

Here is the caller graph for this function:

◆ MHD_str_remove_token_caseless_()

bool MHD_str_remove_token_caseless_ ( const char *  str,
size_t  str_len,
const char *const  token,
const size_t  token_len,
char *  buf,
ssize_t *  buf_size 
)

Remove case-insensitive token from the str and put result to the output buf.

Tokens in str could be surrounded by spaces and tabs and delimited by comma. The token match succeed if substring between start, end (of string) or comma contains only case-insensitive token and optional spaces and tabs. The quoted strings and comments are not supported by this function.

The output string is normalised: empty tokens and repeated whitespaces are removed, no whitespaces before commas, exactly one space is used after each comma.

Parameters
strthe string to process
str_lenthe length of the str, not including optional terminating null-character.
tokenthe token to find
token_lenthe length of token, not including optional terminating null-character.
[out]bufthe output buffer, not null-terminated.
[in,out]buf_sizepointer to the size variable, at input it is the size of allocated buffer, at output it is the size of the resulting string (can be up to 50% larger than input) or negative value if there is not enough space for the result
Returns
'true' if token has been removed, 'false' otherwise.

< the "input" string / character

< the "output" string / character

< position of matched character in the token

< the first char of current token

Definition at line 553 of file mhd_str.c.

References charsequalcaseless, mhd_assert, and NULL.

Referenced by add_response_header_connection().

Here is the caller graph for this function:

◆ MHD_str_remove_tokens_caseless_()

bool MHD_str_remove_tokens_caseless_ ( char *  str,
size_t *  str_len,
const char *const  tokens,
const size_t  tokens_len 
)

Perform in-place case-insensitive removal of tokens from the str.

Token could be surrounded by spaces and tabs and delimited by comma. The token match succeed if substring between start, end (of the string), or comma contains only case-insensitive token and optional spaces and tabs. The quoted strings and comments are not supported by this function.

The input string must be normalised: empty tokens and repeated whitespaces are removed, no whitespaces before commas, exactly one space is used after each comma. The string is updated in-place.

Behavior is undefined is the input string in not normalised.

Parameters
[in,out]strthe string to update
[in,out]str_lenthe length of the str, not including optional terminating null-character, not null-terminated
tokensthe token to find
tokens_lenthe length of tokens, not including optional terminating null-character.
Returns
'true' if any token has been removed, 'false' otherwise.

< a short alias for tokens

< position in tokens

< the current token

< the 'read' position in the str

< the 'write' position in the str

Definition at line 720 of file mhd_str.c.

References mhd_assert, MHD_str_equal_caseless_bin_n_(), and NULL.

Referenced by add_response_header_connection(), and del_response_header_connection().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ MHD_str_to_uint64_()

size_t MHD_str_to_uint64_ ( const char *  str,
uint64_t *  out_val 
)

Convert decimal US-ASCII digits in string to number in uint64_t. Conversion stopped at first non-digit character.

Parameters
strstring to convert
out_valpointer to uint64_t to store result of conversion
Returns
non-zero number of characters processed on succeed, zero if no digit is found, resulting value is larger then possible to store in uint64_t or out_val is NULL

Convert decimal US-ASCII digits in string to number in uint64_t. Conversion stopped at first non-digit character.

Parameters
strstring to convert
[out]out_valpointer to uint64_t to store result of conversion
Returns
non-zero number of characters processed on succeed, zero if no digit is found, resulting value is larger then possible to store in uint64_t or out_val is NULL

Definition at line 473 of file mhd_str.c.

References isasciidigit, and UINT64_MAX.

Referenced by parse_request_headers().

Here is the caller graph for this function:

◆ MHD_str_to_uint64_n_()

size_t MHD_str_to_uint64_n_ ( const char *  str,
size_t  maxlen,
uint64_t *  out_val 
)

Convert not more then maxlen decimal US-ASCII digits in string to number in uint64_t. Conversion stopped at first non-digit character or after maxlen digits.

Parameters
strstring to convert
maxlenmaximum number of characters to process
out_valpointer to uint64_t to store result of conversion
Returns
non-zero number of characters processed on succeed, zero if no digit is found, resulting value is larger then possible to store in uint64_t or out_val is NULL

Convert not more then maxlen decimal US-ASCII digits in string to number in uint64_t. Conversion stopped at first non-digit character or after maxlen digits.

Parameters
strstring to convert
maxlenmaximum number of characters to process
[out]out_valpointer to uint64_t to store result of conversion
Returns
non-zero number of characters processed on succeed, zero if no digit is found, resulting value is larger then possible to store in uint64_t or out_val is NULL

Definition at line 515 of file mhd_str.c.

References isasciidigit, and UINT64_MAX.

Referenced by parse_connection_headers().

Here is the caller graph for this function:

◆ MHD_strx_to_uint32_()

size_t MHD_strx_to_uint32_ ( const char *  str,
uint32_t *  out_val 
)

Convert hexadecimal US-ASCII digits in string to number in uint32_t. Conversion stopped at first non-digit character.

Parameters
strstring to convert
out_valpointer to uint32_t to store result of conversion
Returns
non-zero number of characters processed on succeed, zero if no digit is found, resulting value is larger then possible to store in uint32_t or out_val is NULL

Convert hexadecimal US-ASCII digits in string to number in uint32_t. Conversion stopped at first non-digit character.

Parameters
strstring to convert
[out]out_valpointer to uint32_t to store result of conversion
Returns
non-zero number of characters processed on succeed, zero if no digit is found, resulting value is larger then possible to store in uint32_t or out_val is NULL

Definition at line 558 of file mhd_str.c.

References toxdigitvalue, and UINT32_MAX.

◆ MHD_strx_to_uint32_n_()

size_t MHD_strx_to_uint32_n_ ( const char *  str,
size_t  maxlen,
uint32_t *  out_val 
)

Convert not more then maxlen hexadecimal US-ASCII digits in string to number in uint32_t. Conversion stopped at first non-digit character or after maxlen digits.

Parameters
strstring to convert
maxlenmaximum number of characters to process
out_valpointer to uint32_t to store result of conversion
Returns
non-zero number of characters processed on succeed, zero if no digit is found, resulting value is larger then possible to store in uint32_t or out_val is NULL

Convert not more then maxlen hexadecimal US-ASCII digits in string to number in uint32_t. Conversion stopped at first non-digit character or after maxlen digits.

Parameters
strstring to convert
maxlenmaximum number of characters to process
[out]out_valpointer to uint32_t to store result of conversion
Returns
non-zero number of characters processed on succeed, zero if no digit is found, resulting value is larger then possible to store in uint32_t or out_val is NULL

Definition at line 605 of file mhd_str.c.

References toxdigitvalue, and UINT32_MAX.

Referenced by digest_auth_check_all(), and MHD_http_unescape().

Here is the caller graph for this function:

◆ MHD_strx_to_uint64_()

size_t MHD_strx_to_uint64_ ( const char *  str,
uint64_t *  out_val 
)

Convert hexadecimal US-ASCII digits in string to number in uint64_t. Conversion stopped at first non-digit character.

Parameters
strstring to convert
out_valpointer to uint64_t to store result of conversion
Returns
non-zero number of characters processed on succeed, zero if no digit is found, resulting value is larger then possible to store in uint64_t or out_val is NULL

Convert hexadecimal US-ASCII digits in string to number in uint64_t. Conversion stopped at first non-digit character.

Parameters
strstring to convert
[out]out_valpointer to uint64_t to store result of conversion
Returns
non-zero number of characters processed on succeed, zero if no digit is found, resulting value is larger then possible to store in uint64_t or out_val is NULL

Definition at line 646 of file mhd_str.c.

References toxdigitvalue, and UINT64_MAX.

◆ MHD_strx_to_uint64_n_()

size_t MHD_strx_to_uint64_n_ ( const char *  str,
size_t  maxlen,
uint64_t *  out_val 
)

Convert not more then maxlen hexadecimal US-ASCII digits in string to number in uint64_t. Conversion stopped at first non-digit character or after maxlen digits.

Parameters
strstring to convert
maxlenmaximum number of characters to process
out_valpointer to uint64_t to store result of conversion
Returns
non-zero number of characters processed on succeed, zero if no digit is found, resulting value is larger then possible to store in uint64_t or out_val is NULL

Convert not more then maxlen hexadecimal US-ASCII digits in string to number in uint64_t. Conversion stopped at first non-digit character or after maxlen digits.

Parameters
strstring to convert
maxlenmaximum number of characters to process
[out]out_valpointer to uint64_t to store result of conversion
Returns
non-zero number of characters processed on succeed, zero if no digit is found, resulting value is larger then possible to store in uint64_t or out_val is NULL

Definition at line 692 of file mhd_str.c.

References toxdigitvalue, and UINT64_MAX.

Referenced by digest_auth_check_all(), process_request_body(), and process_request_body().

Here is the caller graph for this function:

◆ MHD_uint16_to_str()

size_t MHD_uint16_to_str ( uint16_t  val,
char *  buf,
size_t  buf_size 
)

Convert uint16_t value to decimal US-ASCII string.

Note
: result is NOT zero-terminated.
Parameters
valthe value to convert
bufthe buffer to result to
buf_sizesize of the buffer
Returns
number of characters has been put to the buf, zero if buffer is too small (buffer may be modified).

< pointer to the current printed digit

Definition at line 1234 of file mhd_str.c.

References mhd_assert.

Referenced by build_header_response(), and get_date_str().

Here is the caller graph for this function:

◆ MHD_uint32_to_strx()

size_t MHD_uint32_to_strx ( uint32_t  val,
char *  buf,
size_t  buf_size 
)

Convert uint32_t value to hexdecimal US-ASCII string.

Note
: result is NOT zero-terminated.
Parameters
valthe value to convert
bufthe buffer to result to
buf_sizesize of the buffer
Returns
number of characters has been put to the buf, zero if buffer is too small (buffer may be modified).

< position of the output character

zero-based, digit position in 'val'

Definition at line 1202 of file mhd_str.c.

Referenced by try_ready_chunked_body().

Here is the caller graph for this function:

◆ MHD_uint64_to_str()

size_t MHD_uint64_to_str ( uint64_t  val,
char *  buf,
size_t  buf_size 
)

Convert uint64_t value to decimal US-ASCII string.

Note
: result is NOT zero-terminated.
Parameters
valthe value to convert
bufthe buffer to result to
buf_sizesize of the buffer
Returns
number of characters has been put to the buf, zero if buffer is too small (buffer may be modified).

< pointer to the current printed digit

Definition at line 1275 of file mhd_str.c.

References mhd_assert.

Referenced by build_header_response().

Here is the caller graph for this function:

◆ MHD_uint8_to_str_pad()

size_t MHD_uint8_to_str_pad ( uint8_t  val,
uint8_t  min_digits,
char *  buf,
size_t  buf_size 
)

Convert uint16_t value to decimal US-ASCII string padded with zeros on the left side.

Note
: result is NOT zero-terminated.
Parameters
valthe value to convert
min_digitsthe minimal number of digits to print, output padded with zeros on the left side, 'zero' value is interpreted as 'one', valid values are 3, 2, 1, 0
bufthe buffer to result to
buf_sizesize of the buffer
Returns
number of characters has been put to the buf, zero if buffer is too small (buffer may be modified).

< the position of the current printed digit

Definition at line 1313 of file mhd_str.c.

References mhd_assert.

Referenced by get_date_str().

Here is the caller graph for this function: