/*-------------------------------------------------------------*/
/***************************************************************
* An hexadecimal string is for example: *
* 010A 0b00Ff *
***************************************************************/
/*-------------------------------------------------------------*/
/***************************************************************
* A mixed string permits to represent data as a clear form *
* using hexadecimal and text. *
* Hexadecimal is used without "0x" or "0h" *
* Text is included between apostrophes "'" *
* The character ' is '' *
* For example : *
* 'hello' : data "hello" *
* 'a' 'b' : data "ab" *
* 41 'b' : data "Ab" (because 'A'==0x41) *
* 'man'00 : data "man" ending with 0x00 *
* 'a''b' : data "a'b" *
* Real examples : *
* 'hello' 0D 0A 'this is after a newline' *
* 'one' 09 'two' 0D 0A *
***************************************************************/
/*-------------------------------------------------------------*/
typedef enum {
NETWIB_DECODETYPE_DATA = 1, /* exact data */
NETWIB_DECODETYPE_HEXA, /* hexadecimal */
NETWIB_DECODETYPE_MIXED, /* mixed */
NETWIB_DECODETYPE_BASE64 /* base64 */
} netwib_decodetype;
/*-------------------------------------------------------------*/
/* Name : netwib_buf_decode
Description :
Append a decoded buffer.
Input parameter(s) :
*pbuftodecode : buffer to decode
decodetype : decoding type
Input/output parameter(s) :
*pbuf : netwib_buf updated
Output parameter(s) :
Normal return values :
NETWIB_ERR_OK : ok
This function supports NETWIB_BUF_FLAGS_SENSITIVE.
*/
netwib_err netwib_buf_decode(netwib_constbuf *pbuftodecode,
netwib_decodetype decodetype,
netwib_buf *pbuf);
#define netwib_buf_decode_data(pbuftodecode,pbuf) netwib_buf_decode(pbuftodecode,NETWIB_DECODETYPE_DATA,pbuf)
#define netwib_buf_decode_hexa(pbuftodecode,pbuf) netwib_buf_decode(pbuftodecode,NETWIB_DECODETYPE_HEXA,pbuf)
#define netwib_buf_decode_mixed(pbuftodecode,pbuf) netwib_buf_decode(pbuftodecode,NETWIB_DECODETYPE_MIXED,pbuf)
#define netwib_buf_decode_base64(pbuftodecode,pbuf) netwib_buf_decode(pbuftodecode,NETWIB_DECODETYPE_BASE64,pbuf)
/*-------------------------------------------------------------*/
/***************************************************************
* A quoted string is for example: *
* hello "hello" "hel\nlo" "abc d \\ \n \" \x00 z" *
* It is particularly adapted to decode program's parameters, *
* which can be enclosed, or not, between '"' character. *
* It is special : *
* - decoding stops after first valid parameter *
* - pbuftodecode is updated *
* Specifications: *
* General : *
* Leading spaces or tabulations are ignored. *
* Ending spaces, tabulations, NL or LF are ignored. *
* Buffer pbuftodecode has beginoffset updated to point *
* past the decoded string (after optional ending spaces). *
* When end is reached, without reading data, error *
* NETWIB_ERR_DATAEND is returned. *
* Quoted strings (ex : "aa", "a\nb") : *
* Char '\' can be used before any char. It means the *
* char following, except for sequences \a(alarm bell) *
* \b(backspace) \t(tab) \n(NL) \r(LF) and *
* \x(hexa code of a character). *
* All chars, including NL and LF, are read till finding *
* the last ". If it is not found, error *
* NETWIB_ERR_DATANOTAVAIL is returned (nothing is saved *
* in pbuf). *
* Unquoted strings (ex : aa, a\b) *
* Char '\' only means char '\'. *
* Read is stopped when a space, tab, NL or LF is found, *
* or when end of pbuftodecode is reached. *
***************************************************************/
/*-------------------------------------------------------------*/
/* Name : netwib_buf_decode_quoted
Description :
Append a decoded buffer.
Input parameter(s) :
*pbuftodecode : buffer to decode
decodetype : decoding type
Input/output parameter(s) :
*pbuf : netwib_buf updated
Output parameter(s) :
Normal return values :
NETWIB_ERR_OK : ok
This function supports NETWIB_BUF_FLAGS_SENSITIVE.
*/
netwib_err netwib_buf_decode_quoted(netwib_buf *pbuftodecode,
netwib_buf *pbuf);