annotate common/strhelp.h @ 289:9ad00a3255f4

Change cinst from stdin input to use arguments. As we have to execute this process on Windows over the shell a stdin / stdout communication is not really possible without some major hacks. So you now have to supply an instructions file and the path to the certificatelist as arguments when this process is called
author Andre Heinecke <aheinecke@intevation.de>
date Wed, 02 Apr 2014 13:52:02 +0000
parents c596568fa45b
children 4077eff1dd39
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>
251
c596568fa45b Add utf16 conversion functions for Windows.
Andre Heinecke <aheinecke@intevation.de>
parents: 239
diff changeset
9 #include <stddef.h>
131
9104b1b2e4da Added string comparison functions.
Sascha Wilde <wilde@intevation.de>
parents: 120
diff changeset
10
118
d6a74464430b Fix doxygen documentation.
Sascha Wilde <wilde@intevation.de>
parents: 116
diff changeset
11 /**
d6a74464430b Fix doxygen documentation.
Sascha Wilde <wilde@intevation.de>
parents: 116
diff changeset
12 * @file strhelp.h
d6a74464430b Fix doxygen documentation.
Sascha Wilde <wilde@intevation.de>
parents: 116
diff changeset
13 * @brief Helper functions for c strings and memory management
d6a74464430b Fix doxygen documentation.
Sascha Wilde <wilde@intevation.de>
parents: 116
diff changeset
14 * @details strhelp contains terminating memory allocation functions and
d6a74464430b Fix doxygen documentation.
Sascha Wilde <wilde@intevation.de>
parents: 116
diff changeset
15 * 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
16 * strings.
59
3f6378647371 Start work on cinst. Strhelp new helpers to work with C String
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
17 */
118
d6a74464430b Fix doxygen documentation.
Sascha Wilde <wilde@intevation.de>
parents: 116
diff changeset
18
59
3f6378647371 Start work on cinst. Strhelp new helpers to work with C String
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
19 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
20 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
21 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
22 char *xstrndup( const char *string, const size_t len );
251
c596568fa45b Add utf16 conversion functions for Windows.
Andre Heinecke <aheinecke@intevation.de>
parents: 239
diff changeset
23 void xfree ( void *p );
59
3f6378647371 Start work on cinst. Strhelp new helpers to work with C String
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
24
3f6378647371 Start work on cinst. Strhelp new helpers to work with C String
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
25 /**
118
d6a74464430b Fix doxygen documentation.
Sascha Wilde <wilde@intevation.de>
parents: 116
diff changeset
26 * @brief Returns the length of the given %NULL-terminated
d6a74464430b Fix doxygen documentation.
Sascha Wilde <wilde@intevation.de>
parents: 116
diff changeset
27 * string array str_array.
120
702033705bb8 Removed trailing whitespace.
Sascha Wilde <wilde@intevation.de>
parents: 118
diff changeset
28 * @param[in] str_array a %NULL-terminated array of strings
118
d6a74464430b Fix doxygen documentation.
Sascha Wilde <wilde@intevation.de>
parents: 116
diff changeset
29 * @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
30 */
3f6378647371 Start work on cinst. Strhelp new helpers to work with C String
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
31 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
32
118
d6a74464430b Fix doxygen documentation.
Sascha Wilde <wilde@intevation.de>
parents: 116
diff changeset
33 /**
d6a74464430b Fix doxygen documentation.
Sascha Wilde <wilde@intevation.de>
parents: 116
diff changeset
34 * @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
35 *
118
d6a74464430b Fix doxygen documentation.
Sascha Wilde <wilde@intevation.de>
parents: 116
diff changeset
36 * @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
37 * @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
38 * @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
39 */
116
c602d8cfa619 Refactoring: unified naming of string vector functions.
Sascha Wilde <wilde@intevation.de>
parents: 91
diff changeset
40 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
41
118
d6a74464430b Fix doxygen documentation.
Sascha Wilde <wilde@intevation.de>
parents: 116
diff changeset
42 /**
d6a74464430b Fix doxygen documentation.
Sascha Wilde <wilde@intevation.de>
parents: 116
diff changeset
43 * @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
44 *
3f6378647371 Start work on cinst. Strhelp new helpers to work with C String
Andre Heinecke <aheinecke@intevation.de>
parents:
diff changeset
45 * @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
46 * @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
47 * @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
48 * @param[in] len length of the string to append.
118
d6a74464430b Fix doxygen documentation.
Sascha Wilde <wilde@intevation.de>
parents: 116
diff changeset
49 */
116
c602d8cfa619 Refactoring: unified naming of string vector functions.
Sascha Wilde <wilde@intevation.de>
parents: 91
diff changeset
50 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
51 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
52
118
d6a74464430b Fix doxygen documentation.
Sascha Wilde <wilde@intevation.de>
parents: 116
diff changeset
53 /**
d6a74464430b Fix doxygen documentation.
Sascha Wilde <wilde@intevation.de>
parents: 116
diff changeset
54 * @brief Frees the given %NULL-terminated string array.
120
702033705bb8 Removed trailing whitespace.
Sascha Wilde <wilde@intevation.de>
parents: 118
diff changeset
55 * @param[inout] str_array a %NULL-terminated array of strings
118
d6a74464430b Fix doxygen documentation.
Sascha Wilde <wilde@intevation.de>
parents: 116
diff changeset
56 */
116
c602d8cfa619 Refactoring: unified naming of string vector functions.
Sascha Wilde <wilde@intevation.de>
parents: 91
diff changeset
57 void strv_free (char **str_array);
131
9104b1b2e4da Added string comparison functions.
Sascha Wilde <wilde@intevation.de>
parents: 120
diff changeset
58
9104b1b2e4da Added string comparison functions.
Sascha Wilde <wilde@intevation.de>
parents: 120
diff changeset
59 /**
9104b1b2e4da Added string comparison functions.
Sascha Wilde <wilde@intevation.de>
parents: 120
diff changeset
60 * @brief Checks whether two strings exactly match
9104b1b2e4da Added string comparison functions.
Sascha Wilde <wilde@intevation.de>
parents: 120
diff changeset
61 * @param[in] s1 the first string
9104b1b2e4da Added string comparison functions.
Sascha Wilde <wilde@intevation.de>
parents: 120
diff changeset
62 * @param[in] s2 the second string
9104b1b2e4da Added string comparison functions.
Sascha Wilde <wilde@intevation.de>
parents: 120
diff changeset
63 * @returns true if s1 and s2 are equal
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 bool str_equal (char *s1, char *s2);
9104b1b2e4da Added string comparison functions.
Sascha Wilde <wilde@intevation.de>
parents: 120
diff changeset
66
9104b1b2e4da Added string comparison functions.
Sascha Wilde <wilde@intevation.de>
parents: 120
diff changeset
67 /**
9104b1b2e4da Added string comparison functions.
Sascha Wilde <wilde@intevation.de>
parents: 120
diff changeset
68 * @brief Checks whether s2 exactly matches the beginning of s1.
9104b1b2e4da Added string comparison functions.
Sascha Wilde <wilde@intevation.de>
parents: 120
diff changeset
69 * @param[in] s1 the string who's beginning is searched
9104b1b2e4da Added string comparison functions.
Sascha Wilde <wilde@intevation.de>
parents: 120
diff changeset
70 * @param[in] s2 the string which is searched for
9104b1b2e4da Added string comparison functions.
Sascha Wilde <wilde@intevation.de>
parents: 120
diff changeset
71 * @returns true if s1 starts with s2, false otherwise
9104b1b2e4da Added string comparison functions.
Sascha Wilde <wilde@intevation.de>
parents: 120
diff changeset
72 */
9104b1b2e4da Added string comparison functions.
Sascha Wilde <wilde@intevation.de>
parents: 120
diff changeset
73 bool str_starts_with (char *s1, char *s2);
9104b1b2e4da Added string comparison functions.
Sascha Wilde <wilde@intevation.de>
parents: 120
diff changeset
74
133
c719d3fdbc15 Added functrion to trim white space from string.
Sascha Wilde <wilde@intevation.de>
parents: 131
diff changeset
75 /**
c719d3fdbc15 Added functrion to trim white space from string.
Sascha Wilde <wilde@intevation.de>
parents: 131
diff changeset
76 * @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
77 * @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
78 * 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
79 * 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
80 * @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
81 */
c719d3fdbc15 Added functrion to trim white space from string.
Sascha Wilde <wilde@intevation.de>
parents: 131
diff changeset
82 bool str_trim (char **s);
c719d3fdbc15 Added functrion to trim white space from string.
Sascha Wilde <wilde@intevation.de>
parents: 131
diff changeset
83
160
bf4bfd8843bd Add memory allocating base64 decode function
Andre Heinecke <aheinecke@intevation.de>
parents: 133
diff changeset
84 /** @brief decode base64 encoded data
bf4bfd8843bd Add memory allocating base64 decode function
Andre Heinecke <aheinecke@intevation.de>
parents: 133
diff changeset
85 *
bf4bfd8843bd Add memory allocating base64 decode function
Andre Heinecke <aheinecke@intevation.de>
parents: 133
diff changeset
86 * 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
87 * caller.
bf4bfd8843bd Add memory allocating base64 decode function
Andre Heinecke <aheinecke@intevation.de>
parents: 133
diff changeset
88 *
239
6b4ad6ccc48e Change the specification of str_b64_decode so that it matches the
Andre Heinecke <aheinecke@intevation.de>
parents: 184
diff changeset
89 * _Input warning:_
6b4ad6ccc48e Change the specification of str_b64_decode so that it matches the
Andre Heinecke <aheinecke@intevation.de>
parents: 184
diff changeset
90 * If the input contains invalid base64 characters an error
6b4ad6ccc48e Change the specification of str_b64_decode so that it matches the
Andre Heinecke <aheinecke@intevation.de>
parents: 184
diff changeset
91 * is returned.
6b4ad6ccc48e Change the specification of str_b64_decode so that it matches the
Andre Heinecke <aheinecke@intevation.de>
parents: 184
diff changeset
92 *
6b4ad6ccc48e Change the specification of str_b64_decode so that it matches the
Andre Heinecke <aheinecke@intevation.de>
parents: 184
diff changeset
93 * If the input is invalid base64 but consists of valid
6b4ad6ccc48e Change the specification of str_b64_decode so that it matches the
Andre Heinecke <aheinecke@intevation.de>
parents: 184
diff changeset
94 * base64 characters _no error_ is returned and dst contains
6b4ad6ccc48e Change the specification of str_b64_decode so that it matches the
Andre Heinecke <aheinecke@intevation.de>
parents: 184
diff changeset
95 * the valid input up to the error.
6b4ad6ccc48e Change the specification of str_b64_decode so that it matches the
Andre Heinecke <aheinecke@intevation.de>
parents: 184
diff changeset
96 *
160
bf4bfd8843bd Add memory allocating base64 decode function
Andre Heinecke <aheinecke@intevation.de>
parents: 133
diff changeset
97 * @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
98 * @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
99 * @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
100 * @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
101 *
bf4bfd8843bd Add memory allocating base64 decode function
Andre Heinecke <aheinecke@intevation.de>
parents: 133
diff changeset
102 * @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
103 */
bf4bfd8843bd Add memory allocating base64 decode function
Andre Heinecke <aheinecke@intevation.de>
parents: 133
diff changeset
104 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
105 size_t src_size);
251
c596568fa45b Add utf16 conversion functions for Windows.
Andre Heinecke <aheinecke@intevation.de>
parents: 239
diff changeset
106
c596568fa45b Add utf16 conversion functions for Windows.
Andre Heinecke <aheinecke@intevation.de>
parents: 239
diff changeset
107 #ifdef WIN32
c596568fa45b Add utf16 conversion functions for Windows.
Andre Heinecke <aheinecke@intevation.de>
parents: 239
diff changeset
108
c596568fa45b Add utf16 conversion functions for Windows.
Andre Heinecke <aheinecke@intevation.de>
parents: 239
diff changeset
109 /** @brief convert a utf8 string to utf16 wchar
c596568fa45b Add utf16 conversion functions for Windows.
Andre Heinecke <aheinecke@intevation.de>
parents: 239
diff changeset
110 *
c596568fa45b Add utf16 conversion functions for Windows.
Andre Heinecke <aheinecke@intevation.de>
parents: 239
diff changeset
111 * @param[in] string utf8 string. Must be at least len characters long.
c596568fa45b Add utf16 conversion functions for Windows.
Andre Heinecke <aheinecke@intevation.de>
parents: 239
diff changeset
112 * @param[in] len number of characters to be converted.
c596568fa45b Add utf16 conversion functions for Windows.
Andre Heinecke <aheinecke@intevation.de>
parents: 239
diff changeset
113 *
c596568fa45b Add utf16 conversion functions for Windows.
Andre Heinecke <aheinecke@intevation.de>
parents: 239
diff changeset
114 * @returns pointer to a newly allocated wchar array. NULL on error.
c596568fa45b Add utf16 conversion functions for Windows.
Andre Heinecke <aheinecke@intevation.de>
parents: 239
diff changeset
115 *
c596568fa45b Add utf16 conversion functions for Windows.
Andre Heinecke <aheinecke@intevation.de>
parents: 239
diff changeset
116 **/
c596568fa45b Add utf16 conversion functions for Windows.
Andre Heinecke <aheinecke@intevation.de>
parents: 239
diff changeset
117 wchar_t *utf8_to_wchar (const char *string, size_t len);
c596568fa45b Add utf16 conversion functions for Windows.
Andre Heinecke <aheinecke@intevation.de>
parents: 239
diff changeset
118
c596568fa45b Add utf16 conversion functions for Windows.
Andre Heinecke <aheinecke@intevation.de>
parents: 239
diff changeset
119 /** @brief convert a utf16 string to utf8
c596568fa45b Add utf16 conversion functions for Windows.
Andre Heinecke <aheinecke@intevation.de>
parents: 239
diff changeset
120 *
c596568fa45b Add utf16 conversion functions for Windows.
Andre Heinecke <aheinecke@intevation.de>
parents: 239
diff changeset
121 * @param[in] string utf16 string. Must be at least len characters long.
c596568fa45b Add utf16 conversion functions for Windows.
Andre Heinecke <aheinecke@intevation.de>
parents: 239
diff changeset
122 * @param[in] len number of characters to be converted.
c596568fa45b Add utf16 conversion functions for Windows.
Andre Heinecke <aheinecke@intevation.de>
parents: 239
diff changeset
123 *
c596568fa45b Add utf16 conversion functions for Windows.
Andre Heinecke <aheinecke@intevation.de>
parents: 239
diff changeset
124 * @returns pointer to a newly allocated char array. NULL on error.
c596568fa45b Add utf16 conversion functions for Windows.
Andre Heinecke <aheinecke@intevation.de>
parents: 239
diff changeset
125 *
c596568fa45b Add utf16 conversion functions for Windows.
Andre Heinecke <aheinecke@intevation.de>
parents: 239
diff changeset
126 **/
c596568fa45b Add utf16 conversion functions for Windows.
Andre Heinecke <aheinecke@intevation.de>
parents: 239
diff changeset
127 char *wchar_to_utf8 (const wchar_t *string, size_t len);
c596568fa45b Add utf16 conversion functions for Windows.
Andre Heinecke <aheinecke@intevation.de>
parents: 239
diff changeset
128 #endif
c596568fa45b Add utf16 conversion functions for Windows.
Andre Heinecke <aheinecke@intevation.de>
parents: 239
diff changeset
129
184
1f44aae4528e Add C linkage for strhelp. Check for data in commontest.
Andre Heinecke <aheinecke@intevation.de>
parents: 160
diff changeset
130 #ifdef __cplusplus
1f44aae4528e Add C linkage for strhelp. Check for data in commontest.
Andre Heinecke <aheinecke@intevation.de>
parents: 160
diff changeset
131 }
1f44aae4528e Add C linkage for strhelp. Check for data in commontest.
Andre Heinecke <aheinecke@intevation.de>
parents: 160
diff changeset
132 #endif
160
bf4bfd8843bd Add memory allocating base64 decode function
Andre Heinecke <aheinecke@intevation.de>
parents: 133
diff changeset
133
60
6acb1dae6185 Use strn functions and improve error handling.
Andre Heinecke <aheinecke@intevation.de>
parents: 59
diff changeset
134 #endif

http://wald.intevation.org/projects/trustbridge/