From Harald Welte:
[obnox/wireshark/wip.git] / epan / strutil.h
index 4303bf0c43c495b795ca38bc837ac5f78bfce59e..8c1dbcbc903b5cb0153ea30de1f5e887b4f7e4fd 100644 (file)
 #ifndef __STRUTIL_H__
 #define __STRUTIL_H__
 
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
 /* ... thus, config.h needs to be #included */
 
 /** @file
@@ -64,6 +68,17 @@ int        get_token_len(const guchar *linep, const guchar *lineend,
  */
 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.
@@ -141,7 +156,7 @@ gboolean   oid_str_to_bytes(const char *oid_str, GByteArray *bytes);
  * @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);
 
@@ -154,7 +169,7 @@ 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);
 
@@ -182,7 +197,7 @@ gchar*     xml_escape(const gchar *unescaped);
 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)
 
@@ -228,20 +243,37 @@ char * escape_string(char *dst, const char *string);
 
 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__ */