#ifndef __STRUTIL_H__
#define __STRUTIL_H__
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
/* ... thus, config.h needs to be #included */
/** @file
*/
gchar* format_text(const guchar *line, size_t len);
+/**
+ * Given a string, generate a string from it that shows non-printable
+ * characters as C-style escapes except a whitespace character
+ * (space, tab, carriage return, new line, vertical tab, or formfeed)
+ * which will be replaced by a space, and return a pointer to it.
+ *
+ * @param line A pointer to the input string
+ * @param len The length of the input string
+ * @return A pointer to the formatted string
+ *
+ */
gchar* format_text_wsp(const guchar *line, size_t len);
/** Turn an array of bytes into a string showing the bytes in hex.
* @param ba The byte array to be copied.
* @return If ba exists, a freshly allocated copy. NULL otherwise.
*
- * XXX - Should this be in strutil.c?
+ * @todo - Should this be in strutil.c?
*/
GByteArray *byte_array_dup(GByteArray *ba);
* their contents are equal, returns TRUE. Otherwise, returns
* FALSE.
*
- * XXX - Should this be in strutil.c?
+ * @todo - Should this be in strutil.c?
*/
gboolean byte_array_equal(GByteArray *ba1, GByteArray *ba2);
const guint8 * epan_memmem(const guint8 *haystack, guint haystack_len,
const guint8 *needle, guint needle_len);
-/* Surround a string or a macro, resolved to a string, with double quotes */
+/** Surround a string or a macro, resolved to a string, with double quotes */
#define _STRINGIFY(a) # a
#define STRINGIFY(a) _STRINGIFY(a)
void IA5_7BIT_decode(unsigned char * dest, const unsigned char* src, int len);
-/** Copy a string, escaping the underscores in it
+/** Copy a string, escaping the 'chr' characters in it
*
* @param str The string to be copied
- * @return A copy of the string with every original underscore being
- * transformed into double underscores.
+ * @param char The character to be escaped
+ * @return A copy of the string with every original 'chr' being
+ * transformed into double 'chr'.
*/
-gchar* ws_strdup_escape_underscore (const gchar *str);
+gchar* ws_strdup_escape_char (const gchar *str, const gchar chr);
-/** Copy a string, unescaping the underscores in it
+/** Copy a string, unescaping the 'chr' characters in it
*
* @param str The string to be copied
- * @return A copy of the string with every occurence of double underscores in
- * the original string being copied as a single underscore.
+ * @param char The character to be escaped
+ * @return A copy of the string with every occurence of double 'chr' in
+ * the original string being copied as a single 'chr'.
+ */
+gchar* ws_strdup_unescape_char (const gchar *str, const gchar chr);
+
+/** Replace values in a string
+ *
+ * @param str String containing 0 or more values to be replaced.
+ * @param old_val Old value.
+ * @param new_val New value. May be NULL, in which case occurences of
+ * old_value will be removed.
+ * @return A newly-allocated version of str with replacement values or
+ * NULL on failure.
*/
-gchar* ws_strdup_unescape_underscore (const gchar *str);
+gchar *string_replace(const gchar* str, const gchar *old_val, const gchar *new_val);
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
#endif /* __STRUTIL_H__ */