diff options
author | Marco Pesenti Gritti <marco@it.gnome.org> | 2003-01-03 04:24:53 +0800 |
---|---|---|
committer | Marco Pesenti Gritti <mpeseng@src.gnome.org> | 2003-01-03 04:24:53 +0800 |
commit | 71219970c53e84d98edc9ac59ef22c8b07fdffa8 (patch) | |
tree | ba834d7cb70b834e38a8de16c0a05c3a0b008b0f /lib/ephy-string.c | |
parent | 2dd166055fa8702ad52df80d2927f8560b4f73f6 (diff) | |
download | gsoc2013-epiphany-71219970c53e84d98edc9ac59ef22c8b07fdffa8.tar gsoc2013-epiphany-71219970c53e84d98edc9ac59ef22c8b07fdffa8.tar.gz gsoc2013-epiphany-71219970c53e84d98edc9ac59ef22c8b07fdffa8.tar.bz2 gsoc2013-epiphany-71219970c53e84d98edc9ac59ef22c8b07fdffa8.tar.lz gsoc2013-epiphany-71219970c53e84d98edc9ac59ef22c8b07fdffa8.tar.xz gsoc2013-epiphany-71219970c53e84d98edc9ac59ef22c8b07fdffa8.tar.zst gsoc2013-epiphany-71219970c53e84d98edc9ac59ef22c8b07fdffa8.zip |
Use gtk icons for dnd. Basic implementation of bookmarks importing. Still
2003-01-02 Marco Pesenti Gritti <marco@it.gnome.org>
* lib/ephy-string.c: (ephy_str_replace_substring):
* lib/ephy-string.h:
* lib/widgets/eggtreemultidnd.c:
(egg_tree_multi_drag_motion_event):
* src/bookmarks/Makefile.am:
Use gtk icons for dnd.
Basic implementation of bookmarks importing. Still
not used but functional.
Diffstat (limited to 'lib/ephy-string.c')
-rw-r--r-- | lib/ephy-string.c | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/lib/ephy-string.c b/lib/ephy-string.c index 7ca28cf1f..391b275f8 100644 --- a/lib/ephy-string.c +++ b/lib/ephy-string.c @@ -444,3 +444,58 @@ ephy_strsplit_multiple_delimiters_with_quotes (const gchar *string, return str_array; } + +char * +ephy_str_replace_substring (const char *string, + const char *substring, + const char *replacement) +{ + int substring_length, replacement_length, result_length, remaining_length; + const char *p, *substring_position; + char *result, *result_position; + + g_return_val_if_fail (substring != NULL, g_strdup (string)); + g_return_val_if_fail (substring[0] != '\0', g_strdup (string)); + + if (string == NULL) + { + return NULL; + } + + substring_length = strlen (substring); + replacement_length = replacement == NULL ? 0 : strlen (replacement); + + result_length = strlen (string); + for (p = string; ; p = substring_position + substring_length) + { + substring_position = strstr (p, substring); + if (substring_position == NULL) + { + break; + } + result_length += replacement_length - substring_length; + } + + result = g_malloc (result_length + 1); + + result_position = result; + for (p = string; ; p = substring_position + substring_length) + { + substring_position = strstr (p, substring); + if (substring_position == NULL) + { + remaining_length = strlen (p); + memcpy (result_position, p, remaining_length); + result_position += remaining_length; + break; + } + memcpy (result_position, p, substring_position - p); + result_position += substring_position - p; + memcpy (result_position, replacement, replacement_length); + result_position += replacement_length; + } + g_assert (result_position - result == result_length); + result_position[0] = '\0'; + + return result; +} |