aboutsummaryrefslogtreecommitdiffstats
path: root/lib/ephy-string.c
diff options
context:
space:
mode:
authorMarco Pesenti Gritti <marco@it.gnome.org>2003-01-03 04:24:53 +0800
committerMarco Pesenti Gritti <mpeseng@src.gnome.org>2003-01-03 04:24:53 +0800
commit71219970c53e84d98edc9ac59ef22c8b07fdffa8 (patch)
treeba834d7cb70b834e38a8de16c0a05c3a0b008b0f /lib/ephy-string.c
parent2dd166055fa8702ad52df80d2927f8560b4f73f6 (diff)
downloadgsoc2013-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.c55
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;
+}