[sound-juicer] Use UTF8-safe case comparison for artist editing callbacks
- From: Christophe Fergeau <teuf src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [sound-juicer] Use UTF8-safe case comparison for artist editing callbacks
- Date: Thu, 6 Sep 2012 18:42:28 +0000 (UTC)
commit 9c9bd0d3f0f9ebc083b8ea704538188a1db2a44c
Author: Phillip Wood <phillip wood dunelm org uk>
Date: Wed Jan 25 14:10:00 2012 +0000
Use UTF8-safe case comparison for artist editing callbacks
https://bugzilla.gnome.org/show_bug.cgi?id=661646
src/sj-main.c | 28 +++++++++++++++++++++++++++-
1 files changed, 27 insertions(+), 1 deletions(-)
---
diff --git a/src/sj-main.c b/src/sj-main.c
index 1ecd8e5..2074063 100644
--- a/src/sj-main.c
+++ b/src/sj-main.c
@@ -1560,6 +1560,31 @@ G_MODULE_EXPORT void on_title_edit_changed(GtkEditable *widget, gpointer user_da
current_album->title = gtk_editable_get_chars (widget, 0, -1); /* get all the characters */
}
+/**
+ * Return TRUE if s1 and s2 are equal according to g_utf8_casefold or
+ * if they are NULL, NUL or just ascii space. NULL, NUL and space are
+ * considered equal
+ */
+static gboolean str_case_equal (const char*s1, const char *s2)
+{
+ gboolean retval;
+ char *t1, *t2;
+
+ if (sj_str_is_empty (s1) && sj_str_is_empty (s2))
+ return TRUE;
+
+ /* is_empty can handle NULL pointers but g_utf8_casefold cannot */
+ if (!s1 || !s2)
+ return FALSE;
+
+ t1 = g_utf8_casefold (s1, -1);
+ t2 = g_utf8_casefold (s2, -1);
+ retval = g_str_equal (t1, t2);
+ g_free (t1);
+ g_free (t2);
+ return retval;
+}
+
G_MODULE_EXPORT void on_artist_edit_changed(GtkEditable *widget, gpointer user_data) {
GtkTreeIter iter;
TrackDetails *track;
@@ -1589,7 +1614,8 @@ G_MODULE_EXPORT void on_artist_edit_changed(GtkEditable *widget, gpointer user_d
do {
gtk_tree_model_get (GTK_TREE_MODEL (track_store), &iter, COLUMN_ARTIST, ¤t_track_artist, -1);
/* Change track artist if it matched album artist before the change */
- if ((strcasecmp (current_track_artist, former_album_artist) == 0) || (strcasecmp (current_track_artist, current_album->artist) == 0)) {
+ if ((str_case_equal (current_track_artist, former_album_artist)) ||
+ (str_case_equal (current_track_artist, current_album->artist))) {
gtk_tree_model_get (GTK_TREE_MODEL (track_store), &iter, COLUMN_DETAILS, &track, -1);
g_free (track->artist);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]