Imported Upstream version 2.53.5 79/153579/1
authorDongHun Kwak <dh0128.kwak@samsung.com>
Fri, 29 Sep 2017 01:12:01 +0000 (10:12 +0900)
committerDongHun Kwak <dh0128.kwak@samsung.com>
Fri, 29 Sep 2017 01:13:05 +0000 (10:13 +0900)
Change-Id: Ic5ebea56d852bf73b3c52afe342819e339412ef9
Signed-off-by: DongHun Kwak <dh0128.kwak@samsung.com>
174 files changed:
ChangeLog
INSTALL
Makefile.am
Makefile.in
NEWS
README
config.guess
config.h.meson [new file with mode: 0644]
config.h.win32
config.sub
configure
configure.ac
docs/reference/gio/gapplication.1
docs/reference/gio/gdbus-codegen.1
docs/reference/gio/gdbus.1
docs/reference/gio/gio-querymodules.1
docs/reference/gio/gio.1
docs/reference/gio/glib-compile-resources.1
docs/reference/gio/glib-compile-schemas.1
docs/reference/gio/gresource.1
docs/reference/gio/gsettings.1
docs/reference/gio/html/GDBusInterfaceSkeleton.html
docs/reference/gio/html/gio-GIOError.html
docs/reference/gio/html/gio-Owning-Bus-Names.html
docs/reference/gio/html/gio.devhelp2
docs/reference/gio/html/index.html
docs/reference/gio/meson.build [new file with mode: 0644]
docs/reference/gio/version.xml
docs/reference/gio/xml/gtkdocentities.ent.in [new file with mode: 0644]
docs/reference/gio/xml/meson.build [new file with mode: 0644]
docs/reference/glib/glib-gettextize.1
docs/reference/glib/gtester-report.1
docs/reference/glib/gtester.1
docs/reference/glib/html/glib-Commandline-option-parser.html
docs/reference/glib/html/glib-Error-Reporting.html
docs/reference/glib/html/glib-GVariant.html
docs/reference/glib/html/glib-Key-value-file-parser.html
docs/reference/glib/html/glib-Keyed-Data-Lists.html
docs/reference/glib/html/glib-Memory-Allocation.html
docs/reference/glib/html/glib-Message-Logging.html
docs/reference/glib/html/glib-Miscellaneous-Utility-Functions.html
docs/reference/glib/html/glib-Spawning-Processes.html
docs/reference/glib/html/glib-String-Utility-Functions.html
docs/reference/glib/html/glib-Testing.html
docs/reference/glib/html/glib-The-Main-Event-Loop.html
docs/reference/glib/html/glib-Threads.html
docs/reference/glib/html/glib-UNIX-specific-utilities-and-integration.html
docs/reference/glib/html/glib-Version-Information.html
docs/reference/glib/html/glib-Windows-Compatibility-Functions.html
docs/reference/glib/html/index.html
docs/reference/glib/meson.build [new file with mode: 0644]
docs/reference/glib/version.xml
docs/reference/glib/xml/gtkdocentities.ent.in [new file with mode: 0644]
docs/reference/glib/xml/meson.build [new file with mode: 0644]
docs/reference/gobject/glib-genmarshal.1
docs/reference/gobject/glib-mkenums.1
docs/reference/gobject/gobject-query.1
docs/reference/gobject/html/index.html
docs/reference/gobject/meson.build [new file with mode: 0644]
docs/reference/gobject/version.xml
docs/reference/gobject/xml/gtkdocentities.ent.in [new file with mode: 0644]
docs/reference/gobject/xml/meson.build [new file with mode: 0644]
gio/data-to-c.py [new file with mode: 0644]
gio/gapplication.c
gio/gapplicationimpl-dbus.c
gio/gcharsetconverter.c
gio/gdbus-2.0/codegen/config.py
gio/gdbus-2.0/codegen/meson.build [new file with mode: 0644]
gio/gdbus-daemon-generated.c
gio/gdbus-daemon-generated.h
gio/gdbusaddress.c
gio/gdbusauthmechanismsha1.c
gio/gdbusinterfaceskeleton.c
gio/gdbusmessage.c
gio/gdbusnameowning.c
gio/gdbusserver.c
gio/gdocumentportal.c
gio/gfdonotificationbackend.c
gio/gfile.c
gio/gio-querymodules.c
gio/gio-tool-cat.c
gio/gio.rc
gio/gioenums.h
gio/gioenumtypes.c
gio/gioerror.c
gio/glib-compile-schemas.c
gio/glocalfile.c
gio/glocalfileinfo.c
gio/glocalfileoutputstream.c
gio/gnetworkmonitornetlink.c
gio/gopenuriportal.c
gio/gsocket.c
gio/gsubprocess.c
gio/gtestdbus.c
gio/gunixconnection.c
gio/gunixfdmessage.c
gio/gunixinputstream.c
gio/gunixmounts.c
gio/gunixoutputstream.c
gio/inotify/inotify-kernel.c
gio/inotify/meson.build [new file with mode: 0644]
gio/kqueue/meson.build [new file with mode: 0644]
gio/meson.build [new file with mode: 0644]
gio/tests/dbus-launch.c
gio/tests/de/LC_MESSAGES/meson.build [new file with mode: 0644]
gio/tests/gdbus-object-manager-example/meson.build [new file with mode: 0644]
gio/tests/gdbus-peer-object-manager.c
gio/tests/gdbus-peer.c
gio/tests/gdbus-unix-addresses.c
gio/tests/gschema-compile.c
gio/tests/gsubprocess-testprog.c
gio/tests/meson.build [new file with mode: 0644]
gio/tests/modules/Makefile.am
gio/tests/modules/Makefile.in
gio/tests/modules/meson.build [new file with mode: 0644]
gio/win32/meson.build [new file with mode: 0644]
gio/xdgmime/meson.build [new file with mode: 0644]
gio/xdp-dbus.c
gio/xdp-dbus.h
glib/gdatetime.c
glib/gerror.c
glib/giowin32.c
glib/gkeyfile.c
glib/glib.rc
glib/glibconfig.h.win32
glib/gmain.c
glib/gmessages.c
glib/gpoll.c
glib/gslice.c
glib/gspawn.c
glib/gstrfuncs.c
glib/gtester.c
glib/gtestutils.c
glib/gutils.c
glib/libcharset/meson.build [new file with mode: 0644]
glib/meson.build [new file with mode: 0644]
glib/pcre/meson.build [new file with mode: 0644]
glib/tests/Makefile.am
glib/tests/Makefile.in
glib/tests/fileutils.c
glib/tests/gpoll.c [new file with mode: 0644]
glib/tests/meson.build [new file with mode: 0644]
glib/tests/protocol.c
gmodule/gmodule.rc
gmodule/meson.build [new file with mode: 0644]
gobject/glib-genmarshal.in
gobject/glib-mkenums.in
gobject/gobject.rc
gobject/meson.build [new file with mode: 0644]
gobject/tests/meson.build [new file with mode: 0644]
gthread/gthread.rc
gthread/meson.build [new file with mode: 0644]
meson.build [new file with mode: 0644]
meson_options.txt [new file with mode: 0644]
po/es.gmo
po/es.po
po/glib20.pot
po/meson.build [new file with mode: 0644]
po/sl.gmo
po/sl.po
tests/gobject/testmarshal.h
tests/gobject/timeloop-closure.c
tests/mainloop-test.c
tests/spawn-test-win32-gui.c
tests/spawn-test.c
tests/testglib.c
tests/timeloop-basic.c
tests/timeloop.c
win32/vs10/glib-version-paths.props
win32/vs11/glib-version-paths.props
win32/vs12/glib-version-paths.props
win32/vs14/glib-version-paths.props
win32/vs15/glib-version-paths.props
win32/vs9/glib-version-paths.vsprops

index de49922..389326b 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,916 @@
+commit 47e10489c5601feac370465767ce03c4a6dd5942
+Author: Matthias Clasen <mclasen@redhat.com>
+Date:   Mon Aug 7 11:13:16 2017 -0400
+
+    2.53.5
+
+ NEWS         | 26 ++++++++++++++++++++++++++
+ configure.ac |  2 +-
+ meson.build  |  2 +-
+ 3 files changed, 28 insertions(+), 2 deletions(-)
+
+commit 7c97e3d784f7243d6a426f1c5659cbccc6acb139
+Author: Simon McVittie <smcv@collabora.com>
+Date:   Mon Jun 19 12:47:50 2017 +0100
+
+    gdbus: Check signature of NameAcquired, NameLost
+
+    Calling g_variant_get (parameters, "(&s)") when parameters has a
+    signature other than (s) is considered to be a programming error.
+    In practice the message bus (dbus-daemon or a reimplementation) should
+    always send the expected type, but be defensive.
+
+    (Modified by Philip Withnall to improve type check.)
+
+    Signed-off-by: Simon McVittie <smcv@collabora.com>
+    Signed-off-by: Philip Withnall <withnall@endlessm.com>
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=784392
+
+ gio/gdbusnameowning.c | 7 +++++++
+ 1 file changed, 7 insertions(+)
+
+commit c53b44edb28b7aec62349a11a8263c488b35b70e
+Author: Simon McVittie <smcv@collabora.com>
+Date:   Mon Jun 19 12:41:53 2017 +0100
+
+    GBusNameOwnerFlags: Add DO_NOT_QUEUE flag
+
+    PulseAudio and LibreOffice are among the services that use this flag.
+    Refusing to queue for a name lets you do this transaction,
+    but atomically, avoiding the transient state where you briefly join
+    the queue and then are given the name when its primary owner drops it:
+
+        result = RequestName(name)
+
+        if result == IN_QUEUE:
+            ReleaseName(name)
+            result = EXISTS
+
+        return result
+
+    (Modified by Philip Withnall to add documentation.)
+
+    Signed-off-by: Philip Withnall <withnall@endlessm.com>
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=784392
+
+ gio/gioenums.h | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+commit 92f1ba200d48bceec10a9be8f0262c57f7375d02
+Author: Simon McVittie <smcv@collabora.com>
+Date:   Mon Jun 19 12:36:11 2017 +0100
+
+    GBusNameOwnerFlags: Note equivalence with D-Bus Specification
+
+    The implementation passes flags through directly to the RequestName()
+    call, so if any new values break that equivalence, the implementation
+    will have to be changed.
+
+    Signed-off-by: Simon McVittie <smcv@collabora.com>
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=784392
+
+ gio/gioenums.h | 2 ++
+ 1 file changed, 2 insertions(+)
+
+commit 05abc6cfce75c28a354fa69212d8e6f38ce4a8b9
+Author: Philip Withnall <withnall@endlessm.com>
+Date:   Fri Aug 4 13:46:46 2017 +0100
+
+    gio: Fix crash in open URI portal when no callback is provided
+
+    If no callback is provided, token is never set, but it’s then
+    passed to
+    g_variant_new_string(), which requires a non-NULL input.
+
+    Fix that by moving all the option handling inside the (callback
+    != NULL)
+    case.
+
+    Spotted by Coverity (CID #1378714).
+
+    Signed-off-by: Philip Withnall <withnall@endlessm.com>
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=785817
+
+ gio/gopenuriportal.c | 24 ++++++++++++++----------
+ 1 file changed, 14 insertions(+), 10 deletions(-)
+
+commit 31ae2c559810675aae483269f234a349cd933528
+Author: Mihai Moldovan <ionic@ionic.de>
+Date:   Sat Jul 29 09:09:39 2017 +0200
+
+    glib-genmarshal: wrap prototypes in G_{BEGIN,END}_DECLS.
+
+    Since --header --body has been deprecated and replaced with --body
+    --prototypes, the generated body is not wrapped with
+    G_{BEGIN,END}_DECLS
+    any longer. Projects using C++ break due to that. Automatically wrap
+    prototypes individually in G_{BEGIN,END}_DECLS instead.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=785554
+
+ gobject/glib-genmarshal.in | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+commit c4dc30e2a36de57fbf963319b21de935492e5782
+Author: Matej Urbančič <mateju@svn.gnome.org>
+Date:   Mon Aug 7 08:44:11 2017 +0200
+
+    Updated Slovenian translation
+
+ po/sl.po | 3739
+ +++++++++++++++++++++++++++++++++++++++++---------------------
+ 1 file changed, 2511 insertions(+), 1228 deletions(-)
+
+commit ce46e13fbc7854cf04a3d5b4516c4f3a0339b774
+Author: Daniel Mustieles <daniel.mustieles@gmail.com>
+Date:   Sat Aug 5 11:56:28 2017 +0200
+
+    Updated Spanish translation
+
+ po/es.po | 867
+ +++++++++++++++++++++++++++++++++++++++------------------------
+ 1 file changed, 535 insertions(+), 332 deletions(-)
+
+commit 1782219fb859bab1c5715b3bd1308f15d369d5cf
+Author: Philip Withnall <withnall@endlessm.com>
+Date:   Fri Aug 4 13:30:10 2017 +0100
+
+    docs: Fix typo in GDBusInterfaceSkeleton documentation
+
+    Signed-off-by: Philip Withnall <withnall@endlessm.com>
+
+ gio/gdbusinterfaceskeleton.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit a1fdae8afcb9abe9327a367ffae8deee9c99400f
+Author: Tim-Philipp Müller <tim@centricular.com>
+Date:   Thu Aug 3 19:23:25 2017 +0100
+
+    meson: don't error out if xmllint is not found
+
+    Only needed for glib/tests and entirely optional.
+
+ glib/tests/meson.build | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit ad9d5a11f2496d931036c0a507b5e789c5432e5f
+Author: Philip Withnall <withnall@endlessm.com>
+Date:   Thu Aug 3 16:32:42 2017 +0100
+
+    tests: Fix gschema-compile test for translatable string changes
+
+    Little did I know when making commit
+    c257757cf6774974cf15370ccf09fad7ee855668 that a lot of the output of
+    glib-compile-schemas is string matched in some of the unit tests. Fix
+    them to match the updated strings.
+
+    Signed-off-by: Philip Withnall <withnall@endlessm.com>
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=695573
+
+ gio/tests/gschema-compile.c | 46
+ ++++++++++++++++++++++-----------------------
+ 1 file changed, 23 insertions(+), 23 deletions(-)
+
+commit 25c01e1c557e03914f1ae88398f705b1437eea3b
+Author: Philip Withnall <withnall@endlessm.com>
+Date:   Thu Aug 3 16:31:37 2017 +0100
+
+    glib-compile-schemas: Use double quotes rather than single quotes
+
+    It’s what GLib is standardising on. See bug #772221.
+
+    Signed-off-by: Philip Withnall <withnall@endlessm.com>
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=695573
+
+ gio/glib-compile-schemas.c | 46
+ +++++++++++++++++++++++-----------------------
+ 1 file changed, 23 insertions(+), 23 deletions(-)
+
+commit e02e3540abbe166abd2ae892c92d82f3fda016f2
+Author: Daniel Boles <dboles@src.gnome.org>
+Date:   Thu Aug 3 14:40:29 2017 +0100
+
+    gspawn: Don’t mention removed gdk_spawn functions
+
+    Mention alternatives that actually still exist instead.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=785520
+
+ glib/gspawn.c | 16 ++++++++--------
+ 1 file changed, 8 insertions(+), 8 deletions(-)
+
+commit f591366eee341f2c40516821e8a5a0bc7a9bd288
+Author: Daniel Macks <dmacks@netspace.org>
+Date:   Thu Aug 3 12:43:00 2017 +0100
+
+    gtest: Handle -s as explicit SKIP instead of inhibiting altogether
+
+    Improves diagnostics and makes test transcripts easier to compare
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=769135
+
+ glib/gtestutils.c | 47 +++++++++++++++++++++++++----------------------
+ 1 file changed, 25 insertions(+), 22 deletions(-)
+
+commit f7a14fece4891ea31522ca282807c71ca7f89938
+Author: Daniel Macks <dmacks@netspace.org>
+Date:   Mon Jun 16 01:02:49 2014 -0400
+
+    Use "-module" when compiling loadable modules
+
+    Some platforms use different extensions for compile-time linkable
+    libraries vs runtime-loadable modules. Need to use special libtool
+    flag in the latter case for consistency with what gmodule expects.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=731703
+
+ gio/tests/modules/Makefile.am | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+commit 22700faf88bdf7be0bbd8dad658f0d08816a7c51
+Author: Philip Withnall <withnall@endlessm.com>
+Date:   Thu Aug 3 11:55:23 2017 +0100
+
+    build: Loosen --enable-compile-warnings check
+
+    Instead of requiring --enable-compile-warnings or
+    --enable-compile-warnings=yes, allow any value which is not
+    ‘no’. This
+    enables compile warnings for --enable-compile-warnings=maximum or
+    --enable-compile-warnings=error, which are common values for other
+    GNOME
+    projects. While we don’t change our behaviour for [yes, maximum,
+    error],
+    at least it means the warnings are enabled now, rather than disabled.
+
+    Signed-off-by: Philip Withnall <withnall@endlessm.com>
+
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 96528396064e8fef757b095957fd6c527d9ac78c
+Author: Philip Withnall <withnall@endlessm.com>
+Date:   Thu Aug 3 11:54:58 2017 +0100
+
+    gslice: Fix inline delarations in GSlice
+
+    Accidentally introduced in commit
+    5cddde1fb2b8466d8104595008eafabd0728de5d.
+
+    Signed-off-by: Philip Withnall <withnall@endlessm.com>
+
+ glib/gslice.c | 13 +++++++++----
+ 1 file changed, 9 insertions(+), 4 deletions(-)
+
+commit c257757cf6774974cf15370ccf09fad7ee855668
+Author: Philip Withnall <withnall@endlessm.com>
+Date:   Thu Aug 3 11:34:08 2017 +0100
+
+    glib-compile-schemas: Improve some translatable strings
+
+     • Fix capitalisation to be consistent
+     • Use Unicode quotation marks where appropriate
+     • Move trailing \n characters out of the translable strings
+     and append
+       them unconditionally
+
+    Signed-off-by: Philip Withnall <withnall@endlessm.com>
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=695573
+
+ gio/glib-compile-schemas.c | 90
+ ++++++++++++++++++++++++++--------------------
+ 1 file changed, 52 insertions(+), 38 deletions(-)
+
+commit 94816e10d21ac545f9d0120a07b8c6d5dee0456d
+Author: Daniel Boles <dboles@src.gnome.org>
+Date:   Thu Aug 3 11:30:20 2017 +0100
+
+    glib-compile-schemas: Fix typo in newly translatable string
+
+ gio/glib-compile-schemas.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit a7aa8acc4896fd359fb947bf7f8645c4caa2b0b8
+Author: Jiro Matsuzawa <jmatsuzawa@gnome.org>
+Date:   Wed Aug 2 17:19:30 2017 +0200
+
+    glib-compile-schemas: Mark missing strings for translation
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=695573
+
+ gio/glib-compile-schemas.c | 86
+ +++++++++++++++++++++++-----------------------
+ 1 file changed, 43 insertions(+), 43 deletions(-)
+
+commit f2b6c116295e87d1b74ecae86eda0d1a040b936c
+Author: Philip Withnall <withnall@endlessm.com>
+Date:   Mon Jul 31 12:16:44 2017 +0100
+
+    gstrfuncs: Expand documentation for errno functions
+
+    Mention that it really is a good idea to save errno before doing
+    literally anything else after calling a function which could set it.
+
+    Signed-off-by: Philip Withnall <withnall@endlessm.com>
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=785577
+
+ gio/gioerror.c   | 12 ++++++++++++
+ glib/gstrfuncs.c | 12 +++++++++++-
+ 2 files changed, 23 insertions(+), 1 deletion(-)
+
+commit 5cddde1fb2b8466d8104595008eafabd0728de5d
+Author: Philip Withnall <withnall@endlessm.com>
+Date:   Mon Jul 31 11:30:55 2017 +0100
+
+    Consistently save errno immediately after the operation setting it
+
+    Prevent the situation where errno is set by function A, then
+    function B
+    is called (which is typically _(), but could be anything else) and it
+    overwrites errno, then errno is checked by the caller.
+
+    errno is a horrific API, and we need to be careful to save its
+    value as
+    soon as a function call (which might set it) returns. i.e. Follow the
+    pattern:
+      int errsv, ret;
+      ret = some_call_which_might_set_errno ();
+      errsv = errno;
+
+      if (ret < 0)
+        puts (strerror (errsv));
+
+    This patch implements that pattern throughout GLib. There might be
+    a few
+    places in the test code which still use errno directly. They should be
+    ported as necessary. It doesn’t modify all the call sites like this:
+      if (some_call_which_might_set_errno () && errno == ESOMETHING)
+    since the refactoring involved is probably more harmful than
+    beneficial
+    there. It does, however, refactor other call sites regardless
+    of whether
+    they were originally buggy.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=785577
+
+ gio/gcharsetconverter.c               |  4 ++-
+ gio/gdbusaddress.c                    |  7 ++++--
+ gio/gdbusauthmechanismsha1.c          | 33 +++++++++++++++----------
+ gio/gdbusmessage.c                    |  3 ++-
+ gio/gdbusserver.c                     |  9 ++++---
+ gio/gdocumentportal.c                 |  5 ++--
+ gio/gfile.c                           |  7 +++---
+ gio/gio-querymodules.c                |  5 +++-
+ gio/gio-tool-cat.c                    |  5 +++-
+ gio/glocalfile.c                      | 26 ++++++++++++++------
+ gio/glocalfileinfo.c                  | 23 +++++++++++++-----
+ gio/glocalfileoutputstream.c          | 16 ++++++------
+ gio/gnetworkmonitornetlink.c          |  6 ++---
+ gio/gopenuriportal.c                  | 10 +++++---
+ gio/gsocket.c                         |  9 ++++---
+ gio/gsubprocess.c                     | 46
+ +++++++++++++++++++++++++----------
+ gio/gtestdbus.c                       |  7 ++++--
+ gio/gunixconnection.c                 | 15 +++++++-----
+ gio/gunixfdmessage.c                  | 11 ++++++---
+ gio/gunixinputstream.c                | 11 ++++++---
+ gio/gunixoutputstream.c               | 14 ++++++-----
+ gio/inotify/inotify-kernel.c          | 12 ++++++---
+ gio/tests/dbus-launch.c               |  5 ++--
+ gio/tests/gdbus-peer-object-manager.c |  5 ++--
+ gio/tests/gdbus-peer.c                |  9 ++++---
+ gio/tests/gdbus-unix-addresses.c      | 15 +++++++++---
+ gio/tests/gsubprocess-testprog.c      |  3 ++-
+ glib/gerror.c                         |  4 ++-
+ glib/giowin32.c                       | 42
+ ++++++++++++++++++++------------
+ glib/gkeyfile.c                       | 24 ++++++++++++------
+ glib/gmain.c                          | 10 +++++---
+ glib/gslice.c                         |  4 ++-
+ glib/gtester.c                        |  4 ++-
+ glib/gtestutils.c                     | 19 ++++++++++++---
+ glib/gutils.c                         |  4 ++-
+ glib/tests/fileutils.c                |  5 +++-
+ glib/tests/protocol.c                 |  6 +++--
+ tests/gobject/timeloop-closure.c      |  8 +++---
+ tests/mainloop-test.c                 |  3 ++-
+ tests/spawn-test-win32-gui.c          |  9 ++++---
+ tests/spawn-test.c                    | 15 ++++++++----
+ tests/testglib.c                      |  7 ++++--
+ tests/timeloop-basic.c                |  8 +++---
+ tests/timeloop.c                      |  8 +++---
+ 44 files changed, 336 insertions(+), 165 deletions(-)
+
+commit 41a4a70b433fc5a1e7b0c536fdd3d32a9c214219
+Author: Ondrej Holy <oholy@redhat.com>
+Date:   Thu Aug 3 09:50:41 2017 +0200
+
+    gunixmounts: Add missing const qualifier for mtab path
+
+    get_mtab_read_file and get_mtab_monitor_file returns const path,
+    but const qualifier is missing. Let's add it.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=779607
+
+ gio/gunixmounts.c | 20 ++++++++++----------
+ 1 file changed, 10 insertions(+), 10 deletions(-)
+
+commit 2db36d0d5cef9fb97861f79b1e97fa1c33f1ed59
+Author: Ondrej Holy <oholy@redhat.com>
+Date:   Mon Jul 17 15:53:24 2017 +0200
+
+    gunixmounts: Prevent "mounts-changed" race if /etc/mtab is used
+
+    The /etc/mtab file is still used by some distributions
+    (e.g. Slackware),
+    so it has to be monitored instead of /proc/self/mountinfo in order to
+    avoid races between g_unix_mounts_get and "mounts-changed" signal. The
+    util-linux is built with --enable-libmount-support-mtab in that
+    case and
+    mnt_has_regular_mtab is used for checks. Let's use
+    mnt_has_regular_mtab
+    also to determine which file to monitor.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=779607
+
+ gio/gunixmounts.c | 10 +++++++++-
+ 1 file changed, 9 insertions(+), 1 deletion(-)
+
+commit b267f648d936902e5cad679f2da575bad8bcd1ed
+Author: Руслан Ижбулатов <lrn1986@gmail.com>
+Date:   Sat Jul 29 08:12:40 2017 +0000
+
+    glib/gpoll W32: trust WFMOE() return value
+
+    WaitForMultipleObjectsEx() returns the index of the *first* handle
+    that triggered the wakeup, and promises that all handles with lower
+    index are still inactive. Therefore, don't check them, only check
+    the handles with higher index. This removes the need of rearranging
+    the handles (and, now, handle_to_fd) array, it's enough to take a
+    pointer to the next item and use it as a new, shorter array.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=785468
+
+ glib/gpoll.c | 19 ++++++++++---------
+ 1 file changed, 10 insertions(+), 9 deletions(-)
+
+commit 226ea946853cf4fa340988a8adb8774162acd231
+Author: Руслан Ижбулатов <lrn1986@gmail.com>
+Date:   Sat Jul 29 08:09:05 2017 +0000
+
+    glib/gpoll W32: faster GPollFD lookup
+
+    Put all ptrs for GPollFDs that contribute handles into an array, the
+    layout of which mirrors the handles array. This way finding GPollFD
+    for a handle is a simple matter of knowing this handle's index in
+    the handles array (which is something we always know). Removes the
+    need to loop through all fds looking for the right one. And, with
+    the message FD also passed along, it's now completely unnecessary
+    to even pass fds to poll_rest() at all.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=785468
+
+ glib/gpoll.c | 43 +++++++++++++++++++++----------------------
+ 1 file changed, 21 insertions(+), 22 deletions(-)
+
+commit 201977983e237e35b9e640866e71613387fe1ab9
+Author: Руслан Ижбулатов <lrn1986@gmail.com>
+Date:   Sat Jul 29 08:06:18 2017 +0000
+
+    glib/gpoll W32: pass along GPollFD ptr for msg
+
+    Instead of just indicating that messages should be polled for,
+    save the pointer to GPollFD that contains G_WIN32_MSG_HANDLE, and
+    pass it along. This way it won't be necessary to loop through all
+    fds later on, searching for G_WIN32_MSG_HANDLE.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=785468
+
+ glib/gpoll.c | 30 ++++++++++++++----------------
+ 1 file changed, 14 insertions(+), 16 deletions(-)
+
+commit 1f3da929f5718c24eed67a8e7007f6c39adb441a
+Author: Руслан Ижбулатов <lrn1986@gmail.com>
+Date:   Sat Jul 29 08:04:10 2017 +0000
+
+    glib/gpoll W32: fold f->revents = 0 into for() loop
+
+    GCC most likely optimizes that already, but no harm in trying.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=785468
+
+ glib/gpoll.c | 46 +++++++++++++++++++++++-----------------------
+ 1 file changed, 23 insertions(+), 23 deletions(-)
+
+commit cb2316aaa1adc1f80498141d51467a850cde5fac
+Author: Руслан Ижбулатов <lrn1986@gmail.com>
+Date:   Sat Jul 29 07:56:19 2017 +0000
+
+    glib/gpoll W32: use WFSOE() instead of SleepEx()
+
+    WaitForSingleObjectEx() is supposed to be a more efficient sleep
+    method.
+    It waits on the handle of the current process. That handle will be
+    signaled once the process terminates, and since we're *inside* the
+    process, it'll never happen (and if it does, we won't care anymore).
+    The use of an alertable wait ensures that we wake up when a completion
+    routine wants to run.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=785468
+
+ glib/gpoll.c | 9 +++++----
+ 1 file changed, 5 insertions(+), 4 deletions(-)
+
+commit d67b58a9a6799850dd51f38c122682fc8fe5cd5b
+Author: Alistair Francis <alistair.francis@xilinx.com>
+Date:   Thu Jun 29 14:42:40 2017 -0700
+
+    glib/gpoll: Remove if conditional
+
+    The original ready < nhandles - 1 can be re-written as ready +
+    1 < nhandles
+    which is the same confition that we are checking on the first
+    itteration of the for loop. This means we can remove the if statement
+    and let the for loop check the code.
+
+    This also has the side effect of removing an invalid check as
+    WAIT_OBJECT_0 was not subtracted from ready in the if statement.
+
+    Signed-off-by: Alistair Francis <alistair.francis@xilinx.com>
+
+ glib/gpoll.c | 5 ++---
+ 1 file changed, 2 insertions(+), 3 deletions(-)
+
+commit 425a9f5864f69f804f11279b558ff925d421b546
+Author: Руслан Ижбулатов <lrn1986@gmail.com>
+Date:   Sat Jul 29 07:40:35 2017 +0000
+
+    gio: add a simple gpoll performance test for W32
+
+    It just creates a number of socket pairs, then triggers read-ready
+    status on these pairs in different patterns (none, one, half, all)
+    and checks how much time it takes to g_poll() those. Also sometimes
+    posts a Windows message and polls for its arrival.
+    The g_main_context_new() is necessary to initialize g_poll() debugging
+    on W32.
+
+    Measures minimal and maximal time it takes to g_poll(), as well as
+    the average, over 1000 runs.
+    Collects the time values into 25 non-linear buckets between 0ns and
+    1000ns, and displays them at the conclusion of each subtest.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=785468
+
+ glib/tests/Makefile.am |   4 +
+ glib/tests/gpoll.c     | 624
+ +++++++++++++++++++++++++++++++++++++++++++++++++
+ 2 files changed, 628 insertions(+)
+
+commit 8cc99502022944917f5dd78ce1d1427582081396
+Author: Alberts Muktupāvels <alberts.muktupavels@gmail.com>
+Date:   Tue Aug 1 12:18:42 2017 +0300
+
+    glib-mkenums: fix parsing of flags annotation
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=779332
+
+ gobject/glib-mkenums.in | 5 +++++
+ 1 file changed, 5 insertions(+)
+
+commit ca69df0f16fd0bda99baf609a8ce9f38e1039f65
+Author: Emmanuele Bassi <ebassi@gnome.org>
+Date:   Tue Aug 1 10:11:09 2017 +0100
+
+    Revert "glib-mkenums: fix parsing of /*< flags >*/ annotation"
+
+    This reverts commit 1672678bc48c1c060d1ee6bb3df124b3e4f9ca33.
+
+    A more comprehensive fix will follow.
+
+ gobject/glib-mkenums.in | 10 +++++-----
+ 1 file changed, 5 insertions(+), 5 deletions(-)
+
+commit 867b5e6f902e945e8a02a3d2d35d698e19f8f892
+Author: Christoph Reiter <creiter@src.gnome.org>
+Date:   Wed Jul 26 11:26:00 2017 +0200
+
+    glib-mkenums: Python2: use locale encoding when redirecting stdout
+
+    In case of Python 2 and stdout being redirected to a file,
+    sys.stdout.encoding
+    is None and it defaults ASCII for encoding text.
+
+    To match the behaviour of Python 3, which uses the locale encoding
+    also when
+    redirecting to a file, wrap sys.stdout with a StreamWriter using the
+    locale encoding.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=785113
+
+ gobject/glib-mkenums.in | 10 +++++++++-
+ 1 file changed, 9 insertions(+), 1 deletion(-)
+
+commit a7926117dde57d6408f292b54d9950b3a1f4cb79
+Author: Debarshi Ray <debarshir@gnome.org>
+Date:   Wed Jul 26 11:34:02 2017 +0200
+
+    gdatetime: Silence -Wmaybe-uninitialized
+
+    GCC 6.3.1 thinks that tmp is being used uninitialized:
+      gdatetime.c: In function ‘format_ampm’:
+      gdatetime.c:2248:7: warning: ‘tmp’ may be used uninitialized
+      in this
+        function [-Wmaybe-uninitialized]
+             g_free (tmp);
+             ^~~~~~~~~~~~
+
+    It is not an actual problem because the code in question is guarded by
+    "if (!locale_is_utf8)" and "#if defined (HAVE_LANGINFO_TIME)", and it
+    does get initialized under those circumstances. Still, it is a small
+    price to pay for a cleaner build and having actual problems stand out
+    more prominently.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=785438
+
+ glib/gdatetime.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 528a1b9288e410f961b012c75d4887da3ad15b2e
+Author: Piotr Drąg <piotrdrag@gmail.com>
+Date:   Sat Jul 15 03:42:15 2017 +0200
+
+    Use the glib preset for i18n in Meson
+
+    Preset handles xgettext options for us,
+    and we can rely on Meson to parse LINGUAS.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=784965
+
+ po/meson.build | 126
+ +--------------------------------------------------------
+ 1 file changed, 1 insertion(+), 125 deletions(-)
+
+commit b51a0e7c63313ecfc0c6bbb9f2a8d99f193e51ea
+Author: Debarshi Ray <debarshir@gnome.org>
+Date:   Fri Jul 21 14:37:35 2017 +0200
+
+    GApplication: Use a WARNING if dbus_unregister is called by destructor
+
+    Unlike g_application_register, there is no public API to unregister
+    the
+    GApplication from D-Bus. Therefore, if the GApplication is set up
+    manually without using g_application_run, then neither can the
+    GApplicationImpl be destroyed nor can dbus_unregister be called before
+    destruction.
+
+    This is fine as long as no sub-class has implemented dbus_unregister.
+    If they have, their method method will be called after destruction,
+    and
+    they should be prepared to deal with the consequences.
+
+    As long as there is no public API for unregistering, let's demote the
+    assertion to a WARNING. Bravehearts who don't use g_application_run
+    can continue to implement dbus_unregister, but they would have been
+    adequately notified.
+
+    This reverts commit c1ae1170fa47483b9bcb30de8cd346cbc4fe10e3.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=725950
+
+ gio/gapplication.c | 22 +++++++++++++++++-----
+ 1 file changed, 17 insertions(+), 5 deletions(-)
+
+commit df06dc65501100606ca027d4e85aa5a240305be2
+Author: Debarshi Ray <debarshir@gnome.org>
+Date:   Thu Jun 8 20:15:46 2017 +0200
+
+    GApplication: Don't call dbus_unregister multiple times
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=725950
+
+ gio/gapplicationimpl-dbus.c | 12 +++++++++---
+ 1 file changed, 9 insertions(+), 3 deletions(-)
+
+commit b92e15c75df7ed517bc4b256c710cad5cfa43816
+Author: Christoph Reiter <creiter@src.gnome.org>
+Date:   Sat Jul 22 20:47:43 2017 +0200
+
+    glib-mkenums: fix encoding error when writing files
+
+    Instead of using NamedTemporaryFile, which doesn't take an encoding
+    in Python 2
+    use mkstemp() to create a file and open it with io.open(), with
+    a proper
+    encoding set.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=785113
+
+ gobject/glib-mkenums.in | 4 +++-
+ 1 file changed, 3 insertions(+), 1 deletion(-)
+
+commit 039c40e6ec96020e568fb6c1e45dc48f3c4fa6de
+Author: Emmanuele Bassi <ebassi@gnome.org>
+Date:   Fri Jul 21 15:33:37 2017 +0100
+
+    Revert "GKeyFile – Add array length annotations to to_data(),
+    get_keys() and get_groups()"
+
+    This reverts commit fd329f4853f180eb92746f39fc96fd5d91394009.
+
+    The commit changed the Introspection ABI, and it requires a change in
+    any application using an introspection-based language binding.
+
+ glib/gkeyfile.c | 6 +++---
+ 1 file changed, 3 insertions(+), 3 deletions(-)
+
+commit bfd307855bd21108c98d72bf4d85a6c632396cde
+Author: Emmanuele Bassi <ebassi@gnome.org>
+Date:   Fri Jul 21 14:03:05 2017 +0100
+
+    meson: Allow toggling internal/system PCRE dependency
+
+    We don't always want to build GLib with a dependency on the system's
+    PCRE. The Autotools build allows this, and so should the Meson build.
+
+ glib/meson.build  |  2 +-
+ meson.build       | 12 +++++++++---
+ meson_options.txt |  1 +
+ 3 files changed, 11 insertions(+), 4 deletions(-)
+
+commit 8962736ba9deb8f6a6b143fce1b6fd692ffaaa21
+Author: Debarshi Ray <debarshir@gnome.org>
+Date:   Thu Jul 20 18:57:01 2017 +0200
+
+    docs: Encourage applications to define G_LOG_DOMAIN
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=785130
+
+ glib/gmessages.c | 9 +++++++--
+ 1 file changed, 7 insertions(+), 2 deletions(-)
+
+commit fd541c35184f1aba027ac176074fa52c374073cb
+Author: Emmanuele Bassi <ebassi@gnome.org>
+Date:   Thu Jul 20 15:11:50 2017 +0100
+
+    Require Python 2.7
+
+    Python 2.7 is the last stable release of the 2.x series, as per PEP
+    404: http://legacy.python.org/dev/peps/pep-0404/
+
+    Python 2.7 is also 7 years old, and maintained until 2020.
+
+ configure.ac | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit c1ae1170fa47483b9bcb30de8cd346cbc4fe10e3
+Author: Debarshi Ray <debarshir@gnome.org>
+Date:   Mon Jun 19 16:16:08 2017 +0200
+
+    GApplication: Assert that dbus_unregister was called before
+    destruction
+
+    Invoking the dbus_unregister virtual method during destruction is
+    problematic. It would happen after a sub-class has dropped its
+    references to its instance objects, and it is surprising to be
+    asked to
+    unexport exported D-Bus objects after that.
+
+    This problem was masked as a side-effect of commit 21b1c390a3ce1f7e.
+    Let's ensure that it doesn't regress by asserting that dbus_unregister
+    has happened before destruction.
+
+    Based on a patch by Giovanni Campagna.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=725950
+
+ gio/gapplication.c | 17 ++++++++++++++---
+ 1 file changed, 14 insertions(+), 3 deletions(-)
+
+commit be7c3ae611af6b8705319250ca9942e5144be795
+Author: Christoph Reiter <creiter@src.gnome.org>
+Date:   Mon Jul 17 21:39:31 2017 +0200
+
+    meson: set glib_extension in glibconfig.h to match the autotools
+    output
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=784995
+
+ meson.build | 7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
+
+commit cb0c224e94b366872292eada2d2f295e562d8f92
+Author: Christoph Reiter <creiter@src.gnome.org>
+Date:   Mon Jul 17 21:31:39 2017 +0200
+
+    meson: use set_quoted() instead of quoting manually
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=784995
+
+ meson.build | 134
+ ++++++++++++++++++++++++++++++------------------------------
+ 1 file changed, 67 insertions(+), 67 deletions(-)
+
+commit ab6e425574ce2f6aeaeddeee82cbbe7d1bbdd8d4
+Author: Christoph Reiter <reiter.christoph@gmail.com>
+Date:   Mon Jul 17 18:33:42 2017 +0200
+
+    meson: define G_PID_FORMAT
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=784995
+
+ glib/glibconfig.h.in | 1 +
+ meson.build          | 4 ++--
+ 2 files changed, 3 insertions(+), 2 deletions(-)
+
+commit d88d1ba7e844b5493a53dfcdba77d4df3ea1684d
+Author: Christoph Reiter <creiter@src.gnome.org>
+Date:   Wed Jul 19 11:49:04 2017 +0200
+
+    glib-mkenums: Don't use FileNotFoundError, it's Python 3 only.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=785113
+
+ gobject/glib-mkenums.in | 9 ++++++---
+ 1 file changed, 6 insertions(+), 3 deletions(-)
+
+commit c2dace6b8b982ca821edc29501c7635d008a8357
+Author: Christoph Reiter <creiter@src.gnome.org>
+Date:   Wed Jul 19 11:43:47 2017 +0200
+
+    glib-mkenums: Use utf-8 for reading files
+
+    On Windows open() defaults to ANSI and on Python 2 it doesn't take
+    an encoding. Use io.open() instead which provides the same interface
+    on both Python versions.
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=785113
+
+ gobject/glib-mkenums.in | 7 ++++---
+ 1 file changed, 4 insertions(+), 3 deletions(-)
+
+commit 2ac8079b9414be67a99f736e15383e85da56f7dd
+Author: Tim-Philipp Müller <tim@centricular.com>
+Date:   Wed Jul 19 10:34:45 2017 +0100
+
+    meson: fix unit tests and "Invalid byte sequence in conversion input"
+
+    Check if strerror_r returns a char * and define STRERROR_R_CHAR_P
+    if so, which is needed by g_strerror() since c8e268b
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=784000
+
+ config.h.meson |  3 +++
+ meson.build    | 17 +++++++++++++++++
+ 2 files changed, 20 insertions(+)
+
+commit f8a88a768d976a3bb642c5088634006e1b5e3611
+Author: Adrian Perez de Castro <aperez@igalia.com>
+Date:   Tue Jul 11 22:28:50 2017 +0300
+
+    Map G_NOTIFICATION_PRIORITY_HIGH to NOTIFY_URGENCY_NORMAL
+
+    When using the Freedesktop backend for GNotification, it seems like a
+    better idea to map G_NOTIFICATION_PRIORITY_HIGH to
+    NOTIFY_URGENCY_NORMAL
+    (instead of NOTIFY_URGENCY_CRITICAL) provided that the difference
+    between GNotification's NORMAL and HIGH priorities is minor.
+
+    Signed-off-by: Adrian Perez de Castro <aperez@igalia.com>
+
+    https://bugzilla.gnome.org/show_bug.cgi?id=784815
+
+ gio/gfdonotificationbackend.c | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+commit 9a31103ebbf3af09fb5fc783491a6fb5dd25b4be
+Author: Emmanuele Bassi <ebassi@gnome.org>
+Date:   Tue Jul 18 11:56:16 2017 +0100
+
+    Add Meson build files to the Autotools dist
+
+    We should allow building GLib with Meson from an Autotools dist
+    tarball.
+
+ Makefile.am | 39 +++++++++++++++++++++++++++++++++++++++
+ 1 file changed, 39 insertions(+)
+
+commit 9424facde289185c7bde4159be6961dba4cb5983
+Author: Matthias Clasen <mclasen@redhat.com>
+Date:   Mon Jul 17 16:20:52 2017 -0400
+
+    2.53.4
+
+ gio/tests/modules/Makefile.am | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
 commit 2219cfb92daf9b9413de35a1089efa3a1dff7602
 Author: Emmanuele Bassi <ebassi@gnome.org>
 Date:   Mon Jul 17 16:29:40 2017 +0100
diff --git a/INSTALL b/INSTALL
index 0e130b7..9d86dde 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -1,8 +1,8 @@
 Simple install procedure
 ========================
 
-  % tar xf glib-2.53.4.tar.gz       # unpack the sources
-  % cd glib-2.53.4                  # change to the toplevel directory
+  % tar xf glib-2.53.5.tar.gz       # unpack the sources
+  % cd glib-2.53.5                  # change to the toplevel directory
   % ./configure                             # run the `configure' script
   % make                                    # build GLIB
 
index 4e2a36b..4ea6515 100644 (file)
@@ -65,6 +65,45 @@ EXTRA_DIST +=                        \
        gtk-doc.make            \
        $(NULL)
 
+meson_build_files = \
+       config.h.meson \
+       meson_options.txt \
+       meson.build \
+       docs/reference/gio/meson.build \
+       docs/reference/gio/xml/gtkdocentities.ent.in \
+       docs/reference/gio/xml/meson.build \
+       docs/reference/glib/meson.build \
+       docs/reference/glib/xml/gtkdocentities.ent.in \
+       docs/reference/glib/xml/meson.build \
+       docs/reference/gobject/meson.build \
+       docs/reference/gobject/xml/gtkdocentities.ent.in \
+       docs/reference/gobject/xml/meson.build \
+       gio/data-to-c.py \
+       gio/gdbus-2.0/codegen/meson.build \
+       gio/inotify/meson.build \
+       gio/kqueue/meson.build \
+       gio/meson.build \
+       gio/tests/meson.build \
+       gio/tests/modules/meson.build \
+       gio/tests/gdbus-object-manager-example/meson.build \
+       gio/tests/de/LC_MESSAGES/meson.build \
+       gio/win32/meson.build \
+       gio/xdgmime/meson.build \
+       glib/libcharset/meson.build \
+       glib/meson.build \
+       glib/pcre/meson.build \
+       glib/tests/meson.build \
+       gmodule/meson.build \
+       gobject/meson.build \
+       gobject/tests/meson.build \
+       gthread/meson.build \
+       po/meson.build
+       tests/refcount/meson.build \
+       tests/meson.build \
+       tests/gobject/meson.build \
+       $()
+
+EXTRA_DIST += $(meson_build_files)
 
 # These may be in the builddir too
 BUILT_EXTRA_DIST +=            \
index 5f44c2c..f0a8493 100644 (file)
@@ -438,8 +438,8 @@ am__DIST_COMMON = $(srcdir)/INSTALL.in $(srcdir)/Makefile.in \
        $(srcdir)/gmodule-no-export-2.0.pc.in \
        $(srcdir)/gobject-2.0.pc.in $(srcdir)/gthread-2.0.pc.in \
        $(top_srcdir)/glib.mk AUTHORS COPYING ChangeLog INSTALL NEWS \
-       README compile config.guess config.sub install-sh ltmain.sh \
-       missing py-compile test-driver
+       README compile config.guess config.sub depcomp install-sh \
+       ltmain.sh missing py-compile test-driver
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 distdir = $(PACKAGE)-$(VERSION)
 top_distdir = $(distdir)
@@ -754,7 +754,8 @@ EXTRA_DIST = $(all_dist_test_scripts) $(all_dist_test_data) \
        glib-2.0.pc.in gobject-2.0.pc.in gmodule-2.0.pc.in \
        gmodule-export-2.0.pc.in gmodule-no-export-2.0.pc.in \
        gthread-2.0.pc.in gio-2.0.pc.in gio-unix-2.0.pc.in \
-       gio-windows-2.0.pc.in check-abis.sh gtk-doc.make $(NULL)
+       gio-windows-2.0.pc.in check-abis.sh gtk-doc.make $(NULL) \
+       $(meson_build_files)
 
 # We support a fairly large range of possible variables.  It is expected that all types of files in a test suite
 # will belong in exactly one of the following variables.
@@ -843,6 +844,40 @@ AM_CPPFLAGS = \
        -DG_DISABLE_DEPRECATED                  \
        -DGLIB_COMPILATION
 
+meson_build_files = \
+       config.h.meson \
+       meson_options.txt \
+       meson.build \
+       docs/reference/gio/meson.build \
+       docs/reference/gio/xml/gtkdocentities.ent.in \
+       docs/reference/gio/xml/meson.build \
+       docs/reference/glib/meson.build \
+       docs/reference/glib/xml/gtkdocentities.ent.in \
+       docs/reference/glib/xml/meson.build \
+       docs/reference/gobject/meson.build \
+       docs/reference/gobject/xml/gtkdocentities.ent.in \
+       docs/reference/gobject/xml/meson.build \
+       gio/data-to-c.py \
+       gio/gdbus-2.0/codegen/meson.build \
+       gio/inotify/meson.build \
+       gio/kqueue/meson.build \
+       gio/meson.build \
+       gio/tests/meson.build \
+       gio/tests/modules/meson.build \
+       gio/tests/gdbus-object-manager-example/meson.build \
+       gio/tests/de/LC_MESSAGES/meson.build \
+       gio/win32/meson.build \
+       gio/xdgmime/meson.build \
+       glib/libcharset/meson.build \
+       glib/meson.build \
+       glib/pcre/meson.build \
+       glib/tests/meson.build \
+       gmodule/meson.build \
+       gobject/meson.build \
+       gobject/tests/meson.build \
+       gthread/meson.build \
+       po/meson.build
+
 CONFIGURE_DEPENDENCIES = acglib.m4
 pkgconfigdir = $(libdir)/pkgconfig
 pkgconfig_DATA = glib-2.0.pc gobject-2.0.pc gmodule-2.0.pc \
@@ -1896,6 +1931,10 @@ check-local: test-nonrecursive
 
 # http://people.gnome.org/~walters/docs/build-api.txt
 .buildapi-allow-builddir:
+       tests/refcount/meson.build \
+       tests/meson.build \
+       tests/gobject/meson.build \
+       $()
 
 ChangeLog:
        $(AM_V_GEN) if test -d "$(srcdir)/.git"; then \
diff --git a/NEWS b/NEWS
index 8db2c80..303bf04 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,29 @@
+Overview of changes in GLib 2.53.5
+==================================
+
+* Bugs fixed:
+ 695573 Untranslatable strings in glib-compile-schemas
+ 725950 GApplication: call dbus_unregister only once, and before destruction
+ 731703 giomodule test misbuilds its test modules as libraries
+ 769135 External control for g_test_add/g_test_run
+ 779332 Rewrite mkenums in Python
+ 779607 Race between mounts-changed signal and g_unix_mounts_get() function
+ 784000 Improve strerror_r() detection
+ 784815 Map G_NOTIFICATION_PRIORITY_HIGH to NOTIFY_URGENCY_NORMAL
+ 784965 Use the glib preset for i18n in Meson
+ 784995 meson: some Windows improvements
+ 785113 glib-mkenums Python port fixes
+ 785130 G_LOG_DOMAIN shouldn't be left undefined for applications
+ 785438 Spurious -Wmaybe-uninitialized in gdatetime.c
+ 785468 glib/gpoll: Unnecessary if conditional included in the poll_rest() function
+ 785520 Replace advice to use removed gdk_spawn functions
+ 785577 clobbers errno while setting GError
+
+* Translation updates:
+ Slovenian
+ Spanish
+
+
 Overview of changes in GLib 2.53.4
 ==================================
 
diff --git a/README b/README
index fa1947a..c6ecfe2 100644 (file)
--- a/README
+++ b/README
@@ -1,7 +1,7 @@
 General Information
 ===================
 
-This is GLib version 2.53.4. GLib is the low-level core
+This is GLib version 2.53.5. GLib is the low-level core
 library that forms the basis for projects such as GTK+ and GNOME. It
 provides data structure handling for C, portability wrappers, and
 interfaces for such runtime functionality as an event loop, threads,
index 2e9ad7f..69ed3e5 100755 (executable)
@@ -1,8 +1,8 @@
 #! /bin/sh
 # Attempt to guess a canonical system name.
-#   Copyright 1992-2016 Free Software Foundation, Inc.
+#   Copyright 1992-2017 Free Software Foundation, Inc.
 
-timestamp='2016-10-02'
+timestamp='2017-03-05'
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
@@ -50,7 +50,7 @@ version="\
 GNU config.guess ($timestamp)
 
 Originally written by Per Bothner.
-Copyright 1992-2016 Free Software Foundation, Inc.
+Copyright 1992-2017 Free Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -837,10 +837,11 @@ EOF
        UNAME_PROCESSOR=`/usr/bin/uname -p`
        case ${UNAME_PROCESSOR} in
            amd64)
-               echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
-           *)
-               echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;;
+               UNAME_PROCESSOR=x86_64 ;;
+           i386)
+               UNAME_PROCESSOR=i586 ;;
        esac
+       echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
        exit ;;
     i*:CYGWIN*:*)
        echo ${UNAME_MACHINE}-pc-cygwin
@@ -1343,6 +1344,9 @@ EOF
     NSR-?:NONSTOP_KERNEL:*:*)
        echo nsr-tandem-nsk${UNAME_RELEASE}
        exit ;;
+    NSX-?:NONSTOP_KERNEL:*:*)
+       echo nsx-tandem-nsk${UNAME_RELEASE}
+       exit ;;
     *:NonStop-UX:*:*)
        echo mips-compaq-nonstopux
        exit ;;
diff --git a/config.h.meson b/config.h.meson
new file mode 100644 (file)
index 0000000..9be7901
--- /dev/null
@@ -0,0 +1,804 @@
+/* config.h.in.  Generated from configure.ac by autoheader.  */
+
+/* Define if building universal (internal helper macro) */
+#mesondefine AC_APPLE_UNIVERSAL_BUILD
+
+/* The normal alignment of `guint32', in bytes. */
+#mesondefine ALIGNOF_GUINT32
+
+/* The normal alignment of `guint64', in bytes. */
+#mesondefine ALIGNOF_GUINT64
+
+/* The normal alignment of `unsigned long', in bytes. */
+#mesondefine ALIGNOF_UNSIGNED_LONG
+
+/* poll doesn't work on devices */
+#mesondefine BROKEN_POLL
+
+/* Whether we're building a DLL and hence need symbols exported for a DLL */
+#mesondefine DLL_EXPORT
+
+/* Define to one of `_getb67', `GETB67', `getb67' for Cray-2 and Cray-YMP
+   systems. This function is required for `alloca.c' support on those systems.
+   */
+#mesondefine CRAY_STACKSEG_END
+
+/* Define to 1 if using `alloca.c'. */
+#mesondefine C_ALLOCA
+
+/* Whether to disable memory pools */
+#mesondefine DISABLE_MEM_POOLS
+
+/* Whether to enable GC friendliness by default */
+#mesondefine ENABLE_GC_FRIENDLY_DEFAULT
+
+/* always defined to indicate that i18n is enabled */
+#mesondefine ENABLE_NLS
+
+/* Define the gettext package to be used */
+#mesondefine GETTEXT_PACKAGE
+
+/* Define to the GLIB binary age */
+#mesondefine GLIB_BINARY_AGE
+
+/* Define to the GLIB interface age */
+#mesondefine GLIB_INTERFACE_AGE
+
+/* Define the location where the catalogs will be installed */
+#mesondefine GLIB_LOCALE_DIR
+
+/* Define to the GLIB major version */
+#mesondefine GLIB_MAJOR_VERSION
+
+/* Define to the GLIB micro version */
+#mesondefine GLIB_MICRO_VERSION
+
+/* Define to the GLIB minor version */
+#mesondefine GLIB_MINOR_VERSION
+
+/* A 'va_copy' style function */
+#mesondefine G_VA_COPY
+
+/* 'va_lists' cannot be copies as values */
+#mesondefine G_VA_COPY_AS_ARRAY
+
+/* Define to 1 if you have `alloca', as a function or macro. */
+#mesondefine HAVE_ALLOCA
+
+/* Define to 1 if you have <alloca.h> and it should be used (not on Ultrix).
+   */
+#mesondefine HAVE_ALLOCA_H
+
+/* Define to 1 if you have the <attr/xattr.h> header file. */
+#mesondefine HAVE_ATTR_XATTR_H
+
+/* Define to 1 if you have the `bind_textdomain_codeset' function. */
+#mesondefine HAVE_BIND_TEXTDOMAIN_CODESET
+
+/* Define if you have a version of the snprintf function with semantics as
+   specified by the ISO C99 standard. */
+#mesondefine HAVE_C99_SNPRINTF
+
+/* Define if you have a version of the vsnprintf function with semantics as
+   specified by the ISO C99 standard. */
+#mesondefine HAVE_C99_VSNPRINTF
+
+/* define to 1 if Carbon is available */
+#mesondefine HAVE_CARBON
+
+/* Define to 1 if you have the `clock_gettime' function. */
+#mesondefine HAVE_CLOCK_GETTIME
+
+/* define to 1 if Cocoa is available */
+#mesondefine HAVE_COCOA
+
+/* Have nl_langinfo (CODESET) */
+#mesondefine HAVE_CODESET
+
+/* Define to 1 if you have the <crt_externs.h> header file. */
+#mesondefine HAVE_CRT_EXTERNS_H
+
+/* Define if dbus-1 is available */
+#mesondefine HAVE_DBUS1
+
+/* Define to 1 if you have the `dcgettext' function. */
+#mesondefine HAVE_DCGETTEXT
+
+/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'.
+   */
+#mesondefine HAVE_DIRENT_H
+
+/* Define to 1 if you have the <dlfcn.h> header file. */
+#mesondefine HAVE_DLFCN_H
+
+/* Define to 1 if using dtrace probes. */
+#mesondefine HAVE_DTRACE
+
+/* Define to 1 if you have the `endmntent' function. */
+#mesondefine HAVE_ENDMNTENT
+
+/* Define to 1 if you have the `endservent' function. */
+#mesondefine HAVE_ENDSERVENT
+
+/* we have the eventfd(2) system call */
+#mesondefine HAVE_EVENTFD
+
+/* Define to 1 if you have the `fallocate' function. */
+#mesondefine HAVE_FALLOCATE
+
+/* Define if we have FAM */
+#mesondefine HAVE_FAM
+
+/* Define to 1 if you have the <fam.h> header file. */
+#mesondefine HAVE_FAM_H
+
+/* Define if we have FAMNoExists in fam */
+#mesondefine HAVE_FAM_NO_EXISTS
+
+/* Define to 1 if you have the `fchmod' function. */
+#mesondefine HAVE_FCHMOD
+
+/* Define to 1 if you have the `fchown' function. */
+#mesondefine HAVE_FCHOWN
+
+/* Define to 1 if you have the `fdwalk' function. */
+#mesondefine HAVE_FDWALK
+
+/* Define to 1 if you have the <fstab.h> header file. */
+#mesondefine HAVE_FSTAB_H
+
+/* Define to 1 if you have the `fsync' function. */
+#mesondefine HAVE_FSYNC
+
+/* we have the futex(2) system call */
+#mesondefine HAVE_FUTEX
+
+/* Define to 1 if you have the `getc_unlocked' function. */
+#mesondefine HAVE_GETC_UNLOCKED
+
+/* Define to 1 if you have the `getfsstat' function. */
+#mesondefine HAVE_GETFSSTAT
+
+/* Define to 1 if you have the `getgrgid_r' function. */
+#mesondefine HAVE_GETGRGID_R
+
+/* Define to 1 if you have the `getmntent_r' function. */
+#mesondefine HAVE_GETMNTENT_R
+
+/* Define to 1 if you have the `getprotobyname_r' function. */
+#mesondefine HAVE_GETPROTOBYNAME_R
+
+/* Define to 1 if you have the `getpwuid_r' function. */
+#mesondefine HAVE_GETPWUID_R
+
+/* Define to 1 if you have the `getresuid' function. */
+#mesondefine HAVE_GETRESUID
+
+/* Define if the GNU gettext() function is already present or preinstalled. */
+#mesondefine HAVE_GETTEXT
+
+/* Define to 1 if you have the `getvfsstat' function. */
+#mesondefine HAVE_GETVFSSTAT
+
+/* Define to 1 if you have the `gmtime_r' function. */
+#mesondefine HAVE_GMTIME_R
+
+/* define to use system printf */
+#mesondefine HAVE_GOOD_PRINTF
+
+/* Define to 1 if you have the `hasmntopt' function. */
+#mesondefine HAVE_HASMNTOPT
+
+/* Define to 1 if you have the `if_indextoname' function. */
+#mesondefine HAVE_IF_INDEXTONAME
+
+/* Define to 1 if you have the `if_nametoindex' function. */
+#mesondefine HAVE_IF_NAMETOINDEX
+
+/* Define to 1 if you have the `inotify_init1' function. */
+#mesondefine HAVE_INOTIFY_INIT1
+
+/* define to support printing 64-bit integers with format I64 */
+#mesondefine HAVE_INT64_AND_I64
+
+/* Define if you have the 'intmax_t' type in <stdint.h> or <inttypes.h>. */
+#mesondefine HAVE_INTMAX_T
+
+/* Define to 1 if you have the <inttypes.h> header file. */
+#mesondefine HAVE_INTTYPES_H
+
+/* Define if <inttypes.h> exists, doesn't clash with <sys/types.h>, and
+   declares uintmax_t. */
+#mesondefine HAVE_INTTYPES_H_WITH_UINTMAX
+
+/* Define if we have struct ip_mreqn */
+#mesondefine HAVE_IP_MREQN
+
+/* Define to 1 if you have the `issetugid' function. */
+#mesondefine HAVE_ISSETUGID
+
+/* Define to 1 if you have the `kevent' function. */
+#mesondefine HAVE_KEVENT
+
+/* Define to 1 if you have the `kqueue' function. */
+#mesondefine HAVE_KQUEUE
+
+/* Define if you have <langinfo.h> and nl_langinfo(CODESET). */
+#mesondefine HAVE_LANGINFO_CODESET
+
+/* Have nl_langinfo (_NL_CTYPE_OUTDIGITn_MB) */
+#mesondefine HAVE_LANGINFO_OUTDIGIT
+
+/* Have nl_langinfo (PM_STR) */
+#mesondefine HAVE_LANGINFO_TIME
+
+/* Define to 1 if you have the `lchmod' function. */
+#mesondefine HAVE_LCHMOD
+
+/* Define to 1 if you have the `lchown' function. */
+#mesondefine HAVE_LCHOWN
+
+/* Define if your <locale.h> file defines LC_MESSAGES. */
+#mesondefine HAVE_LC_MESSAGES
+
+/* Define if you have the __libc_enable_secure variable (GNU libc, eglibc) */
+#mesondefine HAVE_LIBC_ENABLE_SECURE
+
+/* Define if libelf is available */
+#mesondefine HAVE_LIBELF
+
+/* Define to 1 if you have the <linux/magic.h> header file. */
+#mesondefine HAVE_LINUX_MAGIC_H
+
+/* Define to 1 if you have the <locale.h> header file. */
+#mesondefine HAVE_LOCALE_H
+
+/* Define to 1 if you have the `localtime_r' function. */
+#mesondefine HAVE_LOCALTIME_R
+
+/* Define if you have the 'long double' type. */
+#mesondefine HAVE_LONG_DOUBLE
+
+/* Define if you have the 'long long' type. */
+#mesondefine HAVE_LONG_LONG
+
+/* define if system printf can print long long */
+#mesondefine HAVE_LONG_LONG_FORMAT
+
+/* Define to 1 if you have the `lstat' function. */
+#mesondefine HAVE_LSTAT
+
+/* Define to 1 if you have the <mach/mach_time.h> header file. */
+#mesondefine HAVE_MACH_MACH_TIME_H
+
+/* Define to 1 if you have the <malloc.h> header file. */
+#mesondefine HAVE_MALLOC_H
+
+/* Define to 1 if you have the `mbrtowc' function. */
+#mesondefine HAVE_MBRTOWC
+
+/* Define to 1 if you have the `memalign' function. */
+#mesondefine HAVE_MEMALIGN
+
+/* Define to 1 if you have the `memmem' function. */
+#mesondefine HAVE_MEMMEM
+
+/* Define to 1 if you have the <memory.h> header file. */
+#mesondefine HAVE_MEMORY_H
+
+/* Define to 1 if you have the `mmap' function. */
+#mesondefine HAVE_MMAP
+
+/* Define to 1 if you have the <mntent.h> header file. */
+#mesondefine HAVE_MNTENT_H
+
+/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */
+#mesondefine HAVE_NDIR_H
+
+/* We have AF_NETLINK sockets */
+#mesondefine HAVE_NETLINK
+
+/* Define to 1 if you have the `newlocale' function. */
+#mesondefine HAVE_NEWLOCALE
+
+/* open option O_DIRECTORY */
+#mesondefine HAVE_OPEN_O_DIRECTORY
+
+/* Define to 1 if you have the `pipe2' function. */
+#mesondefine HAVE_PIPE2
+
+/* Define to 1 if you have the `poll' function. */
+#mesondefine HAVE_POLL
+
+/* Define to 1 if you have the `posix_memalign' function. */
+#mesondefine HAVE_POSIX_MEMALIGN
+
+/* Define to 1 if you have the `prlimit' function. */
+#mesondefine HAVE_PRLIMIT
+
+/* Have function pthread_attr_setstacksize */
+#mesondefine HAVE_PTHREAD_ATTR_SETSTACKSIZE
+
+/* Have function pthread_cond_timedwait_relative_np */
+#mesondefine HAVE_PTHREAD_COND_TIMEDWAIT_RELATIVE_NP
+
+/* Have function pthread_condattr_setclock */
+#mesondefine HAVE_PTHREAD_CONDATTR_SETCLOCK
+
+/* Have function pthread_setname_np without TID as argument */
+#mesondefine HAVE_PTHREAD_SETNAME_NP_WITHOUT_TID
+
+/* Have function pthread_setname_np with TID as argument */
+#mesondefine HAVE_PTHREAD_SETNAME_NP_WITH_TID
+
+/* Define to 1 if the system has the type `ptrdiff_t'. */
+#mesondefine HAVE_PTRDIFF_T
+
+/* Define to 1 if you have the `readlink' function. */
+#mesondefine HAVE_READLINK
+
+/* Define to 1 if you have the `recvmmsg' function. */
+#mesondefine HAVE_RECVMMSG
+
+/* Define to 1 if you have the 'res_init' function. */
+#mesondefine HAVE_RES_INIT
+
+/* Define to 1 if you have the <sched.h> header file. */
+#mesondefine HAVE_SCHED_H
+
+/* Define to 1 if libselinux is available */
+#mesondefine HAVE_SELINUX
+
+/* Define to 1 if you have the <selinux/selinux.h> header file. */
+#mesondefine HAVE_SELINUX_SELINUX_H
+
+/* Define to 1 if you have the `sendmmsg' function. */
+#mesondefine HAVE_SENDMMSG
+
+/* Define to 1 if you have the `setenv' function. */
+#mesondefine HAVE_SETENV
+
+/* Define to 1 if you have the `setmntent' function. */
+#mesondefine HAVE_SETMNTENT
+
+/* Define if you have the 'sig_atomic_t' type. */
+#mesondefine HAVE_SIG_ATOMIC_T
+
+/* Define to 1 if you have the `snprintf' function. */
+#mesondefine HAVE_SNPRINTF
+
+/* Define to 1 if you have the `splice' function. */
+#mesondefine HAVE_SPLICE
+
+/* Define to 1 if you have the `statfs' function. */
+#mesondefine HAVE_STATFS
+
+/* Define to 1 if you have the `statvfs' function. */
+#mesondefine HAVE_STATVFS
+
+/* Define to 1 if you have the <stddef.h> header file. */
+#mesondefine HAVE_STDDEF_H
+
+/* Define to 1 if you have the <stdint.h> header file. */
+#mesondefine HAVE_STDINT_H
+
+/* Define if <stdint.h> exists, doesn't clash with <sys/types.h>, and declares
+   uintmax_t. */
+#mesondefine HAVE_STDINT_H_WITH_UINTMAX
+
+/* Define to 1 if you have the <stdlib.h> header file. */
+#mesondefine HAVE_STDLIB_H
+
+/* Define to 1 if you have the `stpcpy' function. */
+#mesondefine HAVE_STPCPY
+
+/* Define to 1 if you have the `strcasecmp' function. */
+#mesondefine HAVE_STRCASECMP
+
+/* Define to 1 if you have the `strerror_r' function. */
+#mesondefine HAVE_STRERROR_R
+
+/* Define if strerror_r returns char * */
+#mesondefine STRERROR_R_CHAR_P
+
+/* Define to 1 if you have the <strings.h> header file. */
+#mesondefine HAVE_STRINGS_H
+
+/* Define to 1 if you have the <string.h> header file. */
+#mesondefine HAVE_STRING_H
+
+/* Have functions strlcpy and strlcat */
+#mesondefine HAVE_STRLCPY
+
+/* Define to 1 if you have the `strncasecmp' function. */
+#mesondefine HAVE_STRNCASECMP
+
+/* Define to 1 if you have the `strnlen' function. */
+#mesondefine HAVE_STRNLEN
+
+/* Define to 1 if you have the `strsignal' function. */
+#mesondefine HAVE_STRSIGNAL
+
+/* Define to 1 if you have the `strtod_l' function. */
+#mesondefine HAVE_STRTOD_L
+
+/* Define to 1 if you have the `strtoll_l' function. */
+#mesondefine HAVE_STRTOLL_L
+
+/* Define to 1 if you have the `strtoull_l' function. */
+#mesondefine HAVE_STRTOULL_L
+
+/* Define to 1 if `d_type' is a member of `struct dirent'. */
+#mesondefine HAVE_STRUCT_DIRENT_D_TYPE
+
+/* Define to 1 if `f_bavail' is a member of `struct statfs'. */
+#mesondefine HAVE_STRUCT_STATFS_F_BAVAIL
+
+/* Define to 1 if `f_fstypename' is a member of `struct statfs'. */
+#mesondefine HAVE_STRUCT_STATFS_F_FSTYPENAME
+
+/* Define to 1 if `f_basetype' is a member of `struct statvfs'. */
+#mesondefine HAVE_STRUCT_STATVFS_F_BASETYPE
+
+/* Define to 1 if `f_fstypename' is a member of `struct statvfs'. */
+#mesondefine HAVE_STRUCT_STATVFS_F_FSTYPENAME
+
+/* Define to 1 if `st_atimensec' is a member of `struct stat'. */
+#mesondefine HAVE_STRUCT_STAT_ST_ATIMENSEC
+
+/* Define to 1 if `st_atim.tv_nsec' is a member of `struct stat'. */
+#mesondefine HAVE_STRUCT_STAT_ST_ATIM_TV_NSEC
+
+/* Define to 1 if `st_birthtim' is a member of `struct stat'. */
+#mesondefine HAVE_STRUCT_STAT_ST_BIRTHTIM
+
+/* Define to 1 if `st_birthtime' is a member of `struct stat'. */
+#mesondefine HAVE_STRUCT_STAT_ST_BIRTHTIME
+
+/* Define to 1 if `st_birthtimensec' is a member of `struct stat'. */
+#mesondefine HAVE_STRUCT_STAT_ST_BIRTHTIMENSEC
+
+/* Define to 1 if `st_birthtim.tv_nsec' is a member of `struct stat'. */
+#mesondefine HAVE_STRUCT_STAT_ST_BIRTHTIM_TV_NSEC
+
+/* Define to 1 if `st_blksize' is a member of `struct stat'. */
+#mesondefine HAVE_STRUCT_STAT_ST_BLKSIZE
+
+/* Define to 1 if `st_blocks' is a member of `struct stat'. */
+#mesondefine HAVE_STRUCT_STAT_ST_BLOCKS
+
+/* Define to 1 if `st_ctimensec' is a member of `struct stat'. */
+#mesondefine HAVE_STRUCT_STAT_ST_CTIMENSEC
+
+/* Define to 1 if `st_ctim.tv_nsec' is a member of `struct stat'. */
+#mesondefine HAVE_STRUCT_STAT_ST_CTIM_TV_NSEC
+
+/* Define to 1 if `st_mtimensec' is a member of `struct stat'. */
+#mesondefine HAVE_STRUCT_STAT_ST_MTIMENSEC
+
+/* Define to 1 if `st_mtim.tv_nsec' is a member of `struct stat'. */
+#mesondefine HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC
+
+/* Define to 1 if `tm_gmtoff' is a member of `struct tm'. */
+#mesondefine HAVE_STRUCT_TM_TM_GMTOFF
+
+/* Define to 1 if `__tm_gmtoff' is a member of `struct tm'. */
+#mesondefine HAVE_STRUCT_TM___TM_GMTOFF
+
+/* Define to 1 if you have the `symlink' function. */
+#mesondefine HAVE_SYMLINK
+
+/* Define to 1 if you have the `sysctlbyname' function. */
+#mesondefine HAVE_SYSCTLBYNAME
+
+/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'.
+   */
+#mesondefine HAVE_SYS_DIR_H
+
+/* Define to 1 if you have the <sys/event.h> header file. */
+#mesondefine HAVE_SYS_EVENT_H
+
+/* Define to 1 if you have the <sys/filio.h> header file. */
+#mesondefine HAVE_SYS_FILIO_H
+
+/* Define to 1 if you have the <sys/inotify.h> header file. */
+#mesondefine HAVE_SYS_INOTIFY_H
+
+/* Define to 1 if you have the <sys/mkdev.h> header file. */
+#mesondefine HAVE_SYS_MKDEV_H
+
+/* Define to 1 if you have the <sys/mntctl.h> header file. */
+#mesondefine HAVE_SYS_MNTCTL_H
+
+/* Define to 1 if you have the <sys/mnttab.h> header file. */
+#mesondefine HAVE_SYS_MNTTAB_H
+
+/* Define to 1 if you have the <sys/mount.h> header file. */
+#mesondefine HAVE_SYS_MOUNT_H
+
+/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'.
+   */
+#mesondefine HAVE_SYS_NDIR_H
+
+/* Define to 1 if you have the <sys/param.h> header file. */
+#mesondefine HAVE_SYS_PARAM_H
+
+/* Define to 1 if you have the <sys/poll.h> header file. */
+#mesondefine HAVE_SYS_POLL_H
+
+/* Define to 1 if you have the <sys/resource.h> header file. */
+#mesondefine HAVE_SYS_RESOURCE_H
+
+/* found fd_set in sys/select.h */
+#mesondefine HAVE_SYS_SELECT_H
+
+/* Define to 1 if you have the <sys/statfs.h> header file. */
+#mesondefine HAVE_SYS_STATFS_H
+
+/* Define to 1 if you have the <sys/statvfs.h> header file. */
+#mesondefine HAVE_SYS_STATVFS_H
+
+/* Define to 1 if you have the <sys/stat.h> header file. */
+#mesondefine HAVE_SYS_STAT_H
+
+/* Define to 1 if you have the <sys/sysctl.h> header file. */
+#mesondefine HAVE_SYS_SYSCTL_H
+
+/* Define to 1 if you have the <sys/times.h> header file. */
+#mesondefine HAVE_SYS_TIMES_H
+
+/* Define to 1 if you have the <sys/time.h> header file. */
+#mesondefine HAVE_SYS_TIME_H
+
+/* Define to 1 if you have the <sys/types.h> header file. */
+#mesondefine HAVE_SYS_TYPES_H
+
+/* Define to 1 if you have the <sys/uio.h> header file. */
+#mesondefine HAVE_SYS_UIO_H
+
+/* Define to 1 if you have the <sys/vfstab.h> header file. */
+#mesondefine HAVE_SYS_VFSTAB_H
+
+/* Define to 1 if you have the <sys/vfs.h> header file. */
+#mesondefine HAVE_SYS_VFS_H
+
+/* Define to 1 if you have the <sys/vmount.h> header file. */
+#mesondefine HAVE_SYS_VMOUNT_H
+
+/* Define to 1 if you have the <sys/wait.h> header file. */
+#mesondefine HAVE_SYS_WAIT_H
+
+/* Define to 1 if you have the <sys/xattr.h> header file. */
+#mesondefine HAVE_SYS_XATTR_H
+
+/* Define to 1 if you have the `timegm' function. */
+#mesondefine HAVE_TIMEGM
+
+/* Define to 1 if you have the <unistd.h> header file. */
+#mesondefine HAVE_UNISTD_H
+
+/* Define if your printf function family supports positional parameters as
+   specified by Unix98. */
+#mesondefine HAVE_UNIX98_PRINTF
+
+/* Define to 1 if you have the `unsetenv' function. */
+#mesondefine HAVE_UNSETENV
+
+/* Define to 1 if you have the `uselocale' function. */
+#mesondefine HAVE_USELOCALE
+
+/* Define to 1 if you have the `utimes' function. */
+#mesondefine HAVE_UTIMES
+
+/* Define to 1 if you have the `valloc' function. */
+#mesondefine HAVE_VALLOC
+
+/* Define to 1 if you have the <values.h> header file. */
+#mesondefine HAVE_VALUES_H
+
+/* Define to 1 if you have the `vasprintf' function. */
+#mesondefine HAVE_VASPRINTF
+
+/* Define to 1 if you have the `vsnprintf' function. */
+#mesondefine HAVE_VSNPRINTF
+
+/* Define if you have the 'wchar_t' type. */
+#mesondefine HAVE_WCHAR_T
+
+/* Define to 1 if you have the `wcslen' function. */
+#mesondefine HAVE_WCSLEN
+
+/* Define if you have the 'wint_t' type. */
+#mesondefine HAVE_WINT_T
+
+/* Have a working bcopy */
+#mesondefine HAVE_WORKING_BCOPY
+
+/* Define to 1 if xattr is available */
+#mesondefine HAVE_XATTR
+
+/* Define to 1 if xattr API uses XATTR_NOFOLLOW */
+#mesondefine HAVE_XATTR_NOFOLLOW
+
+/* Define to 1 if you have the <xlocale.h> header file. */
+#mesondefine HAVE_XLOCALE_H
+
+/* Define to 1 if you have the `_NSGetEnviron' function. */
+#mesondefine HAVE__NSGETENVIRON
+
+/* Define to the sub-directory where libtool stores uninstalled libraries. */
+#define LT_OBJDIR ""
+
+/* Do we cache iconv descriptors */
+#mesondefine NEED_ICONV_CACHE
+
+/* didn't find fd_set */
+#mesondefine NO_FD_SET
+
+/* Define to the address where bug reports for this package should be sent. */
+#mesondefine PACKAGE_BUGREPORT
+
+/* Define to the full name of this package. */
+#mesondefine PACKAGE_NAME
+
+/* Define to the full name and version of this package. */
+#mesondefine PACKAGE_STRING
+
+/* Define to the one symbol short name of this package. */
+#mesondefine PACKAGE_TARNAME
+
+/* Define to the home page for this package. */
+#mesondefine PACKAGE_URL
+
+/* Define to the version of this package. */
+#mesondefine PACKAGE_VERSION
+
+/* define if posix_memalign() can allocate any size */
+#mesondefine POSIX_MEMALIGN_WITH_COMPLIANT_ALLOCS
+
+/* The size of `char', as computed by sizeof. */
+#mesondefine SIZEOF_CHAR
+
+/* The size of `int', as computed by sizeof. */
+#mesondefine SIZEOF_INT
+
+/* The size of `long', as computed by sizeof. */
+#mesondefine SIZEOF_LONG
+
+/* The size of `long long', as computed by sizeof. */
+#mesondefine SIZEOF_LONG_LONG
+
+/* The size of `short', as computed by sizeof. */
+#mesondefine SIZEOF_SHORT
+
+/* The size of `size_t', as computed by sizeof. */
+#mesondefine SIZEOF_SIZE_T
+
+/* The size of `ssize_t', as computed by sizeof. */
+#mesondefine SIZEOF_SSIZE_T
+
+/* The size of `void *', as computed by sizeof. */
+#mesondefine SIZEOF_VOID_P
+
+/* The size of `__int64', as computed by sizeof. */
+#mesondefine SIZEOF___INT64
+
+/* If using the C implementation of alloca, define if you know the
+   direction of stack growth for your system; otherwise it will be
+   automatically deduced at runtime.
+       STACK_DIRECTION > 0 => grows toward higher addresses
+       STACK_DIRECTION < 0 => grows toward lower addresses
+       STACK_DIRECTION = 0 => direction of growth unknown */
+#mesondefine STACK_DIRECTION
+
+/* Number of arguments to statfs() */
+#mesondefine STATFS_ARGS
+
+/* Define to 1 if you have the ANSI C header files. */
+#mesondefine STDC_HEADERS
+
+/* Use no threads */
+/* #undef THREADS_NONE */
+
+/* Use pthreads */
+#mesondefine THREADS_POSIX
+
+/* Use w32 threads */
+#mesondefine THREADS_WIN32
+
+/* Using GNU libiconv */
+#mesondefine USE_LIBICONV_GNU
+
+/* Using a native implementation of iconv in a separate library */
+#mesondefine USE_LIBICONV_NATIVE
+
+/* Define to use statfs() */
+#mesondefine USE_STATFS
+
+/* Define to use statvfs() */
+#mesondefine USE_STATVFS
+
+/* Enable extensions on AIX 3, Interix.  */
+#ifndef _ALL_SOURCE
+#mesondefine _ALL_SOURCE
+#endif
+/* Enable GNU extensions on systems that have them.  */
+#ifndef _GNU_SOURCE
+#mesondefine _GNU_SOURCE
+#endif
+/* Enable threading extensions on Solaris.  */
+#ifndef _POSIX_PTHREAD_SEMANTICS
+#mesondefine _POSIX_PTHREAD_SEMANTICS
+#endif
+/* Enable extensions on HP NonStop.  */
+#ifndef _TANDEM_SOURCE
+#mesondefine _TANDEM_SOURCE
+#endif
+/* Enable general extensions on Solaris.  */
+#ifndef __EXTENSIONS__
+#mesondefine __EXTENSIONS__
+#endif
+
+/* using the system-supplied PCRE library */
+#mesondefine USE_SYSTEM_PCRE
+
+/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most
+   significant byte first (like Motorola and SPARC, unlike Intel). */
+#if defined AC_APPLE_UNIVERSAL_BUILD
+# if defined __BIG_ENDIAN__
+#  define WORDS_BIGENDIAN 1
+# endif
+#else
+# ifndef WORDS_BIGENDIAN
+#  undef WORDS_BIGENDIAN
+# endif
+#endif
+
+/* Enable large inode numbers on Mac OS X 10.5.  */
+#ifndef _DARWIN_USE_64_BIT_INODE
+# define _DARWIN_USE_64_BIT_INODE 1
+#endif
+
+/* Number of bits in a file offset, on hosts where this is settable. */
+#mesondefine _FILE_OFFSET_BITS
+
+/* defines how to decorate public symbols while building */
+#mesondefine _GLIB_EXTERN
+
+/* Define for large files, on AIX-style hosts. */
+#mesondefine _LARGE_FILES
+
+/* Target the Windows XP API */
+#mesondefine _WIN32_WINNT
+
+/* Needed to get declarations for msg_control and msg_controllen on Solaris */
+#mesondefine _XOPEN_SOURCE
+
+/* Needed to get declarations for msg_control and msg_controllen on Solaris */
+#mesondefine _XOPEN_SOURCE_EXTENDED
+
+/* Needed to get declarations for msg_control and msg_controllen on Solaris */
+#mesondefine __EXTENSIONS__
+
+/* compiler supports atomic operations */
+#mesondefine __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4
+
+/* Define to empty if `const' does not conform to ANSI C. */
+#mesondefine const
+
+/* Define to long or long long if <inttypes.h> and <stdint.h> don't define. */
+#mesondefine intmax_t
+
+/* Define to empty if the C compiler doesn't support this keyword. */
+#mesondefine signed
+
+/* Define to `unsigned int' if <sys/types.h> does not define. */
+#mesondefine size_t
+
+#mesondefine EXEEXT
+
+#mesondefine MAJOR_IN_MKDEV
+#mesondefine MAJOR_IN_SYSMACROS
+#mesondefine HAVE_RTLD_LAZY
+#mesondefine HAVE_RTLD_NOW
+#mesondefine HAVE_RTLD_GLOBAL
index f7314e5..13bdaea 100644 (file)
@@ -38,7 +38,7 @@
 #define GETTEXT_PACKAGE "glib20"
 
 /* Define to the GLIB binary age */
-#define GLIB_BINARY_AGE 5304
+#define GLIB_BINARY_AGE 5305
 
 /* Define to the GLIB interface age */
 #define GLIB_INTERFACE_AGE 0
@@ -50,7 +50,7 @@
 #define GLIB_MAJOR_VERSION 2
 
 /* Define to the GLIB micro version */
-#define GLIB_MICRO_VERSION 4
+#define GLIB_MICRO_VERSION 5
 
 /* Define to the GLIB minor version */
 #define GLIB_MINOR_VERSION 53
 #define PACKAGE_NAME "glib"
 
 /* Define to the full name and version of this package. */
-#define PACKAGE_STRING "glib 2.53.4"
+#define PACKAGE_STRING "glib 2.53.5"
 
 /* Define to the one symbol short name of this package. */
 #define PACKAGE_TARNAME "glib"
 #define PACKAGE_URL ""
 
 /* Define to the version of this package. */
-#define PACKAGE_VERSION "2.53.4"
+#define PACKAGE_VERSION "2.53.5"
 
 /* define if posix_memalign() can allocate any size */
 /* #undef POSIX_MEMALIGN_WITH_COMPLIANT_ALLOCS */
index 7b334f9..e2a58dd 100755 (executable)
@@ -1,8 +1,8 @@
 #! /bin/sh
 # Configuration validation subroutine script.
-#   Copyright 1992-2016 Free Software Foundation, Inc.
+#   Copyright 1992-2017 Free Software Foundation, Inc.
 
-timestamp='2016-09-05'
+timestamp='2017-03-21'
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
@@ -67,7 +67,7 @@ Report bugs and patches to <config-patches@gnu.org>."
 version="\
 GNU config.sub ($timestamp)
 
-Copyright 1992-2016 Free Software Foundation, Inc.
+Copyright 1992-2017 Free Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -301,6 +301,7 @@ case $basic_machine in
        | open8 | or1k | or1knd | or32 \
        | pdp10 | pdp11 | pj | pjl \
        | powerpc | powerpc64 | powerpc64le | powerpcle \
+       | pru \
        | pyramid \
        | riscv32 | riscv64 \
        | rl78 | rx \
@@ -314,6 +315,7 @@ case $basic_machine in
        | ubicom32 \
        | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \
        | visium \
+       | wasm32 \
        | we32k \
        | x86 | xc16x | xstormy16 | xtensa \
        | z8k | z80)
@@ -428,6 +430,7 @@ case $basic_machine in
        | orion-* \
        | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
        | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
+       | pru-* \
        | pyramid-* \
        | riscv32-* | riscv64-* \
        | rl78-* | romp-* | rs6000-* | rx-* \
@@ -444,6 +447,7 @@ case $basic_machine in
        | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \
        | vax-* \
        | visium-* \
+       | wasm32-* \
        | we32k-* \
        | x86-* | x86_64-* | xc16x-* | xps100-* \
        | xstormy16-* | xtensa*-* \
@@ -946,6 +950,9 @@ case $basic_machine in
        nsr-tandem)
                basic_machine=nsr-tandem
                ;;
+       nsx-tandem)
+               basic_machine=nsx-tandem
+               ;;
        op50n-* | op60c-*)
                basic_machine=hppa1.1-oki
                os=-proelf
@@ -1241,6 +1248,9 @@ case $basic_machine in
                basic_machine=a29k-wrs
                os=-vxworks
                ;;
+       wasm32)
+               basic_machine=wasm32-unknown
+               ;;
        w65*)
                basic_machine=w65-wdc
                os=-none
@@ -1395,7 +1405,7 @@ case $os in
              | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \
              | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
              | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
-             | -chorusos* | -chorusrdb* | -cegcc* \
+             | -chorusos* | -chorusrdb* | -cegcc* | -glidix* \
              | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
              | -midipix* | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
              | -linux-newlib* | -linux-musl* | -linux-uclibc* \
@@ -1407,7 +1417,7 @@ case $os in
              | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
              | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
              | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* \
-             | -onefs* | -tirtos* | -phoenix*)
+             | -onefs* | -tirtos* | -phoenix* | -fuchsia* | -redox*)
        # Remember, each alternative MUST END IN *, to match a version number.
                ;;
        -qnx*)
@@ -1636,6 +1646,9 @@ case $basic_machine in
        sparc-* | *-sun)
                os=-sunos4.1.1
                ;;
+       pru-*)
+               os=-elf
+               ;;
        *-be)
                os=-beos
                ;;
index 70a6fed..e512510 100755 (executable)
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for glib 2.53.4.
+# Generated by GNU Autoconf 2.69 for glib 2.53.5.
 #
 # Report bugs to <http://bugzilla.gnome.org/enter_bug.cgi?product=glib>.
 #
@@ -591,8 +591,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='glib'
 PACKAGE_TARNAME='glib'
-PACKAGE_VERSION='2.53.4'
-PACKAGE_STRING='glib 2.53.4'
+PACKAGE_VERSION='2.53.5'
+PACKAGE_STRING='glib 2.53.5'
 PACKAGE_BUGREPORT='http://bugzilla.gnome.org/enter_bug.cgi?product=glib'
 PACKAGE_URL=''
 
@@ -1589,7 +1589,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures glib 2.53.4 to adapt to many kinds of systems.
+\`configure' configures glib 2.53.5 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1659,7 +1659,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of glib 2.53.4:";;
+     short | recursive ) echo "Configuration of glib 2.53.5:";;
    esac
   cat <<\_ACEOF
 
@@ -1850,7 +1850,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-glib configure 2.53.4
+glib configure 2.53.5
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2680,7 +2680,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by glib $as_me 2.53.4, which was
+It was created by glib $as_me 2.53.5, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -3552,7 +3552,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='glib'
- VERSION='2.53.4'
+ VERSION='2.53.5'
 
 
 # Some tools Automake needs.
@@ -3821,10 +3821,10 @@ AM_BACKSLASH='\'
 
 GLIB_MAJOR_VERSION=2
 GLIB_MINOR_VERSION=53
-GLIB_MICRO_VERSION=4
+GLIB_MICRO_VERSION=5
 GLIB_INTERFACE_AGE=0
-GLIB_BINARY_AGE=5304
-GLIB_VERSION=2.53.4
+GLIB_BINARY_AGE=5305
+GLIB_VERSION=2.53.5
 
 
 
@@ -3840,20 +3840,20 @@ $as_echo "#define GLIB_MAJOR_VERSION 2" >>confdefs.h
 $as_echo "#define GLIB_MINOR_VERSION 53" >>confdefs.h
 
 
-$as_echo "#define GLIB_MICRO_VERSION 4" >>confdefs.h
+$as_echo "#define GLIB_MICRO_VERSION 5" >>confdefs.h
 
 
 $as_echo "#define GLIB_INTERFACE_AGE 0" >>confdefs.h
 
 
-$as_echo "#define GLIB_BINARY_AGE 5304" >>confdefs.h
+$as_echo "#define GLIB_BINARY_AGE 5305" >>confdefs.h
 
 
 # libtool versioning
 LT_RELEASE=2.53
-LT_CURRENT=5304
+LT_CURRENT=5305
 LT_REVISION=0
-LT_AGE=5304
+LT_AGE=5305
 LT_CURRENT_MINUS_AGE=0
 
 
@@ -7305,13 +7305,13 @@ fi
 
         if test -n "$PYTHON"; then
       # If the user set $PYTHON, use it and don't search something else.
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $PYTHON version is >= 2.5" >&5
-$as_echo_n "checking whether $PYTHON version is >= 2.5... " >&6; }
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $PYTHON version is >= 2.7" >&5
+$as_echo_n "checking whether $PYTHON version is >= 2.7... " >&6; }
       prog="import sys
 # split strings by '.' and convert to numeric.  Append some zeros
 # because we need at least 4 digits for the hex conversion.
 # map returns an iterator in Python 3.0 and a list in 2.x
-minver = list(map(int, '2.5'.split('.'))) + [0, 0, 0]
+minver = list(map(int, '2.7'.split('.'))) + [0, 0, 0]
 minverhex = 0
 # xrange is not present in Python 3.0 and range returns an iterator
 for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i]
@@ -7332,8 +7332,8 @@ fi
     else
       # Otherwise, try each interpreter until we find one that satisfies
       # VERSION.
-      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a Python interpreter with version >= 2.5" >&5
-$as_echo_n "checking for a Python interpreter with version >= 2.5... " >&6; }
+      { $as_echo "$as_me:${as_lineno-$LINENO}: checking for a Python interpreter with version >= 2.7" >&5
+$as_echo_n "checking for a Python interpreter with version >= 2.7... " >&6; }
 if ${am_cv_pathless_PYTHON+:} false; then :
   $as_echo_n "(cached) " >&6
 else
@@ -7344,7 +7344,7 @@ else
 # split strings by '.' and convert to numeric.  Append some zeros
 # because we need at least 4 digits for the hex conversion.
 # map returns an iterator in Python 3.0 and a list in 2.x
-minver = list(map(int, '2.5'.split('.'))) + [0, 0, 0]
+minver = list(map(int, '2.7'.split('.'))) + [0, 0, 0]
 minverhex = 0
 # xrange is not present in Python 3.0 and range returns an iterator
 for i in list(range(0, 4)): minverhex = (minverhex << 8) + minver[i]
@@ -7410,7 +7410,7 @@ fi
 
 
   if test "$PYTHON" = :; then
-      PYTHON="/usr/bin/env python2.5"
+      PYTHON="python2.7"
   else
 
 
@@ -20463,7 +20463,7 @@ Usage: $0 [OPTIONS]
 Report bugs to <bug-libtool@gnu.org>."
 
 lt_cl_version="\
-glib config.lt 2.53.4
+glib config.lt 2.53.5
 configured by $0, generated by GNU Autoconf 2.69.
 
 Copyright (C) 2011 Free Software Foundation, Inc.
@@ -29480,7 +29480,7 @@ else
   enable_compile_warnings=yes
 fi
 
-if test "x$enable_compile_warnings" = xyes; then :
+if test "x$enable_compile_warnings" != xno; then :
 
 
   for flag in \
@@ -30281,7 +30281,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by glib $as_me 2.53.4, which was
+This file was extended by glib $as_me 2.53.5, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -30347,7 +30347,7 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-glib config.status 2.53.4
+glib config.status 2.53.5
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
index fbc4400..09fa3b4 100644 (file)
@@ -31,7 +31,7 @@ m4_define(glib_configure_ac)
 
 m4_define([glib_major_version], [2])
 m4_define([glib_minor_version], [53])
-m4_define([glib_micro_version], [4])
+m4_define([glib_micro_version], [5])
 m4_define([glib_interface_age], [0])
 m4_define([glib_binary_age],
           [m4_eval(100 * glib_minor_version + glib_micro_version)])
@@ -389,7 +389,7 @@ AC_ARG_WITH(python,
 if test x"$PYTHON" = xyes; then
   AC_MSG_ERROR([--with-python option requires a path or program argument])
 fi
-AM_PATH_PYTHON(2.5,,PYTHON="/usr/bin/env python2.5")
+AM_PATH_PYTHON(2.7,,PYTHON="python2.7")
 
 
 dnl ***********************
@@ -3390,7 +3390,7 @@ AC_ARG_ENABLE(compile-warnings,
               [AS_HELP_STRING([--disable-compile-warnings],
                               [Don't use builtin compiler warnings])],,
                              enable_compile_warnings=yes)
-AS_IF([test "x$enable_compile_warnings" = xyes], [
+AS_IF([test "x$enable_compile_warnings" != xno], [
   CC_CHECK_FLAGS_APPEND([GLIB_WARN_CFLAGS], [CFLAGS], [\
    -Wall -Wstrict-prototypes -Werror=declaration-after-statement \
    -Werror=missing-prototypes -Werror=implicit-function-declaration \
index 0a809d2..773de2c 100644 (file)
@@ -2,7 +2,7 @@
 .\"     Title: gapplication
 .\"    Author: Ryan Lortie
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 07/17/2017
+.\"      Date: 08/07/2017
 .\"    Manual: User Commands
 .\"    Source: GIO
 .\"  Language: English
index af0a1d9..2eab85d 100644 (file)
@@ -2,7 +2,7 @@
 .\"     Title: gdbus-codegen
 .\"    Author: David Zeuthen <zeuthen@gmail.com>
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 07/17/2017
+.\"      Date: 08/07/2017
 .\"    Manual: User Commands
 .\"    Source: GIO
 .\"  Language: English
index 87904ec..af6166b 100644 (file)
@@ -2,7 +2,7 @@
 .\"     Title: gdbus
 .\"    Author: David Zeuthen <zeuthen@gmail.com>
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 07/17/2017
+.\"      Date: 08/07/2017
 .\"    Manual: User Commands
 .\"    Source: GIO
 .\"  Language: English
index eb2adff..90c9640 100644 (file)
@@ -2,7 +2,7 @@
 .\"     Title: gio-querymodules
 .\"    Author: Alexander Larsson
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 07/17/2017
+.\"      Date: 08/07/2017
 .\"    Manual: User Commands
 .\"    Source: GIO
 .\"  Language: English
index c569808..841bdec 100644 (file)
@@ -2,7 +2,7 @@
 .\"     Title: gio
 .\"    Author: Matthias Clasen <mclasen@redhat.com>
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 07/17/2017
+.\"      Date: 08/07/2017
 .\"    Manual: User Commands
 .\"    Source: GIO
 .\"  Language: English
index 8c9c3f4..a7dd287 100644 (file)
@@ -2,7 +2,7 @@
 .\"     Title: glib-compile-resources
 .\"    Author: Alexander Larsson
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 07/17/2017
+.\"      Date: 08/07/2017
 .\"    Manual: User Commands
 .\"    Source: GIO
 .\"  Language: English
index edc2465..725c7c7 100644 (file)
@@ -2,7 +2,7 @@
 .\"     Title: glib-compile-schemas
 .\"    Author: Ryan Lortie
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 07/17/2017
+.\"      Date: 08/07/2017
 .\"    Manual: User Commands
 .\"    Source: GIO
 .\"  Language: English
index 1f0544b..2273845 100644 (file)
@@ -2,7 +2,7 @@
 .\"     Title: gresource
 .\"    Author: Matthias Clasen
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 07/17/2017
+.\"      Date: 08/07/2017
 .\"    Manual: User Commands
 .\"    Source: GIO
 .\"  Language: English
index 6c5f8f2..b70c8c1 100644 (file)
@@ -2,7 +2,7 @@
 .\"     Title: gsettings
 .\"    Author: Ryan Lortie
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 07/17/2017
+.\"      Date: 08/07/2017
 .\"    Manual: User Commands
 .\"    Source: GIO
 .\"  Language: English
index bad3ff7..61840b2 100644 (file)
@@ -234,7 +234,7 @@ g_dbus_interface_skeleton_flush (<em class="parameter"><code><a class="link" hre
 emitted immediately.</p>
 <p>For example, an exported D-Bus interface may queue up property
 changes and emit the
-`org.freedesktop.DBus.Properties::Propert``
+<code class="literal">org.freedesktop.DBus.Properties::PropertiesChanged</code>
 signal later (e.g. in an idle handler). This technique is useful
 for collapsing multiple property changes into one.</p>
 <div class="refsect3">
index 90f1bb7..f1a8f27 100644 (file)
@@ -96,6 +96,8 @@ g_io_error_from_errno (<em class="parameter"><code><a href="../glib-Basic-Types.
 value <a class="link" href="gio-GIOError.html#G-IO-ERROR-FAILED:CAPS"><code class="literal">G_IO_ERROR_FAILED</code></a> is returned for error codes not currently
 handled (but note that future GLib releases may return a more
 specific value instead).</p>
+<p>As <code class="literal">errno</code> is global and may be modified by intermediate function
+calls, you should save its value as soon as the call which sets it</p>
 <div class="refsect3">
 <a name="g-io-error-from-errno.parameters"></a><h4>Parameters</h4>
 <div class="informaltable"><table class="informaltable" width="100%" border="0">
index 079e844..1e729da 100644 (file)
@@ -640,6 +640,14 @@ specified <a class="link" href="gio-Owning-Bus-Names.html#G-BUS-NAME-OWNER-FLAGS
 </td>
 <td class="enum_member_annotations"> </td>
 </tr>
+<tr>
+<td class="enum_member_name"><p><a name="G-BUS-NAME-OWNER-FLAGS-DO-NOT-QUEUE:CAPS"></a>G_BUS_NAME_OWNER_FLAGS_DO_NOT_QUEUE</p></td>
+<td class="enum_member_description">
+<p>If another message bus connection owns the name, immediately
+return an error from <a class="link" href="gio-Owning-Bus-Names.html#g-bus-own-name" title="g_bus_own_name ()"><code class="function">g_bus_own_name()</code></a> rather than entering the waiting queue for that name. (Since 2.54)</p>
+</td>
+<td class="enum_member_annotations"> </td>
+</tr>
 </tbody>
 </table></div>
 </div>
index 7b67b3c..27ccb2d 100644 (file)
     <keyword type="constant" name="G_BUS_NAME_OWNER_FLAGS_NONE" link="gio-Owning-Bus-Names.html#G-BUS-NAME-OWNER-FLAGS-NONE:CAPS"/>
     <keyword type="constant" name="G_BUS_NAME_OWNER_FLAGS_ALLOW_REPLACEMENT" link="gio-Owning-Bus-Names.html#G-BUS-NAME-OWNER-FLAGS-ALLOW-REPLACEMENT:CAPS"/>
     <keyword type="constant" name="G_BUS_NAME_OWNER_FLAGS_REPLACE" link="gio-Owning-Bus-Names.html#G-BUS-NAME-OWNER-FLAGS-REPLACE:CAPS"/>
+    <keyword type="constant" name="G_BUS_NAME_OWNER_FLAGS_DO_NOT_QUEUE" link="gio-Owning-Bus-Names.html#G-BUS-NAME-OWNER-FLAGS-DO-NOT-QUEUE:CAPS"/>
     <keyword type="constant" name="G_BUS_NAME_WATCHER_FLAGS_NONE" link="gio-Watching-Bus-Names.html#G-BUS-NAME-WATCHER-FLAGS-NONE:CAPS"/>
     <keyword type="constant" name="G_BUS_NAME_WATCHER_FLAGS_AUTO_START" link="gio-Watching-Bus-Names.html#G-BUS-NAME-WATCHER-FLAGS-AUTO-START:CAPS"/>
     <keyword type="constant" name="G_DBUS_INTERFACE_SKELETON_FLAGS_NONE" link="GDBusInterfaceSkeleton.html#G-DBUS-INTERFACE-SKELETON-FLAGS-NONE:CAPS"/>
index 9a301b1..24d9ad5 100644 (file)
@@ -15,7 +15,7 @@
 <div>
 <div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">GIO Reference Manual</p></th></tr></table></div>
 <div><p class="releaseinfo">
-      for GIO 2.53.4
+      for GIO 2.53.5
 
       The latest version of this documentation can be found on-line at
       <a class="ulink" href="https://developer.gnome.org/gio/unstable/" target="_top">https://developer.gnome.org/gio/unstable/</a>.
diff --git a/docs/reference/gio/meson.build b/docs/reference/gio/meson.build
new file mode 100644 (file)
index 0000000..7f04677
--- /dev/null
@@ -0,0 +1,161 @@
+if get_option('with-docs') != 'no'
+  subdir('xml')
+
+  ignore_headers = [
+    'fam',
+    'fen',
+    'gdbus-2.0',
+    'gvdb',
+    'inotify',
+    'kqueue',
+    'libasyncns',
+    'tests',
+    'win32',
+    'xdgmime',
+    'gappinfoprivate.h',
+    'gapplicationimpl.h',
+    'gasynchelper.h',
+    'gcontenttypeprivate.h',
+    'gcontextspecificgroup.h',
+    'gcredentialsprivate.h',
+    'gdbus-daemon-generated.h',
+    'gdbusactiongroup-private.h',
+    'gdbusauth.h',
+    'gdbusauthmechanismanon.h',
+    'gdbusauthmechanismexternal.h',
+    'gdbusauthmechanism.h',
+    'gdbusauthmechanismsha1.h',
+    'gdbusdaemon.h',
+    'gdbusprivate.h',
+    'gdelayedsettingsbackend.h',
+    'gdummyfile.h',
+    'gdummyproxyresolver.h',
+    'gdummytlsbackend.h',
+    'gfileattribute-priv.h',
+    'gfileinfo-priv.h',
+    'ghttpproxy.h',
+    'giomodule-priv.h',
+    'gioprivate.h',
+    'giowin32-priv.h',
+    'glocaldirectorymonitor.h',
+    'glocalfileenumerator.h',
+    'glocalfile.h',
+    'glocalfileinfo.h',
+    'glocalfileinputstream.h',
+    'glocalfileiostream.h',
+    'glocalfilemonitor.h',
+    'glocalfileoutputstream.h',
+    'glocalvfs.h',
+    'gmountprivate.h',
+    'gnativevolumemonitor.h',
+    'gnetworkingprivate.h',
+    'gnetworkmonitorbase.h',
+    'gnetworkmonitornetlink.h',
+    'gnetworkmonitornm.h',
+    'gnotificationbackend.h',
+    'gnotification-private.h',
+    'gpollfilemonitor.h',
+    'gregistrysettingsbackend.h',
+    'gresourcefile.h',
+    'gsettingsbackendinternal.h',
+    'gsettings-mapping.h',
+    'gsettingsschema-internal.h',
+    'gsocketinputstream.h',
+    'gsocketoutputstream.h',
+    'gsocks4aproxy.h',
+    'gsocks4proxy.h',
+    'gsocks5proxy.h',
+    'gsubprocesslauncher-private.h',
+    'gthreadedresolver.h',
+    'gunionvolumemonitor.h',
+    'gunixmount.h',
+    'gunixresolver.h',
+    'gunixvolume.h',
+    'gunixvolumemonitor.h',
+    'gwin32appinfo.h',
+    'gwin32inputstream.h',
+    'gwin32mount.h',
+    'gwin32outputstream.h',
+    'gwin32registrykey.h',
+    'gwin32resolver.h',
+    'gwin32volumemonitor.h',
+    'thumbnail-verify.h',
+    'xdp-dbus.h',
+  ]
+  # FIXME: More win32 headers were added to fix building gio-scan
+
+  # FIXME: ExampleAnimal docs aren't built
+
+  docpath = join_paths(glib_datadir, 'gtk-doc', 'html')
+  version_conf = configuration_data()
+  version_conf.set('VERSION', meson.project_version())
+  configure_file(
+    input: 'version.xml.in',
+    output: 'version.xml',
+    configuration: version_conf
+  )
+
+  gnome.gtkdoc('gio',
+    main_xml : 'gio-docs.xml',
+    namespace : 'g',
+    gobject_typesfile : 'gio.types',
+    mode : 'none',
+    dependencies : [libgio_dep, libgobject_dep, libglib_dep],
+    src_dir : 'gio',
+    scan_args : [
+      '--rebuild-types',
+      '--deprecated-guards=G_DISABLE_DEPRECATED',
+      '--ignore-decorators=G_GNUC_WARN_UNUSED_RESULT',
+      '--ignore-headers=' + ' '.join(ignore_headers),
+    ],
+    content_files : [
+      'overview.xml',
+      'migrating-posix.xml',
+      'migrating-gnome-vfs.xml',
+      'migrating-gconf.xml',
+      'migrating-gdbus.xml',
+      'gio-querymodules.xml',
+      'glib-compile-schemas.xml',
+      'glib-compile-resources.xml',
+      'gapplication.xml',
+      'gsettings.xml',
+      'gresource.xml',
+      'gdbus.xml',
+      'gdbus-codegen.xml',
+    ],
+    expand_content_files : [
+      'overview.xml',
+      'migrating-posix.xml',
+      'migrating-gnome-vfs.xml',
+      'migrating-gconf.xml',
+      'migrating-gdbus.xml',
+      'gdbus-codegen.xml',
+    ],
+    html_assets : [
+      'gvfs-overview.png',
+      'menu-example.png',
+      'menu-model.png',
+    ],
+    fixxref_args: [
+      '--html-dir=' + docpath,
+      '--extra-dir=' + join_paths(meson.current_build_dir(), '../glib/html'),
+      '--extra-dir=' + join_paths(meson.current_build_dir(), '../gobject/html'),
+    ],
+    install: true
+  )
+endif
+
+
+if get_option('with-man') != 'no' and xsltproc.found()
+  manpages = ['gapplication', 'gio-querymodules', 'glib-compile-schemas',
+              'glib-compile-resources', 'gsettings', 'gresource', 'gdbus',
+              'gio', 'gdbus-codegen']
+  foreach page : manpages
+    custom_target(page + '-man',
+      input: page + '.xml',
+      output: page + '.1',
+      command: xsltproc_command,
+      install: true,
+      install_dir: man1_dir)
+  endforeach
+endif
diff --git a/docs/reference/gio/xml/gtkdocentities.ent.in b/docs/reference/gio/xml/gtkdocentities.ent.in
new file mode 100644 (file)
index 0000000..f12c9ff
--- /dev/null
@@ -0,0 +1,8 @@
+<!ENTITY package "@PACKAGE@">
+<!ENTITY package_bugreport "@PACKAGE_BUGREPORT@">
+<!ENTITY package_name "@PACKAGE_NAME@">
+<!ENTITY package_string "@PACKAGE_STRING@">
+<!ENTITY package_tarname "@PACKAGE_TARNAME@">
+<!ENTITY package_url "@PACKAGE_URL@">
+<!ENTITY package_version "@PACKAGE_VERSION@">
+<!ENTITY package_api_version "@PACKAGE_API_VERSION@">
diff --git a/docs/reference/gio/xml/meson.build b/docs/reference/gio/xml/meson.build
new file mode 100644 (file)
index 0000000..6d1e295
--- /dev/null
@@ -0,0 +1,14 @@
+ent_conf = configuration_data()
+ent_conf.set('PACKAGE', 'glib')
+ent_conf.set('PACKAGE_BUGREPORT', 'https://bugzilla.gnome.org/enter_bug.cgi?product=glib')
+ent_conf.set('PACKAGE_NAME', 'glib')
+ent_conf.set('PACKAGE_STRING', 'glib')
+ent_conf.set('PACKAGE_TARNAME', 'glib')
+ent_conf.set('PACKAGE_URL', 'FIXME')
+ent_conf.set('PACKAGE_VERSION', glib_version)
+ent_conf.set('PACKAGE_API_VERSION', glib_api_version)
+configure_file(
+  input: 'gtkdocentities.ent.in',
+  output: 'gtkdocentities.ent',
+  configuration: ent_conf
+)
index 3820862..0981d2b 100644 (file)
@@ -2,7 +2,7 @@
 .\"     Title: glib-gettextize
 .\"    Author: Owen Taylor
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 07/17/2017
+.\"      Date: 08/07/2017
 .\"    Manual: User Commands
 .\"    Source: GLib
 .\"  Language: English
index 0ff05c7..33fe435 100644 (file)
@@ -2,7 +2,7 @@
 .\"     Title: gtester-report
 .\"    Author: Tim Janik
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 07/17/2017
+.\"      Date: 08/07/2017
 .\"    Manual: User Commands
 .\"    Source: GLib
 .\"  Language: English
index 6a66512..72605c9 100644 (file)
@@ -2,7 +2,7 @@
 .\"     Title: gtester
 .\"    Author: Tim Janik
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 07/17/2017
+.\"      Date: 08/07/2017
 .\"    Manual: User Commands
 .\"    Source: GLib
 .\"  Language: English
index 50c6cf3..221d81e 100644 (file)
@@ -531,7 +531,7 @@ deal with filenames containing Unicode characters that fall outside
 of the codepage.</p>
 <p>A solution to this is to use <a class="link" href="glib-Windows-Compatibility-Functions.html#g-win32-get-command-line" title="g_win32_get_command_line ()"><code class="function">g_win32_get_command_line()</code></a> and
 <a class="link" href="glib-Commandline-option-parser.html#g-option-context-parse-strv" title="g_option_context_parse_strv ()"><code class="function">g_option_context_parse_strv()</code></a> which will properly handle full Unicode
-filenames.  If you are using <a href="../gio/GApplication.html#GApplication-struct"><span class="type">GApplication</span></a>, this is done
+filenames.  If you are using <a href="../GApplication.html#GApplication-struct"><span class="type">GApplication</span></a>, this is done
 automatically for you.</p>
 <p>The following example shows how you can use <a class="link" href="glib-Commandline-option-parser.html#GOptionContext" title="GOptionContext"><span class="type">GOptionContext</span></a> directly
 in order to correctly deal with Unicode filenames on Windows:</p>
@@ -1067,7 +1067,7 @@ system codepage, which is how they are passed as <em class="parameter"><code>arg
  to <code class="function">main()</code>.
 See <a class="link" href="glib-Windows-Compatibility-Functions.html#g-win32-get-command-line" title="g_win32_get_command_line ()"><code class="function">g_win32_get_command_line()</code></a> for a solution.</p>
 <p>This function is useful if you are trying to use <a class="link" href="glib-Commandline-option-parser.html#GOptionContext" title="GOptionContext"><span class="type">GOptionContext</span></a> with
-<a href="../gio/GApplication.html#GApplication-struct"><span class="type">GApplication</span></a>.</p>
+<a href="../GApplication.html#GApplication-struct"><span class="type">GApplication</span></a>.</p>
 <div class="refsect3">
 <a name="g-option-context-parse-strv.parameters"></a><h4>Parameters</h4>
 <div class="informaltable"><table class="informaltable" width="100%" border="0">
index b92d844..7a6a94a 100644 (file)
@@ -323,13 +323,17 @@ Here's an example:</p>
 16
 17
 18
-19</pre></td>
+19
+20
+21</pre></td>
         <td class="listing_code"><pre class="programlisting">gint
 <span class="function">foo_open_file</span> <span class="gtkdoc opt">(</span>GError <span class="gtkdoc opt">**</span>error<span class="gtkdoc opt">)</span>
 <span class="gtkdoc opt">{</span>
   gint fd<span class="gtkdoc opt">;</span>
+  <span class="gtkdoc kwb">int</span> saved_errno<span class="gtkdoc opt">;</span>
 
   fd <span class="gtkdoc opt">=</span> <span class="function">open</span> <span class="gtkdoc opt">(</span><span class="string">&quot;file.txt&quot;</span><span class="gtkdoc opt">,</span> O_RDONLY<span class="gtkdoc opt">);</span>
+  saved_errno <span class="gtkdoc opt">=</span> errno<span class="gtkdoc opt">;</span>
 
   <span class="keyword">if</span> <span class="gtkdoc opt">(</span>fd <span class="gtkdoc opt">&lt;</span> <span class="number">0</span><span class="gtkdoc opt">)</span>
     <span class="gtkdoc opt">{</span>
@@ -337,7 +341,7 @@ Here's an example:</p>
                    FOO_ERROR<span class="gtkdoc opt">,</span>                 <span class="gtkdoc slc">// error domain</span>
                    FOO_ERROR_BLAH<span class="gtkdoc opt">,</span>            <span class="gtkdoc slc">// error code</span>
                    <span class="string">&quot;Failed to open file: %s&quot;</span><span class="gtkdoc opt">,</span> <span class="gtkdoc slc">// error message format string</span>
-                   <span class="function"><a href="glib-String-Utility-Functions.html#g-strerror">g_strerror</a></span> <span class="gtkdoc opt">(</span>errno<span class="gtkdoc opt">));</span>
+                   <span class="function"><a href="glib-String-Utility-Functions.html#g-strerror">g_strerror</a></span> <span class="gtkdoc opt">(</span>saved_errno<span class="gtkdoc opt">));</span>
       <span class="keyword">return</span> <span class="gtkdoc opt">-</span><span class="number">1</span><span class="gtkdoc opt">;</span>
     <span class="gtkdoc opt">}</span>
   <span class="keyword">else</span>
@@ -611,7 +615,7 @@ misinterpretation of error codes.</p>
 <p><a class="link" href="glib-Error-Reporting.html#GError" title="struct GError"><span class="type">GError</span></a> has disadvantages though: it requires a memory allocation, and
 formatting the error message string has a performance overhead. This makes it
 unsuitable for use in retry loops where errors are a common case, rather than
-being unusual. For example, using <a href="../gio/gio-GIOError.html#G-IO-ERROR-WOULD-BLOCK:CAPS"><code class="literal">G_IO_ERROR_WOULD_BLOCK</code></a> means hitting these
+being unusual. For example, using <a href="../gio-GIOError.html#G-IO-ERROR-WOULD-BLOCK:CAPS"><code class="literal">G_IO_ERROR_WOULD_BLOCK</code></a> means hitting these
 overheads in the normal control flow. String formatting overhead can be
 eliminated by using <a class="link" href="glib-Error-Reporting.html#g-set-error-literal" title="g_set_error_literal ()"><code class="function">g_set_error_literal()</code></a> in some cases.</p>
 <p>These performance issues can be compounded if a function wraps the <a href="glib-Error-Reporting.html#GError"><span class="type">GErrors</span></a>
index ea3c85e..0891349 100644 (file)
@@ -1087,7 +1087,7 @@ Serialised <a class="link" href="glib-GVariant.html#GVariant" title="GVariant"><
 <p><a class="link" href="glib-GVariant.html#GVariant" title="GVariant"><span class="type">GVariant</span></a> is largely compatible with D-Bus.  Almost all types of
 <a class="link" href="glib-GVariant.html#GVariant" title="GVariant"><span class="type">GVariant</span></a> instances can be sent over D-Bus.  See <a class="link" href="glib-GVariantType.html#GVariantType" title="GVariantType"><span class="type">GVariantType</span></a> for
 exceptions.  (However, <a class="link" href="glib-GVariant.html#GVariant" title="GVariant"><span class="type">GVariant</span></a>'s serialisation format is not the same
-as the serialisation format of a D-Bus message body: use <a href="../gio/GDBusMessage.html#GDBusMessage-struct"><span class="type">GDBusMessage</span></a>,
+as the serialisation format of a D-Bus message body: use <a href="../GDBusMessage.html#GDBusMessage-struct"><span class="type">GDBusMessage</span></a>,
 in the gio library, for those.)</p>
 <p>For space-efficiency, the <a class="link" href="glib-GVariant.html#GVariant" title="GVariant"><span class="type">GVariant</span></a> serialisation format does not
 automatically include the variant's length, type or endianness,
@@ -1680,7 +1680,7 @@ the data inside of the soon-to-be-freed <a class="link" href="glib-GVariant.html
 check fails then a <a class="link" href="glib-Message-Logging.html#g-critical" title="g_critical()"><code class="function">g_critical()</code></a> is printed and <a class="link" href="glib-Standard-Macros.html#FALSE:CAPS" title="FALSE"><code class="literal">FALSE</code></a> is returned.</p>
 <p>This function is meant to be used by functions that wish to provide
 varargs accessors to <a class="link" href="glib-GVariant.html#GVariant" title="GVariant"><span class="type">GVariant</span></a> values of uncertain values (eg:
-<a class="link" href="glib-GVariant.html#g-variant-lookup" title="g_variant_lookup ()"><code class="function">g_variant_lookup()</code></a> or <a href="../gio/GMenuModel.html#g-menu-model-get-item-attribute"><code class="function">g_menu_model_get_item_attribute()</code></a>).</p>
+<a class="link" href="glib-GVariant.html#g-variant-lookup" title="g_variant_lookup ()"><code class="function">g_variant_lookup()</code></a> or <a href="../GMenuModel.html#g-menu-model-get-item-attribute"><code class="function">g_menu_model_get_item_attribute()</code></a>).</p>
 <div class="refsect3">
 <a name="g-variant-check-format-string.parameters"></a><h4>Parameters</h4>
 <div class="informaltable"><table class="informaltable" width="100%" border="0">
index 9964519..d0c3be3 100644 (file)
@@ -1122,8 +1122,7 @@ returned string, or <a class="link" href="glib-Standard-Macros.html#NULL:CAPS" t
 <div class="refsect3">
 <a name="g-key-file-to-data.returns"></a><h4>Returns</h4>
 <p> a newly allocated string holding
-the contents of the <a class="link" href="glib-Key-value-file-parser.html#GKeyFile" title="GKeyFile"><span class="type">GKeyFile</span></a>. </p>
-<p><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> length=length]</span></p>
+the contents of the <a class="link" href="glib-Key-value-file-parser.html#GKeyFile" title="GKeyFile"><span class="type">GKeyFile</span></a> </p>
 </div>
 <p class="since">Since: <a class="link" href="api-index-2-6.html#api-index-2.6">2.6</a></p>
 </div>
@@ -1238,7 +1237,7 @@ The array of returned groups will be <a class="link" href="glib-Standard-Macros.
 <a name="g-key-file-get-groups.returns"></a><h4>Returns</h4>
 <p> a newly-allocated <a class="link" href="glib-Standard-Macros.html#NULL:CAPS" title="NULL"><code class="literal">NULL</code></a>-terminated array of strings.
 Use <a class="link" href="glib-String-Utility-Functions.html#g-strfreev" title="g_strfreev ()"><code class="function">g_strfreev()</code></a> to free it. </p>
-<p><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> zero-terminated=1 length=length][<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
+<p><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> zero-terminated=1][<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
 </div>
 <p class="since">Since: <a class="link" href="api-index-2-6.html#api-index-2.6">2.6</a></p>
 </div>
@@ -1295,7 +1294,7 @@ be found, <a class="link" href="glib-Standard-Macros.html#NULL:CAPS" title="NULL
 <a name="g-key-file-get-keys.returns"></a><h4>Returns</h4>
 <p> a newly-allocated <a class="link" href="glib-Standard-Macros.html#NULL:CAPS" title="NULL"><code class="literal">NULL</code></a>-terminated array of strings.
 Use <a class="link" href="glib-String-Utility-Functions.html#g-strfreev" title="g_strfreev ()"><code class="function">g_strfreev()</code></a> to free it. </p>
-<p><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> zero-terminated=1 length=length][<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
+<p><span class="annotation">[<acronym title="Parameter points to an array of items."><span class="acronym">array</span></acronym> zero-terminated=1][<acronym title="Free data after the code is done."><span class="acronym">transfer full</span></acronym>]</span></p>
 </div>
 <p class="since">Since: <a class="link" href="api-index-2-6.html#api-index-2.6">2.6</a></p>
 </div>
index 035e340..670358b 100644 (file)
@@ -214,8 +214,8 @@ be accessed either with a string or with a <a class="link" href="glib-Quarks.htm
 the string.</p>
 <p>The <a class="link" href="glib-Quarks.html#GQuark" title="GQuark"><span class="type">GQuark</span></a> methods are quicker, since the strings have to be
 converted to <a href="glib-Quarks.html#GQuark"><span class="type">GQuarks</span></a> anyway.</p>
-<p>Data lists are used for associating arbitrary data with <a href="../gobject/gobject-The-Base-Object-Type.html#GObject-struct"><span class="type">GObjects</span></a>,
-using <a href="../gobject/gobject-The-Base-Object-Type.html#g-object-set-data"><code class="function">g_object_set_data()</code></a> and related functions.</p>
+<p>Data lists are used for associating arbitrary data with <a href="../gobject-The-Base-Object-Type.html#GObject-struct"><span class="type">GObjects</span></a>,
+using <a href="../gobject-The-Base-Object-Type.html#g-object-set-data"><code class="function">g_object_set_data()</code></a> and related functions.</p>
 <p>To create a datalist, use <a class="link" href="glib-Keyed-Data-Lists.html#g-datalist-init" title="g_datalist_init ()"><code class="function">g_datalist_init()</code></a>.</p>
 <p>To add data elements to a datalist use <a class="link" href="glib-Keyed-Data-Lists.html#g-datalist-id-set-data" title="g_datalist_id_set_data()"><code class="function">g_datalist_id_set_data()</code></a>,
 <a class="link" href="glib-Keyed-Data-Lists.html#g-datalist-id-set-data-full" title="g_datalist_id_set_data_full ()"><code class="function">g_datalist_id_set_data_full()</code></a>, <a class="link" href="glib-Keyed-Data-Lists.html#g-datalist-set-data" title="g_datalist_set_data()"><code class="function">g_datalist_set_data()</code></a> and
@@ -877,7 +877,7 @@ g_datalist_set_flags (<em class="parameter"><code><a class="link" href="glib-Key
 to keep a small number of boolean flags in an object with
 a data list without using any additional space. It is
 not generally useful except in circumstances where space
-is very tight. (It is used in the base <a href="../gobject/gobject-The-Base-Object-Type.html#GObject-struct"><span class="type">GObject</span></a> type, for
+is very tight. (It is used in the base <a href="../gobject-The-Base-Object-Type.html#GObject-struct"><span class="type">GObject</span></a> type, for
 example.)</p>
 <div class="refsect3">
 <a name="g-datalist-set-flags.parameters"></a><h4>Parameters</h4>
index 43790f2..ceae130 100644 (file)
@@ -1084,7 +1084,7 @@ the following example (which only works on GCC and clang):</p>
         <td class="listing_code"><pre class="programlisting">GObject <span class="gtkdoc opt">*</span>
 <span class="function">create_object</span> <span class="gtkdoc opt">(</span><span class="gtkdoc kwb">void</span><span class="gtkdoc opt">)</span>
 <span class="gtkdoc opt">{</span>
-  <span class="function"><a href="glib-Miscellaneous-Macros.html#g-autoptr">g_autoptr</a></span><span class="gtkdoc opt">(</span>GObject<span class="gtkdoc opt">)</span> obj <span class="gtkdoc opt">=</span> <span class="function"><a href="../gobject/gobject-The-Base-Object-Type.html#g-object-new">g_object_new</a></span> <span class="gtkdoc opt">(</span>G_TYPE_OBJECT<span class="gtkdoc opt">,</span> NULL<span class="gtkdoc opt">);</span>
+  <span class="function"><a href="glib-Miscellaneous-Macros.html#g-autoptr">g_autoptr</a></span><span class="gtkdoc opt">(</span>GObject<span class="gtkdoc opt">)</span> obj <span class="gtkdoc opt">=</span> <span class="function"><a href="../gobject-The-Base-Object-Type.html#g-object-new">g_object_new</a></span> <span class="gtkdoc opt">(</span>G_TYPE_OBJECT<span class="gtkdoc opt">,</span> NULL<span class="gtkdoc opt">);</span>
 
   <span class="keyword">if</span> <span class="gtkdoc opt">(</span>early_error_case<span class="gtkdoc opt">)</span>
     <span class="keyword">return</span> NULL<span class="gtkdoc opt">;</span>
@@ -1119,7 +1119,7 @@ particularly useful for dealing with optional out parameters:</p>
         <td class="listing_code"><pre class="programlisting">gboolean
 <span class="function">get_object</span> <span class="gtkdoc opt">(</span>GObject <span class="gtkdoc opt">**</span>obj_out<span class="gtkdoc opt">)</span>
 <span class="gtkdoc opt">{</span>
-  <span class="function"><a href="glib-Miscellaneous-Macros.html#g-autoptr">g_autoptr</a></span><span class="gtkdoc opt">(</span>GObject<span class="gtkdoc opt">)</span> obj <span class="gtkdoc opt">=</span> <span class="function"><a href="../gobject/gobject-The-Base-Object-Type.html#g-object-new">g_object_new</a></span> <span class="gtkdoc opt">(</span>G_TYPE_OBJECT<span class="gtkdoc opt">,</span> NULL<span class="gtkdoc opt">);</span>
+  <span class="function"><a href="glib-Miscellaneous-Macros.html#g-autoptr">g_autoptr</a></span><span class="gtkdoc opt">(</span>GObject<span class="gtkdoc opt">)</span> obj <span class="gtkdoc opt">=</span> <span class="function"><a href="../gobject-The-Base-Object-Type.html#g-object-new">g_object_new</a></span> <span class="gtkdoc opt">(</span>G_TYPE_OBJECT<span class="gtkdoc opt">,</span> NULL<span class="gtkdoc opt">);</span>
 
   <span class="keyword">if</span> <span class="gtkdoc opt">(</span>early_error_case<span class="gtkdoc opt">)</span>
     <span class="keyword">return</span> FALSE<span class="gtkdoc opt">;</span>
index e2629fe..e676d75 100644 (file)
@@ -1815,8 +1815,7 @@ array</p></td>
 <pre class="programlisting">#define G_LOG_DOMAIN    ((gchar*) 0)
 </pre>
 <p>Defines the log domain.</p>
-<p>For applications, this is typically left as the default <a class="link" href="glib-Standard-Macros.html#NULL:CAPS" title="NULL"><code class="literal">NULL</code></a>
-(or "") domain. Libraries should define this so that any messages
+<p>Libraries should define this so that any messages
 which they log can be differentiated from messages from other
 libraries and application code. But be careful not to define
 it in any public header files.</p>
@@ -1833,6 +1832,9 @@ it in any public header files.</p>
 </div>
 
 <p></p>
+<p>Applications can choose to leave it as the default <a class="link" href="glib-Standard-Macros.html#NULL:CAPS" title="NULL"><code class="literal">NULL</code></a> (or "")
+domain. However, defining the domain offers the same advantages as
+above.</p>
 </div>
 <hr>
 <div class="refsect2">
index 8b8ec3c..e8c1ffb 100644 (file)
@@ -503,8 +503,8 @@ or when displaying an application's name in the task list.</p>
 g_get_prgname (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
 <p>Gets the name of the program. This name should not be localized,
 in contrast to <a class="link" href="glib-Miscellaneous-Utility-Functions.html#g-get-application-name" title="g_get_application_name ()"><code class="function">g_get_application_name()</code></a>.</p>
-<p>If you are using <a href="../gio/GApplication.html#GApplication-struct"><span class="type">GApplication</span></a> the program name is set in
-<a href="../gio/GApplication.html#g-application-run"><code class="function">g_application_run()</code></a>. In case of GDK or GTK+ it is set in
+<p>If you are using <a href="../GApplication.html#GApplication-struct"><span class="type">GApplication</span></a> the program name is set in
+<a href="../GApplication.html#g-application-run"><code class="function">g_application_run()</code></a>. In case of GDK or GTK+ it is set in
 <code class="function">gdk_init()</code>, which is called by <a href="../gtk4/gtk4-General.html#gtk-init"><code class="function">gtk_init()</code></a> and the
 <span class="type">“startup”</span> handler. The program name is found by
 taking the last component of <em class="parameter"><code>argv</code></em>
@@ -522,8 +522,8 @@ to GLib and must not be modified or freed.</p>
 g_set_prgname (<em class="parameter"><code>const <a class="link" href="glib-Basic-Types.html#gchar" title="gchar"><span class="type">gchar</span></a> *prgname</code></em>);</pre>
 <p>Sets the name of the program. This name should not be localized,
 in contrast to <a class="link" href="glib-Miscellaneous-Utility-Functions.html#g-set-application-name" title="g_set_application_name ()"><code class="function">g_set_application_name()</code></a>.</p>
-<p>If you are using <a href="../gio/GApplication.html#GApplication-struct"><span class="type">GApplication</span></a> the program name is set in
-<a href="../gio/GApplication.html#g-application-run"><code class="function">g_application_run()</code></a>. In case of GDK or GTK+ it is set in
+<p>If you are using <a href="../GApplication.html#GApplication-struct"><span class="type">GApplication</span></a> the program name is set in
+<a href="../GApplication.html#g-application-run"><code class="function">g_application_run()</code></a>. In case of GDK or GTK+ it is set in
 <code class="function">gdk_init()</code>, which is called by <a href="../gtk4/gtk4-General.html#gtk-init"><code class="function">gtk_init()</code></a> and the
 <span class="type">“startup”</span> handler. The program name is found by
 taking the last component of <em class="parameter"><code>argv</code></em>
index 234ce5e..1e68d1b 100644 (file)
@@ -146,7 +146,7 @@ convenient than the bare UNIX <code class="function">fork()</code> and <code cla
 and asynchronous variants (<a class="link" href="glib-Spawning-Processes.html#g-spawn-async" title="g_spawn_async ()"><code class="function">g_spawn_async()</code></a>, <a class="link" href="glib-Spawning-Processes.html#g-spawn-async-with-pipes" title="g_spawn_async_with_pipes ()"><code class="function">g_spawn_async_with_pipes()</code></a>),
 as well as convenience variants that take a complete shell-like
 commandline (<a class="link" href="glib-Spawning-Processes.html#g-spawn-command-line-sync" title="g_spawn_command_line_sync ()"><code class="function">g_spawn_command_line_sync()</code></a>, <a class="link" href="glib-Spawning-Processes.html#g-spawn-command-line-async" title="g_spawn_command_line_async ()"><code class="function">g_spawn_command_line_async()</code></a>).</p>
-<p>See <a href="../gio/GSubprocess.html#GSubprocess-struct"><span class="type">GSubprocess</span></a> in GIO for a higher-level API that provides
+<p>See <a href="../GSubprocess.html#GSubprocess-struct"><span class="type">GSubprocess</span></a> in GIO for a higher-level API that provides
 stream interfaces for communication with child processes.</p>
 <p>An example of using <a class="link" href="glib-Spawning-Processes.html#g-spawn-async-with-pipes" title="g_spawn_async_with_pipes ()"><code class="function">g_spawn_async_with_pipes()</code></a>:</p>
 <div class="informalexample">
@@ -470,10 +470,10 @@ and <em class="parameter"><code>standard_error</code></em>
 <p>If <em class="parameter"><code>child_pid</code></em>
  is not <a class="link" href="glib-Standard-Macros.html#NULL:CAPS" title="NULL"><code class="literal">NULL</code></a> and an error does not occur then the returned
 process reference must be closed using <a class="link" href="glib-Spawning-Processes.html#g-spawn-close-pid" title="g_spawn_close_pid ()"><code class="function">g_spawn_close_pid()</code></a>.</p>
-<p>If you are writing a GTK+ application, and the program you 
-are spawning is a graphical application, too, then you may
-want to use <code class="function">gdk_spawn_on_screen_with_pipes()</code> instead to ensure that
-the spawned program opens its windows on the right screen.</p>
+<p>If you are writing a GTK+ application, and the program you are spawning is a
+graphical application too, then to ensure that the spawned program opens its
+windows on the right screen, you may want to use <a href="../gdk4/gdk4-Application-launching.html#GdkAppLaunchContext-struct"><span class="type">GdkAppLaunchContext</span></a>,
+<span class="type">GAppLaunchcontext</span>, or set the <code class="literal">DISPLAY</code> environment variable.</p>
 <div class="refsect3">
 <a name="g-spawn-async-with-pipes.parameters"></a><h4>Parameters</h4>
 <div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -563,10 +563,10 @@ g_spawn_async (<em class="parameter"><code>const <a class="link" href="glib-Basi
 simply calls the <a class="link" href="glib-Spawning-Processes.html#g-spawn-async-with-pipes" title="g_spawn_async_with_pipes ()"><code class="function">g_spawn_async_with_pipes()</code></a> without any pipes.</p>
 <p>You should call <a class="link" href="glib-Spawning-Processes.html#g-spawn-close-pid" title="g_spawn_close_pid ()"><code class="function">g_spawn_close_pid()</code></a> on the returned child process
 reference when you don't need it any more.</p>
-<p>If you are writing a GTK+ application, and the program you are
-spawning is a graphical application, too, then you may want to
-use <code class="function">gdk_spawn_on_screen()</code> instead to ensure that the spawned program
-opens its windows on the right screen.</p>
+<p>If you are writing a GTK+ application, and the program you are spawning is a
+graphical application too, then to ensure that the spawned program opens its
+windows on the right screen, you may want to use <a href="../gdk4/gdk4-Application-launching.html#GdkAppLaunchContext-struct"><span class="type">GdkAppLaunchContext</span></a>,
+<span class="type">GAppLaunchcontext</span>, or set the <code class="literal">DISPLAY</code> environment variable.</p>
 <p>Note that the returned <em class="parameter"><code>child_pid</code></em>
  on Windows is a handle to the child
 process and not its identifier. Process handles and process identifiers
index 673f8b4..61aa33b 100644 (file)
@@ -4144,7 +4144,31 @@ such process". Unlike <code class="function">strerror()</code>, this always retu
 UTF-8 encoding, and the pointer is guaranteed to remain valid for
 the lifetime of the process.</p>
 <p>Note that the string may be translated according to the current locale.</p>
-<p>The value of <code class="literal">errno</code> will not be changed by this function.</p>
+<p>The value of <code class="literal">errno</code> will not be changed by this function. However, it may
+be changed by intermediate function calls, so you should save its value
+as soon as the call returns:</p>
+<div class="informalexample">
+  <table class="listing_frame" border="0" cellpadding="0" cellspacing="0">
+    <tbody>
+      <tr>
+        <td class="listing_lines" align="right"><pre>1
+2
+3
+4
+5
+6</pre></td>
+        <td class="listing_code"><pre class="programlisting"><span class="gtkdoc kwb">int</span> saved_errno<span class="gtkdoc opt">;</span>
+
+ret <span class="gtkdoc opt">=</span> <span class="function">read</span> <span class="gtkdoc opt">(</span>blah<span class="gtkdoc opt">);</span>
+saved_errno <span class="gtkdoc opt">=</span> errno<span class="gtkdoc opt">;</span>
+
+<span class="function"><a href="glib-String-Utility-Functions.html#g-strerror">g_strerror</a></span> <span class="gtkdoc opt">(</span>saved_errno<span class="gtkdoc opt">);</span></pre></td>
+      </tr>
+    </tbody>
+  </table>
+</div>
+
+<p></p>
 <div class="refsect3">
 <a name="g-strerror.parameters"></a><h4>Parameters</h4>
 <div class="informaltable"><table class="informaltable" width="100%" border="0">
index 138dd04..13f38f4 100644 (file)
@@ -725,8 +725,8 @@ nicely formatted test reports.</p>
 <span class="function">my_object_fixture_tear_down</span> <span class="gtkdoc opt">(</span>MyObjectFixture <span class="gtkdoc opt">*</span>fixture<span class="gtkdoc opt">,</span>
                              gconstpointer user_data<span class="gtkdoc opt">)</span>
 <span class="gtkdoc opt">{</span>
-  <span class="function"><a href="../gobject/gobject-The-Base-Object-Type.html#g-clear-object">g_clear_object</a></span> <span class="gtkdoc opt">(&amp;</span>fixture<span class="gtkdoc opt">-&gt;</span>helper<span class="gtkdoc opt">);</span>
-  <span class="function"><a href="../gobject/gobject-The-Base-Object-Type.html#g-clear-object">g_clear_object</a></span> <span class="gtkdoc opt">(&amp;</span>fixture<span class="gtkdoc opt">-&gt;</span>obj<span class="gtkdoc opt">);</span>
+  <span class="function"><a href="../gobject-The-Base-Object-Type.html#g-clear-object">g_clear_object</a></span> <span class="gtkdoc opt">(&amp;</span>fixture<span class="gtkdoc opt">-&gt;</span>helper<span class="gtkdoc opt">);</span>
+  <span class="function"><a href="../gobject-The-Base-Object-Type.html#g-clear-object">g_clear_object</a></span> <span class="gtkdoc opt">(&amp;</span>fixture<span class="gtkdoc opt">-&gt;</span>obj<span class="gtkdoc opt">);</span>
 <span class="gtkdoc opt">}</span>
 
 <span class="gtkdoc kwb">static void</span>
@@ -1807,9 +1807,9 @@ callback A before callback B will cause <code class="function">B()</code> to be
 <div class="refsect2">
 <a name="g-test-queue-unref"></a><h3>g_test_queue_unref()</h3>
 <pre class="programlisting">#define             g_test_queue_unref(gobject)</pre>
-<p>Enqueue an object to be released with <a href="../gobject/gobject-The-Base-Object-Type.html#g-object-unref"><code class="function">g_object_unref()</code></a> during
+<p>Enqueue an object to be released with <a href="../gobject-The-Base-Object-Type.html#g-object-unref"><code class="function">g_object_unref()</code></a> during
 the next teardown phase. This is equivalent to calling
-<a class="link" href="glib-Testing.html#g-test-queue-destroy" title="g_test_queue_destroy ()"><code class="function">g_test_queue_destroy()</code></a> with a destroy callback of <a href="../gobject/gobject-The-Base-Object-Type.html#g-object-unref"><code class="function">g_object_unref()</code></a>.</p>
+<a class="link" href="glib-Testing.html#g-test-queue-destroy" title="g_test_queue_destroy ()"><code class="function">g_test_queue_destroy()</code></a> with a destroy callback of <a href="../gobject-The-Base-Object-Type.html#g-object-unref"><code class="function">g_object_unref()</code></a>.</p>
 <div class="refsect3">
 <a name="g-test-queue-unref.parameters"></a><h4>Parameters</h4>
 <div class="informaltable"><table class="informaltable" width="100%" border="0">
index 05149ec..47a05e9 100644 (file)
@@ -2607,7 +2607,7 @@ ensure that no other asynchronous operations accidentally get
 started while the non-default context is active.</p>
 <p>Beware that libraries that predate this function may not correctly
 handle being used from a thread with a thread-default context. Eg,
-see <a href="../gio/GFile.html#g-file-supports-thread-contexts"><code class="function">g_file_supports_thread_contexts()</code></a>.</p>
+see <a href="../GFile.html#g-file-supports-thread-contexts"><code class="function">g_file_supports_thread_contexts()</code></a>.</p>
 <div class="refsect3">
 <a name="g-main-context-push-thread-default.parameters"></a><h4>Parameters</h4>
 <div class="informaltable"><table class="informaltable" width="100%" border="0">
@@ -3442,7 +3442,7 @@ if the call was interrupted.</p>
 <a name="GSourceDummyMarshal"></a><h3>GSourceDummyMarshal ()</h3>
 <pre class="programlisting"><span class="returnvalue">void</span>
 <span class="c_punctuation">(</span>*GSourceDummyMarshal<span class="c_punctuation">)</span> (<em class="parameter"><code><span class="type">void</span></code></em>);</pre>
-<p>This is just a placeholder for <a href="../gobject/gobject-Closures.html#GClosureMarshal"><span class="type">GClosureMarshal</span></a>,
+<p>This is just a placeholder for <a href="../gobject-Closures.html#GClosureMarshal"><span class="type">GClosureMarshal</span></a>,
 which cannot be used here for dependency reasons.</p>
 </div>
 <hr>
@@ -3701,7 +3701,7 @@ before the dispatch of your idle handler.</p>
   <span class="keyword">if</span> <span class="gtkdoc opt">(</span>self<span class="gtkdoc opt">-&gt;</span>idle_id<span class="gtkdoc opt">)</span>
     <span class="function"><a href="glib-The-Main-Event-Loop.html#g-source-remove">g_source_remove</a></span> <span class="gtkdoc opt">(</span>self<span class="gtkdoc opt">-&gt;</span>idle_id<span class="gtkdoc opt">);</span>
    
-  <span class="function"><a href="../gobject/gobject-The-Base-Object-Type.html#G-OBJECT-CLASS:CAPS">G_OBJECT_CLASS</a></span> <span class="gtkdoc opt">(</span>parent_class<span class="gtkdoc opt">)-&gt;</span><span class="function">finalize</span> <span class="gtkdoc opt">(</span>object<span class="gtkdoc opt">);</span>
+  <span class="function"><a href="../gobject-The-Base-Object-Type.html#G-OBJECT-CLASS:CAPS">G_OBJECT_CLASS</a></span> <span class="gtkdoc opt">(</span>parent_class<span class="gtkdoc opt">)-&gt;</span><span class="function">finalize</span> <span class="gtkdoc opt">(</span>object<span class="gtkdoc opt">);</span>
 <span class="gtkdoc opt">}</span></pre></td>
       </tr>
     </tbody>
@@ -4564,7 +4564,7 @@ callback), and when <em class="parameter"><code>source</code></em>
 its own prepare/check functions indicate that it is ready.)</p>
 <p>If you don't need <em class="parameter"><code>child_source</code></em>
  to do anything on its own when it
-triggers, you can call <a href="../gobject/gobject-Closures.html#g-source-set-dummy-callback"><code class="function">g_source_set_dummy_callback()</code></a> on it to set a
+triggers, you can call <a href="../gobject-Closures.html#g-source-set-dummy-callback"><code class="function">g_source_set_dummy_callback()</code></a> on it to set a
 callback that does nothing (except return <a class="link" href="glib-Standard-Macros.html#TRUE:CAPS" title="TRUE"><code class="literal">TRUE</code></a> if appropriate).</p>
 <p><em class="parameter"><code>source</code></em>
  will hold a reference on <em class="parameter"><code>child_source</code></em>
index f3cc774..009c480 100644 (file)
@@ -607,18 +607,18 @@ you must coordinate accesses to the same <a class="link" href="glib-Hash-Tables.
 threads. The two notable exceptions from this rule are <a class="link" href="glib-The-Main-Event-Loop.html#GMainLoop" title="GMainLoop"><span class="type">GMainLoop</span></a>
 and <a class="link" href="glib-Asynchronous-Queues.html#GAsyncQueue" title="GAsyncQueue"><span class="type">GAsyncQueue</span></a>, which are thread-safe and need no further
 application-level locking to be accessed from multiple threads.
-Most refcounting functions such as <a href="../gobject/gobject-The-Base-Object-Type.html#g-object-ref"><code class="function">g_object_ref()</code></a> are also thread-safe.</p>
+Most refcounting functions such as <a href="../gobject-The-Base-Object-Type.html#g-object-ref"><code class="function">g_object_ref()</code></a> are also thread-safe.</p>
 <p>A common use for <a href="glib-Threads.html#GThread"><span class="type">GThreads</span></a> is to move a long-running blocking operation out
 of the main thread and into a worker thread. For GLib functions, such as
 single GIO operations, this is not necessary, and complicates the code.
 Instead, the <code class="literal">…<code class="function">_async()</code></code> version of the function should be used from the main
 thread, eliminating the need for locking and synchronisation between multiple
 threads. If an operation does need to be moved to a worker thread, consider
-using <a href="../gio/GTask.html#g-task-run-in-thread"><code class="function">g_task_run_in_thread()</code></a>, or a <a class="link" href="glib-Thread-Pools.html#GThreadPool" title="struct GThreadPool"><span class="type">GThreadPool</span></a>. <a class="link" href="glib-Thread-Pools.html#GThreadPool" title="struct GThreadPool"><span class="type">GThreadPool</span></a> is often a
+using <a href="../GTask.html#g-task-run-in-thread"><code class="function">g_task_run_in_thread()</code></a>, or a <a class="link" href="glib-Thread-Pools.html#GThreadPool" title="struct GThreadPool"><span class="type">GThreadPool</span></a>. <a class="link" href="glib-Thread-Pools.html#GThreadPool" title="struct GThreadPool"><span class="type">GThreadPool</span></a> is often a
 better choice than <a class="link" href="glib-Threads.html#GThread" title="GThread"><span class="type">GThread</span></a>, as it handles thread reuse and task queueing;
-<a href="../gio/GTask.html#GTask-struct"><span class="type">GTask</span></a> uses this internally.</p>
+<a href="../GTask.html#GTask-struct"><span class="type">GTask</span></a> uses this internally.</p>
 <p>However, if multiple blocking operations need to be performed in sequence,
-and it is not possible to use <a href="../gio/GTask.html#GTask-struct"><span class="type">GTask</span></a> for them, moving them to a worker thread
+and it is not possible to use <a href="../GTask.html#GTask-struct"><span class="type">GTask</span></a> for them, moving them to a worker thread
 can clarify the code.</p>
 </div>
 <div class="refsect1">
index e889178..403b85d 100644 (file)
@@ -605,7 +605,7 @@ exported enumeration mapping <code class="literal">errno</code>. Instead, all fu
 error message is always generated via <a class="link" href="glib-String-Utility-Functions.html#g-strerror" title="g_strerror ()"><code class="function">g_strerror()</code></a>.</p>
 <p>It is expected that most code will not look at <code class="literal">errno</code> from these APIs.
 Important cases where one would want to differentiate between errors are
-already covered by existing cross-platform GLib API, such as e.g. <a href="../gio/GFile.html#GFile-struct"><span class="type">GFile</span></a>
+already covered by existing cross-platform GLib API, such as e.g. <a href="../GFile.html#GFile-struct"><span class="type">GFile</span></a>
 wrapping <code class="literal">ENOENT</code>. However, it is provided for completeness, at least.</p>
 </div>
 </div>
index 700a55b..a6cc546 100644 (file)
@@ -355,7 +355,7 @@ linked against at application run time.</p>
 <hr>
 <div class="refsect2">
 <a name="GLIB-MICRO-VERSION:CAPS"></a><h3>GLIB_MICRO_VERSION</h3>
-<pre class="programlisting">#define GLIB_MICRO_VERSION 4
+<pre class="programlisting">#define GLIB_MICRO_VERSION 5
 </pre>
 <p>The micro version number of the GLib library.</p>
 <p>Like <span class="type">gtk_micro_version</span>, but from the headers used at
index c9009e5..4253fe8 100644 (file)
@@ -239,7 +239,7 @@ This will get the "full Unicode" commandline arguments using
 <code class="function">GetCommandLineW()</code> and convert it to the GLib filename encoding (which
 is UTF-8 on Windows).</p>
 <p>The strings returned by this function are suitable for use with
-functions such as <a class="link" href="glib-File-Utilities.html#g-open" title="g_open ()"><code class="function">g_open()</code></a> and <a href="../gio/GFile.html#g-file-new-for-commandline-arg"><code class="function">g_file_new_for_commandline_arg()</code></a> but
+functions such as <a class="link" href="glib-File-Utilities.html#g-open" title="g_open ()"><code class="function">g_open()</code></a> and <a href="../GFile.html#g-file-new-for-commandline-arg"><code class="function">g_file_new_for_commandline_arg()</code></a> but
 are not suitable for use with <a class="link" href="glib-Commandline-option-parser.html#g-option-context-parse" title="g_option_context_parse ()"><code class="function">g_option_context_parse()</code></a>, which assumes
 that its input will be in the system codepage.  The return value is
 suitable for use with <a class="link" href="glib-Commandline-option-parser.html#g-option-context-parse-strv" title="g_option_context_parse_strv ()"><code class="function">g_option_context_parse_strv()</code></a>, however, which
index e4dac7a..83d851d 100644 (file)
@@ -15,7 +15,7 @@
 <div>
 <div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">GLib Reference Manual</p></th></tr></table></div>
 <div><p class="releaseinfo">
-      for GLib 2.53.4
+      for GLib 2.53.5
 
       The latest version of this documentation can be found on-line at
       <a class="ulink" href="https://developer.gnome.org/glib/unstable/" target="_top">https://developer.gnome.org/glib/unstable/</a>.
diff --git a/docs/reference/glib/meson.build b/docs/reference/glib/meson.build
new file mode 100644 (file)
index 0000000..3babb3e
--- /dev/null
@@ -0,0 +1,103 @@
+if get_option('with-docs') != 'no'
+  subdir('xml')
+
+  ignore_headers = [
+    'gallocator.h',
+    'gdatasetprivate.h',
+    'glibintl.h',
+    'gbsearcharray.h',
+    'glib-private.h',
+    'gmoduleconf.h',
+    'gthreadprivate.h',
+    'gunibreak.h',
+    'gunicomp.h',
+    'gunidecomp.h',
+    'gunichartables.h',
+    'glib_probes.h',
+    'glib_trace.h',
+    'libcharset.h',
+    'gdebug.h',
+    'gprintfint.h',
+    'gmirroringtable.h',
+    'gscripttable.h',
+    'glib-mirroring-tab',
+    'gnulib',
+    'pcre',
+    'update-pcre',
+    'gbytesprivate.h',
+    'gvariant-internal.h',
+    'gvariant-serialiser.h',
+    'gvariant-core.h',
+    'gvarianttypeinfo.h',
+    'gwakeup.h',
+    'gtranslit-data.h',
+    'glib-init.h',
+    'gconstructor.h',
+    'valgrind.h',
+  ]
+
+  docpath = join_paths(glib_datadir, 'gtk-doc', 'html')
+  version_conf = configuration_data()
+  version_conf.set('GLIB_VERSION', meson.project_version())
+  configure_file(
+    input: 'version.xml.in',
+    output: 'version.xml',
+    configuration: version_conf
+  )
+
+  gnome.gtkdoc('glib',
+               main_xml : 'glib-docs.xml',
+               namespace : 'g',
+               mode : 'none',
+               src_dir : [ 'glib', 'gmodule' ],
+               dependencies : libglib_dep,
+               scan_args : [
+                 '--rebuild-types',
+                 '--deprecated-guards=G_DISABLE_DEPRECATED',
+                 '--ignore-decorators=GLIB_VAR|G_GNUC_WARN_UNUSED_RESULT',
+                 '--ignore-headers=' + ' '.join(ignore_headers),
+               ],
+               content_files : [
+                 'cross.xml',
+                 'running.xml',
+                 'building.xml',
+                 'changes.xml',
+                 'compiling.xml',
+                 'programming.xml',
+                 'resources.xml',
+                 'regex-syntax.xml',
+                 'glib-gettextize.xml',
+                 'gtester.xml',
+                 'gtester-report.xml',
+                 'gvariant-varargs.xml',
+                 'gvariant-text.xml',
+               ],
+               expand_content_files : [
+                 'compiling.xml',
+               ],
+               html_assets : [
+                 'file-name-encodings.png',
+                 'mainloop-states.gif',
+                 'Sorted_binary_tree_breadth-first_traversal.svg',
+                 'Sorted_binary_tree_inorder.svg',
+                 'Sorted_binary_tree_postorder.svg',
+                 'Sorted_binary_tree_preorder.svg',
+               ],
+               fixxref_args: [
+                 '--html-dir=' + docpath,
+                 # TODO: gobject/gio extra dirs
+               ],
+               install: true)
+endif
+
+if get_option('with-man') != 'no' and xsltproc.found()
+  manpages = ['glib-gettextize', 'gtester', 'gtester-report']
+  foreach page : manpages
+    custom_target(page + '-man',
+      input: page + '.xml',
+      output: page + '.1',
+      command: xsltproc_command,
+      install: true,
+      install_dir: man1_dir)
+  endforeach
+endif
diff --git a/docs/reference/glib/xml/gtkdocentities.ent.in b/docs/reference/glib/xml/gtkdocentities.ent.in
new file mode 100644 (file)
index 0000000..f12c9ff
--- /dev/null
@@ -0,0 +1,8 @@
+<!ENTITY package "@PACKAGE@">
+<!ENTITY package_bugreport "@PACKAGE_BUGREPORT@">
+<!ENTITY package_name "@PACKAGE_NAME@">
+<!ENTITY package_string "@PACKAGE_STRING@">
+<!ENTITY package_tarname "@PACKAGE_TARNAME@">
+<!ENTITY package_url "@PACKAGE_URL@">
+<!ENTITY package_version "@PACKAGE_VERSION@">
+<!ENTITY package_api_version "@PACKAGE_API_VERSION@">
diff --git a/docs/reference/glib/xml/meson.build b/docs/reference/glib/xml/meson.build
new file mode 100644 (file)
index 0000000..6d1e295
--- /dev/null
@@ -0,0 +1,14 @@
+ent_conf = configuration_data()
+ent_conf.set('PACKAGE', 'glib')
+ent_conf.set('PACKAGE_BUGREPORT', 'https://bugzilla.gnome.org/enter_bug.cgi?product=glib')
+ent_conf.set('PACKAGE_NAME', 'glib')
+ent_conf.set('PACKAGE_STRING', 'glib')
+ent_conf.set('PACKAGE_TARNAME', 'glib')
+ent_conf.set('PACKAGE_URL', 'FIXME')
+ent_conf.set('PACKAGE_VERSION', glib_version)
+ent_conf.set('PACKAGE_API_VERSION', glib_api_version)
+configure_file(
+  input: 'gtkdocentities.ent.in',
+  output: 'gtkdocentities.ent',
+  configuration: ent_conf
+)
index 5336551..bd9729a 100644 (file)
@@ -2,7 +2,7 @@
 .\"     Title: glib-genmarshal
 .\"    Author: Emmanuele Bassi
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 07/17/2017
+.\"      Date: 08/07/2017
 .\"    Manual: User Commands
 .\"    Source: GObject
 .\"  Language: English
index 5a6a9e5..d08f151 100644 (file)
@@ -2,7 +2,7 @@
 .\"     Title: glib-mkenums
 .\"    Author: Owen Taylor
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 07/17/2017
+.\"      Date: 08/07/2017
 .\"    Manual: User Commands
 .\"    Source: GObject
 .\"  Language: English
index f04526a..b054011 100644 (file)
@@ -2,7 +2,7 @@
 .\"     Title: gobject-query
 .\"    Author: Tim Janik
 .\" Generator: DocBook XSL Stylesheets vsnapshot <http://docbook.sf.net/>
-.\"      Date: 07/17/2017
+.\"      Date: 08/07/2017
 .\"    Manual: User Commands
 .\"    Source: GObject
 .\"  Language: English
index 7de4f03..06a6b42 100644 (file)
@@ -15,7 +15,7 @@
 <div>
 <div><table class="navigation" id="top" width="100%" cellpadding="2" cellspacing="0"><tr><th valign="middle"><p class="title">GObject Reference Manual</p></th></tr></table></div>
 <div><p class="releaseinfo">
-      for GObject 2.53.4
+      for GObject 2.53.5
 
       The latest version of this documentation can be found on-line at
       <a class="ulink" href="https://developer.gnome.org/gobject/unstable/" target="_top">https://developer.gnome.org/gobject/unstable/</a>.
diff --git a/docs/reference/gobject/meson.build b/docs/reference/gobject/meson.build
new file mode 100644 (file)
index 0000000..1025e17
--- /dev/null
@@ -0,0 +1,64 @@
+if get_option('with-docs') != 'no'
+  subdir('xml')
+
+  ignore_headers = [
+    'tests',
+    'gatomicarray.h',
+    'gobject_trace.h',
+    'gtype-private.h'
+  ]
+
+  docpath = join_paths(glib_datadir, 'gtk-doc', 'html')
+  version_conf = configuration_data()
+  version_conf.set('GLIB_VERSION', meson.project_version())
+  configure_file(
+    input: 'version.xml.in',
+    output: 'version.xml',
+    configuration: version_conf
+  )
+
+  gnome.gtkdoc('gobject',
+    main_xml : 'gobject-docs.xml',
+    namespace : 'g',
+    gobject_typesfile : join_paths(meson.current_source_dir(), 'gobject.types'),
+    mode : 'none',
+    dependencies : [libgobject_dep, libglib_dep],
+    src_dir : 'gobject',
+    scan_args : [
+      '--deprecated-guards=G_DISABLE_DEPRECATED',
+      '--ignore-decorators=G_GNUC_INTERNAL|G_GNUC_WARN_UNUSED_RESULT',
+      '--ignore-headers=' + ' '.join(ignore_headers),
+    ],
+    content_files : [
+      'glib-mkenums.xml',
+      'glib-genmarshal.xml',
+      'gobject-query.xml',
+      'tut_gobject.xml',
+      'tut_gsignal.xml',
+      'tut_gtype.xml',
+      'tut_howto.xml',
+      'tut_intro.xml',
+      'tut_tools.xml'
+    ],
+    html_assets : [
+      'images/glue.png'
+    ],
+    fixxref_args: [
+      '--html-dir=' + docpath,
+      '--extra-dir=' + join_paths(meson.current_build_dir(), '../glib/html'),
+    ],
+    install: true
+  )
+endif
+
+if get_option('with-man') != 'no' and xsltproc.found()
+  manpages = ['glib-mkenums', 'glib-genmarshal', 'gobject-query']
+  foreach page : manpages
+    custom_target(page + '-man',
+      input: page + '.xml',
+      output: page + '.1',
+      command: xsltproc_command,
+      install: true,
+      install_dir: man1_dir)
+  endforeach
+endif
diff --git a/docs/reference/gobject/xml/gtkdocentities.ent.in b/docs/reference/gobject/xml/gtkdocentities.ent.in
new file mode 100644 (file)
index 0000000..f12c9ff
--- /dev/null
@@ -0,0 +1,8 @@
+<!ENTITY package "@PACKAGE@">
+<!ENTITY package_bugreport "@PACKAGE_BUGREPORT@">
+<!ENTITY package_name "@PACKAGE_NAME@">
+<!ENTITY package_string "@PACKAGE_STRING@">
+<!ENTITY package_tarname "@PACKAGE_TARNAME@">
+<!ENTITY package_url "@PACKAGE_URL@">
+<!ENTITY package_version "@PACKAGE_VERSION@">
+<!ENTITY package_api_version "@PACKAGE_API_VERSION@">
diff --git a/docs/reference/gobject/xml/meson.build b/docs/reference/gobject/xml/meson.build
new file mode 100644 (file)
index 0000000..6d1e295
--- /dev/null
@@ -0,0 +1,14 @@
+ent_conf = configuration_data()
+ent_conf.set('PACKAGE', 'glib')
+ent_conf.set('PACKAGE_BUGREPORT', 'https://bugzilla.gnome.org/enter_bug.cgi?product=glib')
+ent_conf.set('PACKAGE_NAME', 'glib')
+ent_conf.set('PACKAGE_STRING', 'glib')
+ent_conf.set('PACKAGE_TARNAME', 'glib')
+ent_conf.set('PACKAGE_URL', 'FIXME')
+ent_conf.set('PACKAGE_VERSION', glib_version)
+ent_conf.set('PACKAGE_API_VERSION', glib_api_version)
+configure_file(
+  input: 'gtkdocentities.ent.in',
+  output: 'gtkdocentities.ent',
+  configuration: ent_conf
+)
diff --git a/gio/data-to-c.py b/gio/data-to-c.py
new file mode 100644 (file)
index 0000000..7a8d8a8
--- /dev/null
@@ -0,0 +1,16 @@
+#!/usr/bin/env python3
+
+import sys
+
+if len(sys.argv) < 4:
+    print('Usage: {0} <filename> <variable> <output>')
+
+with open(sys.argv[1], 'rb') as f:
+    in_data = f.read().decode('utf-8', 'backslashreplace')
+b = [r'\x{:02x}'.format(ord(c)) for c in in_data]
+
+out_data = "const char {0}[] = \"".format(sys.argv[2])
+out_data += "".join(b) + "\";"
+
+with open(sys.argv[3], 'w') as f:
+    f.write(out_data)
index c00973d..500fb78 100644 (file)
@@ -1243,6 +1243,28 @@ g_application_constructed (GObject *object)
 }
 
 static void
+g_application_dispose (GObject *object)
+{
+  GApplication *application = G_APPLICATION (object);
+
+  if (application->priv->impl != NULL &&
+      G_APPLICATION_GET_CLASS (application)->dbus_unregister != g_application_real_dbus_unregister)
+    {
+      static gboolean warned;
+
+      if (!warned)
+        {
+          g_warning ("Your application did not unregister from D-Bus before destruction. "
+                     "Consider using g_application_run().");
+        }
+
+      warned = TRUE;
+    }
+
+  G_OBJECT_CLASS (g_application_parent_class)->dispose (object);
+}
+
+static void
 g_application_finalize (GObject *object)
 {
   GApplication *application = G_APPLICATION (object);
@@ -1314,6 +1336,7 @@ g_application_class_init (GApplicationClass *class)
   GObjectClass *object_class = G_OBJECT_CLASS (class);
 
   object_class->constructed = g_application_constructed;
+  object_class->dispose = g_application_dispose;
   object_class->finalize = g_application_finalize;
   object_class->get_property = g_application_get_property;
   object_class->set_property = g_application_set_property;
index 1cef317..ac029a9 100644 (file)
@@ -120,6 +120,7 @@ struct _GApplicationImpl
   gboolean         properties_live;
   gboolean         primary;
   gboolean         busy;
+  gboolean         registered;
   GApplication    *app;
 };
 
@@ -403,6 +404,7 @@ g_application_impl_attempt_primary (GApplicationImpl  *impl,
   if (impl->actions_id == 0)
     return FALSE;
 
+  impl->registered = TRUE;
   if (!app_class->dbus_register (impl->app,
                                  impl->session_bus,
                                  impl->object_path,
@@ -455,9 +457,13 @@ g_application_impl_stop_primary (GApplicationImpl *impl)
 {
   GApplicationClass *app_class = G_APPLICATION_GET_CLASS (impl->app);
 
-  app_class->dbus_unregister (impl->app,
-                              impl->session_bus,
-                              impl->object_path);
+  if (impl->registered)
+    {
+      app_class->dbus_unregister (impl->app,
+                                  impl->session_bus,
+                                  impl->object_path);
+      impl->registered = FALSE;
+    }
 
   if (impl->object_id)
     {
index 26aa454..d529cbc 100644 (file)
@@ -433,6 +433,7 @@ g_charset_converter_initable_init (GInitable     *initable,
                                   GError       **error)
 {
   GCharsetConverter  *conv;
+  int errsv;
 
   g_return_val_if_fail (G_IS_CHARSET_CONVERTER (initable), FALSE);
 
@@ -446,10 +447,11 @@ g_charset_converter_initable_init (GInitable     *initable,
     }
 
   conv->iconv = g_iconv_open (conv->to, conv->from);
+  errsv = errno;
 
   if (conv->iconv == (GIConv)-1)
     {
-      if (errno == EINVAL)
+      if (errsv == EINVAL)
        g_set_error (error, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED,
                     _("Conversion from character set “%s” to “%s” is not supported"),
                     conv->from, conv->to);
index 4abd04b..8377ffa 100644 (file)
@@ -19,4 +19,4 @@
 #
 # Author: David Zeuthen <davidz@redhat.com>
 
-VERSION = "2.53.4"
+VERSION = "2.53.5"
diff --git a/gio/gdbus-2.0/codegen/meson.build b/gio/gdbus-2.0/codegen/meson.build
new file mode 100644 (file)
index 0000000..0e9ffbd
--- /dev/null
@@ -0,0 +1,41 @@
+gdbus_codegen_files = [
+  '__init__.py',
+  'codegen.py',
+  'codegen_main.py',
+  'codegen_docbook.py',
+  'dbustypes.py',
+  'parser.py',
+  'utils.py',
+]
+
+gdbus_codegen_conf = configuration_data()
+gdbus_codegen_conf.set('VERSION', glib_version)
+gdbus_codegen_conf.set('PYTHON', python.path())
+
+# Install gdbus-codegen executable
+# FIXME: Set permissions
+gdbus_codegen = configure_file(input : 'gdbus-codegen.in',
+  output : 'gdbus-codegen',
+  install : true,
+  install_dir : get_option('bindir'),
+  configuration : gdbus_codegen_conf
+)
+
+codegen_dir = join_paths(get_option('datadir'), 'glib-2.0/codegen')
+
+configure_file(input : 'config.py.in',
+  output : 'config.py',
+  install : true,
+  install_dir : codegen_dir,
+  configuration : gdbus_codegen_conf
+)
+
+blank_conf = configuration_data()
+foreach f : gdbus_codegen_files
+  # Copy these into the builddir so that gdbus-codegen can be used uninstalled
+  # and then install it too so that it can be used after installation
+  configure_file(input : f, output : f,
+    install : true,
+    install_dir : codegen_dir,
+    configuration : blank_conf)
+endforeach
index 696919a..fdff529 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Generated by gdbus-codegen 2.53.4. DO NOT EDIT.
+ * Generated by gdbus-codegen 2.53.5. DO NOT EDIT.
  *
  * The license of this code is the same as for the source it was derived from.
  */
index 05732fc..9a07ee0 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Generated by gdbus-codegen 2.53.4. DO NOT EDIT.
+ * Generated by gdbus-codegen 2.53.5. DO NOT EDIT.
  *
  * The license of this code is the same as for the source it was derived from.
  */
index f4fb41d..6fb3d2a 100644 (file)
@@ -691,9 +691,11 @@ g_dbus_address_connect (const gchar   *address_entry,
           gchar nonce_contents[16 + 1];
           size_t num_bytes_read;
           FILE *f;
+          int errsv;
 
           /* be careful to read only 16 bytes - we also check that the file is only 16 bytes long */
           f = fopen (nonce_file, "rb");
+          errsv = errno;
           if (f == NULL)
             {
               g_set_error (error,
@@ -701,7 +703,7 @@ g_dbus_address_connect (const gchar   *address_entry,
                            G_IO_ERROR_INVALID_ARGUMENT,
                            _("Error opening nonce file “%s”: %s"),
                            nonce_file,
-                           g_strerror (errno));
+                           g_strerror (errsv));
               g_object_unref (ret);
               ret = NULL;
               goto out;
@@ -710,6 +712,7 @@ g_dbus_address_connect (const gchar   *address_entry,
                                   sizeof (gchar),
                                   16 + 1,
                                   f);
+          errsv = errno;
           if (num_bytes_read != 16)
             {
               if (num_bytes_read == 0)
@@ -719,7 +722,7 @@ g_dbus_address_connect (const gchar   *address_entry,
                                G_IO_ERROR_INVALID_ARGUMENT,
                                _("Error reading from nonce file “%s”: %s"),
                                nonce_file,
-                               g_strerror (errno));
+                               g_strerror (errsv));
                 }
               else
                 {
index 0b17b90..a51430c 100644 (file)
@@ -255,12 +255,13 @@ ensure_keyring_directory (GError **error)
           struct stat statbuf;
           if (stat (path, &statbuf) != 0)
             {
+              int errsv = errno;
               g_set_error (error,
                            G_IO_ERROR,
-                           g_io_error_from_errno (errno),
+                           g_io_error_from_errno (errsv),
                            _("Error when getting information for directory “%s”: %s"),
                            path,
-                           g_strerror (errno));
+                           g_strerror (errsv));
               g_free (path);
               path = NULL;
               goto out;
@@ -288,12 +289,13 @@ ensure_keyring_directory (GError **error)
 
   if (g_mkdir (path, 0700) != 0)
     {
+      int errsv = errno;
       g_set_error (error,
                    G_IO_ERROR,
-                   g_io_error_from_errno (errno),
+                   g_io_error_from_errno (errsv),
                    _("Error creating directory “%s”: %s"),
                    path,
-                   g_strerror (errno));
+                   g_strerror (errsv));
       g_free (path);
       path = NULL;
       goto out;
@@ -489,6 +491,7 @@ keyring_acquire_lock (const gchar  *path,
   gint ret;
   guint num_tries;
   guint num_create_tries;
+  int errsv;
 
   g_return_val_if_fail (path != NULL, FALSE);
   g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
@@ -526,12 +529,13 @@ keyring_acquire_lock (const gchar  *path,
            */
           if (g_unlink (lock) != 0)
             {
+              errsv = errno;
               g_set_error (error,
                            G_IO_ERROR,
-                           g_io_error_from_errno (errno),
+                           g_io_error_from_errno (errsv),
                            _("Error deleting stale lock file “%s”: %s"),
                            lock,
-                           g_strerror (errno));
+                           g_strerror (errsv));
               goto out;
             }
           _log ("Deleted stale lock file '%s'", lock);
@@ -546,11 +550,12 @@ keyring_acquire_lock (const gchar  *path,
                 0,
 #endif
                 0700);
+  errsv = errno;
   if (ret == -1)
     {
 #ifdef EEXISTS
       /* EEXIST: pathname already exists and O_CREAT and O_EXCL were used. */
-      if (errno == EEXISTS)
+      if (errsv == EEXISTS)
         {
           num_create_tries++;
           if (num_create_tries < 5)
@@ -560,10 +565,10 @@ keyring_acquire_lock (const gchar  *path,
       num_create_tries = num_create_tries; /* To avoid -Wunused-but-set-variable */
       g_set_error (error,
                    G_IO_ERROR,
-                   g_io_error_from_errno (errno),
+                   g_io_error_from_errno (errsv),
                    _("Error creating lock file “%s”: %s"),
                    lock,
-                   g_strerror (errno));
+                   g_strerror (errsv));
       goto out;
     }
 
@@ -588,22 +593,24 @@ keyring_release_lock (const gchar  *path,
   lock = g_strdup_printf ("%s.lock", path);
   if (close (lock_fd) != 0)
     {
+      int errsv = errno;
       g_set_error (error,
                    G_IO_ERROR,
-                   g_io_error_from_errno (errno),
+                   g_io_error_from_errno (errsv),
                    _("Error closing (unlinked) lock file “%s”: %s"),
                    lock,
-                   g_strerror (errno));
+                   g_strerror (errsv));
       goto out;
     }
   if (g_unlink (lock) != 0)
     {
+      int errsv = errno;
       g_set_error (error,
                    G_IO_ERROR,
-                   g_io_error_from_errno (errno),
+                   g_io_error_from_errno (errsv),
                    _("Error unlinking lock file “%s”: %s"),
                    lock,
-                   g_strerror (errno));
+                   g_strerror (errsv));
       goto out;
     }
 
index 357e951..4dd17af 100644 (file)
@@ -381,7 +381,7 @@ g_dbus_interface_skeleton_get_properties (GDBusInterfaceSkeleton *interface_)
  *
  * For example, an exported D-Bus interface may queue up property
  * changes and emit the
- * `org.freedesktop.DBus.Properties::Propert``
+ * `org.freedesktop.DBus.Properties::PropertiesChanged`
  * signal later (e.g. in an idle handler). This technique is useful
  * for collapsing multiple property changes into one.
  *
index 9158858..e80794f 100644 (file)
@@ -3504,7 +3504,8 @@ g_dbus_message_print (GDBusMessage *message,
                 }
               else
                 {
-                  g_string_append_printf (fs, "(fstat failed: %s)", g_strerror (errno));
+                  int errsv = errno;
+                  g_string_append_printf (fs, "(fstat failed: %s)", g_strerror (errsv));
                 }
               g_string_append_printf (str, "%*s  fd %d: %s\n", indent, "", fds[n], fs->str);
               g_string_free (fs, TRUE);
index fcfc2f4..2c2714d 100644 (file)
@@ -273,6 +273,13 @@ on_name_lost_or_acquired (GDBusConnection  *connection,
       g_strcmp0 (sender_name, "org.freedesktop.DBus") != 0)
     goto out;
 
+  if (!g_variant_is_of_type (parameters, G_VARIANT_TYPE ("(s)")))
+    {
+      g_warning ("%s signal had unexpected signature %s", signal_name,
+                 g_variant_get_type_string (parameters));
+      goto out;
+    }
+
   if (g_strcmp0 (signal_name, "NameLost") == 0)
     {
       g_variant_get (parameters, "(&s)", &name);
index 20df4e2..07757f4 100644 (file)
@@ -862,17 +862,20 @@ try_tcp (GDBusServer  *server,
       while (bytes_remaining > 0)
         {
           gssize ret;
+          int errsv;
+
           ret = write (fd, server->nonce + bytes_written, bytes_remaining);
+          errsv = errno;
           if (ret == -1)
             {
-              if (errno == EINTR)
+              if (errsv == EINTR)
                 goto again;
               g_set_error (error,
                            G_IO_ERROR,
-                           g_io_error_from_errno (errno),
+                           g_io_error_from_errno (errsv),
                            _("Error writing nonce file at “%s”: %s"),
                            server->nonce_file,
-                           g_strerror (errno));
+                           g_strerror (errsv));
               goto out;
             }
           bytes_written += ret;
index e5d61ab..3e85bd2 100644 (file)
@@ -101,7 +101,7 @@ g_document_portal_add_document (GFile   *file,
   char *doc_uri = NULL;
   char *path = NULL;
   GUnixFDList *fd_list = NULL;
-  int fd, fd_in;
+  int fd, fd_in, errsv;
   gboolean ret;
 
   if (!init_document_portal ())
@@ -113,10 +113,11 @@ g_document_portal_add_document (GFile   *file,
 
   path = g_file_get_path (file);
   fd = g_open (path, O_PATH | O_CLOEXEC);
+  errsv = errno;
 
   if (fd == -1)
     {
-      g_set_error (error, G_IO_ERROR, g_io_error_from_errno (errno),
+      g_set_error (error, G_IO_ERROR, g_io_error_from_errno (errsv),
                    "Failed to open %s", path);
       goto out;
     }
index 77dcf69..a0d4814 100644 (file)
@@ -200,9 +200,9 @@ urgency_from_priority (GNotificationPriority priority)
 
     default:
     case G_NOTIFICATION_PRIORITY_NORMAL:
+    case G_NOTIFICATION_PRIORITY_HIGH:
       return 1;
 
-    case G_NOTIFICATION_PRIORITY_HIGH:
     case G_NOTIFICATION_PRIORITY_URGENT:
       return 2;
     }
index dd518df..9967b73 100644 (file)
@@ -3000,7 +3000,7 @@ btrfs_reflink_with_progress (GInputStream           *in,
 {
   goffset source_size;
   int fd_in, fd_out;
-  int ret;
+  int ret, errsv;
 
   fd_in = g_file_descriptor_based_get_fd (G_FILE_DESCRIPTOR_BASED (in));
   fd_out = g_file_descriptor_based_get_fd (G_FILE_DESCRIPTOR_BASED (out));
@@ -3015,14 +3015,15 @@ btrfs_reflink_with_progress (GInputStream           *in,
    *
    * By the time we get here, *in and *out are both regular files */
   ret = ioctl (fd_out, BTRFS_IOC_CLONE, fd_in);
+  errsv = errno;
 
   if (ret < 0)
     {
-      if (errno == EXDEV)
+      if (errsv == EXDEV)
        g_set_error_literal (error, G_IO_ERROR,
                             G_IO_ERROR_NOT_SUPPORTED,
                             _("Copy (reflink/clone) between mounts is not supported"));
-      else if (errno == EINVAL)
+      else if (errsv == EINVAL)
        g_set_error_literal (error, G_IO_ERROR,
                             G_IO_ERROR_NOT_SUPPORTED,
                             _("Copy (reflink/clone) is not supported or invalid"));
index 5d488bc..667336a 100644 (file)
@@ -116,7 +116,10 @@ query_dir (const char *dirname)
   else
     {
       if (g_unlink (cachename) != 0 && errno != ENOENT)
-        g_printerr ("Unable to unlink %s: %s\n", cachename, g_strerror (errno));
+        {
+          int errsv = errno;
+          g_printerr ("Unable to unlink %s: %s\n", cachename, g_strerror (errsv));
+        }
     }
 
   g_free (cachename);
index dcf869c..1e40188 100644 (file)
@@ -73,9 +73,12 @@ cat (GFile *file)
           p = buffer;
           while (res > 0)
             {
+              int errsv;
+
               written = write (STDOUT_FILENO, p, res);
+              errsv = errno;
 
-              if (written == -1 && errno != EINTR)
+              if (written == -1 && errsv != EINTR)
                 {
                   print_file_error (file, _("Error writing to stdout"));
                   success = FALSE;
index 6755840..2532d3c 100644 (file)
@@ -1,8 +1,8 @@
 #include <winver.h>
 
 VS_VERSION_INFO VERSIONINFO
-  FILEVERSION 2,53,4,0
-  PRODUCTVERSION 2,53,4,0
+  FILEVERSION 2,53,5,0
+  PRODUCTVERSION 2,53,5,0
   FILEFLAGSMASK 0
   FILEFLAGS 0
   FILEOS VOS__WINDOWS32
@@ -15,12 +15,12 @@ VS_VERSION_INFO VERSIONINFO
       BEGIN
        VALUE "CompanyName", "The GLib developer community"
        VALUE "FileDescription", "Gio"
-       VALUE "FileVersion", "2.53.4.0"
+       VALUE "FileVersion", "2.53.5.0"
        VALUE "InternalName", "libgio-2.0-0"
        VALUE "LegalCopyright", "Copyright © 2006-2011 Red Hat, Inc. and others."
        VALUE "OriginalFilename", "libgio-2.0-0.dll"
        VALUE "ProductName", "GLib"
-       VALUE "ProductVersion", "2.53.4"
+       VALUE "ProductVersion", "2.53.5"
       END
     END
     BLOCK "VarFileInfo"
index c33b391..bedc81b 100644 (file)
@@ -952,6 +952,8 @@ typedef enum
  * @G_BUS_NAME_OWNER_FLAGS_ALLOW_REPLACEMENT: Allow another message bus connection to claim the name.
  * @G_BUS_NAME_OWNER_FLAGS_REPLACE: If another message bus connection owns the name and have
  * specified #G_BUS_NAME_OWNER_FLAGS_ALLOW_REPLACEMENT, then take the name from the other connection.
+ * @G_BUS_NAME_OWNER_FLAGS_DO_NOT_QUEUE: If another message bus connection owns the name, immediately
+ * return an error from g_bus_own_name() rather than entering the waiting queue for that name. (Since 2.54)
  *
  * Flags used in g_bus_own_name().
  *
@@ -961,8 +963,11 @@ typedef enum
 {
   G_BUS_NAME_OWNER_FLAGS_NONE = 0,                    /*< nick=none >*/
   G_BUS_NAME_OWNER_FLAGS_ALLOW_REPLACEMENT = (1<<0),  /*< nick=allow-replacement >*/
-  G_BUS_NAME_OWNER_FLAGS_REPLACE = (1<<1)            /*< nick=replace >*/
+  G_BUS_NAME_OWNER_FLAGS_REPLACE = (1<<1),           /*< nick=replace >*/
+  G_BUS_NAME_OWNER_FLAGS_DO_NOT_QUEUE = (1<<2)       /*< nick=do-not-queue >*/
 } GBusNameOwnerFlags;
+/* When adding new flags, their numeric values must currently match those
+ * used in the D-Bus Specification. */
 
 /**
  * GBusNameWatcherFlags:
index 0da3176..778c00c 100644 (file)
@@ -876,6 +876,7 @@ g_bus_name_owner_flags_get_type (void)
         { G_BUS_NAME_OWNER_FLAGS_NONE, "G_BUS_NAME_OWNER_FLAGS_NONE", "none" },
         { G_BUS_NAME_OWNER_FLAGS_ALLOW_REPLACEMENT, "G_BUS_NAME_OWNER_FLAGS_ALLOW_REPLACEMENT", "allow-replacement" },
         { G_BUS_NAME_OWNER_FLAGS_REPLACE, "G_BUS_NAME_OWNER_FLAGS_REPLACE", "replace" },
+        { G_BUS_NAME_OWNER_FLAGS_DO_NOT_QUEUE, "G_BUS_NAME_OWNER_FLAGS_DO_NOT_QUEUE", "do-not-queue" },
         { 0, NULL, NULL }
       };
       GType g_define_type_id =
index ccdd67d..900553e 100644 (file)
@@ -52,6 +52,18 @@ G_DEFINE_QUARK (g-io-error-quark, g_io_error)
  * handled (but note that future GLib releases may return a more
  * specific value instead).
  *
+ * As %errno is global and may be modified by intermediate function
+ * calls, you should save its value as soon as the call which sets it
+ * returns:
+ * |[
+ *   int saved_errno;
+ *
+ *   ret = read (blah);
+ *   saved_errno = errno;
+ *
+ *   g_io_error_from_errno (saved_errno);
+ * ]|
+ *
  * Returns: #GIOErrorEnum value for the given errno.h error number.
  **/
 GIOErrorEnum
index 32cac99..b8de090 100644 (file)
@@ -92,7 +92,7 @@ enum_state_add_value (EnumState    *state,
     {
       g_set_error (error, G_MARKUP_ERROR,
                    G_MARKUP_ERROR_INVALID_CONTENT,
-                   "nick must be a minimum of 2 characters");
+                   _("nick must be a minimum of 2 characters"));
       return;
     }
 
@@ -103,7 +103,7 @@ enum_state_add_value (EnumState    *state,
     {
       g_set_error (error, G_MARKUP_ERROR,
                    G_MARKUP_ERROR_INVALID_CONTENT,
-                   "invalid numeric value");
+                   _("Invalid numeric value"));
       return;
     }
 
@@ -111,7 +111,7 @@ enum_state_add_value (EnumState    *state,
     {
       g_set_error (error, G_MARKUP_ERROR,
                    G_MARKUP_ERROR_INVALID_CONTENT,
-                   "<value nick='%s'/> already specified", nick);
+                   _("<value nick='%s'/> already specified"), nick);
       return;
     }
 
@@ -119,7 +119,7 @@ enum_state_add_value (EnumState    *state,
     {
       g_set_error (error, G_MARKUP_ERROR,
                    G_MARKUP_ERROR_INVALID_CONTENT,
-                   "value='%s' already specified", valuestr);
+                   _("value='%s' already specified"), valuestr);
       return;
     }
 
@@ -133,7 +133,7 @@ enum_state_add_value (EnumState    *state,
     {
       g_set_error (error, G_MARKUP_ERROR,
                    G_MARKUP_ERROR_INVALID_CONTENT,
-                   "flags values must have at most 1 bit set");
+                   _("flags values must have at most 1 bit set"));
       return;
     }
 
@@ -158,7 +158,7 @@ enum_state_end (EnumState **state_ptr,
   if (state->strinfo->len == 0)
     g_set_error (error,
                  G_MARKUP_ERROR, G_MARKUP_ERROR_INVALID_CONTENT,
-                 "<%s> must contain at least one <value>",
+                 _("<%s> must contain at least one <value>"),
                  state->is_flags ? "flags" : "enum");
 }
 
@@ -312,8 +312,8 @@ key_state_check_range (KeyState  *state,
             {
               g_set_error (error, G_MARKUP_ERROR,
                            G_MARKUP_ERROR_INVALID_CONTENT,
-                           "<%s> is not contained in "
-                           "the specified range", tag);
+                           _("<%s> is not contained in "
+                           "the specified range"), tag);
             }
         }
 
@@ -324,20 +324,20 @@ key_state_check_range (KeyState  *state,
               if (state->is_enum)
                 g_set_error (error, G_MARKUP_ERROR,
                              G_MARKUP_ERROR_INVALID_CONTENT,
-                             "<%s> is not a valid member of "
-                             "the specified enumerated type", tag);
+                             _("<%s> is not a valid member of "
+                             "the specified enumerated type"), tag);
 
               else if (state->is_flags)
                 g_set_error (error, G_MARKUP_ERROR,
                              G_MARKUP_ERROR_INVALID_CONTENT,
-                             "<%s> contains string not in the "
-                             "specified flags type", tag);
+                             _("<%s> contains string not in the "
+                             "specified flags type"), tag);
 
               else
                 g_set_error (error, G_MARKUP_ERROR,
                              G_MARKUP_ERROR_INVALID_CONTENT,
-                             "<%s> contains string not in "
-                             "<choices>", tag);
+                             _("<%s> contains a string not in "
+                             "<choices>"), tag);
             }
         }
     }
@@ -370,7 +370,7 @@ key_state_set_range (KeyState     *state,
     {
       g_set_error_literal (error, G_MARKUP_ERROR,
                            G_MARKUP_ERROR_INVALID_CONTENT,
-                           "<range/> already specified for this key");
+                           _("<range/> already specified for this key"));
       return;
     }
 
@@ -388,7 +388,7 @@ key_state_set_range (KeyState     *state,
       gchar *type = g_variant_type_dup_string (state->type);
       g_set_error (error, G_MARKUP_ERROR,
                   G_MARKUP_ERROR_INVALID_CONTENT,
-                  "<range> not allowed for keys of type '%s'", type);
+                  _("<range> not allowed for keys of type “%s”"), type);
       g_free (type);
       return;
     }
@@ -405,7 +405,7 @@ key_state_set_range (KeyState     *state,
     {
       g_set_error (error, G_MARKUP_ERROR,
                    G_MARKUP_ERROR_INVALID_CONTENT,
-                   "<range> specified minimum is greater than maxmimum");
+                   _("<range> specified minimum is greater than maximum"));
       return;
     }
 
@@ -430,7 +430,7 @@ key_state_start_default (KeyState     *state,
         {
           g_set_error (error, G_MARKUP_ERROR,
                        G_MARKUP_ERROR_INVALID_CONTENT,
-                       "unsupported l10n category: %s", l10n);
+                       _("unsupported l10n category: %s"), l10n);
           return NULL;
         }
 
@@ -438,8 +438,8 @@ key_state_start_default (KeyState     *state,
         {
           g_set_error_literal (error, G_MARKUP_ERROR,
                                G_MARKUP_ERROR_INVALID_CONTENT,
-                               "l10n requested, but no "
-                               "gettext domain given");
+                               _("l10n requested, but no "
+                               "gettext domain given"));
           return NULL;
         }
 
@@ -450,8 +450,8 @@ key_state_start_default (KeyState     *state,
     {
       g_set_error_literal (error, G_MARKUP_ERROR,
                            G_MARKUP_ERROR_INVALID_CONTENT,
-                           "translation context given for "
-                           " value without l10n enabled");
+                           _("translation context given for "
+                           "value without l10n enabled"));
       return NULL;
     }
 
@@ -472,7 +472,7 @@ key_state_end_default (KeyState  *state,
   if (!state->default_value)
     {
       gchar *type = g_variant_type_dup_string (state->type);
-      g_prefix_error (error, "failed to parse <default> value of type '%s': ", type);
+      g_prefix_error (error, _("Failed to parse <default> value of type “%s”: "), type);
       g_free (type);
     }
 
@@ -489,8 +489,8 @@ key_state_start_choices (KeyState  *state,
     {
       g_set_error_literal (error, G_MARKUP_ERROR,
                            G_MARKUP_ERROR_INVALID_CONTENT,
-                           "<choices> cannot be specified for keys "
-                           "tagged as having an enumerated type");
+                           _("<choices> cannot be specified for keys "
+                           "tagged as having an enumerated type"));
       return;
     }
 
@@ -498,7 +498,7 @@ key_state_start_choices (KeyState  *state,
     {
       g_set_error_literal (error, G_MARKUP_ERROR,
                            G_MARKUP_ERROR_INVALID_CONTENT,
-                           "<choices> already specified for this key");
+                           _("<choices> already specified for this key"));
       return;
     }
 
@@ -510,7 +510,7 @@ key_state_start_choices (KeyState  *state,
       gchar *type_string = g_variant_type_dup_string (state->type);
       g_set_error (error, G_MARKUP_ERROR,
                    G_MARKUP_ERROR_INVALID_CONTENT,
-                   "<choices> not allowed for keys of type '%s'",
+                   _("<choices> not allowed for keys of type “%s”"),
                    type_string);
       g_free (type_string);
       return;
@@ -526,7 +526,7 @@ key_state_add_choice (KeyState     *state,
     {
       g_set_error (error, G_MARKUP_ERROR,
                    G_MARKUP_ERROR_INVALID_CONTENT,
-                   "<choice value='%s'/> already given", choice);
+                   _("<choice value='%s'/> already given"), choice);
       return;
     }
 
@@ -541,7 +541,7 @@ key_state_end_choices (KeyState  *state,
   if (!state->has_choices)
     {
       g_set_error (error, G_MARKUP_ERROR, G_MARKUP_ERROR_INVALID_CONTENT,
-                   "<choices> must contain at least one <choice>");
+                   _("<choices> must contain at least one <choice>"));
       return;
     }
 
@@ -555,12 +555,12 @@ key_state_start_aliases (KeyState  *state,
   if (state->has_aliases)
     g_set_error_literal (error, G_MARKUP_ERROR,
                          G_MARKUP_ERROR_INVALID_CONTENT,
-                         "<aliases> already specified for this key");
+                         _("<aliases> already specified for this key"));
   else if (!state->is_flags && !state->is_enum && !state->has_choices)
     g_set_error_literal (error, G_MARKUP_ERROR,
                          G_MARKUP_ERROR_INVALID_CONTENT,
-                         "<aliases> can only be specified for keys with "
-                         "enumerated or flags types or after <choices>");
+                         _("<aliases> can only be specified for keys with "
+                         "enumerated or flags types or after <choices>"));
 }
 
 static void
@@ -578,21 +578,21 @@ key_state_add_alias (KeyState     *state,
           if (state->is_enum)
             g_set_error (error, G_MARKUP_ERROR,
                          G_MARKUP_ERROR_INVALID_CONTENT,
-                         "<alias value='%s'/> given when '%s' is already "
-                         "a member of the enumerated type", alias, alias);
+                         _("<alias value='%s'/> given when “%s” is already "
+                         "a member of the enumerated type"), alias, alias);
 
           else
             g_set_error (error, G_MARKUP_ERROR,
                          G_MARKUP_ERROR_INVALID_CONTENT,
-                         "<alias value='%s'/> given when "
-                         "<choice value='%s'/> was already given",
+                         _("<alias value='%s'/> given when "
+                         "<choice value='%s'/> was already given"),
                          alias, alias);
         }
 
       else
         g_set_error (error, G_MARKUP_ERROR,
                      G_MARKUP_ERROR_INVALID_CONTENT,
-                     "<alias value='%s'/> already specified", alias);
+                     _("<alias value='%s'/> already specified"), alias);
 
       return;
     }
@@ -601,8 +601,10 @@ key_state_add_alias (KeyState     *state,
     {
       g_set_error (error, G_MARKUP_ERROR,
                    G_MARKUP_ERROR_INVALID_CONTENT,
-                   "alias target '%s' is not in %s", target,
-                   state->is_enum ? "enumerated type" : "<choices>");
+                   state->is_enum ?
+                     _("alias target “%s” is not in enumerated type") :
+                     _("alias target “%s” is not in <choices>"),
+                   target);
       return;
     }
 
@@ -616,7 +618,7 @@ key_state_end_aliases (KeyState  *state,
   if (!state->has_aliases)
     {
       g_set_error (error, G_MARKUP_ERROR, G_MARKUP_ERROR_INVALID_CONTENT,
-                   "<aliases> must contain at least one <alias>");
+                   _("<aliases> must contain at least one <alias>"));
       return;
     }
 }
@@ -781,7 +783,7 @@ is_valid_keyname (const gchar  *key,
   if (key[0] == '\0')
     {
       g_set_error_literal (error, G_MARKUP_ERROR, G_MARKUP_ERROR_INVALID_CONTENT,
-                           _("empty names are not permitted"));
+                           _("Empty names are not permitted"));
       return FALSE;
     }
 
@@ -791,7 +793,7 @@ is_valid_keyname (const gchar  *key,
   if (!g_ascii_islower (key[0]))
     {
       g_set_error (error, G_MARKUP_ERROR, G_MARKUP_ERROR_INVALID_CONTENT,
-                   _("invalid name '%s': names must begin "
+                   _("Invalid name “%s”: names must begin "
                      "with a lowercase letter"), key);
       return FALSE;
     }
@@ -803,17 +805,17 @@ is_valid_keyname (const gchar  *key,
           !g_ascii_isdigit (key[i]))
         {
           g_set_error (error, G_MARKUP_ERROR, G_MARKUP_ERROR_INVALID_CONTENT,
-                       _("invalid name '%s': invalid character '%c'; "
-                         "only lowercase letters, numbers and hyphen ('-') "
-                         "are permitted."), key, key[i]);
+                       _("Invalid name “%s”: invalid character “%c”; "
+                         "only lowercase letters, numbers and hyphen (“-”) "
+                         "are permitted"), key, key[i]);
           return FALSE;
         }
 
       if (key[i] == '-' && key[i + 1] == '-')
         {
           g_set_error (error, G_MARKUP_ERROR, G_MARKUP_ERROR_INVALID_CONTENT,
-                       _("invalid name '%s': two successive hyphens ('--') "
-                         "are not permitted."), key);
+                       _("Invalid name “%s”: two successive hyphens (“--”) "
+                         "are not permitted"), key);
           return FALSE;
         }
     }
@@ -821,15 +823,15 @@ is_valid_keyname (const gchar  *key,
   if (key[i - 1] == '-')
     {
       g_set_error (error, G_MARKUP_ERROR, G_MARKUP_ERROR_INVALID_CONTENT,
-                   _("invalid name '%s': the last character may not be a "
-                     "hyphen ('-')."), key);
+                   _("Invalid name “%s”: the last character may not be a "
+                     "hyphen (“-”)"), key);
       return FALSE;
     }
 
   if (i > 1024)
     {
       g_set_error (error, G_MARKUP_ERROR, G_MARKUP_ERROR_INVALID_CONTENT,
-                   _("invalid name '%s': maximum length is 1024"), key);
+                   _("Invalid name “%s”: maximum length is 1024"), key);
       return FALSE;
     }
 
@@ -925,7 +927,7 @@ schema_state_add_key (SchemaState  *state,
     {
       g_set_error_literal (error, G_MARKUP_ERROR,
                            G_MARKUP_ERROR_INVALID_CONTENT,
-                           _("cannot add keys to a 'list-of' schema"));
+                           _("Cannot add keys to a “list-of” schema"));
       return NULL;
     }
 
@@ -965,7 +967,7 @@ schema_state_add_key (SchemaState  *state,
     {
       g_set_error (error, G_MARKUP_ERROR,
                    G_MARKUP_ERROR_MISSING_ATTRIBUTE,
-                   _("exactly one of 'type', 'enum' or 'flags' must "
+                   _("Exactly one of “type”, “enum” or “flags” must "
                      "be specified as an attribute to <key>"));
       return NULL;
     }
@@ -999,7 +1001,7 @@ schema_state_add_key (SchemaState  *state,
         {
           g_set_error (error, G_MARKUP_ERROR,
                        G_MARKUP_ERROR_INVALID_CONTENT,
-                       _("invalid GVariant type string '%s'"), type_string);
+                       _("Invalid GVariant type string “%s”"), type_string);
           return NULL;
         }
 
@@ -1029,7 +1031,7 @@ schema_state_add_override (SchemaState  *state,
     {
       g_set_error_literal (error, G_MARKUP_ERROR,
                            G_MARKUP_ERROR_INVALID_CONTENT,
-                           _("<override> given but schema isn't "
+                           _("<override> given but schema isnt "
                              "extending anything"));
       return;
     }
@@ -1042,7 +1044,7 @@ schema_state_add_override (SchemaState  *state,
     {
       g_set_error (error, G_MARKUP_ERROR,
                    G_MARKUP_ERROR_INVALID_CONTENT,
-                   _("no <key name='%s'> to override"), key);
+                   _("No <key name='%s'> to override"), key);
       return;
     }
 
@@ -1136,7 +1138,7 @@ parse_state_start_schema (ParseState  *state,
           g_set_error (error, G_MARKUP_ERROR,
                        G_MARKUP_ERROR_INVALID_CONTENT,
                        _("<schema id='%s'> extends not yet existing "
-                         "schema '%s'"), id, extends_name);
+                         "schema “%s”"), id, extends_name);
           return;
         }
     }
@@ -1152,14 +1154,14 @@ parse_state_start_schema (ParseState  *state,
           g_set_error (error, G_MARKUP_ERROR,
                        G_MARKUP_ERROR_INVALID_CONTENT,
                        _("<schema id='%s'> is list of not yet existing "
-                         "schema '%s'"), id, list_of);
+                         "schema “%s”"), id, list_of);
           return;
         }
 
       if (tmp->path)
         {
           g_set_error (error, G_MARKUP_ERROR, G_MARKUP_ERROR_INVALID_CONTENT,
-                       _("Can not be a list of a schema with a path"));
+                       _("Cannot be a list of a schema with a path"));
           return;
         }
     }
@@ -1169,7 +1171,7 @@ parse_state_start_schema (ParseState  *state,
       if (extends->path)
         {
           g_set_error (error, G_MARKUP_ERROR, G_MARKUP_ERROR_INVALID_CONTENT,
-                       _("Can not extend a schema with a path"));
+                       _("Cannot extend a schema with a path"));
           return;
         }
 
@@ -1190,8 +1192,8 @@ parse_state_start_schema (ParseState  *state,
               g_set_error (error, G_MARKUP_ERROR,
                            G_MARKUP_ERROR_INVALID_CONTENT,
                            _("<schema id='%s' list-of='%s'> extends <schema "
-                             "id='%s' list-of='%s'> but '%s' does not "
-                             "extend '%s'"), id, list_of, extends_name,
+                             "id='%s' list-of='%s'> but “%s” does not "
+                             "extend “%s”"), id, list_of, extends_name,
                            extends->list_of, list_of, extends->list_of);
               return;
             }
@@ -1206,22 +1208,29 @@ parse_state_start_schema (ParseState  *state,
   if (path && !(g_str_has_prefix (path, "/") && g_str_has_suffix (path, "/")))
     {
       g_set_error (error, G_MARKUP_ERROR, G_MARKUP_ERROR_INVALID_CONTENT,
-                   _("a path, if given, must begin and end with a slash"));
+                   _("A path, if given, must begin and end with a slash"));
       return;
     }
 
   if (path && list_of && !g_str_has_suffix (path, ":/"))
     {
       g_set_error (error, G_MARKUP_ERROR, G_MARKUP_ERROR_INVALID_CONTENT,
-                   _("the path of a list must end with ':/'"));
+                   _("The path of a list must end with “:/”"));
       return;
     }
 
   if (path && (g_str_has_prefix (path, "/apps/") ||
                g_str_has_prefix (path, "/desktop/") ||
                g_str_has_prefix (path, "/system/")))
-    g_printerr ("warning: Schema '%s' has path '%s'.  Paths starting with "
-                "'/apps/', '/desktop/' or '/system/' are deprecated.\n", id, path);
+    {
+      gchar *message = NULL;
+      message = g_strdup_printf (_("Warning: Schema “%s” has path “%s”.  "
+                                   "Paths starting with "
+                                   "“/apps/”, “/desktop/” or “/system/” are deprecated."),
+                                 id, path);
+      g_printerr ("%s\n", message);
+      g_free (message);
+    }
 
   state->schema_state = schema_state_new (path, gettext_domain,
                                           extends, extends_name, list_of);
@@ -1511,7 +1520,7 @@ key_state_end (KeyState **state_ptr,
     {
       g_set_error_literal (error,
                            G_MARKUP_ERROR, G_MARKUP_ERROR_INVALID_CONTENT,
-                           "element <default> is required in <key>");
+                           _("Element <default> is required in <key>"));
       return;
     }
 }
@@ -1601,7 +1610,7 @@ text (GMarkupParseContext  *context,
         if (!g_ascii_isspace (text[i]))
           {
             g_set_error (error, G_MARKUP_ERROR, G_MARKUP_ERROR_INVALID_CONTENT,
-                         _("text may not appear inside <%s>"),
+                         _("Text may not appear inside <%s>"),
                          g_markup_parse_context_get_element (context));
             break;
           }
@@ -1667,8 +1676,13 @@ output_key (gpointer key,
 
   if (state->child_schema &&
       !g_hash_table_lookup (data->schema_table, state->child_schema))
-    g_printerr ("warning: undefined reference to <schema id='%s'/>\n",
-                state->child_schema);
+    {
+      gchar *message = NULL;
+      message = g_strdup_printf (_("Warning: undefined reference to <schema id='%s'/>"),
+                                 state->child_schema);
+      g_printerr ("%s\n", message);
+      g_free (message);
+    }
 }
 
 static void
index 002c151..d417c49 100644 (file)
@@ -1918,10 +1918,11 @@ g_local_file_trash (GFile         *file,
   char *dirname, *globaldir;
   GVfsClass *class;
   GVfs *vfs;
+  int errsv;
 
   if (g_lstat (local->filename, &file_stat) != 0)
     {
-      int errsv = errno;
+      errsv = errno;
 
       g_set_io_error (error,
                      _("Error trashing file %s: %s"),
@@ -1942,7 +1943,7 @@ g_local_file_trash (GFile         *file,
       if (g_mkdir_with_parents (trashdir, 0700) < 0)
        {
           char *display_name;
-          int errsv = errno;
+          errsv = errno;
 
           display_name = g_filename_display_name (trashdir);
           g_set_error (error, G_IO_ERROR,
@@ -2085,14 +2086,15 @@ g_local_file_trash (GFile         *file,
     g_free (infoname);
 
     fd = g_open (infofile, O_CREAT | O_EXCL, 0666);
-  } while (fd == -1 && errno == EEXIST);
+    errsv = errno;
+  } while (fd == -1 && errsv == EEXIST);
 
   g_free (basename);
   g_free (infodir);
 
   if (fd == -1)
     {
-      int errsv = errno;
+      errsv = errno;
 
       g_free (filesdir);
       g_free (topdir);
@@ -2145,7 +2147,7 @@ g_local_file_trash (GFile         *file,
 
   if (g_rename (local->filename, trashfile) == -1)
     {
-      int errsv = errno;
+      errsv = errno;
 
       g_unlink (infofile);
 
@@ -2665,10 +2667,16 @@ g_local_file_measure_size_of_file (gint           parent_fd,
 
 #if defined (AT_FDCWD)
   if (fstatat (parent_fd, name->data, &buf, AT_SYMLINK_NOFOLLOW) != 0)
-    return g_local_file_measure_size_error (state->flags, errno, name, error);
+    {
+      int errsv = errno;
+      return g_local_file_measure_size_error (state->flags, errsv, name, error);
+    }
 #elif defined (HAVE_LSTAT) || !defined (G_OS_WIN32)
   if (g_lstat (name->data, &buf) != 0)
-    return g_local_file_measure_size_error (state->flags, errno, name, error);
+    {
+      int errsv = errno;
+      return g_local_file_measure_size_error (state->flags, errsv, name, error);
+    }
 #else
   {
     const char *filename = (const gchar *) name->data;
@@ -2759,6 +2767,7 @@ g_local_file_measure_size_of_file (gint           parent_fd,
   if (S_ISDIR (buf.st_mode))
     {
       int dir_fd = -1;
+      int errsv;
 
       if (g_cancellable_set_error_if_cancelled (state->cancellable, error))
         return FALSE;
@@ -2769,8 +2778,9 @@ g_local_file_measure_size_of_file (gint           parent_fd,
 #else
       dir_fd = openat (parent_fd, name->data, O_RDONLY);
 #endif
+      errsv = errno;
       if (dir_fd < 0)
-        return g_local_file_measure_size_error (state->flags, errno, name, error);
+        return g_local_file_measure_size_error (state->flags, errsv, name, error);
 #endif
 
       if (!g_local_file_measure_size_of_contents (dir_fd, name, state, error))
index eb364ac..1c97eef 100644 (file)
@@ -401,13 +401,15 @@ get_one_xattr (const char *path,
   char value[64];
   char *value_p;
   ssize_t len;
+  int errsv;
 
   len = g_getxattr (path, xattr, value, sizeof (value)-1, follow_symlinks);
+  errsv = errno;
 
   value_p = NULL;
   if (len >= 0)
     value_p = value;
-  else if (len == -1 && errno == ERANGE)
+  else if (len == -1 && errsv == ERANGE)
     {
       len = g_getxattr (path, xattr, NULL, 0, follow_symlinks);
 
@@ -460,6 +462,8 @@ get_xattrs (const char            *path,
 
   if (all)
     {
+      int errsv;
+
       list_res_size = g_listxattr (path, NULL, 0, follow_symlinks);
 
       if (list_res_size == -1 ||
@@ -472,8 +476,9 @@ get_xattrs (const char            *path,
     retry:
       
       list_res_size = g_listxattr (path, list, list_size, follow_symlinks);
+      errsv = errno;
       
-      if (list_res_size == -1 && errno == ERANGE)
+      if (list_res_size == -1 && errsv == ERANGE)
        {
          list_size = list_size * 2;
          list = g_realloc (list, list_size);
@@ -558,13 +563,15 @@ get_one_xattr_from_fd (int         fd,
   char value[64];
   char *value_p;
   ssize_t len;
+  int errsv;
 
   len = g_fgetxattr (fd, xattr, value, sizeof (value) - 1);
+  errsv = errno;
 
   value_p = NULL;
   if (len >= 0)
     value_p = value;
-  else if (len == -1 && errno == ERANGE)
+  else if (len == -1 && errsv == ERANGE)
     {
       len = g_fgetxattr (fd, xattr, NULL, 0);
 
@@ -615,6 +622,8 @@ get_xattrs_from_fd (int                    fd,
 
   if (all)
     {
+      int errsv;
+
       list_res_size = g_flistxattr (fd, NULL, 0);
 
       if (list_res_size == -1 ||
@@ -627,8 +636,9 @@ get_xattrs_from_fd (int                    fd,
     retry:
       
       list_res_size = g_flistxattr (fd, list, list_size);
+      errsv = errno;
       
-      if (list_res_size == -1 && errno == ERANGE)
+      if (list_res_size == -1 && errsv == ERANGE)
        {
          list_size = list_size * 2;
          list = g_realloc (list, list_size);
@@ -1264,7 +1274,7 @@ get_content_type (const char          *basename,
        {
          guchar sniff_buffer[4096];
          gsize sniff_length;
-         int fd;
+         int fd, errsv;
 
          sniff_length = _g_unix_content_type_get_sniff_len ();
          if (sniff_length > 4096)
@@ -1272,7 +1282,8 @@ get_content_type (const char          *basename,
 
 #ifdef O_NOATIME         
           fd = g_open (path, O_RDONLY | O_NOATIME, 0);
-          if (fd < 0 && errno == EPERM)
+          errsv = errno;
+          if (fd < 0 && errsv == EPERM)
 #endif
            fd = g_open (path, O_RDONLY, 0);
 
index 4b3733c..7600571 100644 (file)
@@ -748,6 +748,7 @@ handle_overwrite_open (const char    *filename,
   int open_flags;
   int res;
   int mode;
+  int errsv;
 
   mode = mode_from_flags_or_info (flags, reference_info);
 
@@ -763,12 +764,13 @@ handle_overwrite_open (const char    *filename,
 #ifdef O_NOFOLLOW
   is_symlink = FALSE;
   fd = g_open (filename, open_flags | O_NOFOLLOW, mode);
+  errsv = errno;
 #if defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)
-  if (fd == -1 && errno == EMLINK)
+  if (fd == -1 && errsv == EMLINK)
 #elif defined(__NetBSD__)
-  if (fd == -1 && errno == EFTYPE)
+  if (fd == -1 && errsv == EFTYPE)
 #else
-  if (fd == -1 && errno == ELOOP)
+  if (fd == -1 && errsv == ELOOP)
 #endif
     {
       /* Could be a symlink, or it could be a regular ELOOP error,
@@ -778,13 +780,13 @@ handle_overwrite_open (const char    *filename,
     }
 #else
   fd = g_open (filename, open_flags, mode);
+  errsv = errno;
   /* This is racy, but we do it as soon as possible to minimize the race */
   is_symlink = g_file_test (filename, G_FILE_TEST_IS_SYMLINK);
 #endif
-    
+
   if (fd == -1)
     {
-      int errsv = errno;
       char *display_name = g_filename_display_name (filename);
       g_set_error (error, G_IO_ERROR,
                   g_io_error_from_errno (errsv),
@@ -799,10 +801,10 @@ handle_overwrite_open (const char    *filename,
 #else
   res = fstat (fd, &original_stat);
 #endif
+  errsv = errno;
 
-  if (res != 0) 
+  if (res != 0)
     {
-      int errsv = errno;
       char *display_name = g_filename_display_name (filename);
       g_set_error (error, G_IO_ERROR,
                   g_io_error_from_errno (errsv),
index d3f1dce..942440b 100644 (file)
@@ -94,7 +94,7 @@ g_network_monitor_netlink_initable_init (GInitable     *initable,
       int errsv = errno;
       g_set_error (error, G_IO_ERROR, g_io_error_from_errno (errsv),
                    _("Could not create network monitor: %s"),
-                   g_strerror (errno));
+                   g_strerror (errsv));
       return FALSE;
     }
 
@@ -106,7 +106,7 @@ g_network_monitor_netlink_initable_init (GInitable     *initable,
       int errsv = errno;
       g_set_error (error, G_IO_ERROR, g_io_error_from_errno (errsv),
                    _("Could not create network monitor: %s"),
-                   g_strerror (errno));
+                   g_strerror (errsv));
       (void) g_close (sockfd, NULL);
       return FALSE;
     }
@@ -125,7 +125,7 @@ g_network_monitor_netlink_initable_init (GInitable     *initable,
       int errsv = errno;
       g_set_error (error, G_IO_ERROR, g_io_error_from_errno (errsv),
                    _("Could not create network monitor: %s"),
-                   g_strerror (errno));
+                   g_strerror (errsv));
       return FALSE;
     }
 
index b06da84..51a72df 100644 (file)
@@ -103,14 +103,15 @@ g_openuri_portal_open_uri (const char  *uri,
     {
       char *path = NULL;
       GUnixFDList *fd_list = NULL;
-      int fd, fd_id;
+      int fd, fd_id, errsv;
 
       path = g_file_get_path (file);
 
       fd = g_open (path, O_PATH | O_CLOEXEC);
+      errsv = errno;
       if (fd == -1)
         {
-          g_set_error (error, G_IO_ERROR, g_io_error_from_errno (errno),
+          g_set_error (error, G_IO_ERROR, g_io_error_from_errno (errsv),
                        "Failed to open '%s'", path);
           return FALSE;
         }
@@ -250,10 +251,7 @@ g_openuri_portal_open_uri_async (const char          *uri,
   GDBusConnection *connection;
   GTask *task;
   GFile *file;
-  GVariantBuilder opt_builder;
-  char *token;
-  char *sender;
-  char *handle;
+  GVariant *opts = NULL;
   int i;
   guint signal_id;
 
@@ -269,6 +267,11 @@ g_openuri_portal_open_uri_async (const char          *uri,
 
   if (callback)
     {
+      GVariantBuilder opt_builder;
+      char *token;
+      char *sender;
+      char *handle;
+
       task = g_task_new (NULL, cancellable, callback, user_data);
 
       token = g_strdup_printf ("gio%d", g_random_int_range (0, G_MAXINT));
@@ -292,30 +295,33 @@ g_openuri_portal_open_uri_async (const char          *uri,
                                                       task,
                                                       NULL);
       g_object_set_data (G_OBJECT (task), "signal-id", GINT_TO_POINTER (signal_id));
+
+      g_variant_builder_init (&opt_builder, G_VARIANT_TYPE_VARDICT);
+      g_variant_builder_add (&opt_builder, "{sv}", "handle_token", g_variant_new_string (token));
+      g_free (token);
+
+      opts = g_variant_builder_end (&opt_builder);
     }
   else
     task = NULL;
 
-  g_variant_builder_init (&opt_builder, G_VARIANT_TYPE_VARDICT);
-  g_variant_builder_add (&opt_builder, "{sv}", "handle_token", g_variant_new_string (token));
-  g_free (token);
-
   file = g_file_new_for_uri (uri);
   if (g_file_is_native (file))
     {
       char *path = NULL;
       GUnixFDList *fd_list = NULL;
-      int fd, fd_id;
+      int fd, fd_id, errsv;
 
       if (task)
         g_object_set_data (G_OBJECT (task), "open-file", GINT_TO_POINTER (TRUE));
 
       path = g_file_get_path (file);
       fd = g_open (path, O_PATH | O_CLOEXEC);
+      errsv = errno;
       if (fd == -1)
         {
           g_task_report_new_error (NULL, callback, user_data, NULL,
-                                   G_IO_ERROR, g_io_error_from_errno (errno),
+                                   G_IO_ERROR, g_io_error_from_errno (errsv),
                                    "OpenURI portal is not available");
           return;
         }
@@ -330,7 +336,7 @@ g_openuri_portal_open_uri_async (const char          *uri,
       gxdp_open_uri_call_open_file (openuri,
                                     parent_window ? parent_window : "",
                                     g_variant_new ("h", fd_id),
-                                    g_variant_builder_end (&opt_builder),
+                                    opts,
                                     fd_list,
                                     cancellable,
                                     task ? open_call_done : NULL,
@@ -343,7 +349,7 @@ g_openuri_portal_open_uri_async (const char          *uri,
       gxdp_open_uri_call_open_uri (openuri,
                                    parent_window ? parent_window : "",
                                    uri,
-                                   g_variant_builder_end (&opt_builder),
+                                   opts,
                                    cancellable,
                                    task ? open_call_done : NULL,
                                    task);
index 248074a..eea502c 100644 (file)
@@ -549,15 +549,16 @@ g_socket (gint     domain,
           gint     protocol,
           GError **error)
 {
-  int fd;
+  int fd, errsv;
 
 #ifdef SOCK_CLOEXEC
   fd = socket (domain, type | SOCK_CLOEXEC, protocol);
+  errsv = errno;
   if (fd != -1)
     return fd;
 
   /* It's possible that libc has SOCK_CLOEXEC but the kernel does not */
-  if (fd < 0 && (errno == EINVAL || errno == EPROTOTYPE))
+  if (fd < 0 && (errsv == EINVAL || errsv == EPROTOTYPE))
 #endif
     fd = socket (domain, type, protocol);
 
@@ -3984,8 +3985,10 @@ g_socket_condition_timed_wait (GSocket       *socket,
 
     while (TRUE)
       {
+       int errsv;
        result = g_poll (poll_fd, num, timeout);
-       if (result != -1 || errno != EINTR)
+       errsv = errno;
+       if (result != -1 || errsv != EINTR)
          break;
 
        if (timeout != -1)
index e3c43b0..350eb1e 100644 (file)
@@ -199,36 +199,49 @@ unset_cloexec (int fd)
 
   if (flags != -1)
     {
+      int errsv;
       flags &= (~FD_CLOEXEC);
       do
-        result = fcntl (fd, F_SETFD, flags);
-      while (result == -1 && errno == EINTR);
+        {
+          result = fcntl (fd, F_SETFD, flags);
+          errsv = errno;
+        }
+      while (result == -1 && errsv == EINTR);
     }
 }
 
 static int
 dupfd_cloexec (int parent_fd)
 {
-  int fd;
+  int fd, errsv;
 #ifdef F_DUPFD_CLOEXEC
   do
-    fd = fcntl (parent_fd, F_DUPFD_CLOEXEC, 3);
-  while (fd == -1 && errno == EINTR);
+    {
+      fd = fcntl (parent_fd, F_DUPFD_CLOEXEC, 3);
+      errsv = errno;
+    }
+  while (fd == -1 && errsv == EINTR);
 #else
   /* OS X Snow Lion and earlier don't have F_DUPFD_CLOEXEC:
    * https://bugzilla.gnome.org/show_bug.cgi?id=710962
    */
   int result, flags;
   do
-    fd = fcntl (parent_fd, F_DUPFD, 3);
-  while (fd == -1 && errno == EINTR);
+    {
+      fd = fcntl (parent_fd, F_DUPFD, 3);
+      errsv = errno;
+    }
+  while (fd == -1 && errsv == EINTR);
   flags = fcntl (fd, F_GETFD, 0);
   if (flags != -1)
     {
       flags |= FD_CLOEXEC;
       do
-        result = fcntl (fd, F_SETFD, flags);
-      while (result == -1 && errno == EINTR);
+        {
+          result = fcntl (fd, F_SETFD, flags);
+          errsv = errno;
+        }
+      while (result == -1 && errsv == EINTR);
     }
 #endif
   return fd;
@@ -245,6 +258,7 @@ child_setup (gpointer user_data)
   ChildData *child_data = user_data;
   gint i;
   gint result;
+  int errsv;
 
   /* We're on the child side now.  "Rename" the file descriptors in
    * child_data.fds[] to stdin/stdout/stderr.
@@ -257,8 +271,11 @@ child_setup (gpointer user_data)
     if (child_data->fds[i] != -1 && child_data->fds[i] != i)
       {
         do
-          result = dup2 (child_data->fds[i], i);
-        while (result == -1 && errno == EINTR);
+          {
+            result = dup2 (child_data->fds[i], i);
+            errsv = errno;
+          }
+        while (result == -1 && errsv == EINTR);
       }
 
   /* Basic fd assignments we can just unset FD_CLOEXEC */
@@ -301,8 +318,11 @@ child_setup (gpointer user_data)
           else
             {
               do
-                result = dup2 (parent_fd, child_fd);
-              while (result == -1 && errno == EINTR);
+                {
+                  result = dup2 (parent_fd, child_fd);
+                  errsv = errno;
+                }
+              while (result == -1 && errsv == EINTR);
               (void) close (parent_fd);
             }
         }
index f10d33c..6eaf060 100644 (file)
@@ -237,6 +237,7 @@ watcher_init (void)
 {
   static gsize started = 0;
   static GIOChannel *channel = NULL;
+  int errsv;
 
   if (g_once_init_enter (&started))
     {
@@ -245,14 +246,16 @@ watcher_init (void)
       /* fork a child to clean up when we are killed */
       if (pipe (pipe_fds) != 0)
         {
-          g_warning ("pipe() failed: %s", g_strerror (errno));
+          errsv = errno;
+          g_warning ("pipe() failed: %s", g_strerror (errsv));
           g_assert_not_reached ();
         }
 
       switch (fork ())
         {
         case -1:
-          g_warning ("fork() failed: %s", g_strerror (errno));
+          errsv = errno;
+          g_warning ("fork() failed: %s", g_strerror (errsv));
           g_assert_not_reached ();
           break;
 
index 5f969fd..c85ac36 100644 (file)
@@ -497,11 +497,12 @@ g_unix_connection_receive_credentials (GUnixConnection      *connection,
                              &opt_val,
                              NULL))
       {
+        int errsv = errno;
         g_set_error (error,
                      G_IO_ERROR,
-                     g_io_error_from_errno (errno),
+                     g_io_error_from_errno (errsv),
                      _("Error checking if SO_PASSCRED is enabled for socket: %s"),
-                     g_strerror (errno));
+                     g_strerror (errsv));
         goto out;
       }
     if (opt_val == 0)
@@ -512,11 +513,12 @@ g_unix_connection_receive_credentials (GUnixConnection      *connection,
                                  TRUE,
                                  NULL))
           {
+            int errsv = errno;
             g_set_error (error,
                          G_IO_ERROR,
-                         g_io_error_from_errno (errno),
+                         g_io_error_from_errno (errsv),
                          _("Error enabling SO_PASSCRED: %s"),
-                         g_strerror (errno));
+                         g_strerror (errsv));
             goto out;
           }
         turn_off_so_passcreds = TRUE;
@@ -605,11 +607,12 @@ g_unix_connection_receive_credentials (GUnixConnection      *connection,
                                FALSE,
                                NULL))
         {
+          int errsv = errno;
           g_set_error (error,
                        G_IO_ERROR,
-                       g_io_error_from_errno (errno),
+                       g_io_error_from_errno (errsv),
                        _("Error while disabling SO_PASSCRED: %s"),
-                       g_strerror (errno));
+                       g_strerror (errsv));
           goto out;
         }
     }
index 5816703..b80283b 100644 (file)
@@ -110,14 +110,19 @@ g_unix_fd_message_deserialize (int      level,
    */
   for (i = 0; i < n; i++)
     {
+      int errsv;
+
       do
-        s = fcntl (fds[i], F_SETFD, FD_CLOEXEC);
-      while (s < 0 && errno == EINTR);
+        {
+          s = fcntl (fds[i], F_SETFD, FD_CLOEXEC);
+          errsv = errno;
+        }
+      while (s < 0 && errsv == EINTR);
 
       if (s < 0)
         {
           g_warning ("Error setting close-on-exec flag on incoming fd: %s",
-                     g_strerror (errno));
+                     g_strerror (errsv));
           return NULL;
         }
     }
index defa052..c63e4e5 100644 (file)
@@ -355,15 +355,18 @@ g_unix_input_stream_read (GInputStream  *stream,
 
   while (1)
     {
+      int errsv;
+
       poll_fds[0].revents = poll_fds[1].revents = 0;
       do
-       poll_ret = g_poll (poll_fds, nfds, -1);
-      while (poll_ret == -1 && errno == EINTR);
+        {
+          poll_ret = g_poll (poll_fds, nfds, -1);
+          errsv = errno;
+        }
+      while (poll_ret == -1 && errsv == EINTR);
 
       if (poll_ret == -1)
        {
-          int errsv = errno;
-
          g_set_error (error, G_IO_ERROR,
                       g_io_error_from_errno (errsv),
                       _("Error reading from file descriptor: %s"),
index 2ccd9f7..ce6a2fc 100644 (file)
@@ -437,7 +437,7 @@ _g_get_unix_mounts (void)
 
 #else
 
-static char *
+static const char *
 get_mtab_read_file (void)
 {
 #ifdef _PATH_MOUNTED
@@ -464,7 +464,7 @@ _g_get_unix_mounts (void)
 #endif
   struct mntent *mntent;
   FILE *file;
-  char *read_file;
+  const char *read_file;
   GUnixMountEntry *mount_entry;
   GHashTable *mounts_hash;
   GList *return_list;
@@ -538,10 +538,10 @@ _g_get_unix_mounts (void)
 
 #endif /* HAVE_LIBMOUNT */
 
-static char *
+static const char *
 get_mtab_monitor_file (void)
 {
-  static char *mountinfo_path = NULL;
+  static const char *mountinfo_path = NULL;
 #ifdef HAVE_LIBMOUNT
   struct stat buf;
 #endif
@@ -550,7 +550,15 @@ get_mtab_monitor_file (void)
     return mountinfo_path;
 
 #ifdef HAVE_LIBMOUNT
-  /* If using libmount we'll have the logic in place to read mountinfo */
+  /* The mtab file is still used by some distros, so it has to be monitored in
+   * order to avoid races between g_unix_mounts_get and "mounts-changed" signal:
+   * https://bugzilla.gnome.org/show_bug.cgi?id=782814
+   */
+  if (mnt_has_regular_mtab (&mountinfo_path, NULL))
+    {
+      return mountinfo_path;
+    }
+
   if (stat (PROC_MOUNTINFO_PATH, &buf) == 0)
     {
       mountinfo_path = PROC_MOUNTINFO_PATH;
@@ -576,7 +584,7 @@ get_mtab_monitor_file (void)
 
 G_LOCK_DEFINE_STATIC(getmntent);
 
-static char *
+static const char *
 get_mtab_read_file (void)
 {
 #ifdef _PATH_MOUNTED
@@ -586,7 +594,7 @@ get_mtab_read_file (void)
 #endif
 }
 
-static char *
+static const char *
 get_mtab_monitor_file (void)
 {
   return get_mtab_read_file ();
@@ -597,7 +605,7 @@ _g_get_unix_mounts (void)
 {
   struct mnttab mntent;
   FILE *file;
-  char *read_file;
+  const char *read_file;
   GUnixMountEntry *mount_entry;
   GList *return_list;
   
@@ -637,7 +645,7 @@ _g_get_unix_mounts (void)
 /* mntctl.h (AIX) {{{2 */
 #elif defined(HAVE_SYS_MNTCTL_H) && defined(HAVE_SYS_VMOUNT_H) && defined(HAVE_SYS_VFS_H)
 
-static char *
+static const char *
 get_mtab_monitor_file (void)
 {
   return NULL;
@@ -705,7 +713,7 @@ _g_get_unix_mounts (void)
 /* sys/mount.h {{{2 */
 #elif (defined(HAVE_GETVFSSTAT) || defined(HAVE_GETFSSTAT)) && defined(HAVE_FSTAB_H) && defined(HAVE_SYS_MOUNT_H)
 
-static char *
+static const char *
 get_mtab_monitor_file (void)
 {
   return NULL;
@@ -776,7 +784,7 @@ _g_get_unix_mounts (void)
 /* Interix {{{2 */
 #elif defined(__INTERIX)
 
-static char *
+static const char *
 get_mtab_monitor_file (void)
 {
   return NULL;
index 0a04f11..3cf96cf 100644 (file)
@@ -341,15 +341,18 @@ g_unix_output_stream_write (GOutputStream  *stream,
 
   while (1)
     {
+      int errsv;
+
       poll_fds[0].revents = poll_fds[1].revents = 0;
       do
-       poll_ret = g_poll (poll_fds, nfds, -1);
-      while (poll_ret == -1 && errno == EINTR);
+        {
+          poll_ret = g_poll (poll_fds, nfds, -1);
+          errsv = errno;
+        }
+      while (poll_ret == -1 && errsv == EINTR);
 
       if (poll_ret == -1)
        {
-          int errsv = errno;
-
          g_set_error (error, G_IO_ERROR,
                       g_io_error_from_errno (errsv),
                       _("Error writing to file descriptor: %s"),
@@ -364,10 +367,9 @@ g_unix_output_stream_write (GOutputStream  *stream,
        continue;
 
       res = write (unix_stream->priv->fd, buffer, count);
+      errsv = errno;
       if (res == -1)
        {
-          int errsv = errno;
-
          if (errsv == EINTR || errsv == EAGAIN)
            continue;
 
index 6758480..9a2e500 100644 (file)
@@ -140,19 +140,21 @@ ik_source_read_some_events (InotifyKernelSource *iks,
                             gsize                buffer_len)
 {
   gssize result;
+  int errsv;
 
 again:
   result = read (iks->fd, buffer, buffer_len);
+  errsv = errno;
 
   if (result < 0)
     {
-      if (errno == EINTR)
+      if (errsv == EINTR)
         goto again;
 
-      if (errno == EAGAIN)
+      if (errsv == EAGAIN)
         return 0;
 
-      g_error ("inotify read(): %s", g_strerror (errno));
+      g_error ("inotify read(): %s", g_strerror (errsv));
     }
   else if (result == 0)
     g_error ("inotify unexpectedly hit eof");
@@ -178,11 +180,13 @@ ik_source_read_all_the_events (InotifyKernelSource *iks,
       gchar *new_buffer;
       guint n_readable;
       gint result;
+      int errsv;
 
       /* figure out how many more bytes there are to read */
       result = ioctl (iks->fd, FIONREAD, &n_readable);
+      errsv = errno;
       if (result != 0)
-        g_error ("inotify ioctl(FIONREAD): %s", g_strerror (errno));
+        g_error ("inotify ioctl(FIONREAD): %s", g_strerror (errsv));
 
       if (n_readable != 0)
         {
diff --git a/gio/inotify/meson.build b/gio/inotify/meson.build
new file mode 100644 (file)
index 0000000..fc3ac71
--- /dev/null
@@ -0,0 +1,15 @@
+inotify_sources = [
+  'inotify-kernel.c',
+  'inotify-sub.c',
+  'inotify-path.c',
+  'inotify-missing.c',
+  'inotify-helper.c',
+  'ginotifyfilemonitor.c',
+]
+
+inotify_lib = static_library('inotify',
+  sources : inotify_sources,
+  include_directories : [configinc, glibinc, gmoduleinc],
+  dependencies : [gioenumtypes_dep],
+  pic : true,
+  c_args : [ '-DHAVE_CONFIG_H', '-DG_DISABLE_DEPRECATED' ] + gio_c_args)
diff --git a/gio/kqueue/meson.build b/gio/kqueue/meson.build
new file mode 100644 (file)
index 0000000..8f5b97a
--- /dev/null
@@ -0,0 +1,18 @@
+kqueue_sources = [
+  'gkqueuefilemonitor.c',
+  'kqueue-helper.c',
+  'kqueue-thread.c',
+  'kqueue-sub.c',
+  'kqueue-missing.c',
+  'kqueue-utils.c',
+  'kqueue-exclusions.c',
+  'dep-list.c',
+  # gkqueuefilemonitor.h includes gio.h which includes this
+  gioenumtypes_h,
+]
+
+kqueue_lib = static_library('kqueue',
+  sources : kqueue_sources,
+  include_directories : [configinc, glibinc, gmoduleinc],
+  pic : true,
+  c_args : [ '-DHAVE_CONFIG_H', '-DG_DISABLE_DEPRECATED' ] + gio_c_args)
diff --git a/gio/meson.build b/gio/meson.build
new file mode 100644 (file)
index 0000000..8f6ed1b
--- /dev/null
@@ -0,0 +1,845 @@
+gio_c_args = [
+  '-DG_LOG_DOMAIN="GLib-GIO"',
+  '-DGIO_COMPILATION',
+  '-DGIO_MODULE_DIR="@0@"'.format(glib_giomodulesdir),
+]
+
+gio_c_args += glib_hidden_visibility_args
+
+# FIXME: Install empty glib_giomodulesdir
+
+gnetworking_h_conf = configuration_data()
+
+gnetworking_h_wspiapi_include = ''
+gnetworking_h_nameser_compat_include = ''
+
+if host_system == 'windows'
+  # <wspiapi.h> in the Windows SDK and in mingw-w64 has wrappers for
+  # inline workarounds for getaddrinfo, getnameinfo and freeaddrinfo if
+  # they aren't present at run-time (on Windows 2000).
+  gnetworking_h_wspiapi_include = '#include <wspiapi.h>'
+endif
+
+if host_system.contains('android')
+  # Android does not have C_IN in public headers, we define it wherever necessary
+  if not cc.compiles('''#include <sys/types.h>
+                        #include <arpa/nameser.h>
+                        int qclass = C_IN;''',
+                     name : 'C_IN in public headers (no arpa/nameser_compat.h needed)')
+    if cc.compiles('''#include <sys/types.h>
+                      #include <arpa/nameser.h>
+                      #include <arpa/nameser_compat.h>
+                      int qclass = C_IN;''',
+                   name : 'arpa/nameser_compat.h needed for C_IN')
+      gnetworking_h_nameser_compat_include = '#include <arpa/nameser_compat.h>'
+    else
+      error('Could not find required includes for ARPA C_IN')
+    endif
+  endif
+endif
+
+network_libs = [ ]
+network_args = [ ]
+if host_system != 'windows'
+  # res_query()
+  res_query_test = '''#include <resolv.h>
+                      int main (int argc, char ** argv) {
+                        return res_query("test", 0, 0, (void *)0, 0);
+                      }'''
+  res_query_test_full = '''#include <sys/types.h>
+                           #include <netinet/in.h>
+                           #include <arpa/nameser.h>
+                        ''' + res_query_test
+  if not cc.links(res_query_test_full, name : 'res_query()')
+    if cc.links(res_query_test_full, args : '-lresolv', name : 'res_query() in -lresolv')
+      network_libs += [ cc.find_library('resolv') ]
+      network_args += [ '-lresolv' ]
+    elif cc.links(res_query_test, args : '-lbind', name : 'res_query() in -lbind')
+      network_libs += [ cc.find_library('bind') ]
+      network_args += [ '-lbind' ]
+    else
+      error('Could not find res_query()')
+    endif
+  endif
+
+  # socket()
+  socket_test = '''#include <sys/types.h>
+                   #include <sys/socket.h>
+                   int main (int argc, char ** argv) {
+                     return socket(1, 2, 3);
+                   }'''
+  if not cc.links(socket_test, name : 'socket()')
+    if cc.links(socket_test, args : '-lsocket', name : 'socket() in -lsocket')
+      network_libs += [ cc.find_library('socket') ]
+      network_args += [ '-lsocket' ]
+    else
+      error('Could not find socket()')
+    endif
+  endif
+
+  # res_init()
+  if cc.links('''#include <sys/types.h>
+                 #include <netinet/in.h>
+                 #include <arpa/nameser.h>
+                 #include <resolv.h>
+                 int main (int argc, char ** argv) {
+                   return res_init();
+                 }''', args : network_args, name : 'res_init()')
+    glib_conf.set('HAVE_RES_INIT', 1)
+  endif
+
+  if cc.compiles('''#include <netinet/in.h>
+                    struct ip_mreqn foo;''',
+                 name : 'struct ip_mreqn')
+    glib_conf.set('HAVE_IP_MREQN', '/**/')
+  endif
+endif
+
+network_args_string = ''
+foreach arg : network_args
+  network_args_string += arg + ' '
+endforeach
+glib_conf.set('NETWORK_LIBS', network_args_string)
+
+gnetworking_h_conf.set('WSPIAPI_INCLUDE', gnetworking_h_wspiapi_include)
+gnetworking_h_conf.set('NAMESER_COMPAT_INCLUDE', gnetworking_h_nameser_compat_include)
+
+gnetworking_h = configure_file(input : 'gnetworking.h.in',
+                               output : 'gnetworking.h',
+                               install_dir : join_paths(get_option('includedir'), 'glib-2.0/gio'),
+                               configuration : gnetworking_h_conf)
+
+gdbus_headers = files([
+  'gdbusauthobserver.h',
+  'gcredentials.h',
+  'gdbusutils.h',
+  'gdbuserror.h',
+  'gdbusaddress.h',
+  'gdbusconnection.h',
+  'gdbusmessage.h',
+  'gdbusnameowning.h',
+  'gdbusnamewatching.h',
+  'gdbusproxy.h',
+  'gdbusintrospection.h',
+  'gdbusmethodinvocation.h',
+  'gdbusserver.h',
+  'gdbusinterface.h',
+  'gdbusinterfaceskeleton.h',
+  'gdbusobject.h',
+  'gdbusobjectskeleton.h',
+  'gdbusobjectproxy.h',
+  'gdbusobjectmanager.h',
+  'gdbusobjectmanagerclient.h',
+  'gdbusobjectmanagerserver.h',
+  'gtestdbus.h',
+])
+
+gdbus_sources = [
+  'gdbusutils.c',
+  'gdbusaddress.c',
+  'gdbusauthobserver.c',
+  'gdbusauth.c',
+  'gdbusauthmechanism.c',
+  'gdbusauthmechanismanon.c',
+  'gdbusauthmechanismexternal.c',
+  'gdbusauthmechanismsha1.c',
+  'gdbuserror.c',
+  'gdbusconnection.c',
+  'gdbusmessage.c',
+  'gdbusnameowning.c',
+  'gdbusnamewatching.c',
+  'gdbusproxy.c',
+  'gdbusprivate.c',
+  'gdbusintrospection.c',
+  'gdbusmethodinvocation.c',
+  'gdbusserver.c',
+  'gdbusinterface.c',
+  'gdbusinterfaceskeleton.c',
+  'gdbusobject.c',
+  'gdbusobjectskeleton.c',
+  'gdbusobjectproxy.c',
+  'gdbusobjectmanager.c',
+  'gdbusobjectmanagerclient.c',
+  'gdbusobjectmanagerserver.c',
+  'gtestdbus.c',
+]
+
+# Generate gdbus-codegen
+subdir('gdbus-2.0/codegen')
+
+# Generate xdp-dbus.{c,h}
+xdp_dbus_generated = custom_target('xdp-dbus',
+    input : ['org.freedesktop.portal.Documents.xml',
+             'org.freedesktop.portal.OpenURI.xml',
+             'org.freedesktop.portal.NetworkMonitor.xml',
+             'org.freedesktop.portal.ProxyResolver.xml'],
+    output : ['xdp-dbus.h', 'xdp-dbus.c'],
+    command : [python, gdbus_codegen,
+               '--interface-prefix', 'org.freedesktop.portal.',
+               '--output-directory', '@OUTDIR@',
+               '--generate-c-code', 'xdp-dbus',
+               '--c-namespace', 'GXdp',
+               '--annotate', 'org.freedesktop.portal.Documents.Add()',
+                             'org.gtk.GDBus.C.UnixFD', 'true',
+               '--annotate', 'org.freedesktop.portal.Documents.AddNamed()',
+                             'org.gtk.GDBus.C.UnixFD', 'true',
+               '--annotate', 'org.freedesktop.portal.Documents.AddFull()',
+                             'org.gtk.GDBus.C.UnixFD', 'true',
+               '--annotate', 'org.freedesktop.portal.OpenURI.OpenFile()',
+                             'org.gtk.GDBus.C.UnixFD', 'true',
+               '@INPUT@'])
+
+# Generate gdbus-generated.{c,h}
+gdbus_daemon_generated = custom_target('gdbus-daemon-generated',
+    input : ['dbus-daemon.xml'],
+    output : ['gdbus-daemon-generated.h', 'gdbus-daemon-generated.c'],
+    command : [python, gdbus_codegen,
+               '--interface-prefix', 'org.',
+               '--output-directory', '@OUTDIR@',
+               '--generate-c-code', 'gdbus-daemon-generated',
+               '--c-namespace', '_G', '@INPUT@'])
+
+settings_headers = files([
+  'gsettingsbackend.h',
+  'gsettingsschema.h',
+  'gsettings.h',
+])
+
+settings_sources = [
+  'gvdb/gvdb-reader.c',
+  'gdelayedsettingsbackend.c',
+  'gkeyfilesettingsbackend.c',
+  'gmemorysettingsbackend.c',
+  'gnullsettingsbackend.c',
+  'gsettingsbackend.c',
+  'gsettingsschema.c',
+  'gsettings-mapping.c',
+  'gsettings.c',
+]
+
+if host_system == 'windows'
+  settings_sources += [ 'gregistrysettingsbackend.c' ]
+endif
+
+# FIXME:
+#if OS_COCOA
+#settings_sources += [ 'gnextstepsettingsbackend.c' ]
+#endif
+
+application_headers = files([
+  'gapplication.h',
+  'gapplicationcommandline.h',
+
+  'gactiongroup.h',
+  'gactionmap.h',
+  'gsimpleactiongroup.h',
+  'gremoteactiongroup.h',
+  'gactiongroupexporter.h',
+  'gdbusactiongroup.h',
+  'gaction.h',
+  'gpropertyaction.h',
+  'gsimpleaction.h',
+
+  'gmenumodel.h',
+  'gmenu.h',
+  'gmenuexporter.h',
+  'gdbusmenumodel.h',
+  'gnotification.h',
+])
+
+application_sources = [
+  'gapplication.c',
+  'gapplicationcommandline.c',
+  'gapplicationimpl-dbus.c',
+
+  'gactiongroup.c',
+  'gactionmap.c',
+  'gsimpleactiongroup.c',
+  'gremoteactiongroup.c',
+  'gactiongroupexporter.c',
+  'gdbusactiongroup.c',
+  'gaction.c',
+  'gpropertyaction.c',
+  'gsimpleaction.c',
+
+  'gmenumodel.c',
+  'gmenu.c',
+  'gmenuexporter.c',
+  'gdbusmenumodel.c',
+  'gnotification.c',
+  'gnotificationbackend.c',
+]
+
+local_sources = [
+  'ghttpproxy.c',
+  'glocalfile.c',
+  'glocalfileenumerator.c',
+  'glocalfileinfo.c',
+  'glocalfileinputstream.c',
+  'glocalfilemonitor.c',
+  'glocalfileoutputstream.c',
+  'glocalfileiostream.c',
+  'glocalvfs.c',
+  'gsocks4proxy.c',
+  'gsocks4aproxy.c',
+  'gsocks5proxy.c',
+  'thumbnail-verify.c',
+]
+
+platform_deps = []
+internal_deps = []
+appinfo_sources = []
+contenttype_sources = []
+portal_sources = []
+unix_sources = []
+
+if host_system != 'windows'
+  unix_sources = [
+    'gfiledescriptorbased.c',
+    'gunixconnection.c',
+    'gunixcredentialsmessage.c',
+    'gunixfdlist.c',
+    'gunixfdmessage.c',
+    'gunixmount.c',
+    'gunixmounts.c',
+    'gunixsocketaddress.c',
+    'gunixvolume.c',
+    'gunixvolumemonitor.c',
+    'gunixinputstream.c',
+    'gunixoutputstream.c',
+    'gfdonotificationbackend.c',
+    'ggtknotificationbackend.c',
+  ]
+
+  portal_sources = [
+    'gdocumentportal.c',
+    'gopenuriportal.c',
+    'gnetworkmonitorportal.c',
+    'gproxyresolverportal.c',
+    'gportalsupport.c',
+    'gportalnotificationbackend.c',
+    xdp_dbus_generated
+  ]
+
+  gio_unix_include_headers = [
+    'gfiledescriptorbased.h',
+    'gunixconnection.h',
+    'gunixcredentialsmessage.h',
+    'gunixmounts.h',
+    'gunixfdlist.h',
+    'gunixfdmessage.h',
+    'gunixinputstream.h',
+    'gunixoutputstream.h',
+    'gunixsocketaddress.h',
+  ]
+
+  if glib_have_cocoa
+    contenttype_sources += ['gosxcontenttype.c']
+    appinfo_sources += ['gosxappinfo.c']
+    if glib_have_os_x_9_or_later
+      unix_sources += ['gcocoanotificationbackend.c']
+    endif
+  else
+    contenttype_sources += ['gcontenttype.c']
+    appinfo_sources += ['gdesktopappinfo.c']
+    gio_unix_include_headers += ['gdesktopappinfo.h']
+    subdir('xdgmime')
+    internal_deps += [xdgmime_lib]
+  endif
+
+  install_headers(gio_unix_include_headers, subdir : 'gio-unix-2.0/gio')
+
+  if glib_conf.has('HAVE_NETLINK')
+    unix_sources += [
+      'gnetworkmonitornetlink.c',
+      'gnetworkmonitornm.c',
+    ]
+  endif
+endif
+
+# This is also used by tests/gdbus-daemon, so use files() to include the path
+gdbus_daemon_sources = [
+  files('gdbusdaemon.c'),
+  gdbus_daemon_generated,
+]
+
+win32_sources = gdbus_daemon_sources
+if host_system == 'windows'
+  appinfo_sources += ['gwin32appinfo.c']
+  contenttype_sources += ['gcontenttype-win32.c']
+  platform_deps += [cc.find_library('shlwapi'),
+                    cc.find_library('dnsapi'),
+                    cc.find_library('iphlpapi'),
+                    winsock2]
+  win32_sources += [
+    'gwin32registrykey.c',
+    'gwin32mount.c',
+    'gwin32volumemonitor.c',
+    'gwin32inputstream.c',
+    'gwin32outputstream.c',
+  ]
+
+  gio_win32_include_headers = [
+    'gwin32inputstream.h',
+    'gwin32outputstream.h',
+  ]
+  install_headers(gio_win32_include_headers, subdir : 'gio-win32-2.0/gio')
+endif
+
+gio_sources = [
+  'gappinfo.c',
+  'gasynchelper.c',
+  'gasyncinitable.c',
+  'gasyncresult.c',
+  'gbufferedinputstream.c',
+  'gbufferedoutputstream.c',
+  'gbytesicon.c',
+  'gcancellable.c',
+  'gcharsetconverter.c',
+  'gcontextspecificgroup.c',
+  'gconverter.c',
+  'gconverterinputstream.c',
+  'gconverteroutputstream.c',
+  'gcredentials.c',
+  'gdatagrambased.c',
+  'gdatainputstream.c',
+  'gdataoutputstream.c',
+  'gdrive.c',
+  'gdummyfile.c',
+  'gdummyproxyresolver.c',
+  'gdummytlsbackend.c',
+  'gemblem.c',
+  'gemblemedicon.c',
+  'gfile.c',
+  'gfileattribute.c',
+  'gfileenumerator.c',
+  'gfileicon.c',
+  'gfileinfo.c',
+  'gfileinputstream.c',
+  'gfilemonitor.c',
+  'gfilenamecompleter.c',
+  'gfileoutputstream.c',
+  'gfileiostream.c',
+  'gfilterinputstream.c',
+  'gfilteroutputstream.c',
+  'gicon.c',
+  'ginetaddress.c',
+  'ginetaddressmask.c',
+  'ginetsocketaddress.c',
+  'ginitable.c',
+  'ginputstream.c',
+  'gioerror.c',
+  'giomodule.c',
+  'gioscheduler.c',
+  'giostream.c',
+  'gloadableicon.c',
+  'gmount.c',
+  'gmemoryinputstream.c',
+  'gmemoryoutputstream.c',
+  'gmountoperation.c',
+  'gnativevolumemonitor.c',
+  'gnativesocketaddress.c',
+  'gnetworkaddress.c',
+  'gnetworking.c',
+  'gnetworkmonitor.c',
+  'gnetworkmonitorbase.c',
+  'gnetworkservice.c',
+  'goutputstream.c',
+  'gpermission.c',
+  'gpollableinputstream.c',
+  'gpollableoutputstream.c',
+  'gpollableutils.c',
+  'gpollfilemonitor.c',
+  'gproxy.c',
+  'gproxyaddress.c',
+  'gproxyaddressenumerator.c',
+  'gproxyresolver.c',
+  'gresolver.c',
+  'gresource.c',
+  'gresourcefile.c',
+  'gseekable.c',
+  'gsimpleasyncresult.c',
+  'gsimpleiostream.c',
+  'gsimplepermission.c',
+  'gsocket.c',
+  'gsocketaddress.c',
+  'gsocketaddressenumerator.c',
+  'gsocketclient.c',
+  'gsocketconnectable.c',
+  'gsocketconnection.c',
+  'gsocketcontrolmessage.c',
+  'gsocketinputstream.c',
+  'gsocketlistener.c',
+  'gsocketoutputstream.c',
+  'gsubprocesslauncher.c',
+  'gsubprocess.c',
+  'gsocketservice.c',
+  'gsrvtarget.c',
+  'gsimpleproxyresolver.c',
+  'gtask.c',
+  'gtcpconnection.c',
+  'gtcpwrapperconnection.c',
+  'gthreadedsocketservice.c',
+  'gthemedicon.c',
+  'gthreadedresolver.c',
+  'gthreadedresolver.h',
+  'gtlsbackend.c',
+  'gtlscertificate.c',
+  'gtlsclientconnection.c',
+  'gtlsconnection.c',
+  'gtlsdatabase.c',
+  'gtlsfiledatabase.c',
+  'gtlsinteraction.c',
+  'gtlspassword.c',
+  'gtlsserverconnection.c',
+  'gdtlsconnection.c',
+  'gdtlsclientconnection.c',
+  'gdtlsserverconnection.c',
+  'gunionvolumemonitor.c',
+  'gvfs.c',
+  'gvolume.c',
+  'gvolumemonitor.c',
+  'gzlibcompressor.c',
+  'gzlibdecompressor.c',
+  'glistmodel.c',
+  'gliststore.c',
+]
+
+gio_sources += appinfo_sources
+gio_sources += contenttype_sources
+gio_sources += unix_sources
+gio_sources += win32_sources
+gio_sources += application_sources
+gio_sources += settings_sources
+gio_sources += gdbus_sources
+gio_sources += portal_sources
+gio_sources += local_sources
+
+MISSING_STUFF = '''
+if OS_WIN32_AND_DLL_COMPILATION
+gio_win32_res = gio-win32-res.o
+gio_win32_res_ldflag = -Wl,$(gio_win32_res)
+endif
+
+gio-win32-res.o: gio.rc
+  '$(WINDRES) gio.rc $@
+
+# This is read by gobject-introspection/misc/ and gtk-doc
+gio-public-headers.txt: Makefile
+  '$(AM_V_GEN) echo $(gioinclude_HEADERS) $(giowin32include_HEADERS) $(giounixinclude_HEADERS) > $@.tmp && mv $@.tmp $@
+
+gio.def: libgio-2.0.la
+  '$(AM_V_GEN) dumpbin.exe -exports .libs/libgio-2.0-0.dll | awk 'BEGIN { print "EXPORTS" } / +[[:digit:]]+ +[[:xdigit:]]+ +[[:xdigit:]]+/{ print $$4 }' > gio.def.tmp && mv gio.def.tmp gio.def
+
+gio-2.0.lib: libgio-2.0.la gio.def
+  '$(AM_V_GEN) lib.exe -machine:@LIB_EXE_MACHINE_FLAG@ -name:libgio-2.0-$(LT_CURRENT_MINUS_AGE).dll -def:$(builddir)/gio.def -out:$@
+'''
+
+gio_headers = files([
+  'gappinfo.h',
+  'gasyncinitable.h',
+  'gasyncresult.h',
+  'gbufferedinputstream.h',
+  'gbufferedoutputstream.h',
+  'gbytesicon.h',
+  'gcancellable.h',
+  'gcontenttype.h',
+  'gcharsetconverter.h',
+  'gconverter.h',
+  'gconverterinputstream.h',
+  'gconverteroutputstream.h',
+  'gdatagrambased.h',
+  'gdatainputstream.h',
+  'gdataoutputstream.h',
+  'gdrive.h',
+  'gemblem.h',
+  'gemblemedicon.h',
+  'gfile.h',
+  'gfileattribute.h',
+  'gfileenumerator.h',
+  'gfileicon.h',
+  'gfileinfo.h',
+  'gfileinputstream.h',
+  'gfilemonitor.h',
+  'gfilenamecompleter.h',
+  'gfileoutputstream.h',
+  'gfileiostream.h',
+  'gfilterinputstream.h',
+  'gfilteroutputstream.h',
+  'gicon.h',
+  'ginetaddress.h',
+  'ginetaddressmask.h',
+  'ginetsocketaddress.h',
+  'ginputstream.h',
+  'ginitable.h',
+  'gio.h',
+  'gio-autocleanups.h',
+  'giotypes.h',
+  'gioenums.h',
+  'gioerror.h',
+  'giomodule.h',
+  'gioscheduler.h',
+  'giostream.h',
+  'gloadableicon.h',
+  'gmount.h',
+  'gmemoryinputstream.h',
+  'gmemoryoutputstream.h',
+  'gmountoperation.h',
+  'gnativevolumemonitor.h',
+  'gnetworkaddress.h',
+  'gnetworkmonitor.h',
+  'gnetworkservice.h',
+  'goutputstream.h',
+  'gpermission.h',
+  'gpollableinputstream.h',
+  'gpollableoutputstream.h',
+  'gpollableutils.h',
+  'gproxyaddress.h',
+  'gproxy.h',
+  'gproxyaddressenumerator.h',
+  'gproxyresolver.h',
+  'gresolver.h',
+  'gresource.h',
+  'gseekable.h',
+  'gsimpleasyncresult.h',
+  'gsimpleiostream.h',
+  'gsimplepermission.h',
+  'gsocket.h',
+  'gsocketaddress.h',
+  'gsocketaddressenumerator.h',
+  'gsocketclient.h',
+  'gsocketconnectable.h',
+  'gsocketconnection.h',
+  'gsocketcontrolmessage.h',
+  'gsocketlistener.h',
+  'gsocketservice.h',
+  'gsrvtarget.h',
+  'gsimpleproxyresolver.h',
+  'gtask.h',
+  'gsubprocess.h',
+  'gsubprocesslauncher.h',
+  'gtcpconnection.h',
+  'gtcpwrapperconnection.h',
+  'gthreadedsocketservice.h',
+  'gthemedicon.h',
+  'gtlsbackend.h',
+  'gtlscertificate.h',
+  'gtlsclientconnection.h',
+  'gtlsconnection.h',
+  'gtlsdatabase.h',
+  'gtlsfiledatabase.h',
+  'gtlsinteraction.h',
+  'gtlspassword.h',
+  'gtlsserverconnection.h',
+  'gdtlsconnection.h',
+  'gdtlsclientconnection.h',
+  'gdtlsserverconnection.h',
+  'gvfs.h',
+  'gvolume.h',
+  'gvolumemonitor.h',
+  'gzlibcompressor.h',
+  'gzlibdecompressor.h',
+  'glistmodel.h',
+  'gliststore.h',
+])
+
+gio_headers += application_headers
+gio_headers += settings_headers
+gio_headers += gdbus_headers
+install_headers(gio_headers, subdir : 'glib-2.0/gio/')
+
+# We can't use gnome.mkenums() because the GNOME module looks for glib-mkenums
+# in PATH, which means you can't bootstrap glib with its own glib-mkenums.
+gioenumtypes_h = custom_target('gioenumtypes_h',
+  output : 'gioenumtypes.h',
+  capture : true,
+  input : gio_headers,
+  install : true,
+  install_dir : join_paths(get_option('includedir'), 'glib-2.0/gio'),
+  command : [python, glib_mkenums,
+             '--template', files('gioenumtypes.h.template'),
+             '@INPUT@', gnetworking_h])
+
+gioenumtypes_c = custom_target('gioenumtypes_c',
+  output : 'gioenumtypes.c',
+  capture : true,
+  input : gio_headers,
+  depends : [gioenumtypes_h],
+  command : [python, glib_mkenums,
+             '--template', files('gioenumtypes.c.template'),
+             '@INPUT@', gnetworking_h])
+
+gioenumtypes_dep = declare_dependency(sources : [gioenumtypes_h])
+
+# inotify
+if glib_conf.has('HAVE_SYS_INOTIFY_H') and have_func_inotify_init1
+  subdir('inotify')
+  internal_deps += [ inotify_lib ]
+endif
+
+# kevent
+if have_func_kqueue and have_func_kevent
+  subdir('kqueue')
+  internal_deps += [ kqueue_lib ]
+endif
+
+if host_system == 'windows'
+  subdir('win32')
+  internal_deps += [ giowin32_lib ]
+endif
+
+# FIXME: FAM support
+#if HAVE_FAM
+#  subdir('fam')
+#endif
+
+install_data([
+  'completion/gapplication',
+  'completion/gdbus',
+  'completion/gsettings',
+  'completion/gresource'
+],
+install_dir: join_paths(get_option('datadir'), 'bash-completion/completions'))
+
+if enable_dtrace
+  gio_dtrace_obj = dtrace_obj_gen.process('gio_probes.d')
+  gio_dtrace_hdr = dtrace_hdr_gen.process('gio_probes.d')
+else
+  gio_dtrace_obj = []
+  gio_dtrace_hdr = []
+endif
+
+libgio = shared_library('gio-2.0',
+  gioenumtypes_h, gioenumtypes_c, gnetworking_h, gio_sources,
+  gio_dtrace_hdr, gio_dtrace_obj,
+  version : library_version,
+  soversion : soversion,
+  install : true,
+  include_directories : [configinc, gioinc],
+  link_with : internal_deps,
+  #libgio_2_0_la_LDFLAGS = $(GLIB_LINK_FLAGS)',
+  #  '$(gio_win32_res_ldflag)',
+  #$(SELINUX_LIBS)
+  #$(XATTR_LIBS)
+  dependencies : [libintl, libz_dep, libdl_dep, libmount_dep, libglib_dep,
+                  libgobject_dep, libgmodule_dep] + platform_deps + network_libs,
+  c_args : gio_c_args,
+  # intl.lib is not compatible with SAFESEH
+  link_args : noseh_link_args,
+)
+
+libgio_dep = declare_dependency(link_with : libgio,
+  dependencies : [gioenumtypes_dep],
+  # We sadly need to export configinc here because everyone includes <gio/*.h>
+  include_directories : [configinc, gioinc])
+
+# Dependencies used by executables below
+libelf = dependency('libelf', version : '>= 0.8.12', required : false)
+if libelf.found()
+  glib_conf.set('HAVE_LIBELF', 1)
+endif
+
+gconstructor_as_data_h = custom_target('gconstructor_as_data.h',
+    input : ['data-to-c.py', files('../glib/gconstructor.h')],
+    output : ['gconstructor_as_data.h'],
+    command : [python, '@INPUT0@', '@INPUT1@', 'gconstructor_code', '@OUTPUT@'])
+
+# Several installed executables
+gio_tool_sources = [
+  'gio-tool.c',
+  'gio-tool.h',
+  'gio-tool-cat.c',
+  'gio-tool-copy.c',
+  'gio-tool-info.c',
+  'gio-tool-list.c',
+  'gio-tool-mime.c',
+  'gio-tool-mkdir.c',
+  'gio-tool-monitor.c',
+  'gio-tool-mount.c',
+  'gio-tool-move.c',
+  'gio-tool-open.c',
+  'gio-tool-rename.c',
+  'gio-tool-remove.c',
+  'gio-tool-save.c',
+  'gio-tool-set.c',
+  'gio-tool-trash.c',
+  'gio-tool-tree.c',
+]
+
+# FIXME: are all these HAVE_CONFIG_H needed/used here?
+executable('gio', gio_tool_sources,
+  install : true,
+  c_args : ['-DHAVE_CONFIG_H=1'] + gio_c_args,
+  # intl.lib is not compatible with SAFESEH
+  link_args : noseh_link_args,
+  dependencies : [libintl, libgio_dep, libgobject_dep, libgmodule_dep, libglib_dep])
+
+executable('gresource', 'gresource-tool.c',
+  install : true,
+  c_args : ['-DHAVE_CONFIG_H=1'],
+  # intl.lib is not compatible with SAFESEH
+  link_args : noseh_link_args,
+  dependencies : [libelf, libintl, libgio_dep, libgobject_dep, libgmodule_dep, libglib_dep])
+
+executable('gio-querymodules', 'gio-querymodules.c',
+  install : true,
+  c_args : ['-DHAVE_CONFIG_H=1'] + gio_c_args,
+  # intl.lib is not compatible with SAFESEH
+  link_args : noseh_link_args,
+  dependencies : [libgio_dep, libgobject_dep, libgmodule_dep, libglib_dep])
+
+glib_compile_schemas = executable('glib-compile-schemas',
+  [gconstructor_as_data_h, 'gvdb/gvdb-builder.c', 'glib-compile-schemas.c'],
+  install : true,
+  c_args : ['-DHAVE_CONFIG_H=1'],
+  # intl.lib is not compatible with SAFESEH
+  link_args : noseh_link_args,
+  dependencies : [libintl, libgio_dep, libgobject_dep, libgmodule_dep, libglib_dep])
+
+glib_compile_resources = executable('glib-compile-resources',
+  [gconstructor_as_data_h, 'gvdb/gvdb-builder.c', 'glib-compile-resources.c'],
+  install : true,
+  c_args : ['-DHAVE_CONFIG_H=1'] + gio_c_args,
+  # intl.lib is not compatible with SAFESEH
+  link_args : noseh_link_args,
+  dependencies : [libintl, libgio_dep, libgobject_dep, libgmodule_dep, libglib_dep])
+
+executable('gsettings', 'gsettings-tool.c',
+  install : true,
+  c_args : ['-DHAVE_CONFIG_H=1'] + gio_c_args,
+  # intl.lib is not compatible with SAFESEH
+  link_args : noseh_link_args,
+  dependencies : [libintl, libgio_dep, libgobject_dep, libgmodule_dep, libglib_dep])
+install_data('gschema.dtd',
+  install_dir : join_paths(get_option('datadir'), 'glib-2.0/schemas'))
+
+install_data(['gschema.loc', 'gschema.its'],
+  install_dir : join_paths(get_option('datadir'), 'gettext/its'))
+
+executable('gdbus', 'gdbus-tool.c',
+  install : true,
+  c_args : ['-DHAVE_CONFIG_H=1'] + gio_c_args,
+  # intl.lib is not compatible with SAFESEH
+  link_args : noseh_link_args,
+  dependencies : [libintl, libgio_dep, libgobject_dep, libgmodule_dep, libglib_dep])
+
+if host_system != 'windows'
+  executable('gapplication', 'gapplication-tool.c',
+    install : true,
+    c_args : ['-DHAVE_CONFIG_H=1'] + gio_c_args,
+    # intl.lib is not compatible with SAFESEH
+    link_args : noseh_link_args,
+    dependencies : [libintl, libgio_dep, libgobject_dep, libgmodule_dep, libglib_dep])
+endif
+
+if enable_systemtap
+  gio_stp = configure_file(input : 'gio.stp.in',
+    output : '@0@.stp'.format(libgio.full_path().split('/').get(-1)),
+    configuration : stp_cdata,
+    install_dir : tapset_install_dir,
+    install : true)
+endif
+
+if host_system != 'windows'
+  subdir('tests')
+endif
index 97bb89c..5eeb1c0 100644 (file)
@@ -39,6 +39,7 @@ write_all (const void *ptr,
   while (len > 0)
     {
       ssize_t done = write (STDOUT_FILENO, p, len);
+      int errsv = errno;
 
       if (done == 0)
         {
@@ -46,10 +47,10 @@ write_all (const void *ptr,
         }
       else if (done < 0)
         {
-          if (errno == EINTR)
+          if (errsv == EINTR)
             continue;
 
-          g_error ("%s: write: %s", ME, g_strerror (errno));
+          g_error ("%s: write: %s", ME, g_strerror (errsv));
         }
       else
         {
diff --git a/gio/tests/de/LC_MESSAGES/meson.build b/gio/tests/de/LC_MESSAGES/meson.build
new file mode 100644 (file)
index 0000000..2aab3b6
--- /dev/null
@@ -0,0 +1,8 @@
+# Doing this in a subdir, so we get it in the right build de/LC_MESSAGES subdir
+# at least in cases where the build directory layout is mirrored.
+test_mo =  custom_target('test.mo',
+    input :   ['../../de.po'],
+    output :  ['test.mo'],
+    command : [msgfmt, '-o', '@OUTPUT@', '@INPUT@'])
+
+test_mo_dir = meson.current_build_dir()
diff --git a/gio/tests/gdbus-object-manager-example/meson.build b/gio/tests/gdbus-object-manager-example/meson.build
new file mode 100644 (file)
index 0000000..6303573
--- /dev/null
@@ -0,0 +1,24 @@
+# FIXME: set UNINSTALLED_GLIB_{SRC|BUILD}DIR=top_{src|build}dir ?
+gdbus_example_objectmanager_generated = custom_target('gdbus-example-objectmanager-generated',
+  input  : ['gdbus-example-objectmanager.xml'],
+  output : ['gdbus-example-objectmanager-generated.h',
+            'gdbus-example-objectmanager-generated.c',
+            'gdbus-example-objectmanager-generated-org.gtk.GDBus.Example.ObjectManager.Animal.xml',
+            'gdbus-example-objectmanager-generated-org.gtk.GDBus.Example.ObjectManager.Cat.xml'],
+  command : [python, gdbus_codegen,
+             '--interface-prefix', 'org.gtk.GDBus.Example.ObjectManager.',
+             '--c-namespace', 'Example',
+             '--c-generate-object-manager',
+             '--output-directory', '@OUTDIR@',
+             '--generate-c-code', 'gdbus-example-objectmanager-generated',
+             '--generate-docbook', 'gdbus-example-objectmanager-generated',
+             '@INPUT@'])
+
+libgdbus_example_objectmanager = shared_library('libgdbus-example-objectmanager',
+    gdbus_example_objectmanager_generated,
+    c_args : ['-DHAVE_CONFIG_H=1'] + gio_c_args,
+    dependencies : [libglib_dep, libgmodule_dep, libgobject_dep, libgio_dep],
+    install : false)
+
+libgdbus_example_objectmanager_dep = declare_dependency(sources : gdbus_example_objectmanager_generated,
+  link_with : libgdbus_example_objectmanager)
index c5fc641..933cc52 100644 (file)
@@ -219,8 +219,9 @@ setup (Test *test,
 
   if (socketpair (AF_UNIX, SOCK_STREAM, 0, pair) < 0)
     {
-      g_set_error (&error, G_IO_ERROR, g_io_error_from_errno (errno),
-                   "%s", g_strerror (errno));
+      int errsv = errno;
+      g_set_error (&error, G_IO_ERROR, g_io_error_from_errno (errsv),
+                   "%s", g_strerror (errsv));
       g_assert_no_error (error);
     }
 
index 8737ee8..b4169ab 100644 (file)
@@ -615,18 +615,21 @@ read_all_from_fd (gint fd, gsize *out_len, GError **error)
 
   do
     {
+      int errsv;
+
       num_read = read (fd, buf, sizeof (buf));
+      errsv = errno;
       if (num_read == -1)
         {
-          if (errno == EAGAIN || errno == EWOULDBLOCK)
+          if (errsv == EAGAIN || errsv == EWOULDBLOCK)
             continue;
           g_set_error (error,
                        G_IO_ERROR,
-                       g_io_error_from_errno (errno),
+                       g_io_error_from_errno (errsv),
                        "Failed reading %d bytes into offset %d: %s",
                        (gint) sizeof (buf),
                        (gint) str->len,
-                       g_strerror (errno));
+                       g_strerror (errsv));
           goto error;
         }
       else if (num_read > 0)
index 23c41d0..8b58513 100644 (file)
@@ -61,7 +61,10 @@ set_up_mock_xdg_runtime_dir (void)
 
   /* alters tmpdir in-place */
   if (g_mkdtemp_full (tmpdir, 0700) == NULL)
-    g_error ("g_mkdtemp_full: %s", g_strerror (errno));
+    {
+      int errsv = errno;
+      g_error ("g_mkdtemp_full: %s", g_strerror (errsv));
+    }
 
   mock_bus_path = g_strconcat (tmpdir, "/bus", NULL);
   addr = g_unix_socket_address_new (mock_bus_path);
@@ -81,10 +84,16 @@ tear_down_mock_xdg_runtime_dir (void)
   g_assert_no_error (error);
 
   if (g_unlink (mock_bus_path) < 0)
-    g_error ("g_unlink(\"%s\"): %s", mock_bus_path, g_strerror (errno));
+    {
+      int errsv = errno;
+      g_error ("g_unlink(\"%s\"): %s", mock_bus_path, g_strerror (errsv));
+    }
 
   if (g_rmdir (tmpdir) < 0)
-    g_error ("g_rmdir(\"%s\"): %s", tmpdir, g_strerror (errno));
+    {
+      int errsv = errno;
+      g_error ("g_rmdir(\"%s\"): %s", tmpdir, g_strerror (errsv));
+    }
 
   g_clear_object (&mock_bus);
   g_clear_pointer (&mock_bus_path, g_free);
index 79eab97..40a396d 100644 (file)
@@ -62,7 +62,7 @@ static const SchemaTest tests[] = {
   { "missing-quotes",               NULL, "*unknown keyword*"                                   },
   { "incomplete-list",              NULL, "*to follow array element*"                           },
   { "wrong-category",               NULL, "*unsupported l10n category*"                         },
-  { "bad-type",                     NULL, "*invalid GVariant type string*"                      },
+  { "bad-type",                     NULL, "*Invalid GVariant type string*"                      },
   { "overflow",                     NULL, "*out of range*"                                      },
   { "range-wrong-type",             NULL, "*<range> not allowed for keys of type*"              },
   { "range-missing-min",            NULL, NULL                                                  },
@@ -70,41 +70,41 @@ static const SchemaTest tests[] = {
   { "default-out-of-range",         NULL, "*<default> is not contained in the specified range*" },
   { "choices-wrong-type",           NULL, "*<choices> not allowed for keys of type*"            },
   { "choice-missing-value",         NULL, "*element 'choice' requires attribute 'value'*"       },
-  { "default-not-in-choices",       NULL, "*<default> contains string not in <choices>*"        },
-  { "array-default-not-in-choices", NULL, "*<default> contains string not in <choices>*"        },
-  { "bad-key",                      NULL, "*invalid name*"                                      },
+  { "default-not-in-choices",       NULL, "*<default> contains string not in <choices>*"        },
+  { "array-default-not-in-choices", NULL, "*<default> contains string not in <choices>*"        },
+  { "bad-key",                      NULL, "*Invalid name*"                                      },
   { "invalid-path",                 NULL, "*must begin and end with a slash*"                   },
   { "bad-key",                      "--allow-any-name", NULL                                    },
-  { "bad-key2",                     NULL, "*invalid name*"                                      },
+  { "bad-key2",                     NULL, "*Invalid name*"                                      },
   { "bad-key2",                     "--allow-any-name", NULL                                    },
-  { "bad-key3",                     NULL, "*invalid name*"                                      },
+  { "bad-key3",                     NULL, "*Invalid name*"                                      },
   { "bad-key3",                     "--allow-any-name", NULL                                    },
-  { "bad-key4",                     NULL, "*invalid name*"                                      },
+  { "bad-key4",                     NULL, "*Invalid name*"                                      },
   { "bad-key4",                     "--allow-any-name", NULL                                    },
-  { "empty-key",                    NULL, "*empty names*"                                       },
-  { "empty-key",                    "--allow-any-name", "*empty names*"                         },
+  { "empty-key",                    NULL, "*Empty names*"                                       },
+  { "empty-key",                    "--allow-any-name", "*Empty names*"                         },
   { "enum",                         NULL, NULL                                                  },
   { "enum-with-aliases",            NULL, NULL                                                  },
-  { "enum-with-invalid-alias",      NULL, "*'banger' is not in enumerated type*"                },
+  { "enum-with-invalid-alias",      NULL, "*“banger” is not in enumerated type*"                },
   { "enum-with-repeated-alias",     NULL, "*<alias value='sausages'/> already specified*"       },
   { "enum-with-repeated-nick",      NULL, "*<value nick='spam'/> already specified*"            },
   { "enum-with-repeated-value",     NULL, "*value='1' already specified*"                       },
-  { "enum-with-chained-alias",      NULL, "*'sausages' is not in enumerated type*"              },
-  { "enum-with-shadow-alias",       NULL, "*'mash' is already a member of the enum*"            },
+  { "enum-with-chained-alias",      NULL, "*“sausages” is not in enumerated type*"              },
+  { "enum-with-shadow-alias",       NULL, "*“mash” is already a member of the enum*"            },
   { "enum-with-choice",             NULL, "*<choices> cannot be specified*"                     },
   { "enum-with-bad-default",        NULL, "*<default> is not a valid member*"                   },
   { "choice",                       NULL, NULL                                                  },
   { "choice-upside-down",           NULL, NULL                                                  },
-  { "bad-choice",                   NULL, "*<default> contains string not in <choices>*"        },
-  { "choice-bad",                   NULL, "*<default> contains string not in <choices>*"        },
-  { "choice-badtype",               NULL, "*<choices> not allowed for keys of type 'i'*"        },
+  { "bad-choice",                   NULL, "*<default> contains string not in <choices>*"        },
+  { "choice-bad",                   NULL, "*<default> contains string not in <choices>*"        },
+  { "choice-badtype",               NULL, "*<choices> not allowed for keys of type “i”*"        },
   { "bare-alias",                   NULL, "*enumerated or flags types or after <choices>*"      },
   { "choice-alias",                 NULL, NULL                                                  },
-  { "default-in-aliases",           NULL, "*<default> contains string not in <choices>*"        },
-  { "choice-invalid-alias",         NULL, "*'befor' is not in <choices>*"                       },
+  { "default-in-aliases",           NULL, "*<default> contains string not in <choices>*"        },
+  { "choice-invalid-alias",         NULL, "*“befor” is not in <choices>*"                       },
   { "choice-shadowed-alias",        NULL, "*given when <choice value='before'/> was already*"   },
   { "range",                        NULL, NULL                                                  },
-  { "range-badtype",                NULL, "*<range> not allowed for keys of type 's'*"          },
+  { "range-badtype",                NULL, "*<range> not allowed for keys of type “s”*"          },
   { "range-low-default",            NULL, "*<default> is not contained in the specified range*" },
   { "range-high-default",           NULL, "*<default> is not contained in the specified range*" },
   { "range-default-low",            NULL, "*<default> is not contained in the specified range*" },
@@ -115,15 +115,15 @@ static const SchemaTest tests[] = {
   { "extend-missing",               NULL, "*extends not yet existing schema*"                   },
   { "extend-nonlist",               NULL, "*which is not a list*"                               },
   { "extend-self",                  NULL, "*not yet existing*"                                  },
-  { "extend-wrong-list-indirect",   NULL, "*'y' does not extend 'x'*"                           },
-  { "extend-wrong-list",            NULL, "*'y' does not extend 'x'*"                           },
-  { "key-in-list-indirect",         NULL, "*cannot add keys to a 'list*"                        },
-  { "key-in-list",                  NULL, "*cannot add keys to a 'list*"                        },
+  { "extend-wrong-list-indirect",   NULL, "*“y” does not extend “x”*"                           },
+  { "extend-wrong-list",            NULL, "*“y” does not extend “x”*"                           },
+  { "key-in-list-indirect",         NULL, "*Cannot add keys to a “list*"                        },
+  { "key-in-list",                  NULL, "*Cannot add keys to a “list*"                        },
   { "list-of-missing",              NULL, "*is list of not yet existing schema*"                },
   { "extend-and-shadow",            NULL, "*shadows*use <override>*"                            },
   { "extend-and-shadow-indirect",   NULL, "*shadows*use <override>*"                            },
   { "override",                     NULL, NULL                                                  },
-  { "override-missing",             NULL, "*no <key name='bar'> to override*"                   },
+  { "override-missing",             NULL, "*No <key name='bar'> to override*"                   },
   { "override-range-error",         NULL, "*<override> is not contained in the specified range*"},
   { "override-then-key",            NULL, "*shadows <key name='foo'> in <schema id='base'>*"    },
   { "override-twice",               NULL, "*<override name='foo'> already specified*"           },
index ca2a6ba..74cb9e2 100644 (file)
@@ -23,9 +23,10 @@ write_all (int           fd,
   while (len > 0)
     {
       gssize bytes_written = write (fd, buf, len);
+      int errsv = errno;
       if (bytes_written < 0)
        g_error ("Failed to write to fd %d: %s",
-                fd, g_strerror (errno));
+                fd, g_strerror (errsv));
       buf += bytes_written;
       len -= bytes_written;
     }
diff --git a/gio/tests/meson.build b/gio/tests/meson.build
new file mode 100644 (file)
index 0000000..0967f14
--- /dev/null
@@ -0,0 +1,415 @@
+common_gio_tests_deps = [libglib_dep, libgmodule_dep, libgobject_dep, libgio_dep]
+
+subdir('gdbus-object-manager-example')
+
+gengiotypefuncs_prog = find_program('gengiotypefuncs.py')
+giotypefuncs_inc = custom_target(
+  'giotypefuncs.inc',
+  output : 'giotypefuncs.inc',
+  input : gio_headers + [gioenumtypes_h] + gobject_install_headers,
+  command: [gengiotypefuncs_prog, '@OUTPUT@', '@INPUT@'])
+
+#  Test programs buildable on all platforms
+gio_tests = [
+  'appmonitor',
+  'async-close-output-stream',
+  'async-splice-output-stream',
+  'buffered-input-stream',
+  'buffered-output-stream',
+  'cancellable',
+  'contexts',
+  'contenttype',
+  'converter-stream',
+  'credentials',
+  'data-input-stream',
+  'data-output-stream',
+  'defaultvalue',
+  'fileattributematcher',
+  'filter-streams',
+  'giomodule',
+  'gsubprocess',
+  'g-file',
+  'g-file-info',
+  'g-icon',
+  'gdbus-addresses',
+  'gdbus-message',
+  'inet-address',
+  'io-stream',
+  'memory-input-stream',
+  'memory-output-stream',
+  'monitor',
+  'network-address',
+  'network-monitor',
+  'permission',
+  'pollable',
+  'proxy-test',
+  'readwrite',
+  'simple-async-result',
+  'simple-proxy',
+  'sleepy-stream',
+  'socket',
+  'socket-listener',
+  'socket-service',
+  'srvtarget',
+  'task',
+  'vfs',
+  'volumemonitor',
+  'glistmodel',
+  'testfilemonitor',
+  'thumbnail-verification',
+]
+
+test_extra_programs = [
+  ['gdbus-connection-flush-helper'],
+  ['gdbus-testserver'],
+]
+
+test_env = [
+  'G_TEST_SRCDIR=' + meson.current_source_dir(),
+  'G_TEST_BUILDDIR=' + meson.current_build_dir(),
+]
+
+test_c_args = [
+  '-DHAVE_CONFIG_H=1',
+  '-DG_LOG_DOMAIN="GLib-GIO"',
+  '-DTEST_SERVICES="@0@/gio/tests/services"'.format(meson.build_root()),
+  '-DGLIB_MKENUMS="@0@"'.format(glib_mkenums),
+  '-DGLIB_COMPILE_SCHEMAS="@0@"'.format(glib_compile_schemas.full_path()),
+]
+
+# Check for libdbus1 - Optional - is only used in the GDBus test cases
+# 1.2.14 required for dbus_message_set_serial
+dbus1_dep = dependency('dbus-1', required : false, version : '>= 1.2.14')
+if dbus1_dep.found()
+  glib_conf.set('HAVE_DBUS1', 1)
+
+  exe = executable('gdbus-serialization',
+      'gdbus-serialization.c', 'gdbus-tests.c',
+      install : false,
+      c_args : test_c_args,
+      dependencies : common_gio_tests_deps + [dbus1_dep])
+  test('gdbus-serialization', exe, env : test_env)
+endif
+
+#  Test programs buildable on UNIX only
+if host_machine.system() != 'windows'
+  gio_tests += [
+    'file',
+    'gdbus-peer',
+    'gdbus-peer-object-manager',
+    'live-g-file',
+    'socket-address',
+    'stream-rw_all',
+    'unix-fd',
+    'unix-streams',
+    'gschema-compile',
+  ]
+
+  # Uninstalled because of the check-for-executable logic in DesktopAppInfo
+  # unable to find the installed executable
+  if not glib_have_cocoa
+    gio_tests += [
+      'appinfo',
+      'desktop-app-info',
+    ]
+  endif
+
+  test_extra_programs += [
+    ['basic-application'],
+    ['dbus-launch'],
+    ['appinfo-test'],
+  ]
+
+  if not glib_have_cocoa
+    test_extra_programs += [['apps']]
+    gio_tests += ['mimeapps']
+  endif
+
+  #  Test programs that need to bring up a session bus (requires dbus-daemon)
+  have_dbus_daemon = find_program('dbus-daemon', required : false).found()
+  if have_dbus_daemon
+    # Generate gdbus-test-codegen-generated.{c,h}
+    gdbus_test_codegen_generated = custom_target('gdbus-test-codegen-generated',
+        input :   ['test-codegen.xml'],
+        output :  ['gdbus-test-codegen-generated.h',
+                   'gdbus-test-codegen-generated.c'],
+        command : [python, gdbus_codegen,
+                   '--interface-prefix', 'org.project.',
+                   '--output-directory', '@OUTDIR@',
+                   '--generate-c-code', 'gdbus-test-codegen-generated',
+                   '--c-generate-object-manager',
+                   '--c-namespace', 'Foo_iGen',
+                   '--generate-docbook', 'gdbus-test-codegen-generated-doc',
+                   '--annotate', 'org.project.Bar', 'Key1', 'Value1',
+                   '--annotate', 'org.project.Bar', 'org.gtk.GDBus.Internal', 'Value2',
+                   '--annotate', 'org.project.Bar.HelloWorld()', 'Key3', 'Value3',
+                   '--annotate', 'org.project.Bar::TestSignal', 'Key4', 'Value4',
+                   '--annotate', 'org.project.Bar:ay', 'Key5', 'Value5',
+                   '--annotate', 'org.project.Bar.TestPrimitiveTypes()[val_int32]', 'Key6', 'Value6',
+                   '--annotate', 'org.project.Bar.TestPrimitiveTypes()[ret_uint32]', 'Key7', 'Value7',
+                   '--annotate', 'org.project.Bar::TestSignal[array_of_strings]', 'Key8', 'Value8',
+                   '@INPUT@'])
+
+    gio_dbus_tests = [
+      ['actions', [], []],
+      ['gdbus-auth', [], []],
+      ['gdbus-bz627724', [], []],
+      ['gdbus-close-pending', [], []],
+      ['gdbus-connection', [], []],
+      ['gdbus-connection-loss', [], []],
+      ['gdbus-connection-slow', [], []],
+      ['gdbus-error', [], []],
+      ['gdbus-exit-on-close', [], []],
+      ['gdbus-export', [], []],
+      ['gdbus-introspection', [], []],
+      ['gdbus-names', [], []],
+      ['gdbus-proxy', [], []],
+      ['gdbus-proxy-threads', [], [dbus1_dep]],
+      ['gdbus-proxy-well-known-name', [], []],
+      ['gdbus-test-codegen', [gdbus_test_codegen_generated], []],
+      ['gdbus-threading', [], []],
+      ['gmenumodel', [], []],
+      ['gnotification', ['gnotification-server.c'], []],
+    ]
+
+    if not glib_have_cocoa
+      gio_dbus_tests = [['dbus-appinfo', [], []]]
+    endif
+
+    # separate loop because extra source files for each test
+    foreach dbus_test : gio_dbus_tests
+      test_name = dbus_test[0]
+      extra_src = dbus_test[1]
+      extra_deps = dbus_test[2]
+      exe = executable(test_name, '@0@.c'.format(test_name),
+          'gdbus-sessionbus.c', 'gdbus-tests.c', extra_src,
+          install : false,
+          c_args : test_c_args,
+          dependencies : common_gio_tests_deps + extra_deps)
+      test(test_name, exe, env : test_env)
+    endforeach
+
+    exe = executable('gdbus-test-codegen-old', 'gdbus-test-codegen.c',
+          'gdbus-sessionbus.c', 'gdbus-tests.c', gdbus_test_codegen_generated,
+          install : false,
+          c_args : test_c_args + ['-DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_36', '-DGLIB_VERSION_MAX_ALLOWED=GLIB_VERSION_2_36'],
+          dependencies : common_gio_tests_deps)
+    test('gdbus-test-codegen-old', exe, env : test_env)
+
+    # There is already a gapplication exe target in gio so need to use a
+    # different name for the unit test executable, since we can't have two
+    # targets of the same name even if in different directories
+    # (FIXME: just rename source file to gapplication-test.c)
+    if not glib_have_cocoa
+      exe = executable('gapplication-test', 'gapplication.c',
+                       'gdbus-sessionbus.c', 'gdbus-tests.c',
+                       install : false,
+                       c_args : test_c_args,
+                       dependencies : common_gio_tests_deps)
+    endif
+    test('gapplication', exe, env : test_env)
+
+    gio_tests += ['gdbus-unix-addresses']
+  endif # have_dbus_daemon
+
+  # This test is currently unreliable
+  executable('gdbus-overflow', 'gdbus-overflow.c',
+      install : false,
+      c_args : test_c_args,
+      dependencies : common_gio_tests_deps)
+
+  exe = executable('gdbus-connection-flush', 'gdbus-connection-flush.c',
+      'test-io-stream.c', 'test-pipe-unix.c',
+      install : false,
+      c_args : test_c_args,
+      dependencies : common_gio_tests_deps)
+  test('gdbus-connection-flush', exe, env : test_env)
+
+  exe = executable('gdbus-non-socket', 'gdbus-non-socket.c',
+      'gdbus-tests.c', 'test-io-stream.c', 'test-pipe-unix.c',
+      install : false,
+      c_args : test_c_args,
+      dependencies : common_gio_tests_deps)
+  test('gdbus-non-socket', exe, env : test_env)
+
+  # Generate test.mo from de.po using msgfmt
+  msgfmt = find_program('msgfmt', required : false)
+  if msgfmt.found()
+    subdir('de/LC_MESSAGES')
+    # gsettings target exe already exists in gio directory
+    exe = executable('gsettings-test', 'gsettings.c', test_mo,
+        install : false,
+        c_args : test_c_args + [
+                   '-DSRCDIR="@0@"'.format(meson.current_source_dir()),
+                   '-DTEST_LOCALE_PATH="@0@"'.format(test_mo_dir),
+                 ],
+        dependencies : common_gio_tests_deps)
+    test('gsettings', exe, env : test_env)
+  endif
+endif # unix
+
+#  Test programs buildable on Windows only
+if host_machine.system() == 'windows'
+  gio_tests += ['win32-streams']
+endif
+
+if cc.get_id() != 'msvc'
+  gio_tests += [ 'autoptr' ]
+endif
+
+foreach test_name : gio_tests
+  extra_deps = []
+  srcs = ['@0@.c'.format(test_name)]
+  # conflicts with glib/tests/autoptr, can't have two targets with same name
+  if test_name == 'autoptr'
+    test_name = 'autoptr-gio'
+  elif test_name == 'defaultvalue'
+    srcs += [giotypefuncs_inc]
+  elif test_name == 'gdbus-peer'
+    # This is peer to peer so it doesn't need a session bus, so we can run
+    # it automatically as a test by default
+    extra_deps = [libgdbus_example_objectmanager_dep]
+  endif
+  exe = executable(test_name, srcs,
+      install : false,
+      c_args : test_c_args,
+      dependencies : common_gio_tests_deps + extra_deps)
+  if test_name == 'testfilemonitor'
+    test(test_name, exe, env : test_env, timeout : 45)
+  else
+    test(test_name, exe, env : test_env)
+  endif
+endforeach
+
+uninstalled_test_extra_programs = [
+  ['gio-du'],
+  ['echo-server'],
+  ['filter-cat'],
+  ['gapplication-example-actions'],
+  ['gapplication-example-cmdline'],
+  ['gapplication-example-cmdline2'],
+  ['gapplication-example-cmdline3'],
+  ['gapplication-example-dbushooks'],
+  ['gapplication-example-open'],
+  ['gdbus-daemon', gdbus_daemon_sources],
+  ['gdbus-example-export'],
+  ['gdbus-example-own-name'],
+  ['gdbus-example-peer'],
+  ['gdbus-example-proxy-subclass'],
+  ['gdbus-example-server'],
+  ['gdbus-example-subtree'],
+  ['gdbus-example-watch-name'],
+  ['gdbus-example-watch-proxy'],
+  ['gsubprocess-testprog'],
+  ['httpd'],
+  ['proxy'],
+  ['resolver'],
+  ['send-data'],
+  ['socket-server'],
+  ['socket-client', ['gtlsconsoleinteraction.c']],
+  ['tls-certificate', ['gtesttlsbackend.c']],
+  ['tls-interaction', ['gtesttlsbackend.c']],
+  # These three are manual-run tests because they need a session bus but don't bring one up themselves
+  # FIXME: these build but don't seem to work!
+  ['gdbus-example-objectmanager-client', [], [libgdbus_example_objectmanager_dep]],
+  ['gdbus-example-objectmanager-server', [], [libgdbus_example_objectmanager_dep]],
+  ['gdbus-test-fixture', [], [libgdbus_example_objectmanager_dep]],
+]
+
+if host_machine.system() != 'windows'
+  uninstalled_test_extra_programs += [['gdbus-example-unix-fd-client']]
+endif
+
+foreach extra_program : uninstalled_test_extra_programs + test_extra_programs
+  srcs = ['@0@.c'.format(extra_program[0])]
+  if extra_program.length() > 1
+    srcs += extra_program[1]
+  endif
+  extra_deps = []
+  if extra_program.length() > 2
+    extra_deps = extra_program[2]
+  endif
+  executable(extra_program[0], srcs,
+      install : false,
+      c_args : test_c_args,
+      dependencies : common_gio_tests_deps + extra_deps)
+endforeach
+
+if not meson.is_cross_build() or meson.has_exe_wrapper()
+
+  plugin_resources_c = custom_target('plugin-resources.c',
+    input : 'test4.gresource.xml',
+    output : 'plugin-resources.c',
+    command : [glib_compile_resources,
+               '--target=@OUTPUT@',
+               '--sourcedir=' + meson.current_source_dir(),
+               '--generate-source',
+               '--c-name', '_g_plugin',
+               '@INPUT@'])
+
+  if host_system == 'windows'
+    resource_plugin_platform_link_args = ['-no-undefined']
+  else
+    resource_plugin_platform_link_args = []
+  endif
+  shared_module ('resourceplugin', 'resourceplugin.c', plugin_resources_c,
+    link_args : ['-export-dynamic'] + resource_plugin_platform_link_args,
+    dependencies : common_gio_tests_deps)
+
+  test_gresource = custom_target('test.gresource',
+    input : 'test.gresource.xml',
+    output : 'test.gresource',
+    command : [glib_compile_resources,
+               '--target=@OUTPUT@',
+               '--sourcedir=' + meson.current_source_dir(),
+               '--sourcedir=' + meson.current_build_dir(),
+               '@INPUT@'])
+
+  test_resources2_c = custom_target('test_resources2.c',
+    input : 'test3.gresource.xml',
+    output : 'test_resources2.c',
+    command : [glib_compile_resources,
+               '--target=@OUTPUT@',
+               '--sourcedir=' + meson.current_source_dir(),
+               '--generate',
+               '--c-name', '_g_test2',
+               '--manual-register',
+               '@INPUT@'])
+
+  test_resources2_h = custom_target('test_resources2.h',
+    input : 'test3.gresource.xml',
+    output : 'test_resources2.h',
+    command : [glib_compile_resources,
+               '--target=@OUTPUT@',
+               '--sourcedir=' + meson.current_source_dir(),
+               '--generate',
+               '--c-name', '_g_test2',
+               '--manual-register',
+               '@INPUT@'])
+
+  test_resources_c = custom_target('test_resources.c',
+    input : 'test2.gresource.xml',
+    output : 'test_resources.c',
+    command : [glib_compile_resources,
+               '--target=@OUTPUT@',
+               '--sourcedir=' + meson.current_source_dir(),
+               '--generate-source',
+               '--c-name', '_g_test1',
+               '@INPUT@'])
+
+  # referenced by test.gresource.xml
+  test_generated_txt = configure_file(input : 'test1.txt',
+    output : 'test-generated.txt',
+    configuration : configuration_data(),
+    install : false)
+
+  exe = executable('resources', 'resources.c', test_gresource,
+      test_resources_c, test_resources2_c, test_resources2_h,
+      install : false,
+      c_args : test_c_args,
+      dependencies : common_gio_tests_deps)
+  test('resources', exe, env : test_env)
+endif
+
+# FIXME: subdir('services')
+subdir('modules')
index 4ca45f4..c301b6c 100644 (file)
@@ -34,8 +34,8 @@ endif
 
 libtestmodulea_la_SOURCES = test-module-a.c symbol-visibility.h
 libtestmodulea_la_LIBADD = $(LDADD)
-libtestmodulea_la_LDFLAGS = $(LDFLAGS) -no-undefined -avoid-version $(rpath_hack)
+libtestmodulea_la_LDFLAGS = $(LDFLAGS) -module -no-undefined -avoid-version $(rpath_hack)
 
 libtestmoduleb_la_SOURCES = test-module-b.c symbol-visibility.h
 libtestmoduleb_la_LIBADD = $(LDADD)
-libtestmoduleb_la_LDFLAGS =$(LDFLAGS) -no-undefined -avoid-version $(rpath_hack)
+libtestmoduleb_la_LDFLAGS =$(LDFLAGS) -module -no-undefined -avoid-version $(rpath_hack)
index 88b85be..32f6e58 100644 (file)
@@ -505,10 +505,10 @@ modules = \
 @ENABLE_INSTALLED_TESTS_FALSE@rpath_hack = -rpath /
 libtestmodulea_la_SOURCES = test-module-a.c symbol-visibility.h
 libtestmodulea_la_LIBADD = $(LDADD)
-libtestmodulea_la_LDFLAGS = $(LDFLAGS) -no-undefined -avoid-version $(rpath_hack)
+libtestmodulea_la_LDFLAGS = $(LDFLAGS) -module -no-undefined -avoid-version $(rpath_hack)
 libtestmoduleb_la_SOURCES = test-module-b.c symbol-visibility.h
 libtestmoduleb_la_LIBADD = $(LDADD)
-libtestmoduleb_la_LDFLAGS = $(LDFLAGS) -no-undefined -avoid-version $(rpath_hack)
+libtestmoduleb_la_LDFLAGS = $(LDFLAGS) -module -no-undefined -avoid-version $(rpath_hack)
 all: all-am
 
 .SUFFIXES:
diff --git a/gio/tests/modules/meson.build b/gio/tests/modules/meson.build
new file mode 100644 (file)
index 0000000..c219015
--- /dev/null
@@ -0,0 +1,11 @@
+libtestmodulea = shared_library('testmodulea', 'test-module-a.c',
+  install : false,
+  dependencies : [libglib_dep, libgobject_dep, libgmodule_dep, libgio_dep],
+  c_args : [ ]
+)
+
+libtestmoduleb = shared_library('testmoduleb', 'test-module-b.c',
+  install : false,
+  dependencies : [libglib_dep, libgobject_dep, libgmodule_dep, libgio_dep],
+  c_args : [ ]
+)
diff --git a/gio/win32/meson.build b/gio/win32/meson.build
new file mode 100644 (file)
index 0000000..3f6af82
--- /dev/null
@@ -0,0 +1,15 @@
+giowin32_sources = [
+  'gwin32fsmonitorutils.c',
+  'gwin32filemonitor.c',
+  'gwinhttpvfs.c',
+  'gwinhttpfile.c',
+  'gwinhttpfileinputstream.c',
+  'gwinhttpfileoutputstream.c',
+]
+
+giowin32_lib = static_library('giowin32',
+  sources : [giowin32_sources, gioenumtypes_h],
+  include_directories : [configinc, glibinc, gioinc, gmoduleinc],
+  dependencies : [libintl],
+  pic : true,
+  c_args : [ '-DHAVE_CONFIG_H', '-DG_DISABLE_DEPRECATED' ] + gio_c_args)
diff --git a/gio/xdgmime/meson.build b/gio/xdgmime/meson.build
new file mode 100644 (file)
index 0000000..128d70d
--- /dev/null
@@ -0,0 +1,16 @@
+xdgmime_sources = [
+  'xdgmime.c',
+  'xdgmimealias.c',
+  'xdgmimecache.c',
+  'xdgmimeglob.c',
+  'xdgmimeicon.c',
+  'xdgmimeint.c',
+  'xdgmimemagic.c',
+  'xdgmimeparent.c',
+]
+
+xdgmime_lib = static_library('xdgmime',
+  sources : xdgmime_sources,
+  include_directories : [configinc],
+  pic : true,
+  c_args : [ '-DHAVE_CONFIG_H', '-DXDG_PREFIX=_gio_xdg' ] + glib_hidden_visibility_args)
index 506c9cc..17d0dae 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Generated by gdbus-codegen 2.53.4. DO NOT EDIT.
+ * Generated by gdbus-codegen 2.53.5. DO NOT EDIT.
  *
  * The license of this code is the same as for the source it was derived from.
  */
index af905bd..a394704 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Generated by gdbus-codegen 2.53.4. DO NOT EDIT.
+ * Generated by gdbus-codegen 2.53.5. DO NOT EDIT.
  *
  * The license of this code is the same as for the source it was derived from.
  */
index 745a32a..bad4ded 100644 (file)
@@ -2220,7 +2220,7 @@ format_ampm (GDateTime *datetime,
              gboolean   uppercase)
 {
   const gchar *ampm;
-  gchar       *tmp, *ampm_dup;
+  gchar       *tmp = NULL, *ampm_dup;
   gsize        len;
 
   ampm = GET_AMPM (datetime);
index fc7e2bd..a92cbe2 100644 (file)
  * foo_open_file (GError **error)
  * {
  *   gint fd;
+ *   int saved_errno;
  *
  *   fd = open ("file.txt", O_RDONLY);
+ *   saved_errno = errno;
  *
  *   if (fd < 0)
  *     {
  *                    FOO_ERROR,                 // error domain
  *                    FOO_ERROR_BLAH,            // error code
  *                    "Failed to open file: %s", // error message format string
- *                    g_strerror (errno));
+ *                    g_strerror (saved_errno));
  *       return -1;
  *     }
  *   else
index f150f7b..0982388 100644 (file)
@@ -537,12 +537,14 @@ create_thread (GIOWin32Channel     *channel,
               unsigned (__stdcall *thread) (void *parameter))
 {
   HANDLE thread_handle;
+  int errsv;
 
   thread_handle = (HANDLE) _beginthreadex (NULL, 0, thread, channel, 0,
                                           &channel->thread_id);
+  errsv = errno;
   if (thread_handle == 0)
     g_warning ("Error creating thread: %s.",
-              g_strerror (errno));
+              g_strerror (errsv));
   else if (!CloseHandle (thread_handle))
     {
       gchar *emsg = g_win32_error_message (GetLastError ());
@@ -1193,6 +1195,7 @@ g_io_win32_fd_and_console_read (GIOChannel *channel,
 {
   GIOWin32Channel *win32_channel = (GIOWin32Channel *)channel;
   gint result;
+  int errsv;
   
   if (win32_channel->debug)
     g_print ("g_io_win32_fd_read: fd=%d count=%" G_GSIZE_FORMAT "\n",
@@ -1204,6 +1207,7 @@ g_io_win32_fd_and_console_read (GIOChannel *channel,
     }
 
   result = read (win32_channel->fd, buf, count);
+  errsv = errno;
 
   if (win32_channel->debug)
     g_print ("g_io_win32_fd_read: read() => %d\n", result);
@@ -1212,7 +1216,7 @@ g_io_win32_fd_and_console_read (GIOChannel *channel,
     {
       *bytes_read = 0;
 
-      switch (errno)
+      switch (errsv)
         {
 #ifdef EAGAIN
        case EAGAIN:
@@ -1220,8 +1224,8 @@ g_io_win32_fd_and_console_read (GIOChannel *channel,
 #endif
        default:
          g_set_error_literal (err, G_IO_CHANNEL_ERROR,
-                               g_io_channel_error_from_errno (errno),
-                               g_strerror (errno));
+                               g_io_channel_error_from_errno (errsv),
+                               g_strerror (errsv));
          return G_IO_STATUS_ERROR;
         }
     }
@@ -1240,6 +1244,7 @@ g_io_win32_fd_and_console_write (GIOChannel  *channel,
 {
   GIOWin32Channel *win32_channel = (GIOWin32Channel *)channel;
   gint result;
+  int errsv;
 
   if (win32_channel->thread_id)
     {
@@ -1247,6 +1252,8 @@ g_io_win32_fd_and_console_write (GIOChannel  *channel,
     }
   
   result = write (win32_channel->fd, buf, count);
+  errsv = errno;
+
   if (win32_channel->debug)
     g_print ("g_io_win32_fd_write: fd=%d count=%" G_GSIZE_FORMAT " => %d\n",
             win32_channel->fd, count, result);
@@ -1255,7 +1262,7 @@ g_io_win32_fd_and_console_write (GIOChannel  *channel,
     {
       *bytes_written = 0;
 
-      switch (errno)
+      switch (errsv)
         {
 #ifdef EAGAIN
        case EAGAIN:
@@ -1263,8 +1270,8 @@ g_io_win32_fd_and_console_write (GIOChannel  *channel,
 #endif
        default:
          g_set_error_literal (err, G_IO_CHANNEL_ERROR,
-                               g_io_channel_error_from_errno (errno),
-                               g_strerror (errno));
+                               g_io_channel_error_from_errno (errsv),
+                               g_strerror (errsv));
          return G_IO_STATUS_ERROR;
         }
     }
@@ -1281,7 +1288,7 @@ g_io_win32_fd_seek (GIOChannel *channel,
                    GError    **err)
 {
   GIOWin32Channel *win32_channel = (GIOWin32Channel *)channel;
-  int whence;
+  int whence, errsv;
   off_t tmp_offset;
   off_t result;
   
@@ -1310,14 +1317,15 @@ g_io_win32_fd_seek (GIOChannel *channel,
                            g_strerror (EINVAL));
       return G_IO_STATUS_ERROR;
     }
-  
+
   result = lseek (win32_channel->fd, tmp_offset, whence);
+  errsv = errno;
   
   if (result < 0)
     {
       g_set_error_literal (err, G_IO_CHANNEL_ERROR,
-                           g_io_channel_error_from_errno (errno),
-                           g_strerror (errno));
+                           g_io_channel_error_from_errno (errsv),
+                           g_strerror (errsv));
       return G_IO_STATUS_ERROR;
     }
 
@@ -1411,9 +1419,10 @@ g_io_win32_console_close (GIOChannel *channel,
   
   if (close (win32_channel->fd) < 0)
     {
+      int errsv = errno;
       g_set_error_literal (err, G_IO_CHANNEL_ERROR,
-                           g_io_channel_error_from_errno (errno),
-                           g_strerror (errno));
+                           g_io_channel_error_from_errno (errsv),
+                           g_strerror (errsv));
       return G_IO_STATUS_ERROR;
     }
 
@@ -1628,7 +1637,7 @@ g_io_channel_new_file (const gchar  *filename,
     MODE_A = 1 << 2,
     MODE_PLUS = 1 << 3,
   };
-  int mode_num;
+  int mode_num, errsv;
 
   g_return_val_if_fail (filename != NULL, NULL);
   g_return_val_if_fail (mode != NULL, NULL);
@@ -1699,6 +1708,7 @@ g_io_channel_new_file (const gchar  *filename,
 
   /* always open 'untranslated' */
   fid = g_open (filename, flags | _O_BINARY, pmode);
+  errsv = errno;
 
   if (g_io_win32_get_debug_flag ())
     {
@@ -1710,8 +1720,8 @@ g_io_channel_new_file (const gchar  *filename,
   if (fid < 0)
     {
       g_set_error_literal (error, G_FILE_ERROR,
-                           g_file_error_from_errno (errno),
-                           g_strerror (errno));
+                           g_file_error_from_errno (errsv),
+                           g_strerror (errsv));
       return (GIOChannel *)NULL;
     }
 
index 4ac7c08..4a69642 100644 (file)
@@ -759,9 +759,10 @@ g_key_file_load_from_fd (GKeyFile       *key_file,
 
   if (fstat (fd, &stat_buf) < 0)
     {
+      int errsv = errno;
       g_set_error_literal (error, G_FILE_ERROR,
-                           g_file_error_from_errno (errno),
-                           g_strerror (errno));
+                           g_file_error_from_errno (errsv),
+                           g_strerror (errsv));
       return FALSE;
     }
 
@@ -781,19 +782,22 @@ g_key_file_load_from_fd (GKeyFile       *key_file,
 
   do
     {
+      int errsv;
+
       bytes_read = read (fd, read_buf, 4096);
+      errsv = errno;
 
       if (bytes_read == 0)  /* End of File */
         break;
 
       if (bytes_read < 0)
         {
-          if (errno == EINTR || errno == EAGAIN)
+          if (errsv == EINTR || errsv == EAGAIN)
             continue;
 
           g_set_error_literal (error, G_FILE_ERROR,
-                               g_file_error_from_errno (errno),
-                               g_strerror (errno));
+                               g_file_error_from_errno (errsv),
+                               g_strerror (errsv));
           return FALSE;
         }
 
@@ -848,17 +852,19 @@ g_key_file_load_from_file (GKeyFile       *key_file,
 {
   GError *key_file_error = NULL;
   gint fd;
+  int errsv;
 
   g_return_val_if_fail (key_file != NULL, FALSE);
   g_return_val_if_fail (file != NULL, FALSE);
 
   fd = g_open (file, O_RDONLY, 0);
+  errsv = errno;
 
   if (fd == -1)
     {
       g_set_error_literal (error, G_FILE_ERROR,
-                           g_file_error_from_errno (errno),
-                           g_strerror (errno));
+                           g_file_error_from_errno (errsv),
+                           g_strerror (errsv));
       return FALSE;
     }
 
@@ -1489,7 +1495,7 @@ g_key_file_flush_parse_buffer (GKeyFile  *key_file,
  * Note that this function never reports an error,
  * so it is safe to pass %NULL as @error.
  *
- * Returns: (array length=length): a newly allocated string holding
+ * Returns: a newly allocated string holding
  *   the contents of the #GKeyFile 
  *
  * Since: 2.6
@@ -1559,7 +1565,7 @@ g_key_file_to_data (GKeyFile  *key_file,
  * be found, %NULL is returned and @error is set to
  * #G_KEY_FILE_ERROR_GROUP_NOT_FOUND.
  *
- * Returns: (array zero-terminated=1 length=length) (transfer full): a newly-allocated %NULL-terminated array of strings.
+ * Returns: (array zero-terminated=1) (transfer full): a newly-allocated %NULL-terminated array of strings.
  *     Use g_strfreev() to free it.
  *
  * Since: 2.6
@@ -1654,7 +1660,7 @@ g_key_file_get_start_group (GKeyFile *key_file)
  * The array of returned groups will be %NULL-terminated, so 
  * @length may optionally be %NULL.
  *
- * Returns: (array zero-terminated=1 length=length) (transfer full): a newly-allocated %NULL-terminated array of strings.
+ * Returns: (array zero-terminated=1) (transfer full): a newly-allocated %NULL-terminated array of strings.
  *   Use g_strfreev() to free it.
  * Since: 2.6
  **/
@@ -4295,9 +4301,11 @@ g_key_file_parse_value_as_integer (GKeyFile     *key_file,
   gchar *eof_int;
   glong long_value;
   gint int_value;
+  int errsv;
 
   errno = 0;
   long_value = strtol (value, &eof_int, 10);
+  errsv = errno;
 
   if (*value == '\0' || (*eof_int != '\0' && !g_ascii_isspace(*eof_int)))
     {
@@ -4312,7 +4320,7 @@ g_key_file_parse_value_as_integer (GKeyFile     *key_file,
     }
 
   int_value = long_value;
-  if (int_value != long_value || errno == ERANGE)
+  if (int_value != long_value || errsv == ERANGE)
     {
       gchar *value_utf8 = g_utf8_make_valid (value, -1);
       g_set_error (error,
index ed48b8d..d834a53 100644 (file)
@@ -1,8 +1,8 @@
 #include <winver.h>
 
 VS_VERSION_INFO VERSIONINFO
-  FILEVERSION 2,53,4,0
-  PRODUCTVERSION 2,53,4,0
+  FILEVERSION 2,53,5,0
+  PRODUCTVERSION 2,53,5,0
   FILEFLAGSMASK 0
   FILEFLAGS 0
   FILEOS VOS__WINDOWS32
@@ -15,12 +15,12 @@ VS_VERSION_INFO VERSIONINFO
       BEGIN
        VALUE "CompanyName", "The GLib developer community"
        VALUE "FileDescription", "GLib"
-       VALUE "FileVersion", "2.53.4.0"
+       VALUE "FileVersion", "2.53.5.0"
        VALUE "InternalName", "libglib-2.0-0"
        VALUE "LegalCopyright", "Copyright © 1995-2011 Peter Mattis, Spencer Kimball, Josh MacDonald and others."
        VALUE "OriginalFilename", "libglib-2.0-0.dll"
        VALUE "ProductName", "GLib"
-       VALUE "ProductVersion", "2.53.4"
+       VALUE "ProductVersion", "2.53.5"
       END
     END
     BLOCK "VarFileInfo"
index c335e2b..1dc5749 100644 (file)
@@ -162,7 +162,7 @@ typedef unsigned __int64 guintptr;
 
 #define GLIB_MAJOR_VERSION 2
 #define GLIB_MINOR_VERSION 53
-#define GLIB_MICRO_VERSION 4
+#define GLIB_MICRO_VERSION 5
 
 #define G_OS_WIN32
 #define G_PLATFORM_WIN32
index 6566571..8d6b2ce 100644 (file)
@@ -4167,6 +4167,8 @@ g_main_context_poll (GMainContext *context,
 
   if (n_fds || timeout != 0)
     {
+      int ret, errsv;
+
 #ifdef G_MAIN_POLL_DEBUG
       poll_timer = NULL;
       if (_g_main_poll_debug)
@@ -4180,13 +4182,15 @@ g_main_context_poll (GMainContext *context,
       LOCK_CONTEXT (context);
 
       poll_func = context->poll_func;
-      
+
       UNLOCK_CONTEXT (context);
-      if ((*poll_func) (fds, n_fds, timeout) < 0 && errno != EINTR)
+      ret = (*poll_func) (fds, n_fds, timeout);
+      errsv = errno;
+      if (ret < 0 && errsv != EINTR)
        {
 #ifndef G_OS_WIN32
          g_warning ("poll(2) failed due to: %s.",
-                    g_strerror (errno));
+                    g_strerror (errsv));
 #else
          /* If g_poll () returns -1, it has already called g_warning() */
 #endif
index cac882f..5979f64 100644 (file)
@@ -275,8 +275,7 @@ myInvalidParameterHandler(const wchar_t *expression,
  *
  * Defines the log domain.
  *
- * For applications, this is typically left as the default %NULL
- * (or "") domain. Libraries should define this so that any messages
+ * Libraries should define this so that any messages
  * which they log can be differentiated from messages from other
  * libraries and application code. But be careful not to define
  * it in any public header files.
@@ -285,6 +284,12 @@ myInvalidParameterHandler(const wchar_t *expression,
  * |[
  * AM_CPPFLAGS = -DG_LOG_DOMAIN=\"Gtk\"
  * ]|
+ *
+ * Applications can choose to leave it as the default %NULL (or "")
+ * domain. However, defining the domain offers the same advantages as
+ * above.
+ *
+
  */
 
 /**
index 265cb92..06ba705 100644 (file)
@@ -129,18 +129,17 @@ g_poll (GPollFD *fds,
 #ifdef G_OS_WIN32
 
 static int
-poll_rest (gboolean  poll_msgs,
-          HANDLE   *handles,
-          gint      nhandles,
-          GPollFD  *fds,
-          guint     nfds,
-          gint      timeout)
+poll_rest (GPollFD *msg_fd,
+           HANDLE  *handles,
+           GPollFD *handle_to_fd[],
+           gint     nhandles,
+           gint     timeout)
 {
   DWORD ready;
   GPollFD *f;
   int recursed_result;
 
-  if (poll_msgs)
+  if (msg_fd != NULL)
     {
       /* Wait for either messages or handles
        * -> Use MsgWaitForMultipleObjectsEx
@@ -164,10 +163,11 @@ poll_rest (gboolean  poll_msgs,
       if (timeout == INFINITE)
        ready = WAIT_FAILED;
       else
-       {
-         SleepEx (timeout, TRUE);
-         ready = WAIT_TIMEOUT;
-       }
+        {
+          /* Wait for the current process to die, more efficient than SleepEx(). */
+          WaitForSingleObjectEx (GetCurrentProcess (), timeout, TRUE);
+          ready = WAIT_TIMEOUT;
+        }
     }
   else
     {
@@ -191,18 +191,16 @@ poll_rest (gboolean  poll_msgs,
             ready,
             (ready == WAIT_FAILED ? " (WAIT_FAILED)" :
              (ready == WAIT_TIMEOUT ? " (WAIT_TIMEOUT)" :
-              (poll_msgs && ready == WAIT_OBJECT_0 + nhandles ? " (msg)" : ""))));
+              (msg_fd != NULL && ready == WAIT_OBJECT_0 + nhandles ? " (msg)" : ""))));
 
   if (ready == WAIT_FAILED)
     return -1;
   else if (ready == WAIT_TIMEOUT ||
           ready == WAIT_IO_COMPLETION)
     return 0;
-  else if (poll_msgs && ready == WAIT_OBJECT_0 + nhandles)
+  else if (msg_fd != NULL && ready == WAIT_OBJECT_0 + nhandles)
     {
-      for (f = fds; f < &fds[nfds]; ++f)
-       if (f->fd == G_WIN32_MSG_HANDLE && f->events & G_IO_IN)
-         f->revents |= G_IO_IN;
+      msg_fd->revents |= G_IO_IN;
 
       /* If we have a timeout, or no handles to poll, be satisfied
        * with just noticing we have messages waiting.
@@ -213,33 +211,31 @@ poll_rest (gboolean  poll_msgs,
       /* If no timeout and handles to poll, recurse to poll them,
        * too.
        */
-      recursed_result = poll_rest (FALSE, handles, nhandles, fds, nfds, 0);
+      recursed_result = poll_rest (NULL, handles, handle_to_fd, nhandles, 0);
       return (recursed_result == -1) ? -1 : 1 + recursed_result;
     }
   else if (ready >= WAIT_OBJECT_0 && ready < WAIT_OBJECT_0 + nhandles)
     {
-      for (f = fds; f < &fds[nfds]; ++f)
-       {
-         if ((HANDLE) f->fd == handles[ready - WAIT_OBJECT_0])
-           {
-             f->revents = f->events;
-             if (_g_main_poll_debug)
-               g_print ("  got event %p\n", (HANDLE) f->fd);
-           }
-       }
+      f = handle_to_fd[ready - WAIT_OBJECT_0];
+      f->revents = f->events;
+      if (_g_main_poll_debug)
+        g_print ("  got event %p\n", (HANDLE) f->fd);
 
       /* If no timeout and polling several handles, recurse to poll
        * the rest of them.
        */
       if (timeout == 0 && nhandles > 1)
        {
-         /* Remove the handle that fired */
-         int i;
-         if (ready < nhandles - 1)
-           for (i = ready - WAIT_OBJECT_0 + 1; i < nhandles; i++)
-             handles[i-1] = handles[i];
-         nhandles--;
-         recursed_result = poll_rest (FALSE, handles, nhandles, fds, nfds, 0);
+         /* Poll the handles with index > ready */
+          HANDLE  *shorter_handles;
+          GPollFD **shorter_handle_to_fd;
+          gint     shorter_nhandles;
+
+          shorter_handles = &handles[ready - WAIT_OBJECT_0 + 1];
+          shorter_handle_to_fd = &handle_to_fd[ready - WAIT_OBJECT_0 + 1];
+          shorter_nhandles = nhandles - (ready - WAIT_OBJECT_0 + 1);
+
+         recursed_result = poll_rest (NULL, shorter_handles, shorter_handle_to_fd, shorter_nhandles, 0);
          return (recursed_result == -1) ? -1 : 1 + recursed_result;
        }
       return 1;
@@ -254,7 +250,8 @@ g_poll (GPollFD *fds,
        gint     timeout)
 {
   HANDLE handles[MAXIMUM_WAIT_OBJECTS];
-  gboolean poll_msgs = FALSE;
+  GPollFD *handle_to_fd[MAXIMUM_WAIT_OBJECTS];
+  GPollFD *msg_fd = NULL;
   GPollFD *f;
   gint nhandles = 0;
   int retval;
@@ -263,57 +260,58 @@ g_poll (GPollFD *fds,
     g_print ("g_poll: waiting for");
 
   for (f = fds; f < &fds[nfds]; ++f)
-    if (f->fd == G_WIN32_MSG_HANDLE && (f->events & G_IO_IN))
-      {
-       if (_g_main_poll_debug && !poll_msgs)
-         g_print (" MSG");
-       poll_msgs = TRUE;
-      }
-    else if (f->fd > 0)
-      {
-        if (nhandles == MAXIMUM_WAIT_OBJECTS)
-          {
-            g_warning ("Too many handles to wait for!\n");
-            break;
-          }
-        else
-          {
-            if (_g_main_poll_debug)
-              g_print (" %p", (HANDLE) f->fd);
-            handles[nhandles++] = (HANDLE) f->fd;
-          }
-      }
+    {
+      if (f->fd == G_WIN32_MSG_HANDLE && (f->events & G_IO_IN))
+        {
+          if (_g_main_poll_debug && msg_fd == NULL)
+            g_print (" MSG");
+          msg_fd = f;
+        }
+      else if (f->fd > 0)
+        {
+          if (nhandles == MAXIMUM_WAIT_OBJECTS)
+            {
+              g_warning ("Too many handles to wait for!\n");
+              break;
+            }
+          else
+            {
+              if (_g_main_poll_debug)
+                g_print (" %p", (HANDLE) f->fd);
+              handle_to_fd[nhandles] = f;
+              handles[nhandles++] = (HANDLE) f->fd;
+            }
+        }
+      f->revents = 0;
+    }
 
   if (_g_main_poll_debug)
     g_print ("\n");
 
-  for (f = fds; f < &fds[nfds]; ++f)
-    f->revents = 0;
-
   if (timeout == -1)
     timeout = INFINITE;
 
   /* Polling for several things? */
-  if (nhandles > 1 || (nhandles > 0 && poll_msgs))
+  if (nhandles > 1 || (nhandles > 0 && msg_fd != NULL))
     {
       /* First check if one or several of them are immediately
        * available
        */
-      retval = poll_rest (poll_msgs, handles, nhandles, fds, nfds, 0);
+      retval = poll_rest (msg_fd, handles, handle_to_fd, nhandles, 0);
 
       /* If not, and we have a significant timeout, poll again with
        * timeout then. Note that this will return indication for only
        * one event, or only for messages.
        */
       if (retval == 0 && (timeout == INFINITE || timeout > 0))
-       retval = poll_rest (poll_msgs, handles, nhandles, fds, nfds, timeout);
+       retval = poll_rest (msg_fd, handles, handle_to_fd, nhandles, timeout);
     }
   else
     {
       /* Just polling for one thing, so no need to check first if
        * available immediately
        */
-      retval = poll_rest (poll_msgs, handles, nhandles, fds, nfds, timeout);
+      retval = poll_rest (msg_fd, handles, handle_to_fd, nhandles, timeout);
     }
 
   if (retval == -1)
index b97b4e0..6ff3597 100644 (file)
@@ -1273,14 +1273,21 @@ allocator_add_slab (Allocator *allocator,
   ChunkLink *chunk;
   SlabInfo *sinfo;
   gsize addr, padding, n_chunks, color = 0;
-  gsize page_size = allocator_aligned_page_size (allocator, SLAB_BPAGE_SIZE (allocator, chunk_size));
-  /* allocate 1 page for the chunks and the slab */
-  gpointer aligned_memory = allocator_memalign (page_size, page_size - NATIVE_MALLOC_PADDING);
-  guint8 *mem = aligned_memory;
+  gsize page_size;
+  int errsv;
+  gpointer aligned_memory;
+  guint8 *mem;
   guint i;
+
+  page_size = allocator_aligned_page_size (allocator, SLAB_BPAGE_SIZE (allocator, chunk_size));
+  /* allocate 1 page for the chunks and the slab */
+  aligned_memory = allocator_memalign (page_size, page_size - NATIVE_MALLOC_PADDING);
+  errsv = errno;
+  mem = aligned_memory;
+
   if (!mem)
     {
-      const gchar *syserr = strerror (errno);
+      const gchar *syserr = strerror (errsv);
       mem_error ("failed to allocate %u bytes (alignment: %u): %s\n",
                  (guint) (page_size - NATIVE_MALLOC_PADDING), (guint) page_size, syserr);
     }
index b621f59..85da03d 100644 (file)
@@ -161,10 +161,10 @@ G_DEFINE_QUARK (g-spawn-exit-error-quark, g_spawn_exit_error)
  * You should call g_spawn_close_pid() on the returned child process
  * reference when you don't need it any more.
  * 
- * If you are writing a GTK+ application, and the program you are
- * spawning is a graphical application, too, then you may want to
- * use gdk_spawn_on_screen() instead to ensure that the spawned program
- * opens its windows on the right screen.
+ * If you are writing a GTK+ application, and the program you are spawning is a
+ * graphical application too, then to ensure that the spawned program opens its
+ * windows on the right screen, you may want to use #GdkAppLaunchContext,
+ * #GAppLaunchcontext, or set the %DISPLAY environment variable.
  *
  * Note that the returned @child_pid on Windows is a handle to the child
  * process and not its identifier. Process handles and process identifiers
@@ -666,10 +666,10 @@ g_spawn_sync (const gchar          *working_directory,
  * If @child_pid is not %NULL and an error does not occur then the returned
  * process reference must be closed using g_spawn_close_pid().
  *
- * If you are writing a GTK+ application, and the program you 
- * are spawning is a graphical application, too, then you may
- * want to use gdk_spawn_on_screen_with_pipes() instead to ensure that
- * the spawned program opens its windows on the right screen.
+ * If you are writing a GTK+ application, and the program you are spawning is a
+ * graphical application too, then to ensure that the spawned program opens its
+ * windows on the right screen, you may want to use #GdkAppLaunchContext,
+ * #GAppLaunchcontext, or set the %DISPLAY environment variable.
  * 
  * Returns: %TRUE on success, %FALSE if an error was set
  */
index cf89bf5..fbcca14 100644 (file)
@@ -1245,7 +1245,17 @@ g_ascii_strtoll (const gchar *nptr,
  *
  * Note that the string may be translated according to the current locale.
  *
- * The value of %errno will not be changed by this function.
+ * The value of %errno will not be changed by this function. However, it may
+ * be changed by intermediate function calls, so you should save its value
+ * as soon as the call returns:
+ * |[
+ *   int saved_errno;
+ *
+ *   ret = read (blah);
+ *   saved_errno = errno;
+ *
+ *   g_strerror (saved_errno);
+ * ]|
  *
  * Returns: a UTF-8 string describing the error code. If the error code
  *     is unknown, it returns a string like "unknown error (<code>)".
index 7a38907..38a7f96 100644 (file)
@@ -678,9 +678,11 @@ main (int    argc,
 
   if (output_filename)
     {
+      int errsv;
       log_fd = g_open (output_filename, O_WRONLY | O_CREAT | O_TRUNC, 0666);
+      errsv = errno;
       if (log_fd < 0)
-        g_error ("Failed to open log file '%s': %s", output_filename, g_strerror (errno));
+        g_error ("Failed to open log file '%s': %s", output_filename, g_strerror (errsv));
     }
 
   test_log_printfe ("<?xml version=\"1.0\"?>\n");
index 70947e0..52a216f 100644 (file)
@@ -1179,9 +1179,10 @@ g_test_init (int    *argc,
   /* sanity check */
   if (test_tap_log)
     {
-      if (test_paths || test_paths_skipped || test_startup_skip_count)
+      if (test_paths || test_startup_skip_count)
         {
-          g_printerr ("%s: options that skip some tests are incompatible with --tap\n",
+          /* Not invoking every test (even if SKIPped) breaks the "1..XX" plan */
+          g_printerr ("%s: -p and --GTestSkipCount options are incompatible with --tap\n",
                       (*argv)[0]);
           exit (1);
         }
@@ -1716,9 +1717,6 @@ g_test_add_vtable (const char       *testpath,
   g_return_if_fail (g_path_is_absolute (testpath));
   g_return_if_fail (fixture_test_func != NULL);
 
-  if (g_slist_find_custom (test_paths_skipped, testpath, (GCompareFunc)g_strcmp0))
-    return;
-
   suite = g_test_get_root();
   segments = g_strsplit (testpath, "/", -1);
   for (ui = 0; segments[ui] != NULL; ui++)
@@ -2153,25 +2151,30 @@ test_case_run (GTestCase *tc)
       test_run_success = G_TEST_RUN_SUCCESS;
       g_clear_pointer (&test_run_msg, g_free);
       g_test_log_set_fatal_handler (NULL, NULL);
-      g_timer_start (test_run_timer);
-      fixture = tc->fixture_size ? g_malloc0 (tc->fixture_size) : tc->test_data;
-      test_run_seed (test_run_seedstr);
-      if (tc->fixture_setup)
-        tc->fixture_setup (fixture, tc->test_data);
-      tc->fixture_test (fixture, tc->test_data);
-      test_trap_clear();
-      while (test_destroy_queue)
+      if (test_paths_skipped && g_slist_find_custom (test_paths_skipped, test_run_name, (GCompareFunc)g_strcmp0))
+        g_test_skip ("by request (-s option)");
+      else
         {
-          DestroyEntry *dentry = test_destroy_queue;
-          test_destroy_queue = dentry->next;
-          dentry->destroy_func (dentry->destroy_data);
-          g_slice_free (DestroyEntry, dentry);
+          g_timer_start (test_run_timer);
+          fixture = tc->fixture_size ? g_malloc0 (tc->fixture_size) : tc->test_data;
+          test_run_seed (test_run_seedstr);
+          if (tc->fixture_setup)
+            tc->fixture_setup (fixture, tc->test_data);
+          tc->fixture_test (fixture, tc->test_data);
+          test_trap_clear();
+          while (test_destroy_queue)
+            {
+              DestroyEntry *dentry = test_destroy_queue;
+              test_destroy_queue = dentry->next;
+              dentry->destroy_func (dentry->destroy_data);
+              g_slice_free (DestroyEntry, dentry);
+            }
+          if (tc->fixture_teardown)
+            tc->fixture_teardown (fixture, tc->test_data);
+          if (tc->fixture_size)
+            g_free (fixture);
+          g_timer_stop (test_run_timer);
         }
-      if (tc->fixture_teardown)
-        tc->fixture_teardown (fixture, tc->test_data);
-      if (tc->fixture_size)
-        g_free (fixture);
-      g_timer_stop (test_run_timer);
       success = test_run_success;
       test_run_success = G_TEST_RUN_FAILURE;
       largs[0] = success; /* OK */
@@ -2694,9 +2697,12 @@ child_read (GIOChannel *io, GIOCondition cond, gpointer user_data)
     {
       for (total = 0; total < nread; total += nwrote)
         {
+          int errsv;
+
           nwrote = fwrite (buf + total, 1, nread - total, echo_file);
+          errsv = errno;
           if (nwrote == 0)
-            g_error ("write failed: %s", g_strerror (errno));
+            g_error ("write failed: %s", g_strerror (errsv));
         }
     }
 
@@ -2817,13 +2823,18 @@ g_test_trap_fork (guint64        usec_timeout,
 #ifdef G_OS_UNIX
   int stdout_pipe[2] = { -1, -1 };
   int stderr_pipe[2] = { -1, -1 };
+  int errsv;
 
   test_trap_clear();
   if (pipe (stdout_pipe) < 0 || pipe (stderr_pipe) < 0)
-    g_error ("failed to create pipes to fork test program: %s", g_strerror (errno));
+    {
+      errsv = errno;
+      g_error ("failed to create pipes to fork test program: %s", g_strerror (errsv));
+    }
   test_trap_last_pid = fork ();
+  errsv = errno;
   if (test_trap_last_pid < 0)
-    g_error ("failed to fork test program: %s", g_strerror (errno));
+    g_error ("failed to fork test program: %s", g_strerror (errsv));
   if (test_trap_last_pid == 0)  /* child */
     {
       int fd0 = -1;
@@ -2836,7 +2847,10 @@ g_test_trap_fork (guint64        usec_timeout,
             g_error ("failed to open /dev/null for stdin redirection");
         }
       if (sane_dup2 (stdout_pipe[1], 1) < 0 || sane_dup2 (stderr_pipe[1], 2) < 0 || (fd0 >= 0 && sane_dup2 (fd0, 0) < 0))
-        g_error ("failed to dup2() in forked test program: %s", g_strerror (errno));
+        {
+          errsv = errno;
+          g_error ("failed to dup2() in forked test program: %s", g_strerror (errsv));
+        }
       if (fd0 >= 3)
         close (fd0);
       if (stdout_pipe[1] >= 3)
index 70b08b6..099bba5 100644 (file)
@@ -221,12 +221,14 @@ void
 g_atexit (GVoidFunc func)
 {
   gint result;
+  int errsv;
 
   result = atexit ((void (*)(void)) func);
+  errsv = errno;
   if (result)
     {
       g_error ("Could not register atexit() function: %s",
-               g_strerror (errno));
+               g_strerror (errsv));
     }
 }
 
diff --git a/glib/libcharset/meson.build b/glib/libcharset/meson.build
new file mode 100644 (file)
index 0000000..e926f21
--- /dev/null
@@ -0,0 +1,4 @@
+charset_lib = static_library('charset', 'localcharset.c',
+  include_directories : configinc,
+  pic : true,
+  c_args : [ '-DLIBDIR="@0@"'.format(get_option('libdir')) ] + glib_hidden_visibility_args)
diff --git a/glib/meson.build b/glib/meson.build
new file mode 100644 (file)
index 0000000..acdb27c
--- /dev/null
@@ -0,0 +1,288 @@
+configure_file(input : 'glibconfig.h.in', output : 'glibconfig.h',
+  install : true,
+  install_dir : join_paths(get_option('libdir'), 'glib-2.0/include'),
+  configuration : glibconfig_conf)
+
+subdir('libcharset')
+if not use_system_pcre
+  subdir('pcre')
+endif
+
+glib_headers = [
+  'glib.h',
+  'glib-unix.h',
+  'glib-object.h',
+]
+install_headers(glib_headers, subdir : 'glib-2.0')
+
+glib_deprecated_headers = [
+  'deprecated/gallocator.h',
+  'deprecated/gcache.h',
+  'deprecated/gcompletion.h',
+  'deprecated/gmain.h',
+  'deprecated/grel.h',
+  'deprecated/gthread.h',
+]
+install_headers(glib_deprecated_headers, subdir : 'glib-2.0/glib/deprecated')
+
+glib_sub_headers = [
+  'glib-autocleanups.h',
+  'galloca.h',
+  'garray.h',
+  'gasyncqueue.h',
+  'gatomic.h',
+  'gbacktrace.h',
+  'gbase64.h',
+  'gbitlock.h',
+  'gbookmarkfile.h',
+  'gbytes.h',
+  'gcharset.h',
+  'gchecksum.h',
+  'gconvert.h',
+  'gdataset.h',
+  'gdate.h',
+  'gdatetime.h',
+  'gdir.h',
+  'genviron.h',
+  'gerror.h',
+  'gfileutils.h',
+  'ggettext.h',
+  'ghash.h',
+  'ghmac.h',
+  'ghook.h',
+  'ghostutils.h',
+  'gi18n.h',
+  'gi18n-lib.h',
+  'giochannel.h',
+  'gkeyfile.h',
+  'glist.h',
+  'gmacros.h',
+  'gmain.h',
+  'gmappedfile.h',
+  'gmarkup.h',
+  'gmem.h',
+  'gmessages.h',
+  'gnode.h',
+  'goption.h',
+  'gpattern.h',
+  'gpoll.h',
+  'gprimes.h',
+  'gqsort.h',
+  'gquark.h',
+  'gqueue.h',
+  'grand.h',
+  'gregex.h',
+  'gscanner.h',
+  'gsequence.h',
+  'gshell.h',
+  'gslice.h',
+  'gslist.h',
+  'gspawn.h',
+  'gstdio.h',
+  'gstrfuncs.h',
+  'gtestutils.h',
+  'gstring.h',
+  'gstringchunk.h',
+  'gthread.h',
+  'gthreadpool.h',
+  'gtimer.h',
+  'gtimezone.h',
+  'gtrashstack.h',
+  'gtree.h',
+  'gtypes.h',
+  'guuid.h',
+  'gunicode.h',
+  'gurifuncs.h',
+  'gutils.h',
+  'gvarianttype.h',
+  'gvariant.h',
+  'gversion.h',
+  'gversionmacros.h',
+  'gwin32.h',
+  'gprintf.h',
+]
+install_headers(glib_sub_headers, subdir : 'glib-2.0/glib')
+
+deprecated_sources = [
+  'deprecated/gallocator.c',
+  'deprecated/gcache.c',
+  'deprecated/gcompletion.c',
+  'deprecated/grel.c',
+  'deprecated/gthread-deprecated.c'
+]
+
+glib_sources = [
+  'garray.c',
+  'gasyncqueue.c',
+  'gatomic.c',
+  'gbacktrace.c',
+  'gbase64.c',
+  'gbitlock.c',
+  'gbookmarkfile.c',
+  'gbytes.c',
+  'gcharset.c',
+  'gchecksum.c',
+  'gconvert.c',
+  'gdataset.c',
+  'gdate.c',
+  'gdatetime.c',
+  'gdir.c',
+  'genviron.c',
+  'gerror.c',
+  'gfileutils.c',
+  'ggettext.c',
+  'ghash.c',
+  'ghmac.c',
+  'ghook.c',
+  'ghostutils.c',
+  'giochannel.c',
+  'gkeyfile.c',
+  'glib-init.c',
+  'glib-private.c',
+  'glist.c',
+  'gmain.c',
+  'gmappedfile.c',
+  'gmarkup.c',
+  'gmem.c',
+  'gmessages.c',
+  'gnode.c',
+  'goption.c',
+  'gpattern.c',
+  'gpoll.c',
+  'gprimes.c',
+  'gqsort.c',
+  'gquark.c',
+  'gqueue.c',
+  'grand.c',
+  'gregex.c',
+  'gscanner.c',
+  'gsequence.c',
+  'gshell.c',
+  'gslice.c',
+  'gslist.c',
+  'gstdio.c',
+  'gstrfuncs.c',
+  'gstring.c',
+  'gstringchunk.c',
+  'gtestutils.c',
+  'gthread.c',
+  'gthreadpool.c',
+  'gtimer.c',
+  'gtimezone.c',
+  'gtranslit.c',
+  'gtrashstack.c',
+  'gtree.c',
+  'guniprop.c',
+  'gutf8.c',
+  'gunibreak.c',
+  'gunicollate.c',
+  'gunidecomp.c',
+  'gurifuncs.c',
+  'gutils.c',
+  'gvariant.c',
+  'gvariant-core.c',
+  'gvariant-parser.c',
+  'gvariant-serialiser.c',
+  'gvarianttypeinfo.c',
+  'gvarianttype.c',
+  'gversion.c',
+  'gwakeup.c',
+  'gprintf.c',
+]
+
+if host_system == 'windows'
+  thread_src = ['gthread-win32.c']
+  plat_src = ['gwin32.c', 'gspawn-win32.c', 'giowin32.c']
+  platform_deps = [winsock2, cc.find_library('winmm')]
+else
+  thread_src = ['gthread-posix.c']
+  plat_src = ['glib-unix.c', 'gspawn.c', 'giounix.c']
+  platform_deps = []
+endif
+
+if enable_dtrace
+  glib_dtrace_obj = dtrace_obj_gen.process('glib_probes.d')
+  glib_dtrace_hdr = dtrace_hdr_gen.process('glib_probes.d')
+else
+  glib_dtrace_obj = []
+  glib_dtrace_hdr = []
+endif
+
+libglib = shared_library('glib-2.0',
+  glib_dtrace_obj, glib_dtrace_hdr,
+  sources : [deprecated_sources, glib_sources, thread_src, plat_src],
+  version : library_version,
+  soversion : soversion,
+  install : true,
+  # intl.lib is not compatible with SAFESEH
+  link_args : noseh_link_args,
+  include_directories : configinc,
+  link_with : charset_lib,
+  dependencies : [pcre, thread_dep, libintl, librt] + libiconv + platform_deps,
+  c_args : ['-DG_LOG_DOMAIN="GLib"', '-DGLIB_COMPILATION', '-DPCRE_STATIC'] + glib_hidden_visibility_args
+)
+
+libglib_dep = declare_dependency(link_with : libglib,
+  # We sadly need to export configinc here because everyone includes <glib/*.h>
+  include_directories : [configinc, glibinc])
+
+# On Windows, glib needs a spawn helper for g_spawn* API
+if host_system == 'windows'
+  if host_machine.cpu_family() == 'x86'
+    executable('gspawn-win32-helper', 'gspawn-win32-helper.c',
+      install : true,
+      gui_app : true,
+      c_args : ['-DHAVE_CONFIG_H=1'],
+      include_directories : configinc,
+      dependencies : [libintl, libglib_dep])
+    executable('gspawn-win32-helper-console', 'gspawn-win32-helper.c',
+      install : true,
+      c_args : ['-DHAVE_CONFIG_H=1', '-DHELPER_CONSOLE'],
+      include_directories : configinc,
+      dependencies : [libintl, libglib_dep])
+  else
+    executable('gspawn-win64-helper', 'gspawn-win32-helper.c',
+      install : true,
+      gui_app : true,
+      c_args : ['-DHAVE_CONFIG_H=1'],
+      include_directories : configinc,
+      dependencies : [libintl, libglib_dep])
+    executable('gspawn-win64-helper-console', 'gspawn-win32-helper.c',
+      install : true,
+      c_args : ['-DHAVE_CONFIG_H=1', '-DHELPER_CONSOLE'],
+      include_directories : configinc,
+      dependencies : [libintl, libglib_dep])
+  endif
+else
+  gtester = executable('gtester', 'gtester.c',
+    install : true,
+    c_args : ['-DHAVE_CONFIG_H=1'],
+    include_directories : configinc,
+    dependencies : [libglib_dep])
+endif
+
+install_data('gtester-report', install_dir : get_option('bindir'))
+install_data('glib_gdb.py', install_dir : join_paths(glib_pkgdatadir, 'gdb'))
+
+gdb_conf = configuration_data()
+gdb_conf.set('datadir', glib_datadir)
+configure_file(
+  input: 'libglib-gdb.py.in',
+  output: 'libglib-2.0.so.@0@-gdb.py'.format(library_version),
+  configuration: gdb_conf,
+  install: true,
+  install_dir: join_paths(get_option('datadir'), 'gdb/auto-load' + glib_libdir)
+)
+
+if enable_systemtap
+  glib_stp = configure_file(input : 'glib.stp.in',
+    output : '@0@.stp'.format(libglib.full_path().split('/').get(-1)),
+    configuration : stp_cdata,
+    install_dir : tapset_install_dir,
+    install : true)
+endif
+
+# gtester doesn't work on native windows
+if cc.get_id() != 'msvc'
+  subdir('tests')
+endif
diff --git a/glib/pcre/meson.build b/glib/pcre/meson.build
new file mode 100644 (file)
index 0000000..5152ecd
--- /dev/null
@@ -0,0 +1,50 @@
+pcre_sources = [
+  'pcre_byte_order.c',
+  'pcre_chartables.c',
+  'pcre_compile.c',
+  'pcre_config.c',
+  'pcre_dfa_exec.c',
+  'pcre_exec.c',
+  'pcre_fullinfo.c',
+  'pcre_get.c',
+  'pcre_globals.c',
+  'pcre_jit_compile.c',
+  'pcre_newline.c',
+  'pcre_ord2utf8.c',
+  'pcre_string_utils.c',
+  'pcre_study.c',
+  'pcre_tables.c',
+  'pcre_valid_utf8.c',
+  'pcre_version.c',
+  'pcre_xclass.c',
+  'pcre.h',
+  'pcre_internal.h',
+  'ucp.h',
+]
+
+libpcre = static_library('pcre',
+  sources : [pcre_sources],
+  include_directories : [configinc, glibinc],
+  pic : true,
+  c_args : [
+    '-DG_LOG_DOMAIN="GLib-GRegex"',
+    '-DHAVE_MEMMOVE',
+    '-DSUPPORT_UCP',
+    '-DSUPPORT_UTF',
+    '-DSUPPORT_UTF8',
+    '-DNEWLINE=-1',
+    '-DMATCH_LIMIT=10000000',
+    '-DMATCH_LIMIT_RECURSION=8192',
+    '-DMAX_NAME_SIZE=32',
+    '-DMAX_NAME_COUNT=10000',
+    '-DMAX_DUPLENGTH=30000',
+    '-DLINK_SIZE=2',
+    '-DPOSIX_MALLOC_THRESHOLD=10',
+    '-DPCRE_STATIC',
+    '-UBSR_ANYCRLF',
+    '-UEBCDIC',
+    '-DGLIB_COMPILATION'
+  ] + glib_hidden_visibility_args
+)
+
+pcre = declare_dependency(link_with : libpcre)
index 1adc50d..b3983d3 100644 (file)
@@ -224,6 +224,10 @@ test_programs += \
        $(NULL)
 endif
 
+if OS_WIN32
+test_programs += gpoll
+endif
+
 # -----------------------------------------------------------------------------
 
 if HAVE_EVENTFD
index cc6028f..b0f9bb7 100644 (file)
@@ -93,10 +93,10 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-TESTS = $(am__EXEEXT_4) $(am__EXEEXT_6)
-installed_test_PROGRAMS = $(am__EXEEXT_10)
-noinst_PROGRAMS = $(am__EXEEXT_11)
-check_PROGRAMS = $(am__EXEEXT_9)
+TESTS = $(am__EXEEXT_5) $(am__EXEEXT_7)
+installed_test_PROGRAMS = $(am__EXEEXT_11)
+noinst_PROGRAMS = $(am__EXEEXT_12)
+check_PROGRAMS = $(am__EXEEXT_10)
 @ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_1 = $(all_test_ltlibs)
 @ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_2 = $(all_test_programs)
 @ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__append_3 = $(all_test_scripts)
@@ -135,9 +135,10 @@ check_PROGRAMS = $(am__EXEEXT_9)
 @HAVE_GCC_TRUE@        autoptr                         \
 @HAVE_GCC_TRUE@        $(NULL)
 
+@OS_WIN32_TRUE@am__append_18 = gpoll
 
 # -----------------------------------------------------------------------------
-@HAVE_EVENTFD_TRUE@am__append_18 = gwakeup-fallback
+@HAVE_EVENTFD_TRUE@am__append_19 = gwakeup-fallback
 subdir = glib/tests
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4macros/attributes.m4 \
@@ -197,7 +198,8 @@ am__EXEEXT_1 =
 @OS_UNIX_TRUE@am__EXEEXT_2 = unix$(EXEEXT) include$(EXEEXT) \
 @OS_UNIX_TRUE@ $(am__EXEEXT_1)
 @HAVE_GCC_TRUE@am__EXEEXT_3 = autoptr$(EXEEXT) $(am__EXEEXT_1)
-am__EXEEXT_4 = array-test$(EXEEXT) asyncqueue$(EXEEXT) base64$(EXEEXT) \
+@OS_WIN32_TRUE@am__EXEEXT_4 = gpoll$(EXEEXT)
+am__EXEEXT_5 = array-test$(EXEEXT) asyncqueue$(EXEEXT) base64$(EXEEXT) \
        bitlock$(EXEEXT) bookmarkfile$(EXEEXT) bytes$(EXEEXT) \
        cache$(EXEEXT) checksum$(EXEEXT) collate$(EXEEXT) \
        cond$(EXEEXT) convert$(EXEEXT) dataset$(EXEEXT) date$(EXEEXT) \
@@ -223,16 +225,17 @@ am__EXEEXT_4 = array-test$(EXEEXT) asyncqueue$(EXEEXT) base64$(EXEEXT) \
        utf8-validate$(EXEEXT) utf8-misc$(EXEEXT) utils$(EXEEXT) \
        unicode$(EXEEXT) uri$(EXEEXT) 1bit-mutex$(EXEEXT) \
        642026$(EXEEXT) $(am__EXEEXT_1) atomic$(EXEEXT) \
-       642026-ec$(EXEEXT) $(am__EXEEXT_2) $(am__EXEEXT_3)
-@HAVE_EVENTFD_TRUE@am__EXEEXT_5 = gwakeup-fallback$(EXEEXT)
-am__EXEEXT_6 = $(am__EXEEXT_1) 1bit-emufutex$(EXEEXT) gwakeup$(EXEEXT) \
-       $(am__EXEEXT_5)
-am__EXEEXT_7 = test-spawn-echo$(EXEEXT) $(am__EXEEXT_1)
-am__EXEEXT_8 = $(am__EXEEXT_4) $(am__EXEEXT_6) $(am__EXEEXT_7)
-@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__EXEEXT_9 = $(am__EXEEXT_8)
-@ENABLE_INSTALLED_TESTS_TRUE@am__EXEEXT_10 = $(am__EXEEXT_4) \
-@ENABLE_INSTALLED_TESTS_TRUE@  $(am__EXEEXT_7)
-@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__EXEEXT_11 = $(am__EXEEXT_8)
+       642026-ec$(EXEEXT) $(am__EXEEXT_2) $(am__EXEEXT_3) \
+       $(am__EXEEXT_4)
+@HAVE_EVENTFD_TRUE@am__EXEEXT_6 = gwakeup-fallback$(EXEEXT)
+am__EXEEXT_7 = $(am__EXEEXT_1) 1bit-emufutex$(EXEEXT) gwakeup$(EXEEXT) \
+       $(am__EXEEXT_6)
+am__EXEEXT_8 = test-spawn-echo$(EXEEXT) $(am__EXEEXT_1)
+am__EXEEXT_9 = $(am__EXEEXT_5) $(am__EXEEXT_7) $(am__EXEEXT_8)
+@ENABLE_ALWAYS_BUILD_TESTS_FALSE@am__EXEEXT_10 = $(am__EXEEXT_9)
+@ENABLE_INSTALLED_TESTS_TRUE@am__EXEEXT_11 = $(am__EXEEXT_5) \
+@ENABLE_INSTALLED_TESTS_TRUE@  $(am__EXEEXT_8)
+@ENABLE_ALWAYS_BUILD_TESTS_TRUE@am__EXEEXT_12 = $(am__EXEEXT_9)
 PROGRAMS = $(installed_test_PROGRAMS) $(noinst_PROGRAMS)
 am_1bit_emufutex_OBJECTS = 1bit_emufutex-1bit-mutex.$(OBJEXT)
 1bit_emufutex_OBJECTS = $(am_1bit_emufutex_OBJECTS)
@@ -343,6 +346,10 @@ gdatetime_SOURCES = gdatetime.c
 gdatetime_OBJECTS = gdatetime.$(OBJEXT)
 gdatetime_LDADD = $(LDADD)
 gdatetime_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la
+gpoll_SOURCES = gpoll.c
+gpoll_OBJECTS = gpoll.$(OBJEXT)
+gpoll_LDADD = $(LDADD)
+gpoll_DEPENDENCIES = $(top_builddir)/glib/libglib-2.0.la
 guuid_SOURCES = guuid.c
 guuid_OBJECTS = guuid.$(OBJEXT)
 guuid_LDADD = $(LDADD)
@@ -652,7 +659,7 @@ SOURCES = $(1bit_emufutex_SOURCES) 1bit-mutex.c 642026.c \
        $(642026_ec_SOURCES) array-test.c asyncqueue.c atomic.c \
        autoptr.c base64.c bitlock.c bookmarkfile.c bytes.c cache.c \
        checksum.c collate.c cond.c convert.c dataset.c date.c dir.c \
-       environment.c error.c fileutils.c gdatetime.c guuid.c \
+       environment.c error.c fileutils.c gdatetime.c gpoll.c guuid.c \
        gvariant.c $(gwakeup_SOURCES) $(gwakeup_fallback_SOURCES) \
        hash.c hmac.c hook.c hostutils.c include.c keyfile.c list.c \
        logging.c mainloop.c mappedfile.c markup.c markup-collect.c \
@@ -670,7 +677,7 @@ DIST_SOURCES = $(1bit_emufutex_SOURCES) 1bit-mutex.c 642026.c \
        $(642026_ec_SOURCES) array-test.c asyncqueue.c atomic.c \
        autoptr.c base64.c bitlock.c bookmarkfile.c bytes.c cache.c \
        checksum.c collate.c cond.c convert.c dataset.c date.c dir.c \
-       environment.c error.c fileutils.c gdatetime.c guuid.c \
+       environment.c error.c fileutils.c gdatetime.c gpoll.c guuid.c \
        gvariant.c $(gwakeup_SOURCES) \
        $(am__gwakeup_fallback_SOURCES_DIST) hash.c hmac.c hook.c \
        hostutils.c include.c keyfile.c list.c logging.c mainloop.c \
@@ -1240,9 +1247,9 @@ test_programs = array-test asyncqueue base64 bitlock bookmarkfile \
        strfuncs string testing test-printf thread timeout timer tree \
        utf8-performance utf8-pointer utf8-validate utf8-misc utils \
        unicode uri 1bit-mutex 642026 $(NULL) atomic 642026-ec \
-       $(am__append_15) $(am__append_17)
+       $(am__append_15) $(am__append_17) $(am__append_18)
 uninstalled_test_programs = $(NULL) 1bit-emufutex gwakeup \
-       $(am__append_18)
+       $(am__append_19)
 markup_tests = \
        fail-1 fail-2 fail-3 fail-4 fail-5 \
        fail-6 fail-7 fail-8 fail-9 fail-10 \
@@ -1541,6 +1548,10 @@ gdatetime$(EXEEXT): $(gdatetime_OBJECTS) $(gdatetime_DEPENDENCIES) $(EXTRA_gdate
        @rm -f gdatetime$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(gdatetime_OBJECTS) $(gdatetime_LDADD) $(LIBS)
 
+gpoll$(EXEEXT): $(gpoll_OBJECTS) $(gpoll_DEPENDENCIES) $(EXTRA_gpoll_DEPENDENCIES) 
+       @rm -f gpoll$(EXEEXT)
+       $(AM_V_CCLD)$(LINK) $(gpoll_OBJECTS) $(gpoll_LDADD) $(LIBS)
+
 guuid$(EXEEXT): $(guuid_OBJECTS) $(guuid_DEPENDENCIES) $(EXTRA_guuid_DEPENDENCIES) 
        @rm -f guuid$(EXEEXT)
        $(AM_V_CCLD)$(LINK) $(guuid_OBJECTS) $(guuid_LDADD) $(LIBS)
@@ -1850,6 +1861,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/error.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fileutils.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gdatetime.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gpoll.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/guuid.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gvariant.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/gwakeup.Po@am__quote@
@@ -2829,6 +2841,13 @@ autoptr.log: autoptr$(EXEEXT)
        --log-file $$b.log --trs-file $$b.trs \
        $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
        "$$tst" $(AM_TESTS_FD_REDIRECT)
+gpoll.log: gpoll$(EXEEXT)
+       @p='gpoll$(EXEEXT)'; \
+       b='gpoll'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
 1bit-emufutex.log: 1bit-emufutex$(EXEEXT)
        @p='1bit-emufutex$(EXEEXT)'; \
        b='1bit-emufutex'; \
index 4c987a3..2fe22cc 100644 (file)
@@ -444,7 +444,10 @@ test_mkdir_with_parents_1 (const gchar *base)
     g_error ("failed, %s exists, cannot test g_mkdir_with_parents\n", p2);
 
   if (g_mkdir_with_parents (p2, 0777) == -1)
-    g_error ("failed, g_mkdir_with_parents(%s) failed: %s\n", p2, g_strerror (errno));
+    {
+      int errsv = errno;
+      g_error ("failed, g_mkdir_with_parents(%s) failed: %s\n", p2, g_strerror (errsv));
+    }
 
   if (!g_file_test (p2, G_FILE_TEST_IS_DIR))
     g_error ("failed, g_mkdir_with_parents(%s) succeeded, but %s is not a directory\n", p2, p2);
diff --git a/glib/tests/gpoll.c b/glib/tests/gpoll.c
new file mode 100644 (file)
index 0000000..58656d3
--- /dev/null
@@ -0,0 +1,624 @@
+/* Unit test for W32 version of g_poll()
+ *
+ * Copyright © 2017 Руслан Ижбулатов <lrn1986@gmail.com>
+ *
+ * This is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * This is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with this library; if not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <glib.h>
+#include <Winsock2.h>
+
+#define NUM_POLLEES 63
+#define NUM_POLLFDS 64
+
+#define ASYNC_CONNECT_OK(r) (r == 0 || (r < 0 && GetLastError () == WSAEWOULDBLOCK))
+
+#define REPEAT 1000
+
+static void
+init_networking (void)
+{
+  WSADATA wsadata;
+
+  if (WSAStartup (MAKEWORD (2, 0), &wsadata) != 0)
+    g_error ("Windows Sockets could not be initialized");
+}
+
+static void
+prepare_fds (SOCKET  sockets[],
+             GPollFD fds[],
+             int     num_pollees)
+{
+  gint i;
+
+  for (i = 0; i < num_pollees; i++)
+    {
+      fds[i].fd = (gintptr) WSACreateEvent ();
+      g_assert (WSAEventSelect (sockets[i], (HANDLE) fds[i].fd, FD_READ | FD_CLOSE) == 0);
+    }
+}
+
+static void
+reset_fds (GPollFD fds[],
+           int     num_pollees)
+{
+  gint i;
+
+  for (i = 0; i < num_pollees; i++)
+    {
+      WSAResetEvent ((HANDLE) fds[i].fd);
+      fds[i].events =  G_IO_IN | G_IO_OUT | G_IO_ERR;
+      fds[i].revents = 0;
+    }
+}
+
+static void
+reset_fds_msg (GPollFD fds[],
+               int     num_pollfds)
+{
+  fds[num_pollfds - 1].fd = G_WIN32_MSG_HANDLE;
+  fds[num_pollfds - 1].events = G_IO_IN;
+  fds[num_pollfds - 1].revents = 0;
+}
+
+static void
+check_fds (SOCKET  sockets[],
+           GPollFD fds[],
+           int     num_pollees)
+{
+  gint i;
+
+  for (i = 0; i < num_pollees; i++)
+    {
+      if (fds[i].revents != 0)
+        {
+          WSANETWORKEVENTS events;
+          g_assert (WSAEnumNetworkEvents (sockets[i], 0, &events) == 0);
+
+          fds[i].revents = 0;
+          if (events.lNetworkEvents & (FD_READ | FD_ACCEPT))
+            fds[i].revents |= G_IO_IN;
+
+          if (events.lNetworkEvents & FD_WRITE)
+            fds[i].revents |= G_IO_OUT;
+          else
+            {
+              /* We have called WSAEnumNetworkEvents() above but it didn't
+               * set FD_WRITE.
+               */
+              if (events.lNetworkEvents & FD_CONNECT)
+                {
+                  if (events.iErrorCode[FD_CONNECT_BIT] == 0)
+                    fds[i].revents |= G_IO_OUT;
+                  else
+                    fds[i].revents |= (G_IO_HUP | G_IO_ERR);
+                }
+              if (fds[i].revents == 0 && (events.lNetworkEvents & (FD_CLOSE)))
+                fds[i].revents |= G_IO_HUP;
+            }
+        }
+    }
+}
+
+static void
+prepare_sockets (SOCKET  sockets[],
+                 SOCKET  opp_sockets[],
+                 GPollFD fds[],
+                 int     num_pollees)
+{
+  gint i;
+  SOCKET server;
+  struct sockaddr_in sa;
+  unsigned long ul = 1;
+  int sa_size;
+  int r;
+
+  server = socket (AF_INET, SOCK_STREAM, IPPROTO_TCP);
+  g_assert (server != INVALID_SOCKET);
+
+  memset(&sa, 0, sizeof sa);
+
+  sa.sin_family = AF_INET;
+  sa.sin_port = 0;
+  sa.sin_addr.s_addr = htonl (INADDR_LOOPBACK);
+  sa_size = sizeof (sa);
+
+  g_assert (bind (server, (const struct sockaddr *) &sa, sa_size) == 0);
+  g_assert (getsockname (server, (struct sockaddr *) &sa, &sa_size) == 0);
+  g_assert (listen (server, 1) == 0);
+
+  for (i = 0; i < num_pollees; i++)
+    {
+      opp_sockets[i] = socket (AF_INET, SOCK_STREAM, IPPROTO_TCP);
+      g_assert (opp_sockets[i] != INVALID_SOCKET);
+      g_assert (ioctlsocket (opp_sockets[i], FIONBIO, &ul) == 0);
+
+      r = connect (opp_sockets[i], (const struct sockaddr *) &sa, sizeof (sa));
+      g_assert (ASYNC_CONNECT_OK (r));
+
+      sockets[i] = accept (server, NULL, NULL);
+      g_assert (sockets[i] != INVALID_SOCKET);
+      g_assert (ioctlsocket (sockets[i], FIONBIO, &ul) == 0);
+    }
+
+  closesocket (server);
+}
+
+static void
+cleanup_sockets (SOCKET sockets[],
+                 SOCKET opp_sockets[],
+                 int    num_pollees)
+{
+  gint i;
+
+  for (i = 0; i < num_pollees; i++)
+    {
+      closesocket (sockets[i]);
+      closesocket (opp_sockets[i]);
+    }
+}
+
+static void
+bucketize (gint64 val,
+           gint   buckets[],
+           gint64 bucket_limits[],
+           gint   count)
+{
+  gint i;
+
+  if (val > bucket_limits[count - 1])
+    {
+      buckets[count - 1] += 1;
+      return;
+    }
+
+  for (i = count - 1; i > 0; i--)
+    if (val < bucket_limits[i] && val >= bucket_limits[i - 1])
+      {
+        buckets[i] += 1;
+        return;
+      }
+
+  buckets[0] += 1;
+}
+
+static void
+print_buckets (gint   buckets[],
+               gint64 bucket_limits[],
+               gint   count)
+{
+  gint i;
+
+  for (i = 0; i < count; i++)
+    if (i < count - 1)
+      g_print ("%-4lld-%4lld|", i == 0 ? 0 : bucket_limits[i - 1], bucket_limits[i] - 1);
+    else
+      g_print ("  >= %-4lld|", bucket_limits[i - 1]);
+
+  g_print ("\n");
+
+  for (i = 0; i < count; i++)
+    {
+      gint len;
+      gint padding;
+      gint j;
+      if (buckets[i] < 10)
+        len = 1;
+      else if (buckets[i] < 100)
+        len = 2;
+      else if (buckets[i] < 1000)
+        len = 3;
+      else
+        len = 4;
+      padding = 9 - len;
+      for (j = 0; j < padding / 2; j++)
+        g_print (" ");
+      if (buckets[i] != 0)
+        g_print ("%*d", len, buckets[i]);
+      else
+        g_print (" ");
+      for (j = padding / 2; j < padding; j++)
+        g_print (" ");
+      g_print (" ");
+    }
+
+  g_print ("\n\n");
+}
+
+static void
+test_gpoll (void)
+{
+  SOCKET sockets[NUM_POLLEES];
+  GPollFD fds[NUM_POLLFDS];
+  SOCKET opp_sockets[NUM_POLLEES];
+  gint i;
+  gint activatable;
+  gint64 times[REPEAT][2];
+#define BUCKET_COUNT 25
+  gint64 bucket_limits[BUCKET_COUNT] = {3, 5, 10, 15, 20, 25, 30, 35, 40, 50, 60, 70, 80, 90, 100, 120, 150, 180, 220, 280, 350, 450, 600, 800, 1000};
+  gint   buckets[BUCKET_COUNT];
+  gint64 times_avg = 0, times_min = G_MAXINT64, times_max = 0;
+
+  prepare_sockets (sockets, opp_sockets, fds, NUM_POLLEES);
+  prepare_fds (sockets, fds, NUM_POLLEES);
+
+  times_avg = 0;
+  times_min = G_MAXINT64;
+  times_max = 0;
+  memset (buckets, 0, sizeof (gint) * BUCKET_COUNT);
+
+  for (i = 0; i < REPEAT; i++)
+    {
+      gint r;
+      gint64 diff;
+
+      reset_fds (fds, NUM_POLLEES);
+      reset_fds_msg (fds, NUM_POLLFDS);
+      times[i][0] = g_get_monotonic_time ();
+      r = g_poll (fds, NUM_POLLFDS, 0);
+      times[i][1] = g_get_monotonic_time ();
+      g_assert (r == 0);
+      diff = times[i][1] - times[i][0];
+      if (times_min > diff)
+        times_min = diff;
+      if (times_max < diff)
+        times_max = diff;
+      times_avg += diff;
+      bucketize (diff, buckets, bucket_limits, BUCKET_COUNT);
+    }
+
+  times_avg /= NUM_POLLEES;
+  g_print ("\nempty poll time:\n%4lldns - %4lldns, average %4lldns\n", times_min, times_max, times_avg);
+  print_buckets (buckets, bucket_limits, BUCKET_COUNT);
+
+  times_avg = 0;
+  times_min = G_MAXINT64;
+  times_max = 0;
+  memset (buckets, 0, sizeof (gint) * BUCKET_COUNT);
+
+  activatable = 0;
+
+  for (i = 0; i < REPEAT; i++)
+    {
+      gint r, s, v, t;
+      gint64 diff;
+      MSG msg;
+      gboolean found_app;
+
+      reset_fds (fds, NUM_POLLEES);
+      reset_fds_msg (fds, NUM_POLLFDS);
+      s = send (opp_sockets[activatable], (const char *) &t, 1, 0);
+      g_assert (PostMessage (NULL, WM_APP, 1, 2));
+      /* This is to ensure that all sockets catch up, otherwise some might not poll active */
+      g_usleep (G_USEC_PER_SEC / 1000);
+
+      times[i][0] = g_get_monotonic_time ();
+      r = g_poll (fds, NUM_POLLFDS, 1000);
+      times[i][1] = g_get_monotonic_time ();
+
+      check_fds (sockets, fds, NUM_POLLEES);
+      v = recv (sockets[activatable], (char *) &t, 1, 0);
+      found_app = FALSE;
+      while (!found_app && PeekMessage (&msg, NULL, 0, 0, PM_REMOVE))
+        if (msg.message == WM_APP && msg.wParam == 1 && msg.lParam == 2)
+          found_app = TRUE;
+      g_assert (s == 1);
+      g_assert (r == 2);
+      g_assert (v == 1);
+      g_assert (found_app);
+
+      reset_fds (fds, NUM_POLLEES);
+      reset_fds_msg (fds, NUM_POLLFDS);
+      r = g_poll (fds, NUM_POLLFDS, 0);
+      check_fds (sockets, fds, NUM_POLLEES);
+      g_assert (r == 0);
+      diff = times[i][1] - times[i][0];
+      if (times_min > diff)
+        times_min = diff;
+      if (times_max < diff)
+        times_max = diff;
+      times_avg += diff;
+      activatable = (activatable + 1) % NUM_POLLEES;
+      bucketize (diff, buckets, bucket_limits, BUCKET_COUNT);
+    }
+
+  times_avg /= NUM_POLLEES;
+  g_print ("1-socket + msg poll time:\n%4lldns - %4lldns, average %4lldns\n", times_min, times_max, times_avg);
+  print_buckets (buckets, bucket_limits, BUCKET_COUNT);
+
+  times_avg = 0;
+  times_min = G_MAXINT64;
+  times_max = 0;
+  memset (buckets, 0, sizeof (gint) * BUCKET_COUNT);
+
+  activatable = 0;
+
+  for (i = 0; i < REPEAT; i++)
+    {
+      gint r, s, v, t;
+      gint64 diff;
+
+      reset_fds (fds, NUM_POLLEES);
+      reset_fds_msg (fds, NUM_POLLFDS);
+      s = send (opp_sockets[activatable], (const char *) &t, 1, 0);
+
+      g_usleep (G_USEC_PER_SEC / 1000);
+
+      times[i][0] = g_get_monotonic_time ();
+      r = g_poll (fds, NUM_POLLFDS, 1000);
+      times[i][1] = g_get_monotonic_time ();
+
+      check_fds (sockets, fds, NUM_POLLEES);
+      v = recv (sockets[activatable], (char *) &t, 1, 0);
+      g_assert (s == 1);
+      g_assert (r == 1);
+      g_assert (v == 1);
+
+      reset_fds (fds, NUM_POLLEES);
+      reset_fds_msg (fds, NUM_POLLFDS);
+      r = g_poll (fds, NUM_POLLFDS, 0);
+      check_fds (sockets, fds, NUM_POLLEES);
+      g_assert (r == 0);
+
+      diff = times[i][1] - times[i][0];
+      if (times_min > diff)
+        times_min = diff;
+      if (times_max < diff)
+        times_max = diff;
+      times_avg += diff;
+      activatable = (activatable + 1) % NUM_POLLEES;
+      bucketize (diff, buckets, bucket_limits, BUCKET_COUNT);
+    }
+
+  times_avg /= NUM_POLLEES;
+  g_print ("1-socket poll time:\n%4lldns - %4lldns, average %4lldns\n", times_min, times_max, times_avg);
+  print_buckets (buckets, bucket_limits, BUCKET_COUNT);
+
+  times_avg = 0;
+  times_min = G_MAXINT64;
+  times_max = 0;
+  memset (buckets, 0, sizeof (gint) * BUCKET_COUNT);
+
+  for (i = 0; i < REPEAT; i++)
+    {
+      gint r, s, v, t;
+      gint64 diff;
+      gint j;
+
+      reset_fds (fds, NUM_POLLEES);
+      reset_fds_msg (fds, NUM_POLLFDS);
+      s = v = 0;
+
+      for (j = 0; j < NUM_POLLEES / 2; j++)
+        s += send (opp_sockets[j], (const char *) &t, 1, 0) == 1 ? 1 : 0;
+
+      g_usleep (G_USEC_PER_SEC / 1000);
+
+      times[i][0] = g_get_monotonic_time ();
+      r = g_poll (fds, NUM_POLLFDS, 1000);
+      times[i][1] = g_get_monotonic_time ();
+      check_fds (sockets, fds, NUM_POLLEES);
+      for (j = 0; j < NUM_POLLEES / 2; j++)
+        v += recv (sockets[j], (char *) &t, 1, 0) == 1 ? 1 : 0;
+      g_assert (s == NUM_POLLEES / 2);
+      g_assert (r == NUM_POLLEES / 2);
+      g_assert (v == NUM_POLLEES / 2);
+
+      reset_fds (fds, NUM_POLLEES);
+      reset_fds_msg (fds, NUM_POLLFDS);
+      r = g_poll (fds, NUM_POLLFDS, 0);
+      check_fds (sockets, fds, NUM_POLLEES);
+      g_assert (r == 0);
+
+      diff = times[i][1] - times[i][0];
+      if (times_min > diff)
+        times_min = diff;
+      if (times_max < diff)
+        times_max = diff;
+      times_avg += diff;
+      bucketize (diff, buckets, bucket_limits, BUCKET_COUNT);
+    }
+
+  times_avg /= NUM_POLLEES;
+  g_print ("half-socket poll time:\n%4lldns - %4lldns, average %4lldns\n", times_min, times_max, times_avg);
+  print_buckets (buckets, bucket_limits, BUCKET_COUNT);
+
+  times_avg = 0;
+  times_min = G_MAXINT64;
+  times_max = 0;
+  memset (buckets, 0, sizeof (gint) * BUCKET_COUNT);
+
+  for (i = 0; i < REPEAT; i++)
+    {
+      gint r, s, v, t;
+      gint64 diff;
+      gint j;
+      MSG msg;
+      gboolean found_app;
+
+      reset_fds (fds, NUM_POLLEES);
+      reset_fds_msg (fds, NUM_POLLFDS);
+      s = v = 0;
+
+      for (j = 0; j < NUM_POLLEES / 2; j++)
+        s += send (opp_sockets[j], (const char *) &t, 1, 0) == 1 ? 1 : 0;
+      g_assert (PostMessage (NULL, WM_APP, 1, 2));
+
+      /* This is to ensure that all sockets catch up, otherwise some might not poll active */
+      g_usleep (G_USEC_PER_SEC / 1000);
+
+      times[i][0] = g_get_monotonic_time ();
+      r = g_poll (fds, NUM_POLLFDS, 1000);
+      times[i][1] = g_get_monotonic_time ();
+      check_fds (sockets, fds, NUM_POLLEES);
+      for (j = 0; j < NUM_POLLEES / 2; j++)
+        v += recv (sockets[j], (char *) &t, 1, 0) == 1 ? 1 : 0;
+      found_app = FALSE;
+      while (!found_app && PeekMessage (&msg, NULL, 0, 0, PM_REMOVE))
+        if (msg.message == WM_APP && msg.wParam == 1 && msg.lParam == 2)
+          found_app = TRUE;
+      g_assert (s == NUM_POLLEES / 2);
+      g_assert (r == NUM_POLLEES / 2 + 1);
+      g_assert (v == NUM_POLLEES / 2);
+      g_assert (found_app);
+
+      reset_fds (fds, NUM_POLLEES);
+      reset_fds_msg (fds, NUM_POLLFDS);
+      r = g_poll (fds, NUM_POLLFDS, 0);
+      check_fds (sockets, fds, NUM_POLLEES);
+      g_assert (r == 0);
+
+      diff = times[i][1] - times[i][0];
+      if (times_min > diff)
+        times_min = diff;
+      if (times_max < diff)
+        times_max = diff;
+      times_avg += diff;
+      bucketize (diff, buckets, bucket_limits, BUCKET_COUNT);
+    }
+
+  times_avg /= NUM_POLLEES;
+  g_print ("half-socket + msg poll time:\n%4lldns - %4lldns, average %4lldns\n", times_min, times_max, times_avg);
+  print_buckets (buckets, bucket_limits, BUCKET_COUNT);
+
+  times_avg = 0;
+  times_min = G_MAXINT64;
+  times_max = 0;
+  memset (buckets, 0, sizeof (gint) * BUCKET_COUNT);
+
+  for (i = 0; i < REPEAT; i++)
+    {
+      gint r, s, v, t;
+      gint64 diff;
+      gint j;
+
+      reset_fds (fds, NUM_POLLEES);
+      reset_fds_msg (fds, NUM_POLLFDS);
+      s = v = 0;
+
+      for (j = 0; j < NUM_POLLEES; j++)
+        s += send (opp_sockets[j], (const char *) &t, 1, 0) == 1 ? 1 : 0;
+
+      g_usleep (G_USEC_PER_SEC / 1000);
+
+      times[i][0] = g_get_monotonic_time ();
+      r = g_poll (fds, NUM_POLLFDS, 1000);
+      times[i][1] = g_get_monotonic_time ();
+      check_fds (sockets, fds, NUM_POLLEES);
+      for (j = 0; j < NUM_POLLEES; j++)
+        v += recv (sockets[j], (char *) &t, 1, 0) == 1 ? 1 : 0;
+      g_assert (s == NUM_POLLEES);
+      g_assert (r == NUM_POLLEES);
+      g_assert (v == NUM_POLLEES);
+
+      reset_fds (fds, NUM_POLLEES);
+      reset_fds_msg (fds, NUM_POLLFDS);
+      r = g_poll (fds, NUM_POLLFDS, 0);
+      check_fds (sockets, fds, NUM_POLLEES);
+      g_assert (r == 0);
+
+      diff = times[i][1] - times[i][0];
+      if (times_min > diff)
+        times_min = diff;
+      if (times_max < diff)
+        times_max = diff;
+      times_avg += diff;
+      bucketize (diff, buckets, bucket_limits, BUCKET_COUNT);
+    }
+
+  times_avg /= NUM_POLLEES;
+  g_print ("%d-socket poll time: \n%4lldns - %4lldns, average %4lldns\n", NUM_POLLEES, times_min, times_max, times_avg);
+  print_buckets (buckets, bucket_limits, BUCKET_COUNT);
+
+  activatable = 0;
+  times_avg = 0;
+  times_min = G_MAXINT64;
+  times_max = 0;
+  memset (buckets, 0, sizeof (gint) * BUCKET_COUNT);
+
+  for (i = 0; i < REPEAT; i++)
+    {
+      gint r, s, v, t;
+      gint64 diff;
+      gint j;
+      MSG msg;
+      gboolean found_app;
+
+      reset_fds (fds, NUM_POLLEES);
+      reset_fds_msg (fds, NUM_POLLFDS);
+      s = v = 0;
+
+      for (j = 0; j < activatable; j++)
+        s += send (opp_sockets[j], (const char *) &t, 1, 0) == 1 ? 1 : 0;
+      g_assert (PostMessage (NULL, WM_APP, 1, 2));
+
+      g_usleep (G_USEC_PER_SEC / 1000);
+
+      times[i][0] = g_get_monotonic_time ();
+      r = g_poll (fds, NUM_POLLFDS, 1000);
+      times[i][1] = g_get_monotonic_time ();
+      check_fds (sockets, fds, NUM_POLLEES);
+      for (j = 0; j < activatable; j++)
+        v += recv (sockets[j], (char *) &t, 1, 0) == 1 ? 1 : 0;
+      found_app = FALSE;
+      while (!found_app && PeekMessage (&msg, NULL, 0, 0, PM_REMOVE))
+        if (msg.message == WM_APP && msg.wParam == 1 && msg.lParam == 2)
+          found_app = TRUE;
+      g_assert (s == activatable);
+      g_assert (r == activatable + 1);
+      g_assert (v == activatable);
+      g_assert (found_app);
+
+      reset_fds (fds, NUM_POLLEES);
+      reset_fds_msg (fds, NUM_POLLFDS);
+      r = g_poll (fds, NUM_POLLFDS, 0);
+      check_fds (sockets, fds, NUM_POLLEES);
+      g_assert (r == 0);
+
+      diff = times[i][1] - times[i][0];
+      if (times_min > diff)
+        times_min = diff;
+      if (times_max < diff)
+        times_max = diff;
+      times_avg += diff;
+      bucketize (diff, buckets, bucket_limits, BUCKET_COUNT);
+      activatable = (activatable + 1) % NUM_POLLEES;
+    }
+
+  times_avg /= NUM_POLLEES;
+  g_print ("variable socket number + msg poll time: \n%4lldns - %4lldns, average %4lldns\n", times_min, times_max, times_avg);
+  print_buckets (buckets, bucket_limits, BUCKET_COUNT);
+
+  cleanup_sockets (sockets, opp_sockets, NUM_POLLEES);
+}
+
+int
+main (int   argc,
+      char *argv[])
+{
+  int result;
+  GMainContext *ctx;
+
+  g_test_init (&argc, &argv, NULL);
+  init_networking ();
+  ctx = g_main_context_new ();
+
+  g_test_add_func ("/gpoll/gpoll", test_gpoll);
+
+  result = g_test_run ();
+
+  g_main_context_unref (ctx);
+
+  return result;
+}
diff --git a/glib/tests/meson.build b/glib/tests/meson.build
new file mode 100644 (file)
index 0000000..a78d9c0
--- /dev/null
@@ -0,0 +1,185 @@
+glib_tests = [
+  'array-test',
+  'asyncqueue',
+  'base64',
+  'bitlock',
+  'bookmarkfile',
+  'bytes',
+  'cache',
+  'checksum',
+  'collate',
+  'cond',
+  'convert',
+  'dataset',
+  'date',
+  'dir',
+  'environment',
+  'error',
+  'fileutils',
+  'gdatetime',
+  'gvariant',
+  'hash',
+  'hmac',
+  'hook',
+  'hostutils',
+  'keyfile',
+  'list',
+  'logging',
+  'mainloop',
+  'mappedfile',
+  'markup',
+  'markup-parse',
+  'markup-collect',
+  'markup-escape',
+  'markup-subparser',
+  'mem-overflow',
+  'mutex',
+  'node',
+  'once',
+  'option-context',
+  'option-argv0',
+  'overflow',
+  # overflow-fallback handled separately below
+  'pattern',
+  'private',
+  'protocol',
+  'queue',
+  'rand',
+  'rec-mutex',
+  'regex',
+  'rwlock',
+  'scannerapi',
+  'search-utils',
+  'sequence',
+  'shell',
+  'slice',
+  'slist',
+  'sort',
+  'spawn-multithreaded',
+  'spawn-singlethread',
+  'strfuncs',
+  'string',
+  'testing',
+  'test-printf',
+  'thread',
+  'timeout',
+  'timer',
+  'tree',
+  'utf8-performance',
+  'utf8-pointer',
+  'utf8-validate',
+  'utf8-misc',
+  'utils',
+  'unicode',
+  'uri',
+  '1bit-mutex',
+  '642026',
+]
+
+if host_machine.system() != 'windows'
+  glib_tests += [ 'unix', 'include' ]
+endif
+
+if cc.get_id() != 'msvc'
+  glib_tests += [ 'autoptr' ]
+endif
+
+# FIXME: use new environment() object
+# Not entirely random of course, but at least it changes over time
+random_number = minor_version + meson.version().split('.').get(1).to_int()
+
+test_env = [
+  'G_TEST_SRCDIR=' + meson.current_source_dir(),
+  'G_TEST_BUILDDIR=' + meson.current_build_dir(),
+  'G_DEBUG=gc-friendly',
+  'MALLOC_CHECK_=2',
+  'MALLOC_PERTURB_=@0@'.format(random_number % 256),
+]
+
+test_cargs = ['-DHAVE_CONFIG_H=1', '-DG_LOG_DOMAIN="GLib"']
+
+foreach test_name : glib_tests
+  deps = [libm, thread_dep, libglib_dep]
+  if test_name == 'regex'
+    deps += [pcre]
+  endif
+  exe = executable(test_name, '@0@.c'.format(test_name),
+    c_args : ['-DPCRE_STATIC'] + test_cargs,
+    dependencies : deps,
+    install : false,
+  )
+  test(test_name, exe, env : test_env)
+endforeach
+
+c_args_atomic = []
+if cc.get_id() == 'gcc'
+  c_args_atomic += ['-Wstrict-aliasing=2']
+endif
+
+deps = [libm, thread_dep, libglib_dep]
+
+exe = executable('atomic', 'atomic.c',
+  c_args : test_cargs + c_args_atomic,
+  dependencies : deps,
+)
+test('atomic', exe, env : test_env)
+
+# FIXME: consolidate all of these into the array
+exe = executable('overflow-fallback', 'overflow.c',
+  c_args : test_cargs + ['-D_GLIB_TEST_OVERFLOW_FALLBACK'],
+  dependencies : deps,
+  install : false,
+)
+test('overflow-fallback', exe, env : test_env)
+
+exe = executable('642026-ec', '642026.c',
+  c_args : test_cargs + ['-DG_ERRORCHECK_MUTEXES'],
+  dependencies : deps,
+  install : false,
+)
+test('642026-ec', exe, env : test_env)
+
+exe = executable('1bit-emufutex', '1bit-mutex.c',
+  c_args : test_cargs + ['-DTEST_EMULATED_FUTEX'],
+  dependencies : deps,
+  install : false,
+)
+test('1bit-emufutex', exe, env : test_env)
+
+exe = executable('gwakeup', 'gwakeuptest.c', '../gwakeup.c',
+  c_args : test_cargs,
+  dependencies : deps,
+  install : false)
+test('gwakeup', exe, env : test_env)
+
+if glib_conf.has('HAVE_EVENTFD')
+  exe = executable('gwakeup-fallback', 'gwakeuptest.c', '../gwakeup.c',
+    c_args : test_cargs + ['-DTEST_EVENTFD_FALLBACK'],
+    dependencies : deps,
+    install : false,
+  )
+  test('gwakeup-fallback', exe, env : test_env)
+endif
+
+# test-spawn-echo helper binary required by the spawn tests above
+executable('test-spawn-echo', 'test-spawn-echo.c',
+  c_args : test_cargs,
+  dependencies : deps,
+  install : false,
+)
+
+# some testing of gtester functionality
+if not meson.is_cross_build() and host_system != 'windows'
+  xmllint = find_program('xmllint', required: false)
+  if xmllint.found()
+    tmpsample_xml = custom_target('tmpsample.xml',
+      output : 'tmpsample.xml',
+      build_by_default : true, # hack around meson bug, see PR #1335
+      command : [ gtester, '-k', '--quiet', '-o', '@OUTPUT@',
+                  '--test-arg=--gtester-selftest', gtester])
+
+    test('gtester-xmllint-check', xmllint,
+      args : ['--noout', tmpsample_xml],
+      env : test_env)
+  endif
+endif
index d6286ff..18ebe61 100644 (file)
@@ -143,7 +143,8 @@ test_message (void)
 
   if (0 > pipe (pipes))
     {
-      g_error ("error creating pipe: %s", g_strerror (errno));
+      int errsv = errno;
+      g_error ("error creating pipe: %s", g_strerror (errsv));
     }
 
   argv[1] = g_strdup_printf ("--GTestLogFD=%u", pipes[1]);
@@ -265,7 +266,8 @@ test_error (void)
 
       if (0 > pipe (pipes))
         {
-          g_error ("error creating pipe: %s", g_strerror (errno));
+          int errsv = errno;
+          g_error ("error creating pipe: %s", g_strerror (errsv));
         }
 
       argv[1] = g_strdup_printf ("--GTestLogFD=%u", pipes[1]);
index 1c87376..ef26dab 100644 (file)
@@ -1,8 +1,8 @@
 #include <winver.h>
 
 VS_VERSION_INFO VERSIONINFO
-  FILEVERSION 2,53,4,0
-  PRODUCTVERSION 2,53,4,0
+  FILEVERSION 2,53,5,0
+  PRODUCTVERSION 2,53,5,0
   FILEFLAGSMASK 0
   FILEFLAGS 0
   FILEOS VOS__WINDOWS32
@@ -15,12 +15,12 @@ VS_VERSION_INFO VERSIONINFO
       BEGIN
        VALUE "CompanyName", "The GLib developer community"
        VALUE "FileDescription", "GModule"
-       VALUE "FileVersion", "2.53.4.0"
+       VALUE "FileVersion", "2.53.5.0"
        VALUE "InternalName", "libgmodule-2.0-0"
        VALUE "LegalCopyright", "Copyright © 1998-2011 Tim Janik and others."
        VALUE "OriginalFilename", "libgmodule-2.0-0.dll"
        VALUE "ProductName", "GLib"
-       VALUE "ProductVersion", "2.53.4"
+       VALUE "ProductVersion", "2.53.5"
       END
     END
     BLOCK "VarFileInfo"
diff --git a/gmodule/meson.build b/gmodule/meson.build
new file mode 100644 (file)
index 0000000..191bca2
--- /dev/null
@@ -0,0 +1,97 @@
+gmoduleconf_conf = configuration_data()
+
+g_module_need_uscore = 0
+g_module_broken_rtld_global = 0
+g_module_have_dlerror = 0
+
+libdl_dep = [ ]
+g_module_lib_args = [ ]
+g_module_impl = ''
+
+dlopen_dlsym_test_code = '''
+#include <dlfcn.h>
+int glib_underscore_test (void) { return 42; }
+int main (int argc, char ** argv) {
+  void *f1 = (void*)0, *f2 = (void*)0, *handle;
+  handle = dlopen ((void*)0, 0);
+  if (handle) {
+    f1 = dlsym (handle, "glib_underscore_test");
+    f2 = dlsym (handle, "_glib_underscore_test");
+  }
+  return (!f2 || f1);
+}'''
+
+# On Windows force native WIN32 shared lib loader
+if host_system == 'windows'
+  g_module_impl = 'G_MODULE_IMPL_WIN32'
+# Force native AIX library loader
+# dlopen() filepath must be of the form /path/libname.a(libname.so)
+elif host_system == 'aix'
+  g_module_impl = 'G_MODULE_IMPL_AR'
+elif cc.links(dlopen_dlsym_test_code, name : 'dlopen() and dlsym() in system libraries')
+  g_module_impl = 'G_MODULE_IMPL_DL'
+# NSLinkModule (dyld) in system libraries (Darwin)
+elif cc.has_function('NSLinkModule')
+  g_module_impl = 'G_MODULE_IMPL_DYLD'
+  g_module_need_uscore = 1
+elif cc.links(dlopen_dlsym_test_code, args : '-ldl', name : 'dlopen() and dlsym() in libdl')
+  g_module_impl = 'G_MODULE_IMPL_DL'
+  libdl_dep = cc.find_library('dl')
+  g_module_lib_args = '-ldl'
+endif
+
+# additional checks for G_MODULE_IMPL_DL
+if g_module_impl == 'G_MODULE_IMPL_DL'
+  # FIXME: check for OSF1/5.0 RTLD_GLOBAL brokenness (is this still relevant?)
+
+  # Check whether we need preceding underscores
+  if cc.get_id() == 'msvc'
+    message('Building for MSVC: assuming that symbols are prefixed with underscore')
+    g_module_need_uscore = 1
+  elif meson.has_exe_wrapper()
+    # FIXME: communicate result via stdout instead of return value, so non-0 return is not printed in bold red
+    rres = cc.run(dlopen_dlsym_test_code,
+                  args : g_module_lib_args,
+                  name : 'dlsym() preceding underscores')
+    if host_system == 'windows' or rres.returncode() == 0
+      g_module_need_uscore = 1
+    endif
+  else
+    message('Cross-compiling: assuming that symbols aren\'t prefixed with underscore')
+    g_module_need_uscore = 0
+  endif
+
+  if cc.has_function('dlerror', args : g_module_lib_args)
+    g_module_have_dlerror = 1
+  endif
+endif
+
+# Done, have we got an implementation?
+if g_module_impl == ''
+  g_module_impl = '0'
+  message('WARNING: No suitable GModule implementation found!')
+endif
+
+gmoduleconf_conf.set('G_MODULE_IMPL', g_module_impl)
+gmoduleconf_conf.set('G_MODULE_SUPPORTED', g_module_impl != '0')
+gmoduleconf_conf.set('G_MODULE_HAVE_DLERROR', g_module_have_dlerror)
+gmoduleconf_conf.set('G_MODULE_NEED_USCORE', g_module_need_uscore)
+gmoduleconf_conf.set('G_MODULE_BROKEN_RTLD_GLOBAL', g_module_broken_rtld_global)
+
+gmoduleconf_h = configure_file(input : 'gmoduleconf.h.in',
+                               output : 'gmoduleconf.h',
+                               configuration : gmoduleconf_conf)
+
+install_headers(['gmodule.h'], subdir : 'glib-2.0')
+
+libgmodule = shared_library('gmodule-2.0',
+  sources : ['gmodule.c'],
+  version : library_version,
+  soversion : soversion,
+  install : true,
+  include_directories : [configinc, gmoduleinc],
+  dependencies : [libdl_dep, libglib_dep],
+  c_args : ['-DG_LOG_DOMAIN="GModule"', '-DG_DISABLE_DEPRECATED'] + glib_hidden_visibility_args)
+
+libgmodule_dep = declare_dependency(link_with : libgmodule,
+  include_directories : gmoduleinc)
index 907957b..ed6de0a 100755 (executable)
@@ -556,7 +556,7 @@ def generate_prototype(retval, params,
                        va_marshal=False):
     '''Generate a marshaller declaration with the given @visibility. If @va_marshal
     is True, the marshaller will use variadic arguments in place of a GValue array.'''
-    signature = []
+    signature = ['G_BEGIN_DECLS']
 
     if visibility == Visibility.INTERNAL:
         signature += ['G_GNUC_INTERNAL']
@@ -585,6 +585,8 @@ def generate_prototype(retval, params,
         signature += [indent('int       n_params,', level=width, fill=' ')]
         signature += [indent('GType    *param_types);', level=width, fill=' ')]
 
+    signature += ['G_END_DECLS']
+
     return signature
 
 
index 3b9a30c..d4bfd11 100755 (executable)
@@ -14,6 +14,10 @@ import os
 import re
 import sys
 import tempfile
+import io
+import errno
+import codecs
+import locale
 
 VERSION_STR = '''glib-mkenums version @VERSION@
 glib-genmarshal comes with ABSOLUTELY NO WARRANTY.
@@ -22,7 +26,13 @@ the GNU General Public License which can be found in the
 GLib source package. Sources, examples and contact
 information are available at http://www.gtk.org'''
 
-output_stream = sys.stdout
+# Python 2 defaults to ASCII in case stdout is redirected.
+# This should make it match Python 3, which uses the locale encoding.
+if sys.stdout.encoding is None:
+    output_stream = codecs.getwriter(
+        locale.getpreferredencoding())(sys.stdout)
+else:
+    output_stream = sys.stdout
 
 # pylint: disable=too-few-public-methods
 class Color:
@@ -73,7 +83,7 @@ def write_output(output):
 
 # glib-mkenums.py
 # Information about the current enumeration
-flags = False               # Is enumeration a bitmask?
+flags = None # Is enumeration a bitmask?
 option_underscore_name = '' # Overriden underscore variant of the enum name
                             # for example to fix the cases we don't get the
                             # mixed-case -> underscorized transform right.
@@ -147,7 +157,7 @@ def parse_entries(file, file_name):
         m = re.match(r'\#include\s*<([^>]*)>', line)
         if m:
             newfilename = os.path.join("..", m.group(1))
-            newfile = open(newfilename)
+            newfile = io.open(newfilename, encoding="utf-8")
 
             if not parse_entries(newfile, newfilename):
                 return False
@@ -186,7 +196,7 @@ def parse_entries(file, file_name):
                 value = groups[1]
             if len(groups) > 2:
                 options = groups[2]
-            if not flags and value is not None and '<<' in value:
+            if flags is None and value is not None and '<<' in value:
                 seenbitshift = 1
 
             if options is not None:
@@ -243,7 +253,7 @@ def read_template_file(file):
            }
     in_ = 'junk'
 
-    ifile = open(file)
+    ifile = io.open(file, encoding="utf-8")
     for line in ifile:
         m = re.match(r'\/\*\*\*\s+(BEGIN|END)\s+([\w-]+)\s+\*\*\*\/', line)
         if m:
@@ -364,7 +374,9 @@ if output is not None:
     out_suffix = '_' + os.path.splitext(out_fn)[1]
     if out_dir == '':
         out_dir = '.'
-    tmpfile = tempfile.NamedTemporaryFile(dir=out_dir, delete=False)
+    fd, filename = tempfile.mkstemp(dir=out_dir)
+    os.close(fd)
+    tmpfile = io.open(filename, "w", encoding="utf-8")
     output_stream = tmpfile
 else:
     tmpfile = None
@@ -397,10 +409,12 @@ def process_file(curfilename):
     firstenum = True
 
     try:
-        curfile = open(curfilename)
-    except FileNotFoundError:
-        print_warning('No file "{}" found.'.format(curfilename))
-        return
+        curfile = io.open(curfilename, encoding="utf-8")
+    except IOError as e:
+        if e.errno == errno.ENOENT:
+            print_warning('No file "{}" found.'.format(curfilename))
+            return
+        raise
 
     while True:
         line = curfile.readline()
@@ -435,12 +449,17 @@ def process_file(curfilename):
                 if 'skip' in options:
                     continue
                 enum_prefix = options.get('prefix', None)
-                flags = 'flags' in options
+                flags = options.get('flags', None)
+                if 'flags' in options:
+                    if flags is None:
+                        flags = 1
+                    else:
+                        flags = int(flags)
                 option_lowercase_name = options.get('lowercase_name', None)
                 option_underscore_name = options.get('underscore_name', None)
             else:
                 enum_prefix = None
-                flags = False
+                flags = None
                 option_lowercase_name = None
                 option_underscore_name = None
 
@@ -465,7 +484,7 @@ def process_file(curfilename):
             parse_entries(curfile, curfilename)
 
             # figure out if this was a flags or enums enumeration
-            if not flags:
+            if flags is None:
                 flags = seenbitshift
 
             # Autogenerate a prefix
index ec7cf4f..43fbaeb 100644 (file)
@@ -1,8 +1,8 @@
 #include <winver.h>
 
 VS_VERSION_INFO VERSIONINFO
-  FILEVERSION 2,53,4,0
-  PRODUCTVERSION 2,53,4,0
+  FILEVERSION 2,53,5,0
+  PRODUCTVERSION 2,53,5,0
   FILEFLAGSMASK 0
   FILEFLAGS 0
   FILEOS VOS__WINDOWS32
@@ -15,12 +15,12 @@ VS_VERSION_INFO VERSIONINFO
       BEGIN
        VALUE "CompanyName", "The GLib developer community"
        VALUE "FileDescription", "GObject"
-       VALUE "FileVersion", "2.53.4.0"
+       VALUE "FileVersion", "2.53.5.0"
        VALUE "InternalName", "libgobject-2.0-0"
        VALUE "LegalCopyright", "Copyright © 1998-2011 Tim Janik, Red Hat, Inc. and others"
        VALUE "OriginalFilename", "libgobject-2.0-0.dll"
        VALUE "ProductName", "GLib"
-       VALUE "ProductVersion", "2.53.4"
+       VALUE "ProductVersion", "2.53.5"
       END
     END
     BLOCK "VarFileInfo"
diff --git a/gobject/meson.build b/gobject/meson.build
new file mode 100644 (file)
index 0000000..0d39f2b
--- /dev/null
@@ -0,0 +1,116 @@
+gobject_install_headers = files([
+  'gobject-autocleanups.h',
+  'glib-types.h',
+  'gbinding.h',
+  'gboxed.h',
+  'gclosure.h',
+  'genums.h',
+  'gmarshal.h',
+  'gobject.h',
+  'gparam.h',
+  'gparamspecs.h',
+  'gsignal.h',
+  'gsourceclosure.h',
+  'gtype.h',
+  'gtypemodule.h',
+  'gtypeplugin.h',
+  'gvalue.h',
+  'gvaluearray.h',
+  'gvaluecollector.h',
+  'gvaluetypes.h',
+  'gobjectnotifyqueue.c', # sic
+])
+install_headers(gobject_install_headers, subdir : 'glib-2.0/gobject')
+
+gobject_c_sources = [
+#  'gobject_probes.d',
+  'gatomicarray.c',
+  'gbinding.c',
+  'gboxed.c',
+  'gclosure.c',
+  'genums.c',
+  'gmarshal.c',
+  'gobject.c',
+  'gobject_trace.h',
+  'gparam.c',
+  'gparamspecs.c',
+  'gsignal.c',
+  'gsourceclosure.c',
+  'gtype.c',
+  'gtypemodule.c',
+  'gtypeplugin.c',
+  'gvalue.c',
+  'gvaluearray.c',
+  'gvaluetransform.c',
+  'gvaluetypes.c',
+]
+
+if enable_dtrace
+  gobject_dtrace_obj = dtrace_obj_gen.process('gobject_probes.d')
+  gobject_dtrace_hdr = dtrace_hdr_gen.process('gobject_probes.d')
+else
+  gobject_dtrace_obj = []
+  gobject_dtrace_hdr = []
+endif
+
+libgobject = shared_library('gobject-2.0',
+  gobject_dtrace_obj, gobject_dtrace_hdr,
+  sources : [gobject_c_sources],
+  version : library_version,
+  soversion : soversion,
+  install : true,
+  include_directories : [configinc],
+  dependencies : [libintl, libffi_dep, libglib_dep],
+  c_args : ['-DG_LOG_DOMAIN="GLib-GObject"', '-DGOBJECT_COMPILATION'] + glib_hidden_visibility_args)
+
+libgobject_dep = declare_dependency(link_with : libgobject,
+  include_directories : gobjectinc)
+
+python_tools = [
+  'glib-genmarshal',
+  'glib-mkenums',
+]
+
+python_tools_conf = configuration_data()
+python_tools_conf.set('VERSION', glib_version)
+python_tools_conf.set('PYTHON', python.path())
+
+foreach tool: python_tools
+  # FIXME: Ensure we set the appropriate permissions
+  tool_bin = configure_file(
+    input : tool + '.in',
+    output : tool,
+    configuration : python_tools_conf,
+    install : true,
+    install_dir : glib_bindir,
+  )
+
+  # Set variables for later use
+  set_variable(tool.underscorify(), tool_bin)
+endforeach
+
+executable('gobject-query', 'gobject-query.c',
+  install : true,
+  c_args : ['-DHAVE_CONFIG_H=1'],
+  dependencies : [libglib_dep, libgobject_dep])
+
+install_data('gobject_gdb.py', install_dir : join_paths(glib_pkgdatadir, 'gdb'))
+gdb_conf = configuration_data()
+gdb_conf.set('datadir', glib_datadir)
+configure_file(
+  input: 'libgobject-gdb.py.in',
+  output: 'libgobject-2.0.so.@0@-gdb.py'.format(library_version),
+  configuration: gdb_conf,
+  install: true,
+  install_dir: join_paths(get_option('datadir'), 'gdb/auto-load/' + glib_libdir)
+)
+
+if enable_systemtap
+  gobject_stp = configure_file(input : 'gobject.stp.in',
+    output : '@0@.stp'.format(libgobject.full_path().split('/').get(-1)),
+    configuration : stp_cdata,
+    install_dir : tapset_install_dir,
+    install : true)
+endif
+
+subdir('tests')
diff --git a/gobject/tests/meson.build b/gobject/tests/meson.build
new file mode 100644 (file)
index 0000000..3d99ef3
--- /dev/null
@@ -0,0 +1,80 @@
+gobject_tests = [
+  'qdata',
+  'boxed',
+  'enums',
+  'param',
+  'threadtests',
+  'dynamictests',
+  'binding',
+  'properties',
+  'reference',
+  'value',
+  'type',
+  'private',
+  'closure',
+  'object',
+  'signal-handler',
+  'ifaceproperties',
+]
+
+# FIXME: use new environment() object
+# FIXME: put common bits of test environment() in one location
+# Not entirely random of course, but at least it changes over time
+random_number = minor_version + meson.version().split('.').get(1).to_int()
+
+test_env = [
+  'G_TEST_SRCDIR=' + meson.current_source_dir(),
+  'G_TEST_BUILDDIR=' + meson.current_build_dir(),
+  'G_DEBUG=gc-friendly',
+  'MALLOC_CHECK_=2',
+  'MALLOC_PERTURB_=@0@'.format(random_number % 256),
+]
+
+foreach test_name : gobject_tests
+  deps = [libm, thread_dep, libglib_dep, libgobject_dep]
+  test_src = '@0@.c'.format(test_name)
+  # private is an existing or reserved target it seems
+  if test_name == 'private'
+    test_name = 'gobject-private'
+  endif
+  exe = executable(test_name, test_src,
+      c_args : ['-DHAVE_CONFIG_H=1', '-DG_LOG_DOMAIN="GLib-GObject"'],
+      dependencies : deps,
+  )
+  test(test_name, exe, env : test_env)
+endforeach
+
+marshalers_h = custom_target('marshalers_h',
+  output : 'marshalers.h',
+  input : 'marshalers.list',
+  command : [
+    python, glib_genmarshal,
+    '--prefix=test',
+    '--valist-marshallers',
+    '--output=@OUTPUT@',
+    '--quiet',
+    '--header',
+    '@INPUT@',
+  ],
+)
+marshalers_c = custom_target('marshalers_c',
+  output : 'marshalers.c',
+  input : 'marshalers.list',
+  command : [
+    python, glib_genmarshal,
+    '--prefix=test',
+    '--valist-marshallers',
+    '--include-header=marshalers.h',
+    '--output=@OUTPUT@',
+    '--quiet',
+    '--body',
+    '@INPUT@',
+  ],
+)
+
+exe = executable('signals',
+    'signals.c', marshalers_h, marshalers_c,
+    c_args : ['-DHAVE_CONFIG_H=1', '-DG_LOG_DOMAIN="GLib-GObject"'],
+    dependencies : deps,
+)
+test('signals', exe, env : test_env)
index 6200d67..30b10bd 100644 (file)
@@ -1,8 +1,8 @@
 #include <winver.h>
 
 VS_VERSION_INFO VERSIONINFO
-  FILEVERSION 2,53,4,0
-  PRODUCTVERSION 2,53,4,0
+  FILEVERSION 2,53,5,0
+  PRODUCTVERSION 2,53,5,0
   FILEFLAGSMASK 0
   FILEFLAGS 0
   FILEOS VOS__WINDOWS32
@@ -15,12 +15,12 @@ VS_VERSION_INFO VERSIONINFO
       BEGIN
        VALUE "CompanyName", "The GLib developer community"
        VALUE "FileDescription", "GThread"
-       VALUE "FileVersion", "2.53.4.0"
+       VALUE "FileVersion", "2.53.5.0"
        VALUE "InternalName", "libgthread-2.0-0"
        VALUE "LegalCopyright", "Copyright © 1995-2011 Peter Mattis, Spencer Kimball, Josh MacDonald, Sebastian Wilhelmi and others."
        VALUE "OriginalFilename", "libgthread-2.0-0.dll"
        VALUE "ProductName", "GLib"
-       VALUE "ProductVersion", "2.53.4"
+       VALUE "ProductVersion", "2.53.5"
       END
     END
     BLOCK "VarFileInfo"
diff --git a/gthread/meson.build b/gthread/meson.build
new file mode 100644 (file)
index 0000000..8ccac33
--- /dev/null
@@ -0,0 +1,9 @@
+# Just a skeleton lib for backwards compatibility since all the functionaliy
+# has been moved into glib now
+libgthread = shared_library('gthread-2.0',
+  sources : [ 'gthread-impl.c' ],
+  version : library_version,
+  soversion : soversion,
+  install : true,
+  dependencies : [libglib_dep],
+  c_args : ['-DG_LOG_DOMAIN="GThread"' ] + glib_hidden_visibility_args)
diff --git a/meson.build b/meson.build
new file mode 100644 (file)
index 0000000..35baaaa
--- /dev/null
@@ -0,0 +1,1542 @@
+project('glib', 'c', 'cpp',
+  version : '2.53.5',
+  meson_version : '>= 0.38.1',
+  default_options : [
+    'warning_level=1',
+    'c_std=gnu89'
+  ]
+)
+
+cc = meson.get_compiler('c')
+cxx = meson.get_compiler('cpp')
+
+if cc.get_id() == 'msvc'
+  # Ignore several spurious warnings for things glib does very commonly
+  # If a warning is completely useless and spammy, use '/wdXXXX' to suppress it
+  # If a warning is harmless but hard to fix, use '/woXXXX' so it's shown once
+  # NOTE: Only add warnings here if you are sure they're spurious
+  add_project_arguments('/wd4035', '/wd4715', '/wd4116',
+    '/wd4046', '/wd4068', '/wo4090', '/FImsvc_recommended_pragmas.h',language : 'c')
+  # Disable SAFESEH with MSVC for plugins and libs that use external deps that
+  # are built with MinGW
+  noseh_link_args = ['/SAFESEH:NO']
+else
+  noseh_link_args = []
+  # -mms-bitfields vs -fnative-struct ?
+endif
+
+host_system = host_machine.system()
+
+glib_version = meson.project_version()
+glib_api_version = '2.0'
+version_arr = glib_version.split('.')
+major_version = version_arr[0].to_int()
+minor_version = version_arr[1].to_int()
+micro_version = version_arr[2].to_int()
+
+interface_age = minor_version.is_odd() ? 0 : micro_version
+binary_age = 100 * minor_version + micro_version
+
+soversion = 0
+# Maintain compatibility with previous libtool versioning
+# current = minor * 100 + micro
+library_version = '@0@.@1@.@2@'.format(soversion, binary_age - interface_age, interface_age)
+
+configinc = include_directories('.')
+glibinc = include_directories('glib')
+gobjectinc = include_directories('gobject')
+gmoduleinc = include_directories('gmodule')
+gioinc = include_directories('gio')
+
+glib_prefix = get_option('prefix')
+glib_bindir = join_paths(glib_prefix, get_option('bindir'))
+glib_libdir = join_paths(glib_prefix, get_option('libdir'))
+glib_datadir = join_paths(glib_prefix, get_option('datadir'))
+glib_pkgdatadir = join_paths(glib_datadir, 'glib-2.0')
+glib_includedir = join_paths(glib_prefix, get_option('includedir'))
+glib_giomodulesdir = join_paths(glib_libdir, 'gio', 'modules')
+
+glib_pkgconfigreldir = join_paths(glib_libdir, 'pkgconfig')
+
+########################
+# Configuration begins #
+########################
+glib_conf = configuration_data()
+glibconfig_conf = configuration_data()
+
+# accumulated list of defines as we check for them, so we can easily
+# use them later in test programs (autoconf does this automatically)
+glib_conf_prefix = ''
+
+glib_conf.set('GLIB_VERSION', glib_version)
+glib_conf.set('GLIB_MAJOR_VERSION', major_version)
+glib_conf.set('GLIB_MINOR_VERSION', minor_version)
+glib_conf.set('GLIB_MICRO_VERSION', micro_version)
+glib_conf.set('GLIB_INTERFACE_AGE', interface_age)
+glib_conf.set('GLIB_BINARY_AGE', binary_age)
+glib_conf.set_quoted('GETTEXT_PACKAGE', 'glib20')
+glib_conf.set_quoted('PACKAGE_BUGREPORT', 'http://bugzilla.gnome.org/enter_bug.cgi?product=glib')
+glib_conf.set_quoted('PACKAGE_NAME', 'glib')
+glib_conf.set_quoted('PACKAGE_STRING', 'glib @0@'.format(meson.project_version()))
+glib_conf.set_quoted('PACKAGE_TARNAME', 'glib')
+glib_conf.set_quoted('PACKAGE_URL', '')
+glib_conf.set_quoted('PACKAGE_VERSION', meson.project_version())
+glib_conf.set('ENABLE_NLS', 1)
+glib_conf.set('HAVE_GOOD_PRINTF', 1) # FIXME
+
+# Variables used in glib-gettextize and pkg-config files
+# These should not contain " quotes around the values
+glib_conf.set('PACKAGE', 'glib')
+glib_conf.set('VERSION', meson.project_version())
+glib_conf.set('prefix', glib_prefix)
+glib_conf.set('exec_prefix', glib_prefix)
+glib_conf.set('libdir', glib_libdir)
+glib_conf.set('includedir', glib_includedir)
+glib_conf.set('datadir', glib_datadir)
+glib_conf.set('datarootdir', glib_datadir)
+
+glib_conf.set('_GNU_SOURCE', 1)
+
+if host_system == 'windows'
+  # Poll doesn't work on devices on Windows
+  glib_conf.set('BROKEN_POLL', true)
+endif
+
+# Detect and set symbol visibility
+glib_hidden_visibility_args = []
+if get_option('default_library') != 'static'
+  if host_system == 'windows'
+    glib_conf.set('DLL_EXPORT', true)
+    if cc.get_id() == 'msvc'
+      glib_conf.set('_GLIB_EXTERN', '__declspec(dllexport) extern')
+    elif cc.has_argument('-fvisibility=hidden')
+      glib_conf.set('_GLIB_EXTERN', '__attribute__((visibility("default"))) __declspec(dllexport) extern')
+      glib_hidden_visibility_args = ['-fvisibility=hidden']
+    endif
+  elif cc.has_argument('-fvisibility=hidden')
+    glib_conf.set('_GLIB_EXTERN', '__attribute__((visibility("default"))) extern')
+    glib_hidden_visibility_args = ['-fvisibility=hidden']
+  endif
+endif
+
+# FIXME: what about Cygwin (G_WITH_CYGWIN)
+if host_system == 'windows'
+  glib_os = '''#define G_OS_WIN32
+#define G_PLATFORM_WIN32'''
+else
+  glib_os = '#define G_OS_UNIX'
+endif
+glibconfig_conf.set('glib_os', glib_os)
+
+# check for header files
+
+headers = [
+  'stdlib.h',
+  'string.h',
+  'strings.h',
+  'memory.h',
+  'alloca.h',
+  'locale.h',
+  'xlocale.h',
+  'float.h',
+  'limits.h',
+  'pwd.h',
+  'grp.h',
+  'poll.h',
+  'termios.h',
+  'sys/param.h',
+  'sys/resource.h',
+  'mach/mach_time.h',
+  'sys/select.h',
+  'stdint.h',
+  'inttypes.h',
+  'sched.h',
+  'malloc.h',
+  'sys/vfs.h',
+  'sys/vmount.h',
+  'sys/statfs.h',
+  'sys/statvfs.h',
+  'sys/filio.h',
+  'mntent.h',
+  'sys/mnttab.h',
+  'sys/vfstab.h',
+  'sys/mntctl.h',
+  'fstab.h',
+  'linux/magic.h',
+  'termios.h',
+  'dirent.h', # MSC does not come with this by default
+  'sys/time.h', # MSC does not come with this by default
+  'sys/times.h',
+  'sys/wait.h',
+  'unistd.h',
+  'values.h',
+  'sys/types.h',
+  'sys/uio.h',
+  'sys/mkdev.h',
+  'sys/mount.h',
+  'sys/sysctl.h',
+  'crt_externs.h',
+  'sys/inotify.h',
+  'sys/event.h',
+  'sys/stat.h',
+]
+
+foreach h : headers
+  if cc.has_header(h)
+    define = 'HAVE_' + h.underscorify().to_upper()
+    glib_conf.set(define, 1)
+    glib_conf_prefix = glib_conf_prefix + '#define @0@ 1\n'.format(define)
+  endif
+endforeach
+
+if cc.has_header('linux/netlink.h')
+  glib_conf.set('HAVE_NETLINK', 1)
+endif
+
+if glib_conf.has('HAVE_LOCALE_H')
+  if cc.has_header_symbol('locale.h', 'LC_MESSAGES')
+    glib_conf.set('HAVE_LC_MESSAGES', 1)
+  endif
+endif
+
+struct_stat_blkprefix = '''
+#include <sys/types.h>
+#include <sys/stat.h>
+#ifdef HAVE_UNISTD_H
+#include <unistd.h>
+#endif
+#ifdef HAVE_SYS_STATFS_H
+#include <sys/statfs.h>
+#endif
+#ifdef HAVE_SYS_PARAM_H
+#include <sys/param.h>
+#endif
+#ifdef HAVE_SYS_MOUNT_H
+#include <sys/mount.h>
+#endif
+'''
+
+struct_members = [
+  [ 'stat', 'st_mtimensec' ],
+  [ 'stat', 'st_mtim.tv_nsec' ],
+  [ 'stat', 'st_atimensec' ],
+  [ 'stat', 'st_atim.tv_nsec' ],
+  [ 'stat', 'st_ctimensec' ],
+  [ 'stat', 'st_ctim.tv_nsec' ],
+  [ 'stat', 'st_birthtime' ],
+  [ 'stat', 'st_birthtimensec' ],
+  [ 'stat', 'st_birthtim' ],
+  [ 'stat', 'st_birthtim.tv_nsec' ],
+  [ 'stat', 'st_blksize', struct_stat_blkprefix ],
+  [ 'stat', 'st_blocks', struct_stat_blkprefix ],
+  [ 'statfs', 'f_fstypename', struct_stat_blkprefix ],
+  [ 'statfs', 'f_bavail', struct_stat_blkprefix ],
+  [ 'dirent', 'd_type', '''#include <sys/types.h>
+                           #include <dirent.h>''' ],
+]
+
+foreach m : struct_members
+  header_check_prefix = glib_conf_prefix
+  if m.length() == 3
+    header_check_prefix = header_check_prefix + m[2]
+  else
+    header_check_prefix = header_check_prefix + '#include <sys/stat.h>'
+  endif
+  if cc.has_member('struct ' + m[0], m[1], prefix : header_check_prefix)
+    define = 'HAVE_STRUCT_@0@_@1@'.format(m[0].to_upper(), m[1].underscorify().to_upper())
+    glib_conf.set(define, 1)
+    glib_conf_prefix = glib_conf_prefix + '#define @0@ 1\n'.format(define)
+  else
+  endif
+endforeach
+
+functions = [
+  'alloca',
+  'mmap',
+  'posix_memalign',
+  'memalign',
+  'valloc',
+  'fsync',
+  'pipe2',
+  'issetugid',
+  'timegm',
+  'gmtime_r',
+  'strerror_r',
+  'lstat',
+  'strsignal',
+  'vsnprintf',
+  'stpcpy',
+  'poll',
+  'vasprintf',
+  'setenv',
+  'unsetenv',
+  'getc_unlocked',
+  'readlink',
+  'symlink',
+  'fdwalk',
+  'lchmod',
+  'lchown',
+  'fchmod',
+  'fchown',
+  'utimes',
+  'getresuid',
+  'getmntent_r',
+  'setmntent',
+  'endmntent',
+  'hasmntopt',
+  'getfsstat',
+  'getvfsstat',
+  'fallocate',
+  'localtime_r',
+  'gmtime_r',
+  'getpwuid_r',
+  'getgrgid_r',
+  'prlimit',
+  'strnlen',
+  'wcslen',
+  'wcsnlen',
+  'mbrtowc',
+  'wcrtomb',
+  'newlocale',
+  'uselocale',
+  'strtod_l',
+  'strtoll_l',
+  'strtoull_l',
+  'inotify_init1',
+  'kqueue',
+  'kevent',
+  'endservent',
+  'if_indextoname',
+  'if_nametoindex',
+  'sendmmsg',
+  'recvmmsg',
+]
+
+if glib_conf.has('HAVE_SYS_STATVFS_H')
+  functions += ['statvfs']
+else
+  have_func_statvfs = false
+endif
+if glib_conf.has('HAVE_SYS_STATFS_H') or glib_conf.has('HAVE_SYS_MOUNT_H')
+  functions += ['statfs']
+else
+  have_func_statfs = false
+endif
+
+# AIX splice is something else
+if host_system != 'aix'
+  functions += ['splice']
+endif
+
+foreach f : functions
+  if cc.has_function(f)
+    define = 'HAVE_' + f.underscorify().to_upper()
+    glib_conf.set(define, 1)
+    glib_conf_prefix = glib_conf_prefix + '#define @0@ 1\n'.format(define)
+    set_variable('have_func_' + f, true)
+  else
+    set_variable('have_func_' + f, false)
+  endif
+endforeach
+
+# Check whether strerror_r returns char *
+if have_func_strerror_r
+  if cc.compiles('''#define _GNU_SOURCE
+                    #include <string.h>
+                    int func (void) {
+                      char error_string[256];
+                      char *ptr = strerror_r (-2, error_string, 256);
+                      char c = *strerror_r (-2, error_string, 256);
+                      return c != 0 && ptr != (void*) 0L;
+                    }
+                 ''',
+                 name : 'strerror_r() returns char *')
+    glib_conf.set('STRERROR_R_CHAR_P', 1,
+                  description: 'Defined if strerror_r returns char *')
+  endif
+endif
+
+# Special-case these functions that have alternative names on Windows/MSVC
+if cc.has_function('snprintf') or cc.has_header_symbol('stdio.h', 'snprintf')
+  glib_conf.set('HAVE_SNPRINTF', 1)
+  glib_conf_prefix = glib_conf_prefix + '#define HAVE_SNPRINTF 1\n'
+elif cc.has_function('_snprintf') or cc.has_header_symbol('stdio.h', '_snprintf')
+  hack_define = '1\n#define snprintf _snprintf'
+  glib_conf.set('HAVE_SNPRINTF', hack_define)
+  glib_conf_prefix = glib_conf_prefix + '#define HAVE_SNPRINTF ' + hack_define
+endif
+
+if cc.has_function('strcasecmp')
+  glib_conf.set('HAVE_STRCASECMP', 1)
+  glib_conf_prefix = glib_conf_prefix + '#define HAVE_STRCASECMP 1\n'
+elif cc.has_function('_stricmp')
+  hack_define = '1\n#define strcasecmp _stricmp'
+  glib_conf.set('HAVE_STRCASECMP', hack_define)
+  glib_conf_prefix = glib_conf_prefix + '#define HAVE_STRCASECMP ' + hack_define
+endif
+
+if cc.has_function('strncasecmp')
+  glib_conf.set('HAVE_STRNCASECMP', 1)
+  glib_conf_prefix = glib_conf_prefix + '#define HAVE_STRNCASECMP 1\n'
+elif cc.has_function('_strnicmp')
+  hack_define = '1\n#define strncasecmp _strnicmp'
+  glib_conf.set('HAVE_STRNCASECMP', hack_define)
+  glib_conf_prefix = glib_conf_prefix + '#define HAVE_STRNCASECMP ' + hack_define
+endif
+
+if cc.has_header_symbol('sys/sysmacros.h', 'major')
+  glib_conf.set('MAJOR_IN_SYSMACROS', 1)
+elif cc.has_header_symbol('sys/mkdev.h', 'major')
+  glib_conf.set('MAJOR_IN_MKDEV', 1)
+endif
+
+if cc.has_header_symbol('dlfcn.h', 'RTLD_LAZY')
+  glib_conf.set('HAVE_RTLD_LAZY', 1)
+endif
+
+if cc.has_header_symbol('dlfcn.h', 'RTLD_NOW')
+  glib_conf.set('HAVE_RTLD_NOW', 1)
+endif
+
+if cc.has_header_symbol('dlfcn.h', 'RTLD_GLOBAL')
+  glib_conf.set('HAVE_RTLD_GLOBAL', 1)
+endif
+
+# Check whether to use statfs or statvfs
+# Some systems have both statfs and statvfs, pick the most "native" for these
+if have_func_statfs and have_func_statvfs
+  # on solaris and irix, statfs doesn't even have the f_bavail field
+  if not glib_conf.has('HAVE_STRUCT_STATFS_F_BAVAIL')
+    have_func_statfs = false
+  else
+    # at least on linux, statfs is the actual syscall
+    have_func_statvfs = false
+  endif
+endif
+if have_func_statfs
+  glib_conf.set('USE_STATFS', 1)
+  stat_func_to_use = 'statfs'
+elif have_func_statvfs
+  glib_conf.set('USE_STATVFS', 1)
+  stat_func_to_use = 'statvfs'
+else
+  stat_func_to_use = 'neither'
+endif
+message('Checking whether to use statfs or statvfs .. ' + stat_func_to_use)
+
+# Mac OS X Carbon support
+glib_have_carbon = cc.compiles('''#include <Carbon/Carbon.h>
+                                  #include <CoreServices/CoreServices.h>''',
+                               name : 'Mac OS X Carbon support')
+
+glib_have_os_x_9_or_later = false
+
+if glib_have_carbon
+  glib_conf.set('HAVE_CARBON', true)
+  CARBON_LIBS='-Wl,-framework,Carbon' # FIXME: propagate to .pc files as well
+  glib_have_os_x_9_or_later = cc.compiles('''#include <AvailabilityMacros.h>
+                                             #if MAC_OS_X_VERSION_MIN_REQUIRED < 1090
+                                             #error Compiling for minimum OS X version before 10.9
+                                             #endif''', name : 'OS X 9 or later')
+else
+  CARBON_LIBS=''
+endif
+
+# Mac OS X Cocoa support
+glib_have_cocoa = cc.compiles('''#include <Cocoa/Cocoa.h>
+                                 #ifdef GNUSTEP_BASE_VERSION
+                                 #error "Detected GNUstep, not Cocoa"
+                                 #endif''',
+                              name : 'Mac OS X Cocoa support')
+
+if glib_have_cocoa
+  glib_conf.set('HAVE_COCOA', true)
+  COCOA_LIBS='-Wl,-framework,Foundation' # FIXME: propagate to .pc files as well
+else
+  COCOA_LIBS=''
+endif
+
+# Check for futex(2)
+if cc.links('''#include <linux/futex.h>
+               #include <sys/syscall.h>
+               #include <unistd.h>
+               int main (int argc, char ** argv) {
+                 syscall (__NR_futex, NULL, FUTEX_WAKE, FUTEX_WAIT);
+                 return 0;
+               }''', name : 'futex(2) system call')
+  glib_conf.set('HAVE_FUTEX', 1)
+endif
+
+# Check for eventfd(2)
+if cc.links('''#include <sys/eventfd.h>
+               #include <unistd.h>
+               int main (int argc, char ** argv) {
+                 eventfd (0, EFD_CLOEXEC);
+                 return 0;
+               }''', name : 'eventfd(2) system call')
+  glib_conf.set('HAVE_EVENTFD', 1)
+endif
+
+clock_gettime_test_code = '''
+  #include <time.h>
+  struct timespec t;
+  int main (int argc, char ** argv) {
+    return clock_gettime(CLOCK_REALTIME, &t);
+  }'''
+librt = []
+if cc.links(clock_gettime_test_code, name : 'clock_gettime')
+  glib_conf.set('HAVE_CLOCK_GETTIME', 1)
+elif cc.links(clock_gettime_test_code, args : '-lrt', name : 'clock_gettime in librt')
+  glib_conf.set('HAVE_CLOCK_GETTIME', 1)
+  librt = cc.find_library('rt')
+endif
+
+# if statfs() takes 2 arguments (Posix) or 4 (Solaris)
+if have_func_statfs
+  if cc.compiles(glib_conf_prefix + '''
+                 #include <unistd.h>
+                        #ifdef HAVE_SYS_PARAM_H
+                        #include <sys/param.h>
+                        #endif
+                        #ifdef HAVE_SYS_VFS_H
+                        #include <sys/vfs.h>
+                        #endif
+                        #ifdef HAVE_SYS_MOUNT_H
+                        #include <sys/mount.h>
+                        #endif
+                        #ifdef HAVE_SYS_STATFS_H
+                        #include <sys/statfs.h>
+                        #endif
+                        void some_func (void) {
+                          struct statfs st;
+                          statfs("/", &st);
+                        }''', name : 'number of arguments to statfs() (n=2)')
+    glib_conf.set('STATFS_ARGS', 2)
+  elif cc.compiles(glib_conf_prefix + '''
+                   #include <unistd.h>
+                          #ifdef HAVE_SYS_PARAM_H
+                          #include <sys/param.h>
+                          #endif
+                          #ifdef HAVE_SYS_VFS_H
+                          #include <sys/vfs.h>
+                          #endif
+                          #ifdef HAVE_SYS_MOUNT_H
+                          #include <sys/mount.h>
+                          #endif
+                          #ifdef HAVE_SYS_STATFS_H
+                          #include <sys/statfs.h>
+                          #endif
+                          void some_func (void) {
+                            struct statfs st;
+                            statfs("/", &st, sizeof (st), 0);
+                          }''', name : 'number of arguments to statfs() (n=4)')
+    glib_conf.set('STATFS_ARGS', 4)
+  else
+    error('Unable to determine number of arguments to statfs()')
+  endif
+endif
+
+# open takes O_DIRECTORY as an option
+#AC_MSG_CHECKING([])
+if cc.compiles('''#include <fcntl.h>
+                  #include <sys/types.h>
+                  #include <sys/stat.h>],
+                  void some_func (void) {
+                    open(0, O_DIRECTORY, 0);
+                  }''', name : 'open() option O_DIRECTORY')
+  glib_conf.set('HAVE_OPEN_O_DIRECTORY', 1)
+endif
+
+# Check whether there is a vsnprintf() function with C99 semantics installed.
+# AC_FUNC_VSNPRINTF_C99
+# Check whether there is a snprintf() function with C99 semantics installed.
+# AC_FUNC_SNPRINTF_C99
+if host_system == 'windows' and cc.get_id() == 'gcc'
+  # Unfortunately the mingw implementations of C99-style snprintf and vsnprintf
+  # don't seem to be quite good enough, at least not in mingw-runtime-3.14.
+  # (Sorry, I don't know exactly what is the problem, but it is related to
+  # floating point formatting and decimal point vs. comma.)
+  # The simple tests in AC_FUNC_VSNPRINTF_C99 and AC_FUNC_SNPRINTF_C99 aren't
+  # rigorous enough to notice, though.
+  glib_conf.set('HAVE_C99_SNPRINTF', false)
+  glib_conf.set('HAVE_C99_VSNPRINTF', false)
+else
+  vsnprintf_c99_test_code = '''
+#include <stdio.h>
+#include <stdarg.h>
+
+int
+doit(char * s, ...)
+{
+  char buffer[32];
+  va_list args;
+  int r;
+
+  va_start(args, s);
+  r = vsnprintf(buffer, 5, s, args);
+  va_end(args);
+
+  if (r != 7)
+    exit(1);
+
+  /* AIX 5.1 and Solaris seems to have a half-baked vsnprintf()
+     implementation. The above will return 7 but if you replace
+     the size of the buffer with 0, it borks! */
+  va_start(args, s);
+  r = vsnprintf(buffer, 0, s, args);
+  va_end(args);
+
+  if (r != 7)
+    exit(1);
+
+  exit(0);
+}
+
+int
+main(void)
+{
+  doit("1234567");
+  exit(1);
+}'''
+
+  rres = cc.run(vsnprintf_c99_test_code, name : 'C99 vsnprintf')
+  if rres.compiled() and rres.returncode() == 0
+    glib_conf.set('HAVE_C99_VSNPRINTF', 1)
+  endif
+
+  snprintf_c99_test_code = '''
+#include <stdio.h>
+#include <stdarg.h>
+
+int
+doit()
+{
+  char buffer[32];
+  va_list args;
+  int r;
+
+  r = snprintf(buffer, 5, "1234567");
+
+  if (r != 7)
+    exit(1);
+
+  r = snprintf(buffer, 0, "1234567");
+
+  if (r != 7)
+    exit(1);
+
+  r = snprintf(NULL, 0, "1234567");
+
+  if (r != 7)
+    exit(1);
+
+  exit(0);
+}
+
+int
+main(void)
+{
+  doit();
+  exit(1);
+}'''
+
+  rres = cc.run(snprintf_c99_test_code, name : 'C99 snprintf')
+  if rres.compiled() and rres.returncode() == 0
+    glib_conf.set('HAVE_C99_SNPRINTF', 1)
+  endif
+endif
+
+if host_system == 'windows'
+  glib_conf.set_quoted('EXEEXT', '.exe')
+else
+  glib_conf.set('EXEEXT', '')
+endif
+
+# Check whether the printf() family supports Unix98 %n$ positional parameters
+# AC_FUNC_PRINTF_UNIX98
+# Nothing uses HAVE_UNIX98_PRINTF
+
+# Check for nl_langinfo and CODESET
+# FIXME: Check for HAVE_BIND_TEXTDOMAIN_CODESET
+if cc.links('''#include <langinfo.h>
+               int main (int argc, char ** argv) {
+                 char *codeset = nl_langinfo (CODESET);
+                 return 0;
+               }''', name : 'nl_langinfo and CODESET')
+  glib_conf.set('HAVE_LANGINFO_CODESET', 1)
+  glib_conf.set('HAVE_CODESET', 1)
+endif
+
+# Check for nl_langinfo and LC_TIME parts that are needed in gdatetime.c
+if cc.links('''#include <langinfo.h>
+               int main (int argc, char ** argv) {
+                 char *str;
+                 str = nl_langinfo (PM_STR);
+                 str = nl_langinfo (D_T_FMT);
+                 str = nl_langinfo (D_FMT);
+                 str = nl_langinfo (T_FMT);
+                 str = nl_langinfo (T_FMT_AMPM);
+                 str = nl_langinfo (MON_1);
+                 str = nl_langinfo (ABMON_12);
+                 str = nl_langinfo (DAY_1);
+                 str = nl_langinfo (ABDAY_7);
+                 return 0;
+               }''', name : 'nl_langinfo (PM_STR)')
+  glib_conf.set('HAVE_LANGINFO_TIME', 1)
+endif
+if cc.links('''#include <langinfo.h>
+               int main (int argc, char ** argv) {
+                 char *str;
+                 str = nl_langinfo (_NL_CTYPE_OUTDIGIT0_MB);
+                 str = nl_langinfo (_NL_CTYPE_OUTDIGIT1_MB);
+                 str = nl_langinfo (_NL_CTYPE_OUTDIGIT2_MB);
+                 str = nl_langinfo (_NL_CTYPE_OUTDIGIT3_MB);
+                 str = nl_langinfo (_NL_CTYPE_OUTDIGIT4_MB);
+                 str = nl_langinfo (_NL_CTYPE_OUTDIGIT5_MB);
+                 str = nl_langinfo (_NL_CTYPE_OUTDIGIT6_MB);
+                 str = nl_langinfo (_NL_CTYPE_OUTDIGIT7_MB);
+                 str = nl_langinfo (_NL_CTYPE_OUTDIGIT8_MB);
+                 str = nl_langinfo (_NL_CTYPE_OUTDIGIT9_MB);
+                 return 0;
+               }''', name : 'nl_langinfo (_NL_CTYPE_OUTDIGITn_MB)')
+  glib_conf.set('HAVE_LANGINFO_OUTDIGIT', 1)
+endif
+
+# Check if C compiler supports the 'signed' keyword
+if not cc.compiles('''signed char x;''', name : 'signed')
+  glib_conf.set('signed', '/* NOOP */')
+endif
+
+# Check if the ptrdiff_t type exists
+if cc.has_header_symbol('stddef.h', 'ptrdiff_t')
+  glib_conf.set('HAVE_PTRDIFF_T', 1)
+endif
+
+# Check for sig_atomic_t type
+if cc.links('''#include <signal.h>
+               #include <sys/types.h>
+               sig_atomic_t val = 42;
+               int main (int argc, char ** argv) {
+                 return val == 42 ? 0 : 1;
+               }''', name : 'sig_atomic_t')
+  glib_conf.set('HAVE_SIG_ATOMIC_T', 1)
+endif
+
+# Check if 'long long' works and what format can be used to print it
+# jm_AC_TYPE_LONG_LONG
+# Nothing uses HAVE_LONG_LONG_FORMAT and HAVE_INT64_AND_I64
+if cc.compiles('''long long ll = 1LL;
+                  int i = 63;
+                  int some_func (void) {
+                    long long llmax = (long long) -1;
+                    return ll << i | ll >> i | llmax / ll | llmax % ll;
+                  }''', name : 'long long')
+  glib_conf.set('HAVE_LONG_LONG', 1)
+  have_long_long = true
+else
+  have_long_long = false
+endif
+
+# Test whether the compiler supports the 'long double' type.
+if cc.compiles('''/* The Stardent Vistra knows sizeof(long double), but does not support it.  */
+                  long double foo = 0.0;
+                  /* On Ultrix 4.3 cc, long double is 4 and double is 8.  */
+                  int array [2*(sizeof(long double) >= sizeof(double)) - 1];''',
+               name : 'long double')
+  glib_conf.set('HAVE_LONG_DOUBLE', 1)
+endif
+
+#dnl Test whether <stddef.h> has the 'wchar_t' type.
+if cc.has_header_symbol('stddef.h', 'wchar_t')
+  glib_conf.set('HAVE_WCHAR_T', 1)
+endif
+
+# Test whether <wchar.h> has the 'wint_t' type.
+if cc.has_header_symbol('wchar.h', 'wint_t')
+  glib_conf.set('HAVE_WINT_T', 1)
+endif
+
+found_uintmax_t = false
+
+# Define HAVE_INTTYPES_H_WITH_UINTMAX if <inttypes.h> exists,
+# doesn't clash with <sys/types.h>, and declares uintmax_t.
+# jm_AC_HEADER_INTTYPES_H
+if cc.compiles('''#include <sys/types.h>
+                  #include <inttypes.h>
+                  void some_func (void) {
+                    uintmax_t i = (uintmax_t) -1;
+                  }''', name : 'uintmax_t in inttypes.h')
+  glib_conf.set('HAVE_INTTYPES_H_WITH_UINTMAX', 1)
+  found_uintmax_t = true
+endif
+
+# Define HAVE_STDINT_H_WITH_UINTMAX if <stdint.h> exists,
+# doesn't clash with <sys/types.h>, and declares uintmax_t.
+# jm_AC_HEADER_STDINT_H
+if cc.compiles('''#include <sys/types.h>
+                  #include <stdint.h>
+                  void some_func (void) {
+                    uintmax_t i = (uintmax_t) -1;
+                  }''', name : 'uintmax_t in stdint.h')
+  glib_conf.set('HAVE_STDINT_H_WITH_UINTMAX', 1)
+  found_uintmax_t = true
+endif
+
+# Define intmax_t to 'long' or 'long long'
+# if it is not already defined in <stdint.h> or <inttypes.h>.
+# For simplicity, we assume that a header file defines 'intmax_t' if and
+# only if it defines 'uintmax_t'.
+if found_uintmax_t
+  glib_conf.set('HAVE_INTMAX_T', 1)
+elif have_long_long
+  glib_conf.set('intmax_t', 'long long')
+else
+  glib_conf.set('intmax_t', 'long')
+endif
+
+char_size = cc.sizeof('char')
+short_size = cc.sizeof('short')
+int_size = cc.sizeof('int')
+voidp_size = cc.sizeof('void*')
+long_size = cc.sizeof('long')
+if have_long_long
+  long_long_size = cc.sizeof('long long')
+else
+  long_long_size = 0
+endif
+sizet_size = cc.sizeof('size_t')
+if cc.get_id() == 'msvc'
+  ssizet_size = cc.sizeof('SSIZE_T', prefix : '#include <BaseTsd.h>')
+else
+  ssizet_size = cc.sizeof('ssize_t')
+endif
+
+# On Windows, MSVC supports both ll and I64 as format specifiers for 64-bit
+# integers, but some versions (at least 4.7.x) of MinGW only support I64.
+if host_system == 'windows'
+  int64_m = 'I64'
+else
+  int64_m = 'll'
+endif
+
+char_align = cc.alignment('char')
+short_align = cc.alignment('short')
+int_align = cc.alignment('int')
+voidp_align = cc.alignment('void*')
+long_align = cc.alignment('long')
+long_long_align = cc.alignment('long long')
+# NOTE: We don't check for size of __int64 because long long is guaranteed to
+# be 64-bit in C99, and it is available on all supported compilers
+sizet_align = cc.alignment('size_t')
+
+glib_conf.set('ALIGNOF_UNSIGNED_LONG', long_align)
+
+glib_conf.set('SIZEOF_CHAR', char_size)
+glib_conf.set('SIZEOF_INT', int_size)
+glib_conf.set('SIZEOF_SHORT', short_size)
+glib_conf.set('SIZEOF_LONG', long_size)
+glib_conf.set('SIZEOF_LONG_LONG', long_long_size)
+glib_conf.set('SIZEOF_SIZE_T', sizet_size)
+glib_conf.set('SIZEOF_SSIZE_T', ssizet_size)
+glib_conf.set('SIZEOF_VOID_P', voidp_size)
+
+if short_size == 2
+  gint16 = 'short'
+  gint16_modifier='h'
+  gint16_format='hi'
+  guint16_format='hu'
+elif int_size == 2
+  gint16 = 'int'
+  gint16_modifier=''
+  gint16_format='i'
+  guint16_format='u'
+else
+  error('Compiler provides no native 16-bit integer type')
+endif
+glibconfig_conf.set('gint16', gint16)
+glibconfig_conf.set_quoted('gint16_modifier', gint16_modifier)
+glibconfig_conf.set_quoted('gint16_format', gint16_format)
+glibconfig_conf.set_quoted('guint16_format', guint16_format)
+
+if short_size == 4
+  gint32 = 'short'
+  gint32_modifier='h'
+  gint32_format='hi'
+  guint32_format='hu'
+  guint32_align = short_align
+elif int_size == 4
+  gint32 = 'int'
+  gint32_modifier=''
+  gint32_format='i'
+  guint32_format='u'
+  guint32_align = int_align
+elif long_size == 4
+  gint32 = 'long'
+  gint32_modifier='l'
+  gint32_format='li'
+  guint32_format='lu'
+  guint32_align = long_align
+else
+  error('Compiler provides no native 32-bit integer type')
+endif
+glibconfig_conf.set('gint32', gint32)
+glibconfig_conf.set_quoted('gint32_modifier', gint32_modifier)
+glibconfig_conf.set_quoted('gint32_format', gint32_format)
+glibconfig_conf.set_quoted('guint32_format', guint32_format)
+glib_conf.set('ALIGNOF_GUINT32', guint32_align)
+
+if int_size == 8
+  gint64 = 'int'
+  gint64_modifier=''
+  gint64_format='i'
+  guint64_format='u'
+  glib_extension=''
+  gint64_constant='(val)'
+  guint64_constant='(val)'
+  guint64_align = int_align
+elif long_size == 8
+  gint64 = 'long'
+  glib_extension=''
+  gint64_modifier='l'
+  gint64_format='li'
+  guint64_format='lu'
+  gint64_constant='(val##L)'
+  guint64_constant='(val##UL)'
+  guint64_align = long_align
+elif long_long_size == 8
+  gint64 = 'long long'
+  glib_extension='G_GNUC_EXTENSION '
+  gint64_modifier=int64_m
+  gint64_format=int64_m + 'i'
+  guint64_format=int64_m + 'u'
+  gint64_constant='(G_GNUC_EXTENSION (val##LL))'
+  guint64_constant='(G_GNUC_EXTENSION (val##ULL))'
+  guint64_align = long_long_align
+else
+  error('Compiler provides no native 64-bit integer type')
+endif
+glibconfig_conf.set('glib_extension', glib_extension)
+glibconfig_conf.set('gint64', gint64)
+glibconfig_conf.set_quoted('gint64_modifier', gint64_modifier)
+glibconfig_conf.set_quoted('gint64_format', gint64_format)
+glibconfig_conf.set_quoted('guint64_format', guint64_format)
+glibconfig_conf.set('gint64_constant', gint64_constant)
+glibconfig_conf.set('guint64_constant', guint64_constant)
+glib_conf.set('ALIGNOF_GUINT64', guint64_align)
+
+if host_system == 'windows'
+  glibconfig_conf.set('g_pid_type', 'void*')
+  glibconfig_conf.set_quoted('g_pid_format', 'p')
+  if host_machine.cpu_family() == 'x86_64'
+    glibconfig_conf.set_quoted('g_pollfd_format', '%#I64x')
+  else
+    glibconfig_conf.set_quoted('g_pollfd_format', '%#x')
+  endif
+else
+  glibconfig_conf.set('g_pid_type', 'int')
+  glibconfig_conf.set_quoted('g_pid_format', 'i')
+  glibconfig_conf.set_quoted('g_pollfd_format', '%d')
+endif
+
+if sizet_size == short_size
+  glibconfig_conf.set('glib_size_type_define', 'short')
+  glibconfig_conf.set_quoted('gsize_modifier', 'h')
+  glibconfig_conf.set_quoted('gssize_modifier', 'h')
+  glibconfig_conf.set_quoted('gsize_format', 'hu')
+  glibconfig_conf.set_quoted('gssize_format', 'hi')
+  glibconfig_conf.set('glib_msize_type', 'SHRT')
+elif sizet_size == int_size
+  glibconfig_conf.set('glib_size_type_define', 'int')
+  glibconfig_conf.set_quoted('gsize_modifier', '')
+  glibconfig_conf.set_quoted('gssize_modifier', '')
+  glibconfig_conf.set_quoted('gsize_format', 'u')
+  glibconfig_conf.set_quoted('gssize_format', 'i')
+  glibconfig_conf.set('glib_msize_type', 'INT')
+elif sizet_size == long_size
+  glibconfig_conf.set('glib_size_type_define', 'long')
+  glibconfig_conf.set_quoted('gsize_modifier', 'l')
+  glibconfig_conf.set_quoted('gssize_modifier', 'l')
+  glibconfig_conf.set_quoted('gsize_format', 'lu')
+  glibconfig_conf.set_quoted('gssize_format', 'li')
+  glibconfig_conf.set('glib_msize_type', 'LONG')
+elif sizet_size == long_long_size
+  glibconfig_conf.set('glib_size_type_define', 'long long')
+  glibconfig_conf.set_quoted('gsize_modifier', int64_m)
+  glibconfig_conf.set_quoted('gssize_modifier', int64_m)
+  glibconfig_conf.set_quoted('gsize_format', int64_m + 'u')
+  glibconfig_conf.set_quoted('gssize_format', int64_m + 'i')
+  glibconfig_conf.set('glib_msize_type', 'INT64')
+else
+  error('Could not determine size of size_t.')
+endif
+
+if voidp_size == int_size
+  glibconfig_conf.set('glib_intptr_type_define', 'int')
+  glibconfig_conf.set_quoted('gintptr_modifier', '')
+  glibconfig_conf.set_quoted('gintptr_format', 'i')
+  glibconfig_conf.set_quoted('guintptr_format', 'u')
+  glibconfig_conf.set('glib_gpi_cast', '(gint)')
+  glibconfig_conf.set('glib_gpui_cast', '(guint)')
+elif voidp_size == long_size
+  glibconfig_conf.set('glib_intptr_type_define', 'long')
+  glibconfig_conf.set_quoted('gintptr_modifier', 'l')
+  glibconfig_conf.set_quoted('gintptr_format', 'li')
+  glibconfig_conf.set_quoted('guintptr_format', 'lu')
+  glibconfig_conf.set('glib_gpi_cast', '(glong)')
+  glibconfig_conf.set('glib_gpui_cast', '(gulong)')
+elif voidp_size == long_long_size
+  glibconfig_conf.set('glib_intptr_type_define', 'long long')
+  glibconfig_conf.set_quoted('gintptr_modifier', int64_m)
+  glibconfig_conf.set_quoted('gintptr_format', int64_m + 'i')
+  glibconfig_conf.set_quoted('guintptr_format', int64_m + 'u')
+  glibconfig_conf.set('glib_gpi_cast', '(gint64)')
+  glibconfig_conf.set('glib_gpui_cast', '(guint64)')
+else
+  error('Could not determine size of void *')
+endif
+
+if long_size != 8 and long_long_size != 8 and int_size != 8
+  error('GLib requires a 64-bit type. You might want to consider using the GNU C compiler.')
+endif
+
+glibconfig_conf.set('gintbits', int_size * 8)
+glibconfig_conf.set('glongbits', long_size * 8)
+glibconfig_conf.set('gsizebits', sizet_size * 8)
+glibconfig_conf.set('gssizebits', ssizet_size * 8)
+
+# FIXME: maybe meson should tell us the libsuffix?
+if host_system == 'windows'
+  g_module_suffix = 'dll'
+elif host_system == 'darwin'
+  g_module_suffix = 'dylib'
+else
+  g_module_suffix = 'so'
+endif
+glibconfig_conf.set('g_module_suffix', g_module_suffix)
+
+glibconfig_conf.set('GLIB_MAJOR_VERSION', major_version)
+glibconfig_conf.set('GLIB_MINOR_VERSION', minor_version)
+glibconfig_conf.set('GLIB_MICRO_VERSION', micro_version)
+
+glibconfig_conf.set('glib_void_p', voidp_size)
+glibconfig_conf.set('glib_long', long_size)
+glibconfig_conf.set('glib_size_t', sizet_size)
+glibconfig_conf.set('glib_ssize_t', ssizet_size)
+if host_machine.endian() == 'big'
+  glibconfig_conf.set('g_byte_order', 'G_BIG_ENDIAN')
+  glibconfig_conf.set('g_bs_native', 'BE')
+  glibconfig_conf.set('g_bs_alien', 'LE')
+else
+  glibconfig_conf.set('g_byte_order', 'G_LITTLE_ENDIAN')
+  glibconfig_conf.set('g_bs_native', 'LE')
+  glibconfig_conf.set('g_bs_alien', 'BE')
+endif
+
+# === va_copy checks ===
+# we currently check for all three va_copy possibilities, so we get
+# all results in config.log for bug reports.
+
+va_copy_func = ''
+foreach try_func : [ '__va_copy', 'va_copy' ]
+  if cc.compiles('''#include <stdarg.h>
+                    #include <stdlib.h>
+                    #ifdef _MSC_VER
+                    # include "msvc_recommended_pragmas.h"
+                    #endif
+                    void f (int i, ...) {
+                    va_list args1, args2;
+                    va_start (args1, i);
+                    @0@ (args2, args1);
+                    if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
+                      exit (1);
+                    va_end (args1); va_end (args2);
+                    }
+                    int main() {
+                      f (0, 42);
+                      return 0;
+                    }'''.format(try_func),
+                    name : try_func + ' check')
+    va_copy_func = try_func
+  endif
+endforeach
+if va_copy_func != ''
+  glib_conf.set('G_VA_COPY', va_copy_func)
+  glib_vacopy = '#define G_VA_COPY ' + va_copy_func
+else
+  glib_vacopy = '/* #undef G_VA_COPY */'
+endif
+
+va_list_val_copy_prog = '''
+  #include <stdarg.h>
+  #include <stdlib.h>
+  void f (int i, ...) {
+    va_list args1, args2;
+    va_start (args1, i);
+    args2 = args1;
+    if (va_arg (args2, int) != 42 || va_arg (args1, int) != 42)
+      exit (1);
+    va_end (args1); va_end (args2);
+  }
+  int main() {
+    f (0, 42);
+    return 0;
+  }'''
+
+# We do this in two steps so if compilation fails already it looks less alarming
+glib_va_val_copy = false
+if cc.compiles(va_list_val_copy_prog, name : 'va_lists can be copied as values')
+  # FIXME: what to do when cross-compiling?
+  if cc.run(va_list_val_copy_prog, name : 'va_lists can be copied as values').returncode() == 0
+    glib_va_val_copy = true
+  endif
+endif
+if not glib_va_val_copy
+  glib_va_val_copy = false
+  glib_vacopy = glib_vacopy + '\n#define G_VA_COPY_AS_ARRAY 1'
+  glib_conf.set('G_VA_COPY_AS_ARRAY', 1)
+endif
+glibconfig_conf.set('glib_vacopy', glib_vacopy)
+
+# check for flavours of varargs macros
+g_have_iso_c_varargs = cc.compiles('''
+  void some_func (void) {
+    int a(int p1, int p2, int p3);
+    #define call_a(...) a(1,__VA_ARGS__)
+    call_a(2,3);
+  }''', name : 'ISO C99 varargs macros in C')
+
+if g_have_iso_c_varargs
+  glibconfig_conf.set('g_have_iso_c_varargs', '''
+#ifndef __cplusplus
+# define G_HAVE_ISO_VARARGS 1
+#endif''')
+endif
+
+g_have_iso_cxx_varargs = cxx.compiles('''
+  void some_func (void) {
+    int a(int p1, int p2, int p3);
+    #define call_a(...) a(1,__VA_ARGS__)
+    call_a(2,3);
+  }''', name : 'ISO C99 varargs macros in C++')
+
+if g_have_iso_cxx_varargs
+  glibconfig_conf.set('g_have_iso_cxx_varargs', '''
+#ifdef __cplusplus
+# define G_HAVE_ISO_VARARGS 1
+#endif''')
+endif
+
+g_have_gnuc_varargs = cc.compiles('''
+  void some_func (void) {
+    int a(int p1, int p2, int p3);
+    #define call_a(params...) a(1,params)
+    call_a(2,3);
+  }''', name : 'GNUC varargs macros')
+
+if cc.has_header('alloca.h')
+  glibconfig_conf.set('GLIB_HAVE_ALLOCA_H', true)
+endif
+has_syspoll = cc.has_header('sys/poll.h')
+has_systypes = cc.has_header('sys/types.h')
+if has_syspoll
+  glibconfig_conf.set('GLIB_HAVE_SYS_POLL_H', true)
+endif
+has_winsock2 = cc.has_header('winsock2.h')
+
+if has_syspoll and has_systypes
+  templ = '''#include<sys/poll.h>
+#include<sys/types.h>
+#include<stdio.h>
+int main(int argc, char **argv) {
+  printf("%d\n", (int)@0@);
+  return 0;
+}'''
+elif has_winsock2
+  templ = '''#define _WIN32_WINNT 0x0600
+#include <stdio.h>
+#include <winsock2.h>
+int main(int argc, char **argv) {
+  printf("%d\n", (int)@0@);
+  return 0;
+}'''
+else
+  # FIXME?
+  error('FIX POLL* defines')
+endif
+
+value_POLLIN = cc.run(templ.format('POLLIN'), name : 'POLLIN value').stdout().strip()
+value_POLLOUT = cc.run(templ.format('POLLOUT'), name : 'POLLOUT value').stdout().strip()
+value_POLLPRI = cc.run(templ.format('POLLPRI'), name : 'POLLPRI value').stdout().strip()
+value_POLLERR = cc.run(templ.format('POLLERR'), name : 'POLLERR value').stdout().strip()
+value_POLLHUP = cc.run(templ.format('POLLHUP'), name : 'POLLHUP value').stdout().strip()
+value_POLLNVAL = cc.run(templ.format('POLLNVAL'), name : 'POLLNVAL value').stdout().strip()
+
+glibconfig_conf.set('g_pollin', value_POLLIN)
+glibconfig_conf.set('g_pollout', value_POLLOUT)
+glibconfig_conf.set('g_pollpri', value_POLLPRI)
+glibconfig_conf.set('g_pollerr', value_POLLERR)
+glibconfig_conf.set('g_pollhup', value_POLLHUP)
+glibconfig_conf.set('g_pollnval', value_POLLNVAL)
+
+# Internet address families
+# FIXME: what about Cygwin (G_WITH_CYGWIN)
+if host_system == 'windows'
+  glib_inet_includes= '''
+#include <winsock2.h>
+'''
+else
+  glib_inet_includes='''
+#include <sys/types.h>
+#include <sys/socket.h>
+'''
+endif
+
+net_defines = [
+  [ 'AF_UNIX', 'g_af_unix' ],
+  [ 'AF_INET', 'g_af_inet' ],
+  [ 'AF_INET6', 'g_af_inet6' ],
+  [ 'MSG_OOB', 'g_msg_oob' ],
+  [ 'MSG_PEEK', 'g_msg_peek' ],
+  [ 'MSG_DONTROUTE', 'g_msg_dontroute' ],
+]
+foreach d : net_defines
+  templ = '''@0@
+#include <stdio.h>
+int main(int argc, char **argv) {
+  printf("%d\n", (int)@1@);
+  return 0;
+}'''
+  # FIXME: fix for cross-compilation
+  if not meson.has_exe_wrapper()
+    error('Fix sys define detection for cross build')
+  endif
+  val = cc.run(templ.format(glib_inet_includes, d[0]), name : d[0] + ' value').stdout().strip()
+  glibconfig_conf.set(d[1], val)
+endforeach
+
+glibconfig_conf.set('GLIB_USING_SYSTEM_PRINTF', true) # FIXME!
+
+# We need a more robust approach here...
+host_cpu_family = host_machine.cpu_family()
+if host_cpu_family == 'x86' or host_cpu_family == 'x86_64' or host_cpu_family == 's390' or host_cpu_family == 's390x' or host_cpu_family.startswith('arm') or host_cpu_family.startswith('crisv32') or host_cpu_family.startswith('etrax')
+  glib_memory_barrier_needed = false
+elif host_cpu_family.startswith('sparc') or host_cpu_family.startswith('alpha') or host_cpu_family.startswith('powerpc') or host_cpu_family == 'ia64'
+  glib_memory_barrier_needed = true
+else
+  error('Unknown host cpu: ' + host_cpu_family)
+  glib_memory_barrier_needed = true
+endif
+glibconfig_conf.set('G_ATOMIC_OP_MEMORY_BARRIER_NEEDED', glib_memory_barrier_needed)
+
+# Note that the atomic ops are only available with GCC on x86 when
+# using -march=i486 or higher.  If we detect that the atomic ops are
+# not available but would be available given the right flags, we want
+# to abort and advise the user to fix their CFLAGS.  It's better to do
+# that then to silently fall back on emulated atomic ops just because
+# the user had the wrong build environment.
+atomictest = '''void func() {
+  volatile int atomic = 2;
+  __sync_bool_compare_and_swap (&atomic, 2, 3);
+}
+'''
+if cc.compiles(atomictest)
+  glibconfig_conf.set('G_ATOMIC_LOCK_FREE', true)
+else
+  if host_machine.cpu_family() == 'x86' and cc.compiles(atomictest, args : '-march=i486')
+    error('GLib must be built with -march=i486 or later.')
+  endif
+  glibconfig_conf.set('G_ATOMIC_LOCK_FREE', false)
+endif
+
+# === Threads ===
+
+# Let meson figure out all this business and whether -pthread or whatnot is needed
+# FIXME: probably needs more tweaking in meson for things like -D_REENTRANT etc.
+thread_dep = dependency('threads')
+
+# Determination of thread implementation
+if host_system == 'windows'
+  glibconfig_conf.set('g_threads_impl_def', 'WIN32')
+  glib_conf.set('THREADS_WIN32', 1)
+else
+  glibconfig_conf.set('g_threads_impl_def', 'POSIX')
+  glib_conf.set('THREADS_POSIX', 1)
+  if cc.has_header_symbol('pthread.h', 'pthread_attr_setstacksize')
+    glib_conf.set('HAVE_PTHREAD_ATTR_SETSTACKSIZE', 1)
+  endif
+  if cc.has_header_symbol('pthread.h', 'pthread_condattr_setclock')
+    glib_conf.set('HAVE_PTHREAD_CONDATTR_SETCLOCK', 1)
+  endif
+  if cc.has_header_symbol('pthread.h', 'pthread_cond_timedwait_relative_np')
+    glib_conf.set('HAVE_PTHREAD_COND_TIMEDWAIT_RELATIVE_NP', 1)
+  endif
+  if cc.links('''#include <pthread.h>
+                 int main() {
+                   pthread_setname_np("example");
+                 }''', name : 'pthread_setname_np(const char*)')
+    glib_conf.set('HAVE_PTHREAD_SETNAME_NP_WITHOUT_TID', 1)
+  elif cc.links('''#include <pthread.h>
+                 int main() {
+                   pthread_setname_np(pthread_self(), "example");
+                 }''', name : 'pthread_setname_np(pthread_t, const char*)')
+    glib_conf.set('HAVE_PTHREAD_SETNAME_NP_WITH_TID', 1)
+  endif
+endif
+
+# FIXME: how to do this when cross-compiling?
+# FIXME: we should make it print the result and always return 0, so that
+# the output in meson shows up as green
+stack_grows_check_prog = '''
+  volatile int *a = 0, *b = 0;
+  void f (int i) {
+    volatile int x = 5;
+    if (i == 0)
+      b = &x;
+    else
+      f (i - 1);
+  }
+  int main () {
+    volatile int y = 7;
+    a = &y;
+    f (100);
+    return b > a ? 0 : 1;
+  }'''
+stack_grows_run_result = cc.run(stack_grows_check_prog, name : 'stack grows check')
+if stack_grows_run_result.compiled() and stack_grows_run_result.returncode() == 0
+  glibconfig_conf.set('G_HAVE_GROWING_STACK', 1)
+else
+  glibconfig_conf.set('G_HAVE_GROWING_STACK', 0)
+endif
+
+# Tests for iconv
+#
+# First, we check if the C library provides iconv, then GNU libiconv, then
+# a native implementation
+# FIXME: add option as well
+#
+# USE_LIBICONV_GNU: Using GNU libiconv
+# USE_LIBICONV_NATIVE: Using a native impl of iconv in a separate library
+#
+# We should never use the MinGW C library's iconv. On Windows we use the
+# GNU implementation that ships with MinGW.
+
+# On Windows, just always use the built-in implementation
+if host_system == 'windows'
+  libiconv = []
+  glib_conf.set('USE_LIBICONV_NATIVE', true)
+# Check C library; never check MinGW C library
+elif cc.has_function('iconv_open')
+  libiconv = []
+# Check for libiconv
+elif cc.has_header_symbol('iconv.h', 'libiconv_open')
+  glib_conf.set('USE_LIBICONV_GNU', true)
+  libiconv = [cc.find_library('iconv')]
+# Check for a custom iconv implementation
+elif cc.has_header_symbol('iconv.h', 'iconv_open')
+  glib_conf.set('USE_LIBICONV_NATIVE', true)
+  libiconv = [cc.find_library('iconv')]
+else
+  error('No iconv() implementation found in C library or libiconv')
+endif
+
+if get_option('with-pcre') == 'internal'
+  pcre = []
+  use_system_pcre = false
+else
+  pcre = dependency('libpcre', required : false) # Should check for Unicode support, too. FIXME
+  use_system_pcre = pcre.found()
+endif
+glib_conf.set('USE_SYSTEM_PCRE', use_system_pcre)
+
+libm = cc.find_library('m', required : false)
+libffi_dep = dependency('libffi', version : '>= 3.0.0', fallback : ['libffi', 'ffi_dep'])
+libz_dep = dependency('zlib', fallback : ['zlib', 'zlib_dep'])
+
+# Only used on non-glibc targets
+libintl = cc.find_library('intl', required : false)
+if host_system == 'windows' and not libintl.found()
+  # Used only when the gettext library is not available (MSVC, not MinGW)
+  libintl = subproject('proxy-libintl').get_variable('intl_dep')
+  glib_conf.set('HAVE_DCGETTEXT', 1)
+else
+  glib_conf.set('HAVE_DCGETTEXT', cc.has_header_symbol('libintl.h', 'dcgettext'))
+endif
+# We require gettext to always be present
+glib_conf.set('HAVE_GETTEXT', 1)
+glib_conf.set_quoted('GLIB_LOCALE_DIR', join_paths(glib_datadir, 'locale'))
+# xgettext is optional (on Windows for instance)
+xgettext = find_program('xgettext', required : false)
+
+# libmount is only used by gio, but we need to fetch the libs to generate the
+# pkg-config file below
+libmount_dep = []
+libmount_opt = get_option('enable-libmount')
+if host_system == 'linux' and libmount_opt != 'no'
+  libmount_dep = [dependency('mount', version : '>=2.28', required : false)]
+  if not libmount_dep[0].found()
+    libmount_dep = [cc.find_library('mount')]
+    libmount_h = cc.has_header('libmount/libmount.h')
+    libmount_needed = libmount_opt == 'yes' and host_system == 'linux'
+    if libmount_needed and (not libmount_dep[0].found() or not libmount_h)
+      error('Need libmount but couldn\'t find it')
+    endif
+  endif
+endif
+
+if host_system == 'windows'
+  winsock2 = cc.find_library('ws2_32')
+endif
+
+python = import('python3').find_python()
+
+# FIXME: defines in config.h that are not actually used anywhere
+# (we add them for now to minimise the diff)
+glib_conf.set('HAVE_DLFCN_H', 1)
+glib_conf.set('__EXTENSIONS__', 1)
+glib_conf.set('STDC_HEADERS', 1)
+# THREADS_NONE
+glib_conf.set('SIZEOF___INT64', 8)
+
+# Various substs needed for our pkg-config files
+# FIXME: Derive these from the dependency() objects (Meson support needed)
+glib_conf.set('ZLIB_LIBS', '-lz')
+glib_conf.set('LIBFFI_LIBS', '-lffi')
+if libintl.found()
+  glib_conf.set('INTLLIBS', '-lintl')
+endif
+if libiconv.length() != 0
+  glib_conf.set('ICONV_LIBS', '-liconv')
+endif
+if use_system_pcre
+  glib_conf.set('PCRE_LIBS', '-lpcre')
+endif
+if libmount_dep.length() == 1 and libmount_dep[0].found()
+  glib_conf.set('LIBMOUNT_LIBS', '-lmount')
+endif
+glib_conf.set('GIO_MODULE_DIR', '${libdir}/gio/modules')
+# FIXME: Missing:
+# @G_MODULE_LIBS@ @SELINUX_LIBS@ @COCOA_LIBS@ @CARBON_LIBS@ @G_LIBS_EXTRA@
+# @PCRE_REQUIRES@ @GLIB_EXTRA_CFLAGS@ @G_THREAD_CFLAGS@
+
+# Tracing: dtrace
+want_dtrace = get_option('enable-dtrace')
+enable_dtrace = false
+
+# Since dtrace support is opt-in we just error out if it was requested but
+# is not available. We don't bother with autodetection yet.
+if want_dtrace
+  if glib_have_carbon
+    error('GLib dtrace support not yet compatible with macOS dtrace')
+  endif
+  dtrace = find_program('dtrace', required : true) # error out if not found
+  if not cc.has_header('sys/sdt.h')
+    error('dtrace support needs sys/sdt.h header')
+  endif
+  # FIXME: autotools build also passes -fPIC -DPIC but is it needed in this case?
+  dtrace_obj_gen = generator(dtrace,
+    output : '@BASENAME@.o',
+    arguments : ['-G', '-s', '@INPUT@', '-o', '@OUTPUT@'])
+  # FIXME: $(SED) -e "s,define STAP_HAS_SEMAPHORES 1,undef STAP_HAS_SEMAPHORES,"
+  #               -e "s,define _SDT_HAS_SEMAPHORES 1,undef _SDT_HAS_SEMAPHORES,"
+  dtrace_hdr_gen = generator(dtrace,
+    output : '@BASENAME@.h',
+    arguments : ['-h', '-s', '@INPUT@', '-o', '@OUTPUT@'])
+  glib_conf.set('HAVE_DTRACE', 1)
+  enable_dtrace = true
+endif
+
+# systemtap
+want_systemtap = get_option('enable-systemtap')
+enable_systemtap = false
+
+if want_systemtap and enable_dtrace
+  tapset_install_dir = get_option('tapset-install-dir')
+  if tapset_install_dir == ''
+    tapset_install_dir = join_paths(get_option('datadir'), 'systemtap/tapset')
+  endif
+  stp_cdata = configuration_data()
+  stp_cdata.set('ABS_GLIB_RUNTIME_LIBDIR', glib_libdir)
+  stp_cdata.set('LT_CURRENT', minor_version.to_int() * 100)
+  stp_cdata.set('LT_REVISION', micro_version.to_int())
+  enable_systemtap = true
+endif
+
+
+subdir('glib')
+subdir('gobject')
+subdir('gthread')
+subdir('gmodule')
+subdir('gio')
+if xgettext.found()
+  subdir('po')
+endif
+subdir('tests')
+
+# Configure and install pkg-config files
+pc_files = [
+  'gobject-2.0.pc',
+  'glib-2.0.pc',
+  'gthread-2.0.pc',
+  'gmodule-2.0.pc',
+  'gmodule-export-2.0.pc',
+  'gmodule-no-export-2.0.pc',
+  'gio-2.0.pc',
+]
+if host_system == 'windows'
+  pc_files += ['gio-windows-2.0.pc']
+else
+  pc_files += ['gio-unix-2.0.pc']
+endif
+
+foreach pc : pc_files
+  configure_file(input : pc + '.in',
+    install : true,
+    install_dir : glib_pkgconfigreldir,
+    output : pc,
+    configuration : glib_conf)
+endforeach
+
+# NOTE: We skip glib-zip.in because the filenames it assumes don't match ours
+
+# Install glib-gettextize executable
+configure_file(input : 'glib-gettextize.in',
+  install : true,
+  install_dir : 'bin',
+  output : 'glib-gettextize',
+  configuration : glib_conf)
+
+# Install m4 macros that other projects use
+install_data('m4macros/glib-2.0.m4', 'm4macros/glib-gettext.m4', 'm4macros/gsettings.m4',
+  install_dir : join_paths(get_option('datadir'), 'aclocal'))
+# Install Valgrind suppression file
+install_data('glib.supp',
+  install_dir : join_paths(get_option('datadir'), 'glib-2.0', 'valgrind'))
+
+configure_file(input : 'config.h.meson',
+  output : 'config.h',
+  configuration : glib_conf)
+
+if get_option('with-man') != 'no'
+  xsltproc = find_program('xsltproc', required : false)
+  if not xsltproc.found() and get_option('with-man') == 'yes'
+    error('man pages enabled and xsltproc not found')
+  endif
+  xsltproc_command = [
+    xsltproc,
+    '--nonet',
+    '--stringparam', 'man.output.quietly', '1',
+    '--stringparam', 'funcsynopsis.style', 'ansi',
+    '--stringparam', 'man.th.extra1.suppress', '1',
+    '--stringparam', 'man.authors.section.enabled', '0',
+    '--stringparam', 'man.copyright.section.enabled', '0',
+    '-o', '@OUTPUT@',
+    'http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl',
+    '@INPUT@',
+  ]
+  man1_dir = get_option('mandir') + '/man1'
+endif
+
+gnome = import('gnome')
+subdir('docs/reference/glib')
+subdir('docs/reference/gobject')
+subdir('docs/reference/gio')
diff --git a/meson_options.txt b/meson_options.txt
new file mode 100644 (file)
index 0000000..1811e8b
--- /dev/null
@@ -0,0 +1,10 @@
+option('with-docs', type : 'combo', choices : ['auto', 'yes', 'no'], value : 'auto')
+option('with-man', type : 'combo', choices : ['auto', 'yes', 'no'], value : 'auto')
+option('with-pcre', type : 'combo', choices : ['system', 'internal'], value : 'system')
+option('enable-libmount', type : 'combo', choices : ['auto', 'yes', 'no'], value : 'yes')
+option('enable-dtrace', type : 'boolean', value : false,
+  description : 'include tracing support for dtrace')
+option('enable-systemtap', type : 'boolean', value : false,
+  description : 'include tracing support for systemtap')
+option('tapset-install-dir', type : 'string', value : '',
+  description : 'path where systemtap tapsets are installed')
index f8f841d..f98bcd8 100644 (file)
Binary files a/po/es.gmo and b/po/es.gmo differ
index 9d3a1ed..0abe371 100644 (file)
--- a/po/es.po
+++ b/po/es.po
@@ -15,8 +15,8 @@ msgstr ""
 "Project-Id-Version: glib.master\n"
 "Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?"
 "product=glib&keywords=I18N+L10N&component=general\n"
-"POT-Creation-Date: 2017-06-02 16:12+0000\n"
-"PO-Revision-Date: 2017-06-05 16:09+0200\n"
+"POT-Creation-Date: 2017-08-03 15:40+0000\n"
+"PO-Revision-Date: 2017-08-04 15:42+0200\n"
 "Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n"
 "Language-Team: es <gnome-es-list@gnome.org>\n"
 "Language: es\n"
@@ -46,7 +46,7 @@ msgstr "Omitir el ID de la aplicación"
 
 #: ../gio/gapplication-tool.c:45 ../gio/gapplication-tool.c:46
 #: ../gio/gio-tool.c:227 ../gio/gresource-tool.c:488
-#: ../gio/gsettings-tool.c:520
+#: ../gio/gsettings-tool.c:522
 msgid "Print help"
 msgstr "Imprimir ayuda"
 
@@ -59,7 +59,7 @@ msgstr "[COMANDO]"
 msgid "Print version"
 msgstr "Imprimir versión"
 
-#: ../gio/gapplication-tool.c:50 ../gio/gsettings-tool.c:526
+#: ../gio/gapplication-tool.c:50 ../gio/gsettings-tool.c:528
 msgid "Print version information and exit"
 msgstr "Mostrar información de la versión y salir"
 
@@ -151,7 +151,7 @@ msgstr ""
 "Parámetro opcionales para la invocación de la acción, en formato GVariant"
 
 #: ../gio/gapplication-tool.c:96 ../gio/gresource-tool.c:526
-#: ../gio/gsettings-tool.c:612
+#: ../gio/gsettings-tool.c:614
 #, c-format
 msgid ""
 "Unknown command %s\n"
@@ -165,7 +165,7 @@ msgid "Usage:\n"
 msgstr "Uso:\n"
 
 #: ../gio/gapplication-tool.c:114 ../gio/gresource-tool.c:551
-#: ../gio/gsettings-tool.c:647
+#: ../gio/gsettings-tool.c:649
 msgid "Arguments:\n"
 msgstr "Argumentos:\n"
 
@@ -316,7 +316,7 @@ msgstr "No hay suficiente espacio en el destino"
 #: ../gio/gcharsetconverter.c:342 ../gio/gdatainputstream.c:848
 #: ../gio/gdatainputstream.c:1257 ../glib/gconvert.c:438
 #: ../glib/gconvert.c:845 ../glib/giochannel.c:1556 ../glib/giochannel.c:1598
-#: ../glib/giochannel.c:2442 ../glib/gutf8.c:856 ../glib/gutf8.c:1309
+#: ../glib/giochannel.c:2442 ../glib/gutf8.c:866 ../glib/gutf8.c:1319
 msgid "Invalid byte sequence in conversion input"
 msgstr "Hay una secuencia de bytes no válida en la entrada de conversión"
 
@@ -326,18 +326,18 @@ msgstr "Hay una secuencia de bytes no válida en la entrada de conversión"
 msgid "Error during conversion: %s"
 msgstr "Falló durante la conversión: %s"
 
-#: ../gio/gcharsetconverter.c:444 ../gio/gsocket.c:1085
+#: ../gio/gcharsetconverter.c:445 ../gio/gsocket.c:1096
 msgid "Cancellable initialization not supported"
 msgstr "La inicialización cancelable no eestá soportada"
 
-#: ../gio/gcharsetconverter.c:454 ../glib/gconvert.c:321
+#: ../gio/gcharsetconverter.c:456 ../glib/gconvert.c:321
 #: ../glib/giochannel.c:1384
 #, c-format
 msgid "Conversion from character set “%s” to “%s” is not supported"
 msgstr ""
 "La conversión desde el conjunto de caracteres «%s» a «%s» no está soportada"
 
-#: ../gio/gcharsetconverter.c:458 ../glib/gconvert.c:325
+#: ../gio/gcharsetconverter.c:460 ../glib/gconvert.c:325
 #, c-format
 msgid "Could not open converter from “%s” to “%s”"
 msgstr "No se pudo abrir el conversor de «%s» a «%s»"
@@ -468,72 +468,72 @@ msgstr "Error al autolanzar: "
 msgid "Unknown or unsupported transport “%s” for address “%s”"
 msgstr "Transporte «%s» desconocido o no soportado para la dirección «%s»"
 
-#: ../gio/gdbusaddress.c:702
+#: ../gio/gdbusaddress.c:704
 #, c-format
 msgid "Error opening nonce file “%s”: %s"
 msgstr "Error al abrir el archivo de número usado una sola vez «%s»: %s"
 
-#: ../gio/gdbusaddress.c:720
+#: ../gio/gdbusaddress.c:723
 #, c-format
 msgid "Error reading from nonce file “%s”: %s"
 msgstr "Error al leer el archivo de número usado una sola vez «%s»: %s"
 
-#: ../gio/gdbusaddress.c:729
+#: ../gio/gdbusaddress.c:732
 #, c-format
 msgid "Error reading from nonce file “%s”, expected 16 bytes, got %d"
 msgstr ""
 "Error al leer el archivo de número usado una sola vez «%s», se esperaban 16 "
 "bytes, se obtuvieron %d"
 
-#: ../gio/gdbusaddress.c:747
+#: ../gio/gdbusaddress.c:750
 #, c-format
 msgid "Error writing contents of nonce file “%s” to stream:"
 msgstr ""
 "Error al escribir el contenido del archivo de número usado una sola vez «%s» "
 "al flujo:"
 
-#: ../gio/gdbusaddress.c:956
+#: ../gio/gdbusaddress.c:959
 msgid "The given address is empty"
 msgstr "La dirección proporcionada está vacía"
 
-#: ../gio/gdbusaddress.c:1069
+#: ../gio/gdbusaddress.c:1072
 #, c-format
 msgid "Cannot spawn a message bus when setuid"
 msgstr "No se puede lanzar («spawn») un mensaje al bus con setuid"
 
-#: ../gio/gdbusaddress.c:1076
+#: ../gio/gdbusaddress.c:1079
 msgid "Cannot spawn a message bus without a machine-id: "
 msgstr "No se puede lanzar («spawn») un mensaje al bus sin un ID de máquina: "
 
-#: ../gio/gdbusaddress.c:1083
+#: ../gio/gdbusaddress.c:1086
 #, c-format
 msgid "Cannot autolaunch D-Bus without X11 $DISPLAY"
 msgstr "No se puede lanzar D-Bus automáticamente sin X11 $DISPLAY"
 
-#: ../gio/gdbusaddress.c:1125
+#: ../gio/gdbusaddress.c:1128
 #, c-format
 msgid "Error spawning command line “%s”: "
 msgstr "Error al lanzar («spawn») el comando «%s»: "
 
-#: ../gio/gdbusaddress.c:1342
+#: ../gio/gdbusaddress.c:1345
 #, c-format
 msgid "(Type any character to close this window)\n"
 msgstr "(Escriba un carácter cualquiera para cerrar esta ventana)\n"
 
-#: ../gio/gdbusaddress.c:1496
+#: ../gio/gdbusaddress.c:1499
 #, c-format
 msgid "Session dbus not running, and autolaunch failed"
 msgstr ""
 "La sesión de dbus no está en ejecución, y falló el lanzamiento automático"
 
-#: ../gio/gdbusaddress.c:1507
+#: ../gio/gdbusaddress.c:1510
 #, c-format
 msgid "Cannot determine session bus address (not implemented for this OS)"
 msgstr ""
 "No se puede determinar la dirección del bus de sesión (no implementado para "
 "este SO)"
 
-#: ../gio/gdbusaddress.c:1645
+#: ../gio/gdbusaddress.c:1648
 #, c-format
 msgid ""
 "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
@@ -542,7 +542,7 @@ msgstr ""
 "No se puede determinar la dirección del bus desde la variable de entorno "
 "DBUS_STARTER_BUS_TYPE; variable «%s» desconocida"
 
-#: ../gio/gdbusaddress.c:1654 ../gio/gdbusconnection.c:7155
+#: ../gio/gdbusaddress.c:1657 ../gio/gdbusconnection.c:7155
 msgid ""
 "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
 "variable is not set"
@@ -550,7 +550,7 @@ msgstr ""
 "No se puede determinar la dirección del bus porque la variable de entorno "
 "DBUS_STARTER_BUS_TYPE no está establecida"
 
-#: ../gio/gdbusaddress.c:1664
+#: ../gio/gdbusaddress.c:1667
 #, c-format
 msgid "Unknown bus type %d"
 msgstr "Tipo de bus %d desconocido"
@@ -576,12 +576,12 @@ msgstr ""
 msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
 msgstr "Cancelado a través de GDBusAuthObserver::authorize-authenticated-peer"
 
-#: ../gio/gdbusauthmechanismsha1.c:261
+#: ../gio/gdbusauthmechanismsha1.c:262
 #, c-format
 msgid "Error when getting information for directory “%s”: %s"
 msgstr "Error al obtener la información de la carpeta «%s»: %s"
 
-#: ../gio/gdbusauthmechanismsha1.c:273
+#: ../gio/gdbusauthmechanismsha1.c:274
 #, c-format
 msgid ""
 "Permissions on directory “%s” are malformed. Expected mode 0700, got 0%o"
@@ -589,24 +589,24 @@ msgstr ""
 "Los permisos de la carpeta «%s» están mal formados. Se esperaba el modo "
 "0700, se obtuvo 0%o"
 
-#: ../gio/gdbusauthmechanismsha1.c:294
+#: ../gio/gdbusauthmechanismsha1.c:296
 #, c-format
 msgid "Error creating directory “%s”: %s"
 msgstr "Error al crear la carpeta %s: %s"
 
-#: ../gio/gdbusauthmechanismsha1.c:377
+#: ../gio/gdbusauthmechanismsha1.c:379
 #, c-format
 msgid "Error opening keyring “%s” for reading: "
 msgstr "Error al abrir el depósito de claves «%s» para su lectura: "
 
-#: ../gio/gdbusauthmechanismsha1.c:401 ../gio/gdbusauthmechanismsha1.c:714
+#: ../gio/gdbusauthmechanismsha1.c:403 ../gio/gdbusauthmechanismsha1.c:721
 #, c-format
 msgid "Line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr ""
 "La línea %d del depósito de claves en «%s» con contenido «%s» está mal "
 "formada"
 
-#: ../gio/gdbusauthmechanismsha1.c:415 ../gio/gdbusauthmechanismsha1.c:728
+#: ../gio/gdbusauthmechanismsha1.c:417 ../gio/gdbusauthmechanismsha1.c:735
 #, c-format
 msgid ""
 "First token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -614,7 +614,7 @@ msgstr ""
 "El primer token de la línea %d del depósito de claves en «%s» con contenido "
 "«%s» está mal formado"
 
-#: ../gio/gdbusauthmechanismsha1.c:430 ../gio/gdbusauthmechanismsha1.c:742
+#: ../gio/gdbusauthmechanismsha1.c:432 ../gio/gdbusauthmechanismsha1.c:749
 #, c-format
 msgid ""
 "Second token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -622,37 +622,37 @@ msgstr ""
 "El segundo token de la línea %d del depósito de claves en «%s» con contenido "
 "«%s» está mal formado"
 
-#: ../gio/gdbusauthmechanismsha1.c:454
+#: ../gio/gdbusauthmechanismsha1.c:456
 #, c-format
 msgid "Didn’t find cookie with id %d in the keyring at “%s”"
 msgstr "No se encontró la «cookie» con ID %d en el depósito de claves en «%s»"
 
-#: ../gio/gdbusauthmechanismsha1.c:532
+#: ../gio/gdbusauthmechanismsha1.c:536
 #, c-format
 msgid "Error deleting stale lock file “%s”: %s"
 msgstr "Error al eliminar el archivo de bloqueo antiguo «%s»: %s"
 
-#: ../gio/gdbusauthmechanismsha1.c:564
+#: ../gio/gdbusauthmechanismsha1.c:569
 #, c-format
 msgid "Error creating lock file “%s”: %s"
 msgstr "Error al crear el archivo de bloqueo «%s»: %s"
 
-#: ../gio/gdbusauthmechanismsha1.c:594
+#: ../gio/gdbusauthmechanismsha1.c:600
 #, c-format
 msgid "Error closing (unlinked) lock file “%s”: %s"
 msgstr "Error al cerrar (desenlazar) el archivo de bloqueo «%s»: %s"
 
-#: ../gio/gdbusauthmechanismsha1.c:604
+#: ../gio/gdbusauthmechanismsha1.c:611
 #, c-format
 msgid "Error unlinking lock file “%s”: %s"
 msgstr "Error al desenlazar el archivo de bloqueo «%s»: %s"
 
-#: ../gio/gdbusauthmechanismsha1.c:681
+#: ../gio/gdbusauthmechanismsha1.c:688
 #, c-format
 msgid "Error opening keyring “%s” for writing: "
 msgstr "Error al abrir el depósito de claves «%s» para su escritura:"
 
-#: ../gio/gdbusauthmechanismsha1.c:878
+#: ../gio/gdbusauthmechanismsha1.c:885
 #, c-format
 msgid "(Additionally, releasing the lock for “%s” also failed: %s) "
 msgstr ""
@@ -1004,17 +1004,17 @@ msgstr ""
 "No se puede especificar el archivo de número usado una sola vez al crear un "
 "servidor"
 
-#: ../gio/gdbusserver.c:873
+#: ../gio/gdbusserver.c:876
 #, c-format
 msgid "Error writing nonce file at “%s”: %s"
 msgstr "Error al escribir el archivo de número usado una sola vez en «%s»: %s"
 
-#: ../gio/gdbusserver.c:1044
+#: ../gio/gdbusserver.c:1047
 #, c-format
 msgid "The string “%s” is not a valid D-Bus GUID"
 msgstr "La cadena «%s» no es un GUID válido de D-Bus"
 
-#: ../gio/gdbusserver.c:1084
+#: ../gio/gdbusserver.c:1087
 #, c-format
 msgid "Cannot listen on unsupported transport “%s”"
 msgstr "No se puede escuchar en un transporte no soportado «%s»"
@@ -1398,11 +1398,11 @@ msgstr "Se esperaba un GEmblem para GEmblemedIconjo"
 #: ../gio/gfile.c:969 ../gio/gfile.c:1207 ../gio/gfile.c:1345
 #: ../gio/gfile.c:1583 ../gio/gfile.c:1638 ../gio/gfile.c:1696
 #: ../gio/gfile.c:1780 ../gio/gfile.c:1837 ../gio/gfile.c:1901
-#: ../gio/gfile.c:1956 ../gio/gfile.c:3609 ../gio/gfile.c:3664
-#: ../gio/gfile.c:3900 ../gio/gfile.c:3942 ../gio/gfile.c:4410
-#: ../gio/gfile.c:4821 ../gio/gfile.c:4906 ../gio/gfile.c:4996
-#: ../gio/gfile.c:5093 ../gio/gfile.c:5180 ../gio/gfile.c:5281
-#: ../gio/gfile.c:7822 ../gio/gfile.c:7912 ../gio/gfile.c:7996
+#: ../gio/gfile.c:1956 ../gio/gfile.c:3614 ../gio/gfile.c:3669
+#: ../gio/gfile.c:3905 ../gio/gfile.c:3947 ../gio/gfile.c:4415
+#: ../gio/gfile.c:4826 ../gio/gfile.c:4911 ../gio/gfile.c:5001
+#: ../gio/gfile.c:5098 ../gio/gfile.c:5185 ../gio/gfile.c:5286
+#: ../gio/gfile.c:7827 ../gio/gfile.c:7917 ../gio/gfile.c:8001
 #: ../gio/win32/gwinhttpfile.c:437
 msgid "Operation not supported"
 msgstr "Operación no soportada"
@@ -1415,7 +1415,7 @@ msgstr "Operación no soportada"
 msgid "Containing mount does not exist"
 msgstr "El punto de montaje contenido no existe"
 
-#: ../gio/gfile.c:2515 ../gio/glocalfile.c:2375
+#: ../gio/gfile.c:2515 ../gio/glocalfile.c:2377
 msgid "Can’t copy over directory"
 msgstr "No se puede copiar sobre la carpeta"
 
@@ -1440,40 +1440,40 @@ msgstr "La unión no  está soportada"
 msgid "Error splicing file: %s"
 msgstr "Error al unir el archivo: %s"
 
-#: ../gio/gfile.c:3024
+#: ../gio/gfile.c:3025
 msgid "Copy (reflink/clone) between mounts is not supported"
 msgstr "Copiar (reflink/clone) entre puntos de montaje no está soportado"
 
-#: ../gio/gfile.c:3028
+#: ../gio/gfile.c:3029
 msgid "Copy (reflink/clone) is not supported or invalid"
 msgstr "Copiar (reflink/clone) no está soportado o no es válido"
 
-#: ../gio/gfile.c:3033
+#: ../gio/gfile.c:3034
 msgid "Copy (reflink/clone) is not supported or didn’t work"
 msgstr "Copiar (reflink/clone) no está soportado o no ha funcionado"
 
-#: ../gio/gfile.c:3096
+#: ../gio/gfile.c:3097
 msgid "Can’t copy special file"
 msgstr "No se puede copiar el archivo especial"
 
-#: ../gio/gfile.c:3890
+#: ../gio/gfile.c:3895
 msgid "Invalid symlink value given"
 msgstr "El valor del enlace simbólico dado no es válido"
 
-#: ../gio/gfile.c:4051
+#: ../gio/gfile.c:4056
 msgid "Trash not supported"
 msgstr "No se soporta mover a la papelera"
 
-#: ../gio/gfile.c:4163
+#: ../gio/gfile.c:4168
 #, c-format
 msgid "File names cannot contain “%c”"
 msgstr "Los nombres de archivo no pueden contener «%c»"
 
-#: ../gio/gfile.c:6609 ../gio/gvolume.c:363
+#: ../gio/gfile.c:6614 ../gio/gvolume.c:363
 msgid "volume doesn’t implement mount"
 msgstr "el volumen no implementa el montaje"
 
-#: ../gio/gfile.c:6718
+#: ../gio/gfile.c:6723
 msgid "No application is registered as handling this file"
 msgstr "No hay ninguna aplicación registrada para manejar este archivo"
 
@@ -1724,12 +1724,12 @@ msgstr ""
 "Use %s para obtener ayuda detallada.\n"
 "\n"
 
-#: ../gio/gio-tool-cat.c:80
+#: ../gio/gio-tool-cat.c:83
 msgid "Error writing to stdout"
 msgstr "Error al escribir en la salida estándar"
 
 #. Translators: commandline placeholder
-#: ../gio/gio-tool-cat.c:124 ../gio/gio-tool-info.c:282
+#: ../gio/gio-tool-cat.c:127 ../gio/gio-tool-info.c:282
 #: ../gio/gio-tool-list.c:165 ../gio/gio-tool-mkdir.c:48
 #: ../gio/gio-tool-monitor.c:37 ../gio/gio-tool-monitor.c:39
 #: ../gio/gio-tool-monitor.c:41 ../gio/gio-tool-monitor.c:43
@@ -1740,11 +1740,11 @@ msgstr "Error al escribir en la salida estándar"
 msgid "LOCATION"
 msgstr "UBICACIÓN"
 
-#: ../gio/gio-tool-cat.c:129
+#: ../gio/gio-tool-cat.c:132
 msgid "Concatenate files and print to standard output."
 msgstr "Concatenar archivos e imprimir por la salida estándar."
 
-#: ../gio/gio-tool-cat.c:131
+#: ../gio/gio-tool-cat.c:134
 msgid ""
 "gio cat works just like the traditional cat utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
@@ -1754,7 +1754,7 @@ msgstr ""
 "ubicaciones GIO en lugar de archivos locales: por ejemplo, puede\n"
 "usar algo como smb://servidor/recurso/archivo.txt como ubicación."
 
-#: ../gio/gio-tool-cat.c:153 ../gio/gio-tool-info.c:313
+#: ../gio/gio-tool-cat.c:156 ../gio/gio-tool-info.c:313
 #: ../gio/gio-tool-mkdir.c:76 ../gio/gio-tool-monitor.c:228
 #: ../gio/gio-tool-open.c:71 ../gio/gio-tool-remove.c:72
 msgid "No locations given"
@@ -2294,7 +2294,7 @@ msgstr "Seguir enlaces simbólicos, puntos de montaje y atajos"
 msgid "List contents of directories in a tree-like format."
 msgstr "Listar el contenido de las carpetas en forma de árbol."
 
-#: ../gio/glib-compile-resources.c:142 ../gio/glib-compile-schemas.c:1492
+#: ../gio/glib-compile-resources.c:142 ../gio/glib-compile-schemas.c:1501
 #, c-format
 msgid "Element <%s> not allowed inside <%s>"
 msgstr "No se permite el elemento <%s> dentro de <%s>"
@@ -2339,12 +2339,12 @@ msgstr "Error al leer el archivo %s: %s"
 msgid "Error compressing file %s"
 msgstr "Error al comprimir el archivo %s"
 
-#: ../gio/glib-compile-resources.c:469 ../gio/glib-compile-schemas.c:1604
+#: ../gio/glib-compile-resources.c:469
 #, c-format
 msgid "text may not appear inside <%s>"
 msgstr "El texto no debe aparecer dentro de <%s>"
 
-#: ../gio/glib-compile-resources.c:664 ../gio/glib-compile-schemas.c:2053
+#: ../gio/glib-compile-resources.c:664 ../gio/glib-compile-schemas.c:2067
 msgid "Show program version and exit"
 msgstr "Mostrar la versión del programa y salir"
 
@@ -2360,8 +2360,8 @@ msgstr ""
 "La carpeta de la que se tienen que leer los archivos (la predeterminada es "
 "la carpeta actual)"
 
-#: ../gio/glib-compile-resources.c:666 ../gio/glib-compile-schemas.c:2054
-#: ../gio/glib-compile-schemas.c:2082
+#: ../gio/glib-compile-resources.c:666 ../gio/glib-compile-schemas.c:2068
+#: ../gio/glib-compile-schemas.c:2096
 msgid "DIRECTORY"
 msgstr "CARPETA"
 
@@ -2422,55 +2422,224 @@ msgstr ""
 msgid "You should give exactly one file name\n"
 msgstr "Deberá proporcionar exactamente un nombre de archivo\n"
 
-#: ../gio/glib-compile-schemas.c:784
-msgid "empty names are not permitted"
-msgstr "no se permiten nombres vacíos"
+#: ../gio/glib-compile-schemas.c:95
+#, c-format
+msgid "nick must be a minimum of 2 characters"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:106
+#, c-format
+#| msgid "Invalid symlink value given"
+msgid "Invalid numeric value"
+msgstr "Valor numérico no válido"
+
+#: ../gio/glib-compile-schemas.c:114
+#, c-format
+#| msgid "<%s id='%s'> already specified"
+msgid "<value nick='%s'/> already specified"
+msgstr "<value nick='%s'/> ya especificado"
+
+#: ../gio/glib-compile-schemas.c:122
+#, c-format
+#| msgid "<key name='%s'> already specified"
+msgid "value='%s' already specified"
+msgstr "value='%s' ya especificado"
+
+#: ../gio/glib-compile-schemas.c:136
+#, c-format
+msgid "flags values must have at most 1 bit set"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:161
+#, c-format
+msgid "<%s> must contain at least one <value>"
+msgstr "<%s> debe contener al menos un <value>"
+
+#: ../gio/glib-compile-schemas.c:315
+#, fuzzy, c-format
+#| msgid "No connection endpoint specified"
+msgid "<%s> is not contained in the specified range"
+msgstr "No se especificó ningún punto de conexión extremo"
+
+#: ../gio/glib-compile-schemas.c:327
+#, c-format
+msgid "<%s> is not a valid member of the specified enumerated type"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:333
+#, c-format
+msgid "<%s> contains string not in the specified flags type"
+msgstr ""
+"<%s> contiene una cadena que no está especificada en los tipos de opciones"
+
+#: ../gio/glib-compile-schemas.c:339
+#, c-format
+msgid "<%s> contains a string not in <choices>"
+msgstr "<%s> contiene una cadena que no está en <choices>"
 
-#: ../gio/glib-compile-schemas.c:794
+#: ../gio/glib-compile-schemas.c:373
+#| msgid "<key name='%s'> already specified"
+msgid "<range/> already specified for this key"
+msgstr "<range/> ya especificada para esta clave"
+
+#: ../gio/glib-compile-schemas.c:391
+#, c-format
+msgid "<range> not allowed for keys of type “%s”"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:408
+#, c-format
+msgid "<range> specified minimum is greater than maximum"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:433
 #, c-format
-msgid "invalid name '%s': names must begin with a lowercase letter"
+msgid "unsupported l10n category: %s"
+msgstr "categoría l10n no soportada: %s"
+
+#: ../gio/glib-compile-schemas.c:441
+msgid "l10n requested, but no gettext domain given"
 msgstr ""
-"nombre «%s» no válido: los nombres deben comenzar por una letra minúscula"
 
-#: ../gio/glib-compile-schemas.c:806
+#: ../gio/glib-compile-schemas.c:453
+msgid "translation context given for value without l10n enabled"
+msgstr "contexto de traducción especificado sin tener l10n activado"
+
+#: ../gio/glib-compile-schemas.c:475
 #, c-format
+#| msgid "Failed to create file “%s”: %s"
+msgid "Failed to parse <default> value of type “%s”: "
+msgstr "Falló al analizar el valor <default> del tipo «%s»: "
+
+#: ../gio/glib-compile-schemas.c:492
 msgid ""
-"invalid name '%s': invalid character '%c'; only lowercase letters, numbers "
-"and hyphen ('-') are permitted."
+"<choices> cannot be specified for keys tagged as having an enumerated type"
 msgstr ""
-"nombre «%s» no válido: el carácter «%c» no es válido; sólo se permiten "
-"nombres en minúscula, números y guión («-»)."
 
-#: ../gio/glib-compile-schemas.c:815
+#: ../gio/glib-compile-schemas.c:501
+#| msgid "<child name='%s'> already specified"
+msgid "<choices> already specified for this key"
+msgstr "<choices> ya especificado para esta clave"
+
+#: ../gio/glib-compile-schemas.c:513
 #, c-format
-msgid "invalid name '%s': two successive hyphens ('--') are not permitted."
-msgstr "nombre «%s» no válido: no se permiten dos guiones seguidos («--»)."
+msgid "<choices> not allowed for keys of type “%s”"
+msgstr ""
 
-#: ../gio/glib-compile-schemas.c:824
+#: ../gio/glib-compile-schemas.c:529
 #, c-format
-msgid "invalid name '%s': the last character may not be a hyphen ('-')."
-msgstr "nombre «%s» no válido: el último carácter no puede ser un guión («-»)."
+#| msgid "<child name='%s'> already specified"
+msgid "<choice value='%s'/> already given"
+msgstr "<choice value='%s'/> ya especificado"
 
-#: ../gio/glib-compile-schemas.c:832
+#: ../gio/glib-compile-schemas.c:544
 #, c-format
-msgid "invalid name '%s': maximum length is 1024"
-msgstr "nombre «%s» no válido: la longitud máxima es 1024"
+msgid "<choices> must contain at least one <choice>"
+msgstr "<choices> debe contener al menos un <choice>"
+
+#: ../gio/glib-compile-schemas.c:558
+#| msgid "<child name='%s'> already specified"
+msgid "<aliases> already specified for this key"
+msgstr "<aliases> ya especificado por esta clave"
+
+#: ../gio/glib-compile-schemas.c:562
+msgid ""
+"<aliases> can only be specified for keys with enumerated or flags types or "
+"after <choices>"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:581
+#, c-format
+msgid ""
+"<alias value='%s'/> given when “%s” is already a member of the enumerated "
+"type"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:587
+#, c-format
+msgid "<alias value='%s'/> given when <choice value='%s'/> was already given"
+msgstr ""
 
-#: ../gio/glib-compile-schemas.c:902
+#: ../gio/glib-compile-schemas.c:595
+#, c-format
+#| msgid "<%s id='%s'> already specified"
+msgid "<alias value='%s'/> already specified"
+msgstr "<alias value='%s'/> ya especificado"
+
+#: ../gio/glib-compile-schemas.c:605
+#, fuzzy, c-format
+#| msgid "“%s” is not a signed number"
+msgid "alias target “%s” is not in enumerated type"
+msgstr "«%s» no es un número con signo"
+
+#: ../gio/glib-compile-schemas.c:606
+#, c-format
+msgid "alias target “%s” is not in <choices>"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:621
+#, c-format
+msgid "<aliases> must contain at least one <alias>"
+msgstr "<aliases> debe contener al menos un <alias>"
+
+#: ../gio/glib-compile-schemas.c:786
+#| msgid "empty names are not permitted"
+msgid "Empty names are not permitted"
+msgstr "No se permiten nombres vacíos"
+
+#: ../gio/glib-compile-schemas.c:796
+#, c-format
+#| msgid "invalid name '%s': names must begin with a lowercase letter"
+msgid "Invalid name “%s”: names must begin with a lowercase letter"
+msgstr ""
+"Nombre «%s» no válido: los nombres deben comenzar por una letra minúscula"
+
+#: ../gio/glib-compile-schemas.c:808
+#, c-format
+#| msgid ""
+#| "invalid name '%s': invalid character '%c'; only lowercase letters, "
+#| "numbers and hyphen ('-') are permitted."
+msgid ""
+"Invalid name “%s”: invalid character “%c”; only lowercase letters, numbers "
+"and hyphen (“-”) are permitted"
+msgstr ""
+"Nombre «%s» no válido: el carácter «%c» no es válido; sólo se permiten "
+"nombres en minúscula, números y guión («-»)"
+
+#: ../gio/glib-compile-schemas.c:817
+#, c-format
+#| msgid "invalid name '%s': two successive hyphens ('--') are not permitted."
+msgid "Invalid name “%s”: two successive hyphens (“--”) are not permitted"
+msgstr "Nombre «%s» no válido: no se permiten dos guiones seguidos («--»)"
+
+#: ../gio/glib-compile-schemas.c:826
+#, c-format
+#| msgid "invalid name '%s': the last character may not be a hyphen ('-')."
+msgid "Invalid name “%s”: the last character may not be a hyphen (“-”)"
+msgstr "Nombre «%s» no válido: el último carácter no puede ser un guión («-»)"
+
+#: ../gio/glib-compile-schemas.c:834
+#, c-format
+#| msgid "invalid name '%s': maximum length is 1024"
+msgid "Invalid name “%s”: maximum length is 1024"
+msgstr "Nombre «%s» no válido: la longitud máxima es 1024"
+
+#: ../gio/glib-compile-schemas.c:904
 #, c-format
 msgid "<child name='%s'> already specified"
 msgstr "<child name='%s'> ya especificado"
 
-#: ../gio/glib-compile-schemas.c:928
-msgid "cannot add keys to a 'list-of' schema"
-msgstr "no se pueden añadir claves a un esquema de «lista-de»"
+#: ../gio/glib-compile-schemas.c:930
+#| msgid "cannot add keys to a 'list-of' schema"
+msgid "Cannot add keys to a “list-of” schema"
+msgstr "no se pueden añadir claves a un esquema «list-of»"
 
-#: ../gio/glib-compile-schemas.c:939
+#: ../gio/glib-compile-schemas.c:941
 #, c-format
 msgid "<key name='%s'> already specified"
 msgstr "<key name='%s'> ya especificada"
 
-#: ../gio/glib-compile-schemas.c:957
+#: ../gio/glib-compile-schemas.c:959
 #, c-format
 msgid ""
 "<key name='%s'> shadows <key name='%s'> in <schema id='%s'>; use <override> "
@@ -2479,65 +2648,75 @@ msgstr ""
 "<key name='%s'> eclipsa a <key name='%s'> en <schema id='%s'>; use "
 "<override> para modificar el valor"
 
-#: ../gio/glib-compile-schemas.c:968
+#: ../gio/glib-compile-schemas.c:970
 #, c-format
+#| msgid ""
+#| "exactly one of 'type', 'enum' or 'flags' must be specified as an "
+#| "attribute to <key>"
 msgid ""
-"exactly one of 'type', 'enum' or 'flags' must be specified as an attribute "
+"Exactly one of “type”, “enum” or “flags” must be specified as an attribute "
 "to <key>"
 msgstr ""
-"se debe especificar exactamente uno de «type», «enum» o «flags» como "
+"Se debe especificar exactamente uno de «type», «enum» o «flags» como "
 "atributo para <key>"
 
-#: ../gio/glib-compile-schemas.c:987
+#: ../gio/glib-compile-schemas.c:989
 #, c-format
 msgid "<%s id='%s'> not (yet) defined."
 msgstr "<%s id='%s'> aún no especificado."
 
-#: ../gio/glib-compile-schemas.c:1002
+#: ../gio/glib-compile-schemas.c:1004
 #, c-format
-msgid "invalid GVariant type string '%s'"
-msgstr "tipo de cadena GVariant «%s» no válida"
+#| msgid "invalid GVariant type string '%s'"
+msgid "Invalid GVariant type string “%s”"
+msgstr "Tipo de cadena GVariant «%s» no válida"
 
-#: ../gio/glib-compile-schemas.c:1032
-msgid "<override> given but schema isn't extending anything"
-msgstr "Se proporcionó <override> pero el esquema no está extendiendo nada"
+#: ../gio/glib-compile-schemas.c:1034
+#| msgid "<override> given but schema isn't extending anything"
+msgid "<override> given but schema isn’t extending anything"
+msgstr "Se proporcionó <override> pero el esquema no extiende nada"
 
-#: ../gio/glib-compile-schemas.c:1045
+#: ../gio/glib-compile-schemas.c:1047
 #, c-format
-msgid "no <key name='%s'> to override"
-msgstr "no existe <key name='%s'> para sobrescribir"
+#| msgid "no <key name='%s'> to override"
+msgid "No <key name='%s'> to override"
+msgstr "No existe <key name='%s'> para sobrescribir"
 
-#: ../gio/glib-compile-schemas.c:1053
+#: ../gio/glib-compile-schemas.c:1055
 #, c-format
 msgid "<override name='%s'> already specified"
 msgstr "<override name='%s'> ya especificada"
 
-#: ../gio/glib-compile-schemas.c:1126
+#: ../gio/glib-compile-schemas.c:1128
 #, c-format
 msgid "<schema id='%s'> already specified"
 msgstr "<schema id='%s'> ya especificado"
 
-#: ../gio/glib-compile-schemas.c:1138
+#: ../gio/glib-compile-schemas.c:1140
 #, c-format
-msgid "<schema id='%s'> extends not yet existing schema '%s'"
+#| msgid "<schema id='%s'> extends not yet existing schema '%s'"
+msgid "<schema id='%s'> extends not yet existing schema “%s”"
 msgstr "<schema id='%s'> extiende el esquema «%s» que aún no existe"
 
-#: ../gio/glib-compile-schemas.c:1154
+#: ../gio/glib-compile-schemas.c:1156
 #, c-format
-msgid "<schema id='%s'> is list of not yet existing schema '%s'"
+#| msgid "<schema id='%s'> is list of not yet existing schema '%s'"
+msgid "<schema id='%s'> is list of not yet existing schema “%s”"
 msgstr "<schema id='%s'> es una lista del esquema «%s» que aún no existe"
 
-#: ../gio/glib-compile-schemas.c:1162
+#: ../gio/glib-compile-schemas.c:1164
 #, c-format
-msgid "Can not be a list of a schema with a path"
+#| msgid "Can not be a list of a schema with a path"
+msgid "Cannot be a list of a schema with a path"
 msgstr "No puede ser una lista de un esquema con una ruta"
 
-#: ../gio/glib-compile-schemas.c:1172
+#: ../gio/glib-compile-schemas.c:1174
 #, c-format
-msgid "Can not extend a schema with a path"
+#| msgid "Can not extend a schema with a path"
+msgid "Cannot extend a schema with a path"
 msgstr "No se puede extender un esquema con una ruta"
 
-#: ../gio/glib-compile-schemas.c:1182
+#: ../gio/glib-compile-schemas.c:1184
 #, c-format
 msgid ""
 "<schema id='%s'> is a list, extending <schema id='%s'> which is not a list"
@@ -2545,77 +2724,106 @@ msgstr ""
 "<schema id='%s'> es una lista, extendiendo <schema id='%s'> que no es una "
 "lista"
 
-#: ../gio/glib-compile-schemas.c:1192
+#: ../gio/glib-compile-schemas.c:1194
 #, c-format
+#| msgid ""
+#| "<schema id='%s' list-of='%s'> extends <schema id='%s' list-of='%s'> but "
+#| "'%s' does not extend '%s'"
 msgid ""
-"<schema id='%s' list-of='%s'> extends <schema id='%s' list-of='%s'> but '%s' "
-"does not extend '%s'"
+"<schema id='%s' list-of='%s'> extends <schema id='%s' list-of='%s'> but “%s” "
+"does not extend “%s”"
 msgstr ""
 "<schema id='%s' list-of='%s'> extiende <schema id='%s' list-of='%s'> pero "
 "«%s» no extiende «%s»"
 
-#: ../gio/glib-compile-schemas.c:1209
+#: ../gio/glib-compile-schemas.c:1211
 #, c-format
-msgid "a path, if given, must begin and end with a slash"
-msgstr "si se especifica una ruta, debe comenzar y terminar con una barra"
+#| msgid "a path, if given, must begin and end with a slash"
+msgid "A path, if given, must begin and end with a slash"
+msgstr "Si se especifica una ruta, debe comenzar y terminar con una barra"
 
-#: ../gio/glib-compile-schemas.c:1216
+#: ../gio/glib-compile-schemas.c:1218
 #, c-format
-msgid "the path of a list must end with ':/'"
-msgstr "la ruta de la lista debe terminar con «:/»"
+#| msgid "the path of a list must end with ':/'"
+msgid "The path of a list must end with “:/”"
+msgstr "La ruta de la lista debe terminar con «:/»"
 
-#: ../gio/glib-compile-schemas.c:1248
+#: ../gio/glib-compile-schemas.c:1227
+#, c-format
+msgid ""
+"Warning: Schema “%s” has path “%s”.  Paths starting with “/apps/”, “/"
+"desktop/” or “/system/” are deprecated."
+msgstr ""
+"Advertencia: el esquema «%s» tiene la ruta «%s».  Las rutas que empiezan por "
+"«/apps/», «/desktop/» o «/system/» están obsoletas."
+
+#: ../gio/glib-compile-schemas.c:1257
 #, c-format
 msgid "<%s id='%s'> already specified"
 msgstr "<%s id='%s'> ya especificado"
 
-#: ../gio/glib-compile-schemas.c:1398 ../gio/glib-compile-schemas.c:1414
+#: ../gio/glib-compile-schemas.c:1407 ../gio/glib-compile-schemas.c:1423
 #, c-format
 msgid "Only one <%s> element allowed inside <%s>"
 msgstr "Sólo se permite un elemento <%s> dentro de <%s>"
 
-#: ../gio/glib-compile-schemas.c:1496
+#: ../gio/glib-compile-schemas.c:1505
 #, c-format
 msgid "Element <%s> not allowed at the top level"
 msgstr "No se permite el elemento <%s> en el nivel superior"
 
+#: ../gio/glib-compile-schemas.c:1523
+msgid "Element <default> is required in <key>"
+msgstr "Se requiere el elemento <default> en <key>"
+
+#: ../gio/glib-compile-schemas.c:1613
+#, c-format
+#| msgid "text may not appear inside <%s>"
+msgid "Text may not appear inside <%s>"
+msgstr "El texto no debe aparecer dentro de <%s>"
+
+#: ../gio/glib-compile-schemas.c:1681
+#, c-format
+msgid "Warning: undefined reference to <schema id='%s'/>"
+msgstr "Advertencia: referencia a <schema id='%s'/> no definida"
+
 #. Translators: Do not translate "--strict".
-#: ../gio/glib-compile-schemas.c:1806 ../gio/glib-compile-schemas.c:1880
-#: ../gio/glib-compile-schemas.c:1956
+#: ../gio/glib-compile-schemas.c:1820 ../gio/glib-compile-schemas.c:1894
+#: ../gio/glib-compile-schemas.c:1970
 #, c-format
 msgid "--strict was specified; exiting.\n"
 msgstr "se especificó --strict; saliendo.\n"
 
-#: ../gio/glib-compile-schemas.c:1816
+#: ../gio/glib-compile-schemas.c:1830
 #, c-format
 msgid "This entire file has been ignored.\n"
 msgstr "Se ha ignorado este archivo completamente.\n"
 
-#: ../gio/glib-compile-schemas.c:1876
+#: ../gio/glib-compile-schemas.c:1890
 #, c-format
 msgid "Ignoring this file.\n"
 msgstr "Ignorando este archivo.\n"
 
-#: ../gio/glib-compile-schemas.c:1916
+#: ../gio/glib-compile-schemas.c:1930
 #, c-format
 msgid "No such key '%s' in schema '%s' as specified in override file '%s'"
 msgstr ""
 "No existe la clave «%s» en el esquema «%s» como se especificó en el archivo "
 "de sobrescritura «%s»"
 
-#: ../gio/glib-compile-schemas.c:1922 ../gio/glib-compile-schemas.c:1980
-#: ../gio/glib-compile-schemas.c:2008
+#: ../gio/glib-compile-schemas.c:1936 ../gio/glib-compile-schemas.c:1994
+#: ../gio/glib-compile-schemas.c:2022
 #, c-format
 msgid "; ignoring override for this key.\n"
 msgstr "; ignorando la sobrescritura para esta clave.\n"
 
-#: ../gio/glib-compile-schemas.c:1926 ../gio/glib-compile-schemas.c:1984
-#: ../gio/glib-compile-schemas.c:2012
+#: ../gio/glib-compile-schemas.c:1940 ../gio/glib-compile-schemas.c:1998
+#: ../gio/glib-compile-schemas.c:2026
 #, c-format
 msgid " and --strict was specified; exiting.\n"
 msgstr "y se especificó --strict; saliendo.\n"
 
-#: ../gio/glib-compile-schemas.c:1942
+#: ../gio/glib-compile-schemas.c:1956
 #, c-format
 msgid ""
 "error parsing key '%s' in schema '%s' as specified in override file '%s': %s."
@@ -2623,12 +2831,12 @@ msgstr ""
 "error al analizar la clave «%s» en el esquema «%s» como se especificó en el "
 "archivo de sobrescritura «%s»: %s."
 
-#: ../gio/glib-compile-schemas.c:1952
+#: ../gio/glib-compile-schemas.c:1966
 #, c-format
 msgid "Ignoring override for this key.\n"
 msgstr "Ignorando la sobrescritura para esta clave.\n"
 
-#: ../gio/glib-compile-schemas.c:1970
+#: ../gio/glib-compile-schemas.c:1984
 #, c-format
 msgid ""
 "override for key '%s' in schema '%s' in override file '%s' is outside the "
@@ -2637,7 +2845,7 @@ msgstr ""
 "la clave de sobrescritura «%s» en el esquema «%s» en el archivo de "
 "sobrescritura «%s» está fuera del rango proporcionado en el esquema"
 
-#: ../gio/glib-compile-schemas.c:1998
+#: ../gio/glib-compile-schemas.c:2012
 #, c-format
 msgid ""
 "override for key '%s' in schema '%s' in override file '%s' is not in the "
@@ -2646,23 +2854,23 @@ msgstr ""
 "la clave de sobrescritura «%s» en el esquema «%s» en el archivo de "
 "sobrescritura «%s» no está en la lista de opciones válidas"
 
-#: ../gio/glib-compile-schemas.c:2054
+#: ../gio/glib-compile-schemas.c:2068
 msgid "where to store the gschemas.compiled file"
 msgstr "dónde almacenar el archivo gschemas.compiled"
 
-#: ../gio/glib-compile-schemas.c:2055
+#: ../gio/glib-compile-schemas.c:2069
 msgid "Abort on any errors in schemas"
 msgstr "Abortar ante cualquier error en los esquemas"
 
-#: ../gio/glib-compile-schemas.c:2056
+#: ../gio/glib-compile-schemas.c:2070
 msgid "Do not write the gschema.compiled file"
 msgstr "No escribir el archivo gschemas.compiled"
 
-#: ../gio/glib-compile-schemas.c:2057
+#: ../gio/glib-compile-schemas.c:2071
 msgid "Do not enforce key name restrictions"
 msgstr "No forzar las restricciones de nombre de las claves"
 
-#: ../gio/glib-compile-schemas.c:2085
+#: ../gio/glib-compile-schemas.c:2099
 msgid ""
 "Compile all GSettings schema files into a schema cache.\n"
 "Schema files are required to have the extension .gschema.xml,\n"
@@ -2673,22 +2881,22 @@ msgstr ""
 "Los archivos de esquema deben tener la extensión .gschema.xml,\n"
 "y el archivo de caché se llama gschemas.compiled."
 
-#: ../gio/glib-compile-schemas.c:2106
+#: ../gio/glib-compile-schemas.c:2120
 #, c-format
 msgid "You should give exactly one directory name\n"
 msgstr "Deberá proporcionar exactamente un nombre de carpeta\n"
 
-#: ../gio/glib-compile-schemas.c:2148
+#: ../gio/glib-compile-schemas.c:2162
 #, c-format
 msgid "No schema files found: "
 msgstr "No se encontró ningún archivo de esquemas: "
 
-#: ../gio/glib-compile-schemas.c:2151
+#: ../gio/glib-compile-schemas.c:2165
 #, c-format
 msgid "doing nothing.\n"
 msgstr "sin hacer nada.\n"
 
-#: ../gio/glib-compile-schemas.c:2154
+#: ../gio/glib-compile-schemas.c:2168
 #, c-format
 msgid "removed existing output file.\n"
 msgstr "se quitó el archivo de salida existente.\n"
@@ -2725,8 +2933,8 @@ msgstr "Error al leer el archivo %s: %s"
 msgid "Can’t rename file, filename already exists"
 msgstr "No se puede renombrar el archivo, el nombre de archivo ya existe"
 
-#: ../gio/glocalfile.c:1237 ../gio/glocalfile.c:2251 ../gio/glocalfile.c:2279
-#: ../gio/glocalfile.c:2436 ../gio/glocalfileoutputstream.c:549
+#: ../gio/glocalfile.c:1237 ../gio/glocalfile.c:2253 ../gio/glocalfile.c:2281
+#: ../gio/glocalfile.c:2438 ../gio/glocalfileoutputstream.c:549
 msgid "Invalid filename"
 msgstr "Nombre de archivo no válido"
 
@@ -2740,186 +2948,186 @@ msgstr "Error al abrir el archivo %s: %s"
 msgid "Error removing file %s: %s"
 msgstr "Error al eliminar el archivo %s: %s"
 
-#: ../gio/glocalfile.c:1927
+#: ../gio/glocalfile.c:1928
 #, c-format
 msgid "Error trashing file %s: %s"
 msgstr "Error al mover a la papelera el archivo %s: %s"
 
-#: ../gio/glocalfile.c:1950
+#: ../gio/glocalfile.c:1951
 #, c-format
 msgid "Unable to create trash dir %s: %s"
 msgstr "No se pudo crear la carpeta de papelera %s: %s"
 
-#: ../gio/glocalfile.c:1970
+#: ../gio/glocalfile.c:1971
 #, c-format
 msgid "Unable to find toplevel directory to trash %s"
 msgstr "No se pudo encontrar la carpeta de nivel superior para la papelera %s"
 
-#: ../gio/glocalfile.c:2049 ../gio/glocalfile.c:2069
+#: ../gio/glocalfile.c:2050 ../gio/glocalfile.c:2070
 #, c-format
 msgid "Unable to find or create trash directory for %s"
 msgstr "No se pudo encontrar o crear la carpeta de la papelera para %s"
 
-#: ../gio/glocalfile.c:2103
+#: ../gio/glocalfile.c:2105
 #, c-format
 msgid "Unable to create trashing info file for %s: %s"
 msgstr "No se pudo crear la información de papelera para el archivo %s: %s"
 
-#: ../gio/glocalfile.c:2162
+#: ../gio/glocalfile.c:2164
 #, c-format
 msgid "Unable to trash file %s across filesystem boundaries"
 msgstr ""
 "No se pudo enviar a la papelera el archivo %s entre sistemas de archivos"
 
-#: ../gio/glocalfile.c:2166 ../gio/glocalfile.c:2222
+#: ../gio/glocalfile.c:2168 ../gio/glocalfile.c:2224
 #, c-format
 msgid "Unable to trash file %s: %s"
 msgstr "No se pudo enviar a la papelera el archivo %s: %s"
 
-#: ../gio/glocalfile.c:2228
+#: ../gio/glocalfile.c:2230
 #, c-format
 msgid "Unable to trash file %s"
 msgstr "No se pudo enviar a la papelera el archivo %s"
 
-#: ../gio/glocalfile.c:2254
+#: ../gio/glocalfile.c:2256
 #, c-format
 msgid "Error creating directory %s: %s"
 msgstr "Error al crear la carpeta %s: %s"
 
-#: ../gio/glocalfile.c:2283
+#: ../gio/glocalfile.c:2285
 #, c-format
 msgid "Filesystem does not support symbolic links"
 msgstr "El sistema de archivos no soporta enlaces simbólicos"
 
-#: ../gio/glocalfile.c:2286
+#: ../gio/glocalfile.c:2288
 #, c-format
 msgid "Error making symbolic link %s: %s"
 msgstr "Error al crear el enlace simbólico %s: %s"
 
-#: ../gio/glocalfile.c:2292 ../glib/gfileutils.c:2077
+#: ../gio/glocalfile.c:2294 ../glib/gfileutils.c:2077
 msgid "Symbolic links not supported"
 msgstr "Enlaces simbólicos no soportados"
 
-#: ../gio/glocalfile.c:2347 ../gio/glocalfile.c:2382 ../gio/glocalfile.c:2439
+#: ../gio/glocalfile.c:2349 ../gio/glocalfile.c:2384 ../gio/glocalfile.c:2441
 #, c-format
 msgid "Error moving file %s: %s"
 msgstr "Error al mover el archivo %s: %s"
 
-#: ../gio/glocalfile.c:2370
+#: ../gio/glocalfile.c:2372
 msgid "Can’t move directory over directory"
 msgstr "No se puede mover una carpeta sobre una carpeta"
 
-#: ../gio/glocalfile.c:2396 ../gio/glocalfileoutputstream.c:925
-#: ../gio/glocalfileoutputstream.c:939 ../gio/glocalfileoutputstream.c:954
-#: ../gio/glocalfileoutputstream.c:971 ../gio/glocalfileoutputstream.c:985
+#: ../gio/glocalfile.c:2398 ../gio/glocalfileoutputstream.c:933
+#: ../gio/glocalfileoutputstream.c:947 ../gio/glocalfileoutputstream.c:962
+#: ../gio/glocalfileoutputstream.c:979 ../gio/glocalfileoutputstream.c:993
 msgid "Backup file creation failed"
 msgstr "Falló la creación del archivo de respaldo"
 
-#: ../gio/glocalfile.c:2415
+#: ../gio/glocalfile.c:2417
 #, c-format
 msgid "Error removing target file: %s"
 msgstr "Error al eliminar el archivo destino: %s"
 
-#: ../gio/glocalfile.c:2429
+#: ../gio/glocalfile.c:2431
 msgid "Move between mounts not supported"
 msgstr "No se soporta mover archivos entre puntos de montaje"
 
-#: ../gio/glocalfile.c:2620
+#: ../gio/glocalfile.c:2622
 #, c-format
 msgid "Could not determine the disk usage of %s: %s"
 msgstr "No se pudo determinar el uso de disco de %s: %s"
 
-#: ../gio/glocalfileinfo.c:721
+#: ../gio/glocalfileinfo.c:731
 msgid "Attribute value must be non-NULL"
 msgstr "El valor del atributo de ser no nulo"
 
-#: ../gio/glocalfileinfo.c:728
+#: ../gio/glocalfileinfo.c:738
 msgid "Invalid attribute type (string expected)"
 msgstr "Tipo de atributo no válido (se esperaba una cadena)"
 
-#: ../gio/glocalfileinfo.c:735
+#: ../gio/glocalfileinfo.c:745
 msgid "Invalid extended attribute name"
 msgstr "Nombre extendido del atributo no válido"
 
-#: ../gio/glocalfileinfo.c:775
+#: ../gio/glocalfileinfo.c:785
 #, c-format
 msgid "Error setting extended attribute “%s”: %s"
 msgstr "Error al establecer el atributo extendido «%s»: %s"
 
-#: ../gio/glocalfileinfo.c:1575
+#: ../gio/glocalfileinfo.c:1586
 msgid " (invalid encoding)"
 msgstr " (codificación no válida)"
 
-#: ../gio/glocalfileinfo.c:1766 ../gio/glocalfileoutputstream.c:803
+#: ../gio/glocalfileinfo.c:1777 ../gio/glocalfileoutputstream.c:811
 #, c-format
 msgid "Error when getting information for file “%s”: %s"
 msgstr "Error al obtener la información del archivo «%s»: %s"
 
-#: ../gio/glocalfileinfo.c:2017
+#: ../gio/glocalfileinfo.c:2028
 #, c-format
 msgid "Error when getting information for file descriptor: %s"
 msgstr "Error al obtener la información del descriptor del archivo: %s"
 
-#: ../gio/glocalfileinfo.c:2062
+#: ../gio/glocalfileinfo.c:2073
 msgid "Invalid attribute type (uint32 expected)"
 msgstr "Tipo de atributo no válido (se esperaba uint32)"
 
-#: ../gio/glocalfileinfo.c:2080
+#: ../gio/glocalfileinfo.c:2091
 msgid "Invalid attribute type (uint64 expected)"
 msgstr "Tipo de atributo no válido (se esperaba uint64)"
 
-#: ../gio/glocalfileinfo.c:2099 ../gio/glocalfileinfo.c:2118
+#: ../gio/glocalfileinfo.c:2110 ../gio/glocalfileinfo.c:2129
 msgid "Invalid attribute type (byte string expected)"
 msgstr "Tipo de atributo no válido (se esperaba una cadena byte)"
 
-#: ../gio/glocalfileinfo.c:2153
+#: ../gio/glocalfileinfo.c:2164
 msgid "Cannot set permissions on symlinks"
 msgstr "No se pueden establecer permisos en enlaces simbólicos"
 
-#: ../gio/glocalfileinfo.c:2169
+#: ../gio/glocalfileinfo.c:2180
 #, c-format
 msgid "Error setting permissions: %s"
 msgstr "Error al establecer permisos: %s"
 
-#: ../gio/glocalfileinfo.c:2220
+#: ../gio/glocalfileinfo.c:2231
 #, c-format
 msgid "Error setting owner: %s"
 msgstr "Error al establecer el propietario: %s"
 
-#: ../gio/glocalfileinfo.c:2243
+#: ../gio/glocalfileinfo.c:2254
 msgid "symlink must be non-NULL"
 msgstr "el enlace simbólico debe ser no nulo"
 
-#: ../gio/glocalfileinfo.c:2253 ../gio/glocalfileinfo.c:2272
-#: ../gio/glocalfileinfo.c:2283
+#: ../gio/glocalfileinfo.c:2264 ../gio/glocalfileinfo.c:2283
+#: ../gio/glocalfileinfo.c:2294
 #, c-format
 msgid "Error setting symlink: %s"
 msgstr "Error al establecer el enlace simbólico: %s"
 
-#: ../gio/glocalfileinfo.c:2262
+#: ../gio/glocalfileinfo.c:2273
 msgid "Error setting symlink: file is not a symlink"
 msgstr ""
 "Error al establecer el enlace simbólico: el archivo no es un enlace simbólico"
 
-#: ../gio/glocalfileinfo.c:2388
+#: ../gio/glocalfileinfo.c:2399
 #, c-format
 msgid "Error setting modification or access time: %s"
 msgstr "Error al establecer o modificar el tiempo de acceso: %s"
 
-#: ../gio/glocalfileinfo.c:2411
+#: ../gio/glocalfileinfo.c:2422
 msgid "SELinux context must be non-NULL"
 msgstr "El contexto SELinux debe ser no nulo"
 
-#: ../gio/glocalfileinfo.c:2426
+#: ../gio/glocalfileinfo.c:2437
 #, c-format
 msgid "Error setting SELinux context: %s"
 msgstr "Error al establecer el contexto SELinux: %s"
 
-#: ../gio/glocalfileinfo.c:2433
+#: ../gio/glocalfileinfo.c:2444
 msgid "SELinux is not enabled on this system"
 msgstr "SELinux no está activado en este sistema"
 
-#: ../gio/glocalfileinfo.c:2525
+#: ../gio/glocalfileinfo.c:2536
 #, c-format
 msgid "Setting attribute %s not supported"
 msgstr "Establecer el atributo %s no está soportado"
@@ -2931,7 +3139,7 @@ msgstr "Error al leer del archivo: %s"
 
 #: ../gio/glocalfileinputstream.c:199 ../gio/glocalfileinputstream.c:211
 #: ../gio/glocalfileinputstream.c:225 ../gio/glocalfileinputstream.c:333
-#: ../gio/glocalfileoutputstream.c:456 ../gio/glocalfileoutputstream.c:1003
+#: ../gio/glocalfileoutputstream.c:456 ../gio/glocalfileoutputstream.c:1011
 #, c-format
 msgid "Error seeking in file: %s"
 msgstr "Error al buscar en el archivo: %s"
@@ -2969,30 +3177,30 @@ msgstr "Error al crear una copia de respaldo: %s"
 msgid "Error renaming temporary file: %s"
 msgstr "Error al renombrar el archivo temporal: %s"
 
-#: ../gio/glocalfileoutputstream.c:502 ../gio/glocalfileoutputstream.c:1054
+#: ../gio/glocalfileoutputstream.c:502 ../gio/glocalfileoutputstream.c:1062
 #, c-format
 msgid "Error truncating file: %s"
 msgstr "Error al truncar el archivo: %s"
 
-#: ../gio/glocalfileoutputstream.c:555 ../gio/glocalfileoutputstream.c:785
-#: ../gio/glocalfileoutputstream.c:1035 ../gio/gsubprocess.c:360
+#: ../gio/glocalfileoutputstream.c:555 ../gio/glocalfileoutputstream.c:793
+#: ../gio/glocalfileoutputstream.c:1043 ../gio/gsubprocess.c:380
 #, c-format
 msgid "Error opening file “%s”: %s"
 msgstr "Error al abrir el archivo %s: %s"
 
-#: ../gio/glocalfileoutputstream.c:816
+#: ../gio/glocalfileoutputstream.c:824
 msgid "Target file is a directory"
 msgstr "El archivo destino es una carpeta"
 
-#: ../gio/glocalfileoutputstream.c:821
+#: ../gio/glocalfileoutputstream.c:829
 msgid "Target file is not a regular file"
 msgstr "El archivo destino no es un archivo regular"
 
-#: ../gio/glocalfileoutputstream.c:833
+#: ../gio/glocalfileoutputstream.c:841
 msgid "The file was externally modified"
 msgstr "El archivo se modificó externamente"
 
-#: ../gio/glocalfileoutputstream.c:1019
+#: ../gio/glocalfileoutputstream.c:1027
 #, c-format
 msgid "Error removing old file: %s"
 msgstr "Error al eliminar el archivo antiguo: %s"
@@ -3245,7 +3453,7 @@ msgstr ""
 msgid "  SECTION   An (optional) elf section name\n"
 msgstr "  SECCIÓN   El nombre de sección (opcional) de un elf\n"
 
-#: ../gio/gresource-tool.c:559 ../gio/gsettings-tool.c:654
+#: ../gio/gresource-tool.c:559 ../gio/gsettings-tool.c:656
 msgid "  COMMAND   The (optional) command to explain\n"
 msgstr "  COMANDO   El comando (opcional) que explicar\n"
 
@@ -3279,7 +3487,7 @@ msgid "  PATH      A resource path\n"
 msgstr "  RUTA      La ruta de un recurso\n"
 
 #: ../gio/gsettings-tool.c:51 ../gio/gsettings-tool.c:72
-#: ../gio/gsettings-tool.c:851
+#: ../gio/gsettings-tool.c:853
 #, c-format
 msgid "No such schema “%s”\n"
 msgstr "No existe el esquema «%s»\n"
@@ -3314,38 +3522,38 @@ msgstr "La ruta debe terminar con una barra (/)\n"
 msgid "Path must not contain two adjacent slashes (//)\n"
 msgstr "La ruta no debe contener dos barras adyacentes (//)\n"
 
-#: ../gio/gsettings-tool.c:489
+#: ../gio/gsettings-tool.c:491
 #, c-format
 msgid "The provided value is outside of the valid range\n"
 msgstr "El valor proporcionado está fuera del rango válido\n"
 
-#: ../gio/gsettings-tool.c:496
+#: ../gio/gsettings-tool.c:498
 #, c-format
 msgid "The key is not writable\n"
 msgstr "No se puede escribir la clave\n"
 
-#: ../gio/gsettings-tool.c:532
+#: ../gio/gsettings-tool.c:534
 msgid "List the installed (non-relocatable) schemas"
 msgstr "Listar los esquemas instalados (no reubicables)"
 
-#: ../gio/gsettings-tool.c:538
+#: ../gio/gsettings-tool.c:540
 msgid "List the installed relocatable schemas"
 msgstr "Listar los esquemas reubicables instalados"
 
-#: ../gio/gsettings-tool.c:544
+#: ../gio/gsettings-tool.c:546
 msgid "List the keys in SCHEMA"
 msgstr "Listar las claves en el ESQUEMA"
 
-#: ../gio/gsettings-tool.c:545 ../gio/gsettings-tool.c:551
-#: ../gio/gsettings-tool.c:594
+#: ../gio/gsettings-tool.c:547 ../gio/gsettings-tool.c:553
+#: ../gio/gsettings-tool.c:596
 msgid "SCHEMA[:PATH]"
 msgstr "ESQUEMA[:RUTA]"
 
-#: ../gio/gsettings-tool.c:550
+#: ../gio/gsettings-tool.c:552
 msgid "List the children of SCHEMA"
 msgstr "Listar los hijos del ESQUEMA"
 
-#: ../gio/gsettings-tool.c:556
+#: ../gio/gsettings-tool.c:558
 msgid ""
 "List keys and values, recursively\n"
 "If no SCHEMA is given, list all keys\n"
@@ -3353,50 +3561,50 @@ msgstr ""
 "Listar las claves y valores recursivamente\n"
 "Si no se proporciona un ESQUEMA, listar todas las claves\n"
 
-#: ../gio/gsettings-tool.c:558
+#: ../gio/gsettings-tool.c:560
 msgid "[SCHEMA[:PATH]]"
 msgstr "[ESQUEMA[:RUTA]]"
 
-#: ../gio/gsettings-tool.c:563
+#: ../gio/gsettings-tool.c:565
 msgid "Get the value of KEY"
 msgstr "Obtener el valor de la CLAVE"
 
-#: ../gio/gsettings-tool.c:564 ../gio/gsettings-tool.c:570
-#: ../gio/gsettings-tool.c:576 ../gio/gsettings-tool.c:588
-#: ../gio/gsettings-tool.c:600
+#: ../gio/gsettings-tool.c:566 ../gio/gsettings-tool.c:572
+#: ../gio/gsettings-tool.c:578 ../gio/gsettings-tool.c:590
+#: ../gio/gsettings-tool.c:602
 msgid "SCHEMA[:PATH] KEY"
 msgstr "ESQUEMA[:RUTA] CLAVE"
 
-#: ../gio/gsettings-tool.c:569
+#: ../gio/gsettings-tool.c:571
 msgid "Query the range of valid values for KEY"
 msgstr "Consultar el rango de valores válidos para la CLAVE"
 
-#: ../gio/gsettings-tool.c:575
+#: ../gio/gsettings-tool.c:577
 msgid "Query the description for KEY"
 msgstr "Consultar la descripción para la CLAVE"
 
-#: ../gio/gsettings-tool.c:581
+#: ../gio/gsettings-tool.c:583
 msgid "Set the value of KEY to VALUE"
 msgstr "Establecer el valor de la CLAVE a VALOR"
 
-#: ../gio/gsettings-tool.c:582
+#: ../gio/gsettings-tool.c:584
 msgid "SCHEMA[:PATH] KEY VALUE"
 msgstr "ESQUEMA[:RUTA] CLAVE VALOR"
 
-#: ../gio/gsettings-tool.c:587
+#: ../gio/gsettings-tool.c:589
 msgid "Reset KEY to its default value"
 msgstr "Restablecer la CLAVE a su valor predeterminado"
 
-#: ../gio/gsettings-tool.c:593
+#: ../gio/gsettings-tool.c:595
 msgid "Reset all keys in SCHEMA to their defaults"
 msgstr ""
 "Restablecer todas las claves en un ESQUEMA a sus valores predeterminados"
 
-#: ../gio/gsettings-tool.c:599
+#: ../gio/gsettings-tool.c:601
 msgid "Check if KEY is writable"
 msgstr "Comprobar si la CLAVE se puede escribir"
 
-#: ../gio/gsettings-tool.c:605
+#: ../gio/gsettings-tool.c:607
 msgid ""
 "Monitor KEY for changes.\n"
 "If no KEY is specified, monitor all keys in SCHEMA.\n"
@@ -3406,11 +3614,11 @@ msgstr ""
 "Si no se especifica una CLAVE, monitorizar todas las claves en el ESQUEMA.\n"
 "Use ^C para detener la monitorización.\n"
 
-#: ../gio/gsettings-tool.c:608
+#: ../gio/gsettings-tool.c:610
 msgid "SCHEMA[:PATH] [KEY]"
 msgstr "ESQUEMA[:RUTA] [CLAVE]"
 
-#: ../gio/gsettings-tool.c:620
+#: ../gio/gsettings-tool.c:622
 msgid ""
 "Usage:\n"
 "  gsettings --version\n"
@@ -3459,7 +3667,7 @@ msgstr ""
 "Use «gsettings help COMANDO» para obtener una ayuda detallada.\n"
 "\n"
 
-#: ../gio/gsettings-tool.c:644
+#: ../gio/gsettings-tool.c:646
 #, c-format
 msgid ""
 "Usage:\n"
@@ -3474,11 +3682,11 @@ msgstr ""
 "%s\n"
 "\n"
 
-#: ../gio/gsettings-tool.c:650
+#: ../gio/gsettings-tool.c:652
 msgid "  SCHEMADIR A directory to search for additional schemas\n"
 msgstr "  CARPETA_ESQUEMA: una carpeta para buscar esquemas adicionales\n"
 
-#: ../gio/gsettings-tool.c:658
+#: ../gio/gsettings-tool.c:660
 msgid ""
 "  SCHEMA    The name of the schema\n"
 "  PATH      The path, for relocatable schemas\n"
@@ -3486,180 +3694,180 @@ msgstr ""
 "  SCHEMA      El nombre del esquema\n"
 "  RUTA        La ruta, para esquemas reubicables\n"
 
-#: ../gio/gsettings-tool.c:663
+#: ../gio/gsettings-tool.c:665
 msgid "  KEY       The (optional) key within the schema\n"
 msgstr "  CLAVE      La clave (opcional) para el esquema\n"
 
-#: ../gio/gsettings-tool.c:667
+#: ../gio/gsettings-tool.c:669
 msgid "  KEY       The key within the schema\n"
 msgstr "  CLAVE      La clave para el esquema\n"
 
-#: ../gio/gsettings-tool.c:671
+#: ../gio/gsettings-tool.c:673
 msgid "  VALUE     The value to set\n"
 msgstr "  VALOR     El valor para establecer\n"
 
-#: ../gio/gsettings-tool.c:726
+#: ../gio/gsettings-tool.c:728
 #, c-format
 msgid "Could not load schemas from %s: %s\n"
 msgstr "No se pudieron cargar los esquemas de %s: %s\n"
 
-#: ../gio/gsettings-tool.c:738
+#: ../gio/gsettings-tool.c:740
 #, c-format
 msgid "No schemas installed\n"
 msgstr "No hay esquemas instalados\n"
 
-#: ../gio/gsettings-tool.c:809
+#: ../gio/gsettings-tool.c:811
 #, c-format
 msgid "Empty schema name given\n"
 msgstr "Se proporcionó un nombre de esquema vacío\n"
 
-#: ../gio/gsettings-tool.c:864
+#: ../gio/gsettings-tool.c:866
 #, c-format
 msgid "No such key “%s”\n"
 msgstr "No existe la clave «%s»\n"
 
-#: ../gio/gsocket.c:369
+#: ../gio/gsocket.c:379
 msgid "Invalid socket, not initialized"
 msgstr "Socket no válido, no inicializado"
 
-#: ../gio/gsocket.c:376
+#: ../gio/gsocket.c:386
 #, c-format
 msgid "Invalid socket, initialization failed due to: %s"
 msgstr "Socket no válido, falló la instalación debido a: %s"
 
-#: ../gio/gsocket.c:384
+#: ../gio/gsocket.c:394
 msgid "Socket is already closed"
 msgstr "El socket ya está cerrado"
 
-#: ../gio/gsocket.c:399 ../gio/gsocket.c:2754 ../gio/gsocket.c:3939
-#: ../gio/gsocket.c:3995
+#: ../gio/gsocket.c:409 ../gio/gsocket.c:2765 ../gio/gsocket.c:3950
+#: ../gio/gsocket.c:4008
 msgid "Socket I/O timed out"
 msgstr "Expiró la E/S del socket"
 
-#: ../gio/gsocket.c:531
+#: ../gio/gsocket.c:541
 #, c-format
 msgid "creating GSocket from fd: %s"
 msgstr "creando el GSocket desde fd: %s"
 
-#: ../gio/gsocket.c:559 ../gio/gsocket.c:613 ../gio/gsocket.c:620
+#: ../gio/gsocket.c:570 ../gio/gsocket.c:624 ../gio/gsocket.c:631
 #, c-format
 msgid "Unable to create socket: %s"
 msgstr "No se pudo crear el socket: %s"
 
-#: ../gio/gsocket.c:613
+#: ../gio/gsocket.c:624
 msgid "Unknown family was specified"
 msgstr "Se especificó una familia desconocida"
 
-#: ../gio/gsocket.c:620
+#: ../gio/gsocket.c:631
 msgid "Unknown protocol was specified"
 msgstr "Se especificó un protocolo desconocido"
 
-#: ../gio/gsocket.c:1111
+#: ../gio/gsocket.c:1122
 #, c-format
 msgid "Cannot use datagram operations on a non-datagram socket."
 msgstr ""
 "No se pueden usar operaciones de datagrama en un zócalo que no es de "
 "datagrama."
 
-#: ../gio/gsocket.c:1128
+#: ../gio/gsocket.c:1139
 #, c-format
 msgid "Cannot use datagram operations on a socket with a timeout set."
 msgstr ""
 "No se pueden usar operaciones de datagrama en un zócalo sin un tiempo de "
 "expiración establecido."
 
-#: ../gio/gsocket.c:1932
+#: ../gio/gsocket.c:1943
 #, c-format
 msgid "could not get local address: %s"
 msgstr "no se pudo obtener la dirección local: %s"
 
-#: ../gio/gsocket.c:1975
+#: ../gio/gsocket.c:1986
 #, c-format
 msgid "could not get remote address: %s"
 msgstr "no se pudo obtener la dirección remota: %s"
 
-#: ../gio/gsocket.c:2041
+#: ../gio/gsocket.c:2052
 #, c-format
 msgid "could not listen: %s"
 msgstr "no se pudo escuchar: %s"
 
-#: ../gio/gsocket.c:2140
+#: ../gio/gsocket.c:2151
 #, c-format
 msgid "Error binding to address: %s"
 msgstr "Error al vincular con la dirección: %s"
 
-#: ../gio/gsocket.c:2255 ../gio/gsocket.c:2292
+#: ../gio/gsocket.c:2266 ../gio/gsocket.c:2303
 #, c-format
 msgid "Error joining multicast group: %s"
 msgstr "Error al unirse al grupo de multicast: %s"
 
-#: ../gio/gsocket.c:2256 ../gio/gsocket.c:2293
+#: ../gio/gsocket.c:2267 ../gio/gsocket.c:2304
 #, c-format
 msgid "Error leaving multicast group: %s"
 msgstr "Error al abandonar al grupo de multicast: %s"
 
-#: ../gio/gsocket.c:2257
+#: ../gio/gsocket.c:2268
 msgid "No support for source-specific multicast"
 msgstr "No se soporta el multicast específico de la fuente"
 
-#: ../gio/gsocket.c:2477
+#: ../gio/gsocket.c:2488
 #, c-format
 msgid "Error accepting connection: %s"
 msgstr "Error al aceptar la conexión: %s"
 
-#: ../gio/gsocket.c:2598
+#: ../gio/gsocket.c:2609
 msgid "Connection in progress"
 msgstr "Conexión en progreso"
 
-#: ../gio/gsocket.c:2647
+#: ../gio/gsocket.c:2658
 msgid "Unable to get pending error: "
 msgstr "No se pudo obtener el error pendiente: "
 
-#: ../gio/gsocket.c:2817
+#: ../gio/gsocket.c:2828
 #, c-format
 msgid "Error receiving data: %s"
 msgstr "Error al recibir los datos: %s"
 
-#: ../gio/gsocket.c:3012
+#: ../gio/gsocket.c:3023
 #, c-format
 msgid "Error sending data: %s"
 msgstr "Error al enviar los datos: %s"
 
-#: ../gio/gsocket.c:3199
+#: ../gio/gsocket.c:3210
 #, c-format
 msgid "Unable to shutdown socket: %s"
 msgstr "No se pudo desconectar el socket: %s"
 
-#: ../gio/gsocket.c:3280
+#: ../gio/gsocket.c:3291
 #, c-format
 msgid "Error closing socket: %s"
 msgstr "Error al cerrar el socket: %s"
 
-#: ../gio/gsocket.c:3932
+#: ../gio/gsocket.c:3943
 #, c-format
 msgid "Waiting for socket condition: %s"
 msgstr "Esperando la condición del socket: %s"
 
-#: ../gio/gsocket.c:4404 ../gio/gsocket.c:4484 ../gio/gsocket.c:4662
+#: ../gio/gsocket.c:4417 ../gio/gsocket.c:4497 ../gio/gsocket.c:4675
 #, c-format
 msgid "Error sending message: %s"
 msgstr "Error al enviar el mensaje: %s"
 
-#: ../gio/gsocket.c:4428
+#: ../gio/gsocket.c:4441
 msgid "GSocketControlMessage not supported on Windows"
 msgstr "GSocketControlMessage no está soportado en Windows"
 
-#: ../gio/gsocket.c:4881 ../gio/gsocket.c:4954 ../gio/gsocket.c:5180
+#: ../gio/gsocket.c:4894 ../gio/gsocket.c:4967 ../gio/gsocket.c:5193
 #, c-format
 msgid "Error receiving message: %s"
 msgstr "Error al recibir el mensaje: %s"
 
-#: ../gio/gsocket.c:5452
+#: ../gio/gsocket.c:5465
 #, c-format
 msgid "Unable to read socket credentials: %s"
 msgstr "No se pudieron leer las credenciales del socket: %s"
 
-#: ../gio/gsocket.c:5461
+#: ../gio/gsocket.c:5474
 msgid "g_socket_get_credentials not implemented for this OS"
 msgstr "g_socket_get_credentials no está implementado en este SO"
 
@@ -3852,9 +4060,6 @@ msgstr ""
 #. Translators: This is not the 'This is the last chance' string. It is
 #. * displayed when more than one attempt is allowed.
 #: ../gio/gtlspassword.c:115
-#| msgid ""
-#| "Several password entered have been incorrect, and your access will be "
-#| "locked out after further failures."
 msgid ""
 "Several passwords entered have been incorrect, and your access will be "
 "locked out after further failures."
@@ -3866,14 +4071,14 @@ msgstr ""
 msgid "The password entered is incorrect."
 msgstr "La contraseña introducida no es correcta."
 
-#: ../gio/gunixconnection.c:166 ../gio/gunixconnection.c:561
+#: ../gio/gunixconnection.c:166 ../gio/gunixconnection.c:563
 #, c-format
 msgid "Expecting 1 control message, got %d"
 msgid_plural "Expecting 1 control message, got %d"
 msgstr[0] "Se esperaba un mensaje de control, se obtuvo %d"
 msgstr[1] "Se esperaba un mensaje de control, se obtuvieron %d"
 
-#: ../gio/gunixconnection.c:182 ../gio/gunixconnection.c:573
+#: ../gio/gunixconnection.c:182 ../gio/gunixconnection.c:575
 msgid "Unexpected type of ancillary data"
 msgstr "Tipos de datos complementarios inesperados"
 
@@ -3892,49 +4097,49 @@ msgstr "Se recibió un fd no válido"
 msgid "Error sending credentials: "
 msgstr "Error al enviar las credenciales: "
 
-#: ../gio/gunixconnection.c:503
+#: ../gio/gunixconnection.c:504
 #, c-format
 msgid "Error checking if SO_PASSCRED is enabled for socket: %s"
 msgstr "Error al comprobar si SO_PASSCRED está activada para el socket: %s"
 
-#: ../gio/gunixconnection.c:518
+#: ../gio/gunixconnection.c:520
 #, c-format
 msgid "Error enabling SO_PASSCRED: %s"
 msgstr "Error al activar SO_PASSCRED: %s"
 
-#: ../gio/gunixconnection.c:547
+#: ../gio/gunixconnection.c:549
 msgid ""
 "Expecting to read a single byte for receiving credentials but read zero bytes"
 msgstr ""
 "Se esperaba leer un solo byte para recibir las credenciales pero se leyeron "
 "cero bytes"
 
-#: ../gio/gunixconnection.c:587
+#: ../gio/gunixconnection.c:589
 #, c-format
 msgid "Not expecting control message, but got %d"
 msgstr "No se esperaba un mensaje de control, pero se obtuvo %d"
 
-#: ../gio/gunixconnection.c:611
+#: ../gio/gunixconnection.c:614
 #, c-format
 msgid "Error while disabling SO_PASSCRED: %s"
 msgstr "Error al desactivar SO_PASSCRED: %s"
 
-#: ../gio/gunixinputstream.c:369 ../gio/gunixinputstream.c:390
+#: ../gio/gunixinputstream.c:372 ../gio/gunixinputstream.c:393
 #, c-format
 msgid "Error reading from file descriptor: %s"
 msgstr "Error al leer del descriptor del archivo: %s"
 
-#: ../gio/gunixinputstream.c:423 ../gio/gunixoutputstream.c:409
+#: ../gio/gunixinputstream.c:426 ../gio/gunixoutputstream.c:411
 #: ../gio/gwin32inputstream.c:217 ../gio/gwin32outputstream.c:204
 #, c-format
 msgid "Error closing file descriptor: %s"
 msgstr "Error al cerrar el descriptor del archivo: %s"
 
-#: ../gio/gunixmounts.c:2422 ../gio/gunixmounts.c:2475
+#: ../gio/gunixmounts.c:2430 ../gio/gunixmounts.c:2483
 msgid "Filesystem root"
 msgstr "Sistema de archivos raíz"
 
-#: ../gio/gunixoutputstream.c:355 ../gio/gunixoutputstream.c:376
+#: ../gio/gunixoutputstream.c:358 ../gio/gunixoutputstream.c:378
 #, c-format
 msgid "Error writing to file descriptor: %s"
 msgstr "Error al escribir en el descriptor del archivo: %s"
@@ -4084,8 +4289,8 @@ msgstr "Ninguna aplicación con nombre «%s» registró un marcador para «%s»"
 msgid "Failed to expand exec line “%s” with URI “%s”"
 msgstr "Falló la expansión de lalinea ejecutable «%s» con el URI «%s»"
 
-#: ../glib/gconvert.c:477 ../glib/gutf8.c:852 ../glib/gutf8.c:1064
-#: ../glib/gutf8.c:1201 ../glib/gutf8.c:1305
+#: ../glib/gconvert.c:477 ../glib/gutf8.c:862 ../glib/gutf8.c:1074
+#: ../glib/gutf8.c:1211 ../glib/gutf8.c:1315
 msgid "Partial character sequence at end of input"
 msgstr "Hay una secuencia parcial de caracteres en el final de la entrada"
 
@@ -4461,11 +4666,11 @@ msgid "Valid key file could not be found in search dirs"
 msgstr ""
 "No se pudo encontrar la clave de archivo válida en las carpetas de búsqueda"
 
-#: ../glib/gkeyfile.c:772
+#: ../glib/gkeyfile.c:773
 msgid "Not a regular file"
 msgstr "No es un archivo regular"
 
-#: ../glib/gkeyfile.c:1212
+#: ../glib/gkeyfile.c:1218
 #, c-format
 msgid ""
 "Key file contains line “%s” which is not a key-value pair, group, or comment"
@@ -4473,45 +4678,45 @@ msgstr ""
 "El archivo de claves contiene la línea «%s» que no es un par valor-clave, "
 "grupo o comentario"
 
-#: ../glib/gkeyfile.c:1269
+#: ../glib/gkeyfile.c:1275
 #, c-format
 msgid "Invalid group name: %s"
 msgstr "Nombre de grupo no válido: %s"
 
-#: ../glib/gkeyfile.c:1291
+#: ../glib/gkeyfile.c:1297
 msgid "Key file does not start with a group"
 msgstr "El archivo de claves no empieza por un grupo"
 
-#: ../glib/gkeyfile.c:1317
+#: ../glib/gkeyfile.c:1323
 #, c-format
 msgid "Invalid key name: %s"
 msgstr "Nombre de clave no válida: %s"
 
-#: ../glib/gkeyfile.c:1344
+#: ../glib/gkeyfile.c:1350
 #, c-format
 msgid "Key file contains unsupported encoding “%s”"
 msgstr "El archivo de claves contiene una codificación «%s» no soportada"
 
-#: ../glib/gkeyfile.c:1587 ../glib/gkeyfile.c:1760 ../glib/gkeyfile.c:3140
-#: ../glib/gkeyfile.c:3203 ../glib/gkeyfile.c:3333 ../glib/gkeyfile.c:3463
-#: ../glib/gkeyfile.c:3607 ../glib/gkeyfile.c:3836 ../glib/gkeyfile.c:3903
+#: ../glib/gkeyfile.c:1593 ../glib/gkeyfile.c:1766 ../glib/gkeyfile.c:3146
+#: ../glib/gkeyfile.c:3209 ../glib/gkeyfile.c:3339 ../glib/gkeyfile.c:3469
+#: ../glib/gkeyfile.c:3613 ../glib/gkeyfile.c:3842 ../glib/gkeyfile.c:3909
 #, c-format
 msgid "Key file does not have group “%s”"
 msgstr "El archivo de claves no tiene el grupo «%s»"
 
-#: ../glib/gkeyfile.c:1715
+#: ../glib/gkeyfile.c:1721
 #, c-format
 msgid "Key file does not have key “%s” in group “%s”"
 msgstr "El archivo de claves no tiene la clave «%s» en el grupo «%s»"
 
-#: ../glib/gkeyfile.c:1877 ../glib/gkeyfile.c:1993
+#: ../glib/gkeyfile.c:1883 ../glib/gkeyfile.c:1999
 #, c-format
 msgid "Key file contains key “%s” with value “%s” which is not UTF-8"
 msgstr ""
 "El archivo de claves contiene la clave  «%s» con el valor «%s» el cual no es "
 "UTF-8"
 
-#: ../glib/gkeyfile.c:1897 ../glib/gkeyfile.c:2013 ../glib/gkeyfile.c:2382
+#: ../glib/gkeyfile.c:1903 ../glib/gkeyfile.c:2019 ../glib/gkeyfile.c:2388
 #, c-format
 msgid ""
 "Key file contains key “%s” which has a value that cannot be interpreted."
@@ -4519,7 +4724,7 @@ msgstr ""
 "El archivo de claves contiene la clave «%s» que tiene un valor que no se "
 "puede interpretar."
 
-#: ../glib/gkeyfile.c:2600 ../glib/gkeyfile.c:2969
+#: ../glib/gkeyfile.c:2606 ../glib/gkeyfile.c:2975
 #, c-format
 msgid ""
 "Key file contains key “%s” in group “%s” which has a value that cannot be "
@@ -4528,38 +4733,38 @@ msgstr ""
 "El archivo de claves contiene la clave «%s» en el grupo «%s» que tiene un "
 "valor que no puede interpretarse."
 
-#: ../glib/gkeyfile.c:2678 ../glib/gkeyfile.c:2755
+#: ../glib/gkeyfile.c:2684 ../glib/gkeyfile.c:2761
 #, c-format
 msgid "Key “%s” in group “%s” has value “%s” where %s was expected"
 msgstr ""
 "La clave «%s» en el grupo «%s» tiene el valor «%s», pero se esperaba %s"
 
-#: ../glib/gkeyfile.c:4143
+#: ../glib/gkeyfile.c:4149
 msgid "Key file contains escape character at end of line"
 msgstr ""
 "El archivo de claves contiene un carácter de escape al final de la línea"
 
-#: ../glib/gkeyfile.c:4165
+#: ../glib/gkeyfile.c:4171
 #, c-format
 msgid "Key file contains invalid escape sequence “%s”"
 msgstr "El archivo de claves contiene la secuencia de escape no válida «%s»"
 
-#: ../glib/gkeyfile.c:4307
+#: ../glib/gkeyfile.c:4315
 #, c-format
 msgid "Value “%s” cannot be interpreted as a number."
 msgstr "El valor «%s» no puede interpretarse como un número."
 
-#: ../glib/gkeyfile.c:4321
+#: ../glib/gkeyfile.c:4329
 #, c-format
 msgid "Integer value “%s” out of range"
 msgstr "El valor entero «%s» está fuera de rango"
 
-#: ../glib/gkeyfile.c:4354
+#: ../glib/gkeyfile.c:4362
 #, c-format
 msgid "Value “%s” cannot be interpreted as a float number."
 msgstr "El valor «%s» no puede interpretarse como un número de coma flotante."
 
-#: ../glib/gkeyfile.c:4393
+#: ../glib/gkeyfile.c:4401
 #, c-format
 msgid "Value “%s” cannot be interpreted as a boolean."
 msgstr "El valor «%s» no puede interpretarse como un booleano."
@@ -5383,113 +5588,111 @@ msgstr ""
 "Falló inesperado en g_io_channel_win32_poll() al leer datos desde un proceso "
 "hijo"
 
-#: ../glib/gstrfuncs.c:3237 ../glib/gstrfuncs.c:3338
+#: ../glib/gstrfuncs.c:3247 ../glib/gstrfuncs.c:3348
 msgid "Empty string is not a number"
 msgstr "Una cadena vacía no es un número"
 
-#: ../glib/gstrfuncs.c:3261
+#: ../glib/gstrfuncs.c:3271
 #, c-format
-#| msgid "'%s' is not a valid name"
 msgid "“%s” is not a signed number"
 msgstr "«%s» no es un número con signo"
 
-#: ../glib/gstrfuncs.c:3271 ../glib/gstrfuncs.c:3374
+#: ../glib/gstrfuncs.c:3281 ../glib/gstrfuncs.c:3384
 #, c-format
 msgid "Number “%s” is out of bounds [%s, %s]"
 msgstr "El número «%s» está fuera de los límites [%s, %s]"
 
-#: ../glib/gstrfuncs.c:3364
+#: ../glib/gstrfuncs.c:3374
 #, c-format
-#| msgid "'%s' is not a valid name"
 msgid "“%s” is not an unsigned number"
 msgstr "«%s» no es un número sin signo"
 
-#: ../glib/gutf8.c:798
+#: ../glib/gutf8.c:808
 msgid "Failed to allocate memory"
 msgstr "Falló al obtener memoria"
 
-#: ../glib/gutf8.c:931
+#: ../glib/gutf8.c:941
 msgid "Character out of range for UTF-8"
 msgstr "El carácter se sale del rango para UTF-8"
 
-#: ../glib/gutf8.c:1032 ../glib/gutf8.c:1041 ../glib/gutf8.c:1171
-#: ../glib/gutf8.c:1180 ../glib/gutf8.c:1319 ../glib/gutf8.c:1416
+#: ../glib/gutf8.c:1042 ../glib/gutf8.c:1051 ../glib/gutf8.c:1181
+#: ../glib/gutf8.c:1190 ../glib/gutf8.c:1329 ../glib/gutf8.c:1426
 msgid "Invalid sequence in conversion input"
 msgstr "Secuencia no válida en la entrada de conversión"
 
-#: ../glib/gutf8.c:1330 ../glib/gutf8.c:1427
+#: ../glib/gutf8.c:1340 ../glib/gutf8.c:1437
 msgid "Character out of range for UTF-16"
 msgstr "El carácter se sale del rango para UTF-16"
 
-#: ../glib/gutils.c:2139 ../glib/gutils.c:2166 ../glib/gutils.c:2272
+#: ../glib/gutils.c:2149 ../glib/gutils.c:2176 ../glib/gutils.c:2282
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
 msgstr[0] "%u byte"
 msgstr[1] "%u bytes"
 
-#: ../glib/gutils.c:2145
+#: ../glib/gutils.c:2155
 #, c-format
 msgid "%.1f KiB"
 msgstr "%.1f KiB"
 
-#: ../glib/gutils.c:2147
+#: ../glib/gutils.c:2157
 #, c-format
 msgid "%.1f MiB"
 msgstr "%.1f MiB"
 
-#: ../glib/gutils.c:2150
+#: ../glib/gutils.c:2160
 #, c-format
 msgid "%.1f GiB"
 msgstr "%.1f GiB"
 
-#: ../glib/gutils.c:2153
+#: ../glib/gutils.c:2163
 #, c-format
 msgid "%.1f TiB"
 msgstr "%.1f TiB"
 
-#: ../glib/gutils.c:2156
+#: ../glib/gutils.c:2166
 #, c-format
 msgid "%.1f PiB"
 msgstr "%.1f PiB"
 
-#: ../glib/gutils.c:2159
+#: ../glib/gutils.c:2169
 #, c-format
 msgid "%.1f EiB"
 msgstr "%.1f EiB"
 
-#: ../glib/gutils.c:2172
+#: ../glib/gutils.c:2182
 #, c-format
 msgid "%.1f kB"
 msgstr "%.1f kB"
 
-#: ../glib/gutils.c:2175 ../glib/gutils.c:2290
+#: ../glib/gutils.c:2185 ../glib/gutils.c:2300
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
-#: ../glib/gutils.c:2178 ../glib/gutils.c:2295
+#: ../glib/gutils.c:2188 ../glib/gutils.c:2305
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
-#: ../glib/gutils.c:2180 ../glib/gutils.c:2300
+#: ../glib/gutils.c:2190 ../glib/gutils.c:2310
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
-#: ../glib/gutils.c:2183 ../glib/gutils.c:2305
+#: ../glib/gutils.c:2193 ../glib/gutils.c:2315
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
-#: ../glib/gutils.c:2186 ../glib/gutils.c:2310
+#: ../glib/gutils.c:2196 ../glib/gutils.c:2320
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
 #. Translators: the %s in "%s bytes" will always be replaced by a number.
-#: ../glib/gutils.c:2223
+#: ../glib/gutils.c:2233
 #, c-format
 msgid "%s byte"
 msgid_plural "%s bytes"
@@ -5501,7 +5704,7 @@ msgstr[1] "%s bytes"
 #. * compatibility.  Users will not see this string unless a program is using this deprecated function.
 #. * Please translate as literally as possible.
 #.
-#: ../glib/gutils.c:2285
+#: ../glib/gutils.c:2295
 #, c-format
 msgid "%.1f KB"
 msgstr "%.1f KB"
index e7d3d61..f58c751 100644 (file)
@@ -9,7 +9,7 @@ msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
 "product=glib&keywords=I18N+L10N&component=general\n"
-"POT-Creation-Date: 2017-07-17 14:54-0400\n"
+"POT-Creation-Date: 2017-08-07 11:39-0400\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -299,17 +299,17 @@ msgstr ""
 msgid "Error during conversion: %s"
 msgstr ""
 
-#: ../gio/gcharsetconverter.c:444 ../gio/gsocket.c:1095
+#: ../gio/gcharsetconverter.c:445 ../gio/gsocket.c:1096
 msgid "Cancellable initialization not supported"
 msgstr ""
 
-#: ../gio/gcharsetconverter.c:454 ../glib/gconvert.c:321
+#: ../gio/gcharsetconverter.c:456 ../glib/gconvert.c:321
 #: ../glib/giochannel.c:1384
 #, c-format
 msgid "Conversion from character set “%s” to “%s” is not supported"
 msgstr ""
 
-#: ../gio/gcharsetconverter.c:458 ../glib/gconvert.c:325
+#: ../gio/gcharsetconverter.c:460 ../glib/gconvert.c:325
 #, c-format
 msgid "Could not open converter from “%s” to “%s”"
 msgstr ""
@@ -425,78 +425,78 @@ msgstr ""
 msgid "Unknown or unsupported transport “%s” for address “%s”"
 msgstr ""
 
-#: ../gio/gdbusaddress.c:702
+#: ../gio/gdbusaddress.c:704
 #, c-format
 msgid "Error opening nonce file “%s”: %s"
 msgstr ""
 
-#: ../gio/gdbusaddress.c:720
+#: ../gio/gdbusaddress.c:723
 #, c-format
 msgid "Error reading from nonce file “%s”: %s"
 msgstr ""
 
-#: ../gio/gdbusaddress.c:729
+#: ../gio/gdbusaddress.c:732
 #, c-format
 msgid "Error reading from nonce file “%s”, expected 16 bytes, got %d"
 msgstr ""
 
-#: ../gio/gdbusaddress.c:747
+#: ../gio/gdbusaddress.c:750
 #, c-format
 msgid "Error writing contents of nonce file “%s” to stream:"
 msgstr ""
 
-#: ../gio/gdbusaddress.c:956
+#: ../gio/gdbusaddress.c:959
 msgid "The given address is empty"
 msgstr ""
 
-#: ../gio/gdbusaddress.c:1069
+#: ../gio/gdbusaddress.c:1072
 #, c-format
 msgid "Cannot spawn a message bus when setuid"
 msgstr ""
 
-#: ../gio/gdbusaddress.c:1076
+#: ../gio/gdbusaddress.c:1079
 msgid "Cannot spawn a message bus without a machine-id: "
 msgstr ""
 
-#: ../gio/gdbusaddress.c:1083
+#: ../gio/gdbusaddress.c:1086
 #, c-format
 msgid "Cannot autolaunch D-Bus without X11 $DISPLAY"
 msgstr ""
 
-#: ../gio/gdbusaddress.c:1125
+#: ../gio/gdbusaddress.c:1128
 #, c-format
 msgid "Error spawning command line “%s”: "
 msgstr ""
 
-#: ../gio/gdbusaddress.c:1342
+#: ../gio/gdbusaddress.c:1345
 #, c-format
 msgid "(Type any character to close this window)\n"
 msgstr ""
 
-#: ../gio/gdbusaddress.c:1496
+#: ../gio/gdbusaddress.c:1499
 #, c-format
 msgid "Session dbus not running, and autolaunch failed"
 msgstr ""
 
-#: ../gio/gdbusaddress.c:1507
+#: ../gio/gdbusaddress.c:1510
 #, c-format
 msgid "Cannot determine session bus address (not implemented for this OS)"
 msgstr ""
 
-#: ../gio/gdbusaddress.c:1645
+#: ../gio/gdbusaddress.c:1648
 #, c-format
 msgid ""
 "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
 "— unknown value “%s”"
 msgstr ""
 
-#: ../gio/gdbusaddress.c:1654 ../gio/gdbusconnection.c:7155
+#: ../gio/gdbusaddress.c:1657 ../gio/gdbusconnection.c:7155
 msgid ""
 "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
 "variable is not set"
 msgstr ""
 
-#: ../gio/gdbusaddress.c:1664
+#: ../gio/gdbusaddress.c:1667
 #, c-format
 msgid "Unknown bus type %d"
 msgstr ""
@@ -519,75 +519,75 @@ msgstr ""
 msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
 msgstr ""
 
-#: ../gio/gdbusauthmechanismsha1.c:261
+#: ../gio/gdbusauthmechanismsha1.c:262
 #, c-format
 msgid "Error when getting information for directory “%s”: %s"
 msgstr ""
 
-#: ../gio/gdbusauthmechanismsha1.c:273
+#: ../gio/gdbusauthmechanismsha1.c:274
 #, c-format
 msgid ""
 "Permissions on directory “%s” are malformed. Expected mode 0700, got 0%o"
 msgstr ""
 
-#: ../gio/gdbusauthmechanismsha1.c:294
+#: ../gio/gdbusauthmechanismsha1.c:296
 #, c-format
 msgid "Error creating directory “%s”: %s"
 msgstr ""
 
-#: ../gio/gdbusauthmechanismsha1.c:377
+#: ../gio/gdbusauthmechanismsha1.c:379
 #, c-format
 msgid "Error opening keyring “%s” for reading: "
 msgstr ""
 
-#: ../gio/gdbusauthmechanismsha1.c:401 ../gio/gdbusauthmechanismsha1.c:714
+#: ../gio/gdbusauthmechanismsha1.c:403 ../gio/gdbusauthmechanismsha1.c:721
 #, c-format
 msgid "Line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr ""
 
-#: ../gio/gdbusauthmechanismsha1.c:415 ../gio/gdbusauthmechanismsha1.c:728
+#: ../gio/gdbusauthmechanismsha1.c:417 ../gio/gdbusauthmechanismsha1.c:735
 #, c-format
 msgid ""
 "First token of line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr ""
 
-#: ../gio/gdbusauthmechanismsha1.c:430 ../gio/gdbusauthmechanismsha1.c:742
+#: ../gio/gdbusauthmechanismsha1.c:432 ../gio/gdbusauthmechanismsha1.c:749
 #, c-format
 msgid ""
 "Second token of line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr ""
 
-#: ../gio/gdbusauthmechanismsha1.c:454
+#: ../gio/gdbusauthmechanismsha1.c:456
 #, c-format
 msgid "Didn’t find cookie with id %d in the keyring at “%s”"
 msgstr ""
 
-#: ../gio/gdbusauthmechanismsha1.c:532
+#: ../gio/gdbusauthmechanismsha1.c:536
 #, c-format
 msgid "Error deleting stale lock file “%s”: %s"
 msgstr ""
 
-#: ../gio/gdbusauthmechanismsha1.c:564
+#: ../gio/gdbusauthmechanismsha1.c:569
 #, c-format
 msgid "Error creating lock file “%s”: %s"
 msgstr ""
 
-#: ../gio/gdbusauthmechanismsha1.c:594
+#: ../gio/gdbusauthmechanismsha1.c:600
 #, c-format
 msgid "Error closing (unlinked) lock file “%s”: %s"
 msgstr ""
 
-#: ../gio/gdbusauthmechanismsha1.c:604
+#: ../gio/gdbusauthmechanismsha1.c:611
 #, c-format
 msgid "Error unlinking lock file “%s”: %s"
 msgstr ""
 
-#: ../gio/gdbusauthmechanismsha1.c:681
+#: ../gio/gdbusauthmechanismsha1.c:688
 #, c-format
 msgid "Error opening keyring “%s” for writing: "
 msgstr ""
 
-#: ../gio/gdbusauthmechanismsha1.c:878
+#: ../gio/gdbusauthmechanismsha1.c:885
 #, c-format
 msgid "(Additionally, releasing the lock for “%s” also failed: %s) "
 msgstr ""
@@ -886,17 +886,17 @@ msgstr ""
 msgid "Cannot specify nonce file when creating a server"
 msgstr ""
 
-#: ../gio/gdbusserver.c:873
+#: ../gio/gdbusserver.c:876
 #, c-format
 msgid "Error writing nonce file at “%s”: %s"
 msgstr ""
 
-#: ../gio/gdbusserver.c:1044
+#: ../gio/gdbusserver.c:1047
 #, c-format
 msgid "The string “%s” is not a valid D-Bus GUID"
 msgstr ""
 
-#: ../gio/gdbusserver.c:1084
+#: ../gio/gdbusserver.c:1087
 #, c-format
 msgid "Cannot listen on unsupported transport “%s”"
 msgstr ""
@@ -1263,11 +1263,11 @@ msgstr ""
 #: ../gio/gfile.c:969 ../gio/gfile.c:1207 ../gio/gfile.c:1345
 #: ../gio/gfile.c:1583 ../gio/gfile.c:1638 ../gio/gfile.c:1696
 #: ../gio/gfile.c:1780 ../gio/gfile.c:1837 ../gio/gfile.c:1901
-#: ../gio/gfile.c:1956 ../gio/gfile.c:3613 ../gio/gfile.c:3668
-#: ../gio/gfile.c:3904 ../gio/gfile.c:3946 ../gio/gfile.c:4414
-#: ../gio/gfile.c:4825 ../gio/gfile.c:4910 ../gio/gfile.c:5000
-#: ../gio/gfile.c:5097 ../gio/gfile.c:5184 ../gio/gfile.c:5285
-#: ../gio/gfile.c:7826 ../gio/gfile.c:7916 ../gio/gfile.c:8000
+#: ../gio/gfile.c:1956 ../gio/gfile.c:3614 ../gio/gfile.c:3669
+#: ../gio/gfile.c:3905 ../gio/gfile.c:3947 ../gio/gfile.c:4415
+#: ../gio/gfile.c:4826 ../gio/gfile.c:4911 ../gio/gfile.c:5001
+#: ../gio/gfile.c:5098 ../gio/gfile.c:5185 ../gio/gfile.c:5286
+#: ../gio/gfile.c:7827 ../gio/gfile.c:7917 ../gio/gfile.c:8001
 #: ../gio/win32/gwinhttpfile.c:437
 msgid "Operation not supported"
 msgstr ""
@@ -1280,7 +1280,7 @@ msgstr ""
 msgid "Containing mount does not exist"
 msgstr ""
 
-#: ../gio/gfile.c:2515 ../gio/glocalfile.c:2375
+#: ../gio/gfile.c:2515 ../gio/glocalfile.c:2377
 msgid "Can’t copy over directory"
 msgstr ""
 
@@ -1305,40 +1305,40 @@ msgstr ""
 msgid "Error splicing file: %s"
 msgstr ""
 
-#: ../gio/gfile.c:3024
+#: ../gio/gfile.c:3025
 msgid "Copy (reflink/clone) between mounts is not supported"
 msgstr ""
 
-#: ../gio/gfile.c:3028
+#: ../gio/gfile.c:3029
 msgid "Copy (reflink/clone) is not supported or invalid"
 msgstr ""
 
-#: ../gio/gfile.c:3033
+#: ../gio/gfile.c:3034
 msgid "Copy (reflink/clone) is not supported or didn’t work"
 msgstr ""
 
-#: ../gio/gfile.c:3096
+#: ../gio/gfile.c:3097
 msgid "Can’t copy special file"
 msgstr ""
 
-#: ../gio/gfile.c:3894
+#: ../gio/gfile.c:3895
 msgid "Invalid symlink value given"
 msgstr ""
 
-#: ../gio/gfile.c:4055
+#: ../gio/gfile.c:4056
 msgid "Trash not supported"
 msgstr ""
 
-#: ../gio/gfile.c:4167
+#: ../gio/gfile.c:4168
 #, c-format
 msgid "File names cannot contain “%c”"
 msgstr ""
 
-#: ../gio/gfile.c:6613 ../gio/gvolume.c:363
+#: ../gio/gfile.c:6614 ../gio/gvolume.c:363
 msgid "volume doesn’t implement mount"
 msgstr ""
 
-#: ../gio/gfile.c:6722
+#: ../gio/gfile.c:6723
 msgid "No application is registered as handling this file"
 msgstr ""
 
@@ -1586,12 +1586,12 @@ msgstr ""
 msgid "Use %s to get detailed help.\n"
 msgstr ""
 
-#: ../gio/gio-tool-cat.c:80
+#: ../gio/gio-tool-cat.c:83
 msgid "Error writing to stdout"
 msgstr ""
 
 #. Translators: commandline placeholder
-#: ../gio/gio-tool-cat.c:124 ../gio/gio-tool-info.c:282
+#: ../gio/gio-tool-cat.c:127 ../gio/gio-tool-info.c:282
 #: ../gio/gio-tool-list.c:165 ../gio/gio-tool-mkdir.c:48
 #: ../gio/gio-tool-monitor.c:37 ../gio/gio-tool-monitor.c:39
 #: ../gio/gio-tool-monitor.c:41 ../gio/gio-tool-monitor.c:43
@@ -1602,18 +1602,18 @@ msgstr ""
 msgid "LOCATION"
 msgstr ""
 
-#: ../gio/gio-tool-cat.c:129
+#: ../gio/gio-tool-cat.c:132
 msgid "Concatenate files and print to standard output."
 msgstr ""
 
-#: ../gio/gio-tool-cat.c:131
+#: ../gio/gio-tool-cat.c:134
 msgid ""
 "gio cat works just like the traditional cat utility, but using GIO\n"
 "locations instead of local files: for example, you can use something\n"
 "like smb://server/resource/file.txt as location."
 msgstr ""
 
-#: ../gio/gio-tool-cat.c:153 ../gio/gio-tool-info.c:313
+#: ../gio/gio-tool-cat.c:156 ../gio/gio-tool-info.c:313
 #: ../gio/gio-tool-mkdir.c:76 ../gio/gio-tool-monitor.c:228
 #: ../gio/gio-tool-open.c:71 ../gio/gio-tool-remove.c:72
 msgid "No locations given"
@@ -2120,7 +2120,7 @@ msgstr ""
 msgid "List contents of directories in a tree-like format."
 msgstr ""
 
-#: ../gio/glib-compile-resources.c:142 ../gio/glib-compile-schemas.c:1492
+#: ../gio/glib-compile-resources.c:142 ../gio/glib-compile-schemas.c:1501
 #, c-format
 msgid "Element <%s> not allowed inside <%s>"
 msgstr ""
@@ -2165,12 +2165,12 @@ msgstr ""
 msgid "Error compressing file %s"
 msgstr ""
 
-#: ../gio/glib-compile-resources.c:469 ../gio/glib-compile-schemas.c:1604
+#: ../gio/glib-compile-resources.c:469
 #, c-format
 msgid "text may not appear inside <%s>"
 msgstr ""
 
-#: ../gio/glib-compile-resources.c:664 ../gio/glib-compile-schemas.c:2053
+#: ../gio/glib-compile-resources.c:664 ../gio/glib-compile-schemas.c:2067
 msgid "Show program version and exit"
 msgstr ""
 
@@ -2184,8 +2184,8 @@ msgid ""
 "directory)"
 msgstr ""
 
-#: ../gio/glib-compile-resources.c:666 ../gio/glib-compile-schemas.c:2054
-#: ../gio/glib-compile-schemas.c:2082
+#: ../gio/glib-compile-resources.c:666 ../gio/glib-compile-schemas.c:2068
+#: ../gio/glib-compile-schemas.c:2096
 msgid "DIRECTORY"
 msgstr ""
 
@@ -2238,250 +2238,419 @@ msgstr ""
 msgid "You should give exactly one file name\n"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:784
-msgid "empty names are not permitted"
+#: ../gio/glib-compile-schemas.c:95
+#, c-format
+msgid "nick must be a minimum of 2 characters"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:106
+#, c-format
+msgid "Invalid numeric value"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:114
+#, c-format
+msgid "<value nick='%s'/> already specified"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:122
+#, c-format
+msgid "value='%s' already specified"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:136
+#, c-format
+msgid "flags values must have at most 1 bit set"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:161
+#, c-format
+msgid "<%s> must contain at least one <value>"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:315
+#, c-format
+msgid "<%s> is not contained in the specified range"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:327
+#, c-format
+msgid "<%s> is not a valid member of the specified enumerated type"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:333
+#, c-format
+msgid "<%s> contains string not in the specified flags type"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:339
+#, c-format
+msgid "<%s> contains a string not in <choices>"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:373
+msgid "<range/> already specified for this key"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:391
+#, c-format
+msgid "<range> not allowed for keys of type “%s”"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:408
+#, c-format
+msgid "<range> specified minimum is greater than maximum"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:433
+#, c-format
+msgid "unsupported l10n category: %s"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:441
+msgid "l10n requested, but no gettext domain given"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:453
+msgid "translation context given for value without l10n enabled"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:475
+#, c-format
+msgid "Failed to parse <default> value of type “%s”: "
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:492
+msgid ""
+"<choices> cannot be specified for keys tagged as having an enumerated type"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:501
+msgid "<choices> already specified for this key"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:513
+#, c-format
+msgid "<choices> not allowed for keys of type “%s”"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:794
+#: ../gio/glib-compile-schemas.c:529
 #, c-format
-msgid "invalid name '%s': names must begin with a lowercase letter"
+msgid "<choice value='%s'/> already given"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:806
+#: ../gio/glib-compile-schemas.c:544
+#, c-format
+msgid "<choices> must contain at least one <choice>"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:558
+msgid "<aliases> already specified for this key"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:562
+msgid ""
+"<aliases> can only be specified for keys with enumerated or flags types or "
+"after <choices>"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:581
+#, c-format
+msgid ""
+"<alias value='%s'/> given when “%s” is already a member of the enumerated "
+"type"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:587
+#, c-format
+msgid "<alias value='%s'/> given when <choice value='%s'/> was already given"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:595
+#, c-format
+msgid "<alias value='%s'/> already specified"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:605
+#, c-format
+msgid "alias target “%s” is not in enumerated type"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:606
+#, c-format
+msgid "alias target “%s” is not in <choices>"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:621
+#, c-format
+msgid "<aliases> must contain at least one <alias>"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:786
+msgid "Empty names are not permitted"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:796
+#, c-format
+msgid "Invalid name “%s”: names must begin with a lowercase letter"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:808
 #, c-format
 msgid ""
-"invalid name '%s': invalid character '%c'; only lowercase letters, numbers "
-"and hyphen ('-') are permitted."
+"Invalid name “%s”: invalid character “%c”; only lowercase letters, numbers "
+"and hyphen (“-”) are permitted"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:815
+#: ../gio/glib-compile-schemas.c:817
 #, c-format
-msgid "invalid name '%s': two successive hyphens ('--') are not permitted."
+msgid "Invalid name “%s”: two successive hyphens (“--”) are not permitted"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:824
+#: ../gio/glib-compile-schemas.c:826
 #, c-format
-msgid "invalid name '%s': the last character may not be a hyphen ('-')."
+msgid "Invalid name “%s”: the last character may not be a hyphen (“-”)"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:832
+#: ../gio/glib-compile-schemas.c:834
 #, c-format
-msgid "invalid name '%s': maximum length is 1024"
+msgid "Invalid name “%s”: maximum length is 1024"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:902
+#: ../gio/glib-compile-schemas.c:904
 #, c-format
 msgid "<child name='%s'> already specified"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:928
-msgid "cannot add keys to a 'list-of' schema"
+#: ../gio/glib-compile-schemas.c:930
+msgid "Cannot add keys to a “list-of” schema"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:939
+#: ../gio/glib-compile-schemas.c:941
 #, c-format
 msgid "<key name='%s'> already specified"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:957
+#: ../gio/glib-compile-schemas.c:959
 #, c-format
 msgid ""
 "<key name='%s'> shadows <key name='%s'> in <schema id='%s'>; use <override> "
 "to modify value"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:968
+#: ../gio/glib-compile-schemas.c:970
 #, c-format
 msgid ""
-"exactly one of 'type', 'enum' or 'flags' must be specified as an attribute "
+"Exactly one of “type”, “enum” or “flags” must be specified as an attribute "
 "to <key>"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:987
+#: ../gio/glib-compile-schemas.c:989
 #, c-format
 msgid "<%s id='%s'> not (yet) defined."
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1002
+#: ../gio/glib-compile-schemas.c:1004
 #, c-format
-msgid "invalid GVariant type string '%s'"
+msgid "Invalid GVariant type string “%s”"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1032
-msgid "<override> given but schema isn't extending anything"
+#: ../gio/glib-compile-schemas.c:1034
+msgid "<override> given but schema isnt extending anything"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1045
+#: ../gio/glib-compile-schemas.c:1047
 #, c-format
-msgid "no <key name='%s'> to override"
+msgid "No <key name='%s'> to override"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1053
+#: ../gio/glib-compile-schemas.c:1055
 #, c-format
 msgid "<override name='%s'> already specified"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1126
+#: ../gio/glib-compile-schemas.c:1128
 #, c-format
 msgid "<schema id='%s'> already specified"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1138
+#: ../gio/glib-compile-schemas.c:1140
 #, c-format
-msgid "<schema id='%s'> extends not yet existing schema '%s'"
+msgid "<schema id='%s'> extends not yet existing schema “%s”"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1154
+#: ../gio/glib-compile-schemas.c:1156
 #, c-format
-msgid "<schema id='%s'> is list of not yet existing schema '%s'"
+msgid "<schema id='%s'> is list of not yet existing schema “%s”"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1162
+#: ../gio/glib-compile-schemas.c:1164
 #, c-format
-msgid "Can not be a list of a schema with a path"
+msgid "Cannot be a list of a schema with a path"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1172
+#: ../gio/glib-compile-schemas.c:1174
 #, c-format
-msgid "Can not extend a schema with a path"
+msgid "Cannot extend a schema with a path"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1182
+#: ../gio/glib-compile-schemas.c:1184
 #, c-format
 msgid ""
 "<schema id='%s'> is a list, extending <schema id='%s'> which is not a list"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1192
+#: ../gio/glib-compile-schemas.c:1194
 #, c-format
 msgid ""
-"<schema id='%s' list-of='%s'> extends <schema id='%s' list-of='%s'> but '%s' "
-"does not extend '%s'"
+"<schema id='%s' list-of='%s'> extends <schema id='%s' list-of='%s'> but “%s” "
+"does not extend “%s”"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:1211
+#, c-format
+msgid "A path, if given, must begin and end with a slash"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1209
+#: ../gio/glib-compile-schemas.c:1218
 #, c-format
-msgid "a path, if given, must begin and end with a slash"
+msgid "The path of a list must end with “:/”"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1216
+#: ../gio/glib-compile-schemas.c:1227
 #, c-format
-msgid "the path of a list must end with ':/'"
+msgid ""
+"Warning: Schema “%s” has path “%s”.  Paths starting with “/apps/”, “/"
+"desktop/” or “/system/” are deprecated."
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1248
+#: ../gio/glib-compile-schemas.c:1257
 #, c-format
 msgid "<%s id='%s'> already specified"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1398 ../gio/glib-compile-schemas.c:1414
+#: ../gio/glib-compile-schemas.c:1407 ../gio/glib-compile-schemas.c:1423
 #, c-format
 msgid "Only one <%s> element allowed inside <%s>"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1496
+#: ../gio/glib-compile-schemas.c:1505
 #, c-format
 msgid "Element <%s> not allowed at the top level"
 msgstr ""
 
+#: ../gio/glib-compile-schemas.c:1523
+msgid "Element <default> is required in <key>"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:1613
+#, c-format
+msgid "Text may not appear inside <%s>"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:1681
+#, c-format
+msgid "Warning: undefined reference to <schema id='%s'/>"
+msgstr ""
+
 #. Translators: Do not translate "--strict".
-#: ../gio/glib-compile-schemas.c:1806 ../gio/glib-compile-schemas.c:1880
-#: ../gio/glib-compile-schemas.c:1956
+#: ../gio/glib-compile-schemas.c:1820 ../gio/glib-compile-schemas.c:1894
+#: ../gio/glib-compile-schemas.c:1970
 #, c-format
 msgid "--strict was specified; exiting.\n"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1816
+#: ../gio/glib-compile-schemas.c:1830
 #, c-format
 msgid "This entire file has been ignored.\n"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1876
+#: ../gio/glib-compile-schemas.c:1890
 #, c-format
 msgid "Ignoring this file.\n"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1916
+#: ../gio/glib-compile-schemas.c:1930
 #, c-format
 msgid "No such key '%s' in schema '%s' as specified in override file '%s'"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1922 ../gio/glib-compile-schemas.c:1980
-#: ../gio/glib-compile-schemas.c:2008
+#: ../gio/glib-compile-schemas.c:1936 ../gio/glib-compile-schemas.c:1994
+#: ../gio/glib-compile-schemas.c:2022
 #, c-format
 msgid "; ignoring override for this key.\n"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1926 ../gio/glib-compile-schemas.c:1984
-#: ../gio/glib-compile-schemas.c:2012
+#: ../gio/glib-compile-schemas.c:1940 ../gio/glib-compile-schemas.c:1998
+#: ../gio/glib-compile-schemas.c:2026
 #, c-format
 msgid " and --strict was specified; exiting.\n"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1942
+#: ../gio/glib-compile-schemas.c:1956
 #, c-format
 msgid ""
 "error parsing key '%s' in schema '%s' as specified in override file '%s': %s."
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1952
+#: ../gio/glib-compile-schemas.c:1966
 #, c-format
 msgid "Ignoring override for this key.\n"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1970
+#: ../gio/glib-compile-schemas.c:1984
 #, c-format
 msgid ""
 "override for key '%s' in schema '%s' in override file '%s' is outside the "
 "range given in the schema"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1998
+#: ../gio/glib-compile-schemas.c:2012
 #, c-format
 msgid ""
 "override for key '%s' in schema '%s' in override file '%s' is not in the "
 "list of valid choices"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:2054
+#: ../gio/glib-compile-schemas.c:2068
 msgid "where to store the gschemas.compiled file"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:2055
+#: ../gio/glib-compile-schemas.c:2069
 msgid "Abort on any errors in schemas"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:2056
+#: ../gio/glib-compile-schemas.c:2070
 msgid "Do not write the gschema.compiled file"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:2057
+#: ../gio/glib-compile-schemas.c:2071
 msgid "Do not enforce key name restrictions"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:2085
+#: ../gio/glib-compile-schemas.c:2099
 msgid ""
 "Compile all GSettings schema files into a schema cache.\n"
 "Schema files are required to have the extension .gschema.xml,\n"
 "and the cache file is called gschemas.compiled."
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:2106
+#: ../gio/glib-compile-schemas.c:2120
 #, c-format
 msgid "You should give exactly one directory name\n"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:2148
+#: ../gio/glib-compile-schemas.c:2162
 #, c-format
 msgid "No schema files found: "
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:2151
+#: ../gio/glib-compile-schemas.c:2165
 #, c-format
 msgid "doing nothing.\n"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:2154
+#: ../gio/glib-compile-schemas.c:2168
 #, c-format
 msgid "removed existing output file.\n"
 msgstr ""
@@ -2518,8 +2687,8 @@ msgstr ""
 msgid "Can’t rename file, filename already exists"
 msgstr ""
 
-#: ../gio/glocalfile.c:1237 ../gio/glocalfile.c:2251 ../gio/glocalfile.c:2279
-#: ../gio/glocalfile.c:2436 ../gio/glocalfileoutputstream.c:549
+#: ../gio/glocalfile.c:1237 ../gio/glocalfile.c:2253 ../gio/glocalfile.c:2281
+#: ../gio/glocalfile.c:2438 ../gio/glocalfileoutputstream.c:549
 msgid "Invalid filename"
 msgstr ""
 
@@ -2533,184 +2702,184 @@ msgstr ""
 msgid "Error removing file %s: %s"
 msgstr ""
 
-#: ../gio/glocalfile.c:1927
+#: ../gio/glocalfile.c:1928
 #, c-format
 msgid "Error trashing file %s: %s"
 msgstr ""
 
-#: ../gio/glocalfile.c:1950
+#: ../gio/glocalfile.c:1951
 #, c-format
 msgid "Unable to create trash dir %s: %s"
 msgstr ""
 
-#: ../gio/glocalfile.c:1970
+#: ../gio/glocalfile.c:1971
 #, c-format
 msgid "Unable to find toplevel directory to trash %s"
 msgstr ""
 
-#: ../gio/glocalfile.c:2049 ../gio/glocalfile.c:2069
+#: ../gio/glocalfile.c:2050 ../gio/glocalfile.c:2070
 #, c-format
 msgid "Unable to find or create trash directory for %s"
 msgstr ""
 
-#: ../gio/glocalfile.c:2103
+#: ../gio/glocalfile.c:2105
 #, c-format
 msgid "Unable to create trashing info file for %s: %s"
 msgstr ""
 
-#: ../gio/glocalfile.c:2162
+#: ../gio/glocalfile.c:2164
 #, c-format
 msgid "Unable to trash file %s across filesystem boundaries"
 msgstr ""
 
-#: ../gio/glocalfile.c:2166 ../gio/glocalfile.c:2222
+#: ../gio/glocalfile.c:2168 ../gio/glocalfile.c:2224
 #, c-format
 msgid "Unable to trash file %s: %s"
 msgstr ""
 
-#: ../gio/glocalfile.c:2228
+#: ../gio/glocalfile.c:2230
 #, c-format
 msgid "Unable to trash file %s"
 msgstr ""
 
-#: ../gio/glocalfile.c:2254
+#: ../gio/glocalfile.c:2256
 #, c-format
 msgid "Error creating directory %s: %s"
 msgstr ""
 
-#: ../gio/glocalfile.c:2283
+#: ../gio/glocalfile.c:2285
 #, c-format
 msgid "Filesystem does not support symbolic links"
 msgstr ""
 
-#: ../gio/glocalfile.c:2286
+#: ../gio/glocalfile.c:2288
 #, c-format
 msgid "Error making symbolic link %s: %s"
 msgstr ""
 
-#: ../gio/glocalfile.c:2292 ../glib/gfileutils.c:2077
+#: ../gio/glocalfile.c:2294 ../glib/gfileutils.c:2077
 msgid "Symbolic links not supported"
 msgstr ""
 
-#: ../gio/glocalfile.c:2347 ../gio/glocalfile.c:2382 ../gio/glocalfile.c:2439
+#: ../gio/glocalfile.c:2349 ../gio/glocalfile.c:2384 ../gio/glocalfile.c:2441
 #, c-format
 msgid "Error moving file %s: %s"
 msgstr ""
 
-#: ../gio/glocalfile.c:2370
+#: ../gio/glocalfile.c:2372
 msgid "Can’t move directory over directory"
 msgstr ""
 
-#: ../gio/glocalfile.c:2396 ../gio/glocalfileoutputstream.c:931
-#: ../gio/glocalfileoutputstream.c:945 ../gio/glocalfileoutputstream.c:960
-#: ../gio/glocalfileoutputstream.c:977 ../gio/glocalfileoutputstream.c:991
+#: ../gio/glocalfile.c:2398 ../gio/glocalfileoutputstream.c:933
+#: ../gio/glocalfileoutputstream.c:947 ../gio/glocalfileoutputstream.c:962
+#: ../gio/glocalfileoutputstream.c:979 ../gio/glocalfileoutputstream.c:993
 msgid "Backup file creation failed"
 msgstr ""
 
-#: ../gio/glocalfile.c:2415
+#: ../gio/glocalfile.c:2417
 #, c-format
 msgid "Error removing target file: %s"
 msgstr ""
 
-#: ../gio/glocalfile.c:2429
+#: ../gio/glocalfile.c:2431
 msgid "Move between mounts not supported"
 msgstr ""
 
-#: ../gio/glocalfile.c:2620
+#: ../gio/glocalfile.c:2622
 #, c-format
 msgid "Could not determine the disk usage of %s: %s"
 msgstr ""
 
-#: ../gio/glocalfileinfo.c:721
+#: ../gio/glocalfileinfo.c:731
 msgid "Attribute value must be non-NULL"
 msgstr ""
 
-#: ../gio/glocalfileinfo.c:728
+#: ../gio/glocalfileinfo.c:738
 msgid "Invalid attribute type (string expected)"
 msgstr ""
 
-#: ../gio/glocalfileinfo.c:735
+#: ../gio/glocalfileinfo.c:745
 msgid "Invalid extended attribute name"
 msgstr ""
 
-#: ../gio/glocalfileinfo.c:775
+#: ../gio/glocalfileinfo.c:785
 #, c-format
 msgid "Error setting extended attribute “%s”: %s"
 msgstr ""
 
-#: ../gio/glocalfileinfo.c:1575
+#: ../gio/glocalfileinfo.c:1586
 msgid " (invalid encoding)"
 msgstr ""
 
-#: ../gio/glocalfileinfo.c:1766 ../gio/glocalfileoutputstream.c:809
+#: ../gio/glocalfileinfo.c:1777 ../gio/glocalfileoutputstream.c:811
 #, c-format
 msgid "Error when getting information for file “%s”: %s"
 msgstr ""
 
-#: ../gio/glocalfileinfo.c:2017
+#: ../gio/glocalfileinfo.c:2028
 #, c-format
 msgid "Error when getting information for file descriptor: %s"
 msgstr ""
 
-#: ../gio/glocalfileinfo.c:2062
+#: ../gio/glocalfileinfo.c:2073
 msgid "Invalid attribute type (uint32 expected)"
 msgstr ""
 
-#: ../gio/glocalfileinfo.c:2080
+#: ../gio/glocalfileinfo.c:2091
 msgid "Invalid attribute type (uint64 expected)"
 msgstr ""
 
-#: ../gio/glocalfileinfo.c:2099 ../gio/glocalfileinfo.c:2118
+#: ../gio/glocalfileinfo.c:2110 ../gio/glocalfileinfo.c:2129
 msgid "Invalid attribute type (byte string expected)"
 msgstr ""
 
-#: ../gio/glocalfileinfo.c:2153
+#: ../gio/glocalfileinfo.c:2164
 msgid "Cannot set permissions on symlinks"
 msgstr ""
 
-#: ../gio/glocalfileinfo.c:2169
+#: ../gio/glocalfileinfo.c:2180
 #, c-format
 msgid "Error setting permissions: %s"
 msgstr ""
 
-#: ../gio/glocalfileinfo.c:2220
+#: ../gio/glocalfileinfo.c:2231
 #, c-format
 msgid "Error setting owner: %s"
 msgstr ""
 
-#: ../gio/glocalfileinfo.c:2243
+#: ../gio/glocalfileinfo.c:2254
 msgid "symlink must be non-NULL"
 msgstr ""
 
-#: ../gio/glocalfileinfo.c:2253 ../gio/glocalfileinfo.c:2272
-#: ../gio/glocalfileinfo.c:2283
+#: ../gio/glocalfileinfo.c:2264 ../gio/glocalfileinfo.c:2283
+#: ../gio/glocalfileinfo.c:2294
 #, c-format
 msgid "Error setting symlink: %s"
 msgstr ""
 
-#: ../gio/glocalfileinfo.c:2262
+#: ../gio/glocalfileinfo.c:2273
 msgid "Error setting symlink: file is not a symlink"
 msgstr ""
 
-#: ../gio/glocalfileinfo.c:2388
+#: ../gio/glocalfileinfo.c:2399
 #, c-format
 msgid "Error setting modification or access time: %s"
 msgstr ""
 
-#: ../gio/glocalfileinfo.c:2411
+#: ../gio/glocalfileinfo.c:2422
 msgid "SELinux context must be non-NULL"
 msgstr ""
 
-#: ../gio/glocalfileinfo.c:2426
+#: ../gio/glocalfileinfo.c:2437
 #, c-format
 msgid "Error setting SELinux context: %s"
 msgstr ""
 
-#: ../gio/glocalfileinfo.c:2433
+#: ../gio/glocalfileinfo.c:2444
 msgid "SELinux is not enabled on this system"
 msgstr ""
 
-#: ../gio/glocalfileinfo.c:2525
+#: ../gio/glocalfileinfo.c:2536
 #, c-format
 msgid "Setting attribute %s not supported"
 msgstr ""
@@ -2722,7 +2891,7 @@ msgstr ""
 
 #: ../gio/glocalfileinputstream.c:199 ../gio/glocalfileinputstream.c:211
 #: ../gio/glocalfileinputstream.c:225 ../gio/glocalfileinputstream.c:333
-#: ../gio/glocalfileoutputstream.c:456 ../gio/glocalfileoutputstream.c:1009
+#: ../gio/glocalfileoutputstream.c:456 ../gio/glocalfileoutputstream.c:1011
 #, c-format
 msgid "Error seeking in file: %s"
 msgstr ""
@@ -2758,30 +2927,30 @@ msgstr ""
 msgid "Error renaming temporary file: %s"
 msgstr ""
 
-#: ../gio/glocalfileoutputstream.c:502 ../gio/glocalfileoutputstream.c:1060
+#: ../gio/glocalfileoutputstream.c:502 ../gio/glocalfileoutputstream.c:1062
 #, c-format
 msgid "Error truncating file: %s"
 msgstr ""
 
-#: ../gio/glocalfileoutputstream.c:555 ../gio/glocalfileoutputstream.c:791
-#: ../gio/glocalfileoutputstream.c:1041 ../gio/gsubprocess.c:360
+#: ../gio/glocalfileoutputstream.c:555 ../gio/glocalfileoutputstream.c:793
+#: ../gio/glocalfileoutputstream.c:1043 ../gio/gsubprocess.c:380
 #, c-format
 msgid "Error opening file “%s”: %s"
 msgstr ""
 
-#: ../gio/glocalfileoutputstream.c:822
+#: ../gio/glocalfileoutputstream.c:824
 msgid "Target file is a directory"
 msgstr ""
 
-#: ../gio/glocalfileoutputstream.c:827
+#: ../gio/glocalfileoutputstream.c:829
 msgid "Target file is not a regular file"
 msgstr ""
 
-#: ../gio/glocalfileoutputstream.c:839
+#: ../gio/glocalfileoutputstream.c:841
 msgid "The file was externally modified"
 msgstr ""
 
-#: ../gio/glocalfileoutputstream.c:1025
+#: ../gio/glocalfileoutputstream.c:1027
 #, c-format
 msgid "Error removing old file: %s"
 msgstr ""
@@ -3250,8 +3419,8 @@ msgstr ""
 msgid "Socket is already closed"
 msgstr ""
 
-#: ../gio/gsocket.c:409 ../gio/gsocket.c:2764 ../gio/gsocket.c:3949
-#: ../gio/gsocket.c:4005
+#: ../gio/gsocket.c:409 ../gio/gsocket.c:2765 ../gio/gsocket.c:3950
+#: ../gio/gsocket.c:4008
 msgid "Socket I/O timed out"
 msgstr ""
 
@@ -3260,121 +3429,121 @@ msgstr ""
 msgid "creating GSocket from fd: %s"
 msgstr ""
 
-#: ../gio/gsocket.c:569 ../gio/gsocket.c:623 ../gio/gsocket.c:630
+#: ../gio/gsocket.c:570 ../gio/gsocket.c:624 ../gio/gsocket.c:631
 #, c-format
 msgid "Unable to create socket: %s"
 msgstr ""
 
-#: ../gio/gsocket.c:623
+#: ../gio/gsocket.c:624
 msgid "Unknown family was specified"
 msgstr ""
 
-#: ../gio/gsocket.c:630
+#: ../gio/gsocket.c:631
 msgid "Unknown protocol was specified"
 msgstr ""
 
-#: ../gio/gsocket.c:1121
+#: ../gio/gsocket.c:1122
 #, c-format
 msgid "Cannot use datagram operations on a non-datagram socket."
 msgstr ""
 
-#: ../gio/gsocket.c:1138
+#: ../gio/gsocket.c:1139
 #, c-format
 msgid "Cannot use datagram operations on a socket with a timeout set."
 msgstr ""
 
-#: ../gio/gsocket.c:1942
+#: ../gio/gsocket.c:1943
 #, c-format
 msgid "could not get local address: %s"
 msgstr ""
 
-#: ../gio/gsocket.c:1985
+#: ../gio/gsocket.c:1986
 #, c-format
 msgid "could not get remote address: %s"
 msgstr ""
 
-#: ../gio/gsocket.c:2051
+#: ../gio/gsocket.c:2052
 #, c-format
 msgid "could not listen: %s"
 msgstr ""
 
-#: ../gio/gsocket.c:2150
+#: ../gio/gsocket.c:2151
 #, c-format
 msgid "Error binding to address: %s"
 msgstr ""
 
-#: ../gio/gsocket.c:2265 ../gio/gsocket.c:2302
+#: ../gio/gsocket.c:2266 ../gio/gsocket.c:2303
 #, c-format
 msgid "Error joining multicast group: %s"
 msgstr ""
 
-#: ../gio/gsocket.c:2266 ../gio/gsocket.c:2303
+#: ../gio/gsocket.c:2267 ../gio/gsocket.c:2304
 #, c-format
 msgid "Error leaving multicast group: %s"
 msgstr ""
 
-#: ../gio/gsocket.c:2267
+#: ../gio/gsocket.c:2268
 msgid "No support for source-specific multicast"
 msgstr ""
 
-#: ../gio/gsocket.c:2487
+#: ../gio/gsocket.c:2488
 #, c-format
 msgid "Error accepting connection: %s"
 msgstr ""
 
-#: ../gio/gsocket.c:2608
+#: ../gio/gsocket.c:2609
 msgid "Connection in progress"
 msgstr ""
 
-#: ../gio/gsocket.c:2657
+#: ../gio/gsocket.c:2658
 msgid "Unable to get pending error: "
 msgstr ""
 
-#: ../gio/gsocket.c:2827
+#: ../gio/gsocket.c:2828
 #, c-format
 msgid "Error receiving data: %s"
 msgstr ""
 
-#: ../gio/gsocket.c:3022
+#: ../gio/gsocket.c:3023
 #, c-format
 msgid "Error sending data: %s"
 msgstr ""
 
-#: ../gio/gsocket.c:3209
+#: ../gio/gsocket.c:3210
 #, c-format
 msgid "Unable to shutdown socket: %s"
 msgstr ""
 
-#: ../gio/gsocket.c:3290
+#: ../gio/gsocket.c:3291
 #, c-format
 msgid "Error closing socket: %s"
 msgstr ""
 
-#: ../gio/gsocket.c:3942
+#: ../gio/gsocket.c:3943
 #, c-format
 msgid "Waiting for socket condition: %s"
 msgstr ""
 
-#: ../gio/gsocket.c:4414 ../gio/gsocket.c:4494 ../gio/gsocket.c:4672
+#: ../gio/gsocket.c:4417 ../gio/gsocket.c:4497 ../gio/gsocket.c:4675
 #, c-format
 msgid "Error sending message: %s"
 msgstr ""
 
-#: ../gio/gsocket.c:4438
+#: ../gio/gsocket.c:4441
 msgid "GSocketControlMessage not supported on Windows"
 msgstr ""
 
-#: ../gio/gsocket.c:4891 ../gio/gsocket.c:4964 ../gio/gsocket.c:5190
+#: ../gio/gsocket.c:4894 ../gio/gsocket.c:4967 ../gio/gsocket.c:5193
 #, c-format
 msgid "Error receiving message: %s"
 msgstr ""
 
-#: ../gio/gsocket.c:5462
+#: ../gio/gsocket.c:5465
 #, c-format
 msgid "Unable to read socket credentials: %s"
 msgstr ""
 
-#: ../gio/gsocket.c:5471
+#: ../gio/gsocket.c:5474
 msgid "g_socket_get_credentials not implemented for this OS"
 msgstr ""
 
@@ -3567,14 +3736,14 @@ msgstr ""
 msgid "The password entered is incorrect."
 msgstr ""
 
-#: ../gio/gunixconnection.c:166 ../gio/gunixconnection.c:561
+#: ../gio/gunixconnection.c:166 ../gio/gunixconnection.c:563
 #, c-format
 msgid "Expecting 1 control message, got %d"
 msgid_plural "Expecting 1 control message, got %d"
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../gio/gunixconnection.c:182 ../gio/gunixconnection.c:573
+#: ../gio/gunixconnection.c:182 ../gio/gunixconnection.c:575
 msgid "Unexpected type of ancillary data"
 msgstr ""
 
@@ -3593,47 +3762,47 @@ msgstr ""
 msgid "Error sending credentials: "
 msgstr ""
 
-#: ../gio/gunixconnection.c:503
+#: ../gio/gunixconnection.c:504
 #, c-format
 msgid "Error checking if SO_PASSCRED is enabled for socket: %s"
 msgstr ""
 
-#: ../gio/gunixconnection.c:518
+#: ../gio/gunixconnection.c:520
 #, c-format
 msgid "Error enabling SO_PASSCRED: %s"
 msgstr ""
 
-#: ../gio/gunixconnection.c:547
+#: ../gio/gunixconnection.c:549
 msgid ""
 "Expecting to read a single byte for receiving credentials but read zero bytes"
 msgstr ""
 
-#: ../gio/gunixconnection.c:587
+#: ../gio/gunixconnection.c:589
 #, c-format
 msgid "Not expecting control message, but got %d"
 msgstr ""
 
-#: ../gio/gunixconnection.c:611
+#: ../gio/gunixconnection.c:614
 #, c-format
 msgid "Error while disabling SO_PASSCRED: %s"
 msgstr ""
 
-#: ../gio/gunixinputstream.c:369 ../gio/gunixinputstream.c:390
+#: ../gio/gunixinputstream.c:372 ../gio/gunixinputstream.c:393
 #, c-format
 msgid "Error reading from file descriptor: %s"
 msgstr ""
 
-#: ../gio/gunixinputstream.c:423 ../gio/gunixoutputstream.c:409
+#: ../gio/gunixinputstream.c:426 ../gio/gunixoutputstream.c:411
 #: ../gio/gwin32inputstream.c:217 ../gio/gwin32outputstream.c:204
 #, c-format
 msgid "Error closing file descriptor: %s"
 msgstr ""
 
-#: ../gio/gunixmounts.c:2422 ../gio/gunixmounts.c:2475
+#: ../gio/gunixmounts.c:2430 ../gio/gunixmounts.c:2483
 msgid "Filesystem root"
 msgstr ""
 
-#: ../gio/gunixoutputstream.c:355 ../gio/gunixoutputstream.c:376
+#: ../gio/gunixoutputstream.c:358 ../gio/gunixoutputstream.c:378
 #, c-format
 msgid "Error writing to file descriptor: %s"
 msgstr ""
@@ -4154,95 +4323,95 @@ msgstr ""
 msgid "Valid key file could not be found in search dirs"
 msgstr ""
 
-#: ../glib/gkeyfile.c:772
+#: ../glib/gkeyfile.c:773
 msgid "Not a regular file"
 msgstr ""
 
-#: ../glib/gkeyfile.c:1212
+#: ../glib/gkeyfile.c:1218
 #, c-format
 msgid ""
 "Key file contains line “%s” which is not a key-value pair, group, or comment"
 msgstr ""
 
-#: ../glib/gkeyfile.c:1269
+#: ../glib/gkeyfile.c:1275
 #, c-format
 msgid "Invalid group name: %s"
 msgstr ""
 
-#: ../glib/gkeyfile.c:1291
+#: ../glib/gkeyfile.c:1297
 msgid "Key file does not start with a group"
 msgstr ""
 
-#: ../glib/gkeyfile.c:1317
+#: ../glib/gkeyfile.c:1323
 #, c-format
 msgid "Invalid key name: %s"
 msgstr ""
 
-#: ../glib/gkeyfile.c:1344
+#: ../glib/gkeyfile.c:1350
 #, c-format
 msgid "Key file contains unsupported encoding “%s”"
 msgstr ""
 
-#: ../glib/gkeyfile.c:1587 ../glib/gkeyfile.c:1760 ../glib/gkeyfile.c:3140
-#: ../glib/gkeyfile.c:3203 ../glib/gkeyfile.c:3333 ../glib/gkeyfile.c:3463
-#: ../glib/gkeyfile.c:3607 ../glib/gkeyfile.c:3836 ../glib/gkeyfile.c:3903
+#: ../glib/gkeyfile.c:1593 ../glib/gkeyfile.c:1766 ../glib/gkeyfile.c:3146
+#: ../glib/gkeyfile.c:3209 ../glib/gkeyfile.c:3339 ../glib/gkeyfile.c:3469
+#: ../glib/gkeyfile.c:3613 ../glib/gkeyfile.c:3842 ../glib/gkeyfile.c:3909
 #, c-format
 msgid "Key file does not have group “%s”"
 msgstr ""
 
-#: ../glib/gkeyfile.c:1715
+#: ../glib/gkeyfile.c:1721
 #, c-format
 msgid "Key file does not have key “%s” in group “%s”"
 msgstr ""
 
-#: ../glib/gkeyfile.c:1877 ../glib/gkeyfile.c:1993
+#: ../glib/gkeyfile.c:1883 ../glib/gkeyfile.c:1999
 #, c-format
 msgid "Key file contains key “%s” with value “%s” which is not UTF-8"
 msgstr ""
 
-#: ../glib/gkeyfile.c:1897 ../glib/gkeyfile.c:2013 ../glib/gkeyfile.c:2382
+#: ../glib/gkeyfile.c:1903 ../glib/gkeyfile.c:2019 ../glib/gkeyfile.c:2388
 #, c-format
 msgid ""
 "Key file contains key “%s” which has a value that cannot be interpreted."
 msgstr ""
 
-#: ../glib/gkeyfile.c:2600 ../glib/gkeyfile.c:2969
+#: ../glib/gkeyfile.c:2606 ../glib/gkeyfile.c:2975
 #, c-format
 msgid ""
 "Key file contains key “%s” in group “%s” which has a value that cannot be "
 "interpreted."
 msgstr ""
 
-#: ../glib/gkeyfile.c:2678 ../glib/gkeyfile.c:2755
+#: ../glib/gkeyfile.c:2684 ../glib/gkeyfile.c:2761
 #, c-format
 msgid "Key “%s” in group “%s” has value “%s” where %s was expected"
 msgstr ""
 
-#: ../glib/gkeyfile.c:4143
+#: ../glib/gkeyfile.c:4149
 msgid "Key file contains escape character at end of line"
 msgstr ""
 
-#: ../glib/gkeyfile.c:4165
+#: ../glib/gkeyfile.c:4171
 #, c-format
 msgid "Key file contains invalid escape sequence “%s”"
 msgstr ""
 
-#: ../glib/gkeyfile.c:4307
+#: ../glib/gkeyfile.c:4315
 #, c-format
 msgid "Value “%s” cannot be interpreted as a number."
 msgstr ""
 
-#: ../glib/gkeyfile.c:4321
+#: ../glib/gkeyfile.c:4329
 #, c-format
 msgid "Integer value “%s” out of range"
 msgstr ""
 
-#: ../glib/gkeyfile.c:4354
+#: ../glib/gkeyfile.c:4362
 #, c-format
 msgid "Value “%s” cannot be interpreted as a float number."
 msgstr ""
 
-#: ../glib/gkeyfile.c:4393
+#: ../glib/gkeyfile.c:4401
 #, c-format
 msgid "Value “%s” cannot be interpreted as a boolean."
 msgstr ""
@@ -5004,21 +5173,21 @@ msgid ""
 "process"
 msgstr ""
 
-#: ../glib/gstrfuncs.c:3237 ../glib/gstrfuncs.c:3338
+#: ../glib/gstrfuncs.c:3247 ../glib/gstrfuncs.c:3348
 msgid "Empty string is not a number"
 msgstr ""
 
-#: ../glib/gstrfuncs.c:3261
+#: ../glib/gstrfuncs.c:3271
 #, c-format
 msgid "“%s” is not a signed number"
 msgstr ""
 
-#: ../glib/gstrfuncs.c:3271 ../glib/gstrfuncs.c:3374
+#: ../glib/gstrfuncs.c:3281 ../glib/gstrfuncs.c:3384
 #, c-format
 msgid "Number “%s” is out of bounds [%s, %s]"
 msgstr ""
 
-#: ../glib/gstrfuncs.c:3364
+#: ../glib/gstrfuncs.c:3374
 #, c-format
 msgid "“%s” is not an unsigned number"
 msgstr ""
@@ -5040,75 +5209,75 @@ msgstr ""
 msgid "Character out of range for UTF-16"
 msgstr ""
 
-#: ../glib/gutils.c:2147 ../glib/gutils.c:2174 ../glib/gutils.c:2280
+#: ../glib/gutils.c:2149 ../glib/gutils.c:2176 ../glib/gutils.c:2282
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../glib/gutils.c:2153
+#: ../glib/gutils.c:2155
 #, c-format
 msgid "%.1f KiB"
 msgstr ""
 
-#: ../glib/gutils.c:2155
+#: ../glib/gutils.c:2157
 #, c-format
 msgid "%.1f MiB"
 msgstr ""
 
-#: ../glib/gutils.c:2158
+#: ../glib/gutils.c:2160
 #, c-format
 msgid "%.1f GiB"
 msgstr ""
 
-#: ../glib/gutils.c:2161
+#: ../glib/gutils.c:2163
 #, c-format
 msgid "%.1f TiB"
 msgstr ""
 
-#: ../glib/gutils.c:2164
+#: ../glib/gutils.c:2166
 #, c-format
 msgid "%.1f PiB"
 msgstr ""
 
-#: ../glib/gutils.c:2167
+#: ../glib/gutils.c:2169
 #, c-format
 msgid "%.1f EiB"
 msgstr ""
 
-#: ../glib/gutils.c:2180
+#: ../glib/gutils.c:2182
 #, c-format
 msgid "%.1f kB"
 msgstr ""
 
-#: ../glib/gutils.c:2183 ../glib/gutils.c:2298
+#: ../glib/gutils.c:2185 ../glib/gutils.c:2300
 #, c-format
 msgid "%.1f MB"
 msgstr ""
 
-#: ../glib/gutils.c:2186 ../glib/gutils.c:2303
+#: ../glib/gutils.c:2188 ../glib/gutils.c:2305
 #, c-format
 msgid "%.1f GB"
 msgstr ""
 
-#: ../glib/gutils.c:2188 ../glib/gutils.c:2308
+#: ../glib/gutils.c:2190 ../glib/gutils.c:2310
 #, c-format
 msgid "%.1f TB"
 msgstr ""
 
-#: ../glib/gutils.c:2191 ../glib/gutils.c:2313
+#: ../glib/gutils.c:2193 ../glib/gutils.c:2315
 #, c-format
 msgid "%.1f PB"
 msgstr ""
 
-#: ../glib/gutils.c:2194 ../glib/gutils.c:2318
+#: ../glib/gutils.c:2196 ../glib/gutils.c:2320
 #, c-format
 msgid "%.1f EB"
 msgstr ""
 
 #. Translators: the %s in "%s bytes" will always be replaced by a number.
-#: ../glib/gutils.c:2231
+#: ../glib/gutils.c:2233
 #, c-format
 msgid "%s byte"
 msgid_plural "%s bytes"
@@ -5120,7 +5289,7 @@ msgstr[1] ""
 #. * compatibility.  Users will not see this string unless a program is using this deprecated function.
 #. * Please translate as literally as possible.
 #.
-#: ../glib/gutils.c:2293
+#: ../glib/gutils.c:2295
 #, c-format
 msgid "%.1f KB"
 msgstr ""
diff --git a/po/meson.build b/po/meson.build
new file mode 100644 (file)
index 0000000..9fab018
--- /dev/null
@@ -0,0 +1,5 @@
+i18n = import('i18n')
+
+i18n.gettext('glib20', preset: 'glib')
+
+install_data('Makefile.in.in', install_dir : glib_pkgdatadir + '/gettext/po')
index 400fe11..bc4da4c 100644 (file)
Binary files a/po/sl.gmo and b/po/sl.gmo differ
index 02c3c56..d7b6412 100644 (file)
--- a/po/sl.po
+++ b/po/sl.po
@@ -3,44 +3,47 @@
 # This file is distributed under the same license as the glib package.
 #
 # Andraž Tori <andraz.tori1@guest.arnes.si> 2000.
-# Matej Urbančič <mateju@svn.gnome.org>, 2007-2016.
+# Matej Urbančič <mateju@svn.gnome.org>, 2007–2017.
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: glib master\n"
-"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?"
+"Report-Msgid-Bugs-To: https://bugzilla.gnome.org/enter_bug.cgi?"
 "product=glib&keywords=I18N+L10N&component=general\n"
-"POT-Creation-Date: 2016-03-05 21:12+0100\n"
-"PO-Revision-Date: 2016-03-05 21:12+0100\n"
+"POT-Creation-Date: 2017-08-06 19:26+0200\n"
+"PO-Revision-Date: 2017-08-06 20:01+0200\n"
 "Last-Translator: Matej Urbančič <mateju@svn.gnome.org>\n"
 "Language-Team: Slovenian GNOME Translation Team <gnome-si@googlegroups.com>\n"
-"Language: sl\n"
+"Language: sl_SI\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n"
 "%100==4 ? 3 : 0);\n"
 "X-Poedit-SourceCharset: utf-8\n"
-"X-Generator: Poedit 1.8.4\n"
+"X-Generator: Poedit 2.0.1\n"
 
-#: ../gio/gapplication.c:493
+#: ../gio/gapplication.c:490
 msgid "GApplication options"
 msgstr "Možnosti programa"
 
-#: ../gio/gapplication.c:493
+#: ../gio/gapplication.c:490
 msgid "Show GApplication options"
 msgstr "Prikaže možnosti programa"
 
-#: ../gio/gapplication.c:538
+#: ../gio/gapplication.c:535
 msgid "Enter GApplication service mode (use from D-Bus service files)"
 msgstr "Vstopi v način storitev (uporabi iz storitvenih datotek D-Bus)"
 
-#: ../gio/gapplication.c:550
-msgid "Override the application's ID"
+#: ../gio/gapplication.c:547
+#, fuzzy
+#| msgid "Override the application's ID"
+msgid "Override the application’s ID"
 msgstr "Prepiši ID programa"
 
 #: ../gio/gapplication-tool.c:45 ../gio/gapplication-tool.c:46
-#: ../gio/gresource-tool.c:488 ../gio/gsettings-tool.c:512
+#: ../gio/gio-tool.c:227 ../gio/gresource-tool.c:488
+#: ../gio/gsettings-tool.c:522
 msgid "Print help"
 msgstr "Izpiši pomoč"
 
@@ -49,11 +52,11 @@ msgstr "Izpiši pomoč"
 msgid "[COMMAND]"
 msgstr "[UKAZ]"
 
-#: ../gio/gapplication-tool.c:49
+#: ../gio/gapplication-tool.c:49 ../gio/gio-tool.c:228
 msgid "Print version"
 msgstr "Izpiši različico"
 
-#: ../gio/gapplication-tool.c:50 ../gio/gsettings-tool.c:518
+#: ../gio/gapplication-tool.c:50 ../gio/gsettings-tool.c:528
 msgid "Print version information and exit"
 msgstr "Izpiši podatke o različici in končaj"
 
@@ -76,7 +79,9 @@ msgid "Launch the application (with optional files to open)"
 msgstr "Zagon programa (z možnostjo določitve datoteke za odpiranje)"
 
 #: ../gio/gapplication-tool.c:57
-msgid "APPID [FILE...]"
+#, fuzzy
+#| msgid "APPID [FILE...]"
+msgid "APPID [FILE…]"
 msgstr "APPID [DATOTEKA ...]"
 
 #: ../gio/gapplication-tool.c:59
@@ -104,7 +109,7 @@ msgid "APPID"
 msgstr "APPID"
 
 #: ../gio/gapplication-tool.c:70 ../gio/gapplication-tool.c:133
-#: ../gio/gdbus-tool.c:90
+#: ../gio/gdbus-tool.c:90 ../gio/gio-tool.c:224
 msgid "COMMAND"
 msgstr "UKAZ"
 
@@ -117,9 +122,9 @@ msgid "Application identifier in D-Bus format (eg: org.example.viewer)"
 msgstr ""
 "Določila programa v zapisu vodila D-Bus (na primer: org.example.viewer)"
 
-#: ../gio/gapplication-tool.c:72 ../gio/glib-compile-resources.c:589
-#: ../gio/glib-compile-resources.c:620 ../gio/gresource-tool.c:495
-#: ../gio/gresource-tool.c:561
+#: ../gio/gapplication-tool.c:72 ../gio/glib-compile-resources.c:665
+#: ../gio/glib-compile-resources.c:671 ../gio/glib-compile-resources.c:698
+#: ../gio/gresource-tool.c:495 ../gio/gresource-tool.c:561
 msgid "FILE"
 msgstr "DATOTEKA"
 
@@ -145,7 +150,7 @@ msgid "Optional parameter to the action invocation, in GVariant format"
 msgstr "Neobvezen parameter za priklic dejanja, v zapisu GVariant"
 
 #: ../gio/gapplication-tool.c:96 ../gio/gresource-tool.c:526
-#: ../gio/gsettings-tool.c:598
+#: ../gio/gsettings-tool.c:614
 #, c-format
 msgid ""
 "Unknown command %s\n"
@@ -159,12 +164,14 @@ msgid "Usage:\n"
 msgstr "Uporaba:\n"
 
 #: ../gio/gapplication-tool.c:114 ../gio/gresource-tool.c:551
-#: ../gio/gsettings-tool.c:632
+#: ../gio/gsettings-tool.c:649
 msgid "Arguments:\n"
 msgstr "Argumenti:\n"
 
 #: ../gio/gapplication-tool.c:133
-msgid "[ARGS...]"
+#, fuzzy
+#| msgid "[ARGS...]"
+msgid "[ARGS…]"
 msgstr "[ARGUMENTI ...]"
 
 #: ../gio/gapplication-tool.c:134
@@ -174,9 +181,12 @@ msgstr "Ukazi:\n"
 
 #. Translators: do not translate 'help', but please translate 'COMMAND'.
 #: ../gio/gapplication-tool.c:146
-#, c-format
+#, fuzzy, c-format
+#| msgid ""
+#| "Use '%s help COMMAND' to get detailed help.\n"
+#| "\n"
 msgid ""
-"Use '%s help COMMAND' to get detailed help.\n"
+"Use “%s help COMMAND” to get detailed help.\n"
 "\n"
 msgstr ""
 "Z ukazom '%s help UKAZ' se izpiše podrobna pomoč.\n"
@@ -192,15 +202,19 @@ msgstr ""
 "\n"
 
 #: ../gio/gapplication-tool.c:171
-#, c-format
-msgid "invalid application id: '%s'\n"
+#, fuzzy, c-format
+#| msgid "invalid application id: '%s'\n"
+msgid "invalid application id: “%s”\n"
 msgstr "Neveljaven ID programa: '%s'\n"
 
 #. Translators: %s is replaced with a command name like 'list-actions'
 #: ../gio/gapplication-tool.c:182
-#, c-format
+#, fuzzy, c-format
+#| msgid ""
+#| "'%s' takes no arguments\n"
+#| "\n"
 msgid ""
-"'%s' takes no arguments\n"
+"“%s” takes no arguments\n"
 "\n"
 msgstr ""
 "'%s' ne prevzema argumentov\n"
@@ -222,10 +236,13 @@ msgid "action name must be given after application id\n"
 msgstr "ime dejanja mora biti podano po določilu id programa\n"
 
 #: ../gio/gapplication-tool.c:325
-#, c-format
+#, fuzzy, c-format
+#| msgid ""
+#| "invalid action name: '%s'\n"
+#| "action names must consist of only alphanumerics, '-' and '.'\n"
 msgid ""
-"invalid action name: '%s'\n"
-"action names must consist of only alphanumerics, '-' and '.'\n"
+"invalid action name: “%s”\n"
+"action names must consist of only alphanumerics, “-” and “.”\n"
 msgstr ""
 "neveljavno ime dejanja: '%s'\n"
 "imena dejanj lahko tvorijo le alfanumerični znaki, vezaj in pika\n"
@@ -261,7 +278,7 @@ msgstr ""
 
 #: ../gio/gbufferedinputstream.c:420 ../gio/gbufferedinputstream.c:498
 #: ../gio/ginputstream.c:179 ../gio/ginputstream.c:379
-#: ../gio/ginputstream.c:617 ../gio/ginputstream.c:1016
+#: ../gio/ginputstream.c:617 ../gio/ginputstream.c:1019
 #: ../gio/goutputstream.c:203 ../gio/goutputstream.c:834
 #: ../gio/gpollableinputstream.c:205 ../gio/gpollableoutputstream.c:206
 #, c-format
@@ -277,8 +294,8 @@ msgstr "Iskanje po osnovnem pretoku ni podprto"
 msgid "Cannot truncate GBufferedInputStream"
 msgstr "Ni mogoče razčleniti GBufferedInputStream"
 
-#: ../gio/gbufferedinputstream.c:982 ../gio/ginputstream.c:1205
-#: ../gio/giostream.c:300 ../gio/goutputstream.c:1658
+#: ../gio/gbufferedinputstream.c:982 ../gio/ginputstream.c:1208
+#: ../gio/giostream.c:300 ../gio/goutputstream.c:1660
 msgid "Stream is already closed"
 msgstr "Pretok je že zaprt"
 
@@ -286,9 +303,9 @@ msgstr "Pretok je že zaprt"
 msgid "Truncate not supported on base stream"
 msgstr "Razčlenitev na osnovnem pretoku ni dovoljena"
 
-#: ../gio/gcancellable.c:317 ../gio/gdbusconnection.c:1847
-#: ../gio/gdbusprivate.c:1375 ../gio/glocalfile.c:2220
-#: ../gio/gsimpleasyncresult.c:870 ../gio/gsimpleasyncresult.c:896
+#: ../gio/gcancellable.c:317 ../gio/gdbusconnection.c:1849
+#: ../gio/gdbusprivate.c:1402 ../gio/gsimpleasyncresult.c:870
+#: ../gio/gsimpleasyncresult.c:896
 #, c-format
 msgid "Operation was cancelled"
 msgstr "Opravilo je bilo preklicano."
@@ -306,43 +323,45 @@ msgid "Not enough space in destination"
 msgstr "Ni dovolj prostora za cilju"
 
 #: ../gio/gcharsetconverter.c:342 ../gio/gdatainputstream.c:848
-#: ../gio/gdatainputstream.c:1256 ../glib/gconvert.c:438
-#: ../glib/gconvert.c:845 ../glib/giochannel.c:1556 ../glib/giochannel.c:1598
-#: ../glib/giochannel.c:2442 ../glib/gutf8.c:853 ../glib/gutf8.c:1306
+#: ../gio/gdatainputstream.c:1257 ../glib/gconvert.c:438 ../glib/gconvert.c:845
+#: ../glib/giochannel.c:1556 ../glib/giochannel.c:1598
+#: ../glib/giochannel.c:2442 ../glib/gutf8.c:866 ../glib/gutf8.c:1319
 msgid "Invalid byte sequence in conversion input"
 msgstr "Neveljavno zaporedje bajtov na vhodu pretvorbe"
 
-#: ../gio/gcharsetconverter.c:347 ../glib/gconvert.c:446
-#: ../glib/gconvert.c:770 ../glib/giochannel.c:1563 ../glib/giochannel.c:2454
+#: ../gio/gcharsetconverter.c:347 ../glib/gconvert.c:446 ../glib/gconvert.c:770
+#: ../glib/giochannel.c:1563 ../glib/giochannel.c:2454
 #, c-format
 msgid "Error during conversion: %s"
 msgstr "Napaka med pretvorbo: %s"
 
-#: ../gio/gcharsetconverter.c:444 ../gio/gsocket.c:1078
+#: ../gio/gcharsetconverter.c:445 ../gio/gsocket.c:1096
 msgid "Cancellable initialization not supported"
 msgstr "Dejanje prekinitve zagona ni podprto"
 
-#: ../gio/gcharsetconverter.c:454 ../glib/gconvert.c:321
+#: ../gio/gcharsetconverter.c:456 ../glib/gconvert.c:321
 #: ../glib/giochannel.c:1384
-#, c-format
-msgid "Conversion from character set '%s' to '%s' is not supported"
+#, fuzzy, c-format
+#| msgid "Conversion from character set '%s' to '%s' is not supported"
+msgid "Conversion from character set “%s” to “%s” is not supported"
 msgstr "Pretvorba iz nabora znakov '%s' v '%s' ni podprta"
 
-#: ../gio/gcharsetconverter.c:458 ../glib/gconvert.c:325
-#, c-format
-msgid "Could not open converter from '%s' to '%s'"
+#: ../gio/gcharsetconverter.c:460 ../glib/gconvert.c:325
+#, fuzzy, c-format
+#| msgid "Could not open converter from '%s' to '%s'"
+msgid "Could not open converter from “%s” to “%s”"
 msgstr "Ni mogoče odpreti pretvornika iz '%s' v '%s'"
 
-#: ../gio/gcontenttype.c:335
+#: ../gio/gcontenttype.c:358
 #, c-format
 msgid "%s type"
 msgstr "%s vrsta"
 
-#: ../gio/gcontenttype-win32.c:160
+#: ../gio/gcontenttype-win32.c:177
 msgid "Unknown type"
 msgstr "Neznana vrsta"
 
-#: ../gio/gcontenttype-win32.c:162
+#: ../gio/gcontenttype-win32.c:179
 #, c-format
 msgid "%s filetype"
 msgstr "%s vrsta datoteke"
@@ -367,160 +386,195 @@ msgstr "Na tem OS vohljanje po poverilih ni podprto"
 msgid "Unexpected early end-of-stream"
 msgstr "Nepričakovan prezgodnji konec pretoka"
 
-#: ../gio/gdbusaddress.c:153 ../gio/gdbusaddress.c:241
-#: ../gio/gdbusaddress.c:322
-#, c-format
-msgid "Unsupported key '%s' in address entry '%s'"
+#: ../gio/gdbusaddress.c:155 ../gio/gdbusaddress.c:243
+#: ../gio/gdbusaddress.c:324
+#, fuzzy, c-format
+#| msgid "Unsupported key '%s' in address entry '%s'"
+msgid "Unsupported key “%s” in address entry “%s”"
 msgstr "Nepodprt ključ  '%s' v vnosu naslova  '%s'"
 
-#: ../gio/gdbusaddress.c:180
-#, c-format
+#: ../gio/gdbusaddress.c:182
+#, fuzzy, c-format
+#| msgid ""
+#| "Address '%s' is invalid (need exactly one of path, tmpdir or abstract "
+#| "keys)"
 msgid ""
-"Address '%s' is invalid (need exactly one of path, tmpdir or abstract keys)"
+"Address “%s” is invalid (need exactly one of path, tmpdir or abstract keys)"
 msgstr ""
 "Naslov '%s' je nepravilen (zahtevana je pot, začasna mapa ali abstraktni "
 "ključ)"
 
-#: ../gio/gdbusaddress.c:193
-#, c-format
-msgid "Meaningless key/value pair combination in address entry '%s'"
+#: ../gio/gdbusaddress.c:195
+#, fuzzy, c-format
+#| msgid "Meaningless key/value pair combination in address entry '%s'"
+msgid "Meaningless key/value pair combination in address entry “%s”"
 msgstr "Nesmiselna kombinacija za par ključ/vrednost v vnosu naslova '%s'"
 
-#: ../gio/gdbusaddress.c:256 ../gio/gdbusaddress.c:337
-#, c-format
-msgid "Error in address '%s' - the port attribute is malformed"
+#: ../gio/gdbusaddress.c:258 ../gio/gdbusaddress.c:339
+#, fuzzy, c-format
+#| msgid "Error in address '%s' - the port attribute is malformed"
+msgid "Error in address “%s” — the port attribute is malformed"
 msgstr "Napaka v naslovu '%s' - atribut vrat je nepravilno oblikovan"
 
-#: ../gio/gdbusaddress.c:267 ../gio/gdbusaddress.c:348
-#, c-format
-msgid "Error in address '%s' - the family attribute is malformed"
+#: ../gio/gdbusaddress.c:269 ../gio/gdbusaddress.c:350
+#, fuzzy, c-format
+#| msgid "Error in address '%s' - the family attribute is malformed"
+msgid "Error in address “%s” — the family attribute is malformed"
 msgstr "Napaka v naslovu '%s' - atribut družine je nepravilno oblikovan"
 
-#: ../gio/gdbusaddress.c:457
-#, c-format
-msgid "Address element '%s' does not contain a colon (:)"
+#: ../gio/gdbusaddress.c:460
+#, fuzzy, c-format
+#| msgid "Address element '%s' does not contain a colon (:)"
+msgid "Address element “%s” does not contain a colon (:)"
 msgstr "Predmet naslova '%s' ne vsebuje dvopičja (:)"
 
-#: ../gio/gdbusaddress.c:478
-#, c-format
+#: ../gio/gdbusaddress.c:481
+#, fuzzy, c-format
+#| msgid ""
+#| "Key/Value pair %d, '%s', in address element '%s' does not contain an "
+#| "equal sign"
 msgid ""
-"Key/Value pair %d, '%s', in address element '%s' does not contain an equal "
+"Key/Value pair %d, “%s”, in address element “%s” does not contain an equal "
 "sign"
 msgstr ""
 "Par ključ/vrednost %d, '%s', v predmetu naslova '%s', ne vsebuje enačaja"
 
-#: ../gio/gdbusaddress.c:492
-#, c-format
+#: ../gio/gdbusaddress.c:495
+#, fuzzy, c-format
+#| msgid ""
+#| "Error unescaping key or value in Key/Value pair %d, '%s', in address "
+#| "element '%s'"
 msgid ""
-"Error unescaping key or value in Key/Value pair %d, '%s', in address element "
-"'%s'"
+"Error unescaping key or value in Key/Value pair %d, “%s”, in address element "
+"“%s”"
 msgstr ""
 "Napaka, neubežni ključ ali vrednost v paru ključ/vrednost %d, '%s', v "
 "predmetu naslova '%s'"
 
-#: ../gio/gdbusaddress.c:570
-#, c-format
+#: ../gio/gdbusaddress.c:573
+#, fuzzy, c-format
+#| msgid ""
+#| "Error in address '%s' - the unix transport requires exactly one of the "
+#| "keys 'path' or 'abstract' to be set"
 msgid ""
-"Error in address '%s' - the unix transport requires exactly one of the keys "
-"'path' or 'abstract' to be set"
+"Error in address “%s” — the unix transport requires exactly one of the keys "
+"“path” or “abstract” to be set"
 msgstr ""
 "Napaka v naslovu '%s' - unix prenos zahteva enega izmed ključev 'path' ali "
 "'abstract' nastavljen"
 
-#: ../gio/gdbusaddress.c:606
-#, c-format
-msgid "Error in address '%s' - the host attribute is missing or malformed"
+#: ../gio/gdbusaddress.c:609
+#, fuzzy, c-format
+#| msgid "Error in address '%s' - the host attribute is missing or malformed"
+msgid "Error in address “%s” — the host attribute is missing or malformed"
 msgstr ""
 "Napaka v naslovu '%s' - atribut host manjka ali pa je nepravilno oblikovan"
 
-#: ../gio/gdbusaddress.c:620
-#, c-format
-msgid "Error in address '%s' - the port attribute is missing or malformed"
+#: ../gio/gdbusaddress.c:623
+#, fuzzy, c-format
+#| msgid "Error in address '%s' - the port attribute is missing or malformed"
+msgid "Error in address “%s” — the port attribute is missing or malformed"
 msgstr ""
 "Napaka v naslovu '%s' - manjka atribut vrat ali pa ali je nepravilno "
 "oblikovan"
 
-#: ../gio/gdbusaddress.c:634
-#, c-format
-msgid "Error in address '%s' - the noncefile attribute is missing or malformed"
+#: ../gio/gdbusaddress.c:637
+#, fuzzy, c-format
+#| msgid ""
+#| "Error in address '%s' - the noncefile attribute is missing or malformed"
+msgid "Error in address “%s” — the noncefile attribute is missing or malformed"
 msgstr ""
 "Napaka v naslovu '%s' - atribut noncefile manjka ali pa je nepravilno "
 "oblikovan"
 
-#: ../gio/gdbusaddress.c:655
+#: ../gio/gdbusaddress.c:658
 msgid "Error auto-launching: "
 msgstr "Napaka samodejnega zaganjanja:"
 
-#: ../gio/gdbusaddress.c:663
-#, c-format
-msgid "Unknown or unsupported transport '%s' for address '%s'"
+#: ../gio/gdbusaddress.c:666
+#, fuzzy, c-format
+#| msgid "Unknown or unsupported transport '%s' for address '%s'"
+msgid "Unknown or unsupported transport “%s” for address “%s”"
 msgstr "Neznan ali nepodprt prenos '%s' za naslov '%s' "
 
-#: ../gio/gdbusaddress.c:699
-#, c-format
-msgid "Error opening nonce file '%s': %s"
+#: ../gio/gdbusaddress.c:704
+#, fuzzy, c-format
+#| msgid "Error opening nonce file '%s': %s"
+msgid "Error opening nonce file “%s”: %s"
 msgstr "Napaka med odpiranjem enkratne datoteke '%s': %s"
 
-#: ../gio/gdbusaddress.c:717
-#, c-format
-msgid "Error reading from nonce file '%s': %s"
+#: ../gio/gdbusaddress.c:723
+#, fuzzy, c-format
+#| msgid "Error reading from nonce file '%s': %s"
+msgid "Error reading from nonce file “%s”: %s"
 msgstr "Napaka med branjem iz enkratne datoteke '%s': %s"
 
-#: ../gio/gdbusaddress.c:726
-#, c-format
-msgid "Error reading from nonce file '%s', expected 16 bytes, got %d"
+#: ../gio/gdbusaddress.c:732
+#, fuzzy, c-format
+#| msgid "Error reading from nonce file '%s', expected 16 bytes, got %d"
+msgid "Error reading from nonce file “%s”, expected 16 bytes, got %d"
 msgstr ""
 "Napaka med branjem iz datoteke nonce '%s'; pričakovanih 16 bajtov, dobljenih "
 "pa %d"
 
-#: ../gio/gdbusaddress.c:744
-#, c-format
-msgid "Error writing contents of nonce file '%s' to stream:"
+#: ../gio/gdbusaddress.c:750
+#, fuzzy, c-format
+#| msgid "Error writing contents of nonce file '%s' to stream:"
+msgid "Error writing contents of nonce file “%s” to stream:"
 msgstr "Napaka med pisanjem vsebine datoteke nonce '%s' v pretok:"
 
-#: ../gio/gdbusaddress.c:950
+#: ../gio/gdbusaddress.c:959
 msgid "The given address is empty"
 msgstr "Podan naslov je prazen."
 
-#: ../gio/gdbusaddress.c:1063
+#: ../gio/gdbusaddress.c:1072
 #, c-format
 msgid "Cannot spawn a message bus when setuid"
 msgstr "Ni mogoče oživiti vodila sporočila med izvajanjem ukaza setuid"
 
-#: ../gio/gdbusaddress.c:1070
+#: ../gio/gdbusaddress.c:1079
 msgid "Cannot spawn a message bus without a machine-id: "
 msgstr "Ni mogoče oživiti vodila sporočila brez predmeta machine-id:"
 
-#: ../gio/gdbusaddress.c:1112
+#: ../gio/gdbusaddress.c:1086
 #, c-format
-msgid "Error spawning command line '%s': "
+msgid "Cannot autolaunch D-Bus without X11 $DISPLAY"
+msgstr "Ni mogoče samodejno zagnati vodila D-Bus brez nastaviteve X11 $DISPLAY"
+
+#: ../gio/gdbusaddress.c:1128
+#, fuzzy, c-format
+#| msgid "Error spawning command line '%s': "
+msgid "Error spawning command line “%s”: "
 msgstr "Napaka med oživljanjem ukazne vrstice '%s': "
 
-#: ../gio/gdbusaddress.c:1329
+#: ../gio/gdbusaddress.c:1345
 #, c-format
 msgid "(Type any character to close this window)\n"
 msgstr "(S pritiskom na katerikoli znak, se okno zapre)\n"
 
-#: ../gio/gdbusaddress.c:1481
+#: ../gio/gdbusaddress.c:1499
 #, c-format
 msgid "Session dbus not running, and autolaunch failed"
 msgstr "Vodilo seje DBus ni zagnano, zato je samodejni zagon spodletel"
 
-#: ../gio/gdbusaddress.c:1492
+#: ../gio/gdbusaddress.c:1510
 #, c-format
 msgid "Cannot determine session bus address (not implemented for this OS)"
 msgstr "Ni mogoče določiti naslova vodila seje (ni podprto v tem OS)"
 
-#: ../gio/gdbusaddress.c:1627 ../gio/gdbusconnection.c:7128
-#, c-format
+#: ../gio/gdbusaddress.c:1648
+#, fuzzy, c-format
+#| msgid ""
+#| "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment "
+#| "variable - unknown value '%s'"
 msgid ""
 "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
-"- unknown value '%s'"
+"— unknown value “%s”"
 msgstr ""
 "Ni mogoče določiti naslova vodila iz okoljske spremenljivke "
 "DBUS_STARTER_BUS_TYPE - neznana vrednost '%s'"
 
-#: ../gio/gdbusaddress.c:1636 ../gio/gdbusconnection.c:7137
+#: ../gio/gdbusaddress.c:1657 ../gio/gdbusconnection.c:7155
 msgid ""
 "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
 "variable is not set"
@@ -528,7 +582,7 @@ msgstr ""
 "Ni mogoče določiti naslova vodila, kajti okoljska spremenljivka "
 "DBUS_STARTER_BUS_TYPE ni nastavljena"
 
-#: ../gio/gdbusaddress.c:1646
+#: ../gio/gdbusaddress.c:1667
 #, c-format
 msgid "Unknown bus type %d"
 msgstr "Neznana vrsta vodila %d"
@@ -549,207 +603,232 @@ msgstr ""
 "Izčrpani so vsi razpoložljivi overitveni mehanizmi (poskusi: %s) "
 "(razpoložljivih: %s)"
 
-#: ../gio/gdbusauth.c:1170
+#: ../gio/gdbusauth.c:1174
 msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
 msgstr "Prekinjeno s strani GDBusAuthObserver::authorize-authenticated-peer"
 
-#: ../gio/gdbusauthmechanismsha1.c:261
-#, c-format
-msgid "Error when getting information for directory '%s': %s"
+#: ../gio/gdbusauthmechanismsha1.c:262
+#, fuzzy, c-format
+#| msgid "Error when getting information for directory '%s': %s"
+msgid "Error when getting information for directory “%s”: %s"
 msgstr "Napaka med pridobivanjem mape '%s': %s"
 
-#: ../gio/gdbusauthmechanismsha1.c:273
-#, c-format
+#: ../gio/gdbusauthmechanismsha1.c:274
+#, fuzzy, c-format
+#| msgid ""
+#| "Permissions on directory '%s' are malformed. Expected mode 0700, got 0%o"
 msgid ""
-"Permissions on directory '%s' are malformed. Expected mode 0700, got 0%o"
+"Permissions on directory “%s” are malformed. Expected mode 0700, got 0%o"
 msgstr ""
 "Dovoljenja na mapi '%s' so nepravilna. Pričakovana 0700, dobljena pa 0%o"
 
-#: ../gio/gdbusauthmechanismsha1.c:294
-#, c-format
-msgid "Error creating directory '%s': %s"
-msgstr "Napaka med ustvarjanjem mape '%s': %s"
+#: ../gio/gdbusauthmechanismsha1.c:296
+#, fuzzy, c-format
+#| msgid "Error creating directory %s: %s"
+msgid "Error creating directory “%s”: %s"
+msgstr "Napaka med ustvarjanjem mape %s: %s"
 
-#: ../gio/gdbusauthmechanismsha1.c:377
-#, c-format
-msgid "Error opening keyring '%s' for reading: "
+#: ../gio/gdbusauthmechanismsha1.c:379
+#, fuzzy, c-format
+#| msgid "Error opening keyring '%s' for reading: "
+msgid "Error opening keyring “%s” for reading: "
 msgstr "Napaka med odpiranjem zbirke ključev '%s' za branje:"
 
-#: ../gio/gdbusauthmechanismsha1.c:401 ../gio/gdbusauthmechanismsha1.c:714
-#, c-format
-msgid "Line %d of the keyring at '%s' with content '%s' is malformed"
+#: ../gio/gdbusauthmechanismsha1.c:403 ../gio/gdbusauthmechanismsha1.c:721
+#, fuzzy, c-format
+#| msgid "Line %d of the keyring at '%s' with content '%s' is malformed"
+msgid "Line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr "Vrstica %d zbirke ključev '%s' z vsebino '%s' je neustrezno oblikovana"
 
-#: ../gio/gdbusauthmechanismsha1.c:415 ../gio/gdbusauthmechanismsha1.c:728
-#, c-format
+#: ../gio/gdbusauthmechanismsha1.c:417 ../gio/gdbusauthmechanismsha1.c:735
+#, fuzzy, c-format
+#| msgid ""
+#| "First token of line %d of the keyring at '%s' with content '%s' is "
+#| "malformed"
 msgid ""
-"First token of line %d of the keyring at '%s' with content '%s' is malformed"
+"First token of line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr ""
 "Prvi žeton vrstice %d zbirke ključev pri '%s' z vsebino '%s' je neustrezno "
 "oblikovan"
 
-#: ../gio/gdbusauthmechanismsha1.c:430 ../gio/gdbusauthmechanismsha1.c:742
-#, c-format
+#: ../gio/gdbusauthmechanismsha1.c:432 ../gio/gdbusauthmechanismsha1.c:749
+#, fuzzy, c-format
+#| msgid ""
+#| "Second token of line %d of the keyring at '%s' with content '%s' is "
+#| "malformed"
 msgid ""
-"Second token of line %d of the keyring at '%s' with content '%s' is malformed"
+"Second token of line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr ""
 "Drugi žeton vrstice %d zbirke ključev pri '%s' z vsebino '%s' je neustrezno "
 "oblikovana"
 
-#: ../gio/gdbusauthmechanismsha1.c:454
-#, c-format
-msgid "Didn't find cookie with id %d in the keyring at '%s'"
+#: ../gio/gdbusauthmechanismsha1.c:456
+#, fuzzy, c-format
+#| msgid "Didn't find cookie with id %d in the keyring at '%s'"
+msgid "Didn’t find cookie with id %d in the keyring at “%s”"
 msgstr "Piškota z id %d v zbirki ključev '%s' ni mogoče najti"
 
-#: ../gio/gdbusauthmechanismsha1.c:532
-#, c-format
-msgid "Error deleting stale lock file '%s': %s"
+#: ../gio/gdbusauthmechanismsha1.c:536
+#, fuzzy, c-format
+#| msgid "Error deleting stale lock file '%s': %s"
+msgid "Error deleting stale lock file “%s”: %s"
 msgstr "Napaka brisanja stare datoteke zaklepa '%s': %s"
 
-#: ../gio/gdbusauthmechanismsha1.c:564
-#, c-format
-msgid "Error creating lock file '%s': %s"
+#: ../gio/gdbusauthmechanismsha1.c:569
+#, fuzzy, c-format
+#| msgid "Error creating lock file '%s': %s"
+msgid "Error creating lock file “%s”: %s"
 msgstr "Napaka med ustvarjanjem datoteke '%s': %s"
 
-#: ../gio/gdbusauthmechanismsha1.c:594
-#, c-format
-msgid "Error closing (unlinked) lock file '%s': %s"
+#: ../gio/gdbusauthmechanismsha1.c:600
+#, fuzzy, c-format
+#| msgid "Error closing (unlinked) lock file '%s': %s"
+msgid "Error closing (unlinked) lock file “%s”: %s"
 msgstr "Napaka med zapiranjem (nepovezane) zaklepne datoteke '%s': %s"
 
-#: ../gio/gdbusauthmechanismsha1.c:604
-#, c-format
-msgid "Error unlinking lock file '%s': %s"
+#: ../gio/gdbusauthmechanismsha1.c:611
+#, fuzzy, c-format
+#| msgid "Error unlinking lock file '%s': %s"
+msgid "Error unlinking lock file “%s”: %s"
 msgstr "Napaka med razvezovanjem datoteke zaklepa '%s': %s"
 
-#: ../gio/gdbusauthmechanismsha1.c:681
-#, c-format
-msgid "Error opening keyring '%s' for writing: "
+#: ../gio/gdbusauthmechanismsha1.c:688
+#, fuzzy, c-format
+#| msgid "Error opening keyring '%s' for writing: "
+msgid "Error opening keyring “%s” for writing: "
 msgstr "Napaka med odpiranjem zbirke ključev '%s' za branje: "
 
-#: ../gio/gdbusauthmechanismsha1.c:878
-#, c-format
-msgid "(Additionally, releasing the lock for '%s' also failed: %s) "
+#: ../gio/gdbusauthmechanismsha1.c:885
+#, fuzzy, c-format
+#| msgid "(Additionally, releasing the lock for '%s' also failed: %s) "
+msgid "(Additionally, releasing the lock for “%s” also failed: %s) "
 msgstr "(V nadaljevanju je spodletelo tudi sproščanje zaklepa '%s': %s)"
 
-#: ../gio/gdbusconnection.c:612 ../gio/gdbusconnection.c:2373
+#: ../gio/gdbusconnection.c:612 ../gio/gdbusconnection.c:2378
 msgid "The connection is closed"
 msgstr "Povezava je zaprta"
 
-#: ../gio/gdbusconnection.c:1877
+#: ../gio/gdbusconnection.c:1879
 msgid "Timeout was reached"
 msgstr "Čas zakasnitve je potekel"
 
-#: ../gio/gdbusconnection.c:2495
+#: ../gio/gdbusconnection.c:2500
 msgid ""
 "Unsupported flags encountered when constructing a client-side connection"
 msgstr ""
 "Med izgrajevanjem povezave s strani odjemalca so bile odkrite nepodprte "
 "zastavice"
 
-#: ../gio/gdbusconnection.c:4105 ../gio/gdbusconnection.c:4452
+#: ../gio/gdbusconnection.c:4124 ../gio/gdbusconnection.c:4471
 #, c-format
 msgid ""
 "No such interface 'org.freedesktop.DBus.Properties' on object at path %s"
 msgstr ""
 "Vmesnik 'org.freedesktop.DBus.Properties' na predmetu na poti %s ne obstaja"
 
-#: ../gio/gdbusconnection.c:4247
+#: ../gio/gdbusconnection.c:4266
 #, c-format
 msgid "No such property '%s'"
 msgstr "Lastnost '%s' ne obstaja"
 
-#: ../gio/gdbusconnection.c:4259
+#: ../gio/gdbusconnection.c:4278
 #, c-format
 msgid "Property '%s' is not readable"
 msgstr "Lastnosti '%s' ni berljiva"
 
-#: ../gio/gdbusconnection.c:4270
+#: ../gio/gdbusconnection.c:4289
 #, c-format
 msgid "Property '%s' is not writable"
 msgstr "Lastnost '%s' ni zapisljiva"
 
-#: ../gio/gdbusconnection.c:4290
+#: ../gio/gdbusconnection.c:4309
 #, c-format
 msgid "Error setting property '%s': Expected type '%s' but got '%s'"
 msgstr ""
 "Napaka med nastavljanjem lastnosti '%s': pričakovana je vrsta '%s', dobljena "
 "pa '%s'"
 
-#: ../gio/gdbusconnection.c:4395 ../gio/gdbusconnection.c:6568
+#: ../gio/gdbusconnection.c:4414 ../gio/gdbusconnection.c:4622
+#: ../gio/gdbusconnection.c:6586
 #, c-format
 msgid "No such interface '%s'"
 msgstr "Vmesnik '%s' ne obstaja"
 
-#: ../gio/gdbusconnection.c:4603
-msgid "No such interface"
-msgstr "Vmesnik ne obstaja"
-
-#: ../gio/gdbusconnection.c:4821 ../gio/gdbusconnection.c:7077
+#: ../gio/gdbusconnection.c:4840 ../gio/gdbusconnection.c:7095
 #, c-format
 msgid "No such interface '%s' on object at path %s"
 msgstr "Vmesnik '%s' na predmetu na poti %s ne obstaja"
 
-#: ../gio/gdbusconnection.c:4919
+#: ../gio/gdbusconnection.c:4938
 #, c-format
 msgid "No such method '%s'"
 msgstr "Način '%s' ne obstaja"
 
-#: ../gio/gdbusconnection.c:4950
+#: ../gio/gdbusconnection.c:4969
 #, c-format
 msgid "Type of message, '%s', does not match expected type '%s'"
 msgstr "Vrsta sporočila '%s' se ne sklada s pričakovano vrsto '%s'"
 
-#: ../gio/gdbusconnection.c:5148
+#: ../gio/gdbusconnection.c:5167
 #, c-format
 msgid "An object is already exported for the interface %s at %s"
 msgstr "Za vmesnik %s pri %s je predmet že izvožen"
 
-#: ../gio/gdbusconnection.c:5374
+#: ../gio/gdbusconnection.c:5393
 #, c-format
 msgid "Unable to retrieve property %s.%s"
 msgstr "Ni mogoče pridobiti lastnosti %s.%s"
 
-#: ../gio/gdbusconnection.c:5430
+#: ../gio/gdbusconnection.c:5449
 #, c-format
 msgid "Unable to set property %s.%s"
 msgstr "Ni mogoče določiti lastnosti %s.%s"
 
-#: ../gio/gdbusconnection.c:5606
+#: ../gio/gdbusconnection.c:5625
 #, c-format
 msgid "Method '%s' returned type '%s', but expected '%s'"
 msgstr "Način '%s' je vrnil vrsto '%s', pričakovana pa je vrsta '%s'"
 
-#: ../gio/gdbusconnection.c:6679
+#: ../gio/gdbusconnection.c:6697
 #, c-format
 msgid "Method '%s' on interface '%s' with signature '%s' does not exist"
 msgstr "Način '%s' na vmesniku '%s' s podpisom '%s' ne obstaja"
 
-#: ../gio/gdbusconnection.c:6800
+#: ../gio/gdbusconnection.c:6818
 #, c-format
 msgid "A subtree is already exported for %s"
 msgstr "Podrejeno drevo je že izvoženo za %s"
 
-#: ../gio/gdbusmessage.c:1244
+#: ../gio/gdbusconnection.c:7146
+#, c-format
+msgid ""
+"Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
+"- unknown value '%s'"
+msgstr ""
+"Ni mogoče določiti naslova vodila iz okoljske spremenljivke "
+"DBUS_STARTER_BUS_TYPE - neznana vrednost '%s'"
+
+#: ../gio/gdbusmessage.c:1246
 msgid "type is INVALID"
 msgstr "vrsta je neveljavna"
 
-#: ../gio/gdbusmessage.c:1255
+#: ../gio/gdbusmessage.c:1257
 msgid "METHOD_CALL message: PATH or MEMBER header field is missing"
 msgstr "Sporočilo METHOD_CALL: manjka polje glave PATH ali MEMBER"
 
-#: ../gio/gdbusmessage.c:1266
+#: ../gio/gdbusmessage.c:1268
 msgid "METHOD_RETURN message: REPLY_SERIAL header field is missing"
 msgstr "Sporočilo METHOD_RETURN: manjka polje glave REPLY_SERIAL"
 
-#: ../gio/gdbusmessage.c:1278
+#: ../gio/gdbusmessage.c:1280
 msgid "ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing"
 msgstr "Sporočilo ERROR: manjka polje glave REPLY_SERIAL ali ERROR_NAME"
 
-#: ../gio/gdbusmessage.c:1291
+#: ../gio/gdbusmessage.c:1293
 msgid "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing"
 msgstr "Sporočilo SIGNAL: mankja polje glave PATH, INTERFACE ali MEMBER"
 
-#: ../gio/gdbusmessage.c:1299
+#: ../gio/gdbusmessage.c:1301
 msgid ""
 "SIGNAL message: The PATH header field is using the reserved value /org/"
 "freedesktop/DBus/Local"
@@ -757,7 +836,7 @@ msgstr ""
 "Sporočilo SIGNAL: polje glave PATH uporablja rezervirano vrednost /org/"
 "freedesktop/DBus/Local"
 
-#: ../gio/gdbusmessage.c:1307
+#: ../gio/gdbusmessage.c:1309
 msgid ""
 "SIGNAL message: The INTERFACE header field is using the reserved value org."
 "freedesktop.DBus.Local"
@@ -766,7 +845,7 @@ msgstr ""
 "freedesktop.DBus.Local"
 
 # Double multiple plural?
-#: ../gio/gdbusmessage.c:1355 ../gio/gdbusmessage.c:1415
+#: ../gio/gdbusmessage.c:1357 ../gio/gdbusmessage.c:1417
 #, c-format
 msgid "Wanted to read %lu byte but only got %lu"
 msgid_plural "Wanted to read %lu bytes but only got %lu"
@@ -775,31 +854,38 @@ msgstr[1] "Med poskusom branja %lu bajtov je bil prejet le %lu."
 msgstr[2] "Med poskusom branja %lu bajtov  sta bila prejeta le %lu."
 msgstr[3] "Med poskusom branja %lu bajtov so bili prejeti le %lu."
 
-#: ../gio/gdbusmessage.c:1369
-#, c-format
-msgid "Expected NUL byte after the string '%s' but found byte %d"
+#: ../gio/gdbusmessage.c:1371
+#, fuzzy, c-format
+#| msgid "Expected NUL byte after the string '%s' but found byte %d"
+msgid "Expected NUL byte after the string “%s” but found byte %d"
 msgstr "Po nizu '%s' je pričakovan bajt NUL, vendar je bil zaznan %d"
 
-#: ../gio/gdbusmessage.c:1388
-#, c-format
+#: ../gio/gdbusmessage.c:1390
+#, fuzzy, c-format
+#| msgid ""
+#| "Expected valid UTF-8 string but found invalid bytes at byte offset %d "
+#| "(length of string is %d). The valid UTF-8 string up until that point was "
+#| "'%s'"
 msgid ""
 "Expected valid UTF-8 string but found invalid bytes at byte offset %d "
-"(length of string is %d). The valid UTF-8 string up until that point was '%s'"
+"(length of string is %d). The valid UTF-8 string up until that point was “%s”"
 msgstr ""
 "Pričakovan veljaven UTF-8 niz, vendar je najdenih nepravilno število bajtov "
 "na bajtnem odmiku %d (dolžina niza %d). Do takrat veljaven UTF-8 niz je '%s'"
 
-#: ../gio/gdbusmessage.c:1587
-#, c-format
-msgid "Parsed value '%s' is not a valid D-Bus object path"
+#: ../gio/gdbusmessage.c:1589
+#, fuzzy, c-format
+#| msgid "Parsed value '%s' is not a valid D-Bus object path"
+msgid "Parsed value “%s” is not a valid D-Bus object path"
 msgstr "Razčlenjena vrednost '%s' ni veljavna pot predmeta vodila D-Bus"
 
-#: ../gio/gdbusmessage.c:1609
-#, c-format
-msgid "Parsed value '%s' is not a valid D-Bus signature"
+#: ../gio/gdbusmessage.c:1611
+#, fuzzy, c-format
+#| msgid "Parsed value '%s' is not a valid D-Bus signature"
+msgid "Parsed value “%s” is not a valid D-Bus signature"
 msgstr "Razčlenjena vrednost '%s' ni veljaven podpis vodila D-Bus"
 
-#: ../gio/gdbusmessage.c:1656
+#: ../gio/gdbusmessage.c:1658
 #, c-format
 msgid ""
 "Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB)."
@@ -818,56 +904,68 @@ msgstr[3] ""
 "Najdeno je polje dolžine %u bajtov, največja dovoljena pa je 2<<26 bajtov "
 "(64 MiB)."
 
-#: ../gio/gdbusmessage.c:1676
-#, c-format
+#: ../gio/gdbusmessage.c:1678
+#, fuzzy, c-format
+#| msgid ""
+#| "Encountered array of type 'a%c', expected to have a length a multiple of "
+#| "%u bytes, but found to be %u bytes in length"
 msgid ""
-"Encountered array of type 'a%c', expected to have a length a multiple of %u "
+"Encountered array of type “a%c”, expected to have a length a multiple of %u "
 "bytes, but found to be %u bytes in length"
 msgstr ""
 "Zaznano je polje vrste 'a%c', pričakovana pa je vrednost večkratnika %u "
 "bajtov, zaznanih pa je %u bajtov dolžine"
 
-#: ../gio/gdbusmessage.c:1843
-#, c-format
-msgid "Parsed value '%s' for variant is not a valid D-Bus signature"
+#: ../gio/gdbusmessage.c:1845
+#, fuzzy, c-format
+#| msgid "Parsed value '%s' for variant is not a valid D-Bus signature"
+msgid "Parsed value “%s” for variant is not a valid D-Bus signature"
 msgstr "Razčlenjena vrednost '%s' ni veljaven podpis vodila D-Bus"
 
-#: ../gio/gdbusmessage.c:1867
-#, c-format
+#: ../gio/gdbusmessage.c:1869
+#, fuzzy, c-format
+#| msgid ""
+#| "Error deserializing GVariant with type string '%s' from the D-Bus wire "
+#| "format"
 msgid ""
-"Error deserializing GVariant with type string '%s' from the D-Bus wire format"
+"Error deserializing GVariant with type string “%s” from the D-Bus wire format"
 msgstr ""
 "Napaka med ločevanjem GVariant iz zaporedja z vrsto niza '%s' iz D-Bus žične "
 "oblike "
 
-#: ../gio/gdbusmessage.c:2051
-#, c-format
+#: ../gio/gdbusmessage.c:2053
+#, fuzzy, c-format
+#| msgid ""
+#| "Invalid endianness value. Expected 0x6c ('l') or 0x42 ('B') but found "
+#| "value 0x%02x"
 msgid ""
-"Invalid endianness value. Expected 0x6c ('l') or 0x42 ('B') but found value "
+"Invalid endianness value. Expected 0x6c (“l”) or 0x42 (“B”) but found value "
 "0x%02x"
 msgstr ""
 "Neveljavna vrednost vrstnega reda zlogov. Pričakovana je vrednost 0x6c ('l') "
 "ali 0x42 ('B'), najdena pa je vrednost 0x%02x"
 
-#: ../gio/gdbusmessage.c:2064
+#: ../gio/gdbusmessage.c:2066
 #, c-format
 msgid "Invalid major protocol version. Expected 1 but found %d"
 msgstr ""
 "Neveljavna večja različica protokola. Pričakovana je 1, najdenih pa jih je "
 "več (%d)"
 
-#: ../gio/gdbusmessage.c:2120
-#, c-format
-msgid "Signature header with signature '%s' found but message body is empty"
+#: ../gio/gdbusmessage.c:2122
+#, fuzzy, c-format
+#| msgid "Signature header with signature '%s' found but message body is empty"
+msgid "Signature header with signature “%s” found but message body is empty"
 msgstr ""
 "Glava podpisa s podpisom '%s' je najdena, vendar je telo sporočila prazno"
 
-#: ../gio/gdbusmessage.c:2134
-#, c-format
-msgid "Parsed value '%s' is not a valid D-Bus signature (for body)"
+#: ../gio/gdbusmessage.c:2136
+#, fuzzy, c-format
+#| msgid "Parsed value '%s' is not a valid D-Bus signature (for body)"
+msgid "Parsed value “%s” is not a valid D-Bus signature (for body)"
 msgstr "Razčlenjena vrednost '%s' ni veljaven podpis vodila D-Bus (za telo)"
 
-#: ../gio/gdbusmessage.c:2164
+#: ../gio/gdbusmessage.c:2166
 #, c-format
 msgid "No signature header in message but the message body is %u byte"
 msgid_plural "No signature header in message but the message body is %u bytes"
@@ -880,76 +978,84 @@ msgstr[2] ""
 msgstr[3] ""
 "V sporočilu ni glave podpisa, vendar je telo sporočila dolgo %u bajte"
 
-#: ../gio/gdbusmessage.c:2174
+#: ../gio/gdbusmessage.c:2176
 msgid "Cannot deserialize message: "
 msgstr "Sporočila ni mogoče ločiti iz zaporedja:"
 
-#: ../gio/gdbusmessage.c:2515
-#, c-format
+#: ../gio/gdbusmessage.c:2517
+#, fuzzy, c-format
+#| msgid ""
+#| "Error serializing GVariant with type string '%s' to the D-Bus wire format"
 msgid ""
-"Error serializing GVariant with type string '%s' to the D-Bus wire format"
+"Error serializing GVariant with type string “%s” to the D-Bus wire format"
 msgstr ""
 "Napaka pri združevanju GVariant v zaporedje z vrsto niza '%s' v D-Bus žično "
 "obliko"
 
-#: ../gio/gdbusmessage.c:2652
+#: ../gio/gdbusmessage.c:2654
 #, c-format
 msgid ""
 "Message has %d file descriptors but the header field indicates %d file "
 "descriptors"
 msgstr "Sporočilo ima %d opisnikov datoteke, polje glave pa jih določa %d"
 
-#: ../gio/gdbusmessage.c:2660
+#: ../gio/gdbusmessage.c:2662
 msgid "Cannot serialize message: "
 msgstr "Sporočila ni bilo mogoče združiti v zaporedje:"
 
-#: ../gio/gdbusmessage.c:2704
-#, c-format
-msgid "Message body has signature '%s' but there is no signature header"
+#: ../gio/gdbusmessage.c:2706
+#, fuzzy, c-format
+#| msgid "Message body has signature '%s' but there is no signature header"
+msgid "Message body has signature “%s” but there is no signature header"
 msgstr "Telo sporočila ima podpis '%s', vendar v glavi ni podpisa"
 
-#: ../gio/gdbusmessage.c:2714
-#, c-format
+#: ../gio/gdbusmessage.c:2716
+#, fuzzy, c-format
+#| msgid ""
+#| "Message body has type signature '%s' but signature in the header field is "
+#| "'%s'"
 msgid ""
-"Message body has type signature '%s' but signature in the header field is "
-"'%s'"
+"Message body has type signature “%s” but signature in the header field is "
+"“%s”"
 msgstr ""
 "Telo sporočila ima podpis vrste '%s', vendar je podpis v polju glave '%s' "
 
-#: ../gio/gdbusmessage.c:2730
-#, c-format
-msgid "Message body is empty but signature in the header field is '(%s)'"
+#: ../gio/gdbusmessage.c:2732
+#, fuzzy, c-format
+#| msgid "Message body is empty but signature in the header field is '(%s)'"
+msgid "Message body is empty but signature in the header field is “(%s)”"
 msgstr "Telo sporočila je prazno, vendar je v polju glave podpis '(%s)'"
 
-#: ../gio/gdbusmessage.c:3283
-#, c-format
-msgid "Error return with body of type '%s'"
+#: ../gio/gdbusmessage.c:3285
+#, fuzzy, c-format
+#| msgid "Error return with body of type '%s'"
+msgid "Error return with body of type “%s”"
 msgstr "Napaka vrnjena s telesom vrste '%s'"
 
-#: ../gio/gdbusmessage.c:3291
+#: ../gio/gdbusmessage.c:3293
 msgid "Error return with empty body"
 msgstr "Napaka vrnjena s praznim telesom"
 
-#: ../gio/gdbusprivate.c:2036
+#: ../gio/gdbusprivate.c:2066
 #, c-format
 msgid "Unable to get Hardware profile: %s"
 msgstr "Ni mogoče pridobiti strojnega profila: %s"
 
-#: ../gio/gdbusprivate.c:2081
+#: ../gio/gdbusprivate.c:2111
 msgid "Unable to load /var/lib/dbus/machine-id or /etc/machine-id: "
 msgstr "Ni mogoče naložiti /var/lib/dbus/machine-id oziroma /etc/machine-id: "
 
-#: ../gio/gdbusproxy.c:1610
+#: ../gio/gdbusproxy.c:1611
 #, c-format
 msgid "Error calling StartServiceByName for %s: "
 msgstr "Napaka med klicanjem predmeta StartServiceByName za %s: "
 
-#: ../gio/gdbusproxy.c:1633
+#: ../gio/gdbusproxy.c:1634
 #, c-format
 msgid "Unexpected reply %d from StartServiceByName(\"%s\") method"
 msgstr "Nepričakovan odgovor %d iz načina StartServiceByName(\"%s\")"
 
-#: ../gio/gdbusproxy.c:2709 ../gio/gdbusproxy.c:2843
+#: ../gio/gdbusproxy.c:2719 ../gio/gdbusproxy.c:2853
 msgid ""
 "Cannot invoke method; proxy is for a well-known name without an owner and "
 "proxy was constructed with the G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START flag"
@@ -965,23 +1071,35 @@ msgstr "Abstraktni imenski prostor ni podprt"
 msgid "Cannot specify nonce file when creating a server"
 msgstr "Med ustvarjanjem strežnika ni mogoče določiti enkratne datoteke"
 
-#: ../gio/gdbusserver.c:873
-#, c-format
-msgid "Error writing nonce file at '%s': %s"
+#: ../gio/gdbusserver.c:876
+#, fuzzy, c-format
+#| msgid "Error writing nonce file at '%s': %s"
+msgid "Error writing nonce file at “%s”: %s"
 msgstr "Napaka med zapisovanjem enkratne datoteke na '%s': %s"
 
-#: ../gio/gdbusserver.c:1044
-#, c-format
-msgid "The string '%s' is not a valid D-Bus GUID"
+#: ../gio/gdbusserver.c:1047
+#, fuzzy, c-format
+#| msgid "The string '%s' is not a valid D-Bus GUID"
+msgid "The string “%s” is not a valid D-Bus GUID"
 msgstr "Niz '%s' ni veljaven D-Bus GUID"
 
-#: ../gio/gdbusserver.c:1084
-#, c-format
-msgid "Cannot listen on unsupported transport '%s'"
+#: ../gio/gdbusserver.c:1087
+#, fuzzy, c-format
+#| msgid "Cannot listen on unsupported transport '%s'"
+msgid "Cannot listen on unsupported transport “%s”"
 msgstr "Na nepodprtem načinu prenosa '%s' ni mogoče poslušati"
 
 #: ../gio/gdbus-tool.c:95
-#, c-format
+#, fuzzy, c-format
+#| msgid ""
+#| "Commands:\n"
+#| "  help         Shows this information\n"
+#| "  introspect   Introspect a remote object\n"
+#| "  monitor      Monitor a remote object\n"
+#| "  call         Invoke a method on a remote object\n"
+#| "  emit         Emit a signal\n"
+#| "\n"
+#| "Use \"%s COMMAND --help\" to get help on each command.\n"
 msgid ""
 "Commands:\n"
 "  help         Shows this information\n"
@@ -989,8 +1107,9 @@ msgid ""
 "  monitor      Monitor a remote object\n"
 "  call         Invoke a method on a remote object\n"
 "  emit         Emit a signal\n"
+"  wait         Wait for a bus name to appear\n"
 "\n"
-"Use \"%s COMMAND --help\" to get help on each command.\n"
+"Use “%s COMMAND --help” to get help on each command.\n"
 msgstr ""
 "Ukazi:\n"
 "  help         Prikaže te podrobnosti\n"
@@ -1001,280 +1120,344 @@ msgstr ""
 "\n"
 "Uporabite \"%s COMMAND --help\" za pomoč o posameznem ukazu.\n"
 
-#: ../gio/gdbus-tool.c:164 ../gio/gdbus-tool.c:226 ../gio/gdbus-tool.c:298
-#: ../gio/gdbus-tool.c:322 ../gio/gdbus-tool.c:711 ../gio/gdbus-tool.c:1043
-#: ../gio/gdbus-tool.c:1477
+#: ../gio/gdbus-tool.c:165 ../gio/gdbus-tool.c:227 ../gio/gdbus-tool.c:299
+#: ../gio/gdbus-tool.c:323 ../gio/gdbus-tool.c:725 ../gio/gdbus-tool.c:1068
+#: ../gio/gdbus-tool.c:1510
 #, c-format
 msgid "Error: %s\n"
 msgstr "Napaka: %s\n"
 
-#: ../gio/gdbus-tool.c:175 ../gio/gdbus-tool.c:239 ../gio/gdbus-tool.c:1493
+#: ../gio/gdbus-tool.c:176 ../gio/gdbus-tool.c:240 ../gio/gdbus-tool.c:1526
 #, c-format
 msgid "Error parsing introspection XML: %s\n"
 msgstr "Napaka med samopreverjanjem XML: %s\n"
 
-#: ../gio/gdbus-tool.c:208
+#: ../gio/gdbus-tool.c:209
 #, c-format
 msgid "Error: %s is not a valid name\n"
 msgstr "Napaka: %s ni veljavno ime\n"
 
-#: ../gio/gdbus-tool.c:356
+#: ../gio/gdbus-tool.c:357
 msgid "Connect to the system bus"
 msgstr "Poveži s sistemskim vodilom"
 
-#: ../gio/gdbus-tool.c:357
+#: ../gio/gdbus-tool.c:358
 msgid "Connect to the session bus"
 msgstr "Poveži z vodilom seje"
 
-#: ../gio/gdbus-tool.c:358
+#: ../gio/gdbus-tool.c:359
 msgid "Connect to given D-Bus address"
 msgstr "Poveži s podanim naslovom vodila D-Bus"
 
-#: ../gio/gdbus-tool.c:368
+#: ../gio/gdbus-tool.c:369
 msgid "Connection Endpoint Options:"
 msgstr "Možnosti končnih točk povezave:"
 
-#: ../gio/gdbus-tool.c:369
+#: ../gio/gdbus-tool.c:370
 msgid "Options specifying the connection endpoint"
 msgstr "Možnosti, ki določajo končne točke povezave"
 
-#: ../gio/gdbus-tool.c:391
+#: ../gio/gdbus-tool.c:392
 #, c-format
 msgid "No connection endpoint specified"
 msgstr "Ni določene končne točke povezave"
 
-#: ../gio/gdbus-tool.c:401
+#: ../gio/gdbus-tool.c:402
 #, c-format
 msgid "Multiple connection endpoints specified"
 msgstr "Določenih je več povezav končne točke"
 
-#: ../gio/gdbus-tool.c:471
-#, c-format
+#: ../gio/gdbus-tool.c:472
+#, fuzzy, c-format
+#| msgid ""
+#| "Warning: According to introspection data, interface '%s' does not exist\n"
 msgid ""
-"Warning: According to introspection data, interface '%s' does not exist\n"
+"Warning: According to introspection data, interface “%s” does not exist\n"
 msgstr "Opozorilo: na osnovi podatkov samopregleda, vmesnik '%s' ne obstaja\n"
 
-#: ../gio/gdbus-tool.c:480
-#, c-format
+#: ../gio/gdbus-tool.c:481
+#, fuzzy, c-format
+#| msgid ""
+#| "Warning: According to introspection data, method '%s' does not exist on "
+#| "interface '%s'\n"
 msgid ""
-"Warning: According to introspection data, method '%s' does not exist on "
-"interface '%s'\n"
+"Warning: According to introspection data, method “%s” does not exist on "
+"interface “%s”\n"
 msgstr ""
 "Opozorilo: na osnovi podatkov samopregleda, način '%s' ne obstaja na "
 "vmesniku '%s'\n"
 
-#: ../gio/gdbus-tool.c:542
+#: ../gio/gdbus-tool.c:543
 msgid "Optional destination for signal (unique name)"
 msgstr "Izbirni cilj za signal (enoznačno ime)"
 
-#: ../gio/gdbus-tool.c:543
+#: ../gio/gdbus-tool.c:544
 msgid "Object path to emit signal on"
 msgstr "Pot predmeta za oddajanje signala"
 
-#: ../gio/gdbus-tool.c:544
+#: ../gio/gdbus-tool.c:545
 msgid "Signal and interface name"
 msgstr "Ime signala in vmesnika"
 
-#: ../gio/gdbus-tool.c:576
+#: ../gio/gdbus-tool.c:579
 msgid "Emit a signal."
 msgstr "Oddaj signal."
 
-#: ../gio/gdbus-tool.c:610 ../gio/gdbus-tool.c:842 ../gio/gdbus-tool.c:1583
-#: ../gio/gdbus-tool.c:1818
+#: ../gio/gdbus-tool.c:613 ../gio/gdbus-tool.c:858 ../gio/gdbus-tool.c:1616
+#: ../gio/gdbus-tool.c:1851 ../gio/gdbus-tool.c:2067
 #, c-format
 msgid "Error connecting: %s\n"
 msgstr "Napaka med povezovanjem: %s\n"
 
-#: ../gio/gdbus-tool.c:622
+#: ../gio/gdbus-tool.c:625
 #, c-format
 msgid "Error: object path not specified.\n"
 msgstr "Napaka: pot predmeta ni določena.\n"
 
-#: ../gio/gdbus-tool.c:627 ../gio/gdbus-tool.c:909 ../gio/gdbus-tool.c:1648
-#: ../gio/gdbus-tool.c:1884
+#: ../gio/gdbus-tool.c:630 ../gio/gdbus-tool.c:925 ../gio/gdbus-tool.c:1681
+#: ../gio/gdbus-tool.c:1917
 #, c-format
 msgid "Error: %s is not a valid object path\n"
 msgstr "Napaka: %s ni veljavna pot predmeta\n"
 
-#: ../gio/gdbus-tool.c:633
+#: ../gio/gdbus-tool.c:636
 #, c-format
 msgid "Error: signal not specified.\n"
 msgstr "Napaka: signal ni določen\n"
 
-#: ../gio/gdbus-tool.c:640
+#: ../gio/gdbus-tool.c:643
 #, c-format
 msgid "Error: signal must be the fully-qualified name.\n"
 msgstr "Napaka: signal mora imeti polno kvalificirano ime.\n"
 
-#: ../gio/gdbus-tool.c:648
+#: ../gio/gdbus-tool.c:651
 #, c-format
 msgid "Error: %s is not a valid interface name\n"
 msgstr "Napaka: %s ni veljavno ime vmesnika.\n"
 
-#: ../gio/gdbus-tool.c:654
+#: ../gio/gdbus-tool.c:657
 #, c-format
 msgid "Error: %s is not a valid member name\n"
 msgstr "Napaka: %s ni veljavno ime predmeta.\n"
 
-#: ../gio/gdbus-tool.c:660
+#: ../gio/gdbus-tool.c:663
 #, c-format
 msgid "Error: %s is not a valid unique bus name.\n"
 msgstr "Napaka: %s ni veljavno enoznačno ime vodila.\n"
 
 #. Use the original non-"parse-me-harder" error
-#: ../gio/gdbus-tool.c:687 ../gio/gdbus-tool.c:1011
+#: ../gio/gdbus-tool.c:700 ../gio/gdbus-tool.c:1037
 #, c-format
 msgid "Error parsing parameter %d: %s\n"
 msgstr "Napaka med razčlenjevanjem parametra %d: %s\n"
 
-#: ../gio/gdbus-tool.c:718
+#: ../gio/gdbus-tool.c:732
 #, c-format
 msgid "Error flushing connection: %s\n"
 msgstr "Napaka med počiščenjem povezave: %s\n"
 
-#: ../gio/gdbus-tool.c:745
+#: ../gio/gdbus-tool.c:759
 msgid "Destination name to invoke method on"
 msgstr "Ime cilja za sklicanje načina"
 
-#: ../gio/gdbus-tool.c:746
+#: ../gio/gdbus-tool.c:760
 msgid "Object path to invoke method on"
 msgstr "Pot do predmeta za sklicanje načina"
 
-#: ../gio/gdbus-tool.c:747
+#: ../gio/gdbus-tool.c:761
 msgid "Method and interface name"
 msgstr "Ime načina in  vmesnika"
 
-#: ../gio/gdbus-tool.c:748
+#: ../gio/gdbus-tool.c:762
 msgid "Timeout in seconds"
 msgstr "Časovni zamik v sekundah"
 
-#: ../gio/gdbus-tool.c:787
+#: ../gio/gdbus-tool.c:803
 msgid "Invoke a method on a remote object."
 msgstr "Skliči način na oddaljenem predmetu."
 
-#: ../gio/gdbus-tool.c:862 ../gio/gdbus-tool.c:1602 ../gio/gdbus-tool.c:1837
+#: ../gio/gdbus-tool.c:878 ../gio/gdbus-tool.c:1635 ../gio/gdbus-tool.c:1870
 #, c-format
 msgid "Error: Destination is not specified\n"
 msgstr "Napaka: cilj ni določen\n"
 
-#: ../gio/gdbus-tool.c:874 ../gio/gdbus-tool.c:1619 ../gio/gdbus-tool.c:1849
+#: ../gio/gdbus-tool.c:890 ../gio/gdbus-tool.c:1652 ../gio/gdbus-tool.c:1882
 #, c-format
 msgid "Error: %s is not a valid bus name\n"
 msgstr "Napaka: %s ni veljavno ime vodila\n"
 
-#: ../gio/gdbus-tool.c:889 ../gio/gdbus-tool.c:1628
+#: ../gio/gdbus-tool.c:905 ../gio/gdbus-tool.c:1661
 #, c-format
 msgid "Error: Object path is not specified\n"
 msgstr "Napaka: pot predmeta ni določena\n"
 
-#: ../gio/gdbus-tool.c:924
+#: ../gio/gdbus-tool.c:940
 #, c-format
 msgid "Error: Method name is not specified\n"
 msgstr "Napaka: ime načina ni določeno\n"
 
-#: ../gio/gdbus-tool.c:935
-#, c-format
-msgid "Error: Method name '%s' is invalid\n"
+#: ../gio/gdbus-tool.c:951
+#, fuzzy, c-format
+#| msgid "Error: Method name '%s' is invalid\n"
+msgid "Error: Method name “%s” is invalid\n"
 msgstr "Napaka: ime načina '%s' ni veljavno\n"
 
-#: ../gio/gdbus-tool.c:1003
-#, c-format
-msgid "Error parsing parameter %d of type '%s': %s\n"
+#: ../gio/gdbus-tool.c:1029
+#, fuzzy, c-format
+#| msgid "Error parsing parameter %d of type '%s': %s\n"
+msgid "Error parsing parameter %d of type “%s”: %s\n"
 msgstr "Napaka med razčlenjevanjem parametra %d vrste '%s': %s\n"
 
-#: ../gio/gdbus-tool.c:1440
+#: ../gio/gdbus-tool.c:1473
 msgid "Destination name to introspect"
 msgstr "Samopreverjanje ciljnega imena"
 
-#: ../gio/gdbus-tool.c:1441
+#: ../gio/gdbus-tool.c:1474
 msgid "Object path to introspect"
 msgstr "Samopreverjanje poti predmeta"
 
-#: ../gio/gdbus-tool.c:1442
+#: ../gio/gdbus-tool.c:1475
 msgid "Print XML"
 msgstr "Natisni XML"
 
-#: ../gio/gdbus-tool.c:1443
+#: ../gio/gdbus-tool.c:1476
 msgid "Introspect children"
 msgstr "Samopreverjanje podrejenih predmetov"
 
-#: ../gio/gdbus-tool.c:1444
+#: ../gio/gdbus-tool.c:1477
 msgid "Only print properties"
 msgstr "Natisni le lastnosti"
 
-#: ../gio/gdbus-tool.c:1535
+#: ../gio/gdbus-tool.c:1568
 msgid "Introspect a remote object."
 msgstr "Samopreverjanje oddaljenega predmeta."
 
-#: ../gio/gdbus-tool.c:1740
+#: ../gio/gdbus-tool.c:1773
 msgid "Destination name to monitor"
 msgstr "Nadzor ciljnega imena"
 
-#: ../gio/gdbus-tool.c:1741
+#: ../gio/gdbus-tool.c:1774
 msgid "Object path to monitor"
 msgstr "Nadzor poti predmeta"
 
-#: ../gio/gdbus-tool.c:1770
+#: ../gio/gdbus-tool.c:1803
 msgid "Monitor a remote object."
 msgstr "Nadzoruj oddaljeni predmet."
 
-#: ../gio/gdesktopappinfo.c:1993 ../gio/gdesktopappinfo.c:4502
+#: ../gio/gdbus-tool.c:1980
+msgid "Service to activate before waiting for the other one (well-known name)"
+msgstr ""
+
+#: ../gio/gdbus-tool.c:1983
+msgid ""
+"Timeout to wait for before exiting with an error (seconds); 0 for no timeout "
+"(default)"
+msgstr ""
+
+#: ../gio/gdbus-tool.c:2031
+msgid "[OPTION…] BUS-NAME"
+msgstr "[MOŽNOST …] IME-VODILA"
+
+#: ../gio/gdbus-tool.c:2033
+msgid "Wait for a bus name to appear."
+msgstr ""
+
+#: ../gio/gdbus-tool.c:2109
+#, fuzzy, c-format
+#| msgid "Error: object path not specified.\n"
+msgid "Error: A service to activate for must be specified.\n"
+msgstr "Napaka: pot predmeta ni določena.\n"
+
+#: ../gio/gdbus-tool.c:2114
+#, fuzzy, c-format
+#| msgid "Error: object path not specified.\n"
+msgid "Error: A service to wait for must be specified.\n"
+msgstr "Napaka: pot predmeta ni določena.\n"
+
+#: ../gio/gdbus-tool.c:2119
+#, fuzzy, c-format
+#| msgid "Too many arguments"
+msgid "Error: Too many arguments.\n"
+msgstr "Navedenih je preveč argumentov"
+
+#: ../gio/gdbus-tool.c:2127 ../gio/gdbus-tool.c:2134
+#, fuzzy, c-format
+#| msgid "Error: %s is not a valid bus name\n"
+msgid "Error: %s is not a valid well-known bus name.\n"
+msgstr "Napaka: %s ni veljavno ime vodila\n"
+
+#: ../gio/gdesktopappinfo.c:2001 ../gio/gdesktopappinfo.c:4533
 msgid "Unnamed"
 msgstr "Neimenovano"
 
-#: ../gio/gdesktopappinfo.c:2402
-msgid "Desktop file didn't specify Exec field"
+#: ../gio/gdesktopappinfo.c:2411
+#, fuzzy
+#| msgid "Desktop file didn't specify Exec field"
+msgid "Desktop file didn’t specify Exec field"
 msgstr "Namizna datoteka ne vsebuje določenega polja Exec"
 
-#: ../gio/gdesktopappinfo.c:2687
+#: ../gio/gdesktopappinfo.c:2696
 msgid "Unable to find terminal required for application"
 msgstr "Ni mogoče najti terminala, ki ga zahteva program"
 
-#: ../gio/gdesktopappinfo.c:3099
-#, c-format
-msgid "Can't create user application configuration folder %s: %s"
+#: ../gio/gdesktopappinfo.c:3129
+#, fuzzy, c-format
+#| msgid "Can't create user application configuration folder %s: %s"
+msgid "Can’t create user application configuration folder %s: %s"
 msgstr "Ni mogoče ustvariti nastavitvene mape uporabnikovega programa %s: %s"
 
-#: ../gio/gdesktopappinfo.c:3103
-#, c-format
-msgid "Can't create user MIME configuration folder %s: %s"
+#: ../gio/gdesktopappinfo.c:3133
+#, fuzzy, c-format
+#| msgid "Can't create user MIME configuration folder %s: %s"
+msgid "Can’t create user MIME configuration folder %s: %s"
 msgstr "Ni mogoče ustvariti uporabnikove nastavitvene MIME mape %s: %s"
 
-#: ../gio/gdesktopappinfo.c:3343 ../gio/gdesktopappinfo.c:3367
+#: ../gio/gdesktopappinfo.c:3373 ../gio/gdesktopappinfo.c:3397
 msgid "Application information lacks an identifier"
 msgstr "Podatki programa so brez določila"
 
-#: ../gio/gdesktopappinfo.c:3600
-#, c-format
-msgid "Can't create user desktop file %s"
+#: ../gio/gdesktopappinfo.c:3631
+#, fuzzy, c-format
+#| msgid "Can't create user desktop file %s"
+msgid "Can’t create user desktop file %s"
 msgstr "Ni mogoče ustvariti uporabnikove datoteke namizja %s"
 
-#: ../gio/gdesktopappinfo.c:3734
+#: ../gio/gdesktopappinfo.c:3765
 #, c-format
 msgid "Custom definition for %s"
 msgstr "Določilo po meri za %s"
 
-#: ../gio/gdrive.c:392
-msgid "drive doesn't implement eject"
+#: ../gio/gdrive.c:417
+#, fuzzy
+#| msgid "drive doesn't implement eject"
+msgid "drive doesn’t implement eject"
 msgstr "pogona ni mogoče izvreči"
 
 #. Translators: This is an error
 #. * message for drive objects that
 #. * don't implement any of eject or eject_with_operation.
-#: ../gio/gdrive.c:470
-msgid "drive doesn't implement eject or eject_with_operation"
+#: ../gio/gdrive.c:495
+#, fuzzy
+#| msgid "drive doesn't implement eject or eject_with_operation"
+msgid "drive doesn’t implement eject or eject_with_operation"
 msgstr "pogon ne vključuje ukaza izvrzi ali izvrzi_z_dejanjem"
 
-#: ../gio/gdrive.c:546
-msgid "drive doesn't implement polling for media"
+#: ../gio/gdrive.c:571
+#, fuzzy
+#| msgid "drive doesn't implement polling for media"
+msgid "drive doesn’t implement polling for media"
 msgstr "pogon ne podpira preverjanja enote"
 
-#: ../gio/gdrive.c:751
-msgid "drive doesn't implement start"
+#: ../gio/gdrive.c:776
+#, fuzzy
+#| msgid "drive doesn't implement start"
+msgid "drive doesn’t implement start"
 msgstr "pogon ne vključuje možnosti zagona"
 
-#: ../gio/gdrive.c:853
-msgid "drive doesn't implement stop"
+#: ../gio/gdrive.c:878
+#, fuzzy
+#| msgid "drive doesn't implement stop"
+msgid "drive doesn’t implement stop"
 msgstr "pogon ne vključuje možnosti zaustavitve"
 
 #: ../gio/gdummytlsbackend.c:195 ../gio/gdummytlsbackend.c:317
@@ -1287,8 +1470,9 @@ msgid "DTLS support is not available"
 msgstr "Podpora za DTLS ni na voljo"
 
 #: ../gio/gemblem.c:323
-#, c-format
-msgid "Can't handle version %d of GEmblem encoding"
+#, fuzzy, c-format
+#| msgid "Can't handle version %d of GEmblem encoding"
+msgid "Can’t handle version %d of GEmblem encoding"
 msgstr "Ni mogoče upravljati z različico %d kodiranja GEmblem"
 
 #: ../gio/gemblem.c:333
@@ -1297,8 +1481,9 @@ msgid "Malformed number of tokens (%d) in GEmblem encoding"
 msgstr "Nepravilno oblikovana znakov (%d) v kodiranju GEmblem"
 
 #: ../gio/gemblemedicon.c:362
-#, c-format
-msgid "Can't handle version %d of GEmblemedIcon encoding"
+#, fuzzy, c-format
+#| msgid "Can't handle version %d of GEmblemedIcon encoding"
+msgid "Can’t handle version %d of GEmblemedIcon encoding"
 msgstr "Ni mogoče upravljati z različico %d kodiranja GEmblemedIcon"
 
 #: ../gio/gemblemedicon.c:372
@@ -1313,11 +1498,11 @@ msgstr "Pričakovan GEmblem za GEmblemedIcon"
 #: ../gio/gfile.c:969 ../gio/gfile.c:1207 ../gio/gfile.c:1345
 #: ../gio/gfile.c:1583 ../gio/gfile.c:1638 ../gio/gfile.c:1696
 #: ../gio/gfile.c:1780 ../gio/gfile.c:1837 ../gio/gfile.c:1901
-#: ../gio/gfile.c:1956 ../gio/gfile.c:3604 ../gio/gfile.c:3659
-#: ../gio/gfile.c:3894 ../gio/gfile.c:3936 ../gio/gfile.c:4404
-#: ../gio/gfile.c:4815 ../gio/gfile.c:4900 ../gio/gfile.c:4990
-#: ../gio/gfile.c:5087 ../gio/gfile.c:5174 ../gio/gfile.c:5275
-#: ../gio/gfile.c:7796 ../gio/gfile.c:7886 ../gio/gfile.c:7970
+#: ../gio/gfile.c:1956 ../gio/gfile.c:3614 ../gio/gfile.c:3669
+#: ../gio/gfile.c:3905 ../gio/gfile.c:3947 ../gio/gfile.c:4415
+#: ../gio/gfile.c:4826 ../gio/gfile.c:4911 ../gio/gfile.c:5001
+#: ../gio/gfile.c:5098 ../gio/gfile.c:5185 ../gio/gfile.c:5286
+#: ../gio/gfile.c:7827 ../gio/gfile.c:7917 ../gio/gfile.c:8001
 #: ../gio/win32/gwinhttpfile.c:437
 msgid "Operation not supported"
 msgstr "Opravilo ni podprto"
@@ -1326,77 +1511,83 @@ msgstr "Opravilo ni podprto"
 #. * trying to find the enclosing (user visible)
 #. * mount of a file, but none exists.
 #.
-#. Translators: This is an error message when trying to
-#. * find the enclosing (user visible) mount of a file, but
-#. * none exists.
-#. Translators: This is an error message when trying to find
-#. * the enclosing (user visible) mount of a file, but none
-#. * exists.
-#: ../gio/gfile.c:1468 ../gio/glocalfile.c:1134 ../gio/glocalfile.c:1145
-#: ../gio/glocalfile.c:1158
+#: ../gio/gfile.c:1468
 msgid "Containing mount does not exist"
 msgstr "Obstoječa enota ne obstaja"
 
-#: ../gio/gfile.c:2515 ../gio/glocalfile.c:2376
-msgid "Can't copy over directory"
+#: ../gio/gfile.c:2515 ../gio/glocalfile.c:2377
+#, fuzzy
+#| msgid "Can't copy over directory"
+msgid "Can’t copy over directory"
 msgstr "Ni mogoče kopirati preko mape"
 
 #: ../gio/gfile.c:2575
-msgid "Can't copy directory over directory"
+#, fuzzy
+#| msgid "Can't copy directory over directory"
+msgid "Can’t copy directory over directory"
 msgstr "Ni mogoče kopirati mape preko mape"
 
-#: ../gio/gfile.c:2583 ../gio/glocalfile.c:2385
+#: ../gio/gfile.c:2583
 msgid "Target file exists"
 msgstr "Ciljna datoteka obstaja"
 
 #: ../gio/gfile.c:2602
-msgid "Can't recursively copy directory"
+#, fuzzy
+#| msgid "Can't recursively copy directory"
+msgid "Can’t recursively copy directory"
 msgstr "Ni mogoče kopirati drevesne zgradbe map"
 
-#: ../gio/gfile.c:2884
+#: ../gio/gfile.c:2889
 msgid "Splice not supported"
 msgstr "Splice ni podprt"
 
-#: ../gio/gfile.c:2888
+#: ../gio/gfile.c:2893
 #, c-format
 msgid "Error splicing file: %s"
 msgstr "Napaka med prepletanjem datoteke: %s"
 
-#: ../gio/gfile.c:3019
+#: ../gio/gfile.c:3025
 msgid "Copy (reflink/clone) between mounts is not supported"
 msgstr ""
 "Kopiranje (sklic povezave/kloniranje) med različnimi priklopi ni podprto"
 
-#: ../gio/gfile.c:3023
+#: ../gio/gfile.c:3029
 msgid "Copy (reflink/clone) is not supported or invalid"
 msgstr "Kopiranje (sklic povezave/kloniranje) ni podprto ali pa ni veljavno"
 
-#: ../gio/gfile.c:3028
-msgid "Copy (reflink/clone) is not supported or didn't work"
+#: ../gio/gfile.c:3034
+#, fuzzy
+#| msgid "Copy (reflink/clone) is not supported or didn't work"
+msgid "Copy (reflink/clone) is not supported or didn’t work"
 msgstr "Kopiranje (sklic povezave/kloniranje) ni podprto ali pa ni delovalo"
 
-#: ../gio/gfile.c:3091
-msgid "Can't copy special file"
+#: ../gio/gfile.c:3097
+#, fuzzy
+#| msgid "Can't copy special file"
+msgid "Can’t copy special file"
 msgstr "Ni mogoče kopirati posebne datoteke"
 
-#: ../gio/gfile.c:3884
+#: ../gio/gfile.c:3895
 msgid "Invalid symlink value given"
 msgstr "Neveljavna vrednost simbolne povezave"
 
-#: ../gio/gfile.c:4045
+#: ../gio/gfile.c:4056
 msgid "Trash not supported"
 msgstr "Smeti niso podprte"
 
-#: ../gio/gfile.c:4157
-#, c-format
-msgid "File names cannot contain '%c'"
+#: ../gio/gfile.c:4168
+#, fuzzy, c-format
+#| msgid "File names cannot contain '%c'"
+msgid "File names cannot contain “%c”"
 msgstr "Ni mogoče uporabiti '%c' v imenu datoteke"
 
-#: ../gio/gfile.c:6586 ../gio/gvolume.c:363
-msgid "volume doesn't implement mount"
+#: ../gio/gfile.c:6614 ../gio/gvolume.c:363
+#, fuzzy
+#| msgid "volume doesn't implement mount"
+msgid "volume doesn’t implement mount"
 msgstr "enota ne podpira priklopa"
 
-#: ../gio/gfile.c:6695
+#: ../gio/gfile.c:6723
 msgid "No application is registered as handling this file"
 msgstr "Na voljo ni programa z a upravljanje s to datoteko"
 
@@ -1414,8 +1605,9 @@ msgid "File enumerator is already closed"
 msgstr "Številčnik datotek je že zaprt"
 
 #: ../gio/gfileicon.c:236
-#, c-format
-msgid "Can't handle version %d of GFileIcon encoding"
+#, fuzzy, c-format
+#| msgid "Can't handle version %d of GFileIcon encoding"
+msgid "Can’t handle version %d of GFileIcon encoding"
 msgstr "Ni mogoče upravljati z različico %d kodiranja GFileIcon "
 
 #: ../gio/gfileicon.c:246
@@ -1425,7 +1617,9 @@ msgstr "Nepravilno oblikovani podatki za GFileIcon"
 #: ../gio/gfileinputstream.c:149 ../gio/gfileinputstream.c:394
 #: ../gio/gfileiostream.c:167 ../gio/gfileoutputstream.c:164
 #: ../gio/gfileoutputstream.c:497
-msgid "Stream doesn't support query_info"
+#, fuzzy
+#| msgid "Stream doesn't support query_info"
+msgid "Stream doesn’t support query_info"
 msgstr "Pretok ne podpira query_info"
 
 #: ../gio/gfileinputstream.c:325 ../gio/gfileiostream.c:379
@@ -1441,28 +1635,33 @@ msgstr "Razčlenitev ni dovoljena na dovodnem pretoku"
 msgid "Truncate not supported on stream"
 msgstr "Razčlenitev ni podprta na pretoku"
 
-#: ../gio/ghttpproxy.c:136
+#: ../gio/ghttpproxy.c:91 ../gio/gresolver.c:410 ../gio/gresolver.c:476
+#: ../glib/gconvert.c:1650
+msgid "Invalid hostname"
+msgstr "Neveljavno ime gostitelja"
+
+#: ../gio/ghttpproxy.c:143
 msgid "Bad HTTP proxy reply"
 msgstr "Neustrezen odziv posredniškega strežnika HTTP"
 
-#: ../gio/ghttpproxy.c:152
+#: ../gio/ghttpproxy.c:159
 msgid "HTTP proxy connection not allowed"
 msgstr "Overitev s posredniškim strežnikom HTTP ni dovoljena"
 
-#: ../gio/ghttpproxy.c:157
+#: ../gio/ghttpproxy.c:164
 msgid "HTTP proxy authentication failed"
 msgstr "Overitev s posredniškim strežnikom HTTP je spodletala"
 
-#: ../gio/ghttpproxy.c:160
+#: ../gio/ghttpproxy.c:167
 msgid "HTTP proxy authentication required"
 msgstr "Zahtevana je overitev s posredniškim strežnikom HTTP"
 
-#: ../gio/ghttpproxy.c:164
+#: ../gio/ghttpproxy.c:171
 #, c-format
 msgid "HTTP proxy connection failed: %i"
 msgstr "Povezava s posredniškim strežnikom HTTP je spodletela: %i"
 
-#: ../gio/ghttpproxy.c:260
+#: ../gio/ghttpproxy.c:269
 msgid "HTTP proxy server closed connection unexpectedly."
 msgstr "Povezava s posredniškim strežnikom HTTP je nepričakovano končana."
 
@@ -1497,7 +1696,9 @@ msgid "Type %s does not implement from_tokens() on the GIcon interface"
 msgstr "Vrsta %s ne vstavlja from_tokens() vmesnika GIcon"
 
 #: ../gio/gicon.c:461
-msgid "Can't handle the supplied version of the icon encoding"
+#, fuzzy
+#| msgid "Can't handle the supplied version of the icon encoding"
+msgid "Can’t handle the supplied version of the icon encoding"
 msgstr "Ni mogoče ravnati z navedeno različico kodiranja ikone"
 
 #: ../gio/ginetaddressmask.c:182
@@ -1514,12 +1715,13 @@ msgid "Address has bits set beyond prefix length"
 msgstr "Naslov ima določene bite prek dolžine predpone"
 
 #: ../gio/ginetaddressmask.c:300
-#, c-format
-msgid "Could not parse '%s' as IP address mask"
+#, fuzzy, c-format
+#| msgid "Could not parse '%s' as IP address mask"
+msgid "Could not parse “%s” as IP address mask"
 msgstr "Ni mogoče razčleniti '%s' kot maske naslova IP"
 
 #: ../gio/ginetsocketaddress.c:203 ../gio/ginetsocketaddress.c:220
-#: ../gio/gnativesocketaddress.c:106 ../gio/gunixsocketaddress.c:216
+#: ../gio/gnativesocketaddress.c:106 ../gio/gunixsocketaddress.c:218
 msgid "Not enough space for socket address"
 msgstr "Ni dovolj prostora za naslov vtiča"
 
@@ -1528,7 +1730,9 @@ msgid "Unsupported socket address"
 msgstr "Nepodprti naslov vtiča"
 
 #: ../gio/ginputstream.c:188
-msgid "Input stream doesn't implement read"
+#, fuzzy
+#| msgid "Input stream doesn't implement read"
+msgid "Input stream doesn’t implement read"
 msgstr "Vhodni pretok ne podpira branja"
 
 #. Translators: This is an error you get if there is already an
@@ -1537,12 +1741,701 @@ msgstr "Vhodni pretok ne podpira branja"
 #. Translators: This is an error you get if there is
 #. * already an operation running against this stream when
 #. * you try to start one
-#: ../gio/ginputstream.c:1215 ../gio/giostream.c:310
-#: ../gio/goutputstream.c:1668
+#: ../gio/ginputstream.c:1218 ../gio/giostream.c:310
+#: ../gio/goutputstream.c:1670
 msgid "Stream has outstanding operation"
 msgstr "Pretok izvaja izredno dejanje"
 
-#: ../gio/glib-compile-resources.c:142 ../gio/glib-compile-schemas.c:1491
+#: ../gio/gio-tool.c:160
+msgid "Copy with file"
+msgstr "Kopiraj z datoteko"
+
+#: ../gio/gio-tool.c:164
+msgid "Keep with file when moved"
+msgstr "Ohrani z datoteko ob premikanju"
+
+#: ../gio/gio-tool.c:205
+#, fuzzy
+#| msgid "'version' takes no arguments"
+msgid "“version” takes no arguments"
+msgstr "»različica« ne prevzema argumentov"
+
+#: ../gio/gio-tool.c:207 ../gio/gio-tool.c:223 ../glib/goption.c:857
+msgid "Usage:"
+msgstr "Uporaba:"
+
+#: ../gio/gio-tool.c:210
+msgid "Print version information and exit."
+msgstr "Izpiši podatke o različici in končaj."
+
+#: ../gio/gio-tool.c:224
+msgid "[ARGS...]"
+msgstr "[ARGUMENTI ...]"
+
+#: ../gio/gio-tool.c:226
+msgid "Commands:"
+msgstr "Ukazi:"
+
+#: ../gio/gio-tool.c:229
+msgid "Concatenate files to standard output"
+msgstr "Spoji datoteke in jih izpiši na standardni izhod"
+
+#: ../gio/gio-tool.c:230
+msgid "Copy one or more files"
+msgstr "Kopiraj eno ali več datotek"
+
+#: ../gio/gio-tool.c:231
+msgid "Show information about locations"
+msgstr "Pokaži podatke o mestih"
+
+#: ../gio/gio-tool.c:232
+msgid "List the contents of locations"
+msgstr "Izpiši seznam vsebine mest"
+
+#: ../gio/gio-tool.c:233
+msgid "Get or set the handler for a mimetype"
+msgstr "Pridobi ali določi ročnik za vrsto MIME"
+
+#: ../gio/gio-tool.c:234
+msgid "Create directories"
+msgstr "Ustvarite mape"
+
+#: ../gio/gio-tool.c:235
+msgid "Monitor files and directories for changes"
+msgstr "Spremljaj spremembe datotek in map"
+
+#: ../gio/gio-tool.c:236
+msgid "Mount or unmount the locations"
+msgstr "Priklop oziroma odklop mest"
+
+#: ../gio/gio-tool.c:237
+msgid "Move one or more files"
+msgstr "Premakni eno ali več datotek"
+
+#: ../gio/gio-tool.c:238
+msgid "Open files with the default application"
+msgstr "Odpri datoteke s privzetim programom"
+
+#: ../gio/gio-tool.c:239
+msgid "Rename a file"
+msgstr "Preimenuj datoteko"
+
+#: ../gio/gio-tool.c:240
+msgid "Delete one or more files"
+msgstr "Izbriši eno ali več datotek"
+
+#: ../gio/gio-tool.c:241
+msgid "Read from standard input and save"
+msgstr "Preberi prek standardnega vhoda in shrani"
+
+#: ../gio/gio-tool.c:242
+msgid "Set a file attribute"
+msgstr "Določi atribut datoteke"
+
+#: ../gio/gio-tool.c:243
+msgid "Move files or directories to the trash"
+msgstr "Premakni datoteke in mape v smeti"
+
+#: ../gio/gio-tool.c:244
+msgid "Lists the contents of locations in a tree"
+msgstr "Izpiši vsebino v drevesni obliki"
+
+#: ../gio/gio-tool.c:246
+#, c-format
+msgid "Use %s to get detailed help.\n"
+msgstr "Z ukazom %s se izpiše podrobna pomoč.\n"
+
+#: ../gio/gio-tool-cat.c:83
+#, fuzzy
+#| msgid "Error writing to file: %s"
+msgid "Error writing to stdout"
+msgstr "Napaka med pisanjem v datoteko: %s"
+
+#. Translators: commandline placeholder
+#: ../gio/gio-tool-cat.c:127 ../gio/gio-tool-info.c:282
+#: ../gio/gio-tool-list.c:165 ../gio/gio-tool-mkdir.c:48
+#: ../gio/gio-tool-monitor.c:37 ../gio/gio-tool-monitor.c:39
+#: ../gio/gio-tool-monitor.c:41 ../gio/gio-tool-monitor.c:43
+#: ../gio/gio-tool-monitor.c:203 ../gio/gio-tool-mount.c:1141
+#: ../gio/gio-tool-open.c:45 ../gio/gio-tool-remove.c:48
+#: ../gio/gio-tool-rename.c:45 ../gio/gio-tool-set.c:89
+#: ../gio/gio-tool-trash.c:81 ../gio/gio-tool-tree.c:239
+msgid "LOCATION"
+msgstr "MESTO"
+
+#: ../gio/gio-tool-cat.c:132
+msgid "Concatenate files and print to standard output."
+msgstr "Spoji datoteke in jih izpiši na standardni izhod."
+
+#: ../gio/gio-tool-cat.c:134
+msgid ""
+"gio cat works just like the traditional cat utility, but using GIO\n"
+"locations instead of local files: for example, you can use something\n"
+"like smb://server/resource/file.txt as location."
+msgstr ""
+"Program gio cat deluje enako kot ukaz cat z razliko, da uporablja\n"
+"oddaljen GIO namesto krajevnih poti do datotek. Primer: kot pot je\n"
+"mogoče uporabiti smb://strežnik/vir/datoteka.txt."
+
+#: ../gio/gio-tool-cat.c:156 ../gio/gio-tool-info.c:313
+#: ../gio/gio-tool-mkdir.c:76 ../gio/gio-tool-monitor.c:228
+#: ../gio/gio-tool-open.c:71 ../gio/gio-tool-remove.c:72
+msgid "No locations given"
+msgstr "Ni podanih mest"
+
+#: ../gio/gio-tool-copy.c:42 ../gio/gio-tool-move.c:38
+msgid "No target directory"
+msgstr "Ni ciljne mape"
+
+#: ../gio/gio-tool-copy.c:43 ../gio/gio-tool-move.c:39
+msgid "Show progress"
+msgstr "Pokaži napredek"
+
+#: ../gio/gio-tool-copy.c:44 ../gio/gio-tool-move.c:40
+msgid "Prompt before overwrite"
+msgstr "Opozori pred prepisovanjem"
+
+#: ../gio/gio-tool-copy.c:45
+msgid "Preserve all attributes"
+msgstr "Ohrani vse atribute"
+
+#: ../gio/gio-tool-copy.c:46 ../gio/gio-tool-move.c:41
+#: ../gio/gio-tool-save.c:49
+msgid "Backup existing destination files"
+msgstr "Varnostno kopiraj obstoječe ciljne datoteke"
+
+#: ../gio/gio-tool-copy.c:47
+msgid "Never follow symbolic links"
+msgstr "Nikoli ne sledi simbolnim povezavam"
+
+#: ../gio/gio-tool-copy.c:72 ../gio/gio-tool-move.c:67
+#, c-format
+msgid "Transferred %s out of %s (%s/s)"
+msgstr "Preneseno %s od %s (%s/s)"
+
+#. Translators: commandline placeholder
+#: ../gio/gio-tool-copy.c:98 ../gio/gio-tool-move.c:94
+msgid "SOURCE"
+msgstr "VIR"
+
+#. Translators: commandline placeholder
+#: ../gio/gio-tool-copy.c:98 ../gio/gio-tool-move.c:94
+#: ../gio/gio-tool-save.c:165
+msgid "DESTINATION"
+msgstr "CILJ"
+
+#: ../gio/gio-tool-copy.c:103
+msgid "Copy one or more files from SOURCE to DESTINATION."
+msgstr "Kopiraj eno ali več datotek iz VIRA na CILJ."
+
+#: ../gio/gio-tool-copy.c:105
+msgid ""
+"gio copy is similar to the traditional cp utility, but using GIO\n"
+"locations instead of local files: for example, you can use something\n"
+"like smb://server/resource/file.txt as location."
+msgstr ""
+"Program gio copy deluje enako kot ukaz cp z razliko, da uporablja\n"
+"oddaljen GIO namesto krajevnih poti do datotek. Primer: kot pot je\n"
+"mogoče uporabiti smb://strežnik/vir/datoteka.txt."
+
+#: ../gio/gio-tool-copy.c:147
+#, c-format
+msgid "Destination %s is not a directory"
+msgstr "CIljni predmet %s ni mapa"
+
+#: ../gio/gio-tool-copy.c:192 ../gio/gio-tool-move.c:185
+#, fuzzy, c-format
+#| msgid "%s: overwrite '%s'? "
+msgid "%s: overwrite “%s”? "
+msgstr "%s: Ali želite prepisati ‘%s’? "
+
+#: ../gio/gio-tool-info.c:34
+msgid "List writable attributes"
+msgstr "Izpiši zapisljive atribute"
+
+#: ../gio/gio-tool-info.c:35
+msgid "Get file system info"
+msgstr "Pridobi podrobnosti datotečnega sistema"
+
+#: ../gio/gio-tool-info.c:36 ../gio/gio-tool-list.c:35
+msgid "The attributes to get"
+msgstr "Zahtevani atributi"
+
+#: ../gio/gio-tool-info.c:36 ../gio/gio-tool-list.c:35
+msgid "ATTRIBUTES"
+msgstr "ATRIBUTI"
+
+#: ../gio/gio-tool-info.c:37 ../gio/gio-tool-list.c:38 ../gio/gio-tool-set.c:34
+#, fuzzy
+#| msgid "Don't follow symbolic links"
+msgid "Don’t follow symbolic links"
+msgstr "Ne sledi simbolnim povezavam"
+
+#: ../gio/gio-tool-info.c:75
+#, c-format
+msgid "attributes:\n"
+msgstr "atributi:\n"
+
+#. Translators: This is a noun and represents and attribute of a file
+#: ../gio/gio-tool-info.c:127
+#, c-format
+msgid "display name: %s\n"
+msgstr "prikaži ime: %s\n"
+
+#. Translators: This is a noun and represents and attribute of a file
+#: ../gio/gio-tool-info.c:132
+#, c-format
+msgid "edit name: %s\n"
+msgstr "uredi ime: %s\n"
+
+#: ../gio/gio-tool-info.c:138
+#, c-format
+msgid "name: %s\n"
+msgstr "ime: %s\n"
+
+#: ../gio/gio-tool-info.c:145
+#, c-format
+msgid "type: %s\n"
+msgstr "vrsta: %s\n"
+
+#: ../gio/gio-tool-info.c:151
+#, c-format
+msgid "size: "
+msgstr "velikost:"
+
+#: ../gio/gio-tool-info.c:156
+#, c-format
+msgid "hidden\n"
+msgstr "skrito\n"
+
+#: ../gio/gio-tool-info.c:159
+#, c-format
+msgid "uri: %s\n"
+msgstr "naslov URI: %s\n"
+
+#: ../gio/gio-tool-info.c:228
+#, c-format
+msgid "Settable attributes:\n"
+msgstr "Nastavljivi atributi:\n"
+
+#: ../gio/gio-tool-info.c:252
+#, c-format
+msgid "Writable attribute namespaces:\n"
+msgstr "Imenski prostor zapisljivih atributov:\n"
+
+#: ../gio/gio-tool-info.c:287
+msgid "Show information about locations."
+msgstr "Pokaže podatke o mestih."
+
+#: ../gio/gio-tool-info.c:289
+#, fuzzy
+#| msgid ""
+#| "gio info is similar to the traditional ls utility, but using GIO\n"
+#| "locations instead of local files: for example, you can use something\n"
+#| "like smb://server/resource/file.txt as location. File attributes can\n"
+#| "be specified with their GIO name, e.g. standard::icon, or just by\n"
+#| "namespace, e.g. unix, or by '*', which matches all attributes"
+msgid ""
+"gio info is similar to the traditional ls utility, but using GIO\n"
+"locations instead of local files: for example, you can use something\n"
+"like smb://server/resource/file.txt as location. File attributes can\n"
+"be specified with their GIO name, e.g. standard::icon, or just by\n"
+"namespace, e.g. unix, or by “*”, which matches all attributes"
+msgstr ""
+"Program gio info deluje enako kot ukaz ls z razliko, da uporablja\n"
+"oddaljen GIO namesto krajevnih poti do datotek. Primer: kot pot je\n"
+"mogoče uporabiti smb://strežnik/vir/datoteka.txt. Atributi datoteke\n"
+"so lahko navedeni z imeni GIO, na primer standard::ikona, ali pa le z\n"
+"imenskim prostorom, na primer: unix ali z »*«, ki ustreza vsem."
+
+#: ../gio/gio-tool-list.c:36 ../gio/gio-tool-tree.c:32
+msgid "Show hidden files"
+msgstr "Pokaži skrite datoteke"
+
+#: ../gio/gio-tool-list.c:37
+msgid "Use a long listing format"
+msgstr "Uporabi zapis v dolgi obliki"
+
+#: ../gio/gio-tool-list.c:39
+msgid "Print full URIs"
+msgstr "Izpiši celotne naslove URI"
+
+#: ../gio/gio-tool-list.c:170
+msgid "List the contents of the locations."
+msgstr "Izpiši vsebino mest."
+
+#: ../gio/gio-tool-list.c:172
+msgid ""
+"gio list is similar to the traditional ls utility, but using GIO\n"
+"locations instead of local files: for example, you can use something\n"
+"like smb://server/resource/file.txt as location. File attributes can\n"
+"be specified with their GIO name, e.g. standard::icon"
+msgstr ""
+"Program gio list deluje enako kot ukaz ls z razliko, da uporablja\n"
+"oddaljen GIO namesto krajevnih poti do datotek. Primer: kot pot je\n"
+"mogoče uporabiti smb://strežnik/vir/datoteka.txt. Atributi datoteke\n"
+"so lahko navedeni z imeni GIO, na primer standard::ikona."
+
+#. Translators: commandline placeholder
+#: ../gio/gio-tool-mime.c:71
+msgid "MIMETYPE"
+msgstr "VRSTA-MIME"
+
+#: ../gio/gio-tool-mime.c:71
+msgid "HANDLER"
+msgstr "ROČNIK"
+
+#: ../gio/gio-tool-mime.c:76
+msgid "Get or set the handler for a mimetype."
+msgstr "Pridobi ali določi ročnik za vrsto MIME."
+
+#: ../gio/gio-tool-mime.c:78
+msgid ""
+"If no handler is given, lists registered and recommended applications\n"
+"for the mimetype. If a handler is given, it is set as the default\n"
+"handler for the mimetype."
+msgstr ""
+"Če ročnik ni podan, se izpiše seznam priporočene programske\n"
+"opreme za vrsto MIME, če pa je podan, je določen kot privzet\n"
+"ročnik za to vrsto MIME."
+
+#: ../gio/gio-tool-mime.c:100
+msgid "Must specify a single mimetype, and maybe a handler"
+msgstr "Določiti je treba eno vrsto MIME in pogojno ročnik"
+
+#: ../gio/gio-tool-mime.c:116
+#, fuzzy, c-format
+#| msgid "No default applications for '%s'\n"
+msgid "No default applications for “%s”\n"
+msgstr "Ni privzetega programa za »%s«\n"
+
+#: ../gio/gio-tool-mime.c:122
+#, fuzzy, c-format
+#| msgid "Default application for '%s': %s\n"
+msgid "Default application for “%s”: %s\n"
+msgstr "Privzet program za »%s«: %s\n"
+
+#: ../gio/gio-tool-mime.c:127
+#, c-format
+msgid "Registered applications:\n"
+msgstr "Vpisani programi:\n"
+
+#: ../gio/gio-tool-mime.c:129
+#, c-format
+msgid "No registered applications\n"
+msgstr "Ni vpisanih programov.\n"
+
+#: ../gio/gio-tool-mime.c:140
+#, c-format
+msgid "Recommended applications:\n"
+msgstr "Priporočeni programi:\n"
+
+#: ../gio/gio-tool-mime.c:142
+#, c-format
+msgid "No recommended applications\n"
+msgstr "Ni priporočenih programov.\n"
+
+#: ../gio/gio-tool-mime.c:162
+#, fuzzy, c-format
+#| msgid "Failed to load info for handler '%s'\n"
+msgid "Failed to load info for handler “%s”"
+msgstr "Nalaganje podrobnosti ročnika »%s« je spodletelo.\n"
+
+#: ../gio/gio-tool-mime.c:168
+#, fuzzy, c-format
+#| msgid "Failed to set '%s' as the default handler for '%s': %s\n"
+msgid "Failed to set “%s” as the default handler for “%s”: %s\n"
+msgstr "Določanje »%s« kot privzet ročnik za »%s« je spodletelo: %s\n"
+
+#: ../gio/gio-tool-mkdir.c:31
+msgid "Create parent directories"
+msgstr "Ustvari nadrejene mape"
+
+#: ../gio/gio-tool-mkdir.c:52
+msgid "Create directories."
+msgstr "Ustvarjanje map"
+
+#: ../gio/gio-tool-mkdir.c:54
+msgid ""
+"gio mkdir is similar to the traditional mkdir utility, but using GIO\n"
+"locations instead of local files: for example, you can use something\n"
+"like smb://server/resource/mydir as location."
+msgstr ""
+"Program gio mkdir deluje enako kot ukaz mkdir z razliko, da uporablja\n"
+"oddaljen GIO namesto krajevnih poti do datotek. Primer: kot pot je\n"
+"mogoče uporabiti smb://strežnik/vir/mapa."
+
+#: ../gio/gio-tool-monitor.c:37
+msgid "Monitor a directory (default: depends on type)"
+msgstr "Nadzor mape (privzeto: odvisno od vrste)"
+
+#: ../gio/gio-tool-monitor.c:39
+msgid "Monitor a file (default: depends on type)"
+msgstr "Nadzor datoteke (privzeto: odvisno od vrste)"
+
+#: ../gio/gio-tool-monitor.c:41
+msgid "Monitor a file directly (notices changes made via hardlinks)"
+msgstr "Nadzira spremembe datotek (prek trdih povezav)"
+
+#: ../gio/gio-tool-monitor.c:43
+#, fuzzy
+#| msgid "Monitors a file directly, but doesn't report changes"
+msgid "Monitors a file directly, but doesn’t report changes"
+msgstr "Nadzira datoteko, vendar ne shranjuje poročil sprememb"
+
+#: ../gio/gio-tool-monitor.c:45
+msgid "Report moves and renames as simple deleted/created events"
+msgstr ""
+"Zabeleži premikanja in preimenovanja kot enostavne dogodke izbrisano/"
+"ustvarjeno"
+
+#: ../gio/gio-tool-monitor.c:47
+msgid "Watch for mount events"
+msgstr "Spremljaj dogodke priklopne točke"
+
+#: ../gio/gio-tool-monitor.c:208
+msgid "Monitor files or directories for changes."
+msgstr "Spremljaj spremembe map in datotek."
+
+#: ../gio/gio-tool-mount.c:58
+msgid "Mount as mountable"
+msgstr "priklopi kot priklopno"
+
+#: ../gio/gio-tool-mount.c:59
+msgid "Mount volume with device file"
+msgstr "Priklopi nosilec z datoteko naprave"
+
+#: ../gio/gio-tool-mount.c:59
+msgid "DEVICE"
+msgstr "NAPRAVA"
+
+#: ../gio/gio-tool-mount.c:60
+msgid "Unmount"
+msgstr "Odklopi"
+
+#: ../gio/gio-tool-mount.c:61
+msgid "Eject"
+msgstr "Izvrzi"
+
+#: ../gio/gio-tool-mount.c:62
+msgid "Unmount all mounts with the given scheme"
+msgstr "Odklopi vse priklope s podano shemo"
+
+#: ../gio/gio-tool-mount.c:62
+msgid "SCHEME"
+msgstr "SHEMA"
+
+#: ../gio/gio-tool-mount.c:63
+msgid "Ignore outstanding file operations when unmounting or ejecting"
+msgstr ""
+"Prezri opravila datotek med odklapljanjem oziroma izmetavanjem priklopa"
+
+#: ../gio/gio-tool-mount.c:64
+msgid "Use an anonymous user when authenticating"
+msgstr "Uporabni brezimne podatke za overjanje"
+
+#. Translator: List here is a verb as in 'List all mounts'
+#: ../gio/gio-tool-mount.c:66
+msgid "List"
+msgstr "Seznam"
+
+#: ../gio/gio-tool-mount.c:67
+msgid "Monitor events"
+msgstr "Nadzor dogodkov"
+
+#: ../gio/gio-tool-mount.c:68
+msgid "Show extra information"
+msgstr "Pokaži dodatne podrobnosti"
+
+#: ../gio/gio-tool-mount.c:246 ../gio/gio-tool-mount.c:276
+#, fuzzy
+#| msgid "Error mounting location: Anonymous access denied\n"
+msgid "Anonymous access denied"
+msgstr "Napaka med priklapljanjem: brezimni dostop ni dovoljen.\n"
+
+#: ../gio/gio-tool-mount.c:897
+#, c-format
+msgid "Mounted %s at %s\n"
+msgstr "Priklopljen %s na %s\n"
+
+#: ../gio/gio-tool-mount.c:950
+#, fuzzy
+#| msgid "No volume for device file %s\n"
+msgid "No volume for device file"
+msgstr "Ni pogona za datoteko naprave %s\n"
+
+#: ../gio/gio-tool-mount.c:1145
+msgid "Mount or unmount the locations."
+msgstr "Priklop oziroma odklop različnih nosilcev"
+
+#: ../gio/gio-tool-move.c:42
+#, fuzzy
+#| msgid "Don't use copy and delete fallback"
+msgid "Don’t use copy and delete fallback"
+msgstr "Ne ustvari kopije in izbriši povrnitvene datoteke"
+
+#: ../gio/gio-tool-move.c:99
+msgid "Move one or more files from SOURCE to DEST."
+msgstr "Premakni datoteke iz VIRA na CILJ."
+
+#: ../gio/gio-tool-move.c:101
+msgid ""
+"gio move is similar to the traditional mv utility, but using GIO\n"
+"locations instead of local files: for example, you can use something\n"
+"like smb://server/resource/file.txt as location"
+msgstr ""
+"Program gio move deluje enako kot ukaz mv z razliko, da uporablja\n"
+"oddaljen GIO namesto krajevnih poti do datotek. Primer: kot pot je\n"
+"mogoče uporabiti smb://strežnik/vir/datoteka.txt."
+
+#: ../gio/gio-tool-move.c:142
+#, c-format
+msgid "Target %s is not a directory"
+msgstr "Cilj %s ni mapa"
+
+#: ../gio/gio-tool-open.c:50
+msgid ""
+"Open files with the default application that\n"
+"is registered to handle files of this type."
+msgstr ""
+"Odpre datoteke s privzetim programom, ki\n"
+"je nastavljen za odpiranje te vrste datotek."
+
+#: ../gio/gio-tool-remove.c:31 ../gio/gio-tool-trash.c:31
+msgid "Ignore nonexistent files, never prompt"
+msgstr "Prezri neobstoječe datoteke in ne opozarjaj"
+
+#: ../gio/gio-tool-remove.c:52
+msgid "Delete the given files."
+msgstr "Izbriši podane datoteke."
+
+#: ../gio/gio-tool-rename.c:45
+msgid "NAME"
+msgstr "IME"
+
+#: ../gio/gio-tool-rename.c:50
+msgid "Rename a file."
+msgstr "Preimenovanje datoteke"
+
+#: ../gio/gio-tool-rename.c:70
+msgid "Missing argument"
+msgstr "Manjka argument"
+
+#: ../gio/gio-tool-rename.c:76 ../gio/gio-tool-save.c:195
+#: ../gio/gio-tool-set.c:137
+msgid "Too many arguments"
+msgstr "Navedenih je preveč argumentov"
+
+#: ../gio/gio-tool-rename.c:95
+#, c-format
+msgid "Rename successful. New uri: %s\n"
+msgstr "Preimenovanje je bilo uspešno. Nov naslov URI: %s\n"
+
+#: ../gio/gio-tool-save.c:50
+msgid "Only create if not existing"
+msgstr "Ustvari le, če ne obstaja"
+
+#: ../gio/gio-tool-save.c:51
+msgid "Append to end of file"
+msgstr "Pripni na konec datoteke"
+
+#: ../gio/gio-tool-save.c:52
+msgid "When creating, restrict access to the current user"
+msgstr "Med ustvarjanjem omeji dostop trenutnemu uporabniku"
+
+#: ../gio/gio-tool-save.c:53
+msgid "When replacing, replace as if the destination did not exist"
+msgstr "Med zamenjavo zamenjaj ciljno mesto, kot da to še ne obstaja."
+
+#. Translators: The "etag" is a token allowing to verify whether a file has been modified
+#: ../gio/gio-tool-save.c:55
+msgid "Print new etag at end"
+msgstr "Natisni novo oznako etag na koncu"
+
+#. Translators: The "etag" is a token allowing to verify whether a file has been modified
+#: ../gio/gio-tool-save.c:57
+msgid "The etag of the file being overwritten"
+msgstr "Oznaka Etag datoteke, ki bo prepisana"
+
+#: ../gio/gio-tool-save.c:57
+msgid "ETAG"
+msgstr "ETAG"
+
+#: ../gio/gio-tool-save.c:119
+#, fuzzy
+#| msgid "Error reading from handle: %s"
+msgid "Error reading from standard input"
+msgstr "Napaka branja iz ročnika: %s"
+
+#. Translators: The "etag" is a token allowing to verify whether a file has been modified
+#: ../gio/gio-tool-save.c:145
+#, c-format
+msgid "Etag not available\n"
+msgstr "Oznaka Etag ni na voljo\n"
+
+#: ../gio/gio-tool-save.c:168
+msgid "Read from standard input and save to DEST."
+msgstr "Preberi preko standardnega vhoda in shrani na CILJ."
+
+#: ../gio/gio-tool-save.c:188
+msgid "No destination given"
+msgstr "Ni podanega cilja"
+
+#: ../gio/gio-tool-set.c:33
+msgid "Type of the attribute"
+msgstr "Vrsta atributa"
+
+#: ../gio/gio-tool-set.c:33
+msgid "TYPE"
+msgstr "VRSTA"
+
+#: ../gio/gio-tool-set.c:89
+msgid "ATTRIBUTE"
+msgstr "ATRIBUT"
+
+#: ../gio/gio-tool-set.c:89
+msgid "VALUE"
+msgstr "VREDNOST"
+
+#: ../gio/gio-tool-set.c:93
+msgid "Set a file attribute of LOCATION."
+msgstr "Določitev atributa MESTA za datoteko"
+
+#: ../gio/gio-tool-set.c:113
+msgid "Location not specified"
+msgstr "Mesto ni določeno"
+
+#: ../gio/gio-tool-set.c:120
+msgid "Attribute not specified"
+msgstr "Atribut ni določen"
+
+#: ../gio/gio-tool-set.c:130
+msgid "Value not specified"
+msgstr "Vrednost ni določena"
+
+#: ../gio/gio-tool-set.c:180
+#, fuzzy, c-format
+#| msgid "Invalid attribute type %s\n"
+msgid "Invalid attribute type “%s”"
+msgstr "Neveljavna vrsta atributa %s\n"
+
+#: ../gio/gio-tool-trash.c:32
+msgid "Empty the trash"
+msgstr "Izprazni smeti"
+
+#: ../gio/gio-tool-trash.c:86
+msgid "Move files or directories to the trash."
+msgstr "Premakni datoteke in mape v smeti"
+
+#: ../gio/gio-tool-tree.c:33
+msgid "Follow symbolic links, mounts and shortcuts"
+msgstr "Sledi simbolnim povezavam, priklopom in bližnjicam map"
+
+#: ../gio/gio-tool-tree.c:244
+msgid "List contents of directories in a tree-like format."
+msgstr "Izpiši seznam vsebine map v drevesni obliki."
+
+#: ../gio/glib-compile-resources.c:142 ../gio/glib-compile-schemas.c:1501
 #, c-format
 msgid "Element <%s> not allowed inside <%s>"
 msgstr "Predmet <%s> ni dovoljen znotraj predmeta <%s>"
@@ -1552,154 +2445,345 @@ msgstr "Predmet <%s> ni dovoljen znotraj predmeta <%s>"
 msgid "Element <%s> not allowed at toplevel"
 msgstr "Predmet <%s> ni dovoljen na vrhnji ravni"
 
-#: ../gio/glib-compile-resources.c:236
+#: ../gio/glib-compile-resources.c:237
 #, c-format
 msgid "File %s appears multiple times in the resource"
 msgstr "Datoteka %s se v viru pojavi večkrat"
 
-#: ../gio/glib-compile-resources.c:249
-#, c-format
-msgid "Failed to locate '%s' in any source directory"
+#: ../gio/glib-compile-resources.c:248
+#, fuzzy, c-format
+#| msgid "Failed to locate '%s' in any source directory"
+msgid "Failed to locate “%s” in any source directory"
 msgstr "'%s' ni mogoče najti v nobeni mapi virov"
 
-#: ../gio/glib-compile-resources.c:260
-#, c-format
-msgid "Failed to locate '%s' in current directory"
+#: ../gio/glib-compile-resources.c:259
+#, fuzzy, c-format
+#| msgid "Failed to locate '%s' in current directory"
+msgid "Failed to locate “%s” in current directory"
 msgstr "'%s' ni mogoče najti v trenutni mapi"
 
-#: ../gio/glib-compile-resources.c:288
-#, c-format
-msgid "Unknown processing option \"%s\""
+#: ../gio/glib-compile-resources.c:290
+#, fuzzy, c-format
+#| msgid "Unknown processing option \"%s\""
+msgid "Unknown processing option “%s”"
 msgstr "Neznana možnost obdelovanja \"%s\""
 
-#: ../gio/glib-compile-resources.c:306 ../gio/glib-compile-resources.c:352
+#: ../gio/glib-compile-resources.c:308 ../gio/glib-compile-resources.c:354
 #, c-format
 msgid "Failed to create temp file: %s"
 msgstr "Ustvarjanje začasne datoteke je spodletelo: %s"
 
-#: ../gio/glib-compile-resources.c:380
+#: ../gio/glib-compile-resources.c:382
 #, c-format
 msgid "Error reading file %s: %s"
 msgstr "Napaka med branjem datoteke %s: %s"
 
-#: ../gio/glib-compile-resources.c:400
+#: ../gio/glib-compile-resources.c:402
+#, c-format
+msgid "Error compressing file %s"
+msgstr "Napaka med stiskanjem datoteke %s"
+
+#: ../gio/glib-compile-resources.c:469
+#, c-format
+msgid "text may not appear inside <%s>"
+msgstr "besedilo se ne sme pojaviti znotraj <%s>"
+
+#: ../gio/glib-compile-resources.c:664 ../gio/glib-compile-schemas.c:2067
+msgid "Show program version and exit"
+msgstr "Izpiši podrobnosti različice in končaj"
+
+#: ../gio/glib-compile-resources.c:665
+msgid "name of the output file"
+msgstr "ime izhodne datoteke"
+
+#: ../gio/glib-compile-resources.c:666
+msgid ""
+"The directories where files are to be read from (default to current "
+"directory)"
+msgstr ""
+"Mape, iz katerih naj bodo brane datoteke (privzeto je to trenutna mapa)"
+
+#: ../gio/glib-compile-resources.c:666 ../gio/glib-compile-schemas.c:2068
+#: ../gio/glib-compile-schemas.c:2096
+msgid "DIRECTORY"
+msgstr "MAPA"
+
+#: ../gio/glib-compile-resources.c:667
+msgid ""
+"Generate output in the format selected for by the target filename extension"
+msgstr "Ustvari odvod v obliki, izbrani s pripono imena ciljne datoteke"
+
+#: ../gio/glib-compile-resources.c:668
+msgid "Generate source header"
+msgstr "Ustvari glavo vira"
+
+#: ../gio/glib-compile-resources.c:669
+msgid "Generate sourcecode used to link in the resource file into your code"
+msgstr "Ustvari izvorno kodo za povezavo datoteke virov z vašo kodo"
+
+#: ../gio/glib-compile-resources.c:670
+msgid "Generate dependency list"
+msgstr "Ustvari seznam odvisnosti."
+
+#: ../gio/glib-compile-resources.c:671
+msgid "name of the dependency file to generate"
+msgstr "ime datoteke odvisnosti za ustvarjanje"
+
+#: ../gio/glib-compile-resources.c:672
+msgid "Include phony targets in the generated dependency file"
+msgstr ""
+
+#: ../gio/glib-compile-resources.c:673
+#, fuzzy
+#| msgid "Don't automatically create and register resource"
+msgid "Don’t automatically create and register resource"
+msgstr "Vira ne ustvari in ne vpiši samodejno"
+
+#: ../gio/glib-compile-resources.c:674
+#, fuzzy
+#| msgid "Don't export functions; declare them G_GNUC_INTERNAL"
+msgid "Don’t export functions; declare them G_GNUC_INTERNAL"
+msgstr "Ne izvozi funkcij; te je treba deklarirati v G_GNUC_INTERNAL"
+
+#: ../gio/glib-compile-resources.c:675
+msgid "C identifier name used for the generated source code"
+msgstr "Določilo imena jezika C za ustvarjanje izvorne kode"
+
+#: ../gio/glib-compile-resources.c:701
+msgid ""
+"Compile a resource specification into a resource file.\n"
+"Resource specification files have the extension .gresource.xml,\n"
+"and the resource file have the extension called .gresource."
+msgstr ""
+"Kodno prevedi določilo vira v datoteko vira.\n"
+"Datoteke določil vira imajo pripone .gresource.xml,\n"
+"datoteke vira pa pripono .gresource."
+
+#: ../gio/glib-compile-resources.c:723
+#, c-format
+msgid "You should give exactly one file name\n"
+msgstr "Podati je treba natanko eno ime datoteke\n"
+
+#: ../gio/glib-compile-schemas.c:95
+#, c-format
+msgid "nick must be a minimum of 2 characters"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:106
+#, fuzzy, c-format
+#| msgid "Invalid symlink value given"
+msgid "Invalid numeric value"
+msgstr "Neveljavna vrednost simbolne povezave"
+
+#: ../gio/glib-compile-schemas.c:114
+#, fuzzy, c-format
+#| msgid "<%s id='%s'> already specified"
+msgid "<value nick='%s'/> already specified"
+msgstr "<%s id='%s'> je že določeno"
+
+#: ../gio/glib-compile-schemas.c:122
+#, fuzzy, c-format
+#| msgid "<key name='%s'> already specified"
+msgid "value='%s' already specified"
+msgstr "<key name='%s'> je že določeno"
+
+#: ../gio/glib-compile-schemas.c:136
+#, c-format
+msgid "flags values must have at most 1 bit set"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:161
+#, c-format
+msgid "<%s> must contain at least one <value>"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:315
+#, fuzzy, c-format
+#| msgid "No connection endpoint specified"
+msgid "<%s> is not contained in the specified range"
+msgstr "Ni določene končne točke povezave"
+
+#: ../gio/glib-compile-schemas.c:327
+#, c-format
+msgid "<%s> is not a valid member of the specified enumerated type"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:333
+#, c-format
+msgid "<%s> contains string not in the specified flags type"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:339
+#, c-format
+msgid "<%s> contains a string not in <choices>"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:373
+#, fuzzy
+#| msgid "<key name='%s'> already specified"
+msgid "<range/> already specified for this key"
+msgstr "<key name='%s'> je že določeno"
+
+#: ../gio/glib-compile-schemas.c:391
+#, c-format
+msgid "<range> not allowed for keys of type “%s”"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:408
 #, c-format
-msgid "Error compressing file %s"
-msgstr "Napaka med stiskanjem datoteke %s"
+msgid "<range> specified minimum is greater than maximum"
+msgstr ""
 
-#: ../gio/glib-compile-resources.c:464 ../gio/glib-compile-schemas.c:1603
+#: ../gio/glib-compile-schemas.c:433
 #, c-format
-msgid "text may not appear inside <%s>"
-msgstr "besedilo se ne sme pojaviti znotraj <%s>"
+msgid "unsupported l10n category: %s"
+msgstr ""
 
-#: ../gio/glib-compile-resources.c:589
-msgid "name of the output file"
-msgstr "ime izhodne datoteke"
+#: ../gio/glib-compile-schemas.c:441
+msgid "l10n requested, but no gettext domain given"
+msgstr ""
 
-#: ../gio/glib-compile-resources.c:590
-msgid ""
-"The directories where files are to be read from (default to current "
-"directory)"
+#: ../gio/glib-compile-schemas.c:453
+msgid "translation context given for value without l10n enabled"
 msgstr ""
-"Mape, iz katerih naj bodo brane datoteke (privzeto je to trenutna mapa)"
 
-#: ../gio/glib-compile-resources.c:590 ../gio/glib-compile-schemas.c:2036
-#: ../gio/glib-compile-schemas.c:2065
-msgid "DIRECTORY"
-msgstr "MAPA"
+#: ../gio/glib-compile-schemas.c:475
+#, fuzzy, c-format
+#| msgid "Failed to set '%s' as the default handler for '%s': %s\n"
+msgid "Failed to parse <default> value of type “%s”: "
+msgstr "Določanje »%s« kot privzet ročnik za »%s« je spodletelo: %s\n"
 
-#: ../gio/glib-compile-resources.c:591
+#: ../gio/glib-compile-schemas.c:492
 msgid ""
-"Generate output in the format selected for by the target filename extension"
-msgstr "Ustvari odvod v obliki, izbrani s pripono imena ciljne datoteke"
+"<choices> cannot be specified for keys tagged as having an enumerated type"
+msgstr ""
 
-#: ../gio/glib-compile-resources.c:592
-msgid "Generate source header"
-msgstr "Ustvari glavo vira"
+#: ../gio/glib-compile-schemas.c:501
+#, fuzzy
+#| msgid "<child name='%s'> already specified"
+msgid "<choices> already specified for this key"
+msgstr "<child name='%s'> je že določeno"
 
-#: ../gio/glib-compile-resources.c:593
-msgid "Generate sourcecode used to link in the resource file into your code"
-msgstr "Ustvari izvorno kodo za povezavo datoteke virov z vašo kodo"
+#: ../gio/glib-compile-schemas.c:513
+#, c-format
+msgid "<choices> not allowed for keys of type “%s”"
+msgstr ""
 
-#: ../gio/glib-compile-resources.c:594
-msgid "Generate dependency list"
-msgstr "Ustvari seznam odvisnosti."
+#: ../gio/glib-compile-schemas.c:529
+#, fuzzy, c-format
+#| msgid "<child name='%s'> already specified"
+msgid "<choice value='%s'/> already given"
+msgstr "<child name='%s'> je že določeno"
 
-#: ../gio/glib-compile-resources.c:595
-msgid "Don't automatically create and register resource"
-msgstr "Vira ne ustvari in ne vpiši samodejno"
+#: ../gio/glib-compile-schemas.c:544
+#, c-format
+msgid "<choices> must contain at least one <choice>"
+msgstr ""
 
-#: ../gio/glib-compile-resources.c:596
-msgid "Don't export functions; declare them G_GNUC_INTERNAL"
-msgstr "Ne izvozi funkcij; te je treba deklarirati v G_GNUC_INTERNAL"
+#: ../gio/glib-compile-schemas.c:558
+#, fuzzy
+#| msgid "<child name='%s'> already specified"
+msgid "<aliases> already specified for this key"
+msgstr "<child name='%s'> je že določeno"
 
-#: ../gio/glib-compile-resources.c:597
-msgid "C identifier name used for the generated source code"
-msgstr "Določilo imena jezika C za ustvarjanje izvorne kode"
+#: ../gio/glib-compile-schemas.c:562
+msgid ""
+"<aliases> can only be specified for keys with enumerated or flags types or "
+"after <choices>"
+msgstr ""
 
-#: ../gio/glib-compile-resources.c:623
+#: ../gio/glib-compile-schemas.c:581
+#, c-format
 msgid ""
-"Compile a resource specification into a resource file.\n"
-"Resource specification files have the extension .gresource.xml,\n"
-"and the resource file have the extension called .gresource."
+"<alias value='%s'/> given when “%s” is already a member of the enumerated "
+"type"
 msgstr ""
-"Kodno prevedi določilo vira v datoteko vira.\n"
-"Datoteke določil vira imajo pripone .gresource.xml,\n"
-"datoteke vira pa pripono .gresource."
 
-#: ../gio/glib-compile-resources.c:639
+#: ../gio/glib-compile-schemas.c:587
 #, c-format
-msgid "You should give exactly one file name\n"
-msgstr "Podati je treba natanko eno ime datoteke\n"
+msgid "<alias value='%s'/> given when <choice value='%s'/> was already given"
+msgstr ""
 
-#: ../gio/glib-compile-schemas.c:784
-msgid "empty names are not permitted"
-msgstr "prazna imena niso dovoljena"
+#: ../gio/glib-compile-schemas.c:595
+#, fuzzy, c-format
+#| msgid "<%s id='%s'> already specified"
+msgid "<alias value='%s'/> already specified"
+msgstr "<%s id='%s'> je že določeno"
 
-#: ../gio/glib-compile-schemas.c:794
+#: ../gio/glib-compile-schemas.c:605
 #, c-format
-msgid "invalid name '%s': names must begin with a lowercase letter"
-msgstr "neveljavno ime '%s': imena se morajo začeti z malo črko"
+msgid "alias target “%s” is not in enumerated type"
+msgstr ""
 
-#: ../gio/glib-compile-schemas.c:806
+#: ../gio/glib-compile-schemas.c:606
 #, c-format
+msgid "alias target “%s” is not in <choices>"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:621
+#, c-format
+msgid "<aliases> must contain at least one <alias>"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:786
+#, fuzzy
+#| msgid "empty names are not permitted"
+msgid "Empty names are not permitted"
+msgstr "prazna imena niso dovoljena"
+
+#: ../gio/glib-compile-schemas.c:796
+#, fuzzy, c-format
+#| msgid "invalid name '%s': names must begin with a lowercase letter"
+msgid "Invalid name “%s”: names must begin with a lowercase letter"
+msgstr "neveljavno ime '%s': imena se morajo začeti z malo črko"
+
+#: ../gio/glib-compile-schemas.c:808
+#, fuzzy, c-format
+#| msgid ""
+#| "invalid name '%s': invalid character '%c'; only lowercase letters, "
+#| "numbers and hyphen ('-') are permitted."
 msgid ""
-"invalid name '%s': invalid character '%c'; only lowercase letters, numbers "
-"and hyphen ('-') are permitted."
+"Invalid name “%s”: invalid character “%c”; only lowercase letters, numbers "
+"and hyphen (“-”) are permitted"
 msgstr ""
 "Neveljavno ime '%s': neveljaven znak '%c'; dovoljene so samo male črke, "
 "številke in vezaj ('-')."
 
-#: ../gio/glib-compile-schemas.c:815
-#, c-format
-msgid "invalid name '%s': two successive hyphens ('--') are not permitted."
+#: ../gio/glib-compile-schemas.c:817
+#, fuzzy, c-format
+#| msgid "invalid name '%s': two successive hyphens ('--') are not permitted."
+msgid "Invalid name “%s”: two successive hyphens (“--”) are not permitted"
 msgstr "Neveljavno ime '%s': zaporedna vezaja ('--') nista dovoljena."
 
-#: ../gio/glib-compile-schemas.c:824
-#, c-format
-msgid "invalid name '%s': the last character may not be a hyphen ('-')."
+#: ../gio/glib-compile-schemas.c:826
+#, fuzzy, c-format
+#| msgid "invalid name '%s': the last character may not be a hyphen ('-')."
+msgid "Invalid name “%s”: the last character may not be a hyphen (“-”)"
 msgstr "Neveljavno ime '%s': zadnji znak ne sme biti vezaj ('-')."
 
-#: ../gio/glib-compile-schemas.c:832
-#, c-format
-msgid "invalid name '%s': maximum length is 1024"
+#: ../gio/glib-compile-schemas.c:834
+#, fuzzy, c-format
+#| msgid "invalid name '%s': maximum length is 1024"
+msgid "Invalid name “%s”: maximum length is 1024"
 msgstr "neveljavno ime '%s': največja dolžina je 1024"
 
-#: ../gio/glib-compile-schemas.c:901
+#: ../gio/glib-compile-schemas.c:904
 #, c-format
 msgid "<child name='%s'> already specified"
 msgstr "<child name='%s'> je že določeno"
 
-#: ../gio/glib-compile-schemas.c:927
-msgid "cannot add keys to a 'list-of' schema"
+#: ../gio/glib-compile-schemas.c:930
+#, fuzzy
+#| msgid "cannot add keys to a 'list-of' schema"
+msgid "Cannot add keys to a “list-of” schema"
 msgstr "ključev ni mogoče dodati shemi 'list-of'"
 
-#: ../gio/glib-compile-schemas.c:938
+#: ../gio/glib-compile-schemas.c:941
 #, c-format
 msgid "<key name='%s'> already specified"
 msgstr "<key name='%s'> je že določeno"
 
-#: ../gio/glib-compile-schemas.c:956
+#: ../gio/glib-compile-schemas.c:959
 #, c-format
 msgid ""
 "<key name='%s'> shadows <key name='%s'> in <schema id='%s'>; use <override> "
@@ -1708,140 +2792,176 @@ msgstr ""
 "<key name='%s'> sence <key name='%s'> v <schema id='%s'>; za spreminjanje "
 "vrednosti uporabite <override>"
 
-#: ../gio/glib-compile-schemas.c:967
-#, c-format
+#: ../gio/glib-compile-schemas.c:970
+#, fuzzy, c-format
+#| msgid ""
+#| "exactly one of 'type', 'enum' or 'flags' must be specified as an "
+#| "attribute to <key>"
 msgid ""
-"exactly one of 'type', 'enum' or 'flags' must be specified as an attribute "
+"Exactly one of “type”, “enum” or “flags” must be specified as an attribute "
 "to <key>"
 msgstr ""
 "natančno eden izmed 'type', 'enum' ali 'flags' mora biti določen kot "
 "lastnost <key>"
 
-#: ../gio/glib-compile-schemas.c:986
+#: ../gio/glib-compile-schemas.c:989
 #, c-format
 msgid "<%s id='%s'> not (yet) defined."
 msgstr "<%s id='%s'> (še) ni določen."
 
-#: ../gio/glib-compile-schemas.c:1001
-#, c-format
-msgid "invalid GVariant type string '%s'"
+#: ../gio/glib-compile-schemas.c:1004
+#, fuzzy, c-format
+#| msgid "invalid GVariant type string '%s'"
+msgid "Invalid GVariant type string “%s”"
 msgstr "Neveljavena  vrsta niza GVariant '%s'"
 
-#: ../gio/glib-compile-schemas.c:1031
-msgid "<override> given but schema isn't extending anything"
+#: ../gio/glib-compile-schemas.c:1034
+#, fuzzy
+#| msgid "<override> given but schema isn't extending anything"
+msgid "<override> given but schema isn’t extending anything"
 msgstr "<override> je podan, vendar shema ne razširja ničesar"
 
-#: ../gio/glib-compile-schemas.c:1044
+#: ../gio/glib-compile-schemas.c:1047
 #, c-format
-msgid "no <key name='%s'> to override"
+msgid "No <key name='%s'> to override"
 msgstr "<key name='%s'> za prepis ni na voljo"
 
-#: ../gio/glib-compile-schemas.c:1052
+#: ../gio/glib-compile-schemas.c:1055
 #, c-format
 msgid "<override name='%s'> already specified"
 msgstr "<override name='%s'> je že določeno"
 
-#: ../gio/glib-compile-schemas.c:1125
+#: ../gio/glib-compile-schemas.c:1128
 #, c-format
 msgid "<schema id='%s'> already specified"
 msgstr "<schema id='%s'> je že določeno"
 
-#: ../gio/glib-compile-schemas.c:1137
-#, c-format
-msgid "<schema id='%s'> extends not yet existing schema '%s'"
+#: ../gio/glib-compile-schemas.c:1140
+#, fuzzy, c-format
+#| msgid "<schema id='%s'> extends not yet existing schema '%s'"
+msgid "<schema id='%s'> extends not yet existing schema “%s”"
 msgstr "<schema id='%s'> razširja še neobstoječo shemo '%s'"
 
-#: ../gio/glib-compile-schemas.c:1153
-#, c-format
-msgid "<schema id='%s'> is list of not yet existing schema '%s'"
+#: ../gio/glib-compile-schemas.c:1156
+#, fuzzy, c-format
+#| msgid "<schema id='%s'> is list of not yet existing schema '%s'"
+msgid "<schema id='%s'> is list of not yet existing schema “%s”"
 msgstr "<schema id='%s'> je seznam še neobstoječe sheme '%s'"
 
-#: ../gio/glib-compile-schemas.c:1161
-#, c-format
-msgid "Can not be a list of a schema with a path"
+#: ../gio/glib-compile-schemas.c:1164
+#, fuzzy, c-format
+#| msgid "Can not be a list of a schema with a path"
+msgid "Cannot be a list of a schema with a path"
 msgstr "Seznam sheme s potjo ni mogoč"
 
-#: ../gio/glib-compile-schemas.c:1171
-#, c-format
-msgid "Can not extend a schema with a path"
+#: ../gio/glib-compile-schemas.c:1174
+#, fuzzy, c-format
+#| msgid "Can not extend a schema with a path"
+msgid "Cannot extend a schema with a path"
 msgstr "Sheme ni mogoče razširiti s potjo"
 
-#: ../gio/glib-compile-schemas.c:1181
+#: ../gio/glib-compile-schemas.c:1184
 #, c-format
 msgid ""
 "<schema id='%s'> is a list, extending <schema id='%s'> which is not a list"
 msgstr "<schema id='%s'> je seznam, ki razširja <schema id='%s'>, ki ni seznam"
 
-#: ../gio/glib-compile-schemas.c:1191
-#, c-format
+#: ../gio/glib-compile-schemas.c:1194
+#, fuzzy, c-format
+#| msgid ""
+#| "<schema id='%s' list-of='%s'> extends <schema id='%s' list-of='%s'> but "
+#| "'%s' does not extend '%s'"
 msgid ""
-"<schema id='%s' list-of='%s'> extends <schema id='%s' list-of='%s'> but '%s' "
-"does not extend '%s'"
+"<schema id='%s' list-of='%s'> extends <schema id='%s' list-of='%s'> but “%s” "
+"does not extend “%s”"
 msgstr ""
 "<schema id='%s' list-of='%s'> razširja <schema id='%s' list-of='%s'> vendar "
 "'%s' ne razširja '%s'"
 
-#: ../gio/glib-compile-schemas.c:1208
-#, c-format
-msgid "a path, if given, must begin and end with a slash"
+#: ../gio/glib-compile-schemas.c:1211
+#, fuzzy, c-format
+#| msgid "a path, if given, must begin and end with a slash"
+msgid "A path, if given, must begin and end with a slash"
 msgstr "pot, če je podana, se mora začeti in končati s poševnico"
 
-#: ../gio/glib-compile-schemas.c:1215
-#, c-format
-msgid "the path of a list must end with ':/'"
+#: ../gio/glib-compile-schemas.c:1218
+#, fuzzy, c-format
+#| msgid "the path of a list must end with ':/'"
+msgid "The path of a list must end with “:/”"
 msgstr "pot seznama se mora končati z ':/'"
 
-#: ../gio/glib-compile-schemas.c:1247
+#: ../gio/glib-compile-schemas.c:1227
+#, c-format
+msgid ""
+"Warning: Schema “%s” has path “%s”.  Paths starting with “/apps/”, “/"
+"desktop/” or “/system/” are deprecated."
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:1257
 #, c-format
 msgid "<%s id='%s'> already specified"
 msgstr "<%s id='%s'> je že določeno"
 
-#: ../gio/glib-compile-schemas.c:1397 ../gio/glib-compile-schemas.c:1413
+#: ../gio/glib-compile-schemas.c:1407 ../gio/glib-compile-schemas.c:1423
 #, c-format
 msgid "Only one <%s> element allowed inside <%s>"
 msgstr "Le en predmet <%s> je lahko znotraj predmeta <%s>"
 
-#: ../gio/glib-compile-schemas.c:1495
+#: ../gio/glib-compile-schemas.c:1505
 #, c-format
 msgid "Element <%s> not allowed at the top level"
 msgstr "Predmet <%s> na vrhnji ravni ni dovoljen"
 
+#: ../gio/glib-compile-schemas.c:1523
+msgid "Element <default> is required in <key>"
+msgstr ""
+
+#: ../gio/glib-compile-schemas.c:1613
+#, c-format
+msgid "Text may not appear inside <%s>"
+msgstr "Besedilo se ne sme pojaviti znotraj <%s>"
+
+#: ../gio/glib-compile-schemas.c:1681
+#, c-format
+msgid "Warning: undefined reference to <schema id='%s'/>"
+msgstr ""
+
 #. Translators: Do not translate "--strict".
-#: ../gio/glib-compile-schemas.c:1794 ../gio/glib-compile-schemas.c:1865
-#: ../gio/glib-compile-schemas.c:1941
+#: ../gio/glib-compile-schemas.c:1820 ../gio/glib-compile-schemas.c:1894
+#: ../gio/glib-compile-schemas.c:1970
 #, c-format
 msgid "--strict was specified; exiting.\n"
 msgstr "--strict je določen, končanje.\n"
 
-#: ../gio/glib-compile-schemas.c:1802
+#: ../gio/glib-compile-schemas.c:1830
 #, c-format
 msgid "This entire file has been ignored.\n"
 msgstr "Celotna datoteka je prezrta.\n"
 
-#: ../gio/glib-compile-schemas.c:1861
+#: ../gio/glib-compile-schemas.c:1890
 #, c-format
 msgid "Ignoring this file.\n"
 msgstr "Datoteka je prezrta.\n"
 
-#: ../gio/glib-compile-schemas.c:1901
+#: ../gio/glib-compile-schemas.c:1930
 #, c-format
 msgid "No such key '%s' in schema '%s' as specified in override file '%s'"
 msgstr ""
 "Ključ '%s' v shemi '%s' kot je določen v datoteki prepisa '%s' ne obstaja"
 
-#: ../gio/glib-compile-schemas.c:1907 ../gio/glib-compile-schemas.c:1965
-#: ../gio/glib-compile-schemas.c:1993
+#: ../gio/glib-compile-schemas.c:1936 ../gio/glib-compile-schemas.c:1994
+#: ../gio/glib-compile-schemas.c:2022
 #, c-format
 msgid "; ignoring override for this key.\n"
 msgstr "; prepis za ta ključ je prezrt.\n"
 
-#: ../gio/glib-compile-schemas.c:1911 ../gio/glib-compile-schemas.c:1969
-#: ../gio/glib-compile-schemas.c:1997
+#: ../gio/glib-compile-schemas.c:1940 ../gio/glib-compile-schemas.c:1998
+#: ../gio/glib-compile-schemas.c:2026
 #, c-format
 msgid " and --strict was specified; exiting.\n"
 msgstr " in --strict sta določena, končanje.\n"
 
-#: ../gio/glib-compile-schemas.c:1927
+#: ../gio/glib-compile-schemas.c:1956
 #, c-format
 msgid ""
 "error parsing key '%s' in schema '%s' as specified in override file '%s': %s."
@@ -1849,12 +2969,12 @@ msgstr ""
 "napaka razčlenjevanja ključa '%s' v shemi '%s' kot je določen v datoteki "
 "prepisa '%s': %s.  "
 
-#: ../gio/glib-compile-schemas.c:1937
+#: ../gio/glib-compile-schemas.c:1966
 #, c-format
 msgid "Ignoring override for this key.\n"
 msgstr "Prepis za ta ključ je prezrt.\n"
 
-#: ../gio/glib-compile-schemas.c:1955
+#: ../gio/glib-compile-schemas.c:1984
 #, c-format
 msgid ""
 "override for key '%s' in schema '%s' in override file '%s' is outside the "
@@ -1863,7 +2983,7 @@ msgstr ""
 "prepis za ključ '%s' v shemi '%s' v datoteki prepisa '%s' ni v obsegu, "
 "podanem v shemi"
 
-#: ../gio/glib-compile-schemas.c:1983
+#: ../gio/glib-compile-schemas.c:2012
 #, c-format
 msgid ""
 "override for key '%s' in schema '%s' in override file '%s' is not in the "
@@ -1872,23 +2992,23 @@ msgstr ""
 "prepis za ključ '%s' v shemi '%s' v datoteki prepisa '%s' ni v seznamu "
 "veljavnih možnosti"
 
-#: ../gio/glib-compile-schemas.c:2036
+#: ../gio/glib-compile-schemas.c:2068
 msgid "where to store the gschemas.compiled file"
 msgstr "kje naj se shrani datoteka gschemas.compiled"
 
-#: ../gio/glib-compile-schemas.c:2037
+#: ../gio/glib-compile-schemas.c:2069
 msgid "Abort on any errors in schemas"
 msgstr "Prekini ob vsakršnji napaki v shemi"
 
-#: ../gio/glib-compile-schemas.c:2038
+#: ../gio/glib-compile-schemas.c:2070
 msgid "Do not write the gschema.compiled file"
 msgstr "Ne zapiši datoteke gschema.compiled"
 
-#: ../gio/glib-compile-schemas.c:2039
+#: ../gio/glib-compile-schemas.c:2071
 msgid "Do not enforce key name restrictions"
 msgstr "Ne vsili omejitev imena ključa"
 
-#: ../gio/glib-compile-schemas.c:2068
+#: ../gio/glib-compile-schemas.c:2099
 msgid ""
 "Compile all GSettings schema files into a schema cache.\n"
 "Schema files are required to have the extension .gschema.xml,\n"
@@ -1898,128 +3018,145 @@ msgstr ""
 "sheme. Datoteke shem morajo imeti pripono .gschema.xml,\n"
 "datoteka predpomnilnika pa se imenuje gschemas.compiled."
 
-#: ../gio/glib-compile-schemas.c:2084
+#: ../gio/glib-compile-schemas.c:2120
 #, c-format
 msgid "You should give exactly one directory name\n"
 msgstr "Podati je treba natanko eno ime mape\n"
 
-#: ../gio/glib-compile-schemas.c:2123
+#: ../gio/glib-compile-schemas.c:2162
 #, c-format
 msgid "No schema files found: "
 msgstr "Datotek sheme ni mogoče najti:"
 
-#: ../gio/glib-compile-schemas.c:2126
+#: ../gio/glib-compile-schemas.c:2165
 #, c-format
 msgid "doing nothing.\n"
 msgstr "je brez dela.\n"
 
-#: ../gio/glib-compile-schemas.c:2129
+#: ../gio/glib-compile-schemas.c:2168
 #, c-format
 msgid "removed existing output file.\n"
 msgstr "odstranjena obstoječa odvodna datoteka.\n"
 
-#: ../gio/glocalfile.c:635 ../gio/win32/gwinhttpfile.c:420
+#: ../gio/glocalfile.c:643 ../gio/win32/gwinhttpfile.c:420
 #, c-format
 msgid "Invalid filename %s"
 msgstr "Neveljavno ime datoteke %s"
 
-#: ../gio/glocalfile.c:1012
+#: ../gio/glocalfile.c:1037
+#, c-format
+msgid "Error getting filesystem info for %s: %s"
+msgstr "Napaka med pridobivanjem podrobnosti datotečnega sistema za %s: %s"
+
+#. Translators: This is an error message when trying to find
+#. * the enclosing (user visible) mount of a file, but none
+#. * exists.
+#.
+#: ../gio/glocalfile.c:1176
 #, c-format
-msgid "Error getting filesystem info: %s"
-msgstr "Napaka med branjem podrobnosti datotečnega sistema: %s"
+msgid "Containing mount for file %s not found"
+msgstr "Priklopne točke datoteke %s ni mogoče najti"
 
-#: ../gio/glocalfile.c:1180
-msgid "Can't rename root directory"
-msgstr "Ni mogoče preimenovati skrbniške mape"
+#: ../gio/glocalfile.c:1199
+msgid "Cant rename root directory"
+msgstr "Ni mogoče preimenovati korenske mape"
 
-#: ../gio/glocalfile.c:1200 ../gio/glocalfile.c:1226
+#: ../gio/glocalfile.c:1217 ../gio/glocalfile.c:1240
 #, c-format
-msgid "Error renaming file: %s"
-msgstr "Napaka med preimenovanjem datoteke: %s"
+msgid "Error renaming file %s: %s"
+msgstr "Napaka med preimenovanjem datoteke %s: %s"
 
-#: ../gio/glocalfile.c:1209
-msgid "Can't rename file, filename already exists"
+#: ../gio/glocalfile.c:1224
+msgid "Cant rename file, filename already exists"
 msgstr "Ni mogoče preimenovati datoteke, izbrano ime že obstaja"
 
-#: ../gio/glocalfile.c:1222 ../gio/glocalfile.c:2249 ../gio/glocalfile.c:2278
+#: ../gio/glocalfile.c:1237 ../gio/glocalfile.c:2253 ../gio/glocalfile.c:2281
 #: ../gio/glocalfile.c:2438 ../gio/glocalfileoutputstream.c:549
 msgid "Invalid filename"
 msgstr "Neveljavno ime datoteke"
 
-#: ../gio/glocalfile.c:1389 ../gio/glocalfile.c:1413
-msgid "Can't open directory"
-msgstr "Ni mogoče odpreti mape"
-
-#: ../gio/glocalfile.c:1397
+#: ../gio/glocalfile.c:1404 ../gio/glocalfile.c:1419
 #, c-format
-msgid "Error opening file: %s"
-msgstr "Napaka med odpiranjem datoteke: %s"
+msgid "Error opening file %s: %s"
+msgstr "Napaka med odpiranjem datoteke %s: %s"
 
-#: ../gio/glocalfile.c:1538
+#: ../gio/glocalfile.c:1544
 #, c-format
-msgid "Error removing file: %s"
-msgstr "Napaka med odstranjevanjem datoteke: %s"
+msgid "Error removing file %s: %s"
+msgstr "Napaka med odstranjevanjem datoteke %s: %s"
 
-#: ../gio/glocalfile.c:1922
+#: ../gio/glocalfile.c:1928
 #, c-format
-msgid "Error trashing file: %s"
-msgstr "Napaka ob premikanjem datoteke v smeti: %s"
+msgid "Error trashing file %s: %s"
+msgstr "Napaka med premikanjem datoteke %s v smeti: %s"
 
-#: ../gio/glocalfile.c:1945
+#: ../gio/glocalfile.c:1951
 #, c-format
 msgid "Unable to create trash dir %s: %s"
 msgstr "Ni mogoče ustvariti mape smeti %s: %s"
 
-#: ../gio/glocalfile.c:1966
-msgid "Unable to find toplevel directory for trash"
-msgstr "Ni mogoče najti vrhnje ravni smeti"
+#: ../gio/glocalfile.c:1971
+#, c-format
+msgid "Unable to find toplevel directory to trash %s"
+msgstr "Ni mogoče najti vrhnje ravni smeti %s"
+
+#: ../gio/glocalfile.c:2050 ../gio/glocalfile.c:2070
+#, c-format
+msgid "Unable to find or create trash directory for %s"
+msgstr "Ni mogoče najti oziroma ustvariti mape smeti za %s"
 
-#: ../gio/glocalfile.c:2045 ../gio/glocalfile.c:2065
-msgid "Unable to find or create trash directory"
-msgstr "Ni mogoče najti ali ustvariti mape smeti"
+#: ../gio/glocalfile.c:2105
+#, c-format
+msgid "Unable to create trashing info file for %s: %s"
+msgstr "Ni mogoče ustvariti datoteke podrobnosti smeti za %s: %s"
 
-#: ../gio/glocalfile.c:2099
+#: ../gio/glocalfile.c:2164
 #, c-format
-msgid "Unable to create trashing info file: %s"
-msgstr "Ni mogoče ustvariti datoteke podrobnosti: %s"
+msgid "Unable to trash file %s across filesystem boundaries"
+msgstr ""
+"Datoteke %s ni mogoče premakniti v smeti prek različnih datotečnih sistemov"
 
-#: ../gio/glocalfile.c:2157 ../gio/glocalfile.c:2162 ../gio/glocalfile.c:2219
-#: ../gio/glocalfile.c:2226
+#: ../gio/glocalfile.c:2168 ../gio/glocalfile.c:2224
 #, c-format
-msgid "Unable to trash file: %s"
-msgstr "Ni mogoče premakniti datoteke v smeti: %s"
+msgid "Unable to trash file %s: %s"
+msgstr "Datoteke %s ni mogoče premakniti v smeti: %s"
 
-#: ../gio/glocalfile.c:2227 ../glib/gregex.c:281
-msgid "internal error"
-msgstr "notranja napaka"
+#: ../gio/glocalfile.c:2230
+#, c-format
+msgid "Unable to trash file %s"
+msgstr "Datoteke %s ni mogoče premakniti v smeti"
 
-#: ../gio/glocalfile.c:2253
+#: ../gio/glocalfile.c:2256
 #, c-format
-msgid "Error creating directory: %s"
-msgstr "Napaka med ustvarjanjem mape: %s"
+msgid "Error creating directory %s: %s"
+msgstr "Napaka med ustvarjanjem mape %s: %s"
 
-#: ../gio/glocalfile.c:2282
+#: ../gio/glocalfile.c:2285
 #, c-format
 msgid "Filesystem does not support symbolic links"
 msgstr "Datotečni sistem ne podpira simbolnih povezav"
 
-#: ../gio/glocalfile.c:2286
+#: ../gio/glocalfile.c:2288
 #, c-format
-msgid "Error making symbolic link: %s"
-msgstr "Napaka med ustvarjanjem simbolne povezave: %s"
+msgid "Error making symbolic link %s: %s"
+msgstr "Napaka med ustvarjanjem simbolne povezave %s: %s"
+
+#: ../gio/glocalfile.c:2294 ../glib/gfileutils.c:2077
+msgid "Symbolic links not supported"
+msgstr "Simbolne povezave niso podprte"
 
-#: ../gio/glocalfile.c:2348 ../gio/glocalfile.c:2442
+#: ../gio/glocalfile.c:2349 ../gio/glocalfile.c:2384 ../gio/glocalfile.c:2441
 #, c-format
-msgid "Error moving file: %s"
-msgstr "Napaka med premikanjem datoteke: %s"
+msgid "Error moving file %s: %s"
+msgstr "Napaka med premikanjem datoteke %s: %s"
 
-#: ../gio/glocalfile.c:2371
-msgid "Can't move directory over directory"
+#: ../gio/glocalfile.c:2372
+msgid "Cant move directory over directory"
 msgstr "Ni mogoče premakniti mape čez mapo"
 
-#: ../gio/glocalfile.c:2398 ../gio/glocalfileoutputstream.c:925
-#: ../gio/glocalfileoutputstream.c:939 ../gio/glocalfileoutputstream.c:954
-#: ../gio/glocalfileoutputstream.c:970 ../gio/glocalfileoutputstream.c:984
+#: ../gio/glocalfile.c:2398 ../gio/glocalfileoutputstream.c:933
+#: ../gio/glocalfileoutputstream.c:947 ../gio/glocalfileoutputstream.c:962
+#: ../gio/glocalfileoutputstream.c:979 ../gio/glocalfileoutputstream.c:993
 msgid "Backup file creation failed"
 msgstr "Ustvarjanje varnostne kopije je spodletelo."
 
@@ -2032,102 +3169,103 @@ msgstr "Napaka med odstranjevanjem ciljne datoteke: %s"
 msgid "Move between mounts not supported"
 msgstr "Premikanje med priklopi ni podprto"
 
-#: ../gio/glocalfile.c:2623
+#: ../gio/glocalfile.c:2622
 #, c-format
 msgid "Could not determine the disk usage of %s: %s"
 msgstr "Ni mogoče določiti porabe diska %s: %s."
 
-#: ../gio/glocalfileinfo.c:721
+#: ../gio/glocalfileinfo.c:731
 msgid "Attribute value must be non-NULL"
 msgstr "Vrednost atributa ni mogoče določiti kot NULL"
 
-#: ../gio/glocalfileinfo.c:728
+#: ../gio/glocalfileinfo.c:738
 msgid "Invalid attribute type (string expected)"
 msgstr "Neveljavna vrsta atributa (pričakovan niz)"
 
-#: ../gio/glocalfileinfo.c:735
+#: ../gio/glocalfileinfo.c:745
 msgid "Invalid extended attribute name"
 msgstr "Neveljavno razširjeno ime atributa"
 
-#: ../gio/glocalfileinfo.c:775
-#, c-format
-msgid "Error setting extended attribute '%s': %s"
+#: ../gio/glocalfileinfo.c:785
+#, fuzzy, c-format
+#| msgid "Error setting extended attribute '%s': %s"
+msgid "Error setting extended attribute “%s”: %s"
 msgstr "Napaka med določanjem razširjenega atributa '%s': %s"
 
-#: ../gio/glocalfileinfo.c:1575
+#: ../gio/glocalfileinfo.c:1586
 msgid " (invalid encoding)"
 msgstr " (neveljavni nabor znakov)"
 
-#: ../gio/glocalfileinfo.c:1766 ../gio/glocalfileoutputstream.c:803
+#: ../gio/glocalfileinfo.c:1777 ../gio/glocalfileoutputstream.c:811
 #, c-format
-msgid "Error when getting information for file '%s': %s"
-msgstr "Napaka med pridobivanjem podatkov za datoteko '%s': %s"
+msgid "Error when getting information for file “%s”: %s"
+msgstr "Napaka med pridobivanjem podatkov za datoteko »%s«: %s"
 
-#: ../gio/glocalfileinfo.c:2017
+#: ../gio/glocalfileinfo.c:2028
 #, c-format
 msgid "Error when getting information for file descriptor: %s"
 msgstr "Napaka med potrjevanjem opisovalnika datoteke: %s"
 
-#: ../gio/glocalfileinfo.c:2062
+#: ../gio/glocalfileinfo.c:2073
 msgid "Invalid attribute type (uint32 expected)"
 msgstr "Neveljavna vrsta atributa (pričakovan uint32)"
 
-#: ../gio/glocalfileinfo.c:2080
+#: ../gio/glocalfileinfo.c:2091
 msgid "Invalid attribute type (uint64 expected)"
 msgstr "Neveljavna vrsta atributa (pričakovan uint64)"
 
-#: ../gio/glocalfileinfo.c:2099 ../gio/glocalfileinfo.c:2118
+#: ../gio/glocalfileinfo.c:2110 ../gio/glocalfileinfo.c:2129
 msgid "Invalid attribute type (byte string expected)"
 msgstr "Neveljavna vrsta atributa (pričakovan bitni niz)"
 
-#: ../gio/glocalfileinfo.c:2153
+#: ../gio/glocalfileinfo.c:2164
 msgid "Cannot set permissions on symlinks"
 msgstr "Ni mogoče določiti dovoljenj simbolnih povezav"
 
-#: ../gio/glocalfileinfo.c:2169
+#: ../gio/glocalfileinfo.c:2180
 #, c-format
 msgid "Error setting permissions: %s"
 msgstr "Napaka med določanjem dovoljenj: %s"
 
-#: ../gio/glocalfileinfo.c:2220
+#: ../gio/glocalfileinfo.c:2231
 #, c-format
 msgid "Error setting owner: %s"
 msgstr "Napaka med določanjem lastnika: %s"
 
-#: ../gio/glocalfileinfo.c:2243
+#: ../gio/glocalfileinfo.c:2254
 msgid "symlink must be non-NULL"
 msgstr "Simbolna povezava ne sme biti določena kot NULL"
 
-#: ../gio/glocalfileinfo.c:2253 ../gio/glocalfileinfo.c:2272
-#: ../gio/glocalfileinfo.c:2283
+#: ../gio/glocalfileinfo.c:2264 ../gio/glocalfileinfo.c:2283
+#: ../gio/glocalfileinfo.c:2294
 #, c-format
 msgid "Error setting symlink: %s"
 msgstr "Napaka med določanjem simbolne povezave: %s"
 
-#: ../gio/glocalfileinfo.c:2262
+#: ../gio/glocalfileinfo.c:2273
 msgid "Error setting symlink: file is not a symlink"
 msgstr ""
 "Napaka med določevanjem simbolne povezave; datoteka ni simbolna povezava"
 
-#: ../gio/glocalfileinfo.c:2388
+#: ../gio/glocalfileinfo.c:2399
 #, c-format
 msgid "Error setting modification or access time: %s"
 msgstr "Napaka med določanjem sprememb ali časa dostopa: %s"
 
-#: ../gio/glocalfileinfo.c:2411
+#: ../gio/glocalfileinfo.c:2422
 msgid "SELinux context must be non-NULL"
 msgstr "SELinux atributa ni mogoče določiti kot NULL"
 
-#: ../gio/glocalfileinfo.c:2426
+#: ../gio/glocalfileinfo.c:2437
 #, c-format
 msgid "Error setting SELinux context: %s"
 msgstr "Napaka nastavitve vsebine SELinux: %s"
 
-#: ../gio/glocalfileinfo.c:2433
+#: ../gio/glocalfileinfo.c:2444
 msgid "SELinux is not enabled on this system"
 msgstr "Na tem sistemu SELinux ni omogočen"
 
-#: ../gio/glocalfileinfo.c:2525
+#: ../gio/glocalfileinfo.c:2536
 #, c-format
 msgid "Setting attribute %s not supported"
 msgstr "Določanje atributa %s ni podprto"
@@ -2139,7 +3277,7 @@ msgstr "Napaka med branjem iz datoteke: %s"
 
 #: ../gio/glocalfileinputstream.c:199 ../gio/glocalfileinputstream.c:211
 #: ../gio/glocalfileinputstream.c:225 ../gio/glocalfileinputstream.c:333
-#: ../gio/glocalfileoutputstream.c:456 ../gio/glocalfileoutputstream.c:1002
+#: ../gio/glocalfileoutputstream.c:456 ../gio/glocalfileoutputstream.c:1011
 #, c-format
 msgid "Error seeking in file: %s"
 msgstr "Napaka med iskanjem v datoteki: %s"
@@ -2175,43 +3313,43 @@ msgstr "Napaka med ustvarjanjem varnostne kopije: %s"
 msgid "Error renaming temporary file: %s"
 msgstr "Napaka med preimenovanjem začasne datoteke: %s"
 
-#: ../gio/glocalfileoutputstream.c:502 ../gio/glocalfileoutputstream.c:1053
+#: ../gio/glocalfileoutputstream.c:502 ../gio/glocalfileoutputstream.c:1062
 #, c-format
 msgid "Error truncating file: %s"
 msgstr "Napaka med obrezovanjem datoteke: %s"
 
-#: ../gio/glocalfileoutputstream.c:555 ../gio/glocalfileoutputstream.c:785
-#: ../gio/glocalfileoutputstream.c:1034 ../gio/gsubprocess.c:360
+#: ../gio/glocalfileoutputstream.c:555 ../gio/glocalfileoutputstream.c:793
+#: ../gio/glocalfileoutputstream.c:1043 ../gio/gsubprocess.c:380
 #, c-format
-msgid "Error opening file '%s': %s"
-msgstr "Napaka med odpiranjem datoteke '%s': %s"
+msgid "Error opening file “%s”: %s"
+msgstr "Napaka med odpiranjem datoteke »%s«: %s"
 
-#: ../gio/glocalfileoutputstream.c:816
+#: ../gio/glocalfileoutputstream.c:824
 msgid "Target file is a directory"
 msgstr "Ciljna datoteka je mapa"
 
-#: ../gio/glocalfileoutputstream.c:821
+#: ../gio/glocalfileoutputstream.c:829
 msgid "Target file is not a regular file"
 msgstr "Ciljna datoteka ni običajna datoteka"
 
-#: ../gio/glocalfileoutputstream.c:833
+#: ../gio/glocalfileoutputstream.c:841
 msgid "The file was externally modified"
 msgstr "Datoteka je bila zunanje spremenjena"
 
-#: ../gio/glocalfileoutputstream.c:1018
+#: ../gio/glocalfileoutputstream.c:1027
 #, c-format
 msgid "Error removing old file: %s"
 msgstr "Napaka med odstranjevanjem datoteke: %s"
 
-#: ../gio/gmemoryinputstream.c:471 ../gio/gmemoryoutputstream.c:771
+#: ../gio/gmemoryinputstream.c:474 ../gio/gmemoryoutputstream.c:772
 msgid "Invalid GSeekType supplied"
 msgstr "Privzet neveljaven GSeekType"
 
-#: ../gio/gmemoryinputstream.c:481
+#: ../gio/gmemoryinputstream.c:484
 msgid "Invalid seek request"
 msgstr "Neveljavna zahteva iskanja"
 
-#: ../gio/gmemoryinputstream.c:505
+#: ../gio/gmemoryinputstream.c:508
 msgid "Cannot truncate GMemoryInputStream"
 msgstr "Ni mogoče razčleniti GMemoryInputStream"
 
@@ -2231,11 +3369,11 @@ msgstr ""
 "Količina pomnilnika zahtevana za pisanje je večja kot je razpoložljivi "
 "prostor naslova"
 
-#: ../gio/gmemoryoutputstream.c:781
+#: ../gio/gmemoryoutputstream.c:782
 msgid "Requested seek before the beginning of the stream"
 msgstr "Zahtevano iskanje pred začetkom pretoka"
 
-#: ../gio/gmemoryoutputstream.c:796
+#: ../gio/gmemoryoutputstream.c:797
 msgid "Requested seek beyond the end of the stream"
 msgstr "Zahtevano iskanje za koncem pretoka"
 
@@ -2243,57 +3381,72 @@ msgstr "Zahtevano iskanje za koncem pretoka"
 #. * message for mount objects that
 #. * don't implement unmount.
 #: ../gio/gmount.c:393
-msgid "mount doesn't implement \"unmount\""
+#, fuzzy
+#| msgid "mount doesn't implement \"unmount\""
+msgid "mount doesn’t implement “unmount”"
 msgstr "enota ne podpira možnosti \"odklopi\""
 
 #. Translators: This is an error
 #. * message for mount objects that
 #. * don't implement eject.
 #: ../gio/gmount.c:469
-msgid "mount doesn't implement \"eject\""
+#, fuzzy
+#| msgid "mount doesn't implement \"eject\""
+msgid "mount doesn’t implement “eject”"
 msgstr "enota ne podpira možnosti \"izvrzi\""
 
 #. Translators: This is an error
 #. * message for mount objects that
 #. * don't implement any of unmount or unmount_with_operation.
 #: ../gio/gmount.c:547
-msgid "mount doesn't implement \"unmount\" or \"unmount_with_operation\""
+#, fuzzy
+#| msgid "mount doesn't implement \"unmount\" or \"unmount_with_operation\""
+msgid "mount doesn’t implement “unmount” or “unmount_with_operation”"
 msgstr "enota ne podpira možnosti \"odklopi\" ali \"odklopi_z_dejanjem\""
 
 #. Translators: This is an error
 #. * message for mount objects that
 #. * don't implement any of eject or eject_with_operation.
 #: ../gio/gmount.c:632
-msgid "mount doesn't implement \"eject\" or \"eject_with_operation\""
+#, fuzzy
+#| msgid "mount doesn't implement \"eject\" or \"eject_with_operation\""
+msgid "mount doesn’t implement “eject” or “eject_with_operation”"
 msgstr "enota ne podpira možnosti \"izvrzi\" ali \"izvrzi_z_dejanjem\""
 
 #. Translators: This is an error
 #. * message for mount objects that
 #. * don't implement remount.
 #: ../gio/gmount.c:720
-msgid "mount doesn't implement \"remount\""
+#, fuzzy
+#| msgid "mount doesn't implement \"remount\""
+msgid "mount doesn’t implement “remount”"
 msgstr "enota ne podpira možnosti \"ponovnega priklopa\""
 
 #. Translators: This is an error
 #. * message for mount objects that
 #. * don't implement content type guessing.
 #: ../gio/gmount.c:802
-msgid "mount doesn't implement content type guessing"
+#, fuzzy
+#| msgid "mount doesn't implement content type guessing"
+msgid "mount doesn’t implement content type guessing"
 msgstr "priklop ne podpira ugibanja vsebine vrste"
 
 #. Translators: This is an error
 #. * message for mount objects that
 #. * don't implement content type guessing.
 #: ../gio/gmount.c:889
-msgid "mount doesn't implement synchronous content type guessing"
+#, fuzzy
+#| msgid "mount doesn't implement synchronous content type guessing"
+msgid "mount doesn’t implement synchronous content type guessing"
 msgstr "priklop ne podpira usklajevanja ugibanja vsebine vrste"
 
 #: ../gio/gnetworkaddress.c:378
-#, c-format
-msgid "Hostname '%s' contains '[' but not ']'"
+#, fuzzy, c-format
+#| msgid "Hostname '%s' contains '[' but not ']'"
+msgid "Hostname “%s” contains “[” but not “]”"
 msgstr "Ime gostitelja '%s' vsebuje '[' vendar ne tudi ']'"
 
-#: ../gio/gnetworkmonitorbase.c:206 ../gio/gnetworkmonitorbase.c:309
+#: ../gio/gnetworkmonitorbase.c:206 ../gio/gnetworkmonitorbase.c:310
 msgid "Network unreachable"
 msgstr "Omrežje ni dosegljivo"
 
@@ -2315,45 +3468,47 @@ msgstr "Ni mogoče ustvariti nadzornika omrežja:"
 msgid "Could not get network status: "
 msgstr "Ni mogoče pridobiti stanja omrežja:"
 
-#: ../gio/gnetworkmonitornm.c:326
+#: ../gio/gnetworkmonitornm.c:329
 #, c-format
 msgid "NetworkManager version too old"
 msgstr "Različica programa NetworkManager je prestara"
 
 #: ../gio/goutputstream.c:212 ../gio/goutputstream.c:560
-msgid "Output stream doesn't implement write"
+msgid "Output stream doesnt implement write"
 msgstr "Odvodni pretok ne podpira pisanja"
 
-#: ../gio/goutputstream.c:521 ../gio/goutputstream.c:1222
+#: ../gio/goutputstream.c:521 ../gio/goutputstream.c:1224
 msgid "Source stream is already closed"
 msgstr "Izvorni pretok je že zaprt"
 
-#: ../gio/gresolver.c:330 ../gio/gthreadedresolver.c:116
+#: ../gio/gresolver.c:342 ../gio/gthreadedresolver.c:116
 #: ../gio/gthreadedresolver.c:126
 #, c-format
-msgid "Error resolving '%s': %s"
-msgstr "Napaka med razreševanjem '%s': %s"
+msgid "Error resolving “%s”: %s"
+msgstr "Napaka med razreševanjem »%s«: %s"
 
-#: ../gio/gresource.c:304 ../gio/gresource.c:555 ../gio/gresource.c:572
-#: ../gio/gresource.c:693 ../gio/gresource.c:762 ../gio/gresource.c:823
-#: ../gio/gresource.c:903 ../gio/gresourcefile.c:453
+#: ../gio/gresource.c:606 ../gio/gresource.c:857 ../gio/gresource.c:874
+#: ../gio/gresource.c:998 ../gio/gresource.c:1070 ../gio/gresource.c:1143
+#: ../gio/gresource.c:1213 ../gio/gresourcefile.c:453
 #: ../gio/gresourcefile.c:576 ../gio/gresourcefile.c:713
 #, c-format
-msgid "The resource at '%s' does not exist"
-msgstr "Vir '%s' ne obstaja"
+msgid "The resource at “%s” does not exist"
+msgstr "Vir »%s« ne obstaja."
 
-#: ../gio/gresource.c:469
+#: ../gio/gresource.c:771
 #, c-format
-msgid "The resource at '%s' failed to decompress"
-msgstr "Vira '%s' ni mogoče razširiti"
+msgid "The resource at “%s” failed to decompress"
+msgstr "Vira »%s« ni mogoče razširiti"
 
 #: ../gio/gresourcefile.c:709
 #, c-format
-msgid "The resource at '%s' is not a directory"
-msgstr "VIr '%s' ni mapa"
+msgid "The resource at “%s” is not a directory"
+msgstr "VIr »%s« ni mapa."
 
 #: ../gio/gresourcefile.c:917
-msgid "Input stream doesn't implement seek"
+#, fuzzy
+#| msgid "Input stream doesn't implement seek"
+msgid "Input stream doesn’t implement seek"
 msgstr "Vhodni pretok ne podpira iskanja"
 
 #: ../gio/gresource-tool.c:494
@@ -2400,9 +3555,23 @@ msgid "FILE PATH"
 msgstr "DATOTEKA POT"
 
 #: ../gio/gresource-tool.c:534
+#, fuzzy
+#| msgid ""
+#| "Usage:\n"
+#| "  gresource [--section SECTION] COMMAND [ARGS...]\n"
+#| "\n"
+#| "Commands:\n"
+#| "  help                      Show this information\n"
+#| "  sections                  List resource sections\n"
+#| "  list                      List resources\n"
+#| "  details                   List resources with details\n"
+#| "  extract                   Extract a resource\n"
+#| "\n"
+#| "Use 'gresource help COMMAND' to get detailed help.\n"
+#| "\n"
 msgid ""
 "Usage:\n"
-"  gresource [--section SECTION] COMMAND [ARGS...]\n"
+"  gresource [--section SECTION] COMMAND [ARGS]\n"
 "\n"
 "Commands:\n"
 "  help                      Show this information\n"
@@ -2411,7 +3580,7 @@ msgid ""
 "  details                   List resources with details\n"
 "  extract                   Extract a resource\n"
 "\n"
-"Use 'gresource help COMMAND' to get detailed help.\n"
+"Use “gresource help COMMAND” to get detailed help.\n"
 "\n"
 msgstr ""
 "Uporaba:\n"
@@ -2446,7 +3615,7 @@ msgstr ""
 msgid "  SECTION   An (optional) elf section name\n"
 msgstr "  ODSEK     Ime (izbirno) izbora elf\n"
 
-#: ../gio/gresource-tool.c:559 ../gio/gsettings-tool.c:639
+#: ../gio/gresource-tool.c:559 ../gio/gsettings-tool.c:656
 msgid "  COMMAND   The (optional) command to explain\n"
 msgstr "  UKAZ      Ukaz (izbirno) za razlago\n"
 
@@ -2479,20 +3648,20 @@ msgid "  PATH      A resource path\n"
 msgstr "  POT       Pot vira\n"
 
 #: ../gio/gsettings-tool.c:51 ../gio/gsettings-tool.c:72
-#: ../gio/gsettings-tool.c:830
+#: ../gio/gsettings-tool.c:853
 #, c-format
-msgid "No such schema '%s'\n"
-msgstr "Shema '%s' ne obstaja.\n"
+msgid "No such schema “%s”\n"
+msgstr "Shema »%s« ne obstaja.\n"
 
 #: ../gio/gsettings-tool.c:57
 #, c-format
-msgid "Schema '%s' is not relocatable (path must not be specified)\n"
-msgstr "Shema '%s' ni dodeljiva (pot ne sme biti določena)\n"
+msgid "Schema “%s” is not relocatable (path must not be specified)\n"
+msgstr "Shema »%s« ni dodeljiva (pot ne sme biti določena)\n"
 
 #: ../gio/gsettings-tool.c:78
 #, c-format
-msgid "Schema '%s' is relocatable (path must be specified)\n"
-msgstr "Shema '%s' je dodeljiva (pot mora biti določena)\n"
+msgid "Schema “%s” is relocatable (path must be specified)\n"
+msgstr "Shema »%s« je dodeljiva (pot mora biti določena)\n"
 
 #: ../gio/gsettings-tool.c:92
 #, c-format
@@ -2514,38 +3683,38 @@ msgstr "Zapis poti se mora končati s poševnico (/)\n"
 msgid "Path must not contain two adjacent slashes (//)\n"
 msgstr "Pot ne sme vsebovati dveh zaporednih poševnic (//)\n"
 
-#: ../gio/gsettings-tool.c:481
+#: ../gio/gsettings-tool.c:491
 #, c-format
 msgid "The provided value is outside of the valid range\n"
 msgstr "Ponujena vrednost je izven veljavnega območja\n"
 
-#: ../gio/gsettings-tool.c:488
+#: ../gio/gsettings-tool.c:498
 #, c-format
 msgid "The key is not writable\n"
 msgstr "Ključ ni zapisljiv\n"
 
-#: ../gio/gsettings-tool.c:524
+#: ../gio/gsettings-tool.c:534
 msgid "List the installed (non-relocatable) schemas"
 msgstr "Izpiši nameščene (nedodeljive) sheme"
 
-#: ../gio/gsettings-tool.c:530
+#: ../gio/gsettings-tool.c:540
 msgid "List the installed relocatable schemas"
 msgstr "Seznam naloženih dodeljivih SHEM"
 
-#: ../gio/gsettings-tool.c:536
+#: ../gio/gsettings-tool.c:546
 msgid "List the keys in SCHEMA"
 msgstr "Izpiši seznam ključev SHEME"
 
-#: ../gio/gsettings-tool.c:537 ../gio/gsettings-tool.c:543
-#: ../gio/gsettings-tool.c:580
+#: ../gio/gsettings-tool.c:547 ../gio/gsettings-tool.c:553
+#: ../gio/gsettings-tool.c:596
 msgid "SCHEMA[:PATH]"
 msgstr "SHEMA[:POT]"
 
-#: ../gio/gsettings-tool.c:542
+#: ../gio/gsettings-tool.c:552
 msgid "List the children of SCHEMA"
 msgstr "Izpiši seznam podrejenih predmetov SHEME"
 
-#: ../gio/gsettings-tool.c:548
+#: ../gio/gsettings-tool.c:558
 msgid ""
 "List keys and values, recursively\n"
 "If no SCHEMA is given, list all keys\n"
@@ -2553,44 +3722,49 @@ msgstr ""
 "Rekurzivno izpiši ključe in vrednosti,\n"
 "če ni podanana SHEMA, pa izpiši vse ključe\n"
 
-#: ../gio/gsettings-tool.c:550
+#: ../gio/gsettings-tool.c:560
 msgid "[SCHEMA[:PATH]]"
 msgstr "[SHEMA[:POT]]"
 
-#: ../gio/gsettings-tool.c:555
+#: ../gio/gsettings-tool.c:565
 msgid "Get the value of KEY"
 msgstr "Pridobi vrednost KLJUČA"
 
-#: ../gio/gsettings-tool.c:556 ../gio/gsettings-tool.c:562
-#: ../gio/gsettings-tool.c:574 ../gio/gsettings-tool.c:586
+#: ../gio/gsettings-tool.c:566 ../gio/gsettings-tool.c:572
+#: ../gio/gsettings-tool.c:578 ../gio/gsettings-tool.c:590
+#: ../gio/gsettings-tool.c:602
 msgid "SCHEMA[:PATH] KEY"
 msgstr "SHEMA[:POT] KLJUČ"
 
-#: ../gio/gsettings-tool.c:561
+#: ../gio/gsettings-tool.c:571
 msgid "Query the range of valid values for KEY"
 msgstr "Poizvej območje veljavnih vrednosti KLJUČA"
 
-#: ../gio/gsettings-tool.c:567
+#: ../gio/gsettings-tool.c:577
+msgid "Query the description for KEY"
+msgstr "Preveri opis za KLJUČ"
+
+#: ../gio/gsettings-tool.c:583
 msgid "Set the value of KEY to VALUE"
 msgstr "Nastavi vrednosti KLJUČA na VREDNOST"
 
-#: ../gio/gsettings-tool.c:568
+#: ../gio/gsettings-tool.c:584
 msgid "SCHEMA[:PATH] KEY VALUE"
 msgstr "SHEMA[:POT] KLJUČ VREDNOST"
 
-#: ../gio/gsettings-tool.c:573
+#: ../gio/gsettings-tool.c:589
 msgid "Reset KEY to its default value"
 msgstr "Ponastavi KLJUČ na privzeto vrednost"
 
-#: ../gio/gsettings-tool.c:579
+#: ../gio/gsettings-tool.c:595
 msgid "Reset all keys in SCHEMA to their defaults"
 msgstr "Ponastavi vse ključe SHEME na privzete vrednosti"
 
-#: ../gio/gsettings-tool.c:585
+#: ../gio/gsettings-tool.c:601
 msgid "Check if KEY is writable"
 msgstr "Preveri ali je KLJUČ zapisljiv"
 
-#: ../gio/gsettings-tool.c:591
+#: ../gio/gsettings-tool.c:607
 msgid ""
 "Monitor KEY for changes.\n"
 "If no KEY is specified, monitor all keys in SCHEMA.\n"
@@ -2600,15 +3774,39 @@ msgstr ""
 "V kolikor KLJUČ ni določen, nadzoruj vse ključe SHEME.\n"
 "Pritisni ^C za zaustavitev nadzora.\n"
 
-#: ../gio/gsettings-tool.c:594
+#: ../gio/gsettings-tool.c:610
 msgid "SCHEMA[:PATH] [KEY]"
 msgstr "SHEMA[:POT] [KLJUČ]"
 
-#: ../gio/gsettings-tool.c:606
+#: ../gio/gsettings-tool.c:622
+#, fuzzy
+#| msgid ""
+#| "Usage:\n"
+#| "  gsettings --version\n"
+#| "  gsettings [--schemadir SCHEMADIR] COMMAND [ARGS...]\n"
+#| "\n"
+#| "Commands:\n"
+#| "  help                      Show this information\n"
+#| "  list-schemas              List installed schemas\n"
+#| "  list-relocatable-schemas  List relocatable schemas\n"
+#| "  list-keys                 List keys in a schema\n"
+#| "  list-children             List children of a schema\n"
+#| "  list-recursively          List keys and values, recursively\n"
+#| "  range                     Queries the range of a key\n"
+#| "  describe                  Queries the description of a key\n"
+#| "  get                       Get the value of a key\n"
+#| "  set                       Set the value of a key\n"
+#| "  reset                     Reset the value of a key\n"
+#| "  reset-recursively         Reset all values in a given schema\n"
+#| "  writable                  Check if a key is writable\n"
+#| "  monitor                   Watch for changes\n"
+#| "\n"
+#| "Use 'gsettings help COMMAND' to get detailed help.\n"
+#| "\n"
 msgid ""
 "Usage:\n"
 "  gsettings --version\n"
-"  gsettings [--schemadir SCHEMADIR] COMMAND [ARGS...]\n"
+"  gsettings [--schemadir SCHEMADIR] COMMAND [ARGS]\n"
 "\n"
 "Commands:\n"
 "  help                      Show this information\n"
@@ -2618,6 +3816,7 @@ msgid ""
 "  list-children             List children of a schema\n"
 "  list-recursively          List keys and values, recursively\n"
 "  range                     Queries the range of a key\n"
+"  describe                  Queries the description of a key\n"
 "  get                       Get the value of a key\n"
 "  set                       Set the value of a key\n"
 "  reset                     Reset the value of a key\n"
@@ -2625,10 +3824,11 @@ msgid ""
 "  writable                  Check if a key is writable\n"
 "  monitor                   Watch for changes\n"
 "\n"
-"Use 'gsettings help COMMAND' to get detailed help.\n"
+"Use “gsettings help COMMAND” to get detailed help.\n"
 "\n"
 msgstr ""
 "Uporaba:\n"
+"  gsettings --version\n"
 "  gsettings [--schemadir MAPASHEM] UKAZ [ARGUMENTI ...]\n"
 "\n"
 "Ukazi:\n"
@@ -2639,6 +3839,7 @@ msgstr ""
 "  list-children             Izpiši seznam podrejenih shem\n"
 "  list-recursively          Rekurzivno izpiši seznam ključev in vrednosti\n"
 "  range                     Izvede poizvedbo območja ključa\n"
+"  describe                  Izvede poizvedbo opisa ključa\n"
 "  get                       Pridobi vrednost ključa\n"
 "  set                       Določi vrednost ključa\n"
 "  reset                     Počisti vrednost ključa\n"
@@ -2649,7 +3850,7 @@ msgstr ""
 "Z ukazom 'gsettings help UKAZ' se izpiše podrobna pomoč.\n"
 "\n"
 
-#: ../gio/gsettings-tool.c:629
+#: ../gio/gsettings-tool.c:646
 #, c-format
 msgid ""
 "Usage:\n"
@@ -2664,11 +3865,11 @@ msgstr ""
 "%s\n"
 "\n"
 
-#: ../gio/gsettings-tool.c:635
+#: ../gio/gsettings-tool.c:652
 msgid "  SCHEMADIR A directory to search for additional schemas\n"
 msgstr "  MAPASHEM  Mapa za iskanje dodatnih shem\n"
 
-#: ../gio/gsettings-tool.c:643
+#: ../gio/gsettings-tool.c:660
 msgid ""
 "  SCHEMA    The name of the schema\n"
 "  PATH      The path, for relocatable schemas\n"
@@ -2676,178 +3877,178 @@ msgstr ""
 "  SHEMA         Ime sheme\n"
 "  POT              Pot do dodeljive sheme\n"
 
-#: ../gio/gsettings-tool.c:648
+#: ../gio/gsettings-tool.c:665
 msgid "  KEY       The (optional) key within the schema\n"
 msgstr "  KLJUČ           Ključ (izbirno) znotraj sheme\n"
 
-#: ../gio/gsettings-tool.c:652
+#: ../gio/gsettings-tool.c:669
 msgid "  KEY       The key within the schema\n"
 msgstr "  KLJUČ           Ključ znotraj sheme\n"
 
-#: ../gio/gsettings-tool.c:656
+#: ../gio/gsettings-tool.c:673
 msgid "  VALUE     The value to set\n"
 msgstr "  VREDNOST   Vrednost za nastavitev\n"
 
-#: ../gio/gsettings-tool.c:711
+#: ../gio/gsettings-tool.c:728
 #, c-format
 msgid "Could not load schemas from %s: %s\n"
 msgstr "Ni mogoče odpreti shem iz %s: %s\n"
 
-#: ../gio/gsettings-tool.c:723
+#: ../gio/gsettings-tool.c:740
 #, c-format
 msgid "No schemas installed\n"
 msgstr "Ni nameščenih shem\n"
 
-#: ../gio/gsettings-tool.c:788
+#: ../gio/gsettings-tool.c:811
 #, c-format
 msgid "Empty schema name given\n"
 msgstr "Ni podanega imena sheme.\n"
 
-#: ../gio/gsettings-tool.c:843
+#: ../gio/gsettings-tool.c:866
 #, c-format
-msgid "No such key '%s'\n"
-msgstr "Ključ '%s' ne obstaja.\n"
+msgid "No such key “%s”\n"
+msgstr "Ključ »%s« ne obstaja.\n"
 
-#: ../gio/gsocket.c:364
+#: ../gio/gsocket.c:379
 msgid "Invalid socket, not initialized"
 msgstr "Neveljaven vtič, ni zagnano"
 
-#: ../gio/gsocket.c:371
+#: ../gio/gsocket.c:386
 #, c-format
 msgid "Invalid socket, initialization failed due to: %s"
 msgstr "Neveljaven vtič, zaganjanje je spodletelo: %s"
 
-#: ../gio/gsocket.c:379
+#: ../gio/gsocket.c:394
 msgid "Socket is already closed"
 msgstr "Vtič je že zaprt"
 
-#: ../gio/gsocket.c:394 ../gio/gsocket.c:2751 ../gio/gsocket.c:3896
-#: ../gio/gsocket.c:3951
+#: ../gio/gsocket.c:409 ../gio/gsocket.c:2765 ../gio/gsocket.c:3950
+#: ../gio/gsocket.c:4008
 msgid "Socket I/O timed out"
 msgstr "Vtič V/I naprave je časovno potekel"
 
-#: ../gio/gsocket.c:526
+#: ../gio/gsocket.c:541
 #, c-format
 msgid "creating GSocket from fd: %s"
 msgstr "ustvarjanje GSocet preko fd: %s"
 
-#: ../gio/gsocket.c:554 ../gio/gsocket.c:608 ../gio/gsocket.c:615
+#: ../gio/gsocket.c:570 ../gio/gsocket.c:624 ../gio/gsocket.c:631
 #, c-format
 msgid "Unable to create socket: %s"
 msgstr "Ni mogoče ustvariti vtiča: %s"
 
-#: ../gio/gsocket.c:608
+#: ../gio/gsocket.c:624
 msgid "Unknown family was specified"
 msgstr "Določena je neznana družina"
 
-#: ../gio/gsocket.c:615
+#: ../gio/gsocket.c:631
 msgid "Unknown protocol was specified"
 msgstr "Določen je neznan protokol"
 
-#: ../gio/gsocket.c:1104
+#: ../gio/gsocket.c:1122
 #, c-format
 msgid "Cannot use datagram operations on a non-datagram socket."
 msgstr "Ni mogoče uporabiti opravil datagrama na vtiču, ki jih ne podpira."
 
-#: ../gio/gsocket.c:1121
+#: ../gio/gsocket.c:1139
 #, c-format
 msgid "Cannot use datagram operations on a socket with a timeout set."
 msgstr ""
 "Ni mogoče uporabiti opravil datagrama na vtiču z nastavljenim časovnim "
 "pretekom"
 
-#: ../gio/gsocket.c:1925
+#: ../gio/gsocket.c:1943
 #, c-format
 msgid "could not get local address: %s"
 msgstr "ni mogoče pridobiti krajevnega naslova: %s"
 
-#: ../gio/gsocket.c:1968
+#: ../gio/gsocket.c:1986
 #, c-format
 msgid "could not get remote address: %s"
 msgstr "ni mogoče pridobiti oddaljenega naslova: %s"
 
-#: ../gio/gsocket.c:2034
+#: ../gio/gsocket.c:2052
 #, c-format
 msgid "could not listen: %s"
 msgstr "ni mogoče slediti: %s"
 
-#: ../gio/gsocket.c:2133
+#: ../gio/gsocket.c:2151
 #, c-format
 msgid "Error binding to address: %s"
 msgstr "Napaka vezanjem na naslov: %s"
 
-#: ../gio/gsocket.c:2248 ../gio/gsocket.c:2285
+#: ../gio/gsocket.c:2266 ../gio/gsocket.c:2303
 #, c-format
 msgid "Error joining multicast group: %s"
 msgstr "Napaka povezovanja v skupino za večsmerno oddajanje: %s"
 
-#: ../gio/gsocket.c:2249 ../gio/gsocket.c:2286
+#: ../gio/gsocket.c:2267 ../gio/gsocket.c:2304
 #, c-format
 msgid "Error leaving multicast group: %s"
 msgstr "Napaka zapuščanja skupine za večsmerno oddajanje: %s"
 
-#: ../gio/gsocket.c:2250
+#: ../gio/gsocket.c:2268
 msgid "No support for source-specific multicast"
 msgstr "Ni podpore za večsmerno oddajanje lastno viru"
 
-#: ../gio/gsocket.c:2470
+#: ../gio/gsocket.c:2488
 #, c-format
 msgid "Error accepting connection: %s"
 msgstr "Napaka med sprejemanjem povezave: %s"
 
-#: ../gio/gsocket.c:2593
+#: ../gio/gsocket.c:2609
 msgid "Connection in progress"
 msgstr "Povezava v teku"
 
-#: ../gio/gsocket.c:2644
+#: ../gio/gsocket.c:2658
 msgid "Unable to get pending error: "
 msgstr "Ni mogoče pridobiti uvrščene napake:"
 
-#: ../gio/gsocket.c:2816
+#: ../gio/gsocket.c:2828
 #, c-format
 msgid "Error receiving data: %s"
 msgstr "Napaka med prejemanjem podatkov: %s"
 
-#: ../gio/gsocket.c:3013
+#: ../gio/gsocket.c:3023
 #, c-format
 msgid "Error sending data: %s"
 msgstr "Napaka med pošiljanjem podatkov: %s"
 
-#: ../gio/gsocket.c:3200
+#: ../gio/gsocket.c:3210
 #, c-format
 msgid "Unable to shutdown socket: %s"
 msgstr "Ni mogoče izklopiti vtiča: %s"
 
-#: ../gio/gsocket.c:3281
+#: ../gio/gsocket.c:3291
 #, c-format
 msgid "Error closing socket: %s"
 msgstr "Napaka med zapiranjem vtiča: %s"
 
-#: ../gio/gsocket.c:3889
+#: ../gio/gsocket.c:3943
 #, c-format
 msgid "Waiting for socket condition: %s"
 msgstr "Čakanje na stanje vtiča: %s"
 
-#: ../gio/gsocket.c:4361 ../gio/gsocket.c:4441 ../gio/gsocket.c:4619
+#: ../gio/gsocket.c:4417 ../gio/gsocket.c:4497 ../gio/gsocket.c:4675
 #, c-format
 msgid "Error sending message: %s"
 msgstr "Napaka med pošiljanjem sporočila: %s"
 
-#: ../gio/gsocket.c:4385
+#: ../gio/gsocket.c:4441
 msgid "GSocketControlMessage not supported on Windows"
 msgstr "Predmet GSocketControlMessage na sistemih Windows ni podprt"
 
-#: ../gio/gsocket.c:4840 ../gio/gsocket.c:4913 ../gio/gsocket.c:5140
+#: ../gio/gsocket.c:4894 ../gio/gsocket.c:4967 ../gio/gsocket.c:5193
 #, c-format
 msgid "Error receiving message: %s"
 msgstr "Napaka med prejemanjem sporočila: %s"
 
-#: ../gio/gsocket.c:5412
+#: ../gio/gsocket.c:5465
 #, c-format
 msgid "Unable to read socket credentials: %s"
 msgstr "Ni mogoče prebrati poveril vtiča: %s."
 
-#: ../gio/gsocket.c:5421
+#: ../gio/gsocket.c:5474
 msgid "g_socket_get_credentials not implemented for this OS"
 msgstr "Operacijski sistem ne podpira možnosti g_socket_get_credentials"
 
@@ -2875,8 +4076,8 @@ msgstr "Posredovanje preko ne-TCP povezave ni podprto."
 
 #: ../gio/gsocketclient.c:1110 ../gio/gsocketclient.c:1561
 #, c-format
-msgid "Proxy protocol '%s' is not supported."
-msgstr "Protokol posredniški strežnika '%s' ni podprt."
+msgid "Proxy protocol “%s” is not supported."
+msgstr "Protokol posredniškega strežnika »%s« ni podprt."
 
 #: ../gio/gsocketlistener.c:218
 msgid "Listener is already closed"
@@ -2887,8 +4088,9 @@ msgid "Added socket is closed"
 msgstr "Dodan vtič je zaprt"
 
 #: ../gio/gsocks4aproxy.c:118
-#, c-format
-msgid "SOCKSv4 does not support IPv6 address '%s'"
+#, fuzzy, c-format
+#| msgid "SOCKSv4 does not support IPv6 address '%s'"
+msgid "SOCKSv4 does not support IPv6 address “%s”"
 msgstr "SOCKSv4 nima podpore za naslove IPv6 '%s'"
 
 #: ../gio/gsocks4aproxy.c:136
@@ -2897,8 +4099,8 @@ msgstr "Uporabniško ime je predolgo za protokol SOCKSv4"
 
 #: ../gio/gsocks4aproxy.c:153
 #, c-format
-msgid "Hostname '%s' is too long for SOCKSv4 protocol"
-msgstr "Ime gostitelja '%s' je predolgo za protokol SOCKSv4"
+msgid "Hostname “%s” is too long for SOCKSv4 protocol"
+msgstr "Ime gostitelja »%s« je predolgo za protokol SOCKSv4"
 
 #: ../gio/gsocks4aproxy.c:179
 msgid "The server is not a SOCKSv4 proxy server."
@@ -2935,8 +4137,8 @@ msgstr ""
 
 #: ../gio/gsocks5proxy.c:286
 #, c-format
-msgid "Hostname '%s' is too long for SOCKSv5 protocol"
-msgstr "Ime gostitelja '%s' je predolgo za protokol SOCKSv5"
+msgid "Hostname “%s” is too long for SOCKSv5 protocol"
+msgstr "Ime gostitelja »%s« je predolgo za protokol SOCKSv5"
 
 #: ../gio/gsocks5proxy.c:348
 msgid "The SOCKSv5 proxy server uses unknown address type."
@@ -2963,7 +4165,9 @@ msgid "Connection refused through SOCKSv5 proxy."
 msgstr "Povezava skozi posredniški strežnik SOCKSv5 je zavrnjena."
 
 #: ../gio/gsocks5proxy.c:386
-msgid "SOCKSv5 proxy does not support 'connect' command."
+#, fuzzy
+#| msgid "SOCKSv5 proxy does not support 'connect' command."
+msgid "SOCKSv5 proxy does not support “connect” command."
 msgstr "SOCKSv5 posredniški strežnik ne podpira ukaza 'connect'."
 
 #: ../gio/gsocks5proxy.c:392
@@ -2975,34 +4179,36 @@ msgid "Unknown SOCKSv5 proxy error."
 msgstr "Neznana napaka posredniškega strežnika SOCKSv5."
 
 #: ../gio/gthemedicon.c:518
-#, c-format
-msgid "Can't handle version %d of GThemedIcon encoding"
+#, fuzzy, c-format
+#| msgid "Can't handle version %d of GThemedIcon encoding"
+msgid "Can’t handle version %d of GThemedIcon encoding"
 msgstr "Ni mogoče upravljati z različico %d kodiranja GThemedIcon"
 
 #: ../gio/gthreadedresolver.c:118
 msgid "No valid addresses were found"
 msgstr "Ni mogoče najti veljavnega naslova"
 
-#: ../gio/gthreadedresolver.c:211
+#: ../gio/gthreadedresolver.c:213
 #, c-format
-msgid "Error reverse-resolving '%s': %s"
-msgstr "Napaka med obratnim razreševanjem '%s': %s"
+msgid "Error reverse-resolving “%s”: %s"
+msgstr "Napaka med obratnim razreševanjem »%s«: %s"
 
-#: ../gio/gthreadedresolver.c:546 ../gio/gthreadedresolver.c:626
-#: ../gio/gthreadedresolver.c:724 ../gio/gthreadedresolver.c:774
-#, c-format
-msgid "No DNS record of the requested type for '%s'"
+#: ../gio/gthreadedresolver.c:550 ../gio/gthreadedresolver.c:630
+#: ../gio/gthreadedresolver.c:728 ../gio/gthreadedresolver.c:778
+#, fuzzy, c-format
+#| msgid "No DNS record of the requested type for '%s'"
+msgid "No DNS record of the requested type for “%s”"
 msgstr "Ni zapisa DNS za zahtevano vrsto '%s'"
 
-#: ../gio/gthreadedresolver.c:551 ../gio/gthreadedresolver.c:729
+#: ../gio/gthreadedresolver.c:555 ../gio/gthreadedresolver.c:733
 #, c-format
-msgid "Temporarily unable to resolve '%s'"
-msgstr "začasno ni mogoče razrešiti '%s'"
+msgid "Temporarily unable to resolve “%s”"
+msgstr "Trenutno ni mogoče razrešiti »%s«"
 
-#: ../gio/gthreadedresolver.c:556 ../gio/gthreadedresolver.c:734
+#: ../gio/gthreadedresolver.c:560 ../gio/gthreadedresolver.c:738
 #, c-format
-msgid "Error resolving '%s'"
-msgstr "Napaka med razreševanjem '%s'"
+msgid "Error resolving “%s”"
+msgstr "Napaka med razreševanjem »%s«"
 
 #: ../gio/gtlscertificate.c:250
 msgid "Cannot decrypt PEM-encoded private key"
@@ -3031,19 +4237,25 @@ msgid ""
 msgstr ""
 "To je zadnja priložnost za pravilen vnos gesla preden se dostop zaklene."
 
-#: ../gio/gtlspassword.c:113
+#. Translators: This is not the 'This is the last chance' string. It is
+#. * displayed when more than one attempt is allowed.
+#: ../gio/gtlspassword.c:115
+#, fuzzy
+#| msgid ""
+#| "Several password entered have been incorrect, and your access will be "
+#| "locked out after further failures."
 msgid ""
-"Several password entered have been incorrect, and your access will be locked "
-"out after further failures."
+"Several passwords entered have been incorrect, and your access will be "
+"locked out after further failures."
 msgstr ""
 "Več poskusov vnosa gesla je bilo neuspešnih, zato bo dostop ob nadaljnjih "
 "napakah zaklenjen."
 
-#: ../gio/gtlspassword.c:115
+#: ../gio/gtlspassword.c:117
 msgid "The password entered is incorrect."
 msgstr "Vneseno geslo je nepravilno."
 
-#: ../gio/gunixconnection.c:166 ../gio/gunixconnection.c:561
+#: ../gio/gunixconnection.c:166 ../gio/gunixconnection.c:563
 #, c-format
 msgid "Expecting 1 control message, got %d"
 msgid_plural "Expecting 1 control message, got %d"
@@ -3052,7 +4264,7 @@ msgstr[1] "Pričakovano eno nadzorno sporočilo, prejeto pa je %d sporočilo"
 msgstr[2] "Pričakovano eno nadzorno sporočilo, prejeti pa sta %d sporočili"
 msgstr[3] "Pričakovano eno nadzorno sporočilo, prejeta pa so %d sporočila"
 
-#: ../gio/gunixconnection.c:182 ../gio/gunixconnection.c:573
+#: ../gio/gunixconnection.c:182 ../gio/gunixconnection.c:575
 msgid "Unexpected type of ancillary data"
 msgstr "Nepričakovana vrsta dodatnih podatkov"
 
@@ -3073,66 +4285,70 @@ msgstr "Prejet neveljaven fd"
 msgid "Error sending credentials: "
 msgstr "Napaka med pošiljanjem poveril:"
 
-#: ../gio/gunixconnection.c:503
+#: ../gio/gunixconnection.c:504
 #, c-format
 msgid "Error checking if SO_PASSCRED is enabled for socket: %s"
 msgstr "Napaka med preverjanjem ali je predmet O_PASSCRED omogočen za vtič: %s"
 
-#: ../gio/gunixconnection.c:518
+#: ../gio/gunixconnection.c:520
 #, c-format
 msgid "Error enabling SO_PASSCRED: %s"
 msgstr "Napaka omogočanja predmeta SO_PASSCRED: %s"
 
-#: ../gio/gunixconnection.c:547
+#: ../gio/gunixconnection.c:549
 msgid ""
 "Expecting to read a single byte for receiving credentials but read zero bytes"
 msgstr ""
 "Pri prejemanju poveril je pričakovano branje enega bajta, vendar se je "
 "prebralo nič bajtov"
 
-#: ../gio/gunixconnection.c:587
+#: ../gio/gunixconnection.c:589
 #, c-format
 msgid "Not expecting control message, but got %d"
 msgstr "Nadzorno sporočilo ni pričakovano, vendar pa je prejeto %d"
 
-#: ../gio/gunixconnection.c:611
+#: ../gio/gunixconnection.c:614
 #, c-format
 msgid "Error while disabling SO_PASSCRED: %s"
 msgstr "Napaka med onemogočanjem SO_PASSCRED: %s"
 
-#: ../gio/gunixinputstream.c:369 ../gio/gunixinputstream.c:390
+#: ../gio/gunixinputstream.c:372 ../gio/gunixinputstream.c:393
 #, c-format
 msgid "Error reading from file descriptor: %s"
 msgstr "Napaka med branjem iz opisovalnika datoteke: %s"
 
-#: ../gio/gunixinputstream.c:423 ../gio/gunixoutputstream.c:409
+#: ../gio/gunixinputstream.c:426 ../gio/gunixoutputstream.c:411
 #: ../gio/gwin32inputstream.c:217 ../gio/gwin32outputstream.c:204
 #, c-format
 msgid "Error closing file descriptor: %s"
 msgstr "Napaka med zapiranjem opisovalnika datoteke: %s"
 
-#: ../gio/gunixmounts.c:2099 ../gio/gunixmounts.c:2152
+#: ../gio/gunixmounts.c:2430 ../gio/gunixmounts.c:2483
 msgid "Filesystem root"
 msgstr "Koren datotečnega sistema"
 
-#: ../gio/gunixoutputstream.c:355 ../gio/gunixoutputstream.c:376
+#: ../gio/gunixoutputstream.c:358 ../gio/gunixoutputstream.c:378
 #, c-format
 msgid "Error writing to file descriptor: %s"
 msgstr "Napaka med pisanjem v opisovalnik datoteke: %s"
 
-#: ../gio/gunixsocketaddress.c:239
+#: ../gio/gunixsocketaddress.c:241
 msgid "Abstract UNIX domain socket addresses not supported on this system"
 msgstr "Abstraktni naslovi vtiča domene UNIX na tem sistemu niso podprti"
 
 #: ../gio/gvolume.c:437
-msgid "volume doesn't implement eject"
+#, fuzzy
+#| msgid "volume doesn't implement eject"
+msgid "volume doesn’t implement eject"
 msgstr "nosilca ni mogoče izvreči"
 
 #. Translators: This is an error
 #. * message for volume objects that
 #. * don't implement any of eject or eject_with_operation.
 #: ../gio/gvolume.c:514
-msgid "volume doesn't implement eject or eject_with_operation"
+#, fuzzy
+#| msgid "volume doesn't implement eject or eject_with_operation"
+msgid "volume doesn’t implement eject or eject_with_operation"
 msgstr "nosilec ne prepozna ukaza izvrzi ali izvrzi_z_dejanjem"
 
 #: ../gio/gwin32inputstream.c:185
@@ -3192,27 +4408,31 @@ msgstr "Zaženi storitev DBus"
 msgid "Wrong args\n"
 msgstr "Napačni argumenti\n"
 
-#: ../glib/gbookmarkfile.c:755
-#, c-format
-msgid "Unexpected attribute '%s' for element '%s'"
+#: ../glib/gbookmarkfile.c:754
+#, fuzzy, c-format
+#| msgid "Unexpected attribute '%s' for element '%s'"
+msgid "Unexpected attribute “%s” for element “%s”"
 msgstr "Nepričakovan atribut '%s' za predmet '%s'"
 
-#: ../glib/gbookmarkfile.c:766 ../glib/gbookmarkfile.c:837
-#: ../glib/gbookmarkfile.c:847 ../glib/gbookmarkfile.c:954
-#, c-format
-msgid "Attribute '%s' of element '%s' not found"
+#: ../glib/gbookmarkfile.c:765 ../glib/gbookmarkfile.c:836
+#: ../glib/gbookmarkfile.c:846 ../glib/gbookmarkfile.c:953
+#, fuzzy, c-format
+#| msgid "Attribute '%s' of element '%s' not found"
+msgid "Attribute “%s” of element “%s” not found"
 msgstr "Atributa '%s' predmeta '%s' ni mogoče najti"
 
-#: ../glib/gbookmarkfile.c:1124 ../glib/gbookmarkfile.c:1189
-#: ../glib/gbookmarkfile.c:1253 ../glib/gbookmarkfile.c:1263
-#, c-format
-msgid "Unexpected tag '%s', tag '%s' expected"
+#: ../glib/gbookmarkfile.c:1123 ../glib/gbookmarkfile.c:1188
+#: ../glib/gbookmarkfile.c:1252 ../glib/gbookmarkfile.c:1262
+#, fuzzy, c-format
+#| msgid "Unexpected tag '%s', tag '%s' expected"
+msgid "Unexpected tag “%s”, tag “%s” expected"
 msgstr "Nepričakovana oznaka '%s'. Pričakovana je '%s'"
 
-#: ../glib/gbookmarkfile.c:1149 ../glib/gbookmarkfile.c:1163
-#: ../glib/gbookmarkfile.c:1231
-#, c-format
-msgid "Unexpected tag '%s' inside '%s'"
+#: ../glib/gbookmarkfile.c:1148 ../glib/gbookmarkfile.c:1162
+#: ../glib/gbookmarkfile.c:1230
+#, fuzzy, c-format
+#| msgid "Unexpected tag '%s' inside '%s'"
+msgid "Unexpected tag “%s” inside “%s”"
 msgstr "Nepričakovana oznaka '%s' znotraj '%s'"
 
 #: ../glib/gbookmarkfile.c:1756
@@ -3220,8 +4440,9 @@ msgid "No valid bookmark file found in data dirs"
 msgstr "Ni veljavne datoteke zaznamkov v podatkovnih mapah"
 
 #: ../glib/gbookmarkfile.c:1957
-#, c-format
-msgid "A bookmark for URI '%s' already exists"
+#, fuzzy, c-format
+#| msgid "A bookmark for URI '%s' already exists"
+msgid "A bookmark for URI “%s” already exists"
 msgstr "Zaznamek za URI '%s' že obstaja"
 
 #: ../glib/gbookmarkfile.c:2003 ../glib/gbookmarkfile.c:2161
@@ -3233,406 +4454,407 @@ msgstr "Zaznamek za URI '%s' že obstaja"
 #: ../glib/gbookmarkfile.c:3176 ../glib/gbookmarkfile.c:3344
 #: ../glib/gbookmarkfile.c:3433 ../glib/gbookmarkfile.c:3522
 #: ../glib/gbookmarkfile.c:3638
-#, c-format
-msgid "No bookmark found for URI '%s'"
+#, fuzzy, c-format
+#| msgid "No bookmark found for URI '%s'"
+msgid "No bookmark found for URI “%s”"
 msgstr "Ni veljavnega zaznamka za URI '%s'"
 
 #: ../glib/gbookmarkfile.c:2335
-#, c-format
-msgid "No MIME type defined in the bookmark for URI '%s'"
+#, fuzzy, c-format
+#| msgid "No MIME type defined in the bookmark for URI '%s'"
+msgid "No MIME type defined in the bookmark for URI “%s”"
 msgstr "V zaznamku za URI '%s' ni določene vrsta MIME"
 
 #: ../glib/gbookmarkfile.c:2420
-#, c-format
-msgid "No private flag has been defined in bookmark for URI '%s'"
+#, fuzzy, c-format
+#| msgid "No private flag has been defined in bookmark for URI '%s'"
+msgid "No private flag has been defined in bookmark for URI “%s”"
 msgstr "V zaznamku za URI '%s' ni določene zasebne zastavice"
 
 #: ../glib/gbookmarkfile.c:2799
-#, c-format
-msgid "No groups set in bookmark for URI '%s'"
+#, fuzzy, c-format
+#| msgid "No groups set in bookmark for URI '%s'"
+msgid "No groups set in bookmark for URI “%s”"
 msgstr "V zaznamku za URI '%s' ni nastavljenih skupin"
 
 #: ../glib/gbookmarkfile.c:3197 ../glib/gbookmarkfile.c:3354
-#, c-format
-msgid "No application with name '%s' registered a bookmark for '%s'"
+#, fuzzy, c-format
+#| msgid "No application with name '%s' registered a bookmark for '%s'"
+msgid "No application with name “%s” registered a bookmark for “%s”"
 msgstr "Program z imenom '%s' ni ustvaril zaznamka za '%s'"
 
 #: ../glib/gbookmarkfile.c:3377
-#, c-format
-msgid "Failed to expand exec line '%s' with URI '%s'"
+#, fuzzy, c-format
+#| msgid "Failed to expand exec line '%s' with URI '%s'"
+msgid "Failed to expand exec line “%s” with URI “%s”"
 msgstr "Razširjanje ukazne vrstice '%s' z URI '%s' je spodletelo."
 
-#: ../glib/gconvert.c:477 ../glib/gutf8.c:849 ../glib/gutf8.c:1061
-#: ../glib/gutf8.c:1198 ../glib/gutf8.c:1302
+#: ../glib/gconvert.c:477 ../glib/gutf8.c:862 ../glib/gutf8.c:1074
+#: ../glib/gutf8.c:1211 ../glib/gutf8.c:1315
 msgid "Partial character sequence at end of input"
 msgstr "Nedokončano zaporedje znakov na koncu vhoda"
 
 #: ../glib/gconvert.c:742
-#, c-format
-msgid "Cannot convert fallback '%s' to codeset '%s'"
+#, fuzzy, c-format
+#| msgid "Cannot convert fallback '%s' to codeset '%s'"
+msgid "Cannot convert fallback “%s” to codeset “%s”"
 msgstr "Ni mogoče pretvoriti '%s' v nabor znakov '%s'"
 
-#: ../glib/gconvert.c:1567
+#: ../glib/gconvert.c:1513
 #, c-format
-msgid "The URI '%s' is not an absolute URI using the \"file\" scheme"
-msgstr "Naslov URI '%s' pri uporabi \"datotečne\" sheme ni absoluten"
+msgid "The URI “%s” is not an absolute URI using the “file” scheme"
+msgstr "Naslov URI »%s« pri uporabi »datotečne« sheme ni absoluten"
 
-#: ../glib/gconvert.c:1577
+#: ../glib/gconvert.c:1523
 #, c-format
-msgid "The local file URI '%s' may not include a '#'"
-msgstr "V naslovu URI krajevne datoteke '%s' ni mogoče uporabiti '#'"
+msgid "The local file URI “%s” may not include a “#”"
+msgstr "V naslovu URI krajevne datoteke »%s« ni mogoče uporabiti '#'"
 
-#: ../glib/gconvert.c:1594
+#: ../glib/gconvert.c:1540
 #, c-format
-msgid "The URI '%s' is invalid"
-msgstr "Naslov URI '%s' je neveljaven"
+msgid "The URI “%s” is invalid"
+msgstr "Naslov URI »%s« je neveljaven"
 
-#: ../glib/gconvert.c:1606
+#: ../glib/gconvert.c:1552
 #, c-format
-msgid "The hostname of the URI '%s' is invalid"
-msgstr "Ime gostitelja naslova URI '%s' ni veljavno"
+msgid "The hostname of the URI “%s” is invalid"
+msgstr "Ime gostitelja naslova URI »%s« ni veljavno"
 
-#: ../glib/gconvert.c:1622
+#: ../glib/gconvert.c:1568
 #, c-format
-msgid "The URI '%s' contains invalidly escaped characters"
-msgstr "Naslov URI '%s' vsebuje neveljavne ubežne znake"
+msgid "The URI “%s” contains invalidly escaped characters"
+msgstr "Naslov URI »%s« vsebuje neveljavne ubežne znake"
 
-#: ../glib/gconvert.c:1717
+#: ../glib/gconvert.c:1640
 #, c-format
-msgid "The pathname '%s' is not an absolute path"
-msgstr "Pot '%s' ni absolutna pot"
-
-#: ../glib/gconvert.c:1727
-msgid "Invalid hostname"
-msgstr "Neveljavno ime gostitelja"
-
-#. Translators: 'before midday' indicator
-#: ../glib/gdatetime.c:201
-msgctxt "GDateTime"
-msgid "AM"
-msgstr "dop"
-
-#. Translators: 'after midday' indicator
-#: ../glib/gdatetime.c:203
-msgctxt "GDateTime"
-msgid "PM"
-msgstr "pop"
+msgid "The pathname “%s” is not an absolute path"
+msgstr "Pot »%s« ni absolutna pot"
 
 #. Translators: this is the preferred format for expressing the date and the time
-#: ../glib/gdatetime.c:206
+#: ../glib/gdatetime.c:202
 msgctxt "GDateTime"
 msgid "%a %b %e %H:%M:%S %Y"
 msgstr "%a, %e. %b %Y %H:%M:%S"
 
 #. Translators: this is the preferred format for expressing the date
-#: ../glib/gdatetime.c:209
+#: ../glib/gdatetime.c:205
 msgctxt "GDateTime"
 msgid "%m/%d/%y"
 msgstr "%d.%m.%y"
 
 #. Translators: this is the preferred format for expressing the time
-#: ../glib/gdatetime.c:212
+#: ../glib/gdatetime.c:208
 msgctxt "GDateTime"
 msgid "%H:%M:%S"
 msgstr "%H:%M:%S"
 
 #. Translators: this is the preferred format for expressing 12 hour time
-#: ../glib/gdatetime.c:215
+#: ../glib/gdatetime.c:211
 msgctxt "GDateTime"
 msgid "%I:%M:%S %p"
 msgstr "%I:%M:%S %p"
 
-#: ../glib/gdatetime.c:228
+#: ../glib/gdatetime.c:224
 msgctxt "full month name"
 msgid "January"
 msgstr "januar"
 
-#: ../glib/gdatetime.c:230
+#: ../glib/gdatetime.c:226
 msgctxt "full month name"
 msgid "February"
 msgstr "februar"
 
-#: ../glib/gdatetime.c:232
+#: ../glib/gdatetime.c:228
 msgctxt "full month name"
 msgid "March"
 msgstr "marec"
 
-#: ../glib/gdatetime.c:234
+#: ../glib/gdatetime.c:230
 msgctxt "full month name"
 msgid "April"
 msgstr "april"
 
-#: ../glib/gdatetime.c:236
+#: ../glib/gdatetime.c:232
 msgctxt "full month name"
 msgid "May"
 msgstr "maj"
 
-#: ../glib/gdatetime.c:238
+#: ../glib/gdatetime.c:234
 msgctxt "full month name"
 msgid "June"
 msgstr "junij"
 
-#: ../glib/gdatetime.c:240
+#: ../glib/gdatetime.c:236
 msgctxt "full month name"
 msgid "July"
 msgstr "julij"
 
-#: ../glib/gdatetime.c:242
+#: ../glib/gdatetime.c:238
 msgctxt "full month name"
 msgid "August"
 msgstr "avgust"
 
-#: ../glib/gdatetime.c:244
+#: ../glib/gdatetime.c:240
 msgctxt "full month name"
 msgid "September"
 msgstr "september"
 
-#: ../glib/gdatetime.c:246
+#: ../glib/gdatetime.c:242
 msgctxt "full month name"
 msgid "October"
 msgstr "oktober"
 
-#: ../glib/gdatetime.c:248
+#: ../glib/gdatetime.c:244
 msgctxt "full month name"
 msgid "November"
 msgstr "november"
 
-#: ../glib/gdatetime.c:250
+#: ../glib/gdatetime.c:246
 msgctxt "full month name"
 msgid "December"
 msgstr "december"
 
-#: ../glib/gdatetime.c:265
+#: ../glib/gdatetime.c:261
 msgctxt "abbreviated month name"
 msgid "Jan"
 msgstr "jan"
 
-#: ../glib/gdatetime.c:267
+#: ../glib/gdatetime.c:263
 msgctxt "abbreviated month name"
 msgid "Feb"
 msgstr "feb"
 
-#: ../glib/gdatetime.c:269
+#: ../glib/gdatetime.c:265
 msgctxt "abbreviated month name"
 msgid "Mar"
 msgstr "mar"
 
-#: ../glib/gdatetime.c:271
+#: ../glib/gdatetime.c:267
 msgctxt "abbreviated month name"
 msgid "Apr"
 msgstr "apr"
 
-#: ../glib/gdatetime.c:273
+#: ../glib/gdatetime.c:269
 msgctxt "abbreviated month name"
 msgid "May"
 msgstr "maj"
 
-#: ../glib/gdatetime.c:275
+#: ../glib/gdatetime.c:271
 msgctxt "abbreviated month name"
 msgid "Jun"
 msgstr "jun"
 
-#: ../glib/gdatetime.c:277
+#: ../glib/gdatetime.c:273
 msgctxt "abbreviated month name"
 msgid "Jul"
 msgstr "jul"
 
-#: ../glib/gdatetime.c:279
+#: ../glib/gdatetime.c:275
 msgctxt "abbreviated month name"
 msgid "Aug"
 msgstr "avg"
 
-#: ../glib/gdatetime.c:281
+#: ../glib/gdatetime.c:277
 msgctxt "abbreviated month name"
 msgid "Sep"
 msgstr "sep"
 
-#: ../glib/gdatetime.c:283
+#: ../glib/gdatetime.c:279
 msgctxt "abbreviated month name"
 msgid "Oct"
 msgstr "okt"
 
-#: ../glib/gdatetime.c:285
+#: ../glib/gdatetime.c:281
 msgctxt "abbreviated month name"
 msgid "Nov"
 msgstr "nov"
 
-#: ../glib/gdatetime.c:287
+#: ../glib/gdatetime.c:283
 msgctxt "abbreviated month name"
 msgid "Dec"
 msgstr "dec"
 
-#: ../glib/gdatetime.c:302
+#: ../glib/gdatetime.c:298
 msgctxt "full weekday name"
 msgid "Monday"
 msgstr "ponedeljek"
 
-#: ../glib/gdatetime.c:304
+#: ../glib/gdatetime.c:300
 msgctxt "full weekday name"
 msgid "Tuesday"
 msgstr "torek"
 
-#: ../glib/gdatetime.c:306
+#: ../glib/gdatetime.c:302
 msgctxt "full weekday name"
 msgid "Wednesday"
 msgstr "sreda"
 
-#: ../glib/gdatetime.c:308
+#: ../glib/gdatetime.c:304
 msgctxt "full weekday name"
 msgid "Thursday"
 msgstr "četrtek"
 
-#: ../glib/gdatetime.c:310
+#: ../glib/gdatetime.c:306
 msgctxt "full weekday name"
 msgid "Friday"
 msgstr "petek"
 
-#: ../glib/gdatetime.c:312
+#: ../glib/gdatetime.c:308
 msgctxt "full weekday name"
 msgid "Saturday"
 msgstr "sobota"
 
-#: ../glib/gdatetime.c:314
+#: ../glib/gdatetime.c:310
 msgctxt "full weekday name"
 msgid "Sunday"
 msgstr "nedeljo"
 
-#: ../glib/gdatetime.c:329
+#: ../glib/gdatetime.c:325
 msgctxt "abbreviated weekday name"
 msgid "Mon"
 msgstr "pon"
 
-#: ../glib/gdatetime.c:331
+#: ../glib/gdatetime.c:327
 msgctxt "abbreviated weekday name"
 msgid "Tue"
 msgstr "tor"
 
-#: ../glib/gdatetime.c:333
+#: ../glib/gdatetime.c:329
 msgctxt "abbreviated weekday name"
 msgid "Wed"
 msgstr "sre"
 
-#: ../glib/gdatetime.c:335
+#: ../glib/gdatetime.c:331
 msgctxt "abbreviated weekday name"
 msgid "Thu"
 msgstr "čet"
 
-#: ../glib/gdatetime.c:337
+#: ../glib/gdatetime.c:333
 msgctxt "abbreviated weekday name"
 msgid "Fri"
 msgstr "pet"
 
-#: ../glib/gdatetime.c:339
+#: ../glib/gdatetime.c:335
 msgctxt "abbreviated weekday name"
 msgid "Sat"
 msgstr "sob"
 
-#: ../glib/gdatetime.c:341
+#: ../glib/gdatetime.c:337
 msgctxt "abbreviated weekday name"
 msgid "Sun"
 msgstr "ned"
 
+#. Translators: 'before midday' indicator
+#: ../glib/gdatetime.c:354
+msgctxt "GDateTime"
+msgid "AM"
+msgstr "dop"
+
+#. Translators: 'after midday' indicator
+#: ../glib/gdatetime.c:357
+msgctxt "GDateTime"
+msgid "PM"
+msgstr "pop"
+
 #: ../glib/gdir.c:155
 #, c-format
-msgid "Error opening directory '%s': %s"
-msgstr "Napaka med odpiranjem imenika '%s': %s"
+msgid "Error opening directory “%s”: %s"
+msgstr "Napaka med odpiranjem imenika »%s«: %s"
 
-#: ../glib/gfileutils.c:700 ../glib/gfileutils.c:792
-#, c-format
-msgid "Could not allocate %lu byte to read file \"%s\""
-msgid_plural "Could not allocate %lu bytes to read file \"%s\""
+#: ../glib/gfileutils.c:706 ../glib/gfileutils.c:798
+#, fuzzy, c-format
+#| msgid "Could not allocate %lu byte to read file \"%s\""
+#| msgid_plural "Could not allocate %lu bytes to read file \"%s\""
+msgid "Could not allocate %lu byte to read file “%s”"
+msgid_plural "Could not allocate %lu bytes to read file “%s”"
 msgstr[0] "Ni mogoče dodeliti %lu bajtov za branje datoteke \"%s\""
 msgstr[1] "Ni mogoče dodeliti %lu bajta za branje datoteke \"%s\""
 msgstr[2] "Ni mogoče dodeliti %lu bajtov za branje datoteke \"%s\""
 msgstr[3] "Ni mogoče dodeliti %lu bajtov za branje datoteke \"%s\""
 
-#: ../glib/gfileutils.c:717
+#: ../glib/gfileutils.c:723
 #, c-format
-msgid "Error reading file '%s': %s"
-msgstr "Napaka med branjem datoteke '%s': %s"
+msgid "Error reading file “%s”: %s"
+msgstr "Napaka med branjem datoteke »%s«: %s"
 
-#: ../glib/gfileutils.c:753
+#: ../glib/gfileutils.c:759
 #, c-format
-msgid "File \"%s\" is too large"
-msgstr "Datoteka \"%s\" je prevelika."
+msgid "File “%s” is too large"
+msgstr "Datoteka »%s« je prevelika."
 
-#: ../glib/gfileutils.c:817
+#: ../glib/gfileutils.c:823
 #, c-format
-msgid "Failed to read from file '%s': %s"
-msgstr "Branje datoteke '%s' je spodletelo: %s"
+msgid "Failed to read from file “%s”: %s"
+msgstr "Branje datoteke »%s« je spodletelo: %s"
 
-#: ../glib/gfileutils.c:865 ../glib/gfileutils.c:937
+#: ../glib/gfileutils.c:871 ../glib/gfileutils.c:943
 #, c-format
-msgid "Failed to open file '%s': %s"
-msgstr "Odpiranje datoteke '%s' je spodletelo: %s"
+msgid "Failed to open file “%s”: %s"
+msgstr "Odpiranje datoteke »%s« je spodletelo: %s"
 
-#: ../glib/gfileutils.c:877
+#: ../glib/gfileutils.c:883
 #, c-format
-msgid "Failed to get attributes of file '%s': fstat() failed: %s"
+msgid "Failed to get attributes of file “%s”: fstat() failed: %s"
 msgstr ""
-"Pridobivanje atributov datoteke '%s' je spodletelo: ukaz fstat() ni uspešno "
+"Pridobivanje atributov datoteke »%s« je spodletelo: ukaz fstat() ni uspešno "
 "izveden: %s"
 
-#: ../glib/gfileutils.c:907
+#: ../glib/gfileutils.c:913
 #, c-format
-msgid "Failed to open file '%s': fdopen() failed: %s"
-msgstr "Ni mogoče odpreti datoteke '%s':  fdopen() ni uspešno izveden: %s"
+msgid "Failed to open file “%s”: fdopen() failed: %s"
+msgstr "Ni mogoče odpreti datoteke »%s«: ukaz fdopen() ni uspešno izveden: %s"
 
-#: ../glib/gfileutils.c:1006
+#: ../glib/gfileutils.c:1012
 #, c-format
-msgid "Failed to rename file '%s' to '%s': g_rename() failed: %s"
+msgid "Failed to rename file “%s” to “%s”: g_rename() failed: %s"
 msgstr ""
-"Ni mogoče preimenovati datoteke '%s' v '%s':  g_rename() ni uspešno izveden: "
-"%s"
+"Ni mogoče preimenovati datoteke »%s« v »%s«: ukaz g_rename() ni uspešno "
+"izveden: %s"
 
-#: ../glib/gfileutils.c:1041 ../glib/gfileutils.c:1540
+#: ../glib/gfileutils.c:1047 ../glib/gfileutils.c:1554
 #, c-format
-msgid "Failed to create file '%s': %s"
-msgstr "Ni mogoče ustvariti datoteke '%s': %s"
+msgid "Failed to create file “%s”: %s"
+msgstr "Ni mogoče ustvariti datoteke »%s«: %s"
 
-#: ../glib/gfileutils.c:1068
+#: ../glib/gfileutils.c:1074
 #, c-format
-msgid "Failed to write file '%s': write() failed: %s"
-msgstr "Ni mogoče zapisati datoteke '%s': ukaz write() je spodletel: %s"
+msgid "Failed to write file “%s”: write() failed: %s"
+msgstr "Ni mogoče zapisati datoteke »%s«: ukaz write() je spodletel: %s"
 
-#: ../glib/gfileutils.c:1111
+#: ../glib/gfileutils.c:1117
 #, c-format
-msgid "Failed to write file '%s': fsync() failed: %s"
-msgstr "Ni mogoče zapisati datoteke '%s': fsync() ni uspešno izveden: %s"
+msgid "Failed to write file “%s”: fsync() failed: %s"
+msgstr "Ni mogoče zapisati datoteke »%s«: ukaz fsync() ni uspešno izveden: %s"
 
-#: ../glib/gfileutils.c:1235
+#: ../glib/gfileutils.c:1241
 #, c-format
-msgid "Existing file '%s' could not be removed: g_unlink() failed: %s"
+msgid "Existing file “%s” could not be removed: g_unlink() failed: %s"
 msgstr ""
-"Obstoječe datoteke '%s' ni mogoče odstraniti: g_unlink() ni uspešno izveden: "
-"%s"
+"Obstoječe datoteke »%s« ni mogoče odstraniti: ukaz g_unlink() ni uspešno "
+"izveden: %s"
 
-#: ../glib/gfileutils.c:1506
+#: ../glib/gfileutils.c:1520
 #, c-format
-msgid "Template '%s' invalid, should not contain a '%s'"
-msgstr "Predloga '%s' je neveljavna, saj ne sme vsebovati '%s'"
+msgid "Template “%s” invalid, should not contain a “%s”"
+msgstr "Predloga »%s« je neveljavna, saj ne sme vsebovati »%s«"
 
-#: ../glib/gfileutils.c:1519
+#: ../glib/gfileutils.c:1533
 #, c-format
-msgid "Template '%s' doesn't contain XXXXXX"
-msgstr "Predloga '%s' ne vsebuje XXXXXX"
+msgid "Template “%s” doesn’t contain XXXXXX"
+msgstr "Predloga »%s« ne vsebuje XXXXXX"
 
-#: ../glib/gfileutils.c:2038
+#: ../glib/gfileutils.c:2058
 #, c-format
-msgid "Failed to read the symbolic link '%s': %s"
-msgstr "Ni mogoče prebrati simbolne povezave '%s': %s"
-
-#: ../glib/gfileutils.c:2057
-msgid "Symbolic links not supported"
-msgstr "Simbolne povezave niso podprte"
+msgid "Failed to read the symbolic link “%s”: %s"
+msgstr "Branje simbolne povezave »%s« je spodletelo: %s"
 
 #: ../glib/giochannel.c:1388
 #, c-format
-msgid "Could not open converter from '%s' to '%s': %s"
-msgstr "Ni mogoče odpreti pretvornika iz '%s' v '%s': %s"
+msgid "Could not open converter from “%s” to “%s”: %s"
+msgstr "Ni mogoče odpreti pretvornika iz »%s« v »%s«: %s"
 
 #: ../glib/giochannel.c:1733
-msgid "Can't do a raw read in g_io_channel_read_line_string"
+msgid "Cant do a raw read in g_io_channel_read_line_string"
 msgstr "Ni mogoče prebrati g_io_channel_read_line_string"
 
 #: ../glib/giochannel.c:1780 ../glib/giochannel.c:2038
@@ -3645,10 +4867,10 @@ msgid "Channel terminates in a partial character"
 msgstr "Kanal je prekinjen v delnem znaku"
 
 #: ../glib/giochannel.c:1924
-msgid "Can't do a raw read in g_io_channel_read_to_end"
+msgid "Cant do a raw read in g_io_channel_read_to_end"
 msgstr "Ni mogoče prebrati v g_io_channel_read_to_end"
 
-#: ../glib/gkeyfile.c:737
+#: ../glib/gkeyfile.c:736
 msgid "Valid key file could not be found in search dirs"
 msgstr "Veljavnega ključa v iskanih mapah ni mogoče najti"
 
@@ -3656,109 +4878,108 @@ msgstr "Veljavnega ključa v iskanih mapah ni mogoče najti"
 msgid "Not a regular file"
 msgstr "Ni običajna datoteka"
 
-#: ../glib/gkeyfile.c:1173
+#: ../glib/gkeyfile.c:1218
 #, c-format
 msgid ""
-"Key file contains line '%s' which is not a key-value pair, group, or comment"
+"Key file contains line “%s” which is not a key-value pair, group, or comment"
 msgstr ""
-"Datoteka s ključem vsebuje vrstico '%s', ki ni ključ-vrednost par, skupina "
-"ali opomba"
+"Datoteka ključa vsebuje vrstico »%s«, ki ni par ključ-vrednost, skupina ali "
+"opomba"
 
-#: ../glib/gkeyfile.c:1230
+#: ../glib/gkeyfile.c:1275
 #, c-format
 msgid "Invalid group name: %s"
 msgstr "Neveljavno ime skupine: %s"
 
-#: ../glib/gkeyfile.c:1252
+#: ../glib/gkeyfile.c:1297
 msgid "Key file does not start with a group"
 msgstr "Datoteka s ključem se ne začne s skupino"
 
-#: ../glib/gkeyfile.c:1278
+#: ../glib/gkeyfile.c:1323
 #, c-format
 msgid "Invalid key name: %s"
 msgstr "Neveljavno ime ključa: %s"
 
-#: ../glib/gkeyfile.c:1305
+#: ../glib/gkeyfile.c:1350
 #, c-format
-msgid "Key file contains unsupported encoding '%s'"
-msgstr "Datoteka s ključem vsebuje nepodprto kodiranje '%s'"
+msgid "Key file contains unsupported encoding “%s”"
+msgstr "Datoteka ključa vsebuje nepodprto kodiranje »%s«"
 
-#: ../glib/gkeyfile.c:1548 ../glib/gkeyfile.c:1721 ../glib/gkeyfile.c:3099
-#: ../glib/gkeyfile.c:3162 ../glib/gkeyfile.c:3292 ../glib/gkeyfile.c:3422
-#: ../glib/gkeyfile.c:3566 ../glib/gkeyfile.c:3795 ../glib/gkeyfile.c:3862
+#: ../glib/gkeyfile.c:1593 ../glib/gkeyfile.c:1766 ../glib/gkeyfile.c:3146
+#: ../glib/gkeyfile.c:3209 ../glib/gkeyfile.c:3339 ../glib/gkeyfile.c:3469
+#: ../glib/gkeyfile.c:3613 ../glib/gkeyfile.c:3842 ../glib/gkeyfile.c:3909
 #, c-format
-msgid "Key file does not have group '%s'"
-msgstr "Datoteka s ključem ni del skupine '%s'"
+msgid "Key file does not have group “%s”"
+msgstr "Datoteka s ključem ni del skupine »%s«"
 
-#: ../glib/gkeyfile.c:1676
+#: ../glib/gkeyfile.c:1721
 #, c-format
-msgid "Key file does not have key '%s' in group '%s'"
-msgstr "Datoteka s ključem nima ključa '%s' v skupini '%s'"
+msgid "Key file does not have key “%s” in group “%s”"
+msgstr "Datoteka s ključem nima ključa »%s« v skupini »%s«"
 
-#: ../glib/gkeyfile.c:1838 ../glib/gkeyfile.c:1954
+#: ../glib/gkeyfile.c:1883 ../glib/gkeyfile.c:1999
 #, c-format
-msgid "Key file contains key '%s' with value '%s' which is not UTF-8"
+msgid "Key file contains key “%s” with value “%s” which is not UTF-8"
 msgstr ""
-"Datoteka s ključem vsebuje ključ '%s' z vrednostjo '%s', ki ni zapisan v "
-"UTF-8 naboru"
+"Datoteka ključa vsebuje ključ »%s« z vrednostjo »%s«, ki ni zapisan v naboru "
+"UTF-8"
 
-#: ../glib/gkeyfile.c:1858 ../glib/gkeyfile.c:1974 ../glib/gkeyfile.c:2343
+#: ../glib/gkeyfile.c:1903 ../glib/gkeyfile.c:2019 ../glib/gkeyfile.c:2388
 #, c-format
 msgid ""
-"Key file contains key '%s' which has a value that cannot be interpreted."
+"Key file contains key “%s” which has a value that cannot be interpreted."
 msgstr ""
-"Datoteka s ključem vsebuje ključ '%s' z vrednostjo, ki je ni mogoče "
-"obravnavati."
+"Datoteka ključa vsebuje ključ »%s« z vrednostjo, ki je ni mogoče tolmačiti."
 
-#: ../glib/gkeyfile.c:2560 ../glib/gkeyfile.c:2928
+#: ../glib/gkeyfile.c:2606 ../glib/gkeyfile.c:2975
 #, c-format
 msgid ""
-"Key file contains key '%s' in group '%s' which has a value that cannot be "
+"Key file contains key “%s” in group “%s” which has a value that cannot be "
 "interpreted."
 msgstr ""
-"Datoteka s ključem vsebuje ključ '%s' v skupini '%s' z vrednostjo, ki je ni "
-"mogoče obravnavati."
+"Datoteka ključa vsebuje ključ »%s« v skupini »%s« z vrednostjo, ki je ni "
+"mogoče tolmačiti."
 
-#: ../glib/gkeyfile.c:2638 ../glib/gkeyfile.c:2715
+#: ../glib/gkeyfile.c:2684 ../glib/gkeyfile.c:2761
 #, c-format
-msgid "Key '%s' in group '%s' has value '%s' where %s was expected"
+msgid "Key “%s” in group “%s” has value “%s” where %s was expected"
 msgstr ""
-"Ključ '%s' v skupini '%s' ima vrednost '%s', pričakovana pa je vrednost %s."
+"Ključ »%s« v skupini »%s« ima vrednost »%s«, pričakovana pa je vrednost %s."
 
-#: ../glib/gkeyfile.c:4102
+#: ../glib/gkeyfile.c:4149
 msgid "Key file contains escape character at end of line"
 msgstr "Datoteka s ključem vsebuje ubežni znak na koncu vrstice"
 
-#: ../glib/gkeyfile.c:4124
+#: ../glib/gkeyfile.c:4171
 #, c-format
-msgid "Key file contains invalid escape sequence '%s'"
-msgstr "Datoteka ključa vsebuje neveljavno ubežno zaporedje '%s'"
+msgid "Key file contains invalid escape sequence “%s”"
+msgstr "Datoteka ključa vsebuje neveljavno ubežno zaporedje »%s«"
 
-#: ../glib/gkeyfile.c:4266
+#: ../glib/gkeyfile.c:4315
 #, c-format
-msgid "Value '%s' cannot be interpreted as a number."
-msgstr "Vrednosti '%s' ni mogoče obravnavati kot število."
+msgid "Value “%s” cannot be interpreted as a number."
+msgstr "Vrednosti »%s« ni mogoče obravnavati kot število."
 
-#: ../glib/gkeyfile.c:4280
+#: ../glib/gkeyfile.c:4329
 #, c-format
-msgid "Integer value '%s' out of range"
-msgstr "Celoštevilska vrednost '%s' izven obsega"
+msgid "Integer value “%s” out of range"
+msgstr "Celoštevilska vrednost »%s« je izven obsega"
 
-#: ../glib/gkeyfile.c:4313
+#: ../glib/gkeyfile.c:4362
 #, c-format
-msgid "Value '%s' cannot be interpreted as a float number."
-msgstr "Vrednosti '%s' ni mogoče obravnavati kot število s plavajočo vejico."
+msgid "Value “%s” cannot be interpreted as a float number."
+msgstr "Vrednosti »%s« ni mogoče obravnavati kot število s plavajočo vejico."
 
-#: ../glib/gkeyfile.c:4350
+#: ../glib/gkeyfile.c:4401
 #, c-format
-msgid "Value '%s' cannot be interpreted as a boolean."
-msgstr "Vrednosti '%s' ni mogoče obravnavati kot logično Boolovo vrednost."
+msgid "Value “%s” cannot be interpreted as a boolean."
+msgstr "Vrednosti »%s« ni mogoče obravnavati kot logično Boolovo vrednost."
 
 #: ../glib/gmappedfile.c:129
 #, c-format
-msgid "Failed to get attributes of file '%s%s%s%s': fstat() failed: %s"
+msgid "Failed to get attributes of file “%s%s%s%s”: fstat() failed: %s"
 msgstr ""
-"Ni mogoče pridobiti atributov datoteke '%s%s%s%s':  ukaz fstat() je "
+"Ni mogoče pridobiti atributov datoteke »%s%s%s%s«:  ukaz fstat() je "
 "spodletel: %s"
 
 #: ../glib/gmappedfile.c:195
@@ -3766,37 +4987,38 @@ msgstr ""
 msgid "Failed to map %s%s%s%s: mmap() failed: %s"
 msgstr "Ni mogoče preslikati %s%s%s%s: ukaz mmap() nje spodletel: %s"
 
-#: ../glib/gmappedfile.c:261
+#: ../glib/gmappedfile.c:262
 #, c-format
-msgid "Failed to open file '%s': open() failed: %s"
-msgstr "Ni mogoče odpreti datoteke '%s': open() ni uspešno izveden: %s"
+msgid "Failed to open file “%s”: open() failed: %s"
+msgstr ""
+"Odpiranje datoteke »%s« je spodletelo: ukaz open() ni uspešno izveden: %s"
 
-#: ../glib/gmarkup.c:398 ../glib/gmarkup.c:440
+#: ../glib/gmarkup.c:397 ../glib/gmarkup.c:439
 #, c-format
 msgid "Error on line %d char %d: "
 msgstr "Napaka v vrstici %d, znak %d:"
 
-#: ../glib/gmarkup.c:462 ../glib/gmarkup.c:545
+#: ../glib/gmarkup.c:461 ../glib/gmarkup.c:544
 #, c-format
 msgid "Invalid UTF-8 encoded text in name - not valid '%s'"
 msgstr "Neveljavno UTF-8 kodirano besedilo imena - neveljaven '%s'"
 
-#: ../glib/gmarkup.c:473
+#: ../glib/gmarkup.c:472
 #, c-format
 msgid "'%s' is not a valid name"
 msgstr "'%s' ni veljavno ime"
 
-#: ../glib/gmarkup.c:489
+#: ../glib/gmarkup.c:488
 #, c-format
 msgid "'%s' is not a valid name: '%c'"
 msgstr "'%s' ni veljavno ime: '%c'"
 
-#: ../glib/gmarkup.c:599
+#: ../glib/gmarkup.c:598
 #, c-format
 msgid "Error on line %d: %s"
 msgstr "Napaka v vrstici %d: %s"
 
-#: ../glib/gmarkup.c:676
+#: ../glib/gmarkup.c:675
 #, c-format
 msgid ""
 "Failed to parse '%-.*s', which should have been a digit inside a character "
@@ -3805,7 +5027,7 @@ msgstr ""
 "Ni mogoče razčleniti '%-.*s', ki bi morala določati številko znotraj sklica "
 "znaka (na primer &#234;) - morda je številka prevelika"
 
-#: ../glib/gmarkup.c:688
+#: ../glib/gmarkup.c:687
 msgid ""
 "Character reference did not end with a semicolon; most likely you used an "
 "ampersand character without intending to start an entity - escape ampersand "
@@ -3814,24 +5036,24 @@ msgstr ""
 "Sklic znaka se ni končal s podpičjem; najverjetneje je uporabljen znak '&' "
 "brez povezave z entiteto - znak '&' mora biti zapisan kot '&amp;'"
 
-#: ../glib/gmarkup.c:714
+#: ../glib/gmarkup.c:713
 #, c-format
 msgid "Character reference '%-.*s' does not encode a permitted character"
 msgstr "Sklic znaka '%-.*s' ne kodira dovoljenega znaka"
 
-#: ../glib/gmarkup.c:752
+#: ../glib/gmarkup.c:751
 msgid ""
 "Empty entity '&;' seen; valid entities are: &amp; &quot; &lt; &gt; &apos;"
 msgstr ""
 "Zaznana prazna entiteta '&;'; veljavne entitete so: &amp; &quot; &lt; &gt; "
 "&apos;"
 
-#: ../glib/gmarkup.c:760
+#: ../glib/gmarkup.c:759
 #, c-format
 msgid "Entity name '%-.*s' is not known"
 msgstr "Neznano ime entitete '%-.*s'"
 
-#: ../glib/gmarkup.c:765
+#: ../glib/gmarkup.c:764
 msgid ""
 "Entity did not end with a semicolon; most likely you used an ampersand "
 "character without intending to start an entity - escape ampersand as &amp;"
@@ -3839,11 +5061,11 @@ msgstr ""
 "Entiteta se ne zaključi s podpičjem; najverjetneje je uporabljen znak '&' "
 "brez povezave z entiteto - znak '&' mora biti zapisan kot '&amp;'"
 
-#: ../glib/gmarkup.c:1171
+#: ../glib/gmarkup.c:1170
 msgid "Document must begin with an element (e.g. <book>)"
 msgstr "Dokument se mora začeti z predmetom (na primer <book>)"
 
-#: ../glib/gmarkup.c:1211
+#: ../glib/gmarkup.c:1210
 #, c-format
 msgid ""
 "'%s' is not a valid character following a '<' character; it may not begin an "
@@ -3852,7 +5074,7 @@ msgstr ""
 "'%s' ni veljaven znak, kadar sledi znaku '<'; morda se ne začne z imenom "
 "predmeta"
 
-#: ../glib/gmarkup.c:1253
+#: ../glib/gmarkup.c:1252
 #, c-format
 msgid ""
 "Odd character '%s', expected a '>' character to end the empty-element tag "
@@ -3861,7 +5083,7 @@ msgstr ""
 "Nenavaden znak '%s'. Pričakovan znak je '>', da se zaključi oznako predmeta "
 "'%s'"
 
-#: ../glib/gmarkup.c:1334
+#: ../glib/gmarkup.c:1333
 #, c-format
 msgid ""
 "Odd character '%s', expected a '=' after attribute name '%s' of element '%s'"
@@ -3869,7 +5091,7 @@ msgstr ""
 "Nenavaden znak '%s'. Za imenom atributa '%s' (predmeta '%s') je pričakovan "
 "znak '='."
 
-#: ../glib/gmarkup.c:1375
+#: ../glib/gmarkup.c:1374
 #, c-format
 msgid ""
 "Odd character '%s', expected a '>' or '/' character to end the start tag of "
@@ -3880,7 +5102,7 @@ msgstr ""
 "predmeta '%s' ali atribut; morda je uporabljen neveljaven znak v imenu "
 "atributa"
 
-#: ../glib/gmarkup.c:1419
+#: ../glib/gmarkup.c:1418
 #, c-format
 msgid ""
 "Odd character '%s', expected an open quote mark after the equals sign when "
@@ -3889,7 +5111,7 @@ msgstr ""
 "Nenavaden znak '%s'. Za enačajem je pričakovan narekovaj, znotraj katerega "
 "je podana vrednost atributa '%s' predmeta '%s'."
 
-#: ../glib/gmarkup.c:1552
+#: ../glib/gmarkup.c:1551
 #, c-format
 msgid ""
 "'%s' is not a valid character following the characters '</'; '%s' may not "
@@ -3897,7 +5119,7 @@ msgid ""
 msgstr ""
 "'%s' ni veljaven znak za znakoma '</'; imena predmeta ni mogoče začeti z '%s'"
 
-#: ../glib/gmarkup.c:1588
+#: ../glib/gmarkup.c:1587
 #, c-format
 msgid ""
 "'%s' is not a valid character following the close element name '%s'; the "
@@ -3906,25 +5128,25 @@ msgstr ""
 "Znak '%s' ni veljaven, kadar sledi zaprtju imena predmeta '%s'; dovoljen "
 "znak je '>'"
 
-#: ../glib/gmarkup.c:1599
+#: ../glib/gmarkup.c:1598
 #, c-format
 msgid "Element '%s' was closed, no element is currently open"
 msgstr "Predmet '%s' je zaprt, trenutno ni odprtega predmeta"
 
-#: ../glib/gmarkup.c:1608
+#: ../glib/gmarkup.c:1607
 #, c-format
 msgid "Element '%s' was closed, but the currently open element is '%s'"
 msgstr "Predmet '%s' je zaprt, še vedno pa je odprt predmet '%s'"
 
-#: ../glib/gmarkup.c:1761
+#: ../glib/gmarkup.c:1760
 msgid "Document was empty or contained only whitespace"
 msgstr "Dokument je prazen ali pa vsebuje le presledne znake"
 
-#: ../glib/gmarkup.c:1775
+#: ../glib/gmarkup.c:1774
 msgid "Document ended unexpectedly just after an open angle bracket '<'"
 msgstr "Dokument nepričakovano zaključen takoj za odprtjem predmeta '<'"
 
-#: ../glib/gmarkup.c:1783 ../glib/gmarkup.c:1828
+#: ../glib/gmarkup.c:1782 ../glib/gmarkup.c:1827
 #, c-format
 msgid ""
 "Document ended unexpectedly with elements still open - '%s' was the last "
@@ -3933,7 +5155,7 @@ msgstr ""
 "Dokument nepričakovano zaključen s še odprtimi predmeti - '%s' je zadnji "
 "odprt predmet"
 
-#: ../glib/gmarkup.c:1791
+#: ../glib/gmarkup.c:1790
 #, c-format
 msgid ""
 "Document ended unexpectedly, expected to see a close angle bracket ending "
@@ -3942,19 +5164,19 @@ msgstr ""
 "Dokument nepričakovano zaključen, pričakovan je zaključni zaklepaj oznake <"
 "%s/>"
 
-#: ../glib/gmarkup.c:1797
+#: ../glib/gmarkup.c:1796
 msgid "Document ended unexpectedly inside an element name"
 msgstr "Dokument nepričakovano zaključen sredi imena predmeta"
 
-#: ../glib/gmarkup.c:1803
+#: ../glib/gmarkup.c:1802
 msgid "Document ended unexpectedly inside an attribute name"
 msgstr "Dokument nepričakovano zaključen sredi imena atributa"
 
-#: ../glib/gmarkup.c:1808
+#: ../glib/gmarkup.c:1807
 msgid "Document ended unexpectedly inside an element-opening tag."
 msgstr "Dokument nepričakovano zaključen sredi oznake za odprtje predmeta."
 
-#: ../glib/gmarkup.c:1814
+#: ../glib/gmarkup.c:1813
 msgid ""
 "Document ended unexpectedly after the equals sign following an attribute "
 "name; no attribute value"
@@ -3962,25 +5184,21 @@ msgstr ""
 "Dokument nepričakovano zaključen za enačajem, ki sledil imenu atributa; ni "
 "določena vrednosti atributa"
 
-#: ../glib/gmarkup.c:1821
+#: ../glib/gmarkup.c:1820
 msgid "Document ended unexpectedly while inside an attribute value"
 msgstr "Dokument nepričakovano zaključen sredi vrednosti atributa"
 
-#: ../glib/gmarkup.c:1837
+#: ../glib/gmarkup.c:1836
 #, c-format
 msgid "Document ended unexpectedly inside the close tag for element '%s'"
 msgstr "Dokument nepričakovano zaključen sredi oznake zaprtja predmeta '%s'"
 
-#: ../glib/gmarkup.c:1843
+#: ../glib/gmarkup.c:1842
 msgid "Document ended unexpectedly inside a comment or processing instruction"
 msgstr "Dokument nepričakovano zaključen sredi opombe ali ukaza"
 
-#: ../glib/goption.c:857
-msgid "Usage:"
-msgstr "Uporaba:"
-
 #: ../glib/goption.c:861
-msgid "[OPTION...]"
+msgid "[OPTION]"
 msgstr "[MOŽNOST ...]"
 
 #: ../glib/goption.c:977
@@ -4005,267 +5223,271 @@ msgstr "Možnosti:"
 
 #: ../glib/goption.c:1113 ../glib/goption.c:1183
 #, c-format
-msgid "Cannot parse integer value '%s' for %s"
-msgstr "Ni mogoče razčleniti celoštevilske vrednosti '%s' za %s"
+msgid "Cannot parse integer value “%s” for %s"
+msgstr "Ni mogoče razčleniti celoštevilske vrednosti »%s« za %s"
 
 #: ../glib/goption.c:1123 ../glib/goption.c:1191
 #, c-format
-msgid "Integer value '%s' for %s out of range"
-msgstr "Celoštevilska vrednost '%s' za %s izven obsega"
+msgid "Integer value “%s” for %s out of range"
+msgstr "Celoštevilska vrednost »%s« za %s je izven obsega"
 
 #: ../glib/goption.c:1148
 #, c-format
-msgid "Cannot parse double value '%s' for %s"
-msgstr "Ni mogoče razčleniti dvojne vrednosti '%s' za %s"
+msgid "Cannot parse double value “%s” for %s"
+msgstr "Ni mogoče razčleniti dvojne vrednosti »%s« za %s"
 
 #: ../glib/goption.c:1156
 #, c-format
-msgid "Double value '%s' for %s out of range"
-msgstr "Vrednost dvojne velikosti '%s' za %s izven obsega"
+msgid "Double value “%s” for %s out of range"
+msgstr "Dvojna vrednost »%s« za %s je izven obsega"
 
-#: ../glib/goption.c:1442 ../glib/goption.c:1521
+#: ../glib/goption.c:1448 ../glib/goption.c:1527
 #, c-format
 msgid "Error parsing option %s"
 msgstr "Napaka med razčlenjevanjem %s"
 
-#: ../glib/goption.c:1552 ../glib/goption.c:1665
+#: ../glib/goption.c:1558 ../glib/goption.c:1671
 #, c-format
 msgid "Missing argument for %s"
 msgstr "Manjka argument za %s"
 
-#: ../glib/goption.c:2126
+#: ../glib/goption.c:2132
 #, c-format
 msgid "Unknown option %s"
 msgstr "Neznana možnost %s"
 
-#: ../glib/gregex.c:258
+#: ../glib/gregex.c:257
 msgid "corrupted object"
 msgstr "pokvarjen predmet"
 
-#: ../glib/gregex.c:260
+#: ../glib/gregex.c:259
 msgid "internal error or corrupted object"
 msgstr "notranja napaka ali pokvarjen predmet"
 
-#: ../glib/gregex.c:262
+#: ../glib/gregex.c:261
 msgid "out of memory"
 msgstr "primanjkuje pomnilnika"
 
-#: ../glib/gregex.c:267
+#: ../glib/gregex.c:266
 msgid "backtracking limit reached"
 msgstr "dosežena omejitev sledenja nazaj"
 
-#: ../glib/gregex.c:279 ../glib/gregex.c:287
+#: ../glib/gregex.c:278 ../glib/gregex.c:286
 msgid "the pattern contains items not supported for partial matching"
 msgstr "vzorec vsebuje predmete, ki niso podprti za delno iskanje zadetkov"
 
-#: ../glib/gregex.c:289
+#: ../glib/gregex.c:280
+msgid "internal error"
+msgstr "notranja napaka"
+
+#: ../glib/gregex.c:288
 msgid "back references as conditions are not supported for partial matching"
 msgstr "predhodne povezave, kot pogoji, niso podprti za delno primerjavo"
 
-#: ../glib/gregex.c:298
+#: ../glib/gregex.c:297
 msgid "recursion limit reached"
 msgstr "dosežena omejitev globine drevesne ravni"
 
-#: ../glib/gregex.c:300
+#: ../glib/gregex.c:299
 msgid "invalid combination of newline flags"
 msgstr "nepravilna sestava zastavic nove vrstice"
 
-#: ../glib/gregex.c:302
+#: ../glib/gregex.c:301
 msgid "bad offset"
 msgstr "slab odmik"
 
-#: ../glib/gregex.c:304
+#: ../glib/gregex.c:303
 msgid "short utf8"
 msgstr "kratki utf8"
 
-#: ../glib/gregex.c:306
+#: ../glib/gregex.c:305
 msgid "recursion loop"
 msgstr "rekurzivna zanka"
 
-#: ../glib/gregex.c:310
+#: ../glib/gregex.c:309
 msgid "unknown error"
 msgstr "neznana napaka"
 
-#: ../glib/gregex.c:330
+#: ../glib/gregex.c:329
 msgid "\\ at end of pattern"
 msgstr "\\ na koncu vzorca"
 
-#: ../glib/gregex.c:333
+#: ../glib/gregex.c:332
 msgid "\\c at end of pattern"
 msgstr "\\c na koncu vzorca"
 
-#: ../glib/gregex.c:336
+#: ../glib/gregex.c:335
 msgid "unrecognized character following \\"
 msgstr "neprepoznan znak sledi \\"
 
-#: ../glib/gregex.c:339
+#: ../glib/gregex.c:338
 msgid "numbers out of order in {} quantifier"
 msgstr "številke niso zapisane pravilno v {} količilniku"
 
-#: ../glib/gregex.c:342
+#: ../glib/gregex.c:341
 msgid "number too big in {} quantifier"
 msgstr "številke so prevelike v {} količilniku"
 
-#: ../glib/gregex.c:345
+#: ../glib/gregex.c:344
 msgid "missing terminating ] for character class"
 msgstr "manjkajoč zaključni znak ] za znakovni razred"
 
-#: ../glib/gregex.c:348
+#: ../glib/gregex.c:347
 msgid "invalid escape sequence in character class"
 msgstr "neveljavno ubežno zaporedje v znakovnem razredu"
 
-#: ../glib/gregex.c:351
+#: ../glib/gregex.c:350
 msgid "range out of order in character class"
 msgstr "nepravilen obseg v znakovnem razredu"
 
-#: ../glib/gregex.c:354
+#: ../glib/gregex.c:353
 msgid "nothing to repeat"
 msgstr "ni mogoče ponoviti"
 
-#: ../glib/gregex.c:358
+#: ../glib/gregex.c:357
 msgid "unexpected repeat"
 msgstr "nepričakovana ponovitev"
 
-#: ../glib/gregex.c:361
+#: ../glib/gregex.c:360
 msgid "unrecognized character after (? or (?-"
 msgstr "neprepoznan znak za (? ali (?-"
 
-#: ../glib/gregex.c:364
+#: ../glib/gregex.c:363
 msgid "POSIX named classes are supported only within a class"
 msgstr "POSIX razredi so podprti le znotraj razreda"
 
-#: ../glib/gregex.c:367
+#: ../glib/gregex.c:366
 msgid "missing terminating )"
 msgstr "manjka zaključujoči )"
 
-#: ../glib/gregex.c:370
+#: ../glib/gregex.c:369
 msgid "reference to non-existent subpattern"
 msgstr "povezava na neobstoječ podrejen vzorec"
 
-#: ../glib/gregex.c:373
+#: ../glib/gregex.c:372
 msgid "missing ) after comment"
 msgstr "manjka ) po opombi"
 
-#: ../glib/gregex.c:376
+#: ../glib/gregex.c:375
 msgid "regular expression is too large"
 msgstr "logični izraz je preobsežen"
 
-#: ../glib/gregex.c:379
+#: ../glib/gregex.c:378
 msgid "failed to get memory"
 msgstr "napaka med pridobivanjem pomnilnika"
 
-#: ../glib/gregex.c:383
+#: ../glib/gregex.c:382
 msgid ") without opening ("
 msgstr ") brez odpirajočega ("
 
-#: ../glib/gregex.c:387
+#: ../glib/gregex.c:386
 msgid "code overflow"
 msgstr "prekoračitev kode"
 
-#: ../glib/gregex.c:391
+#: ../glib/gregex.c:390
 msgid "unrecognized character after (?<"
 msgstr "neprepoznan znak za (?<"
 
-#: ../glib/gregex.c:394
+#: ../glib/gregex.c:393
 msgid "lookbehind assertion is not fixed length"
 msgstr "povratna trditev ni določene dolžine"
 
-#: ../glib/gregex.c:397
+#: ../glib/gregex.c:396
 msgid "malformed number or name after (?("
 msgstr "nepravilno oblikovano ime ali številka za (?("
 
-#: ../glib/gregex.c:400
+#: ../glib/gregex.c:399
 msgid "conditional group contains more than two branches"
 msgstr "pogojna skupina vsebuje več kot dve veji"
 
-#: ../glib/gregex.c:403
+#: ../glib/gregex.c:402
 msgid "assertion expected after (?("
 msgstr "trditev pričakovana za (?("
 
 #. translators: '(?R' and '(?[+-]digits' are both meant as (groups of)
 #. * sequences here, '(?-54' would be an example for the second group.
 #.
-#: ../glib/gregex.c:410
+#: ../glib/gregex.c:409
 msgid "(?R or (?[+-]digits must be followed by )"
 msgstr "(?R ali (?[+-] številom mora slediti )"
 
-#: ../glib/gregex.c:413
+#: ../glib/gregex.c:412
 msgid "unknown POSIX class name"
 msgstr "neznano POSIX ime razreda"
 
-#: ../glib/gregex.c:416
+#: ../glib/gregex.c:415
 msgid "POSIX collating elements are not supported"
 msgstr "POSIX zbirni predmeti niso podprti"
 
-#: ../glib/gregex.c:419
+#: ../glib/gregex.c:418
 msgid "character value in \\x{...} sequence is too large"
 msgstr "znakovna vrednost v zaporedju \\x{...} je predolga"
 
-#: ../glib/gregex.c:422
+#: ../glib/gregex.c:421
 msgid "invalid condition (?(0)"
 msgstr "neveljaven pogoj (?(0)"
 
-#: ../glib/gregex.c:425
+#: ../glib/gregex.c:424
 msgid "\\C not allowed in lookbehind assertion"
 msgstr "\\C ni dovoljen v povratnih trditvah"
 
-#: ../glib/gregex.c:432
+#: ../glib/gregex.c:431
 msgid "escapes \\L, \\l, \\N{name}, \\U, and \\u are not supported"
 msgstr "ubežna zaporedja \\L, \\l, \\N{name}, \\U in \\u niso podprta"
 
-#: ../glib/gregex.c:435
+#: ../glib/gregex.c:434
 msgid "recursive call could loop indefinitely"
 msgstr "drevesni klic opravila se lahko izvaja v neskončnost"
 
-#: ../glib/gregex.c:439
+#: ../glib/gregex.c:438
 msgid "unrecognized character after (?P"
 msgstr "neprepoznan znak za (?P"
 
-#: ../glib/gregex.c:442
+#: ../glib/gregex.c:441
 msgid "missing terminator in subpattern name"
 msgstr "manjkajoč zaključni znak v imenu podrejenega vzorca"
 
-#: ../glib/gregex.c:445
+#: ../glib/gregex.c:444
 msgid "two named subpatterns have the same name"
 msgstr "dva imenovana podrejena vzorca imata enako ime"
 
-#: ../glib/gregex.c:448
+#: ../glib/gregex.c:447
 msgid "malformed \\P or \\p sequence"
 msgstr "nepravilno oblikovano \\P ali \\p zaporedje"
 
-#: ../glib/gregex.c:451
+#: ../glib/gregex.c:450
 msgid "unknown property name after \\P or \\p"
 msgstr "neznano ime lastnosti za \\P ali \\p"
 
-#: ../glib/gregex.c:454
+#: ../glib/gregex.c:453
 msgid "subpattern name is too long (maximum 32 characters)"
 msgstr "ime podrejenega vzorca je predolgo (največ 32 znakov)"
 
-#: ../glib/gregex.c:457
+#: ../glib/gregex.c:456
 msgid "too many named subpatterns (maximum 10,000)"
 msgstr "preveč imenovanih podrejenih vzorcev (največ 10,000)"
 
-#: ../glib/gregex.c:460
+#: ../glib/gregex.c:459
 msgid "octal value is greater than \\377"
 msgstr "osmiška vrednost je večja kot \\377"
 
-#: ../glib/gregex.c:464
+#: ../glib/gregex.c:463
 msgid "overran compiling workspace"
 msgstr "pretečena delovna površina prevajanja kode"
 
-#: ../glib/gregex.c:468
+#: ../glib/gregex.c:467
 msgid "previously-checked referenced subpattern not found"
 msgstr "predhodno preverjene povezave podrejenega vzorca ni mogoče najti"
 
-#: ../glib/gregex.c:471
+#: ../glib/gregex.c:470
 msgid "DEFINE group contains more than one branch"
 msgstr "DEFINE skupina vsebuje več kot eno vejo"
 
-#: ../glib/gregex.c:474
+#: ../glib/gregex.c:473
 msgid "inconsistent NEWLINE options"
 msgstr "nepopolna NEWLINE možnost"
 
-#: ../glib/gregex.c:477
+#: ../glib/gregex.c:476
 msgid ""
 "\\g is not followed by a braced, angle-bracketed, or quoted name or number, "
 "or by a plain number"
@@ -4273,277 +5495,274 @@ msgstr ""
 "\\g ne sledi ime oz. število v oklepajih, oglatih oklepajih ali narekovajih, "
 "niti navadno število"
 
-#: ../glib/gregex.c:481
+#: ../glib/gregex.c:480
 msgid "a numbered reference must not be zero"
 msgstr "oštevilčen sklic ne sme biti ničeln"
 
-#: ../glib/gregex.c:484
+#: ../glib/gregex.c:483
 msgid "an argument is not allowed for (*ACCEPT), (*FAIL), or (*COMMIT)"
 msgstr "argument ni dovoljen za (*ACCEPT), (*FAIL) ali (*COMMIT)"
 
-#: ../glib/gregex.c:487
+#: ../glib/gregex.c:486
 msgid "(*VERB) not recognized"
 msgstr "(*VERB) ni prepoznan"
 
-#: ../glib/gregex.c:490
+#: ../glib/gregex.c:489
 msgid "number is too big"
 msgstr "številka je prevelika"
 
-#: ../glib/gregex.c:493
+#: ../glib/gregex.c:492
 msgid "missing subpattern name after (?&"
 msgstr "manjkajoče ime podrejenega vzorca po (?&"
 
-#: ../glib/gregex.c:496
+#: ../glib/gregex.c:495
 msgid "digit expected after (?+"
 msgstr "pričakovana števka po "
 
-#: ../glib/gregex.c:499
+#: ../glib/gregex.c:498
 msgid "] is an invalid data character in JavaScript compatibility mode"
 msgstr "] je neveljaven podatkovni znak v združljivostnem načinu JavaScript"
 
-#: ../glib/gregex.c:502
+#: ../glib/gregex.c:501
 msgid "different names for subpatterns of the same number are not allowed"
 msgstr "različna imena podrejenih vzorcev z isto številko niso dovoljena"
 
-#: ../glib/gregex.c:505
+#: ../glib/gregex.c:504
 msgid "(*MARK) must have an argument"
 msgstr "(*MARK) mora obvezno imeti argument"
 
-#: ../glib/gregex.c:508
+#: ../glib/gregex.c:507
 msgid "\\c must be followed by an ASCII character"
 msgstr "\\c mora slediti znak ASCII"
 
-#: ../glib/gregex.c:511
+#: ../glib/gregex.c:510
 msgid "\\k is not followed by a braced, angle-bracketed, or quoted name"
 msgstr "\\k ne sledi ime v oklepajih, oglatih oklepajih ali narekovajih"
 
-#: ../glib/gregex.c:514
+#: ../glib/gregex.c:513
 msgid "\\N is not supported in a class"
 msgstr "\\N ni podprto v razredu"
 
-#: ../glib/gregex.c:517
+#: ../glib/gregex.c:516
 msgid "too many forward references"
 msgstr "preveč sklicev s preskokom"
 
-#: ../glib/gregex.c:520
+#: ../glib/gregex.c:519
 msgid "name is too long in (*MARK), (*PRUNE), (*SKIP), or (*THEN)"
 msgstr "ime je predolgo v (*MARK), (*PRUNE), (*SKIP) ali (*THEN)"
 
-#: ../glib/gregex.c:523
+#: ../glib/gregex.c:522
 msgid "character value in \\u.... sequence is too large"
 msgstr "znakovna vrednost v zaporedju \\u.... je predolga"
 
-#: ../glib/gregex.c:746 ../glib/gregex.c:1973
+#: ../glib/gregex.c:745 ../glib/gregex.c:1977
 #, c-format
 msgid "Error while matching regular expression %s: %s"
 msgstr "Napaka med primerjanjem logičnega izraza %s: %s"
 
-#: ../glib/gregex.c:1317
+#: ../glib/gregex.c:1316
 msgid "PCRE library is compiled without UTF8 support"
 msgstr "Knjižnica PCRE je pretvorjena brez UTF-8 podpore"
 
-#: ../glib/gregex.c:1321
+#: ../glib/gregex.c:1320
 msgid "PCRE library is compiled without UTF8 properties support"
 msgstr "Knjižnica PCRE je pretvorjena brez lastnosti UTF-8 podpore"
 
-#: ../glib/gregex.c:1329
+#: ../glib/gregex.c:1328
 msgid "PCRE library is compiled with incompatible options"
 msgstr "Knjižnica PCRE je prevedena brez možnosti nezdružljivosti"
 
-#: ../glib/gregex.c:1358
+#: ../glib/gregex.c:1357
 #, c-format
 msgid "Error while optimizing regular expression %s: %s"
 msgstr "Napaka med prilagajanjem logičnega izraza %s: %s"
 
-#: ../glib/gregex.c:1438
+#: ../glib/gregex.c:1437
 #, c-format
 msgid "Error while compiling regular expression %s at char %d: %s"
 msgstr "Napaka med pretvarjanjem logičnega izraza %s pri znaku %d: %s"
 
-#: ../glib/gregex.c:2409
-msgid "hexadecimal digit or '}' expected"
-msgstr "šestnajstiško število ali pa pričakovan '}'"
+#: ../glib/gregex.c:2413
+msgid "hexadecimal digit or “}” expected"
+msgstr "šestnajstiško število ali pa manjka » } «"
 
-#: ../glib/gregex.c:2425
+#: ../glib/gregex.c:2429
 msgid "hexadecimal digit expected"
 msgstr "pričakovano šestnajstiško število"
 
-#: ../glib/gregex.c:2465
-msgid "missing '<' in symbolic reference"
-msgstr "manjkajoč znak '<' v simbolni povezavi"
+#: ../glib/gregex.c:2469
+msgid "missing “<” in symbolic reference"
+msgstr "manjkaja znak » < « v simbolni povezavi"
 
-#: ../glib/gregex.c:2474
+#: ../glib/gregex.c:2478
 msgid "unfinished symbolic reference"
 msgstr "nedokončana simbolna povezava"
 
-#: ../glib/gregex.c:2481
+#: ../glib/gregex.c:2485
 msgid "zero-length symbolic reference"
 msgstr "simbolna povezava nične dolžine"
 
-#: ../glib/gregex.c:2492
+#: ../glib/gregex.c:2496
 msgid "digit expected"
 msgstr "pričakovano število"
 
-#: ../glib/gregex.c:2510
+#: ../glib/gregex.c:2514
 msgid "illegal symbolic reference"
 msgstr "neveljavna simbolna povezava"
 
-#: ../glib/gregex.c:2572
-msgid "stray final '\\'"
-msgstr "obidi končna '\\'"
-
 #: ../glib/gregex.c:2576
+msgid "stray final “\\”"
+msgstr "obidi končna » \\ «"
+
+#: ../glib/gregex.c:2580
 msgid "unknown escape sequence"
 msgstr "neznano ubežno zaporedje"
 
-#: ../glib/gregex.c:2586
+#: ../glib/gregex.c:2590
 #, c-format
-msgid "Error while parsing replacement text \"%s\" at char %lu: %s"
-msgstr "Napaka med razčlenjevanjem besedila zamenjave \"%s\" pri znaku %lu: %s"
+msgid "Error while parsing replacement text “%s” at char %lu: %s"
+msgstr "Napaka med razčlenjevanjem besedila zamenjave »%s« pri znaku %lu: %s"
 
-#: ../glib/gshell.c:96
-msgid "Quoted text doesn't begin with a quotation mark"
+#: ../glib/gshell.c:94
+msgid "Quoted text doesnt begin with a quotation mark"
 msgstr "Navedeno besedilo se ne začne z narekovajem"
 
-#: ../glib/gshell.c:186
+#: ../glib/gshell.c:184
 msgid "Unmatched quotation mark in command line or other shell-quoted text"
 msgstr "V ukazni vrstici ali v navedenem besedilu manjka končni narekovaj"
 
-#: ../glib/gshell.c:582
+#: ../glib/gshell.c:580
 #, c-format
-msgid "Text ended just after a '\\' character. (The text was '%s')"
-msgstr "Besedilo končano takoj po znaku '\\'. (Besedilo je '%s')"
+msgid "Text ended just after a “\\” character. (The text was “%s”)"
+msgstr "Besedilo je končano takoj za znakom » \\ « (besedilo je »%s«)."
 
-#: ../glib/gshell.c:589
+#: ../glib/gshell.c:587
 #, c-format
-msgid "Text ended before matching quote was found for %c. (The text was '%s')"
+msgid "Text ended before matching quote was found for %c. (The text was “%s”)"
 msgstr ""
-"Besedilo končano preden je bil najden zaključni narekovaj za %c. (besedilo "
-"je  '%s')"
+"Besedilo je končano pred zaključnim narekovajem za %c (besedilo je  »%s«)."
 
-#: ../glib/gshell.c:601
+#: ../glib/gshell.c:599
 msgid "Text was empty (or contained only whitespace)"
 msgstr "Besedilo je bilo prazno (ali pa vsebuje le presledne znake)"
 
-#: ../glib/gspawn.c:209
+#: ../glib/gspawn.c:250
 #, c-format
 msgid "Failed to read data from child process (%s)"
 msgstr "Ni mogoče prebrati podatkov podrejenega procesa (%s)"
 
-#: ../glib/gspawn.c:353
+#: ../glib/gspawn.c:394
 #, c-format
 msgid "Unexpected error in select() reading data from a child process (%s)"
 msgstr ""
 "Nepričakovana napaka branja podatkov v opravilu select() podrejenega "
 "opravila (%s)"
 
-#: ../glib/gspawn.c:438
+#: ../glib/gspawn.c:479
 #, c-format
 msgid "Unexpected error in waitpid() (%s)"
 msgstr "Nepričakovana napaka v waitpid() (%s)"
 
-#: ../glib/gspawn.c:844 ../glib/gspawn-win32.c:1233
+#: ../glib/gspawn.c:886 ../glib/gspawn-win32.c:1231
 #, c-format
 msgid "Child process exited with code %ld"
 msgstr "Podrejeni proces se je zaključil s kodo %ld"
 
-#: ../glib/gspawn.c:852
+#: ../glib/gspawn.c:894
 #, c-format
 msgid "Child process killed by signal %ld"
 msgstr "Podrejeni proces je uničen s signalom %ld"
 
-#: ../glib/gspawn.c:859
+#: ../glib/gspawn.c:901
 #, c-format
 msgid "Child process stopped by signal %ld"
 msgstr "Podrejeni proces se je ustavil s signalom %ld"
 
-#: ../glib/gspawn.c:866
+#: ../glib/gspawn.c:908
 #, c-format
 msgid "Child process exited abnormally"
 msgstr "Podrejeni proces se je zaključil nenaravno"
 
-#: ../glib/gspawn.c:1271 ../glib/gspawn-win32.c:339 ../glib/gspawn-win32.c:347
+#: ../glib/gspawn.c:1313 ../glib/gspawn-win32.c:337 ../glib/gspawn-win32.c:345
 #, c-format
 msgid "Failed to read from child pipe (%s)"
 msgstr "Ni mogoče prebrati iz cevi podrejenega procesa (%s)"
 
-#: ../glib/gspawn.c:1341
+#: ../glib/gspawn.c:1383
 #, c-format
 msgid "Failed to fork (%s)"
 msgstr "Ni mogoča razvejitev (%s)"
 
-#: ../glib/gspawn.c:1490 ../glib/gspawn-win32.c:370
+#: ../glib/gspawn.c:1532 ../glib/gspawn-win32.c:368
 #, c-format
-msgid "Failed to change to directory '%s' (%s)"
-msgstr "Ni mogoče spremeniti v mapo '%s' (%s)"
+msgid "Failed to change to directory “%s” (%s)"
+msgstr "Ni mogoče spremeniti v mapo »%s« (%s)"
 
-#: ../glib/gspawn.c:1500
+#: ../glib/gspawn.c:1542
 #, c-format
-msgid "Failed to execute child process \"%s\" (%s)"
-msgstr "Ni mogoče izvesti podrejenega procesa \"%s\" (%s)"
+msgid "Failed to execute child process “%s” (%s)"
+msgstr "Ni mogoče izvesti podrejenega opravila »%s« (%s)"
 
-#: ../glib/gspawn.c:1510
+#: ../glib/gspawn.c:1552
 #, c-format
 msgid "Failed to redirect output or input of child process (%s)"
 msgstr "Ni mogoče preusmeriti vhoda ali izhoda podrejenega procesa (%s)"
 
-#: ../glib/gspawn.c:1519
+#: ../glib/gspawn.c:1561
 #, c-format
 msgid "Failed to fork child process (%s)"
 msgstr "Ni mogoče razvejiti podrejenega procesa (%s)"
 
-#: ../glib/gspawn.c:1527
+#: ../glib/gspawn.c:1569
 #, c-format
-msgid "Unknown error executing child process \"%s\""
-msgstr "Neznana napaka med izvajanjem podrejenega procesa \"%s\""
+msgid "Unknown error executing child process “%s”"
+msgstr "Neznana napaka med izvajanjem podrejenega opravila »%s«"
 
-#: ../glib/gspawn.c:1551
+#: ../glib/gspawn.c:1593
 #, c-format
 msgid "Failed to read enough data from child pid pipe (%s)"
 msgstr "Ni mogoče prebrati dovolj podatkov iz cevi podrejenega procesa (%s)"
 
-#: ../glib/gspawn-win32.c:283
+#: ../glib/gspawn-win32.c:281
 msgid "Failed to read data from child process"
 msgstr "Ni mogoče prebrati podatkov iz opravila podrejenega predmeta"
 
-#: ../glib/gspawn-win32.c:300
+#: ../glib/gspawn-win32.c:298
 #, c-format
 msgid "Failed to create pipe for communicating with child process (%s)"
 msgstr "Ni mogoče ustvariti cevi za stik z opravilom podrejenega predmeta (%s)"
 
-#: ../glib/gspawn-win32.c:376 ../glib/gspawn-win32.c:495
+#: ../glib/gspawn-win32.c:374 ../glib/gspawn-win32.c:493
 #, c-format
 msgid "Failed to execute child process (%s)"
 msgstr "Ni mogoče izvesti podrejenega opravila (%s)"
 
-#: ../glib/gspawn-win32.c:445
+#: ../glib/gspawn-win32.c:443
 #, c-format
 msgid "Invalid program name: %s"
 msgstr "Neveljavno ime programa: %s"
 
-#: ../glib/gspawn-win32.c:455 ../glib/gspawn-win32.c:722
-#: ../glib/gspawn-win32.c:1297
+#: ../glib/gspawn-win32.c:453 ../glib/gspawn-win32.c:720
 #, c-format
 msgid "Invalid string in argument vector at %d: %s"
 msgstr "Neveljaven niz v vektorju argumenta pri %d: %s"
 
-#: ../glib/gspawn-win32.c:466 ../glib/gspawn-win32.c:737
-#: ../glib/gspawn-win32.c:1330
+#: ../glib/gspawn-win32.c:464 ../glib/gspawn-win32.c:735
 #, c-format
 msgid "Invalid string in environment: %s"
 msgstr "Neveljaven niz okolja: %s"
 
-#: ../glib/gspawn-win32.c:718 ../glib/gspawn-win32.c:1278
+#: ../glib/gspawn-win32.c:716
 #, c-format
 msgid "Invalid working directory: %s"
 msgstr "Neveljavna delovna mapa: %s"
 
-#: ../glib/gspawn-win32.c:783
+#: ../glib/gspawn-win32.c:781
 #, c-format
 msgid "Failed to execute helper program (%s)"
 msgstr "Napaka med izvajanjem pomožnega programa  (%s)"
 
-#: ../glib/gspawn-win32.c:997
+#: ../glib/gspawn-win32.c:995
 msgid ""
 "Unexpected error in g_io_channel_win32_poll() reading data from a child "
 "process"
@@ -4551,24 +5770,43 @@ msgstr ""
 "Nepričakovana napaka v g_io_channel_win32_poll() med branjem podatkov "
 "procesa podrejenega predmeta"
 
-#: ../glib/gutf8.c:795
+#: ../glib/gstrfuncs.c:3247 ../glib/gstrfuncs.c:3348
+msgid "Empty string is not a number"
+msgstr ""
+
+#: ../glib/gstrfuncs.c:3271
+#, c-format
+msgid "“%s” is not a signed number"
+msgstr "»%s« ni podpisano število"
+
+#: ../glib/gstrfuncs.c:3281 ../glib/gstrfuncs.c:3384
+#, c-format
+msgid "Number “%s” is out of bounds [%s, %s]"
+msgstr ""
+
+#: ../glib/gstrfuncs.c:3374
+#, c-format
+msgid "“%s” is not an unsigned number"
+msgstr "»%s« ni nepodpisano število"
+
+#: ../glib/gutf8.c:808
 msgid "Failed to allocate memory"
 msgstr "Ni mogoče dodeliti pomnilnika"
 
-#: ../glib/gutf8.c:928
+#: ../glib/gutf8.c:941
 msgid "Character out of range for UTF-8"
 msgstr "Znak izven območja za UTF-8"
 
-#: ../glib/gutf8.c:1029 ../glib/gutf8.c:1038 ../glib/gutf8.c:1168
-#: ../glib/gutf8.c:1177 ../glib/gutf8.c:1316 ../glib/gutf8.c:1413
+#: ../glib/gutf8.c:1042 ../glib/gutf8.c:1051 ../glib/gutf8.c:1181
+#: ../glib/gutf8.c:1190 ../glib/gutf8.c:1329 ../glib/gutf8.c:1426
 msgid "Invalid sequence in conversion input"
 msgstr "Neveljavno zaporedje na vhodu pretvorbe"
 
-#: ../glib/gutf8.c:1327 ../glib/gutf8.c:1424
+#: ../glib/gutf8.c:1340 ../glib/gutf8.c:1437
 msgid "Character out of range for UTF-16"
 msgstr "Znak izven območja za UTF-16"
 
-#: ../glib/gutils.c:2117 ../glib/gutils.c:2144 ../glib/gutils.c:2250
+#: ../glib/gutils.c:2149 ../glib/gutils.c:2176 ../glib/gutils.c:2282
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
@@ -4577,68 +5815,68 @@ msgstr[1] "%u bajt"
 msgstr[2] "%u bajta"
 msgstr[3] "%u bajti"
 
-#: ../glib/gutils.c:2123
+#: ../glib/gutils.c:2155
 #, c-format
 msgid "%.1f KiB"
 msgstr "%.1f KiB"
 
-#: ../glib/gutils.c:2125
+#: ../glib/gutils.c:2157
 #, c-format
 msgid "%.1f MiB"
 msgstr "%.1f MiB"
 
-#: ../glib/gutils.c:2128
+#: ../glib/gutils.c:2160
 #, c-format
 msgid "%.1f GiB"
 msgstr "%.1f GiB"
 
-#: ../glib/gutils.c:2131
+#: ../glib/gutils.c:2163
 #, c-format
 msgid "%.1f TiB"
 msgstr "%.1f TiB"
 
-#: ../glib/gutils.c:2134
+#: ../glib/gutils.c:2166
 #, c-format
 msgid "%.1f PiB"
 msgstr "%.1f PiB"
 
-#: ../glib/gutils.c:2137
+#: ../glib/gutils.c:2169
 #, c-format
 msgid "%.1f EiB"
 msgstr "%.1f EiB"
 
-#: ../glib/gutils.c:2150
+#: ../glib/gutils.c:2182
 #, c-format
 msgid "%.1f kB"
 msgstr "%.1f kB"
 
-#: ../glib/gutils.c:2153 ../glib/gutils.c:2268
+#: ../glib/gutils.c:2185 ../glib/gutils.c:2300
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
-#: ../glib/gutils.c:2156 ../glib/gutils.c:2273
+#: ../glib/gutils.c:2188 ../glib/gutils.c:2305
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
-#: ../glib/gutils.c:2158 ../glib/gutils.c:2278
+#: ../glib/gutils.c:2190 ../glib/gutils.c:2310
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
-#: ../glib/gutils.c:2161 ../glib/gutils.c:2283
+#: ../glib/gutils.c:2193 ../glib/gutils.c:2315
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
-#: ../glib/gutils.c:2164 ../glib/gutils.c:2288
+#: ../glib/gutils.c:2196 ../glib/gutils.c:2320
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
 #. Translators: the %s in "%s bytes" will always be replaced by a number.
-#: ../glib/gutils.c:2201
+#: ../glib/gutils.c:2233
 #, c-format
 msgid "%s byte"
 msgid_plural "%s bytes"
@@ -4652,11 +5890,62 @@ msgstr[3] "%s bajti"
 #. * compatibility.  Users will not see this string unless a program is using this deprecated function.
 #. * Please translate as literally as possible.
 #.
-#: ../glib/gutils.c:2263
+#: ../glib/gutils.c:2295
 #, c-format
 msgid "%.1f KB"
 msgstr "%.1f KB"
 
+#~ msgid "Error creating directory '%s': %s"
+#~ msgstr "Napaka med ustvarjanjem mape '%s': %s"
+
+#~ msgid "No such interface"
+#~ msgstr "Vmesnik ne obstaja"
+
+#~ msgid "No files given"
+#~ msgstr "Ni nobene podane datoteke"
+
+#~ msgid "Error getting writable attributes: %s\n"
+#~ msgstr "Napaka med pridobivanjem zapisljivih atributov: %s\n"
+
+#~ msgid "Error mounting location: %s\n"
+#~ msgstr "Napaka med priklapljanjem mesta: %s\n"
+
+#~ msgid "Error unmounting mount: %s\n"
+#~ msgstr "Napaka med odklapljanjem mesta: %s\n"
+
+#~ msgid "Error finding enclosing mount: %s\n"
+#~ msgstr "Napaka med prilaganjem mesta: %s\n"
+
+#~ msgid "Error ejecting mount: %s\n"
+#~ msgstr "Napaka med izmetavanjem nosilca: %s\n"
+
+#~ msgid "Error mounting %s: %s\n"
+#~ msgstr "Napaka med priklapljanjem %s: %s\n"
+
+#~ msgid "No files to open"
+#~ msgstr "Ni datotek, označenih za odpiranje"
+
+#~ msgid "No files to delete"
+#~ msgstr "Ni datotek, označenih za brisanje"
+
+#~ msgid "Error setting attribute: %s\n"
+#~ msgstr "Napaka med določevanjem atributa: %s\n"
+
+#~ msgid "Error opening file '%s': %s"
+#~ msgstr "Napaka med odpiranjem datoteke '%s': %s"
+
+#~ msgid "Error reading file '%s': %s"
+#~ msgstr "Napaka med branjem datoteke '%s': %s"
+
+#~ msgid "Error renaming file: %s"
+#~ msgstr "Napaka med preimenovanjem datoteke: %s"
+
+#~ msgid "Error opening file: %s"
+#~ msgstr "Napaka med odpiranjem datoteke: %s"
+
+#~ msgid "Error creating directory: %s"
+#~ msgstr "Napaka med ustvarjanjem mape: %s"
+
 #~ msgid "Optional relative or relative filenames, or URIs to open"
 #~ msgstr ""
 #~ "Neobvezna relativna ali relativna imena datotek ali URI-ji za odpiranje"
@@ -4664,12 +5953,6 @@ msgstr "%.1f KB"
 #~ msgid "Unable to find default local directory monitor type"
 #~ msgstr "Ni mogoče najti privzete vrste nadzora mape"
 
-#~ msgid "Can't find application"
-#~ msgstr "Ni mogoče najti programa"
-
-#~ msgid "Error launching application: %s"
-#~ msgstr "Napaka med zaganjanjem programa: %s"
-
 #~ msgid "association changes not supported on win32"
 #~ msgstr "Spreminjanje asociativnih povezav ni podprto na win32 sistemih"
 
index 3ece36f..4b6fc4a 100644 (file)
@@ -7,6 +7,7 @@
 G_BEGIN_DECLS
 
 /* BOOLEAN:INT (./testmarshal.list:2) */
+G_BEGIN_DECLS
 extern
 void test_marshal_BOOLEAN__INT (GClosure     *closure,
                                 GValue       *return_value,
@@ -14,8 +15,10 @@ void test_marshal_BOOLEAN__INT (GClosure     *closure,
                                 const GValue *param_values,
                                 gpointer      invocation_hint,
                                 gpointer      marshal_data);
+G_END_DECLS
 
 /* STRING:INT (./testmarshal.list:3) */
+G_BEGIN_DECLS
 extern
 void test_marshal_STRING__INT (GClosure     *closure,
                                GValue       *return_value,
@@ -23,8 +26,10 @@ void test_marshal_STRING__INT (GClosure     *closure,
                                const GValue *param_values,
                                gpointer      invocation_hint,
                                gpointer      marshal_data);
+G_END_DECLS
 
 /* VARIANT:POINTER (./testmarshal.list:4) */
+G_BEGIN_DECLS
 extern
 void test_marshal_VARIANT__POINTER (GClosure     *closure,
                                     GValue       *return_value,
@@ -32,6 +37,7 @@ void test_marshal_VARIANT__POINTER (GClosure     *closure,
                                     const GValue *param_values,
                                     gpointer      invocation_hint,
                                     gpointer      marshal_data);
+G_END_DECLS
 
 
 G_END_DECLS
index 9de00d3..c904c2a 100644 (file)
@@ -23,7 +23,8 @@ io_pipe (GIOChannel **channels)
 
   if (pipe(fds) < 0)
     {
-      fprintf (stderr, "Cannot create pipe %s\n", g_strerror (errno));
+      int errsv = errno;
+      fprintf (stderr, "Cannot create pipe %s\n", g_strerror (errsv));
       exit (1);
     }
 
@@ -134,7 +135,7 @@ input_callback (GIOChannel   *source,
 static void
 create_child (void)
 {
-  int pid;
+  int pid, errsv;
   GIOChannel *in_channels[2];
   GIOChannel *out_channels[2];
   GSource *source;
@@ -143,6 +144,7 @@ create_child (void)
   io_pipe (out_channels);
 
   pid = fork ();
+  errsv = errno;
 
   if (pid > 0)                 /* Parent */
     {
@@ -172,7 +174,7 @@ create_child (void)
     }
   else                         /* Error */
     {
-      fprintf (stderr, "Cannot fork: %s\n", g_strerror (errno));
+      fprintf (stderr, "Cannot fork: %s\n", g_strerror (errsv));
       exit (1);
     }
 }
index 5d30550..9b8386a 100644 (file)
@@ -202,7 +202,8 @@ io_pipe (GIOChannel **channels)
 
   if (pipe(fds) < 0)
     {
-      g_warning ("Cannot create pipe %s\n", g_strerror (errno));
+      int errsv = errno;
+      g_warning ("Cannot create pipe %s\n", g_strerror (errsv));
       exit (1);
     }
 
index 45529d0..2798ce6 100644 (file)
@@ -60,7 +60,8 @@ WinMain (struct HINSTANCE__ *hInstance,
       if (write (outfd, &n, sizeof (n)) == -1 ||
          write (outfd, "Hello there", n) == -1)
        {
-         sprintf (buf, "spawn-test-win32-gui: Write: %s", strerror (errno));
+         int errsv = errno;
+         sprintf (buf, "spawn-test-win32-gui: Write: %s", strerror (errsv));
          MessageBox (NULL, buf, lpszCmdLine, MB_ICONERROR|MB_SYSTEMMODAL);
          exit (1);
        }
@@ -81,8 +82,9 @@ WinMain (struct HINSTANCE__ *hInstance,
 
       if ((k = read (infd, buf, n)) != n)
        {
+         int errsv = errno;
          if (k == -1)
-           sprintf (buf, "spawn-test-win32-gui: Read: %s", strerror (errno));
+           sprintf (buf, "spawn-test-win32-gui: Read: %s", strerror (errsv));
          else
            sprintf (buf, "spawn-test-win32-gui: Got only %d bytes", k);
          MessageBox (NULL, buf, lpszCmdLine, MB_ICONERROR|MB_SYSTEMMODAL);
@@ -96,7 +98,8 @@ WinMain (struct HINSTANCE__ *hInstance,
       if (write (outfd, &n, sizeof (n)) == -1 ||
          write (outfd, "See ya", n) == -1)
        {
-         sprintf (buf, "spawn-test-win32-gui: Write: %s", strerror (errno));
+         int errsv = errno;
+         sprintf (buf, "spawn-test-win32-gui: Write: %s", strerror (errsv));
          MessageBox (NULL, buf, lpszCmdLine, MB_ICONERROR|MB_SYSTEMMODAL);
          exit (1);
        }
index 217cfd9..05cce17 100644 (file)
@@ -232,8 +232,9 @@ run_tests (void)
 
       if ((k = read (pipeup[0], &n, sizeof (n))) != sizeof (n))
        {
+         int errsv = errno;
          if (k == -1)
-           fprintf (stderr, "Read error: %s\n", g_strerror (errno));
+           fprintf (stderr, "Read error: %s\n", g_strerror (errsv));
          else
            fprintf (stderr, "Wanted to read %d bytes, got %d\n",
                     sizeof (n), k);
@@ -242,8 +243,9 @@ run_tests (void)
 
       if ((k = read (pipeup[0], buf, n)) != n)
        {
+         int errsv = errno;
          if (k == -1)
-           fprintf (stderr, "Read error: %s\n", g_strerror (errno));
+           fprintf (stderr, "Read error: %s\n", g_strerror (errsv));
          else
            fprintf (stderr, "Wanted to read %d bytes, got %d\n",
                     n, k);
@@ -254,14 +256,16 @@ run_tests (void)
       if (write (pipedown[1], &n, sizeof (n)) == -1 ||
          write (pipedown[1], "Bye then", n) == -1)
        {
-         fprintf (stderr, "Write error: %s\n", g_strerror (errno));
+         int errsv = errno;
+         fprintf (stderr, "Write error: %s\n", g_strerror (errsv));
          exit (1);
        }
 
       if ((k = read (pipeup[0], &n, sizeof (n))) != sizeof (n))
        {
+         int errsv = errno;
          if (k == -1)
-           fprintf (stderr, "Read error: %s\n", g_strerror (errno));
+           fprintf (stderr, "Read error: %s\n", g_strerror (errsv));
          else
            fprintf (stderr, "Wanted to read %d bytes, got %d\n",
                     sizeof (n), k);
@@ -270,8 +274,9 @@ run_tests (void)
 
       if ((k = read (pipeup[0], buf, n)) != n)
        {
+         int errsv = errno;
          if (k == -1)
-           fprintf (stderr, "Read error: %s\n", g_strerror (errno));
+           fprintf (stderr, "Read error: %s\n", g_strerror (errsv));
          else
            fprintf (stderr, "Wanted to read %d bytes, got %d\n",
                     n, k);
index e9f7f36..b5a8331 100644 (file)
@@ -907,6 +907,7 @@ test_file_functions (void)
   char template[32];
   char *name_used, chars[62];
   gint fd, n;
+  int errsv;
   
   strcpy (template, "foobar");
   fd = g_mkstemp (template);
@@ -919,15 +920,17 @@ test_file_functions (void)
   if (fd == -1)
     g_error ("g_mkstemp didn't work for template %s\n", template);
   n = write (fd, hello, hellolen);
+  errsv = errno;
   if (n == -1)
-    g_error ("write() failed: %s\n", g_strerror (errno));
+    g_error ("write() failed: %s\n", g_strerror (errsv));
   else if (n != hellolen)
     g_error ("write() should have written %d bytes, wrote %d\n", hellolen, n);
 
   lseek (fd, 0, 0);
   n = read (fd, chars, sizeof (chars));
+  errsv = errno;
   if (n == -1)
-    g_error ("read() failed: %s\n", g_strerror (errno));
+    g_error ("read() failed: %s\n", g_strerror (errsv));
   else if (n != hellolen)
     g_error ("read() should have read %d bytes, got %d\n", hellolen, n);
 
index 2c11bc5..7f95226 100644 (file)
@@ -25,7 +25,8 @@ my_pipe (int *fds)
 {
   if (pipe(fds) < 0)
     {
-      fprintf (stderr, "Cannot create pipe %s\n", strerror (errno));
+      int errsv = errno;
+      fprintf (stderr, "Cannot create pipe %s\n", strerror (errsv));
       exit (1);
     }
 }
@@ -121,7 +122,7 @@ input_callback (int source, int dest)
 void
 create_child (int pos)
 {
-  int pid;
+  int pid, errsv;
   int in_fds[2];
   int out_fds[2];
   
@@ -129,6 +130,7 @@ create_child (int pos)
   my_pipe (out_fds);
 
   pid = fork ();
+  errsv = errno;
 
   if (pid > 0)                 /* Parent */
     {
@@ -150,7 +152,7 @@ create_child (int pos)
     }
   else                         /* Error */
     {
-      fprintf (stderr,"Cannot fork: %s\n", strerror (errno));
+      fprintf (stderr,"Cannot fork: %s\n", strerror (errsv));
       exit (1);
     }
 }
index a1f69ef..8b5aa36 100644 (file)
@@ -22,7 +22,8 @@ io_pipe (GIOChannel **channels)
 
   if (pipe(fds) < 0)
     {
-      fprintf (stderr, "Cannot create pipe %s\n", g_strerror (errno));
+      int errsv = errno;
+      fprintf (stderr, "Cannot create pipe %s\n", g_strerror (errsv));
       exit (1);
     }
 
@@ -136,7 +137,7 @@ input_callback (GIOChannel   *source,
 static void
 create_child (void)
 {
-  int pid;
+  int pid, errsv;
   GIOChannel *in_channels[2];
   GIOChannel *out_channels[2];
   
@@ -144,6 +145,7 @@ create_child (void)
   io_pipe (out_channels);
 
   pid = fork ();
+  errsv = errno;
 
   if (pid > 0)                 /* Parent */
     {
@@ -166,7 +168,7 @@ create_child (void)
     }
   else                         /* Error */
     {
-      fprintf (stderr, "Cannot fork: %s\n", g_strerror (errno));
+      fprintf (stderr, "Cannot fork: %s\n", g_strerror (errsv));
       exit (1);
     }
 }
index 7c85f47..fa6e664 100644 (file)
@@ -2,7 +2,7 @@
 <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <PropertyGroup Label="UserMacros">
     <VSVer>10</VSVer>
-    <GlibVersion>2.53.4</GlibVersion>
+    <GlibVersion>2.53.5</GlibVersion>
     <ApiVersion>2.0</ApiVersion>
     <GlibEtcInstallRoot>..\..\..\vs$(VSVer)\$(Platform)</GlibEtcInstallRoot>
     <CopyDir>$(GlibEtcInstallRoot)</CopyDir>
index 6735465..64fb6e0 100644 (file)
@@ -2,7 +2,7 @@
 <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <PropertyGroup Label="UserMacros">
     <VSVer>11</VSVer>
-    <GlibVersion>2.53.4</GlibVersion>
+    <GlibVersion>2.53.5</GlibVersion>
     <ApiVersion>2.0</ApiVersion>
     <GlibEtcInstallRoot>..\..\..\vs$(VSVer)\$(Platform)</GlibEtcInstallRoot>
     <CopyDir>$(GlibEtcInstallRoot)</CopyDir>
index 76b6b75..21f6ba7 100644 (file)
@@ -2,7 +2,7 @@
 <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <PropertyGroup Label="UserMacros">
     <VSVer>12</VSVer>
-    <GlibVersion>2.53.4</GlibVersion>
+    <GlibVersion>2.53.5</GlibVersion>
     <ApiVersion>2.0</ApiVersion>
     <GlibEtcInstallRoot>..\..\..\vs$(VSVer)\$(Platform)</GlibEtcInstallRoot>
     <CopyDir>$(GlibEtcInstallRoot)</CopyDir>
index bc54258..55d7718 100644 (file)
@@ -2,7 +2,7 @@
 <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <PropertyGroup Label="UserMacros">
     <VSVer>14</VSVer>
-    <GlibVersion>2.53.4</GlibVersion>
+    <GlibVersion>2.53.5</GlibVersion>
     <ApiVersion>2.0</ApiVersion>
     <GlibEtcInstallRoot>..\..\..\vs$(VSVer)\$(Platform)</GlibEtcInstallRoot>
     <CopyDir>$(GlibEtcInstallRoot)</CopyDir>
index 9dbb57c..e0e2c36 100644 (file)
@@ -2,7 +2,7 @@
 <Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
   <PropertyGroup Label="UserMacros">
     <VSVer>15</VSVer>
-    <GlibVersion>2.53.4</GlibVersion>
+    <GlibVersion>2.53.5</GlibVersion>
     <ApiVersion>2.0</ApiVersion>
     <GlibEtcInstallRoot>..\..\..\vs$(VSVer)\$(Platform)</GlibEtcInstallRoot>
     <CopyDir>$(GlibEtcInstallRoot)</CopyDir>
index 2b6d1bf..bbd2bfe 100644 (file)
@@ -10,7 +10,7 @@
        />
        <UserMacro
                Name="GlibVersion"
-               Value="2.53.4"
+               Value="2.53.5"
        />
        <UserMacro
                Name="ApiVersion"