Mercurial > trustbridge
annotate common/strhelp.h @ 214:aab742690bee
Fix check for selected items and wait for bytes written.
According to the documentation closing the write channel
should suffice. But in testing it did not sent over everything.
author | Andre Heinecke <andre.heinecke@intevation.de> |
---|---|
date | Wed, 26 Mar 2014 17:17:19 +0100 |
parents | 1f44aae4528e |
children | 6b4ad6ccc48e |
rev | line source |
---|---|
60
6acb1dae6185
Use strn functions and improve error handling.
Andre Heinecke <aheinecke@intevation.de>
parents:
59
diff
changeset
|
1 #ifndef STRHELP_H |
6acb1dae6185
Use strn functions and improve error handling.
Andre Heinecke <aheinecke@intevation.de>
parents:
59
diff
changeset
|
2 #define STRHELP_H |
118
d6a74464430b
Fix doxygen documentation.
Sascha Wilde <wilde@intevation.de>
parents:
116
diff
changeset
|
3 |
184
1f44aae4528e
Add C linkage for strhelp. Check for data in commontest.
Andre Heinecke <aheinecke@intevation.de>
parents:
160
diff
changeset
|
4 #ifdef __cplusplus |
1f44aae4528e
Add C linkage for strhelp. Check for data in commontest.
Andre Heinecke <aheinecke@intevation.de>
parents:
160
diff
changeset
|
5 extern "C" { |
1f44aae4528e
Add C linkage for strhelp. Check for data in commontest.
Andre Heinecke <aheinecke@intevation.de>
parents:
160
diff
changeset
|
6 #endif |
1f44aae4528e
Add C linkage for strhelp. Check for data in commontest.
Andre Heinecke <aheinecke@intevation.de>
parents:
160
diff
changeset
|
7 |
131
9104b1b2e4da
Added string comparison functions.
Sascha Wilde <wilde@intevation.de>
parents:
120
diff
changeset
|
8 #include <stdbool.h> |
9104b1b2e4da
Added string comparison functions.
Sascha Wilde <wilde@intevation.de>
parents:
120
diff
changeset
|
9 |
118
d6a74464430b
Fix doxygen documentation.
Sascha Wilde <wilde@intevation.de>
parents:
116
diff
changeset
|
10 /** |
d6a74464430b
Fix doxygen documentation.
Sascha Wilde <wilde@intevation.de>
parents:
116
diff
changeset
|
11 * @file strhelp.h |
d6a74464430b
Fix doxygen documentation.
Sascha Wilde <wilde@intevation.de>
parents:
116
diff
changeset
|
12 * @brief Helper functions for c strings and memory management |
d6a74464430b
Fix doxygen documentation.
Sascha Wilde <wilde@intevation.de>
parents:
116
diff
changeset
|
13 * @details strhelp contains terminating memory allocation functions and |
d6a74464430b
Fix doxygen documentation.
Sascha Wilde <wilde@intevation.de>
parents:
116
diff
changeset
|
14 * some conveniance functions to work with c strings or arrays of c |
d6a74464430b
Fix doxygen documentation.
Sascha Wilde <wilde@intevation.de>
parents:
116
diff
changeset
|
15 * strings. |
59
3f6378647371
Start work on cinst. Strhelp new helpers to work with C String
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
16 */ |
118
d6a74464430b
Fix doxygen documentation.
Sascha Wilde <wilde@intevation.de>
parents:
116
diff
changeset
|
17 |
59
3f6378647371
Start work on cinst. Strhelp new helpers to work with C String
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
18 void *xmalloc( size_t n ); |
3f6378647371
Start work on cinst. Strhelp new helpers to work with C String
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
19 void *xrealloc( void *a, size_t n ); |
3f6378647371
Start work on cinst. Strhelp new helpers to work with C String
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
20 void *xcalloc( size_t n, size_t m ); |
60
6acb1dae6185
Use strn functions and improve error handling.
Andre Heinecke <aheinecke@intevation.de>
parents:
59
diff
changeset
|
21 char *xstrndup( const char *string, const size_t len ); |
59
3f6378647371
Start work on cinst. Strhelp new helpers to work with C String
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
22 |
3f6378647371
Start work on cinst. Strhelp new helpers to work with C String
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
23 /** |
118
d6a74464430b
Fix doxygen documentation.
Sascha Wilde <wilde@intevation.de>
parents:
116
diff
changeset
|
24 * @brief Returns the length of the given %NULL-terminated |
d6a74464430b
Fix doxygen documentation.
Sascha Wilde <wilde@intevation.de>
parents:
116
diff
changeset
|
25 * string array str_array. |
120
702033705bb8
Removed trailing whitespace.
Sascha Wilde <wilde@intevation.de>
parents:
118
diff
changeset
|
26 * @param[in] str_array a %NULL-terminated array of strings |
118
d6a74464430b
Fix doxygen documentation.
Sascha Wilde <wilde@intevation.de>
parents:
116
diff
changeset
|
27 * @returns length of str_array. |
59
3f6378647371
Start work on cinst. Strhelp new helpers to work with C String
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
28 */ |
3f6378647371
Start work on cinst. Strhelp new helpers to work with C String
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
29 unsigned int strv_length (char **str_array); |
3f6378647371
Start work on cinst. Strhelp new helpers to work with C String
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
30 |
118
d6a74464430b
Fix doxygen documentation.
Sascha Wilde <wilde@intevation.de>
parents:
116
diff
changeset
|
31 /** |
d6a74464430b
Fix doxygen documentation.
Sascha Wilde <wilde@intevation.de>
parents:
116
diff
changeset
|
32 * @brief append a string to a NULL terminated array of strings. |
59
3f6378647371
Start work on cinst. Strhelp new helpers to work with C String
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
33 * |
118
d6a74464430b
Fix doxygen documentation.
Sascha Wilde <wilde@intevation.de>
parents:
116
diff
changeset
|
34 * @param[inout] pArray pointer to the NULL terminated list of string pointers. |
59
3f6378647371
Start work on cinst. Strhelp new helpers to work with C String
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
35 * @param[in] string pointer to the string to append to the list. |
60
6acb1dae6185
Use strn functions and improve error handling.
Andre Heinecke <aheinecke@intevation.de>
parents:
59
diff
changeset
|
36 * @param[in] len length of the string to append to the list |
118
d6a74464430b
Fix doxygen documentation.
Sascha Wilde <wilde@intevation.de>
parents:
116
diff
changeset
|
37 */ |
116
c602d8cfa619
Refactoring: unified naming of string vector functions.
Sascha Wilde <wilde@intevation.de>
parents:
91
diff
changeset
|
38 void strv_append (char ***pArray, const char *string, const size_t len); |
59
3f6378647371
Start work on cinst. Strhelp new helpers to work with C String
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
39 |
118
d6a74464430b
Fix doxygen documentation.
Sascha Wilde <wilde@intevation.de>
parents:
116
diff
changeset
|
40 /** |
d6a74464430b
Fix doxygen documentation.
Sascha Wilde <wilde@intevation.de>
parents:
116
diff
changeset
|
41 * @brief append a string to another string. |
59
3f6378647371
Start work on cinst. Strhelp new helpers to work with C String
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
42 * |
3f6378647371
Start work on cinst. Strhelp new helpers to work with C String
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
43 * @param[inout] pDst pointer to the string to be extended. |
91
80ab2168760f
Also add output size handling to str_append_str
Andre Heinecke <aheinecke@intevation.de>
parents:
60
diff
changeset
|
44 * @param[inout] dst_len length of the dst string. Will be modified. |
59
3f6378647371
Start work on cinst. Strhelp new helpers to work with C String
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
45 * @param[in] appendage pointer to the string to append. |
60
6acb1dae6185
Use strn functions and improve error handling.
Andre Heinecke <aheinecke@intevation.de>
parents:
59
diff
changeset
|
46 * @param[in] len length of the string to append. |
118
d6a74464430b
Fix doxygen documentation.
Sascha Wilde <wilde@intevation.de>
parents:
116
diff
changeset
|
47 */ |
116
c602d8cfa619
Refactoring: unified naming of string vector functions.
Sascha Wilde <wilde@intevation.de>
parents:
91
diff
changeset
|
48 void str_append_str (char **pDst, size_t *dst_len, const char *appendage, |
91
80ab2168760f
Also add output size handling to str_append_str
Andre Heinecke <aheinecke@intevation.de>
parents:
60
diff
changeset
|
49 const size_t len); |
59
3f6378647371
Start work on cinst. Strhelp new helpers to work with C String
Andre Heinecke <aheinecke@intevation.de>
parents:
diff
changeset
|
50 |
118
d6a74464430b
Fix doxygen documentation.
Sascha Wilde <wilde@intevation.de>
parents:
116
diff
changeset
|
51 /** |
d6a74464430b
Fix doxygen documentation.
Sascha Wilde <wilde@intevation.de>
parents:
116
diff
changeset
|
52 * @brief Frees the given %NULL-terminated string array. |
120
702033705bb8
Removed trailing whitespace.
Sascha Wilde <wilde@intevation.de>
parents:
118
diff
changeset
|
53 * @param[inout] str_array a %NULL-terminated array of strings |
118
d6a74464430b
Fix doxygen documentation.
Sascha Wilde <wilde@intevation.de>
parents:
116
diff
changeset
|
54 */ |
116
c602d8cfa619
Refactoring: unified naming of string vector functions.
Sascha Wilde <wilde@intevation.de>
parents:
91
diff
changeset
|
55 void strv_free (char **str_array); |
131
9104b1b2e4da
Added string comparison functions.
Sascha Wilde <wilde@intevation.de>
parents:
120
diff
changeset
|
56 |
9104b1b2e4da
Added string comparison functions.
Sascha Wilde <wilde@intevation.de>
parents:
120
diff
changeset
|
57 /** |
9104b1b2e4da
Added string comparison functions.
Sascha Wilde <wilde@intevation.de>
parents:
120
diff
changeset
|
58 * @brief Checks whether two strings exactly match |
9104b1b2e4da
Added string comparison functions.
Sascha Wilde <wilde@intevation.de>
parents:
120
diff
changeset
|
59 * @param[in] s1 the first string |
9104b1b2e4da
Added string comparison functions.
Sascha Wilde <wilde@intevation.de>
parents:
120
diff
changeset
|
60 * @param[in] s2 the second string |
9104b1b2e4da
Added string comparison functions.
Sascha Wilde <wilde@intevation.de>
parents:
120
diff
changeset
|
61 * @returns true if s1 and s2 are equal |
9104b1b2e4da
Added string comparison functions.
Sascha Wilde <wilde@intevation.de>
parents:
120
diff
changeset
|
62 */ |
9104b1b2e4da
Added string comparison functions.
Sascha Wilde <wilde@intevation.de>
parents:
120
diff
changeset
|
63 bool str_equal (char *s1, char *s2); |
9104b1b2e4da
Added string comparison functions.
Sascha Wilde <wilde@intevation.de>
parents:
120
diff
changeset
|
64 |
9104b1b2e4da
Added string comparison functions.
Sascha Wilde <wilde@intevation.de>
parents:
120
diff
changeset
|
65 /** |
9104b1b2e4da
Added string comparison functions.
Sascha Wilde <wilde@intevation.de>
parents:
120
diff
changeset
|
66 * @brief Checks whether s2 exactly matches the beginning of s1. |
9104b1b2e4da
Added string comparison functions.
Sascha Wilde <wilde@intevation.de>
parents:
120
diff
changeset
|
67 * @param[in] s1 the string who's beginning is searched |
9104b1b2e4da
Added string comparison functions.
Sascha Wilde <wilde@intevation.de>
parents:
120
diff
changeset
|
68 * @param[in] s2 the string which is searched for |
9104b1b2e4da
Added string comparison functions.
Sascha Wilde <wilde@intevation.de>
parents:
120
diff
changeset
|
69 * @returns true if s1 starts with s2, false otherwise |
9104b1b2e4da
Added string comparison functions.
Sascha Wilde <wilde@intevation.de>
parents:
120
diff
changeset
|
70 */ |
9104b1b2e4da
Added string comparison functions.
Sascha Wilde <wilde@intevation.de>
parents:
120
diff
changeset
|
71 bool str_starts_with (char *s1, char *s2); |
9104b1b2e4da
Added string comparison functions.
Sascha Wilde <wilde@intevation.de>
parents:
120
diff
changeset
|
72 |
133
c719d3fdbc15
Added functrion to trim white space from string.
Sascha Wilde <wilde@intevation.de>
parents:
131
diff
changeset
|
73 /** |
c719d3fdbc15
Added functrion to trim white space from string.
Sascha Wilde <wilde@intevation.de>
parents:
131
diff
changeset
|
74 * @brief Trims all white space from the start and end of string. |
c719d3fdbc15
Added functrion to trim white space from string.
Sascha Wilde <wilde@intevation.de>
parents:
131
diff
changeset
|
75 * @details the start of the string is trimmed by setting *s to the |
c719d3fdbc15
Added functrion to trim white space from string.
Sascha Wilde <wilde@intevation.de>
parents:
131
diff
changeset
|
76 * first non white space character. The end is trimmed by setting the |
c719d3fdbc15
Added functrion to trim white space from string.
Sascha Wilde <wilde@intevation.de>
parents:
131
diff
changeset
|
77 * first character after the last non white space character to \0. |
c719d3fdbc15
Added functrion to trim white space from string.
Sascha Wilde <wilde@intevation.de>
parents:
131
diff
changeset
|
78 * @param[inout] s ponter to the string to strip |
c719d3fdbc15
Added functrion to trim white space from string.
Sascha Wilde <wilde@intevation.de>
parents:
131
diff
changeset
|
79 */ |
c719d3fdbc15
Added functrion to trim white space from string.
Sascha Wilde <wilde@intevation.de>
parents:
131
diff
changeset
|
80 bool str_trim (char **s); |
c719d3fdbc15
Added functrion to trim white space from string.
Sascha Wilde <wilde@intevation.de>
parents:
131
diff
changeset
|
81 |
160
bf4bfd8843bd
Add memory allocating base64 decode function
Andre Heinecke <aheinecke@intevation.de>
parents:
133
diff
changeset
|
82 /** @brief decode base64 encoded data |
bf4bfd8843bd
Add memory allocating base64 decode function
Andre Heinecke <aheinecke@intevation.de>
parents:
133
diff
changeset
|
83 * |
bf4bfd8843bd
Add memory allocating base64 decode function
Andre Heinecke <aheinecke@intevation.de>
parents:
133
diff
changeset
|
84 * The memory allocated for dest needs to be free'd by the |
bf4bfd8843bd
Add memory allocating base64 decode function
Andre Heinecke <aheinecke@intevation.de>
parents:
133
diff
changeset
|
85 * caller. |
bf4bfd8843bd
Add memory allocating base64 decode function
Andre Heinecke <aheinecke@intevation.de>
parents:
133
diff
changeset
|
86 * |
bf4bfd8843bd
Add memory allocating base64 decode function
Andre Heinecke <aheinecke@intevation.de>
parents:
133
diff
changeset
|
87 * @param [out] dst Pointer to the destination. Needs to be NULL |
bf4bfd8843bd
Add memory allocating base64 decode function
Andre Heinecke <aheinecke@intevation.de>
parents:
133
diff
changeset
|
88 * @param [out] dst_size Size allocated for the destination. |
bf4bfd8843bd
Add memory allocating base64 decode function
Andre Heinecke <aheinecke@intevation.de>
parents:
133
diff
changeset
|
89 * @param [in] src Pointer to the base64 encoded data. |
bf4bfd8843bd
Add memory allocating base64 decode function
Andre Heinecke <aheinecke@intevation.de>
parents:
133
diff
changeset
|
90 * @param [in] src_size Size of the encoded data. |
bf4bfd8843bd
Add memory allocating base64 decode function
Andre Heinecke <aheinecke@intevation.de>
parents:
133
diff
changeset
|
91 * |
bf4bfd8843bd
Add memory allocating base64 decode function
Andre Heinecke <aheinecke@intevation.de>
parents:
133
diff
changeset
|
92 * @returns 0 on success a polarssl error or -1 otherwise |
bf4bfd8843bd
Add memory allocating base64 decode function
Andre Heinecke <aheinecke@intevation.de>
parents:
133
diff
changeset
|
93 */ |
bf4bfd8843bd
Add memory allocating base64 decode function
Andre Heinecke <aheinecke@intevation.de>
parents:
133
diff
changeset
|
94 int str_base64_decode(char **dst, size_t *dst_size, char *src, |
bf4bfd8843bd
Add memory allocating base64 decode function
Andre Heinecke <aheinecke@intevation.de>
parents:
133
diff
changeset
|
95 size_t src_size); |
184
1f44aae4528e
Add C linkage for strhelp. Check for data in commontest.
Andre Heinecke <aheinecke@intevation.de>
parents:
160
diff
changeset
|
96 #ifdef __cplusplus |
1f44aae4528e
Add C linkage for strhelp. Check for data in commontest.
Andre Heinecke <aheinecke@intevation.de>
parents:
160
diff
changeset
|
97 } |
1f44aae4528e
Add C linkage for strhelp. Check for data in commontest.
Andre Heinecke <aheinecke@intevation.de>
parents:
160
diff
changeset
|
98 #endif |
160
bf4bfd8843bd
Add memory allocating base64 decode function
Andre Heinecke <aheinecke@intevation.de>
parents:
133
diff
changeset
|
99 |
60
6acb1dae6185
Use strn functions and improve error handling.
Andre Heinecke <aheinecke@intevation.de>
parents:
59
diff
changeset
|
100 #endif |