commit glib2 for openSUSE:Factory
Hello community, here is the log from the commit of package glib2 for openSUSE:Factory checked in at Fri Feb 6 17:03:21 CET 2009. -------- --- GNOME/glib2/glib2.changes 2008-12-10 14:01:39.000000000 +0100 +++ glib2/glib2.changes 2009-02-03 01:34:07.000000000 +0100 @@ -1,0 +2,95 @@ +Tue Feb 3 11:17:27 EST 2009 - mboman@suse.de + +- Update to version 2.19.6: + + New format macro to print goffset data: G_OFFSET_FORMAT + + GIO: + * Add a GFilter{Input,Output}Stream::close-base-stream + properties which determine whether the base stream will be + closed when the filter stream is finalized. + * g_data_input_stream_read_line and ..._read_until have + asynchronous variants now. + + Bugs fixed: + * bgo#568294 A wrong reference in the description of + g_bookmark_file_... + * bgo#563141 RFE: define G_OFFSET_FORMAT + * bgo#569105 g_time_val_to_iso8601() assumes time_t==long + * bgo#568394 dropping the last reference to a stream filter + closes... + * bgo#568741 g_buffered_input_stream_fill_async doesn't work + * bgo#568723 g_buffered_input_stream_fill_async doesn't take + count == -1 + * bgo#568575 _async functions for GDataInputStream + + Translation updates + +------------------------------------------------------------------- +Sat Jan 31 23:39:29 CET 2009 - vuntz@novell.com + +- Split glib2-fate300461-desktop-gettext.patch in two patches: + + glib2-bgo569829-gettext-gkeyfile.patch: this is the part that + is being discussed upstream. + + glib2-fate300461-gettext-gkeyfile-suse.patch: this is the + openSUSE specific part. + + this should be easier to maintain in the long term. +- With this split, we also fix a bug where translations in the + desktop files were always ignored, and gettext was always used. + This was not the intended behavior, and made it impossible to + customize the name/comment of a launcher, eg. +- Drop glib2-libtool.diff: upstream configure.in already contains + the change in another place. +- Drop glib-2.17.3-implicitdecl.patch: seems to compile fine + without this now. + +------------------------------------------------------------------- +Sat Jan 31 08:45:48 EST 2009 - mboman@suse.de + +- Update to version 2.19.5: + + Update included PCRE to 7.8 + + g_base64_decode_inplace: New function to do base64 decoding in place + + Bugs fixed: bgo#567138, bgo#566569, bgo#566573, bgo#564728, bgo#567838, + bgo#567977, bgo#512779, bgo#566770, bgo#565484 + + Translation updates + +------------------------------------------------------------------- +Thu Jan 22 22:27:44 CET 2009 - vuntz@novell.com + +- Do not BuildRequires desktop-file-utils. +- Fix rpmlint warning about usage of packageand. +- Do not put executable bits for files in /etc/profile.d + +------------------------------------------------------------------- +Tue Jan 6 07:57:07 EST 2009 - mboman@suse.de + +- Update to version 2.19.4: + + Use O_NOATIME when sniffing mimetypes + + Add a convenience method to check if a GSimpleAsyncResult + is valid + + bgo#560676 function access for g_threads_supported + + bgo#565905 There is no g_context_group_set_translation_domain + + bgo#564210 SUN Studio 12 has supported visibility attribute + + bgo#565136 GObject's "notify" signal parameters are wrong in gtk-doc + + bgo#565831 error in interface creation sample + + bgo#566348 g_file_open_tmp uses the wrong g_mkstemp on win32 + + bgo#566064 Add NOATIME flag to query_info_flags + + bgo#566170 g_async_result_verify_source_object + + Translation updates + +------------------------------------------------------------------- +Sat Dec 20 09:57:41 EST 2008 - mboman@suse.de + +- Update to version 2.19.3: + + bgo#508021 Add support for the CRIS and CRISv32 architectures + + bgo#526320 should not list mounts that the user doesn't have permission + to use + + bgo#558458 Cannot build gio tests on Solaris using SUN cc + + bgo#555465 GUnix{Input,Output}Stream lacks fd/close_fd_at_close property + + bgo#558298 Hide ecryptfs mounts + + bgo#515777 incorrect date&time on copy + + bgo#562452 Ensure we return G_IO_ERROR_CANCELLED if cancelling + g_simple_async_result_run_in_thread + + bgo#473150 g_type_module_use inconsistently increases the use + counter in case of error + + bgo#563150 G_GU?INT*_MODIFIER/FORMAT docs + + bgo#563156 Document printing and scanning gunichar values + + Translation updates + +------------------------------------------------------------------- @@ -7,0 +103,32 @@ +Tue Dec 9 06:30:50 EST 2008 - mboman@suse.de +- Update to version 2.19.2: + + GIO: + - GIcon serialization support + - new file attribute for preview images + - new function to get the full commandline + - New functions to 'shadow' mounts + + Bugs fixed: bgo#556186, bgo#557087, bgo#556921, bgo#557210, bgo#558381, + bgo#558185, bgo#558513, bgo#558672, bgo#555740, bgo#557182, bgo#528320, + bgo#556910, bgo#557592, bgo#556415, bgo#555935, bgo#552776, bgo#559448, + bgo#561212, bgo#560569, bgo#560568, bgo#559413, bgo#562378, bgo#559110, + bgo#557603, bgo#562544, bgo#547264, bgo#562638, bgo#562639, bgo#562549, + bgo#559452, bgo#559462, bgo#559517, bgo#562538, bgo#561352, bgo#561375, + bgo#561807, bgo#562393, bgo#541715, bgo#547481, bgo#548163, bgo#559633, + bgo#555486, bgo#505361, bgo#509446, bgo#553820, bgo#553724, bgo#553857, + bgo#553447, bgo#554092, bgo#528670, bgo#555224, bgo#555309, bgo#554790, + bgo#555314, bgo#555313, bgo#552861, bgo#554557, bgo#552107, bgo#551355, + bgo#555311, bgo#556101, bgo#556186, bgo#526456, bgo#553426, bgo#545350, + bgo#545351, bgo#552168, bgo#554970, bgo#554745, bgo#555121, bgo#555711, + bgo#555331, bgo#556335, bgo#556334, bgo#556422 + + Rewrite GHashTable to use open addressing with quadratic probing + + Make g_poll available as public api + + New macros g_assert_error and g_assert_no_error to assert + that a GError is set or unset + + New method to make a GPollFD for a cancellable + + When launching applications, always pass fuse file:// uris when possible, + and let gio convert such uris back to gio uris. + + Translation updates +- Disable 'make check'. See bgo#554969 +- Remove glib2-bnc402256-filename-leak.diff. Fixed upstream + +------------------------------------------------------------------- calling whatdependson for head-i586 Old: ---- glib-2.17.3-implicitdecl.patch glib-2.18.2.tar.bz2 glib2-bnc402256-filename-leak.diff glib2-fate300461-desktop-gettext.patch glib2-libtool.diff New: ---- glib-2.19.6.tar.bz2 glib2-bgo569829-gettext-gkeyfile.patch glib2-fate300461-gettext-gkeyfile-suse.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ glib2.spec ++++++ --- /var/tmp/diff_new_pack.z26721/_old 2009-02-06 16:59:46.000000000 +0100 +++ /var/tmp/diff_new_pack.z26721/_new 2009-02-06 16:59:46.000000000 +0100 @@ -1,7 +1,7 @@ # -# spec file for package glib2 (Version 2.18.2) +# spec file for package glib2 (Version 2.19.6) # -# Copyright (c) 2008 SUSE LINUX Products GmbH, Nuernberg, Germany. +# Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -32,8 +32,8 @@ Obsoletes: glib2-64bit %endif # -Version: 2.18.2 -Release: 5 +Version: 2.19.6 +Release: 1 Summary: A Library with Convenient Functions Written in C Url: http://www.gtk.org/ Source: ftp://ftp.gnome.org/pub/GNOME/sources/%{_name}/2.14/%{_name}-%{version}.tar.bz2 @@ -49,18 +49,14 @@ Patch0: glib2-mkinstalldirs.patch # PATCH-FIX-OPENSUSE glib2-aclocal.patch Patch1: glib2-aclocal.patch -# PATCH-FIX-UPSTREAM glib2-libtool.diff schwab@suse.de -- apparently configure.in is invoking libtool in a bad way -Patch6: glib2-libtool.diff # PATCH-FIX-OPENSUSE glib2-bnc379332-desktop-su.patch bnc379332 vuntz@novell.com -- Use X-KDE-SubstituteUID Patch8: glib2-bnc379332-desktop-su.patch # PATCH-FIX-UPSTREAM glib2-base64.patch pchenthill@novell.com bnc382708 Patch9: glib2-base64.patch -# PATCH-FIX-OPENSUSE glib-2.17.3-implicitdecl.patch crrodriguez@suse.de -Patch10: glib-2.17.3-implicitdecl.patch -# PATCH-FEATURE-OPENSUSE glib2-fate300461-desktop-gettext.patch fate300461 vuntz@novell.com -- Look for translation of desktop entry strings via gettext -Patch11: glib2-fate300461-desktop-gettext.patch -# PATCH-FIX-UPSTREAM glib2-bnc402256-filename-leak.diff bnc402256 federico@novell.com - Fix leak in g_local_file_get_parse_name() -Patch12: glib2-bnc402256-filename-leak.diff +# PATCH-FEATURE-UPSTREAM glib2-bgo569829-gettext-gkeyfile.patch fate300461 bgo569829 vuntz@novell.com -- Look for translation of desktop entry strings via gettext, part that we share with Ubuntu and try to push upstream +Patch10: glib2-bgo569829-gettext-gkeyfile.patch +# PATCH-FEATURE-OPENSUSE glib2-fate300461-gettext-gkeyfile-suse.patch fate300461 vuntz@novell.com -- Look for translation of desktop entry strings via gettext, part that deals with the openSUSE specific infrastructure (with desktop_translations) +Patch11: glib2-fate300461-gettext-gkeyfile-suse.patch BuildRoot: %{_tmppath}/%{name}-%{version}-build Requires: %{name}-lang = %{version} # For temporary %%pre script only. @@ -99,7 +95,7 @@ Group: Development/Libraries/C and C++ Provides: %{name}-branding = %{version} Conflicts: otherproviders(%{name}-branding) -Supplements: packageand(branding-upstream:%{name}) +Supplements: packageand(%{name}:branding-upstream) #BRAND: The /etc/gnome_defaults.conf allows to define arbitrary #BRAND: applications as preferred defaults. # NOTE: gnome_defaults is not an upstream feature, but a SuSE @@ -415,12 +411,10 @@ %setup -q -n %{_name}-%{version} %patch0 %patch1 -%patch6 %patch8 %patch9 -%patch10 -%patch11 -%patch12 -p1 +%patch10 -p1 +%patch11 -p1 cp -a %{S:1} %{S:2} %{S:3} . cp -a %{S:4} gnome_defaults.conf if ! test -f %{_datadir}/aclocal/gtk-doc.m4 ; then @@ -440,13 +434,14 @@ %{__make} %{?jobs:-j%jobs} %check -%{__make} %{?jobs:-j%jobs} check +# make check does not work on x86_64. See http://bugzilla.gnome.org/show_bug.cgi?id=554969 +# %{__make} %{?jobs:-j%jobs} check %install make install DESTDIR=$RPM_BUILD_ROOT mkdir -p $RPM_BUILD_ROOT/etc/profile.d -install -D -m0755 glib2.sh $RPM_BUILD_ROOT/etc/profile.d/zzz-glib2.sh -install -D -m0755 glib2.csh $RPM_BUILD_ROOT/etc/profile.d/zzz-glib2.csh +install -D -m0644 glib2.sh $RPM_BUILD_ROOT/etc/profile.d/zzz-glib2.sh +install -D -m0644 glib2.csh $RPM_BUILD_ROOT/etc/profile.d/zzz-glib2.csh install -D -m0755 SuSEconfig.glib2 $RPM_BUILD_ROOT/sbin/conf.d/SuSEconfig.glib2 install -D -m0644 gnome_defaults.conf $RPM_BUILD_ROOT%{_sysconfdir}/gnome_defaults.conf mkdir -p $RPM_BUILD_ROOT%{_localstatedir}/cache/gio-2.0 $RPM_BUILD_ROOT%{_datadir}/applications @@ -559,9 +554,116 @@ %dir %{_datadir}/gtk-doc/html %changelog +* Tue Feb 03 2009 mboman@suse.de +- Update to version 2.19.6: + + New format macro to print goffset data: G_OFFSET_FORMAT + + GIO: + * Add a GFilter{Input,Output}Stream::close-base-stream + properties which determine whether the base stream will be + closed when the filter stream is finalized. + * g_data_input_stream_read_line and ..._read_until have + asynchronous variants now. + + Bugs fixed: + * bgo#568294 A wrong reference in the description of + g_bookmark_file_... + * bgo#563141 RFE: define G_OFFSET_FORMAT + * bgo#569105 g_time_val_to_iso8601() assumes time_t==long + * bgo#568394 dropping the last reference to a stream filter + closes... + * bgo#568741 g_buffered_input_stream_fill_async doesn't work + * bgo#568723 g_buffered_input_stream_fill_async doesn't take + count == -1 + * bgo#568575 _async functions for GDataInputStream + + Translation updates +* Sat Jan 31 2009 vuntz@novell.com +- Split glib2-fate300461-desktop-gettext.patch in two patches: + + glib2-bgo569829-gettext-gkeyfile.patch: this is the part that + is being discussed upstream. + + glib2-fate300461-gettext-gkeyfile-suse.patch: this is the + openSUSE specific part. + + this should be easier to maintain in the long term. +- With this split, we also fix a bug where translations in the + desktop files were always ignored, and gettext was always used. + This was not the intended behavior, and made it impossible to + customize the name/comment of a launcher, eg. +- Drop glib2-libtool.diff: upstream configure.in already contains + the change in another place. +- Drop glib-2.17.3-implicitdecl.patch: seems to compile fine + without this now. +* Sat Jan 31 2009 mboman@suse.de +- Update to version 2.19.5: + + Update included PCRE to 7.8 + + g_base64_decode_inplace: New function to do base64 decoding in place + + Bugs fixed: bgo#567138, bgo#566569, bgo#566573, bgo#564728, bgo#567838, + bgo#567977, bgo#512779, bgo#566770, bgo#565484 + + Translation updates +* Thu Jan 22 2009 vuntz@novell.com +- Do not BuildRequires desktop-file-utils. +- Fix rpmlint warning about usage of packageand. +- Do not put executable bits for files in /etc/profile.d +* Tue Jan 06 2009 mboman@suse.de +- Update to version 2.19.4: + + Use O_NOATIME when sniffing mimetypes + + Add a convenience method to check if a GSimpleAsyncResult + is valid + + bgo#560676 function access for g_threads_supported + + bgo#565905 There is no g_context_group_set_translation_domain + + bgo#564210 SUN Studio 12 has supported visibility attribute + + bgo#565136 GObject's "notify" signal parameters are wrong in gtk-doc + + bgo#565831 error in interface creation sample + + bgo#566348 g_file_open_tmp uses the wrong g_mkstemp on win32 + + bgo#566064 Add NOATIME flag to query_info_flags + + bgo#566170 g_async_result_verify_source_object + + Translation updates +* Sat Dec 20 2008 mboman@suse.de +- Update to version 2.19.3: + + bgo#508021 Add support for the CRIS and CRISv32 architectures + + bgo#526320 should not list mounts that the user doesn't have permission + to use + + bgo#558458 Cannot build gio tests on Solaris using SUN cc + + bgo#555465 GUnix{Input,Output}Stream lacks fd/close_fd_at_close property + + bgo#558298 Hide ecryptfs mounts + + bgo#515777 incorrect date&time on copy + + bgo#562452 Ensure we return G_IO_ERROR_CANCELLED if cancelling + g_simple_async_result_run_in_thread + + bgo#473150 g_type_module_use inconsistently increases the use + counter in case of error + + bgo#563150 G_GU?INT*_MODIFIER/FORMAT docs + + bgo#563156 Document printing and scanning gunichar values + + Translation updates * Wed Dec 10 2008 olh@suse.de - use Obsoletes: -XXbit only for ppc64 to help solver during distupgrade (bnc#437293) +* Tue Dec 09 2008 mboman@suse.de +- Update to version 2.19.2: + + GIO: + - GIcon serialization support + - new file attribute for preview images + - new function to get the full commandline + - New functions to 'shadow' mounts + + Bugs fixed: bgo#556186, bgo#557087, bgo#556921, bgo#557210, bgo#558381, + bgo#558185, bgo#558513, bgo#558672, bgo#555740, bgo#557182, bgo#528320, + bgo#556910, bgo#557592, bgo#556415, bgo#555935, bgo#552776, bgo#559448, + bgo#561212, bgo#560569, bgo#560568, bgo#559413, bgo#562378, bgo#559110, + bgo#557603, bgo#562544, bgo#547264, bgo#562638, bgo#562639, bgo#562549, + bgo#559452, bgo#559462, bgo#559517, bgo#562538, bgo#561352, bgo#561375, + bgo#561807, bgo#562393, bgo#541715, bgo#547481, bgo#548163, bgo#559633, + bgo#555486, bgo#505361, bgo#509446, bgo#553820, bgo#553724, bgo#553857, + bgo#553447, bgo#554092, bgo#528670, bgo#555224, bgo#555309, bgo#554790, + bgo#555314, bgo#555313, bgo#552861, bgo#554557, bgo#552107, bgo#551355, + bgo#555311, bgo#556101, bgo#556186, bgo#526456, bgo#553426, bgo#545350, + bgo#545351, bgo#552168, bgo#554970, bgo#554745, bgo#555121, bgo#555711, + bgo#555331, bgo#556335, bgo#556334, bgo#556422 + + Rewrite GHashTable to use open addressing with quadratic probing + + Make g_poll available as public api + + New macros g_assert_error and g_assert_no_error to assert + that a GError is set or unset + + New method to make a GPollFD for a cancellable + + When launching applications, always pass fuse file:// uris when possible, + and let gio convert such uris back to gio uris. + + Translation updates +- Disable 'make check'. See bgo#554969 +- Remove glib2-bnc402256-filename-leak.diff. Fixed upstream * Mon Dec 08 2008 vuntz@novell.com - Update glib2-fate300461-desktop-gettext.patch: correctly use bind_textdomain_codeset(), and also only do it once for the @@ -617,7 +719,7 @@ - Add require on libselinux for devel package. * Fri Aug 22 2008 prusnak@suse.cz - enabled SELinux support [Fate#303662] -* Thu Aug 21 2008 maw@suse.de +* Wed Aug 20 2008 maw@suse.de - Version the devel subpackage's requirements to avoid update breakage. * Wed Aug 06 2008 maw@suse.de @@ -660,14 +762,14 @@ bgo#543220, bgo#530759, bgo#535223, and bgo#543504 + Updated translations - Tag glib-2.17.3-implicitdecl.patch. -* Tue Jul 29 2008 vuntz@novell.com +* Mon Jul 28 2008 vuntz@novell.com - Add glib2-fate300461-desktop-gettext.patch to support translation of desktop entries via gettext, using the X-SUSE-Gettext-Domain key. The patch is based on a similar patch from Ubuntu. This is part of fate#300461 * Fri Jul 25 2008 sbrabec@suse.cz - nautilus-folder-handler added to gnome-defaults.conf (bnc#410728) -* Sun Jul 20 2008 crrodriguez@suse.de +* Sat Jul 19 2008 crrodriguez@suse.de - fix build - incidentally, this also fixes a problem on PPC caused by an endianness bug; the GTK2 build failed causing a chain of errors @@ -744,10 +846,10 @@ glib2-fix-bookmark-leak.diff, glib2-bnc379739-handle-blank-tryexec.patch, and glib2-bnc387387-gio-hide-inaccessible-mounts.patch. -* Tue May 20 2008 hpj@suse.de +* Mon May 19 2008 hpj@suse.de - Add glib2-bnc387387-gio-hide-inaccessible-mounts.patch (bnc#387387). -* Wed May 14 2008 hpj@suse.de +* Tue May 13 2008 hpj@suse.de - Add glib2-bnc379739-handle-blank-tryexec.patch (bnc#379739). * Mon May 12 2008 maw@suse.de - Add glib2-base64.patch (bnc#382708). @@ -764,7 +866,7 @@ Fix bnc#379332. * Tue Apr 29 2008 cthiel@suse.de - obsolete glib2-<arch> via baselibs.conf -* Tue Apr 22 2008 hpj@suse.de +* Mon Apr 21 2008 hpj@suse.de - Dropped previously disabled glib2-cast.patch. * Mon Apr 14 2008 maw@suse.de - Add glib2-fix-bookmark-leak.diff. @@ -827,7 +929,7 @@ - moved recommendation of gvfs to gtk2 * Tue Apr 01 2008 sbrabec@suse.cz - SuSEconfig script moved from gnome-vfs2 (bnc#372783). -* Tue Apr 01 2008 federico@novell.com +* Mon Mar 31 2008 federico@novell.com - Added glib2-bnc373149-bgo518160-gbookmark-optimizations.diff and glib2-bnc373149-bgo523877-gbookmark-optimizations.diff to fix https://bugzilla.novell.com/show_bug.cgi?id=373149 - backport @@ -839,7 +941,7 @@ * Fix a crash in g_themed_icon_new * Update the included PCRE to 7.6 - Tag patches -* Fri Feb 29 2008 jpr@suse.de +* Thu Feb 28 2008 jpr@suse.de - Update to version 2.15.6: + GIO: * New file attributes: trash::item-count, filesystem::use-preview @@ -858,7 +960,7 @@ * Fix race conditions in g_spawn implementation on win32 * g_uri_get_scheme has been renamed go g_uri_parse_scheme + Updated translations -* Tue Feb 19 2008 maw@suse.de +* Mon Feb 18 2008 maw@suse.de - Remove glib-cast.patch at least temporarily. * Mon Feb 18 2008 maw@suse.de - Update to version 2.15.5: @@ -1159,7 +1261,7 @@ - 351853 GKeyFile creates non-UTF-8 error messages - Translation updates (fr,hu,ja,ku,lt,lv,ml,or, pt,ru,sv,vi,zh_CN) -* Wed Aug 30 2006 jhargadon@suse.de +* Tue Aug 29 2006 jhargadon@suse.de - update to version 2.12.2 - Normalization is following Unicode TR #29 - 348491 g_utf8_strup() and g_utf8_strdown() returns @@ -1197,11 +1299,11 @@ * Thu Mar 30 2006 sbrabec@suse.cz - Renamed profile to be executed after lang.*, otherwise G_FILENAME_ENCODING cannot be set. -* Fri Jan 27 2006 mls@suse.de +* Thu Jan 26 2006 mls@suse.de - converted neededforbuild to BuildRequires -* Wed Jan 18 2006 gekker@suse.de +* Tue Jan 17 2006 gekker@suse.de - Fix gstaticmutex define (#141215 patch byjblunck) -* Tue Jan 17 2006 zsu@suse.de +* Mon Jan 16 2006 zsu@suse.de - Fixed implicit cast issue introduced by bugfix #316221 http://bugzilla.gnome.org/show_bug.cgi?id=327022 * Fri Jan 13 2006 sbrabec@suse.cz @@ -1259,7 +1361,7 @@ - Update to version 2.6.0 * Wed Dec 22 2004 ro@suse.de - remove no translation (obsolete with nb present) -* Wed Dec 15 2004 gekker@suse.de +* Tue Dec 14 2004 gekker@suse.de - Update version to 2.5.7. - Remove the no-no patch, as it is upstreamed. * Tue Nov 16 2004 clahey@suse.de ++++++ glib-2.18.2.tar.bz2 -> glib-2.19.6.tar.bz2 ++++++ ++++ 337708 lines of diff (skipped) ++++++ glib2-bgo569829-gettext-gkeyfile.patch ++++++ Index: glib-2.19.5/glib/gkeyfile.c =================================================================== --- glib-2.19.5.orig/glib/gkeyfile.c +++ glib-2.19.5/glib/gkeyfile.c @@ -83,6 +83,7 @@ struct _GKeyFile GKeyFileFlags flags; gchar **locales; + gchar *gettext_domain; }; typedef struct _GKeyFileKeyValuePair GKeyFileKeyValuePair; @@ -209,6 +210,7 @@ g_key_file_init (GKeyFile *key_file) key_file->list_separator = ';'; key_file->flags = 0; key_file->locales = g_strdupv ((gchar **)g_get_language_names ()); + key_file->gettext_domain = NULL; } static void @@ -228,6 +230,12 @@ g_key_file_clear (GKeyFile *key_file) key_file->parse_buffer = NULL; } + if (key_file->gettext_domain) + { + g_free (key_file->gettext_domain); + key_file->gettext_domain = NULL; + } + tmp = key_file->groups; while (tmp != NULL) { @@ -448,6 +456,11 @@ g_key_file_load_from_fd (GKeyFile return FALSE; } + key_file->gettext_domain = g_key_file_get_string (key_file, + G_KEY_FILE_DESKTOP_GROUP, + G_KEY_FILE_DESKTOP_KEY_GETTEXT_DOMAIN, + NULL); + return TRUE; } @@ -554,6 +567,11 @@ g_key_file_load_from_data (GKeyFile return FALSE; } + key_file->gettext_domain = g_key_file_get_string (key_file, + G_KEY_FILE_DESKTOP_GROUP, + G_KEY_FILE_DESKTOP_KEY_GETTEXT_DOMAIN, + NULL); + return TRUE; } @@ -1662,6 +1680,8 @@ g_key_file_get_locale_string (GKeyFile GError *key_file_error; gchar **languages; gboolean free_languages = FALSE; + gboolean try_gettext = FALSE; + const gchar *msg_locale; gint i; g_return_val_if_fail (key_file != NULL, NULL); @@ -1692,6 +1712,23 @@ g_key_file_get_locale_string (GKeyFile free_languages = FALSE; } + /* we're only interested in gettext translation if we don't have a + * translation in the .desktop file itself and if the key is one of the keys + * we know we want to translate: Name, GenericName, Comment. Blindly doing + * this for all keys can give strange result for the icons, since the Icon is + * a locale string in the spec, eg. We also only get translation in the mo + * file if the requested locale is the LC_MESSAGES one. Ideally, we should do + * more and change LC_MESSAGES to use the requested locale, but there's no + * guarantee it's installed on the system and it might have some + * side-effects. Since this is a corner case, let's ignore it. */ + + msg_locale = setlocale (LC_MESSAGES, NULL); + try_gettext = msg_locale && key_file->gettext_domain && + strcmp (group_name, G_KEY_FILE_DESKTOP_GROUP) == 0 && + (strcmp (key, G_KEY_FILE_DESKTOP_KEY_NAME) == 0 || + strcmp (key, G_KEY_FILE_DESKTOP_KEY_GENERIC_NAME) == 0 || + strcmp (key, G_KEY_FILE_DESKTOP_KEY_COMMENT) == 0); + for (i = 0; languages[i]; i++) { candidate_key = g_strdup_printf ("%s[%s]", key, languages[i]); @@ -1708,6 +1745,39 @@ g_key_file_get_locale_string (GKeyFile translated_value = NULL; } + /* Fallback to gettext */ + if (try_gettext && !translated_value) + { + gchar *orig_value = g_key_file_get_string (key_file, group_name, key, NULL); + + if (orig_value) + { + gboolean codeset_set; + const gchar *translated; + gboolean has_gettext; + + codeset_set = bind_textdomain_codeset (key_file->gettext_domain, "UTF-8") != NULL; + translated = NULL; + + translated = g_dgettext (key_file->gettext_domain, + orig_value); + has_gettext = translated != orig_value; + + g_free (orig_value); + + if (has_gettext) + { + if (codeset_set) + translated_value = g_strdup (translated); + else + translated_value = g_locale_to_utf8 (translated, + -1, NULL, NULL, NULL); + } + else + translated_value = NULL; + } + } + /* Fallback to untranslated key */ if (!translated_value) Index: glib-2.19.5/glib/gkeyfile.h =================================================================== --- glib-2.19.5.orig/glib/gkeyfile.h +++ glib-2.19.5/glib/gkeyfile.h @@ -240,6 +240,7 @@ gboolean g_key_file_remove_group #define G_KEY_FILE_DESKTOP_KEY_STARTUP_NOTIFY "StartupNotify" #define G_KEY_FILE_DESKTOP_KEY_STARTUP_WM_CLASS "StartupWMClass" #define G_KEY_FILE_DESKTOP_KEY_URL "URL" +#define G_KEY_FILE_DESKTOP_KEY_GETTEXT_DOMAIN "X-GNOME-Gettext-Domain" #define G_KEY_FILE_DESKTOP_TYPE_APPLICATION "Application" #define G_KEY_FILE_DESKTOP_TYPE_LINK "Link" ++++++ glib2-fate300461-gettext-gkeyfile-suse.patch ++++++ Index: glib-2.19.5/glib/gkeyfile.c =================================================================== --- glib-2.19.5.orig/glib/gkeyfile.c +++ glib-2.19.5/glib/gkeyfile.c @@ -84,6 +84,7 @@ struct _GKeyFile gchar **locales; gchar *gettext_domain; + gchar *file_basename; }; typedef struct _GKeyFileKeyValuePair GKeyFileKeyValuePair; @@ -211,6 +212,7 @@ g_key_file_init (GKeyFile *key_file) key_file->flags = 0; key_file->locales = g_strdupv ((gchar **)g_get_language_names ()); key_file->gettext_domain = NULL; + key_file->file_basename = NULL; } static void @@ -236,6 +238,12 @@ g_key_file_clear (GKeyFile *key_file) key_file->gettext_domain = NULL; } + if (key_file->file_basename) + { + g_free (key_file->file_basename); + key_file->file_basename = NULL; + } + tmp = key_file->groups; while (tmp != NULL) { @@ -375,6 +383,39 @@ find_file_in_data_dirs (const gchar *f return fd; } +static int _g_key_file_default_textdomain_codeset_bound = 0; +#define _G_KEY_FILE_DEFAULT_DOMAIN "desktop_translations" + +static char * +_g_key_file_get_default_gettext_domain (void) +{ + if (!_g_key_file_default_textdomain_codeset_bound) + { + const char *codeset; + + _g_key_file_default_textdomain_codeset_bound = 1; + + codeset = bind_textdomain_codeset (_G_KEY_FILE_DEFAULT_DOMAIN, "UTF-8"); + + if (codeset) + _g_key_file_default_textdomain_codeset_bound |= 1 << 1; + } + + return g_strdup (_G_KEY_FILE_DEFAULT_DOMAIN); +} + +static inline gboolean +_g_key_file_is_default_gettext_domain (const char *domain) +{ + return (domain && strcmp (domain, _G_KEY_FILE_DEFAULT_DOMAIN) == 0); +} + +static inline gboolean +_g_key_file_default_gettext_domain_is_bound (void) +{ + return _g_key_file_default_textdomain_codeset_bound & (1 << 1); +} + static gboolean g_key_file_load_from_fd (GKeyFile *key_file, gint fd, @@ -461,6 +502,9 @@ g_key_file_load_from_fd (GKeyFile G_KEY_FILE_DESKTOP_KEY_GETTEXT_DOMAIN, NULL); + if (!key_file->gettext_domain) + key_file->gettext_domain = _g_key_file_get_default_gettext_domain (); + return TRUE; } @@ -510,6 +554,8 @@ g_key_file_load_from_file (GKeyFile return FALSE; } + key_file->file_basename = g_path_get_basename (file); + return TRUE; } @@ -572,6 +618,9 @@ g_key_file_load_from_data (GKeyFile G_KEY_FILE_DESKTOP_KEY_GETTEXT_DOMAIN, NULL); + if (!key_file->gettext_domain) + key_file->gettext_domain = _g_key_file_get_default_gettext_domain (); + return TRUE; } @@ -641,6 +690,9 @@ g_key_file_load_from_dirs (GKeyFile } } + if (found_file) + key_file->file_basename = g_path_get_basename (output_path); + if (found_file && full_path) *full_path = output_path; else @@ -1756,12 +1808,38 @@ g_key_file_get_locale_string (GKeyFile const gchar *translated; gboolean has_gettext; - codeset_set = bind_textdomain_codeset (key_file->gettext_domain, "UTF-8") != NULL; + if (_g_key_file_is_default_gettext_domain (key_file->gettext_domain)) + codeset_set = _g_key_file_default_gettext_domain_is_bound (); + else + codeset_set = bind_textdomain_codeset (key_file->gettext_domain, "UTF-8") != NULL; translated = NULL; - translated = g_dgettext (key_file->gettext_domain, - orig_value); - has_gettext = translated != orig_value; + /* first try to translate with the context */ + if (key_file->file_basename) + { + gchar *context; + gchar *context_value; + + context = g_strdup_printf ("%s(%s)", key, + key_file->file_basename); + context_value = g_strdup_printf ("%s%s%s", + context, ": ", orig_value); + + translated = g_dgettext (key_file->gettext_domain, + context_value); + has_gettext = translated != context_value; + + g_free (context_value); + g_free (context); + } + + /* no translation with the context: try without context */ + if (!has_gettext) + { + translated = g_dgettext (key_file->gettext_domain, + orig_value); + has_gettext = translated != orig_value; + } g_free (orig_value); Index: glib-2.19.5/glib/gkeyfile.h =================================================================== --- glib-2.19.5.orig/glib/gkeyfile.h +++ glib-2.19.5/glib/gkeyfile.h @@ -240,7 +240,7 @@ gboolean g_key_file_remove_group #define G_KEY_FILE_DESKTOP_KEY_STARTUP_NOTIFY "StartupNotify" #define G_KEY_FILE_DESKTOP_KEY_STARTUP_WM_CLASS "StartupWMClass" #define G_KEY_FILE_DESKTOP_KEY_URL "URL" -#define G_KEY_FILE_DESKTOP_KEY_GETTEXT_DOMAIN "X-GNOME-Gettext-Domain" +#define G_KEY_FILE_DESKTOP_KEY_GETTEXT_DOMAIN "X-SUSE-Gettext-Domain" #define G_KEY_FILE_DESKTOP_TYPE_APPLICATION "Application" #define G_KEY_FILE_DESKTOP_TYPE_LINK "Link" ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Remember to have fun... -- To unsubscribe, e-mail: opensuse-commit+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-commit+help@opensuse.org
participants (1)
-
root@Hilbert.suse.de