Imported Upstream version 2.72.3
authorKarol Lewandowski <k.lewandowsk@samsung.com>
Wed, 3 Jan 2024 14:59:40 +0000 (15:59 +0100)
committerKarol Lewandowski <k.lewandowsk@samsung.com>
Wed, 3 Jan 2024 14:59:40 +0000 (15:59 +0100)
429 files changed:
.editorconfig [new file with mode: 0644]
.gitlab-ci.yml
.gitlab-ci/android-ndk.Dockerfile
.gitlab-ci/android-setup-env.sh
.gitlab-ci/coverage-docker.sh
.gitlab-ci/coverity.Dockerfile
.gitlab-ci/cross_file_mingw64.txt
.gitlab-ci/debian-stable.Dockerfile
.gitlab-ci/fedora.Dockerfile
.gitlab-ci/mingw.Dockerfile
.gitlab-ci/run-style-check-diff.sh
.gitlab-ci/test-msvc.bat
.gitlab-ci/test-msys2.sh
INSTALL.in
NEWS
README.md
docs/reference/gio/gdbus-codegen.xml
docs/reference/gio/gdbus.xml
docs/reference/gio/gio-docs.xml
docs/reference/gio/gio-sections-common.txt
docs/reference/gio/glib-compile-resources.xml
docs/reference/gio/meson.build
docs/reference/gio/overview.xml
docs/reference/glib/glib-docs.xml
docs/reference/glib/glib-sections.txt
docs/reference/glib/gvariant-varargs.xml
docs/reference/gobject/gobject-docs.xml
docs/reference/gobject/gobject-sections.txt
docs/reference/gobject/tut_gsignal.xml
docs/reference/meson.build
fuzzing/fuzz_paths.c
fuzzing/fuzz_resolver.c [new file with mode: 0644]
fuzzing/meson.build
gio/fam/meson.build
gio/gappinfo.c
gio/gappinfo.h
gio/gapplicationcommandline.c
gio/gcontenttype-win32.c
gio/gcontenttype.c
gio/gcredentials.c
gio/gcredentialsprivate.h
gio/gdbus-2.0/codegen/.flake8 [new file with mode: 0644]
gio/gdbus-2.0/codegen/codegen.py
gio/gdbus-2.0/codegen/codegen_docbook.py
gio/gdbus-2.0/codegen/codegen_main.py
gio/gdbus-2.0/codegen/codegen_rst.py [new file with mode: 0644]
gio/gdbus-2.0/codegen/meson.build
gio/gdbus-2.0/codegen/parser.py
gio/gdbus-tool.c
gio/gdbusaddress.c
gio/gdbusauthmechanismexternal.c
gio/gdbusauthmechanismsha1.c
gio/gdbusconnection.c
gio/gdbuserror.c
gio/gdbusmessage.c
gio/gdbusmethodinvocation.c
gio/gdbusobjectmanagerclient.c
gio/gdbusobjectmanagerserver.c
gio/gdbusprivate.c
gio/gdbusproxy.c
gio/gdbusutils.c
gio/gdebugcontroller.c [new file with mode: 0644]
gio/gdebugcontroller.h [new file with mode: 0644]
gio/gdebugcontrollerdbus.c [new file with mode: 0644]
gio/gdebugcontrollerdbus.h [new file with mode: 0644]
gio/gdesktopappinfo.c
gio/gdrive.c
gio/gdtlsconnection.c
gio/gfile.c
gio/gfile.h
gio/gfileenumerator.c
gio/gfilemonitor.c
gio/ginputstream.c
gio/gio-querymodules.c
gio/gio-tool-set.c
gio/gio.h
gio/gioenums.h
gio/giomodule.c
gio/giomodule.h
gio/giowin32-afunix.h [new file with mode: 0644]
gio/glib-compile-resources.c
gio/glib-compile-schemas.c
gio/glistmodel.c
gio/glocalfileinfo.h
gio/glocalfilemonitor.c
gio/glocalfileoutputstream.c
gio/gmemorymonitorwin32.c [new file with mode: 0644]
gio/gmemoryoutputstream.c
gio/gnetworkservice.c
gio/gopenuriportal.c
gio/goutputstream.c
gio/gpowerprofilemonitor.c
gio/gproxyaddressenumerator.c
gio/gregistrysettingsbackend.c
gio/gresolver.c
gio/gresource-tool.c
gio/gresource.c
gio/gresourcefile.c
gio/gsettings-tool.c
gio/gsettings.c
gio/gsettings.h
gio/gsettingsbackend.c
gio/gsettingsschema.c
gio/gsimpleasyncresult.c
gio/gsimpleproxyresolver.c
gio/gsocket.c
gio/gsocketaddress.c
gio/gsocketclient.c
gio/gsocketclient.h
gio/gsocketconnection.c
gio/gsubprocess.c
gio/gsubprocesslauncher-private.h
gio/gtask.c
gio/gthreadedresolver.c
gio/gthreadedresolver.h
gio/gtlscertificate.c
gio/gtlscertificate.h
gio/gtlsclientconnection.c
gio/gtlsclientconnection.h
gio/gtlsconnection.c
gio/gtlsdatabase.c
gio/gtrashportal.c
gio/gunixconnection.c
gio/gunixcredentialsmessage.c
gio/gunixmounts.c
gio/gunixsocketaddress.c
gio/gvolume.c
gio/gwin32appinfo.c
gio/gwin32packageparser.c
gio/gwin32sid.c [new file with mode: 0644]
gio/gwin32sid.h [new file with mode: 0644]
gio/meson.build
gio/tests/actions.c
gio/tests/appmonitor.c
gio/tests/cert-tests/key-cert-password-123.p12 [new file with mode: 0644]
gio/tests/codegen.py
gio/tests/contenttype.c
gio/tests/converter-stream.c
gio/tests/credentials.c
gio/tests/cxx.cpp [new file with mode: 0644]
gio/tests/debugcontroller.c [new file with mode: 0644]
gio/tests/desktop-app-info.c
gio/tests/file.c
gio/tests/g-file-info-filesystem-readonly.c
gio/tests/g-file-info.c
gio/tests/gdbus-auth.c
gio/tests/gdbus-connection-flush.c
gio/tests/gdbus-connection.c
gio/tests/gdbus-export.c
gio/tests/gdbus-method-invocation.c [new file with mode: 0644]
gio/tests/gdbus-non-socket.c
gio/tests/gdbus-object-manager-example/meson.build
gio/tests/gdbus-proxy.c
gio/tests/gdbus-test-codegen.c
gio/tests/gdbus-threading.c
gio/tests/gio-du.c
gio/tests/gsettings.c
gio/tests/gsubprocess-testprog.c
gio/tests/gsubprocess.c
gio/tests/memory-monitor.c
gio/tests/memory-output-stream.c
gio/tests/meson.build
gio/tests/mock-resolver.c
gio/tests/modules/symbol-visibility.h
gio/tests/network-address.c
gio/tests/proxy-test.c
gio/tests/resolver-parsing.c [new file with mode: 0644]
gio/tests/resolver.c
gio/tests/resources.c
gio/tests/socket.c
gio/tests/testfilemonitor.c
gio/tests/tls-certificate.c
gio/win32/gwin32fsmonitorutils.c
gio/win32/gwinhttpfile.c
gio/win32/gwinhttpvfs.c
gio/xdgmime/meson.build
gio/xdgmime/xdgmime.c
gio/xdgmime/xdgmime.h
gio/xdgmime/xdgmimealias.c
gio/xdgmime/xdgmimealias.h
gio/xdgmime/xdgmimecache.c
gio/xdgmime/xdgmimecache.h
gio/xdgmime/xdgmimeglob.c
gio/xdgmime/xdgmimeglob.h
gio/xdgmime/xdgmimeicon.c
gio/xdgmime/xdgmimeicon.h
gio/xdgmime/xdgmimeint.c
gio/xdgmime/xdgmimeint.h
gio/xdgmime/xdgmimemagic.c
gio/xdgmime/xdgmimemagic.h
gio/xdgmime/xdgmimeparent.c
gio/xdgmime/xdgmimeparent.h
glib.supp
glib/deprecated/gcompletion.c
glib/deprecated/gthread-deprecated.c
glib/docs.c
glib/galloca.h
glib/garray.c
glib/gatomic.h
glib/gbacktrace.c
glib/gbookmarkfile.c
glib/gcharset.c
glib/gconstructor.h
glib/gconvert.c
glib/gdataset.c
glib/gdate.c
glib/gdatetime.c
glib/genviron.c
glib/gerror.h
glib/gfileutils.c
glib/ghash.c
glib/ghash.h
glib/ghmac.c
glib/ghostutils.c
glib/giochannel.c
glib/giowin32.c
glib/gkeyfile.c
glib/glib-init.c
glib/glib-init.h
glib/glib-object.h
glib/glib-private.c
glib/glib-private.h
glib/glib-unix.c
glib/glib-unix.h
glib/glibconfig.h.in
glib/gmacros.h
glib/gmain.c
glib/gmain.h
glib/gmappedfile.c
glib/gmarkup.c
glib/gmem.c
glib/gmem.h
glib/gmessages.c
glib/gmessages.h
glib/gmirroringtable.h
glib/goption.c
glib/goption.h
glib/gosxutils.m
glib/gpoll.c
glib/gprintf.c
glib/gqsort.c
glib/gqueue.c
glib/gregex.c
glib/gregex.h
glib/gscanner.c
glib/gscripttable.h
glib/gsequence.c
glib/gshell.c
glib/gslice.c
glib/gspawn-win32-helper.c
glib/gspawn-win32.c
glib/gspawn.c
glib/gstdio.c
glib/gstdio.h
glib/gstrfuncs.c
glib/gstring.c
glib/gstringchunk.c
glib/gtester.c
glib/gtestutils.c
glib/gtestutils.h
glib/gthread-win32.c
glib/gtimer.c
glib/gtimezone.c
glib/gtypes.h
glib/gunibreak.h
glib/gunichartables.h
glib/gunicode.h
glib/gunicollate.c
glib/gunidecomp.h
glib/guniprop.c
glib/guri.c
glib/gutf8.c
glib/gutils.c
glib/gutils.h
glib/gutilsprivate.h
glib/gvariant-parser.c
glib/gvariant.c
glib/gvariant.h
glib/gversionmacros.h
glib/gwin32-private.c
glib/gwin32.c
glib/meson.build
glib/tests/642026.c
glib/tests/array-test.c
glib/tests/asyncqueue.c
glib/tests/casefold.txt [moved from tests/casefold.txt with 100% similarity]
glib/tests/casemap.txt [moved from tests/casemap.txt with 100% similarity]
glib/tests/completion.c [moved from tests/completion-test.c with 58% similarity]
glib/tests/cxx.cpp
glib/tests/dataset.c
glib/tests/date.c
glib/tests/environment.c
glib/tests/fileutils.c
glib/tests/gdatetime.c
glib/tests/gen-casefold-txt.py [moved from tests/gen-casefold-txt.py with 100% similarity]
glib/tests/gen-casemap-txt.py [moved from tests/gen-casemap-txt.py with 100% similarity]
glib/tests/hash.c
glib/tests/io-channel.c
glib/tests/iochannel-test-infile [moved from tests/iochannel-test-infile with 100% similarity]
glib/tests/keyfile.c
glib/tests/list.c
glib/tests/logging.c
glib/tests/mainloop.c
glib/tests/mem-overflow.c
glib/tests/memchunk.c [new file with mode: 0644]
glib/tests/meson.build
glib/tests/node.c
glib/tests/option-argv0.c
glib/tests/option-context.c
glib/tests/private.c
glib/tests/protocol.c
glib/tests/relation.c [moved from tests/relation-test.c with 62% similarity]
glib/tests/search-utils.c
glib/tests/sequence.c
glib/tests/slice-color.c [new file with mode: 0644]
glib/tests/slice-concurrent.c [moved from tests/slice-concurrent.c with 75% similarity]
glib/tests/sort.c
glib/tests/spawn-multithreaded.c
glib/tests/spawn-path-search.c
glib/tests/spawn-singlethread.c
glib/tests/strfuncs.c
glib/tests/string.c
glib/tests/test-printf.c
glib/tests/test-spawn-sleep.c [new file with mode: 0644]
glib/tests/testing-helper.c
glib/tests/testing.c
glib/tests/timer.c
glib/tests/tree.c
glib/tests/types.c [moved from tests/type-test.c with 68% similarity]
glib/tests/unicode.c
glib/tests/utf8-misc.c
glib/tests/utf8-validate.c
glib/tests/utils.c
glib/win_iconv.c
gmodule/gmodule.c
gmodule/meson.build
gmodule/tests/cxx.cpp [new file with mode: 0644]
gmodule/tests/meson.build [new file with mode: 0644]
gobject/gbindinggroup.c [new file with mode: 0644]
gobject/gbindinggroup.h [new file with mode: 0644]
gobject/gboxed.c
gobject/glib-types.h
gobject/gobject-query.c
gobject/gobject.c
gobject/gobject.h
gobject/gparam.c
gobject/gsignal.c
gobject/gsignal.h
gobject/gsignalgroup.c [new file with mode: 0644]
gobject/gsignalgroup.h [new file with mode: 0644]
gobject/gtype.c
gobject/gtype.h
gobject/gvaluecollector.h
gobject/gvaluetypes.h
gobject/meson.build
gobject/tests/bindinggroup.c [new file with mode: 0644]
gobject/tests/cxx.cpp [new file with mode: 0644]
gobject/tests/meson.build
gobject/tests/mkenums.py
gobject/tests/param.c
gobject/tests/reference.c
gobject/tests/signalgroup.c [new file with mode: 0644]
gobject/tests/threadtests.c
gobject/tests/value.c
meson.build
po/POTFILES.in
po/bg.po
po/ca.po
po/cs.po
po/da.po
po/de.po
po/en_GB.po
po/es.po
po/eu.po
po/fa.po
po/fr.po
po/fur.po
po/gl.po
po/he.po
po/hr.po
po/hu.po
po/id.po
po/it.po
po/kk.po
po/ko.po
po/lt.po
po/lv.po
po/ne.po
po/pl.po
po/pt.po
po/pt_BR.po
po/ro.po
po/ru.po
po/sk.po
po/sl.po
po/sr.po
po/sv.po
po/tr.po
po/uk.po
po/zh_CN.po
subprojects/pcre.wrap
subprojects/proxy-libintl.wrap
subprojects/zlib.wrap
tests/asyncqueue-test.c [deleted file]
tests/bit-test.c [deleted file]
tests/child-test.c [deleted file]
tests/cxx-test.cpp [deleted file]
tests/datetime.c [deleted file]
tests/dirname-test.c [deleted file]
tests/env-test.c [deleted file]
tests/file-test.c [deleted file]
tests/gio-test.c
tests/gobject/gvalue-test.c [deleted file]
tests/gobject/meson.build
tests/gobject/paramspec-test.c [deleted file]
tests/iochannel-test.c [deleted file]
tests/mapping-test.c
tests/meson.build
tests/module-test.c
tests/qsort-test.c [deleted file]
tests/run-collate-tests.sh [deleted file]
tests/slice-color.c [deleted file]
tests/slice-test.c
tests/sources.c [deleted file]
tests/testgdate.c [deleted file]
tests/testgdateparser.c [deleted file]
tests/testglib.c [deleted file]
tests/unicode-caseconv.c [deleted file]
tests/unicode-collate.c [deleted file]

diff --git a/.editorconfig b/.editorconfig
new file mode 100644 (file)
index 0000000..d433576
--- /dev/null
@@ -0,0 +1,17 @@
+root = true
+
+[*]
+charset = utf-8
+end_of_line = lf
+
+[*.[ch]]
+indent_size = 2
+indent_style = space
+insert_final_newline = true
+# For the legacy tabs which still exist in the code:
+tab_width = 8
+
+[meson.build]
+indent_size = 2
+indent_style = space
+
index 7106a97..b44008a 100644 (file)
@@ -10,11 +10,11 @@ cache:
     - _ccache/
 
 variables:
-  FEDORA_IMAGE: "registry.gitlab.gnome.org/gnome/glib/fedora:v11"
-  COVERITY_IMAGE: "registry.gitlab.gnome.org/gnome/glib/coverity:v1"
-  DEBIAN_IMAGE: "registry.gitlab.gnome.org/gnome/glib/debian-stable:v8"
-  ANDROID_IMAGE: "registry.gitlab.gnome.org/gnome/glib/android-ndk:v4"
-  MINGW_IMAGE: "registry.gitlab.gnome.org/gnome/glib/mingw:v3"
+  FEDORA_IMAGE: "registry.gitlab.gnome.org/gnome/glib/fedora:v13"
+  COVERITY_IMAGE: "registry.gitlab.gnome.org/gnome/glib/coverity:v3"
+  DEBIAN_IMAGE: "registry.gitlab.gnome.org/gnome/glib/debian-stable:v9"
+  ANDROID_IMAGE: "registry.gitlab.gnome.org/gnome/glib/android-ndk:v6"
+  MINGW_IMAGE: "registry.gitlab.gnome.org/gnome/glib/mingw:v5"
   MESON_TEST_TIMEOUT_MULTIPLIER: 2
   G_MESSAGES_DEBUG: all
   MESON_COMMON_OPTIONS_NO_WARNING: "--buildtype debug --wrap-mode=nodownload"
@@ -26,19 +26,29 @@ variables:
   except:
     - tags
 
-.build:
-  extends: .only-default
-  before_script:
-    - bash .gitlab-ci/show-execution-environment.sh
-    - cp -r $HOME/subprojects/* subprojects/
+# Some jobs run on CI runners which don’t have good isolation between CI jobs,
+# and don’t have much available resource. Limit those jobs to only ones on the
+# origin repository (GNOME/glib), rather than people’s forks. Code in the origin
+# repository can be trusted.
+.only-origin:
+  only:
+    - branches@GNOME/glib
+  except:
+    - tags
 
 # Some jobs take a long time and are unlikely to find failures (or will find
 # failures which are not merge-blockers to fix), so they’re executed on a weekly
 # schedule in order to save CI resources and speed up branch pipelines.
-.build-only-schedules:
-  extends: .build
+.only-schedules:
   only:
     - schedules
+  except:
+    - tags
+
+.build-linux:
+  before_script:
+    - bash .gitlab-ci/show-execution-environment.sh
+    - cp -r $HOME/subprojects/* subprojects/
 
 style-check-diff:
   extends: .only-default
@@ -60,7 +70,9 @@ check-todos:
     - .gitlab-ci/run-check-todos.sh
 
 fedora-x86_64:
-  extends: .build
+  extends:
+    - .build-linux
+    - .only-default
   image: $FEDORA_IMAGE
   stage: build
   needs: []
@@ -68,7 +80,7 @@ fedora-x86_64:
     CFLAGS: "-coverage -ftest-coverage -fprofile-arcs"
   script:
     # FIXME: Cannot use MESON_COMMON_OPTIONS here because meson warns about gtkdoc
-    # feature introduced in 0.52 but we only depends on 0.49. So we cannot build
+    # feature fully functional in 0.54, but we only depend on 0.52. So we cannot build
     # with --fatal-meson-warnings.
     - meson ${MESON_COMMON_OPTIONS_NO_WARNING}
             --werror
@@ -78,7 +90,6 @@ fedora-x86_64:
             --libdir=lib
             -Dsystemtap=true
             -Ddtrace=true
-            -Dfam=true
             -Dinstalled_tests=true
             -Dgtk_doc=true
             _build
@@ -109,7 +120,9 @@ fedora-x86_64:
       - "_coverage"
 
 debian-stable-x86_64:
-  extends: .build
+  extends:
+    - .build-linux
+    - .only-default
   image: $DEBIAN_IMAGE
   stage: build
   needs: []
@@ -139,7 +152,9 @@ debian-stable-x86_64:
       - "_build/${CI_JOB_NAME}-report.xml"
 
 installed-tests:
-  extends: .build-only-schedules
+  extends:
+    - .build-linux
+    - .only-schedules
   image: $FEDORA_IMAGE
   stage: build
   needs: []
@@ -148,7 +163,6 @@ installed-tests:
     - meson ${MESON_COMMON_OPTIONS}
             --werror
             --prefix=/usr --libdir=/usr/lib64
-            -Dfam=true
             -Dinstalled_tests=true
             -Ddefault_library=both
             -Ddtrace=false
@@ -158,24 +172,6 @@ installed-tests:
     # Remove old headers, possibly present in current installation
     - sudo rm -f /usr/include/glib-2.0/glib/gurifuncs.h
     - sudo chown -R `id -un`:`id -gn` _build/
-    # FIXME Install newer xdg-desktop-portal with
-    # GMemoryMonitor support, see:
-    # https://github.com/flatpak/xdg-desktop-portal/pull/365
-    - git clone --branch 1.6.0 --depth 1 --no-tags https://github.com/flatpak/xdg-desktop-portal.git
-    - cd xdg-desktop-portal
-    - ./autogen.sh --prefix=/usr --libdir=/usr/lib64 --disable-libportal --disable-dependency-tracking
-    - make
-    - sudo make install
-    - cd ..
-    # FIXME install newer gobject-introspection
-    # with GMemoryMonitor support, see:
-    # https://gitlab.gnome.org/GNOME/gobject-introspection/merge_requests/193
-    - git clone --single-branch --depth 1 --no-tags https://gitlab.gnome.org/GNOME/gobject-introspection.git
-    - cd gobject-introspection
-    - /usr/bin/meson _build --prefix=/usr --libdir=/usr/lib64
-    - ninja -C _build
-    - sudo ninja -C _build install
-    - cd ..
     # Work-around https://gitlab.gnome.org/GNOME/gnome-desktop-testing/merge_requests/2
     - mkdir -p _build/installed-tests-report/logs/
     - GLIB_TEST_COMPILATION=1 gnome-desktop-testing-runner
@@ -193,7 +189,9 @@ installed-tests:
       - "_build/installed-tests-report/"
 
 G_DISABLE_ASSERT:
-  extends: .build-only-schedules
+  extends:
+    - .build-linux
+    - .only-schedules
   image: $FEDORA_IMAGE
   stage: build
   needs: []
@@ -202,7 +200,6 @@ G_DISABLE_ASSERT:
             --werror
             -Dsystemtap=true
             -Ddtrace=true
-            -Dfam=true
             -Dinstalled_tests=true
             -Dglib_assert=false
             _build
@@ -220,7 +217,9 @@ G_DISABLE_ASSERT:
       - "_build/${CI_JOB_NAME}-report.xml"
 
 valgrind:
-  extends: .build-only-schedules
+  extends:
+    - .build-linux
+    - .only-schedules
   image: $FEDORA_IMAGE
   stage: analysis
   needs: []
@@ -231,7 +230,6 @@ valgrind:
             --werror
             -Dsystemtap=true
             -Ddtrace=true
-            -Dfam=true
             -Dinstalled_tests=true
             _build
     - ninja -C _build
@@ -253,8 +251,8 @@ valgrind:
       - "_build/glib/glibconfig.h"
       - "_build/meson-logs"
 
-.cross-template: &cross-template
-  extends: .build
+.cross-build-linux:
+  extends: .build-linux
   stage: build
   needs: []
   artifacts:
@@ -263,40 +261,38 @@ valgrind:
     paths:
       - "_build/meson-logs"
 
-cross-android_api21_arm64:
-  <<: *cross-template
-  image: $ANDROID_IMAGE
-  script:
-    # FIXME: add --werror
-    # We use -Diconv=auto to test that we successfully detect that iconv is not
-    # provided by android api 21, and detect the external iconv instead.
-    # FIXME: Work around a bug in Meson 0.49 where --wrap-mode=nodownload also
-    # disables fallback subprojects, by passing --wrap-mode=default. Fixed in
-    # Meson commit 47b9c1a564756ac48a55da9a7c4d91787399c645
-    - meson ${MESON_COMMON_OPTIONS} --cross-file=/opt/cross_file_android_arm64_21.txt -Diconv=auto --wrap-mode=default _build
-    - ninja -C _build
-
 cross-android_api28_arm64:
-  <<: *cross-template
+  extends:
+    - .cross-build-linux
+    - .only-default
   image: $ANDROID_IMAGE
   script:
     # FIXME: add --werror
-    # FIXME: Work around a bug in Meson 0.49 where --wrap-mode=nodownload also
-    # disables fallback subprojects, by passing --wrap-mode=default. Fixed in
-    # Meson commit 47b9c1a564756ac48a55da9a7c4d91787399c645
-    - meson ${MESON_COMMON_OPTIONS} --cross-file=/opt/cross_file_android_arm64_28.txt --wrap-mode=default _build
+    - meson ${MESON_COMMON_OPTIONS} --cross-file=/opt/cross_file_android_arm64_28.txt _build
     - ninja -C _build
 
 cross-mingw64:
-  <<: *cross-template
+  extends:
+    - .cross-build-linux
+    - .only-default
   image: $MINGW_IMAGE
   script:
     # FIXME: Add --werror
-    # FIXME: Work around a bug in Meson 0.49 where --wrap-mode=nodownload also
-    # disables fallback subprojects, by passing --wrap-mode=default. Fixed in
-    # Meson commit 47b9c1a564756ac48a55da9a7c4d91787399c645
-    - meson ${MESON_COMMON_OPTIONS} --cross-file=/opt/cross_file_mingw64.txt --wrap-mode=default _build
+    - meson ${MESON_COMMON_OPTIONS} --cross-file=/opt/cross_file_mingw64.txt _build
     - ninja -C _build
+  artifacts:
+    reports:
+      junit: "_build/${env:CI_JOB_NAME}-report.xml"
+    name: "glib-${env:CI_JOB_NAME}-${env:CI_COMMIT_REF_NAME}"
+    when: always
+    paths:
+      - _build/meson-logs
+      - "_build/${env:CI_JOB_NAME}-report.xml"
+      - _build/glib/libglib-2.0-0.dll
+      - _build/gio/libgio-2.0-0.dll
+      - _build/gmodule/libgmodule-2.0-0.dll
+      - _build/gthread/libgthread-2.0-0.dll
+      - _build/gobject/libgobject-2.0-0.dll
 
 msys2-mingw32:
   extends: .only-default
@@ -328,7 +324,33 @@ vs2017-x64:
     - win32-ps
   needs: []
   script:
-    - .gitlab-ci/test-msvc.bat
+    # FIXME: These should use --wrap-mode=nodownload but the Windows CI machines
+    # aren’t currently set up for that.
+    - .gitlab-ci/test-msvc.bat ${MESON_COMMON_OPTIONS} --wrap-mode=default
+  artifacts:
+    reports:
+      junit: "_build/${env:CI_JOB_NAME}-report.xml"
+    name: "glib-${env:CI_JOB_NAME}-${env:CI_COMMIT_REF_NAME}"
+    when: always
+    paths:
+      - _build/meson-logs
+      - "_build/${env:CI_JOB_NAME}-report.xml"
+      - _build/glib/libglib-2.0-0.dll
+      - _build/gio/libgio-2.0-0.dll
+      - _build/gmodule/libgmodule-2.0-0.dll
+      - _build/gthread/libgthread-2.0-0.dll
+      - _build/gobject/libgobject-2.0-0.dll
+
+vs2017-x64-static:
+  extends: .only-default
+  stage: build
+  tags:
+    - win32-ps
+  needs: []
+  script:
+    # FIXME: These should use --wrap-mode=nodownload but the Windows CI machines
+    # aren’t currently set up for that.
+    - .gitlab-ci/test-msvc.bat ${MESON_COMMON_OPTIONS} --wrap-mode=default --default-library=static
   artifacts:
     reports:
       junit: "_build/${env:CI_JOB_NAME}-report.xml"
@@ -339,9 +361,11 @@ vs2017-x64:
       - "_build/${env:CI_JOB_NAME}-report.xml"
 
 freebsd-12-x86_64:
+  # The FreeBSD 13 build is run on each commit, so the FreeBSD 12 build can be
+  # run less regularly to save CI resources. The chance of a regression on
+  # FreeBSD 12 and not FreeBSD 13 is tiny.
+  extends: .only-schedules
   stage: build
-  only:
-    - branches@GNOME/glib
   tags:
     # To run a FreeBSD builder, install gitlab-runner package and start both
     # gitlab-runner and dbus service because we need /var/lib/dbus/machine-id.
@@ -370,8 +394,6 @@ freebsd-12-x86_64:
     - meson ${MESON_COMMON_OPTIONS} --localstatedir=/var -Db_lundef=false -Diconv=external -Dxattr=false _build
     - ninja -C _build
     - bash -x ./.gitlab-ci/run-tests.sh
-  except:
-    - tags
   artifacts:
     reports:
       junit: "_build/${CI_JOB_NAME}-report.xml"
@@ -384,9 +406,8 @@ freebsd-12-x86_64:
       - "_build/${CI_JOB_NAME}-report.xml"
 
 freebsd-13-x86_64:
+  extends: .only-origin
   stage: build
-  only:
-    - branches@GNOME/glib
   tags:
     - freebsd-13
   needs: []
@@ -400,8 +421,6 @@ freebsd-13-x86_64:
     - meson ${MESON_COMMON_OPTIONS} --localstatedir=/var -Db_lundef=false -Diconv=external -Dxattr=false _build
     - ninja -C _build
     - bash -x ./.gitlab-ci/run-tests.sh
-  except:
-    - tags
   artifacts:
     reports:
       junit: "_build/${CI_JOB_NAME}-report.xml"
@@ -414,20 +433,17 @@ freebsd-13-x86_64:
       - "_build/${CI_JOB_NAME}-report.xml"
 
 macos:
-  extends: .only-default
+  extends: .only-origin
   stage: build
-  only:
-    - branches@GNOME/glib
   tags:
     - macos
   needs: []
   before_script:
     - bash .gitlab-ci/show-execution-environment.sh
-    - pip3 install --user meson==0.49.2
+    - pip3 install --user meson==0.60.1
     - pip3 install --user ninja
     - export PATH=/Users/gitlabrunner/Library/Python/3.7/bin:$PATH
   script:
-    # FIXME: Add --werror
     # FIXME: Use --wrap-mode=default so we download dependencies each time,
     # until the macOS runner is a VM where we can use a pre-made image which
     # already contains the dependencies. See:
@@ -435,10 +451,10 @@ macos:
     #  - https://gitlab.gnome.org/Infrastructure/Infrastructure/issues/225
     - meson ${MESON_COMMON_OPTIONS}
             --wrap-mode=default
+            --werror
             _build
     - ninja -C _build
-    # FIXME: Multiple unit tests currently fails
-    - .gitlab-ci/run-tests.sh || true
+    - .gitlab-ci/run-tests.sh
   artifacts:
     reports:
       junit: "_build/${CI_JOB_NAME}-report.xml"
@@ -466,7 +482,9 @@ coverage:
   coverage: '/^\s+lines\.+:\s+([\d.]+\%)\s+/'
 
 scan-build:
-  extends: .build-only-schedules
+  extends:
+    - .build-linux
+    - .only-schedules
   image: $FEDORA_IMAGE
   stage: analysis
   needs: []
@@ -479,7 +497,6 @@ scan-build:
             --libdir=lib
             -Dsystemtap=true
             -Ddtrace=true
-            -Dfam=true
             -Dinstalled_tests=true
             _scan_build
     - ninja -C _scan_build scan-build
@@ -490,7 +507,9 @@ scan-build:
       - "_scan_build/meson-logs/scanbuild"
 
 coverity:
-  extends: .build-only-schedules
+  extends:
+    - .build-linux
+    - .only-schedules
   image: $COVERITY_IMAGE
   stage: analysis
   needs: []
@@ -506,7 +525,6 @@ coverity:
             --libdir=lib
             -Dsystemtap=true
             -Ddtrace=true
-            -Dfam=true
             -Dinstalled_tests=true
             _coverity_build
     - $HOME/cov-analysis-linux64-*/bin/cov-build --dir cov-int ninja -C _coverity_build
@@ -538,8 +556,9 @@ dist-job:
   only:
     - tags
   script:
-    # FIXME: Cannot use --fatal-meson-warnings here because meson warns about gtkdoc
-    # feature introduced in 0.52 but we only depends on 0.49.
+    # FIXME: Cannot use MESON_COMMON_OPTIONS here because meson warns about gtkdoc
+    # feature fully functional in 0.54, but we only depend on 0.52. So we cannot build
+    # with --fatal-meson-warnings.
     - meson ${MESON_COMMON_OPTIONS_NO_WARNING} --buildtype release -Dgtk_doc=true -Dman=true _build
     - cd _build
     - ninja dist
index 90b9582..1ea3622 100644 (file)
@@ -1,4 +1,4 @@
-FROM fedora:31
+FROM fedora:34
 
 RUN dnf -y install \
     autoconf \
@@ -10,7 +10,6 @@ RUN dnf -y install \
     elfutils-libelf-devel \
     findutils \
     fuse \
-    gamin-devel \
     gcc \
     gcc-c++ \
     gettext \
@@ -60,11 +59,20 @@ ENV ANDROID_NDK_PATH /opt/android-ndk
 COPY android-download-ndk.sh .
 RUN ./android-download-ndk.sh
 COPY android-setup-env.sh .
-RUN ./android-setup-env.sh arm64 21
 RUN ./android-setup-env.sh arm64 28
-RUN rm -rf $ANDROID_NDK_PATH
+# Explicitly remove some directories first to fix symlink traversal problems
+RUN rm -rf \
+  $ANDROID_NDK_PATH/sources/third_party/vulkan/src/tests/layers \
+  $ANDROID_NDK_PATH/sources/cxx-stl/llvm-libc++/test/std/containers/unord/unord.multimap/unord.multimap.modifiers \
+  $ANDROID_NDK_PATH/sources/cxx-stl/llvm-libc++/test/std/containers/unord/unord.multiset/unord.multiset.cnstr \
+  $ANDROID_NDK_PATH/sources/cxx-stl/llvm-libc++/test/std/iterators/predef.iterators/reverse.iterators/reverse.iter.ops/reverse.iter.opsum \
+  $ANDROID_NDK_PATH/sources/cxx-stl/llvm-libc++/test/std/experimental/filesystem/fs.op.funcs/fs.op.create_directory_symlink \
+  $ANDROID_NDK_PATH/sources/cxx-stl/llvm-libc++/test/std/experimental/filesystem/fs.op.funcs/fs.op.is_directory \
+  $ANDROID_NDK_PATH/sources/cxx-stl/llvm-libc++/test/std/experimental/filesystem/fs.op.funcs/fs.op.create_hard_link \
+  $ANDROID_NDK_PATH/sources/cxx-stl/llvm-libc++/test/std/experimental/filesystem/fs.op.funcs/fs.op.create_directory \
+  $ANDROID_NDK_PATH
 
-RUN pip3 install meson==0.49.2
+RUN pip3 install meson==0.52.0
 
 ARG HOST_USER_ID=5555
 ENV HOST_USER_ID ${HOST_USER_ID}
index 42620cc..f6b26e5 100755 (executable)
@@ -38,21 +38,6 @@ export LD=$target_host-ld
 export STRIP=$target_host-strip
 export PATH=$PATH:$toolchain_path/bin
 
-# Cross build libiconv when using API level <= 28.
-# Newer Android has it in its libc already.
-if [ "$api" -lt "28" ]; then
-  wget --quiet http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.15.tar.gz
-  echo "1233fe3ca09341b53354fd4bfe342a7589181145a1232c9919583a8c9979636855839049f3406f253a9d9829908816bb71fd6d34dd544ba290d6f04251376b1a  libiconv-1.15.tar.gz" | sha512sum -c
-  tar xzf libiconv-1.15.tar.gz
-  pushd libiconv-1.15
-  ./configure --host="${target_host}" --prefix="${prefix_path}"  --libdir="${prefix_path}/lib64"
-  make
-  make install
-  popd
-  rm libiconv-1.15.tar.gz
-  rm -r libiconv-1.15
-fi
-
 # Cross build libffi
 wget --quiet https://github.com/libffi/libffi/releases/download/v3.3-rc0/libffi-3.3-rc0.tar.gz
 echo "e6e695d32cd6eb7d65983f32986fccdfc786a593d2ea18af30ce741f58cfa1eb264b1a8d09df5084cb916001aea15187b005c2149a0620a44397a4453b6137d4  libffi-3.3-rc0.tar.gz" | sha512sum -c
index bf79561..a80b3be 100755 (executable)
@@ -30,3 +30,6 @@ cat >index.html <<EOL
 </body>
 </html>
 EOL
+
+# Print a handy link to the coverage report
+echo "Coverage report at: https://${CI_PROJECT_NAMESPACE}.pages.gitlab.gnome.org/-/${CI_PROJECT_NAME}/-/jobs/${CI_BUILD_ID}/artifacts/_coverage/coverage/index.html"
index 7c13d2d..2585711 100644 (file)
@@ -1,9 +1,9 @@
-FROM registry.gitlab.gnome.org/gnome/glib/fedora:v9
+FROM registry.gitlab.gnome.org/gnome/glib/fedora:v13
 
 ARG COVERITY_SCAN_PROJECT_NAME
 ARG COVERITY_SCAN_TOKEN
 
-RUN curl https://scan.coverity.com/download/linux64 \
+RUN curl https://scan.coverity.com/download/cxx/linux64 \
     -o /tmp/cov-analysis-linux64.tgz \
     --form project="${COVERITY_SCAN_PROJECT_NAME}" \
     --form token="${COVERITY_SCAN_TOKEN}" \
index 7c9176b..38d2c67 100644 (file)
@@ -4,9 +4,12 @@ cpu_family = 'x86_64'
 cpu = 'x86_64'
 endian = 'little'
 
+# Fedora builds GCC with --enable-default-ssp by default, but mingw64 puts its
+# stack-protected functions in a separate library which needs to be linked
+# explicitly, hence this flag.
 [properties]
 c_args = []
-c_link_args = []
+c_link_args = ['-fstack-protector']
 
 [binaries]
 c = 'x86_64-w64-mingw32-gcc'
index 38758fc..224003b 100644 (file)
@@ -1,11 +1,11 @@
-FROM debian:buster
+FROM debian:bullseye
 
 RUN apt-get update -qq && apt-get install --no-install-recommends -qq -y \
     bindfs \
     black \
     clang \
-    clang-tools-7 \
-    clang-format-7 \
+    clang-tools \
+    clang-format \
     dbus \
     desktop-file-utils \
     elfutils \
@@ -26,7 +26,7 @@ RUN apt-get update -qq && apt-get install --no-install-recommends -qq -y \
     libffi-dev \
     libgamin-dev \
     libmount-dev \
-    libpcre2-dev \
+    libpcre3-dev \
     libselinux1-dev \
     libxml2-utils \
     libxslt1-dev \
@@ -66,7 +66,7 @@ RUN locale-gen de_DE.UTF-8 \
 
 ENV LANG=C.UTF-8 LANGUAGE=C.UTF-8 LC_ALL=C.UTF-8
 
-RUN pip3 install meson==0.49.2
+RUN pip3 install meson==0.52.0
 
 ARG HOST_USER_ID=5555
 ENV HOST_USER_ID ${HOST_USER_ID}
index 139d87f..deaa7c7 100644 (file)
@@ -1,7 +1,4 @@
-FROM fedora:31
-
-# Set /etc/machine-id as it’s needed for some D-Bus tests
-RUN systemd-machine-id-setup
+FROM fedora:34
 
 RUN dnf -y update \
  && dnf -y install \
@@ -14,7 +11,6 @@ RUN dnf -y update \
     elfutils-libelf-devel \
     findutils \
     fuse \
-    gamin-devel \
     gcc \
     gcc-c++ \
     gettext \
@@ -79,6 +75,9 @@ RUN dnf -y update \
 
 RUN pip3 install meson==0.52.1
 
+# Set /etc/machine-id as it’s needed for some D-Bus tests
+RUN systemd-machine-id-setup
+
 # Enable sudo for wheel users
 RUN sed -i -e 's/# %wheel/%wheel/' -e '0,/%wheel/{s/%wheel/# %wheel/}' /etc/sudoers
 
index 2928b56..eb773e0 100644 (file)
@@ -1,4 +1,4 @@
-FROM fedora:31
+FROM fedora:34
 
 RUN dnf -y install \
     bindfs \
@@ -8,7 +8,6 @@ RUN dnf -y install \
     elfutils-libelf-devel \
     findutils \
     fuse \
-    gamin-devel \
     gcc \
     gcc-c++ \
     gettext \
@@ -58,7 +57,7 @@ RUN dnf -y install \
 WORKDIR /opt
 COPY cross_file_mingw64.txt /opt
 
-RUN pip3 install meson==0.49.2
+RUN pip3 install meson==0.52.0
 
 ARG HOST_USER_ID=5555
 ENV HOST_USER_ID ${HOST_USER_ID}
index 929cf28..2bd6f38 100755 (executable)
@@ -9,7 +9,7 @@ ancestor_horizon=28  # days (4 weeks)
 
 source .gitlab-ci/search-common-ancestor.sh
 
-git diff -U0 --no-color "${newest_common_ancestor_sha}" | ./clang-format-diff.py -binary "clang-format-7" -p1
+git diff -U0 --no-color "${newest_common_ancestor_sha}" | ./clang-format-diff.py -binary "clang-format-11" -p1
 
 )
 exit_status=$?
index 6cc6d80..1a6924b 100644 (file)
@@ -2,11 +2,18 @@
 :: vcvarsall.bat sets various env vars like PATH, INCLUDE, LIB, LIBPATH for the
 :: specified build architecture
 call "C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Auxiliary\Build\vcvarsall.bat" x64
-@echo on
+
+:: Remove quotes from script args
+setlocal enabledelayedexpansion
+set args=
+for %%x in (%*) do (
+  set args=!args! %%~x
+)
+set args=%args:~1%
 
 :: FIXME: make warnings fatal
-pip3 install --upgrade --user meson==0.49.2  || goto :error
-meson _build || goto :error
+pip3 install --upgrade --user meson==0.52.0  || goto :error
+meson %args% _build || goto :error
 ninja -C _build || goto :error
 
 :: FIXME: dont ignore test errors
index 1950443..0d18155 100755 (executable)
@@ -31,7 +31,7 @@ CCACHE_BASEDIR="$(pwd)"
 CCACHE_DIR="${CCACHE_BASEDIR}/_ccache"
 export CCACHE_BASEDIR CCACHE_DIR
 
-pip3 install --upgrade --user meson==0.49.2
+pip3 install --upgrade --user meson==0.52.0
 
 PATH="$(cygpath "$USERPROFILE")/.local/bin:$HOME/.local/bin:$PATH"
 CFLAGS="-coverage -ftest-coverage -fprofile-arcs"
index 12774c3..c5b551c 100644 (file)
@@ -96,13 +96,10 @@ use of these flags is not tested.
 One particular detail to note, is that the architecture-dependent
 include file glibconfig.h is installed in:
 
-  $exec_prefix/lib/glib/include/
-
-if you have a version in $prefix/include, this is out of date
-and should be deleted.
+  $libdir/glib-2.0/include/
 
 .pc files for the various libraries are installed in
-$exec_prefix/lib/pkgconfig to provide information when compiling
+$libdir/pkgconfig to provide information when compiling
 other packages that depend on GLib. If you set PKG_CONFIG_PATH
 so that it points to this directory, then you can get the
 correct include flags and library flags for compiling a GLib
@@ -111,6 +108,9 @@ application with:
  pkg-config --cflags glib-2.0
  pkg-config --libs glib-2.0
 
+This is the only supported way of determining the include and library flags
+for building against GLib.
+
 
 Cross-compiling GLib
 ====================
diff --git a/NEWS b/NEWS
index 66c593c..4a233fc 100644 (file)
--- a/NEWS
+++ b/NEWS
-Overview of changes in GLib 2.70.5
+Overview of changes in GLib 2.72.3
+==================================
+
+* Bugs fixed:
+ - #1941 disposing a non-cancelled inotify GFileMonitor causes deadlocks
+ - #2597 Crash in g_socket_client_enumerator_callback when proxy resolving
+ - #2639 xdgmime update breaks webkit2gtk file:// requests
+ - #2670 Growing memory when using cancellable in g_socket_client_connect_async
+ - !2703 glocalfilemonitor: Avoid file monitor destruction from event thread
+ - !2709 Backport !2707 “credentials: macos: check for existence of LOCAL_PEERPID” to glib-2-72
+ - !2720 Backport !2708 “xdgmime: Fix broken file:// content type lookups for webkitgtk” to glib-2-72
+ - !2750 Backport !2745 “gsocketclient: Fix still-reachable references to cancellables” to glib-2-72
+ - !2787 Backport !2742 “proxyaddressenumerator: set error parameter more thoughtfully” to glib-2-72
+
+
+Overview of changes in GLib 2.72.2
+==================================
+
+* Bugs fixed:
+ - #2640 UWP warnings about extensions and verbs with glib 2.72.1
+ - !2605 Backport !2449 and !2600 mingw test fixes to glib-2-72
+ - !2616 Backport !2615 “Meson: Fix gio-windows-2.0 override name” to glib-2-72
+ - !2629 Backport !2626, !2627 minor leak fixes to glib-2-72
+ - !2643 Backport !2642 “meson: Check rres.compiled() before calling rres.returncode()” to glib-2-72
+ - !2644 Backport !2631 “Cast to guintptr instead of subtracting by null” to glib-2-72
+ - !2662 Backport !2654 “gtask: use g_strconcat() in g_task_return() only if needed” to glib-2-72
+ - !2691 Backport !2661 “win32appinfo: change log level from warning to debug” to glib-2-72
+
+* Translation updates:
+ - Croatian
+ - Danish
+ - English (United Kingdom)
+ - French
+ - Galician
+ - German
+ - Nepali
+ - Portuguese (Brazil)
+
+
+Overview of changes in GLib 2.72.1
+==================================
+
+* Fix building projects which use g_warning_once() with clang++ (#2625)
+
+* Fix `g_file_trash()` not deleting directories via the portals backend (work by Matthias Clasen) (#2629)
+
+* A number more compiler warnings fixed for MSVC (work by Loïc Le Page) (!2495)
+
+* Fix detection of broken `poll()` function on macOS (work by Haruka Ma) (!2571)
+
+* Fix spawning subprocesses from GUI programs on Windows (work by Marc-André Lureau) (!2582)
+
+* Bugs fixed:
+ - #2312 gdbus-test-codegen tests leak GWeakRef objects
+ - #2625 g_warning_once fails to build with clang++
+ - #2629 g_file_trash() does not work on directories inside a sandbox
+ - !2495 Cleanup warnings split 6
+ - !2499 Various contenttype-related test fixes on win32
+ - !2534 gpowerprofilemonitor: Tweak wording of documentation to make more sense
+ - !2540 Various win32 tests skip & fixes
+ - !2541 meson: simplify lookup of python command
+ - !2543 ci: Update the Fedora CI image to Fedora 34
+ - !2556 gdbusconnection: Use g_strv_contains() rather than a home-grown version
+ - !2557 gdbusmethodinvocation: Fix a leak on an early return path
+ - !2558 Move unit test on g_basename() function to glib/tests/fileutils.c
+ - !2559 Move tests/relation-test.c to glib/tests/relation.c
+ - !2560 ci: Update Coverity, mingw and Android CI images to Fedora 34
+ - !2563 glib: Format GDateTime ISO8601 years as %C%y
+ - !2564 Move test files on slices from tests/ to glib/tests/
+ - !2566 tests: Add more tests for GResolver response parsing
+ - !2573 Backport translation fixes and !2571 “meson: Set BROKEN_POLL in macOS builds” to glib-2-72
+ - !2574 Backport !2565 “Revert "meson: simplify lookup of python command"” to glib-2-72
+ - !2587 Backport !2583 “Fix trashing sandboxed directories” to glib-2-72
+ - !2588 Backport !2582 “glib/win32: fix spawn from GUI regression” to glib-2-72
+ - !2590 Backport !2589 “tests: Don’t exit gdbus-method-invocation test early on connection close” to glib-2-72
+ - !2593 Backport !2578 “gatomic: Add a C++ variant of g_atomic_int_compare_and_exchange()” to glib-2-72
+
+* Translation updates:
+ - Bulgarian
+ - Catalan
+ - Indonesian
+ - Italian
+ - Lithuanian
+ - Polish
+ - Portuguese
+ - Russian
+ - Slovenian
+ - Swedish
+ - Turkish
+ - Ukrainian
+
+
+Overview of changes in GLib 2.72.0
 ==================================
 
 * Bugs fixed:
  - #2620 g_time_zone_new_offset() assertion failure if offset >= 25 hours
- - !2537 Backport !2451 “glib: fix buffer overflow in g_canonicalize_filename()” to glib-2-70
- - !2555 Backport !2554 “gtimezone: Fix assertion failure when called with a huge offset” to glib-2-70
+ - !2538 Various unit test fixes
+ - !2542 fuzzing: Fix test failure with G_DISABLE_ASSERT
+ - !2547 gprintf: Fix a memory leak with an invalid format in g_vasprintf()
+ - !2548 tests: Various fixes to gdbus-auth, gdbus-non-socket, gdbus-connection-flush, spawn-multithreaded tests
+ - !2551 tests: More flaky test fixes to converter-stream and test-printf
+ - !2552 gtlsconnection: fix typo in docs
+
+* Translation updates:
+ - Czech
+ - French
+ - Friulian
+ - Hebrew
+ - Hungarian
+ - Italian
+ - Kazakh
+ - Polish
+ - Romanian
+ - Serbian
+ - Swedish
+
+
+Overview of changes in GLib 2.71.3
+==================================
+
+* Fix flaky `GDebugController` tests (!2504)
+
+* Numerous small documentation updates
+
+* Bugs fixed:
+ - #517 g_utf8_collate returns 0 on U+C5D0 vs U+CD94
+ - #1929 gdbus-connection-flush: setup_client_cb: Exhausted all available authentication mechanisms (tried: EXTERNAL, DBUS_COOKIE_SHA1)
+ - #2589 Hash sign misinterpreted as heading
+ - #2598 g_main_loop_run() may leak a GMainLoop reference
+ - #2609 Clarify documentation for g_log_set_debug_enabled()
+ - #2611 Unspecified options considered present
+ - #2612 side effects of ensure_valid_dict result used in g_return_if_fail macro
+ - #2613 Naked magic literal in gvariant.h
+ - !1707 Add cache to g_unix_mount_points_get()
+ - !2424 Remove old test file tests/testglib.c
+ - !2451 glib: fix buffer overflow in g_canonicalize_filename()
+ - !2466 Various minor fixes for empty argv handling
+ - !2480 Various glib/tests/date fixes on win32
+ - !2485 Various spawn-related test fixes on win32
+ - !2490 Cleanup warnings split 1
+ - !2491 Cleanup warnings split 2
+ - !2492 Cleanup warnings split 3
+ - !2493 Cleanup warnings split 4
+ - !2501 glib-compile-resources: Fix a memory leak of the compiler option
+ - !2502 tests: Merge iochannel-test into io-channel tests in glib directory
+ - !2503 gbacktrace: Fix a set-but-not-used variable
+ - !2504 gdebugcontrollerdbus: Track pending tasks with weak refs
+ - !2505 tests: Stop ignoring test failures on macOS
+ - !2506 gresource-tool: Fix unused-but-set-variable warn with G_DISABLE_ASSERT
+ - !2507 ci: Drop custom dependency builds from installed-tests
+ - !2508 codegen: Reformat parser.py according to black
+ - !2509 tests: Fix various small memory leaks
+ - !2510 gdesktopappinfo: Fix a leak when launching URIs over D-Bus
+ - !2512 doc: Extend a bit G_DECLARE_* documentation example
+ - !2513 gmain: Expand documentation about GSource priorities a little
+ - !2514 ci: Various cleanups and moving Android API 21 and FreeBSD 12 to scheduled run
+ - !2515 gmessages: Fix typo in docs
+ - !2516 glocalfileinfo: Always define _g_stat_mtim_nsec, etc.
+ - !2517 meson: Add schemasdir and giomoduledir to gio dependency
+ - !2518 meson: Set GIO_EXTRA_MODULES in devenv
+ - !2519 gdebugcontrollerdbus: Mark a variable as G_GNUC_UNUSED
+ - !2520 tests: Remove threads from mock-resolver/network-address test
+ - !2523 Add handling of NULL time_t* pointer as argument
+ - !2524 Revert "meson: Add schemasdir and giomoduledir to gio dependency"
+ - !2525 meson: Add schemasdir and giomoduledir to gio dependency
+ - !2526 Remove unused test tests/testgdateparser.c
+ - !2527 Move tests/type-test.c to glib/tests/types.c
+ - !2528 meson: Add PYTHONPATH to load GDB helper module
+ - !2531 gtask: Document that task name is set by g_task_set_source_tag()
 
 * Translation updates:
+ - Basque
  - Catalan
+ - Chinese (China)
+ - Croatian
+ - Danish
  - German
- - Hungarian
+ - Hebrew
+ - Indonesian
+ - Korean
  - Lithuanian
  - Romanian
- - Serbian
+ - Russian
+ - Spanish
  - Turkish
 
 
-Overview of changes in GLib 2.70.4
+Overview of changes in GLib 2.71.2
 ==================================
 
-* Bugs fixed:
- - !2462 Backport !2461 “Fix memory leak in gio/gdbusauthmechanismsha1.c” to glib-2-70
+* Rework `glib-compile-resources` to output compiler-specific files to reduce
+  compilation time; see the new `--compiler` option (work by Emmanuele Bassi) (#2492)
+
+* Add a cross-platform API for aligned memory allocations (`g_aligned_alloc()`,
+  `g_aligned_alloc0()` and `g_aligned_free()`) (work by Emmanuele Bassi) (#2574)
+
+* Deprecate `force_posix_threads` configure option, since it was a workaround
+  for static linking on Windows (#2592)
+
+* Add `GBindingGroup` and `GSignalGroup` APIs (work by Christian Hergert and
+  Garrett Regier) (!2235)
+
+* Implement FD remapping support for `g_spawn_async_with_pipes_and_fds()` on
+  Windows (work by Marc-André Lureau) (!2458)
+
+* Add an async file move API, `g_file_move_async()` (work by Lucas Schwiderski) (!2469)
+
+* Bugs fixed:
+ - #1190 gapplication: Add an org.gtk.Debugging interface
+ - #2329 GApplication CLI parsing of DOUBLE type failure
+ - #2492 glib-compile-resources contains resource data twice and creates large output files
+ - #2563 g_test_build_filename and friends not safe to call after g_test_run() has finished
+ - #2574 Add API for aligned allocations
+ - #2592 Consider deprecating 'force_posix_threads' build option
+ - #2601 Missing <para> tag in generated files
+ - !2235 Add GBindingGroup and GSignalGroup
+ - !2378 gtestutils: Mention the unit used for the test timer
+ - !2404 File tests
+ - !2433 Remove tests/testgdate.c from tests
+ - !2458 Implement fd passing for Windows spawn
+ - !2464 Amend g_bus_get* documentation regarding private connection
+ - !2465 gi: expose some files as variable for gobject-introspection
+ - !2467 ci: Add link to Coverage output at end of coverage job
+ - !2468 gfile: resolve_relative_path isn't nullable
+ - !2469 Implement async file movement
+ - !2471 Fix test on the date format for FreeBSD and MacOS X.
+ - !2472 Fix test date (again)...
+ - !2473 Fix glib/test/date.c for FreeBSD/OpenBSD/MacOS X
+ - !2476 Add G_UNICODE_SCRIPT_MATH to GUnicodeScript
+ - !2477 Improve coverage of two digit years in gdate tests
+ - !2481 Fix glib/tests/fileutils on win32
+ - !2482 Fix unit test on date format '%Z' which is too versatile to be trustable
+ - !2483 Fix glib/tests/gdatetime on win32
+ - !2484 tests: Use g_test_skip() to skip a test on Windows
+ - !2487 gconstructor.h: Visual Studio: Only include gslist.h if needed
+ - !2488 Fix some problems with g_aligned_alloc() tests
 
 * Translation updates:
+ - Basque
+ - Catalan
+ - Chinese (China)
  - Czech
  - French
+ - Galician
  - Indonesian
  - Japanese
  - Polish
+ - Portuguese
  - Portuguese (Brazil)
  - Russian
  - Slovenian
  - Spanish
- - Swedish
  - Ukrainian
 
 
-Overview of changes in GLib 2.70.3
+Overview of changes in GLib 2.71.1
 ==================================
 
-* Several important fixes to FD handling in gspawn (#2503, #2506, #2580)
+* Basic support for static builds on Windows (work by Loïc Le Page,
+  Marc-André Lureau, with contributions from Xavier Claessens, Nirbheek Chauhan,
+  Charlie Barto, Luca Bacci, Amos Wenger) (#692, #2585, !2442)
+
+* Add `GDebugController` and a D-Bus implementation which exposes whether
+  debug output is enabled in a process using the `org.gtk.Debugging` D-Bus
+  interface (work by Philip Withnall) (#1190)
+
+* Support for `AF_UNIX` sockets on Windows 10 (and later) (work by Marc-André Lureau) (#2487)
+
+* Several important fixes to GDBus message and GVariant parsing of invalid data (work by Sebastian Wilhelmi) (#2557, #2572)
+
+* Fix potential data loss due to missing fsync when saving files on btrfs (work by Sebastian Keller) (!2425)
+
+* Fix potential buffer overflows in `garray.c` for very large `GArray`s and `GPtrArray`s (work by Tobias Stoeckmann) (#2578)
+
+* Fix FDs in gspawn not being closed and causing process hangs if `close_range()` fails unexpectedly (work by Dan Nicholson) (#2580)
 
-* Several important fixes to GDBus message and GVariant parsing of invalid data (#2557, #2572)
+* Fix `g_find_program_in_path()` not returning an absolute path if `$PATH` is relative (work by Christoph Niethammer) (#2586)
 
-* Fix potential data loss due to missing fsync when saving files on btrfs (!2437)
+* Add support for loading PKCS#12 encrypted files in `GTlsCertificate` (work by Patrick Griffis) (!2239)
+
+* A number of improvements to unit tests (work by Emmanuel Fleury, Charlie Barto) (!2399, !2400, !2402, !2403, !2428, !2431, !2432, !2434)
+
+* Support `LOCAL_PEERPID` on macOS, giving partial support for PIDs in
+  `GCredentials` on that platform (work by Ignacio Casal Quinteiro) (!2362)
+
+* Add `g_get_user_state_dir()` to support `XDG_STATE_HOME` (work by Sophie Herold) (!2395)
+
+* Add `g_hash_table_new_similar()` to copy a hash table and its hash/equal functions without its data (work by Jonas Ådahl) (!2405)
+
+* Support D-Bus client authentication with `EXTERNAL` on Windows (work by Marc-André Lureau) (!2429)
+
+* Add a reStructuredText documentation generator to `gdbus-codegen` (work by Emmanuele Bassi) (!2448)
+
+* Add a Windows implementation of `GMemoryMonitor` (work by Marc-André Lureau) (!2452)
 
 * Bugs fixed:
- - #2503 gspawn.c may clobber target fds
- - #2506 gspawn.c fails to close child_err_report_fd if it is duped to avoid conflation with one of the target_fds
+ - #692 meta: Fix static build on Windows
+ - #1190 gapplication: Add an org.gtk.Debugging interface
+ - #2487 Add support for native unix domain sockets on WIN32 to GLib.Socket and related classes
+ - #2550 possible GDateTime issue with localtime on Illumos/Solaris
  - #2557 Arrays of zero-element tuples with non-zero length lead to infinite loops in g_dbus_message_new_from_blob
+ - #2559 2.71.0: compile and link time warnings
+ - #2560 Link error xdgmime.c: unresolved external symbol S_ISREG when building with VS2022
+ - #2564 Hangul Jamo Extended-B should be 0-width
+ - #2565 Build glib-2.71.0 failed in Windows using MSYS2-MINGW64
+ - #2571 Cross build error "undefined reference to `_g_binary_test1_resource_data'" when building tests for Windows on openSUSE Leap
  - #2572 Check for GVariant recursion depth before recursing
+ - #2578 buffer overflows in garray.c
+ - #2579 Outdated paths in INSTALL.in
  - #2580 gspawn doesn't set CLOEXEC if close_range fails unexpectedly
- - !2394 Backport !1968 “gspawn: Fix file descriptor conflation issues” to glib-2-70
- - !2415 Backport !2412 “paramspec: fix unref annotation” to glib-2-70
- - !2437 Backport !2425 “gfileutils: Remove outdated BTRFS fsync optimization from set_contents” to glib-2-70
- - !2444 Backport !2435 “gspawn: Report errors with closing file descriptors between fork/exec” to glib-2-70
- - !2455 Backport !2454 gdbusmessage and gvariant fixes to glib-2-70
+ - #2582 glib 2.71.0 muslc - build error missing sentinel in function call
+ - #2585 Static link issue on Windows due to resource files being linked in twice
+ - #2586 g_find_program_in_path not returning an absolute path
+ - !2239 gtlscertificate: Add ability to load PKCS#12 encrypted files
+ - !2362 credentials: support the local peerpid on macos
+ - !2384 meson: Fix linking with static library in Windows
+ - !2395 utils: Add XDG_STATE_HOME support
+ - !2399 Move tests/env-test.c into glib/tests/environment.c
+ - !2400 Prevent gtest tests from popping up dialog boxes
+ - !2402 Improving glib/tests/environment.c
+ - !2403 Improve test coverage of glib/tests/asyncqueue.c
+ - !2405 ghash: Add g_hash_table_new_similar
+ - !2407 tests: Fix environment test on FreeBSD
+ - !2411 annotate `g_content_type_guess` parameter as filename
+ - !2412 paramspec: fix unref annotation
+ - !2413 Use meson dependency to link against apple framework
+ - !2414 docs: Improve docs for gdbusutils.c
+ - !2417 gtestutils: Fix minor typos in the g_test_get_filename() docs
+ - !2423 Make clear in doc that signals are emitted synchroniously
+ - !2425 gfileutils: Remove outdated BTRFS fsync optimization from set_contents
+ - !2426 gdbus-codegen: Fix a typo in a comment
+ - !2428 Merge tests/gobject/gvalue-test.c with gobject/tests/value.c
+ - !2429 gdbus: make client work with EXTERNAL on Windows
+ - !2431 Merge tests/gobject/paramspec-test.c into gobject/tests/param.c
+ - !2432 Merge test/unicode-caseconv.c into glib/tests/unicode.c
+ - !2434 Remove a disabled test case that was covered by glib/tests/collate.c
+ - !2440 Improve g_ascii_formatd docs and preconditions
+ - !2441 Reduce the amount of compile-time warnings
+ - !2442 Fix tests with static build on Windows
+ - !2447 giowin32: use gint64 and _lseeki64
+ - !2448 Add reStructuredText documentation generator for gdbus-codegen
+ - !2452 gio/win32: add GMemoryMonitorWin32
+ - !2453 Add `(array length)` annotation to `g_tls_certificate_new_from_pkcs12()`
+ - !2454 gdbusmessage, gvariant and garray fixes
+ - !2456 tests: Pass --internal and -z noexecstack to glib-compile-resources tests
+ - !2459 gio: add missing zlib dependency in gio-windows-2.0.pc
+ - !2461 Fix memory leak in gio/gdbusauthmechanismsha1.c
+ - !2463 Revert "Merge branch 'fix-windows-pc' into 'main'"
 
 * Translation updates:
+ - Catalan
+ - Chinese (China)
  - Czech
+ - Galician
+ - Hebrew
  - Indonesian
- - Italian
  - Lithuanian
  - Polish
  - Portuguese
- - Romanian
- - Serbian
- - Slovenian
+ - Portuguese (Brazil)
+ - Russian
  - Spanish
- - Swedish
- - Turkish
  - Ukrainian
 
 
-Overview of changes in GLib 2.70.2
+Overview of changes in GLib 2.71.0
 ==================================
 
+* Fix network changes not being signalled from NetworkManager (work by
+  Julian Andres Klode) (#2505)
+
+* Fix build when building with --fatal-meson-warnings (work by Eli Schwartz) (!2304)
+
 * Fix use of the default log writer with journald namespaces (diagnosis by Ilya Basin) (#2530)
 
 * Fix hang in `dbus-daemon` under `GTestDBus` when `G_MESSAGES_DEBUG=all` is set (work by Marco Trevisan) (#2537)
@@ -92,65 +388,172 @@ Overview of changes in GLib 2.70.2
 
 * Improve correctness of version information returned by `g_get_os_info()` for Windows 10/Server 2019+ (work by Chun-wei Fan) (#2443)
 
+* Various fixes to GWeakRef cleanup (#865, #2390) and toggle refs (#2394) (work by Marco Trevisan)
+
+* Add `G_DBUS_PROXY_FLAGS_NO_MATCH_RULE` flag for disabling match rules when creating a `GDBusProxy` (#1109)
+
+* Fix FD remapping in `g_spawn_async_with_pipes_and_fds()` with certain values of target FDs (#2503, #2506) (work by Michael Catanzaro)
+
+* Make `GDBusProxy::g-signal` signal detailed with D-Bus signal names (#2536) (work by Aleksandr Mezin)
+
+* Emit `launched` signal for D-Bus activation of apps with `GDesktopAppInfo` (!2227) (work by Guido Günther)
+
+* Fix IDs of `GDesktopAppInfo`s which are constructed from a `.desktop` file in a subdirectory (!2283) (work by Ivalyo Dimitrov)
+
+* Add `--interactive` option to `gdbus call` (!2329)
+
+* Add `G_SUBPROCESS_FLAGS_SEARCH_PATH_FROM_ENVP` to `GSubprocess` (!2333) (work by Hristo Venev)
+
 * Bugs fixed:
+ - #475 Add g_alloca0() and g_newa0()
+ - #847 g_set_prgname() should be thread-safe
+ - #865 GWeakRefs not cleared by g_object_run_dispose()
+ - #1109 [PATCH] GDBusProxy: add G_DBUS_PROXY_FLAGS_NO_MATCH_RULE flag
+ - #1231 gobject declare macros cause alignment warnings on armhf/armhf/mipsel
+ - #1331 GArray with 10 million items overflows index arithmetic
+ - #1735 Get back to a -werror build
+ - #1781 Sort output of gsettings command-line tool
+ - #2310 contenttype test leaks xdg-mime internal data
+ - #2390 GWeakRef's aren't cleared again on finalization (and not fully thread-safe)
+ - #2394 Toggle refs notification may not handle multiple threads correctly
  - #2400 Use-after-free in invoke_set_property_in_idle_cb()
+ - #2401 GDBus runtime warning from remove_interfaces()
+ - #2404 GTask: clarify that GTask assumes are running mainloop
  - #2426 GSettings delayed apply generates runtime warnings
+ - #2443 Add Windows 11 support to get_windows_version()
+ - #2468 GSequence pessimizes itself and slows down
+ - #2471 g_output_stream_write_all_async prints error when count == 0 and content == NULL
+ - #2488 Unix password unit test fails on FreeBSD 13
+ - #2489 Add a (diagnostic) warning for finalized objects with floating refs
+ - #2490 Upgrade to Unicode Character Database 14.0
+ - #2496 Wrong parameter type for g_simple_proxy_resolver_set_ignore_hosts
+ - #2498 GIR: Remove non-existing IOModule methods `load`, `unload`
+ - #2500 Able to export object manager and object on root path, but not other paths
+ - #2503 gspawn.c may clobber target fds
+ - #2505 g_network_monitor_nm never updates on connection change (listens for signal on wrong dbus interface)
+ - #2506 gspawn.c fails to close child_err_report_fd if it is duped to avoid conflation with one of the target_fds
+ - #2507 Strange behavior of GFileEnumerator with GVfs locations
+ - #2514 test suite failure in glib/tests/gdatetime.c if German locale de_DE.ISO-8859-1 is available
+ - #2518 Misleading message when privileged program starts G_BUS_TYPE_SESSION
+ - #2520 g_date_new_ functions return NULL on invalid input
+ - #2523 MacOS generates warnings for g_size_checked_mul()
+ - #2526 fuzz_uri_parse failure
+ - #2527 Error storing dictionary with string keys as GSettings on macOS
  - #2528 g_dbus_message_new_from_blob goes into infinite loop for certain inputs
+ - #2529 load_user_special_dirs returns NULL in certain cases
  - #2530 g_log_writer_is_journald fails if a Journal Namespace is used
+ - #2536 GDBusProxy: make g-signal detailed
  - #2537 GTestDBus dbus daemon causes child process to hang when using verbose output
  - #2541 g_canonicalize_filename should work in linear time complexity
- - !2312 Backport !2265 “gdbusconnection: Fix race between method calls and object unregistration” to glib-2-70
- - !2313 Backport !2260 “GWin32AppInfo: Remove assertion on the opened registry key” to glib-2-70
- - !2314 Backport !2308 “gthread-win32: Remove an unnecessary volatile qualifier” to glib-2-70
- - !2316 Backport !2309 “Rename libpcre.wrap to pcre.wrap” to glib-2-70
- - !2320 Backport !2161 “gdelayedsettingsbackend: Fix applying after calling g_settings_reset()” to glib-2-70
- - !2335 Backport !2324 “Fix link to pcre-8.37.tar.bz2” to glib-2-70
- - !2337 Backport !2325 “Fix GSettings dict error macOS” to glib-2-70
- - !2340 Backport !2338 “gmessages: Support namespaced journals” to glib-2-70
- - !2344 Backport !2327 “guri: Improve performance of remove_dot_segments() algorithm” to glib-2-70
- - !2356 Backport !2355 “gdbusmessage: Add more bounds checking when parsing D-Bus messages” to glib-2-70
- - !2359 gutils.c: Improve g_get_os_info() for Windows 10/Server 2019+
- - !2361 Backport !2354 “gtestdbus: Print the dbus address on a specific FD intead of stdout” to glib-2-70
- - !2363 Backport !2360 “meson: specify when commands need to succeed in run_command” to glib-2-70
- - !2366 Backport !2364 “tests: Allow `objcopy --help` to fail, because it fails on FreeBSD” to glib-2-70
- - !2375 Backport !2374 “gfileutils: Improve performance of g_canonicalize_filename()” to glib-2-70
- - !2383 Backport !2382 “gfileutils: Correctly reset start value when canonicalising paths” to glib-2-70
+ - #2553 Consider not depending on strtoull_l and strtoll_l as much
+ - !1960 Add g_main_context_new_with_flags() and ownerless polling option
+ - !1968 gspawn: Implement fd remapping for posix_spawn codepath, and fix file descriptor conflation issues
+ - !1991 Keyfile parsing performance improvements
+ - !2029 Updating xdgmime
+ - !2064 gobject: Cleanup GWeakRef locations on object finalization
+ - !2114 Coerce type cast to void* because it causes compiler warnings
+ - !2191 docs: Add .editorconfig file
+ - !2214 Document potential footgun with GTlsCertificateFlags and deprecate certain usages
+ - !2223 Better detection of the cleanup attribute.
+ - !2227 gdesktopappinfo: Emit "launched" signal for D-Bus activation too
+ - !2242 gsettings: Add various missing (nullable) or (not nullable) annotations
+ - !2244 gutils: Avoid segfault in g_get_user_database_entry
+ - !2245 gdesktopappinfo: Do not call xterm when it does not exist, inform the caller the launch failed
+ - !2246 gobject: Document it’s unsafe to call g_object_ref() from GWeakNotify
+ - !2249 Add version macros for GLib 2.72 and bump version to 2.71.0
+ - !2251 GString: Bump minimum size
+ - !2254 Small optimization for g_object_set
+ - !2255 gobject: Clarify behaviour of adding weak refs during disposal
+ - !2257 Fix documentation for g_dbus_object_manager_get_object().
+ - !2260 GWin32AppInfo: Do not assert about successful open'ing of registry keys
+ - !2261 Provide built DLLs as Gitlab-CI artifacts
+ - !2266 fix uninitial variable
+ - !2273 Fix more (Windows) warnings
+ - !2277 Revert "Don't compile some unused functions in gio/xdgmime/"
+ - !2283 GDesktopAppInfo: Try to always correctly set id
+ - !2284 update the proxy-libintl subproject to the latest release
+ - !2285 fix issues found by svace static code analyzer
+ - !2286 meson: fix warnings for extract_all_objects function
+ - !2287 ci: Update CI images to latest stable Debian and Fedora, bump Meson dependency to 0.52
+ - !2288 Update g_source_remove doc comment: the function doesn't always return TRUE
+ - !2289 Update g_source_remove documentation for the returned value
+ - !2290 mkdir path specified by XDG_RUNTIME_DIR
+ - !2292 Fix cast from pointer to integer of different size warning in gio/gwin32appinfo.c
+ - !2293 glib-private: Fix MSVC build with AddressSanitizer
+ - !2294 Fix windows warnings
+ - !2295 gutf8: Document that out args from g_utf16_to_utf8() are non-negative
+ - !2303 Fix more windows warnings
+ - !2305 gio: document GFile API when relative path is absolute
+ - !2306 gunixmounts: Drop references to pamconsole mount option
+ - !2308 gthread-win32: Remove an unnecessary volatile qualifier
+ - !2309 Rename libpcre.wrap to pcre.wrap
+ - !2310 tests: Fix a typo in a test message in gdatetime.c
+ - !2311 Fix always true comparison warning in glib/garray.c
+ - !2319 docs: Fix the GListModel description
+ - !2323 Fix final warnings in Windows code
+ - !2324 Fix link to pcre-8.37.tar.bz2
+ - !2326 Improve some documentation related to GTlsDatabase
+ - !2328 gutf8: add string length check when ending character offset is -1
+ - !2329 gdbus: Add --interactive option to `gdbus call`
+ - !2332 Changed gendered terms to be gender-neutral
+ - !2333 gsubprocess: Add G_SUBPROCESS_FLAGS_SEARCH_PATH_FROM_ENVP
+ - !2336 tests: Drop arbitrary and flaky waits from actions tests
+ - !2339 ci: Bump Meson version to 0.60.1 on macOS
+ - !2341 tests: Wait for gdbus-testserver to die when killing it
+ - !2342 tests: Reformat mkenums.py slightly to make run-black.sh happy
+ - !2345 gutils: Disable some dead code on macOS
+ - !2347 Removing tests/asyncqueue-test.c from tests/
+ - !2348 gio/tests/codegen.py: bump timeout to 100 seconds
+ - !2349 Annotate `g_getenv()` and `g_environ_getenv()` return value as `nullable`
+ - !2352 tests: Fix a flaky wait in converter-stream
+ - !2353 Address some oddities around GResolver::reload
+ - !2357 ci: Upgrade to clang-format-11 from clang-format-7
+ - !2360 meson: specify when commands need to succeed in run_command
+ - !2364 tests: Allow `objcopy --help` to fail, because it fails on FreeBSD
+ - !2365 Add vfunc checks in gappinfo.c
+ - !2368 De-duplicate g_nearest_pow() implementation and add some overflow protections to g_ptr_array_maybe_expand(), g_string_maybe_expand() and g_string_chunk_insert_len()
+ - !2370 gqsort: Move test to glib/tests/
+ - !2371 Freeze notification during object destruction
+ - !2372 docs: Improve GVariant docs
+ - !2373 glib.supp: Suppress one-time allocation in g_get_home_dir()
+ - !2376 GSource: move test to glib/tests/
+ - !2379 Merging tests/bit-test.c into glib/tests/utils.c
+ - !2381 tests: Test the function forms of g_bit_*() APIs too
+ - !2382 gfileutils: Correctly reset start value when canonicalising paths
+ - !2385 gfileutils: Fix transfer annotation and whitespace issues
+ - !2386 docs: Add API documentation links to the README
+ - !2387 docs: Update the README a little
+ - !2390 Merging tests/child-test.c into glib/tests/spawn-multithreaded.c
+ - !2391 Removing redundant cxx test tests/cxx-test.cpp
+ - !2392 Move tests/completion-test.c to glib/tests/completion.c
+ - !2393 Removing unnecessary test on gdatetime.c
+ - !2396 fuzzing: Add a fuzz test for parsing DNS records
+ - !2397 Moving tests/dirname-test.c to glib/tests/fileutils.c
+ - !2398 fix /list/position test
 
 * Translation updates:
  - Croatian
+ - Friulian
+ - Galician
+ - Hebrew
+ - Indonesian
  - Italian
+ - Latvian
+ - Lithuanian
  - Occitan (post 1500)
+ - Persian
  - Polish
  - Portuguese
  - Portuguese (Brazil)
+ - Romanian
  - Russian
+ - Serbian
+ - Slovak
+ - Spanish
  - Swedish
  - Ukrainian
 
 
-Overview of changes in GLib 2.70.1
-==================================
-
-* Fix network changes not being signalled from NetworkManager (work by
-  Julian Andres Klode) (#2505)
-
-* Fix build when building with --fatal-meson-warnings (work by Eli Schwartz) (!2304)
-
-* Bugs fixed:
- - #2505 g_network_monitor_nm never updates on connection change (listens for signal on wrong dbus interface)
- - !2245 gdesktopappinfo: Do not call xterm when it does not exist, inform the caller the launch failed
- - !2253 Backport !2251 “GString: Bump minimum size” to glib-2-70
- - !2256 Backport !2254 “Small optimization for g_object_set” to glib-2-70
- - !2259 Backport !2257 “Fix documentation for g_dbus_object_manager_get_object().” to glib-2-70
- - !2262 Backport !2244 “gutils: Avoid segfault in g_get_user_database_entry” to glib-2-70
- - !2271 Backport !2266 “fix uninitial variable” to glib-2-70
- - !2276 Backport !2274 “Do not try to access errno after calling getpwnam_r.” to glib-2-70
- - !2300 Backport !2285 “fix issues found by svace static code analyzer” to glib-2-70
- - !2301 Backport !2293 “glib-private: Fix MSVC build with AddressSanitizer” to glib-2-70
- - !2302 Backport !2291 “gnetworkmonitornm: Stop using removed PropertiesChanged signal” to glib-2-70
- - !2304 meson: fix warnings for extract_all_objects function
-
-
 Overview of changes in GLib 2.70.0
 ==================================
 
index df480d1..7b436b5 100644 (file)
--- a/README.md
+++ b/README.md
@@ -23,13 +23,31 @@ which may be exploitable security vulnerabilities.
 
 See [SECURITY.md](SECURITY.md) for more details.
 
-## How to report bugs
+## Documentation
 
-Bugs should be reported to the GNOME issue tracking system.
-(<https://gitlab.gnome.org/GNOME/glib/issues/new>). You will need
-to create an account for yourself.
+API documentation is available online for GLib for the:
+ * [GLib](https://docs.gtk.org/glib/)
+ * [GObject](https://docs.gtk.org/gobject/)
+ * [GModule](https://docs.gtk.org/gmodule/)
+ * [GIO](https://docs.gtk.org/gio/)
 
-In the bug report please include:
+## Discussion
+
+If you have a question about how to use GLib, seek help on [GNOME’s Discourse
+instance](https://discourse.gnome.org/tags/glib). Alternatively, ask a question
+on [StackOverflow and tag it `glib`](https://stackoverflow.com/questions/tagged/glib).
+
+## Reporting bugs
+
+Bugs should be [reported to the GNOME issue tracking system](https://gitlab.gnome.org/GNOME/glib/issues/new).
+You will need to create an account for yourself. You may also submit bugs by
+e-mail (without an account) by e-mailing <incoming+gnome-glib-658-issue-@gitlab.gnome.org>,
+but this will give you a degraded experience.
+
+Bugs are for reporting problems in GLib itself, not for asking questions about
+how to use it. To ask questions, use one of our [discussion forums](#discussion).
+
+In bug reports please include:
 
 * Information about your system. For instance:
   * What operating system and version
@@ -37,7 +55,7 @@ In the bug report please include:
   * And anything else you think is relevant.
 * How to reproduce the bug.
   * If you can reproduce it with one of the test programs that are built
-  in the tests/ subdirectory, that will be most convenient.  Otherwise,
+  in the `tests/` subdirectory, that will be most convenient.  Otherwise,
   please include a short test program that exhibits the behavior.
   As a last resort, you can also provide a pointer to a larger piece
   of software that can be downloaded.
@@ -46,14 +64,19 @@ In the bug report please include:
 * Further information such as stack traces may be useful, but
   is not necessary.
 
-## Patches
+## Contributing to GLib
+
+Please follow the [contribution guide](./CONTRIBUTING.md) to know how to
+start contributing to GLib.
 
-Patches should also be submitted as merge requests to gitlab.gnome.org. If the
-patch fixes an existing issue, please refer to the issue in your commit message
-with the following notation (for issue 123):
+Patches should be [submitted as merge requests](https://gitlab.gnome.org/GNOME/glib/-/merge_requests/new)
+to gitlab.gnome.org. If the patch fixes an existing issue, please refer to the
+issue in your commit message with the following notation (for issue 123):
+```
 Closes: #123
+```
 
-Otherwise, create a new merge request that introduces the change, filing a
+Otherwise, create a new merge request that introduces the change. Filing a
 separate issue is not required.
 
 ## Default branch renamed to `main`
index 960b5ff..5860fed 100644 (file)
@@ -35,6 +35,7 @@
     <arg><option>--c-generate-autocleanup</option> none|objects|all</arg>
     <arg><option>--output-directory</option> <replaceable>OUTDIR</replaceable></arg>
     <arg><option>--generate-docbook</option> <replaceable>OUTFILES</replaceable></arg>
+    <arg><option>--generate-rst</option> <replaceable>OUTFILES</replaceable></arg>
     <arg><option>--pragma-once</option></arg>
     <arg><option>--xml-files</option> <replaceable>FILE</replaceable></arg>
     <arg><option>--header</option></arg>
 </refsect1>
 
 <refsect1>
+  <title>Generating reStructuredText documentation</title>
+  <para>
+    Each generated reStructuredText file (see the
+    <option>--generate-rst</option> option for details) is a plain text
+    <ulink url="https://docutils.sourceforge.io/rst.html">reStructuredText</ulink>
+    document describing the D-Bus interface.
+  </para>
+</refsect1>
+
+<refsect1>
   <title>Options</title>
   <para>
     The following options are supported:
       <listitem>
         <para>
           Generate Docbook Documentation for each D-Bus interface and
-          put it in <filename>OUTFILES-NAME.xml</filename> where
-          <literal>NAME</literal> is a place-holder for the interface
+          put it in <filename><replaceable>OUTFILES</replaceable>-<replaceable>NAME</replaceable>.xml</filename>
+          where <literal>NAME</literal> is a place-holder for the interface
+          name, e.g. <literal>net.Corp.FooBar</literal> and so on.
+        </para>
+        <para>
+          Pass <option>--output-directory</option> to specify the directory
+          to put the output files in. By default the current directory
+          will be used.
+        </para>
+      </listitem>
+    </varlistentry>
+
+    <varlistentry>
+      <term><option>--generate-rst</option> <replaceable>OUTFILES</replaceable></term>
+      <listitem>
+        <para>
+          Generate reStructuredText Documentation for each D-Bus interface and
+          put it in <filename><replaceable>OUTFILES</replaceable>-<replaceanle>NAME</replaceanle>.rst</filename>
+          where <literal>NAME</literal> is a place-holder for the interface
           name, e.g. <literal>net.Corp.FooBar</literal> and so on.
         </para>
         <para>
index 77fdfeb..60c172e 100644 (file)
@@ -71,6 +71,7 @@
     <arg choice="plain">--method <replaceable>org.project.InterfaceName.MethodName</replaceable></arg>
     <group>
       <arg choice="plain">--timeout <replaceable>seconds</replaceable></arg>
+      <arg choice="plain">--interactive</arg>
     </group>
     <arg choice="plain">ARG1</arg>
     <arg choice="plain" rep="repeat">ARG2</arg>
index b1537ba..76057e8 100644 (file)
         <xi:include href="xml/gremoteactiongroup.xml"/>
         <xi:include href="xml/gactiongroupexporter.xml"/>
         <xi:include href="xml/gdbusactiongroup.xml"/>
+        <xi:include href="xml/gdebugcontroller.xml"/>
+        <xi:include href="xml/gdebugcontrollerdbus.xml"/>
         <xi:include href="xml/gmemorymonitor.xml"/>
         <xi:include href="xml/gmenumodel.xml"/>
         <xi:include href="xml/gmenu.xml"/>
     <title>Index of new symbols in 2.70</title>
     <xi:include href="xml/api-index-2.70.xml"><xi:fallback /></xi:include>
   </index>
+  <index id="api-index-2-72" role="2.72">
+    <title>Index of new symbols in 2.72</title>
+    <xi:include href="xml/api-index-2.72.xml"><xi:fallback /></xi:include>
+  </index>
 
   <xi:include href="xml/annotation-glossary.xml"><xi:fallback /></xi:include>
 
index 1377372..4e88a59 100644 (file)
@@ -149,6 +149,8 @@ g_file_copy
 g_file_copy_async
 g_file_copy_finish
 g_file_move
+g_file_move_async
+g_file_move_finish
 g_file_make_directory
 g_file_make_directory_async
 g_file_make_directory_finish
@@ -3715,7 +3717,9 @@ g_tls_backend_get_type
 <TITLE>GTlsCertificate</TITLE>
 GTlsCertificate
 g_tls_certificate_new_from_pem
+g_tls_certificate_new_from_pkcs12
 g_tls_certificate_new_from_file
+g_tls_certificate_new_from_file_with_password
 g_tls_certificate_new_from_files
 g_tls_certificate_new_from_pkcs11_uris
 g_tls_certificate_list_new_from_file
@@ -4206,6 +4210,36 @@ GDBusObjectManagerServerPrivate
 </SECTION>
 
 <SECTION>
+<FILE>gdebugcontroller</FILE>
+<TITLE>GDebugController</TITLE>
+GDebugController
+GDebugControllerInterface
+G_DEBUG_CONTROLLER_EXTENSION_POINT_NAME
+g_debug_controller_get_debug_enabled
+g_debug_controller_set_debug_enabled
+<SUBSECTION Standard>
+g_debug_controller_get_type
+G_TYPE_DEBUG_CONTROLLER
+G_DEBUG_CONTROLLER
+G_IS_DEBUG_CONTROLLER
+G_DEBUG_CONTROLLER_GET_INTERFACE
+</SECTION>
+
+<SECTION>
+<FILE>gdebugcontrollerdbus</FILE>
+<TITLE>GDebugControllerDBus</TITLE>
+GDebugControllerDBus
+g_debug_controller_dbus_new
+g_debug_controller_dbus_stop
+<SUBSECTION Standard>
+g_debug_controller_dbus_get_type
+G_TYPE_DEBUG_CONTROLLER_DBUS
+G_DEBUG_CONTROLLER_DBUS
+G_IS_DEBUG_CONTROLLER_DBUS
+G_DEBUG_CONTROLLER_DBUS_GET_CLASS
+</SECTION>
+
+<SECTION>
 <FILE>gmemorymonitor</FILE>
 <TITLE>GMemoryMonitor</TITLE>
 GMemoryMonitor
index a85f600..7ab36f5 100644 (file)
@@ -200,6 +200,16 @@ be used with <literal>make</literal>.
 </para></listitem>
 </varlistentry>
 
+<varlistentry>
+<term><option>--compiler=<replaceable>NAME</replaceable></option></term>
+<listitem><para>
+Generate code that is going to target the given compiler <replaceable>NAME</replaceable>.
+The current two compiler modes are "gcc", for all GCC-compatible toolchains; and "msvc",
+for the Microsoft Visual C Compiler. If this option isn't set, then the default will be
+taken from the <envar>CC</envar> environment variable.
+</para></listitem>
+</varlistentry>
+
 </variablelist>
 </refsect1>
 
index 9aaafee..bb14e69 100644 (file)
@@ -38,6 +38,7 @@ if get_option('gtk_doc')
     'ghttpproxy.h',
     'giomodule-priv.h',
     'gioprivate.h',
+    'giowin32-afunix.h',
     'giowin32-priv.h',
     'gio_probes.h',
     'gio_trace.h',
@@ -107,14 +108,11 @@ if get_option('gtk_doc')
   if host_system == 'windows'
     ignore_headers += [
       'gfiledescriptorbased.h',
-      'gunixconnection.h',
-      'gunixcredentialsmessage.h',
       'gunixmounts.h',
       'gunixfdlist.h',
       'gunixfdmessage.h',
       'gunixinputstream.h',
       'gunixoutputstream.h',
-      'gunixsocketaddress.h',
       'gdesktopappinfo.h',
       'gosxappinfo.h',
     ]
index 816afb9..f30b142 100644 (file)
   <para>
     The GIO model of I/O is stateful: if an application establishes e.g.
     a SFTP connection to a server, it becomes available to all applications
-    in the session; the user does not have to enter his password over
+    in the session; the user does not have to enter their password over
     and over again.
   </para>
   <para>
@@ -279,7 +279,7 @@ excellent book on this topic,
 When using GIO in code that runs with elevated privileges, you have to
 be careful. GIO has extension points whose implementations get loaded
 from modules (executable code in shared objects), which could allow
-an attacker to sneak his own code into your application by tricking it
+an attacker to sneak their own code into your application by tricking it
 into loading the code as a module. However, GIO will never load modules
 from your home directory except when explicitly asked to do so via an
 environment variable.
@@ -390,9 +390,9 @@ Gvfs is also heavily distributed and relies on a session bus to be present.
         This variable can be set to the name of a #GFileMonitor
         implementation to override the default for debugging purposes.
         The #GFileMonitor implementation for local files that is included
-        in GIO on Linux has the name "inotify", others that are built
+        in GIO on Linux has the name <literal>inotify</literal>, others that are built
         are built as modules (depending on the platform) are called
-        "fam" and "fen".
+        <literal>fam</literal> and <literal>fen</literal>.
       </para><para>
         The special value <literal>help</literal> can be used to print a list of
         available implementations to standard output.
@@ -670,22 +670,6 @@ Gvfs is also heavily distributed and relies on a session bus to be present.
    </formalpara>
 
    <formalpara>
-      <title>G_LOCAL_DIRECTORY_MONITOR_EXTENSION_POINT_NAME</title>
-
-      <para>
-        Allows to override the directory monitor implementation for
-        local files. Implementations of this extension point must be
-        derived from #GLocalDirectoryMonitor. GIO uses the implementation
-        with the highest priority that is supported, as determined by the
-        is_supported() vfunc in #GLocalDirectoryMonitorClass.
-      </para>
-      <para>
-        GIO uses this extension point internally, to switch between
-        its fam-based and inotify-based directory monitoring implementations.
-      </para>
-   </formalpara>
-
-   <formalpara>
       <title>G_DESKTOP_APP_INFO_LOOKUP_EXTENSION_POINT_NAME</title>
 
       <para>
index 2f5de9e..e642f4e 100644 (file)
     <title>Index of new symbols in 2.70</title>
     <xi:include href="xml/api-index-2.70.xml"><xi:fallback /></xi:include>
   </index>
+  <index id="api-index-2-72" role="2.72">
+    <title>Index of new symbols in 2.72</title>
+    <xi:include href="xml/api-index-2.72.xml"><xi:fallback /></xi:include>
+  </index>
 
   <xi:include href="xml/annotation-glossary.xml"><xi:fallback /></xi:include>
 
index efb261b..97dcf1f 100644 (file)
@@ -139,6 +139,7 @@ GLIB_VERSION_2_64
 GLIB_VERSION_2_66
 GLIB_VERSION_2_68
 GLIB_VERSION_2_70
+GLIB_VERSION_2_72
 GLIB_VERSION_CUR_STABLE
 GLIB_VERSION_PREV_STABLE
 GLIB_VERSION_MIN_REQUIRED
@@ -170,6 +171,7 @@ GLIB_AVAILABLE_ENUMERATOR_IN_2_64
 GLIB_AVAILABLE_ENUMERATOR_IN_2_66
 GLIB_AVAILABLE_ENUMERATOR_IN_2_68
 GLIB_AVAILABLE_ENUMERATOR_IN_2_70
+GLIB_AVAILABLE_ENUMERATOR_IN_2_72
 GLIB_AVAILABLE_IN_ALL
 GLIB_AVAILABLE_IN_2_26
 GLIB_AVAILABLE_IN_2_28
@@ -194,6 +196,7 @@ GLIB_AVAILABLE_IN_2_64
 GLIB_AVAILABLE_IN_2_66
 GLIB_AVAILABLE_IN_2_68
 GLIB_AVAILABLE_IN_2_70
+GLIB_AVAILABLE_IN_2_72
 GLIB_AVAILABLE_MACRO_IN_2_26
 GLIB_AVAILABLE_MACRO_IN_2_28
 GLIB_AVAILABLE_MACRO_IN_2_30
@@ -217,6 +220,7 @@ GLIB_AVAILABLE_MACRO_IN_2_64
 GLIB_AVAILABLE_MACRO_IN_2_66
 GLIB_AVAILABLE_MACRO_IN_2_68
 GLIB_AVAILABLE_MACRO_IN_2_70
+GLIB_AVAILABLE_MACRO_IN_2_72
 GLIB_AVAILABLE_STATIC_INLINE_IN_2_44
 GLIB_AVAILABLE_STATIC_INLINE_IN_2_60
 GLIB_AVAILABLE_STATIC_INLINE_IN_2_62
@@ -224,6 +228,7 @@ GLIB_AVAILABLE_STATIC_INLINE_IN_2_64
 GLIB_AVAILABLE_STATIC_INLINE_IN_2_66
 GLIB_AVAILABLE_STATIC_INLINE_IN_2_68
 GLIB_AVAILABLE_STATIC_INLINE_IN_2_70
+GLIB_AVAILABLE_STATIC_INLINE_IN_2_72
 GLIB_AVAILABLE_TYPE_IN_2_26
 GLIB_AVAILABLE_TYPE_IN_2_28
 GLIB_AVAILABLE_TYPE_IN_2_30
@@ -247,6 +252,7 @@ GLIB_AVAILABLE_TYPE_IN_2_64
 GLIB_AVAILABLE_TYPE_IN_2_66
 GLIB_AVAILABLE_TYPE_IN_2_68
 GLIB_AVAILABLE_TYPE_IN_2_70
+GLIB_AVAILABLE_TYPE_IN_2_72
 GLIB_DEPRECATED_ENUMERATOR
 GLIB_DEPRECATED_ENUMERATOR_FOR
 GLIB_DEPRECATED_ENUMERATOR_IN_2_26
@@ -295,6 +301,8 @@ GLIB_DEPRECATED_ENUMERATOR_IN_2_68
 GLIB_DEPRECATED_ENUMERATOR_IN_2_68_FOR
 GLIB_DEPRECATED_ENUMERATOR_IN_2_70
 GLIB_DEPRECATED_ENUMERATOR_IN_2_70_FOR
+GLIB_DEPRECATED_ENUMERATOR_IN_2_72
+GLIB_DEPRECATED_ENUMERATOR_IN_2_72_FOR
 GLIB_DEPRECATED_IN_2_26
 GLIB_DEPRECATED_IN_2_26_FOR
 GLIB_DEPRECATED_IN_2_28
@@ -341,6 +349,8 @@ GLIB_DEPRECATED_IN_2_68
 GLIB_DEPRECATED_IN_2_68_FOR
 GLIB_DEPRECATED_IN_2_70
 GLIB_DEPRECATED_IN_2_70_FOR
+GLIB_DEPRECATED_IN_2_72
+GLIB_DEPRECATED_IN_2_72_FOR
 GLIB_DEPRECATED_MACRO
 GLIB_DEPRECATED_MACRO_FOR
 GLIB_DEPRECATED_MACRO_IN_2_26
@@ -389,6 +399,8 @@ GLIB_DEPRECATED_MACRO_IN_2_68
 GLIB_DEPRECATED_MACRO_IN_2_68_FOR
 GLIB_DEPRECATED_MACRO_IN_2_70
 GLIB_DEPRECATED_MACRO_IN_2_70_FOR
+GLIB_DEPRECATED_MACRO_IN_2_72
+GLIB_DEPRECATED_MACRO_IN_2_72_FOR
 GLIB_DEPRECATED_TYPE
 GLIB_DEPRECATED_TYPE_FOR
 GLIB_DEPRECATED_TYPE_IN_2_26
@@ -437,6 +449,8 @@ GLIB_DEPRECATED_TYPE_IN_2_68
 GLIB_DEPRECATED_TYPE_IN_2_68_FOR
 GLIB_DEPRECATED_TYPE_IN_2_70
 GLIB_DEPRECATED_TYPE_IN_2_70_FOR
+GLIB_DEPRECATED_TYPE_IN_2_72
+GLIB_DEPRECATED_TYPE_IN_2_72_FOR
 GLIB_VERSION_CUR_STABLE
 GLIB_VERSION_PREV_STABLE
 </SECTION>
@@ -769,6 +783,7 @@ g_macro__has_attribute_fallthrough
 g_macro__has_attribute_may_alias
 g_macro__has_attribute___noinline__
 g_macro__has_attribute_warn_unused_result
+g_macro__has_attribute_cleanup
 </SECTION>
 
 <SECTION>
@@ -827,7 +842,9 @@ G_SOURCE_REMOVE
 
 <SUBSECTION>
 GMainContext
+GMainContextFlags
 g_main_context_new
+g_main_context_new_with_flags
 g_main_context_ref
 g_main_context_unref
 g_main_context_default
@@ -1372,7 +1389,14 @@ g_mem_gc_friendly
 
 <SUBSECTION>
 g_alloca
+g_alloca0
 g_newa
+g_newa0
+
+<SUBSECTION>
+g_aligned_alloc
+g_aligned_alloc0
+g_aligned_free
 
 <SUBSECTION>
 g_memmove
@@ -1518,6 +1542,8 @@ g_log_set_always_fatal
 g_log_set_fatal_mask
 g_log_default_handler
 g_log_set_default_handler
+g_log_get_debug_enabled
+g_log_set_debug_enabled
 
 <SUBSECTION>
 g_log_structured
@@ -2190,6 +2216,7 @@ g_get_real_name
 g_get_user_cache_dir
 g_get_user_data_dir
 g_get_user_config_dir
+g_get_user_state_dir
 g_get_user_runtime_dir
 GUserDirectory
 g_get_user_special_dir
@@ -2831,6 +2858,7 @@ g_trash_stack_height
 GHashTable
 g_hash_table_new
 g_hash_table_new_full
+g_hash_table_new_similar
 GHashFunc
 GEqualFunc
 g_hash_table_insert
index bab12e3..f60eabb 100644 (file)
@@ -658,6 +658,7 @@ g_variant_builder_unref (builder);
   gchar *str;
 
   g_variant_get (value, "as", &iter);
+  /* No need to free 'str' unless breaking out of the loop */
   while (g_variant_iter_loop (iter, "s", &str))
     g_print ("%s\n", str);
   g_variant_iter_free (iter);
@@ -878,7 +879,10 @@ value2 = g_variant_new ("(@(iii)*)", value1, g_variant_new_string ("foo"));
   g_variant_get (value2, "(rs)", NULL, &string); /* or "(@(iii)s)" */
   g_print ("i only got the string: %s\n", string);
   g_free (string);
-}]]></programlisting></informalexample>
+}
+
+/* no need to free 'value1' as 'value2' has consumed its floating reference */
+g_variant_unref (value2);]]></programlisting></informalexample>
    </refsect3>
   </refsect2>
 
@@ -917,7 +921,7 @@ dict = g_variant_builder_end (b);]]></programlisting></informalexample>
 gint value = 1;
 gint max = 3;
 
-/* type (oa{sa{sv}) */
+/* type (oa{sa{sv}}) */
 data = g_variant_new_parsed ("(%o, {'brightness': {'value': <%i>, 'max': <%i>}})",
                              "/object/path", value, max);
 {
@@ -928,10 +932,12 @@ data = g_variant_new_parsed ("(%o, {'brightness': {'value': <%i>, 'max': <%i>}})
 
   g_variant_get (data, "(o@a{?*})", &obj, &params);
   g_print ("object_path: %s\n", obj);
+  g_free (obj);
 
   p_brightness = g_variant_lookup_value (params, "brightness", G_VARIANT_TYPE_VARDICT);
   g_variant_lookup (p_brightness, "max", "i", &p_max);
   g_print ("max: %d\n", p_max);
+  g_variant_unref (params);
 }]]></programlisting></informalexample>
    </refsect3>
 
index e8e7c76..aa5a9c7 100644 (file)
       <xi:include href="xml/gparamspec.xml" />
       <xi:include href="xml/value_collection.xml" />
       <xi:include href="xml/signals.xml" />
+      <xi:include href="xml/gsignalgroup.xml" />
       <xi:include href="xml/gclosure.xml" />
       <xi:include href="xml/value_arrays.xml" />
       <xi:include href="xml/gbinding.xml" />
+      <xi:include href="xml/gbindinggroup.xml" />
   </reference>
   <reference label="III">
     <title>Tools Reference</title>
     <title>Index of new symbols in 2.70</title>
     <xi:include href="xml/api-index-2.70.xml"><xi:fallback /></xi:include>
   </index>
+  <index id="api-index-2-72" role="2.72">
+    <title>Index of new symbols in 2.72</title>
+    <xi:include href="xml/api-index-2.72.xml"><xi:fallback /></xi:include>
+  </index>
 
   <xi:include href="xml/annotation-glossary.xml"><xi:fallback /></xi:include>
 
index 25ecd3a..cbab924 100644 (file)
@@ -1006,3 +1006,43 @@ G_IS_BINDING
 g_binding_flags_get_type
 g_binding_get_type
 </SECTION>
+
+<SECTION>
+<FILE>gbindinggroup</FILE>
+GBindingGroup
+g_binding_group_new
+g_binding_group_dup_source
+g_binding_group_set_source
+g_binding_group_bind
+g_binding_group_bind_full
+g_binding_group_bind_with_closures
+<SUBSECTION Standard>
+G_TYPE_BINDING_GROUP
+G_TYPE_BINDING_GROUP_CLASS
+G_BINDING_GROUP
+G_IS_BINDING_GROUP
+<SUBSECTION Private>
+g_binding_group_get_type
+</SECTION>
+
+<SECTION>
+<FILE>gsignalgroup</FILE>
+GSignalGroup
+g_signal_group_block
+g_signal_group_connect
+g_signal_group_connect_after
+g_signal_group_connect_data
+g_signal_group_connect_object
+g_signal_group_connect_swapped
+g_signal_group_dup_target
+g_signal_group_get_type
+g_signal_group_new
+g_signal_group_set_target
+g_signal_group_unblock
+<SUBSECTION Standard>
+G_IS_SIGNAL_GROUP
+G_SIGNAL_GROUP
+G_TYPE_SIGNAL_GROUP
+<SUBSECTION Private>
+g_signal_group_get_type
+</SECTION>
index 4ed4211..5559673 100644 (file)
@@ -187,10 +187,10 @@ g_cclosure_marshal_VOID__INT (GClosure     *closure,
     <para>
       Each signal is registered in the type system together with the type on which
       it can be emitted: users of the type are said to <emphasis>connect</emphasis>
-      to the signal on a given type instance when they register a closure to be 
-      invoked upon the signal emission. Users can also emit the signal by themselves 
-      or stop the emission of the signal from within one of the closures connected 
-      to the signal.
+      to the signal on a given type instance when they register a closure to be  
+      invoked upon the signal emission. The closure will be called synchronously on emission.
+      Users can also emit the signal by themselves or stop the emission of the signal from
+      within one of the closures connected to the signal.
     </para>
 
     <para>
@@ -352,7 +352,7 @@ void g_signal_emitv (const GValue *instance_and_params,
                </para>
 
          <para>
-               Signal emission can be decomposed in 5 steps:
+               Signal emission is done synchronously and can be decomposed in 5 steps:
                <orderedlist>
                  <listitem><para>
                        <literal>RUN_FIRST</literal>: if the
index 53ca12f..8128e21 100644 (file)
@@ -7,7 +7,7 @@
 stable_2_series_versions = [
   '26', '28', '30', '32', '34', '36', '38',
   '40', '42', '44', '46', '48', '50', '52', '54', '56', '58',
-  '60', '62', '64', '66', '68', '70',
+  '60', '62', '64', '66', '68', '70', '72',
 ]
 
 ignore_decorators = [
index fbed847..9481594 100644 (file)
@@ -4,7 +4,7 @@ int
 LLVMFuzzerTestOneInput (const unsigned char *data, size_t size)
 {
   unsigned char *nul_terminated_data = NULL;
-  const gchar *skipped_root;
+  const gchar *skipped_root G_GNUC_UNUSED  /* when compiling with G_DISABLE_ASSERT */;
   gchar *basename = NULL, *dirname = NULL;
 
   fuzz_set_logging_func ();
diff --git a/fuzzing/fuzz_resolver.c b/fuzzing/fuzz_resolver.c
new file mode 100644 (file)
index 0000000..d4ba4b8
--- /dev/null
@@ -0,0 +1,53 @@
+#include "fuzz.h"
+#include "gio/gnetworking.h"
+
+#include "../gio/gthreadedresolver.h"
+
+static void
+test_for_rrtype (const guint8 *data,
+                 gsize         data_len,
+                 gint          rrtype)
+{
+  /* g_resolver_records_from_res_query() is only available on Unix */
+#ifdef G_OS_UNIX
+  GList *record_list = NULL;
+
+  /* Data too long? */
+  if (data_len > G_MAXSSIZE)
+    return;
+
+  /* rrname is only used in error messages, so doesn’t need to vary.
+   * herr is used similarly, so is just set to zero. */
+  record_list = g_resolver_records_from_res_query ("rrname",
+                                                   rrtype,
+                                                   data,
+                                                   data_len,
+                                                   0,
+                                                   NULL);
+
+  g_list_free_full (record_list, (GDestroyNotify) g_variant_unref);
+#endif  /* G_OS_UNIX */
+}
+
+int
+LLVMFuzzerTestOneInput (const unsigned char *data, size_t size)
+{
+  const gint rrtypes_to_test[] =
+    {
+      /* See https://en.wikipedia.org/wiki/List_of_DNS_record_types */
+      33  /* SRV */,
+      15  /* MX */,
+      6  /* SOA */,
+      2  /* NS */,
+      16  /* TXT */,
+      999,  /* not currently a valid rrtype, to test the ‘unknown’ code path */
+    };
+  gsize i;
+
+  fuzz_set_logging_func ();
+
+  for (i = 0; i < G_N_ELEMENTS (rrtypes_to_test); i++)
+    test_for_rrtype (data, size, rrtypes_to_test[i]);
+
+  return 0;
+}
index c60dcf4..259c6d9 100644 (file)
@@ -11,6 +11,7 @@ fuzz_targets = [
   'fuzz_network_address_parse',
   'fuzz_network_address_parse_uri',
   'fuzz_paths',
+  'fuzz_resolver',
   'fuzz_uri_escape',
   'fuzz_uri_parse',
   'fuzz_uri_parse_params',
index 8019fe5..e3f5703 100644 (file)
@@ -34,3 +34,9 @@ module = shared_module('giofam', 'gfamfilemonitor.c',
 if not meson.is_cross_build()
   meson.add_install_script('../gio-querymodules-wrapper.py', gio_querymodules.full_path(), glib_giomodulesdir)
 endif
+
+if meson.version().version_compare('>=0.58')
+  env = environment()
+  env.prepend('GIO_EXTRA_MODULES', meson.current_build_dir())
+  meson.add_devenv(env)
+endif
\ No newline at end of file
index eff18da..3f03328 100644 (file)
@@ -326,7 +326,12 @@ g_app_info_set_as_default_for_type (GAppInfo    *appinfo,
 
   iface = G_APP_INFO_GET_IFACE (appinfo);
 
-  return (* iface->set_as_default_for_type) (appinfo, content_type, error);
+  if (iface->set_as_default_for_type)
+    return (* iface->set_as_default_for_type) (appinfo, content_type, error);
+
+  g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED,
+                       _("Setting default applications not supported yet"));
+  return FALSE;
 }
 
 /**
@@ -354,7 +359,12 @@ g_app_info_set_as_last_used_for_type (GAppInfo    *appinfo,
 
   iface = G_APP_INFO_GET_IFACE (appinfo);
 
-  return (* iface->set_as_last_used_for_type) (appinfo, content_type, error);
+  if (iface->set_as_last_used_for_type)
+    return (* iface->set_as_last_used_for_type) (appinfo, content_type, error);
+
+  g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED,
+                       _("Setting application as last used for type not supported yet"));
+  return FALSE;
 }
 
 /**
@@ -1103,6 +1113,7 @@ g_app_info_delete (GAppInfo *appinfo)
 
 enum {
   LAUNCH_FAILED,
+  LAUNCH_STARTED,
   LAUNCHED,
   LAST_SIGNAL
 };
@@ -1147,7 +1158,7 @@ g_app_launch_context_class_init (GAppLaunchContextClass *klass)
    * @context: the object emitting the signal
    * @startup_notify_id: the startup notification id for the failed launch
    *
-   * The ::launch-failed signal is emitted when a #GAppInfo launch
+   * The #GAppLaunchContext::launch-failed signal is emitted when a #GAppInfo launch
    * fails. The startup notification id is provided, so that the launcher
    * can cancel the startup notification.
    *
@@ -1161,16 +1172,55 @@ g_app_launch_context_class_init (GAppLaunchContextClass *klass)
                                          G_TYPE_NONE, 1, G_TYPE_STRING);
 
   /**
+   * GAppLaunchContext::launch-started:
+   * @context: the object emitting the signal
+   * @info: the #GAppInfo that is about to be launched
+   * @platform_data: (nullable): additional platform-specific data for this launch
+   *
+   * The #GAppLaunchContext::launch-started signal is emitted when a #GAppInfo is
+   * about to be launched. If non-null the @platform_data is an
+   * GVariant dictionary mapping strings to variants (ie `a{sv}`), which
+   * contains additional, platform-specific data about this launch. On
+   * UNIX, at least the `startup-notification-id` keys will be
+   * present.
+   *
+   * The value of the `startup-notification-id` key (type `s`) is a startup
+   * notification ID corresponding to the format from the [startup-notification
+   * specification](https://specifications.freedesktop.org/startup-notification-spec/startup-notification-0.1.txt).
+   * It allows tracking the progress of the launchee through startup.
+   *
+   * It is guaranteed that this signal is followed by either a #GAppLaunchContext::launched or
+   * #GAppLaunchContext::launch-failed signal.
+   *
+   * Since: 2.72
+   */
+  signals[LAUNCH_STARTED] = g_signal_new (I_("launch-started"),
+                                          G_OBJECT_CLASS_TYPE (object_class),
+                                          G_SIGNAL_RUN_LAST,
+                                          G_STRUCT_OFFSET (GAppLaunchContextClass, launch_started),
+                                          NULL, NULL,
+                                          _g_cclosure_marshal_VOID__OBJECT_VARIANT,
+                                          G_TYPE_NONE, 2,
+                                          G_TYPE_APP_INFO, G_TYPE_VARIANT);
+  g_signal_set_va_marshaller (signals[LAUNCH_STARTED],
+                              G_TYPE_FROM_CLASS (klass),
+                              _g_cclosure_marshal_VOID__OBJECT_VARIANTv);
+
+  /**
    * GAppLaunchContext::launched:
    * @context: the object emitting the signal
    * @info: the #GAppInfo that was just launched
    * @platform_data: additional platform-specific data for this launch
    *
-   * The ::launched signal is emitted when a #GAppInfo is successfully
+   * The #GAppLaunchContext::launched signal is emitted when a #GAppInfo is successfully
    * launched. The @platform_data is an GVariant dictionary mapping
-   * strings to variants (ie a{sv}), which contains additional,
+   * strings to variants (ie `a{sv}`), which contains additional,
    * platform-specific data about this launch. On UNIX, at least the
-   * "pid" and "startup-notification-id" keys will be present.
+   * `pid` and `startup-notification-id` keys will be present.
+   *
+   * Since 2.72 the `pid` may be 0 if the process id wasn't known (for
+   * example if the process was launched via D-Bus). The `pid` may not be
+   * set at all in subsequent releases.
    *
    * Since: 2.36
    */
index d26d048..ad3068e 100644 (file)
@@ -293,12 +293,14 @@ struct _GAppLaunchContextClass
   void   (* launched)              (GAppLaunchContext *context,
                                     GAppInfo          *info,
                                     GVariant          *platform_data);
+  void   (* launch_started)        (GAppLaunchContext *context,
+                                    GAppInfo          *info,
+                                    GVariant          *platform_data);
 
   /* Padding for future expansion */
   void (*_g_reserved1) (void);
   void (*_g_reserved2) (void);
   void (*_g_reserved3) (void);
-  void (*_g_reserved4) (void);
 };
 
 GLIB_AVAILABLE_IN_ALL
index 741aa97..d7be108 100644 (file)
  * The complete example can be found here: 
  * [gapplication-example-cmdline.c](https://gitlab.gnome.org/GNOME/glib/-/blob/HEAD/gio/tests/gapplication-example-cmdline.c)
  *
- * In more complicated cases, the handling of the comandline can be
+ * In more complicated cases, the handling of the commandline can be
  * split between the launcher and the primary instance.
  * |[<!-- language="C" -->
  * static gboolean
  *
  *   argv = *arguments;
  *
+ *   if (argv[0] == NULL)
+ *     {
+ *       *exit_status = 0;
+ *       return FALSE;
+ *     }
+ *
  *   i = 1;
  *   while (argv[i])
  *     {
index 2f07fa3..9b6f69e 100644 (file)
@@ -59,7 +59,7 @@ get_registry_classes_key (const char    *subdir,
       if (key_type == REG_EXPAND_SZ)
         {
           wchar_t dummy[1];
-          int len = ExpandEnvironmentStringsW (wc_temp, dummy, 1);
+          DWORD len = ExpandEnvironmentStringsW (wc_temp, dummy, 1);
           if (len > 0)
             {
               wchar_t *wc_temp_expanded = g_new (wchar_t, len);
@@ -128,7 +128,8 @@ g_content_type_is_a (const gchar *type,
                      const gchar *supertype)
 {
   gboolean res;
-  char *value_utf8;
+  char *perceived_type;
+  char *perceived_supertype;
 
   g_return_val_if_fail (type != NULL, FALSE);
   g_return_val_if_fail (supertype != NULL, FALSE);
@@ -136,12 +137,15 @@ g_content_type_is_a (const gchar *type,
   if (g_content_type_equals (type, supertype))
     return TRUE;
 
-  res = FALSE;
-  value_utf8 = get_registry_classes_key (type, L"PerceivedType");
-  if (value_utf8 && strcmp (value_utf8, supertype) == 0)
-    res = TRUE;
-  g_free (value_utf8);
-  
+  perceived_type = get_registry_classes_key (type, L"PerceivedType");
+  perceived_supertype = get_registry_classes_key (supertype, L"PerceivedType");
+
+  res = perceived_type && perceived_supertype &&
+    strcmp (perceived_type, perceived_supertype) == 0;
+
+  g_free (perceived_type);
+  g_free (perceived_supertype);
+
   return res;
 }
 
@@ -342,7 +346,8 @@ g_content_type_from_mime_type (const gchar *mime_type)
   content_type = get_registry_classes_key (key, L"Extension");
   g_free (key);
 
-  return content_type;
+
+  return content_type ? g_steal_pointer (&content_type) : g_strdup ("*");
 }
 
 gchar *
@@ -354,6 +359,7 @@ g_content_type_guess (const gchar  *filename,
   char *basename;
   char *type;
   char *dot;
+  size_t i;
 
   type = NULL;
 
@@ -366,11 +372,21 @@ g_content_type_guess (const gchar  *filename,
 
   if (filename)
     {
-      basename = g_path_get_basename (filename);
-      dot = strrchr (basename, '.');
-      if (dot)
-        type = g_strdup (dot);
-      g_free (basename);
+      i = strlen (filename);
+      if (i > 0 && filename[i - 1] == G_DIR_SEPARATOR)
+        {
+          type = g_strdup ("inode/directory");
+          if (result_uncertain)
+            *result_uncertain = TRUE;
+        }
+      else
+        {
+          basename = g_path_get_basename (filename);
+          dot = strrchr (basename, '.');
+          if (dot)
+            type = g_strdup (dot);
+          g_free (basename);
+        }
     }
 
   if (type)
index 83075fc..3c9522b 100644 (file)
@@ -32,6 +32,7 @@
 #include "gfileenumerator.h"
 #include "gfileinfo.h"
 #include "glibintl.h"
+#include "glib-private.h"
 
 
 /**
 
 static void tree_magic_schedule_reload (void);
 
-/* We lock this mutex whenever we modify global state in this module.  */
+/* We lock this mutex whenever we modify global state in this module.
+ * Taking and releasing this lock should always be associated with a pair of
+ * g_begin_ignore_leaks()/g_end_ignore_leaks() calls, as any call into xdgmime
+ * could trigger xdg_mime_init(), which makes a number of one-time allocations
+ * which GLib can never free as it doesn’t know when is suitable to call
+ * xdg_mime_shutdown(). */
 G_LOCK_DEFINE_STATIC (gio_xdgmime);
 
 gsize
@@ -66,7 +72,9 @@ _g_unix_content_type_get_sniff_len (void)
   gsize size;
 
   G_LOCK (gio_xdgmime);
+  g_begin_ignore_leaks ();
   size = xdg_mime_get_max_buffer_extents ();
+  g_end_ignore_leaks ();
   G_UNLOCK (gio_xdgmime);
 
   return size;
@@ -78,7 +86,9 @@ _g_unix_content_type_unalias (const gchar *type)
   gchar *res;
 
   G_LOCK (gio_xdgmime);
+  g_begin_ignore_leaks ();
   res = g_strdup (xdg_mime_unalias_mime_type (type));
+  g_end_ignore_leaks ();
   G_UNLOCK (gio_xdgmime);
 
   return res;
@@ -95,6 +105,7 @@ _g_unix_content_type_get_parents (const gchar *type)
   array = g_ptr_array_new ();
 
   G_LOCK (gio_xdgmime);
+  g_begin_ignore_leaks ();
 
   umime = xdg_mime_unalias_mime_type (type);
 
@@ -106,6 +117,7 @@ _g_unix_content_type_get_parents (const gchar *type)
 
   free (parents);
 
+  g_end_ignore_leaks ();
   G_UNLOCK (gio_xdgmime);
 
   g_ptr_array_add (array, NULL);
@@ -233,7 +245,9 @@ g_content_type_equals (const gchar *type1,
   g_return_val_if_fail (type2 != NULL, FALSE);
 
   G_LOCK (gio_xdgmime);
+  g_begin_ignore_leaks ();
   res = xdg_mime_mime_type_equal (type1, type2);
+  g_end_ignore_leaks ();
   G_UNLOCK (gio_xdgmime);
 
   return res;
@@ -259,7 +273,9 @@ g_content_type_is_a (const gchar *type,
   g_return_val_if_fail (supertype != NULL, FALSE);
 
   G_LOCK (gio_xdgmime);
+  g_begin_ignore_leaks ();
   res = xdg_mime_mime_type_subclass (type, supertype);
+  g_end_ignore_leaks ();
   G_UNLOCK (gio_xdgmime);
 
   return res;
@@ -472,7 +488,9 @@ g_content_type_get_description (const gchar *type)
   g_return_val_if_fail (type != NULL, NULL);
 
   G_LOCK (gio_xdgmime);
+  g_begin_ignore_leaks ();
   type = xdg_mime_unalias_mime_type (type);
+  g_end_ignore_leaks ();
 
   if (type_comment_cache == NULL)
     type_comment_cache = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);
@@ -528,7 +546,9 @@ g_content_type_get_icon_internal (const gchar *type,
   g_return_val_if_fail (type != NULL, NULL);
 
   G_LOCK (gio_xdgmime);
+  g_begin_ignore_leaks ();
   xdg_icon = xdg_mime_get_icon (type);
+  g_end_ignore_leaks ();
   G_UNLOCK (gio_xdgmime);
 
   if (xdg_icon)
@@ -619,7 +639,9 @@ g_content_type_get_generic_icon_name (const gchar *type)
   g_return_val_if_fail (type != NULL, NULL);
 
   G_LOCK (gio_xdgmime);
+  g_begin_ignore_leaks ();
   xdg_icon_name = xdg_mime_get_generic_icon (type);
+  g_end_ignore_leaks ();
   G_UNLOCK (gio_xdgmime);
 
   if (!xdg_icon_name)
@@ -703,8 +725,10 @@ g_content_type_from_mime_type (const gchar *mime_type)
   g_return_val_if_fail (mime_type != NULL, NULL);
 
   G_LOCK (gio_xdgmime);
+  g_begin_ignore_leaks ();
   /* mime type and content type are same on unixes */
   umime = g_strdup (xdg_mime_unalias_mime_type (mime_type));
+  g_end_ignore_leaks ();
   G_UNLOCK (gio_xdgmime);
 
   return umime;
@@ -712,7 +736,7 @@ g_content_type_from_mime_type (const gchar *mime_type)
 
 /**
  * g_content_type_guess:
- * @filename: (nullable): a string, or %NULL
+ * @filename: (nullable) (type filename): a path, or %NULL
  * @data: (nullable) (array length=data_size): a stream of data, or %NULL
  * @data_size: the size of @data
  * @result_uncertain: (out) (optional): return location for the certainty
@@ -751,11 +775,12 @@ g_content_type_guess (const gchar  *filename,
   g_return_val_if_fail (data_size != (gsize) -1, g_strdup (XDG_MIME_TYPE_UNKNOWN));
 
   G_LOCK (gio_xdgmime);
+  g_begin_ignore_leaks ();
 
   if (filename)
     {
       i = strlen (filename);
-      if (filename[i - 1] == '/')
+      if (i > 0 && filename[i - 1] == '/')
         {
           name_mimetypes[0] = "inode/directory";
           name_mimetypes[1] = NULL;
@@ -775,6 +800,7 @@ g_content_type_guess (const gchar  *filename,
   if (n_name_mimetypes == 1)
     {
       gchar *s = g_strdup (name_mimetypes[0]);
+      g_end_ignore_leaks ();
       G_UNLOCK (gio_xdgmime);
       return s;
     }
@@ -843,6 +869,7 @@ g_content_type_guess (const gchar  *filename,
         }
     }
 
+  g_end_ignore_leaks ();
   G_UNLOCK (gio_xdgmime);
 
   return mimetype;
@@ -997,6 +1024,8 @@ parse_header (gchar *line)
 
   line[len - 1] = 0;
   s = strchr (line, ':');
+  if (s == NULL)
+    return NULL;
 
   match = g_slice_new0 (TreeMatch);
   match->priority = atoi (line + 1);
@@ -1025,9 +1054,13 @@ parse_match_line (gchar *line,
     {
       *depth = atoi (line);
       s = strchr (line, '>');
+      if (s == NULL)
+        goto handle_error;
     }
   s += 2;
   p = strchr (s, '"');
+  if (p == NULL)
+    goto handle_error;
   *p = 0;
 
   matchlet->path = g_strdup (s);
@@ -1058,6 +1091,10 @@ parse_match_line (gchar *line,
   g_strfreev (parts);
 
   return matchlet;
+
+handle_error:
+  g_slice_free (TreeMatchlet, matchlet);
+  return NULL;
 }
 
 static gint
@@ -1119,7 +1156,7 @@ read_tree_magic_from_directory (const gchar *prefix)
   gchar *text;
   gsize len;
   gchar **lines;
-  gint i;
+  gsize i;
   TreeMatch *match;
   TreeMatchlet *matchlet;
   gint depth;
@@ -1134,14 +1171,18 @@ read_tree_magic_from_directory (const gchar *prefix)
           match = NULL;
           for (i = 0; lines[i] && lines[i][0]; i++)
             {
-              if (lines[i][0] == '[')
+              if (lines[i][0] == '[' && (match = parse_header (lines[i])) != NULL)
                 {
-                  match = parse_header (lines[i]);
                   insert_match (match);
                 }
               else if (match != NULL)
                 {
                   matchlet = parse_match_line (lines[i], &depth);
+                  if (matchlet == NULL)
+                    {
+                      g_warning ("%s: body corrupt; skipping", filename);
+                      break;
+                    }
                   insert_matchlet (match, matchlet, depth);
                 }
               else
index ebbc2cc..17378e8 100644 (file)
@@ -72,6 +72,9 @@
  * On Solaris (including OpenSolaris and its derivatives), the native
  * credential type is a `ucred_t`. This corresponds to
  * %G_CREDENTIALS_TYPE_SOLARIS_UCRED.
+ *
+ * Since GLib 2.72, on Windows, the native credentials may contain the PID of a
+ * process. This corresponds to %G_CREDENTIALS_TYPE_WIN32_PID.
  */
 
 /**
@@ -91,6 +94,7 @@ struct _GCredentials
   struct ucred native;
 #elif G_CREDENTIALS_USE_APPLE_XUCRED
   struct xucred native;
+  pid_t pid;
 #elif G_CREDENTIALS_USE_FREEBSD_CMSGCRED
   struct cmsgcred native;
 #elif G_CREDENTIALS_USE_NETBSD_UNPCBID
@@ -99,6 +103,8 @@ struct _GCredentials
   struct sockpeercred native;
 #elif G_CREDENTIALS_USE_SOLARIS_UCRED
   ucred_t *native;
+#elif G_CREDENTIALS_USE_WIN32_PID
+  DWORD native;
 #else
   #ifdef __GNUC__
   #pragma GCC diagnostic push
@@ -170,6 +176,8 @@ g_credentials_init (GCredentials *credentials)
    * For now we fill it with -1 (meaning "no data"). */
   for (i = 1; i < NGROUPS; i++)
     credentials->native.cr_groups[i] = -1;
+
+  credentials->pid = -1;
 #elif G_CREDENTIALS_USE_FREEBSD_CMSGCRED
   memset (&credentials->native, 0, sizeof (struct cmsgcred));
   credentials->native.cmcred_pid  = getpid ();
@@ -185,6 +193,8 @@ g_credentials_init (GCredentials *credentials)
   credentials->native.gid = getegid ();
 #elif G_CREDENTIALS_USE_SOLARIS_UCRED
   credentials->native = ucred_get (P_MYID);
+#elif G_CREDENTIALS_USE_WIN32_PID
+  credentials->native = GetCurrentProcessId ();
 #endif
 }
 
@@ -290,6 +300,8 @@ g_credentials_to_string (GCredentials *credentials)
     if (ret->str[ret->len - 1] == ',')
       ret->str[ret->len - 1] = '\0';
   }
+#elif G_CREDENTIALS_USE_WIN32_PID
+  g_string_append_printf (ret, "win32-pid:pid=%lu", credentials->native);
 #else
   g_string_append (ret, "unknown");
 #endif
@@ -569,8 +581,7 @@ g_credentials_get_unix_user (GCredentials    *credentials,
  *
  * This operation can fail if #GCredentials is not supported on the
  * OS or if the native credentials type does not contain information
- * about the UNIX process ID (for example this is the case for
- * %G_CREDENTIALS_TYPE_APPLE_XUCRED).
+ * about the UNIX process ID.
  *
  * Returns: The UNIX process ID, or `-1` if @error is set.
  *
@@ -598,13 +609,21 @@ g_credentials_get_unix_pid (GCredentials    *credentials,
   ret = credentials->native.pid;
 #elif G_CREDENTIALS_USE_SOLARIS_UCRED
   ret = ucred_getpid (credentials->native);
+#elif G_CREDENTIALS_USE_WIN32_PID
+  ret = credentials->native;
+#else
+
+#if G_CREDENTIALS_USE_APPLE_XUCRED
+  ret = credentials->pid;
 #else
-  /* this case includes G_CREDENTIALS_USE_APPLE_XUCRED */
   ret = -1;
-  g_set_error_literal (error,
-                       G_IO_ERROR,
-                       G_IO_ERROR_NOT_SUPPORTED,
-                       _("GCredentials does not contain a process ID on this OS"));
+#endif
+
+  if (ret == -1)
+    g_set_error_literal (error,
+                         G_IO_ERROR,
+                         G_IO_ERROR_NOT_SUPPORTED,
+                         _("GCredentials does not contain a process ID on this OS"));
 #endif
 
   return ret;
@@ -671,4 +690,16 @@ g_credentials_set_unix_user (GCredentials    *credentials,
   return ret;
 }
 
+#ifdef __APPLE__
+void
+_g_credentials_set_local_peerid (GCredentials *credentials,
+                                 pid_t         pid)
+{
+  g_return_if_fail (G_IS_CREDENTIALS (credentials));
+  g_return_if_fail (pid >= 0);
+
+  credentials->pid = pid;
+}
+#endif /* __APPLE__ */
+
 #endif /* G_OS_UNIX */
index 13d3bf3..c09f9ec 100644 (file)
@@ -40,6 +40,7 @@
 #undef G_CREDENTIALS_USE_OPENBSD_SOCKPEERCRED
 #undef G_CREDENTIALS_USE_SOLARIS_UCRED
 #undef G_CREDENTIALS_USE_APPLE_XUCRED
+#undef G_CREDENTIALS_USE_WIN32_PID
 
 /*
  * G_CREDENTIALS_NATIVE_TYPE:
 #define G_CREDENTIALS_SPOOFING_SUPPORTED 1
 #define G_CREDENTIALS_HAS_PID 0
 
+void _g_credentials_set_local_peerid (GCredentials *credentials,
+                                      pid_t         pid);
+
+#elif defined(_WIN32)
+#define G_CREDENTIALS_SUPPORTED 1
+#define G_CREDENTIALS_USE_WIN32_PID 1
+#define G_CREDENTIALS_NATIVE_TYPE G_CREDENTIALS_TYPE_WIN32_PID
+#define G_CREDENTIALS_NATIVE_SIZE (sizeof (DWORD))
+#define G_CREDENTIALS_SOCKET_GET_CREDENTIALS_SUPPORTED 1
+#define G_CREDENTIALS_HAS_PID 1
+
 #endif
 
 #endif /* __G_CREDENTIALS_PRIVATE_H__ */
diff --git a/gio/gdbus-2.0/codegen/.flake8 b/gio/gdbus-2.0/codegen/.flake8
new file mode 100644 (file)
index 0000000..9450a28
--- /dev/null
@@ -0,0 +1,4 @@
+[flake8]
+# We are generating long lines through templates
+max-line-length = 120
+exclude = __pycache__
index 9d28cb7..d8d9a85 100644 (file)
@@ -2101,7 +2101,7 @@ class CodeGenerator:
                         "   *\n"
                         "   * Signal emitted when a remote caller is invoking the %s.%s() D-Bus method.\n"
                         "   *\n"
-                        "   * If a signal handler returns %%TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call %s_complete_%s() or e.g. g_dbus_method_invocation_return_error() on it) and no order signal handlers will run. If no signal handler handles the invocation, the %%G_DBUS_ERROR_UNKNOWN_METHOD error is returned.\n"
+                        "   * If a signal handler returns %%TRUE, it means the signal handler will handle the invocation (e.g. take a reference to @invocation and eventually call %s_complete_%s() or e.g. g_dbus_method_invocation_return_error() on it) and no other signal handlers will run. If no signal handler handles the invocation, the %%G_DBUS_ERROR_UNKNOWN_METHOD error is returned.\n"
                         "   *\n"
                         "   * Returns: %%G_DBUS_METHOD_INVOCATION_HANDLED or %%TRUE if the invocation was handled, %%G_DBUS_METHOD_INVOCATION_UNHANDLED or %%FALSE to let other signal handlers run.\n"
                         % (i.name, m.name, i.name_lower, m.name_lower),
index 4b69e29..b7280e3 100644 (file)
@@ -25,10 +25,6 @@ from os import path
 from . import utils
 
 
-# Disable line length warnings as wrapping the Docbook templates would be hard
-# flake8: noqa: E501
-
-
 # ----------------------------------------------------------------------------------------------------
 
 
@@ -345,9 +341,17 @@ class DocbookCodeGenerator:
 
     def expand_paras(self, s, expandParamsAndConstants):
         s = self.expand(s, expandParamsAndConstants).strip()
-        if not s.startswith("<para"):
-            s = "<para>%s</para>" % s
-        return s
+        res = []
+        if not s.startswith("<para>"):
+            res.append("<para>")
+        for line in s.split("\n"):
+            line = line.strip()
+            if not line:
+                line = "</para><para>"
+            res.append(line)
+        if not s.endswith("</para>"):
+            res.append("</para>")
+        return "\n".join(res)
 
     def generate_expand_dicts(self):
         self.expand_member_dict = {}
index 238d7dd..194800c 100644 (file)
@@ -30,6 +30,7 @@ from . import dbustypes
 from . import parser
 from . import codegen
 from . import codegen_docbook
+from . import codegen_rst
 from .utils import print_error, print_warning
 
 
@@ -212,6 +213,11 @@ def codegen_main():
         help="Generate Docbook in OUTFILES-org.Project.IFace.xml",
     )
     arg_parser.add_argument(
+        "--generate-rst",
+        metavar="OUTFILES",
+        help="Generate reStructuredText in OUTFILES-org.Project.IFace.rst",
+    )
+    arg_parser.add_argument(
         "--pragma-once",
         action="store_true",
         help='Use "pragma once" as the inclusion guard',
@@ -287,10 +293,12 @@ def codegen_main():
         )
 
     if (
-        args.generate_c_code is not None or args.generate_docbook is not None
+        args.generate_c_code is not None
+        or args.generate_docbook is not None
+        or args.generate_rst is not None
     ) and args.output is not None:
         print_error(
-            "Using --generate-c-code or --generate-docbook and "
+            "Using --generate-c-code or --generate-docbook or --generate-rst and "
             "--output at the same time is not allowed"
         )
 
@@ -420,6 +428,11 @@ def codegen_main():
     if docbook:
         docbook_gen.generate(docbook, args.output_directory)
 
+    rst = args.generate_rst
+    rst_gen = codegen_rst.RstCodeGenerator(all_ifaces)
+    if rst:
+        rst_gen.generate(rst, args.output_directory)
+
     if args.header:
         with open(h_file, "w") as outfile:
             gen = codegen.HeaderCodeGenerator(
diff --git a/gio/gdbus-2.0/codegen/codegen_rst.py b/gio/gdbus-2.0/codegen/codegen_rst.py
new file mode 100644 (file)
index 0000000..51da2d5
--- /dev/null
@@ -0,0 +1,332 @@
+# SPDX-FileCopyrightText: 2022 Emmanuele Bassi
+#
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+import os
+import re
+
+from . import utils
+
+# Disable line length warnings as wrapping the templates would be hard
+# flake8: noqa: E501
+
+
+class RstCodeGenerator:
+    """Generates documentation in reStructuredText format."""
+
+    def __init__(self, ifaces):
+        self.ifaces = ifaces
+        self._generate_expand_dicts()
+
+    def _expand(self, s, expandParamsAndConstants):
+        """Expands parameters and constant literals."""
+        res = []
+        for line in s.split("\n"):
+            line = line.strip()
+            if line == "":
+                res.append("")
+                continue
+            for key in self._expand_member_dict_keys:
+                line = line.replace(key, self._expand_member_dict[key])
+            for key in self._expand_iface_dict_keys:
+                line = line.replace(key, self._expand_iface_dict[key])
+            if expandParamsAndConstants:
+                # replace @foo with ``foo``
+                line = re.sub(
+                    "@[a-zA-Z0-9_]*",
+                    lambda m: "``" + m.group(0)[1:] + "``",
+                    line,
+                )
+                # replace e.g. %TRUE with ``TRUE``
+                line = re.sub(
+                    "%[a-zA-Z0-9_]*",
+                    lambda m: "``" + m.group(0)[1:] + "``",
+                    line,
+                )
+            res.append(line)
+        return "\n".join(res)
+
+    def _generate_expand_dicts(self):
+        """Generates the dictionaries used to expand gtk-doc sigils."""
+        self._expand_member_dict = {}
+        self._expand_iface_dict = {}
+        for i in self.ifaces:
+            key = f"#{i.name}"
+            value = f"`{i.name}`_"
+            self._expand_iface_dict[key] = value
+
+            for m in i.methods:
+                key = "%s.%s()" % (i.name, m.name)
+                value = f"`{i.name}.{m.name}`_"
+                self._expand_member_dict[key] = value
+
+            for s in i.signals:
+                key = "#%s::%s" % (i.name, s.name)
+                value = f"`{i.name}::{s.name}`_"
+                self._expand_member_dict[key] = value
+
+            for p in i.properties:
+                key = "#%s:%s" % (i.name, p.name)
+                value = f"`{i.name}:{p.name}`_"
+                self._expand_member_dict[key] = value
+
+        # Make sure to expand the keys in reverse order so e.g. #org.foo.Iface:MediaCompat
+        # is evaluated before #org.foo.Iface:Media ...
+        self._expand_member_dict_keys = sorted(
+            self._expand_member_dict.keys(), reverse=True
+        )
+        self._expand_iface_dict_keys = sorted(
+            self._expand_iface_dict.keys(), reverse=True
+        )
+
+    def _generate_header(self, iface):
+        """Generates the header and preamble of the document."""
+        header_len = len(iface.name)
+        res = [
+            f".. _{iface.name}:",
+            "",
+            "=" * header_len,
+            iface.name,
+            "=" * header_len,
+            "",
+            "-----------",
+            "Description",
+            "-----------",
+            "",
+            f".. _{iface.name} Description:",
+            "",
+            iface.doc_string_brief.strip(),
+            "",
+            self._expand(iface.doc_string, True),
+            "",
+        ]
+        if iface.since:
+            res += [
+                f"Interface available since: {iface.since}.",
+                "",
+            ]
+        if iface.deprecated:
+            res += [
+                ".. warning::",
+                "",
+                "   This interface is deprecated.",
+                "",
+                "",
+            ]
+        res += [""]
+        return "\n".join(res)
+
+    def _generate_section(self, title, name):
+        """Generates a section with the given title."""
+        res = [
+            "-" * len(title),
+            title,
+            "-" * len(title),
+            "",
+            f".. {name} {title}:",
+            "",
+            "",
+        ]
+        return "\n".join(res)
+
+    def _generate_properties(self, iface):
+        """Generates the properties section."""
+        res = []
+        for p in iface.properties:
+            title = f"{iface.name}:{p.name}"
+            if p.readable and p.writable:
+                access = "readwrite"
+            elif p.writable:
+                access = "writable"
+            else:
+                access = "readable"
+            res += [
+                title,
+                "^" * len(title),
+                "",
+                "::",
+                "",
+                f"    {p.name} {access} {p.signature}",
+                "",
+                "",
+                self._expand(p.doc_string, True),
+                "",
+            ]
+            if p.since:
+                res += [
+                    f"Property available since: {p.since}.",
+                    "",
+                ]
+            if p.deprecated:
+                res += [
+                    ".. warning::",
+                    "",
+                    "   This property is deprecated.",
+                    "",
+                    "",
+                ]
+            res += [""]
+        return "\n".join(res)
+
+    def _generate_method_signature(self, method):
+        """Generates the method signature as a code block."""
+        res = [
+            "::",
+            "",
+        ]
+        n_in_args = len(method.in_args)
+        n_out_args = len(method.out_args)
+        if n_in_args == 0 and n_out_args == 0:
+            res += [
+                f"    {method.name} ()",
+            ]
+        else:
+            res += [
+                f"    {method.name} (",
+            ]
+            for idx, arg in enumerate(method.in_args):
+                if idx == n_in_args - 1 and n_out_args == 0:
+                    res += [
+                        f"      IN {arg.name} {arg.signature}",
+                    ]
+                else:
+                    res += [
+                        f"      IN {arg.name} {arg.signature},",
+                    ]
+            for idx, arg in enumerate(method.out_args):
+                if idx == n_out_args - 1:
+                    res += [
+                        f"      OUT {arg.name} {arg.signature}",
+                    ]
+                else:
+                    res += [
+                        f"      OUT {arg.name} {arg.signature},",
+                    ]
+            res += [
+                "    )",
+                "",
+            ]
+        res += [""]
+        return "\n".join(res)
+
+    def _generate_methods(self, iface):
+        """Generates the methods section."""
+        res = []
+        for m in iface.methods:
+            title = f"{iface.name}.{m.name}"
+            res += [
+                title,
+                "^" * len(title),
+                "",
+                self._generate_method_signature(m),
+                "",
+                self._expand(m.doc_string, True),
+                "",
+            ]
+            for a in m.in_args:
+                arg_desc = self._expand(a.doc_string, True)
+                res += [
+                    f"{a.name}",
+                    f"  {arg_desc}",
+                    "",
+                ]
+            res += [""]
+            if m.since:
+                res += [
+                    f"Method available since: {m.since}.",
+                    "",
+                ]
+            if m.deprecated:
+                res += [
+                    ".. warning::",
+                    "",
+                    "   This method is deprecated.",
+                    "",
+                    "",
+                ]
+            res += [""]
+        return "\n".join(res)
+
+    def _generate_signal_signature(self, signal):
+        """Generates the signal signature."""
+        res = [
+            "::",
+            "",
+        ]
+        n_args = len(signal.args)
+        if n_args == 0:
+            res += [
+                f"    {signal.name} ()",
+            ]
+        else:
+            res += [
+                f"    {signal.name} (",
+            ]
+            for idx, arg in enumerate(signal.args):
+                if idx == n_args - 1:
+                    res += [
+                        f"      {arg.name} {arg.signature}",
+                    ]
+                else:
+                    res += [
+                        f"      {arg.name} {arg.signature},",
+                    ]
+            res += [
+                "    )",
+                "",
+            ]
+        res += [""]
+        return "\n".join(res)
+
+    def _generate_signals(self, iface):
+        """Generates the signals section."""
+        res = []
+        for s in iface.signals:
+            title = f"{iface.name}::{s.name}"
+            res += [
+                title,
+                "^" * len(title),
+                "",
+                self._generate_signal_signature(s),
+                "",
+                self._expand(s.doc_string, True),
+                "",
+            ]
+            for a in s.args:
+                arg_desc = self._expand(a.doc_string, True)
+                res += [
+                    f"{a.name}",
+                    f"  {arg_desc}",
+                    "",
+                ]
+            res += [""]
+            if s.since:
+                res += [
+                    f"Signal available since: {s.since}.",
+                    "",
+                ]
+            if s.deprecated:
+                res += [
+                    ".. warning::",
+                    "",
+                    "   This signal is deprecated.",
+                    "",
+                    "",
+                ]
+            res += [""]
+        return "\n".join(res)
+
+    def generate(self, rst, outdir):
+        """Generates the reStructuredText file for each interface."""
+        for i in self.ifaces:
+            with open(os.path.join(outdir, f"{rst}-{i.name}.rst"), "w") as outfile:
+                outfile.write(self._generate_header(i))
+                if len(i.properties) > 0:
+                    outfile.write(self._generate_section("Properties", i.name))
+                    outfile.write(self._generate_properties(i))
+                if len(i.methods) > 0:
+                    outfile.write(self._generate_section("Methods", i.name))
+                    outfile.write(self._generate_methods(i))
+                if len(i.signals) > 0:
+                    outfile.write(self._generate_section("Signals", i.name))
+                    outfile.write(self._generate_signals(i))
index c0caf0e..bf25cda 100644 (file)
@@ -3,6 +3,7 @@ gdbus_codegen_files = [
   'codegen.py',
   'codegen_main.py',
   'codegen_docbook.py',
+  'codegen_rst.py',
   'dbustypes.py',
   'parser.py',
   'utils.py',
index 45226d5..cf8ea52 100644 (file)
@@ -85,7 +85,7 @@ class DBusXMLParser:
                         symbol = line[0:colon_index]
                         rest_of_line = line[colon_index + 2 :].strip()
                         if len(rest_of_line) > 0:
-                            body += "<para>" + rest_of_line + "</para>"
+                            body += f"{rest_of_line}\n"
                         comment_state = DBusXMLParser.COMMENT_STATE_PARAMS
             elif comment_state == DBusXMLParser.COMMENT_STATE_PARAMS:
                 if line.startswith("@"):
@@ -93,9 +93,9 @@ class DBusXMLParser:
                     if colon_index == -1:
                         comment_state = DBusXMLParser.COMMENT_STATE_BODY
                         if not in_para:
-                            body += "<para>"
+                            body += "\n"
                             in_para = True
-                        body += orig_line + "\n"
+                        body += f"{orig_line}\n"
                     else:
                         param = line[1:colon_index]
                         docs = line[colon_index + 2 :]
@@ -104,21 +104,20 @@ class DBusXMLParser:
                     comment_state = DBusXMLParser.COMMENT_STATE_BODY
                     if len(line) > 0:
                         if not in_para:
-                            body += "<para>"
+                            body += "\n"
                             in_para = True
                         body += orig_line + "\n"
             elif comment_state == DBusXMLParser.COMMENT_STATE_BODY:
                 if len(line) > 0:
                     if not in_para:
-                        body += "<para>"
                         in_para = True
                     body += orig_line + "\n"
                 else:
                     if in_para:
-                        body += "</para>"
+                        body += "\n"
                         in_para = False
         if in_para:
-            body += "</para>"
+            body += "\n"
 
         if symbol != "":
             self.doc_comment_last_symbol = symbol
index f442538..476056b 100644 (file)
@@ -107,7 +107,7 @@ usage (gint *argc, gchar **argv[], gboolean use_stdout)
   g_option_context_set_help_enabled (o, FALSE);
   /* Ignore parsing result */
   g_option_context_parse (o, argc, argv, NULL);
-  program_name = g_path_get_basename ((*argv)[0]);
+  program_name = (*argc > 0) ? g_path_get_basename ((*argv)[0]) : g_strdup ("gdbus-tool");
   s = g_strdup_printf (_("Commands:\n"
                          "  help         Shows this information\n"
                          "  introspect   Introspect a remote object\n"
@@ -141,6 +141,7 @@ modify_argv0_for_command (gint *argc, gchar **argv[], const gchar *command)
    *  2. save old argv[0] and restore later
    */
 
+  g_assert (*argc > 1);
   g_assert (g_strcmp0 ((*argv)[1], command) == 0);
   remove_arg (1, argc, argv);
 
@@ -887,6 +888,7 @@ static gchar *opt_call_dest = NULL;
 static gchar *opt_call_object_path = NULL;
 static gchar *opt_call_method = NULL;
 static gint opt_call_timeout = -1;
+static gboolean opt_call_interactive = FALSE;
 
 static const GOptionEntry call_entries[] =
 {
@@ -894,6 +896,7 @@ static const GOptionEntry call_entries[] =
   { "object-path", 'o', 0, G_OPTION_ARG_STRING, &opt_call_object_path, N_("Object path to invoke method on"), NULL},
   { "method", 'm', 0, G_OPTION_ARG_STRING, &opt_call_method, N_("Method and interface name"), NULL},
   { "timeout", 't', 0, G_OPTION_ARG_INT, &opt_call_timeout, N_("Timeout in seconds"), NULL},
+  { "interactive", 'i', 0, G_OPTION_ARG_NONE, &opt_call_interactive, N_("Allow interactive authorization"), NULL},
   G_OPTION_ENTRY_NULL
 };
 
@@ -925,6 +928,7 @@ handle_call (gint        *argc,
   gboolean skip_dashes;
   guint parm;
   guint n;
+  GDBusCallFlags flags;
 
   ret = FALSE;
   c = NULL;
@@ -1204,6 +1208,11 @@ handle_call (gint        *argc,
 
   if (parameters != NULL)
     parameters = g_variant_ref_sink (parameters);
+
+  flags = G_DBUS_CALL_FLAGS_NONE;
+  if (opt_call_interactive)
+    flags |= G_DBUS_CALL_FLAGS_ALLOW_INTERACTIVE_AUTHORIZATION;
+
 #ifdef G_OS_UNIX
   result = g_dbus_connection_call_with_unix_fd_list_sync (c,
                                                           opt_call_dest,
@@ -1212,7 +1221,7 @@ handle_call (gint        *argc,
                                                           method_name,
                                                           parameters,
                                                           NULL,
-                                                          G_DBUS_CALL_FLAGS_NONE,
+                                                          flags,
                                                           opt_call_timeout > 0 ? opt_call_timeout * 1000 : opt_call_timeout,
                                                           fd_list,
                                                           NULL,
@@ -1226,7 +1235,7 @@ handle_call (gint        *argc,
                                        method_name,
                                        parameters,
                                        NULL,
-                                       G_DBUS_CALL_FLAGS_NONE,
+                                       flags,
                                        opt_call_timeout > 0 ? opt_call_timeout * 1000 : opt_call_timeout,
                                        NULL,
                                        &error);
index 48c7666..48fdef2 100644 (file)
 #include "gdbusprivate.h"
 #include "gstdio.h"
 
-#ifdef G_OS_UNIX
+#ifdef HAVE_UNISTD_H
 #include <unistd.h>
+#endif
 #include <sys/stat.h>
 #include <sys/types.h>
 #include <gio/gunixsocketaddress.h>
-#endif
 
 #ifdef G_OS_WIN32
 #include <windows.h>
@@ -66,6 +66,9 @@
  *
  * TCP D-Bus connections are supported, but accessing them via a proxy is
  * currently not supported.
+ *
+ * Since GLib 2.72, `unix:` addresses are supported on Windows with `AF_UNIX`
+ * support (Windows 10).
  */
 
 static gchar *get_session_address_platform_specific (GError **error);
@@ -571,11 +574,7 @@ g_dbus_address_connect (const gchar   *address_entry,
   ret = NULL;
   nonce_file = NULL;
 
-  if (FALSE)
-    {
-    }
-#ifdef G_OS_UNIX
-  else if (g_strcmp0 (transport_name, "unix") == 0)
+  if (g_strcmp0 (transport_name, "unix") == 0)
     {
       const gchar *path;
       const gchar *abstract;
@@ -605,7 +604,6 @@ g_dbus_address_connect (const gchar   *address_entry,
           g_assert_not_reached ();
         }
     }
-#endif
   else if (g_strcmp0 (transport_name, "tcp") == 0 || g_strcmp0 (transport_name, "nonce-tcp") == 0)
     {
       const gchar *s;
@@ -1098,7 +1096,7 @@ get_session_address_dbus_launch (GError **error)
   if (GLIB_PRIVATE_CALL (g_check_setuid) ())
     {
       g_set_error (error, G_IO_ERROR, G_IO_ERROR_FAILED,
-                  _("Cannot spawn a message bus when setuid"));
+                   _("Cannot spawn a message bus when AT_SECURE is set"));
       goto out;
     }
 
index 182c572..b3f2117 100644 (file)
 
 #include "glibintl.h"
 
+#ifdef G_OS_WIN32
+#include "gwin32sid.h"
+#endif
+
 struct _GDBusAuthMechanismExternalPrivate
 {
   gboolean is_client;
@@ -124,11 +128,17 @@ static gboolean
 mechanism_is_supported (GDBusAuthMechanism *mechanism)
 {
   g_return_val_if_fail (G_IS_DBUS_AUTH_MECHANISM_EXTERNAL (mechanism), FALSE);
+
+#if defined(G_OS_WIN32)
+  /* all that is required is current process SID */
+  return TRUE;
+#else
   /* This mechanism is only available if credentials has been exchanged */
   if (_g_dbus_auth_mechanism_get_credentials (mechanism) != NULL)
     return TRUE;
   else
     return FALSE;
+#endif
 }
 
 static gint
@@ -329,32 +339,39 @@ mechanism_client_initiate (GDBusAuthMechanism   *mechanism,
 {
   GDBusAuthMechanismExternal *m = G_DBUS_AUTH_MECHANISM_EXTERNAL (mechanism);
   gchar *initial_response = NULL;
+#if defined(G_OS_UNIX)
   GCredentials *credentials;
+#endif
 
   g_return_val_if_fail (G_IS_DBUS_AUTH_MECHANISM_EXTERNAL (mechanism), NULL);
   g_return_val_if_fail (!m->priv->is_server && !m->priv->is_client, NULL);
 
   m->priv->is_client = TRUE;
-  m->priv->state = G_DBUS_AUTH_MECHANISM_STATE_ACCEPTED;
+  m->priv->state = G_DBUS_AUTH_MECHANISM_STATE_REJECTED;
 
   *out_initial_response_len = 0;
 
+  /* return the uid */
+#if defined(G_OS_UNIX)
   credentials = _g_dbus_auth_mechanism_get_credentials (mechanism);
   g_assert (credentials != NULL);
 
-  /* return the uid */
-#if defined(G_OS_UNIX)
   initial_response = g_strdup_printf ("%" G_GINT64_FORMAT, (gint64) g_credentials_get_unix_user (credentials, NULL));
- *out_initial_response_len = strlen (initial_response);
 #elif defined(G_OS_WIN32)
+  initial_response = _g_win32_current_process_sid_string (NULL);
+#else
 #ifdef __GNUC__
 #pragma GCC diagnostic push
 #pragma GCC diagnostic warning "-Wcpp"
 #warning Dont know how to send credentials on this OS. The EXTERNAL D-Bus authentication mechanism will not work.
 #pragma GCC diagnostic pop
 #endif
-  m->priv->state = G_DBUS_AUTH_MECHANISM_STATE_REJECTED;
 #endif
+  if (initial_response)
+    {
+      m->priv->state = G_DBUS_AUTH_MECHANISM_STATE_ACCEPTED;
+      *out_initial_response_len = strlen (initial_response);
+    }
   return initial_response;
 }
 
index 066ef1a..ed5aa3f 100644 (file)
 #endif
 #ifdef G_OS_WIN32
 #include <io.h>
+#include "gwin32sid.h"
 #endif
 
 #include "gdbusauthmechanismsha1.h"
 #include "gcredentials.h"
 #include "gdbuserror.h"
+#include "glocalfileinfo.h"
 #include "gioenumtypes.h"
 #include "gioerror.h"
 #include "gdbusprivate.h"
@@ -508,6 +510,7 @@ _log (const gchar *message,
  * and was created successfully) */
 static gint
 create_lock_exclusive (const gchar  *lock_path,
+                       gint64       *mtime_nsec,
                        GError      **error)
 {
   int errsv;
@@ -517,6 +520,16 @@ create_lock_exclusive (const gchar  *lock_path,
   errsv = errno;
   if (ret < 0)
     {
+      GLocalFileStat stat_buf;
+
+      /* Get the modification time to distinguish between the lock being stale
+       * or highly contested. */
+      if (mtime_nsec != NULL &&
+          g_local_file_stat (lock_path, G_LOCAL_FILE_STAT_FIELD_MTIME, G_LOCAL_FILE_STAT_FIELD_ALL, &stat_buf) == 0)
+        *mtime_nsec = _g_stat_mtime (&stat_buf) * G_USEC_PER_SEC * 1000 + _g_stat_mtim_nsec (&stat_buf);
+      else if (mtime_nsec != NULL)
+        *mtime_nsec = 0;
+
       g_set_error (error,
                    G_IO_ERROR,
                    g_io_error_from_errno (errsv),
@@ -537,6 +550,7 @@ keyring_acquire_lock (const gchar  *path,
   gint ret;
   guint num_tries;
   int errsv;
+  gint64 lock_mtime_nsec = 0, lock_mtime_nsec_prev = 0;
 
   /* Total possible sleep period = max_tries * timeout_usec = 0.5s */
   const guint max_tries = 50;
@@ -564,13 +578,21 @@ keyring_acquire_lock (const gchar  *path,
 
   for (num_tries = 0; num_tries < max_tries; num_tries++)
     {
+      lock_mtime_nsec_prev = lock_mtime_nsec;
+
       /* Ignore the error until the final call. */
-      ret = create_lock_exclusive (lock, NULL);
+      ret = create_lock_exclusive (lock, &lock_mtime_nsec, NULL);
       if (ret >= 0)
         break;
 
       /* sleep 10ms, then try again */
       g_usleep (timeout_usec);
+
+      /* If the mtime of the lock file changed, don’t count the retry, as it
+       * seems like there’s contention between processes for the lock file,
+       * rather than a stale lock file from a crashed process. */
+      if (num_tries > 0 && lock_mtime_nsec != lock_mtime_nsec_prev)
+        num_tries--;
     }
 
   if (num_tries == max_tries)
@@ -593,7 +615,7 @@ keyring_acquire_lock (const gchar  *path,
       _log ("Deleted stale lock file '%s'", lock);
 
       /* Try one last time to create it, now that we've deleted the stale one */
-      ret = create_lock_exclusive (lock, error);
+      ret = create_lock_exclusive (lock, NULL, error);
       if (ret < 0)
         goto out;
     }
@@ -991,9 +1013,12 @@ mechanism_server_initiate (GDBusAuthMechanism   *mechanism,
         }
 #elif defined(G_OS_WIN32)
       gchar *sid;
-      sid = _g_dbus_win32_get_user_sid ();
+
+      sid = _g_win32_current_process_sid_string (NULL);
+
       if (g_strcmp0 (initial_response, sid) == 0)
         m->priv->state = G_DBUS_AUTH_MECHANISM_STATE_HAVE_DATA_TO_SEND;
+
       g_free (sid);
 #else
 #error Please implement for your OS
@@ -1143,20 +1168,25 @@ mechanism_client_initiate (GDBusAuthMechanism   *mechanism,
   g_return_val_if_fail (!m->priv->is_server && !m->priv->is_client, NULL);
 
   m->priv->is_client = TRUE;
-  m->priv->state = G_DBUS_AUTH_MECHANISM_STATE_WAITING_FOR_DATA;
 
   *out_initial_response_len = 0;
 
 #ifdef G_OS_UNIX
   initial_response = g_strdup_printf ("%" G_GINT64_FORMAT, (gint64) getuid ());
-  *out_initial_response_len = strlen (initial_response);
 #elif defined (G_OS_WIN32)
-  initial_response = _g_dbus_win32_get_user_sid ();
-  *out_initial_response_len = strlen (initial_response);
+  initial_response = _g_win32_current_process_sid_string (NULL);
 #else
 #error Please implement for your OS
 #endif
-  g_assert (initial_response != NULL);
+  if (initial_response)
+    {
+      m->priv->state = G_DBUS_AUTH_MECHANISM_STATE_WAITING_FOR_DATA;
+      *out_initial_response_len = strlen (initial_response);
+    }
+  else
+    {
+      m->priv->state = G_DBUS_AUTH_MECHANISM_STATE_REJECTED;
+    }
 
   return initial_response;
 }
index 73b5b30..1159c2d 100644 (file)
@@ -282,22 +282,6 @@ call_destroy_notify (GMainContext  *context,
 
 /* ---------------------------------------------------------------------------------------------------- */
 
-static gboolean
-_g_strv_has_string (const gchar* const *haystack,
-                    const gchar        *needle)
-{
-  guint n;
-
-  for (n = 0; haystack != NULL && haystack[n] != NULL; n++)
-    {
-      if (g_strcmp0 (haystack[n], needle) == 0)
-        return TRUE;
-    }
-  return FALSE;
-}
-
-/* ---------------------------------------------------------------------------------------------------- */
-
 #ifdef G_OS_WIN32
 #define CONNECTION_ENSURE_LOCK(obj) do { ; } while (FALSE)
 #else
@@ -5268,7 +5252,7 @@ obj_message_func (GDBusConnection *connection,
  * #GVariant of incorrect type.
  *
  * If an existing callback is already registered at @object_path and
- * @interface_name, then @error is set to #G_IO_ERROR_EXISTS.
+ * @interface_name, then @error is set to %G_IO_ERROR_EXISTS.
  *
  * GDBus automatically implements the standard D-Bus interfaces
  * org.freedesktop.DBus.Properties, org.freedesktop.DBus.Introspectable
@@ -6544,7 +6528,7 @@ handle_subtree_introspect (GDBusConnection *connection,
 
       /* Assert existence of object if we are not dynamic */
       if (!(es->flags & G_DBUS_SUBTREE_FLAGS_DISPATCH_TO_UNENUMERATED_NODES) &&
-          !_g_strv_has_string ((const gchar * const *) children, requested_node))
+          !g_strv_contains ((const gchar * const *) children, requested_node))
         goto out;
     }
   else
@@ -6675,7 +6659,7 @@ handle_subtree_method_invocation (GDBusConnection *connection,
                                             es->object_path,
                                             es->user_data);
 
-          exists = _g_strv_has_string ((const gchar * const *) children, requested_node);
+          exists = g_strv_contains ((const gchar * const *) children, requested_node);
           g_strfreev (children);
 
           if (!exists)
@@ -6930,7 +6914,7 @@ subtree_message_func (GDBusConnection *connection,
  *
  * When handling remote calls into any node in the subtree, first the
  * @enumerate function is used to check if the node exists. If the node exists
- * or the #G_DBUS_SUBTREE_FLAGS_DISPATCH_TO_UNENUMERATED_NODES flag is set
+ * or the %G_DBUS_SUBTREE_FLAGS_DISPATCH_TO_UNENUMERATED_NODES flag is set
  * the @introspection function is used to check if the node supports the
  * requested method. If so, the @dispatch function is used to determine
  * where to dispatch the call. The collected #GDBusInterfaceVTable and
@@ -6942,7 +6926,7 @@ subtree_message_func (GDBusConnection *connection,
  * of the thread you are calling this method from.
  *
  * If an existing subtree is already registered at @object_path or
- * then @error is set to #G_IO_ERROR_EXISTS.
+ * then @error is set to %G_IO_ERROR_EXISTS.
  *
  * Note that it is valid to register regular objects (using
  * g_dbus_connection_register_object()) in a subtree registered with
@@ -7450,7 +7434,9 @@ _g_bus_forget_singleton (GBusType bus_type)
  * callers of g_bus_get() and g_bus_get_sync() for @bus_type. In the
  * event that you need a private message bus connection, use
  * g_dbus_address_get_for_bus_sync() and
- * g_dbus_connection_new_for_address().
+ * g_dbus_connection_new_for_address() with
+ * G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_CLIENT and
+ * G_DBUS_CONNECTION_FLAGS_MESSAGE_BUS_CONNECTION flags.
  *
  * Note that the returned #GDBusConnection object will (usually) have
  * the #GDBusConnection:exit-on-close property set to %TRUE.
@@ -7569,7 +7555,9 @@ g_bus_get (GBusType             bus_type,
  * callers of g_bus_get() and g_bus_get_sync() for @bus_type. In the
  * event that you need a private message bus connection, use
  * g_dbus_address_get_for_bus_sync() and
- * g_dbus_connection_new_for_address().
+ * g_dbus_connection_new_for_address() with
+ * G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_CLIENT and
+ * G_DBUS_CONNECTION_FLAGS_MESSAGE_BUS_CONNECTION flags.
  *
  * Note that the returned #GDBusConnection object will (usually) have
  * the #GDBusConnection:exit-on-close property set to %TRUE.
index b3ea28f..4cc542c 100644 (file)
@@ -588,7 +588,7 @@ g_dbus_error_get_remote_error (const GError *error)
  * such that it can be recovered with g_dbus_error_get_remote_error().
  *
  * Otherwise, a #GError with the error code %G_IO_ERROR_DBUS_ERROR
- * in the #G_IO_ERROR error domain is returned. Also, @dbus_error_name is
+ * in the %G_IO_ERROR error domain is returned. Also, @dbus_error_name is
  * added to the error message such that it can be recovered with
  * g_dbus_error_get_remote_error().
  *
index 3415ed6..ecef6cd 100644 (file)
@@ -51,6 +51,7 @@
 #include "gseekable.h"
 #include "gioerror.h"
 #include "gdbusprivate.h"
+#include "gutilsprivate.h"
 
 #ifdef G_OS_UNIX
 #include "gunixfdlist.h"
@@ -257,17 +258,6 @@ g_memory_buffer_read_uint64 (GMemoryBuffer  *mbuf,
 
 #define MIN_ARRAY_SIZE  128
 
-static gsize
-g_nearest_pow (gsize num)
-{
-  gsize n = 1;
-
-  while (n < num && n > 0)
-    n <<= 1;
-
-  return n;
-}
-
 static void
 array_resize (GMemoryBuffer  *mbuf,
               gsize           size)
index c22e19e..705af07 100644 (file)
@@ -397,14 +397,7 @@ g_dbus_method_invocation_return_value_internal (GDBusMethodInvocation *invocatio
   g_return_if_fail ((parameters == NULL) || g_variant_is_of_type (parameters, G_VARIANT_TYPE_TUPLE));
 
   if (g_dbus_message_get_flags (invocation->message) & G_DBUS_MESSAGE_FLAGS_NO_REPLY_EXPECTED)
-    {
-      if (parameters != NULL)
-        {
-          g_variant_ref_sink (parameters);
-          g_variant_unref (parameters);
-        }
-      goto out;
-    }
+    goto out;
 
   if (parameters == NULL)
     parameters = g_variant_new_tuple (NULL, 0);
@@ -420,7 +413,7 @@ g_dbus_method_invocation_return_value_internal (GDBusMethodInvocation *invocatio
         {
           gchar *type_string = g_variant_type_dup_string (type);
 
-          g_warning ("Type of return value is incorrect: expected '%s', got '%s''",
+          g_warning ("Type of return value is incorrect: expected '%s', got '%s'",
                     type_string, g_variant_get_type_string (parameters));
           g_variant_type_free (type);
           g_free (type_string);
@@ -431,7 +424,9 @@ g_dbus_method_invocation_return_value_internal (GDBusMethodInvocation *invocatio
 
   /* property_info is only non-NULL if set that way from
    * GDBusConnection, so this must be the case of async property
-   * handling on either 'Get', 'Set' or 'GetAll'.
+   * handling on either 'Get' or 'Set'.
+   *
+   * property_info is NULL for 'GetAll'.
    */
   if (invocation->property_info != NULL)
     {
@@ -461,21 +456,6 @@ g_dbus_method_invocation_return_value_internal (GDBusMethodInvocation *invocatio
           g_variant_unref (nested);
         }
 
-      else if (g_str_equal (invocation->method_name, "GetAll"))
-        {
-          if (!g_variant_is_of_type (parameters, G_VARIANT_TYPE ("(a{sv})")))
-            {
-              g_warning ("Type of return value for property 'GetAll' call should be '(a{sv})' but got '%s'",
-                         g_variant_get_type_string (parameters));
-              goto out;
-            }
-
-          /* Could iterate the list of properties and make sure that all
-           * of them are actually on the interface and with the correct
-           * types, but let's not do that for now...
-           */
-        }
-
       else if (g_str_equal (invocation->method_name, "Set"))
         {
           if (!g_variant_is_of_type (parameters, G_VARIANT_TYPE_UNIT))
@@ -489,6 +469,21 @@ g_dbus_method_invocation_return_value_internal (GDBusMethodInvocation *invocatio
       else
         g_assert_not_reached ();
     }
+  else if (g_str_equal (invocation->interface_name, "org.freedesktop.DBus.Properties") &&
+           g_str_equal (invocation->method_name, "GetAll"))
+    {
+      if (!g_variant_is_of_type (parameters, G_VARIANT_TYPE ("(a{sv})")))
+        {
+          g_warning ("Type of return value for property 'GetAll' call should be '(a{sv})' but got '%s'",
+                     g_variant_get_type_string (parameters));
+          goto out;
+        }
+
+      /* Could iterate the list of properties and make sure that all
+       * of them are actually on the interface and with the correct
+       * types, but let's not do that for now...
+       */
+    }
 
   if (G_UNLIKELY (_g_dbus_debug_return ()))
     {
@@ -508,7 +503,7 @@ g_dbus_method_invocation_return_value_internal (GDBusMethodInvocation *invocatio
     }
 
   reply = g_dbus_message_new_method_reply (invocation->message);
-  g_dbus_message_set_body (reply, parameters);
+  g_dbus_message_set_body (reply, g_steal_pointer (&parameters));
 
 #ifdef G_OS_UNIX
   if (fd_list != NULL)
@@ -525,6 +520,12 @@ g_dbus_method_invocation_return_value_internal (GDBusMethodInvocation *invocatio
   g_object_unref (reply);
 
  out:
+  if (parameters != NULL)
+    {
+      g_variant_ref_sink (parameters);
+      g_variant_unref (parameters);
+    }
+
   g_object_unref (invocation);
 }
 
index 04c5599..0d6f5e6 100644 (file)
@@ -1689,11 +1689,11 @@ remove_interfaces (GDBusObjectManagerClient   *manager,
   op = g_hash_table_lookup (manager->priv->map_object_path_to_object_proxy, object_path);
   if (op == NULL)
     {
-      g_warning ("%s: Processing InterfaceRemoved signal for path %s but no object proxy exists",
-                 G_STRLOC,
-                 object_path);
+      g_debug ("%s: Processing InterfaceRemoved signal for path %s but no object proxy exists",
+               G_STRLOC,
+               object_path);
       g_mutex_unlock (&manager->priv->lock);
-      goto out;
+      return;
     }
 
   interfaces = g_dbus_object_get_interfaces (G_DBUS_OBJECT (op));
@@ -1730,8 +1730,6 @@ remove_interfaces (GDBusObjectManagerClient   *manager,
       g_object_unref (op);
     }
   g_object_unref (manager);
- out:
-  ;
 }
 
 static void
index a685947..0b875be 100644 (file)
@@ -457,6 +457,34 @@ registration_data_free (RegistrationData *data)
   g_free (data);
 }
 
+/* Validate whether an object path is valid as a child of the manager. According
+ * to the specification:
+ * https://dbus.freedesktop.org/doc/dbus-specification.html#standard-interfaces-objectmanager
+ * this means that:
+ * > All returned object paths are children of the object path implementing this
+ * > interface, i.e. their object paths start with the ObjectManager's object
+ * > path plus '/'
+ *
+ * For example, if the manager is at `/org/gnome/Example`, children will be
+ * `/org/gnome/Example/(.+)`.
+ *
+ * It is permissible (but not encouraged) for the manager to be at `/`. If so,
+ * children will be `/(.+)`.
+ */
+static gboolean
+is_valid_child_object_path (GDBusObjectManagerServer *manager,
+                            const gchar              *child_object_path)
+{
+  /* Historically GDBus accepted @child_object_paths at `/` if the @manager
+   * itself is also at `/". This is not spec-compliant, but making GDBus enforce
+   * the spec more strictly would be an incompatible change.
+   *
+   * See https://gitlab.gnome.org/GNOME/glib/-/issues/2500 */
+  g_warn_if_fail (!g_str_equal (child_object_path, manager->priv->object_path_ending_in_slash));
+
+  return g_str_has_prefix (child_object_path, manager->priv->object_path_ending_in_slash);
+}
+
 /* ---------------------------------------------------------------------------------------------------- */
 
 static void
@@ -471,7 +499,7 @@ g_dbus_object_manager_server_export_unlocked (GDBusObjectManagerServer  *manager
 
   g_return_if_fail (G_IS_DBUS_OBJECT_MANAGER_SERVER (manager));
   g_return_if_fail (G_IS_DBUS_OBJECT (object));
-  g_return_if_fail (g_str_has_prefix (object_path, manager->priv->object_path_ending_in_slash));
+  g_return_if_fail (is_valid_child_object_path (manager, object_path));
 
   interface_names = g_ptr_array_new ();
 
@@ -574,7 +602,7 @@ g_dbus_object_manager_server_export_uniquely (GDBusObjectManagerServer *manager,
 
   g_return_if_fail (G_IS_DBUS_OBJECT_MANAGER_SERVER (manager));
   g_return_if_fail (G_IS_DBUS_OBJECT (object));
-  g_return_if_fail (g_str_has_prefix (orig_object_path, manager->priv->object_path_ending_in_slash));
+  g_return_if_fail (is_valid_child_object_path (manager, orig_object_path));
 
   g_mutex_lock (&manager->priv->lock);
 
@@ -650,7 +678,7 @@ g_dbus_object_manager_server_unexport_unlocked (GDBusObjectManagerServer  *manag
 
   g_return_val_if_fail (G_IS_DBUS_OBJECT_MANAGER_SERVER (manager), FALSE);
   g_return_val_if_fail (g_variant_is_object_path (object_path), FALSE);
-  g_return_val_if_fail (g_str_has_prefix (object_path, manager->priv->object_path_ending_in_slash), FALSE);
+  g_return_val_if_fail (is_valid_child_object_path (manager, object_path), FALSE);
 
   ret = FALSE;
 
index fc58aea..0b8630a 100644 (file)
 #include <stdlib.h>
 #include <string.h>
 
-#include "giotypes.h"
-#include "gioenumtypes.h"
-#include "gsocket.h"
 #include "gdbusauthobserver.h"
-#include "gdbusprivate.h"
-#include "gdbusmessage.h"
 #include "gdbusconnection.h"
-#include "gdbusproxy.h"
+#include "gdbusdaemon.h"
 #include "gdbuserror.h"
 #include "gdbusintrospection.h"
-#include "gdbusdaemon.h"
-#include "giomodule-priv.h"
-#include "gtask.h"
+#include "gdbusmessage.h"
+#include "gdbusprivate.h"
+#include "gdbusproxy.h"
 #include "ginputstream.h"
-#include "gmemoryinputstream.h"
+#include "gioenumtypes.h"
+#include "giomodule-priv.h"
 #include "giostream.h"
+#include "giotypes.h"
+#include "glib-private.h"
 #include "glib/gstdio.h"
+#include "gmemoryinputstream.h"
+#include "gsocket.h"
 #include "gsocketaddress.h"
-#include "gsocketcontrolmessage.h"
 #include "gsocketconnection.h"
+#include "gsocketcontrolmessage.h"
 #include "gsocketoutputstream.h"
+#include "gtask.h"
 
 #ifdef G_OS_UNIX
 #include "gunixfdmessage.h"
@@ -55,6 +56,7 @@
 #include <windows.h>
 #include <io.h>
 #include <conio.h>
+#include "gwin32sid.h"
 #endif
 
 #include "glibintl.h"
@@ -2010,69 +2012,6 @@ _g_dbus_compute_complete_signature (GDBusArgInfo **args)
 
 #ifdef G_OS_WIN32
 
-extern BOOL WINAPI ConvertSidToStringSidA (PSID Sid, LPSTR *StringSid);
-
-gchar *
-_g_dbus_win32_get_user_sid (void)
-{
-  HANDLE h;
-  TOKEN_USER *user;
-  DWORD token_information_len;
-  PSID psid;
-  gchar *sid;
-  gchar *ret;
-
-  ret = NULL;
-  user = NULL;
-  h = INVALID_HANDLE_VALUE;
-
-  if (!OpenProcessToken (GetCurrentProcess (), TOKEN_QUERY, &h))
-    {
-      g_warning ("OpenProcessToken failed with error code %d", (gint) GetLastError ());
-      goto out;
-    }
-
-  /* Get length of buffer */
-  token_information_len = 0;
-  if (!GetTokenInformation (h, TokenUser, NULL, 0, &token_information_len))
-    {
-      if (GetLastError () != ERROR_INSUFFICIENT_BUFFER)
-        {
-          g_warning ("GetTokenInformation() failed with error code %d", (gint) GetLastError ());
-          goto out;
-        }
-    }
-  user = g_malloc (token_information_len);
-  if (!GetTokenInformation (h, TokenUser, user, token_information_len, &token_information_len))
-    {
-      g_warning ("GetTokenInformation() failed with error code %d", (gint) GetLastError ());
-      goto out;
-    }
-
-  psid = user->User.Sid;
-  if (!IsValidSid (psid))
-    {
-      g_warning ("Invalid SID");
-      goto out;
-    }
-
-  if (!ConvertSidToStringSidA (psid, &sid))
-    {
-      g_warning ("Invalid SID");
-      goto out;
-    }
-
-  ret = g_strdup (sid);
-  LocalFree (sid);
-
-out:
-  g_free (user);
-  if (h != INVALID_HANDLE_VALUE)
-    CloseHandle (h);
-  return ret;
-}
-
-
 #define DBUS_DAEMON_ADDRESS_INFO "DBusDaemonAddressInfo"
 #define DBUS_DAEMON_MUTEX "DBusDaemonMutex"
 #define UNIQUE_DBUS_INIT_MUTEX "UniqueDBusInitMutex"
@@ -2337,6 +2276,26 @@ g_win32_run_session_bus (void* hwnd, void* hinst, const char* cmdline, int cmdsh
 
 static gboolean autolaunch_binary_absent = FALSE;
 
+static wchar_t *
+find_dbus_process_path (void)
+{
+  wchar_t *dbus_path;
+  gchar *exe_path = GLIB_PRIVATE_CALL (g_win32_find_helper_executable_path) ("gdbus.exe", _g_io_win32_get_module ());
+  dbus_path = g_utf8_to_utf16 (exe_path, -1, NULL, NULL, NULL);
+  g_free (exe_path);
+
+  if (dbus_path == NULL)
+    return NULL;
+
+  if (GetFileAttributesW (dbus_path) == INVALID_FILE_ATTRIBUTES)
+    {
+      g_free (dbus_path);
+      return NULL;
+    }
+
+  return dbus_path;
+}
+
 gchar *
 _g_dbus_win32_get_session_address_dbus_launch (GError **error)
 {
@@ -2354,61 +2313,53 @@ _g_dbus_win32_get_session_address_dbus_launch (GError **error)
 
   if (address == NULL && !autolaunch_binary_absent)
     {
-      wchar_t gio_path[MAX_PATH + 2] = { 0 };
-      int gio_path_len = GetModuleFileNameW (_g_io_win32_get_module (), gio_path, MAX_PATH + 1);
-
-      /* The <= MAX_PATH check prevents truncated path usage */
-      if (gio_path_len > 0 && gio_path_len <= MAX_PATH)
-       {
-         PROCESS_INFORMATION pi = { 0 };
-         STARTUPINFOW si = { 0 };
-         BOOL res = FALSE;
-         wchar_t exe_path[MAX_PATH + 100] = { 0 };
-         /* calculate index of first char of dll file name inside full path */
-         int gio_name_index = gio_path_len;
-         for (; gio_name_index > 0; --gio_name_index)
-         {
-           wchar_t prev_char = gio_path[gio_name_index - 1];
-           if (prev_char == L'\\' || prev_char == L'/')
-             break;
-         }
-         gio_path[gio_name_index] = L'\0';
-         wcscpy (exe_path, gio_path);
-         wcscat (exe_path, L"\\gdbus.exe");
-
-         if (GetFileAttributesW (exe_path) == INVALID_FILE_ATTRIBUTES)
-           {
-             /* warning won't be raised another time
-              * since autolaunch_binary_absent would be already set.
-              */
-             autolaunch_binary_absent = TRUE;
-             g_warning ("win32 session dbus binary not found: %S", exe_path );
-           }
-         else
-           {
-             wchar_t args[MAX_PATH*2 + 100] = { 0 };
-             wcscpy (args, L"\"");
-             wcscat (args, exe_path);
-             wcscat (args, L"\" ");
+      wchar_t *dbus_path = find_dbus_process_path ();
+      if (dbus_path == NULL)
+        {
+          /* warning won't be raised another time
+           * since autolaunch_binary_absent would be already set.
+           */
+          autolaunch_binary_absent = TRUE;
+          g_warning ("win32 session dbus binary not found");
+        }
+      else
+        {
+          PROCESS_INFORMATION pi = { 0 };
+          STARTUPINFOW si = { 0 };
+          BOOL res = FALSE;
+          wchar_t args[MAX_PATH * 2 + 100] = { 0 };
+          wchar_t working_dir[MAX_PATH + 2] = { 0 };
+          wchar_t *p;
+
+          wcscpy (working_dir, dbus_path);
+          p = wcsrchr (working_dir, L'\\');
+          if (p != NULL)
+            *p = L'\0';
+
+          wcscpy (args, L"\"");
+          wcscat (args, dbus_path);
+          wcscat (args, L"\" ");
 #define _L_PREFIX_FOR_EXPANDED(arg) L##arg
 #define _L_PREFIX(arg) _L_PREFIX_FOR_EXPANDED (arg)
-             wcscat (args, _L_PREFIX (_GDBUS_ARG_WIN32_RUN_SESSION_BUS));
+          wcscat (args, _L_PREFIX (_GDBUS_ARG_WIN32_RUN_SESSION_BUS));
 #undef _L_PREFIX
 #undef _L_PREFIX_FOR_EXPANDED
 
-             res = CreateProcessW (exe_path, args,
-                                   0, 0, FALSE,
-                                   NORMAL_PRIORITY_CLASS | CREATE_NO_WINDOW | DETACHED_PROCESS,
-                                   0, gio_path,
-                                   &si, &pi);
-           }
-         if (res)
-           {
-             address = read_shm (DBUS_DAEMON_ADDRESS_INFO);
-             if (address == NULL)
-               g_warning ("%S dbus binary failed to launch bus, maybe incompatible version", exe_path );
-           }
-       }
+          res = CreateProcessW (dbus_path, args,
+                                0, 0, FALSE,
+                                NORMAL_PRIORITY_CLASS | CREATE_NO_WINDOW | DETACHED_PROCESS,
+                                0, working_dir,
+                                &si, &pi);
+
+          if (res)
+            {
+              address = read_shm (DBUS_DAEMON_ADDRESS_INFO);
+              if (address == NULL)
+                g_warning ("%S dbus binary failed to launch bus, maybe incompatible version", dbus_path);
+            }
+
+          g_free (dbus_path);
+        }
     }
 
   release_mutex (autolaunch_mutex);
index 7a2289b..c095bc5 100644 (file)
@@ -593,11 +593,15 @@ g_dbus_proxy_class_init (GDBusProxyClass *klass)
    *
    * Emitted when a signal from the remote object and interface that @proxy is for, has been received.
    *
+   * Since 2.72 this signal supports detailed connections. You can connect to
+   * the detailed signal `g-signal::x` in order to receive callbacks only when
+   * signal `x` is received from the remote object.
+   *
    * Since: 2.26
    */
   signals[SIGNAL_SIGNAL] = g_signal_new (I_("g-signal"),
                                          G_TYPE_DBUS_PROXY,
-                                         G_SIGNAL_RUN_LAST | G_SIGNAL_MUST_COLLECT,
+                                         G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED | G_SIGNAL_MUST_COLLECT,
                                          G_STRUCT_OFFSET (GDBusProxyClass, g_signal),
                                          NULL,
                                          NULL,
@@ -890,7 +894,7 @@ on_signal_received (GDBusConnection *connection,
 
   g_signal_emit (proxy,
                  signals[SIGNAL_SIGNAL],
-                 0,
+                 g_quark_try_string (signal_name),
                  sender_name,
                  signal_name,
                  parameters);
@@ -1694,6 +1698,10 @@ static void
 async_initable_init_first (GAsyncInitable *initable)
 {
   GDBusProxy *proxy = G_DBUS_PROXY (initable);
+  GDBusSignalFlags signal_flags = G_DBUS_SIGNAL_FLAGS_NONE;
+
+  if (proxy->priv->flags & G_DBUS_PROXY_FLAGS_NO_MATCH_RULE)
+    signal_flags |= G_DBUS_SIGNAL_FLAGS_NO_MATCH_RULE;
 
   if (!(proxy->priv->flags & G_DBUS_PROXY_FLAGS_DO_NOT_LOAD_PROPERTIES))
     {
@@ -1705,7 +1713,7 @@ async_initable_init_first (GAsyncInitable *initable)
                                             "PropertiesChanged",
                                             proxy->priv->object_path,
                                             proxy->priv->interface_name,
-                                            G_DBUS_SIGNAL_FLAGS_NONE,
+                                            signal_flags,
                                             on_properties_changed,
                                             weak_ref_new (G_OBJECT (proxy)),
                                             (GDestroyNotify) weak_ref_free);
@@ -1721,7 +1729,7 @@ async_initable_init_first (GAsyncInitable *initable)
                                             NULL,                        /* member */
                                             proxy->priv->object_path,
                                             NULL,                        /* arg0 */
-                                            G_DBUS_SIGNAL_FLAGS_NONE,
+                                            signal_flags,
                                             on_signal_received,
                                             weak_ref_new (G_OBJECT (proxy)),
                                             (GDestroyNotify) weak_ref_free);
@@ -1737,7 +1745,7 @@ async_initable_init_first (GAsyncInitable *initable)
                                             "NameOwnerChanged",      /* signal name */
                                             "/org/freedesktop/DBus", /* path */
                                             proxy->priv->name,       /* arg0 */
-                                            G_DBUS_SIGNAL_FLAGS_NONE,
+                                            signal_flags,
                                             on_name_owner_changed,
                                             weak_ref_new (G_OBJECT (proxy)),
                                             (GDestroyNotify) weak_ref_free);
index f12e862..112c24e 100644 (file)
@@ -537,23 +537,23 @@ g_dbus_gvariant_to_gvalue (GVariant  *value,
  *
  * The conversion is using the following rules:
  *
- * - #G_TYPE_STRING: 's', 'o', 'g' or 'ay'
- * - #G_TYPE_STRV: 'as', 'ao' or 'aay'
- * - #G_TYPE_BOOLEAN: 'b'
- * - #G_TYPE_UCHAR: 'y'
- * - #G_TYPE_INT: 'i', 'n'
- * - #G_TYPE_UINT: 'u', 'q'
- * - #G_TYPE_INT64 'x'
- * - #G_TYPE_UINT64: 't'
- * - #G_TYPE_DOUBLE: 'd'
- * - #G_TYPE_VARIANT: Any #GVariantType
- *
- * This can fail if e.g. @gvalue is of type #G_TYPE_STRING and @type
- * is ['i'][G-VARIANT-TYPE-INT32:CAPS]. It will also fail for any #GType
- * (including e.g. #G_TYPE_OBJECT and #G_TYPE_BOXED derived-types) not
+ * - `G_TYPE_STRING`: 's', 'o', 'g' or 'ay'
+ * - `G_TYPE_STRV`: 'as', 'ao' or 'aay'
+ * - `G_TYPE_BOOLEAN`: 'b'
+ * - `G_TYPE_UCHAR`: 'y'
+ * - `G_TYPE_INT`: 'i', 'n'
+ * - `G_TYPE_UINT`: 'u', 'q'
+ * - `G_TYPE_INT64`: 'x'
+ * - `G_TYPE_UINT64`: 't'
+ * - `G_TYPE_DOUBLE`: 'd'
+ * - `G_TYPE_VARIANT`: Any #GVariantType
+ *
+ * This can fail if e.g. @gvalue is of type %G_TYPE_STRING and @type
+ * is 'i', i.e. %G_VARIANT_TYPE_INT32. It will also fail for any #GType
+ * (including e.g. %G_TYPE_OBJECT and %G_TYPE_BOXED derived-types) not
  * in the table above.
  *
- * Note that if @gvalue is of type #G_TYPE_VARIANT and its value is
+ * Note that if @gvalue is of type %G_TYPE_VARIANT and its value is
  * %NULL, the empty #GVariant instance (never %NULL) for @type is
  * returned (e.g. 0 for scalar types, the empty string for string types,
  * '/' for object path types, the empty array for any array type and so on).
diff --git a/gio/gdebugcontroller.c b/gio/gdebugcontroller.c
new file mode 100644 (file)
index 0000000..c615616
--- /dev/null
@@ -0,0 +1,119 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright © 2021 Endless OS Foundation, LLC
+ *
+ * This library 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 library 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/>.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+#include "config.h"
+#include "glib.h"
+#include "glibintl.h"
+
+#include "gdebugcontroller.h"
+#include "ginitable.h"
+#include "giomodule-priv.h"
+
+/**
+ * SECTION:gdebugcontroller
+ * @title: GDebugController
+ * @short_description: Debugging controller
+ * @include: gio/gio.h
+ *
+ * #GDebugController is an interface to expose control of debugging features and
+ * debug output.
+ *
+ * It is implemented on Linux using #GDebugControllerDBus, which exposes a D-Bus
+ * interface to allow authenticated peers to control debug features in this
+ * process.
+ *
+ * Whether debug output is enabled is exposed as
+ * #GDebugController:debug-enabled. This controls g_log_set_debug_enabled() by
+ * default. Application code may connect to the #GObject::notify signal for it
+ * to control other parts of its debug infrastructure as necessary.
+ *
+ * If your application or service is using the default GLib log writer function,
+ * creating one of the built-in implementations of #GDebugController should be
+ * all that’s needed to dynamically enable or disable debug output.
+ *
+ * Since: 2.72
+ */
+
+G_DEFINE_INTERFACE_WITH_CODE (GDebugController, g_debug_controller, G_TYPE_OBJECT,
+                              g_type_interface_add_prerequisite (g_define_type_id, G_TYPE_INITABLE))
+
+static void
+g_debug_controller_default_init (GDebugControllerInterface *iface)
+{
+  /**
+   * GDebugController:debug-enabled:
+   *
+   * %TRUE if debug output should be exposed (for example by forwarding it to
+   * the journal), %FALSE otherwise.
+   *
+   * Since: 2.72
+   */
+  g_object_interface_install_property (iface,
+                                       g_param_spec_boolean ("debug-enabled",
+                                                             "Debug Enabled",
+                                                             "Whether to expose debug output",
+                                                             FALSE,
+                                                             G_PARAM_READWRITE |
+                                                             G_PARAM_STATIC_STRINGS |
+                                                             G_PARAM_EXPLICIT_NOTIFY));
+}
+
+/**
+ * g_debug_controller_get_debug_enabled:
+ * @self: a #GDebugController
+ *
+ * Get the value of #GDebugController:debug-enabled.
+ *
+ * Returns: %TRUE if debug output should be exposed, %FALSE otherwise
+ * Since: 2.72
+ */
+gboolean
+g_debug_controller_get_debug_enabled (GDebugController *self)
+{
+  gboolean enabled;
+
+  g_return_val_if_fail (G_IS_DEBUG_CONTROLLER (self), FALSE);
+
+  g_object_get (G_OBJECT (self),
+                "debug-enabled", &enabled,
+                NULL);
+
+  return enabled;
+}
+
+/**
+ * g_debug_controller_set_debug_enabled:
+ * @self: a #GDebugController
+ * @debug_enabled: %TRUE if debug output should be exposed, %FALSE otherwise
+ *
+ * Set the value of #GDebugController:debug-enabled.
+ *
+ * Since: 2.72
+ */
+void
+g_debug_controller_set_debug_enabled (GDebugController *self,
+                                      gboolean          debug_enabled)
+{
+  g_return_if_fail (G_IS_DEBUG_CONTROLLER (self));
+
+  g_object_set (G_OBJECT (self),
+                "debug-enabled", debug_enabled,
+                NULL);
+}
diff --git a/gio/gdebugcontroller.h b/gio/gdebugcontroller.h
new file mode 100644 (file)
index 0000000..ca3a2d2
--- /dev/null
@@ -0,0 +1,79 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright © 2021 Endless OS Foundation, LLC
+ *
+ * This library 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 library 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/>.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+#ifndef __G_DEBUG_CONTROLLER_H__
+#define __G_DEBUG_CONTROLLER_H__
+
+#if !defined (__GIO_GIO_H_INSIDE__) && !defined (GIO_COMPILATION)
+#error "Only <gio/gio.h> can be included directly."
+#endif
+
+#include <gio/giotypes.h>
+
+G_BEGIN_DECLS
+
+/**
+ * G_DEBUG_CONTROLLER_EXTENSION_POINT_NAME:
+ *
+ * Extension point for debug control functionality.
+ * See [Extending GIO][extending-gio].
+ *
+ * Since: 2.72
+ */
+#define G_DEBUG_CONTROLLER_EXTENSION_POINT_NAME "gio-debug-controller"
+
+/**
+ * GDebugController:
+ *
+ * #GDebugController is an interface to expose control of debugging features and
+ * debug output.
+ *
+ * Since: 2.72
+ */
+#define G_TYPE_DEBUG_CONTROLLER             (g_debug_controller_get_type ())
+GLIB_AVAILABLE_IN_2_72
+G_DECLARE_INTERFACE(GDebugController, g_debug_controller, g, debug_controller, GObject)
+
+#define G_DEBUG_CONTROLLER(o)               (G_TYPE_CHECK_INSTANCE_CAST ((o), G_TYPE_DEBUG_CONTROLLER, GDebugController))
+#define G_IS_DEBUG_CONTROLLER(o)            (G_TYPE_CHECK_INSTANCE_TYPE ((o), G_TYPE_DEBUG_CONTROLLER))
+#define G_DEBUG_CONTROLLER_GET_INTERFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), G_TYPE_DEBUG_CONTROLLER, GDebugControllerInterface))
+
+/**
+ * GDebugControllerInterface:
+ * @g_iface: The parent interface.
+ *
+ * The virtual function table for #GDebugController.
+ *
+ * Since: 2.72
+ */
+struct _GDebugControllerInterface {
+  /*< private >*/
+  GTypeInterface g_iface;
+};
+
+GLIB_AVAILABLE_IN_2_72
+gboolean               g_debug_controller_get_debug_enabled     (GDebugController *self);
+GLIB_AVAILABLE_IN_2_72
+void                   g_debug_controller_set_debug_enabled     (GDebugController *self,
+                                                                 gboolean          debug_enabled);
+
+G_END_DECLS
+
+#endif /* __G_DEBUG_CONTROLLER_H__ */
diff --git a/gio/gdebugcontrollerdbus.c b/gio/gdebugcontrollerdbus.c
new file mode 100644 (file)
index 0000000..3c0ee00
--- /dev/null
@@ -0,0 +1,709 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright © 2021 Endless OS Foundation, LLC
+ *
+ * This library 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 library 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/>.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+#include "config.h"
+
+#include <gio/gio.h>
+#include "gdebugcontroller.h"
+#include "gdebugcontrollerdbus.h"
+#include "giomodule-priv.h"
+#include "gi18n.h"
+#include "gio/gdbusprivate.h"
+#include "gio/gmarshal-internal.h"
+
+/**
+ * SECTION:gdebugcontrollerdbus
+ * @title: GDebugControllerDBus
+ * @short_description: Debugging controller D-Bus implementation
+ * @include: gio/gio.h
+ *
+ * #GDebugControllerDBus is an implementation of #GDebugController which exposes
+ * debug settings as a D-Bus object.
+ *
+ * It is a #GInitable object, and will register an object at
+ * `/org/gtk/Debugging` on the bus given as
+ * #GDebugControllerDBus:connection once it’s initialized. The object will be
+ * unregistered when the last reference to the #GDebugControllerDBus is dropped.
+ *
+ * This D-Bus object can be used by remote processes to enable or disable debug
+ * output in this process. Remote processes calling
+ * `org.gtk.Debugging.SetDebugEnabled()` will affect the value of
+ * #GDebugController:debug-enabled and, by default, g_log_get_debug_enabled().
+ * default.
+ *
+ * By default, all processes will be able to call `SetDebugEnabled()`. If this
+ * process is privileged, or might expose sensitive information in its debug
+ * output, you may want to restrict the ability to enable debug output to
+ * privileged users or processes.
+ *
+ * One option is to install a D-Bus security policy which restricts access to
+ * `SetDebugEnabled()`, installing something like the following in
+ * `$datadir/dbus-1/system.d/`:
+ * |[<!-- language="XML" -->
+ * <?xml version="1.0"?> <!--*-nxml-*-->
+ * <!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
+ *      "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
+ * <busconfig>
+ *   <policy user="root">
+ *     <allow send_destination="com.example.MyService" send_interface="org.gtk.Debugging"/>
+ *   </policy>
+ *   <policy context="default">
+ *     <deny send_destination="com.example.MyService" send_interface="org.gtk.Debugging"/>
+ *   </policy>
+ * </busconfig>
+ * ]|
+ *
+ * This will prevent the `SetDebugEnabled()` method from being called by all
+ * except root. It will not prevent the `DebugEnabled` property from being read,
+ * as it’s accessed through the `org.freedesktop.DBus.Properties` interface.
+ *
+ * Another option is to use polkit to allow or deny requests on a case-by-case
+ * basis, allowing for the possibility of dynamic authorisation. To do this,
+ * connect to the #GDebugControllerDBus::authorize signal and query polkit in
+ * it:
+ * |[<!-- language="C" -->
+ *   g_autoptr(GError) child_error = NULL;
+ *   g_autoptr(GDBusConnection) connection = g_bus_get_sync (G_BUS_TYPE_SYSTEM, NULL, NULL);
+ *   gulong debug_controller_authorize_id = 0;
+ *
+ *   // Set up the debug controller.
+ *   debug_controller = G_DEBUG_CONTROLLER (g_debug_controller_dbus_new (priv->connection, NULL, &child_error));
+ *   if (debug_controller == NULL)
+ *     {
+ *       g_error ("Could not register debug controller on bus: %s"),
+ *                child_error->message);
+ *     }
+ *
+ *   debug_controller_authorize_id = g_signal_connect (debug_controller,
+ *                                                     "authorize",
+ *                                                     G_CALLBACK (debug_controller_authorize_cb),
+ *                                                     self);
+ *
+ *   static gboolean
+ *   debug_controller_authorize_cb (GDebugControllerDBus  *debug_controller,
+ *                                  GDBusMethodInvocation *invocation,
+ *                                  gpointer               user_data)
+ *   {
+ *     g_autoptr(PolkitAuthority) authority = NULL;
+ *     g_autoptr(PolkitSubject) subject = NULL;
+ *     g_autoptr(PolkitAuthorizationResult) auth_result = NULL;
+ *     g_autoptr(GError) local_error = NULL;
+ *     GDBusMessage *message;
+ *     GDBusMessageFlags message_flags;
+ *     PolkitCheckAuthorizationFlags flags = POLKIT_CHECK_AUTHORIZATION_FLAGS_NONE;
+ *
+ *     message = g_dbus_method_invocation_get_message (invocation);
+ *     message_flags = g_dbus_message_get_flags (message);
+ *
+ *     authority = polkit_authority_get_sync (NULL, &local_error);
+ *     if (authority == NULL)
+ *       {
+ *         g_warning ("Failed to get polkit authority: %s", local_error->message);
+ *         return FALSE;
+ *       }
+ *
+ *     if (message_flags & G_DBUS_MESSAGE_FLAGS_ALLOW_INTERACTIVE_AUTHORIZATION)
+ *       flags |= POLKIT_CHECK_AUTHORIZATION_FLAGS_ALLOW_USER_INTERACTION;
+ *
+ *     subject = polkit_system_bus_name_new (g_dbus_method_invocation_get_sender (invocation));
+ *
+ *     auth_result = polkit_authority_check_authorization_sync (authority,
+ *                                                              subject,
+ *                                                              "com.example.MyService.set-debug-enabled",
+ *                                                              NULL,
+ *                                                              flags,
+ *                                                              NULL,
+ *                                                              &local_error);
+ *     if (auth_result == NULL)
+ *       {
+ *         g_warning ("Failed to get check polkit authorization: %s", local_error->message);
+ *         return FALSE;
+ *       }
+ *
+ *     return polkit_authorization_result_get_is_authorized (auth_result);
+ *   }
+ * ]|
+ *
+ * Since: 2.72
+ */
+
+static const gchar org_gtk_Debugging_xml[] =
+  "<node>"
+    "<interface name='org.gtk.Debugging'>"
+      "<property name='DebugEnabled' type='b' access='read'/>"
+      "<method name='SetDebugEnabled'>"
+        "<arg type='b' name='debug-enabled' direction='in'/>"
+      "</method>"
+    "</interface>"
+  "</node>";
+
+static GDBusInterfaceInfo *org_gtk_Debugging;
+
+#define G_DEBUG_CONTROLLER_DBUS_GET_INITABLE_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), G_TYPE_INITABLE, GInitable))
+
+static void g_debug_controller_dbus_iface_init (GDebugControllerInterface *iface);
+static void g_debug_controller_dbus_initable_iface_init (GInitableIface *iface);
+static gboolean g_debug_controller_dbus_authorize_default (GDebugControllerDBus  *self,
+                                                           GDBusMethodInvocation *invocation);
+
+typedef enum
+{
+  PROP_CONNECTION = 1,
+  /* Overrides: */
+  PROP_DEBUG_ENABLED,
+} GDebugControllerDBusProperty;
+
+static GParamSpec *props[PROP_CONNECTION + 1] = { NULL, };
+
+typedef enum
+{
+  SIGNAL_AUTHORIZE,
+} GDebugControllerDBusSignal;
+
+static guint signals[SIGNAL_AUTHORIZE + 1] = {0};
+
+typedef struct
+{
+  GObject parent_instance;
+
+  GCancellable *cancellable;  /* (owned) */
+  GDBusConnection *connection;  /* (owned) */
+  guint object_id;
+  GPtrArray *pending_authorize_tasks;  /* (element-type GWeakRef) (owned) (nullable) */
+
+  gboolean debug_enabled;
+} GDebugControllerDBusPrivate;
+
+G_DEFINE_TYPE_WITH_CODE (GDebugControllerDBus, g_debug_controller_dbus, G_TYPE_OBJECT,
+                         G_ADD_PRIVATE (GDebugControllerDBus)
+                         G_IMPLEMENT_INTERFACE (G_TYPE_INITABLE,
+                                                g_debug_controller_dbus_initable_iface_init)
+                         G_IMPLEMENT_INTERFACE (G_TYPE_DEBUG_CONTROLLER,
+                                                g_debug_controller_dbus_iface_init)
+                         _g_io_modules_ensure_extension_points_registered ();
+                         g_io_extension_point_implement (G_DEBUG_CONTROLLER_EXTENSION_POINT_NAME,
+                                                         g_define_type_id,
+                                                         "dbus",
+                                                         30))
+
+static void
+g_debug_controller_dbus_init (GDebugControllerDBus *self)
+{
+  GDebugControllerDBusPrivate *priv = g_debug_controller_dbus_get_instance_private (self);
+
+  priv->cancellable = g_cancellable_new ();
+}
+
+static void
+set_debug_enabled (GDebugControllerDBus *self,
+                   gboolean              debug_enabled)
+{
+  GDebugControllerDBusPrivate *priv = g_debug_controller_dbus_get_instance_private (self);
+
+  if (g_cancellable_is_cancelled (priv->cancellable))
+    return;
+
+  if (debug_enabled != priv->debug_enabled)
+    {
+      GVariantBuilder builder;
+
+      priv->debug_enabled = debug_enabled;
+
+      /* Change the default log writer’s behaviour in GLib. */
+      g_log_set_debug_enabled (debug_enabled);
+
+      /* Notify internally and externally of the property change. */
+      g_object_notify (G_OBJECT (self), "debug-enabled");
+
+      g_variant_builder_init (&builder, G_VARIANT_TYPE ("a{sv}"));
+      g_variant_builder_add (&builder, "{sv}", "DebugEnabled", g_variant_new_boolean (priv->debug_enabled));
+
+      g_dbus_connection_emit_signal (priv->connection,
+                                     NULL,
+                                     "/org/gtk/Debugging",
+                                     "org.freedesktop.DBus.Properties",
+                                     "PropertiesChanged",
+                                     g_variant_new ("(sa{sv}as)",
+                                                    "org.gtk.Debugging",
+                                                    &builder,
+                                                    NULL),
+                                     NULL);
+
+      g_debug ("Debug output %s", debug_enabled ? "enabled" : "disabled");
+    }
+}
+
+/* Called in the #GMainContext which was default when the #GDebugControllerDBus
+ * was initialised. */
+static GVariant *
+dbus_get_property (GDBusConnection  *connection,
+                   const gchar      *sender,
+                   const gchar      *object_path,
+                   const gchar      *interface_name,
+                   const gchar      *property_name,
+                   GError          **error,
+                   gpointer          user_data)
+{
+  GDebugControllerDBus *self = user_data;
+  GDebugControllerDBusPrivate *priv = g_debug_controller_dbus_get_instance_private (self);
+
+  if (g_str_equal (property_name, "DebugEnabled"))
+    return g_variant_new_boolean (priv->debug_enabled);
+
+  g_assert_not_reached ();
+
+  return NULL;
+}
+
+static GWeakRef *
+weak_ref_new (GObject *obj)
+{
+  GWeakRef *weak_ref = g_new0 (GWeakRef, 1);
+
+  g_weak_ref_init (weak_ref, obj);
+
+  return g_steal_pointer (&weak_ref);
+}
+
+static void
+weak_ref_free (GWeakRef *weak_ref)
+{
+  g_weak_ref_clear (weak_ref);
+  g_free (weak_ref);
+}
+
+/* Called in the #GMainContext which was default when the #GDebugControllerDBus
+ * was initialised. */
+static void
+garbage_collect_weak_refs (GDebugControllerDBus *self)
+{
+  GDebugControllerDBusPrivate *priv = g_debug_controller_dbus_get_instance_private (self);
+  guint i;
+
+  if (priv->pending_authorize_tasks == NULL)
+    return;
+
+  /* Iterate in reverse order so that if we remove an element the hole won’t be
+   * filled by an element we haven’t checked yet. */
+  for (i = priv->pending_authorize_tasks->len; i > 0; i--)
+    {
+      GWeakRef *weak_ref = g_ptr_array_index (priv->pending_authorize_tasks, i - 1);
+      GObject *obj = g_weak_ref_get (weak_ref);
+
+      if (obj == NULL)
+        g_ptr_array_remove_index_fast (priv->pending_authorize_tasks, i - 1);
+      else
+        g_object_unref (obj);
+    }
+
+  /* Don’t need to keep the array around any more if it’s empty. */
+  if (priv->pending_authorize_tasks->len == 0)
+    g_clear_pointer (&priv->pending_authorize_tasks, g_ptr_array_unref);
+}
+
+/* Called in a worker thread. */
+static void
+authorize_task_cb (GTask        *task,
+                   gpointer      source_object,
+                   gpointer      task_data,
+                   GCancellable *cancellable)
+{
+  GDebugControllerDBus *self = G_DEBUG_CONTROLLER_DBUS (source_object);
+  GDBusMethodInvocation *invocation = G_DBUS_METHOD_INVOCATION (task_data);
+  gboolean authorized = TRUE;
+
+  g_signal_emit (self, signals[SIGNAL_AUTHORIZE], 0, invocation, &authorized);
+
+  g_task_return_boolean (task, authorized);
+}
+
+/* Called in the #GMainContext which was default when the #GDebugControllerDBus
+ * was initialised. */
+static void
+authorize_cb (GObject      *object,
+              GAsyncResult *result,
+              gpointer      user_data)
+{
+  GDebugControllerDBus *self = G_DEBUG_CONTROLLER_DBUS (object);
+  GDebugControllerDBusPrivate *priv G_GNUC_UNUSED  /* when compiling with G_DISABLE_ASSERT */;
+  GTask *task = G_TASK (result);
+  GDBusMethodInvocation *invocation = g_task_get_task_data (task);
+  GVariant *parameters = g_dbus_method_invocation_get_parameters (invocation);
+  gboolean enabled = FALSE;
+  gboolean authorized;
+
+  priv = g_debug_controller_dbus_get_instance_private (self);
+  authorized = g_task_propagate_boolean (task, NULL);
+
+  if (!authorized)
+    {
+      GError *local_error = g_error_new (G_DBUS_ERROR, G_DBUS_ERROR_ACCESS_DENIED,
+                                         _("Not authorized to change debug settings"));
+      g_dbus_method_invocation_take_error (invocation, g_steal_pointer (&local_error));
+    }
+  else
+    {
+      /* Update the property value. */
+      g_variant_get (parameters, "(b)", &enabled);
+      set_debug_enabled (self, enabled);
+
+      g_dbus_method_invocation_return_value (invocation, NULL);
+    }
+
+  /* The GTask will stay alive for a bit longer as the worker thread is
+   * potentially still in the process of dropping its reference to it. */
+  g_assert (priv->pending_authorize_tasks != NULL && priv->pending_authorize_tasks->len > 0);
+}
+
+/* Called in the #GMainContext which was default when the #GDebugControllerDBus
+ * was initialised. */
+static void
+dbus_method_call (GDBusConnection       *connection,
+                  const gchar           *sender,
+                  const gchar           *object_path,
+                  const gchar           *interface_name,
+                  const gchar           *method_name,
+                  GVariant              *parameters,
+                  GDBusMethodInvocation *invocation,
+                  gpointer               user_data)
+{
+  GDebugControllerDBus *self = user_data;
+  GDebugControllerDBusPrivate *priv = g_debug_controller_dbus_get_instance_private (self);
+  GDebugControllerDBusClass *klass = G_DEBUG_CONTROLLER_DBUS_GET_CLASS (self);
+
+  /* Only on the org.gtk.Debugging interface */
+  if (g_str_equal (method_name, "SetDebugEnabled"))
+    {
+      GTask *task = NULL;
+
+      task = g_task_new (self, priv->cancellable, authorize_cb, NULL);
+      g_task_set_source_tag (task, dbus_method_call);
+      g_task_set_task_data (task, g_object_ref (invocation), (GDestroyNotify) g_object_unref);
+
+      /* Track the pending #GTask with a weak ref as its final strong ref could
+       * be dropped from this thread or an arbitrary #GTask worker thread. The
+       * weak refs will be evaluated in g_debug_controller_dbus_stop(). */
+      if (priv->pending_authorize_tasks == NULL)
+        priv->pending_authorize_tasks = g_ptr_array_new_with_free_func ((GDestroyNotify) weak_ref_free);
+      g_ptr_array_add (priv->pending_authorize_tasks, weak_ref_new (G_OBJECT (task)));
+
+      /* Take the opportunity to clean up a bit. */
+      garbage_collect_weak_refs (self);
+
+      /* Check the calling peer is authorised to change the debug mode. So that
+       * the signal handler can block on checking polkit authorisation (which
+       * definitely involves D-Bus calls, and might involve user interaction),
+       * emit the #GDebugControllerDBus::authorize signal in a worker thread, so
+       * that handlers can synchronously block it. This is similar to how
+       * #GDBusInterfaceSkeleton::g-authorize-method works.
+       *
+       * If no signal handlers are connected, don’t bother running the worker
+       * thread, and just return a default value of %FALSE. Fail closed. */
+      if (g_signal_has_handler_pending (self, signals[SIGNAL_AUTHORIZE], 0, FALSE) ||
+          klass->authorize != g_debug_controller_dbus_authorize_default)
+        g_task_run_in_thread (task, authorize_task_cb);
+      else
+        g_task_return_boolean (task, FALSE);
+
+      g_clear_object (&task);
+    }
+  else
+    g_assert_not_reached ();
+}
+
+static gboolean
+g_debug_controller_dbus_initable_init (GInitable     *initable,
+                                       GCancellable  *cancellable,
+                                       GError       **error)
+{
+  GDebugControllerDBus *self = G_DEBUG_CONTROLLER_DBUS (initable);
+  GDebugControllerDBusPrivate *priv = g_debug_controller_dbus_get_instance_private (self);
+  static const GDBusInterfaceVTable vtable = {
+    dbus_method_call,
+    dbus_get_property,
+    NULL /* set_property */,
+    { 0 }
+  };
+
+  if (org_gtk_Debugging == NULL)
+    {
+      GError *local_error = NULL;
+      GDBusNodeInfo *info;
+
+      info = g_dbus_node_info_new_for_xml (org_gtk_Debugging_xml, &local_error);
+      if G_UNLIKELY (info == NULL)
+        g_error ("%s", local_error->message);
+      org_gtk_Debugging = g_dbus_node_info_lookup_interface (info, "org.gtk.Debugging");
+      g_assert (org_gtk_Debugging != NULL);
+      g_dbus_interface_info_ref (org_gtk_Debugging);
+      g_dbus_node_info_unref (info);
+    }
+
+  priv->object_id = g_dbus_connection_register_object (priv->connection,
+                                                       "/org/gtk/Debugging",
+                                                       org_gtk_Debugging,
+                                                       &vtable, self, NULL, error);
+  if (priv->object_id == 0)
+    return FALSE;
+
+  return TRUE;
+}
+
+static void
+g_debug_controller_dbus_get_property (GObject    *object,
+                                      guint       prop_id,
+                                      GValue     *value,
+                                      GParamSpec *pspec)
+{
+  GDebugControllerDBus *self = G_DEBUG_CONTROLLER_DBUS (object);
+  GDebugControllerDBusPrivate *priv = g_debug_controller_dbus_get_instance_private (self);
+
+  switch ((GDebugControllerDBusProperty) prop_id)
+    {
+    case PROP_CONNECTION:
+      g_value_set_object (value, priv->connection);
+      break;
+    case PROP_DEBUG_ENABLED:
+      g_value_set_boolean (value, priv->debug_enabled);
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+    }
+}
+
+static void
+g_debug_controller_dbus_set_property (GObject      *object,
+                                      guint         prop_id,
+                                      const GValue *value,
+                                      GParamSpec   *pspec)
+{
+  GDebugControllerDBus *self = G_DEBUG_CONTROLLER_DBUS (object);
+  GDebugControllerDBusPrivate *priv = g_debug_controller_dbus_get_instance_private (self);
+
+  switch ((GDebugControllerDBusProperty) prop_id)
+    {
+    case PROP_CONNECTION:
+      /* Construct only */
+      g_assert (priv->connection == NULL);
+      priv->connection = g_value_dup_object (value);
+      break;
+    case PROP_DEBUG_ENABLED:
+      set_debug_enabled (self, g_value_get_boolean (value));
+      break;
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+      break;
+    }
+}
+
+static void
+g_debug_controller_dbus_dispose (GObject *object)
+{
+  GDebugControllerDBus *self = G_DEBUG_CONTROLLER_DBUS (object);
+  GDebugControllerDBusPrivate *priv = g_debug_controller_dbus_get_instance_private (self);
+
+  g_debug_controller_dbus_stop (self);
+  g_assert (priv->pending_authorize_tasks == NULL);
+  g_clear_object (&priv->connection);
+  g_clear_object (&priv->cancellable);
+
+  G_OBJECT_CLASS (g_debug_controller_dbus_parent_class)->dispose (object);
+}
+
+static gboolean
+g_debug_controller_dbus_authorize_default (GDebugControllerDBus  *self,
+                                           GDBusMethodInvocation *invocation)
+{
+  return TRUE;
+}
+
+static void
+g_debug_controller_dbus_class_init (GDebugControllerDBusClass *klass)
+{
+  GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+
+  gobject_class->get_property = g_debug_controller_dbus_get_property;
+  gobject_class->set_property = g_debug_controller_dbus_set_property;
+  gobject_class->dispose = g_debug_controller_dbus_dispose;
+
+  klass->authorize = g_debug_controller_dbus_authorize_default;
+
+  /**
+   * GDebugControllerDBus:connection:
+   *
+   * The D-Bus connection to expose the debugging interface on.
+   *
+   * Typically this will be the same connection (to the system or session bus)
+   * which the rest of the application or service’s D-Bus objects are registered
+   * on.
+   *
+   * Since: 2.72
+   */
+  props[PROP_CONNECTION] =
+      g_param_spec_object ("connection", "D-Bus Connection",
+                           "The D-Bus connection to expose the debugging interface on.",
+                           G_TYPE_DBUS_CONNECTION,
+                           G_PARAM_READWRITE |
+                           G_PARAM_CONSTRUCT_ONLY |
+                           G_PARAM_STATIC_STRINGS);
+
+  g_object_class_install_properties (gobject_class, G_N_ELEMENTS (props), props);
+
+  g_object_class_override_property (gobject_class, PROP_DEBUG_ENABLED, "debug-enabled");
+
+  /**
+   * GDebugControllerDBus::authorize:
+   * @controller: The #GDebugControllerDBus emitting the signal.
+   * @invocation: A #GDBusMethodInvocation.
+   *
+   * Emitted when a D-Bus peer is trying to change the debug settings and used
+   * to determine if that is authorized.
+   *
+   * This signal is emitted in a dedicated worker thread, so handlers are
+   * allowed to perform blocking I/O. This means that, for example, it is
+   * appropriate to call `polkit_authority_check_authorization_sync()` to check
+   * authorization using polkit.
+   *
+   * If %FALSE is returned then no further handlers are run and the request to
+   * change the debug settings is rejected.
+   *
+   * Otherwise, if %TRUE is returned, signal emission continues. If no handlers
+   * return %FALSE, then the debug settings are allowed to be changed.
+   *
+   * Signal handlers must not modify @invocation, or cause it to return a value.
+   *
+   * The default class handler just returns %TRUE.
+   *
+   * Returns: %TRUE if the call is authorized, %FALSE otherwise.
+   *
+   * Since: 2.72
+   */
+  signals[SIGNAL_AUTHORIZE] =
+    g_signal_new ("authorize",
+                  G_TYPE_DEBUG_CONTROLLER_DBUS,
+                  G_SIGNAL_RUN_LAST,
+                  G_STRUCT_OFFSET (GDebugControllerDBusClass, authorize),
+                  _g_signal_accumulator_false_handled,
+                  NULL,
+                  _g_cclosure_marshal_BOOLEAN__OBJECT,
+                  G_TYPE_BOOLEAN,
+                  1,
+                  G_TYPE_DBUS_METHOD_INVOCATION);
+  g_signal_set_va_marshaller (signals[SIGNAL_AUTHORIZE],
+                              G_TYPE_FROM_CLASS (klass),
+                              _g_cclosure_marshal_BOOLEAN__OBJECTv);
+}
+
+static void
+g_debug_controller_dbus_iface_init (GDebugControllerInterface *iface)
+{
+}
+
+static void
+g_debug_controller_dbus_initable_iface_init (GInitableIface *iface)
+{
+  iface->init = g_debug_controller_dbus_initable_init;
+}
+
+/**
+ * g_debug_controller_dbus_new:
+ * @connection: a #GDBusConnection to register the debug object on
+ * @cancellable: (nullable): a #GCancellable, or %NULL
+ * @error: return location for a #GError, or %NULL
+ *
+ * Create a new #GDebugControllerDBus and synchronously initialize it.
+ *
+ * Initializing the object will export the debug object on @connection. The
+ * object will remain registered until the last reference to the
+ * #GDebugControllerDBus is dropped.
+ *
+ * Initialization may fail if registering the object on @connection fails.
+ *
+ * Returns: (nullable) (transfer full): a new #GDebugControllerDBus, or %NULL
+ *   on failure
+ * Since: 2.72
+ */
+GDebugControllerDBus *
+g_debug_controller_dbus_new (GDBusConnection  *connection,
+                             GCancellable     *cancellable,
+                             GError          **error)
+{
+  g_return_val_if_fail (G_IS_DBUS_CONNECTION (connection), NULL);
+  g_return_val_if_fail (cancellable == NULL || G_IS_CANCELLABLE (cancellable), NULL);
+  g_return_val_if_fail (error == NULL || *error == NULL, NULL);
+
+  return g_initable_new (G_TYPE_DEBUG_CONTROLLER_DBUS,
+                         cancellable,
+                         error,
+                         "connection", connection,
+                         NULL);
+}
+
+/**
+ * g_debug_controller_dbus_stop:
+ * @self: a #GDebugControllerDBus
+ *
+ * Stop the debug controller, unregistering its object from the bus.
+ *
+ * Any pending method calls to the object will complete successfully, but new
+ * ones will return an error. This method will block until all pending
+ * #GDebugControllerDBus::authorize signals have been handled. This is expected
+ * to not take long, as it will just be waiting for threads to join. If any
+ * #GDebugControllerDBus::authorize signal handlers are still executing in other
+ * threads, this will block until after they have returned.
+ *
+ * This method will be called automatically when the final reference to the
+ * #GDebugControllerDBus is dropped. You may want to call it explicitly to know
+ * when the controller has been fully removed from the bus, or to break
+ * reference count cycles.
+ *
+ * Calling this method from within a #GDebugControllerDBus::authorize signal
+ * handler will cause a deadlock and must not be done.
+ *
+ * Since: 2.72
+ */
+void
+g_debug_controller_dbus_stop (GDebugControllerDBus *self)
+{
+  GDebugControllerDBusPrivate *priv = g_debug_controller_dbus_get_instance_private (self);
+
+  g_cancellable_cancel (priv->cancellable);
+
+  if (priv->object_id != 0)
+    {
+      g_dbus_connection_unregister_object (priv->connection, priv->object_id);
+      priv->object_id = 0;
+    }
+
+  /* Wait for any pending authorize tasks to finish. These will just be waiting
+   * for threads to join at this point, as the D-Bus object has been
+   * unregistered and the cancellable cancelled.
+   *
+   * The loop will never terminate if g_debug_controller_dbus_stop() is
+   * called from within an ::authorize callback.
+   *
+   * See discussion in https://gitlab.gnome.org/GNOME/glib/-/merge_requests/2486 */
+  while (priv->pending_authorize_tasks != NULL)
+    {
+      garbage_collect_weak_refs (self);
+      g_thread_yield ();
+    }
+}
diff --git a/gio/gdebugcontrollerdbus.h b/gio/gdebugcontrollerdbus.h
new file mode 100644 (file)
index 0000000..5e54bbf
--- /dev/null
@@ -0,0 +1,69 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright © 2021 Endless OS Foundation, LLC
+ *
+ * This library 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 library 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/>.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+#ifndef __G_DEBUG_CONTROLLER_DBUS_H__
+#define __G_DEBUG_CONTROLLER_DBUS_H__
+
+#include <glib.h>
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+/**
+ * GDebugControllerDBus:
+ *
+ * #GDebugControllerDBus is an implementation of #GDebugController over D-Bus.
+ *
+ * Since: 2.72
+ */
+#define G_TYPE_DEBUG_CONTROLLER_DBUS (g_debug_controller_dbus_get_type ())
+GLIB_AVAILABLE_IN_2_72
+G_DECLARE_DERIVABLE_TYPE (GDebugControllerDBus, g_debug_controller_dbus, G, DEBUG_CONTROLLER_DBUS, GObject)
+
+/**
+ * GDebugControllerDBusClass:
+ * @parent_class: The parent class.
+ * @authorize: Default handler for the #GDebugControllerDBus::authorize signal.
+ *
+ * The virtual function table for #GDebugControllerDBus.
+ *
+ * Since: 2.72
+ */
+struct _GDebugControllerDBusClass
+{
+  GObjectClass parent_class;
+
+  gboolean (*authorize)  (GDebugControllerDBus  *controller,
+                          GDBusMethodInvocation *invocation);
+
+  gpointer padding[12];
+};
+
+GLIB_AVAILABLE_IN_2_72
+GDebugControllerDBus *g_debug_controller_dbus_new (GDBusConnection  *connection,
+                                                   GCancellable     *cancellable,
+                                                   GError          **error);
+
+GLIB_AVAILABLE_IN_2_72
+void g_debug_controller_dbus_stop (GDebugControllerDBus *self);
+
+G_END_DECLS
+
+#endif /* __G_DEBUG_CONTROLLER_DBUS_H__ */
index 229e621..60d6deb 100644 (file)
@@ -89,6 +89,7 @@ enum {
 static void     g_desktop_app_info_iface_init         (GAppInfoIface    *iface);
 static gboolean g_desktop_app_info_ensure_saved       (GDesktopAppInfo  *info,
                                                        GError          **error);
+static gboolean g_desktop_app_info_load_file (GDesktopAppInfo *self);
 
 /**
  * GDesktopAppInfo:
@@ -1003,6 +1004,19 @@ desktop_file_dir_unindexed_init (DesktopFileDir *dir)
 }
 
 static GDesktopAppInfo *
+g_desktop_app_info_new_from_filename_unlocked (const char *filename)
+{
+  GDesktopAppInfo *info = NULL;
+
+  info = g_object_new (G_TYPE_DESKTOP_APP_INFO, "filename", filename, NULL);
+
+  if (!g_desktop_app_info_load_file (info))
+    g_clear_object (&info);
+
+  return info;
+}
+
+static GDesktopAppInfo *
 desktop_file_dir_unindexed_get_app (DesktopFileDir *dir,
                                     const gchar    *desktop_id)
 {
@@ -1013,7 +1027,7 @@ desktop_file_dir_unindexed_get_app (DesktopFileDir *dir,
   if (!filename)
     return NULL;
 
-  return g_desktop_app_info_new_from_filename (filename);
+  return g_desktop_app_info_new_from_filename_unlocked (filename);
 }
 
 static void
@@ -1033,7 +1047,7 @@ desktop_file_dir_unindexed_get_all (DesktopFileDir *dir,
       if (desktop_file_dir_app_name_is_masked (dir, app_name))
         continue;
 
-      add_to_table_if_appropriate (apps, app_name, g_desktop_app_info_new_from_filename (filename));
+      add_to_table_if_appropriate (apps, app_name, g_desktop_app_info_new_from_filename_unlocked (filename));
     }
 }
 
@@ -1754,6 +1768,56 @@ binary_from_exec (const char *exec)
   return g_strndup (start, p - start);
 }
 
+/*< internal >
+ * g_desktop_app_info_get_desktop_id_for_filename
+ * @self: #GDesktopAppInfo to get desktop id of
+ *
+ * Tries to find the desktop ID for a particular `.desktop` filename, as per the
+ * [Desktop Entry Specification](https://specifications.freedesktop.org/desktop-
+ * entry-spec/desktop-entry-spec-latest.html#desktop-file-id).
+ *
+ * Returns: desktop id or basename if filename is unknown.
+ */
+static char *
+g_desktop_app_info_get_desktop_id_for_filename (GDesktopAppInfo *self)
+{
+  guint i;
+  gchar *desktop_id = NULL;
+
+  g_return_val_if_fail (self->filename != NULL, NULL);
+
+  for (i = 0; i < desktop_file_dirs->len; i++)
+    {
+      DesktopFileDir *dir = g_ptr_array_index (desktop_file_dirs, i);
+      GHashTable *app_names;
+      GHashTableIter iter;
+      gpointer key, value;
+
+      app_names = dir->app_names;
+
+      if (!app_names)
+        continue;
+
+      g_hash_table_iter_init (&iter, app_names);
+      while (g_hash_table_iter_next (&iter, &key, &value))
+        {
+          if (!strcmp (value, self->filename))
+            {
+              desktop_id = g_strdup (key);
+              break;
+            }
+        }
+
+      if (desktop_id)
+        break;
+    }
+
+  if (!desktop_id)
+    desktop_id = g_path_get_basename (self->filename);
+
+  return g_steal_pointer (&desktop_id);
+}
+
 static gboolean
 g_desktop_app_info_load_from_keyfile (GDesktopAppInfo *info,
                                       GKeyFile        *key_file)
@@ -1816,6 +1880,10 @@ g_desktop_app_info_load_from_keyfile (GDesktopAppInfo *info,
       else
         {
           char *t;
+
+          /* Since @exec is not an empty string, there must be at least one
+           * argument, so dereferencing argv[0] should return non-NULL. */
+          g_assert (argc > 0);
           t = g_find_program_in_path (argv[0]);
           g_strfreev (argv);
 
@@ -1912,6 +1980,9 @@ g_desktop_app_info_load_from_keyfile (GDesktopAppInfo *info,
       g_free (basename);
     }
 
+  if (info->filename)
+    info->desktop_id = g_desktop_app_info_get_desktop_id_for_filename (info);
+
   info->keyfile = g_key_file_ref (key_file);
 
   return TRUE;
@@ -1925,8 +1996,6 @@ g_desktop_app_info_load_file (GDesktopAppInfo *self)
 
   g_return_val_if_fail (self->filename != NULL, FALSE);
 
-  self->desktop_id = g_path_get_basename (self->filename);
-
   key_file = g_key_file_new ();
 
   if (g_key_file_load_from_file (key_file, self->filename, G_KEY_FILE_NONE, NULL))
@@ -1953,11 +2022,14 @@ g_desktop_app_info_new_from_keyfile (GKeyFile *key_file)
 
   info = g_object_new (G_TYPE_DESKTOP_APP_INFO, NULL);
   info->filename = NULL;
+
+  desktop_file_dirs_lock ();
+
   if (!g_desktop_app_info_load_from_keyfile (info, key_file))
-    {
-      g_object_unref (info);
-      return NULL;
-    }
+    g_clear_object (&info);
+
+  desktop_file_dirs_unlock ();
+
   return info;
 }
 
@@ -1975,12 +2047,12 @@ g_desktop_app_info_new_from_filename (const char *filename)
 {
   GDesktopAppInfo *info = NULL;
 
-  info = g_object_new (G_TYPE_DESKTOP_APP_INFO, "filename", filename, NULL);
-  if (!g_desktop_app_info_load_file (info))
-    {
-      g_object_unref (info);
-      return NULL;
-    }
+  desktop_file_dirs_lock ();
+
+  info = g_desktop_app_info_new_from_filename_unlocked (filename);
+
+  desktop_file_dirs_unlock ();
+
   return info;
 }
 
@@ -2233,7 +2305,7 @@ g_desktop_app_info_get_generic_name (GDesktopAppInfo *info)
  *
  * Gets the value of the NoDisplay key, which helps determine if the
  * application info should be shown in menus. See
- * #G_KEY_FILE_DESKTOP_KEY_NO_DISPLAY and g_app_info_should_show().
+ * %G_KEY_FILE_DESKTOP_KEY_NO_DISPLAY and g_app_info_should_show().
  *
  * Returns: The value of the NoDisplay key
  *
@@ -2731,6 +2803,26 @@ notify_desktop_launch (GDBusConnection  *session_bus,
   g_object_unref (msg);
 }
 
+static void
+emit_launch_started (GAppLaunchContext *context,
+                     GDesktopAppInfo   *info,
+                     const gchar       *startup_id)
+{
+  GVariantBuilder builder;
+  GVariant *platform_data = NULL;
+
+  if (startup_id)
+    {
+      g_variant_builder_init (&builder, G_VARIANT_TYPE_ARRAY);
+      g_variant_builder_add (&builder, "{sv}",
+                             "startup-notification-id",
+                             g_variant_new_string (startup_id));
+      platform_data = g_variant_ref_sink (g_variant_builder_end (&builder));
+    }
+  g_signal_emit_by_name (context, "launch-started", info, platform_data);
+  g_clear_pointer (&platform_data, g_variant_unref);
+}
+
 #define _SPAWN_FLAGS_DEFAULT (G_SPAWN_SEARCH_PATH)
 
 static gboolean
@@ -2826,6 +2918,8 @@ g_desktop_app_info_launch_uris_with_spawn (GDesktopAppInfo            *info,
             }
 
           g_list_free_full (launched_files, g_object_unref);
+
+          emit_launch_started (launch_context, info, sn_id);
         }
 
       /* Wrap the @argv in a command which will set the
@@ -2959,6 +3053,64 @@ g_desktop_app_info_make_platform_data (GDesktopAppInfo   *info,
   return g_variant_builder_end (&builder);
 }
 
+typedef struct
+{
+  GDesktopAppInfo     *info; /* (owned) */
+  GAppLaunchContext   *launch_context; /* (owned) (nullable) */
+  GAsyncReadyCallback  callback;
+  gchar               *startup_id; /* (owned) */
+  gpointer             user_data;
+} LaunchUrisWithDBusData;
+
+static void
+launch_uris_with_dbus_data_free (LaunchUrisWithDBusData *data)
+{
+  g_clear_object (&data->info);
+  g_clear_object (&data->launch_context);
+  g_free (data->startup_id);
+
+  g_free (data);
+}
+
+static void
+launch_uris_with_dbus_signal_cb (GObject      *object,
+                                 GAsyncResult *result,
+                                 gpointer      user_data)
+{
+  LaunchUrisWithDBusData *data = user_data;
+  GVariantBuilder builder;
+
+  if (data->launch_context)
+    {
+      if (g_task_had_error (G_TASK (result)))
+        g_app_launch_context_launch_failed (data->launch_context, data->startup_id);
+      else
+        {
+          GVariant *platform_data;
+
+          g_variant_builder_init (&builder, G_VARIANT_TYPE_ARRAY);
+          /* the docs guarantee `pid` will be set, but we can’t
+           * easily know it for a D-Bus process, so set it to zero */
+          g_variant_builder_add (&builder, "{sv}", "pid", g_variant_new_int32 (0));
+          if (data->startup_id)
+            g_variant_builder_add (&builder, "{sv}",
+                                   "startup-notification-id",
+                                   g_variant_new_string (data->startup_id));
+          platform_data = g_variant_ref_sink (g_variant_builder_end (&builder));
+          g_signal_emit_by_name (data->launch_context,
+                                 "launched",
+                                 data->info,
+                                 platform_data);
+          g_variant_unref (platform_data);
+        }
+    }
+
+  if (data->callback)
+    data->callback (object, result, data->user_data);
+
+  launch_uris_with_dbus_data_free (data);
+}
+
 static void
 launch_uris_with_dbus (GDesktopAppInfo    *info,
                        GDBusConnection    *session_bus,
@@ -2968,8 +3120,11 @@ launch_uris_with_dbus (GDesktopAppInfo    *info,
                        GAsyncReadyCallback callback,
                        gpointer            user_data)
 {
+  GVariant *platform_data;
   GVariantBuilder builder;
+  GVariantDict dict;
   gchar *object_path;
+  LaunchUrisWithDBusData *data;
 
   g_variant_builder_init (&builder, G_VARIANT_TYPE_TUPLE);
 
@@ -2983,14 +3138,29 @@ launch_uris_with_dbus (GDesktopAppInfo    *info,
       g_variant_builder_close (&builder);
     }
 
-  g_variant_builder_add_value (&builder, g_desktop_app_info_make_platform_data (info, uris, launch_context));
+  platform_data = g_desktop_app_info_make_platform_data (info, uris, launch_context);
 
+  g_variant_builder_add_value (&builder, platform_data);
   object_path = object_path_from_appid (info->app_id);
+
+  data = g_new0 (LaunchUrisWithDBusData, 1);
+  data->info = g_object_ref (info);
+  data->callback = callback;
+  data->user_data = user_data;
+  data->launch_context = launch_context ? g_object_ref (launch_context) : NULL;
+  g_variant_dict_init (&dict, platform_data);
+  g_variant_dict_lookup (&dict, "desktop-startup-id", "s", &data->startup_id);
+
+  if (launch_context)
+    emit_launch_started (launch_context, info, data->startup_id);
+
   g_dbus_connection_call (session_bus, info->app_id, object_path, "org.freedesktop.Application",
                           uris ? "Open" : "Activate", g_variant_builder_end (&builder),
                           NULL, G_DBUS_CALL_FLAGS_NONE, -1,
-                          cancellable, callback, user_data);
+                          cancellable, launch_uris_with_dbus_signal_cb, g_steal_pointer (&data));
   g_free (object_path);
+
+  g_variant_dict_clear (&dict);
 }
 
 static gboolean
index 32bdae8..c6c68dd 100644 (file)
@@ -613,7 +613,7 @@ g_drive_poll_for_media_finish (GDrive        *drive,
  *
  * Gets the identifier of the given kind for @drive. The only
  * identifier currently available is
- * #G_DRIVE_IDENTIFIER_KIND_UNIX_DEVICE.
+ * %G_DRIVE_IDENTIFIER_KIND_UNIX_DEVICE.
  *
  * Returns: (nullable) (transfer full): a newly allocated string containing the
  *     requested identifier, or %NULL if the #GDrive
index 880d87d..1fd035c 100644 (file)
@@ -118,6 +118,19 @@ g_dtls_connection_default_init (GDtlsConnectionInterface *iface)
    * If no certificate database is set, then the default database will be
    * used. See g_tls_backend_get_default_database().
    *
+   * When using a non-default database, #GDtlsConnection must fall back to using
+   * the #GTlsDatabase to perform certificate verification using
+   * g_tls_database_verify_chain(), which means certificate verification will
+   * not be able to make use of TLS session context. This may be less secure.
+   * For example, if you create your own #GTlsDatabase that just wraps the
+   * default #GTlsDatabase, you might expect that you have not changed anything,
+   * but this is not true because you may have altered the behavior of
+   * #GDtlsConnection by causing it to use g_tls_database_verify_chain(). See the
+   * documentation of g_tls_database_verify_chain() for more details on specific
+   * security checks that may not be performed. Accordingly, setting a
+   * non-default database is discouraged except for specialty applications with
+   * unusual security requirements.
+   *
    * Since: 2.48
    */
   g_object_interface_install_property (iface,
@@ -223,6 +236,14 @@ g_dtls_connection_default_init (GDtlsConnectionInterface *iface)
    * #GDtlsConnection::accept-certificate overrode the default
    * behavior.
    *
+   * GLib guarantees that if certificate verification fails, at least
+   * one error will be set, but it does not guarantee that all possible
+   * errors will be set. Accordingly, you may not safely decide to
+   * ignore any particular type of error. For example, it would be
+   * incorrect to mask %G_TLS_CERTIFICATE_EXPIRED if you want to allow
+   * expired certificates, because this could potentially be the only
+   * error flag set even if other problems exist with the certificate.
+   *
    * Since: 2.48
    */
   g_object_interface_install_property (iface,
@@ -314,6 +335,15 @@ g_dtls_connection_default_init (GDtlsConnectionInterface *iface)
    * signal handler. Otherwise, if no handler accepts the certificate,
    * the handshake will fail with %G_TLS_ERROR_BAD_CERTIFICATE.
    *
+   * GLib guarantees that if certificate verification fails, this signal
+   * will be emitted with at least one error will be set in @errors, but
+   * it does not guarantee that all possible errors will be set.
+   * Accordingly, you may not safely decide to ignore any particular
+   * type of error. For example, it would be incorrect to ignore
+   * %G_TLS_CERTIFICATE_EXPIRED if you want to allow expired
+   * certificates, because this could potentially be the only error flag
+   * set even if other problems exist with the certificate.
+   *
    * For a server-side connection, @peer_cert is the certificate
    * presented by the client, if this was requested via the server's
    * #GDtlsServerConnection:authentication_mode. On the server side,
@@ -372,6 +402,9 @@ g_dtls_connection_default_init (GDtlsConnectionInterface *iface)
  * client-side connections, unless that bit is not set in
  * #GDtlsClientConnection:validation-flags).
  *
+ * There are nonintuitive security implications when using a non-default
+ * database. See #GDtlsConnection:database for details.
+ *
  * Since: 2.48
  */
 void
index d7feca6..1810e36 100644 (file)
@@ -247,6 +247,18 @@ static void               g_file_real_trash_async                 (GFile
 static gboolean           g_file_real_trash_finish                (GFile                  *file,
                                                                    GAsyncResult           *res,
                                                                    GError                **error);
+static void               g_file_real_move_async                  (GFile                  *source,
+                                                                   GFile                  *destination,
+                                                                   GFileCopyFlags          flags,
+                                                                   int                     io_priority,
+                                                                   GCancellable           *cancellable,
+                                                                   GFileProgressCallback   progress_callback,
+                                                                   gpointer                progress_callback_data,
+                                                                   GAsyncReadyCallback     callback,
+                                                                   gpointer                user_data);
+static gboolean           g_file_real_move_finish                 (GFile                  *file,
+                                                                   GAsyncResult           *result,
+                                                                   GError                **error);
 static void               g_file_real_make_directory_async        (GFile                  *file,
                                                                    int                     io_priority,
                                                                    GCancellable           *cancellable,
@@ -381,6 +393,8 @@ g_file_default_init (GFileIface *iface)
   iface->delete_file_finish = g_file_real_delete_finish;
   iface->trash_async = g_file_real_trash_async;
   iface->trash_finish = g_file_real_trash_finish;
+  iface->move_async = g_file_real_move_async;
+  iface->move_finish = g_file_real_move_finish;
   iface->make_directory_async = g_file_real_make_directory_async;
   iface->make_directory_finish = g_file_real_make_directory_finish;
   iface->open_readwrite_async = g_file_real_open_readwrite_async;
@@ -441,8 +455,8 @@ g_file_is_native (GFile *file)
  * This call does no blocking I/O.
  *
  * Returns: %TRUE if #GFile's backend supports the
- *     given URI scheme, %FALSE if URI scheme is %NULL,
- *     not supported, or #GFile is invalid.
+ *   given URI scheme, %FALSE if URI scheme is %NULL,
+ *   not supported, or #GFile is invalid.
  */
 gboolean
 g_file_has_uri_scheme (GFile      *file,
@@ -476,8 +490,8 @@ g_file_has_uri_scheme (GFile      *file,
  * This call does no blocking I/O.
  *
  * Returns: (nullable): a string containing the URI scheme for the given
- *     #GFile or %NULL if the #GFile was constructed with an invalid URI. The
- *     returned string should be freed with g_free() when no longer needed.
+ *   #GFile or %NULL if the #GFile was constructed with an invalid URI. The
+ *   returned string should be freed with g_free() when no longer needed.
  */
 char *
 g_file_get_uri_scheme (GFile *file)
@@ -511,8 +525,8 @@ g_file_get_uri_scheme (GFile *file)
  * This call does no blocking I/O.
  *
  * Returns: (type filename) (nullable): string containing the #GFile's
- *     base name, or %NULL if given #GFile is invalid. The returned string
- *     should be freed with g_free() when no longer needed.
+ *   base name, or %NULL if given #GFile is invalid. The returned string
+ *   should be freed with g_free() when no longer needed.
  */
 char *
 g_file_get_basename (GFile *file)
@@ -536,8 +550,8 @@ g_file_get_basename (GFile *file)
  * This call does no blocking I/O.
  *
  * Returns: (type filename) (nullable): string containing the #GFile's path,
- *     or %NULL if no such path exists. The returned string should be freed
- *     with g_free() when no longer needed.
+ *   or %NULL if no such path exists. The returned string should be freed
+ *   with g_free() when no longer needed.
  */
 char *
 g_file_get_path (GFile *file)
@@ -609,7 +623,7 @@ file_peek_path_generic (GFile *file)
  * This call does no blocking I/O.
  *
  * Returns: (type filename) (nullable): string containing the #GFile's path,
- *     or %NULL if no such path exists. The returned string is owned by @file.
+ *   or %NULL if no such path exists. The returned string is owned by @file.
  * Since: 2.56
  */
 const char *
@@ -629,9 +643,9 @@ g_file_peek_path (GFile *file)
  * This call does no blocking I/O.
  *
  * Returns: a string containing the #GFile's URI. If the #GFile was constructed
- *     with an invalid URI, an invalid URI is returned.
- *     The returned string should be freed with g_free()
- *     when no longer needed.
+ *   with an invalid URI, an invalid URI is returned.
+ *   The returned string should be freed with g_free()
+ *   when no longer needed.
  */
 char *
 g_file_get_uri (GFile *file)
@@ -665,8 +679,8 @@ g_file_get_uri (GFile *file)
  * This call does no blocking I/O.
  *
  * Returns: a string containing the #GFile's parse name.
- *     The returned string should be freed with g_free()
- *     when no longer needed.
+ *   The returned string should be freed with g_free()
+ *   when no longer needed.
  */
 char *
 g_file_get_parse_name (GFile *file)
@@ -696,7 +710,7 @@ g_file_get_parse_name (GFile *file)
  * This call does no blocking I/O.
  *
  * Returns: (transfer full): a new #GFile that is a duplicate
- *     of the given #GFile.
+ *   of the given #GFile.
  */
 GFile *
 g_file_dup (GFile *file)
@@ -720,9 +734,9 @@ g_file_dup (GFile *file)
  *
  * Virtual: hash
  * Returns: 0 if @file is not a valid #GFile, otherwise an
- *     integer that can be used as hash value for the #GFile.
- *     This function is intended for easily hashing a #GFile to
- *     add to a #GHashTable or similar data structure.
+ *   integer that can be used as hash value for the #GFile.
+ *   This function is intended for easily hashing a #GFile to
+ *   add to a #GHashTable or similar data structure.
  */
 guint
 g_file_hash (gconstpointer file)
@@ -783,8 +797,8 @@ g_file_equal (GFile *file1,
  * This call does no blocking I/O.
  *
  * Returns: (nullable) (transfer full): a #GFile structure to the
- *     parent of the given #GFile or %NULL if there is no parent. Free
- *     the returned object with g_object_unref().
+ *   parent of the given #GFile or %NULL if there is no parent. Free
+ *   the returned object with g_object_unref().
  */
 GFile *
 g_file_get_parent (GFile *file)
@@ -810,7 +824,7 @@ g_file_get_parent (GFile *file)
  * if @file is an immediate child of @parent.
  *
  * Returns: %TRUE if @file is an immediate child of @parent (or any parent in
- *          the case that @parent is %NULL).
+ *   the case that @parent is %NULL).
  *
  * Since: 2.24
  */
@@ -855,7 +869,7 @@ g_file_has_parent (GFile *file,
  * This call does no blocking I/O.
  *
  * Returns: (transfer full): a #GFile to a child specified by @name.
- *     Free the returned object with g_object_unref().
+ *   Free the returned object with g_object_unref().
  */
 GFile *
 g_file_get_child (GFile      *file,
@@ -863,6 +877,7 @@ g_file_get_child (GFile      *file,
 {
   g_return_val_if_fail (G_IS_FILE (file), NULL);
   g_return_val_if_fail (name != NULL, NULL);
+  g_return_val_if_fail (!g_path_is_absolute (name), NULL);
 
   return g_file_resolve_relative_path (file, name);
 }
@@ -883,8 +898,8 @@ g_file_get_child (GFile      *file,
  * This call does no blocking I/O.
  *
  * Returns: (transfer full): a #GFile to the specified child, or
- *     %NULL if the display name couldn't be converted.
- *     Free the returned object with g_object_unref().
+ *   %NULL if the display name couldn't be converted.
+ *   Free the returned object with g_object_unref().
  */
 GFile *
 g_file_get_child_for_display_name (GFile      *file,
@@ -923,7 +938,7 @@ g_file_get_child_for_display_name (GFile      *file,
  *
  * Virtual: prefix_matches
  * Returns:  %TRUE if the @file's parent, grandparent, etc is @prefix,
- *     %FALSE otherwise.
+ *   %FALSE otherwise.
  */
 gboolean
 g_file_has_prefix (GFile *file,
@@ -955,9 +970,9 @@ g_file_has_prefix (GFile *file,
  * This call does no blocking I/O.
  *
  * Returns: (type filename) (nullable): string with the relative path from
- *     @descendant to @parent, or %NULL if @descendant doesn't have @parent as
- *     prefix. The returned string should be freed with g_free() when
- *     no longer needed.
+ *   @descendant to @parent, or %NULL if @descendant doesn't have @parent as
+ *   prefix. The returned string should be freed with g_free() when
+ *   no longer needed.
  */
 char *
 g_file_get_relative_path (GFile *parent,
@@ -985,9 +1000,10 @@ g_file_get_relative_path (GFile *parent,
  *
  * This call does no blocking I/O.
  *
- * Returns: (transfer full): #GFile to the resolved path.
- *     %NULL if @relative_path is %NULL or if @file is invalid.
- *     Free the returned object with g_object_unref().
+ * If the @relative_path is an absolute path name, the resolution
+ * is done absolutely (without taking @file path as base).
+ *
+ * Returns: (transfer full): a #GFile for the resolved path.
  */
 GFile *
 g_file_resolve_relative_path (GFile      *file,
@@ -1009,7 +1025,7 @@ g_file_resolve_relative_path (GFile      *file,
  * @attributes: an attribute query string
  * @flags: a set of #GFileQueryInfoFlags
  * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
+ *   %NULL to ignore
  * @error: #GError for error reporting
  *
  * Gets the requested information about the files in a directory.
@@ -1025,7 +1041,9 @@ g_file_resolve_relative_path (GFile      *file,
  * "standard::*" means all attributes in the standard namespace.
  * An example attribute query be "standard::*,owner::user".
  * The standard attributes are available as defines, like
- * #G_FILE_ATTRIBUTE_STANDARD_NAME.
+ * %G_FILE_ATTRIBUTE_STANDARD_NAME. %G_FILE_ATTRIBUTE_STANDARD_NAME should
+ * always be specified if you plan to call g_file_enumerator_get_child() or
+ * g_file_enumerator_iterate() on the returned enumerator.
  *
  * If @cancellable is not %NULL, then the operation can be cancelled
  * by triggering the cancellable object from another thread. If the
@@ -1037,7 +1055,7 @@ g_file_resolve_relative_path (GFile      *file,
  * error will be returned. Other errors are possible too.
  *
  * Returns: (transfer full): A #GFileEnumerator if successful,
- *     %NULL on error. Free the returned object with g_object_unref().
+ *   %NULL on error. Free the returned object with g_object_unref().
  */
 GFileEnumerator *
 g_file_enumerate_children (GFile                *file,
@@ -1074,9 +1092,9 @@ g_file_enumerate_children (GFile                *file,
  * @flags: a set of #GFileQueryInfoFlags
  * @io_priority: the [I/O priority][io-priority] of the request
  * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
+ *   %NULL to ignore
  * @callback: (scope async): a #GAsyncReadyCallback to call when the
- *     request is satisfied
+ *   request is satisfied
  * @user_data: (closure): the data to pass to callback function
  *
  * Asynchronously gets the requested information about the files
@@ -1123,8 +1141,8 @@ g_file_enumerate_children_async (GFile               *file,
  * See g_file_enumerate_children_async().
  *
  * Returns: (transfer full): a #GFileEnumerator or %NULL
- *     if an error occurred.
- *     Free the returned object with g_object_unref().
+ *   if an error occurred.
+ *   Free the returned object with g_object_unref().
  */
 GFileEnumerator *
 g_file_enumerate_children_finish (GFile         *file,
@@ -1147,7 +1165,7 @@ g_file_enumerate_children_finish (GFile         *file,
  * g_file_query_exists:
  * @file: input #GFile
  * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
+ *   %NULL to ignore
  *
  * Utility function to check if a particular file exists. This is
  * implemented using g_file_query_info() and as such does blocking I/O.
@@ -1173,7 +1191,7 @@ g_file_enumerate_children_finish (GFile         *file,
  * that can happen due to races when you execute the operation.
  *
  * Returns: %TRUE if the file exists (and can be detected without error),
- *     %FALSE otherwise (or if cancelled).
+ *   %FALSE otherwise (or if cancelled).
  */
 gboolean
 g_file_query_exists (GFile        *file,
@@ -1199,7 +1217,7 @@ g_file_query_exists (GFile        *file,
  * @file: input #GFile
  * @flags: a set of #GFileQueryInfoFlags passed to g_file_query_info()
  * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
+ *   %NULL to ignore
  *
  * Utility function to inspect the #GFileType of a file. This is
  * implemented using g_file_query_info() and as such does blocking I/O.
@@ -1207,8 +1225,8 @@ g_file_query_exists (GFile        *file,
  * The primary use case of this method is to check if a file is
  * a regular file, directory, or symlink.
  *
- * Returns: The #GFileType of the file and #G_FILE_TYPE_UNKNOWN
- *     if the file does not exist
+ * Returns: The #GFileType of the file and %G_FILE_TYPE_UNKNOWN
+ *   if the file does not exist
  *
  * Since: 2.18
  */
@@ -1240,7 +1258,7 @@ g_file_query_file_type (GFile               *file,
  * @attributes: an attribute query string
  * @flags: a set of #GFileQueryInfoFlags
  * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
+ *   %NULL to ignore
  * @error: a #GError
  *
  * Gets the requested information about specified @file.
@@ -1256,7 +1274,7 @@ g_file_query_file_type (GFile               *file,
  * "standard::*" means all attributes in the standard namespace.
  * An example attribute query be "standard::*,owner::user".
  * The standard attributes are available as defines, like
- * #G_FILE_ATTRIBUTE_STANDARD_NAME.
+ * %G_FILE_ATTRIBUTE_STANDARD_NAME.
  *
  * If @cancellable is not %NULL, then the operation can be cancelled
  * by triggering the cancellable object from another thread. If the
@@ -1265,7 +1283,7 @@ g_file_query_file_type (GFile               *file,
  *
  * For symlinks, normally the information about the target of the
  * symlink is returned, rather than information about the symlink
- * itself. However if you pass #G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS
+ * itself. However if you pass %G_FILE_QUERY_INFO_NOFOLLOW_SYMLINKS
  * in @flags the information about the symlink itself will be returned.
  * Also, for symlinks that point to non-existing files the information
  * about the symlink itself will be returned.
@@ -1275,7 +1293,7 @@ g_file_query_file_type (GFile               *file,
  * filesystem the file is on.
  *
  * Returns: (transfer full): a #GFileInfo for the given @file, or %NULL
- *     on error. Free the returned object with g_object_unref().
+ *   on error. Free the returned object with g_object_unref().
  */
 GFileInfo *
 g_file_query_info (GFile                *file,
@@ -1311,9 +1329,9 @@ g_file_query_info (GFile                *file,
  * @flags: a set of #GFileQueryInfoFlags
  * @io_priority: the [I/O priority][io-priority] of the request
  * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
+ *   %NULL to ignore
  * @callback: (scope async): a #GAsyncReadyCallback to call when the
- *     request is satisfied
+ *   request is satisfied
  * @user_data: (closure): the data to pass to callback function
  *
  * Asynchronously gets the requested information about specified @file.
@@ -1359,8 +1377,8 @@ g_file_query_info_async (GFile               *file,
  * See g_file_query_info_async().
  *
  * Returns: (transfer full): #GFileInfo for given @file
- *     or %NULL on error. Free the returned object with
- *     g_object_unref().
+ *   or %NULL on error. Free the returned object with
+ *   g_object_unref().
  */
 GFileInfo *
 g_file_query_info_finish (GFile         *file,
@@ -1384,7 +1402,7 @@ g_file_query_info_finish (GFile         *file,
  * @file: input #GFile
  * @attributes:  an attribute query string
  * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
+ *   %NULL to ignore
  * @error: a #GError
  *
  * Similar to g_file_query_info(), but obtains information
@@ -1400,9 +1418,9 @@ g_file_query_info_finish (GFile         *file,
  * attributes, and a wildcard like "filesystem::*" means all attributes
  * in the filesystem namespace. The standard namespace for filesystem
  * attributes is "filesystem". Common attributes of interest are
- * #G_FILE_ATTRIBUTE_FILESYSTEM_SIZE (the total size of the filesystem
- * in bytes), #G_FILE_ATTRIBUTE_FILESYSTEM_FREE (number of bytes available),
- * and #G_FILE_ATTRIBUTE_FILESYSTEM_TYPE (type of the filesystem).
+ * %G_FILE_ATTRIBUTE_FILESYSTEM_SIZE (the total size of the filesystem
+ * in bytes), %G_FILE_ATTRIBUTE_FILESYSTEM_FREE (number of bytes available),
+ * and %G_FILE_ATTRIBUTE_FILESYSTEM_TYPE (type of the filesystem).
  *
  * If @cancellable is not %NULL, then the operation can be cancelled
  * by triggering the cancellable object from another thread. If the
@@ -1414,7 +1432,7 @@ g_file_query_info_finish (GFile         *file,
  * kind of filesystem the file is on.
  *
  * Returns: (transfer full): a #GFileInfo or %NULL if there was an error.
- *     Free the returned object with g_object_unref().
+ *   Free the returned object with g_object_unref().
  */
 GFileInfo *
 g_file_query_filesystem_info (GFile         *file,
@@ -1448,9 +1466,9 @@ g_file_query_filesystem_info (GFile         *file,
  * @attributes: an attribute query string
  * @io_priority: the [I/O priority][io-priority] of the request
  * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
+ *   %NULL to ignore
  * @callback: (scope async): a #GAsyncReadyCallback to call
- *     when the request is satisfied
+ *   when the request is satisfied
  * @user_data: (closure): the data to pass to callback function
  *
  * Asynchronously gets the requested information about the filesystem
@@ -1496,8 +1514,8 @@ g_file_query_filesystem_info_async (GFile               *file,
  * See g_file_query_filesystem_info_async().
  *
  * Returns: (transfer full): #GFileInfo for given @file
- *     or %NULL on error.
- *     Free the returned object with g_object_unref().
+ *   or %NULL on error.
+ *   Free the returned object with g_object_unref().
  */
 GFileInfo *
 g_file_query_filesystem_info_finish (GFile         *file,
@@ -1520,7 +1538,7 @@ g_file_query_filesystem_info_finish (GFile         *file,
  * g_file_find_enclosing_mount:
  * @file: input #GFile
  * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
+ *   %NULL to ignore
  * @error: a #GError
  *
  * Gets a #GMount for the #GFile.
@@ -1534,8 +1552,8 @@ g_file_query_filesystem_info_finish (GFile         *file,
  * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
  *
  * Returns: (transfer full): a #GMount where the @file is located
- *     or %NULL on error.
- *     Free the returned object with g_object_unref().
+ *   or %NULL on error.
+ *   Free the returned object with g_object_unref().
  */
 GMount *
 g_file_find_enclosing_mount (GFile         *file,
@@ -1570,9 +1588,9 @@ g_file_find_enclosing_mount (GFile         *file,
  * @file: a #GFile
  * @io_priority: the [I/O priority][io-priority] of the request
  * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
+ *   %NULL to ignore
  * @callback: (scope async): a #GAsyncReadyCallback to call
- *     when the request is satisfied
+ *   when the request is satisfied
  * @user_data: (closure): the data to pass to callback function
  *
  * Asynchronously gets the mount for the file.
@@ -1613,7 +1631,7 @@ g_file_find_enclosing_mount_async (GFile              *file,
  * See g_file_find_enclosing_mount_async().
  *
  * Returns: (transfer full): #GMount for given @file or %NULL on error.
- *     Free the returned object with g_object_unref().
+ *   Free the returned object with g_object_unref().
  */
 GMount *
 g_file_find_enclosing_mount_finish (GFile         *file,
@@ -1653,7 +1671,7 @@ g_file_find_enclosing_mount_finish (GFile         *file,
  *
  * Virtual: read_fn
  * Returns: (transfer full): #GFileInputStream or %NULL on error.
- *     Free the returned object with g_object_unref().
+ *   Free the returned object with g_object_unref().
  */
 GFileInputStream *
 g_file_read (GFile         *file,
@@ -1685,14 +1703,14 @@ g_file_read (GFile         *file,
  * @file: input #GFile
  * @flags: a set of #GFileCreateFlags
  * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
+ *   %NULL to ignore
  * @error: a #GError, or %NULL
  *
  * Gets an output stream for appending data to the file.
  * If the file doesn't already exist it is created.
  *
  * By default files created are generally readable by everyone,
- * but if you pass #G_FILE_CREATE_PRIVATE in @flags the file
+ * but if you pass %G_FILE_CREATE_PRIVATE in @flags the file
  * will be made readable only to the current user, to the level that
  * is supported on the target filesystem.
  *
@@ -1707,7 +1725,7 @@ g_file_read (GFile         *file,
  * possible too, and depend on what kind of filesystem the file is on.
  *
  * Returns: (transfer full): a #GFileOutputStream, or %NULL on error.
- *     Free the returned object with g_object_unref().
+ *   Free the returned object with g_object_unref().
  */
 GFileOutputStream *
 g_file_append_to (GFile             *file,
@@ -1740,14 +1758,14 @@ g_file_append_to (GFile             *file,
  * @file: input #GFile
  * @flags: a set of #GFileCreateFlags
  * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
+ *   %NULL to ignore
  * @error: a #GError, or %NULL
  *
  * Creates a new file and returns an output stream for writing to it.
  * The file must not already exist.
  *
  * By default files created are generally readable by everyone,
- * but if you pass #G_FILE_CREATE_PRIVATE in @flags the file
+ * but if you pass %G_FILE_CREATE_PRIVATE in @flags the file
  * will be made readable only to the current user, to the level
  * that is supported on the target filesystem.
  *
@@ -1764,8 +1782,8 @@ g_file_append_to (GFile             *file,
  * of filesystem the file is on.
  *
  * Returns: (transfer full): a #GFileOutputStream for the newly created
- *     file, or %NULL on error.
- *     Free the returned object with g_object_unref().
+ *   file, or %NULL on error.
+ *   Free the returned object with g_object_unref().
  */
 GFileOutputStream *
 g_file_create (GFile             *file,
@@ -1797,11 +1815,11 @@ g_file_create (GFile             *file,
  * g_file_replace:
  * @file: input #GFile
  * @etag: (nullable): an optional [entity tag][gfile-etag]
- *     for the current #GFile, or #NULL to ignore
+ *   for the current #GFile, or #NULL to ignore
  * @make_backup: %TRUE if a backup should be created
  * @flags: a set of #GFileCreateFlags
  * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
+ *   %NULL to ignore
  * @error: a #GError, or %NULL
  *
  * Returns an output stream for overwriting the file, possibly
@@ -1815,7 +1833,7 @@ g_file_create (GFile             *file,
  * the destination when the stream is closed.
  *
  * By default files created are generally readable by everyone,
- * but if you pass #G_FILE_CREATE_PRIVATE in @flags the file
+ * but if you pass %G_FILE_CREATE_PRIVATE in @flags the file
  * will be made readable only to the current user, to the level that
  * is supported on the target filesystem.
  *
@@ -1847,7 +1865,7 @@ g_file_create (GFile             *file,
  * possible too, and depend on what kind of filesystem the file is on.
  *
  * Returns: (transfer full): a #GFileOutputStream or %NULL on error.
- *     Free the returned object with g_object_unref().
+ *   Free the returned object with g_object_unref().
  */
 GFileOutputStream *
 g_file_replace (GFile             *file,
@@ -1905,7 +1923,7 @@ g_file_replace (GFile             *file,
  * for reading or writing.
  *
  * Returns: (transfer full): #GFileIOStream or %NULL on error.
- *     Free the returned object with g_object_unref().
+ *   Free the returned object with g_object_unref().
  *
  * Since: 2.22
  */
@@ -1939,14 +1957,14 @@ g_file_open_readwrite (GFile         *file,
  * @file: a #GFile
  * @flags: a set of #GFileCreateFlags
  * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
+ *   %NULL to ignore
  * @error: return location for a #GError, or %NULL
  *
  * Creates a new file and returns a stream for reading and
  * writing to it. The file must not already exist.
  *
  * By default files created are generally readable by everyone,
- * but if you pass #G_FILE_CREATE_PRIVATE in @flags the file
+ * but if you pass %G_FILE_CREATE_PRIVATE in @flags the file
  * will be made readable only to the current user, to the level
  * that is supported on the target filesystem.
  *
@@ -1967,8 +1985,8 @@ g_file_open_readwrite (GFile         *file,
  * streaming, rather than just opening for reading or writing.
  *
  * Returns: (transfer full): a #GFileIOStream for the newly created
- *     file, or %NULL on error.
- *     Free the returned object with g_object_unref().
+ *   file, or %NULL on error.
+ *   Free the returned object with g_object_unref().
  *
  * Since: 2.22
  */
@@ -2002,11 +2020,11 @@ g_file_create_readwrite (GFile             *file,
  * g_file_replace_readwrite:
  * @file: a #GFile
  * @etag: (nullable): an optional [entity tag][gfile-etag]
- *     for the current #GFile, or #NULL to ignore
+ *   for the current #GFile, or #NULL to ignore
  * @make_backup: %TRUE if a backup should be created
  * @flags: a set of #GFileCreateFlags
  * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
+ *   %NULL to ignore
  * @error: return location for a #GError, or %NULL
  *
  * Returns an output stream for overwriting the file in readwrite mode,
@@ -2021,7 +2039,7 @@ g_file_create_readwrite (GFile             *file,
  * rather than just opening for reading or writing.
  *
  * Returns: (transfer full): a #GFileIOStream or %NULL on error.
- *     Free the returned object with g_object_unref().
+ *   Free the returned object with g_object_unref().
  *
  * Since: 2.22
  */
@@ -2058,9 +2076,9 @@ g_file_replace_readwrite (GFile             *file,
  * @file: input #GFile
  * @io_priority: the [I/O priority][io-priority] of the request
  * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
+ *   %NULL to ignore
  * @callback: (scope async): a #GAsyncReadyCallback to call
- *     when the request is satisfied
+ *   when the request is satisfied
  * @user_data: (closure): the data to pass to callback function
  *
  * Asynchronously opens @file for reading.
@@ -2101,7 +2119,7 @@ g_file_read_async (GFile               *file,
  * g_file_read_async().
  *
  * Returns: (transfer full): a #GFileInputStream or %NULL on error.
- *     Free the returned object with g_object_unref().
+ *   Free the returned object with g_object_unref().
  */
 GFileInputStream *
 g_file_read_finish (GFile         *file,
@@ -2126,9 +2144,9 @@ g_file_read_finish (GFile         *file,
  * @flags: a set of #GFileCreateFlags
  * @io_priority: the [I/O priority][io-priority] of the request
  * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
+ *   %NULL to ignore
  * @callback: (scope async): a #GAsyncReadyCallback to call
- *     when the request is satisfied
+ *   when the request is satisfied
  * @user_data: (closure): the data to pass to callback function
  *
  * Asynchronously opens @file for appending.
@@ -2171,8 +2189,8 @@ g_file_append_to_async (GFile               *file,
  * g_file_append_to_async().
  *
  * Returns: (transfer full): a valid #GFileOutputStream
- *     or %NULL on error.
- *     Free the returned object with g_object_unref().
+ *   or %NULL on error.
+ *   Free the returned object with g_object_unref().
  */
 GFileOutputStream *
 g_file_append_to_finish (GFile         *file,
@@ -2197,9 +2215,9 @@ g_file_append_to_finish (GFile         *file,
  * @flags: a set of #GFileCreateFlags
  * @io_priority: the [I/O priority][io-priority] of the request
  * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
+ *   %NULL to ignore
  * @callback: (scope async): a #GAsyncReadyCallback to call
- *     when the request is satisfied
+ *   when the request is satisfied
  * @user_data: (closure): the data to pass to callback function
  *
  * Asynchronously creates a new file and returns an output stream
@@ -2243,7 +2261,7 @@ g_file_create_async (GFile               *file,
  * g_file_create_async().
  *
  * Returns: (transfer full): a #GFileOutputStream or %NULL on error.
- *     Free the returned object with g_object_unref().
+ *   Free the returned object with g_object_unref().
  */
 GFileOutputStream *
 g_file_create_finish (GFile         *file,
@@ -2266,14 +2284,14 @@ g_file_create_finish (GFile         *file,
  * g_file_replace_async:
  * @file: input #GFile
  * @etag: (nullable): an [entity tag][gfile-etag] for the current #GFile,
- *     or %NULL to ignore
+ *   or %NULL to ignore
  * @make_backup: %TRUE if a backup should be created
  * @flags: a set of #GFileCreateFlags
  * @io_priority: the [I/O priority][io-priority] of the request
  * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
+ *   %NULL to ignore
  * @callback: (scope async): a #GAsyncReadyCallback to call
- *     when the request is satisfied
+ *   when the request is satisfied
  * @user_data: (closure): the data to pass to callback function
  *
  * Asynchronously overwrites the file, replacing the contents,
@@ -2321,7 +2339,7 @@ g_file_replace_async (GFile               *file,
  * g_file_replace_async().
  *
  * Returns: (transfer full): a #GFileOutputStream, or %NULL on error.
- *     Free the returned object with g_object_unref().
+ *   Free the returned object with g_object_unref().
  */
 GFileOutputStream *
 g_file_replace_finish (GFile         *file,
@@ -2345,9 +2363,9 @@ g_file_replace_finish (GFile         *file,
  * @file: input #GFile
  * @io_priority: the [I/O priority][io-priority] of the request
  * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
+ *   %NULL to ignore
  * @callback: (scope async): a #GAsyncReadyCallback to call
- *     when the request is satisfied
+ *   when the request is satisfied
  * @user_data: (closure): the data to pass to callback function
  *
  * Asynchronously opens @file for reading and writing.
@@ -2390,7 +2408,7 @@ g_file_open_readwrite_async (GFile               *file,
  * g_file_open_readwrite_async().
  *
  * Returns: (transfer full): a #GFileIOStream or %NULL on error.
- *     Free the returned object with g_object_unref().
+ *   Free the returned object with g_object_unref().
  *
  * Since: 2.22
  */
@@ -2417,9 +2435,9 @@ g_file_open_readwrite_finish (GFile         *file,
  * @flags: a set of #GFileCreateFlags
  * @io_priority: the [I/O priority][io-priority] of the request
  * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
+ *   %NULL to ignore
  * @callback: (scope async): a #GAsyncReadyCallback to call
- *     when the request is satisfied
+ *   when the request is satisfied
  * @user_data: (closure): the data to pass to callback function
  *
  * Asynchronously creates a new file and returns a stream
@@ -2465,7 +2483,7 @@ g_file_create_readwrite_async (GFile               *file,
  * g_file_create_readwrite_async().
  *
  * Returns: (transfer full): a #GFileIOStream or %NULL on error.
- *     Free the returned object with g_object_unref().
+ *   Free the returned object with g_object_unref().
  *
  * Since: 2.22
  */
@@ -2490,14 +2508,14 @@ g_file_create_readwrite_finish (GFile         *file,
  * g_file_replace_readwrite_async:
  * @file: input #GFile
  * @etag: (nullable): an [entity tag][gfile-etag] for the current #GFile,
- *     or %NULL to ignore
+ *   or %NULL to ignore
  * @make_backup: %TRUE if a backup should be created
  * @flags: a set of #GFileCreateFlags
  * @io_priority: the [I/O priority][io-priority] of the request
  * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
+ *   %NULL to ignore
  * @callback: (scope async): a #GAsyncReadyCallback to call
- *     when the request is satisfied
+ *   when the request is satisfied
  * @user_data: (closure): the data to pass to callback function
  *
  * Asynchronously overwrites the file in read-write mode,
@@ -2548,7 +2566,7 @@ g_file_replace_readwrite_async (GFile               *file,
  * g_file_replace_readwrite_async().
  *
  * Returns: (transfer full): a #GFileIOStream, or %NULL on error.
- *     Free the returned object with g_object_unref().
+ *   Free the returned object with g_object_unref().
  *
  * Since: 2.22
  */
@@ -2718,7 +2736,7 @@ should_copy (GFileAttributeInfo *info,
  * @file: a #GFile to copy attributes to
  * @flags: a set of #GFileCopyFlags
  * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
+ *   %NULL to ignore
  * @error: a #GError, %NULL to ignore
  *
  * Prepares the file attribute query string for copying to @file.
@@ -2732,7 +2750,7 @@ should_copy (GFileAttributeInfo *info,
  * stages (e.g., for recursive move of a directory).
  *
  * Returns: an attribute query string for g_file_query_info(),
- *     or %NULL if an error occurs.
+ *   or %NULL if an error occurs.
  *
  * Since: 2.68
  */
@@ -2826,7 +2844,7 @@ g_file_build_attribute_list_for_copy (GFile                  *file,
  * @destination: a #GFile to copy attributes to
  * @flags: a set of #GFileCopyFlags
  * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
+ *   %NULL to ignore
  * @error: a #GError, %NULL to ignore
  *
  * Copies the file attributes from @source to @destination.
@@ -2834,12 +2852,12 @@ g_file_build_attribute_list_for_copy (GFile                  *file,
  * Normally only a subset of the file attributes are copied,
  * those that are copies in a normal file copy operation
  * (which for instance does not include e.g. owner). However
- * if #G_FILE_COPY_ALL_METADATA is specified in @flags, then
+ * if %G_FILE_COPY_ALL_METADATA is specified in @flags, then
  * all the metadata that is possible to copy is copied. This
  * is useful when implementing move by copy + delete source.
  *
  * Returns: %TRUE if the attributes were copied successfully,
- *     %FALSE otherwise.
+ *   %FALSE otherwise.
  */
 gboolean
 g_file_copy_attributes (GFile           *source,
@@ -3428,23 +3446,23 @@ file_copy_fallback (GFile                  *source,
  * @destination: destination #GFile
  * @flags: set of #GFileCopyFlags
  * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
+ *   %NULL to ignore
  * @progress_callback: (nullable) (scope call): function to callback with
- *     progress information, or %NULL if progress information is not needed
+ *   progress information, or %NULL if progress information is not needed
  * @progress_callback_data: (closure): user data to pass to @progress_callback
  * @error: #GError to set on error, or %NULL
  *
  * Copies the file @source to the location specified by @destination.
  * Can not handle recursive copies of directories.
  *
- * If the flag #G_FILE_COPY_OVERWRITE is specified an already
+ * If the flag %G_FILE_COPY_OVERWRITE is specified an already
  * existing @destination file is overwritten.
  *
- * If the flag #G_FILE_COPY_NOFOLLOW_SYMLINKS is specified then symlinks
+ * If the flag %G_FILE_COPY_NOFOLLOW_SYMLINKS is specified then symlinks
  * will be copied as symlinks, otherwise the target of the
  * @source symlink will be copied.
  *
- * If the flag #G_FILE_COPY_ALL_METADATA is specified then all the metadata
+ * If the flag %G_FILE_COPY_ALL_METADATA is specified then all the metadata
  * that is possible to copy is copied, not just the default subset (which,
  * for instance, does not include the owner, see #GFileInfo).
  *
@@ -3461,7 +3479,7 @@ file_copy_fallback (GFile                  *source,
  * If the @source file does not exist, then the %G_IO_ERROR_NOT_FOUND error
  * is returned, independent on the status of the @destination.
  *
- * If #G_FILE_COPY_OVERWRITE is not specified and the target exists, then
+ * If %G_FILE_COPY_OVERWRITE is not specified and the target exists, then
  * the error %G_IO_ERROR_EXISTS is returned.
  *
  * If trying to overwrite a file over a directory, the %G_IO_ERROR_IS_DIRECTORY
@@ -3469,7 +3487,7 @@ file_copy_fallback (GFile                  *source,
  * %G_IO_ERROR_WOULD_MERGE error is returned.
  *
  * If the source is a directory and the target does not exist, or
- * #G_FILE_COPY_OVERWRITE is specified and the target is a file, then the
+ * %G_FILE_COPY_OVERWRITE is specified and the target is a file, then the
  * %G_IO_ERROR_WOULD_RECURSE error is returned.
  *
  * If you are interested in copying the #GFile object itself (not the on-disk
@@ -3557,9 +3575,9 @@ g_file_copy (GFile                  *source,
  * @flags: set of #GFileCopyFlags
  * @io_priority: the [I/O priority][io-priority] of the request
  * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
+ *   %NULL to ignore
  * @progress_callback: (nullable) (scope notified): function to callback with progress
- *     information, or %NULL if progress information is not needed
+ *   information, or %NULL if progress information is not needed
  * @progress_callback_data: (closure progress_callback) (nullable): user data to pass to @progress_callback
  * @callback: (scope async): a #GAsyncReadyCallback to call when the request is satisfied
  * @user_data: (closure callback): the data to pass to callback function
@@ -3636,11 +3654,11 @@ g_file_copy_finish (GFile         *file,
  * @destination: #GFile pointing to the destination location
  * @flags: set of #GFileCopyFlags
  * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
+ *   %NULL to ignore
  * @progress_callback: (nullable) (scope call): #GFileProgressCallback
- *     function for updates
+ *   function for updates
  * @progress_callback_data: (closure): gpointer to user data for
- *     the callback function
+ *   the callback function
  * @error: #GError for returning error conditions, or %NULL
  *
  * Tries to move the file or directory @source to the location specified
@@ -3649,7 +3667,7 @@ g_file_copy_finish (GFile         *file,
  * implementation may support moving directories (for instance on moves
  * inside the same filesystem), but the fallback code does not.
  *
- * If the flag #G_FILE_COPY_OVERWRITE is specified an already
+ * If the flag %G_FILE_COPY_OVERWRITE is specified an already
  * existing @destination file is overwritten.
  *
  * If @cancellable is not %NULL, then the operation can be cancelled by
@@ -3665,7 +3683,7 @@ g_file_copy_finish (GFile         *file,
  * If the @source file does not exist, then the %G_IO_ERROR_NOT_FOUND
  * error is returned, independent on the status of the @destination.
  *
- * If #G_FILE_COPY_OVERWRITE is not specified and the target exists,
+ * If %G_FILE_COPY_OVERWRITE is not specified and the target exists,
  * then the error %G_IO_ERROR_EXISTS is returned.
  *
  * If trying to overwrite a file over a directory, the %G_IO_ERROR_IS_DIRECTORY
@@ -3673,7 +3691,7 @@ g_file_copy_finish (GFile         *file,
  * %G_IO_ERROR_WOULD_MERGE error is returned.
  *
  * If the source is a directory and the target does not exist, or
- * #G_FILE_COPY_OVERWRITE is specified and the target is a file, then
+ * %G_FILE_COPY_OVERWRITE is specified and the target is a file, then
  * the %G_IO_ERROR_WOULD_RECURSE error may be returned (if the native
  * move operation isn't available).
  *
@@ -3765,10 +3783,95 @@ g_file_move (GFile                  *source,
 }
 
 /**
+ * g_file_move_async:
+ * @source: #GFile pointing to the source location
+ * @destination: #GFile pointing to the destination location
+ * @flags: set of #GFileCopyFlags
+ * @io_priority: the [I/O priority][io-priority] of the request
+ * @cancellable: (nullable): optional #GCancellable object,
+ *   %NULL to ignore
+ * @progress_callback: (nullable) (scope call): #GFileProgressCallback
+ *   function for updates
+ * @progress_callback_data: (closure): gpointer to user data for
+ *   the callback function
+ * @callback: a #GAsyncReadyCallback to call
+ *   when the request is satisfied
+ * @user_data: the data to pass to callback function
+ *
+ * Asynchronously moves a file @source to the location of @destination. For details of the behaviour, see g_file_move().
+ *
+ * If @progress_callback is not %NULL, then that function that will be called
+ * just like in g_file_move(). The callback will run in the default main context
+ * of the thread calling g_file_move_async() — the same context as @callback is
+ * run in.
+ *
+ * When the operation is finished, @callback will be called. You can then call
+ * g_file_move_finish() to get the result of the operation.
+ *
+ * Since: 2.72
+ */
+void
+g_file_move_async (GFile                *source,
+                   GFile                *destination,
+                   GFileCopyFlags        flags,
+                   int                   io_priority,
+                   GCancellable         *cancellable,
+                   GFileProgressCallback progress_callback,
+                   gpointer              progress_callback_data,
+                   GAsyncReadyCallback   callback,
+                   gpointer              user_data)
+{
+  GFileIface *iface;
+
+  g_return_if_fail (G_IS_FILE (source));
+  g_return_if_fail (G_IS_FILE (destination));
+  g_return_if_fail (cancellable == NULL || G_IS_CANCELLABLE (cancellable));
+
+  iface = G_FILE_GET_IFACE (source);
+  (* iface->move_async) (source,
+                         destination,
+                         flags,
+                         io_priority,
+                         cancellable,
+                         progress_callback,
+                         progress_callback_data,
+                         callback,
+                         user_data);
+}
+
+/**
+ * g_file_move_finish:
+ * @file: input source #GFile
+ * @result: a #GAsyncResult
+ * @error: a #GError, or %NULL
+ *
+ * Finishes an asynchronous file movement, started with
+ * g_file_move_async().
+ *
+ * Returns: %TRUE on successful file move, %FALSE otherwise.
+ *
+ * Since: 2.72
+ */
+gboolean
+g_file_move_finish (GFile         *file,
+                    GAsyncResult  *result,
+                    GError       **error)
+{
+  GFileIface *iface;
+
+  g_return_val_if_fail (G_IS_FILE (file), FALSE);
+  g_return_val_if_fail (G_IS_ASYNC_RESULT (result), FALSE);
+  g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
+
+  iface = G_FILE_GET_IFACE (file);
+  return (* iface->move_finish) (file, result, error);
+}
+
+/**
  * g_file_make_directory:
  * @file: input #GFile
  * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
+ *   %NULL to ignore
  * @error: a #GError, or %NULL
  *
  * Creates a directory. Note that this will only create a child directory
@@ -3818,9 +3921,9 @@ g_file_make_directory (GFile         *file,
  * @file: input #GFile
  * @io_priority: the [I/O priority][io-priority] of the request
  * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
+ *   %NULL to ignore
  * @callback: a #GAsyncReadyCallback to call
- *     when the request is satisfied
+ *   when the request is satisfied
  * @user_data: the data to pass to callback function
  *
  * Asynchronously creates a directory.
@@ -3878,7 +3981,7 @@ g_file_make_directory_finish (GFile         *file,
  * g_file_make_directory_with_parents:
  * @file: input #GFile
  * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
+ *   %NULL to ignore
  * @error: a #GError, or %NULL
  *
  * Creates a directory and any parent directories that may not
@@ -4000,9 +4103,9 @@ g_file_make_directory_with_parents (GFile         *file,
  * g_file_make_symbolic_link:
  * @file: a #GFile with the name of the symlink to create
  * @symlink_value: (type filename): a string with the path for the target
- *     of the new symlink
+ *   of the new symlink
  * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
+ *   %NULL to ignore
  * @error: a #GError
  *
  * Creates a symbolic link named @file which contains the string
@@ -4053,7 +4156,7 @@ g_file_make_symbolic_link (GFile         *file,
  * g_file_delete:
  * @file: input #GFile
  * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
+ *   %NULL to ignore
  * @error: a #GError, or %NULL
  *
  * Deletes a file. If the @file is a directory, it will only be
@@ -4111,9 +4214,9 @@ g_file_delete (GFile         *file,
  * @file: input #GFile
  * @io_priority: the [I/O priority][io-priority] of the request
  * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
+ *   %NULL to ignore
  * @callback: a #GAsyncReadyCallback to call
- *     when the request is satisfied
+ *   when the request is satisfied
  * @user_data: the data to pass to callback function
  *
  * Asynchronously delete a file. If the @file is a directory, it will
@@ -4175,7 +4278,7 @@ g_file_delete_finish (GFile         *file,
  * g_file_trash:
  * @file: #GFile to send to trash
  * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
+ *   %NULL to ignore
  * @error: a #GError, or %NULL
  *
  * Sends @file to the "Trashcan", if possible. This is similar to
@@ -4222,9 +4325,9 @@ g_file_trash (GFile         *file,
  * @file: input #GFile
  * @io_priority: the [I/O priority][io-priority] of the request
  * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
+ *   %NULL to ignore
  * @callback: a #GAsyncReadyCallback to call
- *     when the request is satisfied
+ *   when the request is satisfied
  * @user_data: the data to pass to callback function
  *
  * Asynchronously sends @file to the Trash location, if possible.
@@ -4283,7 +4386,7 @@ g_file_trash_finish (GFile         *file,
  * @file: input #GFile
  * @display_name: a string
  * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
+ *   %NULL to ignore
  * @error: a #GError, or %NULL
  *
  * Renames @file to the specified display name.
@@ -4292,7 +4395,7 @@ g_file_trash_finish (GFile         *file,
  * for the target filesystem if possible and the @file is renamed to this.
  *
  * If you want to implement a rename operation in the user interface the
- * edit name (#G_FILE_ATTRIBUTE_STANDARD_EDIT_NAME) should be used as the
+ * edit name (%G_FILE_ATTRIBUTE_STANDARD_EDIT_NAME) should be used as the
  * initial value in the rename widget, and then the result after editing
  * should be passed to g_file_set_display_name().
  *
@@ -4303,8 +4406,8 @@ g_file_trash_finish (GFile         *file,
  * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
  *
  * Returns: (transfer full): a #GFile specifying what @file was renamed to,
- *     or %NULL if there was an error.
- *     Free the returned object with g_object_unref().
+ *   or %NULL if there was an error.
+ *   Free the returned object with g_object_unref().
  */
 GFile *
 g_file_set_display_name (GFile         *file,
@@ -4340,9 +4443,9 @@ g_file_set_display_name (GFile         *file,
  * @display_name: a string
  * @io_priority: the [I/O priority][io-priority] of the request
  * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
+ *   %NULL to ignore
  * @callback: (scope async): a #GAsyncReadyCallback to call
- *     when the request is satisfied
+ *   when the request is satisfied
  * @user_data: (closure): the data to pass to callback function
  *
  * Asynchronously sets the display name for a given #GFile.
@@ -4386,7 +4489,7 @@ g_file_set_display_name_async (GFile               *file,
  * g_file_set_display_name_async().
  *
  * Returns: (transfer full): a #GFile or %NULL on error.
- *     Free the returned object with g_object_unref().
+ *   Free the returned object with g_object_unref().
  */
 GFile *
 g_file_set_display_name_finish (GFile         *file,
@@ -4409,7 +4512,7 @@ g_file_set_display_name_finish (GFile         *file,
  * g_file_query_settable_attributes:
  * @file: input #GFile
  * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
+ *   %NULL to ignore
  * @error: a #GError, or %NULL
  *
  * Obtain the list of settable attributes for the file.
@@ -4423,9 +4526,9 @@ g_file_set_display_name_finish (GFile         *file,
  * triggering the cancellable object from another thread. If the operation
  * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
  *
- * Returns: a #GFileAttributeInfoList describing the settable attributes.
- *     When you are done with it, release it with
- *     g_file_attribute_info_list_unref()
+ * Returns: (transfer full): a #GFileAttributeInfoList describing the settable attributes.
+ *   When you are done with it, release it with
+ *   g_file_attribute_info_list_unref()
  */
 GFileAttributeInfoList *
 g_file_query_settable_attributes (GFile         *file,
@@ -4467,7 +4570,7 @@ g_file_query_settable_attributes (GFile         *file,
  * g_file_query_writable_namespaces:
  * @file: input #GFile
  * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
+ *   %NULL to ignore
  * @error: a #GError, or %NULL
  *
  * Obtain the list of attribute namespaces where new attributes
@@ -4478,9 +4581,9 @@ g_file_query_settable_attributes (GFile         *file,
  * triggering the cancellable object from another thread. If the operation
  * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
  *
- * Returns: a #GFileAttributeInfoList describing the writable namespaces.
- *     When you are done with it, release it with
- *     g_file_attribute_info_list_unref()
+ * Returns: (transfer full): a #GFileAttributeInfoList describing the writable namespaces.
+ *   When you are done with it, release it with
+ *   g_file_attribute_info_list_unref()
  */
 GFileAttributeInfoList *
 g_file_query_writable_namespaces (GFile         *file,
@@ -4529,10 +4632,10 @@ g_file_query_writable_namespaces (GFile         *file,
  * @attribute: a string containing the attribute's name
  * @type: The type of the attribute
  * @value_p: (nullable): a pointer to the value (or the pointer
- *     itself if the type is a pointer type)
+ *   itself if the type is a pointer type)
  * @flags: a set of #GFileQueryInfoFlags
  * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
+ *   %NULL to ignore
  * @error: a #GError, or %NULL
  *
  * Sets an attribute in the file with attribute name @attribute to @value_p.
@@ -4582,7 +4685,7 @@ g_file_set_attribute (GFile                *file,
  * @info: a #GFileInfo
  * @flags: #GFileQueryInfoFlags
  * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
+ *   %NULL to ignore
  * @error: a #GError, or %NULL
  *
  * Tries to set all attributes in the #GFileInfo on the target
@@ -4674,7 +4777,7 @@ g_file_real_set_attributes_from_info (GFile                *file,
  * @flags: a #GFileQueryInfoFlags
  * @io_priority: the [I/O priority][io-priority] of the request
  * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
+ *   %NULL to ignore
  * @callback: (scope async): a #GAsyncReadyCallback
  * @user_data: (closure): a #gpointer
  *
@@ -4747,7 +4850,7 @@ g_file_set_attributes_finish (GFile         *file,
  * @value: a string containing the attribute's value
  * @flags: #GFileQueryInfoFlags
  * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
+ *   %NULL to ignore
  * @error: a #GError, or %NULL
  *
  * Sets @attribute of type %G_FILE_ATTRIBUTE_TYPE_STRING to @value.
@@ -4779,7 +4882,7 @@ g_file_set_attribute_string (GFile                *file,
  * @value: a string containing the attribute's new value
  * @flags: a #GFileQueryInfoFlags
  * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
+ *   %NULL to ignore
  * @error: a #GError, or %NULL
  *
  * Sets @attribute of type %G_FILE_ATTRIBUTE_TYPE_BYTE_STRING to @value.
@@ -4791,7 +4894,7 @@ g_file_set_attribute_string (GFile                *file,
  * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
  *
  * Returns: %TRUE if the @attribute was successfully set to @value
- *     in the @file, %FALSE otherwise.
+ *   in the @file, %FALSE otherwise.
  */
 gboolean
 g_file_set_attribute_byte_string  (GFile                *file,
@@ -4813,7 +4916,7 @@ g_file_set_attribute_byte_string  (GFile                *file,
  * @value: a #guint32 containing the attribute's new value
  * @flags: a #GFileQueryInfoFlags
  * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
+ *   %NULL to ignore
  * @error: a #GError, or %NULL
  *
  * Sets @attribute of type %G_FILE_ATTRIBUTE_TYPE_UINT32 to @value.
@@ -4824,7 +4927,7 @@ g_file_set_attribute_byte_string  (GFile                *file,
  * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
  *
  * Returns: %TRUE if the @attribute was successfully set to @value
- *     in the @file, %FALSE otherwise.
+ *   in the @file, %FALSE otherwise.
  */
 gboolean
 g_file_set_attribute_uint32 (GFile                *file,
@@ -4846,7 +4949,7 @@ g_file_set_attribute_uint32 (GFile                *file,
  * @value: a #gint32 containing the attribute's new value
  * @flags: a #GFileQueryInfoFlags
  * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
+ *   %NULL to ignore
  * @error: a #GError, or %NULL
  *
  * Sets @attribute of type %G_FILE_ATTRIBUTE_TYPE_INT32 to @value.
@@ -4857,7 +4960,7 @@ g_file_set_attribute_uint32 (GFile                *file,
  * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
  *
  * Returns: %TRUE if the @attribute was successfully set to @value
- *     in the @file, %FALSE otherwise.
+ *   in the @file, %FALSE otherwise.
  */
 gboolean
 g_file_set_attribute_int32 (GFile                *file,
@@ -4879,7 +4982,7 @@ g_file_set_attribute_int32 (GFile                *file,
  * @value: a #guint64 containing the attribute's new value
  * @flags: a #GFileQueryInfoFlags
  * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
+ *   %NULL to ignore
  * @error: a #GError, or %NULL
  *
  * Sets @attribute of type %G_FILE_ATTRIBUTE_TYPE_UINT64 to @value.
@@ -4890,7 +4993,7 @@ g_file_set_attribute_int32 (GFile                *file,
  * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
  *
  * Returns: %TRUE if the @attribute was successfully set to @value
- *     in the @file, %FALSE otherwise.
+ *   in the @file, %FALSE otherwise.
  */
 gboolean
 g_file_set_attribute_uint64 (GFile                *file,
@@ -4912,7 +5015,7 @@ g_file_set_attribute_uint64 (GFile                *file,
  * @value: a #guint64 containing the attribute's new value
  * @flags: a #GFileQueryInfoFlags
  * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
+ *   %NULL to ignore
  * @error: a #GError, or %NULL
  *
  * Sets @attribute of type %G_FILE_ATTRIBUTE_TYPE_INT64 to @value.
@@ -4942,11 +5045,11 @@ g_file_set_attribute_int64 (GFile                *file,
  * @file: input #GFile
  * @flags: flags affecting the operation
  * @mount_operation: (nullable): a #GMountOperation,
- *     or %NULL to avoid user interaction
+ *   or %NULL to avoid user interaction
  * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
+ *   %NULL to ignore
  * @callback: (scope async) (nullable): a #GAsyncReadyCallback to call
- *     when the request is satisfied, or %NULL
+ *   when the request is satisfied, or %NULL
  * @user_data: (closure): the data to pass to callback function
  *
  * Mounts a file of type G_FILE_TYPE_MOUNTABLE.
@@ -5004,7 +5107,7 @@ g_file_mount_mountable (GFile               *file,
  * with g_file_mount_mountable().
  *
  * Returns: (transfer full): a #GFile or %NULL on error.
- *     Free the returned object with g_object_unref().
+ *   Free the returned object with g_object_unref().
  */
 GFile *
 g_file_mount_mountable_finish (GFile         *file,
@@ -5030,9 +5133,9 @@ g_file_mount_mountable_finish (GFile         *file,
  * @file: input #GFile
  * @flags: flags affecting the operation
  * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
+ *   %NULL to ignore
  * @callback: (scope async) (nullable): a #GAsyncReadyCallback to call
- *     when the request is satisfied, or %NULL
+ *   when the request is satisfied, or %NULL
  * @user_data: (closure): the data to pass to callback function
  *
  * Unmounts a file of type G_FILE_TYPE_MOUNTABLE.
@@ -5088,10 +5191,10 @@ g_file_unmount_mountable (GFile               *file,
  * with g_file_unmount_mountable().
  *
  * Returns: %TRUE if the operation finished successfully.
- *     %FALSE otherwise.
+ *   %FALSE otherwise.
  *
  * Deprecated: 2.22: Use g_file_unmount_mountable_with_operation_finish()
- *     instead.
+ *   instead.
  */
 gboolean
 g_file_unmount_mountable_finish (GFile         *file,
@@ -5117,14 +5220,14 @@ g_file_unmount_mountable_finish (GFile         *file,
  * @file: input #GFile
  * @flags: flags affecting the operation
  * @mount_operation: (nullable): a #GMountOperation,
- *     or %NULL to avoid user interaction
+ *   or %NULL to avoid user interaction
  * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
+ *   %NULL to ignore
  * @callback: (scope async) (nullable): a #GAsyncReadyCallback to call
- *     when the request is satisfied, or %NULL
+ *   when the request is satisfied, or %NULL
  * @user_data: (closure): the data to pass to callback function
  *
- * Unmounts a file of type #G_FILE_TYPE_MOUNTABLE.
+ * Unmounts a file of type %G_FILE_TYPE_MOUNTABLE.
  *
  * If @cancellable is not %NULL, then the operation can be cancelled by
  * triggering the cancellable object from another thread. If the operation
@@ -5187,7 +5290,7 @@ g_file_unmount_mountable_with_operation (GFile               *file,
  * with g_file_unmount_mountable_with_operation().
  *
  * Returns: %TRUE if the operation finished successfully.
- *     %FALSE otherwise.
+ *   %FALSE otherwise.
  *
  * Since: 2.22
  */
@@ -5218,9 +5321,9 @@ g_file_unmount_mountable_with_operation_finish (GFile         *file,
  * @file: input #GFile
  * @flags: flags affecting the operation
  * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
+ *   %NULL to ignore
  * @callback: (scope async) (nullable): a #GAsyncReadyCallback to call
- *     when the request is satisfied, or %NULL
+ *   when the request is satisfied, or %NULL
  * @user_data: (closure): the data to pass to callback function
  *
  * Starts an asynchronous eject on a mountable.
@@ -5273,10 +5376,10 @@ g_file_eject_mountable (GFile               *file,
  * g_file_eject_mountable().
  *
  * Returns: %TRUE if the @file was ejected successfully.
- *     %FALSE otherwise.
+ *   %FALSE otherwise.
  *
  * Deprecated: 2.22: Use g_file_eject_mountable_with_operation_finish()
- *     instead.
+ *   instead.
  */
 gboolean
 g_file_eject_mountable_finish (GFile         *file,
@@ -5302,11 +5405,11 @@ g_file_eject_mountable_finish (GFile         *file,
  * @file: input #GFile
  * @flags: flags affecting the operation
  * @mount_operation: (nullable): a #GMountOperation,
- *     or %NULL to avoid user interaction
+ *   or %NULL to avoid user interaction
  * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
+ *   %NULL to ignore
  * @callback: (scope async) (nullable): a #GAsyncReadyCallback to call
- *     when the request is satisfied, or %NULL
+ *   when the request is satisfied, or %NULL
  * @user_data: (closure): the data to pass to callback function
  *
  * Starts an asynchronous eject on a mountable.
@@ -5368,7 +5471,7 @@ g_file_eject_mountable_with_operation (GFile               *file,
  * g_file_eject_mountable_with_operation().
  *
  * Returns: %TRUE if the @file was ejected successfully.
- *     %FALSE otherwise.
+ *   %FALSE otherwise.
  *
  * Since: 2.22
  */
@@ -5399,7 +5502,7 @@ g_file_eject_mountable_with_operation_finish (GFile         *file,
  * @file: input #GFile
  * @flags: a set of #GFileMonitorFlags
  * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
+ *   %NULL to ignore
  * @error: a #GError, or %NULL
  *
  * Obtains a directory monitor for the given file.
@@ -5417,8 +5520,8 @@ g_file_eject_mountable_with_operation_finish (GFile         *file,
  *
  * Virtual: monitor_dir
  * Returns: (transfer full): a #GFileMonitor for the given @file,
- *     or %NULL on error.
- *     Free the returned object with g_object_unref().
+ *   or %NULL on error.
+ *   Free the returned object with g_object_unref().
  */
 GFileMonitor *
 g_file_monitor_directory (GFile              *file,
@@ -5452,7 +5555,7 @@ g_file_monitor_directory (GFile              *file,
  * @file: input #GFile
  * @flags: a set of #GFileMonitorFlags
  * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
+ *   %NULL to ignore
  * @error: a #GError, or %NULL
  *
  * Obtains a file monitor for the given file. If no file notification
@@ -5471,8 +5574,8 @@ g_file_monitor_directory (GFile              *file,
  * backend and/or filesystem type.
  * 
  * Returns: (transfer full): a #GFileMonitor for the given @file,
- *     or %NULL on error.
- *     Free the returned object with g_object_unref().
+ *   or %NULL on error.
+ *   Free the returned object with g_object_unref().
  */
 GFileMonitor *
 g_file_monitor_file (GFile              *file,
@@ -5507,7 +5610,7 @@ g_file_monitor_file (GFile              *file,
  * @file: input #GFile
  * @flags: a set of #GFileMonitorFlags
  * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
+ *   %NULL to ignore
  * @error: a #GError, or %NULL
  *
  * Obtains a file or directory monitor for the given file,
@@ -5518,8 +5621,8 @@ g_file_monitor_file (GFile              *file,
  * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
  *
  * Returns: (transfer full): a #GFileMonitor for the given @file,
- *     or %NULL on error.
- *     Free the returned object with g_object_unref().
+ *   or %NULL on error.
+ *   Free the returned object with g_object_unref().
  *
  * Since: 2.18
  */
@@ -5998,6 +6101,125 @@ g_file_real_trash_finish (GFile         *file,
   return g_task_propagate_boolean (G_TASK (res), error);
 }
 
+
+typedef struct {
+  GFile *source;  /* (owned) */
+  GFile *destination;  /* (owned) */
+  GFileCopyFlags flags;
+  GFileProgressCallback progress_cb;
+  gpointer progress_cb_data;
+} MoveAsyncData;
+
+static void
+move_async_data_free (MoveAsyncData *data)
+{
+  g_object_unref (data->source);
+  g_object_unref (data->destination);
+  g_slice_free (MoveAsyncData, data);
+}
+
+typedef struct {
+  MoveAsyncData *data;  /* (unowned) */
+  goffset current_num_bytes;
+  goffset total_num_bytes;
+} MoveProgressData;
+
+static gboolean
+move_async_progress_in_main (gpointer user_data)
+{
+  MoveProgressData *progress = user_data;
+  MoveAsyncData *data = progress->data;
+
+  data->progress_cb (progress->current_num_bytes,
+                     progress->total_num_bytes,
+                     data->progress_cb_data);
+
+  return G_SOURCE_REMOVE;
+}
+
+static void
+move_async_progress_callback (goffset  current_num_bytes,
+                              goffset  total_num_bytes,
+                              gpointer user_data)
+{
+  GTask *task = user_data;
+  MoveAsyncData *data = g_task_get_task_data (task);
+  MoveProgressData *progress;
+
+  progress = g_new0 (MoveProgressData, 1);
+  progress->data = data;
+  progress->current_num_bytes = current_num_bytes;
+  progress->total_num_bytes = total_num_bytes;
+
+  g_main_context_invoke_full (g_task_get_context (task),
+                              g_task_get_priority (task),
+                              move_async_progress_in_main,
+                              g_steal_pointer (&progress),
+                              g_free);
+}
+
+static void
+move_async_thread (GTask        *task,
+                   gpointer      source,
+                   gpointer      task_data,
+                   GCancellable *cancellable)
+{
+  MoveAsyncData *data = task_data;
+  gboolean result;
+  GError *error = NULL;
+
+  result = g_file_move (data->source,
+                        data->destination,
+                        data->flags,
+                        cancellable,
+                        (data->progress_cb != NULL) ? move_async_progress_callback : NULL,
+                        task,
+                        &error);
+  if (result)
+    g_task_return_boolean (task, TRUE);
+  else
+    g_task_return_error (task, g_steal_pointer (&error));
+}
+
+static void
+g_file_real_move_async (GFile                  *source,
+                        GFile                  *destination,
+                        GFileCopyFlags          flags,
+                        int                     io_priority,
+                        GCancellable           *cancellable,
+                        GFileProgressCallback   progress_callback,
+                        gpointer                progress_callback_data,
+                        GAsyncReadyCallback     callback,
+                        gpointer                user_data)
+{
+  GTask *task;
+  MoveAsyncData *data;
+
+  data = g_slice_new0 (MoveAsyncData);
+  data->source = g_object_ref (source);
+  data->destination = g_object_ref (destination);
+  data->flags = flags;
+  data->progress_cb = progress_callback;
+  data->progress_cb_data = progress_callback_data;
+
+  task = g_task_new (source, cancellable, callback, user_data);
+  g_task_set_source_tag (task, g_file_real_move_async);
+  g_task_set_task_data (task, g_steal_pointer (&data), (GDestroyNotify) move_async_data_free);
+  g_task_set_priority (task, io_priority);
+  g_task_run_in_thread (task, move_async_thread);
+  g_object_unref (task);
+}
+
+static gboolean
+g_file_real_move_finish (GFile        *file,
+                         GAsyncResult *result,
+                         GError      **error)
+{
+  g_return_val_if_fail (g_task_is_valid (result, file), FALSE);
+
+  return g_task_propagate_boolean (G_TASK (result), error);
+}
+
 static void
 make_directory_async_thread (GTask        *task,
                              gpointer      object,
@@ -6397,12 +6619,12 @@ typedef struct {
   CopyAsyncData *data;
   goffset current_num_bytes;
   goffset total_num_bytes;
-} ProgressData;
+} CopyProgressData;
 
 static gboolean
 copy_async_progress_in_main (gpointer user_data)
 {
-  ProgressData *progress = user_data;
+  CopyProgressData *progress = user_data;
   CopyAsyncData *data = progress->data;
 
   data->progress_cb (progress->current_num_bytes,
@@ -6419,9 +6641,9 @@ copy_async_progress_callback (goffset  current_num_bytes,
 {
   GTask *task = user_data;
   CopyAsyncData *data = g_task_get_task_data (task);
-  ProgressData *progress;
+  CopyProgressData *progress;
 
-  progress = g_new (ProgressData, 1);
+  progress = g_new (CopyProgressData, 1);
   progress->data = data;
   progress->current_num_bytes = current_num_bytes;
   progress->total_num_bytes = total_num_bytes;
@@ -6503,7 +6725,7 @@ g_file_real_copy_finish (GFile        *file,
 /**
  * g_file_new_for_path:
  * @path: (type filename): a string containing a relative or absolute path.
- *     The string must be encoded in the glib filename encoding.
+ *   The string must be encoded in the glib filename encoding.
  *
  * Constructs a #GFile for a given path. This operation never
  * fails, but the returned object might not support any I/O
@@ -6530,7 +6752,7 @@ g_file_new_for_path (const char *path)
  * not supported.
  *
  * Returns: (transfer full): a new #GFile for the given @uri.
- *     Free the returned object with g_object_unref().
+ *   Free the returned object with g_object_unref().
  */
 GFile *
 g_file_new_for_uri (const char *uri)
@@ -6559,7 +6781,7 @@ g_file_new_for_uri (const char *uri)
  * a temporary file could not be created.
  *
  * Returns: (transfer full): a new #GFile.
- *     Free the returned object with g_object_unref().
+ *   Free the returned object with g_object_unref().
  *
  * Since: 2.32
  */
@@ -6720,7 +6942,7 @@ new_for_cmdline_arg (const gchar *arg,
  * #GOptionContext arguments of type %G_OPTION_ARG_FILENAME.
  *
  * Returns: (transfer full): a new #GFile.
- *    Free the returned object with g_object_unref().
+ *   Free the returned object with g_object_unref().
  */
 GFile *
 g_file_new_for_commandline_arg (const char *arg)
@@ -6766,11 +6988,11 @@ g_file_new_for_commandline_arg_and_cwd (const gchar *arg,
  * @location: input #GFile
  * @flags: flags affecting the operation
  * @mount_operation: (nullable): a #GMountOperation
- *     or %NULL to avoid user interaction
+ *   or %NULL to avoid user interaction
  * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
+ *   %NULL to ignore
  * @callback: (nullable): a #GAsyncReadyCallback to call
- *     when the request is satisfied, or %NULL
+ *   when the request is satisfied, or %NULL
  * @user_data: the data to pass to callback function
  *
  * Starts a @mount_operation, mounting the volume that contains
@@ -6820,8 +7042,8 @@ g_file_mount_enclosing_volume (GFile               *location,
  * Finishes a mount operation started by g_file_mount_enclosing_volume().
  *
  * Returns: %TRUE if successful. If an error has occurred,
- *     this function will return %FALSE and set @error
- *     appropriately if present.
+ *   this function will return %FALSE and set @error
+ *   appropriately if present.
  */
 gboolean
 g_file_mount_enclosing_volume_finish (GFile         *location,
@@ -6861,8 +7083,8 @@ g_file_mount_enclosing_volume_finish (GFile         *location,
  * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
  *
  * Returns: (transfer full): a #GAppInfo if the handle was found,
- *     %NULL if there were errors.
- *     When you are done with it, release it with g_object_unref()
+ *   %NULL if there were errors.
+ *   When you are done with it, release it with g_object_unref()
  */
 GAppInfo *
 g_file_query_default_handler (GFile         *file,
@@ -7032,8 +7254,8 @@ g_file_query_default_handler_async (GFile              *file,
  * Finishes a g_file_query_default_handler_async() operation.
  *
  * Returns: (transfer full): a #GAppInfo if the handle was found,
- *     %NULL if there were errors.
- *     When you are done with it, release it with g_object_unref()
+ *   %NULL if there were errors.
+ *   When you are done with it, release it with g_object_unref()
  *
  * Since: 2.60
  */
@@ -7056,9 +7278,9 @@ g_file_query_default_handler_finish (GFile        *file,
  * @cancellable: optional #GCancellable object, %NULL to ignore
  * @contents: (out) (transfer full) (element-type guint8) (array length=length): a location to place the contents of the file
  * @length: (out) (optional): a location to place the length of the contents of the file,
- *    or %NULL if the length is not needed
+ *   or %NULL if the length is not needed
  * @etag_out: (out) (optional) (nullable): a location to place the current entity tag for the file,
- *    or %NULL if the entity tag is not needed
+ *   or %NULL if the entity tag is not needed
  * @error: a #GError, or %NULL
  *
  * Loads the content of the file into memory. The data is always
@@ -7071,7 +7293,7 @@ g_file_query_default_handler_finish (GFile        *file,
  * was cancelled, the error %G_IO_ERROR_CANCELLED will be returned.
  *
  * Returns: %TRUE if the @file's contents were successfully loaded.
- *     %FALSE if there were errors.
+ *   %FALSE if there were errors.
  */
 gboolean
 g_file_load_contents (GFile         *file,
@@ -7294,10 +7516,10 @@ load_contents_open_callback (GObject      *obj,
  * @file: input #GFile
  * @cancellable: optional #GCancellable object, %NULL to ignore
  * @read_more_callback: (scope call) (closure user_data): a
- *     #GFileReadMoreCallback to receive partial data
- *     and to specify whether further data should be read
+ *   #GFileReadMoreCallback to receive partial data
+ *   and to specify whether further data should be read
  * @callback: (scope async) (closure user_data): a #GAsyncReadyCallback to call
- *     when the request is satisfied
+ *   when the request is satisfied
  * @user_data: the data to pass to the callback functions
  *
  * Reads the partial contents of a file. A #GFileReadMoreCallback should
@@ -7344,9 +7566,9 @@ g_file_load_partial_contents_async (GFile                 *file,
  * @res: a #GAsyncResult
  * @contents: (out) (transfer full) (element-type guint8) (array length=length): a location to place the contents of the file
  * @length: (out) (optional): a location to place the length of the contents of the file,
- *     or %NULL if the length is not needed
+ *   or %NULL if the length is not needed
  * @etag_out: (out) (optional) (nullable): a location to place the current entity tag for the file,
- *     or %NULL if the entity tag is not needed
+ *   or %NULL if the entity tag is not needed
  * @error: a #GError, or %NULL
  *
  * Finishes an asynchronous partial load operation that was started
@@ -7356,7 +7578,7 @@ g_file_load_partial_contents_async (GFile                 *file,
  * needed.
  *
  * Returns: %TRUE if the load was successful. If %FALSE and @error is
- *     present, it will be set appropriately.
+ *   present, it will be set appropriately.
  */
 gboolean
 g_file_load_partial_contents_finish (GFile         *file,
@@ -7442,9 +7664,9 @@ g_file_load_contents_async (GFile               *file,
  * @res: a #GAsyncResult
  * @contents: (out) (transfer full) (element-type guint8) (array length=length): a location to place the contents of the file
  * @length: (out) (optional): a location to place the length of the contents of the file,
- *     or %NULL if the length is not needed
+ *   or %NULL if the length is not needed
  * @etag_out: (out) (optional) (nullable): a location to place the current entity tag for the file,
- *     or %NULL if the entity tag is not needed
+ *   or %NULL if the entity tag is not needed
  * @error: a #GError, or %NULL
  *
  * Finishes an asynchronous load of the @file's contents.
@@ -7454,7 +7676,7 @@ g_file_load_contents_async (GFile               *file,
  * set to the new entity tag for the @file.
  *
  * Returns: %TRUE if the load was successful. If %FALSE and @error is
- *     present, it will be set appropriately.
+ *   present, it will be set appropriately.
  */
 gboolean
 g_file_load_contents_finish (GFile         *file,
@@ -7478,12 +7700,12 @@ g_file_load_contents_finish (GFile         *file,
  * @contents: (element-type guint8) (array length=length): a string containing the new contents for @file
  * @length: the length of @contents in bytes
  * @etag: (nullable): the old [entity-tag][gfile-etag] for the document,
- *     or %NULL
+ *   or %NULL
  * @make_backup: %TRUE if a backup should be created
  * @flags: a set of #GFileCreateFlags
  * @new_etag: (out) (optional) (nullable): a location to a new [entity tag][gfile-etag]
- *      for the document. This should be freed with g_free() when no longer
- *      needed, or %NULL
+ *   for the document. This should be freed with g_free() when no longer
+ *   needed, or %NULL
  * @cancellable: optional #GCancellable object, %NULL to ignore
  * @error: a #GError, or %NULL
  *
@@ -7505,7 +7727,7 @@ g_file_load_contents_finish (GFile         *file,
  * changed the next time it is saved over.
  *
  * Returns: %TRUE if successful. If an error has occurred, this function
- *     will return %FALSE and set @error appropriately if present.
+ *   will return %FALSE and set @error appropriately if present.
  */
 gboolean
 g_file_replace_contents (GFile             *file,
@@ -7790,8 +8012,8 @@ g_file_replace_contents_bytes_async  (GFile               *file,
  * @file: input #GFile
  * @res: a #GAsyncResult
  * @new_etag: (out) (optional) (nullable): a location of a new [entity tag][gfile-etag]
- *     for the document. This should be freed with g_free() when it is no
- *     longer needed, or %NULL
+ *   for the document. This should be freed with g_free() when it is no
+ *   longer needed, or %NULL
  * @error: a #GError, or %NULL
  *
  * Finishes an asynchronous replace of the given @file. See
@@ -8015,7 +8237,7 @@ g_file_real_measure_disk_usage_finish (GFile         *file,
  * callback will be invoked.
  *
  * Returns: %TRUE if successful, with the out parameters set.
- *          %FALSE otherwise, with @error set.
+ *   %FALSE otherwise, with @error set.
  *
  * Since: 2.38
  **/
@@ -8090,7 +8312,7 @@ g_file_measure_disk_usage_async (GFile                        *file,
  * more information.
  *
  * Returns: %TRUE if successful, with the out parameters set.
- *          %FALSE otherwise, with @error set.
+ *   %FALSE otherwise, with @error set.
  *
  * Since: 2.38
  **/
@@ -8117,7 +8339,7 @@ g_file_measure_disk_usage_finish (GFile         *file,
  * @callback: (nullable): a #GAsyncReadyCallback to call when the request is satisfied, or %NULL
  * @user_data: the data to pass to callback function
  *
- * Starts a file of type #G_FILE_TYPE_MOUNTABLE.
+ * Starts a file of type %G_FILE_TYPE_MOUNTABLE.
  * Using @start_operation, you can request callbacks when, for instance,
  * passwords are needed during authentication.
  *
@@ -8202,14 +8424,14 @@ g_file_start_mountable_finish (GFile         *file,
  * @file: input #GFile
  * @flags: flags affecting the operation
  * @mount_operation: (nullable): a #GMountOperation,
- *     or %NULL to avoid user interaction.
+ *   or %NULL to avoid user interaction.
  * @cancellable: (nullable): optional #GCancellable object,
- *     %NULL to ignore
+ *   %NULL to ignore
  * @callback: (nullable): a #GAsyncReadyCallback to call
- *     when the request is satisfied, or %NULL
+ *   when the request is satisfied, or %NULL
  * @user_data: the data to pass to callback function
  *
- * Stops a file of type #G_FILE_TYPE_MOUNTABLE.
+ * Stops a file of type %G_FILE_TYPE_MOUNTABLE.
  *
  * If @cancellable is not %NULL, then the operation can be cancelled by
  * triggering the cancellable object from another thread. If the operation
@@ -8264,7 +8486,7 @@ g_file_stop_mountable (GFile               *file,
  * with g_file_stop_mountable().
  *
  * Returns: %TRUE if the operation finished successfully.
- *     %FALSE otherwise.
+ *   %FALSE otherwise.
  *
  * Since: 2.22
  */
@@ -8292,10 +8514,10 @@ g_file_stop_mountable_finish (GFile         *file,
  * @file: input #GFile
  * @cancellable: optional #GCancellable object, %NULL to ignore
  * @callback: (nullable): a #GAsyncReadyCallback to call
- *     when the request is satisfied, or %NULL
+ *   when the request is satisfied, or %NULL
  * @user_data: the data to pass to callback function
  *
- * Polls a file of type #G_FILE_TYPE_MOUNTABLE.
+ * Polls a file of type %G_FILE_TYPE_MOUNTABLE.
  *
  * If @cancellable is not %NULL, then the operation can be cancelled by
  * triggering the cancellable object from another thread. If the operation
@@ -8398,7 +8620,7 @@ g_file_supports_thread_contexts (GFile *file)
  * @file: a #GFile
  * @cancellable: (nullable): a #GCancellable or %NULL
  * @etag_out: (out) (nullable) (optional): a location to place the current
- *     entity tag for the file, or %NULL if the entity tag is not needed
+ *   entity tag for the file, or %NULL if the entity tag is not needed
  * @error: a location for a #GError or %NULL
  *
  * Loads the contents of @file and returns it as #GBytes.
@@ -8485,7 +8707,7 @@ g_file_load_bytes_cb (GObject      *object,
  * @file: a #GFile
  * @cancellable: (nullable): a #GCancellable or %NULL
  * @callback: (scope async): a #GAsyncReadyCallback to call when the
- *     request is satisfied
+ *   request is satisfied
  * @user_data: (closure): the data to pass to callback function
  *
  * Asynchronously loads the contents of @file as #GBytes.
@@ -8543,7 +8765,7 @@ g_file_load_bytes_async (GFile               *file,
  * @file: a #GFile
  * @result: a #GAsyncResult provided to the callback
  * @etag_out: (out) (nullable) (optional): a location to place the current
- *     entity tag for the file, or %NULL if the entity tag is not needed
+ *   entity tag for the file, or %NULL if the entity tag is not needed
  * @error: a location for a #GError, or %NULL
  *
  * Completes an asynchronous request to g_file_load_bytes_async().
index 4cff1a3..3a324cf 100644 (file)
@@ -121,8 +121,8 @@ typedef struct _GFileIface                  GFileIface;
  * @copy_async: Asynchronously copies a file.
  * @copy_finish: Finishes an asynchronous copy operation.
  * @move: Moves a file.
- * @_move_async: Asynchronously moves a file.
- * @_move_finish: Finishes an asynchronous move operation.
+ * @move_async: Asynchronously moves a file. Since: 2.72
+ * @move_finish: Finishes an asynchronous move operation. Since: 2.72
  * @mount_mountable: Mounts a mountable object.
  * @mount_mountable_finish: Finishes a mounting operation.
  * @unmount_mountable: Unmounts a mountable object.
@@ -424,8 +424,18 @@ struct _GFileIface
                                                        GFileProgressCallback progress_callback,
                                                        gpointer              progress_callback_data,
                                                        GError              **error);
-  void                (* _move_async)                 (void);
-  void                (* _move_finish)                (void);
+  void                (* move_async)                  (GFile                *source,
+                                                       GFile                *destination,
+                                                       GFileCopyFlags        flags,
+                                                       int                   io_priority,
+                                                       GCancellable         *cancellable,
+                                                       GFileProgressCallback progress_callback,
+                                                       gpointer              progress_callback_data,
+                                                       GAsyncReadyCallback   callback,
+                                                       gpointer              user_data);
+  gboolean            (* move_finish)                 (GFile                *file,
+                                                       GAsyncResult         *result,
+                                                       GError              **error);
 
   void                (* mount_mountable)             (GFile                *file,
                                                        GMountMountFlags      flags,
@@ -926,6 +936,20 @@ gboolean                g_file_move                       (GFile
                                                           GFileProgressCallback       progress_callback,
                                                           gpointer                    progress_callback_data,
                                                           GError                    **error);
+GLIB_AVAILABLE_IN_2_72
+void                    g_file_move_async                 (GFile                      *source,
+                                                                                                    GFile                      *destination,
+                                                                                                    GFileCopyFlags              flags,
+                                                                                                    int                         io_priority,
+                                                                                                    GCancellable               *cancellable,
+                                                                                                    GFileProgressCallback       progress_callback,
+                                                                                                    gpointer                    progress_callback_data,
+                                                                                                    GAsyncReadyCallback         callback,
+                                                                                                    gpointer                    user_data);
+GLIB_AVAILABLE_IN_2_72
+gboolean                g_file_move_finish                (GFile                      *file,
+                                                                                                    GAsyncResult               *result,
+                                                                                                    GError                    **error);
 GLIB_AVAILABLE_IN_ALL
 gboolean                g_file_make_directory             (GFile                      *file,
                                                           GCancellable               *cancellable,
index 1f9bc24..e0ed972 100644 (file)
@@ -662,7 +662,10 @@ g_file_enumerator_iterate (GFileEnumerator  *direnum,
           const char *name = g_file_info_get_name (ret_info);
 
           if (G_UNLIKELY (name == NULL))
-            g_warning ("g_file_enumerator_iterate() created without standard::name");
+            {
+              g_critical ("g_file_enumerator_iterate() created without standard::name");
+              g_return_val_if_reached (FALSE);
+            }
           else
             {
               *out_child = g_file_get_child (g_file_enumerator_get_container (direnum), name);
@@ -718,6 +721,9 @@ g_file_enumerator_get_container (GFileEnumerator *enumerator)
  * directory of @enumerator.  This function is primarily intended to be used
  * inside loops with g_file_enumerator_next_file().
  *
+ * To use this, %G_FILE_ATTRIBUTE_STANDARD_NAME must have been listed in the
+ * attributes list used when creating the #GFileEnumerator.
+ *
  * This is a convenience method that's equivalent to:
  * |[<!-- language="C" -->
  *   gchar *name = g_file_info_get_name (info);
@@ -733,10 +739,20 @@ GFile *
 g_file_enumerator_get_child (GFileEnumerator *enumerator,
                              GFileInfo       *info)
 {
+  const gchar *name;
+
   g_return_val_if_fail (G_IS_FILE_ENUMERATOR (enumerator), NULL);
+  g_return_val_if_fail (G_IS_FILE_INFO (info), NULL);
+
+  name = g_file_info_get_name (info);
+
+  if (G_UNLIKELY (name == NULL))
+    {
+      g_critical ("GFileEnumerator created without standard::name");
+      g_return_val_if_reached (NULL);
+    }
 
-  return g_file_get_child (enumerator->priv->container,
-                           g_file_info_get_name (info));
+  return g_file_get_child (enumerator->priv->container, name);
 }
 
 static void
index 9b9c0ea..89c89d2 100644 (file)
@@ -172,7 +172,7 @@ g_file_monitor_class_init (GFileMonitorClass *klass)
    * that the %G_FILE_MONITOR_WATCH_MOVES flag is not in use.
    *
    * If using the deprecated flag %G_FILE_MONITOR_SEND_MOVED flag and @event_type is
-   * #G_FILE_MONITOR_EVENT_MOVED, @file will be set to a #GFile containing the
+   * %G_FILE_MONITOR_EVENT_MOVED, @file will be set to a #GFile containing the
    * old path, and @other_file will be set to a #GFile containing the new path.
    *
    * In all the other cases, @other_file will be set to #NULL.
index a40c7d9..8fda269 100644 (file)
@@ -429,8 +429,8 @@ g_input_stream_real_skip (GInputStream  *stream,
           end = g_seekable_tell (seekable);
           g_assert (start >= 0);
           g_assert (end >= start);
-          if ((guint64) start > (G_MAXSIZE - count) ||
-              (start + count) > (guint64) end)
+          if (start > (goffset) (G_MAXOFFSET - count) ||
+              (goffset) (start + count) > end)
             {
               stream->priv->pending = TRUE;
               return end - start;
index cbeb975..aff194b 100644 (file)
@@ -161,7 +161,7 @@ main (gint   argc,
 {
   int i;
 
-  if (argc == 1)
+  if (argc <= 1)
     {
       g_print ("Usage: gio-querymodules <directory1> [<directory2> ...]\n");
       g_print ("Will update giomodule.cache in the listed directories\n");
index 4dbe121..c2a9431 100644 (file)
@@ -76,12 +76,14 @@ handle_set (int argc, char *argv[], gboolean do_help)
   const char *attribute;
   GFileAttributeType type;
   gpointer value;
+  gpointer value_allocated = NULL;
   gboolean b;
   guint32 uint32;
   gint32 int32;
   guint64 uint64;
   gint64 int64;
   gchar *param;
+  int retval = 0;
 
   g_set_prgname ("gio set");
 
@@ -147,7 +149,7 @@ handle_set (int argc, char *argv[], gboolean do_help)
       value = argv[3];
       break;
     case G_FILE_ATTRIBUTE_TYPE_BYTE_STRING:
-      value = hex_unescape (argv[3]);
+      value = value_allocated = hex_unescape (argv[3]);
       break;
     case G_FILE_ATTRIBUTE_TYPE_BOOLEAN:
       b = g_ascii_strcasecmp (argv[3], "true") == 0;
@@ -194,11 +196,11 @@ handle_set (int argc, char *argv[], gboolean do_help)
     {
       print_error ("%s", error->message);
       g_error_free (error);
-      g_object_unref (file);
-      return 1;
+      retval = 1;
     }
 
+  g_clear_pointer (&value_allocated, g_free);
   g_object_unref (file);
 
-  return 0;
+  return retval;
 }
index e9afab6..2d0a9c2 100644 (file)
--- a/gio/gio.h
+++ b/gio/gio.h
@@ -69,6 +69,8 @@
 #include <gio/gdbusproxy.h>
 #include <gio/gdbusserver.h>
 #include <gio/gdbusutils.h>
+#include <gio/gdebugcontroller.h>
+#include <gio/gdebugcontrollerdbus.h>
 #include <gio/gdrive.h>
 #include <gio/gdtlsclientconnection.h>
 #include <gio/gdtlsconnection.h>
index d81ada4..efc4301 100644 (file)
@@ -392,7 +392,7 @@ typedef enum {
  *
  * Indicates a hint from the file system whether files should be
  * previewed in a file manager. Returned as the value of the key
- * #G_FILE_ATTRIBUTE_FILESYSTEM_USE_PREVIEW.
+ * %G_FILE_ATTRIBUTE_FILESYSTEM_USE_PREVIEW.
  **/
 typedef enum {
   G_FILESYSTEM_PREVIEW_TYPE_IF_ALWAYS = 0,
@@ -522,7 +522,7 @@ typedef enum {
  *   }
  * ]|
  * but should instead treat all unrecognized error codes the same as
- * #G_IO_ERROR_FAILED.
+ * %G_IO_ERROR_FAILED.
  *
  * See also #GPollableReturn for a cheaper way of returning
  * %G_IO_ERROR_WOULD_BLOCK to callers without allocating a #GError.
@@ -973,7 +973,7 @@ typedef enum
  * @G_BUS_NAME_OWNER_FLAGS_NONE: No flags set.
  * @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.
+ * 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)
  *
@@ -1021,6 +1021,9 @@ typedef enum
  * do not ask the bus to launch an owner during proxy initialization, but allow it to be
  * autostarted by a method call. This flag is only meaningful in proxies for well-known names,
  * and only if %G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START is not also specified.
+ * @G_DBUS_PROXY_FLAGS_NO_MATCH_RULE: Don't actually send the AddMatch D-Bus
+ *    call for this signal subscription. This gives you more control
+ *    over which match rules you add (but you must add them manually). (Since: 2.72)
  *
  * Flags used when constructing an instance of a #GDBusProxy derived class.
  *
@@ -1033,7 +1036,8 @@ typedef enum
   G_DBUS_PROXY_FLAGS_DO_NOT_CONNECT_SIGNALS = (1<<1),
   G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START = (1<<2),
   G_DBUS_PROXY_FLAGS_GET_INVALIDATED_PROPERTIES = (1<<3),
-  G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START_AT_CONSTRUCTION = (1<<4)
+  G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START_AT_CONSTRUCTION = (1<<4),
+  G_DBUS_PROXY_FLAGS_NO_MATCH_RULE GLIB_AVAILABLE_ENUMERATOR_IN_2_72 = (1<<5)
 } GDBusProxyFlags;
 
 /**
@@ -1437,6 +1441,7 @@ typedef enum
  * @G_CREDENTIALS_TYPE_SOLARIS_UCRED: The native credentials type is a `ucred_t`. Added in 2.40.
  * @G_CREDENTIALS_TYPE_NETBSD_UNPCBID: The native credentials type is a `struct unpcbid`. Added in 2.42.
  * @G_CREDENTIALS_TYPE_APPLE_XUCRED: The native credentials type is a `struct xucred`. Added in 2.66.
+ * @G_CREDENTIALS_TYPE_WIN32_PID: The native credentials type is a PID `DWORD`. Added in 2.72.
  *
  * Enumeration describing different kinds of native credential types.
  *
@@ -1451,6 +1456,7 @@ typedef enum
   G_CREDENTIALS_TYPE_SOLARIS_UCRED,
   G_CREDENTIALS_TYPE_NETBSD_UNPCBID,
   G_CREDENTIALS_TYPE_APPLE_XUCRED,
+  G_CREDENTIALS_TYPE_WIN32_PID,
 } GCredentialsType;
 
 /**
@@ -1548,6 +1554,8 @@ typedef enum
  * @G_TLS_ERROR_INAPPROPRIATE_FALLBACK: The TLS handshake failed
  *   because the client sent the fallback SCSV, indicating a protocol
  *   downgrade attack. Since: 2.60
+ * @G_TLS_ERROR_BAD_CERTIFICATE_PASSWORD: The certificate failed
+ *   to load because a password was incorrect. Since: 2.72
  *
  * An error code used with %G_TLS_ERROR in a #GError returned from a
  * TLS-related routine.
@@ -1562,7 +1570,8 @@ typedef enum {
   G_TLS_ERROR_HANDSHAKE,
   G_TLS_ERROR_CERTIFICATE_REQUIRED,
   G_TLS_ERROR_EOF,
-  G_TLS_ERROR_INAPPROPRIATE_FALLBACK
+  G_TLS_ERROR_INAPPROPRIATE_FALLBACK,
+  G_TLS_ERROR_BAD_CERTIFICATE_PASSWORD
 } GTlsError;
 
 /**
@@ -1584,10 +1593,16 @@ typedef enum {
  *   flags
  *
  * A set of flags describing TLS certification validation. This can be
- * used to set which validation steps to perform (eg, with
- * g_tls_client_connection_set_validation_flags()), or to describe why
- * a particular certificate was rejected (eg, in
- * #GTlsConnection::accept-certificate).
+ * used to describe why a particular certificate was rejected (for
+ * example, in #GTlsConnection::accept-certificate).
+ *
+ * GLib guarantees that if certificate verification fails, at least one
+ * flag will be set, but it does not guarantee that all possible flags
+ * will be set. Accordingly, you may not safely decide to ignore any
+ * particular type of error. For example, it would be incorrect to mask
+ * %G_TLS_CERTIFICATE_EXPIRED if you want to allow expired certificates,
+ * because this could potentially be the only error flag set even if
+ * other problems exist with the certificate.
  *
  * Since: 2.28
  */
@@ -1973,6 +1988,9 @@ typedef enum /*< flags >*/ {
  *   file descriptors of their parent, unless those descriptors have
  *   been explicitly marked as close-on-exec.  This flag has no effect
  *   over the "standard" file descriptors (stdin, stdout, stderr).
+ * @G_SUBPROCESS_FLAGS_SEARCH_PATH_FROM_ENVP: if path searching is
+ *   needed when spawning the subprocess, use the `PATH` in the launcher
+ *   environment. (Since: 2.72)
  *
  * Flags to define the behaviour of a #GSubprocess.
  *
@@ -1995,7 +2013,8 @@ typedef enum {
   G_SUBPROCESS_FLAGS_STDERR_PIPE           = (1u << 4),
   G_SUBPROCESS_FLAGS_STDERR_SILENCE        = (1u << 5),
   G_SUBPROCESS_FLAGS_STDERR_MERGE          = (1u << 6),
-  G_SUBPROCESS_FLAGS_INHERIT_FDS           = (1u << 7)
+  G_SUBPROCESS_FLAGS_INHERIT_FDS           = (1u << 7),
+  G_SUBPROCESS_FLAGS_SEARCH_PATH_FROM_ENVP = (1u << 8)
 } GSubprocessFlags;
 
 /**
index d34037a..2a043cc 100644 (file)
@@ -45,6 +45,8 @@
 #include "gnotificationbackend.h"
 #include "ginitable.h"
 #include "gnetworkmonitor.h"
+#include "gdebugcontroller.h"
+#include "gdebugcontrollerdbus.h"
 #include "gmemorymonitor.h"
 #include "gmemorymonitorportal.h"
 #include "gmemorymonitordbus.h"
 #include <AvailabilityMacros.h>
 #endif
 
+#define __GLIB_H_INSIDE__
+#include "gconstructor.h"
+#undef __GLIB_H_INSIDE__
+
 /**
  * SECTION:giomodule
  * @short_description: Loadable GIO Modules
@@ -1078,8 +1084,10 @@ extern GType _g_network_monitor_netlink_get_type (void);
 extern GType _g_network_monitor_nm_get_type (void);
 #endif
 
+extern GType g_debug_controller_dbus_get_type (void);
 extern GType g_memory_monitor_dbus_get_type (void);
 extern GType g_memory_monitor_portal_get_type (void);
+extern GType g_memory_monitor_win32_get_type (void);
 extern GType g_power_profile_monitor_dbus_get_type (void);
 
 #ifdef G_OS_UNIX
@@ -1102,7 +1110,7 @@ extern GType _g_win32_network_monitor_get_type (void);
 
 static HMODULE gio_dll = NULL;
 
-#ifdef DLL_EXPORT
+#ifndef GLIB_STATIC_COMPILATION
 
 BOOL WINAPI DllMain (HINSTANCE hinstDLL,
                      DWORD     fdwReason,
@@ -1122,8 +1130,40 @@ DllMain (HINSTANCE hinstDLL,
   return TRUE;
 }
 
+#elif defined(G_HAS_CONSTRUCTORS) /* && G_PLATFORM_WIN32 && GLIB_STATIC_COMPILATION */
+extern void glib_win32_init (void);
+extern void gobject_win32_init (void);
+
+#ifdef G_DEFINE_CONSTRUCTOR_NEEDS_PRAGMA
+#pragma G_DEFINE_CONSTRUCTOR_PRAGMA_ARGS(giomodule_init_ctor)
 #endif
 
+G_DEFINE_CONSTRUCTOR (giomodule_init_ctor)
+
+static void
+giomodule_init_ctor (void)
+{
+  /* When built dynamically, module initialization is done through DllMain
+   * function which is called when the dynamic library is loaded by the glib
+   * module AFTER loading gobject. So, in dynamic configuration glib and
+   * gobject are always initialized BEFORE gio.
+   *
+   * When built statically, initialization mechanism relies on hooking
+   * functions to the CRT section directly at compilation time. As we don't
+   * control how each compilation unit will be built and in which order, we
+   * obtain the same kind of issue as the "static initialization order fiasco".
+   * In this case, we must ensure explicitly that glib and gobject are always
+   * well initialized BEFORE gio.
+   */
+  glib_win32_init ();
+  gobject_win32_init ();
+  gio_win32_appinfo_init (FALSE);
+}
+
+#else /* G_PLATFORM_WIN32 && GLIB_STATIC_COMPILATION && !G_HAS_CONSTRUCTORS */
+#error Your platform/compiler is missing constructor support
+#endif /* GLIB_STATIC_COMPILATION */
+
 void *
 _g_io_win32_get_module (void)
 {
@@ -1135,7 +1175,7 @@ _g_io_win32_get_module (void)
   return gio_dll;
 }
 
-#endif
+#endif /* G_PLATFORM_WIN32 */
 
 void
 _g_io_modules_ensure_extension_points_registered (void)
@@ -1189,6 +1229,9 @@ _g_io_modules_ensure_extension_points_registered (void)
       ep = g_io_extension_point_register (G_NOTIFICATION_BACKEND_EXTENSION_POINT_NAME);
       g_io_extension_point_set_required_type (ep, G_TYPE_NOTIFICATION_BACKEND);
 
+      ep = g_io_extension_point_register (G_DEBUG_CONTROLLER_EXTENSION_POINT_NAME);
+      g_io_extension_point_set_required_type (ep, G_TYPE_DEBUG_CONTROLLER);
+
       ep = g_io_extension_point_register (G_MEMORY_MONITOR_EXTENSION_POINT_NAME);
       g_io_extension_point_set_required_type (ep, G_TYPE_MEMORY_MONITOR);
 
@@ -1300,6 +1343,7 @@ _g_io_modules_ensure_loaded (void)
 #endif
 #ifdef G_OS_UNIX
       g_type_ensure (_g_unix_volume_monitor_get_type ());
+      g_type_ensure (g_debug_controller_dbus_get_type ());
       g_type_ensure (g_fdo_notification_backend_get_type ());
       g_type_ensure (g_gtk_notification_backend_get_type ());
       g_type_ensure (g_portal_notification_backend_get_type ());
@@ -1315,6 +1359,7 @@ _g_io_modules_ensure_loaded (void)
 #ifdef G_OS_WIN32
       g_type_ensure (g_win32_notification_backend_get_type ());
       g_type_ensure (_g_winhttp_vfs_get_type ());
+      g_type_ensure (g_memory_monitor_win32_get_type ());
 #endif
       g_type_ensure (_g_local_vfs_get_type ());
       g_type_ensure (_g_dummy_proxy_resolver_get_type ());
@@ -1429,7 +1474,7 @@ g_io_extension_point_set_required_type (GIOExtensionPoint *extension_point,
  * Gets the required type for @extension_point.
  *
  * Returns: the #GType that all implementations must have, 
- *     or #G_TYPE_INVALID if the extension point has no required type
+ *   or %G_TYPE_INVALID if the extension point has no required type
  */
 GType
 g_io_extension_point_get_required_type (GIOExtensionPoint *extension_point)
index e94b809..4457c49 100644 (file)
@@ -104,7 +104,7 @@ GTypeClass*        g_io_extension_ref_class                   (GIOExtension
 /* API for the modules to implement */
 
 /**
- * g_io_module_load:
+ * g_io_module_load: (skip)
  * @module: a #GIOModule.
  *
  * Required API for GIO modules to implement.
@@ -125,7 +125,7 @@ GLIB_AVAILABLE_IN_ALL
 void   g_io_module_load   (GIOModule *module);
 
 /**
- * g_io_module_unload:
+ * g_io_module_unload: (skip)
  * @module: a #GIOModule.
  *
  * Required API for GIO modules to implement.
diff --git a/gio/giowin32-afunix.h b/gio/giowin32-afunix.h
new file mode 100644 (file)
index 0000000..0e8e27f
--- /dev/null
@@ -0,0 +1,40 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2022 Red Hat, Inc.
+ *
+ * This library 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 library 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/>.
+ */
+
+#ifndef GIOWIN32_AFUNIX_H_
+#define GIOWIN32_AFUNIX_H_
+
+#ifdef HAVE_AFUNIX_H
+#include <afunix.h>
+#else
+
+/*
+ * Fallback definitions of things we need in afunix.h, if not available from the
+ * used Windows SDK or MinGW headers.
+ */
+#define UNIX_PATH_MAX 108
+
+typedef struct sockaddr_un {
+  ADDRESS_FAMILY sun_family;
+  char sun_path[UNIX_PATH_MAX];
+} SOCKADDR_UN, *PSOCKADDR_UN;
+
+#define SIO_AF_UNIX_GETPEERPID _WSAIOR(IOC_VENDOR, 256)
+#endif
+
+#endif /* GIOWIN32_AFUNIX_H_*/
index ac95801..82f1956 100644 (file)
@@ -710,6 +710,86 @@ escape_makefile_string (const char *string)
   return g_string_free (str, FALSE);
 }
 
+typedef enum {
+  COMPILER_GCC,
+  COMPILER_CLANG,
+  COMPILER_MSVC,
+  COMPILER_UNKNOWN
+} CompilerType;
+
+/* Get the compiler id from the platform, environment, or command line
+ *
+ * Keep compiler IDs consistent with https://mesonbuild.com/Reference-tables.html#compiler-ids
+ * for simplicity
+ */
+static CompilerType
+get_compiler_id (const char *compiler)
+{
+  char *base, *ext_p;
+  CompilerType compiler_type;
+
+  if (compiler == NULL)
+    {
+#ifdef G_OS_UNIX
+      const char *compiler_env = g_getenv ("CC");
+
+# ifdef __APPLE__
+      if (compiler_env == NULL || *compiler_env == '\0')
+        compiler = "clang";
+      else
+        compiler = compiler_env;
+# elif __linux__
+      if (compiler_env == NULL || *compiler_env == '\0')
+        compiler = "gcc";
+      else
+        compiler = compiler_env;
+# else
+      if (compiler_env == NULL || *compiler_env == '\0')
+        compiler = "unknown";
+      else
+        compiler = compiler_env;
+# endif
+#endif
+
+#ifdef G_OS_WIN32
+      if (g_getenv ("MSYSTEM") != NULL)
+        {
+          const char *compiler_env = g_getenv ("CC");
+
+          if (compiler_env == NULL || *compiler_env == '\0')
+            compiler = "gcc";
+          else
+            compiler = compiler_env;
+        }
+      else
+        compiler = "msvc";
+#endif
+    }
+
+  base = g_path_get_basename (compiler);
+  ext_p = strrchr (base, '.');
+  if (ext_p != NULL)
+    {
+      gsize offset = ext_p - base;
+      base[offset] = '\0';
+    }
+
+  compiler = base;
+
+  if (g_strcmp0 (compiler, "gcc") == 0)
+    compiler_type = COMPILER_GCC;
+  else if (g_strcmp0 (compiler, "clang") == 0)
+    compiler_type = COMPILER_CLANG;
+  else if (g_strcmp0 (compiler, "msvc") == 0)
+    compiler_type = COMPILER_MSVC;
+  else
+    compiler_type = COMPILER_UNKNOWN;
+
+  g_free (base);
+
+  return compiler_type;
+}
+
 int
 main (int argc, char **argv)
 {
@@ -732,6 +812,8 @@ main (int argc, char **argv)
   char *c_name = NULL;
   char *c_name_no_underscores;
   const char *linkage = "extern";
+  char *compiler = NULL;
+  CompilerType compiler_type = COMPILER_GCC;
   GOptionContext *context;
   GOptionEntry entries[] = {
     { "version", 0, 0, G_OPTION_ARG_NONE, &show_version_and_exit, N_("Show program version and exit"), NULL },
@@ -747,6 +829,7 @@ main (int argc, char **argv)
     { "internal", 0, 0, G_OPTION_ARG_NONE, &internal, N_("Don’t export functions; declare them G_GNUC_INTERNAL"), NULL },
     { "external-data", 0, 0, G_OPTION_ARG_NONE, &external_data, N_("Don’t embed resource data in the C file; assume it's linked externally instead"), NULL },
     { "c-name", 0, 0, G_OPTION_ARG_STRING, &c_name, N_("C identifier name used for the generated source code"), NULL },
+    { "compiler", 'C', 0, G_OPTION_ARG_STRING, &compiler, N_("The target C compiler (default: the CC environment variable)"), NULL },
     G_OPTION_ENTRY_NULL
   };
 
@@ -802,6 +885,9 @@ main (int argc, char **argv)
   if (internal)
     linkage = "G_GNUC_INTERNAL";
 
+  compiler_type = get_compiler_id (compiler);
+  g_free (compiler);
+
   srcfile = argv[1];
 
   xmllint = g_strdup (g_getenv ("XMLLINT"));
@@ -1105,40 +1191,41 @@ main (int argc, char **argv)
         }
       else
         {
-          /* For Visual Studio builds: Avoid surpassing the 65535-character limit for a string, GitLab issue #1580 */
-          g_fprintf (file, "#ifdef _MSC_VER\n");
-          g_fprintf (file,
-                     "static const SECTION union { const guint8 data[%"G_GSIZE_FORMAT"]; const double alignment; void * const ptr;}  %s_resource_data = { {\n",
-                     data_size + 1 /* nul terminator */, c_name);
-
-          for (i = 0; i < data_size; i++)
+          if (compiler_type == COMPILER_MSVC || compiler_type == COMPILER_UNKNOWN)
             {
-              if (i % 16 == 0)
-                g_fprintf (file, "  ");
-              g_fprintf (file, "0%3.3o", (int)data[i]);
-              if (i != data_size - 1)
-                g_fprintf (file, ", ");
-              if (i % 16 == 15 || i == data_size - 1)
-                g_fprintf (file, "\n");
-            }
+              /* For Visual Studio builds: Avoid surpassing the 65535-character limit for a string, GitLab issue #1580 */
+              g_fprintf (file,
+                         "static const SECTION union { const guint8 data[%"G_GSIZE_FORMAT"]; const double alignment; void * const ptr;}  %s_resource_data = { {\n",
+                         data_size + 1 /* nul terminator */, c_name);
 
-          g_fprintf (file, "} };\n");
-
-          /* For other compilers, use the long string approach */
-          g_fprintf (file, "#else /* _MSC_VER */\n");
-          g_fprintf (file,
-                     "static const SECTION union { const guint8 data[%"G_GSIZE_FORMAT"]; const double alignment; void * const ptr;}  %s_resource_data = {\n  \"",
-                     data_size + 1 /* nul terminator */, c_name);
+              for (i = 0; i < data_size; i++)
+                {
+                  if (i % 16 == 0)
+                    g_fprintf (file, "  ");
+                  g_fprintf (file, "0%3.3o", (int)data[i]);
+                  if (i != data_size - 1)
+                    g_fprintf (file, ", ");
+                  if (i % 16 == 15 || i == data_size - 1)
+                     g_fprintf (file, "\n");
+                }
 
-          for (i = 0; i < data_size; i++)
-            {
-              g_fprintf (file, "\\%3.3o", (int)data[i]);
-              if (i % 16 == 15)
-                g_fprintf (file, "\"\n  \"");
+              g_fprintf (file, "} };\n");
             }
+          else
+            {
+              g_fprintf (file,
+                         "static const SECTION union { const guint8 data[%"G_GSIZE_FORMAT"]; const double alignment; void * const ptr;}  %s_resource_data = {\n  \"",
+                         data_size + 1 /* nul terminator */, c_name);
 
-          g_fprintf (file, "\" };\n");
-          g_fprintf (file, "#endif /* !_MSC_VER */\n");
+              for (i = 0; i < data_size; i++)
+                {
+                  g_fprintf (file, "\\%3.3o", (int)data[i]);
+                  if (i % 16 == 15)
+                    g_fprintf (file, "\"\n  \"");
+                }
+
+              g_fprintf (file, "\" };\n");
+            }
         }
 
       g_fprintf (file,
index 7e1152f..83184e1 100644 (file)
@@ -1038,7 +1038,7 @@ schema_state_add_override (SchemaState  *state,
                            GError      **error)
 {
   SchemaState *parent;
-  KeyState *original;
+  KeyState *original = NULL;
 
   if (state->extends == NULL)
     {
@@ -1386,14 +1386,14 @@ start_element (GMarkupParseContext  *context,
         }
       else if (strcmp (element_name, "override") == 0)
         {
-          const gchar *name, *l10n, *context;
+          const gchar *name, *l10n, *str_context;
 
-          if (COLLECT (STRING,            "name",    &name,
-                       OPTIONAL | STRING, "l10n",    &l10n,
-                       OPTIONAL | STRING, "context", &context))
+          if (COLLECT (STRING, "name", &name,
+                       OPTIONAL | STRING, "l10n", &l10n,
+                       OPTIONAL | STRING, "context", &str_context))
             schema_state_add_override (state->schema_state,
                                        &state->key_state, &state->string,
-                                       name, l10n, context, error);
+                                       name, l10n, str_context, error);
           return;
         }
     }
@@ -1403,11 +1403,11 @@ start_element (GMarkupParseContext  *context,
     {
       if (strcmp (element_name, "default") == 0)
         {
-          const gchar *l10n, *context;
-          if (COLLECT (STRING | OPTIONAL, "l10n",    &l10n,
-                       STRING | OPTIONAL, "context", &context))
+          const gchar *l10n, *str_context;
+          if (COLLECT (STRING | OPTIONAL, "l10n", &l10n,
+                       STRING | OPTIONAL, "context", &str_context))
             state->string = key_state_start_default (state->key_state,
-                                                     l10n, context, error);
+                                                     l10n, str_context, error);
           return;
         }
 
index eb797ca..0411353 100644 (file)
@@ -135,7 +135,7 @@ g_list_model_default_init (GListModelInterface *iface)
    * from @list. At @position, @removed items were removed and @added
    * items were added in their place.
    *
-   * Note: If @removed != @added, the positions of all later items
+   * Note: If `removed != added`, the positions of all later items
    * in the model change.
    *
    * Since: 2.44
@@ -157,9 +157,11 @@ g_list_model_default_init (GListModelInterface *iface)
  * g_list_model_get_item_type:
  * @list: a #GListModel
  *
- * Gets the type of the items in @list. All items returned from
- * g_list_model_get_type() are of that type or a subtype, or are an
- * implementation of that interface.
+ * Gets the type of the items in @list.
+ *
+ * All items returned from g_list_model_get_item() are of the type
+ * returned by this function, or a subtype, or if the type is an
+ * interface, they are an implementation of that interface.
  *
  * The item type of a #GListModel can not change during the life of the
  * model.
@@ -203,11 +205,15 @@ g_list_model_get_n_items (GListModel *list)
  * @list: a #GListModel
  * @position: the position of the item to fetch
  *
- * Get the item at @position. If @position is greater than the number of
- * items in @list, %NULL is returned.
+ * Get the item at @position.
+ *
+ * If @position is greater than the number of items in @list, %NULL is
+ * returned.
  *
  * %NULL is never returned for an index that is smaller than the length
- * of the list.  See g_list_model_get_n_items().
+ * of the list.
+ *
+ * See also: g_list_model_get_n_items()
  *
  * Returns: (transfer full) (nullable): the item at @position.
  *
@@ -227,11 +233,18 @@ g_list_model_get_item (GListModel *list,
  * @list: a #GListModel
  * @position: the position of the item to fetch
  *
- * Get the item at @position. If @position is greater than the number of
- * items in @list, %NULL is returned.
+ * Get the item at @position.
+ *
+ * If @position is greater than the number of items in @list, %NULL is
+ * returned.
  *
  * %NULL is never returned for an index that is smaller than the length
- * of the list.  See g_list_model_get_n_items().
+ * of the list.
+ *
+ * This function is meant to be used by language bindings in place
+ * of g_list_model_get_item().
+ *
+ * See also: g_list_model_get_n_items()
  *
  * Returns: (transfer full) (nullable): the object at @position.
  *
index e04e921..f738045 100644 (file)
@@ -297,7 +297,7 @@ inline static guint32   _g_stat_nlink     (const GLocalFileStat *buf) { return b
 #endif
 inline static dev_t     _g_stat_dev       (const GLocalFileStat *buf) { return buf->st_dev; }
 inline static ino_t     _g_stat_ino       (const GLocalFileStat *buf) { return buf->st_ino; }
-inline static off_t     _g_stat_size      (const GLocalFileStat *buf) { return buf->st_size; }
+inline static goffset   _g_stat_size      (const GLocalFileStat *buf) { return buf->st_size; }
 
 #ifndef G_OS_WIN32
 inline static uid_t     _g_stat_uid       (const GLocalFileStat *buf) { return buf->st_uid; }
@@ -317,11 +317,19 @@ inline static blkcnt_t  _g_stat_blocks    (const GLocalFileStat *buf) { return b
 inline static time_t    _g_stat_atime     (const GLocalFileStat *buf) { return buf->st_atime; }
 inline static time_t    _g_stat_ctime     (const GLocalFileStat *buf) { return buf->st_ctime; }
 inline static time_t    _g_stat_mtime     (const GLocalFileStat *buf) { return buf->st_mtime; }
+#else
+inline static time_t    _g_stat_atime     (const GLocalFileStat *buf) { return buf->st_atim.tv_sec; }
+inline static time_t    _g_stat_ctime     (const GLocalFileStat *buf) { return buf->st_ctim.tv_sec; }
+inline static time_t    _g_stat_mtime     (const GLocalFileStat *buf) { return buf->st_mtim.tv_sec; }
 #endif
-#ifdef HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC
+#if defined(HAVE_STRUCT_STAT_ST_MTIM_TV_NSEC) || defined(G_OS_WIN32)
 inline static guint32   _g_stat_atim_nsec (const GLocalFileStat *buf) { return buf->st_atim.tv_nsec; }
 inline static guint32   _g_stat_ctim_nsec (const GLocalFileStat *buf) { return buf->st_ctim.tv_nsec; }
 inline static guint32   _g_stat_mtim_nsec (const GLocalFileStat *buf) { return buf->st_mtim.tv_nsec; }
+#else
+inline static guint32   _g_stat_atim_nsec (const GLocalFileStat *buf) { return 0; }
+inline static guint32   _g_stat_ctim_nsec (const GLocalFileStat *buf) { return 0; }
+inline static guint32   _g_stat_mtim_nsec (const GLocalFileStat *buf) { return 0; }
 #endif
 
 #endif  /* !HAVE_STATX */
index 7e92256..68afd7b 100644 (file)
@@ -348,7 +348,6 @@ g_file_monitor_source_handle_event (GFileMonitorSource *fms,
                                     gint64              event_time)
 {
   gboolean interesting = TRUE;
-  GFileMonitor *instance = NULL;
 
   g_assert (!child || is_basename (child));
   g_assert (!rename_to || is_basename (rename_to));
@@ -359,9 +358,24 @@ g_file_monitor_source_handle_event (GFileMonitorSource *fms,
 
   g_mutex_lock (&fms->lock);
 
-  /* monitor is already gone -- don't bother */
-  instance = g_weak_ref_get (&fms->instance_ref);
-  if (instance == NULL)
+  /* NOTE:
+   *
+   * We process events even if the file monitor has already been disposed.
+   * The reason is that we must not take a reference to the instance here as
+   * destroying it from the event handling thread will lead to a deadlock when
+   * taking the lock in _ih_sub_cancel.
+   *
+   * This results in seemingly-unbounded growth of the `event_queue` with the
+   * calls to `g_file_monitor_source_queue_event()`. However, each of those sets
+   * the ready time on the #GSource, which means that it will be dispatched in
+   * a subsequent iteration of the #GMainContext it’s attached to. At that
+   * point, `g_file_monitor_source_dispatch()` will return %FALSE, and this will
+   * trigger finalisation of the source. That will clear the `event_queue`.
+   *
+   * If the source is no longer attached, this will return early to prevent
+   * unbounded queueing.
+   */
+  if (g_source_is_destroyed ((GSource *) fms))
     {
       g_mutex_unlock (&fms->lock);
       return TRUE;
@@ -406,7 +420,7 @@ g_file_monitor_source_handle_event (GFileMonitorSource *fms,
       g_assert (!other && rename_to);
       if (fms->flags & (G_FILE_MONITOR_WATCH_MOVES | G_FILE_MONITOR_SEND_MOVED))
         {
-          GFile *other;
+          GFile *other_file;
           const gchar *dirname;
           gchar *allocated_dirname = NULL;
           GFileMonitorEvent event;
@@ -421,11 +435,11 @@ g_file_monitor_source_handle_event (GFileMonitorSource *fms,
               dirname = allocated_dirname;
             }
 
-          other = g_local_file_new_from_dirname_and_basename (dirname, rename_to);
+          other_file = g_local_file_new_from_dirname_and_basename (dirname, rename_to);
           g_file_monitor_source_file_changes_done (fms, rename_to);
-          g_file_monitor_source_send_event (fms, event, child, other);
+          g_file_monitor_source_send_event (fms, event, child, other_file);
 
-          g_object_unref (other);
+          g_object_unref (other_file);
           g_free (allocated_dirname);
         }
       else
@@ -452,7 +466,6 @@ g_file_monitor_source_handle_event (GFileMonitorSource *fms,
   g_file_monitor_source_update_ready_time (fms);
 
   g_mutex_unlock (&fms->lock);
-  g_clear_object (&instance);
 
   return interesting;
 }
@@ -599,9 +612,9 @@ g_file_monitor_source_dispose (GFileMonitorSource *fms)
 
   g_file_monitor_source_update_ready_time (fms);
 
-  g_mutex_unlock (&fms->lock);
-
   g_source_destroy ((GSource *) fms);
+
+  g_mutex_unlock (&fms->lock);
 }
 
 static void
index 71a9926..5d6a488 100644 (file)
@@ -855,7 +855,7 @@ handle_overwrite_open (const char    *filename,
   int open_flags;
   int res;
   int mode;
-  int errsv;
+  int errsv = 0;
   gboolean replace_destination_set = (flags & G_FILE_CREATE_REPLACE_DESTINATION);
 
   mode = mode_from_flags_or_info (flags, reference_info);
@@ -1179,7 +1179,7 @@ handle_overwrite_open (const char    *filename,
       /* Seek back to the start of the file after the backup copy */
       if (lseek (fd, 0, SEEK_SET) == -1)
        {
-          int errsv = errno;
+          errsv = errno;
 
          g_set_error (error, G_IO_ERROR,
                       g_io_error_from_errno (errsv),
@@ -1195,7 +1195,7 @@ handle_overwrite_open (const char    *filename,
       
       if (g_unlink (filename) != 0)
        {
-         int errsv = errno;
+          errsv = errno;
          
          g_set_error (error, G_IO_ERROR,
                       g_io_error_from_errno (errsv),
@@ -1211,8 +1211,10 @@ handle_overwrite_open (const char    *filename,
       fd = g_open (filename, open_flags, mode);
       if (fd == -1)
        {
-         int errsv = errno;
-         char *display_name = g_filename_display_name (filename);
+    char *display_name;
+    errsv = errno;
+    display_name = g_filename_display_name (filename);
+
          g_set_error (error, G_IO_ERROR,
                       g_io_error_from_errno (errsv),
                       _("Error opening file “%s”: %s"),
@@ -1230,7 +1232,7 @@ handle_overwrite_open (const char    *filename,
        if (ftruncate (fd, 0) == -1)
 #endif
          {
-           int errsv = errno;
+           errsv = errno;
            
            g_set_error (error, G_IO_ERROR,
                         g_io_error_from_errno (errsv),
diff --git a/gio/gmemorymonitorwin32.c b/gio/gmemorymonitorwin32.c
new file mode 100644 (file)
index 0000000..c0e09a5
--- /dev/null
@@ -0,0 +1,261 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright 2022 Red Hat, Inc.
+ *
+ * This library 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 library 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 "config.h"
+
+#include "gmemorymonitor.h"
+#include "gioerror.h"
+#include "ginitable.h"
+#include "giomodule-priv.h"
+#include "glibintl.h"
+#include "glib/gstdio.h"
+#include "gcancellable.h"
+
+#include <windows.h>
+
+#define G_TYPE_MEMORY_MONITOR_WIN32 (g_memory_monitor_win32_get_type ())
+G_DECLARE_FINAL_TYPE (GMemoryMonitorWin32, g_memory_monitor_win32, G, MEMORY_MONITOR_WIN32, GObject)
+
+#define G_MEMORY_MONITOR_WIN32_GET_INITABLE_IFACE(o) (G_TYPE_INSTANCE_GET_INTERFACE ((o), G_TYPE_INITABLE, GInitable))
+
+static void g_memory_monitor_win32_iface_init (GMemoryMonitorInterface *iface);
+static void g_memory_monitor_win32_initable_iface_init (GInitableIface *iface);
+
+struct _GMemoryMonitorWin32
+{
+  GObject parent_instance;
+
+  HANDLE event;
+  HANDLE mem;
+  HANDLE thread;
+};
+
+G_DEFINE_TYPE_WITH_CODE (GMemoryMonitorWin32, g_memory_monitor_win32, G_TYPE_OBJECT,
+                         G_IMPLEMENT_INTERFACE (G_TYPE_INITABLE,
+                                                g_memory_monitor_win32_initable_iface_init)
+                         G_IMPLEMENT_INTERFACE (G_TYPE_MEMORY_MONITOR,
+                                                g_memory_monitor_win32_iface_init)
+                         _g_io_modules_ensure_extension_points_registered ();
+                         g_io_extension_point_implement (G_MEMORY_MONITOR_EXTENSION_POINT_NAME,
+                                                         g_define_type_id,
+                                                         "win32",
+                                                         30))
+
+static void
+g_memory_monitor_win32_init (GMemoryMonitorWin32 *win32)
+{
+}
+
+static gboolean
+watch_handler (gpointer user_data)
+{
+  GMemoryMonitorWin32 *win32 = user_data;
+
+  g_signal_emit_by_name (win32, "low-memory-warning",
+                         G_MEMORY_MONITOR_WARNING_LEVEL_LOW);
+
+  return G_SOURCE_REMOVE;
+}
+
+/* Thread which watches for win32 memory resource events */
+static DWORD WINAPI
+watch_thread_function (LPVOID parameter)
+{
+  GWeakRef *weak_ref = parameter;
+  GMemoryMonitorWin32 *win32 = NULL;
+  HANDLE handles[2] = { 0, };
+  DWORD result;
+  BOOL low_memory_state;
+
+  win32 = g_weak_ref_get (weak_ref);
+  if (!win32)
+    goto end;
+
+  if (!DuplicateHandle (GetCurrentProcess (),
+                        win32->event,
+                        GetCurrentProcess (),
+                        &handles[0],
+                        0,
+                        FALSE,
+                        DUPLICATE_SAME_ACCESS))
+    {
+      gchar *emsg;
+
+      emsg = g_win32_error_message (GetLastError ());
+      g_debug ("DuplicateHandle failed: %s", emsg);
+      g_free (emsg);
+      goto end;
+    }
+
+  if (!DuplicateHandle (GetCurrentProcess (),
+                        win32->mem,
+                        GetCurrentProcess (),
+                        &handles[1],
+                        0,
+                        FALSE,
+                        DUPLICATE_SAME_ACCESS))
+    {
+      gchar *emsg;
+
+      emsg = g_win32_error_message (GetLastError ());
+      g_debug ("DuplicateHandle failed: %s", emsg);
+      g_free (emsg);
+      goto end;
+    }
+
+  g_clear_object (&win32);
+
+  while (1)
+    {
+      if (!QueryMemoryResourceNotification (handles[1], &low_memory_state))
+        {
+          gchar *emsg;
+
+          emsg = g_win32_error_message (GetLastError ());
+          g_debug ("QueryMemoryResourceNotification failed: %s", emsg);
+          g_free (emsg);
+          break;
+        }
+
+      win32 = g_weak_ref_get (weak_ref);
+      if (!win32)
+        break;
+
+      if (low_memory_state)
+        {
+          g_idle_add_full (G_PRIORITY_DEFAULT,
+                           watch_handler,
+                           g_steal_pointer (&win32),
+                           g_object_unref);
+          /* throttle a bit the loop */
+          g_usleep (G_USEC_PER_SEC);
+          continue;
+        }
+
+      g_clear_object (&win32);
+
+      result = WaitForMultipleObjects (G_N_ELEMENTS (handles), handles, FALSE, INFINITE);
+      switch (result)
+        {
+          case WAIT_OBJECT_0 + 1:
+            continue;
+
+          case WAIT_FAILED:
+            {
+              gchar *emsg;
+
+              emsg = g_win32_error_message (GetLastError ());
+              g_debug ("WaitForMultipleObjects failed: %s", emsg);
+              g_free (emsg);
+            }
+            G_GNUC_FALLTHROUGH;
+          default:
+            goto end;
+        }
+    }
+
+end:
+  if (handles[0])
+    CloseHandle (handles[0]);
+  if (handles[1])
+    CloseHandle (handles[1]);
+  g_clear_object (&win32);
+  g_weak_ref_clear (weak_ref);
+  g_free (weak_ref);
+  return 0;
+}
+
+static gboolean
+g_memory_monitor_win32_initable_init (GInitable     *initable,
+                                      GCancellable  *cancellable,
+                                      GError       **error)
+{
+  GMemoryMonitorWin32 *win32 = G_MEMORY_MONITOR_WIN32 (initable);
+  GWeakRef *weak_ref = NULL;
+
+  win32->event = CreateEvent (NULL, FALSE, FALSE, NULL);
+  if (win32->event == NULL)
+    {
+      g_set_error_literal (error, G_IO_ERROR, g_io_error_from_errno (GetLastError ()),
+                           "Failed to create event");
+      return FALSE;
+    }
+
+  win32->mem = CreateMemoryResourceNotification (LowMemoryResourceNotification);
+  if (win32->mem == NULL)
+    {
+      g_set_error_literal (error, G_IO_ERROR, g_io_error_from_errno (GetLastError ()),
+                           "Failed to create resource notification handle");
+      return FALSE;
+    }
+
+  weak_ref = g_new0 (GWeakRef, 1);
+  g_weak_ref_init (weak_ref, win32);
+  /* Use CreateThread (not GThread) with a small stack to make it more lightweight. */
+  win32->thread = CreateThread (NULL, 1024, watch_thread_function, weak_ref, 0, NULL);
+  if (win32->thread == NULL)
+    {
+      g_set_error_literal (error, G_IO_ERROR, g_io_error_from_errno (GetLastError ()),
+                           "Failed to create memory resource notification thread");
+      g_weak_ref_clear (weak_ref);
+      g_free (weak_ref);
+      return FALSE;
+    }
+
+  return TRUE;
+}
+
+static void
+g_memory_monitor_win32_finalize (GObject *object)
+{
+  GMemoryMonitorWin32 *win32 = G_MEMORY_MONITOR_WIN32 (object);
+
+  if (win32->thread)
+    {
+      SetEvent (win32->event);
+      WaitForSingleObject (win32->thread, INFINITE);
+      CloseHandle (win32->thread);
+    }
+
+  if (win32->event)
+    CloseHandle (win32->event);
+
+  if (win32->mem)
+    CloseHandle (win32->mem);
+
+  G_OBJECT_CLASS (g_memory_monitor_win32_parent_class)->finalize (object);
+}
+
+static void
+g_memory_monitor_win32_class_init (GMemoryMonitorWin32Class *nl_class)
+{
+  GObjectClass *gobject_class = G_OBJECT_CLASS (nl_class);
+
+  gobject_class->finalize = g_memory_monitor_win32_finalize;
+}
+
+static void
+g_memory_monitor_win32_iface_init (GMemoryMonitorInterface *monitor_iface)
+{
+}
+
+static void
+g_memory_monitor_win32_initable_iface_init (GInitableIface *iface)
+{
+  iface->init = g_memory_monitor_win32_initable_init;
+}
index b120cce..6a410eb 100644 (file)
@@ -29,6 +29,7 @@
 #include "gioerror.h"
 #include "string.h"
 #include "glibintl.h"
+#include "gutilsprivate.h"
 
 
 /**
@@ -596,17 +597,6 @@ array_resize (GMemoryOutputStream  *ostream,
   return TRUE;
 }
 
-static gsize
-g_nearest_pow (gsize num)
-{
-  gsize n = 1;
-
-  while (n < num && n > 0)
-    n <<= 1;
-
-  return n;
-}
-
 static gssize
 g_memory_output_stream_write (GOutputStream  *stream,
                               const void     *buffer,
index 2b8571e..f5ba9d8 100644 (file)
@@ -445,7 +445,7 @@ g_network_service_address_enumerator_next (GSocketAddressEnumerator  *enumerator
     {
       if (srv_enum->addr_enum == NULL && srv_enum->t)
         {
-          GError *error = NULL;
+          GError *my_error = NULL;
           gchar *uri;
           gchar *hostname;
           GSocketConnectable *addr;
@@ -477,15 +477,15 @@ g_network_service_address_enumerator_next (GSocketAddressEnumerator  *enumerator
 
           addr = g_network_address_parse_uri (uri,
                                               g_srv_target_get_port (target),
-                                              &error);
+                                              &my_error);
           g_free (uri);
 
           if (addr == NULL)
             {
               if (srv_enum->error == NULL)
-                srv_enum->error = error;
+                srv_enum->error = my_error;
               else
-                g_error_free (error);
+                g_error_free (my_error);
               continue;
             }
 
@@ -498,18 +498,18 @@ g_network_service_address_enumerator_next (GSocketAddressEnumerator  *enumerator
 
       if (srv_enum->addr_enum)
         {
-          GError *error = NULL;
+          GError *my_error = NULL;
 
           ret = g_socket_address_enumerator_next (srv_enum->addr_enum,
                                                   cancellable,
-                                                  &error);
+                                                  &my_error);
 
-          if (error)
+          if (my_error)
             {
               if (srv_enum->error == NULL)
-                srv_enum->error = error;
+                srv_enum->error = my_error;
               else
-                g_error_free (error);
+                g_error_free (my_error);
             }
 
           if (!ret)
index 6ef8f03..2f527d8 100644 (file)
@@ -108,10 +108,10 @@ g_openuri_portal_open_uri (const char  *uri,
       errsv = errno;
       if (fd == -1)
         {
-         g_free (path);
-         g_variant_builder_clear (&opt_builder);
           g_set_error (error, G_IO_ERROR, g_io_error_from_errno (errsv),
                        "Failed to open '%s'", path);
+          g_free (path);
+          g_variant_builder_clear (&opt_builder);
           return FALSE;
         }
 
index 8e48803..3547b8f 100644 (file)
@@ -293,7 +293,7 @@ g_output_stream_write_all (GOutputStream  *stream,
   gssize res;
 
   g_return_val_if_fail (G_IS_OUTPUT_STREAM (stream), FALSE);
-  g_return_val_if_fail (buffer != NULL, FALSE);
+  g_return_val_if_fail (buffer != NULL || count == 0, FALSE);
 
   _bytes_written = 0;
   while (_bytes_written < count)
index f5028b3..00bdc94 100644 (file)
  * some systems).
  *
  * When in “Low Power” mode, it is recommended that applications:
- * - disabling automatic downloads
+ * - disable automatic downloads;
  * - reduce the rate of refresh from online sources such as calendar or
- *   email synchronisation
- * - if the application has expensive visual effects, reduce them
+ *   email synchronisation;
+ * - reduce the use of expensive visual effects.
  *
  * It is also likely that OS components providing services to applications will
  * lower their own background activity, for the sake of the system.
index 654baad..de932ff 100644 (file)
@@ -25,6 +25,7 @@
 
 #include "gasyncresult.h"
 #include "ginetaddress.h"
+#include "gioerror.h"
 #include "glibintl.h"
 #include "gnetworkaddress.h"
 #include "gnetworkingprivate.h"
@@ -87,6 +88,20 @@ struct _GProxyAddressEnumeratorPrivate
   gboolean                  supports_hostname;
   GList                    *next_dest_ip;
   GError                   *last_error;
+
+  /* ever_enumerated is TRUE after we've returned a result for the first time
+   * via g_proxy_address_enumerator_next() or _next_async(). If FALSE, we have
+   * never returned yet, and should return an error if returning NULL because
+   * it does not make sense for a proxy resolver to return NULL except on error.
+   * (Whereas a DNS resolver would return NULL with no error to indicate "no
+   * results", a proxy resolver would want to return "direct://" instead, so
+   * NULL without error does not make sense for us.)
+   *
+   * But if ever_enumerated is TRUE, then we must not report any further errors
+   * (except for G_IO_ERROR_CANCELLED), because this is an API contract of
+   * GSocketAddressEnumerator.
+   */
+  gboolean                  ever_enumerated;
 };
 
 G_DEFINE_TYPE_WITH_PRIVATE (GProxyAddressEnumerator, g_proxy_address_enumerator, G_TYPE_SOCKET_ADDRESS_ENUMERATOR)
@@ -171,8 +186,9 @@ g_proxy_address_enumerator_next (GSocketAddressEnumerator  *enumerator,
   GSocketAddress *result = NULL;
   GError *first_error = NULL;
 
-  if (priv->proxies == NULL)
+  if (!priv->ever_enumerated)
     {
+      g_assert (priv->proxies == NULL);
       priv->proxies = g_proxy_resolver_lookup (priv->proxy_resolver,
                                               priv->dest_uri,
                                               cancellable,
@@ -180,7 +196,10 @@ g_proxy_address_enumerator_next (GSocketAddressEnumerator  *enumerator,
       priv->next_proxy = priv->proxies;
 
       if (priv->proxies == NULL)
-       return NULL;
+       {
+         priv->ever_enumerated = TRUE;
+         return NULL;
+       }
     }
 
   while (result == NULL && (*priv->next_proxy || priv->addr_enum))
@@ -294,29 +313,37 @@ g_proxy_address_enumerator_next (GSocketAddressEnumerator  *enumerator,
        }
     }
 
-  if (result == NULL && first_error)
+  if (result == NULL && first_error && (!priv->ever_enumerated || g_error_matches (first_error, G_IO_ERROR, G_IO_ERROR_CANCELLED)))
     g_propagate_error (error, first_error);
   else if (first_error)
     g_error_free (first_error);
 
-  return result;
-}
+  if (result == NULL && error != NULL && *error == NULL && !priv->ever_enumerated)
+    g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_FAILED, "Unspecified proxy lookup failure");
 
+  priv->ever_enumerated = TRUE;
 
+  return result;
+}
 
 static void
 complete_async (GTask *task)
 {
   GProxyAddressEnumeratorPrivate *priv = g_task_get_task_data (task);
 
-  if (priv->last_error)
+  if (priv->last_error && (!priv->ever_enumerated || g_error_matches (priv->last_error, G_IO_ERROR, G_IO_ERROR_CANCELLED)))
     {
       g_task_return_error (task, priv->last_error);
       priv->last_error = NULL;
     }
+  else if (!priv->ever_enumerated)
+    g_task_return_new_error (task, G_IO_ERROR, G_IO_ERROR_FAILED, "Unspecified proxy lookup failure");
   else
     g_task_return_pointer (task, NULL, NULL);
 
+  priv->ever_enumerated = TRUE;
+
+  g_clear_error (&priv->last_error);
   g_object_unref (task);
 }
 
@@ -388,6 +415,7 @@ return_result (GTask *task)
        }
     }
 
+  priv->ever_enumerated = TRUE;
   g_task_return_pointer (task, result, g_object_unref);
   g_object_unref (task);
 }
index bae066a..a7171a2 100644 (file)
@@ -1200,7 +1200,7 @@ g_registry_backend_get_writable (GSettingsBackend *backend,
   GRegistryBackend *self = G_REGISTRY_BACKEND (backend);
   gchar *path_name;
   gunichar2 *path_namew;
-  gchar *value_name;
+  gchar *value_name = NULL;
   HKEY hpath;
   LONG result;
 
@@ -1495,14 +1495,14 @@ registry_cache_update (GRegistryBackend *self,
       child_item->readable = TRUE;
       if (changed && event != NULL)
         {
-          gchar *item;
+          gchar *item_path;
 
           if (partial_key_name == NULL)
-            item = g_strdup (buffer);
+            item_path = g_strdup (buffer);
           else
-            item = g_build_path ("/", partial_key_name, buffer, NULL);
+            item_path = g_build_path ("/", partial_key_name, buffer, NULL);
 
-          g_ptr_array_add (event->items, item);
+          g_ptr_array_add (event->items, item_path);
         }
 
       g_free (buffer);
index cd5445a..90b057c 100644 (file)
@@ -64,7 +64,8 @@ static guint signals[LAST_SIGNAL] = { 0 };
 
 struct _GResolverPrivate {
 #ifdef G_OS_UNIX
-  time_t resolv_conf_timestamp;
+  GMutex mutex;
+  time_t resolv_conf_timestamp;  /* protected by @mutex */
 #else
   int dummy;
 #endif
@@ -149,8 +150,24 @@ g_resolver_real_lookup_service_finish (GResolver            *resolver,
 }
 
 static void
+g_resolver_finalize (GObject *object)
+{
+#ifdef G_OS_UNIX
+  GResolver *resolver = G_RESOLVER (object);
+
+  g_mutex_clear (&resolver->priv->mutex);
+#endif
+
+  G_OBJECT_CLASS (g_resolver_parent_class)->finalize (object);
+}
+
+static void
 g_resolver_class_init (GResolverClass *resolver_class)
 {
+  GObjectClass *object_class = G_OBJECT_CLASS (resolver_class);
+
+  object_class->finalize = g_resolver_finalize;
+
   /* Automatically pass these over to the lookup_records methods */
   resolver_class->lookup_service = g_resolver_real_lookup_service;
   resolver_class->lookup_service_async = g_resolver_real_lookup_service_async;
@@ -185,6 +202,8 @@ g_resolver_init (GResolver *resolver)
 #ifdef G_OS_UNIX
   if (stat (_PATH_RESCONF, &st) == 0)
     resolver->priv->resolv_conf_timestamp = st.st_mtime;
+
+  g_mutex_init (&resolver->priv->mutex);
 #endif
 }
 
@@ -242,27 +261,23 @@ g_resolver_set_default (GResolver *resolver)
   G_UNLOCK (default_resolver);
 }
 
-/* Bionic has res_init() but it's not in any header */
-#ifdef __BIONIC__
-int res_init (void);
-#endif
-
 static void
-g_resolver_maybe_reload (GResolver *resolver)
+maybe_emit_reload (GResolver *resolver)
 {
 #ifdef G_OS_UNIX
   struct stat st;
 
   if (stat (_PATH_RESCONF, &st) == 0)
     {
+      g_mutex_lock (&resolver->priv->mutex);
       if (st.st_mtime != resolver->priv->resolv_conf_timestamp)
         {
           resolver->priv->resolv_conf_timestamp = st.st_mtime;
-#ifdef HAVE_RES_INIT
-          res_init ();
-#endif
+          g_mutex_unlock (&resolver->priv->mutex);
           g_signal_emit (resolver, signals[RELOAD], 0);
         }
+      else
+        g_mutex_unlock (&resolver->priv->mutex);
     }
 #endif
 }
@@ -444,7 +459,7 @@ lookup_by_name_real (GResolver                 *resolver,
       return NULL;
     }
 
-  g_resolver_maybe_reload (resolver);
+  maybe_emit_reload (resolver);
 
   if (flags != G_RESOLVER_NAME_LOOKUP_FLAGS_DEFAULT)
     {
@@ -530,7 +545,7 @@ g_resolver_lookup_by_name (GResolver     *resolver,
  *
  * This differs from g_resolver_lookup_by_name() in that you can modify
  * the lookup behavior with @flags. For example this can be used to limit
- * results with #G_RESOLVER_NAME_LOOKUP_FLAGS_IPV4_ONLY.
+ * results with %G_RESOLVER_NAME_LOOKUP_FLAGS_IPV4_ONLY.
  *
  * Returns: (element-type GInetAddress) (transfer full): a non-empty #GList
  * of #GInetAddress, or %NULL on error. You
@@ -602,7 +617,7 @@ lookup_by_name_async_real (GResolver                *resolver,
       return;
     }
 
-  g_resolver_maybe_reload (resolver);
+  maybe_emit_reload (resolver);
 
   if (flags != G_RESOLVER_NAME_LOOKUP_FLAGS_DEFAULT)
     {
@@ -839,7 +854,7 @@ g_resolver_lookup_by_address (GResolver     *resolver,
   g_return_val_if_fail (G_IS_RESOLVER (resolver), NULL);
   g_return_val_if_fail (G_IS_INET_ADDRESS (address), NULL);
 
-  g_resolver_maybe_reload (resolver);
+  maybe_emit_reload (resolver);
   return G_RESOLVER_GET_CLASS (resolver)->
     lookup_by_address (resolver, address, cancellable, error);
 }
@@ -868,7 +883,7 @@ g_resolver_lookup_by_address_async (GResolver           *resolver,
   g_return_if_fail (G_IS_RESOLVER (resolver));
   g_return_if_fail (G_IS_INET_ADDRESS (address));
 
-  g_resolver_maybe_reload (resolver);
+  maybe_emit_reload (resolver);
   G_RESOLVER_GET_CLASS (resolver)->
     lookup_by_address_async (resolver, address, cancellable, callback, user_data);
 }
@@ -985,7 +1000,7 @@ g_resolver_lookup_service (GResolver     *resolver,
       return NULL;
     }
 
-  g_resolver_maybe_reload (resolver);
+  maybe_emit_reload (resolver);
   targets = G_RESOLVER_GET_CLASS (resolver)->
     lookup_service (resolver, rrname, cancellable, error);
 
@@ -1037,7 +1052,7 @@ g_resolver_lookup_service_async (GResolver           *resolver,
       return;
     }
 
-  g_resolver_maybe_reload (resolver);
+  maybe_emit_reload (resolver);
   G_RESOLVER_GET_CLASS (resolver)->
     lookup_service_async (resolver, rrname, cancellable, callback, user_data);
 
@@ -1136,7 +1151,7 @@ g_resolver_lookup_records (GResolver            *resolver,
   g_return_val_if_fail (G_IS_RESOLVER (resolver), NULL);
   g_return_val_if_fail (rrname != NULL, NULL);
 
-  g_resolver_maybe_reload (resolver);
+  maybe_emit_reload (resolver);
   records = G_RESOLVER_GET_CLASS (resolver)->
     lookup_records (resolver, rrname, record_type, cancellable, error);
 
@@ -1170,7 +1185,7 @@ g_resolver_lookup_records_async (GResolver           *resolver,
   g_return_if_fail (G_IS_RESOLVER (resolver));
   g_return_if_fail (rrname != NULL);
 
-  g_resolver_maybe_reload (resolver);
+  maybe_emit_reload (resolver);
   G_RESOLVER_GET_CLASS (resolver)->
     lookup_records_async (resolver, rrname, record_type, cancellable, callback, user_data);
 }
@@ -1210,15 +1225,21 @@ g_resolver_lookup_records_finish (GResolver     *resolver,
 guint64
 g_resolver_get_serial (GResolver *resolver)
 {
+  guint64 result;
+
   g_return_val_if_fail (G_IS_RESOLVER (resolver), 0);
 
-  g_resolver_maybe_reload (resolver);
+  maybe_emit_reload (resolver);
 
 #ifdef G_OS_UNIX
-  return (guint64) resolver->priv->resolv_conf_timestamp;
+  g_mutex_lock (&resolver->priv->mutex);
+  result = resolver->priv->resolv_conf_timestamp;
+  g_mutex_unlock (&resolver->priv->mutex);
 #else
-  return 1;
+  result = 1;
 #endif
+
+  return result;
 }
 
 /**
index aa71897..7ebddda 100644 (file)
@@ -180,7 +180,7 @@ elf_foreach_resource_section (Elf             *elf,
                               SectionCallback  callback,
                               gpointer         data)
 {
-  int ret;
+  int ret G_GNUC_UNUSED  /* when compiling with G_DISABLE_ASSERT */;
   size_t shstrndx, shnum;
   size_t scnidx;
   Elf_Scn *scn;
@@ -477,8 +477,8 @@ static gint
 cmd_help (gboolean     requested,
           const gchar *command)
 {
-  const gchar *description;
-  const gchar *synopsis;
+  const gchar *description = NULL;
+  const gchar *synopsis = NULL;
   gchar *option;
   GString *string;
 
index 53933f9..45ca92b 100644 (file)
@@ -346,7 +346,7 @@ g_resource_find_overlay (const gchar    *path,
       if (envvar != NULL)
         {
           gchar **parts;
-          gint i, j;
+          gint j;
 
           parts = g_strsplit (envvar, G_SEARCHPATH_SEPARATOR_S, 0);
 
@@ -414,7 +414,7 @@ g_resource_find_overlay (const gchar    *path,
           /* We go out of the way to avoid malloc() in the normal case
            * where the environment variable is not set.
            */
-          static const gchar * const empty_strv[0 + 1];
+          static const gchar *const empty_strv[0 + 1] = { 0 };
           result = empty_strv;
         }
 
index 429e9ef..35dffeb 100644 (file)
@@ -447,8 +447,8 @@ g_resource_file_query_info (GFile                *file,
   GFileInfo *info;
   GFileAttributeMatcher *matcher;
   gboolean res;
-  gsize size;
-  guint32 resource_flags;
+  gsize size = 0;
+  guint32 resource_flags = 0;
   char **children;
   gboolean is_dir;
   char *base;
index 7559a6b..9352b70 100644 (file)
@@ -112,11 +112,19 @@ check_path (const gchar *path)
   return TRUE;
 }
 
+static int
+qsort_cmp (const void *a,
+           const void *b)
+{
+  return g_strcmp0 (*(gchar* const*)a, *(gchar* const*)b);
+}
+
 static void
 output_list (gchar **list)
 {
   gint i;
 
+  qsort (list, g_strv_length (list), sizeof (gchar*), qsort_cmp);
   for (i = 0; list[i]; i++)
     g_print ("%s\n", list[i]);
 }
@@ -195,6 +203,7 @@ gsettings_list_children (void)
   gint i;
 
   children = g_settings_list_children (global_settings);
+  qsort (children, g_strv_length (children), sizeof (gchar*), qsort_cmp);
   for (i = 0; children[i]; i++)
     {
       gsize len = strlen (children[i]);
@@ -239,6 +248,7 @@ enumerate (GSettings *settings)
   g_object_get (settings, "settings-schema", &schema, NULL);
 
   keys = g_settings_schema_list_keys (schema);
+  qsort (keys, g_strv_length (keys), sizeof (gchar*), qsort_cmp);
   for (i = 0; keys[i]; i++)
     {
       GVariant *value;
@@ -263,6 +273,7 @@ list_recursively (GSettings *settings)
 
   enumerate (settings);
   children = g_settings_list_children (settings);
+  qsort (children, g_strv_length (children), sizeof (gchar*), qsort_cmp);
   for (i = 0; children[i]; i++)
     {
       gboolean will_see_elsewhere = FALSE;
@@ -306,6 +317,7 @@ gsettings_list_recursively (void)
       gint i;
 
       g_settings_schema_source_list_schemas (global_schema_source, TRUE, &schemas, NULL);
+      qsort (schemas, g_strv_length (schemas), sizeof (gchar*), qsort_cmp);
 
       for (i = 0; schemas[i]; i++)
         {
@@ -558,8 +570,8 @@ static int
 gsettings_help (gboolean     requested,
                 const gchar *command)
 {
-  const gchar *description;
-  const gchar *synopsis;
+  const gchar *description = NULL;
+  const gchar *synopsis = NULL;
   GString *string;
 
   string = g_string_new (NULL);
index 9130daf..21ae2ff 100644 (file)
  * looks for a boolean property with the name "sensitivity" and
  * automatically binds it to the writability of the bound setting.
  * If this 'magic' gets in the way, it can be suppressed with the
- * #G_SETTINGS_BIND_NO_SENSITIVITY flag.
+ * %G_SETTINGS_BIND_NO_SENSITIVITY flag.
  *
  * ## Relocatable schemas # {#gsettings-relocatable}
  *
@@ -406,12 +406,12 @@ g_settings_real_writable_change_event (GSettings *settings,
 
   for (i = 0; i < n_keys; i++)
     {
-      const gchar *key = g_quark_to_string (keys[i]);
+      const gchar *key_name = g_quark_to_string (keys[i]);
 
-      if (g_str_has_suffix (key, "/"))
+      if (g_str_has_suffix (key_name, "/"))
         continue;
 
-      g_signal_emit (settings, g_settings_signals[SIGNAL_WRITABLE_CHANGED], keys[i], key);
+      g_signal_emit (settings, g_settings_signals[SIGNAL_WRITABLE_CHANGED], keys[i], key_name);
     }
 
   return FALSE;
@@ -970,7 +970,7 @@ g_settings_class_init (GSettingsClass *class)
  * call to g_settings_new().  The new #GSettings will hold a reference
  * on the context.  See g_main_context_push_thread_default().
  *
- * Returns: a new #GSettings object
+ * Returns: (not nullable) (transfer full): a new #GSettings object
  *
  * Since: 2.26
  */
@@ -1018,7 +1018,7 @@ path_is_valid (const gchar *path)
  * begins and ends with '/' and does not contain two consecutive '/'
  * characters.
  *
- * Returns: a new #GSettings object
+ * Returns: (not nullable) (transfer full): a new #GSettings object
  *
  * Since: 2.26
  */
@@ -1049,7 +1049,7 @@ g_settings_new_with_path (const gchar *schema_id,
  * the system to get a settings object that modifies the system default
  * settings instead of the settings for this user.
  *
- * Returns: a new #GSettings object
+ * Returns: (not nullable) (transfer full): a new #GSettings object
  *
  * Since: 2.26
  */
@@ -1078,7 +1078,7 @@ g_settings_new_with_backend (const gchar      *schema_id,
  * This is a mix of g_settings_new_with_backend() and
  * g_settings_new_with_path().
  *
- * Returns: a new #GSettings object
+ * Returns: (not nullable) (transfer full): a new #GSettings object
  *
  * Since: 2.26
  */
@@ -1128,7 +1128,7 @@ g_settings_new_with_backend_and_path (const gchar      *schema_id,
  * @path is non-%NULL and not equal to the path that the schema does
  * have.
  *
- * Returns: a new #GSettings object
+ * Returns: (not nullable) (transfer full): a new #GSettings object
  *
  * Since: 2.32
  */
@@ -1205,7 +1205,7 @@ g_settings_read_from_backend (GSettings          *settings,
  * It is a programmer error to give a @key that isn't contained in the
  * schema for @settings.
  *
- * Returns: a new #GVariant
+ * Returns: (not nullable) (transfer full): a new #GVariant
  *
  * Since: 2.26
  */
@@ -1725,7 +1725,7 @@ g_settings_set (GSettings   *settings,
  * what is returned by this function.  %NULL is valid; it is returned
  * just as any other value would be.
  *
- * Returns: (transfer full): the result, which may be %NULL
+ * Returns: (nullable) (transfer full): the result, which may be %NULL
  **/
 gpointer
 g_settings_get_mapped (GSettings           *settings,
@@ -1792,7 +1792,7 @@ g_settings_get_mapped (GSettings           *settings,
  * It is a programmer error to give a @key that isn't specified as
  * having a string type in the schema for @settings.
  *
- * Returns: a newly-allocated string
+ * Returns: (not nullable) (transfer full): a newly-allocated string
  *
  * Since: 2.26
  */
@@ -2186,7 +2186,7 @@ g_settings_set_boolean (GSettings  *settings,
  * It is a programmer error to give a @key that isn't specified as
  * having an array of strings type in the schema for @settings.
  *
- * Returns: (array zero-terminated=1) (transfer full): a
+ * Returns: (array zero-terminated=1) (not nullable) (transfer full): a
  * newly-allocated, %NULL-terminated array of strings, the value that
  * is stored at @key in @settings.
  *
@@ -2471,8 +2471,8 @@ g_settings_get_child (GSettings   *settings,
  * You should free the return value with g_strfreev() when you are done
  * with it.
  *
- * Returns: (transfer full) (element-type utf8): a list of the keys on
- *    @settings, in no defined order
+ * Returns: (not nullable) (transfer full) (element-type utf8): a list
+ *    of the keys on @settings, in no defined order
  * Deprecated: 2.46: Use g_settings_schema_list_keys() instead.
  */
 gchar **
@@ -2497,8 +2497,8 @@ g_settings_list_keys (GSettings *settings)
  * You should free the return value with g_strfreev() when you are done
  * with it.
  *
- * Returns: (transfer full) (element-type utf8): a list of the children on
- *    @settings, in no defined order
+ * Returns: (not nullable) (transfer full) (element-type utf8): a list of the children
+ *    on @settings, in no defined order
  */
 gchar **
 g_settings_list_children (GSettings *settings)
@@ -3382,7 +3382,7 @@ g_settings_action_enabled_changed (GSettings   *settings,
  * activations take the new value for the key (which must have the
  * correct type).
  *
- * Returns: (transfer full): a new #GAction
+ * Returns: (not nullable) (transfer full): a new #GAction
  *
  * Since: 2.32
  **/
index d3d5a07..cb35d28 100644 (file)
@@ -284,7 +284,7 @@ typedef gboolean      (*GSettingsGetMapping)                            (GVarian
  * @G_SETTINGS_BIND_SET: Update the setting when the #GObject property changes.
  *     It is an error to use this flag if the property is not readable.
  * @G_SETTINGS_BIND_NO_SENSITIVITY: Do not try to bind a "sensitivity" property to the writability of the setting
- * @G_SETTINGS_BIND_GET_NO_CHANGES: When set in addition to #G_SETTINGS_BIND_GET, set the #GObject property
+ * @G_SETTINGS_BIND_GET_NO_CHANGES: When set in addition to %G_SETTINGS_BIND_GET, set the #GObject property
  *     value initially from the setting, but do not listen for changes of the setting
  * @G_SETTINGS_BIND_INVERT_BOOLEAN: When passed to g_settings_bind(), uses a pair of mapping functions that invert
  *     the boolean value when mapping between the setting and the property.  The setting and property must both
index b124bc7..a1a23cc 100644 (file)
@@ -60,7 +60,7 @@ static gboolean g_settings_has_backend;
  * non-strictly-typed data that is stored in a hierarchy. To implement
  * an alternative storage backend for #GSettings, you need to implement
  * the #GSettingsBackend interface and then make it implement the
- * extension point #G_SETTINGS_BACKEND_EXTENSION_POINT_NAME.
+ * extension point %G_SETTINGS_BACKEND_EXTENSION_POINT_NAME.
  *
  * The interface defines methods for reading and writing values, a
  * method for determining if writing of certain values will fail
@@ -703,7 +703,7 @@ g_settings_backend_changed_tree (GSettingsBackend *backend,
  * backend (ie: the one that the backend would contain if
  * g_settings_reset() were called).
  *
- * Returns: the value that was read, or %NULL
+ * Returns: (nullable) (transfer full): the value that was read, or %NULL
  */
 GVariant *
 g_settings_backend_read (GSettingsBackend   *backend,
@@ -741,7 +741,7 @@ g_settings_backend_read (GSettingsBackend   *backend,
  * value for themselves, then this will return %NULL (even if the
  * sysadmin has provided a default value).
  *
- * Returns: the value that was read, or %NULL
+ * Returns: (nullable) (transfer full): the value that was read, or %NULL
  */
 GVariant *
 g_settings_backend_read_user_value (GSettingsBackend   *backend,
@@ -1041,7 +1041,8 @@ g_settings_backend_get_default (void)
  * If this is not implemented in the backend, then a %TRUE
  * #GSimplePermission is returned.
  *
- * Returns: a non-%NULL #GPermission. Free with g_object_unref()
+ * Returns: (not nullable) (transfer full): a non-%NULL #GPermission.
+ *     Free with g_object_unref()
  */
 GPermission *
 g_settings_backend_get_permission (GSettingsBackend *backend,
index 3b5ba0d..ef4ec17 100644 (file)
@@ -202,7 +202,7 @@ static GSettingsSchemaSource *schema_sources;
  *
  * Increase the reference count of @source, returning a new reference.
  *
- * Returns: a new reference to @source
+ * Returns: (transfer full) (not nullable): a new reference to @source
  *
  * Since: 2.32
  **/
@@ -869,9 +869,9 @@ ensure_schema_lists (void)
  *
  * Deprecated.
  *
- * Returns: (element-type utf8) (transfer none):  a list of #GSettings
- *   schemas that are available, in no defined order.  The list must not be
- *   modified or freed.
+ * Returns: (element-type utf8) (transfer none) (not nullable): a list of
+ *   #GSettings schemas that are available, in no defined order.  The list
+ *   must not be modified or freed.
  *
  * Since: 2.26
  *
@@ -893,9 +893,9 @@ g_settings_list_schemas (void)
  *
  * Deprecated.
  *
- * Returns: (element-type utf8) (transfer none): a list of relocatable
- *   #GSettings schemas that are available, in no defined order.  The list must
- *   not be modified or freed.
+ * Returns: (element-type utf8) (transfer none) (not nullable): a list of
+ *   relocatable #GSettings schemas that are available, in no defined order.
+ *   The list must not be modified or freed.
  *
  * Since: 2.28
  *
@@ -915,7 +915,7 @@ g_settings_list_relocatable_schemas (void)
  *
  * Increase the reference count of @schema, returning a new reference.
  *
- * Returns: a new reference to @schema
+ * Returns: (transfer full) (not nullable): a new reference to @schema
  *
  * Since: 2.32
  **/
@@ -1066,8 +1066,8 @@ g_settings_schema_has_key (GSettingsSchema *schema,
  * You should free the return value with g_strfreev() when you are done
  * with it.
  *
- * Returns: (transfer full) (element-type utf8): a list of the children on
- *    @settings, in no defined order
+ * Returns: (not nullable) (transfer full) (element-type utf8): a list of
+ *    the children on @settings, in no defined order
  *
  * Since: 2.44
  */
@@ -1111,8 +1111,8 @@ g_settings_schema_list_children (GSettingsSchema *schema)
  * (since you should already know what keys are in your schema).  This
  * function is intended for introspection reasons.
  *
- * Returns: (transfer full) (element-type utf8): a list of the keys on
- *   @schema, in no defined order
+ * Returns: (not nullable) (transfer full) (element-type utf8): a list
+ *   of the keys on @schema, in no defined order
  *
  * Since: 2.46
  */
@@ -1250,7 +1250,7 @@ g_settings_schema_list (GSettingsSchema *schema,
  *
  * Get the ID of @schema.
  *
- * Returns: (transfer none): the ID
+ * Returns: (not nullable) (transfer none): the ID
  **/
 const gchar *
 g_settings_schema_get_id (GSettingsSchema *schema)
@@ -1581,7 +1581,7 @@ G_DEFINE_BOXED_TYPE (GSettingsSchemaKey, g_settings_schema_key, g_settings_schem
  *
  * Increase the reference count of @key, returning a new reference.
  *
- * Returns: a new reference to @key
+ * Returns: (not nullable) (transfer full): a new reference to @key
  *
  * Since: 2.40
  **/
@@ -1626,7 +1626,7 @@ g_settings_schema_key_unref (GSettingsSchemaKey *key)
  * It is a programmer error to request a key that does not exist.  See
  * g_settings_schema_list_keys().
  *
- * Returns: (transfer full): the #GSettingsSchemaKey for @name
+ * Returns: (not nullable) (transfer full): the #GSettingsSchemaKey for @name
  *
  * Since: 2.40
  **/
@@ -1652,7 +1652,7 @@ g_settings_schema_get_key (GSettingsSchema *schema,
  *
  * Gets the name of @key.
  *
- * Returns: the name of @key.
+ * Returns: (not nullable) (transfer none): the name of @key.
  *
  * Since: 2.44
  */
@@ -1682,7 +1682,7 @@ g_settings_schema_key_get_name (GSettingsSchemaKey *key)
  * function has to parse all of the source XML files in the schema
  * directory.
  *
- * Returns: (nullable): the summary for @key, or %NULL
+ * Returns: (nullable) (transfer none): the summary for @key, or %NULL
  *
  * Since: 2.34
  **/
@@ -1717,7 +1717,7 @@ g_settings_schema_key_get_summary (GSettingsSchemaKey *key)
  * function has to parse all of the source XML files in the schema
  * directory.
  *
- * Returns: (nullable): the description for @key, or %NULL
+ * Returns: (nullable) (transfer none): the description for @key, or %NULL
  *
  * Since: 2.34
  **/
@@ -1739,7 +1739,7 @@ g_settings_schema_key_get_description (GSettingsSchemaKey *key)
  *
  * Gets the #GVariantType of @key.
  *
- * Returns: (transfer none): the type of @key
+ * Returns: (not nullable) (transfer none): the type of @key
  *
  * Since: 2.40
  **/
@@ -1760,7 +1760,7 @@ g_settings_schema_key_get_value_type (GSettingsSchemaKey *key)
  * Note that this is the default value according to the schema.  System
  * administrator defaults and lockdown are not visible via this API.
  *
- * Returns: (transfer full): the default value for the key
+ * Returns: (not nullable) (transfer full): the default value for the key
  *
  * Since: 2.40
  **/
@@ -1823,7 +1823,7 @@ g_settings_schema_key_get_default_value (GSettingsSchemaKey *key)
  * You should free the returned value with g_variant_unref() when it is
  * no longer needed.
  *
- * Returns: (transfer full): a #GVariant describing the range
+ * Returns: (not nullable) (transfer full): a #GVariant describing the range
  *
  * Since: 2.40
  **/
index c971bdf..7fd9b43 100644 (file)
@@ -705,7 +705,7 @@ g_simple_async_result_take_error (GSimpleAsyncResult *simple,
 /**
  * g_simple_async_result_set_error_va: (skip)
  * @simple: a #GSimpleAsyncResult.
- * @domain: a #GQuark (usually #G_IO_ERROR).
+ * @domain: a #GQuark (usually %G_IO_ERROR).
  * @code: an error code.
  * @format: a formatted error reporting string.
  * @args: va_list of arguments.
@@ -735,7 +735,7 @@ g_simple_async_result_set_error_va (GSimpleAsyncResult *simple,
 /**
  * g_simple_async_result_set_error: (skip)
  * @simple: a #GSimpleAsyncResult.
- * @domain: a #GQuark (usually #G_IO_ERROR).
+ * @domain: a #GQuark (usually %G_IO_ERROR).
  * @code: an error code.
  * @format: a formatted error reporting string.
  * @...: a list of variables to fill in @format.
@@ -1007,7 +1007,7 @@ g_simple_async_result_is_valid (GAsyncResult *result,
  * @object: (nullable): a #GObject, or %NULL.
  * @callback: a #GAsyncReadyCallback.
  * @user_data: user data passed to @callback.
- * @domain: a #GQuark containing the error domain (usually #G_IO_ERROR).
+ * @domain: a #GQuark containing the error domain (usually %G_IO_ERROR).
  * @code: a specific error code.
  * @format: a formatted error reporting string.
  * @...: a list of variables to fill in @format.
index 2d60099..f19d567 100644 (file)
@@ -493,7 +493,7 @@ g_simple_proxy_resolver_iface_init (GProxyResolverInterface *iface)
  * g_simple_proxy_resolver_new:
  * @default_proxy: (nullable): the default proxy to use, eg
  *     "socks://192.168.1.1"
- * @ignore_hosts: (nullable): an optional list of hosts/IP addresses
+ * @ignore_hosts: (array zero-terminated=1) (nullable): an optional list of hosts/IP addresses
  *     to not use a proxy for.
  *
  * Creates a new #GSimpleProxyResolver. See
@@ -544,7 +544,7 @@ g_simple_proxy_resolver_set_default_proxy (GSimpleProxyResolver *resolver,
 /**
  * g_simple_proxy_resolver_set_ignore_hosts:
  * @resolver: a #GSimpleProxyResolver
- * @ignore_hosts: %NULL-terminated list of hosts/IP addresses
+ * @ignore_hosts: (array zero-terminated=1): %NULL-terminated list of hosts/IP addresses
  *     to not use a proxy for
  *
  * Sets the list of ignored hosts.
index d13e2ca..be5b96a 100644 (file)
 #include "glibintl.h"
 #include "gioprivate.h"
 
+#ifdef G_OS_WIN32
+#include "giowin32-afunix.h"
+#endif
+
 /**
  * SECTION:gsocket
  * @short_description: Low-level socket object
@@ -3138,7 +3142,7 @@ g_socket_get_available_bytes (GSocket *socket)
        * systems add internal header size to the reported size, making it
        * unusable for this function. */
       avail = recv (socket->priv->fd, buf, bufsize, MSG_PEEK);
-      if (avail == -1)
+      if ((gint) avail == -1)
         {
           int errsv = get_socket_errno ();
 #ifdef G_OS_WIN32
@@ -3997,7 +4001,10 @@ socket_source_dispatch (GSource     *source,
   gboolean ret;
 
 #ifdef G_OS_WIN32
-  events = update_condition (socket_source->socket);
+  if ((socket_source->pollfd.revents & G_IO_NVAL) != 0)
+    events = G_IO_NVAL;
+  else
+    events = update_condition (socket_source->socket);
 #else
   if (g_socket_is_closed (socket_source->socket))
     {
@@ -4570,8 +4577,7 @@ G_STMT_START { \
       _msg->msg_control = NULL; \
     else \
       { \
-        _msg->msg_control = g_alloca (_msg->msg_controllen); \
-        memset (_msg->msg_control, '\0', _msg->msg_controllen); \
+        _msg->msg_control = g_alloca0 (_msg->msg_controllen); \
       } \
  \
     cmsg = CMSG_FIRSTHDR (_msg); \
@@ -5275,7 +5281,7 @@ g_socket_send_messages_with_timeout (GSocket        *socket,
 #else
   {
     gssize result;
-    gint i;
+    guint i;
     gint64 wait_timeout;
 
     wait_timeout = timeout_us;
@@ -5305,7 +5311,11 @@ g_socket_send_messages_with_timeout (GSocket        *socket,
 #endif
           }
 
-        result = pollable_result == G_POLLABLE_RETURN_OK ? bytes_written : -1;
+        if (G_MAXSSIZE > bytes_written &&
+            pollable_result == G_POLLABLE_RETURN_OK)
+          result = (gssize) bytes_written;
+        else
+          result = -1;
 
         /* check if we've timed out or how much time to wait at most */
         if (timeout_us > 0)
@@ -6052,10 +6062,22 @@ g_socket_get_credentials (GSocket   *socket,
       {
         if (cred.cr_version == XUCRED_VERSION)
           {
+            pid_t pid;
+            socklen_t optlen = sizeof (pid);
+
             ret = g_credentials_new ();
             g_credentials_set_native (ret,
                                       G_CREDENTIALS_NATIVE_TYPE,
                                       &cred);
+
+#ifdef LOCAL_PEERPID
+            if (getsockopt (socket->priv->fd,
+                            SOL_LOCAL,
+                            LOCAL_PEERPID,
+                            &pid,
+                            &optlen) == 0)
+              _g_credentials_set_local_peerid (ret, pid);
+#endif
           }
         else
           {
@@ -6113,6 +6135,23 @@ g_socket_get_credentials (GSocket   *socket,
         ucred_free (ucred);
       }
   }
+#elif G_CREDENTIALS_USE_WIN32_PID
+  {
+    DWORD peerid, drc;
+
+    if (WSAIoctl (socket->priv->fd, SIO_AF_UNIX_GETPEERPID,
+                  NULL, 0U,
+                  &peerid, sizeof(peerid),
+                  /* Windows bug: always 0 https://github.com/microsoft/WSL/issues/4676 */
+                  &drc,
+                  NULL, NULL) == 0)
+      {
+        ret = g_credentials_new ();
+        g_credentials_set_native (ret,
+                                  G_CREDENTIALS_TYPE_WIN32_PID,
+                                  &peerid);
+      }
+  }
 #else
   #error "G_CREDENTIALS_SOCKET_GET_CREDENTIALS_SUPPORTED is set but this is no code for this platform"
 #endif
index 2b7e83c..41dbe66 100644 (file)
 #include "glibintl.h"
 #include "gioenumtypes.h"
 
-#ifdef G_OS_UNIX
 #include "gunixsocketaddress.h"
+
+#ifdef G_OS_WIN32
+#include "giowin32-afunix.h"
 #endif
 
 
@@ -265,7 +267,6 @@ g_socket_address_new_from_native (gpointer native,
       return sockaddr;
     }
 
-#ifdef G_OS_UNIX
   if (family == AF_UNIX)
     {
       struct sockaddr_un *addr = (struct sockaddr_un *) native;
@@ -299,7 +300,6 @@ g_socket_address_new_from_native (gpointer native,
       else
        return g_unix_socket_address_new (addr->sun_path);
     }
-#endif
 
   return g_native_socket_address_new (native, len);
 }
index 62b1afb..cd5aa07 100644 (file)
@@ -289,7 +289,9 @@ g_socket_client_get_property (GObject    *object,
        break;
 
       case PROP_TLS_VALIDATION_FLAGS:
+G_GNUC_BEGIN_IGNORE_DEPRECATIONS
        g_value_set_flags (value, g_socket_client_get_tls_validation_flags (client));
+G_GNUC_END_IGNORE_DEPRECATIONS
        break;
 
       case PROP_PROXY_RESOLVER:
@@ -340,7 +342,9 @@ g_socket_client_set_property (GObject      *object,
       break;
 
     case PROP_TLS_VALIDATION_FLAGS:
+G_GNUC_BEGIN_IGNORE_DEPRECATIONS
       g_socket_client_set_tls_validation_flags (client, g_value_get_flags (value));
+G_GNUC_END_IGNORE_DEPRECATIONS
       break;
 
     case PROP_PROXY_RESOLVER:
@@ -679,9 +683,15 @@ g_socket_client_set_tls (GSocketClient *client,
  * Gets the TLS validation flags used creating TLS connections via
  * @client.
  *
+ * This function does not work as originally designed and is impossible
+ * to use correctly. See #GSocketClient:tls-validation-flags for more
+ * information.
+ *
  * Returns: the TLS validation flags
  *
  * Since: 2.28
+ *
+ * Deprecated: 2.72: Do not attempt to ignore validation errors.
  */
 GTlsCertificateFlags
 g_socket_client_get_tls_validation_flags (GSocketClient *client)
@@ -697,7 +707,13 @@ g_socket_client_get_tls_validation_flags (GSocketClient *client)
  * Sets the TLS validation flags used when creating TLS connections
  * via @client. The default value is %G_TLS_CERTIFICATE_VALIDATE_ALL.
  *
+ * This function does not work as originally designed and is impossible
+ * to use correctly. See #GSocketClient:tls-validation-flags for more
+ * information.
+ *
  * Since: 2.28
+ *
+ * Deprecated: 2.72: Do not attempt to ignore validation errors.
  */
 void
 g_socket_client_set_tls_validation_flags (GSocketClient        *client,
@@ -916,6 +932,29 @@ g_socket_client_class_init (GSocketClientClass *class)
                                                         G_PARAM_CONSTRUCT |
                                                         G_PARAM_READWRITE |
                                                         G_PARAM_STATIC_STRINGS));
+
+  /**
+   * GSocketClient:tls-validation-flags:
+   *
+   * The TLS validation flags used when creating TLS connections. The
+   * default value is %G_TLS_CERTIFICATE_VALIDATE_ALL.
+   *
+   * GLib guarantees that if certificate verification fails, at least one
+   * flag will be set, but it does not guarantee that all possible flags
+   * will be set. Accordingly, you may not safely decide to ignore any
+   * particular type of error. For example, it would be incorrect to mask
+   * %G_TLS_CERTIFICATE_EXPIRED if you want to allow expired certificates,
+   * because this could potentially be the only error flag set even if
+   * other problems exist with the certificate. Therefore, there is no
+   * safe way to use this property. This is not a horrible problem,
+   * though, because you should not be attempting to ignore validation
+   * errors anyway. If you really must ignore TLS certificate errors,
+   * connect to the #GSocketClient::event signal, wait for it to be
+   * emitted with %G_SOCKET_CLIENT_TLS_HANDSHAKING, and use that to
+   * connect to #GTlsConnection::accept-certificate.
+   *
+   * Deprecated: 2.72: Do not attempt to ignore validation errors.
+   */
   g_object_class_install_property (gobject_class, PROP_TLS_VALIDATION_FLAGS,
                                   g_param_spec_flags ("tls-validation-flags",
                                                       P_("TLS validation flags"),
@@ -924,7 +963,8 @@ g_socket_client_class_init (GSocketClientClass *class)
                                                       G_TLS_CERTIFICATE_VALIDATE_ALL,
                                                       G_PARAM_CONSTRUCT |
                                                       G_PARAM_READWRITE |
-                                                      G_PARAM_STATIC_STRINGS));
+                                                      G_PARAM_STATIC_STRINGS |
+                                                      G_PARAM_DEPRECATED));
 
   /**
    * GSocketClient:proxy-resolver:
@@ -1209,8 +1249,10 @@ g_socket_client_connect (GSocketClient       *client,
 
          if (tlsconn)
            {
+G_GNUC_BEGIN_IGNORE_DEPRECATIONS
              g_tls_client_connection_set_validation_flags (G_TLS_CLIENT_CONNECTION (tlsconn),
                                                             client->priv->tls_validation_flags);
+G_GNUC_END_IGNORE_DEPRECATIONS
              g_socket_client_emit_event (client, G_SOCKET_CLIENT_TLS_HANDSHAKING, connectable, connection);
              if (g_tls_connection_handshake (G_TLS_CONNECTION (tlsconn),
                                              cancellable, &error_info->tmp_error))
@@ -1422,6 +1464,8 @@ typedef struct
   GSocketConnectable *connectable;
   GSocketAddressEnumerator *enumerator;
   GCancellable *enumeration_cancellable;
+  GCancellable *enumeration_parent_cancellable;  /* (nullable) (owned) */
+  gulong enumeration_cancelled_id;
 
   GSList *connection_attempts;
   GSList *successful_connections;
@@ -1441,7 +1485,12 @@ g_socket_client_async_connect_data_free (GSocketClientAsyncConnectData *data)
   data->task = NULL;
   g_clear_object (&data->connectable);
   g_clear_object (&data->enumerator);
+
+  g_cancellable_disconnect (data->enumeration_parent_cancellable, data->enumeration_cancelled_id);
+  g_clear_object (&data->enumeration_parent_cancellable);
+  data->enumeration_cancelled_id = 0;
   g_clear_object (&data->enumeration_cancellable);
+
   g_slist_free_full (data->connection_attempts, connection_attempt_unref);
   g_slist_free_full (data->successful_connections, connection_attempt_unref);
 
@@ -1459,6 +1508,7 @@ typedef struct
   GSocketClientAsyncConnectData *data; /* unowned */
   GSource *timeout_source;
   GCancellable *cancellable;
+  gulong cancelled_id;
   grefcount ref;
 } ConnectionAttempt;
 
@@ -1486,6 +1536,8 @@ connection_attempt_unref (gpointer pointer)
       g_clear_object (&attempt->address);
       g_clear_object (&attempt->socket);
       g_clear_object (&attempt->connection);
+      g_cancellable_disconnect (g_task_get_cancellable (attempt->data->task), attempt->cancelled_id);
+      attempt->cancelled_id = 0;
       g_clear_object (&attempt->cancellable);
       g_clear_object (&attempt->proxy_addr);
       if (attempt->timeout_source)
@@ -1635,8 +1687,10 @@ g_socket_client_tls_handshake (ConnectionAttempt *attempt)
                                         &data->error_info->tmp_error);
   if (tlsconn)
     {
+G_GNUC_BEGIN_IGNORE_DEPRECATIONS
       g_tls_client_connection_set_validation_flags (G_TLS_CLIENT_CONNECTION (tlsconn),
                                                     data->client->priv->tls_validation_flags);
+G_GNUC_END_IGNORE_DEPRECATIONS
       g_socket_client_emit_event (data->client, G_SOCKET_CLIENT_TLS_HANDSHAKING, data->connectable, G_IO_STREAM (tlsconn));
       g_tls_connection_handshake_async (G_TLS_CONNECTION (tlsconn),
                                        G_PRIORITY_DEFAULT,
@@ -1977,8 +2031,9 @@ g_socket_client_enumerator_callback (GObject      *object,
   data->connection_attempts = g_slist_append (data->connection_attempts, attempt);
 
   if (g_task_get_cancellable (data->task))
-    g_cancellable_connect (g_task_get_cancellable (data->task), G_CALLBACK (on_connection_cancelled),
-                           g_object_ref (attempt->cancellable), g_object_unref);
+    attempt->cancelled_id =
+        g_cancellable_connect (g_task_get_cancellable (data->task), G_CALLBACK (on_connection_cancelled),
+                               g_object_ref (attempt->cancellable), g_object_unref);
 
   g_socket_connection_set_cached_remote_address ((GSocketConnection *)attempt->connection, address);
   g_debug ("GSocketClient: Starting TCP connection attempt");
@@ -2083,8 +2138,12 @@ g_socket_client_connect_async (GSocketClient       *client,
 
   data->enumeration_cancellable = g_cancellable_new ();
   if (cancellable)
-    g_cancellable_connect (cancellable, G_CALLBACK (on_connection_cancelled),
-                           g_object_ref (data->enumeration_cancellable), g_object_unref);
+    {
+      data->enumeration_parent_cancellable = g_object_ref (cancellable);
+      data->enumeration_cancelled_id =
+          g_cancellable_connect (cancellable, G_CALLBACK (on_connection_cancelled),
+                                 g_object_ref (data->enumeration_cancellable), g_object_unref);
+    }
 
   enumerator_next_async (data, FALSE);
 }
index f015345..8f86ce8 100644 (file)
@@ -110,9 +110,9 @@ gboolean                g_socket_client_get_tls                         (GSocket
 GLIB_AVAILABLE_IN_2_28
 void                    g_socket_client_set_tls                         (GSocketClient        *client,
                                                                         gboolean              tls);
-GLIB_AVAILABLE_IN_2_28
+GLIB_DEPRECATED_IN_2_72
 GTlsCertificateFlags    g_socket_client_get_tls_validation_flags        (GSocketClient        *client);
-GLIB_AVAILABLE_IN_2_28
+GLIB_DEPRECATED_IN_2_72
 void                    g_socket_client_set_tls_validation_flags        (GSocketClient        *client,
                                                                         GTlsCertificateFlags  flags);
 GLIB_AVAILABLE_IN_2_36
index 37d5d33..64fe975 100644 (file)
@@ -615,9 +615,7 @@ g_socket_connection_factory_register_type (GType         g_type,
 static void
 init_builtin_types (void)
 {
-#ifndef G_OS_WIN32
   g_type_ensure (G_TYPE_UNIX_CONNECTION);
-#endif
   g_type_ensure (G_TYPE_TCP_CONNECTION);
 }
 
index c0f4f8d..523c80b 100644 (file)
  * As a matter of principle, #GSubprocess has no API that accepts
  * shell-style space-separated strings.  It will, however, match the
  * typical shell behaviour of searching the PATH for executables that do
- * not contain a directory separator in their name.
+ * not contain a directory separator in their name. By default, the `PATH`
+ * of the current process is used.  You can specify
+ * %G_SUBPROCESS_FLAGS_SEARCH_PATH_FROM_ENVP to use the `PATH` of the
+ * launcher environment instead.
  *
  * #GSubprocess attempts to have a very simple API for most uses (ie:
  * spawning a subprocess with arguments and support for most typical
@@ -380,7 +383,7 @@ initable_init (GInitable     *initable,
   /* argv0 has no '/' in it?  We better do a PATH lookup. */
   if (strchr (self->argv[0], G_DIR_SEPARATOR) == NULL)
     {
-      if (self->launcher && self->launcher->path_from_envp)
+      if (self->launcher && self->launcher->flags & G_SUBPROCESS_FLAGS_SEARCH_PATH_FROM_ENVP)
         spawn_flags |= G_SPAWN_SEARCH_PATH_FROM_ENVP;
       else
         spawn_flags |= G_SPAWN_SEARCH_PATH;
index d6fe0d7..8bd1b28 100644 (file)
@@ -28,7 +28,6 @@ struct _GSubprocessLauncher
   GObject parent;
 
   GSubprocessFlags flags;
-  gboolean path_from_envp;
   char **envp;
   char *cwd;
 
index a767e19..365f200 100644 (file)
  * use g_task_propagate_pointer() or the like to extract the
  * return value.
  *
+ * Using #GTask requires the thread-default #GMainContext from when the
+ * #GTask was constructed to be running at least until the task has completed
+ * and its data has been freed.
+ *
  * Here is an example for using GTask as a GAsyncResult:
  * |[<!-- language="C" -->
  *     typedef struct {
@@ -977,13 +981,19 @@ g_task_set_return_on_cancel (GTask    *task,
  * @task: the #GTask
  * @source_tag: an opaque pointer indicating the source of this task
  *
- * Sets @task's source tag. You can use this to tag a task return
+ * Sets @task's source tag.
+ *
+ * You can use this to tag a task return
  * value with a particular pointer (usually a pointer to the function
  * doing the tagging) and then later check it using
  * g_task_get_source_tag() (or g_async_result_is_tagged()) in the
  * task's "finish" function, to figure out if the response came from a
  * particular place.
  *
+ * A macro wrapper around this function will automatically set the
+ * task’s name to the string form of @source_tag if it’s not already
+ * set, for convenience.
+ *
  * Since: 2.36
  */
 void
@@ -1010,7 +1020,8 @@ void
  * name of the #GSource used for idle completion of the task.
  *
  * This function may only be called before the @task is first used in a thread
- * other than the one it was constructed in.
+ * other than the one it was constructed in. It is called automatically by
+ * g_task_set_source_tag() if not called already.
  *
  * Since: 2.60
  */
@@ -1246,7 +1257,6 @@ g_task_return (GTask           *task,
                GTaskReturnType  type)
 {
   GSource *source;
-  gchar *source_name = NULL;
 
   if (type != G_TASK_RETURN_FROM_THREAD)
     task->ever_returned = TRUE;
@@ -1295,10 +1305,22 @@ g_task_return (GTask           *task,
 
   /* Otherwise, complete in the next iteration */
   source = g_idle_source_new ();
-  source_name = g_strdup_printf ("[gio] %s complete_in_idle_cb",
-                                 (task->name != NULL) ? task->name : "(unnamed)");
-  g_source_set_name (source, source_name);
-  g_free (source_name);
+
+  /* Note: in case the task name is NULL we set it as a const string instead
+   * of going through the concat path which is more expensive and may show in the
+   * profiler if g_task_return is called very often
+   */
+  if (task->name == NULL)
+    g_source_set_static_name (source, "[gio] (unnamed) complete_in_idle_cb");
+  else
+    {
+      gchar *source_name;
+
+      source_name = g_strconcat ("[gio] ", task->name, " complete_in_idle_cb", NULL);
+      g_source_set_name (source, source_name);
+      g_free (source_name);
+    }
+
   g_task_attach_source (task, source, complete_in_idle_cb);
   g_source_unref (source);
 }
@@ -1994,7 +2016,7 @@ value_free (gpointer value)
  *
  * Sets @task's result to @result (by copying it) and completes the task.
  *
- * If @result is %NULL then a #GValue of type #G_TYPE_POINTER
+ * If @result is %NULL then a #GValue of type %G_TYPE_POINTER
  * with a value of %NULL will be used for the result.
  *
  * This is a very generic low-level method intended primarily for use
index 93794b5..aeeb40e 100644 (file)
@@ -529,18 +529,56 @@ typedef enum __ns_type {
 
 #endif /* __BIONIC__ */
 
+/* Wrapper around dn_expand() which does associated length checks and returns
+ * errors as #GError. */
+static gboolean
+expand_name (const gchar   *rrname,
+             const guint8  *answer,
+             const guint8  *end,
+             const guint8 **p,
+             gchar         *namebuf,
+             gsize          namebuf_len,
+             GError       **error)
+{
+  int expand_result;
+
+  expand_result = dn_expand (answer, end, *p, namebuf, namebuf_len);
+  if (expand_result < 0 || end - *p < expand_result)
+    {
+      g_set_error (error, G_RESOLVER_ERROR, G_RESOLVER_ERROR_INTERNAL,
+                   /* Translators: the placeholder is a DNS record type, such as ‘MX’ or ‘SRV’ */
+                   _("Error parsing DNS %s record: malformed DNS packet"), rrname);
+      return FALSE;
+    }
+
+  *p += expand_result;
+
+  return TRUE;
+}
+
 static GVariant *
-parse_res_srv (guchar  *answer,
-               guchar  *end,
-               guchar **p)
+parse_res_srv (const guint8  *answer,
+               const guint8  *end,
+               const guint8 **p,
+               GError       **error)
 {
   gchar namebuf[1024];
   guint16 priority, weight, port;
 
+  if (end - *p < 6)
+    {
+      g_set_error (error, G_RESOLVER_ERROR, G_RESOLVER_ERROR_INTERNAL,
+                   /* Translators: the placeholder is a DNS record type, such as ‘MX’ or ‘SRV’ */
+                   _("Error parsing DNS %s record: malformed DNS packet"), "SRV");
+      return NULL;
+    }
+
   GETSHORT (priority, *p);
   GETSHORT (weight, *p);
   GETSHORT (port, *p);
-  *p += dn_expand (answer, end, *p, namebuf, sizeof (namebuf));
+
+  if (!expand_name ("SRV", answer, end, p, namebuf, sizeof (namebuf), error))
+    return NULL;
 
   return g_variant_new ("(qqqs)",
                         priority,
@@ -550,16 +588,28 @@ parse_res_srv (guchar  *answer,
 }
 
 static GVariant *
-parse_res_soa (guchar  *answer,
-               guchar  *end,
-               guchar **p)
+parse_res_soa (const guint8  *answer,
+               const guint8  *end,
+               const guint8 **p,
+               GError       **error)
 {
   gchar mnamebuf[1024];
   gchar rnamebuf[1024];
   guint32 serial, refresh, retry, expire, ttl;
 
-  *p += dn_expand (answer, end, *p, mnamebuf, sizeof (mnamebuf));
-  *p += dn_expand (answer, end, *p, rnamebuf, sizeof (rnamebuf));
+  if (!expand_name ("SOA", answer, end, p, mnamebuf, sizeof (mnamebuf), error))
+    return NULL;
+
+  if (!expand_name ("SOA", answer, end, p, rnamebuf, sizeof (rnamebuf), error))
+    return NULL;
+
+  if (end - *p < 20)
+    {
+      g_set_error (error, G_RESOLVER_ERROR, G_RESOLVER_ERROR_INTERNAL,
+                   /* Translators: the placeholder is a DNS record type, such as ‘MX’ or ‘SRV’ */
+                   _("Error parsing DNS %s record: malformed DNS packet"), "SOA");
+      return NULL;
+    }
 
   GETLONG (serial, *p);
   GETLONG (refresh, *p);
@@ -578,28 +628,40 @@ parse_res_soa (guchar  *answer,
 }
 
 static GVariant *
-parse_res_ns (guchar  *answer,
-              guchar  *end,
-              guchar **p)
+parse_res_ns (const guint8  *answer,
+              const guint8  *end,
+              const guint8 **p,
+              GError       **error)
 {
   gchar namebuf[1024];
 
-  *p += dn_expand (answer, end, *p, namebuf, sizeof (namebuf));
+  if (!expand_name ("NS", answer, end, p, namebuf, sizeof (namebuf), error))
+    return NULL;
 
   return g_variant_new ("(s)", namebuf);
 }
 
 static GVariant *
-parse_res_mx (guchar  *answer,
-              guchar  *end,
-              guchar **p)
+parse_res_mx (const guint8  *answer,
+              const guint8  *end,
+              const guint8 **p,
+              GError       **error)
 {
   gchar namebuf[1024];
   guint16 preference;
 
+  if (end - *p < 2)
+    {
+      g_set_error (error, G_RESOLVER_ERROR, G_RESOLVER_ERROR_INTERNAL,
+                   /* Translators: the placeholder is a DNS record type, such as ‘MX’ or ‘SRV’ */
+                   _("Error parsing DNS %s record: malformed DNS packet"), "MX");
+      return NULL;
+    }
+
   GETSHORT (preference, *p);
 
-  *p += dn_expand (answer, end, *p, namebuf, sizeof (namebuf));
+  if (!expand_name ("MX", answer, end, p, namebuf, sizeof (namebuf), error))
+    return NULL;
 
   return g_variant_new ("(qs)",
                         preference,
@@ -607,21 +669,37 @@ parse_res_mx (guchar  *answer,
 }
 
 static GVariant *
-parse_res_txt (guchar  *answer,
-               guchar  *end,
-               guchar **p)
+parse_res_txt (const guint8  *answer,
+               const guint8  *end,
+               const guint8 **p,
+               GError       **error)
 {
   GVariant *record;
   GPtrArray *array;
-  guchar *at = *p;
+  const guint8 *at = *p;
   gsize len;
 
+  if (end - *p == 0)
+    {
+      g_set_error (error, G_RESOLVER_ERROR, G_RESOLVER_ERROR_INTERNAL,
+                   /* Translators: the placeholder is a DNS record type, such as ‘MX’ or ‘SRV’ */
+                   _("Error parsing DNS %s record: malformed DNS packet"), "TXT");
+      return NULL;
+    }
+
   array = g_ptr_array_new_with_free_func (g_free);
   while (at < end)
     {
       len = *(at++);
       if (len > (gsize) (end - at))
-        break;
+        {
+          g_set_error (error, G_RESOLVER_ERROR, G_RESOLVER_ERROR_INTERNAL,
+                       /* Translators: the placeholder is a DNS record type, such as ‘MX’ or ‘SRV’ */
+                       _("Error parsing DNS %s record: malformed DNS packet"), "TXT");
+          g_ptr_array_free (array, TRUE);
+          return NULL;
+        }
+
       g_ptr_array_add (array, g_strndup ((gchar *)at, len));
       at += len;
     }
@@ -633,7 +711,7 @@ parse_res_txt (guchar  *answer,
   return record;
 }
 
-static gint
+gint
 g_resolver_record_type_to_rrtype (GResolverRecordType type)
 {
   switch (type)
@@ -652,21 +730,23 @@ g_resolver_record_type_to_rrtype (GResolverRecordType type)
   g_return_val_if_reached (-1);
 }
 
-static GList *
+GList *
 g_resolver_records_from_res_query (const gchar      *rrname,
                                    gint              rrtype,
-                                   guchar           *answer,
-                                   gint              len,
+                                   const guint8     *answer,
+                                   gssize            len,
                                    gint              herr,
                                    GError          **error)
 {
-  gint count;
+  uint16_t count;
   gchar namebuf[1024];
-  guchar *end, *p;
+  const guint8 *end, *p;
   guint16 type, qclass, rdlength;
-  HEADER *header;
+  const HEADER *header;
   GList *records;
   GVariant *record;
+  gsize len_unsigned;
+  GError *parsing_error = NULL;
 
   if (len <= 0)
     {
@@ -689,18 +769,44 @@ g_resolver_records_from_res_query (const gchar      *rrname,
       return NULL;
     }
 
+  /* We know len ≥ 0 now. */
+  len_unsigned = (gsize) len;
+
+  if (len_unsigned < sizeof (HEADER))
+    {
+      g_set_error (error, G_RESOLVER_ERROR, G_RESOLVER_ERROR_INTERNAL,
+                   /* Translators: the first placeholder is a domain name, the
+                    * second is an error message */
+                   _("Error resolving “%s”: %s"), rrname, _("Malformed DNS packet"));
+      return NULL;
+    }
+
   records = NULL;
 
   header = (HEADER *)answer;
   p = answer + sizeof (HEADER);
-  end = answer + len;
+  end = answer + len_unsigned;
 
   /* Skip query */
   count = ntohs (header->qdcount);
   while (count-- && p < end)
     {
-      p += dn_expand (answer, end, p, namebuf, sizeof (namebuf));
-      p += 4;
+      int expand_result;
+
+      expand_result = dn_expand (answer, end, p, namebuf, sizeof (namebuf));
+      if (expand_result < 0 || end - p < expand_result + 4)
+        {
+          /* Not possible to recover parsing as the length of the rest of the
+           * record is unknown or is too short. */
+          g_set_error (error, G_RESOLVER_ERROR, G_RESOLVER_ERROR_INTERNAL,
+                       /* Translators: the first placeholder is a domain name, the
+                        * second is an error message */
+                       _("Error resolving “%s”: %s"), rrname, _("Malformed DNS packet"));
+          return NULL;
+        }
+
+      p += expand_result;
+      p += 4;  /* skip TYPE and CLASS */
 
       /* To silence gcc warnings */
       namebuf[0] = namebuf[1];
@@ -710,12 +816,35 @@ g_resolver_records_from_res_query (const gchar      *rrname,
   count = ntohs (header->ancount);
   while (count-- && p < end)
     {
-      p += dn_expand (answer, end, p, namebuf, sizeof (namebuf));
+      int expand_result;
+
+      expand_result = dn_expand (answer, end, p, namebuf, sizeof (namebuf));
+      if (expand_result < 0 || end - p < expand_result + 10)
+        {
+          /* Not possible to recover parsing as the length of the rest of the
+           * record is unknown or is too short. */
+          g_set_error (&parsing_error, G_RESOLVER_ERROR, G_RESOLVER_ERROR_INTERNAL,
+                       /* Translators: the first placeholder is a domain name, the
+                        * second is an error message */
+                       _("Error resolving “%s”: %s"), rrname, _("Malformed DNS packet"));
+          break;
+        }
+
+      p += expand_result;
       GETSHORT (type, p);
       GETSHORT (qclass, p);
       p += 4; /* ignore the ttl (type=long) value */
       GETSHORT (rdlength, p);
 
+      if (end - p < rdlength)
+        {
+          g_set_error (&parsing_error, G_RESOLVER_ERROR, G_RESOLVER_ERROR_INTERNAL,
+                       /* Translators: the first placeholder is a domain name, the
+                        * second is an error message */
+                       _("Error resolving “%s”: %s"), rrname, _("Malformed DNS packet"));
+          break;
+        }
+
       if (type != rrtype || qclass != C_IN)
         {
           p += rdlength;
@@ -725,31 +854,40 @@ g_resolver_records_from_res_query (const gchar      *rrname,
       switch (rrtype)
         {
         case T_SRV:
-          record = parse_res_srv (answer, end, &p);
+          record = parse_res_srv (answer, p + rdlength, &p, &parsing_error);
           break;
         case T_MX:
-          record = parse_res_mx (answer, end, &p);
+          record = parse_res_mx (answer, p + rdlength, &p, &parsing_error);
           break;
         case T_SOA:
-          record = parse_res_soa (answer, end, &p);
+          record = parse_res_soa (answer, p + rdlength, &p, &parsing_error);
           break;
         case T_NS:
-          record = parse_res_ns (answer, end, &p);
+          record = parse_res_ns (answer, p + rdlength, &p, &parsing_error);
           break;
         case T_TXT:
-          record = parse_res_txt (answer, p + rdlength, &p);
+          record = parse_res_txt (answer, p + rdlength, &p, &parsing_error);
           break;
         default:
-          g_warn_if_reached ();
+          g_debug ("Unrecognised DNS record type %u", rrtype);
           record = NULL;
           break;
         }
 
       if (record != NULL)
         records = g_list_prepend (records, record);
+
+      if (parsing_error != NULL)
+        break;
     }
 
-  if (records == NULL)
+  if (parsing_error != NULL)
+    {
+      g_propagate_prefixed_error (error, parsing_error, _("Failed to parse DNS response for “%s”: "), rrname);
+      g_list_free_full (records, (GDestroyNotify)g_variant_unref);
+      return NULL;
+    }
+  else if (records == NULL)
     {
       g_set_error (error, G_RESOLVER_ERROR, G_RESOLVER_ERROR_NOT_FOUND,
                    _("No DNS record of the requested type for “%s”"), rrname);
index 5900d6a..8d2ca19 100644 (file)
@@ -42,6 +42,19 @@ typedef struct {
 GLIB_AVAILABLE_IN_ALL
 GType g_threaded_resolver_get_type (void) G_GNUC_CONST;
 
+/* Used for a private test API */
+#ifdef G_OS_UNIX
+GLIB_AVAILABLE_IN_ALL
+GList *g_resolver_records_from_res_query (const gchar      *rrname,
+                                          gint              rrtype,
+                                          const guint8     *answer,
+                                          gssize            len,
+                                          gint              herr,
+                                          GError          **error);
+GLIB_AVAILABLE_IN_ALL
+gint g_resolver_record_type_to_rrtype (GResolverRecordType type);
+#endif
+
 G_END_DECLS
 
 #endif /* __G_RESOLVER_H__ */
index 2c23812..d0a326b 100644 (file)
  * Since: 2.28
  */
 
-G_DEFINE_ABSTRACT_TYPE (GTlsCertificate, g_tls_certificate, G_TYPE_OBJECT)
+struct _GTlsCertificatePrivate {
+  gboolean pkcs12_properties_not_overridden;
+};
+
+G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE (GTlsCertificate, g_tls_certificate, G_TYPE_OBJECT)
 
 enum
 {
@@ -69,6 +73,8 @@ enum
   PROP_ISSUER_NAME,
   PROP_DNS_NAMES,
   PROP_IP_ADDRESSES,
+  PROP_PKCS12_DATA,
+  PROP_PASSWORD,
 };
 
 static void
@@ -84,11 +90,11 @@ g_tls_certificate_get_property (GObject    *object,
 {
   switch (prop_id)
     {
+    /* Subclasses must override these properties but this allows older backends to not fatally error */
     case PROP_PRIVATE_KEY:
     case PROP_PRIVATE_KEY_PEM:
     case PROP_PKCS11_URI:
     case PROP_PRIVATE_KEY_PKCS11_URI:
-      /* Subclasses must override this property but this allows older backends to not fatally error */
       g_value_set_static_string (value, NULL);
       break;
     default:
@@ -102,11 +108,19 @@ g_tls_certificate_set_property (GObject      *object,
                                const GValue *value,
                                GParamSpec   *pspec)
 {
+  GTlsCertificate *cert = (GTlsCertificate*)object;
+  GTlsCertificatePrivate *priv = g_tls_certificate_get_instance_private (cert);
+
   switch (prop_id)
     {
     case PROP_PKCS11_URI:
     case PROP_PRIVATE_KEY_PKCS11_URI:
-      /* Subclasses must override this property but this allows older backends to not fatally error */
+      /* Subclasses must override these properties but this allows older backends to not fatally error. */
+      break;
+    case PROP_PKCS12_DATA:
+    case PROP_PASSWORD:
+      /* We don't error on setting these properties however we track that they were not overridden. */
+      priv->pkcs12_properties_not_overridden = TRUE;
       break;
     default:
       G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -122,6 +136,39 @@ g_tls_certificate_class_init (GTlsCertificateClass *class)
   gobject_class->get_property = g_tls_certificate_get_property;
 
   /**
+   * GTlsCertificate:pkcs12-data: (nullable)
+   *
+   * The PKCS #12 formatted data used to construct the object.
+   *
+   * See also: g_tls_certificate_new_from_pkcs12()
+   *
+   * Since: 2.72
+   */
+  g_object_class_install_property (gobject_class, PROP_PKCS12_DATA,
+                                  g_param_spec_boxed ("pkcs12-data",
+                                                      P_("PKCS #12 data"),
+                                                      P_("The PKCS #12 data used for construction"),
+                                                      G_TYPE_BYTE_ARRAY,
+                                                      G_PARAM_WRITABLE |
+                                                      G_PARAM_CONSTRUCT_ONLY |
+                                                      G_PARAM_STATIC_STRINGS));
+
+  /**
+   * GTlsCertificate:password: (nullable)
+   *
+   * An optional password used when constructed with GTlsCertificate:pkcs12-data.
+   *
+   * Since: 2.72
+   */
+  g_object_class_install_property (gobject_class, PROP_PASSWORD,
+                                   g_param_spec_string ("password",
+                                                        P_("Password"),
+                                                        P_("Password used when constructing from bytes"),
+                                                        NULL,
+                                                        G_PARAM_WRITABLE |
+                                                          G_PARAM_CONSTRUCT_ONLY |
+                                                          G_PARAM_STATIC_STRINGS));
+  /**
    * GTlsCertificate:certificate:
    *
    * The DER (binary) encoded representation of the certificate.
@@ -684,23 +731,138 @@ g_tls_certificate_new_from_pem  (const gchar  *data,
 }
 
 /**
- * g_tls_certificate_new_from_file:
- * @file: (type filename): file containing a PEM-encoded certificate to import
+ * g_tls_certificate_new_from_pkcs12:
+ * @data: (array length=length): DER-encoded PKCS #12 format certificate data
+ * @length: the length of @data
+ * @password: (nullable): optional password for encrypted certificate data
  * @error: #GError for error reporting, or %NULL to ignore.
  *
- * Creates a #GTlsCertificate from the PEM-encoded data in @file. The
- * returned certificate will be the first certificate found in @file. As
- * of GLib 2.44, if @file contains more certificates it will try to load
- * a certificate chain. All certificates will be verified in the order
- * found (top-level certificate should be the last one in the file) and
- * the #GTlsCertificate:issuer property of each certificate will be set
- * accordingly if the verification succeeds. If any certificate in the
- * chain cannot be verified, the first certificate in the file will
- * still be returned.
+ * Creates a #GTlsCertificate from the data in @data. It must contain
+ * a certificate and matching private key.
+ *
+ * If extra certificates are included they will be verified as a chain
+ * and the #GTlsCertificate:issuer property will be set.
+ * All other data will be ignored.
+ *
+ * You can pass as single password for all of the data which will be
+ * used both for the PKCS #12 container as well as encrypted
+ * private keys. If decryption fails it will error with
+ * %G_TLS_ERROR_BAD_CERTIFICATE_PASSWORD.
+ *
+ * This constructor requires support in the current #GTlsBackend.
+ * If support is missing it will error with
+ * %G_IO_ERROR_NOT_SUPPORTED.
+ *
+ * Other parsing failures will error with %G_TLS_ERROR_BAD_CERTIFICATE.
+ *
+ * Returns: the new certificate, or %NULL if @data is invalid
+ *
+ * Since: 2.72
+ */
+GTlsCertificate *
+g_tls_certificate_new_from_pkcs12 (const guint8  *data,
+                                   gsize          length,
+                                   const gchar   *password,
+                                   GError       **error)
+{
+  GObject *cert;
+  GTlsBackend *backend;
+  GByteArray *bytes;
+
+  g_return_val_if_fail (data != NULL || length == 0, NULL);
+  g_return_val_if_fail (error == NULL || *error == NULL, NULL);
+
+  backend = g_tls_backend_get_default ();
+
+  bytes = g_byte_array_new ();
+  g_byte_array_append (bytes, data, length);
+
+  cert = g_initable_new (g_tls_backend_get_certificate_type (backend),
+                         NULL, error,
+                         "pkcs12-data", bytes,
+                         "password", password,
+                         NULL);
+
+  g_byte_array_unref (bytes);
+
+  if (cert)
+    {
+      GTlsCertificatePrivate *priv = g_tls_certificate_get_instance_private (G_TLS_CERTIFICATE (cert));
+
+      if (priv->pkcs12_properties_not_overridden)
+        {
+          g_clear_object (&cert);
+          g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED,
+                               _("The current TLS backend does not support PKCS #12"));
+          return NULL;
+        }
+    }
+
+  return G_TLS_CERTIFICATE (cert);
+}
+
+/**
+ * g_tls_certificate_new_from_file_with_password:
+ * @file: (type filename): file containing a certificate to import
+ * @password: (not nullable): password for PKCS #12 files
+ * @error: #GError for error reporting, or %NULL to ignore
+ *
+ * Creates a #GTlsCertificate from the data in @file.
  *
  * If @file cannot be read or parsed, the function will return %NULL and
- * set @error. Otherwise, this behaves like
- * g_tls_certificate_new_from_pem().
+ * set @error.
+ *
+ * Any unknown file types will error with %G_IO_ERROR_NOT_SUPPORTED.
+ * Currently only `.p12` and `.pfx` files are supported.
+ * See g_tls_certificate_new_from_pkcs12() for more details.
+ *
+ * Returns: the new certificate, or %NULL on error
+ *
+ * Since: 2.72
+ */
+GTlsCertificate *
+g_tls_certificate_new_from_file_with_password (const gchar  *file,
+                                               const gchar  *password,
+                                               GError      **error)
+{
+  GTlsCertificate *cert;
+  gchar *contents;
+  gsize length;
+
+  g_return_val_if_fail (file != NULL, NULL);
+  g_return_val_if_fail (password != NULL, NULL);
+  g_return_val_if_fail (error == NULL || *error == NULL, NULL);
+
+  if (!g_str_has_suffix (file, ".p12") && !g_str_has_suffix (file, ".pfx"))
+    {
+      g_set_error (error, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED,
+                   "The file type of \"%s\" is unknown. Only .p12 and .pfx files are supported currently.", file);
+      return NULL;
+    }
+
+  if (!g_file_get_contents (file, &contents, &length, error))
+    return NULL;
+
+  cert = g_tls_certificate_new_from_pkcs12 ((guint8 *)contents, length, password, error);
+
+  g_free (contents);
+  return cert;
+}
+
+/**
+ * g_tls_certificate_new_from_file:
+ * @file: (type filename): file containing a certificate to import
+ * @error: #GError for error reporting, or %NULL to ignore
+ *
+ * Creates a #GTlsCertificate from the data in @file.
+ *
+ * As of 2.72, if the filename ends in `.p12` or `.pfx` the data is loaded by
+ * g_tls_certificate_new_from_pkcs12() otherwise it is loaded by
+ * g_tls_certificate_new_from_pem(). See those functions for
+ * exact details.
+ *
+ * If @file cannot be read or parsed, the function will return %NULL and
+ * set @error.
  *
  * Returns: the new certificate, or %NULL on error
  *
@@ -708,16 +870,23 @@ g_tls_certificate_new_from_pem  (const gchar  *data,
  */
 GTlsCertificate *
 g_tls_certificate_new_from_file (const gchar  *file,
-                                GError      **error)
+                                 GError      **error)
 {
   GTlsCertificate *cert;
   gchar *contents;
   gsize length;
 
+  g_return_val_if_fail (file != NULL, NULL);
+  g_return_val_if_fail (error == NULL || *error == NULL, NULL);
+
   if (!g_file_get_contents (file, &contents, &length, error))
     return NULL;
 
-  cert = g_tls_certificate_new_from_pem (contents, length, error);
+  if (g_str_has_suffix (file, ".p12") || g_str_has_suffix (file, ".pfx"))
+    cert = g_tls_certificate_new_from_pkcs12 ((guint8 *)contents, length, NULL, error);
+  else
+    cert = g_tls_certificate_new_from_pem (contents, length, error);
+
   g_free (contents);
   return cert;
 }
@@ -959,13 +1128,18 @@ g_tls_certificate_get_issuer (GTlsCertificate  *cert)
  * @trusted_ca is %NULL, that bit will never be set in the return
  * value.
  *
- * (All other #GTlsCertificateFlags values will always be set or unset
- * as appropriate.)
+ * GLib guarantees that if certificate verification fails, at least one
+ * error will be set in the return value, but it does not guarantee
+ * that all possible errors will be set. Accordingly, you may not safely
+ * decide to ignore any particular type of error. For example, it would
+ * be incorrect to mask %G_TLS_CERTIFICATE_EXPIRED if you want to allow
+ * expired certificates, because this could potentially be the only
+ * error flag set even if other problems exist with the certificate.
  *
  * Because TLS session context is not used, #GTlsCertificate may not
  * perform as many checks on the certificates as #GTlsConnection would.
- * For example, certificate constraints cannot be honored, and some
- * revocation checks cannot be performed. The best way to verify TLS
+ * For example, certificate constraints may not be honored, and
+ * revocation checks may not be performed. The best way to verify TLS
  * certificates used by a TLS connection is to let #GTlsConnection
  * handle the verification.
  *
index 3b92b97..52e678b 100644 (file)
@@ -63,7 +63,15 @@ GLIB_AVAILABLE_IN_ALL
 GTlsCertificate      *g_tls_certificate_new_from_pem       (const gchar         *data,
                                                            gssize               length,
                                                            GError             **error);
-
+GLIB_AVAILABLE_IN_2_72
+GTlsCertificate      *g_tls_certificate_new_from_pkcs12      (const guint8      *data,
+                                                              gsize              length,
+                                                              const gchar       *password,
+                                                              GError           **error);
+GLIB_AVAILABLE_IN_2_72
+GTlsCertificate      *g_tls_certificate_new_from_file_with_password (const gchar  *file,
+                                                                     const gchar  *password,
+                                                                     GError      **error);
 GLIB_AVAILABLE_IN_ALL
 GTlsCertificate      *g_tls_certificate_new_from_file      (const gchar         *file,
                                                            GError             **error);
index d0a740f..63dd6be 100644 (file)
@@ -59,7 +59,21 @@ g_tls_client_connection_default_init (GTlsClientConnectionInterface *iface)
    * ways indicated here will be rejected unless the application
    * overrides the default via #GTlsConnection::accept-certificate.
    *
+   * GLib guarantees that if certificate verification fails, at least one
+   * flag will be set, but it does not guarantee that all possible flags
+   * will be set. Accordingly, you may not safely decide to ignore any
+   * particular type of error. For example, it would be incorrect to mask
+   * %G_TLS_CERTIFICATE_EXPIRED if you want to allow expired certificates,
+   * because this could potentially be the only error flag set even if
+   * other problems exist with the certificate. Therefore, there is no
+   * safe way to use this property. This is not a horrible problem,
+   * though, because you should not be attempting to ignore validation
+   * errors anyway. If you really must ignore TLS certificate errors,
+   * connect to #GTlsConnection::accept-certificate.
+   *
    * Since: 2.28
+   *
+   * Deprecated: 2.72: Do not attempt to ignore validation errors.
    */
   g_object_interface_install_property (iface,
                                       g_param_spec_flags ("validation-flags",
@@ -69,7 +83,8 @@ g_tls_client_connection_default_init (GTlsClientConnectionInterface *iface)
                                                           G_TLS_CERTIFICATE_VALIDATE_ALL,
                                                           G_PARAM_READWRITE |
                                                           G_PARAM_CONSTRUCT |
-                                                          G_PARAM_STATIC_STRINGS));
+                                                          G_PARAM_STATIC_STRINGS |
+                                                          G_PARAM_DEPRECATED));
 
   /**
    * GTlsClientConnection:server-identity:
@@ -183,9 +198,15 @@ g_tls_client_connection_new (GIOStream           *base_io_stream,
  *
  * Gets @conn's validation flags
  *
+ * This function does not work as originally designed and is impossible
+ * to use correctly. See #GTlsClientConnection:validation-flags for more
+ * information.
+ *
  * Returns: the validation flags
  *
  * Since: 2.28
+ *
+ * Deprecated: 2.72: Do not attempt to ignore validation errors.
  */
 GTlsCertificateFlags
 g_tls_client_connection_get_validation_flags (GTlsClientConnection *conn)
@@ -207,7 +228,13 @@ g_tls_client_connection_get_validation_flags (GTlsClientConnection *conn)
  * checks performed when validating a server certificate. By default,
  * %G_TLS_CERTIFICATE_VALIDATE_ALL is used.
  *
+ * This function does not work as originally designed and is impossible
+ * to use correctly. See #GTlsClientConnection:validation-flags for more
+ * information.
+ *
  * Since: 2.28
+ *
+ * Deprecated: 2.72: Do not attempt to ignore validation errors.
  */
 void
 g_tls_client_connection_set_validation_flags (GTlsClientConnection  *conn,
index 29dbafc..f592fa8 100644 (file)
@@ -59,9 +59,9 @@ GIOStream *           g_tls_client_connection_new                  (GIOStream
                                                                    GSocketConnectable      *server_identity,
                                                                    GError                 **error);
 
-GLIB_AVAILABLE_IN_ALL
+GLIB_DEPRECATED_IN_2_72
 GTlsCertificateFlags  g_tls_client_connection_get_validation_flags (GTlsClientConnection    *conn);
-GLIB_AVAILABLE_IN_ALL
+GLIB_DEPRECATED_IN_2_72
 void                  g_tls_client_connection_set_validation_flags (GTlsClientConnection    *conn,
                                                                    GTlsCertificateFlags     flags);
 GLIB_AVAILABLE_IN_ALL
index 0239489..f930eba 100644 (file)
@@ -143,6 +143,19 @@ g_tls_connection_class_init (GTlsConnectionClass *klass)
    * If no certificate database is set, then the default database will be
    * used. See g_tls_backend_get_default_database().
    *
+   * When using a non-default database, #GTlsConnection must fall back to using
+   * the #GTlsDatabase to perform certificate verification using
+   * g_tls_database_verify_chain(), which means certificate verification will
+   * not be able to make use of TLS session context. This may be less secure.
+   * For example, if you create your own #GTlsDatabase that just wraps the
+   * default #GTlsDatabase, you might expect that you have not changed anything,
+   * but this is not true because you may have altered the behavior of
+   * #GTlsConnection by causing it to use g_tls_database_verify_chain(). See the
+   * documentation of g_tls_database_verify_chain() for more details on specific
+   * security checks that may not be performed. Accordingly, setting a
+   * non-default database is discouraged except for specialty applications with
+   * unusual security requirements.
+   *
    * Since: 2.30
    */
   g_object_class_install_property (gobject_class, PROP_DATABASE,
@@ -248,6 +261,14 @@ g_tls_connection_class_init (GTlsConnectionClass *klass)
    * #GTlsConnection::accept-certificate overrode the default
    * behavior.
    *
+   * GLib guarantees that if certificate verification fails, at least
+   * one error will be set, but it does not guarantee that all possible
+   * errors will be set. Accordingly, you may not safely decide to
+   * ignore any particular type of error. For example, it would be
+   * incorrect to mask %G_TLS_CERTIFICATE_EXPIRED if you want to allow
+   * expired certificates, because this could potentially be the only
+   * error flag set even if other problems exist with the certificate.
+   *
    * Since: 2.28
    */
   g_object_class_install_property (gobject_class, PROP_PEER_CERTIFICATE_ERRORS,
@@ -339,6 +360,15 @@ g_tls_connection_class_init (GTlsConnectionClass *klass)
    * signal handler. Otherwise, if no handler accepts the certificate,
    * the handshake will fail with %G_TLS_ERROR_BAD_CERTIFICATE.
    *
+   * GLib guarantees that if certificate verification fails, this signal
+   * will be emitted with at least one error will be set in @errors, but
+   * it does not guarantee that all possible errors will be set.
+   * Accordingly, you may not safely decide to ignore any particular
+   * type of error. For example, it would be incorrect to ignore
+   * %G_TLS_CERTIFICATE_EXPIRED if you want to allow expired
+   * certificates, because this could potentially be the only error flag
+   * set even if other problems exist with the certificate.
+   *
    * For a server-side connection, @peer_cert is the certificate
    * presented by the client, if this was requested via the server's
    * #GTlsServerConnection:authentication_mode. On the server side,
@@ -470,6 +500,9 @@ g_tls_connection_get_use_system_certdb (GTlsConnection *conn)
  * client-side connections, unless that bit is not set in
  * #GTlsClientConnection:validation-flags).
  *
+ * There are nonintuitive security implications when using a non-default
+ * database. See #GTlsConnection:database for details.
+ *
  * Since: 2.30
  */
 void
@@ -655,6 +688,8 @@ g_tls_connection_get_peer_certificate (GTlsConnection *conn)
  * certificate, after the handshake has completed or failed. (It is
  * not set during the emission of #GTlsConnection::accept-certificate.)
  *
+ * See #GTlsConnection:peer-certificate-errors for more information.
+ *
  * Returns: @conn's peer's certificate errors
  *
  * Since: 2.28
index 2e5a264..7027b12 100644 (file)
@@ -469,7 +469,7 @@ g_tls_database_class_init (GTlsDatabaseClass *klass)
  * certificate in the chain by its #GTlsCertificate:issuer property.
  *
  * @purpose describes the purpose (or usage) for which the certificate
- * is being used. Typically @purpose will be set to #G_TLS_DATABASE_PURPOSE_AUTHENTICATE_SERVER
+ * is being used. Typically @purpose will be set to %G_TLS_DATABASE_PURPOSE_AUTHENTICATE_SERVER
  * which means that the certificate is being used to authenticate a server
  * (and we are acting as the client).
  *
@@ -485,13 +485,21 @@ g_tls_database_class_init (GTlsDatabaseClass *klass)
  * used.
  *
  * If @chain is found to be valid, then the return value will be 0. If
- * @chain is found to be invalid, then the return value will indicate
- * the problems found. If the function is unable to determine whether
- * @chain is valid or not (eg, because @cancellable is triggered
- * before it completes) then the return value will be
- * %G_TLS_CERTIFICATE_GENERIC_ERROR and @error will be set
- * accordingly. @error is not set when @chain is successfully analyzed
- * but found to be invalid.
+ * @chain is found to be invalid, then the return value will indicate at
+ * least one problem found. If the function is unable to determine
+ * whether @chain is valid (for example, because @cancellable is
+ * triggered before it completes) then the return value will be
+ * %G_TLS_CERTIFICATE_GENERIC_ERROR and @error will be set accordingly.
+ * @error is not set when @chain is successfully analyzed but found to
+ * be invalid.
+ *
+ * GLib guarantees that if certificate verification fails, at least one
+ * error will be set in the return value, but it does not guarantee
+ * that all possible errors will be set. Accordingly, you may not safely
+ * decide to ignore any particular type of error. For example, it would
+ * be incorrect to mask %G_TLS_CERTIFICATE_EXPIRED if you want to allow
+ * expired certificates, because this could potentially be the only
+ * error flag set even if other problems exist with the certificate.
  *
  * Prior to GLib 2.48, GLib's default TLS backend modified @chain to
  * represent the certification path built by #GTlsDatabase during
@@ -503,14 +511,14 @@ g_tls_database_class_init (GTlsDatabaseClass *klass)
  *
  * Because TLS session context is not used, #GTlsDatabase may not
  * perform as many checks on the certificates as #GTlsConnection would.
- * For example, certificate constraints cannot be honored, and some
- * revocation checks cannot be performed. The best way to verify TLS
+ * For example, certificate constraints may not be honored, and
+ * revocation checks may not be performed. The best way to verify TLS
  * certificates used by a TLS connection is to let #GTlsConnection
  * handle the verification.
  *
  * The TLS backend may attempt to look up and add missing certificates
- * to the chain. Since GLib 2.70, this may involve HTTP requests to
- * download missing certificates.
+ * to the chain. This may involve HTTP requests to download missing
+ * certificates.
  *
  * This function can block. Use g_tls_database_verify_chain_async() to
  * perform the verification operation asynchronously.
index 03c9332..2f73960 100644 (file)
@@ -89,8 +89,12 @@ g_trash_portal_trash_file (GFile   *file,
 
   fd = g_open (path, O_RDWR | O_CLOEXEC | O_NOFOLLOW);
   if (fd == -1 && errno == EISDIR)
-    /* If it is a directory, fall back to O_PATH */
-    fd = g_open (path, O_PATH | O_CLOEXEC | O_RDONLY | O_NOFOLLOW);
+    /* If it is a directory, fall back to O_PATH.
+     * Remove O_NOFOLLOW since
+     * a) we know it is a directory, not a symlink, and
+     * b) the portal reject this combination
+     */
+    fd = g_open (path, O_PATH | O_CLOEXEC | O_RDONLY);
 
   errsv = errno;
 
index e9e2f75..e89aba6 100644 (file)
@@ -24,7 +24,9 @@
 
 #include <errno.h>
 #include <string.h>
+#ifdef HAVE_UNISTD_H
 #include <unistd.h>
+#endif
 
 /**
  * SECTION:gunixconnection
  * It contains functions to do some of the UNIX socket specific
  * functionality like passing file descriptors.
  *
- * Note that `<gio/gunixconnection.h>` belongs to the UNIX-specific
- * GIO interfaces, thus you have to use the `gio-unix-2.0.pc`
- * pkg-config file when using it.
+ * Since GLib 2.72, #GUnixConnection is available on all platforms. It requires
+ * underlying system support (such as Windows 10 with `AF_UNIX`) at run time.
+ *
+ * Before GLib 2.72, `<gio/gunixconnection.h>` belonged to the UNIX-specific GIO
+ * interfaces, thus you had to use the `gio-unix-2.0.pc` pkg-config file when
+ * using it. This is no longer necessary since GLib 2.72.
  *
  * Since: 2.22
  */
@@ -86,6 +91,7 @@ g_unix_connection_send_fd (GUnixConnection  *connection,
                            GCancellable     *cancellable,
                            GError          **error)
 {
+#ifdef G_OS_UNIX
   GSocketControlMessage *scm;
   GSocket *socket;
 
@@ -114,6 +120,11 @@ g_unix_connection_send_fd (GUnixConnection  *connection,
   g_object_unref (scm);
 
   return TRUE;
+#else
+  g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED,
+                       _("Sending FD is not supported"));
+  return FALSE;
+#endif
 }
 
 /**
@@ -139,6 +150,7 @@ g_unix_connection_receive_fd (GUnixConnection  *connection,
                               GCancellable     *cancellable,
                               GError          **error)
 {
+#ifdef G_OS_UNIX
   GSocketControlMessage **scms;
   gint *fds, nfd, fd, nscm;
   GUnixFDMessage *fdmsg;
@@ -221,6 +233,11 @@ g_unix_connection_receive_fd (GUnixConnection  *connection,
     }
 
   return fd;
+#else
+  g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED,
+                       _("Receiving FD is not supported"));
+  return -1;
+#endif
 }
 
 static void
index 9e5c7d3..e8ac5a7 100644 (file)
  * g_unix_connection_receive_credentials(). To receive credentials of
  * a foreign process connected to a socket, use
  * g_socket_get_credentials().
+ *
+ * Since GLib 2.72, #GUnixCredentialMessage is available on all platforms. It
+ * requires underlying system support (such as Windows 10 with `AF_UNIX`) at run
+ * time.
+ *
+ * Before GLib 2.72, `<gio/gunixcredentialsmessage.h>` belonged to the UNIX-specific
+ * GIO interfaces, thus you had to use the `gio-unix-2.0.pc` pkg-config file
+ * when using it. This is no longer necessary since GLib 2.72.
  */
 
 #include "config.h"
@@ -40,7 +48,9 @@
 #include <fcntl.h>
 #include <errno.h>
 #include <string.h>
+#ifdef HAVE_UNISTD_H
 #include <unistd.h>
+#endif
 
 #include "gunixcredentialsmessage.h"
 #include "gcredentials.h"
index e0c8f67..9c8ef5d 100644 (file)
@@ -1062,7 +1062,6 @@ _g_get_unix_mount_points (void)
           if ((mount_fstype != NULL && g_strcmp0 ("supermount", mount_fstype) == 0) ||
               ((userspace_flags & MNT_MS_USER) &&
                (g_strstr_len (mount_options, -1, "user_xattr") == NULL)) ||
-              (g_strstr_len (mount_options, -1, "pamconsole") == NULL) ||
               (userspace_flags & MNT_MS_USERS) ||
               (userspace_flags & MNT_MS_OWNER))
             {
@@ -1158,7 +1157,6 @@ _g_get_unix_mount_points (void)
 #ifdef HAVE_HASMNTOPT
          || (hasmntopt (mntent, "user") != NULL
              && hasmntopt (mntent, "user") != hasmntopt (mntent, "user_xattr"))
-         || hasmntopt (mntent, "pamconsole") != NULL
          || hasmntopt (mntent, "users") != NULL
          || hasmntopt (mntent, "owner") != NULL
 #endif
@@ -1231,7 +1229,6 @@ _g_get_unix_mount_points (void)
 #ifdef HAVE_HASMNTOPT
          || (hasmntopt (&mntent, "user") != NULL
              && hasmntopt (&mntent, "user") != hasmntopt (&mntent, "user_xattr"))
-         || hasmntopt (&mntent, "pamconsole") != NULL
          || hasmntopt (&mntent, "users") != NULL
          || hasmntopt (&mntent, "owner") != NULL
 #endif
@@ -1669,6 +1666,14 @@ g_unix_mount_for (const char *file_path,
   return entry;
 }
 
+static gpointer
+copy_mount_point_cb (gconstpointer src,
+                     gpointer      data)
+{
+  GUnixMountPoint *src_mount_point = (GUnixMountPoint *) src;
+  return g_unix_mount_point_copy (src_mount_point);
+}
+
 /**
  * g_unix_mount_points_get:
  * @time_read: (out) (optional): guint64 to contain a timestamp.
@@ -1684,10 +1689,29 @@ g_unix_mount_for (const char *file_path,
 GList *
 g_unix_mount_points_get (guint64 *time_read)
 {
+  static GList *mnt_pts_last = NULL;
+  static guint64 time_read_last = 0;
+  GList *mnt_pts = NULL;
+  guint64 time_read_now;
+  G_LOCK_DEFINE_STATIC (unix_mount_points);
+
+  G_LOCK (unix_mount_points);
+
+  time_read_now = get_mount_points_timestamp ();
+  if (time_read_now != time_read_last || mnt_pts_last == NULL)
+    {
+      time_read_last = time_read_now;
+      g_list_free_full (mnt_pts_last, (GDestroyNotify) g_unix_mount_point_free);
+      mnt_pts_last = _g_get_unix_mount_points ();
+    }
+  mnt_pts = g_list_copy_deep (mnt_pts_last, copy_mount_point_cb, NULL);
+
+  G_UNLOCK (unix_mount_points);
+
   if (time_read)
-    *time_read = get_mount_points_timestamp ();
+    *time_read = time_read_now;
 
-  return _g_get_unix_mount_points ();
+  return mnt_pts;
 }
 
 /**
index 69204e9..f80e8cc 100644 (file)
@@ -28,6 +28,9 @@
 #include "glibintl.h"
 #include "gnetworking.h"
 
+#ifdef G_OS_WIN32
+#include "giowin32-afunix.h"
+#endif
 
 /**
  * SECTION:gunixsocketaddress
  * errors. You can use g_unix_socket_address_abstract_names_supported()
  * to see if abstract names are supported.
  *
- * Note that `<gio/gunixsocketaddress.h>` belongs to the UNIX-specific GIO
- * interfaces, thus you have to use the `gio-unix-2.0.pc` pkg-config file
- * when using it.
+ * Since GLib 2.72, #GUnixSocketAddress is available on all platforms. It
+ * requires underlying system support (such as Windows 10 with `AF_UNIX`) at
+ * run time.
+ *
+ * Before GLib 2.72, `<gio/gunixsocketaddress.h>` belonged to the UNIX-specific
+ * GIO interfaces, thus you had to use the `gio-unix-2.0.pc` pkg-config file
+ * when using it. This is no longer necessary since GLib 2.72.
  */
 
 /**
index 0e14dda..cb6d34f 100644 (file)
  * different kinds of identifiers, such as Hal UDIs, filesystem labels,
  * traditional Unix devices (e.g. `/dev/sda2`), UUIDs. GIO uses predefined
  * strings as names for the different kinds of identifiers:
- * #G_VOLUME_IDENTIFIER_KIND_UUID, #G_VOLUME_IDENTIFIER_KIND_LABEL, etc.
+ * %G_VOLUME_IDENTIFIER_KIND_UUID, %G_VOLUME_IDENTIFIER_KIND_LABEL, etc.
  * Use g_volume_get_identifier() to obtain an identifier for a volume.
  *
  *
- * Note that #G_VOLUME_IDENTIFIER_KIND_HAL_UDI will only be available
+ * Note that %G_VOLUME_IDENTIFIER_KIND_HAL_UDI will only be available
  * when the gvfs hal volume monitor is in use. Other volume monitors
- * will generally be able to provide the #G_VOLUME_IDENTIFIER_KIND_UNIX_DEVICE
+ * will generally be able to provide the %G_VOLUME_IDENTIFIER_KIND_UNIX_DEVICE
  * identifier, which can be used to obtain a hal device by means of
  * libhal_manager_find_device_string_match().
  */
index cafd053..26ca6ef 100644 (file)
@@ -3359,7 +3359,7 @@ uwp_package_cb (gpointer         user_data,
                 GPtrArray       *supported_extgroups,
                 GPtrArray       *supported_protocols)
 {
-  gint i, i_verb, i_ext;
+  guint i, i_verb, i_ext;
   gint extensions_considered;
   GWin32AppInfoApplication *app;
   gchar *app_user_model_id_u8;
@@ -3459,7 +3459,7 @@ uwp_package_cb (gpointer         user_data,
    */
   while (g_hash_table_iter_next (&iter, NULL, (gpointer *) &ext))
     {
-      gint i_hverb;
+      guint i_hverb;
 
       if (!ext)
         continue;
@@ -3476,8 +3476,8 @@ uwp_package_cb (gpointer         user_data,
     }
 
   if (app->verbs->len == 0 && extensions_considered > 0)
-    g_warning ("Unexpectedly, UWP app `%S' (AUMId `%s') supports %d extensions but has no verbs",
-               full_package_name, app_user_model_id_u8, extensions_considered);
+    g_debug ("Unexpectedly, UWP app `%S' (AUMId `%s') supports %d extensions but has no verbs",
+             full_package_name, app_user_model_id_u8, extensions_considered);
 
   for (i = 0; i < supported_protocols->len; i++)
     {
@@ -3537,7 +3537,7 @@ uwp_package_cb (gpointer         user_data,
 
   while (g_hash_table_iter_next (&iter, NULL, (gpointer *) &url))
     {
-      gint i_hverb;
+      guint i_hverb;
 
       if (!url)
         continue;
@@ -4788,7 +4788,7 @@ g_win32_app_info_launch_internal (GWin32AppInfo      *info,
   if (apppath)
     {
       gchar **p;
-      gint p_index;
+      gsize p_index;
 
       for (p = envp, p_index = 0; p[0]; p++, p_index++)
         if ((p[0][0] == 'p' || p[0][0] == 'P') &&
@@ -4856,7 +4856,13 @@ g_win32_app_info_launch_internal (GWin32AppInfo      *info,
           GVariant *platform_data;
 
           g_variant_builder_init (&builder, G_VARIANT_TYPE_ARRAY);
-          g_variant_builder_add (&builder, "{sv}", "pid", g_variant_new_int32 ((gint32) pid));
+          /* pid handles are never bigger than 2^24 as per
+           * https://docs.microsoft.com/en-us/windows/win32/sysinfo/kernel-objects,
+           * so truncating to `int32` is valid.
+           * The gsize cast is to silence a compiler warning
+           * about conversion from pointer to integer of
+           * different size. */
+          g_variant_builder_add (&builder, "{sv}", "pid", g_variant_new_int32 ((gsize) pid));
 
           platform_data = g_variant_ref_sink (g_variant_builder_end (&builder));
           g_signal_emit_by_name (launch_context, "launched", info, platform_data);
@@ -5088,6 +5094,15 @@ g_win32_app_info_launch_uris (GAppInfo           *appinfo,
 }
 
 static gboolean
+g_win32_app_info_should_show (GAppInfo *appinfo)
+{
+  /* FIXME: This is a placeholder implementation to avoid crashes
+   * for now. It can be made more specific to @appinfo in future. */
+
+  return TRUE;
+}
+
+static gboolean
 g_win32_app_info_launch (GAppInfo           *appinfo,
                          GList              *files,
                          GAppLaunchContext  *launch_context,
@@ -5223,7 +5238,7 @@ g_win32_app_info_iface_init (GAppInfoIface *iface)
   iface->supports_uris = g_win32_app_info_supports_uris;
   iface->supports_files = g_win32_app_info_supports_files;
   iface->launch_uris = g_win32_app_info_launch_uris;
-/*  iface->should_show = g_win32_app_info_should_show;*/
+  iface->should_show = g_win32_app_info_should_show;
 /*  iface->set_as_default_for_type = g_win32_app_info_set_as_default_for_type;*/
 /*  iface->set_as_default_for_extension = g_win32_app_info_set_as_default_for_extension;*/
 /*  iface->add_supports_type = g_win32_app_info_add_supports_type;*/
index ee05bb1..58b9994 100755 (executable)
@@ -96,7 +96,7 @@ static BOOL
 WIN32_FROM_HRESULT (HRESULT hresult,
                     DWORD  *win32_error_code)
 {
-  if ((hresult & 0xFFFF0000) == MAKE_HRESULT (SEVERITY_ERROR, FACILITY_WIN32, 0) ||
+  if ((hresult & (HRESULT) 0xFFFF0000) == MAKE_HRESULT (SEVERITY_ERROR, FACILITY_WIN32, 0) ||
       hresult == S_OK)
     {
       *win32_error_code = HRESULT_CODE (hresult);
@@ -815,4 +815,4 @@ xml_parser_iteration (struct _xml_sax_state  *sax,
     }
 
   return TRUE;
-}
\ No newline at end of file
+}
diff --git a/gio/gwin32sid.c b/gio/gwin32sid.c
new file mode 100644 (file)
index 0000000..6112cf1
--- /dev/null
@@ -0,0 +1,234 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2018 Руслан Ижбулатов
+ * Copyright (C) 2022 Red Hat, Inc.
+ *
+ * This library 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 library 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/>.
+ *
+ * Author: Руслан Ижбулатов <lrn1986@gmail.com>
+ */
+
+#include "config.h"
+
+#include "gwin32sid.h"
+#include "gioerror.h"
+
+#include <sddl.h>
+
+/**
+ * _g_win32_sid_replace: (skip)
+ * @dest: A pointer to a SID storage
+ * @src: Existing SID
+ * @error: return location for a #GError, or %NULL
+ *
+ * Creates a copy of the @src SID and puts that into @dest, after freeing
+ * existing SID in @dest (if any).
+ *
+ * The @src SID must be valid (use IsValidSid() to ensure that).
+ *
+ * Returns: TRUE on success, FALSE otherwise
+ */
+static gboolean
+_g_win32_sid_replace (SID **dest,
+                      SID  *src,
+                      GError **error)
+{
+  DWORD sid_len;
+  SID *new_sid;
+
+  g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
+  g_return_val_if_fail (src != NULL, FALSE);
+  g_return_val_if_fail (dest && *dest == NULL, FALSE);
+
+  sid_len = GetLengthSid (src);
+  new_sid = g_malloc (sid_len);
+
+  if (!CopySid (sid_len, new_sid, src))
+    {
+      g_set_error_literal (error, G_IO_ERROR, g_io_error_from_errno (GetLastError ()),
+                           "Failed to copy SID");
+
+      g_free (new_sid);
+      return FALSE;
+    }
+  else
+    {
+      g_free (*dest);
+      *dest = g_steal_pointer (&new_sid);
+
+      return TRUE;
+    }
+}
+
+/**
+ * _g_win32_token_get_sid: (skip)
+ * @token: A handle of an access token
+ * @error: return location for a #GError, or %NULL
+ *
+ * Gets user SID of the @token and returns a copy of that SID.
+ *
+ * Returns: A newly-allocated SID, or NULL in case of an error.
+ *          Free the returned SID with g_free().
+ */
+static SID *
+_g_win32_token_get_sid (HANDLE token,
+                        GError **error)
+{
+  TOKEN_USER *token_user = NULL;
+  DWORD n;
+  PSID psid;
+  SID *result = NULL;
+
+  g_return_val_if_fail (error == NULL || *error == NULL, NULL);
+
+  if (!GetTokenInformation (token, TokenUser, NULL, 0, &n)
+      && GetLastError () != ERROR_INSUFFICIENT_BUFFER)
+    {
+      g_set_error_literal (error, G_IO_ERROR, g_io_error_from_errno (GetLastError ()),
+                           "Failed to GetTokenInformation");
+
+      return NULL;
+    }
+
+  token_user = g_alloca (n);
+
+  if (!GetTokenInformation (token, TokenUser, token_user, n, &n))
+    {
+      g_set_error_literal (error, G_IO_ERROR, g_io_error_from_errno (GetLastError ()),
+                           "Failed to GetTokenInformation");
+
+      return NULL;
+    }
+
+  psid = token_user->User.Sid;
+
+  if (!IsValidSid (psid))
+    {
+      g_set_error_literal (error, G_IO_ERROR, g_io_error_from_errno (GetLastError ()),
+                           "Invalid SID token");
+
+      return NULL;
+    }
+
+  _g_win32_sid_replace (&result, psid, error);
+
+  return result;
+}
+
+/**
+ * _g_win32_process_get_access_token_sid: (skip)
+ * @process_id: Identifier of a process to get an access token of
+ *              (use 0 to get a token of the current process)
+ * @error: return location for a #GError, or %NULL
+ *
+ * Opens the process identified by @process_id and opens its token,
+ * then retrieves SID of the token user and returns a copy of that SID.
+ *
+ * Returns: A newly-allocated SID, or NULL in case of an error.
+ *          Free the returned SID with g_free().
+ */
+SID *
+_g_win32_process_get_access_token_sid (DWORD process_id,
+                                       GError **error)
+{
+  HANDLE process_handle;
+  HANDLE process_token;
+  SID *result = NULL;
+
+  g_return_val_if_fail (error == NULL || *error == NULL, NULL);
+
+  if (process_id == 0)
+    process_handle = GetCurrentProcess ();
+  else
+    process_handle = OpenProcess (PROCESS_QUERY_LIMITED_INFORMATION, FALSE, process_id);
+
+  if (process_handle == NULL)
+    {
+      g_set_error (error, G_IO_ERROR, g_io_error_from_errno (GetLastError ()),
+                   "%s failed", process_id == 0 ? "GetCurrentProcess" : "OpenProcess");
+
+      return NULL;
+    }
+
+  if (!OpenProcessToken (process_handle, TOKEN_QUERY, &process_token))
+    {
+      g_set_error_literal (error, G_IO_ERROR, g_io_error_from_errno (GetLastError ()),
+                           "OpenProcessToken failed");
+
+      CloseHandle (process_handle);
+      return NULL;
+    }
+
+  result = _g_win32_token_get_sid (process_token, error);
+
+  CloseHandle (process_token);
+  CloseHandle (process_handle);
+
+  return result;
+}
+
+/**
+ * _g_win32_sid_to_string: (skip)
+ * @sid: a SID.
+ * @error: return location for a #GError, or %NULL
+ *
+ * Convert a SID to its string form.
+ *
+ * Returns: A newly-allocated string, or NULL in case of an error.
+ */
+gchar *
+_g_win32_sid_to_string (SID *sid, GError **error)
+{
+  gchar *tmp, *ret;
+
+  g_return_val_if_fail (sid != NULL, NULL);
+  g_return_val_if_fail (error == NULL || *error == NULL, NULL);
+
+  if (!ConvertSidToStringSidA (sid, &tmp))
+    {
+      g_set_error_literal (error, G_IO_ERROR, g_io_error_from_errno (GetLastError ()),
+                           "Failed to ConvertSidToString");
+
+      return NULL;
+    }
+
+  ret = g_strdup (tmp);
+  LocalFree (tmp);
+  return ret;
+}
+
+/**
+ * _g_win32_current_process_sid_string: (skip)
+ * @error: return location for a #GError, or %NULL
+ *
+ * Get the current process SID, as a string.
+ *
+ * Returns: A newly-allocated string, or NULL in case of an error.
+ */
+gchar *
+_g_win32_current_process_sid_string (GError **error)
+{
+  SID *sid;
+  gchar *ret;
+
+  g_return_val_if_fail (error == NULL || *error == NULL, NULL);
+
+  sid = _g_win32_process_get_access_token_sid (0, error);
+  if (!sid)
+    return NULL;
+
+  ret = _g_win32_sid_to_string (sid, error);
+  g_free (sid);
+  return ret;
+}
diff --git a/gio/gwin32sid.h b/gio/gwin32sid.h
new file mode 100644 (file)
index 0000000..84c0377
--- /dev/null
@@ -0,0 +1,40 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright (C) 2018 Руслан Ижбулатов
+ * Copyright (C) 2022 Red Hat, Inc.
+ *
+ * This library 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 library 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/>.
+ *
+ * Author: Руслан Ижбулатов <lrn1986@gmail.com>
+ */
+
+#ifndef __G_WIN32_SID_H__
+#define __G_WIN32_SID_H__
+
+#include <glib.h>
+#include <windows.h>
+
+G_BEGIN_DECLS
+
+SID      * _g_win32_process_get_access_token_sid         (DWORD    process_id,
+                                                          GError **error);
+
+gchar    * _g_win32_sid_to_string                        (SID     *sid,
+                                                          GError **error);
+
+gchar    * _g_win32_current_process_sid_string           (GError **error);
+
+G_END_DECLS
+
+#endif /* __G_WIN32_SID_H__ */
index 89c6dc6..9019104 100644 (file)
@@ -74,15 +74,12 @@ if host_system != 'windows'
     endif
   endif
 
-  # res_init()
-  if cc.links('''#include <sys/types.h>
-                 #include <netinet/in.h>
-                 #include <arpa/nameser.h>
-                 #include <resolv.h>
+  # dn_comp()
+  if cc.links('''#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)
+                   return dn_comp(NULL, NULL, 0, NULL, NULL) == -1;
+                 } ''', args : network_args, name : 'dn_comp()')
+    glib_conf.set('HAVE_DN_COMP', 1)
   endif
 
   # res_nclose()
@@ -341,12 +338,6 @@ local_sources = files(
 
 platform_deps = []
 internal_deps = []
-# TODO: internal_objects is a workaround for
-# <https://github.com/mesonbuild/meson/issues/3934> and
-# <https://github.com/mesonbuild/meson/issues/3937>. When we can depend
-# on a meson version where those are fixed, revert the commit that
-# introduced this workaround.
-internal_objects = []
 appinfo_sources = []
 contenttype_sources = []
 portal_sources = []
@@ -363,13 +354,10 @@ if host_system != 'windows'
   unix_sources = files(
     'gfiledescriptorbased.c',
     'giounix-private.c',
-    'gunixconnection.c',
-    'gunixcredentialsmessage.c',
     'gunixfdlist.c',
     'gunixfdmessage.c',
     'gunixmount.c',
     'gunixmounts.c',
-    'gunixsocketaddress.c',
     'gunixvolume.c',
     'gunixvolumemonitor.c',
     'gunixinputstream.c',
@@ -393,20 +381,19 @@ if host_system != 'windows'
 
   gio_unix_include_headers = files(
     'gfiledescriptorbased.h',
-    'gunixconnection.h',
-    'gunixcredentialsmessage.h',
     'gunixmounts.h',
     'gunixfdlist.h',
     'gunixfdmessage.h',
     'gunixinputstream.h',
     'gunixoutputstream.h',
-    'gunixsocketaddress.h',
   )
 
   if glib_have_cocoa
     settings_sources += files('gnextstepsettingsbackend.m')
     contenttype_sources += files('gosxcontenttype.m')
     appinfo_sources += files('gosxappinfo.m')
+    framework_dep = dependency('appleframeworks', modules : ['Foundation', 'CoreFoundation', 'AppKit'])
+    platform_deps += [framework_dep]
     if glib_have_os_x_9_or_later
       unix_sources += files('gcocoanotificationbackend.m')
     endif
@@ -419,7 +406,6 @@ if host_system != 'windows'
 
   subdir('xdgmime')
   internal_deps += [xdgmime_lib]
-  internal_objects += [xdgmime_lib.extract_all_objects(recursive: false)]
 
   install_headers(gio_unix_include_headers, subdir : 'gio-unix-2.0/gio')
 
@@ -439,6 +425,7 @@ else
   platform_deps += uwp_gio_deps
 
   win32_sources += files(
+    'gmemorymonitorwin32.c',
     'gwin32registrykey.c',
     'gwin32mount.c',
     'gwin32volumemonitor.c',
@@ -449,6 +436,8 @@ else
     'gwin32networkmonitor.c',
     'gwin32networkmonitor.h',
     'gwin32notificationbackend.c',
+    'gwin32sid.c',
+    'gwin32sid.h',
   )
 
   gio_win_rc = configure_file(
@@ -484,6 +473,8 @@ gio_sources = files(
   'gdatagrambased.c',
   'gdatainputstream.c',
   'gdataoutputstream.c',
+  'gdebugcontroller.c',
+  'gdebugcontrollerdbus.c',
   'gdrive.c',
   'gdummyfile.c',
   'gdummyproxyresolver.c',
@@ -582,6 +573,9 @@ gio_sources = files(
   'gdtlsclientconnection.c',
   'gdtlsserverconnection.c',
   'gunionvolumemonitor.c',
+  'gunixconnection.c',
+  'gunixcredentialsmessage.c',
+  'gunixsocketaddress.c',
   'gvfs.c',
   'gvolume.c',
   'gvolumemonitor.c',
@@ -631,6 +625,8 @@ gio_headers = files(
   'gdatagrambased.h',
   'gdatainputstream.h',
   'gdataoutputstream.h',
+  'gdebugcontroller.h',
+  'gdebugcontrollerdbus.h',
   'gdrive.h',
   'gemblem.h',
   'gemblemedicon.h',
@@ -717,6 +713,9 @@ gio_headers = files(
   'gdtlsconnection.h',
   'gdtlsclientconnection.h',
   'gdtlsserverconnection.h',
+  'gunixconnection.h',
+  'gunixcredentialsmessage.h',
+  'gunixsocketaddress.h',
   'gvfs.h',
   'gvolume.h',
   'gvolumemonitor.h',
@@ -758,20 +757,17 @@ gioenumtypes_dep = declare_dependency(sources : [gioenumtypes_h, glib_enumtypes_
 if glib_conf.has('HAVE_SYS_INOTIFY_H') and have_func_inotify_init1
   subdir('inotify')
   internal_deps += [ inotify_lib ]
-  internal_objects += [inotify_lib.extract_all_objects(recursive: false)]
 endif
 
 # kevent
 if have_func_kqueue and have_func_kevent
   subdir('kqueue')
   internal_deps += [ kqueue_lib ]
-  internal_objects += [kqueue_lib.extract_all_objects(recursive: false)]
 endif
 
 if host_system == 'windows'
   subdir('win32')
   internal_deps += [ giowin32_lib ]
-  internal_objects += [giowin32_lib.extract_all_objects(recursive: false)]
 endif
 
 if have_bash
@@ -807,13 +803,13 @@ endif
 libgio = library('gio-2.0',
   gioenumtypes_h, gioenumtypes_c, gnetworking_h, gio_sources,
   gio_dtrace_hdr, gio_dtrace_obj,
-  objects : internal_objects,
   version : library_version,
   soversion : soversion,
   darwin_versions : darwin_versions,
   install : true,
   include_directories : [configinc, gioinc],
   #  '$(gio_win32_res_ldflag)',
+  link_with: internal_deps,
   dependencies : [libz_dep, libdl_dep, libmount_dep, libglib_dep,
                   libgobject_dep, libgmodule_dep, selinux_dep, xattr_dep,
                   platform_deps, network_libs, libsysprof_capture_dep],
@@ -835,8 +831,17 @@ libgio_dep = declare_dependency(link_with : libgio,
   dependencies : [libgmodule_dep, libgobject_dep, gioenumtypes_dep],
   include_directories : [gioinc])
 
+# Work around variables kwarg requiring Meson 0.56
+if meson.version().version_compare('>=0.56.0')
+  libgio_dep = declare_dependency(dependencies: libgio_dep,
+    variables: [
+      'schemasdir=' + join_paths(glib_datadir, schemas_subdir),
+      'giomoduledir=' + glib_giomodulesdir,
+    ]
+  )
+endif
+
 pkg.generate(libgio,
-  libraries_private : [osx_ldflags],
   requires : ['glib-2.0', 'gobject-2.0'],
   variables : ['datadir=' + join_paths('${prefix}', get_option('datadir')),
                'schemasdir=' + join_paths('${datadir}', schemas_subdir),
@@ -872,7 +877,7 @@ if host_system == 'windows'
     description : 'Windows specific headers for glib I/O library',
   )
   if meson.version().version_compare('>=0.54.0')
-    meson.override_dependency('gio-win32-2.0', libgio_dep)
+    meson.override_dependency('gio-windows-2.0', libgio_dep)
   endif
 else
   pkg.generate(requires : ['gobject-2.0', 'gio-2.0'],
index 91fc080..a41e989 100644 (file)
@@ -115,33 +115,20 @@ test_name (void)
 }
 
 static gboolean
-strv_has_string (gchar       **haystack,
-                 const gchar  *needle)
-{
-  guint n;
-
-  for (n = 0; haystack != NULL && haystack[n] != NULL; n++)
-    {
-      if (g_strcmp0 (haystack[n], needle) == 0)
-        return TRUE;
-    }
-  return FALSE;
-}
-
-static gboolean
-strv_strv_cmp (gchar **a, gchar **b)
+strv_strv_cmp (const gchar * const *a,
+               const gchar * const *b)
 {
   guint n;
 
   for (n = 0; a[n] != NULL; n++)
     {
-       if (!strv_has_string (b, a[n]))
+       if (!g_strv_contains (b, a[n]))
          return FALSE;
     }
 
   for (n = 0; b[n] != NULL; n++)
     {
-       if (!strv_has_string (a, b[n]))
+       if (!g_strv_contains (a, b[n]))
          return FALSE;
     }
 
@@ -149,7 +136,7 @@ strv_strv_cmp (gchar **a, gchar **b)
 }
 
 static gboolean
-strv_set_equal (gchar **strv, ...)
+strv_set_equal (const gchar * const *strv, ...)
 {
   guint count;
   va_list list;
@@ -164,7 +151,7 @@ strv_set_equal (gchar **strv, ...)
       str = va_arg (list, const gchar *);
       if (str == NULL)
         break;
-      if (!strv_has_string (strv, str))
+      if (!g_strv_contains (strv, str))
         {
           res = FALSE;
           break;
@@ -215,7 +202,7 @@ test_simple_group (void)
   g_assert_false (g_action_group_has_action (G_ACTION_GROUP (group), "baz"));
   actions = g_action_group_list_actions (G_ACTION_GROUP (group));
   g_assert_cmpint (g_strv_length (actions), ==, 2);
-  g_assert_true (strv_set_equal (actions, "foo", "bar", NULL));
+  g_assert_true (strv_set_equal ((const gchar * const *) actions, "foo", "bar", NULL));
   g_strfreev (actions);
   g_assert_true (g_action_group_get_action_enabled (G_ACTION_GROUP (group), "foo"));
   g_assert_true (g_action_group_get_action_enabled (G_ACTION_GROUP (group), "bar"));
@@ -275,10 +262,12 @@ test_stateful (void)
 
   if (g_test_undefined ())
     {
+      GVariant *new_state = g_variant_ref_sink (g_variant_new_int32 (123));
       g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
                              "*assertion*g_variant_is_of_type*failed*");
-      g_simple_action_set_state (action, g_variant_new_int32 (123));
+      g_simple_action_set_state (action, new_state);
       g_test_assert_expected_messages ();
+      g_variant_unref (new_state);
     }
 
   g_simple_action_set_state (action, g_variant_new_string ("hello"));
@@ -292,10 +281,12 @@ test_stateful (void)
 
   if (g_test_undefined ())
     {
+      GVariant *new_state = g_variant_ref_sink (g_variant_new_int32 (123));
       g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
                              "*assertion*!= NULL*failed*");
-      g_simple_action_set_state (action, g_variant_new_int32 (123));
+      g_simple_action_set_state (action, new_state);
       g_test_assert_expected_messages ();
+      g_variant_unref (new_state);
     }
 
   g_object_unref (action);
@@ -536,6 +527,8 @@ count_activation (const gchar *action)
   count = GPOINTER_TO_INT (g_hash_table_lookup (activation_counts, action));
   count++;
   g_hash_table_insert (activation_counts, (gpointer)action, GINT_TO_POINTER (count));
+
+  g_main_context_wakeup (NULL);
 }
 
 static gint
@@ -593,7 +586,7 @@ compare_action_groups (GActionGroup *a, GActionGroup *b)
 
   alist = g_action_group_list_actions (a);
   blist = g_action_group_list_actions (b);
-  equal = strv_strv_cmp (alist, blist);
+  equal = strv_strv_cmp ((const gchar * const *) alist, (const gchar * const *) blist);
 
   for (i = 0; equal && alist[i]; i++)
     {
@@ -743,6 +736,41 @@ call_describe (gpointer user_data)
 G_GNUC_BEGIN_IGNORE_DEPRECATIONS
 
 static void
+action_added_removed_cb (GActionGroup *action_group,
+                         char         *action_name,
+                         gpointer      user_data)
+{
+  guint *counter = user_data;
+
+  *counter = *counter + 1;
+  g_main_context_wakeup (NULL);
+}
+
+static void
+action_enabled_changed_cb (GActionGroup *action_group,
+                           char         *action_name,
+                           gboolean      enabled,
+                           gpointer      user_data)
+{
+  guint *counter = user_data;
+
+  *counter = *counter + 1;
+  g_main_context_wakeup (NULL);
+}
+
+static void
+action_state_changed_cb (GActionGroup *action_group,
+                         char         *action_name,
+                         GVariant     *value,
+                         gpointer      user_data)
+{
+  guint *counter = user_data;
+
+  *counter = *counter + 1;
+  g_main_context_wakeup (NULL);
+}
+
+static void
 test_dbus_export (void)
 {
   GDBusConnection *bus;
@@ -754,6 +782,8 @@ test_dbus_export (void)
   GVariant *v;
   guint id;
   gchar **actions;
+  guint n_actions_added = 0, n_actions_enabled_changed = 0, n_actions_removed = 0, n_actions_state_changed = 0;
+  gulong added_signal_id, enabled_changed_signal_id, removed_signal_id, state_changed_signal_id;
 
   loop = g_main_loop_new (NULL, FALSE);
 
@@ -770,13 +800,19 @@ test_dbus_export (void)
   g_assert_no_error (error);
 
   proxy = g_dbus_action_group_get (bus, g_dbus_connection_get_unique_name (bus), "/");
+  added_signal_id = g_signal_connect (proxy, "action-added", G_CALLBACK (action_added_removed_cb), &n_actions_added);
+  enabled_changed_signal_id = g_signal_connect (proxy, "action-enabled-changed", G_CALLBACK (action_enabled_changed_cb), &n_actions_enabled_changed);
+  removed_signal_id = g_signal_connect (proxy, "action-removed", G_CALLBACK (action_added_removed_cb), &n_actions_removed);
+  state_changed_signal_id = g_signal_connect (proxy, "action-state-changed", G_CALLBACK (action_state_changed_cb), &n_actions_state_changed);
 
   actions = g_action_group_list_actions (G_ACTION_GROUP (proxy));
   g_assert_cmpint (g_strv_length (actions), ==, 0);
   g_strfreev (actions);
 
-  g_timeout_add (100, stop_loop, loop);
-  g_main_loop_run (loop);
+  /* Actions are queried from the bus asynchronously after the first
+   * list_actions() call. Wait for the expected signals then check again. */
+  while (n_actions_added < G_N_ELEMENTS (exported_entries))
+    g_main_context_iteration (NULL, TRUE);
 
   actions = g_action_group_list_actions (G_ACTION_GROUP (proxy));
   g_assert_cmpint (g_strv_length (actions), ==, G_N_ELEMENTS (exported_entries));
@@ -795,54 +831,56 @@ test_dbus_export (void)
   g_assert_true (compare_action_groups (G_ACTION_GROUP (group), G_ACTION_GROUP (proxy)));
 
   /* test that various changes get propagated from group to proxy */
+  n_actions_added = 0;
   action = g_simple_action_new_stateful ("italic", NULL, g_variant_new_boolean (FALSE));
   g_simple_action_group_insert (group, G_ACTION (action));
   g_object_unref (action);
 
-  g_timeout_add (100, stop_loop, loop);
-  g_main_loop_run (loop);
+  while (n_actions_added == 0)
+    g_main_context_iteration (NULL, TRUE);
 
   g_assert_true (compare_action_groups (G_ACTION_GROUP (group), G_ACTION_GROUP (proxy)));
 
   action = G_SIMPLE_ACTION (g_simple_action_group_lookup (group, "cut"));
   g_simple_action_set_enabled (action, FALSE);
 
-  g_timeout_add (100, stop_loop, loop);
-  g_main_loop_run (loop);
+  while (n_actions_enabled_changed == 0)
+    g_main_context_iteration (NULL, TRUE);
 
   g_assert_true (compare_action_groups (G_ACTION_GROUP (group), G_ACTION_GROUP (proxy)));
 
   action = G_SIMPLE_ACTION (g_simple_action_group_lookup (group, "bold"));
   g_simple_action_set_state (action, g_variant_new_boolean (FALSE));
 
-  g_timeout_add (100, stop_loop, loop);
-  g_main_loop_run (loop);
+  while (n_actions_state_changed == 0)
+    g_main_context_iteration (NULL, TRUE);
 
   g_assert_true (compare_action_groups (G_ACTION_GROUP (group), G_ACTION_GROUP (proxy)));
 
   g_simple_action_group_remove (group, "italic");
 
-  g_timeout_add (100, stop_loop, loop);
-  g_main_loop_run (loop);
+  while (n_actions_removed == 0)
+    g_main_context_iteration (NULL, TRUE);
 
   g_assert_true (compare_action_groups (G_ACTION_GROUP (group), G_ACTION_GROUP (proxy)));
 
   /* test that activations and state changes propagate the other way */
-
+  n_actions_state_changed = 0;
   g_assert_cmpint (activation_count ("copy"), ==, 0);
   g_action_group_activate_action (G_ACTION_GROUP (proxy), "copy", NULL);
 
-  g_timeout_add (100, stop_loop, loop);
-  g_main_loop_run (loop);
+  while (activation_count ("copy") == 0)
+    g_main_context_iteration (NULL, TRUE);
 
   g_assert_cmpint (activation_count ("copy"), ==, 1);
   g_assert_true (compare_action_groups (G_ACTION_GROUP (group), G_ACTION_GROUP (proxy)));
 
+  n_actions_state_changed = 0;
   g_assert_cmpint (activation_count ("bold"), ==, 0);
   g_action_group_activate_action (G_ACTION_GROUP (proxy), "bold", NULL);
 
-  g_timeout_add (100, stop_loop, loop);
-  g_main_loop_run (loop);
+  while (n_actions_state_changed == 0)
+    g_main_context_iteration (NULL, TRUE);
 
   g_assert_cmpint (activation_count ("bold"), ==, 1);
   g_assert_true (compare_action_groups (G_ACTION_GROUP (group), G_ACTION_GROUP (proxy)));
@@ -850,10 +888,11 @@ test_dbus_export (void)
   g_assert_true (g_variant_get_boolean (v));
   g_variant_unref (v);
 
+  n_actions_state_changed = 0;
   g_action_group_change_action_state (G_ACTION_GROUP (proxy), "bold", g_variant_new_boolean (FALSE));
 
-  g_timeout_add (100, stop_loop, loop);
-  g_main_loop_run (loop);
+  while (n_actions_state_changed == 0)
+    g_main_context_iteration (NULL, TRUE);
 
   g_assert_cmpint (activation_count ("bold"), ==, 1);
   g_assert_true (compare_action_groups (G_ACTION_GROUP (group), G_ACTION_GROUP (proxy)));
@@ -863,6 +902,10 @@ test_dbus_export (void)
 
   g_dbus_connection_unexport_action_group (bus, id);
 
+  g_signal_handler_disconnect (proxy, added_signal_id);
+  g_signal_handler_disconnect (proxy, enabled_changed_signal_id);
+  g_signal_handler_disconnect (proxy, removed_signal_id);
+  g_signal_handler_disconnect (proxy, state_changed_signal_id);
   g_object_unref (proxy);
   g_object_unref (group);
   g_main_loop_unref (loop);
index 725d91e..9db8c4d 100644 (file)
@@ -78,6 +78,11 @@ test_app_monitor (Fixture       *fixture,
   GAppInfoMonitor *monitor;
   GMainLoop *loop;
 
+#ifdef G_OS_WIN32
+  g_test_skip (".desktop monitor on win32");
+  return;
+#endif
+
   app_path = g_build_filename (fixture->applications_dir, "app.desktop", NULL);
 
   /* FIXME: this shouldn't be required */
diff --git a/gio/tests/cert-tests/key-cert-password-123.p12 b/gio/tests/cert-tests/key-cert-password-123.p12
new file mode 100644 (file)
index 0000000..4da265f
Binary files /dev/null and b/gio/tests/cert-tests/key-cert-password-123.p12 differ
index d3a09ba..e76c6d2 100644 (file)
@@ -27,10 +27,10 @@ import subprocess
 import sys
 import tempfile
 import unittest
+import xml.etree.ElementTree as ET
 
 import taptestrunner
 
-
 # Disable line length warnings as wrapping the C code templates would be hard
 # flake8: noqa: E501
 
@@ -38,6 +38,10 @@ import taptestrunner
 Result = collections.namedtuple("Result", ("info", "out", "err", "subs"))
 
 
+def on_win32():
+    return sys.platform.find('win') != -1
+
+
 class TestCodegen(unittest.TestCase):
     """Integration test for running gdbus-codegen.
 
@@ -55,7 +59,7 @@ class TestCodegen(unittest.TestCase):
     cwd = ""
 
     def setUp(self):
-        self.timeout_seconds = 10  # seconds per test
+        self.timeout_seconds = 100  # seconds per test
         self.tmpdir = tempfile.TemporaryDirectory()
         self.cwd = os.getcwd()
         os.chdir(self.tmpdir.name)
@@ -281,6 +285,7 @@ class TestCodegen(unittest.TestCase):
         with self.assertRaises(subprocess.CalledProcessError):
             self.runCodegen()
 
+    @unittest.skipIf(on_win32(), "requires /dev/stdout")
     def test_empty_interface_header(self):
         """Test generating a header with an empty interface file."""
         result = self.runCodegenWithInterface("", "--output", "/dev/stdout", "--header")
@@ -304,6 +309,7 @@ G_END_DECLS
             result.out.strip(),
         )
 
+    @unittest.skipIf(on_win32(), "requires /dev/stdout")
     def test_empty_interface_body(self):
         """Test generating a body with an empty interface file."""
         result = self.runCodegenWithInterface("", "--output", "/dev/stdout", "--body")
@@ -323,6 +329,7 @@ G_END_DECLS
             result.out.strip(),
         )
 
+    @unittest.skipIf(on_win32(), "requires /dev/stdout")
     def test_reproducible(self):
         """Test builds are reproducible regardless of file ordering."""
         xml_contents1 = """
@@ -382,6 +389,47 @@ G_END_DECLS
                 # The output should be the same.
                 self.assertEqual(result1.out, result2.out)
 
+    def test_generate_docbook(self):
+        """Test the basic functionality of the docbook generator."""
+        xml_contents = """
+        <node>
+          <interface name="org.project.Bar.Frobnicator">
+            <method name="RandomMethod"/>
+          </interface>
+        </node>
+        """
+        res = self.runCodegenWithInterface(
+            xml_contents,
+            "--generate-docbook",
+            "test",
+        )
+        self.assertEqual("", res.err)
+        self.assertEqual("", res.out)
+        with open("test-org.project.Bar.Frobnicator.xml", "r") as f:
+            xml_data = f.readlines()
+            self.assertTrue(len(xml_data) != 0)
+
+    def test_generate_rst(self):
+        """Test the basic functionality of the rst generator."""
+        xml_contents = """
+        <node>
+          <interface name="org.project.Bar.Frobnicator">
+            <method name="RandomMethod"/>
+          </interface>
+        </node>
+        """
+        res = self.runCodegenWithInterface(
+            xml_contents,
+            "--generate-rst",
+            "test",
+        )
+        self.assertEqual("", res.err)
+        self.assertEqual("", res.out)
+        with open("test-org.project.Bar.Frobnicator.rst", "r") as f:
+            rst = f.readlines()
+            self.assertTrue(len(rst) != 0)
+
+    @unittest.skipIf(on_win32(), "requires /dev/stdout")
     def test_glib_min_required_invalid(self):
         """Test running with an invalid --glib-min-required."""
         with self.assertRaises(subprocess.CalledProcessError):
@@ -394,6 +442,7 @@ G_END_DECLS
                 "hello mum",
             )
 
+    @unittest.skipIf(on_win32(), "requires /dev/stdout")
     def test_glib_min_required_too_low(self):
         """Test running with a --glib-min-required which is too low (and hence
         probably a typo)."""
@@ -402,6 +451,7 @@ G_END_DECLS
                 "", "--output", "/dev/stdout", "--body", "--glib-min-required", "2.6"
             )
 
+    @unittest.skipIf(on_win32(), "requires /dev/stdout")
     def test_glib_min_required_major_only(self):
         """Test running with a --glib-min-required which contains only a major version."""
         result = self.runCodegenWithInterface(
@@ -417,6 +467,7 @@ G_END_DECLS
         self.assertEqual("", result.err)
         self.assertNotEqual("", result.out.strip())
 
+    @unittest.skipIf(on_win32(), "requires /dev/stdout")
     def test_glib_min_required_with_micro(self):
         """Test running with a --glib-min-required which contains a micro version."""
         result = self.runCodegenWithInterface(
@@ -425,6 +476,7 @@ G_END_DECLS
         self.assertEqual("", result.err)
         self.assertNotEqual("", result.out.strip())
 
+    @unittest.skipIf(on_win32(), "requires /dev/stdout")
     def test_glib_max_allowed_too_low(self):
         """Test running with a --glib-max-allowed which is too low (and hence
         probably a typo)."""
@@ -433,6 +485,7 @@ G_END_DECLS
                 "", "--output", "/dev/stdout", "--body", "--glib-max-allowed", "2.6"
             )
 
+    @unittest.skipIf(on_win32(), "requires /dev/stdout")
     def test_glib_max_allowed_major_only(self):
         """Test running with a --glib-max-allowed which contains only a major version."""
         result = self.runCodegenWithInterface(
@@ -441,6 +494,7 @@ G_END_DECLS
         self.assertEqual("", result.err)
         self.assertNotEqual("", result.out.strip())
 
+    @unittest.skipIf(on_win32(), "requires /dev/stdout")
     def test_glib_max_allowed_with_micro(self):
         """Test running with a --glib-max-allowed which contains a micro version."""
         result = self.runCodegenWithInterface(
@@ -449,6 +503,7 @@ G_END_DECLS
         self.assertEqual("", result.err)
         self.assertNotEqual("", result.out.strip())
 
+    @unittest.skipIf(on_win32(), "requires /dev/stdout")
     def test_glib_max_allowed_unstable(self):
         """Test running with a --glib-max-allowed which is unstable. It should
         be rounded up to the next stable version number, and hence should not
@@ -466,6 +521,7 @@ G_END_DECLS
         self.assertEqual("", result.err)
         self.assertNotEqual("", result.out.strip())
 
+    @unittest.skipIf(on_win32(), "requires /dev/stdout")
     def test_glib_max_allowed_less_than_min_required(self):
         """Test running with a --glib-max-allowed which is less than
         --glib-min-required."""
@@ -481,6 +537,7 @@ G_END_DECLS
                 "2.64",
             )
 
+    @unittest.skipIf(on_win32(), "requires /dev/stdout")
     def test_unix_fd_types_and_annotations(self):
         """Test an interface with `h` arguments, no annotation, and GLib < 2.64.
 
@@ -539,6 +596,7 @@ G_END_DECLS
         self.assertEqual("", result.err)
         self.assertEqual(result.out.strip().count("GUnixFDList"), 18)
 
+    @unittest.skipIf(on_win32(), "requires /dev/stdout")
     def test_call_flags_and_timeout_method_args(self):
         """Test that generated method call functions have @call_flags and
         @timeout_msec args if and only if GLib >= 2.64.
@@ -585,6 +643,40 @@ G_END_DECLS
         self.assertEqual(result.out.strip().count("GDBusCallFlags call_flags,"), 2)
         self.assertEqual(result.out.strip().count("gint timeout_msec,"), 2)
 
+    def test_generate_valid_docbook(self):
+        """Test the basic functionality of the docbook generator."""
+        xml_contents = """
+        <node>
+          <interface name="org.project.Bar.Frobnicator">
+            <!-- Resize:
+                 @size: New partition size in bytes, 0 for maximal size.
+                 @options: Options.
+                 @since 2.7.2
+
+                 Resizes the partition.
+
+                 The partition will not change its position but might be slightly bigger
+                 than requested due to sector counts and alignment (e.g. 1MiB).
+                 If the requested size can't be allocated it results in an error.
+                 The maximal size can automatically be set by using 0 as size.
+            -->
+            <method name="Resize">
+              <arg name="size" direction="in" type="t"/>
+              <arg name="options" direction="in" type="a{sv}"/>
+            </method>
+          </interface>
+        </node>
+        """
+        res = self.runCodegenWithInterface(
+            xml_contents,
+            "--generate-docbook",
+            "test",
+        )
+        self.assertEqual("", res.err)
+        self.assertEqual("", res.out)
+        with open("test-org.project.Bar.Frobnicator.xml", "r") as f:
+            self.assertTrue(ET.parse(f) is not None)
+
 
 if __name__ == "__main__":
     unittest.main(testRunner=taptestrunner.TAPTestRunner())
index db34f1d..6cfd366 100644 (file)
@@ -1,8 +1,6 @@
 #include <gio/gio.h>
 #include <string.h>
 
-#include "glib/glib-private.h"
-
 #define g_assert_content_type_equals(s1, s2)                   \
   do {                                                                 \
     const char *__s1 = (s1), *__s2 = (s2);                     \
@@ -18,9 +16,6 @@
 static void
 test_guess (void)
 {
-#ifdef _GLIB_ADDRESS_SANITIZER
-  g_test_incomplete ("FIXME: Leaks xdgmime internal data, see glib#2310");
-#else
   gchar *res;
   gchar *expected;
   gchar *existing_directory;
@@ -35,7 +30,7 @@ test_guess (void)
   existing_directory = (gchar *) g_getenv ("SYSTEMROOT");
 
   if (existing_directory)
-    existing_directory = g_strdup_printf ("%s/", existing_directory);
+    existing_directory = g_strdup_printf ("%s" G_DIR_SEPARATOR_S, existing_directory);
 #else
   existing_directory = g_strdup ("/etc/");
 #endif
@@ -61,7 +56,8 @@ test_guess (void)
   g_free (res);
   g_free (expected);
 
-  /* Sadly OSX just doesn't have as large and robust of a mime type database as Linux */
+  /* Sadly win32 & OSX just don't have as large and robust of a mime type database as Linux */
+#ifndef G_OS_WIN32
 #ifndef __APPLE__
   res = g_content_type_guess ("foo", data, sizeof (data) - 1, &uncertain);
   expected = g_content_type_from_mime_type ("text/plain");
@@ -115,7 +111,7 @@ test_guess (void)
   g_assert_false (uncertain);
   g_free (res);
   g_free (expected);
-#endif
+#endif /* __APPLE__ */
 
   res = g_content_type_guess (NULL, (guchar *)"%!PS-Adobe-2.0 EPSF-1.2", 23, &uncertain);
   expected = g_content_type_from_mime_type ("image/x-eps");
@@ -131,15 +127,12 @@ test_guess (void)
   g_assert_false (uncertain);
   g_free (res);
   g_free (expected);
-#endif
+#endif /* G_OS_WIN32 */
 }
 
 static void
 test_unknown (void)
 {
-#ifdef _GLIB_ADDRESS_SANITIZER
-  g_test_incomplete ("FIXME: Leaks xdgmime internal data, see glib#2310");
-#else
   gchar *unknown;
   gchar *str;
 
@@ -149,15 +142,11 @@ test_unknown (void)
   g_assert_cmpstr (str, ==, "application/octet-stream");
   g_free (str);
   g_free (unknown);
-#endif
 }
 
 static void
 test_subtype (void)
 {
-#ifdef _GLIB_ADDRESS_SANITIZER
-  g_test_incomplete ("FIXME: Leaks xdgmime internal data, see glib#2310");
-#else
   gchar *plain;
   gchar *xml;
 
@@ -169,7 +158,6 @@ test_subtype (void)
 
   g_free (plain);
   g_free (xml);
-#endif
 }
 
 static gint
@@ -183,10 +171,6 @@ find_mime (gconstpointer a, gconstpointer b)
 static void
 test_list (void)
 {
-#ifdef _GLIB_ADDRESS_SANITIZER
-  g_test_incomplete ("FIXME: Leaks xdgmime internal data, see glib#2310");
-  (void) find_mime;
-#else
   GList *types;
   gchar *plain;
   gchar *xml;
@@ -211,17 +195,20 @@ test_list (void)
 
   g_free (plain);
   g_free (xml);
-#endif
 }
 
 static void
 test_executable (void)
 {
-#ifdef _GLIB_ADDRESS_SANITIZER
-  g_test_incomplete ("FIXME: Leaks xdgmime internal data, see glib#2310");
-#else
   gchar *type;
 
+#ifdef G_OS_WIN32
+  type = g_content_type_from_mime_type ("application/vnd.microsoft.portable-executable");
+  /* FIXME: the MIME is not in the default `MIME\Database\Content Type` registry.
+   * g_assert_true (g_content_type_can_be_executable (type));
+   */
+  g_free (type);
+#else
   type = g_content_type_from_mime_type ("application/x-executable");
   g_assert_true (g_content_type_can_be_executable (type));
   g_free (type);
@@ -229,19 +216,15 @@ test_executable (void)
   type = g_content_type_from_mime_type ("text/plain");
   g_assert_true (g_content_type_can_be_executable (type));
   g_free (type);
-
+#endif
   type = g_content_type_from_mime_type ("image/png");
   g_assert_false (g_content_type_can_be_executable (type));
   g_free (type);
-#endif
 }
 
 static void
 test_description (void)
 {
-#ifdef _GLIB_ADDRESS_SANITIZER
-  g_test_incomplete ("FIXME: Leaks xdgmime internal data, see glib#2310");
-#else
   gchar *type;
   gchar *desc;
 
@@ -251,15 +234,11 @@ test_description (void)
 
   g_free (desc);
   g_free (type);
-#endif
 }
 
 static void
 test_icon (void)
 {
-#ifdef _GLIB_ADDRESS_SANITIZER
-  g_test_incomplete ("FIXME: Leaks xdgmime internal data, see glib#2310");
-#else
   gchar *type;
   GIcon *icon;
 
@@ -274,7 +253,9 @@ test_icon (void)
 #ifdef __APPLE__
       g_assert_true (g_strv_contains (names, "text-*"));
 #else
+#ifndef G_OS_WIN32
       g_assert_true (g_strv_contains (names, "text-plain"));
+#endif
       g_assert_true (g_strv_contains (names, "text-x-generic"));
 #endif
     }
@@ -289,22 +270,23 @@ test_icon (void)
       const gchar *const *names;
 
       names = g_themed_icon_get_names (G_THEMED_ICON (icon));
+#ifdef G_OS_WIN32
+      g_assert_true (g_strv_contains (names, "text-x-generic"));
+#else
       g_assert_true (g_strv_contains (names, "application-rtf"));
 #ifndef __APPLE__
       g_assert_true (g_strv_contains (names, "x-office-document"));
 #endif
+#endif
     }
   g_object_unref (icon);
   g_free (type);
-#endif
 }
 
 static void
 test_symbolic_icon (void)
 {
-#ifdef _GLIB_ADDRESS_SANITIZER
-  g_test_incomplete ("FIXME: Leaks xdgmime internal data, see glib#2310");
-#elif !defined(G_OS_WIN32)
+#ifndef G_OS_WIN32
   gchar *type;
   GIcon *icon;
 
@@ -352,9 +334,6 @@ test_symbolic_icon (void)
 static void
 test_tree (void)
 {
-#ifdef _GLIB_ADDRESS_SANITIZER
-  g_test_incomplete ("FIXME: Leaks xdgmime internal data, see glib#2310");
-#else
   const gchar *tests[] = {
     "x-content/image-dcf",
     "x-content/unix-software",
@@ -365,8 +344,8 @@ test_tree (void)
   gchar **types;
   gsize i;
 
-#ifdef __APPLE__
-  g_test_skip ("The OSX backend does not implement g_content_type_guess_for_tree()");
+#if defined(__APPLE__) || defined(G_OS_WIN32)
+  g_test_skip ("The OSX & Windows backends do not implement g_content_type_guess_for_tree()");
   return;
 #endif
 
@@ -379,15 +358,11 @@ test_tree (void)
       g_strfreev (types);
       g_object_unref (file);
    }
-#endif
 }
 
 static void
 test_type_is_a_special_case (void)
 {
-#ifdef _GLIB_ADDRESS_SANITIZER
-  g_test_incomplete ("FIXME: Leaks xdgmime internal data, see glib#2310");
-#else
   gboolean res;
 
   g_test_bug ("https://bugzilla.gnome.org/show_bug.cgi?id=782311");
@@ -395,19 +370,15 @@ test_type_is_a_special_case (void)
   /* Everything but the inode type is application/octet-stream */
   res = g_content_type_is_a ("inode/directory", "application/octet-stream");
   g_assert_false (res);
-#ifndef __APPLE__
+#if !defined(__APPLE__) && !defined(G_OS_WIN32)
   res = g_content_type_is_a ("anything", "application/octet-stream");
   g_assert_true (res);
 #endif
-#endif
 }
 
 static void
 test_guess_svg_from_data (void)
 {
-#ifdef _GLIB_ADDRESS_SANITIZER
-  g_test_incomplete ("FIXME: Leaks xdgmime internal data, see glib#2310");
-#else
   const gchar svgfilecontent[] = "<svg  xmlns=\"http://www.w3.org/2000/svg\"\
       xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n\
     <rect x=\"10\" y=\"10\" height=\"100\" width=\"100\"\n\
@@ -426,15 +397,12 @@ test_guess_svg_from_data (void)
 #endif
   g_assert_false (uncertain);
   g_free (res);
-#endif
 }
 
 static void
 test_mime_from_content (void)
 {
-#ifdef _GLIB_ADDRESS_SANITIZER
-  g_test_incomplete ("FIXME: Leaks xdgmime internal data, see glib#2310");
-#elif defined(__APPLE__)
+#ifdef __APPLE__
   gchar *mime_type;
   mime_type = g_content_type_get_mime_type ("com.microsoft.bmp");
   g_assert_cmpstr (mime_type, ==, "image/bmp");
index cf1853b..31399a7 100644 (file)
@@ -310,9 +310,9 @@ test_expander (void)
                              G_CONVERTER_INPUT_AT_END,
                              &n_read, &n_written, NULL);
 
-  g_assert (cres == G_CONVERTER_FINISHED);
-  g_assert (n_read == 11);
-  g_assert (n_written == 41030);
+  g_assert_cmpint (cres, ==, G_CONVERTER_FINISHED);
+  g_assert_cmpuint (n_read, ==, 11);
+  g_assert_cmpuint (n_written, ==, 41030);
 
   g_converter_reset (expander);
 
@@ -320,9 +320,9 @@ test_expander (void)
                                             sizeof (unexpanded_data),
                                             NULL);
   cstream = g_converter_input_stream_new (mem, expander);
-  g_assert (g_converter_input_stream_get_converter (G_CONVERTER_INPUT_STREAM (cstream)) == expander);
+  g_assert_true (g_converter_input_stream_get_converter (G_CONVERTER_INPUT_STREAM (cstream)) == expander);
   g_object_get (cstream, "converter", &converter, NULL);
-  g_assert (converter == expander);
+  g_assert_true (converter == expander);
   g_object_unref (converter);
   g_object_unref (mem);
 
@@ -334,7 +334,7 @@ test_expander (void)
       res = g_input_stream_read (cstream,
                                 ptr, 1,
                                 NULL, &error);
-      g_assert (res != -1);
+      g_assert_cmpint (res, !=, -1);
       if (res == 0)
        break;
       ptr += res;
@@ -347,9 +347,9 @@ test_expander (void)
 
   mem_out = g_memory_output_stream_new (NULL, 0, g_realloc, g_free);
   cstream_out = g_converter_output_stream_new (mem_out, expander);
-  g_assert (g_converter_output_stream_get_converter (G_CONVERTER_OUTPUT_STREAM (cstream_out)) == expander);
+  g_assert_true (g_converter_output_stream_get_converter (G_CONVERTER_OUTPUT_STREAM (cstream_out)) == expander);
   g_object_get (cstream_out, "converter", &converter, NULL);
-  g_assert (converter == expander);
+  g_assert_true (converter == expander);
   g_object_unref (converter);
   g_object_unref (mem_out);
 
@@ -359,13 +359,13 @@ test_expander (void)
       res = g_output_stream_write (cstream_out,
                                   unexpanded_data + i, 1,
                                   NULL, &error);
-      g_assert (res != -1);
+      g_assert_cmpint (res, !=, -1);
       if (res == 0)
        {
-         g_assert (i == sizeof(unexpanded_data) -1);
+         g_assert_cmpuint (i, ==, sizeof(unexpanded_data) -1);
          break;
        }
-      g_assert (res == 1);
+      g_assert_cmpint (res, ==, 1);
     }
 
   g_output_stream_close (cstream_out, NULL, NULL);
@@ -402,9 +402,9 @@ test_compressor (void)
                              expanded, 100*1000,
                              G_CONVERTER_INPUT_AT_END,
                              &n_read, &expanded_size, NULL);
-  g_assert (cres == G_CONVERTER_FINISHED);
-  g_assert (n_read == 11);
-  g_assert (expanded_size == 41030);
+  g_assert_cmpint (cres, ==, G_CONVERTER_FINISHED);
+  g_assert_cmpuint (n_read, ==, 11);
+  g_assert_cmpuint (expanded_size, ==, 41030);
 
   compressor = g_compressor_converter_new ();
 
@@ -424,7 +424,7 @@ test_compressor (void)
       res = g_input_stream_read (cstream,
                                 ptr, 1,
                                 NULL, &error);
-      g_assert (res != -1);
+      g_assert_cmpint (res, !=, -1);
       if (res == 0)
        break;
       ptr += res;
@@ -448,13 +448,13 @@ test_compressor (void)
       res = g_output_stream_write (cstream_out,
                                   expanded + i, 1,
                                   NULL, &error);
-      g_assert (res != -1);
+      g_assert_cmpint (res, !=, -1);
       if (res == 0)
        {
-         g_assert (i == expanded_size -1);
+         g_assert_cmpuint (i, ==, expanded_size -1);
          break;
        }
-      g_assert (res == 1);
+      g_assert_cmpint (res, ==, 1);
     }
 
   g_output_stream_close (cstream_out, NULL, NULL);
@@ -485,15 +485,15 @@ test_compressor (void)
       res = g_input_stream_read (cstream,
                                 ptr, 1,
                                 NULL, &error);
-      g_assert (res != -1);
+      g_assert_cmpint (res, !=, -1);
       if (res == 0)
        break;
       ptr += res;
       total_read += res;
     }
 
-  g_assert (total_read == 1);
-  g_assert (*converted == 5);
+  g_assert_cmpuint (total_read, ==, 1);
+  g_assert_cmpuint (*converted, ==, 5);
 
   g_object_unref (cstream);
 
@@ -511,16 +511,16 @@ test_compressor (void)
       res = g_input_stream_read (cstream,
                                 ptr, 1,
                                 NULL, &error);
-      g_assert (res != -1);
+      g_assert_cmpint (res, !=, -1);
       if (res == 0)
        break;
       ptr += res;
       total_read += res;
     }
 
-  g_assert (total_read == 2);
-  g_assert (converted[0] == 5);
-  g_assert (converted[1] == 5);
+  g_assert_cmpuint (total_read, ==, 2);
+  g_assert_cmpuint (converted[0], ==, 5);
+  g_assert_cmpuint (converted[1], ==, 5);
 
   g_object_unref (cstream);
 
@@ -547,13 +547,13 @@ test_compressor (void)
          break;
        }
 
-      g_assert (res != 0);
+      g_assert_cmpint (res, !=, 0);
       ptr += res;
       total_read += res;
     }
 
-  g_assert (total_read == 1);
-  g_assert (converted[0] == 5);
+  g_assert_cmpuint (total_read, ==, 1);
+  g_assert_cmpuint (converted[0], ==, 5);
 
   g_object_unref (cstream);
 
@@ -710,7 +710,7 @@ test_converter_leftover (void)
                                 converted + total_read,
                                 LEFTOVER_BUFSIZE - total_read,
                                 NULL, &error);
-      g_assert (res >= 0);
+      g_assert_cmpint (res, >=, 0);
       if (res == 0)
        break;
       total_read += res;
@@ -763,10 +763,10 @@ test_roundtrip (gconstpointer data)
   g_file_info_set_name (info, "foo");
   g_object_set (compressor, "file-info", info, NULL);
   info2 = g_zlib_compressor_get_file_info (G_ZLIB_COMPRESSOR (compressor));
-  g_assert (info == info2);
+  g_assert_true (info == info2);
   g_object_unref (info);
   costream1 = g_converter_output_stream_new (ostream1, compressor);
-  g_assert (g_converter_output_stream_get_converter (G_CONVERTER_OUTPUT_STREAM (costream1)) == compressor);
+  g_assert_true (g_converter_output_stream_get_converter (G_CONVERTER_OUTPUT_STREAM (costream1)) == compressor);
 
   g_output_stream_splice (costream1, istream0, 0, NULL, &error);
   g_assert_no_error (error);
@@ -829,7 +829,7 @@ test_charset (gconstpointer data)
 
   conv = (GConverter *)g_charset_converter_new (test->charset_out, test->charset_in, NULL);
   g_object_get (conv, "use-fallback", &fallback, NULL);
-  g_assert (!fallback);
+  g_assert_false (fallback);
 
   in = g_memory_input_stream_new_from_data (test->text_in, -1, NULL);
   in2 = g_converter_input_stream_new (in, conv);
@@ -862,7 +862,7 @@ test_charset (gconstpointer data)
 
   g_converter_reset (conv);
 
-  g_assert (!g_charset_converter_get_use_fallback (G_CHARSET_CONVERTER (conv)));
+  g_assert_false (g_charset_converter_get_use_fallback (G_CHARSET_CONVERTER (conv)));
   g_charset_converter_set_use_fallback (G_CHARSET_CONVERTER (conv), TRUE);
 
   in = g_memory_input_stream_new_from_data (test->text_in, -1, NULL);
@@ -981,9 +981,9 @@ test_converter_pollable (void)
                              expanded, 100*1000,
                              G_CONVERTER_INPUT_AT_END,
                              &n_read, &expanded_size, NULL);
-  g_assert (cres == G_CONVERTER_FINISHED);
-  g_assert (n_read == 11);
-  g_assert (expanded_size == 41030);
+  g_assert_cmpint (cres, ==, G_CONVERTER_FINISHED);
+  g_assert_cmpuint (n_read, ==, 11);
+  g_assert_cmpuint (expanded_size, ==, 41030);
   expanded_end = expanded + expanded_size;
 
   make_socketpair (&left, &right);
@@ -995,7 +995,7 @@ test_converter_pollable (void)
   cstream = g_converter_input_stream_new (g_io_stream_get_input_stream (left),
                                          compressor);
   pollable_in = G_POLLABLE_INPUT_STREAM (cstream);
-  g_assert (g_pollable_input_stream_can_poll (pollable_in));
+  g_assert_true (g_pollable_input_stream_can_poll (pollable_in));
 
   socket_out = g_io_stream_get_output_stream (right);
 
@@ -1017,15 +1017,16 @@ test_converter_pollable (void)
        }
       else if (socket_out)
        {
+         g_output_stream_close (socket_out, NULL, NULL);
          g_object_unref (right);
          socket_out = NULL;
        }
 
       /* Wait a few ticks to check for the pipe to propagate the
-       * write. Finesses the race condition in the following test,
-       * where is_readable fails because the write hasn't propagated,
-       * but the read then succeeds because it has. */
-      g_usleep (80L);
+       * write. We can’t wait on a GSource as that might affect the stream under
+       * test, so just poll. */
+      while (!g_pollable_input_stream_is_readable (pollable_in))
+        g_usleep (80L);
 
       is_readable = g_pollable_input_stream_is_readable (pollable_in);
       res = g_pollable_input_stream_read_nonblocking (pollable_in,
@@ -1038,7 +1039,10 @@ test_converter_pollable (void)
 
       /* After closing the write end, we can't get WOULD_BLOCK any more */
       if (!socket_out)
-       g_assert_cmpint (res, !=, -1);
+        {
+          g_assert_no_error (error);
+          g_assert_cmpint (res, !=, -1);
+        }
 
       if (res == -1)
        {
@@ -1071,8 +1075,8 @@ test_converter_pollable (void)
   cstream_out = g_converter_output_stream_new (mem_out, compressor);
   g_object_unref (mem_out);
   pollable_out = G_POLLABLE_OUTPUT_STREAM (cstream_out);
-  g_assert (g_pollable_output_stream_can_poll (pollable_out));
-  g_assert (g_pollable_output_stream_is_writable (pollable_out));
+  g_assert_true (g_pollable_output_stream_can_poll (pollable_out));
+  g_assert_true (g_pollable_output_stream_is_writable (pollable_out));
 
   for (i = 0; i < expanded_size; i++)
     {
@@ -1080,13 +1084,13 @@ test_converter_pollable (void)
       res = g_pollable_output_stream_write_nonblocking (pollable_out,
                                                        expanded + i, 1,
                                                        NULL, &error);
-      g_assert (res != -1);
+      g_assert_cmpint (res, !=, -1);
       if (res == 0)
        {
-         g_assert (i == expanded_size -1);
+         g_assert_cmpuint (i, ==, expanded_size -1);
          break;
        }
-      g_assert (res == 1);
+      g_assert_cmpint (res, ==, 1);
     }
 
   g_output_stream_close (cstream_out, NULL, NULL);
@@ -1127,7 +1131,7 @@ test_truncation (gconstpointer data)
   ostream1 = g_memory_output_stream_new (NULL, 0, g_realloc, g_free);
   compressor = G_CONVERTER (g_zlib_compressor_new (test->format, -1));
   costream1 = g_converter_output_stream_new (ostream1, compressor);
-  g_assert (g_converter_output_stream_get_converter (G_CONVERTER_OUTPUT_STREAM (costream1)) == compressor);
+  g_assert_true (g_converter_output_stream_get_converter (G_CONVERTER_OUTPUT_STREAM (costream1)) == compressor);
 
   g_output_stream_splice (costream1, istream0, 0, NULL, &error);
   g_assert_no_error (error);
index 2b0f1f7..070019f 100644 (file)
 #include <gio/gio.h>
 #include <gio/gcredentialsprivate.h>
 
+#ifdef G_OS_WIN32
+
+static void
+test_basic (void)
+{
+  GCredentials *creds = g_credentials_new ();
+  gchar *stringified;
+  DWORD *pid;
+
+  stringified = g_credentials_to_string (creds);
+  g_test_message ("%s", stringified);
+  g_free (stringified);
+
+  pid = g_credentials_get_native (creds,
+                                  G_CREDENTIALS_TYPE_WIN32_PID);
+  g_assert_cmpuint (*pid, ==, GetCurrentProcessId ());
+
+  g_object_unref (creds);
+}
+
+#else
+
 static void
 test_basic (void)
 {
@@ -177,6 +199,8 @@ test_basic (void)
   g_object_unref (other);
 }
 
+#endif /* !G_OS_WIN32 */
+
 int
 main (int   argc,
       char *argv[])
diff --git a/gio/tests/cxx.cpp b/gio/tests/cxx.cpp
new file mode 100644 (file)
index 0000000..1f28d0b
--- /dev/null
@@ -0,0 +1,26 @@
+/* Copyright (C) 2001 Sebastian Wilhelmi <wilhelmi@google.com>
+ *
+ * This library 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 library 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/>.
+ */
+
+/* A trivial C++ program to be compiled in C++ mode, which
+ * smoketests that the GIO headers are valid C++ headers. */
+
+#include <gio/gio.h>
+
+int
+main ()
+{
+  return 0;
+}
diff --git a/gio/tests/debugcontroller.c b/gio/tests/debugcontroller.c
new file mode 100644 (file)
index 0000000..c20acd6
--- /dev/null
@@ -0,0 +1,396 @@
+/* GLib testing framework examples and tests
+ *
+ * Copyright © 2022 Endless OS Foundation, LLC
+ *
+ * This library 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 library 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/>.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ * Author: Philip Withnall <pwithnall@endlessos.org>
+ */
+
+#include <gio/gio.h>
+#include <locale.h>
+
+
+static void
+test_dbus_basic (void)
+{
+  GTestDBus *bus;
+  GDBusConnection *connection = NULL, *connection2 = NULL;
+  GDebugControllerDBus *controller = NULL;
+  gboolean old_value;
+  gboolean debug_enabled;
+  GError *local_error = NULL;
+
+  g_test_summary ("Smoketest for construction and setting of a #GDebugControllerDBus.");
+
+  /* Set up a test session bus and connection. */
+  bus = g_test_dbus_new (G_TEST_DBUS_NONE);
+  g_test_dbus_up (bus);
+
+  connection = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, &local_error);
+  g_assert_no_error (local_error);
+
+  /* Create a controller for this process. */
+  controller = g_debug_controller_dbus_new (connection, NULL, &local_error);
+  g_assert_no_error (local_error);
+  g_assert_nonnull (controller);
+  g_assert_true (G_IS_DEBUG_CONTROLLER_DBUS (controller));
+
+  /* Try enabling and disabling debug output from within the process. */
+  old_value = g_debug_controller_get_debug_enabled (G_DEBUG_CONTROLLER (controller));
+
+  g_debug_controller_set_debug_enabled (G_DEBUG_CONTROLLER (controller), TRUE);
+  g_assert_true (g_debug_controller_get_debug_enabled (G_DEBUG_CONTROLLER (controller)));
+
+  g_debug_controller_set_debug_enabled (G_DEBUG_CONTROLLER (controller), FALSE);
+  g_assert_false (g_debug_controller_get_debug_enabled (G_DEBUG_CONTROLLER (controller)));
+
+  /* Reset the debug state and check using g_object_get(), to exercise that. */
+  g_debug_controller_set_debug_enabled (G_DEBUG_CONTROLLER (controller), old_value);
+
+  g_object_get (G_OBJECT (controller),
+                "debug-enabled", &debug_enabled,
+                "connection", &connection2,
+                NULL);
+  g_assert_true (debug_enabled == old_value);
+  g_assert_true (connection2 == connection);
+  g_clear_object (&connection2);
+
+  g_debug_controller_dbus_stop (controller);
+  while (g_main_context_iteration (NULL, FALSE));
+  g_assert_finalize_object (controller);
+  g_clear_object (&connection);
+
+  g_test_dbus_down (bus);
+  g_clear_object (&bus);
+}
+
+static void
+test_dbus_duplicate (void)
+{
+  GTestDBus *bus;
+  GDBusConnection *connection = NULL;
+  GDebugControllerDBus *controller1 = NULL, *controller2 = NULL;
+  GError *local_error = NULL;
+
+  g_test_summary ("Test that creating a second #GDebugControllerDBus on the same D-Bus connection fails.");
+
+  /* Set up a test session bus and connection. */
+  bus = g_test_dbus_new (G_TEST_DBUS_NONE);
+  g_test_dbus_up (bus);
+
+  connection = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, &local_error);
+  g_assert_no_error (local_error);
+
+  /* Create a controller for this process. */
+  controller1 = g_debug_controller_dbus_new (connection, NULL, &local_error);
+  g_assert_no_error (local_error);
+  g_assert_nonnull (controller1);
+
+  /* And try creating a second one. */
+  controller2 = g_debug_controller_dbus_new (connection, NULL, &local_error);
+  g_assert_error (local_error, G_IO_ERROR, G_IO_ERROR_EXISTS);
+  g_assert_null (controller2);
+  g_clear_error (&local_error);
+
+  g_debug_controller_dbus_stop (controller1);
+  while (g_main_context_iteration (NULL, FALSE));
+  g_assert_finalize_object (controller1);
+  g_clear_object (&connection);
+
+  g_test_dbus_down (bus);
+  g_clear_object (&bus);
+}
+
+static void
+async_result_cb (GObject      *source_object,
+                 GAsyncResult *result,
+                 gpointer      user_data)
+{
+  GAsyncResult **result_out = user_data;
+
+  g_assert_null (*result_out);
+  *result_out = g_object_ref (result);
+
+  g_main_context_wakeup (g_main_context_get_thread_default ());
+}
+
+static gboolean
+authorize_false_cb (GDebugControllerDBus  *debug_controller,
+                    GDBusMethodInvocation *invocation,
+                    gpointer               user_data)
+{
+  return FALSE;
+}
+
+static gboolean
+authorize_true_cb (GDebugControllerDBus  *debug_controller,
+                   GDBusMethodInvocation *invocation,
+                   gpointer               user_data)
+{
+  return TRUE;
+}
+
+static void
+notify_debug_enabled_cb (GObject    *object,
+                         GParamSpec *pspec,
+                         gpointer    user_data)
+{
+  guint *notify_count_out = user_data;
+
+  *notify_count_out = *notify_count_out + 1;
+}
+
+static void
+properties_changed_cb (GDBusConnection *connection,
+                       const gchar     *sender_name,
+                       const gchar     *object_path,
+                       const gchar     *interface_name,
+                       const gchar     *signal_name,
+                       GVariant        *parameters,
+                       gpointer         user_data)
+{
+  guint *properties_changed_count_out = user_data;
+
+  *properties_changed_count_out = *properties_changed_count_out + 1;
+  g_main_context_wakeup (g_main_context_get_thread_default ());
+}
+
+static void
+test_dbus_properties (void)
+{
+  GTestDBus *bus;
+  GDBusConnection *controller_connection = NULL;
+  GDBusConnection *remote_connection = NULL;
+  GDebugControllerDBus *controller = NULL;
+  gboolean old_value;
+  GAsyncResult *result = NULL;
+  GVariant *reply = NULL;
+  GVariant *debug_enabled_variant = NULL;
+  gboolean debug_enabled;
+  GError *local_error = NULL;
+  gulong handler_id;
+  gulong notify_id;
+  guint notify_count = 0;
+  guint properties_changed_id;
+  guint properties_changed_count = 0;
+
+  g_test_summary ("Test getting and setting properties on a #GDebugControllerDBus.");
+
+  /* Set up a test session bus and connection. Set up a separate second
+   * connection to simulate a remote peer. */
+  bus = g_test_dbus_new (G_TEST_DBUS_NONE);
+  g_test_dbus_up (bus);
+
+  controller_connection = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, &local_error);
+  g_assert_no_error (local_error);
+
+  remote_connection = g_dbus_connection_new_for_address_sync (g_test_dbus_get_bus_address (bus),
+                                                              G_DBUS_CONNECTION_FLAGS_AUTHENTICATION_CLIENT |
+                                                              G_DBUS_CONNECTION_FLAGS_MESSAGE_BUS_CONNECTION,
+                                                              NULL,
+                                                              NULL,
+                                                              &local_error);
+  g_assert_no_error (local_error);
+
+  /* Create a controller for this process. */
+  controller = g_debug_controller_dbus_new (controller_connection, NULL, &local_error);
+  g_assert_no_error (local_error);
+  g_assert_nonnull (controller);
+  g_assert_true (G_IS_DEBUG_CONTROLLER_DBUS (controller));
+
+  old_value = g_debug_controller_get_debug_enabled (G_DEBUG_CONTROLLER (controller));
+  notify_id = g_signal_connect (controller, "notify::debug-enabled", G_CALLBACK (notify_debug_enabled_cb), &notify_count);
+
+  properties_changed_id = g_dbus_connection_signal_subscribe (remote_connection,
+                                                              g_dbus_connection_get_unique_name (controller_connection),
+                                                              "org.freedesktop.DBus.Properties",
+                                                              "PropertiesChanged",
+                                                              "/org/gtk/Debugging",
+                                                              NULL,
+                                                              G_DBUS_SIGNAL_FLAGS_NONE,
+                                                              properties_changed_cb,
+                                                              &properties_changed_count,
+                                                              NULL);
+
+  /* Get the debug status remotely. */
+  g_dbus_connection_call (remote_connection,
+                          g_dbus_connection_get_unique_name (controller_connection),
+                          "/org/gtk/Debugging",
+                          "org.freedesktop.DBus.Properties",
+                          "Get",
+                          g_variant_new ("(ss)", "org.gtk.Debugging", "DebugEnabled"),
+                          G_VARIANT_TYPE ("(v)"),
+                          G_DBUS_CALL_FLAGS_NONE,
+                          -1,
+                          NULL,
+                          async_result_cb,
+                          &result);
+  g_assert_no_error (local_error);
+
+  while (result == NULL)
+    g_main_context_iteration (NULL, TRUE);
+
+  reply = g_dbus_connection_call_finish (remote_connection, result, &local_error);
+  g_assert_no_error (local_error);
+  g_clear_object (&result);
+
+  g_variant_get (reply, "(v)", &debug_enabled_variant);
+  debug_enabled = g_variant_get_boolean (debug_enabled_variant);
+  g_assert_true (debug_enabled == old_value);
+  g_assert_cmpuint (notify_count, ==, 0);
+  g_assert_cmpuint (properties_changed_count, ==, 0);
+
+  g_clear_pointer (&debug_enabled_variant, g_variant_unref);
+  g_clear_pointer (&reply, g_variant_unref);
+
+  /* Set the debug status remotely. The first attempt should fail due to no
+   * authorisation handler being connected. The second should fail due to the
+   * now-connected handler returning %FALSE. The third attempt should
+   * succeed. */
+  g_dbus_connection_call (remote_connection,
+                          g_dbus_connection_get_unique_name (controller_connection),
+                          "/org/gtk/Debugging",
+                          "org.gtk.Debugging",
+                          "SetDebugEnabled",
+                          g_variant_new ("(b)", !old_value),
+                          NULL,
+                          G_DBUS_CALL_FLAGS_NONE,
+                          -1,
+                          NULL,
+                          async_result_cb,
+                          &result);
+
+  while (result == NULL)
+    g_main_context_iteration (NULL, TRUE);
+
+  reply = g_dbus_connection_call_finish (remote_connection, result, &local_error);
+  g_assert_error (local_error, G_DBUS_ERROR, G_DBUS_ERROR_ACCESS_DENIED);
+  g_clear_object (&result);
+  g_clear_error (&local_error);
+
+  g_assert_true (g_debug_controller_get_debug_enabled (G_DEBUG_CONTROLLER (controller)) == old_value);
+  g_assert_cmpuint (notify_count, ==, 0);
+  g_assert_cmpuint (properties_changed_count, ==, 0);
+
+  g_clear_pointer (&debug_enabled_variant, g_variant_unref);
+  g_clear_pointer (&reply, g_variant_unref);
+
+  /* Attach an authorisation handler and try again. */
+  handler_id = g_signal_connect (controller, "authorize", G_CALLBACK (authorize_false_cb), NULL);
+
+  g_dbus_connection_call (remote_connection,
+                          g_dbus_connection_get_unique_name (controller_connection),
+                          "/org/gtk/Debugging",
+                          "org.gtk.Debugging",
+                          "SetDebugEnabled",
+                          g_variant_new ("(b)", !old_value),
+                          NULL,
+                          G_DBUS_CALL_FLAGS_NONE,
+                          -1,
+                          NULL,
+                          async_result_cb,
+                          &result);
+
+  while (result == NULL)
+    g_main_context_iteration (NULL, TRUE);
+
+  reply = g_dbus_connection_call_finish (remote_connection, result, &local_error);
+  g_assert_error (local_error, G_DBUS_ERROR, G_DBUS_ERROR_ACCESS_DENIED);
+  g_clear_object (&result);
+  g_clear_error (&local_error);
+
+  g_assert_true (g_debug_controller_get_debug_enabled (G_DEBUG_CONTROLLER (controller)) == old_value);
+  g_assert_cmpuint (notify_count, ==, 0);
+  g_assert_cmpuint (properties_changed_count, ==, 0);
+
+  g_clear_pointer (&debug_enabled_variant, g_variant_unref);
+  g_clear_pointer (&reply, g_variant_unref);
+
+  g_signal_handler_disconnect (controller, handler_id);
+  handler_id = 0;
+
+  /* Attach another signal handler which will grant access, and try again. */
+  handler_id = g_signal_connect (controller, "authorize", G_CALLBACK (authorize_true_cb), NULL);
+
+  g_dbus_connection_call (remote_connection,
+                          g_dbus_connection_get_unique_name (controller_connection),
+                          "/org/gtk/Debugging",
+                          "org.gtk.Debugging",
+                          "SetDebugEnabled",
+                          g_variant_new ("(b)", !old_value),
+                          NULL,
+                          G_DBUS_CALL_FLAGS_NONE,
+                          -1,
+                          NULL,
+                          async_result_cb,
+                          &result);
+
+  while (result == NULL)
+    g_main_context_iteration (NULL, TRUE);
+
+  reply = g_dbus_connection_call_finish (remote_connection, result, &local_error);
+  g_assert_no_error (local_error);
+  g_clear_object (&result);
+
+  g_assert_true (g_debug_controller_get_debug_enabled (G_DEBUG_CONTROLLER (controller)) == !old_value);
+  g_assert_cmpuint (notify_count, ==, 1);
+  g_assert_cmpuint (properties_changed_count, ==, 1);
+
+  g_clear_pointer (&debug_enabled_variant, g_variant_unref);
+  g_clear_pointer (&reply, g_variant_unref);
+
+  g_signal_handler_disconnect (controller, handler_id);
+  handler_id = 0;
+
+  /* Set the debug status locally. */
+  g_debug_controller_set_debug_enabled (G_DEBUG_CONTROLLER (controller), old_value);
+  g_assert_true (g_debug_controller_get_debug_enabled (G_DEBUG_CONTROLLER (controller)) == old_value);
+  g_assert_cmpuint (notify_count, ==, 2);
+
+  while (properties_changed_count != 2)
+    g_main_context_iteration (NULL, TRUE);
+
+  g_assert_cmpuint (properties_changed_count, ==, 2);
+
+  g_signal_handler_disconnect (controller, notify_id);
+  notify_id = 0;
+
+  g_dbus_connection_signal_unsubscribe (remote_connection, properties_changed_id);
+  properties_changed_id = 0;
+
+  g_debug_controller_dbus_stop (controller);
+  while (g_main_context_iteration (NULL, FALSE));
+  g_assert_finalize_object (controller);
+  g_clear_object (&controller_connection);
+  g_clear_object (&remote_connection);
+
+  g_test_dbus_down (bus);
+  g_clear_object (&bus);
+}
+
+int
+main (int   argc,
+      char *argv[])
+{
+  setlocale (LC_ALL, "");
+  g_test_init (&argc, &argv, NULL);
+
+  g_test_add_func ("/debug-controller/dbus/basic", test_dbus_basic);
+  g_test_add_func ("/debug-controller/dbus/duplicate", test_dbus_duplicate);
+  g_test_add_func ("/debug-controller/dbus/properties", test_dbus_properties);
+
+  return g_test_run ();
+}
index 15dcd8f..4a5de60 100644 (file)
@@ -728,6 +728,20 @@ test_show_in (void)
   assert_shown ("invalid-desktop.desktop", FALSE, "../invalid/desktop:../invalid/desktop");
 }
 
+static void
+on_launch_started (GAppLaunchContext *context, GAppInfo *info, GVariant *platform_data, gpointer data)
+{
+  gboolean *invoked = data;
+
+  g_assert_true (G_IS_APP_LAUNCH_CONTEXT (context));
+  g_assert_true (G_IS_APP_INFO (info));
+  /* Our default context doesn't fill in any platform data */
+  g_assert_null (platform_data);
+
+  g_assert_false (*invoked);
+  *invoked = TRUE;
+}
+
 /* Test g_desktop_app_info_launch_uris_as_manager() and
  * g_desktop_app_info_launch_uris_as_manager_with_fds()
  */
@@ -738,6 +752,8 @@ test_launch_as_manager (void)
   GError *error = NULL;
   gboolean retval;
   const gchar *path;
+  gboolean invoked = FALSE;
+  GAppLaunchContext *context;
 
   if (g_getenv ("DISPLAY") == NULL || g_getenv ("DISPLAY")[0] == '\0')
     {
@@ -754,23 +770,43 @@ test_launch_as_manager (void)
       return;
     }
 
-  retval = g_desktop_app_info_launch_uris_as_manager (appinfo, NULL, NULL, 0,
+  context = g_app_launch_context_new ();
+  g_signal_connect (context, "launch-started",
+                    G_CALLBACK (on_launch_started),
+                    &invoked);
+  retval = g_desktop_app_info_launch_uris_as_manager (appinfo, NULL, context, 0,
                                                       NULL, NULL,
                                                       NULL, NULL,
                                                       &error);
   g_assert_no_error (error);
   g_assert_true (retval);
+  g_assert_true (invoked);
 
+  invoked = FALSE;
   retval = g_desktop_app_info_launch_uris_as_manager_with_fds (appinfo,
-                                                               NULL, NULL, 0,
+                                                               NULL, context, 0,
                                                                NULL, NULL,
                                                                NULL, NULL,
                                                                -1, -1, -1,
                                                                &error);
   g_assert_no_error (error);
   g_assert_true (retval);
+  g_assert_true (invoked);
 
   g_object_unref (appinfo);
+  g_assert_finalize_object (context);
+}
+
+/* Test if Desktop-File Id is correctly formed */
+static void
+test_id (void)
+{
+  gchar *result;
+
+  result = run_apps ("default-for-type", "application/vnd.kde.okular-archive",
+                     TRUE, FALSE, NULL, NULL, NULL);
+  g_assert_cmpstr (result, ==, "kde4-okular.desktop\n");
+  g_free (result);
 }
 
 int
@@ -794,6 +830,7 @@ main (int   argc,
   g_test_add_func ("/desktop-app-info/implements", test_implements);
   g_test_add_func ("/desktop-app-info/show-in", test_show_in);
   g_test_add_func ("/desktop-app-info/launch-as-manager", test_launch_as_manager);
+  g_test_add_func ("/desktop-app-info/id", test_id);
 
   return g_test_run ();
 }
index 2f1b7b3..a849e83 100644 (file)
@@ -3006,6 +3006,111 @@ test_build_attribute_list_for_copy (void)
   g_clear_object (&tmpfile);
 }
 
+typedef struct
+{
+  GError *error;
+  gboolean done;
+  gboolean res;
+} MoveAsyncData;
+
+static void
+test_move_async_cb (GObject      *object,
+                    GAsyncResult *result,
+                    gpointer      user_data)
+{
+  GFile *file = G_FILE (object);
+  MoveAsyncData *data = user_data;
+  GError *error = NULL;
+
+  data->res = g_file_move_finish (file, result, &error);
+  data->error = error;
+  data->done = TRUE;
+}
+
+typedef struct
+{
+  goffset total_num_bytes;
+} MoveAsyncProgressData;
+
+static void
+test_move_async_progress_cb (goffset  current_num_bytes,
+                             goffset  total_num_bytes,
+                             gpointer user_data)
+{
+  MoveAsyncProgressData *data = user_data;
+  data->total_num_bytes = total_num_bytes;
+}
+
+/* Test that move_async() moves the file correctly */
+static void
+test_move_async (void)
+{
+  MoveAsyncData data = { 0 };
+  MoveAsyncProgressData progress_data = { 0 };
+  GFile *source;
+  GFileIOStream *iostream;
+  GOutputStream *ostream;
+  GFile *destination;
+  gchar *destination_path;
+  GError *error = NULL;
+  gboolean res;
+  const guint8 buffer[] = {1, 2, 3, 4, 5};
+
+  source = g_file_new_tmp ("g_file_move_XXXXXX", &iostream, NULL);
+
+  destination_path = g_build_path (G_DIR_SEPARATOR_S, g_get_tmp_dir (), "g_file_move_target", NULL);
+  destination = g_file_new_for_path (destination_path);
+
+  g_assert_nonnull (source);
+  g_assert_nonnull (iostream);
+
+  res = g_file_query_exists (source, NULL);
+  g_assert_true (res);
+  res = g_file_query_exists (destination, NULL);
+  g_assert_false (res);
+
+  // Write a known amount of bytes to the file, so we can test the progress callback against it
+  ostream = g_io_stream_get_output_stream (G_IO_STREAM (iostream));
+  g_output_stream_write (ostream, buffer, sizeof (buffer), NULL, &error);
+  g_assert_no_error (error);
+
+  g_file_move_async (source,
+                     destination,
+                     G_FILE_COPY_NONE,
+                     0,
+                     NULL,
+                     test_move_async_progress_cb,
+                     &progress_data,
+                     test_move_async_cb,
+                     &data);
+
+  while (!data.done)
+    g_main_context_iteration (NULL, TRUE);
+
+  g_assert_no_error (data.error);
+  g_assert_true (data.res);
+  g_assert_cmpuint (progress_data.total_num_bytes, ==, sizeof (buffer));
+
+  res = g_file_query_exists (source, NULL);
+  g_assert_false (res);
+  res = g_file_query_exists (destination, NULL);
+  g_assert_true (res);
+
+  res = g_io_stream_close (G_IO_STREAM (iostream), NULL, &error);
+  g_assert_no_error (error);
+  g_assert_true (res);
+  g_object_unref (iostream);
+
+  res = g_file_delete (destination, NULL, &error);
+  g_assert_no_error (error);
+  g_assert_true (res);
+
+  g_object_unref (source);
+  g_object_unref (destination);
+
+  g_free (destination_path);
+}
+
 int
 main (int argc, char *argv[])
 {
@@ -3049,6 +3154,7 @@ main (int argc, char *argv[])
   g_test_add_func ("/file/writev/async_all-to-big-vectors", test_writev_async_all_too_big_vectors);
   g_test_add_func ("/file/writev/async_all-cancellation", test_writev_async_all_cancellation);
   g_test_add_func ("/file/build-attribute-list-for-copy", test_build_attribute_list_for_copy);
+  g_test_add_func ("/file/move_async", test_move_async);
 
   return g_test_run ();
 }
index 9b94c32..ddf99da 100644 (file)
@@ -135,6 +135,13 @@ test_filesystem_readonly (gconstpointer with_mount_monitor)
   if (! g_file_set_contents (file_in_mount, "Example", -1, NULL))
     {
       g_test_skip ("Failed to create file needed to proceed further with the test");
+
+      g_free (dir_mountpoint);
+      g_free (file_in_mount);
+      g_free (dir_to_mount);
+      g_free (curdir);
+      g_free (fusermount);
+      g_free (bindfs);
       return;
     }
 
@@ -147,8 +154,18 @@ test_filesystem_readonly (gconstpointer with_mount_monitor)
     {
       gchar *skip_message = g_strdup_printf ("Failed to run bindfs to set up test: %s", error->message);
       g_test_skip (skip_message);
+
       g_free (skip_message);
       g_clear_error (&error);
+
+      g_clear_object (&mount_monitor);
+      g_free (dir_mountpoint);
+      g_free (file_in_mount);
+      g_free (dir_to_mount);
+      g_free (curdir);
+      g_free (fusermount);
+      g_free (bindfs);
+
       return;
     }
 
@@ -170,6 +187,18 @@ test_filesystem_readonly (gconstpointer with_mount_monitor)
   if (! g_file_info_get_attribute_boolean (file_info, G_FILE_ATTRIBUTE_FILESYSTEM_READONLY))
     {
       g_test_skip ("Failed to create readonly file needed to proceed further with the test");
+
+      g_clear_object (&file_info);
+      g_clear_object (&mounted_file);
+      g_free (file_in_mountpoint);
+      g_clear_object (&mount_monitor);
+      g_free (dir_mountpoint);
+      g_free (file_in_mount);
+      g_free (dir_to_mount);
+      g_free (curdir);
+      g_free (fusermount);
+      g_free (bindfs);
+
       return;
     }
 
index fd0c64b..59411c3 100644 (file)
@@ -654,7 +654,11 @@ test_internal_enhanced_stdio (void)
       g_assert_cmpuint (alsize_ps, <, 0x40000000);
       g_assert_cmpuint (size_ps, >, G_GUINT64_CONSTANT (0xFFFFFFFF));
       g_assert_cmpuint (statbuf_ps.st_size, >, 0);
+#if defined(_WIN64)
+      g_assert_cmpuint (statbuf_ps.st_size, ==, G_GUINT64_CONSTANT (0x10000000f));
+#else
       g_assert_cmpuint (statbuf_ps.st_size, <=, 0xFFFFFFFF);
+#endif
 
       g_object_unref (fi_ps);
       g_object_unref (gf_ps);
index 18288f3..eabfdd3 100644 (file)
@@ -167,6 +167,7 @@ test_auth_mechanism (const gchar *allowed_client_mechanism,
   GMainLoop *loop;
   GThread *client_thread;
   TestAuthData data;
+  guint timeout_id;
 
   server = server_new_for_mechanism (allowed_server_mechanism);
 
@@ -177,7 +178,7 @@ test_auth_mechanism (const gchar *allowed_client_mechanism,
                     G_CALLBACK (test_auth_on_new_connection),
                     loop);
 
-  g_timeout_add_seconds (5, test_auth_on_timeout, NULL);
+  timeout_id = g_timeout_add_seconds (5, test_auth_on_timeout, NULL);
 
   data.allowed_client_mechanism = allowed_client_mechanism;
   data.allowed_server_mechanism = allowed_server_mechanism;
@@ -195,6 +196,7 @@ test_auth_mechanism (const gchar *allowed_client_mechanism,
   g_dbus_server_stop (server);
 
   g_thread_join (client_thread);
+  g_source_remove (timeout_id);
 
   while (g_main_context_iteration (NULL, FALSE));
   g_main_loop_unref (loop);
index 8c92582..c164765 100644 (file)
@@ -179,8 +179,8 @@ setup_client_cb (GObject      *source,
 
   f->client_conn = g_dbus_connection_new_finish (res, &f->error);
   g_assert_no_error (f->error);
-  g_assert (G_IS_DBUS_CONNECTION (f->client_conn));
-  g_assert (f->client_conn == G_DBUS_CONNECTION (source));
+  g_assert_true (G_IS_DBUS_CONNECTION (f->client_conn));
+  g_assert_true (f->client_conn == G_DBUS_CONNECTION (source));
 }
 
 static void
@@ -192,8 +192,8 @@ setup_server_cb (GObject      *source,
 
   f->server_conn = g_dbus_connection_new_finish (res, &f->error);
   g_assert_no_error (f->error);
-  g_assert (G_IS_DBUS_CONNECTION (f->server_conn));
-  g_assert (f->server_conn == G_DBUS_CONNECTION (source));
+  g_assert_true (G_IS_DBUS_CONNECTION (f->server_conn));
+  g_assert_true (f->server_conn == G_DBUS_CONNECTION (source));
 }
 
 static void
@@ -206,21 +206,21 @@ setup (Fixture       *f,
 
   ok = test_pipe (&f->server_istream, &f->client_real_ostream, &f->error);
   g_assert_no_error (f->error);
-  g_assert (G_IS_OUTPUT_STREAM (f->client_real_ostream));
-  g_assert (G_IS_INPUT_STREAM (f->server_istream));
-  g_assert (ok);
+  g_assert_true (G_IS_OUTPUT_STREAM (f->client_real_ostream));
+  g_assert_true (G_IS_INPUT_STREAM (f->server_istream));
+  g_assert_true (ok);
 
   f->client_ostream = g_object_new (MY_TYPE_OUTPUT_STREAM,
                                     "base-stream", f->client_real_ostream,
                                     "close-base-stream", TRUE,
                                     NULL);
-  g_assert (G_IS_OUTPUT_STREAM (f->client_ostream));
+  g_assert_true (G_IS_OUTPUT_STREAM (f->client_ostream));
 
   ok = test_pipe (&f->client_istream, &f->server_ostream, &f->error);
   g_assert_no_error (f->error);
-  g_assert (G_IS_OUTPUT_STREAM (f->server_ostream));
-  g_assert (G_IS_INPUT_STREAM (f->client_istream));
-  g_assert (ok);
+  g_assert_true (G_IS_OUTPUT_STREAM (f->server_ostream));
+  g_assert_true (G_IS_INPUT_STREAM (f->client_istream));
+  g_assert_true (ok);
 
   f->client_stream = test_io_stream_new (f->client_istream, f->client_ostream);
   f->server_stream = test_io_stream_new (f->server_istream, f->server_ostream);
@@ -244,13 +244,13 @@ flush_cb (GObject      *source,
   Fixture *f = user_data;
   gboolean ok;
 
-  g_assert (G_IS_DBUS_CONNECTION (source));
-  g_assert (G_IS_DBUS_CONNECTION (f->client_conn));
+  g_assert_true (G_IS_DBUS_CONNECTION (source));
+  g_assert_true (G_IS_DBUS_CONNECTION (f->client_conn));
   g_assert_cmpuint ((guintptr) f->client_conn, ==, (guintptr) G_DBUS_CONNECTION (source));
 
   ok = g_dbus_connection_flush_finish (f->client_conn, res, &f->error);
   g_assert_no_error (f->error);
-  g_assert (ok);
+  g_assert_true (ok);
 
   f->flushed = TRUE;
 }
@@ -270,7 +270,7 @@ test_flush_busy (Fixture       *f,
                                       "com.example.Foo", "SomeSignal", NULL,
                                       &f->error);
   g_assert_no_error (f->error);
-  g_assert (ok);
+  g_assert_true (ok);
 
   /* wait for at least part of the message to have started writing -
    * the write will block indefinitely in the worker thread
@@ -318,7 +318,7 @@ test_flush_idle (Fixture       *f,
                                       "com.example.Foo", "SomeSignal", NULL,
                                       &f->error);
   g_assert_no_error (f->error);
-  g_assert (ok);
+  g_assert_true (ok);
 
   /* wait for at least part of the message to have been written */
   do {
@@ -368,10 +368,7 @@ main (int   argc,
 {
   gint ret;
 
-  /* FIXME: Add debug for https://gitlab.gnome.org/GNOME/glib/issues/1929 */
-  g_setenv ("G_DBUS_DEBUG", "authentication", TRUE);
-
-  g_test_init (&argc, &argv, NULL);
+  g_test_init (&argc, &argv, G_TEST_OPTION_ISOLATE_DIRS, NULL);
 
   g_test_add ("/gdbus/connection/flush/busy", Fixture, NULL,
               setup, test_flush_busy, teardown);
index 0410a88..396b1a4 100644 (file)
@@ -416,7 +416,7 @@ test_connection_send (void)
 
   /*
    * Check that we never actually send a message if the GCancellable
-   * is already cancelled - i.e.  we should get #G_IO_ERROR_CANCELLED
+   * is already cancelled - i.e.  we should get G_IO_ERROR_CANCELLED
    * when the actual connection is not up.
    */
   ca = g_cancellable_new ();
index 4cdc244..f66b1f7 100644 (file)
@@ -602,20 +602,6 @@ on_subtree_unregistered (gpointer user_data)
   data->num_unregistered_subtree_calls++;
 }
 
-static gboolean
-_g_strv_has_string (const gchar* const * haystack,
-                    const gchar *needle)
-{
-  guint n;
-
-  for (n = 0; haystack != NULL && haystack[n] != NULL; n++)
-    {
-      if (g_strcmp0 (haystack[n], needle) == 0)
-        return TRUE;
-    }
-  return FALSE;
-}
-
 /* -------------------- */
 
 static gchar **
@@ -1306,11 +1292,11 @@ test_object_registration (void)
   nodes = get_nodes_at (c, "/foo/boss");
   g_assert (nodes != NULL);
   g_assert_cmpint (g_strv_length (nodes), ==, 5);
-  g_assert (_g_strv_has_string ((const gchar* const *) nodes, "worker1"));
-  g_assert (_g_strv_has_string ((const gchar* const *) nodes, "worker1p1"));
-  g_assert (_g_strv_has_string ((const gchar* const *) nodes, "worker2"));
-  g_assert (_g_strv_has_string ((const gchar* const *) nodes, "interns"));
-  g_assert (_g_strv_has_string ((const gchar* const *) nodes, "executives"));
+  g_assert (g_strv_contains ((const gchar* const *) nodes, "worker1"));
+  g_assert (g_strv_contains ((const gchar* const *) nodes, "worker1p1"));
+  g_assert (g_strv_contains ((const gchar* const *) nodes, "worker2"));
+  g_assert (g_strv_contains ((const gchar* const *) nodes, "interns"));
+  g_assert (g_strv_contains ((const gchar* const *) nodes, "executives"));
   g_strfreev (nodes);
   /* any registered object always implement org.freedesktop.DBus.[Peer,Introspectable,Properties] */
   g_assert_cmpint (count_interfaces (c, "/foo/boss"), ==, 5);
@@ -1322,7 +1308,7 @@ test_object_registration (void)
    */
   nodes = get_nodes_at (c, "/foo/boss/executives");
   g_assert (nodes != NULL);
-  g_assert (_g_strv_has_string ((const gchar* const *) nodes, "non_subtree_object"));
+  g_assert (g_strv_contains ((const gchar* const *) nodes, "non_subtree_object"));
   g_assert_cmpint (g_strv_length (nodes), ==, 1);
   g_strfreev (nodes);
   g_assert_cmpint (count_interfaces (c, "/foo/boss/executives"), ==, 0);
@@ -1332,11 +1318,11 @@ test_object_registration (void)
   nodes = get_nodes_at (c, "/foo/boss/executives");
   g_assert (nodes != NULL);
   g_assert_cmpint (g_strv_length (nodes), ==, 5);
-  g_assert (_g_strv_has_string ((const gchar* const *) nodes, "non_subtree_object"));
-  g_assert (_g_strv_has_string ((const gchar* const *) nodes, "vp0"));
-  g_assert (_g_strv_has_string ((const gchar* const *) nodes, "vp1"));
-  g_assert (_g_strv_has_string ((const gchar* const *) nodes, "evp0"));
-  g_assert (_g_strv_has_string ((const gchar* const *) nodes, "evp1"));
+  g_assert (g_strv_contains ((const gchar* const *) nodes, "non_subtree_object"));
+  g_assert (g_strv_contains ((const gchar* const *) nodes, "vp0"));
+  g_assert (g_strv_contains ((const gchar* const *) nodes, "vp1"));
+  g_assert (g_strv_contains ((const gchar* const *) nodes, "evp0"));
+  g_assert (g_strv_contains ((const gchar* const *) nodes, "evp1"));
   /* check that /foo/boss/executives/non_subtree_object is not handled by the
    * subtree handlers - we can do this because objects from subtree handlers
    * has exactly one interface and non_subtree_object has two
@@ -1358,13 +1344,13 @@ test_object_registration (void)
   nodes = get_nodes_at (c, "/foo/boss/executives");
   g_assert (nodes != NULL);
   g_assert_cmpint (g_strv_length (nodes), ==, 7);
-  g_assert (_g_strv_has_string ((const gchar* const *) nodes, "non_subtree_object"));
-  g_assert (_g_strv_has_string ((const gchar* const *) nodes, "vp0"));
-  g_assert (_g_strv_has_string ((const gchar* const *) nodes, "vp1"));
-  g_assert (_g_strv_has_string ((const gchar* const *) nodes, "vp2"));
-  g_assert (_g_strv_has_string ((const gchar* const *) nodes, "evp0"));
-  g_assert (_g_strv_has_string ((const gchar* const *) nodes, "evp1"));
-  g_assert (_g_strv_has_string ((const gchar* const *) nodes, "evp2"));
+  g_assert (g_strv_contains ((const gchar* const *) nodes, "non_subtree_object"));
+  g_assert (g_strv_contains ((const gchar* const *) nodes, "vp0"));
+  g_assert (g_strv_contains ((const gchar* const *) nodes, "vp1"));
+  g_assert (g_strv_contains ((const gchar* const *) nodes, "vp2"));
+  g_assert (g_strv_contains ((const gchar* const *) nodes, "evp0"));
+  g_assert (g_strv_contains ((const gchar* const *) nodes, "evp1"));
+  g_assert (g_strv_contains ((const gchar* const *) nodes, "evp2"));
   g_strfreev (nodes);
 
   /* This is to check that a bug (rather, class of bugs) in gdbusconnection.c's
@@ -1401,7 +1387,7 @@ test_object_registration (void)
   nodes = get_nodes_at (c, "/foo/boss/executives");
   g_assert (nodes != NULL);
   g_assert_cmpint (g_strv_length (nodes), ==, 1);
-  g_assert (_g_strv_has_string ((const gchar* const *) nodes, "non_subtree_object"));
+  g_assert (g_strv_contains ((const gchar* const *) nodes, "non_subtree_object"));
   g_strfreev (nodes);
 
   g_assert (g_dbus_connection_unregister_object (c, boss_foo_reg_id));
diff --git a/gio/tests/gdbus-method-invocation.c b/gio/tests/gdbus-method-invocation.c
new file mode 100644 (file)
index 0000000..45fb677
--- /dev/null
@@ -0,0 +1,406 @@
+/* GIO - GLib Input, Output and Streaming Library
+ *
+ * Copyright © 2022 Endless OS Foundation, LLC
+ *
+ * This library 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 library 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/>.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+#include <gio/gio.h>
+#include <gio/gunixfdlist.h>
+#include <string.h>
+#include <unistd.h>
+
+#include "gdbus-tests.h"
+
+static const GDBusArgInfo foo_get_fds_in_args =
+{
+  -1,
+  "type",
+  "s",
+  NULL
+};
+static const GDBusArgInfo * const foo_get_fds_in_arg_pointers[] = {&foo_get_fds_in_args, NULL};
+
+static const GDBusArgInfo foo_get_fds_out_args =
+{
+  -1,
+  "some_fd",
+  "h",
+  NULL
+};
+static const GDBusArgInfo * const foo_get_fds_out_arg_pointers[] = {&foo_get_fds_out_args, NULL};
+
+static const GDBusMethodInfo foo_method_info_wrong_return_type =
+{
+  -1,
+  "WrongReturnType",
+  NULL,  /* in args */
+  NULL,  /* out args */
+  NULL  /* annotations */
+};
+static const GDBusMethodInfo foo_method_info_close_before_returning =
+{
+  -1,
+  "CloseBeforeReturning",
+  NULL,  /* in args */
+  NULL,  /* out args */
+  NULL  /* annotations */
+};
+static const GDBusMethodInfo foo_method_info_get_fds =
+{
+  -1,
+  "GetFDs",
+  (GDBusArgInfo **) foo_get_fds_in_arg_pointers,
+  (GDBusArgInfo **) foo_get_fds_out_arg_pointers,
+  NULL  /* annotations */
+};
+static const GDBusMethodInfo foo_method_info_return_error =
+{
+  -1,
+  "ReturnError",
+  NULL,  /* in args */
+  NULL,  /* out args */
+  NULL  /* annotations */
+};
+static const GDBusMethodInfo * const foo_method_info_pointers[] = {
+  &foo_method_info_wrong_return_type,
+  &foo_method_info_close_before_returning,
+  &foo_method_info_get_fds,
+  &foo_method_info_return_error,
+  NULL
+};
+
+static const GDBusPropertyInfo foo_property_info[] =
+{
+  {
+    -1,
+    "InvalidType",
+    "s",
+    G_DBUS_PROPERTY_INFO_FLAGS_READABLE | G_DBUS_PROPERTY_INFO_FLAGS_WRITABLE,
+    NULL
+  },
+  {
+    -1,
+    "InvalidTypeNull",
+    "s",
+    G_DBUS_PROPERTY_INFO_FLAGS_READABLE | G_DBUS_PROPERTY_INFO_FLAGS_WRITABLE,
+    NULL
+  },
+  {
+    -1,
+    "InvalidValueType",
+    "s",
+    G_DBUS_PROPERTY_INFO_FLAGS_READABLE | G_DBUS_PROPERTY_INFO_FLAGS_WRITABLE,
+    NULL
+  },
+};
+static const GDBusPropertyInfo * const foo_property_info_pointers[] =
+{
+  &foo_property_info[0],
+  &foo_property_info[1],
+  &foo_property_info[2],
+  NULL
+};
+
+static const GDBusInterfaceInfo foo_interface_info =
+{
+  -1,
+  "org.example.Foo",
+  (GDBusMethodInfo **) &foo_method_info_pointers,
+  NULL,  /* signals */
+  (GDBusPropertyInfo **) &foo_property_info_pointers,
+  NULL,  /* annotations */
+};
+
+/* ---------------------------------------------------------------------------------------------------- */
+
+static void
+test_method_invocation_return_method_call (GDBusConnection       *connection,
+                                           const gchar           *sender,
+                                           const gchar           *object_path,
+                                           const gchar           *interface_name,
+                                           const gchar           *method_name,
+                                           GVariant              *parameters,
+                                           GDBusMethodInvocation *invocation,
+                                           gpointer               user_data)
+{
+  gboolean no_reply = g_dbus_message_get_flags (g_dbus_method_invocation_get_message (invocation)) & G_DBUS_MESSAGE_FLAGS_NO_REPLY_EXPECTED;
+
+  if (g_str_equal (interface_name, "org.freedesktop.DBus.Properties") &&
+      g_str_equal (method_name, "Get"))
+    {
+      const gchar *iface_name, *prop_name;
+
+      g_variant_get (parameters, "(&s&s)", &iface_name, &prop_name);
+      g_assert_cmpstr (iface_name, ==, "org.example.Foo");
+
+      /* Do different things depending on the property name. */
+      if (g_str_equal (prop_name, "InvalidType"))
+        {
+          if (!no_reply)
+            g_test_expect_message ("GLib-GIO", G_LOG_LEVEL_WARNING,
+                                   "Type of return value for property 'Get' call should be '(v)' but got '(s)'");
+          g_dbus_method_invocation_return_value (invocation, g_variant_new ("(s)", "this type is invalid"));
+        }
+      else if (g_str_equal (prop_name, "InvalidTypeNull"))
+        {
+          if (!no_reply)
+            g_test_expect_message ("GLib-GIO", G_LOG_LEVEL_WARNING,
+                                   "Type of return value for property 'Get' call should be '(v)' but got '()'");
+          g_dbus_method_invocation_return_value (invocation, NULL);
+        }
+      else if (g_str_equal (prop_name, "InvalidValueType"))
+        {
+          if (!no_reply)
+            g_test_expect_message ("GLib-GIO", G_LOG_LEVEL_WARNING,
+                                   "Value returned from property 'Get' call for 'InvalidValueType' should be 's' but is 'u'");
+          g_dbus_method_invocation_return_value (invocation, g_variant_new ("(v)", g_variant_new_uint32 (123)));
+        }
+      else
+        {
+          g_assert_not_reached ();
+        }
+
+      g_test_assert_expected_messages ();
+    }
+  else if (g_str_equal (interface_name, "org.freedesktop.DBus.Properties") &&
+           g_str_equal (method_name, "Set"))
+    {
+      const gchar *iface_name, *prop_name;
+      GVariant *value;
+
+      g_variant_get (parameters, "(&s&sv)", &iface_name, &prop_name, &value);
+      g_assert_cmpstr (iface_name, ==, "org.example.Foo");
+
+      if (g_str_equal (prop_name, "InvalidType"))
+        {
+          if (!no_reply)
+            g_test_expect_message ("GLib-GIO", G_LOG_LEVEL_WARNING,
+                                   "Type of return value for property 'Set' call should be '()' but got '(s)'");
+          g_dbus_method_invocation_return_value (invocation, g_variant_new ("(s)", "should be unit"));
+        }
+      else
+        {
+          g_assert_not_reached ();
+        }
+
+      g_test_assert_expected_messages ();
+      g_variant_unref (value);
+    }
+  else if (g_str_equal (interface_name, "org.freedesktop.DBus.Properties") &&
+           g_str_equal (method_name, "GetAll"))
+    {
+      const gchar *iface_name;
+
+      g_variant_get (parameters, "(&s)", &iface_name);
+      g_assert_cmpstr (iface_name, ==, "org.example.Foo");
+
+      if (!no_reply)
+        g_test_expect_message ("GLib-GIO", G_LOG_LEVEL_WARNING,
+                               "Type of return value for property 'GetAll' call should be '(a{sv})' but got '(s)'");
+      g_dbus_method_invocation_return_value (invocation, g_variant_new ("(s)", "should be a different type"));
+    }
+  else if (g_str_equal (interface_name, "org.example.Foo") &&
+           g_str_equal (method_name, "WrongReturnType"))
+    {
+      if (!no_reply)
+        g_test_expect_message ("GLib-GIO", G_LOG_LEVEL_WARNING,
+                               "Type of return value is incorrect: expected '()', got '(s)'");
+      g_dbus_method_invocation_return_value (invocation, g_variant_new ("(s)", "should be a different type"));
+    }
+  else if (g_str_equal (interface_name, "org.example.Foo") &&
+           g_str_equal (method_name, "CloseBeforeReturning"))
+    {
+      g_dbus_connection_close (connection, NULL, NULL, NULL);
+
+      g_dbus_method_invocation_return_value (invocation, NULL);
+    }
+  else if (g_str_equal (interface_name, "org.example.Foo") &&
+           g_str_equal (method_name, "GetFDs"))
+    {
+      const gchar *action;
+      GUnixFDList *list = NULL;
+      GError *local_error = NULL;
+
+      g_variant_get (parameters, "(&s)", &action);
+
+      list = g_unix_fd_list_new ();
+      g_unix_fd_list_append (list, 1, &local_error);
+      g_assert_no_error (local_error);
+
+      if (g_str_equal (action, "WrongNumber"))
+        {
+          g_unix_fd_list_append (list, 1, &local_error);
+          g_assert_no_error (local_error);
+        }
+
+      if (g_str_equal (action, "Valid") ||
+          g_str_equal (action, "WrongNumber"))
+        g_dbus_method_invocation_return_value_with_unix_fd_list (invocation, g_variant_new ("(h)"), list);
+      else
+        g_assert_not_reached ();
+
+      g_object_unref (list);
+    }
+  else if (g_str_equal (interface_name, "org.example.Foo") &&
+           g_str_equal (method_name, "ReturnError"))
+    {
+      g_dbus_method_invocation_return_dbus_error (invocation, "org.example.Foo", "SomeError");
+    }
+  else
+    g_assert_not_reached ();
+}
+
+static void
+ensure_result_cb (GObject      *source,
+                  GAsyncResult *result,
+                  gpointer      user_data)
+{
+  GDBusConnection *connection = G_DBUS_CONNECTION (source);
+  GVariant *reply;
+  guint *n_outstanding_calls = user_data;
+
+  reply = g_dbus_connection_call_finish (connection, result, NULL);
+
+  /* We don’t care what the reply is. */
+  g_clear_pointer (&reply, g_variant_unref);
+
+  g_assert_cmpint (*n_outstanding_calls, >, 0);
+  *n_outstanding_calls = *n_outstanding_calls - 1;
+}
+
+static void
+test_method_invocation_return (void)
+{
+  GDBusConnection *connection = NULL;
+  GError *local_error = NULL;
+  guint registration_id;
+  const GDBusInterfaceVTable vtable = {
+    test_method_invocation_return_method_call, NULL, NULL, { 0 }
+  };
+  guint n_outstanding_calls = 0;
+
+  g_test_summary ("Test calling g_dbus_method_invocation_return_*() in various ways");
+
+  /* Connect to the bus. */
+  connection = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, &local_error);
+  g_assert_no_error (local_error);
+  g_assert_nonnull (connection);
+
+  /* Don’t exit the test when the server closes the connection in
+   * CloseBeforeReturning(). */
+  g_dbus_connection_set_exit_on_close (connection, FALSE);
+
+  /* Register an object which we can call methods on. */
+  registration_id = g_dbus_connection_register_object (connection,
+                                                       "/foo",
+                                                       (GDBusInterfaceInfo *) &foo_interface_info,
+                                                       &vtable, NULL, NULL, &local_error);
+  g_assert_no_error (local_error);
+  g_assert_cmpint (registration_id, !=, 0);
+
+  /* Test a variety of error cases */
+    {
+      const struct
+        {
+          const gchar *interface_name;
+          const gchar *method_name;
+          const gchar *parameters_string;
+          gboolean tests_undefined_behaviour;
+        }
+      calls[] =
+        {
+          { "org.freedesktop.DBus.Properties", "Get", "('org.example.Foo', 'InvalidType')", TRUE },
+          { "org.freedesktop.DBus.Properties", "Get", "('org.example.Foo', 'InvalidTypeNull')", TRUE },
+          { "org.freedesktop.DBus.Properties", "Get", "('org.example.Foo', 'InvalidValueType')", TRUE },
+          { "org.freedesktop.DBus.Properties", "Set", "('org.example.Foo', 'InvalidType', <'irrelevant'>)", TRUE },
+          { "org.freedesktop.DBus.Properties", "GetAll", "('org.example.Foo',)", TRUE },
+          { "org.example.Foo", "WrongReturnType", "()", TRUE },
+          { "org.example.Foo", "GetFDs", "('Valid',)", FALSE },
+          { "org.example.Foo", "GetFDs", "('WrongNumber',)", TRUE },
+          { "org.example.Foo", "ReturnError", "()", FALSE },
+          { "org.example.Foo", "CloseBeforeReturning", "()", FALSE },
+        };
+      gsize i;
+
+      for (i = 0; i < G_N_ELEMENTS (calls); i++)
+        {
+          if (calls[i].tests_undefined_behaviour && !g_test_undefined ())
+            {
+              g_test_message ("Skipping %s.%s", calls[i].interface_name, calls[i].method_name);
+              continue;
+            }
+          else
+            {
+              g_test_message ("Calling %s.%s", calls[i].interface_name, calls[i].method_name);
+            }
+
+          /* Call twice, once expecting a result and once not. Do the call which
+           * doesn’t expect a result first; message ordering should ensure that
+           * it’s completed by the time the second call completes, so we don’t
+           * have to account for it separately.
+           *
+           * That’s good, because the only way to get g_dbus_connection_call()
+           * to set %G_DBUS_MESSAGE_FLAGS_NO_REPLY_EXPECTED is to not provide
+           * a callback function. */
+          n_outstanding_calls++;
+
+          g_dbus_connection_call (connection,
+                                  g_dbus_connection_get_unique_name (connection),
+                                  "/foo",
+                                  calls[i].interface_name,
+                                  calls[i].method_name,
+                                  g_variant_new_parsed (calls[i].parameters_string),
+                                  NULL,
+                                  G_DBUS_CALL_FLAGS_NONE,
+                                  -1,
+                                  NULL,
+                                  NULL,  /* no callback */
+                                  NULL);
+
+          g_dbus_connection_call (connection,
+                                  g_dbus_connection_get_unique_name (connection),
+                                  "/foo",
+                                  calls[i].interface_name,
+                                  calls[i].method_name,
+                                  g_variant_new_parsed (calls[i].parameters_string),
+                                  NULL,
+                                  G_DBUS_CALL_FLAGS_NONE,
+                                  -1,
+                                  NULL,
+                                  ensure_result_cb,
+                                  &n_outstanding_calls);
+        }
+    }
+
+  /* Wait until all the calls are complete. */
+  while (n_outstanding_calls > 0)
+    g_main_context_iteration (NULL, TRUE);
+
+  g_dbus_connection_unregister_object (connection, registration_id);
+  g_object_unref (connection);
+}
+
+int
+main (int   argc,
+      char *argv[])
+{
+  g_test_init (&argc, &argv, G_TEST_OPTION_ISOLATE_DIRS, NULL);
+
+  g_test_add_func ("/gdbus/method-invocation/return", test_method_invocation_return);
+
+  return session_bus_run ();
+}
index 911aff2..7ddb55b 100644 (file)
@@ -293,7 +293,7 @@ main (int   argc,
 {
   gint ret;
 
-  g_test_init (&argc, &argv, NULL);
+  g_test_init (&argc, &argv, G_TEST_OPTION_ISOLATE_DIRS, NULL);
 
   g_test_add_func ("/gdbus/non-socket", test_non_socket);
 
index f9c3bce..ce0335e 100644 (file)
@@ -17,6 +17,22 @@ gdbus_example_objectmanager_generated = custom_target('objectmanager-gen',
              '--symbol-decorator-define', 'HAVE_CONFIG_H',
              '@INPUT@'])
 
+gdbus_example_objectmanager_rst_gen = custom_target('objectmanager-rst-gen',
+  input: gdbus_example_objectmanager_xml,
+  output: [
+    'objectmanager-rst-gen-org.gtk.GDBus.Example.ObjectManager.Animal.rst',
+    'objectmanager-rst-gen-org.gtk.GDBus.Example.ObjectManager.Cat.rst',
+  ],
+  command: [
+    python,
+    gdbus_codegen,
+    '--interface-prefix', 'org.gtk.GDBus.Example.ObjectManager.',
+    '--generate-rst', 'objectmanager-rst-gen',
+    '--output-directory', '@OUTDIR@',
+    '@INPUT@',
+  ],
+)
+
 libgdbus_example_objectmanager = library('gdbus-example-objectmanager',
     gdbus_example_objectmanager_generated,
     c_args : test_c_args,
@@ -25,6 +41,9 @@ libgdbus_example_objectmanager = library('gdbus-example-objectmanager',
     install_dir : installed_tests_execdir)
 
 libgdbus_example_objectmanager_dep = declare_dependency(
-  sources : gdbus_example_objectmanager_generated[0],
+  sources : [
+    gdbus_example_objectmanager_generated[0],
+    gdbus_example_objectmanager_rst_gen[0],
+  ],
   link_with : libgdbus_example_objectmanager,
   dependencies : [libgio_dep])
index 7e619c2..eed75ac 100644 (file)
@@ -701,7 +701,6 @@ test_basic (GDBusProxy *proxy)
   connection = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, NULL);
 
   g_assert_true (g_dbus_proxy_get_connection (proxy) == connection);
-  g_assert_cmpint (g_dbus_proxy_get_flags (proxy), ==, G_DBUS_PROXY_FLAGS_NONE);
   g_assert_null (g_dbus_proxy_get_interface_info (proxy));
   g_assert_cmpstr (g_dbus_proxy_get_name (proxy), ==, "com.example.TestService");
   g_assert_cmpstr (g_dbus_proxy_get_object_path (proxy), ==, "/com/example/TestObject");
@@ -720,7 +719,7 @@ test_basic (GDBusProxy *proxy)
 
   g_assert_true (conn == connection);
   g_assert_null (info);
-  g_assert_cmpint (flags, ==, G_DBUS_PROXY_FLAGS_NONE);
+  g_assert_cmpint (flags, ==, g_dbus_proxy_get_flags (proxy));
   g_assert_cmpstr (name, ==, "com.example.TestService");
   g_assert_cmpstr (path, ==, "/com/example/TestObject");
   g_assert_cmpstr (interface, ==, "com.example.Frob");
@@ -735,6 +734,16 @@ test_basic (GDBusProxy *proxy)
 }
 
 static void
+name_disappeared_cb (GDBusConnection *connection,
+                     const gchar     *name,
+                     gpointer         user_data)
+{
+  gboolean *name_disappeared = user_data;
+  *name_disappeared = TRUE;
+  g_main_context_wakeup (NULL);
+}
+
+static void
 kill_test_service (GDBusConnection *connection)
 {
 #ifdef G_OS_UNIX
@@ -742,6 +751,8 @@ kill_test_service (GDBusConnection *connection)
   GVariant *ret;
   GError *error = NULL;
   const gchar *name = "com.example.TestService";
+  guint watch_id;
+  gboolean name_disappeared = FALSE;
 
   ret = g_dbus_connection_call_sync (connection,
                                      "org.freedesktop.DBus",
@@ -756,14 +767,25 @@ kill_test_service (GDBusConnection *connection)
                                      &error);
   g_variant_get (ret, "(u)", &pid);
   g_variant_unref (ret);
+
+  /* Watch the name and wait until it’s disappeared. */
+  watch_id = g_bus_watch_name_on_connection (connection, name,
+                                             G_BUS_NAME_WATCHER_FLAGS_NONE,
+                                             NULL, name_disappeared_cb,
+                                             &name_disappeared, NULL);
   kill (pid, SIGTERM);
+
+  while (!name_disappeared)
+    g_main_context_iteration (NULL, TRUE);
+
+  g_bus_unwatch_name (watch_id);
 #else
   g_warning ("Can't kill com.example.TestService");
 #endif
 }
 
 static void
-test_proxy (void)
+test_proxy_with_flags (GDBusProxyFlags flags)
 {
   GDBusProxy *proxy;
   GDBusConnection *connection;
@@ -777,7 +799,7 @@ test_proxy (void)
   g_assert_no_error (error);
   error = NULL;
   proxy = g_dbus_proxy_new_sync (connection,
-                                 G_DBUS_PROXY_FLAGS_NONE,
+                                 flags,
                                  NULL,                      /* GDBusInterfaceInfo */
                                  "com.example.TestService", /* name */
                                  "/com/example/TestObject", /* object path */
@@ -799,8 +821,6 @@ test_proxy (void)
 
   kill_test_service (connection);
 
-  _g_assert_property_notify (proxy, "g-name-owner");
-
   owner = g_dbus_proxy_get_name_owner (proxy);
   g_assert_null (owner);
   g_free (owner);
@@ -809,6 +829,12 @@ test_proxy (void)
   g_object_unref (connection);
 }
 
+static void
+test_proxy (void)
+{
+  test_proxy_with_flags (G_DBUS_PROXY_FLAGS_NONE);
+}
+
 /* ---------------------------------------------------------------------------------------------------- */
 
 static void
@@ -930,6 +956,58 @@ test_wellknown_noauto (void)
   g_source_remove (id);
 }
 
+typedef enum {
+  ADD_MATCH,
+  REMOVE_MATCH,
+} AddOrRemove;
+
+static void
+add_or_remove_match_rule (GDBusConnection *connection,
+                          AddOrRemove      add_or_remove,
+                          GVariant        *match_rule)
+{
+  GDBusMessage *message = NULL;
+  GError *error = NULL;
+
+  message = g_dbus_message_new_method_call ("org.freedesktop.DBus", /* name */
+                                            "/org/freedesktop/DBus", /* path */
+                                            "org.freedesktop.DBus", /* interface */
+                                            (add_or_remove == ADD_MATCH) ? "AddMatch" : "RemoveMatch");
+  g_dbus_message_set_body (message, match_rule);
+  g_dbus_connection_send_message (connection,
+                                  message,
+                                  G_DBUS_SEND_MESSAGE_FLAGS_NONE,
+                                  NULL,
+                                  &error);
+  g_assert_no_error (error);
+  g_clear_object (&message);
+}
+
+static void
+test_proxy_no_match_rule (void)
+{
+  GDBusConnection *connection = NULL;
+  GVariant *match_rule = NULL;
+
+  g_test_summary ("Test that G_DBUS_PROXY_FLAGS_NO_MATCH_RULE works");
+  g_test_bug ("https://gitlab.gnome.org/GNOME/glib/-/issues/1109");
+
+  connection = g_bus_get_sync (G_BUS_TYPE_SESSION, NULL, NULL);
+
+  /* Add a custom match rule which matches everything. */
+  match_rule = g_variant_ref_sink (g_variant_new ("(s)", "type='signal'"));
+  add_or_remove_match_rule (connection, ADD_MATCH, match_rule);
+
+  /* Run the tests. */
+  test_proxy_with_flags (G_DBUS_PROXY_FLAGS_NO_MATCH_RULE);
+
+  /* Remove the match rule again. */
+  add_or_remove_match_rule (connection, REMOVE_MATCH, match_rule);
+
+  g_clear_pointer (&match_rule, g_variant_unref);
+  g_clear_object (&connection);
+}
+
 int
 main (int   argc,
       char *argv[])
@@ -950,6 +1028,7 @@ main (int   argc,
   g_test_add_func ("/gdbus/proxy/no-properties", test_no_properties);
   g_test_add_func ("/gdbus/proxy/wellknown-noauto", test_wellknown_noauto);
   g_test_add_func ("/gdbus/proxy/async", test_async);
+  g_test_add_func ("/gdbus/proxy/no-match-rule", test_proxy_no_match_rule);
 
   ret = session_bus_run();
 
index 0681e7e..22628c0 100644 (file)
@@ -23,8 +23,6 @@
 #include <string.h>
 #include <stdio.h>
 
-#include "glib/glib-private.h"
-
 #include "gdbus-tests.h"
 
 #if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_64
@@ -869,7 +867,7 @@ check_bar_proxy (FooiGenBar *proxy,
                 "s", "a string",
                 "o", "/a/path",
                 "g", "asig",
-                "ay", g_variant_new_parsed ("[byte 0x65, 0x67]"),
+                "ay", "eg",
                 "as", array_of_strings,
                 "ao", array_of_objpaths,
                 "ag", g_variant_new_parsed ("[@g 'ass', 'git']"),
@@ -1304,18 +1302,6 @@ static gpointer
 check_proxies_in_thread (gpointer user_data)
 {
   GMainLoop *loop = user_data;
-#ifdef _GLIB_ADDRESS_SANITIZER
-
-  /* Silence "Not available before 2.38" when using old API */
-  G_GNUC_BEGIN_IGNORE_DEPRECATIONS
-  g_test_incomplete ("FIXME: Leaks a GWeakRef, see glib#2312");
-  G_GNUC_END_IGNORE_DEPRECATIONS
-
-  (void) check_thread_proxies;
-  (void) check_authorize_proxy;
-  (void) check_bat_proxy;
-  (void) check_bar_proxy;
-#else
   GMainContext *thread_context;
   GMainLoop *thread_loop;
   GError *error;
@@ -1382,9 +1368,14 @@ check_proxies_in_thread (gpointer user_data)
   g_object_unref (thread_proxy_1);
   g_object_unref (thread_proxy_2);
 
+  /* Wait for the proxy signals to all be unsubscribed. */
+  while (g_main_context_iteration (thread_context, FALSE))
+    {
+      /* Nothing needs to be done here */
+    }
+
   g_main_loop_unref (thread_loop);
   g_main_context_unref (thread_context);
-#endif
 
   /* this breaks out of the loop in main() (below) */
   g_main_loop_quit (loop);
index 4519fda..23dc1fd 100644 (file)
@@ -48,8 +48,9 @@ timeout_cb (gpointer user_data)
  * unrefs complete first. This is typically used on the shared connection, to
  * ensure it’s in a correct state before beginning the next test. */
 static void
-assert_connection_has_one_ref (GDBusConnection *connection,
-                               GMainContext    *context)
+(assert_connection_has_one_ref) (GDBusConnection *connection,
+                                 GMainContext    *context,
+                                 const gchar     *calling_function)
 {
   GSource *timeout_source = NULL;
   TimeoutData data = { context, FALSE };
@@ -63,7 +64,8 @@ assert_connection_has_one_ref (GDBusConnection *connection,
 
   while (g_atomic_int_get (&G_OBJECT (connection)->ref_count) != 1 && !data.timed_out)
     {
-      g_debug ("refcount of %p is not right, sleeping", connection);
+      g_debug ("refcount of %p is not right (%u rather than 1) in %s(), sleeping",
+               connection, g_atomic_int_get (&G_OBJECT (connection)->ref_count), calling_function);
       g_main_context_iteration (NULL, TRUE);
     }
 
@@ -71,9 +73,14 @@ assert_connection_has_one_ref (GDBusConnection *connection,
   g_source_unref (timeout_source);
 
   if (g_atomic_int_get (&G_OBJECT (connection)->ref_count) != 1)
-    g_error ("connection %p had too many refs", connection);
+    g_error ("connection %p had too many refs (%u rather than 1) in %s()",
+             connection, g_atomic_int_get (&G_OBJECT (connection)->ref_count), calling_function);
 }
 
+/* Macro wrapper to add in the calling function name */
+#define assert_connection_has_one_ref(connection, context) \
+  (assert_connection_has_one_ref) (connection, context, G_STRFUNC)
+
 /* ---------------------------------------------------------------------------------------------------- */
 /* Ensure that signal and method replies are delivered in the right thread */
 /* ---------------------------------------------------------------------------------------------------- */
@@ -176,7 +183,7 @@ test_delivery_in_thread_func (gpointer _data)
 
   /*
    * Check that we never actually send a message if the GCancellable
-   * is already cancelled - i.e.  we should get #G_IO_ERROR_CANCELLED
+   * is already cancelled - i.e.  we should get G_IO_ERROR_CANCELLED
    * when the actual connection is not up.
    */
   ca = g_cancellable_new ();
index 58d1797..253a21f 100644 (file)
@@ -79,7 +79,6 @@ main (int argc, char **argv)
 
 #ifdef G_OS_WIN32
   argv = g_win32_get_command_line ();
-  argc = g_strv_length (argv);
 #endif
 
   setlocale (LC_ALL, "");
index dad1623..35d958e 100644 (file)
@@ -2365,21 +2365,7 @@ G_GNUC_END_IGNORE_DEPRECATIONS
 }
 
 static gboolean
-strv_has_string (gchar       **haystack,
-                 const gchar  *needle)
-{
-  guint n;
-
-  for (n = 0; haystack != NULL && haystack[n] != NULL; n++)
-    {
-      if (g_strcmp0 (haystack[n], needle) == 0)
-        return TRUE;
-    }
-  return FALSE;
-}
-
-static gboolean
-strv_set_equal (gchar **strv, ...)
+strv_set_equal (const gchar * const *strv, ...)
 {
   gsize count;
   va_list list;
@@ -2394,7 +2380,7 @@ strv_set_equal (gchar **strv, ...)
       str = va_arg (list, const gchar *);
       if (str == NULL)
         break;
-      if (!strv_has_string (strv, str))
+      if (!g_strv_contains (strv, str))
         {
           res = FALSE;
           break;
@@ -2422,8 +2408,8 @@ test_list_items (void)
   children = g_settings_list_children (settings);
   keys = g_settings_schema_list_keys (schema);
 
-  g_assert_true (strv_set_equal (children, "basic-types", "complex-types", "localized", NULL));
-  g_assert_true (strv_set_equal (keys, "greeting", "farewell", NULL));
+  g_assert_true (strv_set_equal ((const gchar * const *) children, "basic-types", "complex-types", "localized", NULL));
+  g_assert_true (strv_set_equal ((const gchar * const *) keys, "greeting", "farewell", NULL));
 
   g_strfreev (children);
   g_strfreev (keys);
@@ -2443,13 +2429,13 @@ G_GNUC_BEGIN_IGNORE_DEPRECATIONS
   schemas = g_settings_list_schemas ();
 G_GNUC_END_IGNORE_DEPRECATIONS
 
-  g_assert_true (strv_set_equal ((gchar **)relocs,
+  g_assert_true (strv_set_equal (relocs,
                                  "org.gtk.test.no-path",
                                  "org.gtk.test.extends.base",
                                  "org.gtk.test.extends.extended",
                                  NULL));
 
-  g_assert_true (strv_set_equal ((gchar **)schemas,
+  g_assert_true (strv_set_equal (schemas,
                                  "org.gtk.test",
                                  "org.gtk.test.basic-types",
                                  "org.gtk.test.complex-types",
@@ -2658,7 +2644,7 @@ test_schema_list_keys (void)
 
   keys = g_settings_schema_list_keys (schema);
 
-  g_assert_true (strv_set_equal ((gchar **)keys,
+  g_assert_true (strv_set_equal ((const gchar * const *) keys,
                                  "greeting",
                                  "farewell",
                                  NULL));
@@ -2969,7 +2955,7 @@ test_extended_schema (void)
   settings = g_settings_new_with_path ("org.gtk.test.extends.extended", "/test/extendes/");
   g_object_get (settings, "settings-schema", &schema, NULL);
   keys = g_settings_schema_list_keys (schema);
-  g_assert_true (strv_set_equal (keys, "int32", "string", "another-int32", NULL));
+  g_assert_true (strv_set_equal ((const gchar * const *) keys, "int32", "string", "another-int32", NULL));
   g_strfreev (keys);
   g_object_unref (settings);
   g_settings_schema_unref (schema);
index da3cf8d..eee759d 100644 (file)
@@ -5,8 +5,6 @@
 #include <errno.h>
 #ifdef G_OS_UNIX
 #include <unistd.h>
-#include <gio/gunixinputstream.h>
-#include <gio/gunixoutputstream.h>
 #else
 #include <io.h>
 #endif
@@ -151,6 +149,55 @@ write_to_fds (int argc, char **argv)
 }
 
 static int
+read_from_fd (int argc, char **argv)
+{
+  int fd;
+  const char expected_result[] = "Yay success!";
+  guint8 buf[sizeof (expected_result) + 1];
+  gsize bytes_read;
+  FILE *f;
+
+  if (argc != 3)
+    {
+      g_print ("Usage: %s read-from-fd FD\n", argv[0]);
+      return 1;
+    }
+
+  fd = atoi (argv[2]);
+  if (fd == 0)
+    {
+      g_warning ("Argument \"%s\" does not look like a valid nonzero file descriptor", argv[2]);
+      return 1;
+    }
+
+  f = fdopen (fd, "r");
+  if (f == NULL)
+    {
+      g_warning ("Failed to open fd %d: %s", fd, g_strerror (errno));
+      return 1;
+    }
+
+  bytes_read = fread (buf, 1, sizeof (buf), f);
+  if (bytes_read != sizeof (expected_result))
+    {
+      g_warning ("Read %zu bytes, but expected %zu", bytes_read, sizeof (expected_result));
+      return 1;
+    }
+
+  if (memcmp (expected_result, buf, sizeof (expected_result)) != 0)
+    {
+      buf[sizeof (expected_result)] = '\0';
+      g_warning ("Expected \"%s\" but read  \"%s\"", expected_result, (char *)buf);
+      return 1;
+    }
+
+  if (fclose (f) == -1)
+    g_assert_not_reached ();
+
+  return 0;
+}
+
+static int
 env_mode (int argc, char **argv)
 {
   char **env;
@@ -242,6 +289,8 @@ main (int argc, char **argv)
     return sleep_forever_mode (argc, argv);
   else if (strcmp (mode, "write-to-fds") == 0)
     return write_to_fds (argc, argv);
+  else if (strcmp (mode, "read-from-fd") == 0)
+    return read_from_fd (argc, argv);
   else if (strcmp (mode, "env") == 0)
     return env_mode (argc, argv);
   else if (strcmp (mode, "cwd") == 0)
index 084b77d..fc5d462 100644 (file)
@@ -5,6 +5,7 @@
 #include <sys/wait.h>
 #include <glib-unix.h>
 #include <gio/gunixinputstream.h>
+#include <gio/gunixoutputstream.h>
 #include <gio/gfiledescriptorbased.h>
 #include <unistd.h>
 #include <fcntl.h>
 #define SPLICELEN (TOTAL_HELLOS * strlen (HELLO_WORLD))
 #endif
 
+
+
+#ifdef G_OS_WIN32
+#define TESTPROG "gsubprocess-testprog.exe"
+#else
+#define TESTPROG "gsubprocess-testprog"
+#endif
+
 static GPtrArray *
 get_test_subprocess_args (const char *mode,
                           ...) G_GNUC_NULL_TERMINATED;
@@ -36,19 +45,12 @@ get_test_subprocess_args (const char *mode,
 {
   GPtrArray *ret;
   char *path;
-  const char *binname;
   va_list args;
   gpointer arg;
 
   ret = g_ptr_array_new_with_free_func (g_free);
 
-#ifdef G_OS_WIN32
-  binname = "gsubprocess-testprog.exe";
-#else
-  binname = "gsubprocess-testprog";
-#endif
-
-  path = g_test_build_filename (G_TEST_BUILT, binname, NULL);
+  path = g_test_build_filename (G_TEST_BUILT, TESTPROG, NULL);
   g_ptr_array_add (ret, path);
   g_ptr_array_add (ret, g_strdup (mode));
 
@@ -167,6 +169,31 @@ test_search_path (void)
 
   g_object_unref (proc);
 }
+
+static void
+test_search_path_from_envp (void)
+{
+  GError *local_error = NULL;
+  GError **error = &local_error;
+  GSubprocessLauncher *launcher;
+  GSubprocess *proc;
+  const char *path;
+
+  path = g_test_get_dir (G_TEST_BUILT);
+
+  launcher = g_subprocess_launcher_new (G_SUBPROCESS_FLAGS_SEARCH_PATH_FROM_ENVP);
+  g_subprocess_launcher_setenv (launcher, "PATH", path, TRUE);
+
+  proc = g_subprocess_launcher_spawn (launcher, error, TESTPROG, "exit1", NULL);
+  g_assert_no_error (local_error);
+  g_object_unref (launcher);
+
+  g_subprocess_wait_check (proc, NULL, error);
+  g_assert_error (local_error, G_SPAWN_EXIT_ERROR, 1);
+  g_clear_error (error);
+
+  g_object_unref (proc);
+}
 #endif
 
 static void
@@ -1697,7 +1724,8 @@ test_child_setup (void)
 }
 
 static void
-test_pass_fd (void)
+do_test_pass_fd (GSubprocessFlags     flags,
+                 GSpawnChildSetupFunc child_setup)
 {
   GError *local_error = NULL;
   GError **error = &local_error;
@@ -1722,9 +1750,11 @@ test_pass_fd (void)
   needdup_fd_str = g_strdup_printf ("%d", needdup_pipefds[1] + 1);
 
   args = get_test_subprocess_args ("write-to-fds", basic_fd_str, needdup_fd_str, NULL);
-  launcher = g_subprocess_launcher_new (G_SUBPROCESS_FLAGS_NONE);
+  launcher = g_subprocess_launcher_new (flags);
   g_subprocess_launcher_take_fd (launcher, basic_pipefds[1], basic_pipefds[1]);
   g_subprocess_launcher_take_fd (launcher, needdup_pipefds[1], needdup_pipefds[1] + 1);
+  if (child_setup != NULL)
+    g_subprocess_launcher_set_child_setup (launcher, child_setup, NULL, NULL);
   proc = g_subprocess_launcher_spawnv (launcher, (const gchar * const *) args->pdata, error);
   g_ptr_array_free (args, TRUE);
   g_assert_no_error (local_error);
@@ -1754,6 +1784,206 @@ test_pass_fd (void)
   g_object_unref (proc);
 }
 
+static void
+test_pass_fd (void)
+{
+  do_test_pass_fd (G_SUBPROCESS_FLAGS_NONE, NULL);
+}
+
+static void
+empty_child_setup (gpointer user_data)
+{
+}
+
+static void
+test_pass_fd_empty_child_setup (void)
+{
+  /* Using a child setup function forces gspawn to use fork/exec
+   * rather than posix_spawn.
+   */
+  do_test_pass_fd (G_SUBPROCESS_FLAGS_NONE, empty_child_setup);
+}
+
+static void
+test_pass_fd_inherit_fds (void)
+{
+  /* Try to test the optimized posix_spawn codepath instead of
+   * fork/exec. Currently this requires using INHERIT_FDS since gspawn's
+   * posix_spawn codepath does not currently handle closing
+   * non-inherited fds. Note that using INHERIT_FDS means our testing of
+   * g_subprocess_launcher_take_fd() is less-comprehensive than when
+   * using G_SUBPROCESS_FLAGS_NONE.
+   */
+  do_test_pass_fd (G_SUBPROCESS_FLAGS_INHERIT_FDS, NULL);
+}
+
+static void
+do_test_fd_conflation (GSubprocessFlags     flags,
+                       GSpawnChildSetupFunc child_setup,
+                       gboolean             test_child_err_report_fd)
+{
+  char success_message[] = "Yay success!";
+  GError *error = NULL;
+  GOutputStream *output_stream;
+  GSubprocessLauncher *launcher;
+  GSubprocess *proc;
+  GPtrArray *args;
+  int unused_pipefds[2];
+  int pipefds[2];
+  int fd_to_pass_to_child;
+  gsize bytes_written;
+  gboolean success;
+  char *fd_str;
+
+  /* This test must run in a new process because it is extremely sensitive to
+   * order of opened fds.
+   */
+  if (!g_test_subprocess ())
+    {
+      g_test_trap_subprocess (NULL, 0, G_TEST_SUBPROCESS_INHERIT_STDOUT | G_TEST_SUBPROCESS_INHERIT_STDERR);
+      g_test_trap_assert_passed ();
+      return;
+    }
+
+  g_unix_open_pipe (unused_pipefds, FD_CLOEXEC, &error);
+  g_assert_no_error (error);
+
+  g_unix_open_pipe (pipefds, FD_CLOEXEC, &error);
+  g_assert_no_error (error);
+
+  /* The fds should be sequential since we are in a new process. */
+  g_assert_cmpint (unused_pipefds[0] /* 3 */, ==, unused_pipefds[1] - 1);
+  g_assert_cmpint (unused_pipefds[1] /* 4 */, ==, pipefds[0] - 1);
+  g_assert_cmpint (pipefds[0] /* 5 */, ==, pipefds[1] /* 6 */ - 1);
+
+  /* Because GSubprocess allows arbitrary remapping of fds, it has to be careful
+   * to avoid fd conflation issues, e.g. it should properly handle 5 -> 4 and
+   * 4 -> 5 at the same time. GIO previously attempted to handle this by naively
+   * dup'ing the source fds, but this was not good enough because it was
+   * possible that the dup'ed result could still conflict with one of the target
+   * fds. For example:
+   *
+   * source_fd 5 -> target_fd 9, source_fd 3 -> target_fd 7
+   *
+   * dup(5) -> dup returns 8
+   * dup(3) -> dup returns 9
+   *
+   * After dup'ing, we wind up with: 8 -> 9, 9 -> 7. That means that after we
+   * dup2(8, 9), we have clobbered fd 9 before we dup2(9, 7). The end result is
+   * we have remapped 5 -> 9 as expected, but then remapped 5 -> 7 instead of
+   * 3 -> 7 as the application intended.
+   *
+   * This issue has been fixed in the simplest way possible, by passing a
+   * minimum fd value when using F_DUPFD_CLOEXEC that is higher than any of the
+   * target fds, to guarantee all source fds are different than all target fds,
+   * eliminating any possibility of conflation.
+   *
+   * Anyway, that is why we have the unused_pipefds here. We need to open fds in
+   * a certain order in order to trick older GSubprocess into conflating the
+   * fds. The primary goal of this test is to ensure this particular conflation
+   * issue is not reintroduced. See glib#2503.
+   *
+   * This test also has an alternate mode of operation where it instead tests
+   * for conflation with gspawn's child_err_report_fd, glib#2506.
+   *
+   * Be aware this test is necessarily extremely fragile. To reproduce these
+   * bugs, it relies on internals of gspawn and gmain that will likely change
+   * in the future, eventually causing this test to no longer test the bugs
+   * it was originally designed to test. That is OK! If the test fails, at
+   * least you know *something* is wrong.
+   */
+  if (test_child_err_report_fd)
+    fd_to_pass_to_child = pipefds[1] + 2 /* 8 */;
+  else
+    fd_to_pass_to_child = pipefds[1] + 3 /* 9 */;
+
+  launcher = g_subprocess_launcher_new (flags);
+  g_subprocess_launcher_take_fd (launcher, pipefds[0] /* 5 */, fd_to_pass_to_child);
+  g_subprocess_launcher_take_fd (launcher, unused_pipefds[0] /* 3 */, pipefds[1] + 1 /* 7 */);
+  if (child_setup != NULL)
+    g_subprocess_launcher_set_child_setup (launcher, child_setup, NULL, NULL);
+  fd_str = g_strdup_printf ("%d", fd_to_pass_to_child);
+  args = get_test_subprocess_args ("read-from-fd", fd_str, NULL);
+  proc = g_subprocess_launcher_spawnv (launcher, (const gchar * const *) args->pdata, &error);
+  g_assert_no_error (error);
+  g_assert_nonnull (proc);
+  g_ptr_array_free (args, TRUE);
+  g_object_unref (launcher);
+  g_free (fd_str);
+
+  /* Close the read ends of the pipes. */
+  close (unused_pipefds[0]);
+  close (pipefds[0]);
+
+  /* Also close the write end of the unused pipe. */
+  close (unused_pipefds[1]);
+
+  /* If doing our normal test:
+   *
+   * So now pipefds[0] should be inherited into the subprocess as
+   * pipefds[1] + 2, and unused_pipefds[0] should be inherited as
+   * pipefds[1] + 1. We will write to pipefds[1] and the subprocess will verify
+   * that it reads the expected data. But older broken GIO will accidentally
+   * clobber pipefds[1] + 2 with pipefds[1] + 1! This will cause the subprocess
+   * to hang trying to read from the wrong pipe.
+   *
+   * If testing conflation with child_err_report_fd:
+   *
+   * We are actually already done. The real test succeeded if we made it this
+   * far without hanging while spawning the child. But let's continue with our
+   * write and read anyway, to ensure things are good.
+   */
+  output_stream = g_unix_output_stream_new (pipefds[1], TRUE);
+  success = g_output_stream_write_all (output_stream,
+                                       success_message, sizeof (success_message),
+                                       &bytes_written,
+                                       NULL,
+                                       &error);
+  g_assert_no_error (error);
+  g_assert_cmpint (bytes_written, ==, sizeof (success_message));
+  g_assert_true (success);
+  g_object_unref (output_stream);
+
+  success = g_subprocess_wait_check (proc, NULL, &error);
+  g_assert_no_error (error);
+  g_object_unref (proc);
+}
+
+static void
+test_fd_conflation (void)
+{
+  do_test_fd_conflation (G_SUBPROCESS_FLAGS_NONE, NULL, FALSE);
+}
+
+static void
+test_fd_conflation_empty_child_setup (void)
+{
+  /* Using a child setup function forces gspawn to use fork/exec
+   * rather than posix_spawn.
+   */
+  do_test_fd_conflation (G_SUBPROCESS_FLAGS_NONE, empty_child_setup, FALSE);
+}
+
+static void
+test_fd_conflation_inherit_fds (void)
+{
+  /* Try to test the optimized posix_spawn codepath instead of
+   * fork/exec. Currently this requires using INHERIT_FDS since gspawn's
+   * posix_spawn codepath does not currently handle closing
+   * non-inherited fds.
+   */
+  do_test_fd_conflation (G_SUBPROCESS_FLAGS_INHERIT_FDS, NULL, FALSE);
+}
+
+static void
+test_fd_conflation_child_err_report_fd (void)
+{
+  /* Using a child setup function forces gspawn to use fork/exec
+   * rather than posix_spawn.
+   */
+  do_test_fd_conflation (G_SUBPROCESS_FLAGS_NONE, empty_child_setup, TRUE);
+}
+
 #endif
 
 static void
@@ -1819,6 +2049,7 @@ main (int argc, char **argv)
   g_test_add_func ("/gsubprocess/noop-stdin-inherit", test_noop_stdin_inherit);
 #ifdef G_OS_UNIX
   g_test_add_func ("/gsubprocess/search-path", test_search_path);
+  g_test_add_func ("/gsubprocess/search-path-from-envp", test_search_path_from_envp);
   g_test_add_func ("/gsubprocess/signal", test_signal);
 #endif
   g_test_add_func ("/gsubprocess/exit1", test_exit1);
@@ -1890,7 +2121,13 @@ main (int argc, char **argv)
   g_test_add_func ("/gsubprocess/stdout-file", test_stdout_file);
   g_test_add_func ("/gsubprocess/stdout-fd", test_stdout_fd);
   g_test_add_func ("/gsubprocess/child-setup", test_child_setup);
-  g_test_add_func ("/gsubprocess/pass-fd", test_pass_fd);
+  g_test_add_func ("/gsubprocess/pass-fd/basic", test_pass_fd);
+  g_test_add_func ("/gsubprocess/pass-fd/empty-child-setup", test_pass_fd_empty_child_setup);
+  g_test_add_func ("/gsubprocess/pass-fd/inherit-fds", test_pass_fd_inherit_fds);
+  g_test_add_func ("/gsubprocess/fd-conflation/basic", test_fd_conflation);
+  g_test_add_func ("/gsubprocess/fd-conflation/empty-child-setup", test_fd_conflation_empty_child_setup);
+  g_test_add_func ("/gsubprocess/fd-conflation/inherit-fds", test_fd_conflation_inherit_fds);
+  g_test_add_func ("/gsubprocess/fd-conflation/child-err-report-fd", test_fd_conflation_child_err_report_fd);
 #endif
   g_test_add_func ("/gsubprocess/launcher-environment", test_launcher_environment);
 
index 06eabef..bef6d0f 100644 (file)
 
 #include <gio/gio.h>
 
-static const char *
-get_level_string (GMemoryMonitorWarningLevel level)
-{
-  GEnumClass *eclass;
-  GEnumValue *value;
-
-  eclass = G_ENUM_CLASS (g_type_class_peek (G_TYPE_MEMORY_MONITOR_WARNING_LEVEL));
-  value = g_enum_get_value (eclass, level);
-
-  if (value == NULL)
-    return "unknown";
-
-  return value->value_nick;
-}
-
 static void
 test_dup_default (void)
 {
@@ -47,10 +32,9 @@ static void
 warning_cb (GMemoryMonitor *m,
            GMemoryMonitorWarningLevel level)
 {
-  const char *str;
-
-  str = get_level_string (level);
-  g_debug ("Warning level: %s (%d)", str , level);
+  char *str = g_enum_to_string (G_TYPE_MEMORY_MONITOR_WARNING_LEVEL, level);
+  g_message ("Warning level: %s (%d)", str , level);
+  g_free (str);
 }
 
 static void
index b448516..ec1644e 100644 (file)
@@ -300,6 +300,25 @@ test_write_bytes (void)
   g_bytes_unref (bytes2);
 }
 
+static void
+test_write_null (void)
+{
+  GOutputStream *mo;
+  GError *error = NULL;
+
+  g_test_bug ("https://gitlab.gnome.org/GNOME/glib/-/issues/2471");
+
+  mo = g_memory_output_stream_new_resizable ();
+  g_output_stream_write_all (mo, NULL, 0, NULL, NULL, &error);
+  g_assert_no_error (error);
+
+  g_assert_cmpint (0, ==, g_memory_output_stream_get_data_size (G_MEMORY_OUTPUT_STREAM (mo)));
+
+  g_output_stream_close (mo, NULL, &error);
+  g_assert_no_error (error);
+  g_object_unref (mo);
+}
+
 /* Test that writev() works on #GMemoryOutputStream with a non-empty set of vectors. This
  * covers the default writev() implementation around write(). */
 static void
@@ -437,6 +456,7 @@ main (int   argc,
   g_test_add_func ("/memory-output-stream/get-data-size", test_data_size);
   g_test_add_func ("/memory-output-stream/properties", test_properties);
   g_test_add_func ("/memory-output-stream/write-bytes", test_write_bytes);
+  g_test_add_func ("/memory-output-stream/write-null", test_write_null);
   g_test_add_func ("/memory-output-stream/writev", test_writev);
   g_test_add_func ("/memory-output-stream/writev_nonblocking", test_writev_nonblocking);
   g_test_add_func ("/memory-output-stream/steal_as_bytes", test_steal_as_bytes);
index b563e8d..3ed23a5 100644 (file)
@@ -42,25 +42,42 @@ giotypefuncs_inc = custom_target(
 
 #  Test programs buildable on all platforms
 gio_tests = {
-  'appmonitor' : {},
+  'appmonitor' : {
+    # FIXME: https://gitlab.gnome.org/GNOME/glib/-/issues/1392
+    'should_fail' : host_system == 'darwin',
+  },
   'async-close-output-stream' : {},
   'async-splice-output-stream' : {},
   'buffered-input-stream' : {},
   'buffered-output-stream' : {},
   'cancellable' : {},
   'contexts' : {},
-  'contenttype' : {},
+  'contenttype' : {
+    # FIXME: https://gitlab.gnome.org/GNOME/glib/-/issues/1392 / https://gitlab.gnome.org/GNOME/glib/-/issues/1251
+    'should_fail' : host_system == 'darwin',
+  },
   'converter-stream' : {},
   'credentials' : {},
+  'cxx' : {
+    'source' : ['cxx.cpp'],
+  },
   'data-input-stream' : {},
   'data-output-stream' : {},
-  'defaultvalue' : {'extra_sources' : [giotypefuncs_inc]},
   'fileattributematcher' : {},
   'filter-streams' : {},
-  'giomodule' : {},
-  'gsubprocess' : {},
+  'giomodule' : {
+    # FIXME: https://gitlab.gnome.org/GNOME/glib/-/issues/1392
+    'should_fail' : host_system == 'darwin',
+  },
+  'gsubprocess' : {
+    # FIXME: https://gitlab.gnome.org/GNOME/glib/-/issues/1392
+    'should_fail' : host_system == 'darwin',
+  },
   'g-file' : {},
-  'g-file-info' : {},
+  'g-file-info' : {
+    # FIXME: https://gitlab.gnome.org/GNOME/glib/-/issues/1392
+    'should_fail' : host_system == 'darwin',
+  },
   'g-icon' : {},
   'gdbus-addresses' : {},
   'gdbus-message' : {},
@@ -81,7 +98,10 @@ gio_tests = {
   'simple-async-result' : {},
   'simple-proxy' : {},
   'sleepy-stream' : {},
-  'socket' : {},
+  'socket' : {
+    # FIXME: https://gitlab.gnome.org/GNOME/glib/-/issues/1392
+    'should_fail' : host_system == 'darwin',
+  },
   'socket-listener' : {},
   'socket-service' : {},
   'srvtarget' : {},
@@ -95,7 +115,10 @@ gio_tests = {
   'tls-interaction' : {'extra_sources' : ['gtesttlsbackend.c']},
   'tls-database' : {'extra_sources' : ['gtesttlsbackend.c']},
   'tls-bindings' : {'extra_sources' : ['gtesttlsbackend.c']},
-  'gdbus-address-get-session' : {},
+  'gdbus-address-get-session' : {
+    # FIXME: https://gitlab.gnome.org/GNOME/glib/-/issues/1392
+    'should_fail' : host_system == 'darwin',
+  },
   'win32-appinfo' : {},
 }
 
@@ -148,16 +171,27 @@ else
   }
 endif
 
+have_dbus_daemon = find_program('dbus-daemon', required : false).found()
+if have_dbus_daemon
+  gio_tests += {
+    'debugcontroller' : {},
+    'defaultvalue' : {'extra_sources' : [giotypefuncs_inc]},
+  }
+endif
+
 #  Test programs buildable on UNIX only
 if host_machine.system() != 'windows'
   gio_tests += {
     'file' : {},
     'gdbus-peer' : {
       'dependencies' : [libgdbus_example_objectmanager_dep],
-      'install_rpath' : installed_tests_execdir
+      'install_rpath' : installed_tests_execdir,
+      # FIXME: https://gitlab.gnome.org/GNOME/glib/-/issues/1392
+      'should_fail' : host_system == 'darwin',
     },
     'gdbus-peer-object-manager' : {},
     'live-g-file' : {},
+    'resolver-parsing' : {'dependencies' : [network_libs]},
     'socket-address' : {},
     'stream-rw_all' : {},
     'unix-fd' : {},
@@ -219,8 +253,6 @@ if host_machine.system() != 'windows'
     }
   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
     annotate_args = [
       '--annotate', 'org.project.Bar', 'Key1', 'Value1',
@@ -306,6 +338,7 @@ if host_machine.system() != 'windows'
         'suite' : ['slow'],
       },
       'gdbus-introspection' : {'extra_sources' : extra_sources},
+      'gdbus-method-invocation' : {'extra_sources' : extra_sources},
       'gdbus-names' : {'extra_sources' : extra_sources},
       'gdbus-proxy' : {'extra_sources' : extra_sources},
       'gdbus-proxy-threads' : {
@@ -572,12 +605,16 @@ endif
 
 if not meson.is_cross_build() or meson.has_exe_wrapper()
 
+  compiler_type = '--compiler=@0@'.format(cc.get_id())
+
   plugin_resources_c = custom_target('plugin-resources.c',
     input : 'test4.gresource.xml',
     output : 'plugin-resources.c',
     command : [glib_compile_resources,
+               compiler_type,
                '--target=@OUTPUT@',
                '--sourcedir=' + meson.current_source_dir(),
+               '--internal',
                '--generate-source',
                '--c-name', '_g_plugin',
                '@INPUT@'])
@@ -600,9 +637,11 @@ if not meson.is_cross_build() or meson.has_exe_wrapper()
     input : 'test.gresource.xml',
     output : 'test.gresource',
     command : [glib_compile_resources,
+               compiler_type,
                '--target=@OUTPUT@',
                '--sourcedir=' + meson.current_source_dir(),
                '--sourcedir=' + meson.current_build_dir(),
+               '--internal',
                '@INPUT@'],
     install_dir : installed_tests_execdir,
     install : installed_tests_enabled)
@@ -611,8 +650,10 @@ if not meson.is_cross_build() or meson.has_exe_wrapper()
     input : 'test3.gresource.xml',
     output : 'test_resources2.c',
     command : [glib_compile_resources,
+               compiler_type,
                '--target=@OUTPUT@',
                '--sourcedir=' + meson.current_source_dir(),
+               '--internal',
                '--generate',
                '--c-name', '_g_test2',
                '--manual-register',
@@ -622,8 +663,10 @@ if not meson.is_cross_build() or meson.has_exe_wrapper()
     input : 'test3.gresource.xml',
     output : 'test_resources2.h',
     command : [glib_compile_resources,
+               compiler_type,
                '--target=@OUTPUT@',
                '--sourcedir=' + meson.current_source_dir(),
+               '--internal',
                '--generate',
                '--c-name', '_g_test2',
                '--manual-register',
@@ -634,9 +677,11 @@ if not meson.is_cross_build() or meson.has_exe_wrapper()
     depends : big_test_resource,
     output : 'test_resources.c',
     command : [glib_compile_resources,
+               compiler_type,
                '--target=@OUTPUT@',
                '--sourcedir=' + meson.current_source_dir(),
                '--sourcedir=' + meson.current_build_dir(),
+               '--internal',
                '--generate-source',
                '--c-name', '_g_test1',
                '@INPUT@'])
@@ -645,9 +690,11 @@ if not meson.is_cross_build() or meson.has_exe_wrapper()
     input : '111_digit_test.gresource.xml',
     output : 'digit_test_resources.c',
     command : [glib_compile_resources,
+               compiler_type,
                '--target=@OUTPUT@',
                '--sourcedir=' + meson.current_source_dir(),
                '--sourcedir=' + meson.current_build_dir(),
+               '--internal',
                '--generate-source',
                '--manual-register',
                '@INPUT@'])
@@ -656,8 +703,10 @@ if not meson.is_cross_build() or meson.has_exe_wrapper()
     input : '111_digit_test.gresource.xml',
     output : 'digit_test_resources.h',
     command : [glib_compile_resources,
+               compiler_type,
                '--target=@OUTPUT@',
                '--sourcedir=' + meson.current_source_dir(),
+               '--internal',
                '--generate',
                '--manual-register',
                '@INPUT@'])
@@ -700,9 +749,11 @@ if not meson.is_cross_build() or meson.has_exe_wrapper()
       input : 'test5.gresource.xml',
       output : 'test5.gresource',
       command : [glib_compile_resources,
+                 compiler_type,
                  '--target=@OUTPUT@',
                  '--sourcedir=' + meson.current_source_dir(),
                  '--sourcedir=' + meson.current_build_dir(),
+                 '--internal',
                  '@INPUT@'],
       install_dir : installed_tests_execdir,
       install : installed_tests_enabled)
@@ -712,9 +763,11 @@ if not meson.is_cross_build() or meson.has_exe_wrapper()
       input : 'test5.gresource.xml',
       output : 'test_resources_binary.c',
       command : [glib_compile_resources,
+                 compiler_type,
                  '--target=@OUTPUT@',
                  '--sourcedir=' + meson.current_source_dir(),
                  '--sourcedir=' + meson.current_build_dir(),
+                 '--internal',
                  '--generate-source',
                  '--external-data',
                  '--c-name', '_g_binary_test1',
@@ -725,17 +778,24 @@ if not meson.is_cross_build() or meson.has_exe_wrapper()
       input : test_gresource_binary,
       output : 'test_resources.o',
       command : [ld,
+                 '-z', 'noexecstack',
                  '-r',
                  '-b','binary',
                  '@INPUT@',
                  '-o','@OUTPUT@'])
 
     # Rename symbol to match the one in the C file
+    if cc.get_id() == 'gcc' and host_system == 'windows'
+      underscore = '_'
+    else
+      underscore = ''
+    endif
     test_resources_binary2 = custom_target('test_resources2.o',
       input : test_resources_binary,
       output : 'test_resources2.o',
       command : [objcopy,
-                 '--add-symbol','_g_binary_test1_resource_data=.data:0',
+                 '--strip-all',
+                 '--add-symbol', underscore + '_g_binary_test1_resource_data=.data:0',
                  '@INPUT@',
                  '@OUTPUT@'])
 
@@ -748,6 +808,8 @@ if not meson.is_cross_build() or meson.has_exe_wrapper()
   gio_tests += {
     'resources' : {
       'extra_sources' : resources_extra_sources,
+      # FIXME: https://gitlab.gnome.org/GNOME/glib/-/issues/1392
+      'should_fail' : host_system == 'darwin',
     },
   }
 endif
@@ -801,6 +863,7 @@ foreach test_name, extra_args : gio_tests
     suite : suite,
     is_parallel : extra_args.get('is_parallel', true),
     depends : extra_args.get('depends', []),
+    should_fail : extra_args.get('should_fail', false),
   )
 endforeach
 
index 3a75321..397be27 100644 (file)
@@ -87,18 +87,50 @@ mock_resolver_set_ipv6_error (MockResolver *self, GError *error)
     self->ipv6_error = g_error_copy (error);
 }
 
+static gboolean lookup_by_name_cb (gpointer user_data);
+
+/* Core of the implementation of `lookup_by_name()` in the mock resolver.
+ *
+ * It creates a #GSource which will become ready with the resolver results. It
+ * will become ready either after a timeout, or as an idle callback. This
+ * simulates doing some actual network-based resolution work.
+ *
+ * A previous implementation of this did the work in a thread, but that made it
+ * hard to synchronise the timeouts with the #GResolver failure timeouts in the
+ * calling thread, as spawning a worker thread could be subject to non-trivial
+ * delays. */
 static void
-do_lookup_by_name (GTask         *task,
-                   gpointer       source_object,
-                   gpointer       task_data,
-                   GCancellable  *cancellable)
+do_lookup_by_name (MockResolver             *self,
+                   GTask                    *task,
+                   GResolverNameLookupFlags  flags)
 {
-  MockResolver *self = source_object;
-  GResolverNameLookupFlags flags = GPOINTER_TO_UINT(task_data);
+  GSource *source = NULL;
+
+  g_task_set_task_data (task, GINT_TO_POINTER (flags), NULL);
+
+  if (flags == G_RESOLVER_NAME_LOOKUP_FLAGS_IPV4_ONLY)
+    source = g_timeout_source_new (self->ipv4_delay_ms);
+  else if (flags == G_RESOLVER_NAME_LOOKUP_FLAGS_IPV6_ONLY)
+    source = g_timeout_source_new (self->ipv6_delay_ms);
+  else if (flags == G_RESOLVER_NAME_LOOKUP_FLAGS_DEFAULT)
+    source = g_idle_source_new ();
+  else
+    g_assert_not_reached ();
+
+  g_source_set_callback (source, lookup_by_name_cb, g_object_ref (task), g_object_unref);
+  g_source_attach (source, g_main_context_get_thread_default ());
+  g_source_unref (source);
+}
+
+static gboolean
+lookup_by_name_cb (gpointer user_data)
+{
+  GTask *task = G_TASK (user_data);
+  MockResolver *self = g_task_get_source_object (task);
+  GResolverNameLookupFlags flags = GPOINTER_TO_INT (g_task_get_task_data (task));
 
   if (flags == G_RESOLVER_NAME_LOOKUP_FLAGS_IPV4_ONLY)
     {
-      g_usleep (self->ipv4_delay_ms * 1000);
       if (self->ipv4_error)
         g_task_return_error (task, g_error_copy (self->ipv4_error));
       else
@@ -106,7 +138,6 @@ do_lookup_by_name (GTask         *task,
     }
   else if (flags == G_RESOLVER_NAME_LOOKUP_FLAGS_IPV6_ONLY)
     {
-      g_usleep (self->ipv6_delay_ms * 1000);
       if (self->ipv6_error)
         g_task_return_error (task, g_error_copy (self->ipv6_error));
       else
@@ -120,6 +151,8 @@ do_lookup_by_name (GTask         *task,
     }
   else
     g_assert_not_reached ();
+
+  return G_SOURCE_REMOVE;
 }
 
 static void
@@ -130,27 +163,65 @@ lookup_by_name_with_flags_async (GResolver                *resolver,
                                  GAsyncReadyCallback       callback,
                                  gpointer                  user_data)
 {
-  GTask *task = g_task_new (resolver, cancellable, callback, user_data);
-  g_task_set_task_data (task, GUINT_TO_POINTER(flags), NULL);
-  g_task_run_in_thread (task, do_lookup_by_name);
+  MockResolver *self = MOCK_RESOLVER (resolver);
+  GTask *task = NULL;
+
+  task = g_task_new (resolver, cancellable, callback, user_data);
+  g_task_set_source_tag (task, lookup_by_name_with_flags_async);
+
+  do_lookup_by_name (self, task, flags);
+
   g_object_unref (task);
 }
 
+static void
+async_result_cb (GObject      *source_object,
+                 GAsyncResult *result,
+                 gpointer      user_data)
+{
+  GAsyncResult **result_out = user_data;
+
+  g_assert (*result_out == NULL);
+  *result_out = g_object_ref (result);
+
+  g_main_context_wakeup (g_main_context_get_thread_default ());
+}
+
 static GList *
-lookup_by_name (GResolver    *resolver,
-                const gchar  *hostname,
-                GCancellable *cancellable,
+lookup_by_name (GResolver     *resolver,
+                const gchar   *hostname,
+                GCancellable  *cancellable,
                 GError       **error)
 {
+  MockResolver *self = MOCK_RESOLVER (resolver);
+  GMainContext *context = NULL;
   GList *result = NULL;
-  GTask *task = g_task_new (resolver, cancellable, NULL, NULL);
-  g_task_set_task_data (task, GUINT_TO_POINTER (G_RESOLVER_NAME_LOOKUP_FLAGS_DEFAULT), NULL);
-  g_task_run_in_thread_sync (task, do_lookup_by_name);
-  result = g_task_propagate_pointer (task, error);
-  g_object_unref (task);
-  return result;
-}
+  GAsyncResult *async_result = NULL;
+  GTask *task = NULL;
 
+  context = g_main_context_new ();
+  g_main_context_push_thread_default (context);
+
+  task = g_task_new (resolver, cancellable, async_result_cb, &async_result);
+  g_task_set_source_tag (task, lookup_by_name);
+
+  /* Set up the resolution job. */
+  do_lookup_by_name (self, task, G_RESOLVER_NAME_LOOKUP_FLAGS_DEFAULT);
+
+  /* Wait for it to complete synchronously. */
+  while (async_result == NULL)
+    g_main_context_iteration (context, TRUE);
+
+  result = g_task_propagate_pointer (G_TASK (async_result), error);
+  g_object_unref (async_result);
+
+  g_assert_finalize_object (task);
+
+  g_main_context_pop_thread_default (context);
+  g_main_context_unref (context);
+
+  return g_steal_pointer (&result);
+}
 
 static GList *
 lookup_by_name_with_flags_finish (GResolver     *resolver,
index f9f8826..e838944 100644 (file)
@@ -3,11 +3,15 @@
 
 /* This is the same check that's done in configure to create config.h */
 #ifdef _WIN32
-# ifdef _MSC_VER
-#  define GLIB_TEST_EXPORT_SYMBOL __declspec(dllexport) extern
-# else
-#  define GLIB_TEST_EXPORT_SYMBOL __attribute__((visibility("default"))) __declspec(dllexport) extern
-# endif
+#ifdef GLIB_STATIC_COMPILATION
+#define GLIB_TEST_EXPORT_SYMBOL extern
+#else
+#ifdef _MSC_VER
+#define GLIB_TEST_EXPORT_SYMBOL __declspec(dllexport) extern
+#else
+#define GLIB_TEST_EXPORT_SYMBOL __attribute__ ((visibility ("default"))) __declspec(dllexport) extern
+#endif
+#endif
 /* Matches GCC and Clang */
 #elif defined(__GNUC__) && (__GNUC__ >= 4)
 # define GLIB_TEST_EXPORT_SYMBOL __attribute__((visibility("default"))) extern
index 946a8f2..da4d7f7 100644 (file)
@@ -20,7 +20,7 @@ test_basic (void)
   g_object_get (address, "hostname", &hostname, "port", &port, "scheme", &scheme, NULL);
   g_assert_cmpstr (hostname, ==, "www.gnome.org");
   g_assert_cmpint (port, ==, 8080);
-  g_assert (scheme == NULL);
+  g_assert_null (scheme);
   g_free (hostname);
 
   g_object_unref (address);
@@ -284,8 +284,8 @@ test_scope_id (GSocketConnectable *addr)
   saddr = g_socket_address_enumerator_next (addr_enum, NULL, &error);
   g_assert_no_error (error);
 
-  g_assert (saddr != NULL);
-  g_assert (G_IS_INET_SOCKET_ADDRESS (saddr));
+  g_assert_nonnull (saddr);
+  g_assert_true (G_IS_INET_SOCKET_ADDRESS (saddr));
 
   isaddr = G_INET_SOCKET_ADDRESS (saddr);
   g_assert_cmpint (g_inet_socket_address_get_scope_id (isaddr), ==, SCOPE_ID_TEST_INDEX);
@@ -299,7 +299,7 @@ test_scope_id (GSocketConnectable *addr)
   g_object_unref (saddr);
   saddr = g_socket_address_enumerator_next (addr_enum, NULL, &error);
   g_assert_no_error (error);
-  g_assert (saddr == NULL);
+  g_assert_null (saddr);
 
   g_object_unref (addr_enum);
 #else
@@ -377,7 +377,7 @@ assert_socket_address_matches (GSocketAddress *a,
   GInetSocketAddress *sa;
   gchar *str;  /* owned */
 
-  g_assert (G_IS_INET_SOCKET_ADDRESS (a));
+  g_assert_true (G_IS_INET_SOCKET_ADDRESS (a));
 
   sa = G_INET_SOCKET_ADDRESS (a);
   g_assert_cmpint (g_inet_socket_address_get_port (sa), ==, expected_port);
@@ -593,7 +593,7 @@ got_addr (GObject      *source_object,
     }
   else
     {
-      g_assert (G_IS_INET_SOCKET_ADDRESS (a));
+      g_assert_true (G_IS_INET_SOCKET_ADDRESS (a));
       data->addrs = g_list_prepend (data->addrs, a);
 
       if (!data->delay_ms)
@@ -768,16 +768,22 @@ sort_socket_addresses (gconstpointer a, gconstpointer b)
 static void
 assert_list_matches_expected (GList *result, GList *expected)
 {
+  GList *result_copy = NULL;
+
   g_assert_cmpint (g_list_length (result), ==, g_list_length (expected));
 
-  /* Sort by ipv4 first which matches the expected list */
-  result = g_list_sort (result, sort_socket_addresses);
+  /* Sort by ipv4 first which matches the expected list. Do this on a copy of
+   * @result to avoid modifying the original. */
+  result_copy = g_list_copy (result);
+  result = result_copy = g_list_sort (result_copy, sort_socket_addresses);
 
   for (; result != NULL; result = result->next, expected = expected->next)
     {
       GInetAddress *address = g_inet_socket_address_get_address (G_INET_SOCKET_ADDRESS (result->data));
       g_assert_true (g_inet_address_equal (address, expected->data));
     }
+
+  g_list_free (result_copy);
 }
 
 typedef struct {
@@ -855,6 +861,8 @@ test_happy_eyeballs_basic (HappyEyeballsFixture *fixture,
   g_main_loop_run (fixture->loop);
 
   assert_list_matches_expected (data.addrs, fixture->input_all_results);
+
+  g_list_free_full (data.addrs, (GDestroyNotify) g_object_unref);
 }
 
 static void
@@ -879,6 +887,7 @@ test_happy_eyeballs_parallel (HappyEyeballsFixture *fixture,
 
   /* Run again to ensure the cache from the previous one is correct */
 
+  g_list_free_full (data.addrs, (GDestroyNotify) g_object_unref);
   data.addrs = NULL;
   g_object_unref (enumerator2);
 
@@ -887,7 +896,9 @@ test_happy_eyeballs_parallel (HappyEyeballsFixture *fixture,
   g_main_loop_run (fixture->loop);
 
   assert_list_matches_expected (data.addrs, fixture->input_all_results);
+
   g_object_unref (enumerator2);
+  g_list_free_full (data.addrs, (GDestroyNotify) g_object_unref);
 }
 
 static void
@@ -905,6 +916,8 @@ test_happy_eyeballs_slow_ipv4 (HappyEyeballsFixture *fixture,
   g_main_loop_run (fixture->loop);
 
   assert_list_matches_expected (data.addrs, fixture->input_all_results);
+
+  g_list_free_full (data.addrs, (GDestroyNotify) g_object_unref);
 }
 
 static void
@@ -922,6 +935,8 @@ test_happy_eyeballs_slow_ipv6 (HappyEyeballsFixture *fixture,
   g_main_loop_run (fixture->loop);
 
   assert_list_matches_expected (data.addrs, fixture->input_all_results);
+
+  g_list_free_full (data.addrs, (GDestroyNotify) g_object_unref);
 }
 
 static void
@@ -939,6 +954,8 @@ test_happy_eyeballs_very_slow_ipv6 (HappyEyeballsFixture *fixture,
   g_main_loop_run (fixture->loop);
 
   assert_list_matches_expected (data.addrs, fixture->input_all_results);
+
+  g_list_free_full (data.addrs, (GDestroyNotify) g_object_unref);
 }
 
 static void
@@ -958,6 +975,8 @@ test_happy_eyeballs_slow_connection_and_ipv4 (HappyEyeballsFixture *fixture,
   g_main_loop_run (fixture->loop);
 
   assert_list_matches_expected (data.addrs, fixture->input_all_results);
+
+  g_list_free_full (data.addrs, (GDestroyNotify) g_object_unref);
 }
 
 static void
@@ -979,6 +998,7 @@ test_happy_eyeballs_ipv6_error_ipv4_first (HappyEyeballsFixture *fixture,
 
   assert_list_matches_expected (data.addrs, fixture->input_ipv4_results);
 
+  g_list_free_full (data.addrs, (GDestroyNotify) g_object_unref);
   g_error_free (ipv6_error);
 }
 
@@ -1001,6 +1021,7 @@ test_happy_eyeballs_ipv6_error_ipv6_first (HappyEyeballsFixture *fixture,
 
   assert_list_matches_expected (data.addrs, fixture->input_ipv4_results);
 
+  g_list_free_full (data.addrs, (GDestroyNotify) g_object_unref);
   g_error_free (ipv6_error);
 }
 
@@ -1026,6 +1047,7 @@ test_happy_eyeballs_ipv6_error_ipv4_very_slow (HappyEyeballsFixture *fixture,
 
   assert_list_matches_expected (data.addrs, fixture->input_ipv4_results);
 
+  g_list_free_full (data.addrs, (GDestroyNotify) g_object_unref);
   g_error_free (ipv6_error);
 }
 
@@ -1048,6 +1070,7 @@ test_happy_eyeballs_ipv4_error_ipv4_first (HappyEyeballsFixture *fixture,
 
   assert_list_matches_expected (data.addrs, fixture->input_ipv6_results);
 
+  g_list_free_full (data.addrs, (GDestroyNotify) g_object_unref);
   g_error_free (ipv4_error);
 }
 
@@ -1070,6 +1093,7 @@ test_happy_eyeballs_ipv4_error_ipv6_first (HappyEyeballsFixture *fixture,
 
   assert_list_matches_expected (data.addrs, fixture->input_ipv6_results);
 
+  g_list_free_full (data.addrs, (GDestroyNotify) g_object_unref);
   g_error_free (ipv4_error);
 }
 
index eec4bf7..d4b71a4 100644 (file)
  * connects to @server_addr anyway).
  *
  * The default GProxyResolver (GTestProxyResolver) looks at its URI
- * and returns [ "direct://" ] for "simple://" URIs, and [
- * proxy_a.uri, proxy_b.uri ] for other URIs. The other GProxyResolver
- * (GTestAltProxyResolver) always returns [ proxy_a.uri ].
+ * and returns [ "direct://" ] for "simple://" URIs, and
+ * [ proxy_a.uri, proxy_b.uri ] for most other URIs. It can also return
+ * invalid results for other URIs (empty://, invalid://,
+ * invalid-then-simple://, and simple-then-invalid://) to test error
+ * handling.
+ *
+ * The other GProxyResolver (GTestAltProxyResolver) always returns
+ * [ proxy_a.uri ].
  */
 
 typedef struct {
@@ -134,6 +139,28 @@ g_test_proxy_resolver_lookup (GProxyResolver  *resolver,
       proxies[0] = g_strdup ("direct://");
       proxies[1] = NULL;
     }
+  else if (g_str_has_prefix (uri, "empty://"))
+    {
+      proxies[0] = g_strdup ("");
+      proxies[1] = NULL;
+    }
+  else if (g_str_has_prefix (uri, "invalid://"))
+    {
+      proxies[0] = g_strdup ("😼");
+      proxies[1] = NULL;
+    }
+  else if (g_str_has_prefix (uri, "invalid-then-simple://"))
+    {
+      proxies[0] = g_strdup ("😼");
+      proxies[1] = g_strdup ("direct://");
+      proxies[2] = NULL;
+    }
+  else if (g_str_has_prefix (uri, "simple-then-invalid://"))
+    {
+      proxies[0] = g_strdup ("direct://");
+      proxies[1] = g_strdup ("😼");
+      proxies[2] = NULL;
+    }
   else
     {
       /* Proxy A can only deal with "alpha://" URIs, not
@@ -824,11 +851,8 @@ static void
 teardown_test (gpointer fixture,
               gconstpointer user_data)
 {
-  if (last_proxies)
-    {
-      g_strfreev (last_proxies);
-      last_proxies = NULL;
-    }
+  g_clear_pointer (&last_proxies, g_strfreev);
+
   g_clear_error (&proxy_a.last_error);
   g_clear_error (&proxy_b.last_error);
 }
@@ -1092,6 +1116,118 @@ test_multiple_async (gpointer fixture,
 }
 
 static void
+test_invalid_uris_sync (gpointer fixture,
+                       gconstpointer user_data)
+{
+  GSocketConnection *conn;
+  gchar *uri;
+  GError *error = NULL;
+
+  g_test_bug ("https://gitlab.gnome.org/GNOME/glib/-/issues/2597");
+
+  /* The empty:// URI causes the proxy resolver to return an empty string. */
+  uri = g_strdup_printf ("empty://127.0.0.1:%u", server.server_port);
+  conn = g_socket_client_connect_to_uri (client, uri, 0, NULL, &error);
+  g_free (uri);
+  g_assert_error (error, G_IO_ERROR, G_IO_ERROR_FAILED);
+  g_assert_null (conn);
+  g_clear_error (&error);
+  g_clear_pointer (&last_proxies, g_strfreev);
+
+  /* The invalid:// URI causes the proxy resolver to return a cat emoji. */
+  uri = g_strdup_printf ("invalid://127.0.0.1:%u", server.server_port);
+  conn = g_socket_client_connect_to_uri (client, uri, 0, NULL, &error);
+  g_free (uri);
+  g_assert_error (error, G_IO_ERROR, G_IO_ERROR_FAILED);
+  g_assert_null (conn);
+  g_clear_error (&error);
+  g_clear_pointer (&last_proxies, g_strfreev);
+
+  /* If the proxy resolver returns an invalid URI before a valid URI,
+   * we should succeed.
+   */
+  uri = g_strdup_printf ("invalid-then-simple://127.0.0.1:%u", server.server_port);
+  conn = g_socket_client_connect_to_uri (client, uri, 0, NULL, &error);
+  g_free (uri);
+  g_assert_no_error (error);
+  do_echo_test (conn);
+  g_object_unref (conn);
+  g_clear_pointer (&last_proxies, g_strfreev);
+
+  /* If the proxy resolver returns a valid URI before an invalid URI,
+   * we should succeed.
+   */
+  uri = g_strdup_printf ("simple-then-invalid://127.0.0.1:%u", server.server_port);
+  conn = g_socket_client_connect_to_uri (client, uri, 0, NULL, &error);
+  g_free (uri);
+  g_assert_no_error (error);
+  do_echo_test (conn);
+  g_object_unref (conn);
+  g_clear_pointer (&last_proxies, g_strfreev);
+}
+
+static void
+test_invalid_uris_async (gpointer fixture,
+                        gconstpointer user_data)
+{
+  GSocketConnection *conn;
+  GError *error = NULL;
+  gchar *uri;
+
+  g_test_bug ("https://gitlab.gnome.org/GNOME/glib/-/issues/2597");
+
+  /* The empty:// URI causes the proxy resolver to return an empty string. */
+  uri = g_strdup_printf ("empty://127.0.0.1:%u", server.server_port);
+  g_socket_client_connect_to_uri_async (client, uri, 0, NULL,
+                                       async_got_error, &error);
+  g_free (uri);
+  while (error == NULL)
+    g_main_context_iteration (NULL, TRUE);
+  g_assert_error (error, G_IO_ERROR, G_IO_ERROR_FAILED);
+  g_clear_error (&error);
+  g_clear_pointer (&last_proxies, g_strfreev);
+
+  /* The invalid:// URI causes the proxy resolver to return a cat emoji. */
+  uri = g_strdup_printf ("invalid://127.0.0.1:%u", server.server_port);
+  g_socket_client_connect_to_uri_async (client, uri, 0, NULL,
+                                       async_got_error, &error);
+  g_free (uri);
+  while (error == NULL)
+    g_main_context_iteration (NULL, TRUE);
+  g_assert_error (error, G_IO_ERROR, G_IO_ERROR_FAILED);
+  g_clear_error (&error);
+  g_clear_pointer (&last_proxies, g_strfreev);
+
+  /* If the proxy resolver returns an invalid URI before a valid URI,
+   * we should succeed.
+   */
+  uri = g_strdup_printf ("invalid-then-simple://127.0.0.1:%u", server.server_port);
+  conn = NULL;
+  g_socket_client_connect_to_uri_async (client, uri, 0, NULL,
+                                       async_got_conn, &conn);
+  g_free (uri);
+  while (conn == NULL)
+    g_main_context_iteration (NULL, TRUE);
+  do_echo_test (conn);
+  g_object_unref (conn);
+  g_clear_pointer (&last_proxies, g_strfreev);
+
+  /* If the proxy resolver returns a valid URI before an invalid URI,
+   * we should succeed.
+   */
+  uri = g_strdup_printf ("simple-then-invalid://127.0.0.1:%u", server.server_port);
+  conn = NULL;
+  g_socket_client_connect_to_uri_async (client, uri, 0, NULL,
+                                       async_got_conn, &conn);
+  g_free (uri);
+  while (conn == NULL)
+    g_main_context_iteration (NULL, TRUE);
+  do_echo_test (conn);
+  g_object_unref (conn);
+  g_clear_pointer (&last_proxies, g_strfreev);
+}
+
+static void
 test_dns (gpointer fixture,
          gconstpointer user_data)
 {
@@ -1370,6 +1506,8 @@ main (int   argc,
   g_test_add_vtable ("/proxy/single_async", 0, NULL, setup_test, test_single_async, teardown_test);
   g_test_add_vtable ("/proxy/multiple_sync", 0, NULL, setup_test, test_multiple_sync, teardown_test);
   g_test_add_vtable ("/proxy/multiple_async", 0, NULL, setup_test, test_multiple_async, teardown_test);
+  g_test_add_vtable ("/proxy/invalid-uris-sync", 0, NULL, setup_test, test_invalid_uris_sync, teardown_test);
+  g_test_add_vtable ("/proxy/invalid-uris-async", 0, NULL, setup_test, test_invalid_uris_async, teardown_test);
   g_test_add_vtable ("/proxy/dns", 0, NULL, setup_test, test_dns, teardown_test);
   g_test_add_vtable ("/proxy/override", 0, NULL, setup_test, test_override, teardown_test);
   g_test_add_func ("/proxy/enumerator-ports", test_proxy_enumerator_ports);
diff --git a/gio/tests/resolver-parsing.c b/gio/tests/resolver-parsing.c
new file mode 100644 (file)
index 0000000..d9cf052
--- /dev/null
@@ -0,0 +1,879 @@
+/*
+ * Copyright (c) 2021 Igalia S.L.
+ *
+ * This library 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 library 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/>.
+ *
+ * Authors: Patrick Griffis <pgriffis@igalia.com>
+ */
+
+#include "config.h"
+
+#include <glib.h>
+#include <gio/gnetworking.h>
+
+#define GIO_COMPILATION
+#include "gthreadedresolver.h"
+#undef GIO_COMPILATION
+
+#ifdef HAVE_DN_COMP
+static void
+dns_builder_add_uint8 (GByteArray *builder,
+                       guint8      value)
+{
+  g_byte_array_append (builder, &value, 1);
+}
+
+static void
+dns_builder_add_uint16 (GByteArray *builder,
+                        guint16     value)
+{
+    dns_builder_add_uint8 (builder, (value >> 8)  & 0xFF);
+    dns_builder_add_uint8 (builder, (value)       & 0xFF);
+}
+
+static void
+dns_builder_add_uint32 (GByteArray *builder,
+                        guint32     value)
+{
+    dns_builder_add_uint8 (builder, (value >> 24) & 0xFF);
+    dns_builder_add_uint8 (builder, (value >> 16) & 0xFF);
+    dns_builder_add_uint8 (builder, (value >> 8)  & 0xFF);
+    dns_builder_add_uint8 (builder, (value)       & 0xFF);
+}
+
+static void
+dns_builder_add_length_prefixed_string (GByteArray *builder,
+                                        const char *string)
+{
+    guint8 length;
+
+    g_assert (strlen (string) <= G_MAXUINT8);
+
+    length = (guint8) strlen (string);
+    dns_builder_add_uint8 (builder, length);
+
+    /* Don't include trailing NUL */
+    g_byte_array_append (builder, (const guchar *)string, length);
+}
+
+static void
+dns_builder_add_domain (GByteArray *builder,
+                        const char *string)
+{
+  int ret;
+  guchar buffer[256];
+
+  ret = dn_comp (string, buffer, sizeof (buffer), NULL, NULL);
+  g_assert (ret != -1);
+
+  g_byte_array_append (builder, buffer, ret);
+}
+
+/* Append an invalid domain name to the DNS response. This is implemented by
+ * appending a single label followed by a pointer back to that label. This is
+ * invalid regardless of any other context in the response as its expansion is
+ * infinite.
+ *
+ * See https://datatracker.ietf.org/doc/html/rfc1035#section-4.1.4
+ *
+ * In order to create a pointer to the label, the label’s final offset in the
+ * DNS response must be known. The current length of @builder, plus @offset, is
+ * used for this. Hence, @offset is the additional offset (in bytes) to add, and
+ * typically corresponds to the length of the parent #GByteArray that @builder
+ * will eventually be added to. Potentially plus 2 bytes for the rdlength, as
+ * per dns_builder_add_answer_data(). */
+static void
+dns_builder_add_invalid_domain (GByteArray *builder,
+                                gsize       offset)
+{
+  offset += builder->len;
+  g_assert ((offset & 0xc0) == 0);
+
+  dns_builder_add_uint8 (builder, 1);
+  dns_builder_add_uint8 (builder, 'f');
+  dns_builder_add_uint8 (builder, 0xc0 | offset);
+}
+
+static void
+dns_builder_add_answer_data (GByteArray *builder,
+                             GByteArray *answer)
+{
+  dns_builder_add_uint16 (builder, answer->len); /* rdlength */
+  g_byte_array_append (builder, answer->data, answer->len);
+}
+
+static GByteArray *
+dns_header (void)
+{
+  GByteArray *answer = g_byte_array_sized_new (2046);
+
+  /* Start with a header, we ignore everything except ancount.
+     https://datatracker.ietf.org/doc/html/rfc1035#section-4.1.1 */
+  dns_builder_add_uint16 (answer, 0); /* ID */
+  dns_builder_add_uint16 (answer, 0); /* |QR|   Opcode  |AA|TC|RD|RA|   Z    |   RCODE   | */
+  dns_builder_add_uint16 (answer, 0); /* QDCOUNT */
+  dns_builder_add_uint16 (answer, 1); /* ANCOUNT (1 answer) */
+  dns_builder_add_uint16 (answer, 0); /* NSCOUNT */
+  dns_builder_add_uint16 (answer, 0); /* ARCOUNT */
+
+  return g_steal_pointer (&answer);
+}
+
+static void
+assert_query_fails (const gchar         *rrname,
+                    GResolverRecordType  record_type,
+                    GByteArray          *answer)
+{
+  GList *records = NULL;
+  GError *local_error = NULL;
+
+  records = g_resolver_records_from_res_query (rrname,
+                                               g_resolver_record_type_to_rrtype (record_type),
+                                               answer->data,
+                                               answer->len,
+                                               0,
+                                               &local_error);
+
+  g_assert_error (local_error, G_RESOLVER_ERROR, G_RESOLVER_ERROR_INTERNAL);
+  g_assert_null (records);
+  g_clear_error (&local_error);
+}
+
+static void
+assert_query_succeeds (const gchar         *rrname,
+                       GResolverRecordType  record_type,
+                       GByteArray          *answer,
+                       const gchar         *expected_answer_variant_str)
+{
+  GList *records = NULL;
+  GVariant *answer_variant, *expected_answer_variant = NULL;
+  GError *local_error = NULL;
+
+  records = g_resolver_records_from_res_query (rrname,
+                                               g_resolver_record_type_to_rrtype (record_type),
+                                               answer->data,
+                                               answer->len,
+                                               0,
+                                               &local_error);
+
+  g_assert_no_error (local_error);
+  g_assert_nonnull (records);
+
+  /* Test the results. */
+  answer_variant = records->data;
+  expected_answer_variant = g_variant_new_parsed (expected_answer_variant_str);
+  g_assert_cmpvariant (answer_variant, expected_answer_variant);
+
+  g_variant_unref (expected_answer_variant);
+  g_list_free_full (records, (GDestroyNotify) g_variant_unref);
+}
+#endif /* HAVE_DN_COMP */
+
+static void
+test_invalid_header (void)
+{
+  const struct
+    {
+      const guint8 *answer;
+      gsize answer_len;
+      GResolverError expected_error_code;
+    }
+  vectors[] =
+    {
+      /* No answer: */
+      { (const guint8 *) "", 0, G_RESOLVER_ERROR_NOT_FOUND },
+      /* Definitely too short to be a valid header: */
+      { (const guint8 *) "\x20", 1, G_RESOLVER_ERROR_INTERNAL },
+      /* One byte too short to be a valid header: */
+      { (const guint8 *) "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 11, G_RESOLVER_ERROR_INTERNAL },
+      /* Valid header indicating no answers: */
+      { (const guint8 *) "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00", 12, G_RESOLVER_ERROR_NOT_FOUND },
+    };
+  gsize i;
+
+  for (i = 0; i < G_N_ELEMENTS (vectors); i++)
+    {
+      GList *records = NULL;
+      GError *local_error = NULL;
+
+      records = g_resolver_records_from_res_query ("example.org",
+                                                   g_resolver_record_type_to_rrtype (G_RESOLVER_RECORD_NS),
+                                                   vectors[i].answer,
+                                                   vectors[i].answer_len,
+                                                   0,
+                                                   &local_error);
+
+      g_assert_error (local_error, G_RESOLVER_ERROR, (gint) vectors[i].expected_error_code);
+      g_assert_null (records);
+      g_clear_error (&local_error);
+    }
+}
+
+static void
+test_unknown_record_type (void)
+{
+#ifndef HAVE_DN_COMP
+  g_test_skip ("The dn_comp() function was not available.");
+  return;
+#else
+  GByteArray *answer = NULL;
+  GList *records = NULL;
+  GError *local_error = NULL;
+  const guint type_id = 20;  /* ISDN, not supported anywhere */
+
+  /* An answer with an unsupported type chosen from
+   * https://en.wikipedia.org/wiki/List_of_DNS_record_types#[1]_Obsolete_record_types */
+  answer = dns_header ();
+  dns_builder_add_domain (answer, "example.org");
+  dns_builder_add_uint16 (answer, type_id);
+  dns_builder_add_uint16 (answer, 1); /* qclass=C_IN */
+  dns_builder_add_uint32 (answer, 0); /* ttl (ignored) */
+  dns_builder_add_uint16 (answer, 0); /* rdlength */
+
+  records = g_resolver_records_from_res_query ("example.org",
+                                               type_id,
+                                               answer->data,
+                                               answer->len,
+                                               0,
+                                               &local_error);
+
+  g_assert_error (local_error, G_RESOLVER_ERROR, G_RESOLVER_ERROR_NOT_FOUND);
+  g_assert_null (records);
+  g_clear_error (&local_error);
+
+  g_byte_array_free (answer, TRUE);
+#endif
+}
+
+static void
+test_mx_valid (void)
+{
+#ifndef HAVE_DN_COMP
+  g_test_skip ("The dn_comp() function was not available.");
+  return;
+#else
+  GByteArray *answer = NULL, *mx_rdata = NULL;
+
+  answer = dns_header ();
+
+  /* Resource record */
+  dns_builder_add_domain (answer, "example.org");
+  dns_builder_add_uint16 (answer, g_resolver_record_type_to_rrtype (G_RESOLVER_RECORD_MX));
+  dns_builder_add_uint16 (answer, 1); /* qclass=C_IN */
+  dns_builder_add_uint32 (answer, 0); /* ttl (ignored) */
+
+  /* MX rdata, https://datatracker.ietf.org/doc/html/rfc1035#section-3.3.9 */
+  mx_rdata = g_byte_array_new ();
+  dns_builder_add_uint16 (mx_rdata, 0);  /* preference */
+  dns_builder_add_domain (mx_rdata, "mail.example.org");
+  dns_builder_add_answer_data (answer, mx_rdata);
+  g_byte_array_unref (mx_rdata);
+
+  assert_query_succeeds ("example.org", G_RESOLVER_RECORD_MX, answer,
+                         "(@q 0, 'mail.example.org')");
+
+  g_byte_array_free (answer, TRUE);
+#endif
+}
+
+static void
+test_mx_invalid (void)
+{
+#ifndef HAVE_DN_COMP
+  g_test_skip ("The dn_comp() function was not available.");
+  return;
+#else
+  GByteArray *answer = NULL, *mx_rdata = NULL;
+
+  answer = dns_header ();
+
+  /* Resource record */
+  dns_builder_add_domain (answer, "example.org");
+  dns_builder_add_uint16 (answer, g_resolver_record_type_to_rrtype (G_RESOLVER_RECORD_MX));
+  dns_builder_add_uint16 (answer, 1); /* qclass=C_IN */
+  dns_builder_add_uint32 (answer, 0); /* ttl (ignored) */
+
+  /* MX rdata, https://datatracker.ietf.org/doc/html/rfc1035#section-3.3.9
+   *
+   * Use an invalid domain to trigger parsing failure. */
+  mx_rdata = g_byte_array_new ();
+  dns_builder_add_uint16 (mx_rdata, 0);  /* preference */
+  dns_builder_add_invalid_domain (mx_rdata, answer->len + 2);
+  dns_builder_add_answer_data (answer, mx_rdata);
+  g_byte_array_unref (mx_rdata);
+
+  assert_query_fails ("example.org", G_RESOLVER_RECORD_MX, answer);
+
+  g_byte_array_free (answer, TRUE);
+#endif
+}
+
+static void
+test_mx_invalid_too_short (void)
+{
+#ifndef HAVE_DN_COMP
+  g_test_skip ("The dn_comp() function was not available.");
+  return;
+#else
+  GByteArray *answer = NULL, *mx_rdata = NULL;
+
+  answer = dns_header ();
+
+  /* Resource record */
+  dns_builder_add_domain (answer, "example.org");
+  dns_builder_add_uint16 (answer, g_resolver_record_type_to_rrtype (G_RESOLVER_RECORD_MX));
+  dns_builder_add_uint16 (answer, 1); /* qclass=C_IN */
+  dns_builder_add_uint32 (answer, 0); /* ttl (ignored) */
+
+  /* MX rdata, https://datatracker.ietf.org/doc/html/rfc1035#section-3.3.9
+   *
+   * Miss out the domain field to trigger failure */
+  mx_rdata = g_byte_array_new ();
+  dns_builder_add_uint16 (mx_rdata, 0);  /* preference */
+  /* missing domain field */
+  dns_builder_add_answer_data (answer, mx_rdata);
+  g_byte_array_unref (mx_rdata);
+
+  assert_query_fails ("example.org", G_RESOLVER_RECORD_MX, answer);
+
+  g_byte_array_free (answer, TRUE);
+#endif
+}
+
+static void
+test_mx_invalid_too_short2 (void)
+{
+#ifndef HAVE_DN_COMP
+  g_test_skip ("The dn_comp() function was not available.");
+  return;
+#else
+  GByteArray *answer = NULL, *mx_rdata = NULL;
+
+  answer = dns_header ();
+
+  /* Resource record */
+  dns_builder_add_domain (answer, "example.org");
+  dns_builder_add_uint16 (answer, g_resolver_record_type_to_rrtype (G_RESOLVER_RECORD_MX));
+  dns_builder_add_uint16 (answer, 1); /* qclass=C_IN */
+  dns_builder_add_uint32 (answer, 0); /* ttl (ignored) */
+
+  /* MX rdata, https://datatracker.ietf.org/doc/html/rfc1035#section-3.3.9
+   *
+   * Miss out all fields to trigger failure */
+  mx_rdata = g_byte_array_new ();
+  /* missing preference and domain fields */
+  dns_builder_add_answer_data (answer, mx_rdata);
+  g_byte_array_unref (mx_rdata);
+
+  assert_query_fails ("example.org", G_RESOLVER_RECORD_MX, answer);
+
+  g_byte_array_free (answer, TRUE);
+#endif
+}
+
+static void
+test_ns_valid (void)
+{
+#ifndef HAVE_DN_COMP
+  g_test_skip ("The dn_comp() function was not available.");
+  return;
+#else
+  GByteArray *answer = NULL, *ns_rdata = NULL;
+
+  answer = dns_header ();
+
+  /* Resource record */
+  dns_builder_add_domain (answer, "example.org");
+  dns_builder_add_uint16 (answer, g_resolver_record_type_to_rrtype (G_RESOLVER_RECORD_NS));
+  dns_builder_add_uint16 (answer, 1); /* qclass=C_IN */
+  dns_builder_add_uint32 (answer, 0); /* ttl (ignored) */
+
+  /* NS rdata, https://datatracker.ietf.org/doc/html/rfc1035#section-3.3.11 */
+  ns_rdata = g_byte_array_new ();
+  dns_builder_add_domain (ns_rdata, "ns.example.org");
+  dns_builder_add_answer_data (answer, ns_rdata);
+  g_byte_array_unref (ns_rdata);
+
+  assert_query_succeeds ("example.org", G_RESOLVER_RECORD_NS, answer,
+                         "('ns.example.org',)");
+
+  g_byte_array_free (answer, TRUE);
+#endif
+}
+
+static void
+test_ns_invalid (void)
+{
+#ifndef HAVE_DN_COMP
+  g_test_skip ("The dn_comp() function was not available.");
+  return;
+#else
+  GByteArray *answer = NULL, *ns_rdata = NULL;
+
+  answer = dns_header ();
+
+  /* Resource record */
+  dns_builder_add_domain (answer, "example.org");
+  dns_builder_add_uint16 (answer, g_resolver_record_type_to_rrtype (G_RESOLVER_RECORD_NS));
+  dns_builder_add_uint16 (answer, 1); /* qclass=C_IN */
+  dns_builder_add_uint32 (answer, 0); /* ttl (ignored) */
+
+  /* NS rdata, https://datatracker.ietf.org/doc/html/rfc1035#section-3.3.11
+   *
+   * Use an invalid domain to trigger parsing failure. */
+  ns_rdata = g_byte_array_new ();
+  dns_builder_add_invalid_domain (ns_rdata, answer->len + 2);
+  dns_builder_add_answer_data (answer, ns_rdata);
+  g_byte_array_unref (ns_rdata);
+
+  assert_query_fails ("example.org", G_RESOLVER_RECORD_NS, answer);
+
+  g_byte_array_free (answer, TRUE);
+#endif
+}
+
+static void
+test_soa_valid (void)
+{
+#ifndef HAVE_DN_COMP
+  g_test_skip ("The dn_comp() function was not available.");
+  return;
+#else
+  GByteArray *answer = NULL, *soa_rdata = NULL;
+
+  answer = dns_header ();
+
+  /* Resource record */
+  dns_builder_add_domain (answer, "example.org");
+  dns_builder_add_uint16 (answer, g_resolver_record_type_to_rrtype (G_RESOLVER_RECORD_SOA));
+  dns_builder_add_uint16 (answer, 1); /* qclass=C_IN */
+  dns_builder_add_uint32 (answer, 0); /* ttl (ignored) */
+
+  /* SOA rdata, https://datatracker.ietf.org/doc/html/rfc1035#section-3.3.13 */
+  soa_rdata = g_byte_array_new ();
+  dns_builder_add_domain (soa_rdata, "mname.example.org");
+  dns_builder_add_domain (soa_rdata, "rname.example.org");
+  dns_builder_add_uint32 (soa_rdata, 0);  /* serial */
+  dns_builder_add_uint32 (soa_rdata, 0);  /* refresh */
+  dns_builder_add_uint32 (soa_rdata, 0);  /* retry */
+  dns_builder_add_uint32 (soa_rdata, 0);  /* expire */
+  dns_builder_add_uint32 (soa_rdata, 0);  /* minimum */
+  dns_builder_add_answer_data (answer, soa_rdata);
+  g_byte_array_unref (soa_rdata);
+
+  assert_query_succeeds ("example.org", G_RESOLVER_RECORD_SOA, answer,
+                         "('mname.example.org', 'rname.example.org', @u 0, @u 0, @u 0, @u 0, @u 0)");
+
+  g_byte_array_free (answer, TRUE);
+#endif
+}
+
+static void
+test_soa_invalid_mname (void)
+{
+#ifndef HAVE_DN_COMP
+  g_test_skip ("The dn_comp() function was not available.");
+  return;
+#else
+  GByteArray *answer = NULL, *soa_rdata = NULL;
+
+  answer = dns_header ();
+
+  /* Resource record */
+  dns_builder_add_domain (answer, "example.org");
+  dns_builder_add_uint16 (answer, g_resolver_record_type_to_rrtype (G_RESOLVER_RECORD_SOA));
+  dns_builder_add_uint16 (answer, 1); /* qclass=C_IN */
+  dns_builder_add_uint32 (answer, 0); /* ttl (ignored) */
+
+  /* SOA rdata, https://datatracker.ietf.org/doc/html/rfc1035#section-3.3.13
+   *
+   * Use an invalid domain to trigger parsing failure. */
+  soa_rdata = g_byte_array_new ();
+  dns_builder_add_invalid_domain (soa_rdata, answer->len + 2);  /* mname */
+  dns_builder_add_domain (soa_rdata, "rname.example.org");
+  dns_builder_add_uint32 (soa_rdata, 0);  /* serial */
+  dns_builder_add_uint32 (soa_rdata, 0);  /* refresh */
+  dns_builder_add_uint32 (soa_rdata, 0);  /* retry */
+  dns_builder_add_uint32 (soa_rdata, 0);  /* expire */
+  dns_builder_add_uint32 (soa_rdata, 0);  /* minimum */
+  dns_builder_add_answer_data (answer, soa_rdata);
+  g_byte_array_unref (soa_rdata);
+
+  assert_query_fails ("example.org", G_RESOLVER_RECORD_SOA, answer);
+
+  g_byte_array_free (answer, TRUE);
+#endif
+}
+
+static void
+test_soa_invalid_rname (void)
+{
+#ifndef HAVE_DN_COMP
+  g_test_skip ("The dn_comp() function was not available.");
+  return;
+#else
+  GByteArray *answer = NULL, *soa_rdata = NULL;
+
+  answer = dns_header ();
+
+  /* Resource record */
+  dns_builder_add_domain (answer, "example.org");
+  dns_builder_add_uint16 (answer, g_resolver_record_type_to_rrtype (G_RESOLVER_RECORD_SOA));
+  dns_builder_add_uint16 (answer, 1); /* qclass=C_IN */
+  dns_builder_add_uint32 (answer, 0); /* ttl (ignored) */
+
+  /* SOA rdata, https://datatracker.ietf.org/doc/html/rfc1035#section-3.3.13
+   *
+   * Use an invalid domain to trigger parsing failure. */
+  soa_rdata = g_byte_array_new ();
+  dns_builder_add_domain (soa_rdata, "mname.example.org");
+  dns_builder_add_invalid_domain (soa_rdata, answer->len + 2);  /* rname */
+  dns_builder_add_uint32 (soa_rdata, 0);  /* serial */
+  dns_builder_add_uint32 (soa_rdata, 0);  /* refresh */
+  dns_builder_add_uint32 (soa_rdata, 0);  /* retry */
+  dns_builder_add_uint32 (soa_rdata, 0);  /* expire */
+  dns_builder_add_uint32 (soa_rdata, 0);  /* minimum */
+  dns_builder_add_answer_data (answer, soa_rdata);
+  g_byte_array_unref (soa_rdata);
+
+  assert_query_fails ("example.org", G_RESOLVER_RECORD_SOA, answer);
+
+  g_byte_array_free (answer, TRUE);
+#endif
+}
+
+static void
+test_soa_invalid_too_short (void)
+{
+#ifndef HAVE_DN_COMP
+  g_test_skip ("The dn_comp() function was not available.");
+  return;
+#else
+  GByteArray *answer = NULL, *soa_rdata = NULL;
+
+  answer = dns_header ();
+
+  /* Resource record */
+  dns_builder_add_domain (answer, "example.org");
+  dns_builder_add_uint16 (answer, g_resolver_record_type_to_rrtype (G_RESOLVER_RECORD_SOA));
+  dns_builder_add_uint16 (answer, 1); /* qclass=C_IN */
+  dns_builder_add_uint32 (answer, 0); /* ttl (ignored) */
+
+  /* SOA rdata, https://datatracker.ietf.org/doc/html/rfc1035#section-3.3.13
+   *
+   * Miss out one of the fields to trigger a failure. */
+  soa_rdata = g_byte_array_new ();
+  dns_builder_add_domain (soa_rdata, "mname.example.org");
+  dns_builder_add_domain (soa_rdata, "rname.example.org");
+  dns_builder_add_uint32 (soa_rdata, 0);  /* serial */
+  dns_builder_add_uint32 (soa_rdata, 0);  /* refresh */
+  dns_builder_add_uint32 (soa_rdata, 0);  /* retry */
+  dns_builder_add_uint32 (soa_rdata, 0);  /* expire */
+  /* missing minimum field */
+  dns_builder_add_answer_data (answer, soa_rdata);
+  g_byte_array_unref (soa_rdata);
+
+  assert_query_fails ("example.org", G_RESOLVER_RECORD_SOA, answer);
+
+  g_byte_array_free (answer, TRUE);
+#endif
+}
+
+static void
+test_txt_valid (void)
+{
+#ifndef HAVE_DN_COMP
+  g_test_skip ("The dn_comp() function was not available.");
+  return;
+#else
+  GByteArray *answer = NULL, *txt_rdata = NULL;
+
+  answer = dns_header ();
+
+  /* Resource record */
+  dns_builder_add_domain (answer, "example.org");
+  dns_builder_add_uint16 (answer, g_resolver_record_type_to_rrtype (G_RESOLVER_RECORD_TXT));
+  dns_builder_add_uint16 (answer, 1); /* qclass=C_IN */
+  dns_builder_add_uint32 (answer, 0); /* ttl (ignored) */
+
+  /* TXT rdata, https://datatracker.ietf.org/doc/html/rfc1035#section-3.3.14 */
+  txt_rdata = g_byte_array_new ();
+  dns_builder_add_length_prefixed_string (txt_rdata, "some test content");
+  dns_builder_add_answer_data (answer, txt_rdata);
+  g_byte_array_unref (txt_rdata);
+
+  assert_query_succeeds ("example.org", G_RESOLVER_RECORD_TXT, answer,
+                         "(['some test content'],)");
+
+  g_byte_array_free (answer, TRUE);
+#endif
+}
+
+static void
+test_txt_valid_multiple_strings (void)
+{
+#ifndef HAVE_DN_COMP
+  g_test_skip ("The dn_comp() function was not available.");
+  return;
+#else
+  GByteArray *answer = NULL, *txt_rdata = NULL;
+
+  answer = dns_header ();
+
+  /* Resource record */
+  dns_builder_add_domain (answer, "example.org");
+  dns_builder_add_uint16 (answer, g_resolver_record_type_to_rrtype (G_RESOLVER_RECORD_TXT));
+  dns_builder_add_uint16 (answer, 1); /* qclass=C_IN */
+  dns_builder_add_uint32 (answer, 0); /* ttl (ignored) */
+
+  /* TXT rdata, https://datatracker.ietf.org/doc/html/rfc1035#section-3.3.14 */
+  txt_rdata = g_byte_array_new ();
+  dns_builder_add_length_prefixed_string (txt_rdata, "some test content");
+  dns_builder_add_length_prefixed_string (txt_rdata, "more test content");
+  dns_builder_add_answer_data (answer, txt_rdata);
+  g_byte_array_unref (txt_rdata);
+
+  assert_query_succeeds ("example.org", G_RESOLVER_RECORD_TXT, answer,
+                         "(['some test content', 'more test content'],)");
+
+  g_byte_array_free (answer, TRUE);
+#endif
+}
+
+static void
+test_txt_invalid_empty (void)
+{
+#ifndef HAVE_DN_COMP
+  g_test_skip ("The dn_comp() function was not available.");
+  return;
+#else
+  GByteArray *answer = NULL, *txt_rdata = NULL;
+
+  answer = dns_header ();
+
+  /* Resource record */
+  dns_builder_add_domain (answer, "example.org");
+  dns_builder_add_uint16 (answer, g_resolver_record_type_to_rrtype (G_RESOLVER_RECORD_TXT));
+  dns_builder_add_uint16 (answer, 1); /* qclass=C_IN */
+  dns_builder_add_uint32 (answer, 0); /* ttl (ignored) */
+
+  /* TXT rdata, https://datatracker.ietf.org/doc/html/rfc1035#section-3.3.14
+   *
+   * Provide zero character strings (i.e. an empty rdata section) to trigger
+   * failure. */
+  txt_rdata = g_byte_array_new ();
+  dns_builder_add_answer_data (answer, txt_rdata);
+  g_byte_array_unref (txt_rdata);
+
+  assert_query_fails ("example.org", G_RESOLVER_RECORD_TXT, answer);
+
+  g_byte_array_free (answer, TRUE);
+#endif
+}
+
+static void
+test_txt_invalid_overflow (void)
+{
+#ifndef HAVE_DN_COMP
+  g_test_skip ("The dn_comp() function was not available.");
+  return;
+#else
+  GByteArray *answer = NULL, *txt_rdata = NULL;
+
+  answer = dns_header ();
+
+  /* Resource record */
+  dns_builder_add_domain (answer, "example.org");
+  dns_builder_add_uint16 (answer, g_resolver_record_type_to_rrtype (G_RESOLVER_RECORD_TXT));
+  dns_builder_add_uint16 (answer, 1); /* qclass=C_IN */
+  dns_builder_add_uint32 (answer, 0); /* ttl (ignored) */
+
+  /* TXT rdata, https://datatracker.ietf.org/doc/html/rfc1035#section-3.3.14
+   *
+   * Use a character string whose length exceeds the remaining length in the
+   * answer record, to trigger failure. */
+  txt_rdata = g_byte_array_new ();
+  dns_builder_add_uint8 (txt_rdata, 10);  /* length, but no content */
+  dns_builder_add_answer_data (answer, txt_rdata);
+  g_byte_array_unref (txt_rdata);
+
+  assert_query_fails ("example.org", G_RESOLVER_RECORD_TXT, answer);
+
+  g_byte_array_free (answer, TRUE);
+#endif
+}
+
+static void
+test_srv_valid (void)
+{
+#ifndef HAVE_DN_COMP
+  g_test_skip ("The dn_comp() function was not available.");
+  return;
+#else
+  GByteArray *answer = NULL, *srv_rdata = NULL;
+
+  answer = dns_header ();
+
+  /* Resource record */
+  dns_builder_add_domain (answer, "example.org");
+  dns_builder_add_uint16 (answer, g_resolver_record_type_to_rrtype (G_RESOLVER_RECORD_SRV));
+  dns_builder_add_uint16 (answer, 1); /* qclass=C_IN */
+  dns_builder_add_uint32 (answer, 0); /* ttl (ignored) */
+
+  /* SRV rdata, https://datatracker.ietf.org/doc/html/rfc2782 */
+  srv_rdata = g_byte_array_new ();
+  dns_builder_add_uint16 (srv_rdata, 0);  /* priority */
+  dns_builder_add_uint16 (srv_rdata, 0);  /* weight */
+  dns_builder_add_uint16 (srv_rdata, 0);  /* port */
+  dns_builder_add_domain (srv_rdata, "target.example.org");
+  dns_builder_add_answer_data (answer, srv_rdata);
+  g_byte_array_unref (srv_rdata);
+
+  assert_query_succeeds ("example.org", G_RESOLVER_RECORD_SRV, answer,
+                         "(@q 0, @q 0, @q 0, 'target.example.org')");
+
+  g_byte_array_free (answer, TRUE);
+#endif
+}
+
+static void
+test_srv_invalid (void)
+{
+#ifndef HAVE_DN_COMP
+  g_test_skip ("The dn_comp() function was not available.");
+  return;
+#else
+  GByteArray *answer = NULL, *srv_rdata = NULL;
+
+  answer = dns_header ();
+
+  /* Resource record */
+  dns_builder_add_domain (answer, "example.org");
+  dns_builder_add_uint16 (answer, g_resolver_record_type_to_rrtype (G_RESOLVER_RECORD_SRV));
+  dns_builder_add_uint16 (answer, 1); /* qclass=C_IN */
+  dns_builder_add_uint32 (answer, 0); /* ttl (ignored) */
+
+  /* SRV rdata, https://datatracker.ietf.org/doc/html/rfc2782
+   *
+   * Use an invalid domain to trigger parsing failure. */
+  srv_rdata = g_byte_array_new ();
+  dns_builder_add_uint16 (srv_rdata, 0);  /* priority */
+  dns_builder_add_uint16 (srv_rdata, 0);  /* weight */
+  dns_builder_add_uint16 (srv_rdata, 0);  /* port */
+  dns_builder_add_invalid_domain (srv_rdata, answer->len + 2);
+  dns_builder_add_answer_data (answer, srv_rdata);
+  g_byte_array_unref (srv_rdata);
+
+  assert_query_fails ("example.org", G_RESOLVER_RECORD_SRV, answer);
+
+  g_byte_array_free (answer, TRUE);
+#endif
+}
+
+static void
+test_srv_invalid_too_short (void)
+{
+#ifndef HAVE_DN_COMP
+  g_test_skip ("The dn_comp() function was not available.");
+  return;
+#else
+  GByteArray *answer = NULL, *srv_rdata = NULL;
+
+  answer = dns_header ();
+
+  /* Resource record */
+  dns_builder_add_domain (answer, "example.org");
+  dns_builder_add_uint16 (answer, g_resolver_record_type_to_rrtype (G_RESOLVER_RECORD_SRV));
+  dns_builder_add_uint16 (answer, 1); /* qclass=C_IN */
+  dns_builder_add_uint32 (answer, 0); /* ttl (ignored) */
+
+  /* SRV rdata, https://datatracker.ietf.org/doc/html/rfc2782
+   *
+   * Miss out the target field to trigger failure */
+  srv_rdata = g_byte_array_new ();
+  dns_builder_add_uint16 (srv_rdata, 0);  /* priority */
+  dns_builder_add_uint16 (srv_rdata, 0);  /* weight */
+  dns_builder_add_uint16 (srv_rdata, 0);  /* port */
+  /* missing target field */
+  dns_builder_add_answer_data (answer, srv_rdata);
+  g_byte_array_unref (srv_rdata);
+
+  assert_query_fails ("example.org", G_RESOLVER_RECORD_SRV, answer);
+
+  g_byte_array_free (answer, TRUE);
+#endif
+}
+
+static void
+test_srv_invalid_too_short2 (void)
+{
+#ifndef HAVE_DN_COMP
+  g_test_skip ("The dn_comp() function was not available.");
+  return;
+#else
+  GByteArray *answer = NULL, *srv_rdata = NULL;
+
+  answer = dns_header ();
+
+  /* Resource record */
+  dns_builder_add_domain (answer, "example.org");
+  dns_builder_add_uint16 (answer, g_resolver_record_type_to_rrtype (G_RESOLVER_RECORD_SRV));
+  dns_builder_add_uint16 (answer, 1); /* qclass=C_IN */
+  dns_builder_add_uint32 (answer, 0); /* ttl (ignored) */
+
+  /* SRV rdata, https://datatracker.ietf.org/doc/html/rfc2782
+   *
+   * Miss out the target and port fields to trigger failure */
+  srv_rdata = g_byte_array_new ();
+  dns_builder_add_uint16 (srv_rdata, 0);  /* priority */
+  dns_builder_add_uint16 (srv_rdata, 0);  /* weight */
+  /* missing port and target fields */
+  dns_builder_add_answer_data (answer, srv_rdata);
+  g_byte_array_unref (srv_rdata);
+
+  assert_query_fails ("example.org", G_RESOLVER_RECORD_SRV, answer);
+
+  g_byte_array_free (answer, TRUE);
+#endif
+}
+
+int
+main (int   argc,
+      char *argv[])
+{
+  g_test_init (&argc, &argv, G_TEST_OPTION_ISOLATE_DIRS, NULL);
+
+  g_test_add_func ("/gresolver/invalid-header", test_invalid_header);
+  g_test_add_func ("/gresolver/unknown-record-type", test_unknown_record_type);
+  g_test_add_func ("/gresolver/mx/valid", test_mx_valid);
+  g_test_add_func ("/gresolver/mx/invalid", test_mx_invalid);
+  g_test_add_func ("/gresolver/mx/invalid/too-short", test_mx_invalid_too_short);
+  g_test_add_func ("/gresolver/mx/invalid/too-short2", test_mx_invalid_too_short2);
+  g_test_add_func ("/gresolver/ns/valid", test_ns_valid);
+  g_test_add_func ("/gresolver/ns/invalid", test_ns_invalid);
+  g_test_add_func ("/gresolver/soa/valid", test_soa_valid);
+  g_test_add_func ("/gresolver/soa/invalid/mname", test_soa_invalid_mname);
+  g_test_add_func ("/gresolver/soa/invalid/rname", test_soa_invalid_rname);
+  g_test_add_func ("/gresolver/soa/invalid/too-short", test_soa_invalid_too_short);
+  g_test_add_func ("/gresolver/srv/valid", test_srv_valid);
+  g_test_add_func ("/gresolver/srv/invalid", test_srv_invalid);
+  g_test_add_func ("/gresolver/srv/invalid/too-short", test_srv_invalid_too_short);
+  g_test_add_func ("/gresolver/srv/invalid/too-short2", test_srv_invalid_too_short2);
+  g_test_add_func ("/gresolver/txt/valid", test_txt_valid);
+  g_test_add_func ("/gresolver/txt/valid/multiple-strings", test_txt_valid_multiple_strings);
+  g_test_add_func ("/gresolver/txt/invalid/empty", test_txt_invalid_empty);
+  g_test_add_func ("/gresolver/txt/invalid/overflow", test_txt_invalid_overflow);
+
+  return g_test_run ();
+}
index 6e0c4d7..d62a4fd 100644 (file)
@@ -44,12 +44,12 @@ static G_NORETURN void
 usage (void)
 {
        fprintf (stderr, "Usage: resolver [-s] [hostname | IP | service/protocol/domain ] ...\n");
-       fprintf (stderr, "Usage: resolver [-s] [-t MX|TXT|NS|SOA] rrname ...\n");
+       fprintf (stderr, "Usage: resolver [-s] [-t MX|TXT|NS|SOA|SRV] rrname ...\n");
        fprintf (stderr, "       resolver [-s] -c NUMBER [hostname | IP | service/protocol/domain ]\n");
        fprintf (stderr, "       Use -s to do synchronous lookups.\n");
        fprintf (stderr, "       Use -c NUMBER (and only a single resolvable argument) to test GSocketConnectable.\n");
        fprintf (stderr, "       The given NUMBER determines how many times the connectable will be enumerated.\n");
-       fprintf (stderr, "       Use -t with MX, TXT, NS or SOA to look up DNS records of those types.\n");
+       fprintf (stderr, "       Use -t with MX, TXT, NS, SOA or SRV to look up DNS records of those types.\n");
        exit (1);
 }
 
@@ -233,6 +233,46 @@ print_resolved_txt (const char *rrname,
 }
 
 static void
+print_resolved_srv (const char *rrname,
+                    GList      *records,
+                    GError     *error)
+{
+  G_LOCK (response);
+  printf ("Domain: %s\n", rrname);
+  if (error)
+    {
+      printf ("Error: %s\n", error->message);
+      g_error_free (error);
+    }
+  else if (!records)
+    {
+      printf ("no SRV records\n");
+    }
+  else
+    {
+      GList *t;
+
+      for (t = records; t != NULL; t = t->next)
+        {
+          guint16 priority, weight, port;
+          const gchar *target;
+
+          g_variant_get (t->data, "(qqq&s)", &priority, &weight, &port, &target);
+
+          printf ("%s (priority %u, weight %u, port %u)\n",
+                  target, (guint) priority, (guint) weight, (guint) port);
+          g_variant_unref (t->data);
+        }
+
+      g_list_free (records);
+    }
+  printf ("\n");
+
+  done_lookup ();
+  G_UNLOCK (response);
+}
+
+static void
 print_resolved_soa (const char *rrname,
                     GList      *records,
                     GError     *error)
@@ -331,6 +371,9 @@ lookup_one_sync (const char *arg)
         case G_RESOLVER_RECORD_TXT:
           print_resolved_txt (arg, records, error);
           break;
+        case G_RESOLVER_RECORD_SRV:
+          print_resolved_srv (arg, records, error);
+          break;
         default:
           g_warn_if_reached ();
           break;
@@ -449,6 +492,9 @@ lookup_records_callback (GObject      *source,
     case G_RESOLVER_RECORD_TXT:
       print_resolved_txt (arg, records, error);
       break;
+    case G_RESOLVER_RECORD_SRV:
+      print_resolved_srv (arg, records, error);
+      break;
     default:
       g_warn_if_reached ();
       break;
@@ -659,9 +705,11 @@ record_type_arg (const gchar *option_name,
     record_type = G_RESOLVER_RECORD_SOA;
   } else if (g_ascii_strcasecmp (value, "NS") == 0) {
     record_type = G_RESOLVER_RECORD_NS;
+  } else if (g_ascii_strcasecmp (value, "SRV") == 0) {
+    record_type = G_RESOLVER_RECORD_SRV;
   } else {
       g_set_error (error, G_OPTION_ERROR, G_OPTION_ERROR_BAD_VALUE,
-                   "Specify MX, TXT, NS or SOA for the special record lookup types");
+                   "Specify MX, TXT, NS, SOA or SRV for the special record lookup types");
       return FALSE;
   }
 
index 325775f..7ba5896 100644 (file)
@@ -63,7 +63,7 @@ test_resource (GResource *resource)
                               "/test1.txt",
                               G_RESOURCE_LOOKUP_FLAGS_NONE,
                               &size, &flags, &error);
-  g_assert (found);
+  g_assert_true (found);
   g_assert_no_error (error);
   g_assert_cmpint (size, ==, 6);
   g_assert_cmpuint (flags, ==, G_RESOURCE_FLAGS_COMPRESSED);
@@ -81,7 +81,7 @@ test_resource (GResource *resource)
                               "/a_prefix/test2.txt",
                               G_RESOURCE_LOOKUP_FLAGS_NONE,
                               &size, &flags, &error);
-  g_assert (found);
+  g_assert_true (found);
   g_assert_no_error (error);
   g_assert_cmpint (size, ==, 6);
   g_assert_cmpuint (flags, ==, 0);
@@ -90,7 +90,7 @@ test_resource (GResource *resource)
                               "/a_prefix/test2-alias.txt",
                               G_RESOURCE_LOOKUP_FLAGS_NONE,
                               &size, &flags, &error);
-  g_assert (found);
+  g_assert_true (found);
   g_assert_no_error (error);
   g_assert_cmpint (size, ==, 6);
   g_assert_cmpuint (flags, ==, 0);
@@ -137,13 +137,13 @@ test_resource (GResource *resource)
                               "/test1.txt",
                               G_RESOURCE_LOOKUP_FLAGS_NONE,
                               &error);
-  g_assert (in != NULL);
+  g_assert_nonnull (in);
   g_assert_no_error (error);
 
   success = g_input_stream_read_all (in, buffer, sizeof (buffer) - 1,
                                     &size,
                                     NULL, &error);
-  g_assert (success);
+  g_assert_true (success);
   g_assert_no_error (error);
   g_assert_cmpint (size, ==, 6);
   buffer[size] = 0;
@@ -175,7 +175,7 @@ test_resource (GResource *resource)
                                 "/a_prefix/test2.txt",
                                 G_RESOURCE_LOOKUP_FLAGS_NONE,
                                 &error);
-  g_assert (data != NULL);
+  g_assert_nonnull (data);
   g_assert_no_error (error);
   size = g_bytes_get_size (data);
   g_assert_cmpint (size, ==, 6);
@@ -186,7 +186,7 @@ test_resource (GResource *resource)
                                 "/a_prefix/test2-alias.txt",
                                 G_RESOURCE_LOOKUP_FLAGS_NONE,
                                 &error);
-  g_assert (data != NULL);
+  g_assert_nonnull (data);
   g_assert_no_error (error);
   size = g_bytes_get_size (data);
   g_assert_cmpint (size, ==, 6);
@@ -211,7 +211,7 @@ test_resource (GResource *resource)
                                             "/a_prefix",
                                             G_RESOURCE_LOOKUP_FLAGS_NONE,
                                             &error);
-  g_assert (children != NULL);
+  g_assert_nonnull (children);
   g_assert_no_error (error);
   g_assert_cmpint (g_strv_length (children), ==, 2);
   g_strfreev (children);
@@ -221,7 +221,7 @@ test_resource (GResource *resource)
                                             "/a_prefix/",
                                             G_RESOURCE_LOOKUP_FLAGS_NONE,
                                             &error);
-  g_assert (children != NULL);
+  g_assert_nonnull (children);
   g_assert_no_error (error);
   g_assert_cmpint (g_strv_length (children), ==, 2);
   g_strfreev (children);
@@ -238,7 +238,7 @@ test_resource (GResource *resource)
                                             "/with/no/trailing/slash",
                                             G_RESOURCE_LOOKUP_FLAGS_NONE,
                                             &error);
-  g_assert (children == NULL);
+  g_assert_null (children);
   g_assert_error (error, G_RESOURCE_ERROR, G_RESOURCE_ERROR_NOT_FOUND);
   g_clear_error (&error);
 }
@@ -250,12 +250,12 @@ test_resource_file (void)
   GError *error = NULL;
 
   resource = g_resource_load ("not-there", &error);
-  g_assert (resource == NULL);
+  g_assert_null (resource);
   g_assert_error (error, G_FILE_ERROR, G_FILE_ERROR_NOENT);
   g_clear_error (&error);
 
   resource = g_resource_load (g_test_get_filename (G_TEST_BUILT, "test.gresource", NULL), &error);
-  g_assert (resource != NULL);
+  g_assert_nonnull (resource);
   g_assert_no_error (error);
 
   test_resource (resource);
@@ -293,10 +293,10 @@ test_resource_file_path (void)
       gchar *uri;
 
       file = g_file_new_for_uri (test_uris[i].input);
-      g_assert (file != NULL);
+      g_assert_nonnull (file);
 
       uri = g_file_get_uri (file);
-      g_assert (uri != NULL);
+      g_assert_nonnull (uri);
 
       g_assert_cmpstr (uri, ==, test_uris[i].expected);
 
@@ -317,12 +317,12 @@ test_resource_data (void)
 
   loaded_file = g_file_get_contents (g_test_get_filename (G_TEST_BUILT, "test.gresource", NULL),
                                      &content, &content_size, NULL);
-  g_assert (loaded_file);
+  g_assert_true (loaded_file);
 
   data = g_bytes_new_take (content, content_size);
   resource = g_resource_new_from_data (data, &error);
   g_bytes_unref (data);
-  g_assert (resource != NULL);
+  g_assert_nonnull (resource);
   g_assert_no_error (error);
 
   test_resource (resource);
@@ -342,7 +342,7 @@ test_resource_data_unaligned (void)
 
   loaded_file = g_file_get_contents (g_test_get_filename (G_TEST_BUILT, "test.gresource", NULL),
                                      &content, &content_size, NULL);
-  g_assert (loaded_file);
+  g_assert_true (loaded_file);
 
   content_copy = g_new (char, content_size + 1);
   memcpy (content_copy + 1, content, content_size);
@@ -352,7 +352,7 @@ test_resource_data_unaligned (void)
   g_free (content);
   resource = g_resource_new_from_data (data, &error);
   g_bytes_unref (data);
-  g_assert (resource != NULL);
+  g_assert_nonnull (resource);
   g_assert_no_error (error);
 
   test_resource (resource);
@@ -413,13 +413,13 @@ test_resource_registered (void)
   char buffer[128];
 
   resource = g_resource_load (g_test_get_filename (G_TEST_BUILT, "test.gresource", NULL), &error);
-  g_assert (resource != NULL);
+  g_assert_nonnull (resource);
   g_assert_no_error (error);
 
   found = g_resources_get_info ("/test1.txt",
                                G_RESOURCE_LOOKUP_FLAGS_NONE,
                                &size, &flags, &error);
-  g_assert (!found);
+  g_assert_false (found);
   g_assert_error (error, G_RESOURCE_ERROR, G_RESOURCE_ERROR_NOT_FOUND);
   g_clear_error (&error);
 
@@ -428,10 +428,10 @@ test_resource_registered (void)
   found = g_resources_get_info ("/test1.txt",
                                G_RESOURCE_LOOKUP_FLAGS_NONE,
                                &size, &flags, &error);
-  g_assert (found);
+  g_assert_true (found);
   g_assert_no_error (error);
   g_assert_cmpint (size, ==, 6);
-  g_assert (flags == (G_RESOURCE_FLAGS_COMPRESSED));
+  g_assert_cmpint (flags, ==, G_RESOURCE_FLAGS_COMPRESSED);
 
   found = g_resources_get_info ("/empty.txt",
                                 G_RESOURCE_LOOKUP_FLAGS_NONE,
@@ -439,12 +439,12 @@ test_resource_registered (void)
   g_assert_no_error (error);
   g_assert_true (found);
   g_assert_cmpint (size, ==, 0);
-  g_assert (flags == (G_RESOURCE_FLAGS_COMPRESSED));
+  g_assert_cmpint (flags, ==, G_RESOURCE_FLAGS_COMPRESSED);
 
   found = g_resources_get_info ("/a_prefix/test2.txt",
                                G_RESOURCE_LOOKUP_FLAGS_NONE,
                                &size, &flags, &error);
-  g_assert (found);
+  g_assert_true (found);
   g_assert_no_error (error);
   g_assert_cmpint (size, ==, 6);
   g_assert_cmpint (flags, ==, 0);
@@ -452,7 +452,7 @@ test_resource_registered (void)
   found = g_resources_get_info ("/a_prefix/test2-alias.txt",
                                G_RESOURCE_LOOKUP_FLAGS_NONE,
                                &size, &flags, &error);
-  g_assert (found);
+  g_assert_true (found);
   g_assert_no_error (error);
   g_assert_cmpint (size, ==, 6);
   g_assert_cmpuint (flags, ==, 0);
@@ -467,13 +467,13 @@ test_resource_registered (void)
   in = g_resources_open_stream ("/test1.txt",
                                G_RESOURCE_LOOKUP_FLAGS_NONE,
                                &error);
-  g_assert (in != NULL);
+  g_assert_nonnull (in);
   g_assert_no_error (error);
 
   success = g_input_stream_read_all (in, buffer, sizeof (buffer) - 1,
                                     &size,
                                     NULL, &error);
-  g_assert (success);
+  g_assert_true (success);
   g_assert_no_error (error);
   g_assert_cmpint (size, ==, 6);
   buffer[size] = 0;
@@ -510,7 +510,7 @@ test_resource_registered (void)
   data = g_resources_lookup_data ("/a_prefix/test2.txt",
                                  G_RESOURCE_LOOKUP_FLAGS_NONE,
                                  &error);
-  g_assert (data != NULL);
+  g_assert_nonnull (data);
   g_assert_no_error (error);
   size = g_bytes_get_size (data);
   g_assert_cmpint (size, ==, 6);
@@ -520,7 +520,7 @@ test_resource_registered (void)
   data = g_resources_lookup_data ("/a_prefix/test2-alias.txt",
                                  G_RESOURCE_LOOKUP_FLAGS_NONE,
                                  &error);
-  g_assert (data != NULL);
+  g_assert_nonnull (data);
   g_assert_no_error (error);
   size = g_bytes_get_size (data);
   g_assert_cmpint (size, ==, 6);
@@ -530,14 +530,14 @@ test_resource_registered (void)
   children = g_resources_enumerate_children ("/not/here",
                                             G_RESOURCE_LOOKUP_FLAGS_NONE,
                                             &error);
-  g_assert (children == NULL);
+  g_assert_null (children);
   g_assert_error (error, G_RESOURCE_ERROR, G_RESOURCE_ERROR_NOT_FOUND);
   g_clear_error (&error);
 
   children = g_resources_enumerate_children ("/a_prefix",
                                             G_RESOURCE_LOOKUP_FLAGS_NONE,
                                             &error);
-  g_assert (children != NULL);
+  g_assert_nonnull (children);
   g_assert_no_error (error);
   g_assert_cmpint (g_strv_length (children), ==, 2);
   g_strfreev (children);
@@ -548,7 +548,7 @@ test_resource_registered (void)
   found = g_resources_get_info ("/test1.txt",
                                G_RESOURCE_LOOKUP_FLAGS_NONE,
                                &size, &flags, &error);
-  g_assert (!found);
+  g_assert_false (found);
   g_assert_error (error, G_RESOURCE_ERROR, G_RESOURCE_ERROR_NOT_FOUND);
   g_clear_error (&error);
 }
@@ -565,7 +565,7 @@ test_resource_automatic (void)
   found = g_resources_get_info ("/auto_loaded/test1.txt",
                                G_RESOURCE_LOOKUP_FLAGS_NONE,
                                &size, &flags, &error);
-  g_assert (found);
+  g_assert_true (found);
   g_assert_no_error (error);
   g_assert_cmpint (size, ==, 6);
   g_assert_cmpint (flags, ==, 0);
@@ -573,7 +573,7 @@ test_resource_automatic (void)
   data = g_resources_lookup_data ("/auto_loaded/test1.txt",
                                  G_RESOURCE_LOOKUP_FLAGS_NONE,
                                  &error);
-  g_assert (data != NULL);
+  g_assert_nonnull (data);
   g_assert_no_error (error);
   size = g_bytes_get_size (data);
   g_assert_cmpint (size, ==, 6);
@@ -593,7 +593,7 @@ test_resource_manual (void)
   found = g_resources_get_info ("/manual_loaded/test1.txt",
                                G_RESOURCE_LOOKUP_FLAGS_NONE,
                                &size, &flags, &error);
-  g_assert (found);
+  g_assert_true (found);
   g_assert_no_error (error);
   g_assert_cmpint (size, ==, 6);
   g_assert_cmpuint (flags, ==, 0);
@@ -601,7 +601,7 @@ test_resource_manual (void)
   data = g_resources_lookup_data ("/manual_loaded/test1.txt",
                                  G_RESOURCE_LOOKUP_FLAGS_NONE,
                                  &error);
-  g_assert (data != NULL);
+  g_assert_nonnull (data);
   g_assert_no_error (error);
   size = g_bytes_get_size (data);
   g_assert_cmpint (size, ==, 6);
@@ -623,7 +623,7 @@ test_resource_manual2 (void)
                                  "/manual_loaded/test1.txt",
                                 G_RESOURCE_LOOKUP_FLAGS_NONE,
                                 &error);
-  g_assert (data != NULL);
+  g_assert_nonnull (data);
   g_assert_no_error (error);
   size = g_bytes_get_size (data);
   g_assert_cmpint (size, ==, 6);
@@ -730,7 +730,7 @@ test_resource_module (void)
       found = g_resources_get_info ("/resourceplugin/test1.txt",
                                    G_RESOURCE_LOOKUP_FLAGS_NONE,
                                    &size, &flags, &error);
-      g_assert (!found);
+      g_assert_false (found);
       g_assert_error (error, G_RESOURCE_ERROR, G_RESOURCE_ERROR_NOT_FOUND);
       g_clear_error (&error);
 
@@ -739,7 +739,7 @@ test_resource_module (void)
       found = g_resources_get_info ("/resourceplugin/test1.txt",
                                    G_RESOURCE_LOOKUP_FLAGS_NONE,
                                    &size, &flags, &error);
-      g_assert (found);
+      g_assert_true (found);
       g_assert_no_error (error);
       g_assert_cmpint (size, ==, 6);
       g_assert_cmpuint (flags, ==, 0);
@@ -747,7 +747,7 @@ test_resource_module (void)
       data = g_resources_lookup_data ("/resourceplugin/test1.txt",
                                      G_RESOURCE_LOOKUP_FLAGS_NONE,
                                      &error);
-      g_assert (data != NULL);
+      g_assert_nonnull (data);
       g_assert_no_error (error);
       size = g_bytes_get_size (data);
       g_assert_cmpint (size, ==, 6);
@@ -759,9 +759,11 @@ test_resource_module (void)
       found = g_resources_get_info ("/resourceplugin/test1.txt",
                                    G_RESOURCE_LOOKUP_FLAGS_NONE,
                                    &size, &flags, &error);
-      g_assert (!found);
+      g_assert_false (found);
       g_assert_error (error, G_RESOURCE_ERROR, G_RESOURCE_ERROR_NOT_FOUND);
       g_clear_error (&error);
+
+      g_clear_object (&module);
     }
 }
 
@@ -783,12 +785,12 @@ test_uri_query_info (void)
 
   loaded_file = g_file_get_contents (g_test_get_filename (G_TEST_BUILT, "test.gresource", NULL),
                                      &content, &content_size, NULL);
-  g_assert (loaded_file);
+  g_assert_true (loaded_file);
 
   data = g_bytes_new_take (content, content_size);
   resource = g_resource_new_from_data (data, &error);
   g_bytes_unref (data);
-  g_assert (resource != NULL);
+  g_assert_nonnull (resource);
   g_assert_no_error (error);
 
   g_resources_register (resource);
@@ -798,9 +800,9 @@ test_uri_query_info (void)
   g_assert_no_error (error);
 
   content_type = g_file_info_get_content_type (info);
-  g_assert (content_type);
+  g_assert_nonnull (content_type);
   mime_type = g_content_type_get_mime_type (content_type);
-  g_assert (mime_type);
+  g_assert_nonnull (mime_type);
   g_assert_cmpstr (mime_type, ==, "text/plain");
   g_free (mime_type);
 
@@ -847,19 +849,19 @@ test_uri_file (void)
 
   loaded_file = g_file_get_contents (g_test_get_filename (G_TEST_BUILT, "test.gresource", NULL),
                                      &content, &content_size, NULL);
-  g_assert (loaded_file);
+  g_assert_true (loaded_file);
 
   data = g_bytes_new_take (content, content_size);
   resource = g_resource_new_from_data (data, &error);
   g_bytes_unref (data);
-  g_assert (resource != NULL);
+  g_assert_nonnull (resource);
   g_assert_no_error (error);
 
   g_resources_register (resource);
 
   file = g_file_new_for_uri ("resource://" "/a_prefix/test2-alias.txt");
 
-  g_assert (g_file_get_path (file) == NULL);
+  g_assert_null (g_file_get_path (file));
 
   name = g_file_get_parse_name (file);
   g_assert_cmpstr (name, ==, "resource:///a_prefix/test2-alias.txt");
@@ -869,15 +871,15 @@ test_uri_file (void)
   g_assert_cmpstr (name, ==, "resource:///a_prefix/test2-alias.txt");
   g_free (name);
 
-  g_assert (!g_file_is_native (file));
-  g_assert (!g_file_has_uri_scheme (file, "http"));
-  g_assert (g_file_has_uri_scheme (file, "resource"));
+  g_assert_false (g_file_is_native (file));
+  g_assert_false (g_file_has_uri_scheme (file, "http"));
+  g_assert_true (g_file_has_uri_scheme (file, "resource"));
   scheme = g_file_get_uri_scheme (file);
   g_assert_cmpstr (scheme, ==, "resource");
   g_free (scheme);
 
   file2 = g_file_dup (file);
-  g_assert (g_file_equal (file, file2));
+  g_assert_true (g_file_equal (file, file2));
   g_object_unref (file2);
 
   parent = g_file_get_parent (file);
@@ -886,31 +888,31 @@ test_uri_file (void)
 
   file2 = g_file_get_child_for_display_name (parent, "test2-alias.txt", &error);
   g_assert_no_error (error);
-  g_assert (g_file_equal (file, file2));
+  g_assert_true (g_file_equal (file, file2));
   g_object_unref (file2);
 
   info = g_file_enumerator_next_file (enumerator, NULL, &error);
   g_assert_no_error (error);
-  g_assert (info != NULL);
+  g_assert_nonnull (info);
   g_object_unref (info);
 
   info = g_file_enumerator_next_file (enumerator, NULL, &error);
   g_assert_no_error (error);
-  g_assert (info != NULL);
+  g_assert_nonnull (info);
   g_object_unref (info);
 
   info = g_file_enumerator_next_file (enumerator, NULL, &error);
   g_assert_no_error (error);
-  g_assert (info == NULL);
+  g_assert_null (info);
 
   g_file_enumerator_close (enumerator, NULL, &error);
   g_assert_no_error (error);
   g_object_unref (enumerator);
 
   file2 = g_file_new_for_uri ("resource://" "a_prefix/../a_prefix//test2-alias.txt");
-  g_assert (g_file_equal (file, file2));
+  g_assert_true (g_file_equal (file, file2));
 
-  g_assert (g_file_has_prefix (file, parent));
+  g_assert_true (g_file_has_prefix (file, parent));
 
   name = g_file_get_relative_path (parent, file);
   g_assert_cmpstr (name, ==, "test2-alias.txt");
@@ -929,9 +931,9 @@ test_uri_file (void)
   stream = G_INPUT_STREAM (g_file_read (file, NULL, &error));
   g_assert_no_error (error);
   g_assert_cmpint (g_seekable_tell (G_SEEKABLE (stream)), ==, 0);
-  g_assert (g_seekable_can_seek (G_SEEKABLE (G_SEEKABLE (stream))));
+  g_assert_true (g_seekable_can_seek (G_SEEKABLE (G_SEEKABLE (stream))));
   ret = g_seekable_seek (G_SEEKABLE (stream), 1, G_SEEK_SET, NULL, &error);
-  g_assert (ret);
+  g_assert_true (ret);
   g_assert_no_error (error);
   skipped = g_input_stream_skip (stream, 1, NULL, &error);
   g_assert_cmpint (skipped, ==, 1);
@@ -939,7 +941,7 @@ test_uri_file (void)
 
   memset (buf, 0, 1024);
   ret = g_input_stream_read_all (stream, &buf, 1024, NULL, NULL, &error);
-  g_assert (ret);
+  g_assert_true (ret);
   g_assert_no_error (error);
   g_assert_cmpstr (buf, ==, "st2\n");
   info = g_file_input_stream_query_info (G_FILE_INPUT_STREAM (stream),
@@ -947,12 +949,12 @@ test_uri_file (void)
                                          NULL,
                                          &error);
   g_assert_no_error (error);
-  g_assert (info != NULL);
+  g_assert_nonnull (info);
   g_assert_cmpint (g_file_info_get_size (info), ==, 6);
   g_object_unref (info);
 
   ret = g_input_stream_close (stream, NULL, &error);
-  g_assert (ret);
+  g_assert_true (ret);
   g_assert_no_error (error);
   g_object_unref (stream);
 
index ee38fab..4dae36b 100644 (file)
  */
 
 #include <gio/gio.h>
+#include <glib/gstdio.h>
 
 #include <gio/gcredentialsprivate.h>
+#include <gio/gunixconnection.h>
+
 #ifdef G_OS_UNIX
 #include <errno.h>
 #include <sys/wait.h>
 #include <string.h>
 #include <stdlib.h>
 #include <gio/gnetworking.h>
-#include <gio/gunixconnection.h>
+#endif
+
+#ifdef G_OS_WIN32
+#include "giowin32-afunix.h"
 #endif
 
 #include "gnetworkingprivate.h"
@@ -1327,7 +1333,23 @@ test_sockaddr (void)
   g_object_unref (saddr);
 }
 
-#ifdef G_OS_UNIX
+static void
+bind_win32_unixfd (int fd)
+{
+#ifdef G_OS_WIN32
+  gint len, ret;
+  struct sockaddr_un addr;
+
+  memset (&addr, 0, sizeof addr);
+  addr.sun_family = AF_UNIX;
+  len = g_snprintf (addr.sun_path, sizeof addr.sun_path, "%s" G_DIR_SEPARATOR_S "%d.sock", g_get_tmp_dir (), fd);
+  g_assert_cmpint (len, <=, sizeof addr.sun_path);
+  ret = bind (fd, (struct sockaddr *)&addr, sizeof addr);
+  g_assert_cmpint (ret, ==, 0);
+  g_remove (addr.sun_path);
+#endif
+}
+
 static void
 test_unix_from_fd (void)
 {
@@ -1336,8 +1358,17 @@ test_unix_from_fd (void)
   GSocket *s;
 
   fd = socket (AF_UNIX, SOCK_STREAM, 0);
+#ifdef G_OS_WIN32
+  if (fd == -1)
+    {
+      g_test_skip ("AF_UNIX not supported on this Windows system.");
+      return;
+    }
+#endif
   g_assert_cmpint (fd, !=, -1);
 
+  bind_win32_unixfd (fd);
+
   error = NULL;
   s = g_socket_new_from_fd (fd, &error);
   g_assert_no_error (error);
@@ -1356,8 +1387,17 @@ test_unix_connection (void)
   GSocketConnection *c;
 
   fd = socket (AF_UNIX, SOCK_STREAM, 0);
+#ifdef G_OS_WIN32
+  if (fd == -1)
+    {
+      g_test_skip ("AF_UNIX not supported on this Windows system.");
+      return;
+    }
+#endif
   g_assert_cmpint (fd, !=, -1);
 
+  bind_win32_unixfd (fd);
+
   error = NULL;
   s = g_socket_new_from_fd (fd, &error);
   g_assert_no_error (error);
@@ -1367,6 +1407,7 @@ test_unix_connection (void)
   g_object_unref (s);
 }
 
+#ifdef G_OS_UNIX
 static GSocketConnection *
 create_connection_for_fd (int fd)
 {
@@ -1466,6 +1507,7 @@ test_unix_connection_ancillary_data (void)
    * g_unix_connection_receive_credentials().
    */
 }
+#endif
 
 static gboolean
 postmortem_source_cb (GSocket      *socket,
@@ -1490,6 +1532,14 @@ test_source_postmortem (void)
   gboolean callback_visited = FALSE;
 
   socket = g_socket_new (G_SOCKET_FAMILY_UNIX, G_SOCKET_TYPE_STREAM, G_SOCKET_PROTOCOL_DEFAULT, &error);
+#ifdef G_OS_WIN32
+  if (error)
+    {
+      g_test_skip_printf ("AF_UNIX not supported on this Windows system: %s", error->message);
+      g_clear_error (&error);
+      return;
+    }
+#endif
   g_assert_no_error (error);
 
   context = g_main_context_new ();
@@ -1513,8 +1563,6 @@ test_source_postmortem (void)
   g_main_context_unref (context);
 }
 
-#endif /* G_OS_UNIX */
-
 static void
 test_reuse_tcp (void)
 {
@@ -2076,22 +2124,145 @@ client_setup_thread (gpointer user_data)
   return NULL;
 }
 
-#ifdef G_OS_UNIX
+#ifdef G_OS_WIN32
+/*
+ * _g_win32_socketpair:
+ *
+ * Create a pair of connected sockets, similar to POSIX/BSD socketpair().
+ *
+ * Windows does not (yet) provide a socketpair() function. However, since the
+ * introduction of AF_UNIX sockets, it is possible to implement a fairly close
+ * function.
+ */
+static gint
+_g_win32_socketpair (gint            domain,
+                     gint            type,
+                     gint            protocol,
+                     gint            sv[2])
+{
+  struct sockaddr_un addr = { 0, };
+  socklen_t socklen;
+  SOCKET listener = INVALID_SOCKET;
+  SOCKET client = INVALID_SOCKET;
+  SOCKET server = INVALID_SOCKET;
+  gchar *path = NULL;
+  int tmpfd, rv = -1;
+  u_long arg, br;
+
+  g_return_val_if_fail (sv != NULL, -1);
+
+  addr.sun_family = AF_UNIX;
+  socklen = sizeof (addr);
+
+  tmpfd = g_file_open_tmp (NULL, &path, NULL);
+  if (tmpfd == -1)
+    {
+      WSASetLastError (WSAEACCES);
+      goto out;
+    }
+
+  g_close (tmpfd, NULL);
+
+  if (strlen (path) >= sizeof (addr.sun_path))
+    {
+      WSASetLastError (WSAEACCES);
+      goto out;
+    }
+
+  strncpy (addr.sun_path, path, sizeof (addr.sun_path) - 1);
+
+  listener = socket (domain, type, protocol);
+  if (listener == INVALID_SOCKET)
+    goto out;
+
+  if (DeleteFile (path) == 0)
+    {
+      if (GetLastError () != ERROR_FILE_NOT_FOUND)
+        goto out;
+    }
+
+  if (bind (listener, (struct sockaddr *) &addr, socklen) == SOCKET_ERROR)
+    goto out;
+
+  if (listen (listener, 1) == SOCKET_ERROR)
+    goto out;
+
+  client = socket (domain, type, protocol);
+  if (client == INVALID_SOCKET)
+    goto out;
+
+  arg = 1;
+  if (ioctlsocket (client, FIONBIO, &arg) == SOCKET_ERROR)
+    goto out;
+
+  if (connect (client, (struct sockaddr *) &addr, socklen) == SOCKET_ERROR &&
+      WSAGetLastError () != WSAEWOULDBLOCK)
+    goto out;
+
+  server = accept (listener, NULL, NULL);
+  if (server == INVALID_SOCKET)
+    goto out;
+
+  arg = 0;
+  if (ioctlsocket (client, FIONBIO, &arg) == SOCKET_ERROR)
+    goto out;
+
+  if (WSAIoctl (server, SIO_AF_UNIX_GETPEERPID,
+                NULL, 0U,
+                &arg, sizeof (arg), &br,
+                NULL, NULL) == SOCKET_ERROR || arg != GetCurrentProcessId ())
+    {
+      WSASetLastError (WSAEACCES);
+      goto out;
+    }
+
+  sv[0] = server;
+  server = INVALID_SOCKET;
+  sv[1] = client;
+  client = INVALID_SOCKET;
+  rv = 0;
+
+ out:
+  if (listener != INVALID_SOCKET)
+    closesocket (listener);
+  if (client != INVALID_SOCKET)
+    closesocket (client);
+  if (server != INVALID_SOCKET)
+    closesocket (server);
+
+  DeleteFile (path);
+  g_free (path);
+  return rv;
+}
+#endif /* G_OS_WIN32 */
+
 static void
 test_credentials_unix_socketpair (void)
 {
   gint fds[2];
   gint status;
-  GSocket *sock;
+  GSocket *sock[2];
   GError *error = NULL;
   GCredentials *creds;
 
+#ifdef G_OS_WIN32
+  status = _g_win32_socketpair (PF_UNIX, SOCK_STREAM, 0, fds);
+  if (status != 0)
+    {
+      g_test_skip ("AF_UNIX not supported on this Windows system.");
+      return;
+    }
+#else
   status = socketpair (PF_UNIX, SOCK_STREAM, 0, fds);
+#endif
   g_assert_cmpint (status, ==, 0);
 
-  sock = g_socket_new_from_fd (fds[0], &error);
+  sock[0] = g_socket_new_from_fd (fds[0], &error);
+  g_assert_no_error (error);
+  sock[1] = g_socket_new_from_fd (fds[1], &error);
+  g_assert_no_error (error);
 
-  creds = g_socket_get_credentials (sock, &error);
+  creds = g_socket_get_credentials (sock[0], &error);
   if (creds != NULL)
     {
       gchar *str = g_credentials_to_string (creds);
@@ -2106,11 +2277,10 @@ test_credentials_unix_socketpair (void)
       g_clear_error (&error);
     }
 
-  g_object_unref (sock);
-  close (fds[1]);
+  g_object_unref (sock[0]);
+  g_object_unref (sock[1]);
 }
 #endif
-#endif
 
 int
 main (int   argc,
@@ -2151,12 +2321,12 @@ main (int   argc,
   g_test_add_func ("/socket/timed_wait", test_timed_wait);
   g_test_add_func ("/socket/fd_reuse", test_fd_reuse);
   g_test_add_func ("/socket/address", test_sockaddr);
-#ifdef G_OS_UNIX
   g_test_add_func ("/socket/unix-from-fd", test_unix_from_fd);
   g_test_add_func ("/socket/unix-connection", test_unix_connection);
+#ifdef G_OS_UNIX
   g_test_add_func ("/socket/unix-connection-ancillary-data", test_unix_connection_ancillary_data);
-  g_test_add_func ("/socket/source-postmortem", test_source_postmortem);
 #endif
+  g_test_add_func ("/socket/source-postmortem", test_source_postmortem);
   g_test_add_func ("/socket/reuse/tcp", test_reuse_tcp);
   g_test_add_func ("/socket/reuse/udp", test_reuse_udp);
   g_test_add_data_func ("/socket/get_available/datagram", GUINT_TO_POINTER (G_SOCKET_TYPE_DATAGRAM),
@@ -2173,10 +2343,8 @@ main (int   argc,
 #if G_CREDENTIALS_SUPPORTED
   g_test_add_func ("/socket/credentials/tcp_client", test_credentials_tcp_client);
   g_test_add_func ("/socket/credentials/tcp_server", test_credentials_tcp_server);
-#ifdef G_OS_UNIX
   g_test_add_func ("/socket/credentials/unix_socketpair", test_credentials_unix_socketpair);
 #endif
-#endif
 
   return g_test_run();
 }
index a52ade7..082f0db 100644 (file)
@@ -4,6 +4,17 @@
 #include <stdlib.h>
 #include <gio/gio.h>
 
+static gboolean
+skip_win32 (void)
+{
+#ifdef G_OS_WIN32
+  g_test_skip ("FIXME, test is broken on win32");
+  return TRUE;
+#else
+  return FALSE;
+#endif
+}
+
 /* These tests were written for the inotify implementation.
  * Other implementations may require slight adjustments in
  * the tests, e.g. the length of timeouts
@@ -361,6 +372,9 @@ test_atomic_replace (Fixture       *fixture,
   GError *error = NULL;
   TestData data;
 
+  if (skip_win32 ())
+    return;
+
   data.step = 0;
   data.events = NULL;
 
@@ -466,6 +480,9 @@ test_file_changes (Fixture       *fixture,
   GError *error = NULL;
   TestData data;
 
+  if (skip_win32 ())
+    return;
+
   data.step = 0;
   data.events = NULL;
 
@@ -583,6 +600,9 @@ test_dir_monitor (Fixture       *fixture,
   GError *error = NULL;
   TestData data;
 
+  if (skip_win32 ())
+    return;
+
   data.step = 0;
   data.events = NULL;
 
@@ -680,6 +700,9 @@ test_dir_non_existent (Fixture       *fixture,
   TestData data;
   GError *error = NULL;
 
+  if (skip_win32 ())
+    return;
+
   data.step = 0;
   data.events = NULL;
 
@@ -789,6 +812,9 @@ test_cross_dir_moves (Fixture       *fixture,
   GError *error = NULL;
   TestData data[2];
 
+  if (skip_win32 ())
+    return;
+
   data[0].step = 0;
   data[0].events = NULL;
 
@@ -960,6 +986,9 @@ test_file_hard_links (Fixture       *fixture,
 
   g_test_bug ("https://bugzilla.gnome.org/show_bug.cgi?id=755721");
 
+  if (skip_win32 ())
+    return;
+
 #ifdef HAVE_LINK
   g_test_message ("Running with hard link tests");
 #else  /* if !HAVE_LINK */
@@ -1007,6 +1036,57 @@ test_file_hard_links (Fixture       *fixture,
   g_object_unref (data.output_stream);
 }
 
+static void
+test_finalize_in_callback (Fixture       *fixture,
+                           gconstpointer  user_data)
+{
+  GFile *file = NULL;
+  guint i;
+
+  g_test_summary ("Test that finalization of a GFileMonitor in one of its "
+                  "callbacks doesn’t cause a deadlock.");
+  g_test_bug ("https://gitlab.gnome.org/GNOME/glib/-/issues/1941");
+
+  file = g_file_get_child (fixture->tmp_dir, "race-file");
+
+  for (i = 0; i < 50; i++)
+    {
+      GFileMonitor *monitor = NULL;
+      GError *local_error = NULL;
+
+      /* Monitor the file. */
+      monitor = g_file_monitor_file (file, G_FILE_MONITOR_NONE, NULL, &local_error);
+      g_assert_no_error (local_error);
+      g_assert_nonnull (monitor);
+
+      /* Create the file. */
+      g_file_replace_contents (file, "hello", 5, NULL, FALSE,
+                               G_FILE_CREATE_NONE, NULL, NULL, &local_error);
+      g_assert_no_error (local_error);
+
+      /* Immediately drop the last ref to the monitor in the hope that this
+       * happens in the middle of the critical section in
+       * g_file_monitor_source_handle_event(), so that any cleanup at the end
+       * of that function is done with a now-finalised file monitor. */
+      g_object_unref (monitor);
+
+      /* Re-create the monitor and do the same again for deleting the file, to
+       * give a second chance at hitting the race condition. */
+      monitor = g_file_monitor_file (file, G_FILE_MONITOR_NONE, NULL, &local_error);
+      g_assert_no_error (local_error);
+      g_assert_nonnull (monitor);
+
+      /* Delete the file. */
+      g_file_delete (file, NULL, &local_error);
+      g_assert_no_error (local_error);
+
+      /* Drop the ref again. */
+      g_object_unref (monitor);
+    }
+
+  g_object_unref (file);
+}
+
 int
 main (int argc, char *argv[])
 {
@@ -1018,6 +1098,7 @@ main (int argc, char *argv[])
   g_test_add ("/monitor/dir-not-existent", Fixture, NULL, setup, test_dir_non_existent, teardown);
   g_test_add ("/monitor/cross-dir-moves", Fixture, NULL, setup, test_cross_dir_moves, teardown);
   g_test_add ("/monitor/file/hard-links", Fixture, NULL, setup, test_file_hard_links, teardown);
+  g_test_add ("/monitor/finalize-in-callback", Fixture, NULL, setup, test_finalize_in_callback, teardown);
 
   return g_test_run ();
 }
index 2995b10..bae5823 100644 (file)
@@ -559,7 +559,7 @@ dns_names (void)
   g_assert_cmpuint (actual->len, ==, 1);
   g_assert_true (g_ptr_array_find_with_equal_func (actual, expected, (GEqualFunc)g_bytes_equal, NULL));
 
-  g_ptr_array_free (actual, FALSE);
+  g_ptr_array_unref (actual);
   g_bytes_unref (expected);
   g_object_unref (cert);
 }
@@ -586,6 +586,45 @@ ip_addresses (void)
   g_object_unref (cert);
 }
 
+static void
+from_pkcs12 (void)
+{
+  GTlsCertificate *cert;
+  GError *error = NULL;
+  const guint8 data[1] = { 0 };
+
+  /* This simply fails because our test backend doesn't support this
+   * property. This reflects using a backend that doesn't support it.
+   * The real test lives in glib-networking. */
+  cert = g_tls_certificate_new_from_pkcs12 (data, 1, NULL, &error);
+
+  g_assert_null (cert);
+  g_assert_error (error, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED);
+  g_error_free (error);
+}
+
+static void
+from_pkcs12_file (void)
+{
+  GTlsCertificate *cert;
+  GError *error = NULL;
+  char *path = g_test_build_filename (G_TEST_DIST, "cert-tests", "key-cert-password-123.p12", NULL);
+
+  /* Fails on our test backend, see from_pkcs12() above. */
+  cert = g_tls_certificate_new_from_file_with_password (path, "123", &error);
+  g_assert_null (cert);
+  g_assert_error (error, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED);
+  g_clear_error (&error);
+
+  /* Just for coverage. */
+  cert = g_tls_certificate_new_from_file (path, &error);
+  g_assert_null (cert);
+  g_assert_error (error, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED);
+  g_error_free (error);
+
+  g_free (path);
+}
+
 int
 main (int   argc,
       char *argv[])
@@ -656,6 +695,10 @@ main (int   argc,
                    from_pkcs11_uri);
   g_test_add_func ("/tls-certificate/pkcs11-uri-unsupported",
                    from_unsupported_pkcs11_uri);
+  g_test_add_func ("/tls-certificate/from_pkcs12",
+                   from_pkcs12);
+  g_test_add_func ("/tls-certificate/from_pkcs12_file",
+                   from_pkcs12_file);
   g_test_add_func ("/tls-certificate/not-valid-before",
                    not_valid_before);
   g_test_add_func ("/tls-certificate/not-valid-after",
index b471246..f2ab547 100644 (file)
@@ -92,7 +92,7 @@ g_win32_fs_monitor_handle_event (GWin32FSMonitorPrivate   *monitor,
           monitor->pfni_prev->Action == FILE_ACTION_RENAMED_OLD_NAME)
         {
           /* don't bother sending events, was already sent (rename) */
-          fme = -1;
+          fme = (GFileMonitorEvent) -1;
         }
       else
         fme = G_FILE_MONITOR_EVENT_MOVED_IN;
@@ -104,7 +104,7 @@ g_win32_fs_monitor_handle_event (GWin32FSMonitorPrivate   *monitor,
       break;
     }
 
-  if (fme != -1)
+  if (fme != (GFileMonitorEvent) -1)
     return g_file_monitor_source_handle_event (monitor->fms,
                                                fme,
                                                filename,
index 5b8dcfe..e73c876 100644 (file)
@@ -546,7 +546,7 @@ g_winhttp_file_query_info (GFile                *file,
                                NULL))
     {
       gint64 cl;
-      int n;
+      size_t n;
       const char *gint64_format = "%"G_GINT64_FORMAT"%n";
       wchar_t *gint64_format_w = g_utf8_to_utf16 (gint64_format, -1, NULL, NULL, NULL);
 
index 03feaf9..4d5f514 100644 (file)
@@ -165,7 +165,7 @@ g_winhttp_vfs_get_file_for_uri (GVfs       *vfs,
                                 const char *uri)
 {
   GWinHttpVfs *winhttp_vfs = G_WINHTTP_VFS (vfs);
-  int i;
+  gsize i;
   GFile *ret = NULL;
 
   /* If it matches one of "our" schemes, handle it */
@@ -192,7 +192,7 @@ g_winhttp_vfs_get_supported_uri_schemes (GVfs *vfs)
 {
   GWinHttpVfs *winhttp_vfs = G_WINHTTP_VFS (vfs);
   const gchar * const *wrapped_vfs_uri_schemes = g_vfs_get_supported_uri_schemes (winhttp_vfs->wrapped_vfs);
-  int i, n;
+  gsize i, n;
   const gchar **retval;
 
   n = 0;
index d107f71..4c8a552 100644 (file)
@@ -13,4 +13,5 @@ xdgmime_lib = static_library('xdgmime',
   sources : xdgmime_sources,
   include_directories : [configinc],
   pic : true,
-  c_args : [ '-DXDG_PREFIX=_gio_xdg' ] + glib_hidden_visibility_args)
+  c_args : [ '-DHAVE_CONFIG_H',
+             '-DXDG_PREFIX=_gio_xdg' ] + glib_hidden_visibility_args)
index 9bb93f7..9ab6760 100644 (file)
  * 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/>.
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
  */
 
-#include "config.h"
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
 
 #include "xdgmime.h"
 #include "xdgmimeint.h"
 #include <unistd.h>
 #include <assert.h>
 
+#ifndef S_ISREG
+#define S_ISREG(m) (((m) & _S_IFMT) == _S_IFREG)
+#endif
+
 typedef struct XdgDirTimeList XdgDirTimeList;
 typedef struct XdgCallbackList XdgCallbackList;
 
@@ -134,7 +142,8 @@ xdg_dir_time_list_free (XdgDirTimeList *list)
 }
 
 static int
-xdg_mime_init_from_directory (const char *directory)
+xdg_mime_init_from_directory (const char *directory,
+                              void       *user_data)
 {
   char *file_name;
   struct stat st;
@@ -400,10 +409,11 @@ xdg_check_file (const char *file_path,
 
 static int
 xdg_check_dir (const char *directory,
-              int        *invalid_dir_list)
+              void       *user_data)
 {
   int invalid, exists;
   char *file_name;
+  int* invalid_dir_list = user_data;
 
   assert (directory != NULL);
 
@@ -458,8 +468,7 @@ xdg_check_dirs (void)
   for (list = dir_time_list; list; list = list->next)
     list->checked = XDG_CHECKED_UNCHECKED;
 
-  xdg_run_command_on_dirs ((XdgDirectoryFunc) xdg_check_dir,
-                          &invalid_dir_list);
+  xdg_run_command_on_dirs (xdg_check_dir, &invalid_dir_list);
 
   if (invalid_dir_list)
     return TRUE;
@@ -515,8 +524,7 @@ xdg_mime_init (void)
       icon_list = _xdg_mime_icon_list_new ();
       generic_icon_list = _xdg_mime_icon_list_new ();
 
-      xdg_run_command_on_dirs ((XdgDirectoryFunc) xdg_mime_init_from_directory,
-                              NULL);
+      xdg_run_command_on_dirs (xdg_mime_init_from_directory, NULL);
 
       need_reread = FALSE;
     }
@@ -549,8 +557,6 @@ xdg_mime_get_mime_type_for_data (const void *data,
   return _xdg_binary_or_text_fallback(data, len);
 }
 
-#ifdef NOT_USED_IN_GIO
-
 const char *
 xdg_mime_get_mime_type_for_file (const char  *file_name,
                                  struct stat *statbuf)
@@ -621,13 +627,13 @@ xdg_mime_get_mime_type_for_file (const char  *file_name,
   mime_type = _xdg_mime_magic_lookup_data (global_magic, data, bytes_read, NULL,
                                           mime_types, n);
 
+  if (!mime_type)
+    mime_type = _xdg_binary_or_text_fallback (data, bytes_read);
+
   free (data);
   fclose (file);
 
-  if (mime_type)
-    return mime_type;
-
-  return _xdg_binary_or_text_fallback(data, bytes_read);
+  return mime_type;
 }
 
 const char *
@@ -646,8 +652,6 @@ xdg_mime_get_mime_type_from_file_name (const char *file_name)
     return XDG_MIME_TYPE_UNKNOWN;
 }
 
-#endif
-
 int
 xdg_mime_get_mime_types_from_file_name (const char *file_name,
                                        const char  *mime_types[],
@@ -661,8 +665,6 @@ xdg_mime_get_mime_types_from_file_name (const char *file_name,
   return _xdg_glob_hash_lookup_file_name (global_hash, file_name, mime_types, n_mime_types);
 }
 
-#ifdef NOT_USED_IN_GIO
-
 int
 xdg_mime_is_valid_mime_type (const char *mime_type)
 {
@@ -671,8 +673,6 @@ xdg_mime_is_valid_mime_type (const char *mime_type)
   return _xdg_utf8_validate (mime_type);
 }
 
-#endif
-
 void
 xdg_mime_shutdown (void)
 {
@@ -888,19 +888,14 @@ xdg_mime_mime_type_subclass (const char *mime,
 char **
 xdg_mime_list_mime_parents (const char *mime)
 {
-  const char *umime;
   const char **parents;
   char **result;
   int i, n;
 
-  xdg_mime_init ();
-
   if (_caches)
     return _xdg_mime_cache_list_mime_parents (mime);
 
-  umime = _xdg_mime_unalias_mime_type (mime);
-
-  parents = _xdg_mime_parent_list_lookup (parent_list, umime);
+  parents = xdg_mime_get_mime_parents (mime);
 
   if (!parents)
     return NULL;
@@ -914,8 +909,6 @@ xdg_mime_list_mime_parents (const char *mime)
   return result;
 }
 
-#ifdef NOT_USED_IN_GIO
-
 const char **
 xdg_mime_get_mime_parents (const char *mime)
 {
@@ -945,7 +938,6 @@ xdg_mime_dump (void)
   _xdg_mime_cache_glob_dump ();
 }
 
-#endif
 
 /* Registers a function to be called every time the mime database reloads its files
  */
@@ -973,8 +965,6 @@ xdg_mime_register_reload_callback (XdgMimeCallback  callback,
   return callback_id - 1;
 }
 
-#ifdef NOT_USED_IN_GIO
-
 void
 xdg_mime_remove_callback (int callback_id)
 {
@@ -1000,8 +990,6 @@ xdg_mime_remove_callback (int callback_id)
     }
 }
 
-#endif
-
 const char *
 xdg_mime_get_icon (const char *mime)
 {
index b175de1..c590996 100644 (file)
@@ -20,7 +20,9 @@
  * 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/>.
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
  */
 
 
@@ -71,9 +73,9 @@ typedef void (*XdgMimeDestroy)  (void *user_data);
 #define xdg_mime_get_icon                     XDG_ENTRY(get_icon)
 #define xdg_mime_get_generic_icon             XDG_ENTRY(get_generic_icon)
 
-#define _xdg_mime_mime_type_subclass          XDG_RESERVED_ENTRY(mime_type_subclass)
 #define _xdg_mime_mime_type_equal             XDG_RESERVED_ENTRY(mime_type_equal)
-#define _xdg_mime_unalias_mime_type           XDG_RESERVED_ENTRY(unalias_mime_type)
+#define _xdg_mime_mime_type_subclass          XDG_RESERVED_ENTRY(mime_type_subclass)
+#define _xdg_mime_unalias_mime_type           XDG_RESERVED_ENTRY(unalias_mime_type)  
 #endif
 
 extern const char xdg_mime_type_unknown[];
@@ -86,17 +88,13 @@ extern const char xdg_mime_type_textplain[];
 const char  *xdg_mime_get_mime_type_for_data       (const void *data,
                                                    size_t      len,
                                                    int        *result_prio);
-#ifdef NOT_USED_IN_GIO
 const char  *xdg_mime_get_mime_type_for_file       (const char *file_name,
                                                     struct stat *statbuf);
 const char  *xdg_mime_get_mime_type_from_file_name (const char *file_name);
-#endif
 int          xdg_mime_get_mime_types_from_file_name(const char *file_name,
                                                    const char *mime_types[],
                                                    int         n_mime_types);
-#ifdef NOT_USED_IN_GIO
 int          xdg_mime_is_valid_mime_type           (const char *mime_type);
-#endif
 int          xdg_mime_mime_type_equal              (const char *mime_a,
                                                    const char *mime_b);
 int          xdg_mime_media_type_equal             (const char *mime_a,
@@ -108,24 +106,18 @@ int          xdg_mime_mime_type_subclass           (const char *mime_a,
    * instead, but notice that that function expects you to free
    * the array it returns. 
    */
-#ifdef NOT_USED_IN_GIO
 const char **xdg_mime_get_mime_parents            (const char *mime);
-#endif
 char **      xdg_mime_list_mime_parents                   (const char *mime);
 const char  *xdg_mime_unalias_mime_type                   (const char *mime);
 const char  *xdg_mime_get_icon                     (const char *mime);
 const char  *xdg_mime_get_generic_icon             (const char *mime);
 int          xdg_mime_get_max_buffer_extents       (void);
 void         xdg_mime_shutdown                     (void);
-#ifdef NOT_USED_IN_GIO
 void         xdg_mime_dump                         (void);
-#endif
 int          xdg_mime_register_reload_callback     (XdgMimeCallback  callback,
                                                    void            *data,
                                                    XdgMimeDestroy   destroy);
-#ifdef NOT_USED_IN_GIO
 void         xdg_mime_remove_callback              (int              callback_id);
-#endif
 
 void xdg_mime_set_dirs (const char * const *dirs);
 
index bf95bc0..0fc51f9 100644 (file)
  * 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/>.
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
  */
 
-#include "config.h"
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
 
 #include "xdgmimealias.h"
 #include "xdgmimeint.h"
@@ -161,8 +165,6 @@ _xdg_mime_alias_read_from_file (XdgAliasList *list,
 }
 
 
-#ifdef NOT_USED_IN_GIO
-
 void
 _xdg_mime_alias_list_dump (XdgAliasList *list)
 {
@@ -179,4 +181,4 @@ _xdg_mime_alias_list_dump (XdgAliasList *list)
     }
 }
 
-#endif
+
index 46cbc99..6e0cfff 100644 (file)
@@ -20,7 +20,9 @@
  * 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/>.
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
  */
 
 #ifndef __XDG_MIME_ALIAS_H__
@@ -44,7 +46,6 @@ XdgAliasList *_xdg_mime_alias_list_new       (void);
 void          _xdg_mime_alias_list_free      (XdgAliasList *list);
 const char   *_xdg_mime_alias_list_lookup    (XdgAliasList *list,
                                              const char  *alias);
-#ifdef NOT_USED_IN_GIO
 void          _xdg_mime_alias_list_dump      (XdgAliasList *list);
-#endif
+
 #endif /* __XDG_MIME_ALIAS_H__ */
index 769b578..234e4b4 100644 (file)
  * 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/>.
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
  */
 
-#include "config.h"
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
 
 #include <stdio.h>
 #include <stdlib.h>
@@ -39,7 +43,7 @@
 #ifdef HAVE_MMAP
 #include <sys/mman.h>
 #else
-#warning Building xdgmime without MMAP support. Binary "mime.info" cache files will not be used.
+#warning Building xdgmime without MMAP support. Binary "mime.cache" files will not be used.
 #endif
 
 #include <sys/stat.h>
 #define MAP_FAILED ((void *) -1)
 #endif
 
+#ifndef S_ISREG
+#define S_ISREG(m) (((m) & _S_IFMT) == _S_IFREG)
+#endif
+
 #define MAJOR_VERSION 1
 #define MINOR_VERSION_MIN 1
 #define MINOR_VERSION_MAX 2
@@ -117,9 +125,9 @@ _xdg_mime_cache_new_from_file (const char *file_name)
   int minor;
 
   /* Open the file and map it into memory */
-  do
+  do {
     fd = open (file_name, O_RDONLY|_O_BINARY, 0);
-  while (fd == -1 && errno == EINTR);
+  while (fd == -1 && errno == EINTR);
 
   if (fd < 0)
     return NULL;
@@ -176,7 +184,7 @@ cache_magic_matchlet_compare_to_data (XdgMimeCache *cache,
   xdg_uint32_t data_offset = GET_UINT32 (cache->buffer, offset + 16);
   xdg_uint32_t mask_offset = GET_UINT32 (cache->buffer, offset + 20);
   
-  int i, j;
+  xdg_uint32_t i, j;
 
   for (i = range_start; i < range_start + range_length; i++)
     {
@@ -199,16 +207,9 @@ cache_magic_matchlet_compare_to_data (XdgMimeCache *cache,
        }
       else
        {
-         for (j = 0; j < data_length; j++)
-           {
-             if (((unsigned char *)cache->buffer)[data_offset + j] != ((unsigned char *) data)[j + i])
-               {
-                 valid_matchlet = FALSE;
-                 break;
-               }
-           }
+         valid_matchlet = memcmp(cache->buffer + data_offset, (unsigned char *)data + i, data_length) == 0;
        }
-      
+
       if (valid_matchlet)
        return TRUE;
     }
@@ -225,7 +226,7 @@ cache_magic_matchlet_compare (XdgMimeCache *cache,
   xdg_uint32_t n_children = GET_UINT32 (cache->buffer, offset + 24);
   xdg_uint32_t child_offset = GET_UINT32 (cache->buffer, offset + 28);
 
-  int i;
+  xdg_uint32_t i;
   
   if (cache_magic_matchlet_compare_to_data (cache, offset, data, len))
     {
@@ -255,7 +256,7 @@ cache_magic_compare_to_data (XdgMimeCache *cache,
   xdg_uint32_t n_matchlets = GET_UINT32 (cache->buffer, offset + 8);
   xdg_uint32_t matchlet_offset = GET_UINT32 (cache->buffer, offset + 12);
 
-  int i;
+  xdg_uint32_t i;
 
   for (i = 0; i < n_matchlets; i++)
     {
@@ -275,15 +276,13 @@ static const char *
 cache_magic_lookup_data (XdgMimeCache *cache, 
                         const void   *data, 
                         size_t        len, 
-                        int          *prio,
-                        const char   *mime_types[],
-                        int           n_mime_types)
+                        int          *prio)
 {
   xdg_uint32_t list_offset;
   xdg_uint32_t n_entries;
   xdg_uint32_t offset;
 
-  int j, n;
+  xdg_uint32_t j;
 
   *prio = 0;
 
@@ -299,21 +298,6 @@ cache_magic_lookup_data (XdgMimeCache *cache,
                                           data, len, prio);
       if (match)
        return match;
-      else
-       {
-         xdg_uint32_t mimetype_offset;
-         const char *non_match;
-         
-         mimetype_offset = GET_UINT32 (cache->buffer, offset + 16 * j + 4);
-         non_match = cache->buffer + mimetype_offset;
-
-         for (n = 0; n < n_mime_types; n++)
-           {
-             if (mime_types[n] && 
-                 _xdg_mime_mime_type_equal (mime_types[n], non_match))
-               mime_types[n] = NULL;
-           }
-       }
     }
 
   return NULL;
@@ -428,12 +412,14 @@ cache_glob_lookup_literal (const char *file_name,
 static int
 cache_glob_lookup_fnmatch (const char *file_name,
                           MimeWeight  mime_types[],
-                          int         n_mime_types)
+                          int         n_mime_types,
+                          int         case_sensitive_check)
 {
   const char *mime_type;
   const char *ptr;
 
-  int i, j, n;
+  int i, n;
+  xdg_uint32_t j;
 
   n = 0;
   for (i = 0; _caches[i]; i++)
@@ -454,16 +440,19 @@ cache_glob_lookup_fnmatch (const char *file_name,
          xdg_uint32_t offset = GET_UINT32 (cache->buffer, list_offset + 4 + 12 * j);
          xdg_uint32_t mimetype_offset = GET_UINT32 (cache->buffer, list_offset + 4 + 12 * j + 4);
          int weight = GET_UINT32 (cache->buffer, list_offset + 4 + 12 * j + 8);
+         int case_sensitive = weight & 0x100;
          weight = weight & 0xff;
          ptr = cache->buffer + offset;
          mime_type = cache->buffer + mimetype_offset;
-
-         /* FIXME: Not UTF-8 safe */
-         if (fnmatch (ptr, file_name, 0) == 0)
+         if (case_sensitive_check || !case_sensitive)
            {
-             mime_types[n].mime = mime_type;
-             mime_types[n].weight = weight;
-             n++;
+             /* FIXME: Not UTF-8 safe */
+             if (fnmatch (ptr, file_name, 0) == 0)
+               {
+                 mime_types[n].mime = mime_type;
+                 mime_types[n].weight = weight;
+                 n++;
+               }
            }
        }
 
@@ -492,7 +481,8 @@ cache_glob_node_lookup_suffix (XdgMimeCache  *cache,
   int weight;
   int case_sensitive;
 
-  int min, max, mid, n, i;
+  xdg_uint32_t i;
+  int min, max, mid, n;
 
   character = file_name[len - 1];
 
@@ -578,8 +568,8 @@ cache_glob_lookup_suffix (const char *file_name,
       n_entries = GET_UINT32 (cache->buffer, list_offset);
       offset = GET_UINT32 (cache->buffer, list_offset + 4);
 
-      n += cache_glob_node_lookup_suffix (cache, 
-                                         n_entries, offset, 
+      n += cache_glob_node_lookup_suffix (cache,
+                                         n_entries, offset,
                                          file_name, len,
                                          ignore_case,
                                          mime_types + n,
@@ -680,14 +670,16 @@ cache_glob_lookup_file_name (const char *file_name,
   if (n < 2)
     n += cache_glob_lookup_suffix (file_name, len, TRUE, mimes + n, n_mimes - n);
 
-  free (lower_case);
-
   /* Last, try fnmatch */
+  if (n == 0)
+    n = cache_glob_lookup_fnmatch (lower_case, mimes, n_mimes, FALSE);
   if (n < 2)
-    n += cache_glob_lookup_fnmatch (file_name, mimes + n, n_mimes - n);
+    n += cache_glob_lookup_fnmatch (file_name, mimes + n, n_mimes - n, TRUE);
 
   n = filter_out_dupes (mimes, n);
 
+  free (lower_case);
+
   qsort (mimes, n, sizeof (MimeWeight), compare_mime_weight);
 
   if (n_mime_types < n)
@@ -743,8 +735,7 @@ cache_get_mime_type_for_data (const void *data,
       if (cache->buffer == NULL)
         continue;
 
-      match = cache_magic_lookup_data (cache, data, len, &prio, 
-                                      mime_types, n_mime_types);
+      match = cache_magic_lookup_data (cache, data, len, &prio);
       if (prio > priority)
        {
          priority = prio;
@@ -754,14 +745,27 @@ cache_get_mime_type_for_data (const void *data,
 
   if (result_prio)
     *result_prio = priority;
-  
+
   if (priority > 0)
-    return mime_type;
+    {
+      /* Pick glob-result R where mime_type inherits from R */
+      for (n = 0; n < n_mime_types; n++)
+        {
+          if (mime_types[n] && _xdg_mime_cache_mime_type_subclass(mime_types[n], mime_type))
+              return mime_types[n];
+        }
+      if (n == 0)
+        {
+          /* No globs: return magic match */
+          return mime_type;
+        }
+    }
 
+  /* Pick first glob result, as fallback */
   for (n = 0; n < n_mime_types; n++)
     {
       if (mime_types[n])
-       return mime_types[n];
+        return mime_types[n];
     }
 
   return NULL;
@@ -775,8 +779,6 @@ _xdg_mime_cache_get_mime_type_for_data (const void *data,
   return cache_get_mime_type_for_data (data, len, result_prio, NULL, 0);
 }
 
-#ifdef NOT_USED_IN_GIO
-
 const char *
 _xdg_mime_cache_get_mime_type_for_file (const char  *file_name,
                                        struct stat *statbuf)
@@ -844,7 +846,7 @@ _xdg_mime_cache_get_mime_type_for_file (const char  *file_name,
                                            mime_types, n);
 
   if (!mime_type)
-    mime_type = _xdg_binary_or_text_fallback(data, bytes_read);
+    mime_type = _xdg_binary_or_text_fallback (data, bytes_read);
 
   free (data);
   fclose (file);
@@ -863,8 +865,6 @@ _xdg_mime_cache_get_mime_type_from_file_name (const char *file_name)
     return XDG_MIME_TYPE_UNKNOWN;
 }
 
-#endif
-
 int
 _xdg_mime_cache_get_mime_types_from_file_name (const char *file_name,
                                               const char  *mime_types[],
@@ -905,7 +905,8 @@ _xdg_mime_cache_mime_type_subclass (const char *mime,
 {
   const char *umime, *ubase;
 
-  int i, j, min, max, med, cmp;
+  xdg_uint32_t j;
+  int i, min, max, med, cmp;
   
   umime = _xdg_mime_cache_unalias_mime_type (mime);
   ubase = _xdg_mime_cache_unalias_mime_type (base);
@@ -995,7 +996,8 @@ _xdg_mime_cache_unalias_mime_type (const char *mime)
 char **
 _xdg_mime_cache_list_mime_parents (const char *mime)
 {
-  int i, j, k, l, p;
+  int i, l, p;
+  xdg_uint32_t j, k;
   char *all_parents[128]; /* we'll stop at 128 */ 
   char **result;
 
@@ -1109,8 +1111,6 @@ _xdg_mime_cache_get_icon (const char *mime)
   return cache_lookup_icon (mime, 32);
 }
 
-#ifdef NOT_USED_IN_GIO
-
 static void
 dump_glob_node (XdgMimeCache *cache,
                xdg_uint32_t  offset,
@@ -1120,6 +1120,7 @@ dump_glob_node (XdgMimeCache *cache,
   xdg_uint32_t mime_offset;
   xdg_uint32_t n_children;
   xdg_uint32_t child_offset;
+  xdg_uint32_t k;
   int i;
 
   character = GET_UINT32 (cache->buffer, offset);
@@ -1134,15 +1135,15 @@ dump_glob_node (XdgMimeCache *cache,
   printf ("\n");
   if (child_offset)
   {
-    for (i = 0; i < n_children; i++)
-      dump_glob_node (cache, child_offset + 20 * i, depth + 1);
+    for (k = 0; k < n_children; k++)
+      dump_glob_node (cache, child_offset + 20 * k, depth + 1);
   }
 }
 
 void
 _xdg_mime_cache_glob_dump (void)
 {
-  int i, j;
+  xdg_uint32_t i, j;
   for (i = 0; _caches[i]; i++)
   {
     XdgMimeCache *cache = _caches[i];
@@ -1161,4 +1162,4 @@ _xdg_mime_cache_glob_dump (void)
   }
 }
 
-#endif
+
index 2723c53..df25b2a 100644 (file)
@@ -19,7 +19,9 @@
  * 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/>.
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
  */
 
 #ifndef __XDG_MIME_CACHE_H__
@@ -56,16 +58,12 @@ void          _xdg_mime_cache_unref         (XdgMimeCache *cache);
 const char  *_xdg_mime_cache_get_mime_type_for_data       (const void *data,
                                                           size_t      len,
                                                           int        *result_prio);
-#ifdef NOT_USED_IN_GIO
 const char  *_xdg_mime_cache_get_mime_type_for_file       (const char  *file_name,
                                                           struct stat *statbuf);
-#endif
 int          _xdg_mime_cache_get_mime_types_from_file_name (const char *file_name,
                                                            const char  *mime_types[],
                                                            int          n_mime_types);
-#ifdef NOT_USED_IN_GIO
 const char  *_xdg_mime_cache_get_mime_type_from_file_name (const char *file_name);
-#endif
 int          _xdg_mime_cache_is_valid_mime_type           (const char *mime_type);
 int          _xdg_mime_cache_mime_type_equal              (const char *mime_a,
                                                           const char *mime_b);
@@ -78,8 +76,6 @@ const char  *_xdg_mime_cache_unalias_mime_type            (const char *mime);
 int          _xdg_mime_cache_get_max_buffer_extents       (void);
 const char  *_xdg_mime_cache_get_icon                     (const char *mime);
 const char  *_xdg_mime_cache_get_generic_icon             (const char *mime);
-#ifdef NOT_USED_IN_GIO
 void         _xdg_mime_cache_glob_dump                    (void);
-#endif
 
 #endif /* __XDG_MIME_CACHE_H__ */
index c18762e..d68435c 100644 (file)
  * 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/>.
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
  */
 
-#include "config.h"
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
 
 #include "xdgmimeglob.h"
 #include "xdgmimeint.h"
@@ -86,7 +90,7 @@ _xdg_glob_list_new (void)
   return new_element;
 }
 
-/* Frees glob_list and all of it's children */
+/* Frees glob_list and all of its children */
 static void
 _xdg_glob_list_free (XdgGlobList *glob_list)
 {
@@ -158,8 +162,6 @@ _xdg_glob_hash_node_new (void)
   return glob_hash_node;
 }
 
-#ifdef NOT_USED_IN_GIO
-
 static void
 _xdg_glob_hash_node_dump (XdgGlobHashNode *glob_hash_node,
                          int depth)
@@ -179,8 +181,6 @@ _xdg_glob_hash_node_dump (XdgGlobHashNode *glob_hash_node,
     _xdg_glob_hash_node_dump (glob_hash_node->next, depth);
 }
 
-#endif
-
 static XdgGlobHashNode *
 _xdg_glob_hash_insert_ucs4 (XdgGlobHashNode *glob_hash_node,
                            xdg_unichar_t   *text,
@@ -603,8 +603,6 @@ _xdg_glob_hash_append_glob (XdgGlobHash *glob_hash,
     }
 }
 
-#ifdef NOT_USED_IN_GIO
-
 void
 _xdg_glob_hash_dump (XdgGlobHash *glob_hash)
 {
@@ -641,7 +639,6 @@ _xdg_glob_hash_dump (XdgGlobHash *glob_hash)
     }
 }
 
-#endif
 
 void
 _xdg_mime_glob_read_from_file (XdgGlobHash *glob_hash,
index 79ccdc2..8b1fa3a 100644 (file)
@@ -20,7 +20,9 @@
  * 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/>.
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
  */
 
 #ifndef __XDG_MIME_GLOB_H__
@@ -63,8 +65,6 @@ void         _xdg_glob_hash_append_glob      (XdgGlobHash *glob_hash,
                                              int          weight,
                                              int          case_sensitive);
 XdgGlobType  _xdg_glob_determine_type        (const char  *glob);
-#ifdef NOT_USED_IN_GIO
 void         _xdg_glob_hash_dump             (XdgGlobHash *glob_hash);
-#endif
 
 #endif /* __XDG_MIME_GLOB_H__ */
index a2f4dd2..feb6c86 100644 (file)
  * 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/>.
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
  */
 
-#include "config.h"
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
 
 #include "xdgmimeicon.h"
 #include "xdgmimeint.h"
@@ -159,7 +163,6 @@ _xdg_mime_icon_read_from_file (XdgIconList *list,
            sizeof (XdgIcon), icon_entry_cmp);
 }
 
-#ifdef NOT_USED_IN_GIO
 
 void
 _xdg_mime_icon_list_dump (XdgIconList *list)
@@ -177,4 +180,4 @@ _xdg_mime_icon_list_dump (XdgIconList *list)
     }
 }
 
-#endif
+
index 6141a86..c416b3c 100644 (file)
@@ -19,7 +19,9 @@
  * 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/>.
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
  */
 
 #ifndef __XDG_MIME_ICON_H__
@@ -43,8 +45,6 @@ XdgIconList  *_xdg_mime_icon_list_new       (void);
 void          _xdg_mime_icon_list_free      (XdgIconList *list);
 const char   *_xdg_mime_icon_list_lookup    (XdgIconList *list,
                                             const char  *mime);
-#ifdef NOT_USED_IN_GIO
 void          _xdg_mime_icon_list_dump      (XdgIconList *list);
-#endif
 
 #endif /* __XDG_MIME_ICON_H__ */
index 35c3635..5e4513c 100644 (file)
  * 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/>.
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
  */
 
-#include "config.h"
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
 
 #include "xdgmimeint.h"
 #include <ctype.h>
@@ -189,7 +193,7 @@ const char *
 _xdg_binary_or_text_fallback(const void *data, size_t len)
 {
   unsigned char *chardata;
-  int i;
+  size_t i;
 
   chardata = (unsigned char *) data;
   for (i = 0; i < 128 && i < len; ++i)
index c927013..9a8256d 100644 (file)
@@ -20,7 +20,9 @@
  * 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/>.
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
  */
 
 #ifndef __XDG_MIME_INT_H__
index ea98665..dcee0fd 100644 (file)
  * 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/>.
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
  */
 
-#include "config.h"
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
 
 #include <assert.h>
 #include "xdgmimemagic.h"
@@ -318,7 +322,7 @@ _xdg_mime_magic_parse_magic_line (FILE              *magic_file,
   int c;
   int end_of_file;
   int indent = 0;
-  int bytes_read;
+  size_t bytes_read;
 
   assert (magic_file != NULL);
 
@@ -410,7 +414,7 @@ _xdg_mime_magic_parse_magic_line (FILE              *magic_file,
       return XDG_MIME_MAGIC_ERROR;
     }
   bytes_read = fread (matchlet->value, 1, matchlet->value_length, magic_file);
-  if (bytes_read != matchlet->value_length)
+  if (bytes_read != (size_t) matchlet->value_length)
     {
       _xdg_mime_magic_matchlet_free (matchlet);
       if (feof (magic_file))
@@ -430,7 +434,7 @@ _xdg_mime_magic_parse_magic_line (FILE              *magic_file,
          return XDG_MIME_MAGIC_ERROR;
        }
       bytes_read = fread (matchlet->mask, 1, matchlet->value_length, magic_file);
-      if (bytes_read != matchlet->value_length)
+      if (bytes_read != (size_t) matchlet->value_length)
        {
          _xdg_mime_magic_matchlet_free (matchlet);
          if (feof (magic_file))
@@ -468,7 +472,7 @@ _xdg_mime_magic_parse_magic_line (FILE              *magic_file,
          _xdg_mime_magic_matchlet_free (matchlet);
          return XDG_MIME_MAGIC_EOF;
        }
-      if (matchlet->range_length == -1)
+      if (matchlet->range_length == (unsigned int) -1)
        {
          _xdg_mime_magic_matchlet_free (matchlet);
          return XDG_MIME_MAGIC_ERROR;
@@ -483,7 +487,7 @@ _xdg_mime_magic_parse_magic_line (FILE              *magic_file,
       if (matchlet->word_size > 1)
        {
 #if LITTLE_ENDIAN
-         int i;
+         unsigned int i;
 #endif
          if (matchlet->value_length % matchlet->word_size != 0)
            {
@@ -529,7 +533,7 @@ _xdg_mime_magic_matchlet_compare_to_data (XdgMimeMagicMatchlet *matchlet,
                                          const void           *data,
                                          size_t                len)
 {
-  int i, j;
+  unsigned int i, j;
   for (i = matchlet->offset; i < matchlet->offset + matchlet->range_length; i++)
     {
       int valid_matchlet = TRUE;
index c990ace..eb06a81 100644 (file)
@@ -20,7 +20,9 @@
  * 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/>.
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
  */
 
 #ifndef __XDG_MIME_MAGIC_H__
index b06b749..89b48fc 100644 (file)
  * 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/>.
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
  */
 
-#include "config.h"
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
 
 #include "xdgmimeparent.h"
 #include "xdgmimeint.h"
@@ -196,7 +200,6 @@ _xdg_mime_parent_read_from_file (XdgParentList *list,
            sizeof (XdgMimeParents), &parent_entry_cmp);
 }
 
-#ifdef NOT_USED_IN_GIO
 
 void         
 _xdg_mime_parent_list_dump (XdgParentList *list)
@@ -214,4 +217,4 @@ _xdg_mime_parent_list_dump (XdgParentList *list)
     }
 }
 
-#endif
+
index e3cdad5..29f43bc 100644 (file)
@@ -20,7 +20,9 @@
  * 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/>.
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
  */
 
 #ifndef __XDG_MIME_PARENT_H__
@@ -44,8 +46,6 @@ XdgParentList *_xdg_mime_parent_list_new       (void);
 void           _xdg_mime_parent_list_free      (XdgParentList *list);
 const char   **_xdg_mime_parent_list_lookup    (XdgParentList *list,
                                                const char    *mime);
-#ifdef NOT_USED_IN_GIO
 void           _xdg_mime_parent_list_dump      (XdgParentList *list);
-#endif
 
 #endif /* __XDG_MIME_PARENT_H__ */
index 6dc3d2c..79faa9f 100644 (file)
--- a/glib.supp
+++ b/glib.supp
        fun:g_get_user_data_dir
 }
 
+# g_get_home_dir() caches a one-time allocation
+{
+       g_get_home_dir
+       Memcheck:Leak
+       match-leak-kinds:reachable
+       fun:malloc
+       ...
+       fun:g_build_home_dir
+       fun:g_get_home_dir
+}
+
 # gdesktopappinfo.c caches a one-time allocation global table of @desktop_file_dirs.
 {
        desktop_file_dirs_malloc
index d09c1f1..5f0979b 100644 (file)
@@ -463,7 +463,8 @@ main (int   argc,
   
   if (argc < 3)
     {
-      g_warning ("Usage: %s filename prefix1 [prefix2 ...]", argv[0]);
+      g_warning ("Usage: %s filename prefix1 [prefix2 ...]",
+                 (argc > 0) ? argv[0] : "gcompletion");
       return 1;
     }
   
index e7e68fb..be98a74 100644 (file)
@@ -97,7 +97,7 @@
  * This macro is defined if POSIX style threads are used.
  *
  * Deprecated:2.32:POSIX threads are in use on all non-Windows systems.
- *                 Use G_OS_WIN32 to detect Windows.
+ *   Use %G_OS_WIN32 to detect Windows.
  */
 
 /**
  *
  * This macro is defined if Windows style threads are used.
  *
- * Deprecated:2.32:Use G_OS_WIN32 to detect Windows.
+ * Deprecated:2.32:Use %G_OS_WIN32 to detect Windows.
  */
 
 
@@ -463,7 +463,7 @@ g_once_init_enter_impl (volatile gsize *location)
  * @mutex: a #GStaticMutex to be initialized.
  *
  * Initializes @mutex.
- * Alternatively you can initialize it with #G_STATIC_MUTEX_INIT.
+ * Alternatively you can initialize it with %G_STATIC_MUTEX_INIT.
  *
  * Deprecated: 2.32: Use g_mutex_init()
  */
@@ -649,7 +649,7 @@ g_static_mutex_free (GStaticMutex* mutex)
  *
  * A #GStaticRecMutex must be initialized with this function before it
  * can be used. Alternatively you can initialize it with
- * #G_STATIC_REC_MUTEX_INIT.
+ * %G_STATIC_REC_MUTEX_INIT.
  *
  * Deprecated: 2.32: Use g_rec_mutex_init()
  */
@@ -949,7 +949,7 @@ g_static_rec_mutex_free (GStaticRecMutex *mutex)
  *
  * A #GStaticRWLock must be initialized with this function before it
  * can be used. Alternatively you can initialize it with
- * #G_STATIC_RW_LOCK_INIT.
+ * %G_STATIC_RW_LOCK_INIT.
  *
  * Deprecated: 2.32: Use g_rw_lock_init() instead
  */
@@ -1295,7 +1295,7 @@ GPrivate static_private_private = G_PRIVATE_INIT (g_static_private_cleanup);
  * @private_key: a #GStaticPrivate to be initialized
  *
  * Initializes @private_key. Alternatively you can initialize it with
- * #G_STATIC_PRIVATE_INIT.
+ * %G_STATIC_PRIVATE_INIT.
  */
 void
 g_static_private_init (GStaticPrivate *private_key)
index 1194a2d..9d6321b 100644 (file)
  * gint:
  *
  * Corresponds to the standard C int type.
- * Values of this type can range from #G_MININT to #G_MAXINT.
+ * Values of this type can range from %G_MININT to %G_MAXINT.
  */
 
 /**
  * guint:
  *
  * Corresponds to the standard C unsigned int type.
- * Values of this type can range from 0 to #G_MAXUINT.
+ * Values of this type can range from 0 to %G_MAXUINT.
  */
 
 /**
  * gshort:
  *
  * Corresponds to the standard C short type.
- * Values of this type can range from #G_MINSHORT to #G_MAXSHORT.
+ * Values of this type can range from %G_MINSHORT to %G_MAXSHORT.
  */
 
 /**
  * gushort:
  *
  * Corresponds to the standard C unsigned short type.
- * Values of this type can range from 0 to #G_MAXUSHORT.
+ * Values of this type can range from 0 to %G_MAXUSHORT.
  */
 
 /**
  * glong:
  *
  * Corresponds to the standard C long type.
- * Values of this type can range from #G_MINLONG to #G_MAXLONG.
+ * Values of this type can range from %G_MINLONG to %G_MAXLONG.
  */
 
 /**
  * gulong:
  *
  * Corresponds to the standard C unsigned long type.
- * Values of this type can range from 0 to #G_MAXULONG.
+ * Values of this type can range from 0 to %G_MAXULONG.
  */
 
 /**
  * gint8:
  *
  * A signed integer guaranteed to be 8 bits on all platforms.
- * Values of this type can range from #G_MININT8 (= -128) to
- * #G_MAXINT8 (= 127).
+ * Values of this type can range from %G_MININT8 (= -128) to
+ * %G_MAXINT8 (= 127).
  */
 
 /**
  * guint8:
  *
  * An unsigned integer guaranteed to be 8 bits on all platforms.
- * Values of this type can range from 0 to #G_MAXUINT8 (= 255).
+ * Values of this type can range from 0 to %G_MAXUINT8 (= 255).
  */
 
 /**
  * gint16:
  *
  * A signed integer guaranteed to be 16 bits on all platforms.
- * Values of this type can range from #G_MININT16 (= -32,768) to
- * #G_MAXINT16 (= 32,767).
+ * Values of this type can range from %G_MININT16 (= -32,768) to
+ * %G_MAXINT16 (= 32,767).
  *
  * To print or scan values of this type, use
  * %G_GINT16_MODIFIER and/or %G_GINT16_FORMAT.
  * guint16:
  *
  * An unsigned integer guaranteed to be 16 bits on all platforms.
- * Values of this type can range from 0 to #G_MAXUINT16 (= 65,535).
+ * Values of this type can range from 0 to %G_MAXUINT16 (= 65,535).
  *
  * To print or scan values of this type, use
  * %G_GINT16_MODIFIER and/or %G_GUINT16_FORMAT.
  * G_GUINT16_FORMAT:
  *
  * This is the platform dependent conversion specifier for scanning
- * and printing values of type #guint16. See also #G_GINT16_FORMAT
+ * and printing values of type #guint16. See also %G_GINT16_FORMAT
  */
 
 /**
  * gint32:
  *
  * A signed integer guaranteed to be 32 bits on all platforms.
- * Values of this type can range from #G_MININT32 (= -2,147,483,648)
- * to #G_MAXINT32 (= 2,147,483,647).
+ * Values of this type can range from %G_MININT32 (= -2,147,483,648)
+ * to %G_MAXINT32 (= 2,147,483,647).
  *
  * To print or scan values of this type, use
  * %G_GINT32_MODIFIER and/or %G_GINT32_FORMAT.
  *
  * The platform dependent length modifier for conversion specifiers
  * for scanning and printing values of type #gint32 or #guint32. It
- * is a string literal. See also #G_GINT16_MODIFIER.
+ * is a string literal. See also %G_GINT16_MODIFIER.
  *
  * Since: 2.4
  */
  * G_GINT32_FORMAT:
  *
  * This is the platform dependent conversion specifier for scanning
- * and printing values of type #gint32. See also #G_GINT16_FORMAT.
+ * and printing values of type #gint32. See also %G_GINT16_FORMAT.
  */
 
 /**
  * guint32:
  *
  * An unsigned integer guaranteed to be 32 bits on all platforms.
- * Values of this type can range from 0 to #G_MAXUINT32 (= 4,294,967,295).
+ * Values of this type can range from 0 to %G_MAXUINT32 (= 4,294,967,295).
  *
  * To print or scan values of this type, use
  * %G_GINT32_MODIFIER and/or %G_GUINT32_FORMAT.
  * G_GUINT32_FORMAT:
  *
  * This is the platform dependent conversion specifier for scanning
- * and printing values of type #guint32. See also #G_GINT16_FORMAT.
+ * and printing values of type #guint32. See also %G_GINT16_FORMAT.
  */
 
 /**
  * gint64:
  *
  * A signed integer guaranteed to be 64 bits on all platforms.
- * Values of this type can range from #G_MININT64
- * (= -9,223,372,036,854,775,808) to #G_MAXINT64
+ * Values of this type can range from %G_MININT64
+ * (= -9,223,372,036,854,775,808) to %G_MAXINT64
  * (= 9,223,372,036,854,775,807).
  *
  * To print or scan values of this type, use
  * G_GINT64_FORMAT:
  *
  * This is the platform dependent conversion specifier for scanning
- * and printing values of type #gint64. See also #G_GINT16_FORMAT.
+ * and printing values of type #gint64. See also %G_GINT16_FORMAT.
  *
  * Some platforms do not support scanning and printing 64-bit integers,
  * even though the types are supported. On such platforms %G_GINT64_FORMAT
  * guint64:
  *
  * An unsigned integer guaranteed to be 64-bits on all platforms.
- * Values of this type can range from 0 to #G_MAXUINT64
+ * Values of this type can range from 0 to %G_MAXUINT64
  * (= 18,446,744,073,709,551,615).
  *
  * To print or scan values of this type, use
  * G_GUINT64_FORMAT:
  *
  * This is the platform dependent conversion specifier for scanning
- * and printing values of type #guint64. See also #G_GINT16_FORMAT.
+ * and printing values of type #guint64. See also %G_GINT16_FORMAT.
  *
  * Some platforms do not support scanning and printing 64-bit integers,
  * even though the types are supported. On such platforms %G_GUINT64_FORMAT
  * gfloat:
  *
  * Corresponds to the standard C float type.
- * Values of this type can range from -#G_MAXFLOAT to #G_MAXFLOAT.
+ * Values of this type can range from -%G_MAXFLOAT to %G_MAXFLOAT.
  */
 
 /**
  * gdouble:
  *
  * Corresponds to the standard C double type.
- * Values of this type can range from -#G_MAXDOUBLE to #G_MAXDOUBLE.
+ * Values of this type can range from -%G_MAXDOUBLE to %G_MAXDOUBLE.
  */
 
 /**
  * This type is wide enough to hold the numeric value of a pointer,
  * so it is usually 32 bit wide on a 32-bit platform and 64 bit wide
  * on a 64-bit platform. Values of this type can range from 0 to
- * #G_MAXSIZE.
+ * %G_MAXSIZE.
  *
  * To print or scan values of this type, use
  * %G_GSIZE_MODIFIER and/or %G_GSIZE_FORMAT.
  * G_GSIZE_FORMAT:
  *
  * This is the platform dependent conversion specifier for scanning
- * and printing values of type #gsize. See also #G_GINT16_FORMAT.
+ * and printing values of type #gsize. See also %G_GINT16_FORMAT.
  *
  * Since: 2.6
  */
  *
  * A signed variant of #gsize, corresponding to the
  * ssize_t defined on most platforms.
- * Values of this type can range from #G_MINSSIZE
- * to #G_MAXSSIZE.
+ * Values of this type can range from %G_MINSSIZE
+ * to %G_MAXSSIZE.
  *
  * To print or scan values of this type, use
  * %G_GSSIZE_MODIFIER and/or %G_GSSIZE_FORMAT.
  * G_GSSIZE_FORMAT:
  *
  * This is the platform dependent conversion specifier for scanning
- * and printing values of type #gssize. See also #G_GINT16_FORMAT.
+ * and printing values of type #gssize. See also %G_GINT16_FORMAT.
  *
  * Since: 2.6
  */
  * corresponding to the POSIX type `off_t` as if compiling with
  * `_FILE_OFFSET_BITS` set to 64. #goffset is always 64 bits wide, even on
  * 32-bit architectures.
- * Values of this type can range from #G_MINOFFSET to
- * #G_MAXOFFSET.
+ * Values of this type can range from %G_MINOFFSET to
+ * %G_MAXOFFSET.
  *
  * To print or scan values of this type, use
  * %G_GOFFSET_MODIFIER and/or %G_GOFFSET_FORMAT.
  *
  * The platform dependent length modifier for conversion specifiers
  * for scanning and printing values of type #goffset. It is a string
- * literal. See also #G_GINT64_MODIFIER.
+ * literal. See also %G_GINT64_MODIFIER.
  *
  * Since: 2.20
  */
  * G_GOFFSET_FORMAT:
  *
  * This is the platform dependent conversion specifier for scanning
- * and printing values of type #goffset. See also #G_GINT64_FORMAT.
+ * and printing values of type #goffset. See also %G_GINT64_FORMAT.
  *
  * Since: 2.20
  */
  * This macro is used to insert #goffset 64-bit integer literals
  * into the source code.
  *
- * See also #G_GINT64_CONSTANT.
+ * See also G_GINT64_CONSTANT().
  *
  * Since: 2.20
  */
  * G_BYTE_ORDER:
  *
  * The host byte order.
- * This can be either #G_LITTLE_ENDIAN or #G_BIG_ENDIAN (support for
- * #G_PDP_ENDIAN may be added in future.)
+ * This can be either %G_LITTLE_ENDIAN or %G_BIG_ENDIAN (support for
+ * %G_PDP_ENDIAN may be added in future.)
  */
 
 /**
  * G_LITTLE_ENDIAN:
  *
  * Specifies one of the possible types of byte order.
- * See #G_BYTE_ORDER.
+ * See %G_BYTE_ORDER.
  */
 
 /**
  * G_BIG_ENDIAN:
  *
  * Specifies one of the possible types of byte order.
- * See #G_BYTE_ORDER.
+ * See %G_BYTE_ORDER.
  */
 
 /**
  * G_PDP_ENDIAN:
  *
  * Specifies one of the possible types of byte order
- * (currently unused). See #G_BYTE_ORDER.
+ * (currently unused). See %G_BYTE_ORDER.
  */
 
 /**
  * @title: Numerical Definitions
  * @short_description: mathematical constants, and floating point decomposition
  *
- * GLib offers mathematical constants such as #G_PI for the value of pi;
+ * GLib offers mathematical constants such as %G_PI for the value of pi;
  * many platforms have these in the C library, but some don't, the GLib
  * versions always exist.
  *
 /**
  * G_BEGIN_DECLS:
  *
- * Used (along with #G_END_DECLS) to bracket header files. If the
+ * Used (along with %G_END_DECLS) to bracket header files. If the
  * compiler in use is a C++ compiler, adds extern "C"
  * around the header.
  */
 /**
  * G_END_DECLS:
  *
- * Used (along with #G_BEGIN_DECLS) to bracket header files. If the
+ * Used (along with %G_BEGIN_DECLS) to bracket header files. If the
  * compiler in use is a C++ compiler, adds extern "C"
  * around the header.
  */
index 014a0ef..86f0d76 100644 (file)
@@ -30,6 +30,7 @@
 #endif
 
 #include <glib/gtypes.h>
+#include <string.h>
 
 #if defined(__BIONIC__) && defined (GLIB_HAVE_ALLOCA_H)
 # include <alloca.h>
@@ -94,6 +95,22 @@ G_END_DECLS
  * Returns: space for @size bytes, allocated on the stack
  */
 #define g_alloca(size)          alloca (size)
+
+/**
+ * g_alloca0:
+ * @size: number of bytes to allocate.
+ *
+ * Wraps g_alloca() and initializes allocated memory to zeroes.
+ * If @size is `0` it returns %NULL.
+ *
+ * Note that the @size argument will be evaluated multiple times.
+ *
+ * Returns: (nullable) (transfer full): space for @size bytes, allocated on the stack
+ *
+ * Since: 2.72
+ */
+#define g_alloca0(size)  ((size) == 0 ? NULL : memset (g_alloca (size), 0, (size)))
+
 /**
  * g_newa:
  * @struct_type: Type of memory chunks to be allocated
@@ -111,4 +128,18 @@ G_END_DECLS
  */
 #define g_newa(struct_type, n_structs) ((struct_type*) g_alloca (sizeof (struct_type) * (gsize) (n_structs)))
 
+/**
+ * g_newa0:
+ * @struct_type: the type of the elements to allocate.
+ * @n_structs: the number of elements to allocate.
+ *
+ * Wraps g_alloca0() in a more typesafe manner.
+ *
+ * Returns: (nullable) (transfer full): Pointer to stack space for @n_structs
+ *   chunks of type @struct_type
+ *
+ * Since: 2.72
+ */
+#define g_newa0(struct_type, n_structs)  ((struct_type*) g_alloca0 (sizeof (struct_type) * (gsize) (n_structs)))
+
 #endif /* __G_ALLOCA_H__ */
index 025747e..1ab3bee 100644 (file)
@@ -42,6 +42,7 @@
 #include "gmessages.h"
 #include "gqsort.h"
 #include "grefcount.h"
+#include "gutilsprivate.h"
 
 /**
  * SECTION:arrays
@@ -107,7 +108,7 @@ struct _GRealArray
 {
   guint8 *data;
   guint   len;
-  guint   alloc;
+  guint   elt_capacity;
   guint   elt_size;
   guint   zero_terminated : 1;
   guint   clear : 1;
@@ -150,7 +151,7 @@ struct _GRealArray
  * Returns: the element of the #GArray at the index given by @i
  */
 
-#define g_array_elt_len(array,i) ((array)->elt_size * (i))
+#define g_array_elt_len(array,i) ((gsize)(array)->elt_size * (i))
 #define g_array_elt_pos(array,i) ((array)->data + g_array_elt_len((array),(i)))
 #define g_array_elt_zero(array, pos, len)                               \
   (memset (g_array_elt_pos ((array), pos), 0,  g_array_elt_len ((array), len)))
@@ -159,7 +160,6 @@ struct _GRealArray
     g_array_elt_zero ((array), (array)->len, 1);                        \
 }G_STMT_END
 
-static guint g_nearest_pow        (guint       num) G_GNUC_CONST;
 static void  g_array_maybe_expand (GRealArray *array,
                                    guint       len);
 
@@ -181,6 +181,9 @@ g_array_new (gboolean zero_terminated,
              guint    elt_size)
 {
   g_return_val_if_fail (elt_size > 0, NULL);
+#if (UINT_WIDTH / 8) >= GLIB_SIZEOF_SIZE_T
+  g_return_val_if_fail (elt_size <= G_MAXSIZE / 2 - 1, NULL);
+#endif
 
   return g_array_sized_new (zero_terminated, clear, elt_size, 0);
 }
@@ -232,7 +235,7 @@ g_array_steal (GArray *array,
 
   rarray->data  = NULL;
   rarray->len   = 0;
-  rarray->alloc = 0;
+  rarray->elt_capacity = 0;
   return segment;
 }
 
@@ -261,12 +264,15 @@ g_array_sized_new (gboolean zero_terminated,
   GRealArray *array;
   
   g_return_val_if_fail (elt_size > 0, NULL);
+#if (UINT_WIDTH / 8) >= GLIB_SIZEOF_SIZE_T
+  g_return_val_if_fail (elt_size <= G_MAXSIZE / 2 - 1, NULL);
+#endif
 
   array = g_slice_new (GRealArray);
 
   array->data            = NULL;
   array->len             = 0;
-  array->alloc           = 0;
+  array->elt_capacity = 0;
   array->zero_terminated = (zero_terminated ? 1 : 0);
   array->clear           = (clear ? 1 : 0);
   array->elt_size        = elt_size;
@@ -471,7 +477,7 @@ array_free (GRealArray     *array,
     {
       array->data            = NULL;
       array->len             = 0;
-      array->alloc           = 0;
+      array->elt_capacity = 0;
     }
   else
     {
@@ -930,7 +936,7 @@ g_array_binary_search (GArray        *array,
 {
   gboolean result = FALSE;
   GRealArray *_array = (GRealArray *) array;
-  guint left, middle, right;
+  guint left, middle = 0, right;
   gint val;
 
   g_return_val_if_fail (_array != NULL, FALSE);
@@ -966,52 +972,36 @@ g_array_binary_search (GArray        *array,
   return result;
 }
 
-/* Returns the smallest power of 2 greater than n, or n if
- * such power does not fit in a guint
- */
-static guint
-g_nearest_pow (guint num)
-{
-  guint n = num - 1;
-
-  g_assert (num > 0);
-
-  n |= n >> 1;
-  n |= n >> 2;
-  n |= n >> 4;
-  n |= n >> 8;
-  n |= n >> 16;
-#if SIZEOF_INT == 8
-  n |= n >> 32;
-#endif
-
-  return n + 1;
-}
-
 static void
 g_array_maybe_expand (GRealArray *array,
                       guint       len)
 {
-  guint want_alloc;
+  guint max_len, want_len;
+  /* The maximum array length is derived from following constraints:
+   * - The number of bytes must fit into a gsize / 2.
+   * - The number of elements must fit into guint.
+   * - zero terminated arrays must leave space for the terminating element
+   */
+  max_len = MIN (G_MAXSIZE / 2 / array->elt_size, G_MAXUINT) - array->zero_terminated;
 
   /* Detect potential overflow */
-  if G_UNLIKELY ((G_MAXUINT - array->len) < len)
+  if G_UNLIKELY ((max_len - array->len) < len)
     g_error ("adding %u to array would overflow", len);
 
-  want_alloc = g_array_elt_len (array, array->len + len +
-                                array->zero_terminated);
-
-  if (want_alloc > array->alloc)
+  want_len = array->len + len + array->zero_terminated;
+  if (want_len > array->elt_capacity)
     {
-      want_alloc = g_nearest_pow (want_alloc);
+      gsize want_alloc = g_nearest_pow (g_array_elt_len (array, want_len));
       want_alloc = MAX (want_alloc, MIN_ARRAY_SIZE);
 
       array->data = g_realloc (array->data, want_alloc);
 
       if (G_UNLIKELY (g_mem_gc_friendly))
-        memset (array->data + array->alloc, 0, want_alloc - array->alloc);
+        memset (g_array_elt_pos (array, array->elt_capacity), 0,
+                g_array_elt_len (array, want_len - array->elt_capacity));
 
-      array->alloc = want_alloc;
+      array->elt_capacity = MIN (want_alloc / array->elt_size, G_MAXUINT);
     }
 }
 
@@ -1297,7 +1287,7 @@ g_array_copy (GArray *array)
 
   new_rarray =
     (GRealArray *) g_array_sized_new (rarray->zero_terminated, rarray->clear,
-                                      rarray->elt_size, rarray->alloc / rarray->elt_size);
+                                      rarray->elt_size, rarray->elt_capacity);
   new_rarray->len = rarray->len;
   if (rarray->len > 0)
     memcpy (new_rarray->data, rarray->data, rarray->len * rarray->elt_size);
@@ -1513,16 +1503,25 @@ static void
 g_ptr_array_maybe_expand (GRealPtrArray *array,
                           guint          len)
 {
+  guint max_len;
+
+  /* The maximum array length is derived from following constraints:
+   * - The number of bytes must fit into a gsize / 2.
+   * - The number of elements must fit into guint.
+   */
+  max_len = MIN (G_MAXSIZE / 2 / sizeof (gpointer), G_MAXUINT);
+
   /* Detect potential overflow */
-  if G_UNLIKELY ((G_MAXUINT - array->len) < len)
+  if G_UNLIKELY ((max_len - array->len) < len)
     g_error ("adding %u to array would overflow", len);
 
   if ((array->len + len) > array->alloc)
     {
       guint old_alloc = array->alloc;
-      array->alloc = g_nearest_pow (array->len + len);
-      array->alloc = MAX (array->alloc, MIN_ARRAY_SIZE);
-      array->pdata = g_realloc (array->pdata, sizeof (gpointer) * array->alloc);
+      gsize want_alloc = g_nearest_pow (sizeof (gpointer) * (array->len + len));
+      want_alloc = MAX (want_alloc, MIN_ARRAY_SIZE);
+      array->alloc = MIN (want_alloc / sizeof (gpointer), G_MAXUINT);
+      array->pdata = g_realloc (array->pdata, want_alloc);
       if (G_UNLIKELY (g_mem_gc_friendly))
         for ( ; old_alloc < array->alloc; old_alloc++)
           array->pdata [old_alloc] = NULL;
@@ -2298,7 +2297,6 @@ g_byte_array_new_take (guint8 *data,
   GRealArray *real;
 
   g_return_val_if_fail (len <= G_MAXUINT, NULL);
-
   array = g_byte_array_new ();
   real = (GRealArray *)array;
   g_assert (real->data == NULL);
@@ -2306,7 +2304,7 @@ g_byte_array_new_take (guint8 *data,
 
   real->data = data;
   real->len = len;
-  real->alloc = len;
+  real->elt_capacity = len;
 
   return array;
 }
index 5583fb0..8b2b880 100644 (file)
@@ -152,13 +152,25 @@ G_END_DECLS
     (void) (0 ? *(atomic) ^ *(atomic) : 1);                                  \
     __atomic_fetch_sub ((atomic), 1, __ATOMIC_SEQ_CST) == 1;                 \
   }))
+#if defined(glib_typeof) && defined(__cplusplus) && __cplusplus >= 201103L
+/* See comments below about equivalent g_atomic_pointer_compare_and_exchange()
+ * shenanigans for type-safety when compiling in C++ mode. */
 #define g_atomic_int_compare_and_exchange(atomic, oldval, newval) \
   (G_GNUC_EXTENSION ({                                                       \
-    gint gaicae_oldval = (oldval);                                           \
+    glib_typeof (*(atomic)) gaicae_oldval = (oldval);                        \
     G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
     (void) (0 ? *(atomic) ^ (newval) ^ (oldval) : 1);                        \
     __atomic_compare_exchange_n ((atomic), &gaicae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
   }))
+#else /* if !(defined(glib_typeof) && defined(__cplusplus) && __cplusplus >= 201103L) */
+#define g_atomic_int_compare_and_exchange(atomic, oldval, newval) \
+  (G_GNUC_EXTENSION ({                                                       \
+    gint gaicae_oldval = (oldval);                                           \
+    G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
+    (void) (0 ? *(atomic) ^ (newval) ^ (oldval) : 1);                        \
+    __atomic_compare_exchange_n ((atomic), (void *) (&(gaicae_oldval)), (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
+  }))
+#endif /* defined(glib_typeof) */
 #define g_atomic_int_add(atomic, val) \
   (G_GNUC_EXTENSION ({                                                       \
     G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gint));                     \
@@ -208,7 +220,7 @@ G_END_DECLS
     gpointer gapcae_oldval = (gpointer)(oldval);                             \
     G_STATIC_ASSERT (sizeof *(atomic) == sizeof (gpointer));                 \
     (void) (0 ? (gpointer) *(atomic) : NULL);                                \
-    __atomic_compare_exchange_n ((atomic), &gapcae_oldval, (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
+    __atomic_compare_exchange_n ((atomic), (void *) (&(gapcae_oldval)), (newval), FALSE, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST) ? TRUE : FALSE; \
   }))
 #endif /* defined(glib_typeof) */
 #define g_atomic_pointer_add(atomic, val) \
index eb9ec8d..77cef10 100644 (file)
@@ -321,7 +321,10 @@ stack_trace (const char * const *args)
   fd_set fdset;
   fd_set readset;
   struct timeval tv;
-  int sel, idx, state, line_idx;
+  int sel, idx, state;
+#ifdef USE_LLDB
+  int line_idx;
+#endif
   char buffer[BUFSIZE];
   char c;
 
@@ -382,7 +385,9 @@ stack_trace (const char * const *args)
 #endif
 
   idx = 0;
+#ifdef USE_LLDB
   line_idx = 0;
+#endif
   state = 0;
 
   while (1)
@@ -399,7 +404,10 @@ stack_trace (const char * const *args)
         {
           if (read (out_fd[0], &c, 1))
             {
+#ifdef USE_LLDB
               line_idx += 1;
+#endif
+
               switch (state)
                 {
                 case 0:
@@ -423,7 +431,9 @@ stack_trace (const char * const *args)
                       _g_fprintf (stdout, "%s", buffer);
                       state = 0;
                       idx = 0;
+#ifdef USE_LLDB
                       line_idx = 0;
+#endif
                     }
                   break;
                 default:
index 14536ec..51dfa23 100644 (file)
@@ -2217,7 +2217,7 @@ g_bookmark_file_set_title (GBookmarkFile *bookmark,
  * If @uri is %NULL, the title of @bookmark is returned.
  *
  * In the event the URI cannot be found, %NULL is returned and
- * @error is set to #G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND.
+ * @error is set to %G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND.
  *
  * Returns: (transfer full): a newly allocated string or %NULL if the specified
  *   URI cannot be found.
@@ -2302,7 +2302,7 @@ g_bookmark_file_set_description (GBookmarkFile *bookmark,
  * Retrieves the description of the bookmark for @uri.
  *
  * In the event the URI cannot be found, %NULL is returned and
- * @error is set to #G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND.
+ * @error is set to %G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND.
  *
  * Returns: (transfer full): a newly allocated string or %NULL if the specified
  *   URI cannot be found.
@@ -2382,9 +2382,9 @@ g_bookmark_file_set_mime_type (GBookmarkFile *bookmark,
  * Retrieves the MIME type of the resource pointed by @uri.
  *
  * In the event the URI cannot be found, %NULL is returned and
- * @error is set to #G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND.  In the
+ * @error is set to %G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND.  In the
  * event that the MIME type cannot be found, %NULL is returned and
- * @error is set to #G_BOOKMARK_FILE_ERROR_INVALID_VALUE.
+ * @error is set to %G_BOOKMARK_FILE_ERROR_INVALID_VALUE.
  *
  * Returns: (transfer full): a newly allocated string or %NULL if the specified
  *   URI cannot be found.
@@ -2468,9 +2468,9 @@ g_bookmark_file_set_is_private (GBookmarkFile *bookmark,
  * Gets whether the private flag of the bookmark for @uri is set.
  *
  * In the event the URI cannot be found, %FALSE is returned and
- * @error is set to #G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND.  In the
+ * @error is set to %G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND.  In the
  * event that the private flag cannot be found, %FALSE is returned and
- * @error is set to #G_BOOKMARK_FILE_ERROR_INVALID_VALUE.
+ * @error is set to %G_BOOKMARK_FILE_ERROR_INVALID_VALUE.
  *
  * Returns: %TRUE if the private flag is set, %FALSE otherwise.
  *
@@ -2577,7 +2577,7 @@ g_bookmark_file_set_added_date_time (GBookmarkFile *bookmark,
  * Gets the time the bookmark for @uri was added to @bookmark
  *
  * In the event the URI cannot be found, -1 is returned and
- * @error is set to #G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND.
+ * @error is set to %G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND.
  *
  * Returns: a timestamp
  *
@@ -2603,7 +2603,7 @@ g_bookmark_file_get_added (GBookmarkFile  *bookmark,
  * Gets the time the bookmark for @uri was added to @bookmark
  *
  * In the event the URI cannot be found, %NULL is returned and
- * @error is set to #G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND.
+ * @error is set to %G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND.
  *
  * Returns: (transfer none): a #GDateTime
  *
@@ -2710,7 +2710,7 @@ g_bookmark_file_set_modified_date_time (GBookmarkFile *bookmark,
  * Gets the time when the bookmark for @uri was last modified.
  *
  * In the event the URI cannot be found, -1 is returned and
- * @error is set to #G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND.
+ * @error is set to %G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND.
  *
  * Returns: a timestamp
  *
@@ -2736,7 +2736,7 @@ g_bookmark_file_get_modified (GBookmarkFile  *bookmark,
  * Gets the time when the bookmark for @uri was last modified.
  *
  * In the event the URI cannot be found, %NULL is returned and
- * @error is set to #G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND.
+ * @error is set to %G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND.
  *
  * Returns: (transfer none): a #GDateTime
  *
@@ -2845,7 +2845,7 @@ g_bookmark_file_set_visited_date_time (GBookmarkFile *bookmark,
  * Gets the time the bookmark for @uri was last visited.
  *
  * In the event the URI cannot be found, -1 is returned and
- * @error is set to #G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND.
+ * @error is set to %G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND.
  *
  * Returns: a timestamp.
  *
@@ -2871,7 +2871,7 @@ g_bookmark_file_get_visited (GBookmarkFile  *bookmark,
  * Gets the time the bookmark for @uri was last visited.
  *
  * In the event the URI cannot be found, %NULL is returned and
- * @error is set to #G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND.
+ * @error is set to %G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND.
  *
  * Returns: (transfer none): a #GDateTime
  *
@@ -2912,7 +2912,7 @@ g_bookmark_file_get_visited_date_time (GBookmarkFile  *bookmark,
  * the bookmark for @uri belongs to.
  *
  * In the event the URI cannot be found, %FALSE is returned and
- * @error is set to #G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND.
+ * @error is set to %G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND.
  *
  * Returns: %TRUE if @group was found.
  *
@@ -3007,9 +3007,9 @@ g_bookmark_file_add_group (GBookmarkFile *bookmark,
  * for @uri belongs to.
  *
  * In the event the URI cannot be found, %FALSE is returned and
- * @error is set to #G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND.
+ * @error is set to %G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND.
  * In the event no group was defined, %FALSE is returned and
- * @error is set to #G_BOOKMARK_FILE_ERROR_INVALID_VALUE.
+ * @error is set to %G_BOOKMARK_FILE_ERROR_INVALID_VALUE.
  *
  * Returns: %TRUE if @group was successfully removed.
  *
@@ -3124,7 +3124,7 @@ g_bookmark_file_set_groups (GBookmarkFile  *bookmark,
  * Retrieves the list of group names of the bookmark for @uri.
  *
  * In the event the URI cannot be found, %NULL is returned and
- * @error is set to #G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND.
+ * @error is set to %G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND.
  *
  * The returned array is %NULL terminated, so @length may optionally
  * be %NULL.
@@ -3274,10 +3274,10 @@ g_bookmark_file_add_application (GBookmarkFile *bookmark,
  * that have registered a bookmark for @uri inside @bookmark.
  *
  * In the event the URI cannot be found, %FALSE is returned and
- * @error is set to #G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND.
+ * @error is set to %G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND.
  * In the event that no application with name @app_name has registered
  * a bookmark for @uri,  %FALSE is returned and error is set to
- * #G_BOOKMARK_FILE_ERROR_APP_NOT_REGISTERED.
+ * %G_BOOKMARK_FILE_ERROR_APP_NOT_REGISTERED.
  *
  * Returns: %TRUE if the application was successfully removed.
  *
@@ -3324,7 +3324,7 @@ g_bookmark_file_remove_application (GBookmarkFile  *bookmark,
  * registered by application @name.
  *
  * In the event the URI cannot be found, %FALSE is returned and
- * @error is set to #G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND.
+ * @error is set to %G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND.
  *
  * Returns: %TRUE if the application @name was found
  *
@@ -3388,10 +3388,10 @@ g_bookmark_file_has_application (GBookmarkFile  *bookmark,
  *
  * If you try to remove an application by setting its registration count to
  * zero, and no bookmark for @uri is found, %FALSE is returned and
- * @error is set to #G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND; similarly,
+ * @error is set to %G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND; similarly,
  * in the event that no application @name has registered a bookmark
  * for @uri,  %FALSE is returned and error is set to
- * #G_BOOKMARK_FILE_ERROR_APP_NOT_REGISTERED.  Otherwise, if no bookmark
+ * %G_BOOKMARK_FILE_ERROR_APP_NOT_REGISTERED.  Otherwise, if no bookmark
  * for @uri is found, one is created.
  *
  * Returns: %TRUE if the application's meta-data was successfully
@@ -3451,10 +3451,10 @@ g_bookmark_file_set_app_info (GBookmarkFile  *bookmark,
  *
  * If you try to remove an application by setting its registration count to
  * zero, and no bookmark for @uri is found, %FALSE is returned and
- * @error is set to #G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND; similarly,
+ * @error is set to %G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND; similarly,
  * in the event that no application @name has registered a bookmark
  * for @uri,  %FALSE is returned and error is set to
- * #G_BOOKMARK_FILE_ERROR_APP_NOT_REGISTERED.  Otherwise, if no bookmark
+ * %G_BOOKMARK_FILE_ERROR_APP_NOT_REGISTERED.  Otherwise, if no bookmark
  * for @uri is found, one is created.
  *
  * Returns: %TRUE if the application's meta-data was successfully
@@ -3622,11 +3622,11 @@ expand_exec_line (const gchar *exec_fmt,
  * The string returned in @app_exec must be freed.
  *
  * In the event the URI cannot be found, %FALSE is returned and
- * @error is set to #G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND.  In the
+ * @error is set to %G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND.  In the
  * event that no application with name @app_name has registered a bookmark
  * for @uri,  %FALSE is returned and error is set to
- * #G_BOOKMARK_FILE_ERROR_APP_NOT_REGISTERED. In the event that unquoting
- * the command line fails, an error of the #G_SHELL_ERROR domain is
+ * %G_BOOKMARK_FILE_ERROR_APP_NOT_REGISTERED. In the event that unquoting
+ * the command line fails, an error of the %G_SHELL_ERROR domain is
  * set and %FALSE is returned.
  *
  * Returns: %TRUE on success.
@@ -3674,11 +3674,11 @@ g_bookmark_file_get_app_info (GBookmarkFile  *bookmark,
  * The string returned in @app_exec must be freed.
  *
  * In the event the URI cannot be found, %FALSE is returned and
- * @error is set to #G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND.  In the
+ * @error is set to %G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND.  In the
  * event that no application with name @app_name has registered a bookmark
  * for @uri,  %FALSE is returned and error is set to
- * #G_BOOKMARK_FILE_ERROR_APP_NOT_REGISTERED. In the event that unquoting
- * the command line fails, an error of the #G_SHELL_ERROR domain is
+ * %G_BOOKMARK_FILE_ERROR_APP_NOT_REGISTERED. In the event that unquoting
+ * the command line fails, an error of the %G_SHELL_ERROR domain is
  * set and %FALSE is returned.
  *
  * Returns: %TRUE on success.
@@ -3770,7 +3770,7 @@ g_bookmark_file_get_application_info (GBookmarkFile  *bookmark,
  * bookmark for @uri.
  *
  * In the event the URI cannot be found, %NULL is returned and
- * @error is set to #G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND.
+ * @error is set to %G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND.
  *
  * Returns: (array length=length) (transfer full): a newly allocated %NULL-terminated array of strings.
  *   Use g_strfreev() to free it.
@@ -3863,7 +3863,7 @@ g_bookmark_file_get_size (GBookmarkFile *bookmark)
  * %NULL, then the bookmark is removed.
  *
  * In the event the URI cannot be found, %FALSE is returned and
- * @error is set to #G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND.
+ * @error is set to %G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND.
  *
  * Returns: %TRUE if the URI was successfully changed
  *
@@ -3980,7 +3980,7 @@ g_bookmark_file_set_icon (GBookmarkFile *bookmark,
  * Gets the icon of the bookmark for @uri.
  *
  * In the event the URI cannot be found, %FALSE is returned and
- * @error is set to #G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND.
+ * @error is set to %G_BOOKMARK_FILE_ERROR_URI_NOT_FOUND.
  *
  * Returns: %TRUE if the icon for the bookmark for the URI was found.
  *   You should free the returned strings.
index 9f91a9b..09d3fa4 100644 (file)
@@ -109,6 +109,12 @@ static gboolean
 g_utf8_get_charset_internal (const char  *raw_data,
                              const char **a)
 {
+  /* Allow CHARSET to override the charset of any locale category. Users should
+   * probably never be setting this — instead, just add the charset after a `.`
+   * in `LANGUAGE`/`LC_ALL`/`LC_*`/`LANG`. I can’t find any reference (in
+   * `git log`, code comments, or man pages) to this environment variable being
+   * standardised or documented or even used anywhere outside GLib. Perhaps it
+   * should eventually be removed. */
   const char *charset = g_getenv ("CHARSET");
 
   if (charset && *charset)
@@ -377,7 +383,7 @@ g_get_console_charset (const char **charset)
           modifier = strchr (dot, '@');
           if (modifier == NULL)
             raw = dot;
-          else if (modifier - dot < sizeof (buf))
+          else if ((gsize) (modifier - dot) < sizeof (buf))
             {
               memcpy (buf, dot, modifier - dot);
               buf[modifier - dot] = '\0';
index 4072021..c5e0dfa 100644 (file)
@@ -1,3 +1,30 @@
+/* GLIB - Library of useful routines for C programming
+ * Copyright (C) 1995-1997  Peter Mattis, Spencer Kimball and Josh MacDonald
+ *
+ * This library 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 library 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/>.
+ */
+
+/*
+ * Modified by the GLib Team and others 1997-2000.  See the AUTHORS
+ * file for a list of people on the GLib Team.  See the ChangeLog
+ * files for a list of changes.  These files are distributed with
+ * GLib at ftp://ftp.gtk.org/pub/gtk/.
+ */
+
+#ifndef __G_CONSTRUCTOR_H__
+#define __G_CONSTRUCTOR_H__
+
 /*
   If G_HAS_CONSTRUCTORS is true then the compiler support *both* constructors and
   destructors, in a usable way, including e.g. on library unload. If not you're on
 #elif defined (_MSC_VER) && (_MSC_VER >= 1500)
 /* Visual studio 2008 and later has _Pragma */
 
+/*
+ * Only try to include gslist.h if not already included via glib.h,
+ * so that items using gconstructor.h outside of GLib (such as
+ * GResources) continue to build properly.
+ */
+#ifndef __G_LIB_H__
+#include "gslist.h"
+#endif
+
 #include <stdlib.h>
 
 #define G_HAS_CONSTRUCTORS 1
 #endif
 
 #endif /* __GTK_DOC_IGNORE__ */
+#endif /* __G_CONSTRUCTOR_H__ */
index 7697ff6..052f019 100644 (file)
  *    "Unknown file name" in its title bar but still let the user save
  *    the file, as it would keep the raw file name internally. This
  *    can happen if the user has not set the `G_FILENAME_ENCODING`
- *    environment variable even though he has files whose names are
+ *    environment variable even though they have files whose names are
  *    not encoded in UTF-8.
  *
  * 3. If your user interface lets the user type a file name for saving
@@ -354,7 +354,7 @@ close_converter (GIConv cd)
  *                 Even if the conversion was successful, this may be 
  *                 less than @len if there were partial characters
  *                 at the end of the input. If the error
- *                 #G_CONVERT_ERROR_ILLEGAL_SEQUENCE occurs, the value
+ *                 %G_CONVERT_ERROR_ILLEGAL_SEQUENCE occurs, the value
  *                 stored will be the byte offset after the last valid
  *                 input sequence.
  * @bytes_written: (out) (optional): the number of bytes stored in
@@ -525,7 +525,7 @@ g_convert_with_iconv (const gchar *str,
  *                 Even if the conversion was successful, this may be 
  *                 less than @len if there were partial characters
  *                 at the end of the input. If the error
- *                 #G_CONVERT_ERROR_ILLEGAL_SEQUENCE occurs, the value
+ *                 %G_CONVERT_ERROR_ILLEGAL_SEQUENCE occurs, the value
  *                 stored will be the byte offset after the last valid
  *                 input sequence.
  * @bytes_written: (out) (optional): the number of bytes stored in
@@ -1420,7 +1420,7 @@ static const guchar acceptable[96] = {
   0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x20,0x20,0x20,0x3F,0x20
 };
 
-static const gchar hex[16] = "0123456789ABCDEF";
+static const gchar hex[] = "0123456789ABCDEF";
 
 /* Note: This escape function works on file: URIs, but if you want to
  * escape something else, please read RFC-2396 */
index 793e21f..796d203 100644 (file)
@@ -901,7 +901,7 @@ g_datalist_id_dup_data (GData          **datalist,
  * If the previous value was replaced then ownership of the
  * old value (@oldval) is passed to the caller, including
  * the registered destroy notify for it (passed out in @old_destroy).
- * Its up to the caller to free this as he wishes, which may
+ * Its up to the caller to free this as they wish, which may
  * or may not include using @old_destroy as sometimes replacement
  * should not destroy the object in the normal way.
  *
index 59a85c4..68c8689 100644 (file)
  * @G_DATE_SATURDAY: Saturday
  * @G_DATE_SUNDAY: Sunday
  *
- * Enumeration representing a day of the week; #G_DATE_MONDAY,
- * #G_DATE_TUESDAY, etc. #G_DATE_BAD_WEEKDAY is an invalid weekday.
+ * Enumeration representing a day of the week; %G_DATE_MONDAY,
+ * %G_DATE_TUESDAY, etc. %G_DATE_BAD_WEEKDAY is an invalid weekday.
  */
 
 /**
@@ -288,11 +288,14 @@ g_date_new (void)
  * @month: month of the year
  * @year: year
  *
- * Like g_date_new(), but also sets the value of the date. Assuming the
- * day-month-year triplet you pass in represents an existing day, the
- * returned date will be valid.
+ * Create a new #GDate representing the given day-month-year triplet.
  *
- * Returns: a newly-allocated #GDate initialized with @day, @month, and @year
+ * The triplet you pass in must represent a valid date. Use g_date_valid_dmy()
+ * if needed to validate it. The returned #GDate is guaranteed to be non-%NULL
+ * and valid.
+ *
+ * Returns: (transfer full) (not nullable): a newly-allocated #GDate
+ *   initialized with @day, @month, and @year
  */
 GDate*
 g_date_new_dmy (GDateDay   day, 
@@ -320,11 +323,14 @@ g_date_new_dmy (GDateDay   day,
  * g_date_new_julian:
  * @julian_day: days since January 1, Year 1
  *
- * Like g_date_new(), but also sets the value of the date. Assuming the
- * Julian day number you pass in is valid (greater than 0, less than an
- * unreasonably large number), the returned date will be valid.
+ * Create a new #GDate representing the given Julian date.
+ *
+ * The @julian_day you pass in must be valid. Use g_date_valid_julian() if
+ * needed to validate it. The returned #GDate is guaranteed to be non-%NULL and
+ * valid.
  *
- * Returns: a newly-allocated #GDate initialized with @julian_day
+ * Returns: (transfer full) (not nullable): a newly-allocated #GDate initialized
+ *   with @julian_day
  */
 GDate*
 g_date_new_julian (guint32 julian_day)
@@ -2550,9 +2556,7 @@ win32_strftime_helper (const GDate     *d,
              break;
            case 'Z':
              n = GetTimeZoneInformation (&tzinfo);
-             if (n == TIME_ZONE_ID_UNKNOWN)
-               ;
-             else if (n == TIME_ZONE_ID_STANDARD)
+             if (n == TIME_ZONE_ID_UNKNOWN || n == TIME_ZONE_ID_STANDARD)
                g_array_append_vals (result, tzinfo.StandardName, wcslen (tzinfo.StandardName));
              else if (n == TIME_ZONE_ID_DAYLIGHT)
                g_array_append_vals (result, tzinfo.DaylightName, wcslen (tzinfo.DaylightName));
@@ -2588,7 +2592,8 @@ win32_strftime_helper (const GDate     *d,
       return 0;
     }
   
-  if (slen <= convlen)
+  g_assert (convlen >= 0);
+  if ((gsize) convlen >= slen)
     {
       /* Ensure only whole characters are copied into the buffer. */
       gchar *end = g_utf8_find_prev_char (convbuf, convbuf + slen);
index a31afe7..0ec390c 100644 (file)
@@ -622,7 +622,7 @@ g_date_time_get_week_number (GDateTime *datetime,
                              gint      *day_of_week,
                              gint      *day_of_year)
 {
-  gint a, b, c, d, e, f, g, n, s, month, day, year;
+  gint a, b, c, d, e, f, g, n, s, month = -1, day = -1, year = -1;
 
   g_date_time_get_ymd (datetime, &year, &month, &day);
 
@@ -893,8 +893,9 @@ static GDateTime *
 g_date_time_new_from_timeval (GTimeZone      *tz,
                               const GTimeVal *tv)
 {
-  if ((gint64) tv->tv_sec > G_MAXINT64 - 1 ||
-      !UNIX_TO_INSTANT_IS_VALID ((gint64) tv->tv_sec + 1))
+  gint64 tv_sec = tv->tv_sec;
+
+  if (tv_sec > G_MAXINT64 - 1 || !UNIX_TO_INSTANT_IS_VALID (tv_sec + 1))
     return NULL;
 
   return g_date_time_from_instant (tz, tv->tv_usec +
@@ -2341,7 +2342,7 @@ g_date_time_get_day_of_month (GDateTime *datetime)
 gint
 g_date_time_get_week_numbering_year (GDateTime *datetime)
 {
-  gint year, month, day, weekday;
+  gint year = -1, month = -1, day = -1, weekday;
 
   g_date_time_get_ymd (datetime, &year, &month, &day);
   weekday = g_date_time_get_day_of_week (datetime);
@@ -3491,12 +3492,12 @@ g_date_time_format_iso8601 (GDateTime *datetime)
   GString *outstr = NULL;
   gchar *main_date = NULL;
   gint64 offset;
-  gchar *format = "%Y-%m-%dT%H:%M:%S";
+  gchar *format = "%C%y-%m-%dT%H:%M:%S";
 
   /* if datetime has sub-second non-zero values below the second precision we
    * should print them as well */
   if (datetime->usec % G_TIME_SPAN_SECOND != 0)
-    format = "%Y-%m-%dT%H:%M:%S.%f";
+    format = "%C%y-%m-%dT%H:%M:%S.%f";
 
   /* Main date and time. */
   main_date = g_date_time_format (datetime, format);
index 04e9ab0..485531c 100644 (file)
@@ -88,7 +88,7 @@ g_environ_find (gchar       **envp,
  * Returns the value of the environment variable @variable in the
  * provided list @envp.
  *
- * Returns: (type filename): the value of the environment variable, or %NULL if
+ * Returns: (type filename) (nullable): the value of the environment variable, or %NULL if
  *     the environment variable is not set in @envp. The returned
  *     string is owned by @envp, and will be freed if @variable is
  *     set or unset again.
@@ -242,7 +242,7 @@ g_environ_unsetenv (gchar       **envp,
  * On Windows, in case the environment variable's value contains
  * references to other environment variables, they are expanded.
  *
- * Returns: (type filename): the value of the environment variable, or %NULL if
+ * Returns: (type filename) (nullable): the value of the environment variable, or %NULL if
  *     the environment variable is not found. The returned string
  *     may be overwritten by the next call to g_getenv(), g_setenv()
  *     or g_unsetenv().
@@ -454,7 +454,7 @@ g_getenv (const gchar *variable)
   GQuark quark;
   gchar *value;
   wchar_t dummy[2], *wname, *wvalue;
-  int len;
+  DWORD len;
 
   g_return_val_if_fail (variable != NULL, NULL);
   g_return_val_if_fail (g_utf8_validate (variable, -1, NULL), NULL);
index bc9c03a..33e1d5a 100644 (file)
@@ -31,7 +31,7 @@ G_BEGIN_DECLS
 
 /**
  * GError:
- * @domain: error domain, e.g. #G_FILE_ERROR
+ * @domain: error domain, e.g. %G_FILE_ERROR
  * @code: error code, e.g. %G_FILE_ERROR_NOENT
  * @message: human-readable informative error message
  *
index 9ef4731..8681b13 100644 (file)
@@ -294,14 +294,14 @@ g_mkdir_with_parents (const gchar *pathname,
  * @filename: (type filename): a filename to test in the
  *     GLib file name encoding
  * @test: bitfield of #GFileTest flags
- * 
+ *
  * Returns %TRUE if any of the tests in the bitfield @test are
  * %TRUE. For example, `(G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR)`
  * will return %TRUE if the file exists; the check whether it's a
  * directory doesn't matter since the existence test is %TRUE. With
  * the current set of available tests, there's no point passing in
  * more than one test at a time.
- * 
+ *
  * Apart from %G_FILE_TEST_IS_SYMLINK all tests follow symbolic links,
  * so for a symbolic link to a regular file g_file_test() will return
  * %TRUE for both %G_FILE_TEST_IS_SYMLINK and %G_FILE_TEST_IS_REGULAR.
@@ -344,7 +344,7 @@ g_file_test (const gchar *filename,
              GFileTest    test)
 {
 #ifdef G_OS_WIN32
-  int attributes;
+  DWORD attributes;
   wchar_t *wfilename;
 #endif
 
@@ -495,7 +495,7 @@ G_DEFINE_QUARK (g-file-error-quark, g_file_error)
 /**
  * g_file_error_from_errno:
  * @err_no: an "errno" value
- * 
+ *
  * Gets a #GFileError constant based on the passed-in @err_no.
  *
  * For example, if you pass in `EEXIST` this function returns
@@ -505,7 +505,7 @@ G_DEFINE_QUARK (g-file-error-quark, g_file_error)
  * Normally a #GFileError value goes into a #GError returned
  * from a function that manipulates files. So you would use
  * g_file_error_from_errno() when constructing a #GError.
- * 
+ *
  * Returns: #GFileError corresponding to the given @err_no
  **/
 GFileError
@@ -1000,7 +1000,7 @@ get_contents_win32 (const gchar  *filename,
  * contents and @length to the length of the file contents in bytes. The string
  * stored in @contents will be nul-terminated, so for text files you can pass
  * %NULL for the @length argument. If the call was not successful, it returns
- * %FALSE and sets @error. The error domain is #G_FILE_ERROR. Possible error
+ * %FALSE and sets @error. The error domain is %G_FILE_ERROR. Possible error
  * codes are those in the #GFileError enumeration. In the error case,
  * @contents is set to %NULL and @length is set to zero.
  *
@@ -1271,7 +1271,7 @@ g_file_set_contents (const gchar  *filename,
  *   @filename already exists and is open.
  *
  * If the call was successful, it returns %TRUE. If the call was not successful,
- * it returns %FALSE and sets @error. The error domain is #G_FILE_ERROR.
+ * it returns %FALSE and sets @error. The error domain is %G_FILE_ERROR.
  * Possible error codes are those in the #GFileError enumeration.
  *
  * Note that the name for the temporary file is constructed by appending up
@@ -1833,7 +1833,7 @@ g_file_open_tmp (const gchar  *tmpl,
  * Note that in contrast to g_mkdtemp() (and mkdtemp()) @tmpl is not
  * modified, and might thus be a read-only literal string.
  *
- * Returns: (type filename): The actual name used. This string
+ * Returns: (type filename) (transfer full): The actual name used. This string
  *     should be freed with g_free() when not needed any longer and is
  *     is in the GLib file name encoding. In case of errors, %NULL is
  *     returned and @error will be set.
@@ -1967,8 +1967,8 @@ g_build_path_va (const gchar  *separator,
  * as a string array, instead of varargs. This function is mainly
  * meant for language bindings.
  *
- * Returns: (type filename): a newly-allocated string that must be freed
- *     with g_free().
+ * Returns: (type filename) (transfer full): a newly-allocated string that
+ *     must be freed with g_free().
  *
  * Since: 2.8
  */
@@ -2015,9 +2015,9 @@ g_build_pathv (const gchar  *separator,
  * Other than for determination of the number of leading and trailing
  * copies of the separator, elements consisting only of copies
  * of the separator are ignored.
- * 
- * Returns: (type filename): a newly-allocated string that must be freed with
- *     g_free().
+ *
+ * Returns: (type filename) (transfer full): a newly-allocated string that
+ *     must be freed with g_free().
  **/
 gchar *
 g_build_path (const gchar *separator,
@@ -2176,8 +2176,8 @@ g_build_filename_va (const gchar  *first_argument,
  * Behaves exactly like g_build_filename(), but takes the path elements
  * as a va_list. This function is mainly meant for language bindings.
  *
- * Returns: (type filename): a newly-allocated string that must be freed
- *     with g_free().
+ * Returns: (type filename) (transfer full): a newly-allocated string that
+ *     must be freed with g_free().
  *
  * Since: 2.56
  */
@@ -2199,9 +2199,9 @@ g_build_filename_valist (const gchar  *first_element,
  * as a string array, instead of varargs. This function is mainly
  * meant for language bindings.
  *
- * Returns: (type filename): a newly-allocated string that must be freed
- *     with g_free().
- * 
+ * Returns: (type filename) (transfer full): a newly-allocated string that
+ *     must be freed with g_free().
+ *
  * Since: 2.8
  */
 gchar *
@@ -2229,10 +2229,10 @@ g_build_filenamev (gchar **args)
  *
  * No attempt is made to force the resulting filename to be an absolute
  * path. If the first element is a relative path, the result will
- * be a relative path. 
- * 
- * Returns: (type filename): a newly-allocated string that must be freed with
- *     g_free().
+ * be a relative path.
+ *
+ * Returns: (type filename) (transfer full): a newly-allocated string that
+ *     must be freed with g_free().
  **/
 gchar *
 g_build_filename (const gchar *first_element, 
@@ -2257,8 +2257,8 @@ g_build_filename (const gchar *first_element,
  * readlink() function.  The returned string is in the encoding used
  * for filenames. Use g_filename_to_utf8() to convert it to UTF-8.
  *
- * Returns: (type filename): A newly-allocated string with the contents of
- *     the symbolic link, or %NULL if an error occurred.
+ * Returns: (type filename) (transfer full): A newly-allocated string with
+ *     the contents of the symbolic link, or %NULL if an error occurred.
  *
  * Since: 2.4
  */
@@ -2512,8 +2512,8 @@ g_basename (const gchar *file_name)
  * separators (and on Windows, possibly a drive letter), a single
  * separator is returned. If @file_name is empty, it gets ".".
  *
- * Returns: (type filename): a newly allocated string containing the last
- *    component of the filename
+ * Returns: (type filename) (transfer full): a newly allocated string
+ *    containing the last component of the filename
  */
 gchar *
 g_path_get_basename (const gchar *file_name)
@@ -2573,7 +2573,7 @@ g_path_get_basename (const gchar *file_name)
  * If the file name has no directory components "." is returned.
  * The returned string should be freed when no longer needed.
  *
- * Returns: (type filename): the directory components of the file
+ * Returns: (type filename) (transfer full): the directory components of the file
  *
  * Deprecated: use g_path_get_dirname() instead
  */
@@ -2589,7 +2589,7 @@ g_path_get_basename (const gchar *file_name)
  * If the file name has no directory components "." is returned.
  * The returned string should be freed when no longer needed.
  *
- * Returns: (type filename): the directory components of the file
+ * Returns: (type filename) (transfer full): the directory components of the file
  */
 gchar *
 g_path_get_dirname (const gchar *file_name)
@@ -2852,7 +2852,7 @@ g_canonicalize_filename (const gchar *filename,
  * the current directory.  This can make a difference in the case that
  * the current directory is the target of a symbolic link.
  *
- * Returns: (type filename): the current directory
+ * Returns: (type filename) (transfer full): the current directory
  */
 gchar *
 g_get_current_dir (void)
@@ -2861,7 +2861,7 @@ g_get_current_dir (void)
 
   gchar *dir = NULL;
   wchar_t dummy[2], *wdir;
-  int len;
+  DWORD len;
 
   len = GetCurrentDirectoryW (2, dummy);
   wdir = g_new (wchar_t, len);
index 48a7db0..3d71643 100644 (file)
@@ -1086,6 +1086,33 @@ g_hash_table_new_full (GHashFunc      hash_func,
 }
 
 /**
+ * g_hash_table_new_similar:
+ * @other_hash_table: (not nullable) (transfer none): Another #GHashTable
+ *
+ * Creates a new #GHashTable like g_hash_table_new_full() with a reference
+ * count of 1.
+ *
+ * It inherits the hash function, the key equal function, the key destroy function,
+ * as well as the value destroy function, from @other_hash_table.
+ *
+ * The returned hash table will be empty; it will not contain the keys
+ * or values from @other_hash_table.
+ *
+ * Returns: (transfer full) (not nullable): a new #GHashTable
+ * Since: 2.72
+ */
+GHashTable *
+g_hash_table_new_similar (GHashTable *other_hash_table)
+{
+  g_return_val_if_fail (other_hash_table, NULL);
+
+  return g_hash_table_new_full (other_hash_table->hash_func,
+                                other_hash_table->key_equal_func,
+                                other_hash_table->key_destroy_func,
+                                other_hash_table->value_destroy_func);
+}
+
+/**
  * g_hash_table_iter_init:
  * @iter: an uninitialized #GHashTableIter
  * @hash_table: a #GHashTable
index e9ce645..4e81d62 100644 (file)
@@ -61,6 +61,8 @@ GHashTable* g_hash_table_new_full          (GHashFunc       hash_func,
                                             GEqualFunc      key_equal_func,
                                             GDestroyNotify  key_destroy_func,
                                             GDestroyNotify  value_destroy_func);
+GLIB_AVAILABLE_IN_2_72
+GHashTable *g_hash_table_new_similar       (GHashTable     *other_hash_table);
 GLIB_AVAILABLE_IN_ALL
 void        g_hash_table_destroy           (GHashTable     *hash_table);
 GLIB_AVAILABLE_IN_ALL
index 49fd272..54da9f9 100644 (file)
@@ -127,11 +127,9 @@ g_hmac_new (GChecksumType  digest_type,
   hmac->digesti = checksum;
   hmac->digesto = g_checksum_new (digest_type);
 
-  buffer = g_alloca (block_size);
+  buffer = g_alloca0 (block_size);
   pad = g_alloca (block_size);
 
-  memset (buffer, 0, block_size);
-
   /* If the key is too long, hash it */
   if (key_len > block_size)
     {
index dff4a19..24a7d37 100644 (file)
@@ -128,15 +128,18 @@ punycode_encode (const gchar *input_utf8,
 {
   guint delta, handled_chars, num_basic_chars, bias, j, q, k, t, digit;
   gunichar n, m, *input;
-  glong input_length;
+  glong written_chars;
+  gsize input_length;
   gboolean success = FALSE;
 
   /* Convert from UTF-8 to Unicode code points */
   input = g_utf8_to_ucs4 (input_utf8, input_utf8_length, NULL,
-                         &input_length, NULL);
+                         &written_chars, NULL);
   if (!input)
     return FALSE;
 
+  input_length = (gsize) (written_chars > 0 ? written_chars : 0);
+
   /* Copy basic chars */
   for (j = num_basic_chars = 0; j < input_length; j++)
     {
index e93c4b4..12ca051 100644 (file)
@@ -593,7 +593,7 @@ g_io_channel_purge (GIOChannel *channel)
  * @condition: conditions to watch for
  *
  * Creates a #GSource that's dispatched when @condition is met for the 
- * given @channel. For example, if condition is #G_IO_IN, the source will 
+ * given @channel. For example, if condition is %G_IO_IN, the source will
  * be dispatched when there's data available for reading.
  *
  * The callback function invoked by the #GSource should be added with
@@ -1180,8 +1180,8 @@ g_io_channel_seek_position (GIOChannel  *channel,
  * Flushes the write buffer for the GIOChannel.
  *
  * Returns: the status of the operation: One of
- *   #G_IO_STATUS_NORMAL, #G_IO_STATUS_AGAIN, or
- *   #G_IO_STATUS_ERROR.
+ *   %G_IO_STATUS_NORMAL, %G_IO_STATUS_AGAIN, or
+ *   %G_IO_STATUS_ERROR.
  **/
 GIOStatus
 g_io_channel_flush (GIOChannel *channel,
index e4c246d..7282e1a 100644 (file)
@@ -815,7 +815,7 @@ g_io_win32_check (GSource *source)
   GIOWin32Watch *watch = (GIOWin32Watch *)source;
   GIOWin32Channel *channel = (GIOWin32Channel *)watch->channel;
   GIOCondition buffer_condition = g_io_channel_get_buffer_condition (watch->channel);
-  WSANETWORKEVENTS events;
+  WSANETWORKEVENTS events = { 0 };
 
   if (channel->debug)
     g_print ("g_io_win32_check: source=%p channel=%p", source, channel);
@@ -1023,7 +1023,9 @@ GSourceFuncs g_io_watch_funcs = {
   g_io_win32_prepare,
   g_io_win32_check,
   g_io_win32_dispatch,
-  g_io_win32_finalize
+  g_io_win32_finalize,
+  NULL,
+  NULL
 };
 
 static GIOStatus
@@ -1289,8 +1291,7 @@ g_io_win32_fd_seek (GIOChannel *channel,
 {
   GIOWin32Channel *win32_channel = (GIOWin32Channel *)channel;
   int whence, errsv;
-  off_t tmp_offset;
-  off_t result;
+  gint64 result;
   
   switch (type)
     {
@@ -1309,16 +1310,7 @@ g_io_win32_fd_seek (GIOChannel *channel,
       g_abort ();
     }
 
-  tmp_offset = offset;
-  if (tmp_offset != offset)
-    {
-      g_set_error_literal (err, G_IO_CHANNEL_ERROR,
-                           g_io_channel_error_from_errno (EINVAL),
-                           g_strerror (EINVAL));
-      return G_IO_STATUS_ERROR;
-    }
-
-  result = lseek (win32_channel->fd, tmp_offset, whence);
+  result = _lseeki64 (win32_channel->fd, offset, whence);
   errsv = errno;
   
   if (result < 0)
@@ -1460,7 +1452,7 @@ g_io_win32_sock_read (GIOChannel *channel,
   GIOWin32Channel *win32_channel = (GIOWin32Channel *)channel;
   gint result;
   GIOChannelError error;
-  int winsock_error;
+  int winsock_error = 0;
 
   if (win32_channel->debug)
     g_print ("g_io_win32_sock_read: channel=%p sock=%d count=%" G_GSIZE_FORMAT,
@@ -1521,8 +1513,8 @@ g_io_win32_sock_write (GIOChannel  *channel,
   GIOWin32Channel *win32_channel = (GIOWin32Channel *)channel;
   gint result;
   GIOChannelError error;
-  int winsock_error;
-  
+  int winsock_error = 0;
+
   if (win32_channel->debug)
     g_print ("g_io_win32_sock_write: channel=%p sock=%d count=%" G_GSIZE_FORMAT,
             channel, win32_channel->fd, count);
index 17cf856..6460970 100644 (file)
@@ -511,8 +511,8 @@ struct _GKeyFile
 
   GKeyFileFlags flags;
 
-  gboolean checked_locales;
-  gchar **locales;
+  gboolean checked_locales;  /* TRUE if @locales has been initialised */
+  gchar **locales;  /* (nullable) */
 
   gint ref_count;  /* (atomic) */
 };
@@ -575,7 +575,8 @@ static void                  g_key_file_add_key                (GKeyFile
 static void                  g_key_file_add_group              (GKeyFile               *key_file,
                                                                const gchar            *group_name);
 static gboolean              g_key_file_is_group_name          (const gchar *name);
-static gboolean              g_key_file_is_key_name            (const gchar *name);
+static gboolean              g_key_file_is_key_name            (const gchar *name,
+                                                                gsize        len);
 static void                  g_key_file_key_value_pair_free    (GKeyFileKeyValuePair   *pair);
 static gboolean              g_key_file_line_is_comment        (const gchar            *line);
 static gboolean              g_key_file_line_is_group          (const gchar            *line);
@@ -598,7 +599,7 @@ static gdouble               g_key_file_parse_value_as_double  (GKeyFile
 static gboolean              g_key_file_parse_value_as_boolean (GKeyFile               *key_file,
                                                                const gchar            *value,
                                                                GError                **error);
-static gchar                *g_key_file_parse_boolean_as_value (GKeyFile               *key_file,
+static const gchar          *g_key_file_parse_boolean_as_value (GKeyFile               *key_file,
                                                                gboolean                value);
 static gchar                *g_key_file_parse_value_as_comment (GKeyFile               *key_file,
                                                                 const gchar            *value,
@@ -617,7 +618,8 @@ static void                  g_key_file_parse_group            (GKeyFile
                                                                const gchar            *line,
                                                                gsize                   length,
                                                                GError                **error);
-static gchar                *key_get_locale                    (const gchar            *key);
+static const gchar          *key_get_locale                    (const gchar            *key,
+                                                                gsize                  *len_out);
 static void                  g_key_file_parse_data             (GKeyFile               *key_file,
                                                                const gchar            *data,
                                                                gsize                   length,
@@ -745,9 +747,10 @@ find_file_in_data_dirs (const gchar   *file,
 
   while (data_dirs && (data_dir = *data_dirs) && fd == -1)
     {
-      gchar *candidate_file, *sub_dir;
+      const gchar *candidate_file;
+      gchar *sub_dir;
 
-      candidate_file = (gchar *) file;
+      candidate_file = file;
       sub_dir = g_strdup ("");
       while (candidate_file != NULL && fd == -1)
         {
@@ -1227,7 +1230,8 @@ g_key_file_unref (GKeyFile *key_file)
  */
 static gboolean
 g_key_file_locale_is_interesting (GKeyFile    *key_file,
-                                 const gchar *locale)
+                                  const gchar *locale,
+                                  gsize        locale_len)
 {
   gsize i;
 
@@ -1236,13 +1240,15 @@ g_key_file_locale_is_interesting (GKeyFile    *key_file,
 
   if (!key_file->checked_locales)
     {
+      g_assert (key_file->locales == NULL);
       key_file->locales = g_strdupv ((gchar **)g_get_language_names ());
       key_file->checked_locales = TRUE;
     }
 
   for (i = 0; key_file->locales[i] != NULL; i++)
     {
-      if (g_ascii_strcasecmp (key_file->locales[i], locale) == 0)
+      if (g_ascii_strncasecmp (key_file->locales[i], locale, locale_len) == 0 &&
+          key_file->locales[i][locale_len] == '\0')
        return TRUE;
     }
 
@@ -1256,12 +1262,12 @@ g_key_file_parse_line (GKeyFile     *key_file,
                       GError      **error)
 {
   GError *parse_error = NULL;
-  gchar *line_start;
+  const gchar *line_start;
 
   g_return_if_fail (key_file != NULL);
   g_return_if_fail (line != NULL);
 
-  line_start = (gchar *) line;
+  line_start = line;
   while (g_ascii_isspace (*line_start))
     line_start++;
 
@@ -1352,7 +1358,9 @@ g_key_file_parse_key_value_pair (GKeyFile     *key_file,
                                 gsize         length,
                                 GError      **error)
 {
-  gchar *key, *value, *key_end, *value_start, *locale;
+  gchar *key, *key_end, *value_start;
+  const gchar *locale;
+  gsize locale_len;
   gsize key_len, value_len;
 
   if (key_file->current_group == NULL || key_file->current_group->name == NULL)
@@ -1379,37 +1387,36 @@ g_key_file_parse_key_value_pair (GKeyFile     *key_file,
 
   g_warn_if_fail (key_len <= length);
 
-  key = g_strndup (line, key_len - 1);
-
-  if (!g_key_file_is_key_name (key))
+  if (!g_key_file_is_key_name (line, key_len - 1))
     {
       g_set_error (error, G_KEY_FILE_ERROR,
                    G_KEY_FILE_ERROR_PARSE,
-                   _("Invalid key name: %s"), key);
-      g_free (key);
+                   _("Invalid key name: %.*s"), (int) key_len - 1, line);
       return; 
     }
 
+  key = g_strndup (line, key_len - 1);
+
   /* Pull the value from the line (chugging leading whitespace)
    */
   while (g_ascii_isspace (*value_start))
     value_start++;
 
-  value_len = line + length - value_start + 1;
-
-  value = g_strndup (value_start, value_len);
+  value_len = line + length - value_start;
 
   g_warn_if_fail (key_file->start_group != NULL);
 
-  if (key_file->current_group
-      && key_file->current_group->name
-      && strcmp (key_file->start_group->name,
-                 key_file->current_group->name) == 0
+  /* Checked on entry to this function */
+  g_assert (key_file->current_group != NULL);
+  g_assert (key_file->current_group->name != NULL);
+
+  if (key_file->start_group == key_file->current_group
       && strcmp (key, "Encoding") == 0)
     {
-      if (g_ascii_strcasecmp (value, "UTF-8") != 0)
+      if (value_len != strlen ("UTF-8") ||
+          g_ascii_strncasecmp (value_start, "UTF-8", value_len) != 0)
         {
-         gchar *value_utf8 = g_utf8_make_valid (value, value_len);
+          gchar *value_utf8 = g_utf8_make_valid (value_start, value_len);
           g_set_error (error, G_KEY_FILE_ERROR,
                        G_KEY_FILE_ERROR_UNKNOWN_ENCODING,
                        _("Key file contains unsupported "
@@ -1417,47 +1424,53 @@ g_key_file_parse_key_value_pair (GKeyFile     *key_file,
          g_free (value_utf8);
 
           g_free (key);
-          g_free (value);
           return;
         }
     }
 
   /* Is this key a translation? If so, is it one that we care about?
    */
-  locale = key_get_locale (key);
+  locale = key_get_locale (key, &locale_len);
 
-  if (locale == NULL || g_key_file_locale_is_interesting (key_file, locale))
+  if (locale == NULL || g_key_file_locale_is_interesting (key_file, locale, locale_len))
     {
       GKeyFileKeyValuePair *pair;
 
       pair = g_slice_new (GKeyFileKeyValuePair);
-      pair->key = key;
-      pair->value = value;
+      pair->key = g_steal_pointer (&key);
+      pair->value = g_strndup (value_start, value_len);
 
       g_key_file_add_key_value_pair (key_file, key_file->current_group, pair);
     }
-  else
-    {
-      g_free (key);
-      g_free (value);
-    }
 
-  g_free (locale);
+  g_free (key);
 }
 
-static gchar *
-key_get_locale (const gchar *key)
+static const gchar *
+key_get_locale (const gchar *key,
+                gsize       *len_out)
 {
-  gchar *locale;
+  const gchar *locale;
+  gsize locale_len;
 
   locale = g_strrstr (key, "[");
+  if (locale != NULL)
+    locale_len = strlen (locale);
+  else
+    locale_len = 0;
 
-  if (locale && strlen (locale) <= 2)
-    locale = NULL;
-
-  if (locale)
-    locale = g_strndup (locale + 1, strlen (locale) - 2);
+  if (locale_len > 2)
+    {
+      locale++;  /* skip `[` */
+      locale_len -= 2;  /* drop `[` and `]` */
+    }
+  else
+    {
+      locale = NULL;
+      locale_len = 0;
+    }
 
+  *len_out = locale_len;
   return locale;
 }
 
@@ -1634,7 +1647,7 @@ g_key_file_to_data (GKeyFile  *key_file,
  * returned keys will be %NULL-terminated, so @length may
  * optionally be %NULL. In the event that the @group_name cannot
  * be found, %NULL is returned and @error is set to
- * #G_KEY_FILE_ERROR_GROUP_NOT_FOUND.
+ * %G_KEY_FILE_ERROR_GROUP_NOT_FOUND.
  *
  * Returns: (array zero-terminated=1) (transfer full): a newly-allocated %NULL-terminated array of strings.
  *     Use g_strfreev() to free it.
@@ -1804,9 +1817,9 @@ set_not_found_key_error (const char *group_name,
  * Use g_key_file_get_string() to retrieve an unescaped UTF-8 string. 
  *
  * In the event the key cannot be found, %NULL is returned and 
- * @error is set to #G_KEY_FILE_ERROR_KEY_NOT_FOUND.  In the 
+ * @error is set to %G_KEY_FILE_ERROR_KEY_NOT_FOUND.  In the
  * event that the @group_name cannot be found, %NULL is returned 
- * and @error is set to #G_KEY_FILE_ERROR_GROUP_NOT_FOUND.
+ * and @error is set to %G_KEY_FILE_ERROR_GROUP_NOT_FOUND.
  *
  *
  * Returns: a newly allocated string or %NULL if the specified 
@@ -1875,8 +1888,8 @@ g_key_file_set_value (GKeyFile    *key_file,
   GKeyFileKeyValuePair *pair;
 
   g_return_if_fail (key_file != NULL);
-  g_return_if_fail (g_key_file_is_group_name (group_name));
-  g_return_if_fail (g_key_file_is_key_name (key));
+  g_return_if_fail (group_name != NULL && g_key_file_is_group_name (group_name));
+  g_return_if_fail (key != NULL && g_key_file_is_key_name (key, strlen (key)));
   g_return_if_fail (value != NULL);
 
   group = g_key_file_lookup_group (key_file, group_name);
@@ -1914,9 +1927,9 @@ g_key_file_set_value (GKeyFile    *key_file,
  * like \s.
  *
  * In the event the key cannot be found, %NULL is returned and 
- * @error is set to #G_KEY_FILE_ERROR_KEY_NOT_FOUND.  In the 
+ * @error is set to %G_KEY_FILE_ERROR_KEY_NOT_FOUND.  In the
  * event that the @group_name cannot be found, %NULL is returned 
- * and @error is set to #G_KEY_FILE_ERROR_GROUP_NOT_FOUND.
+ * and @error is set to %G_KEY_FILE_ERROR_GROUP_NOT_FOUND.
  *
  * Returns: a newly allocated string or %NULL if the specified 
  *   key cannot be found.
@@ -2025,9 +2038,9 @@ g_key_file_set_string (GKeyFile    *key_file,
  * Returns the values associated with @key under @group_name.
  *
  * In the event the key cannot be found, %NULL is returned and
- * @error is set to #G_KEY_FILE_ERROR_KEY_NOT_FOUND.  In the
+ * @error is set to %G_KEY_FILE_ERROR_KEY_NOT_FOUND.  In the
  * event that the @group_name cannot be found, %NULL is returned
- * and @error is set to #G_KEY_FILE_ERROR_GROUP_NOT_FOUND.
+ * and @error is set to %G_KEY_FILE_ERROR_GROUP_NOT_FOUND.
  *
  * Returns: (array zero-terminated=1 length=length) (element-type utf8) (transfer full): 
  *  a %NULL-terminated string array or %NULL if the specified 
@@ -2207,7 +2220,7 @@ g_key_file_set_locale_string (GKeyFile     *key_file,
  * %G_KEY_FILE_KEEP_TRANSLATIONS in order to load strings for all locales.
  *
  * If @key cannot be found then %NULL is returned and @error is set 
- * to #G_KEY_FILE_ERROR_KEY_NOT_FOUND. If the value associated
+ * to %G_KEY_FILE_ERROR_KEY_NOT_FOUND. If the value associated
  * with @key cannot be interpreted or no suitable translation can
  * be found then the untranslated value is returned.
  *
@@ -2361,7 +2374,7 @@ g_key_file_get_locale_for_key (GKeyFile    *key_file,
  * %G_KEY_FILE_KEEP_TRANSLATIONS in order to load strings for all locales.
  *
  * If @key cannot be found then %NULL is returned and @error is set 
- * to #G_KEY_FILE_ERROR_KEY_NOT_FOUND. If the values associated
+ * to %G_KEY_FILE_ERROR_KEY_NOT_FOUND. If the values associated
  * with @key cannot be interpreted or no suitable translations
  * can be found then the untranslated values are returned. The 
  * returned array is %NULL-terminated, so @length may optionally 
@@ -2483,9 +2496,9 @@ g_key_file_set_locale_string_list (GKeyFile            *key_file,
  * boolean. 
  *
  * If @key cannot be found then %FALSE is returned and @error is set
- * to #G_KEY_FILE_ERROR_KEY_NOT_FOUND. Likewise, if the value
+ * to %G_KEY_FILE_ERROR_KEY_NOT_FOUND. Likewise, if the value
  * associated with @key cannot be interpreted as a boolean then %FALSE
- * is returned and @error is set to #G_KEY_FILE_ERROR_INVALID_VALUE.
+ * is returned and @error is set to %G_KEY_FILE_ERROR_INVALID_VALUE.
  *
  * Returns: the value associated with the key as a boolean, 
  *    or %FALSE if the key was not found or could not be parsed.
@@ -2556,13 +2569,12 @@ g_key_file_set_boolean (GKeyFile    *key_file,
                        const gchar *key,
                        gboolean     value)
 {
-  gchar *result;
+  const gchar *result;
 
   g_return_if_fail (key_file != NULL);
 
   result = g_key_file_parse_boolean_as_value (key_file, value);
   g_key_file_set_value (key_file, group_name, key, result);
-  g_free (result);
 }
 
 /**
@@ -2577,9 +2589,9 @@ g_key_file_set_boolean (GKeyFile    *key_file,
  * booleans. 
  *
  * If @key cannot be found then %NULL is returned and @error is set to
- * #G_KEY_FILE_ERROR_KEY_NOT_FOUND. Likewise, if the values associated
+ * %G_KEY_FILE_ERROR_KEY_NOT_FOUND. Likewise, if the values associated
  * with @key cannot be interpreted as booleans then %NULL is returned
- * and @error is set to #G_KEY_FILE_ERROR_INVALID_VALUE.
+ * and @error is set to %G_KEY_FILE_ERROR_INVALID_VALUE.
  *
  * Returns: (array length=length) (element-type gboolean) (transfer container):
  *    the values associated with the key as a list of booleans, or %NULL if the
@@ -2673,14 +2685,12 @@ g_key_file_set_boolean_list (GKeyFile    *key_file,
   value_list = g_string_sized_new (length * 8);
   for (i = 0; i < length; i++)
     {
-      gchar *value;
+      const gchar *value;
 
       value = g_key_file_parse_boolean_as_value (key_file, list[i]);
 
       g_string_append (value_list, value);
       g_string_append_c (value_list, key_file->list_separator);
-
-      g_free (value);
     }
 
   g_key_file_set_value (key_file, group_name, key, value_list->str);
@@ -2698,10 +2708,10 @@ g_key_file_set_boolean_list (GKeyFile    *key_file,
  * integer. 
  *
  * If @key cannot be found then 0 is returned and @error is set to
- * #G_KEY_FILE_ERROR_KEY_NOT_FOUND. Likewise, if the value associated
+ * %G_KEY_FILE_ERROR_KEY_NOT_FOUND. Likewise, if the value associated
  * with @key cannot be interpreted as an integer, or is out of range
  * for a #gint, then 0 is returned
- * and @error is set to #G_KEY_FILE_ERROR_INVALID_VALUE.
+ * and @error is set to %G_KEY_FILE_ERROR_INVALID_VALUE.
  *
  * Returns: the value associated with the key as an integer, or
  *     0 if the key was not found or could not be parsed.
@@ -2949,10 +2959,10 @@ g_key_file_set_uint64 (GKeyFile    *key_file,
  * integers. 
  *
  * If @key cannot be found then %NULL is returned and @error is set to
- * #G_KEY_FILE_ERROR_KEY_NOT_FOUND. Likewise, if the values associated
+ * %G_KEY_FILE_ERROR_KEY_NOT_FOUND. Likewise, if the values associated
  * with @key cannot be interpreted as integers, or are out of range for
  * #gint, then %NULL is returned
- * and @error is set to #G_KEY_FILE_ERROR_INVALID_VALUE.
+ * and @error is set to %G_KEY_FILE_ERROR_INVALID_VALUE.
  *
  * Returns: (array length=length) (element-type gint) (transfer container):
  *     the values associated with the key as a list of integers, or %NULL if
@@ -3068,9 +3078,9 @@ g_key_file_set_integer_list (GKeyFile    *key_file,
  * double. If @group_name is %NULL, the start_group is used.
  *
  * If @key cannot be found then 0.0 is returned and @error is set to
- * #G_KEY_FILE_ERROR_KEY_NOT_FOUND. Likewise, if the value associated
+ * %G_KEY_FILE_ERROR_KEY_NOT_FOUND. Likewise, if the value associated
  * with @key cannot be interpreted as a double then 0.0 is returned
- * and @error is set to #G_KEY_FILE_ERROR_INVALID_VALUE.
+ * and @error is set to %G_KEY_FILE_ERROR_INVALID_VALUE.
  *
  * Returns: the value associated with the key as a double, or
  *     0.0 if the key was not found or could not be parsed.
@@ -3163,9 +3173,9 @@ g_key_file_set_double  (GKeyFile    *key_file,
  * doubles. 
  *
  * If @key cannot be found then %NULL is returned and @error is set to
- * #G_KEY_FILE_ERROR_KEY_NOT_FOUND. Likewise, if the values associated
+ * %G_KEY_FILE_ERROR_KEY_NOT_FOUND. Likewise, if the values associated
  * with @key cannot be interpreted as doubles then %NULL is returned
- * and @error is set to #G_KEY_FILE_ERROR_INVALID_VALUE.
+ * and @error is set to %G_KEY_FILE_ERROR_INVALID_VALUE.
  *
  * Returns: (array length=length) (element-type gdouble) (transfer container):
  *     the values associated with the key as a list of doubles, or %NULL if the
@@ -3341,7 +3351,7 @@ g_key_file_set_group_comment (GKeyFile     *key_file,
 {
   GKeyFileGroup *group;
   
-  g_return_val_if_fail (g_key_file_is_group_name (group_name), FALSE);
+  g_return_val_if_fail (group_name != NULL && g_key_file_is_group_name (group_name), FALSE);
 
   group = g_key_file_lookup_group (key_file, group_name);
   if (!group)
@@ -3471,7 +3481,7 @@ g_key_file_get_key_comment (GKeyFile     *key_file,
   GString *string;
   gchar *comment;
 
-  g_return_val_if_fail (g_key_file_is_group_name (group_name), NULL);
+  g_return_val_if_fail (group_name != NULL && g_key_file_is_group_name (group_name), NULL);
 
   group = g_key_file_lookup_group (key_file, group_name);
   if (!group)
@@ -3818,7 +3828,7 @@ g_key_file_add_group (GKeyFile    *key_file,
   GKeyFileGroup *group;
 
   g_return_if_fail (key_file != NULL);
-  g_return_if_fail (g_key_file_is_group_name (group_name));
+  g_return_if_fail (group_name != NULL && g_key_file_is_group_name (group_name));
 
   group = g_key_file_lookup_group (key_file, group_name);
   if (group != NULL)
@@ -4083,17 +4093,12 @@ g_key_file_lookup_group_node (GKeyFile    *key_file,
                              const gchar *group_name)
 {
   GKeyFileGroup *group;
-  GList *tmp;
-
-  for (tmp = key_file->groups; tmp != NULL; tmp = tmp->next)
-    {
-      group = (GKeyFileGroup *) tmp->data;
 
-      if (group && group->name && strcmp (group->name, group_name) == 0)
-        break;
-    }
+  group = g_key_file_lookup_group (key_file, group_name);
+  if (group == NULL)
+    return NULL;
 
-  return tmp;
+  return g_list_find (key_file->groups, group);
 }
 
 static GKeyFileGroup *
@@ -4149,12 +4154,11 @@ g_key_file_line_is_comment (const gchar *line)
 static gboolean 
 g_key_file_is_group_name (const gchar *name)
 {
-  gchar *p, *q;
+  const gchar *p, *q;
 
-  if (name == NULL)
-    return FALSE;
+  g_assert (name != NULL);
 
-  p = q = (gchar *) name;
+  p = q = name;
   while (*q && *q != ']' && *q != '[' && !g_ascii_iscntrl (*q))
     q = g_utf8_find_next_char (q, NULL);
   
@@ -4165,19 +4169,25 @@ g_key_file_is_group_name (const gchar *name)
 }
 
 static gboolean
-g_key_file_is_key_name (const gchar *name)
+g_key_file_is_key_name (const gchar *name,
+                        gsize        len)
 {
-  gchar *p, *q;
+  const gchar *p, *q, *end;
 
-  if (name == NULL)
-    return FALSE;
+  g_assert (name != NULL);
+
+  p = q = name;
+  end = name + len;
 
-  p = q = (gchar *) name;
   /* We accept a little more than the desktop entry spec says,
    * since gnome-vfs uses mime-types as keys in its cache.
    */
-  while (*q && *q != '=' && *q != '[' && *q != ']')
-    q = g_utf8_find_next_char (q, NULL);
+  while (q < end && *q && *q != '=' && *q != '[' && *q != ']')
+    {
+      q = g_utf8_find_next_char (q, end);
+      if (q == NULL)
+        q = end;
+    }
   
   /* No empty keys, please */
   if (q == p)
@@ -4194,8 +4204,17 @@ g_key_file_is_key_name (const gchar *name)
   if (*q == '[')
     {
       q++;
-      while (*q && (g_unichar_isalnum (g_utf8_get_char_validated (q, -1)) || *q == '-' || *q == '_' || *q == '.' || *q == '@'))
-        q = g_utf8_find_next_char (q, NULL);
+      while (q < end &&
+             *q != '\0' &&
+             (g_unichar_isalnum (g_utf8_get_char_validated (q, end - q)) || *q == '-' || *q == '_' || *q == '.' || *q == '@'))
+        {
+          q = g_utf8_find_next_char (q, end);
+          if (q == NULL)
+            {
+              q = end;
+              break;
+            }
+        }
 
       if (*q != ']')
         return FALSE;     
@@ -4203,7 +4222,7 @@ g_key_file_is_key_name (const gchar *name)
       q++;
     }
 
-  if (*q != '\0')
+  if (q < end)
     return FALSE;
 
   return TRUE;
@@ -4215,9 +4234,9 @@ g_key_file_is_key_name (const gchar *name)
 static gboolean
 g_key_file_line_is_group (const gchar *line)
 {
-  gchar *p;
+  const gchar *p;
 
-  p = (gchar *) line;
+  p = line;
   if (*p != '[')
     return FALSE;
 
@@ -4243,9 +4262,9 @@ g_key_file_line_is_group (const gchar *line)
 static gboolean
 g_key_file_line_is_key_value_pair (const gchar *line)
 {
-  gchar *p;
+  const gchar *p;
 
-  p = (gchar *) g_utf8_strchr (line, -1, '=');
+  p = g_utf8_strchr (line, -1, '=');
 
   if (!p)
     return FALSE;
@@ -4264,11 +4283,12 @@ g_key_file_parse_value_as_string (GKeyFile     *key_file,
                                  GSList      **pieces,
                                  GError      **error)
 {
-  gchar *string_value, *p, *q0, *q;
+  gchar *string_value, *q0, *q;
+  const gchar *p;
 
   string_value = g_new (gchar, strlen (value) + 1);
 
-  p = (gchar *) value;
+  p = value;
   q0 = q = string_value;
   while (*p)
     {
@@ -4363,7 +4383,8 @@ g_key_file_parse_string_as_value (GKeyFile    *key_file,
                                  const gchar *string,
                                  gboolean     escape_separator)
 {
-  gchar *value, *p, *q;
+  gchar *value, *q;
+  const gchar *p;
   gsize length;
   gboolean parsing_leading_space;
 
@@ -4374,7 +4395,7 @@ g_key_file_parse_string_as_value (GKeyFile    *key_file,
    */
   value = g_new (gchar, 2 * length);
 
-  p = (gchar *) string;
+  p = string;
   q = value;
   parsing_leading_space = TRUE;
   while (p < (string + length - 1))
@@ -4560,14 +4581,14 @@ g_key_file_parse_value_as_boolean (GKeyFile     *key_file,
   return FALSE;
 }
 
-static gchar *
+static const gchar *
 g_key_file_parse_boolean_as_value (GKeyFile *key_file,
                                   gboolean  value)
 {
   if (value)
-    return g_strdup ("true");
+    return "true";
   else
-    return g_strdup ("false");
+    return "false";
 }
 
 static gchar *
index 2958fb5..e7b4984 100644 (file)
@@ -340,14 +340,48 @@ glib_init (void)
   g_error_init ();
 }
 
-#if defined (G_OS_WIN32)
+#ifdef G_PLATFORM_WIN32
+
+HMODULE glib_dll = NULL;
+void glib_win32_init (void);
+
+void
+glib_win32_init (void)
+{
+  /* May be called more than once in static compilation mode */
+  static gboolean win32_already_init = FALSE;
+  if (!win32_already_init)
+    {
+      win32_already_init = TRUE;
+
+      g_crash_handler_win32_init ();
+#ifdef THREADS_WIN32
+      g_thread_win32_init ();
+#endif
+
+      g_clock_win32_init ();
+      glib_init ();
+      /* must go after glib_init */
+      g_console_win32_init ();
+    }
+}
+
+static void
+glib_win32_deinit (gboolean detach_thread)
+{
+#ifdef THREADS_WIN32
+  if (detach_thread)
+    g_thread_win32_process_detach ();
+#endif
+  g_crash_handler_win32_deinit ();
+}
+
+#ifndef GLIB_STATIC_COMPILATION
 
 BOOL WINAPI DllMain (HINSTANCE hinstDLL,
                      DWORD     fdwReason,
                      LPVOID    lpvReserved);
 
-HMODULE glib_dll;
-
 BOOL WINAPI
 DllMain (HINSTANCE hinstDLL,
          DWORD     fdwReason,
@@ -357,14 +391,7 @@ DllMain (HINSTANCE hinstDLL,
     {
     case DLL_PROCESS_ATTACH:
       glib_dll = hinstDLL;
-      g_crash_handler_win32_init ();
-      g_clock_win32_init ();
-#ifdef THREADS_WIN32
-      g_thread_win32_init ();
-#endif
-      glib_init ();
-      /* must go after glib_init */
-      g_console_win32_init ();
+      glib_win32_init ();
       break;
 
     case DLL_THREAD_DETACH:
@@ -374,11 +401,7 @@ DllMain (HINSTANCE hinstDLL,
       break;
 
     case DLL_PROCESS_DETACH:
-#ifdef THREADS_WIN32
-      if (lpvReserved == NULL)
-        g_thread_win32_process_detach ();
-#endif
-      g_crash_handler_win32_deinit ();
+      glib_win32_deinit (lpvReserved == NULL);
       break;
 
     default:
@@ -389,7 +412,35 @@ DllMain (HINSTANCE hinstDLL,
   return TRUE;
 }
 
-#elif defined (G_HAS_CONSTRUCTORS)
+#elif defined(G_HAS_CONSTRUCTORS) /* && G_PLATFORM_WIN32 && GLIB_STATIC_COMPILATION */
+#ifdef G_DEFINE_CONSTRUCTOR_NEEDS_PRAGMA
+#pragma G_DEFINE_CONSTRUCTOR_PRAGMA_ARGS(glib_init_ctor)
+#endif
+#ifdef G_DEFINE_DESTRUCTOR_NEEDS_PRAGMA
+#pragma G_DEFINE_DESTRUCTOR_PRAGMA_ARGS(glib_init_dtor)
+#endif
+
+G_DEFINE_CONSTRUCTOR (glib_init_ctor)
+
+static void
+glib_init_ctor (void)
+{
+  glib_win32_init ();
+}
+
+G_DEFINE_DESTRUCTOR (glib_init_dtor)
+
+static void
+glib_init_dtor (void)
+{
+  glib_win32_deinit (FALSE);
+}
+
+#else /* G_PLATFORM_WIN32 && GLIB_STATIC_COMPILATION && !G_HAS_CONSTRUCTORS */
+#error Your platform/compiler is missing constructor support
+#endif /* GLIB_STATIC_COMPILATION */
+
+#elif defined(G_HAS_CONSTRUCTORS) /* && !G_PLATFORM_WIN32 */
 
 #ifdef G_DEFINE_CONSTRUCTOR_NEEDS_PRAGMA
 #pragma G_DEFINE_CONSTRUCTOR_PRAGMA_ARGS(glib_init_ctor)
@@ -402,6 +453,6 @@ glib_init_ctor (void)
   glib_init ();
 }
 
-#else
+#else /* !G_PLATFORM_WIN32 && !G_HAS_CONSTRUCTORS */
 # error Your platform/compiler is missing constructor support
-#endif
+#endif /* G_PLATFORM_WIN32 */
index 4c812d9..b77164c 100644 (file)
@@ -40,7 +40,9 @@ void g_clock_win32_init (void);
 void g_crash_handler_win32_init (void);
 void g_crash_handler_win32_deinit (void);
 gboolean _g_win32_call_rtl_version (OSVERSIONINFOEXW *info);
+
 extern HMODULE glib_dll;
+gchar *g_win32_find_helper_executable_path (const gchar *process_name, void *dll_handle);
 #endif
 
 #endif /* __GLIB_INIT_H__ */
index fa824f3..915a299 100644 (file)
@@ -20,6 +20,7 @@
 #define __GLIB_GOBJECT_H_INSIDE__
 
 #include <gobject/gbinding.h>
+#include <gobject/gbindinggroup.h>
 #include <gobject/gboxed.h>
 #include <gobject/genums.h>
 #include <gobject/glib-enumtypes.h>
@@ -27,6 +28,7 @@
 #include <gobject/gparam.h>
 #include <gobject/gparamspecs.h>
 #include <gobject/gsignal.h>
+#include <gobject/gsignalgroup.h>
 #include <gobject/gsourceclosure.h>
 #include <gobject/gtype.h>
 #include <gobject/gtypemodule.h>
index 1c0da19..0a59c6f 100644 (file)
@@ -54,6 +54,7 @@ glib__private__ (void)
     g_win32_lstat_utf8,
     g_win32_readlink_utf8,
     g_win32_fstat,
+    g_win32_find_helper_executable_path,
 #endif
   };
 
index 1b53fcc..943252f 100644 (file)
@@ -84,12 +84,42 @@ g_ignore_strv_leak (GStrv strv)
 #endif
 }
 
+/*
+ * g_begin_ignore_leaks:
+ *
+ * Tell AddressSanitizer and similar tools to ignore all leaks from this point
+ * onwards, until g_end_ignore_leaks() is called.
+ *
+ * Try to use g_ignore_leak() where possible to target deliberate leaks more
+ * specifically.
+ */
+static inline void
+g_begin_ignore_leaks (void)
+{
+#ifdef _GLIB_ADDRESS_SANITIZER
+  __lsan_disable ();
+#endif
+}
+
+/*
+ * g_end_ignore_leaks:
+ *
+ * Start ignoring leaks again; this must be paired with a previous call to
+ * g_begin_ignore_leaks().
+ */
+static inline void
+g_end_ignore_leaks (void)
+{
+#ifdef _GLIB_ADDRESS_SANITIZER
+  __lsan_enable ();
+#endif
+}
+
 GMainContext *          g_get_worker_context            (void);
 gboolean                g_check_setuid                  (void);
 GMainContext *          g_main_context_new_with_next_id (guint next_id);
 
 #ifdef G_OS_WIN32
-gchar *_glib_get_dll_directory (void);
 GLIB_AVAILABLE_IN_ALL
 gchar *_glib_get_locale_dir    (void);
 #endif
@@ -137,6 +167,10 @@ typedef struct {
 
   int                   (* g_win32_fstat)               (int                 fd,
                                                          GWin32PrivateStat  *buf);
+
+  /* See gwin32.c */
+  gchar *(*g_win32_find_helper_executable_path) (const gchar *process_name,
+                                                 void *dll_handle);
 #endif
 
 
index 83726da..fd799ea 100644 (file)
@@ -48,7 +48,7 @@ G_STATIC_ASSERT (G_ALIGNOF (GPid) == G_ALIGNOF (pid_t));
  * Most of GLib is intended to be portable; in contrast, this set of
  * functions is designed for programs which explicitly target UNIX,
  * or are using it to build higher level abstractions which would be
- * conditionally compiled if the platform matches G_OS_UNIX.
+ * conditionally compiled if the platform matches %G_OS_UNIX.
  *
  * To use these functions, you must explicitly include the
  * "glib-unix.h" header.
@@ -233,7 +233,7 @@ g_unix_signal_source_new (int signum)
 /**
  * g_unix_signal_add_full: (rename-to g_unix_signal_add)
  * @priority: the priority of the signal source. Typically this will be in
- *            the range between #G_PRIORITY_DEFAULT and #G_PRIORITY_HIGH.
+ *            the range between %G_PRIORITY_DEFAULT and %G_PRIORITY_HIGH.
  * @signum: Signal number
  * @handler: Callback
  * @user_data: Data for @handler
index a5ea9a1..53f193b 100644 (file)
@@ -43,7 +43,7 @@ G_BEGIN_DECLS
  *
  * Error domain for API in the g_unix_ namespace. Note that there is no
  * exported enumeration mapping %errno. Instead, all functions ensure that
- * %errno is relevant. The code for all #G_UNIX_ERROR is always 0, and the
+ * %errno is relevant. The code for all %G_UNIX_ERROR is always 0, and the
  * error message is always generated via g_strerror().
  *
  * It is expected that most code will not look at %errno from these APIs.
index 873cb03..e66748d 100644 (file)
@@ -20,6 +20,8 @@
 
 #mesondefine GLIB_STATIC_COMPILATION
 #mesondefine GOBJECT_STATIC_COMPILATION
+#mesondefine G_INTL_STATIC_COMPILATION
+#mesondefine FFI_STATIC_BUILD
 
 G_BEGIN_DECLS
 
index 7fc34d5..d528531 100644 (file)
 #define g_macro__has_attribute___deprecated__ G_GNUC_CHECK_VERSION (3, 1)
 #define g_macro__has_attribute_may_alias G_GNUC_CHECK_VERSION (3, 3)
 #define g_macro__has_attribute_warn_unused_result G_GNUC_CHECK_VERSION (3, 4)
+#define g_macro__has_attribute_cleanup G_GNUC_CHECK_VERSION (3, 3)
 
 #endif
 
 
 #ifndef __GI_SCANNER__
 
-#if defined (__GNUC__) || defined (__clang__)
+#if g_macro__has_attribute(cleanup)
 
 /* these macros are private */
 #define _GLIB_AUTOPTR_FUNC_NAME(TypeName) glib_autoptr_cleanup_##TypeName
index ba8e0b0..94aa115 100644 (file)
  * Each event source is assigned a priority. The default priority,
  * %G_PRIORITY_DEFAULT, is 0. Values less than 0 denote higher priorities.
  * Values greater than 0 denote lower priorities. Events from high priority
- * sources are always processed before events from lower priority sources.
+ * sources are always processed before events from lower priority sources: if
+ * several sources are ready to dispatch, the ones with equal-highest priority
+ * will be dispatched on the current #GMainContext iteration, and the rest wait
+ * until a subsequent #GMainContext iteration when they have the highest
+ * priority of the sources which are ready for dispatch.
  *
  * Idle functions can also be added, and assigned a priority. These will
- * be run whenever no events with a higher priority are ready to be processed.
+ * be run whenever no events with a higher priority are ready to be dispatched.
  *
  * The #GMainLoop data type represents a main event loop. A GMainLoop is
  * created with g_main_loop_new(). After adding the initial event sources,
  * g_main_context_prepare(), g_main_context_query(),
  * g_main_context_check() and g_main_context_dispatch().
  *
+ * If the event loop thread releases #GMainContext ownership until the results
+ * required by g_main_context_check() are ready you must create a context with
+ * the flag %G_MAIN_CONTEXT_FLAGS_OWNERLESS_POLLING or else you'll lose
+ * g_source_attach() notifications. This happens for instance when you integrate
+ * the GLib event loop into implementations that follow the proactor pattern
+ * (i.e. in these contexts the `poll()` implementation will reclaim the thread for
+ * other tasks until the results are ready). One example of the proactor pattern
+ * is the Boost.Asio library.
+ *
  * ## State of a Main Context # {#mainloop-states}
  *
  * The operation of these functions can best be seen in terms
@@ -270,6 +283,7 @@ struct _GMainContext
   GCond cond;
   GThread *owner;
   guint owner_count;
+  GMainContextFlags flags;
   GSList *waiters;
 
   gint ref_count;  /* (atomic) */
@@ -659,6 +673,23 @@ g_main_context_new_with_next_id (guint next_id)
 GMainContext *
 g_main_context_new (void)
 {
+  return g_main_context_new_with_flags (G_MAIN_CONTEXT_FLAGS_NONE);
+}
+
+/**
+ * g_main_context_new_with_flags:
+ * @flags: a bitwise-OR combination of #GMainContextFlags flags that can only be
+ *         set at creation time.
+ *
+ * Creates a new #GMainContext structure.
+ *
+ * Returns: (transfer full): the new #GMainContext
+ *
+ * Since: 2.72
+ */
+GMainContext *
+g_main_context_new_with_flags (GMainContextFlags flags)
+{
   static gsize initialised;
   GMainContext *context;
 
@@ -681,6 +712,7 @@ g_main_context_new (void)
 
   context->sources = g_hash_table_new (NULL, NULL);
   context->owner = NULL;
+  context->flags = flags;
   context->waiters = NULL;
 
   context->ref_count = 1;
@@ -1248,8 +1280,12 @@ g_source_attach_unlocked (GSource      *source,
   /* If another thread has acquired the context, wake it up since it
    * might be in poll() right now.
    */
-  if (do_wakeup && context->owner && context->owner != G_THREAD_SELF)
-    g_wakeup_signal (context->wakeup);
+  if (do_wakeup &&
+      (context->flags & G_MAIN_CONTEXT_FLAGS_OWNERLESS_POLLING ||
+       (context->owner && context->owner != G_THREAD_SELF)))
+    {
+      g_wakeup_signal (context->wakeup);
+    }
 
   g_trace_mark (G_TRACE_CURRENT_TIME, 0,
                 "GLib", "g_source_attach",
@@ -2527,7 +2563,7 @@ g_main_context_find_source_by_user_data (GMainContext *context,
  * been reissued, leading to the operation being performed against the
  * wrong source.
  *
- * Returns: For historical reasons, this function always returns %TRUE
+ * Returns: %TRUE if the source was found and removed.
  **/
 gboolean
 g_source_remove (guint tag)
@@ -4331,6 +4367,9 @@ g_main_loop_run (GMainLoop *loop)
   g_return_if_fail (loop != NULL);
   g_return_if_fail (g_atomic_int_get (&loop->ref_count) > 0);
 
+  /* Hold a reference in case the loop is unreffed from a callback function */
+  g_atomic_int_inc (&loop->ref_count);
+
   if (!g_main_context_acquire (loop->context))
     {
       gboolean got_ownership = FALSE;
@@ -4338,7 +4377,6 @@ g_main_loop_run (GMainLoop *loop)
       /* Another thread owns this context */
       LOCK_CONTEXT (loop->context);
 
-      g_atomic_int_inc (&loop->ref_count);
       g_atomic_int_set (&loop->is_running, TRUE);
 
       while (g_atomic_int_get (&loop->is_running) && !got_ownership)
@@ -4364,10 +4402,10 @@ g_main_loop_run (GMainLoop *loop)
     {
       g_warning ("g_main_loop_run(): called recursively from within a source's "
                 "check() or prepare() member, iteration not possible.");
+      g_main_loop_unref (loop);
       return;
     }
 
-  g_atomic_int_inc (&loop->ref_count);
   g_atomic_int_set (&loop->is_running, TRUE);
   while (g_atomic_int_get (&loop->is_running))
     g_main_context_iterate (loop->context, TRUE, TRUE, self);
index 8e15f3d..895814a 100644 (file)
@@ -38,6 +38,26 @@ typedef enum /*< flags >*/
   G_IO_NVAL    GLIB_SYSDEF_POLLNVAL
 } GIOCondition;
 
+/**
+ * GMainContextFlags:
+ * @G_MAIN_CONTEXT_FLAGS_NONE: Default behaviour.
+ * @G_MAIN_CONTEXT_FLAGS_OWNERLESS_POLLING: Assume that polling for events will
+ * free the thread to process other jobs. That's useful if you're using
+ * `g_main_context_{prepare,query,check,dispatch}` to integrate GMainContext in
+ * other event loops.
+ *
+ * Flags to pass to g_main_context_new_with_flags() which affect the behaviour
+ * of a #GMainContext.
+ *
+ * Since: 2.72
+ */
+GLIB_AVAILABLE_TYPE_IN_2_72
+typedef enum /*< flags >*/
+{
+  G_MAIN_CONTEXT_FLAGS_NONE = 0,
+  G_MAIN_CONTEXT_FLAGS_OWNERLESS_POLLING = 1
+} GMainContextFlags;
+
 
 /**
  * GMainContext:
@@ -102,8 +122,8 @@ typedef struct _GSourceCallbackFuncs    GSourceCallbackFuncs;
  *     connected to a callback using g_source_set_callback(). The @dispatch
  *     function should call the callback function with @user_data and whatever
  *     additional parameters are needed for this type of event source. The
- *     return value of the @dispatch function should be #G_SOURCE_REMOVE if the
- *     source should be removed or #G_SOURCE_CONTINUE to keep it.
+ *     return value of the @dispatch function should be %G_SOURCE_REMOVE if the
+ *     source should be removed or %G_SOURCE_CONTINUE to keep it.
  * @finalize: Called when the source is finalized. At this point, the source
  *     will have been destroyed, had its callback cleared, and have been removed
  *     from its #GMainContext, but it will still have its final reference count,
@@ -167,8 +187,8 @@ typedef struct _GSourceFuncs            GSourceFuncs;
  * different type to this type. Use G_SOURCE_FUNC() to avoid warnings about
  * incompatible function types.
  *
- * Returns: %FALSE if the source should be removed. #G_SOURCE_CONTINUE and
- * #G_SOURCE_REMOVE are more memorable names for the return value.
+ * Returns: %FALSE if the source should be removed. %G_SOURCE_CONTINUE and
+ * %G_SOURCE_REMOVE are more memorable names for the return value.
  */
 typedef gboolean (*GSourceFunc)       (gpointer user_data);
 
@@ -308,8 +328,8 @@ struct _GSourceFuncs
  *
  * Use this for high priority idle functions.
  *
- * GTK+ uses #G_PRIORITY_HIGH_IDLE + 10 for resizing operations,
- * and #G_PRIORITY_HIGH_IDLE + 20 for redrawing operations. (This is
+ * GTK+ uses %G_PRIORITY_HIGH_IDLE + 10 for resizing operations,
+ * and %G_PRIORITY_HIGH_IDLE + 20 for redrawing operations. (This is
  * done to ensure that any pending resizes are processed before any
  * pending redraws, so that widgets are not redrawn twice unnecessarily.)
  */
@@ -358,6 +378,10 @@ struct _GSourceFuncs
 
 GLIB_AVAILABLE_IN_ALL
 GMainContext *g_main_context_new       (void);
+G_GNUC_BEGIN_IGNORE_DEPRECATIONS
+GLIB_AVAILABLE_IN_2_72
+GMainContext *g_main_context_new_with_flags (GMainContextFlags flags);
+G_GNUC_END_IGNORE_DEPRECATIONS
 GLIB_AVAILABLE_IN_ALL
 GMainContext *g_main_context_ref       (GMainContext *context);
 GLIB_AVAILABLE_IN_ALL
index 36e7ca5..fb42011 100644 (file)
@@ -232,7 +232,7 @@ mapped_file_new_from_fd (int           fd,
  * If @filename is the name of an empty, regular file, the function
  * will successfully return an empty #GMappedFile. In other cases of
  * size 0 (e.g. device files such as /dev/null), @error will be set
- * to the #GFileError value #G_FILE_ERROR_INVAL.
+ * to the #GFileError value %G_FILE_ERROR_INVAL.
  *
  * Returns: a newly allocated #GMappedFile which must be unref'd
  *    with g_mapped_file_unref(), or %NULL if the mapping failed.
index b8327fb..cfebed3 100644 (file)
@@ -1032,7 +1032,7 @@ emit_start_element (GMarkupParseContext  *context,
    */
   if ((context->flags & G_MARKUP_IGNORE_QUALIFIED) && strchr (current_element (context), ':'))
     {
-      static const GMarkupParser ignore_parser;
+      static const GMarkupParser ignore_parser = { 0 };
       g_markup_parse_context_push (context, &ignore_parser, NULL);
       clear_attributes (context);
       return;
index 605eac1..060e91a 100644 (file)
 
 #include "gmem.h"
 
+#if defined(HAVE_POSIX_MEMALIGN) && !defined(_XOPEN_SOURCE)
+# define _XOPEN_SOURCE 600
+#endif
+
+#if defined(HAVE_MEMALIGN) || defined(HAVE__ALIGNED_MALLOC)
+/* Required for _aligned_malloc() and _aligned_free() on Windows */
+#include <malloc.h>
+#endif
+
+#ifdef HAVE__ALIGNED_MALLOC
+/* _aligned_malloc() takes parameters of aligned_malloc() in reverse order */
+# define aligned_alloc(alignment, size) _aligned_malloc (size, alignment)
+
+/* _aligned_malloc()'ed memory must be freed by _align_free() on MSVC */
+# define aligned_free(x) _aligned_free (x)
+#else
+# define aligned_free(x) free (x)
+#endif
+
 #include <stdlib.h>
 #include <string.h>
 #include <signal.h>
@@ -522,3 +541,141 @@ g_mem_profile (void)
 {
   g_warning (G_STRLOC ": memory profiling not supported");
 }
+
+/**
+ * g_aligned_alloc:
+ * @n_blocks: the number of blocks to allocate
+ * @n_block_bytes: the size of each block in bytes
+ * @alignment: the alignment to be enforced, which must be a positive power of 2
+ *   and a multiple of `sizeof(void*)`
+ *
+ * This function is similar to g_malloc(), allocating (@n_blocks * @n_block_bytes)
+ * bytes, but care is taken to align the allocated memory to with the given
+ * alignment value. Additionally, it will detect possible overflow during
+ * multiplication.
+ *
+ * Aligned memory allocations returned by this function can only be
+ * freed using g_aligned_free().
+ *
+ * Returns: (transfer full): the allocated memory
+ *
+ * Since: 2.72
+ */
+gpointer
+g_aligned_alloc (gsize n_blocks,
+                 gsize n_block_bytes,
+                 gsize alignment)
+{
+  gpointer res = NULL;
+  gsize real_size;
+
+  if (G_UNLIKELY ((alignment == 0) || (alignment & (alignment - 1)) != 0))
+    {
+      g_error ("%s: alignment %"G_GSIZE_FORMAT" must be a positive power of two",
+               G_STRLOC, alignment);
+    }
+
+  if (G_UNLIKELY ((alignment % sizeof (void *)) != 0))
+    {
+      g_error ("%s: alignment %"G_GSIZE_FORMAT" must be a multiple of %"G_GSIZE_FORMAT,
+               G_STRLOC, alignment, sizeof (void *));
+    }
+
+  if (SIZE_OVERFLOWS (n_blocks, n_block_bytes))
+    {
+      g_error ("%s: overflow allocating %"G_GSIZE_FORMAT"*%"G_GSIZE_FORMAT" bytes",
+               G_STRLOC, n_blocks, n_block_bytes);
+    }
+
+  real_size = n_blocks * n_block_bytes;
+
+  if (G_UNLIKELY (real_size == 0))
+    {
+      TRACE(GLIB_MEM_ALLOC((void*) NULL, (int) real_size, 0, 0));
+      return NULL;
+    }
+
+  /* We need to clear errno because posix_memalign() will use its return
+   * value in the same way memalign() and aligned_alloc() will set errno.
+   * Additionally, posix_memalign() will warn if its return value is left
+   * unassigned.
+   *
+   * We handle all possible return values (ENOMEM and EINVAL) with either
+   * precondition or postcondition checking.
+   */
+  errno = 0;
+
+#if defined(HAVE_POSIX_MEMALIGN)
+  errno = posix_memalign (&res, alignment, real_size);
+#elif defined(HAVE_ALIGNED_ALLOC) || defined(HAVE__ALIGNED_MALLOC)
+  /* real_size must be a multiple of alignment */
+  if (real_size % alignment != 0)
+    {
+      gsize offset = real_size % alignment;
+
+      if (G_MAXSIZE - real_size < (alignment - offset))
+        {
+          g_error ("%s: overflow allocating %"G_GSIZE_FORMAT"+%"G_GSIZE_FORMAT" bytes",
+                   G_STRLOC, real_size, (alignment - offset));
+        }
+
+      real_size += (alignment - offset);
+    }
+
+  res = aligned_alloc (alignment, real_size);
+#elif defined(HAVE_MEMALIGN)
+  res = memalign (alignment, real_size);
+#else
+# error "This platform does not have an aligned memory allocator."
+#endif
+
+  TRACE (GLIB_MEM_ALLOC((void*) res, (unsigned int) real_size, 0, 0));
+  if (res)
+    return res;
+
+  g_error ("%s: failed to allocate %"G_GSIZE_FORMAT" bytes",
+           G_STRLOC, real_size);
+
+  return NULL;
+}
+
+/**
+ * g_aligned_alloc0:
+ * @n_blocks: the number of blocks to allocate
+ * @n_block_bytes: the size of each block in bytes
+ * @alignment: the alignment to be enforced, which must be a positive power of 2
+ *   and a multiple of `sizeof(void*)`
+ *
+ * This function is similar to g_aligned_alloc(), but it will
+ * also clear the allocated memory before returning it.
+ *
+ * Returns: (transfer full): the allocated, cleared memory
+ *
+ * Since: 2.72
+ */
+gpointer
+g_aligned_alloc0 (gsize n_blocks,
+                  gsize n_block_bytes,
+                  gsize alignment)
+{
+  gpointer res = g_aligned_alloc (n_blocks, n_block_bytes, alignment);
+
+  if (G_LIKELY (res != NULL))
+    memset (res, 0, n_blocks * n_block_bytes);
+
+  return res;
+}
+
+/**
+ * g_aligned_free:
+ * @mem: (nullable): the memory to deallocate
+ *
+ * Frees the memory allocated by g_aligned_alloc().
+ *
+ * Since: 2.72
+ */
+void
+g_aligned_free (gpointer mem)
+{
+  aligned_free (mem);
+}
index 47c4735..d29907a 100644 (file)
@@ -111,6 +111,17 @@ gpointer g_try_realloc_n  (gpointer         mem,
                           gsize         n_blocks,
                           gsize         n_block_bytes) G_GNUC_WARN_UNUSED_RESULT;
 
+GLIB_AVAILABLE_IN_2_72
+gpointer g_aligned_alloc  (gsize         n_blocks,
+                           gsize         n_block_bytes,
+                           gsize         alignment) G_GNUC_WARN_UNUSED_RESULT G_GNUC_ALLOC_SIZE2(1,2);
+GLIB_AVAILABLE_IN_2_72
+gpointer g_aligned_alloc0 (gsize         n_blocks,
+                           gsize         n_block_bytes,
+                           gsize         alignment) G_GNUC_WARN_UNUSED_RESULT G_GNUC_ALLOC_SIZE2(1,2);
+GLIB_AVAILABLE_IN_2_72
+void     g_aligned_free   (gpointer      mem);
+
 #if defined(glib_typeof) && GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_58
 #define g_clear_pointer(pp, destroy)                     \
   G_STMT_START                                           \
index 2e8a348..008bf5c 100644 (file)
@@ -525,6 +525,7 @@ static gpointer          fatal_log_data;
 static GLogWriterFunc log_writer_func = g_log_writer_default;
 static gpointer       log_writer_user_data = NULL;
 static GDestroyNotify log_writer_user_data_free = NULL;
+static gboolean       g_log_debug_enabled = FALSE;  /* (atomic) */
 
 /* --- functions --- */
 
@@ -1819,7 +1820,7 @@ g_log_structured (const gchar    *log_domain,
  * contain the text shown to the user.
  *
  * The values in the @fields dictionary are likely to be of type String
- * (#G_VARIANT_TYPE_STRING). Array of bytes (#G_VARIANT_TYPE_BYTESTRING) is also
+ * (%G_VARIANT_TYPE_STRING). Array of bytes (%G_VARIANT_TYPE_BYTESTRING) is also
  * supported. In this case the message is handled as binary and will be forwarded
  * to the log writer as such. The size of the array should not be higher than
  * %G_MAXSSIZE. Otherwise it will be truncated to this size. For other types
@@ -2650,7 +2651,9 @@ should_drop_message (GLogLevelFlags   log_level,
                      gsize            n_fields)
 {
   /* Disable debug message output unless specified in G_MESSAGES_DEBUG. */
-  if (!(log_level & DEFAULT_LEVELS) && !(log_level >> G_LOG_LEVEL_USER_SHIFT))
+  if (!(log_level & DEFAULT_LEVELS) &&
+      !(log_level >> G_LOG_LEVEL_USER_SHIFT) &&
+      !g_log_get_debug_enabled ())
     {
       const gchar *domains;
       gsize i;
@@ -2882,6 +2885,47 @@ _g_log_writer_fallback (GLogLevelFlags   log_level,
 }
 
 /**
+ * g_log_get_debug_enabled:
+ *
+ * Return whether debug output from the GLib logging system is enabled.
+ *
+ * Note that this should not be used to conditionalise calls to g_debug() or
+ * other logging functions; it should only be used from %GLogWriterFunc
+ * implementations.
+ *
+ * Note also that the value of this does not depend on `G_MESSAGES_DEBUG`; see
+ * the docs for g_log_set_debug_enabled().
+ *
+ * Returns: %TRUE if debug output is enabled, %FALSE otherwise
+ *
+ * Since: 2.72
+ */
+gboolean
+g_log_get_debug_enabled (void)
+{
+  return g_atomic_int_get (&g_log_debug_enabled);
+}
+
+/**
+ * g_log_set_debug_enabled:
+ * @enabled: %TRUE to enable debug output, %FALSE otherwise
+ *
+ * Enable or disable debug output from the GLib logging system for all domains.
+ * This value interacts disjunctively with `G_MESSAGES_DEBUG` — if either of
+ * them would allow a debug message to be outputted, it will be.
+ *
+ * Note that this should not be used from within library code to enable debug
+ * output — it is intended for external use.
+ *
+ * Since: 2.72
+ */
+void
+g_log_set_debug_enabled (gboolean enabled)
+{
+  g_atomic_int_set (&g_log_debug_enabled, enabled);
+}
+
+/**
  * g_return_if_fail_warning: (skip)
  * @log_domain: (nullable): log domain
  * @pretty_function: function containing the assertion
index f0b3a86..c7efd53 100644 (file)
@@ -249,6 +249,12 @@ GLIB_AVAILABLE_IN_2_68
 gboolean        g_log_writer_default_would_drop (GLogLevelFlags  log_level,
                                                  const char     *log_domain);
 
+/* G_MESSAGES_DEBUG enablement */
+GLIB_AVAILABLE_IN_2_72
+gboolean         g_log_get_debug_enabled       (void);
+GLIB_AVAILABLE_IN_2_72
+void             g_log_set_debug_enabled       (gboolean         enabled);
+
 /**
  * G_DEBUG_HERE:
  *
index dd8f18a..891e650 100644 (file)
   use GLIB_GET_MIRRORING_DELTA(key) to access your table
 
   assumed sizeof(gint16): 2
-  required memory: 1008
+  required memory: 1116
   lookups: 4
   partition shape: Mir[256][16][4][4]
-  different table entries: 1 14 56 38
+  different table entries: 1 15 57 49
 */
 
 /* *INDENT-OFF* */
 
-static const gint16 MirLev3[4*38] = {
+static const gint16 MirLev3[4*49] = {
 #define MirLev3_0000 0x0
   0,0,0,0,
 #define MirLev3_0028 0x4
@@ -49,57 +49,79 @@ static const gint16 MirLev3[4*38] = {
   -3,-3,0,0,
 #define MirLev3_2214 0x34
   0,2016,0,0,
-#define MirLev3_2240 0x38
+#define MirLev3_221C 0x38
+  0,0,0,2527,
+#define MirLev3_2220 0x3C
+  1923,1914,1918,0,
+#define MirLev3_2224 0x40
+  2250,0,0,0,
+#define MirLev3_2240 0x44
   0,0,0,138,
-#define MirLev3_2264 0x3C
+#define MirLev3_2244 0x48
+  0,7,0,0,
+#define MirLev3_224C 0x4C
+  -7,0,0,0,
+#define MirLev3_2264 0x50
   1,-1,1,-1,
-#define MirLev3_2290 0x40
+#define MirLev3_2290 0x54
   -1,1,-1,0,
-#define MirLev3_2298 0x44
+#define MirLev3_2298 0x58
   1824,0,0,0,
-#define MirLev3_22A4 0x48
+#define MirLev3_22A4 0x5C
   0,0,2104,0,
-#define MirLev3_22A8 0x4C
+#define MirLev3_22A8 0x60
   2108,2106,0,2106,
-#define MirLev3_22C8 0x50
+#define MirLev3_22B8 0x64
+  1316,0,0,0,
+#define MirLev3_22C8 0x68
   0,1,-1,1,
-#define MirLev3_22CC 0x54
+#define MirLev3_22CC 0x6C
   -1,-138,0,0,
-#define MirLev3_22F0 0x58
+#define MirLev3_22F0 0x70
   1,-1,8,8,
-#define MirLev3_22F4 0x5C
+#define MirLev3_22F4 0x74
   8,0,7,7,
-#define MirLev3_22F8 0x60
+#define MirLev3_22F8 0x78
   0,0,-8,-8,
-#define MirLev3_22FC 0x64
+#define MirLev3_22FC 0x7C
   -8,-7,-7,0,
-#define MirLev3_2984 0x68
+#define MirLev3_27C8 0x80
+  1,-1,0,2,
+#define MirLev3_27DC 0x84
+  -1316,1,-1,0,
+#define MirLev3_2984 0x88
   -1,1,-1,1,
-#define MirLev3_298C 0x6C
+#define MirLev3_298C 0x8C
   -1,3,1,-1,
-#define MirLev3_2990 0x70
+#define MirLev3_2990 0x90
   -3,1,-1,1,
-#define MirLev3_29B8 0x74
+#define MirLev3_2998 0x94
+  -1,0,0,-1914,
+#define MirLev3_29A0 0x98
+  -1918,0,0,-1923,
+#define MirLev3_29B8 0x9C
   -1824,0,0,0,
-#define MirLev3_29F4 0x78
+#define MirLev3_29F4 0xA0
   0,-2016,0,0,
-#define MirLev3_2AAC 0x7C
+#define MirLev3_2AAC 0xA4
   1,-1,0,1,
-#define MirLev3_2AB0 0x80
-  -1,0,0,1,
-#define MirLev3_2ADC 0x84
+#define MirLev3_2ADC 0xA8
   0,0,-2104,0,
-#define MirLev3_2AE0 0x88
+#define MirLev3_2AE0 0xAC
   0,0,0,-2106,
-#define MirLev3_2AE4 0x8C
+#define MirLev3_2AE4 0xB0
   -2108,-2106,0,0,
-#define MirLev3_FF5C 0x90
+#define MirLev3_2AEC 0xB4
+  1,-1,-2250,0,
+#define MirLev3_2BFC 0xB8
+  0,0,-2527,0,
+#define MirLev3_FF5C 0xBC
   0,-2,0,1,
-#define MirLev3_FF60 0x94
+#define MirLev3_FF60 0xC0
   -1,0,1,-1,
 };
 
-static const PACKTAB_UINT8 MirLev2[4*56] = {
+static const PACKTAB_UINT8 MirLev2[4*57] = {
 #define MirLev2_0000 0x0
   MirLev3_0000,  /* 0000..0003 */
   MirLev3_0000,  /* 0004..0007 */
@@ -164,192 +186,192 @@ static const PACKTAB_UINT8 MirLev2[4*56] = {
   MirLev3_0000,  /* 2210..2213 */
   MirLev3_2214,  /* 2214..2217 */
   MirLev3_0000,  /* 2218..221B */
-  MirLev3_0000,  /* 221C..221F */
-#define MirLev2_2230 0x34
+  MirLev3_221C,  /* 221C..221F */
+#define MirLev2_2220 0x34
+  MirLev3_2220,  /* 2220..2223 */
+  MirLev3_2224,  /* 2224..2227 */
+  MirLev3_0000,  /* 2228..222B */
+  MirLev3_0000,  /* 222C..222F */
+#define MirLev2_2230 0x38
   MirLev3_0000,  /* 2230..2233 */
   MirLev3_0000,  /* 2234..2237 */
   MirLev3_0000,  /* 2238..223B */
   MirLev3_0028,  /* 223C..223F */
-#define MirLev2_2240 0x38
+#define MirLev2_2240 0x3C
   MirLev3_2240,  /* 2240..2243 */
-  MirLev3_0000,  /* 2244..2247 */
+  MirLev3_2244,  /* 2244..2247 */
   MirLev3_0000,  /* 2248..224B */
-  MirLev3_0000,  /* 224C..224F */
-#define MirLev2_2250 0x3C
+  MirLev3_224C,  /* 224C..224F */
+#define MirLev2_2250 0x40
   MirLev3_0F38,  /* 2250..2253 */
   MirLev3_0028,  /* 2254..2257 */
   MirLev3_0000,  /* 2258..225B */
   MirLev3_0000,  /* 225C..225F */
-#define MirLev2_2260 0x40
+#define MirLev2_2260 0x44
   MirLev3_0000,  /* 2260..2263 */
   MirLev3_2264,  /* 2264..2267 */
   MirLev3_2264,  /* 2268..226B */
   MirLev3_0F38,  /* 226C..226F */
-#define MirLev2_2270 0x44
+#define MirLev2_2270 0x48
   MirLev3_2264,  /* 2270..2273 */
   MirLev3_2264,  /* 2274..2277 */
   MirLev3_2264,  /* 2278..227B */
   MirLev3_2264,  /* 227C..227F */
-#define MirLev2_2280 0x48
+#define MirLev2_2280 0x4C
   MirLev3_2264,  /* 2280..2283 */
   MirLev3_2264,  /* 2284..2287 */
   MirLev3_2264,  /* 2288..228B */
   MirLev3_1698,  /* 228C..228F */
-#define MirLev2_2290 0x4C
+#define MirLev2_2290 0x50
   MirLev3_2290,  /* 2290..2293 */
   MirLev3_0000,  /* 2294..2297 */
   MirLev3_2298,  /* 2298..229B */
   MirLev3_0000,  /* 229C..229F */
-#define MirLev2_22A0 0x50
+#define MirLev2_22A0 0x54
   MirLev3_0F38,  /* 22A0..22A3 */
   MirLev3_22A4,  /* 22A4..22A7 */
   MirLev3_22A8,  /* 22A8..22AB */
   MirLev3_0000,  /* 22AC..22AF */
-#define MirLev2_22B0 0x54
+#define MirLev2_22B0 0x58
   MirLev3_2264,  /* 22B0..22B3 */
   MirLev3_2264,  /* 22B4..22B7 */
-  MirLev3_0000,  /* 22B8..22BB */
+  MirLev3_22B8,  /* 22B8..22BB */
   MirLev3_0000,  /* 22BC..22BF */
-#define MirLev2_22C0 0x58
+#define MirLev2_22C0 0x5C
   MirLev3_0000,  /* 22C0..22C3 */
   MirLev3_0000,  /* 22C4..22C7 */
   MirLev3_22C8,  /* 22C8..22CB */
   MirLev3_22CC,  /* 22CC..22CF */
-#define MirLev2_22D0 0x5C
+#define MirLev2_22D0 0x60
   MirLev3_0028,  /* 22D0..22D3 */
   MirLev3_0F38,  /* 22D4..22D7 */
   MirLev3_2264,  /* 22D8..22DB */
   MirLev3_2264,  /* 22DC..22DF */
-#define MirLev2_22E0 0x60
+#define MirLev2_22E0 0x64
   MirLev3_2264,  /* 22E0..22E3 */
   MirLev3_2264,  /* 22E4..22E7 */
   MirLev3_2264,  /* 22E8..22EB */
   MirLev3_0028,  /* 22EC..22EF */
-#define MirLev2_22F0 0x64
+#define MirLev2_22F0 0x68
   MirLev3_22F0,  /* 22F0..22F3 */
   MirLev3_22F4,  /* 22F4..22F7 */
   MirLev3_22F8,  /* 22F8..22FB */
   MirLev3_22FC,  /* 22FC..22FF */
-#define MirLev2_2300 0x68
+#define MirLev2_2300 0x6C
   MirLev3_0000,  /* 2300..2303 */
   MirLev3_0000,  /* 2304..2307 */
   MirLev3_2264,  /* 2308..230B */
   MirLev3_0000,  /* 230C..230F */
-#define MirLev2_2760 0x6C
+#define MirLev2_2760 0x70
   MirLev3_0000,  /* 2760..2763 */
   MirLev3_0000,  /* 2764..2767 */
   MirLev3_2264,  /* 2768..276B */
   MirLev3_2264,  /* 276C..276F */
-#define MirLev2_2770 0x70
+#define MirLev2_2770 0x74
   MirLev3_2264,  /* 2770..2773 */
   MirLev3_0028,  /* 2774..2777 */
   MirLev3_0000,  /* 2778..277B */
   MirLev3_0000,  /* 277C..277F */
-#define MirLev2_27C0 0x74
+#define MirLev2_27C0 0x78
   MirLev3_1698,  /* 27C0..27C3 */
   MirLev3_2290,  /* 27C4..27C7 */
-  MirLev3_0028,  /* 27C8..27CB */
-  MirLev3_0000,  /* 27CC..27CF */
-#define MirLev2_27D0 0x78
+  MirLev3_27C8,  /* 27C8..27CB */
+  MirLev3_005C,  /* 27CC..27CF */
+#define MirLev2_27D0 0x7C
   MirLev3_0000,  /* 27D0..27D3 */
   MirLev3_2038,  /* 27D4..27D7 */
   MirLev3_0000,  /* 27D8..27DB */
-  MirLev3_2038,  /* 27DC..27DF */
-#define MirLev2_27E0 0x7C
+  MirLev3_27DC,  /* 27DC..27DF */
+#define MirLev2_27E0 0x80
   MirLev3_0F38,  /* 27E0..27E3 */
   MirLev3_2264,  /* 27E4..27E7 */
   MirLev3_2264,  /* 27E8..27EB */
   MirLev3_2264,  /* 27EC..27EF */
-#define MirLev2_2980 0x80
+#define MirLev2_2980 0x84
   MirLev3_1698,  /* 2980..2983 */
   MirLev3_2984,  /* 2984..2987 */
   MirLev3_2984,  /* 2988..298B */
   MirLev3_298C,  /* 298C..298F */
-#define MirLev2_2990 0x84
+#define MirLev2_2990 0x88
   MirLev3_2990,  /* 2990..2993 */
   MirLev3_2984,  /* 2994..2997 */
-  MirLev3_169C,  /* 2998..299B */
+  MirLev3_2998,  /* 2998..299B */
   MirLev3_0000,  /* 299C..299F */
-#define MirLev2_29B0 0x88
+#define MirLev2_29A0 0x8C
+  MirLev3_29A0,  /* 29A0..29A3 */
+  MirLev3_0028,  /* 29A4..29A7 */
+  MirLev3_2264,  /* 29A8..29AB */
+  MirLev3_2264,  /* 29AC..29AF */
+#define MirLev2_29B0 0x90
   MirLev3_0000,  /* 29B0..29B3 */
   MirLev3_0000,  /* 29B4..29B7 */
   MirLev3_29B8,  /* 29B8..29BB */
   MirLev3_0000,  /* 29BC..29BF */
-#define MirLev2_29C0 0x8C
+#define MirLev2_29C0 0x94
   MirLev3_0028,  /* 29C0..29C3 */
   MirLev3_0028,  /* 29C4..29C7 */
   MirLev3_0000,  /* 29C8..29CB */
   MirLev3_1698,  /* 29CC..29CF */
-#define MirLev2_29D0 0x90
+#define MirLev2_29D0 0x98
   MirLev3_2290,  /* 29D0..29D3 */
   MirLev3_0028,  /* 29D4..29D7 */
   MirLev3_2264,  /* 29D8..29DB */
   MirLev3_0000,  /* 29DC..29DF */
-#define MirLev2_29F0 0x94
+#define MirLev2_29F0 0x9C
   MirLev3_0000,  /* 29F0..29F3 */
   MirLev3_29F4,  /* 29F4..29F7 */
   MirLev3_0028,  /* 29F8..29FB */
   MirLev3_0028,  /* 29FC..29FF */
-#define MirLev2_2A20 0x98
+#define MirLev2_2A20 0xA0
   MirLev3_0000,  /* 2A20..2A23 */
   MirLev3_0000,  /* 2A24..2A27 */
   MirLev3_1698,  /* 2A28..2A2B */
   MirLev3_2290,  /* 2A2C..2A2F */
-#define MirLev2_2A30 0x9C
+#define MirLev2_2A30 0xA4
   MirLev3_0000,  /* 2A30..2A33 */
   MirLev3_0028,  /* 2A34..2A37 */
   MirLev3_0000,  /* 2A38..2A3B */
   MirLev3_0028,  /* 2A3C..2A3F */
-#define MirLev2_2A60 0xA0
+#define MirLev2_2A60 0xA8
   MirLev3_0000,  /* 2A60..2A63 */
   MirLev3_0028,  /* 2A64..2A67 */
   MirLev3_0000,  /* 2A68..2A6B */
   MirLev3_0000,  /* 2A6C..2A6F */
-#define MirLev2_2A70 0xA4
+#define MirLev2_2A70 0xAC
   MirLev3_0000,  /* 2A70..2A73 */
   MirLev3_0000,  /* 2A74..2A77 */
-  MirLev3_2038,  /* 2A78..2A7B */
-  MirLev3_22C8,  /* 2A7C..2A7F */
-#define MirLev2_2A80 0xA8
+  MirLev3_22C8,  /* 2A78..2A7B */
+  MirLev3_2984,  /* 2A7C..2A7F */
+#define MirLev2_2A80 0xB0
   MirLev3_2984,  /* 2A80..2A83 */
-  MirLev3_169C,  /* 2A84..2A87 */
-  MirLev3_1698,  /* 2A88..2A8B */
-  MirLev3_169C,  /* 2A8C..2A8F */
-#define MirLev2_2A90 0xAC
-  MirLev3_22C8,  /* 2A90..2A93 */
-  MirLev3_2984,  /* 2A94..2A97 */
-  MirLev3_2984,  /* 2A98..2A9B */
-  MirLev3_169C,  /* 2A9C..2A9F */
-#define MirLev2_2AA0 0xB0
-  MirLev3_2038,  /* 2AA0..2AA3 */
+  MirLev3_2984,  /* 2A84..2A87 */
+  MirLev3_2984,  /* 2A88..2A8B */
+  MirLev3_2984,  /* 2A8C..2A8F */
+#define MirLev2_2AA0 0xB4
+  MirLev3_2290,  /* 2AA0..2AA3 */
   MirLev3_0F38,  /* 2AA4..2AA7 */
   MirLev3_2264,  /* 2AA8..2AAB */
   MirLev3_2AAC,  /* 2AAC..2AAF */
-#define MirLev2_2AB0 0xB4
-  MirLev3_2AB0,  /* 2AB0..2AB3 */
-  MirLev3_169C,  /* 2AB4..2AB7 */
-  MirLev3_1698,  /* 2AB8..2ABB */
-  MirLev3_2984,  /* 2ABC..2ABF */
-#define MirLev2_2AC0 0xB8
-  MirLev3_2984,  /* 2AC0..2AC3 */
-  MirLev3_2290,  /* 2AC4..2AC7 */
-  MirLev3_0000,  /* 2AC8..2ACB */
-  MirLev3_22C8,  /* 2ACC..2ACF */
-#define MirLev2_2AD0 0xBC
+#define MirLev2_2AD0 0xB8
   MirLev3_2984,  /* 2AD0..2AD3 */
   MirLev3_2290,  /* 2AD4..2AD7 */
   MirLev3_0000,  /* 2AD8..2ADB */
   MirLev3_2ADC,  /* 2ADC..2ADF */
-#define MirLev2_2AE0 0xC0
+#define MirLev2_2AE0 0xBC
   MirLev3_2AE0,  /* 2AE0..2AE3 */
   MirLev3_2AE4,  /* 2AE4..2AE7 */
   MirLev3_0000,  /* 2AE8..2AEB */
-  MirLev3_0028,  /* 2AEC..2AEF */
-#define MirLev2_2AF0 0xC4
+  MirLev3_2AEC,  /* 2AEC..2AEF */
+#define MirLev2_2AF0 0xC0
   MirLev3_0000,  /* 2AF0..2AF3 */
   MirLev3_1698,  /* 2AF4..2AF7 */
   MirLev3_2290,  /* 2AF8..2AFB */
   MirLev3_0000,  /* 2AFC..2AFF */
+#define MirLev2_2BF0 0xC4
+  MirLev3_0000,  /* 2BF0..2BF3 */
+  MirLev3_0000,  /* 2BF4..2BF7 */
+  MirLev3_0000,  /* 2BF8..2BFB */
+  MirLev3_2BFC,  /* 2BFC..2BFF */
 #define MirLev2_2E00 0xC8
   MirLev3_0F38,  /* 2E00..2E03 */
   MirLev3_0028,  /* 2E04..2E07 */
@@ -360,29 +382,34 @@ static const PACKTAB_UINT8 MirLev2[4*56] = {
   MirLev3_2264,  /* 2E24..2E27 */
   MirLev3_0028,  /* 2E28..2E2B */
   MirLev3_0000,  /* 2E2C..2E2F */
-#define MirLev2_3010 0xD0
+#define MirLev2_2E50 0xD0
+  MirLev3_0000,  /* 2E50..2E53 */
+  MirLev3_22C8,  /* 2E54..2E57 */
+  MirLev3_2984,  /* 2E58..2E5B */
+  MirLev3_169C,  /* 2E5C..2E5F */
+#define MirLev2_3010 0xD4
   MirLev3_0028,  /* 3010..3013 */
   MirLev3_2264,  /* 3014..3017 */
   MirLev3_2264,  /* 3018..301B */
   MirLev3_0000,  /* 301C..301F */
-#define MirLev2_FE50 0xD4
+#define MirLev2_FE50 0xD8
   MirLev3_0000,  /* FE50..FE53 */
   MirLev3_0000,  /* FE54..FE57 */
   MirLev3_22C8,  /* FE58..FE5B */
   MirLev3_2290,  /* FE5C..FE5F */
-#define MirLev2_FF50 0xD8
+#define MirLev2_FF50 0xDC
   MirLev3_0000,  /* FF50..FF53 */
   MirLev3_0000,  /* FF54..FF57 */
   MirLev3_0058,  /* FF58..FF5B */
   MirLev3_FF5C,  /* FF5C..FF5F */
-#define MirLev2_FF60 0xDC
+#define MirLev2_FF60 0xE0
   MirLev3_FF60,  /* FF60..FF63 */
   MirLev3_0000,  /* FF64..FF67 */
   MirLev3_0000,  /* FF68..FF6B */
   MirLev3_0000,  /* FF6C..FF6F */
 };
 
-static const PACKTAB_UINT8 MirLev1[16*14] = {
+static const PACKTAB_UINT8 MirLev1[16*15] = {
 #define MirLev1_0000 0x0
   MirLev2_0000,  /* 0000..000F */
   MirLev2_0000,  /* 0010..001F */
@@ -471,7 +498,7 @@ static const PACKTAB_UINT8 MirLev1[16*14] = {
 #define MirLev1_2200 0x50
   MirLev2_2200,  /* 2200..220F */
   MirLev2_2210,  /* 2210..221F */
-  MirLev2_0000,  /* 2220..222F */
+  MirLev2_2220,  /* 2220..222F */
   MirLev2_2230,  /* 2230..223F */
   MirLev2_2240,  /* 2240..224F */
   MirLev2_2250,  /* 2250..225F */
@@ -530,11 +557,11 @@ static const PACKTAB_UINT8 MirLev1[16*14] = {
   MirLev2_0000,  /* 2970..297F */
   MirLev2_2980,  /* 2980..298F */
   MirLev2_2990,  /* 2990..299F */
-  MirLev2_0000,  /* 29A0..29AF */
+  MirLev2_29A0,  /* 29A0..29AF */
   MirLev2_29B0,  /* 29B0..29BF */
   MirLev2_29C0,  /* 29C0..29CF */
   MirLev2_29D0,  /* 29D0..29DF */
-  MirLev2_0000,  /* 29E0..29EF */
+  MirLev2_0020,  /* 29E0..29EF */
   MirLev2_29F0,  /* 29F0..29FF */
 #define MirLev1_2A00 0x90
   MirLev2_0000,  /* 2A00..2A0F */
@@ -546,20 +573,37 @@ static const PACKTAB_UINT8 MirLev1[16*14] = {
   MirLev2_2A60,  /* 2A60..2A6F */
   MirLev2_2A70,  /* 2A70..2A7F */
   MirLev2_2A80,  /* 2A80..2A8F */
-  MirLev2_2A90,  /* 2A90..2A9F */
+  MirLev2_2A80,  /* 2A90..2A9F */
   MirLev2_2AA0,  /* 2AA0..2AAF */
-  MirLev2_2AB0,  /* 2AB0..2ABF */
-  MirLev2_2AC0,  /* 2AC0..2ACF */
+  MirLev2_2A80,  /* 2AB0..2ABF */
+  MirLev2_2A80,  /* 2AC0..2ACF */
   MirLev2_2AD0,  /* 2AD0..2ADF */
   MirLev2_2AE0,  /* 2AE0..2AEF */
   MirLev2_2AF0,  /* 2AF0..2AFF */
-#define MirLev1_2E00 0xA0
+#define MirLev1_2B00 0xA0
+  MirLev2_0000,  /* 2B00..2B0F */
+  MirLev2_0000,  /* 2B10..2B1F */
+  MirLev2_0000,  /* 2B20..2B2F */
+  MirLev2_0000,  /* 2B30..2B3F */
+  MirLev2_0000,  /* 2B40..2B4F */
+  MirLev2_0000,  /* 2B50..2B5F */
+  MirLev2_0000,  /* 2B60..2B6F */
+  MirLev2_0000,  /* 2B70..2B7F */
+  MirLev2_0000,  /* 2B80..2B8F */
+  MirLev2_0000,  /* 2B90..2B9F */
+  MirLev2_0000,  /* 2BA0..2BAF */
+  MirLev2_0000,  /* 2BB0..2BBF */
+  MirLev2_0000,  /* 2BC0..2BCF */
+  MirLev2_0000,  /* 2BD0..2BDF */
+  MirLev2_0000,  /* 2BE0..2BEF */
+  MirLev2_2BF0,  /* 2BF0..2BFF */
+#define MirLev1_2E00 0xB0
   MirLev2_2E00,  /* 2E00..2E0F */
   MirLev2_2230,  /* 2E10..2E1F */
   MirLev2_2E20,  /* 2E20..2E2F */
   MirLev2_0000,  /* 2E30..2E3F */
   MirLev2_0000,  /* 2E40..2E4F */
-  MirLev2_0000,  /* 2E50..2E5F */
+  MirLev2_2E50,  /* 2E50..2E5F */
   MirLev2_0000,  /* 2E60..2E6F */
   MirLev2_0000,  /* 2E70..2E7F */
   MirLev2_0000,  /* 2E80..2E8F */
@@ -570,7 +614,7 @@ static const PACKTAB_UINT8 MirLev1[16*14] = {
   MirLev2_0000,  /* 2ED0..2EDF */
   MirLev2_0000,  /* 2EE0..2EEF */
   MirLev2_0000,  /* 2EF0..2EFF */
-#define MirLev1_3000 0xB0
+#define MirLev1_3000 0xC0
   MirLev2_2760,  /* 3000..300F */
   MirLev2_3010,  /* 3010..301F */
   MirLev2_0000,  /* 3020..302F */
@@ -587,7 +631,7 @@ static const PACKTAB_UINT8 MirLev1[16*14] = {
   MirLev2_0000,  /* 30D0..30DF */
   MirLev2_0000,  /* 30E0..30EF */
   MirLev2_0000,  /* 30F0..30FF */
-#define MirLev1_FE00 0xC0
+#define MirLev1_FE00 0xD0
   MirLev2_0000,  /* FE00..FE0F */
   MirLev2_0000,  /* FE10..FE1F */
   MirLev2_0000,  /* FE20..FE2F */
@@ -604,7 +648,7 @@ static const PACKTAB_UINT8 MirLev1[16*14] = {
   MirLev2_0000,  /* FED0..FEDF */
   MirLev2_0000,  /* FEE0..FEEF */
   MirLev2_0000,  /* FEF0..FEFF */
-#define MirLev1_FF00 0xD0
+#define MirLev1_FF00 0xE0
   MirLev2_0020,  /* FF00..FF0F */
   MirLev2_0030,  /* FF10..FF1F */
   MirLev2_0000,  /* FF20..FF2F */
@@ -668,7 +712,7 @@ static const PACKTAB_UINT8 MirLev0[256*1] = {
   MirLev1_0100,  /* 2800..28FF */
   MirLev1_2900,  /* 2900..29FF */
   MirLev1_2A00,  /* 2A00..2AFF */
-  MirLev1_0100,  /* 2B00..2BFF */
+  MirLev1_2B00,  /* 2B00..2BFF */
   MirLev1_0100,  /* 2C00..2CFF */
   MirLev1_0100,  /* 2D00..2DFF */
   MirLev1_2E00,  /* 2E00..2EFF */
index 8cb7237..6806013 100644 (file)
@@ -336,7 +336,7 @@ G_DEFINE_QUARK (g-option-context-error-quark, g_option_error)
  * The @parameter_string can serve multiple purposes. It can be used
  * to add descriptions for "rest" arguments, which are not parsed by
  * the #GOptionContext, typically something like "FILES" or
- * "FILE1 FILE2...". If you are using #G_OPTION_REMAINING for
+ * "FILE1 FILE2...". If you are using %G_OPTION_REMAINING for
  * collecting "rest" arguments, GLib handles this automatically by
  * using the @arg_description of the corresponding #GOptionEntry in
  * the usage summary.
@@ -2113,8 +2113,7 @@ g_option_context_parse (GOptionContext   *context,
                   gboolean has_h_entry = context_has_h_entry (context);
                   arg = (*argv)[i] + 1;
                   arg_length = strlen (arg);
-                  nulled_out = g_newa (gboolean, arg_length);
-                  memset (nulled_out, 0, arg_length * sizeof (gboolean));
+                  nulled_out = g_newa0 (gboolean, arg_length);
                   for (j = 0; j < arg_length; j++)
                     {
                       if (context->help_enabled && (arg[j] == '?' ||
index 44815a7..7e9c1a3 100644 (file)
@@ -278,7 +278,7 @@ struct _GOptionEntry
  * or %G_OPTION_ARG_FILENAME_ARRAY.
  * 
  * 
- * Using #G_OPTION_REMAINING instead of simply scanning `argv`
+ * Using %G_OPTION_REMAINING instead of simply scanning `argv`
  * for leftover arguments has the advantage that GOption takes care of 
  * necessary encoding conversions for strings or filenames.
  * 
index 9b66017..4d2d962 100644 (file)
@@ -21,6 +21,8 @@
 #include "gutils.h"
 #include "gstrfuncs.h"
 
+void load_user_special_dirs_macos (gchar **table);
+
 static gchar *
 find_folder (NSSearchPathDirectory type)
 {
@@ -51,4 +53,4 @@ load_user_special_dirs_macos(gchar **table)
   table[G_USER_DIRECTORY_PUBLIC_SHARE] = find_folder (NSSharedPublicDirectory);
   table[G_USER_DIRECTORY_TEMPLATES] = NULL;
   table[G_USER_DIRECTORY_VIDEOS] = find_folder (NSMoviesDirectory);
-}
\ No newline at end of file
+}
index 2681d91..bd29ea6 100644 (file)
@@ -135,7 +135,7 @@ poll_rest (GPollFD *msg_fd,
            HANDLE  *handles,
            GPollFD *handle_to_fd[],
            gint     nhandles,
-           gint     timeout_ms)
+           DWORD    timeout_ms)
 {
   DWORD ready;
   GPollFD *f;
@@ -147,7 +147,7 @@ poll_rest (GPollFD *msg_fd,
        * -> Use MsgWaitForMultipleObjectsEx
        */
       if (_g_main_poll_debug)
-       g_print ("  MsgWaitForMultipleObjectsEx(%d, %d)\n", nhandles, timeout_ms);
+       g_print ("  MsgWaitForMultipleObjectsEx(%d, %lu)\n", nhandles, timeout_ms);
 
       ready = MsgWaitForMultipleObjectsEx (nhandles, handles, timeout_ms,
                                           QS_ALLINPUT, MWMO_ALERTABLE);
@@ -177,7 +177,7 @@ poll_rest (GPollFD *msg_fd,
        * -> Use WaitForMultipleObjectsEx
        */
       if (_g_main_poll_debug)
-       g_print ("  WaitForMultipleObjectsEx(%d, %d)\n", nhandles, timeout_ms);
+       g_print ("  WaitForMultipleObjectsEx(%d, %lu)\n", nhandles, timeout_ms);
 
       ready = WaitForMultipleObjectsEx (nhandles, handles, FALSE, timeout_ms, TRUE);
       if (ready == WAIT_FAILED)
@@ -216,7 +216,7 @@ poll_rest (GPollFD *msg_fd,
       recursed_result = poll_rest (NULL, stop_fd, 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)
+  else if (ready < WAIT_OBJECT_0 + nhandles)
     {
       int retval;
 
@@ -258,7 +258,7 @@ typedef struct
   GPollFD *msg_fd;
   GPollFD *stop_fd;
   gint nhandles;
-  gint timeout_ms;
+  DWORD    timeout_ms;
 } GWin32PollThreadData;
 
 static gint
@@ -295,7 +295,7 @@ poll_single_thread (GWin32PollThreadData *data)
 static void
 fill_poll_thread_data (GPollFD              *fds,
                        guint                 nfds,
-                       gint                  timeout_ms,
+                       DWORD                 timeout_ms,
                        GPollFD              *stop_fd,
                        GWin32PollThreadData *data)
 {
@@ -474,7 +474,7 @@ g_poll (GPollFD *fds,
   for (i = 0; i < nthreads; i++)
     {
       if (GetExitCodeThread (thread_handles[i], &thread_retval))
-        retval = retval == -1 ? -1 : thread_retval == -1 ? -1 : retval + thread_retval;
+        retval = (retval == -1) ? -1 : ((thread_retval == (DWORD) -1) ? -1 : (int) (retval + thread_retval));
 
       CloseHandle (thread_handles[i]);
     }
index 555a630..7a88033 100644 (file)
@@ -295,7 +295,8 @@ g_vsnprintf (gchar   *string,
 
 /**
  * g_vasprintf:
- * @string: (not optional) (nullable): the return location for the newly-allocated string.
+ * @string: (not optional) (nullable): the return location for the newly-allocated string,
+ *   which will be %NULL if (and only if) this function fails
  * @format: (not nullable): a standard printf() format string, but notice
  *          [string precision pitfalls][string-precision]
  * @args: the list of arguments to insert in the output.
@@ -312,7 +313,7 @@ g_vsnprintf (gchar   *string,
  *
  * `glib/gprintf.h` must be explicitly included in order to use this function.
  *
- * Returns: the number of bytes printed.
+ * Returns: the number of bytes printed, or `-1` on failure
  *
  * Since: 2.4
  **/
@@ -356,6 +357,12 @@ g_vasprintf (gchar      **string,
 
     len = _g_vsprintf (*string, format, args2);
     va_end (args2);
+
+    if (len < 0)
+      {
+        g_free (*string);
+        *string = NULL;
+      }
   }
 #endif
 
index 90e65ae..86580f5 100644 (file)
@@ -263,16 +263,15 @@ msort_r (void *b, size_t n, size_t s, GCompareDataFunc cmp, void *arg)
   else
     {
       if ((s & (sizeof (guint32) - 1)) == 0
-         && ((char *) b - (char *) 0) % ALIGNOF_GUINT32 == 0)
+         && (guintptr) b % ALIGNOF_GUINT32 == 0)
        {
          if (s == sizeof (guint32))
            p.var = 0;
          else if (s == sizeof (guint64)
-                  && ((char *) b - (char *) 0) % ALIGNOF_GUINT64 == 0)
+                  && (guintptr) b % ALIGNOF_GUINT64 == 0)
            p.var = 1;
          else if ((s & (sizeof (unsigned long) - 1)) == 0
-                  && ((char *) b - (char *) 0)
-                     % ALIGNOF_UNSIGNED_LONG == 0)
+                  && (guintptr) b % ALIGNOF_UNSIGNED_LONG == 0)
            p.var = 2;
        }
       msort_with_tmp (&p, b, n);
index f7acb94..d53af7d 100644 (file)
@@ -41,7 +41,7 @@
  *
  * To create a new GQueue, use g_queue_new().
  *
- * To initialize a statically-allocated GQueue, use #G_QUEUE_INIT or
+ * To initialize a statically-allocated GQueue, use %G_QUEUE_INIT or
  * g_queue_init().
  *
  * To add elements, use g_queue_push_head(), g_queue_push_head_link(),
@@ -118,7 +118,7 @@ g_queue_free_full (GQueue        *queue,
  *
  * A statically-allocated #GQueue must be initialized with this function
  * before it can be used. Alternatively you can initialize it with
- * #G_QUEUE_INIT. It is not necessary to initialize queues created with
+ * %G_QUEUE_INIT. It is not necessary to initialize queues created with
  * g_queue_new().
  *
  * Since: 2.14
index a8a35a4..1aa8416 100644 (file)
@@ -45,7 +45,7 @@
  * Perl regular expression.
  *
  * Some functions accept a @start_position argument, setting it differs
- * from just passing over a shortened string and setting #G_REGEX_MATCH_NOTBOL
+ * from just passing over a shortened string and setting %G_REGEX_MATCH_NOTBOL
  * in the case of a pattern that begins with any kind of lookbehind assertion.
  * For example, consider the pattern "\Biss\B" which finds occurrences of "iss"
  * in the middle of words. ("\B" matches only if the current position in the
  * it is able to look behind the starting point to discover that it is
  * preceded by a letter.
  *
- * Note that, unless you set the #G_REGEX_RAW flag, all the strings passed
+ * Note that, unless you set the %G_REGEX_RAW flag, all the strings passed
  * to these functions must be encoded in UTF-8. The lengths and the positions
  * inside the strings are in bytes and not in characters, so, for instance,
  * "\xc3\xa0" (i.e. "à") is two bytes long but it is treated as a
- * single character. If you set #G_REGEX_RAW the strings can be non-valid
+ * single character. If you set %G_REGEX_RAW the strings can be non-valid
  * UTF-8 strings and a byte is treated as a character, so "\xc3\xa0" is two
  * bytes and two characters long.
  *
  * The behaviour of the dot, circumflex, and dollar metacharacters are
  * affected by newline characters, the default is to recognize any newline
  * character (the same characters recognized by "\R"). This can be changed
- * with #G_REGEX_NEWLINE_CR, #G_REGEX_NEWLINE_LF and #G_REGEX_NEWLINE_CRLF
- * compile options, and with #G_REGEX_MATCH_NEWLINE_ANY,
- * #G_REGEX_MATCH_NEWLINE_CR, #G_REGEX_MATCH_NEWLINE_LF and
- * #G_REGEX_MATCH_NEWLINE_CRLF match options. These settings are also
- * relevant when compiling a pattern if #G_REGEX_EXTENDED is set, and an
+ * with %G_REGEX_NEWLINE_CR, %G_REGEX_NEWLINE_LF and %G_REGEX_NEWLINE_CRLF
+ * compile options, and with %G_REGEX_MATCH_NEWLINE_ANY,
+ * %G_REGEX_MATCH_NEWLINE_CR, %G_REGEX_MATCH_NEWLINE_LF and
+ * %G_REGEX_MATCH_NEWLINE_CRLF match options. These settings are also
+ * relevant when compiling a pattern if %G_REGEX_EXTENDED is set, and an
  * unescaped "#" outside a character class is encountered. This indicates
  * a comment that lasts until after the next newline.
  *
@@ -860,19 +860,19 @@ g_match_info_get_match_count (const GMatchInfo *match_info)
  * able to raise an error as soon as a mistake is made.
  *
  * GRegex supports the concept of partial matching by means of the
- * #G_REGEX_MATCH_PARTIAL_SOFT and #G_REGEX_MATCH_PARTIAL_HARD flags.
+ * %G_REGEX_MATCH_PARTIAL_SOFT and %G_REGEX_MATCH_PARTIAL_HARD flags.
  * When they are used, the return code for
  * g_regex_match() or g_regex_match_full() is, as usual, %TRUE
  * for a complete match, %FALSE otherwise. But, when these functions
  * return %FALSE, you can check if the match was partial calling
  * g_match_info_is_partial_match().
  *
- * The difference between #G_REGEX_MATCH_PARTIAL_SOFT and 
- * #G_REGEX_MATCH_PARTIAL_HARD is that when a partial match is encountered
- * with #G_REGEX_MATCH_PARTIAL_SOFT, matching continues to search for a
- * possible complete match, while with #G_REGEX_MATCH_PARTIAL_HARD matching
+ * The difference between %G_REGEX_MATCH_PARTIAL_SOFT and
+ * %G_REGEX_MATCH_PARTIAL_HARD is that when a partial match is encountered
+ * with %G_REGEX_MATCH_PARTIAL_SOFT, matching continues to search for a
+ * possible complete match, while with %G_REGEX_MATCH_PARTIAL_HARD matching
  * stops at the partial match.
- * When both #G_REGEX_MATCH_PARTIAL_SOFT and #G_REGEX_MATCH_PARTIAL_HARD
+ * When both %G_REGEX_MATCH_PARTIAL_SOFT and %G_REGEX_MATCH_PARTIAL_HARD
  * are set, the latter takes precedence.
  *
  * There were formerly some restrictions on the pattern for partial matching.
@@ -903,7 +903,7 @@ g_match_info_is_partial_match (const GMatchInfo *match_info)
  * match done with @string against @regex and have the same syntax used by
  * g_regex_replace().
  *
- * The @string_to_expand must be UTF-8 encoded even if #G_REGEX_RAW was
+ * The @string_to_expand must be UTF-8 encoded even if %G_REGEX_RAW was
  * passed to g_regex_new().
  *
  * The backreferences are extracted from the string passed to the match
@@ -1739,7 +1739,7 @@ g_regex_match (const GRegex      *regex,
  * flexibility in reusing #GRegex structures.
  *
  * Setting @start_position differs from just passing over a shortened
- * string and setting #G_REGEX_MATCH_NOTBOL in the case of a pattern
+ * string and setting %G_REGEX_MATCH_NOTBOL in the case of a pattern
  * that begins with any kind of lookbehind assertion, such as "\b".
  *
  * Unless %G_REGEX_RAW is specified in the options, @string must be valid UTF-8.
@@ -1890,7 +1890,7 @@ g_regex_match_all (const GRegex      *regex,
  * is not able to capture substrings, so backreferences do not work.
  *
  * Setting @start_position differs from just passing over a shortened
- * string and setting #G_REGEX_MATCH_NOTBOL in the case of a pattern
+ * string and setting %G_REGEX_MATCH_NOTBOL in the case of a pattern
  * that begins with any kind of lookbehind assertion, such as "\b".
  *
  * Unless %G_REGEX_RAW is specified in the options, @string must be valid UTF-8.
@@ -2163,7 +2163,7 @@ g_regex_split (const GRegex     *regex,
  * "a", "b" and "c".
  *
  * Setting @start_position differs from just passing over a shortened
- * string and setting #G_REGEX_MATCH_NOTBOL in the case of a pattern
+ * string and setting %G_REGEX_MATCH_NOTBOL in the case of a pattern
  * that begins with any kind of lookbehind assertion, such as "\b".
  *
  * Returns: (transfer full): a %NULL-terminated gchar ** array. Free
@@ -2792,12 +2792,12 @@ interpolation_list_needs_match (GList *list)
  *
  * If you do not need to use backreferences use g_regex_replace_literal().
  *
- * The @replacement string must be UTF-8 encoded even if #G_REGEX_RAW was
+ * The @replacement string must be UTF-8 encoded even if %G_REGEX_RAW was
  * passed to g_regex_new(). If you want to use not UTF-8 encoded strings
  * you can use g_regex_replace_literal().
  *
  * Setting @start_position differs from just passing over a shortened
- * string and setting #G_REGEX_MATCH_NOTBOL in the case of a pattern that
+ * string and setting %G_REGEX_MATCH_NOTBOL in the case of a pattern that
  * begins with any kind of lookbehind assertion, such as "\b".
  *
  * Returns: a newly allocated string containing the replacements
@@ -2869,7 +2869,7 @@ literal_replacement (const GMatchInfo *match_info,
  * include backreferences use g_regex_replace().
  *
  * Setting @start_position differs from just passing over a
- * shortened string and setting #G_REGEX_MATCH_NOTBOL in the
+ * shortened string and setting %G_REGEX_MATCH_NOTBOL in the
  * case of a pattern that begins with any kind of lookbehind
  * assertion, such as "\b".
  *
@@ -2912,7 +2912,7 @@ g_regex_replace_literal (const GRegex      *regex,
  * @eval for that occurrence.
  *
  * Setting @start_position differs from just passing over a shortened
- * string and setting #G_REGEX_MATCH_NOTBOL in the case of a pattern
+ * string and setting %G_REGEX_MATCH_NOTBOL in the case of a pattern
  * that begins with any kind of lookbehind assertion, such as "\b".
  *
  * The following example uses g_regex_replace_eval() to replace multiple
index 45e198d..b982f69 100644 (file)
@@ -224,8 +224,8 @@ GQuark g_regex_error_quark (void);
  *     newlines). The "start of line" metacharacter ("^") matches only
  *     at the start of the string, while the "end of line" metacharacter
  *     ("$") matches only at the end of the string, or before a terminating
- *     newline (unless #G_REGEX_DOLLAR_ENDONLY is set). When
- *     #G_REGEX_MULTILINE is set, the "start of line" and "end of line"
+ *     newline (unless %G_REGEX_DOLLAR_ENDONLY is set). When
+ *     %G_REGEX_MULTILINE is set, the "start of line" and "end of line"
  *     constructs match immediately following or immediately before any
  *     newline in the string, respectively, as well as at the very start
  *     and end. This can be changed within a pattern by a "(?m)" option
@@ -248,7 +248,7 @@ GQuark g_regex_error_quark (void);
  *     matches only at the end of the string. Without this option, a
  *     dollar also matches immediately before the final character if
  *     it is a newline (but not before any other newlines). This option
- *     is ignored if #G_REGEX_MULTILINE is set.
+ *     is ignored if %G_REGEX_MULTILINE is set.
  * @G_REGEX_UNGREEDY: Inverts the "greediness" of the quantifiers so that
  *     they are not greedy by default, but become greedy if followed by "?".
  *     It can also be set by a "(?U)" option setting within the pattern.
@@ -324,14 +324,14 @@ typedef enum
  *     metacharacter.
  * @G_REGEX_MATCH_NOTBOL: Specifies that first character of the string is
  *     not the beginning of a line, so the circumflex metacharacter should
- *     not match before it. Setting this without #G_REGEX_MULTILINE (at
+ *     not match before it. Setting this without %G_REGEX_MULTILINE (at
  *     compile time) causes circumflex never to match. This option affects
  *     only the behaviour of the circumflex metacharacter, it does not
  *     affect "\A".
  * @G_REGEX_MATCH_NOTEOL: Specifies that the end of the subject string is
  *     not the end of a line, so the dollar metacharacter should not match
  *     it nor (except in multiline mode) a newline immediately before it.
- *     Setting this without #G_REGEX_MULTILINE (at compile time) causes
+ *     Setting this without %G_REGEX_MULTILINE (at compile time) causes
  *     dollar never to match. This option affects only the behaviour of
  *     the dollar metacharacter, it does not affect "\Z" or "\z".
  * @G_REGEX_MATCH_NOTEMPTY: An empty string is not considered to be a valid
@@ -368,12 +368,12 @@ typedef enum
  *     single characters U+000B LINE TABULATION, U+000C FORM FEED (FF),
  *     U+0085 NEXT LINE (NEL), U+2028 LINE SEPARATOR and
  *     U+2029 PARAGRAPH SEPARATOR. Since: 2.34
- * @G_REGEX_MATCH_PARTIAL_SOFT: An alias for #G_REGEX_MATCH_PARTIAL. Since: 2.34
+ * @G_REGEX_MATCH_PARTIAL_SOFT: An alias for %G_REGEX_MATCH_PARTIAL. Since: 2.34
  * @G_REGEX_MATCH_PARTIAL_HARD: Turns on the partial matching feature. In contrast to
- *     to #G_REGEX_MATCH_PARTIAL_SOFT, this stops matching as soon as a partial match
+ *     to %G_REGEX_MATCH_PARTIAL_SOFT, this stops matching as soon as a partial match
  *     is found, without continuing to search for a possible complete match. See
  *     g_match_info_is_partial_match() for more information. Since: 2.34
- * @G_REGEX_MATCH_NOTEMPTY_ATSTART: Like #G_REGEX_MATCH_NOTEMPTY, but only applied to
+ * @G_REGEX_MATCH_NOTEMPTY_ATSTART: Like %G_REGEX_MATCH_NOTEMPTY, but only applied to
  *     the start of the matched string. For anchored
  *     patterns this can only happen for pattern containing "\K". Since: 2.34
  *
index 9102b3a..5f34218 100644 (file)
  *     by the scanner (the default is the whitespace characters: space,
  *     tab, carriage-return and line-feed).
  * @cset_identifier_first: specifies the characters which can start
- *     identifiers (the default is #G_CSET_a_2_z, "_", and #G_CSET_A_2_Z).
+ *     identifiers (the default is %G_CSET_a_2_z, "_", and %G_CSET_A_2_Z).
  * @cset_identifier_nth: specifies the characters which can be used
  *     in identifiers, after the first character (the default is
- *     #G_CSET_a_2_z, "_0123456789", #G_CSET_A_2_Z, #G_CSET_LATINS,
- *     #G_CSET_LATINC).
+ *     %G_CSET_a_2_z, "_0123456789", %G_CSET_A_2_Z, %G_CSET_LATINS,
+ *     %G_CSET_LATINC).
  * @cpair_comment_single: specifies the characters at the start and
  *     end of single-line comments. The default is "#\n" which means
  *     that single-line comments start with a '#' and continue until
  * @scan_string_dq: specifies if strings can be enclosed in double
  *     quotes (the default is %TRUE).
  * @numbers_2_int: specifies if binary, octal and hexadecimal numbers
- *     are reported as #G_TOKEN_INT (the default is %TRUE).
+ *     are reported as %G_TOKEN_INT (the default is %TRUE).
  * @int_2_float: specifies if all numbers are reported as %G_TOKEN_FLOAT
  *     (the default is %FALSE).
  * @identifier_2_string: specifies if identifiers are reported as strings
index 5ee8432..b755687 100644 (file)
@@ -529,7 +529,7 @@ static const guchar g_script_easy_table[8192] = {
   G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC,
   G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC,
   G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC,
-  G_UNICODE_SCRIPT_COMMON, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_UNKNOWN,
+  G_UNICODE_SCRIPT_COMMON, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC,
   G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_COMMON, G_UNICODE_SCRIPT_ARABIC,
   G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC,
   G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC,
@@ -728,22 +728,6 @@ static const guchar g_script_easy_table[8192] = {
   G_UNICODE_SCRIPT_SYRIAC, G_UNICODE_SCRIPT_SYRIAC, G_UNICODE_SCRIPT_SYRIAC,
   G_UNICODE_SCRIPT_SYRIAC, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN,
   G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN,
-  G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN,
-  G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN,
-  G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN,
-  G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN,
-  G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN,
-  G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN,
-  G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN,
-  G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN,
-  G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN,
-  G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN,
-  G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN,
-  G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN,
-  G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN,
-  G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN,
-  G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN,
-  G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN,
   G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC,
   G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC,
   G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC,
@@ -751,16 +735,32 @@ static const guchar g_script_easy_table[8192] = {
   G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC,
   G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC,
   G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC,
+  G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC,
+  G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC,
+  G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC,
+  G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_ARABIC,
+  G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN,
+  G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN,
   G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC,
   G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC,
   G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC,
   G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC,
   G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC,
   G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC,
-  G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN,
-  G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN,
-  G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN,
-  G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN,
+  G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC,
+  G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC,
+  G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC,
+  G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC,
+  G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC,
+  G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC,
+  G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC,
+  G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC,
+  G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC,
+  G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC,
+  G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC,
+  G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC,
+  G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC,
+  G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC,
   G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC,
   G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC,
   G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC, G_UNICODE_SCRIPT_ARABIC,
@@ -1052,7 +1052,7 @@ static const guchar g_script_easy_table[8192] = {
   G_UNICODE_SCRIPT_TELUGU, G_UNICODE_SCRIPT_TELUGU, G_UNICODE_SCRIPT_TELUGU,
   G_UNICODE_SCRIPT_TELUGU, G_UNICODE_SCRIPT_TELUGU, G_UNICODE_SCRIPT_TELUGU,
   G_UNICODE_SCRIPT_TELUGU, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN,
-  G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_TELUGU, G_UNICODE_SCRIPT_TELUGU,
+  G_UNICODE_SCRIPT_TELUGU, G_UNICODE_SCRIPT_TELUGU, G_UNICODE_SCRIPT_TELUGU,
   G_UNICODE_SCRIPT_TELUGU, G_UNICODE_SCRIPT_TELUGU, G_UNICODE_SCRIPT_TELUGU,
   G_UNICODE_SCRIPT_TELUGU, G_UNICODE_SCRIPT_TELUGU, G_UNICODE_SCRIPT_TELUGU,
   G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_TELUGU, G_UNICODE_SCRIPT_TELUGU,
@@ -1063,7 +1063,7 @@ static const guchar g_script_easy_table[8192] = {
   G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_TELUGU, G_UNICODE_SCRIPT_TELUGU,
   G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_TELUGU, G_UNICODE_SCRIPT_TELUGU,
   G_UNICODE_SCRIPT_TELUGU, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN,
-  G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN,
+  G_UNICODE_SCRIPT_TELUGU, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN,
   G_UNICODE_SCRIPT_TELUGU, G_UNICODE_SCRIPT_TELUGU, G_UNICODE_SCRIPT_TELUGU,
   G_UNICODE_SCRIPT_TELUGU, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN,
   G_UNICODE_SCRIPT_TELUGU, G_UNICODE_SCRIPT_TELUGU, G_UNICODE_SCRIPT_TELUGU,
@@ -1105,7 +1105,7 @@ static const guchar g_script_easy_table[8192] = {
   G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN,
   G_UNICODE_SCRIPT_KANNADA, G_UNICODE_SCRIPT_KANNADA, G_UNICODE_SCRIPT_UNKNOWN,
   G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN,
-  G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN,
+  G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_KANNADA,
   G_UNICODE_SCRIPT_KANNADA, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_KANNADA,
   G_UNICODE_SCRIPT_KANNADA, G_UNICODE_SCRIPT_KANNADA, G_UNICODE_SCRIPT_KANNADA,
   G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_KANNADA,
@@ -1975,13 +1975,13 @@ static const guchar g_script_easy_table[8192] = {
   G_UNICODE_SCRIPT_TAGALOG, G_UNICODE_SCRIPT_TAGALOG, G_UNICODE_SCRIPT_TAGALOG,
   G_UNICODE_SCRIPT_TAGALOG, G_UNICODE_SCRIPT_TAGALOG, G_UNICODE_SCRIPT_TAGALOG,
   G_UNICODE_SCRIPT_TAGALOG, G_UNICODE_SCRIPT_TAGALOG, G_UNICODE_SCRIPT_TAGALOG,
-  G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_TAGALOG, G_UNICODE_SCRIPT_TAGALOG,
   G_UNICODE_SCRIPT_TAGALOG, G_UNICODE_SCRIPT_TAGALOG, G_UNICODE_SCRIPT_TAGALOG,
-  G_UNICODE_SCRIPT_TAGALOG, G_UNICODE_SCRIPT_TAGALOG, G_UNICODE_SCRIPT_UNKNOWN,
+  G_UNICODE_SCRIPT_TAGALOG, G_UNICODE_SCRIPT_TAGALOG, G_UNICODE_SCRIPT_TAGALOG,
+  G_UNICODE_SCRIPT_TAGALOG, G_UNICODE_SCRIPT_TAGALOG, G_UNICODE_SCRIPT_TAGALOG,
   G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN,
   G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN,
   G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN,
-  G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_HANUNOO, G_UNICODE_SCRIPT_HANUNOO,
+  G_UNICODE_SCRIPT_TAGALOG, G_UNICODE_SCRIPT_HANUNOO, G_UNICODE_SCRIPT_HANUNOO,
   G_UNICODE_SCRIPT_HANUNOO, G_UNICODE_SCRIPT_HANUNOO, G_UNICODE_SCRIPT_HANUNOO,
   G_UNICODE_SCRIPT_HANUNOO, G_UNICODE_SCRIPT_HANUNOO, G_UNICODE_SCRIPT_HANUNOO,
   G_UNICODE_SCRIPT_HANUNOO, G_UNICODE_SCRIPT_HANUNOO, G_UNICODE_SCRIPT_HANUNOO,
@@ -2061,7 +2061,7 @@ static const guchar g_script_easy_table[8192] = {
   G_UNICODE_SCRIPT_MONGOLIAN, G_UNICODE_SCRIPT_MONGOLIAN, G_UNICODE_SCRIPT_MONGOLIAN,
   G_UNICODE_SCRIPT_MONGOLIAN, G_UNICODE_SCRIPT_MONGOLIAN, G_UNICODE_SCRIPT_MONGOLIAN,
   G_UNICODE_SCRIPT_MONGOLIAN, G_UNICODE_SCRIPT_MONGOLIAN, G_UNICODE_SCRIPT_MONGOLIAN,
-  G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_MONGOLIAN, G_UNICODE_SCRIPT_MONGOLIAN,
+  G_UNICODE_SCRIPT_MONGOLIAN, G_UNICODE_SCRIPT_MONGOLIAN, G_UNICODE_SCRIPT_MONGOLIAN,
   G_UNICODE_SCRIPT_MONGOLIAN, G_UNICODE_SCRIPT_MONGOLIAN, G_UNICODE_SCRIPT_MONGOLIAN,
   G_UNICODE_SCRIPT_MONGOLIAN, G_UNICODE_SCRIPT_MONGOLIAN, G_UNICODE_SCRIPT_MONGOLIAN,
   G_UNICODE_SCRIPT_MONGOLIAN, G_UNICODE_SCRIPT_MONGOLIAN, G_UNICODE_SCRIPT_UNKNOWN,
@@ -2291,11 +2291,11 @@ static const guchar g_script_easy_table[8192] = {
   G_UNICODE_SCRIPT_INHERITED, G_UNICODE_SCRIPT_INHERITED, G_UNICODE_SCRIPT_INHERITED,
   G_UNICODE_SCRIPT_INHERITED, G_UNICODE_SCRIPT_INHERITED, G_UNICODE_SCRIPT_INHERITED,
   G_UNICODE_SCRIPT_INHERITED, G_UNICODE_SCRIPT_INHERITED, G_UNICODE_SCRIPT_INHERITED,
-  G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN,
-  G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN,
-  G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN,
-  G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN,
-  G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN,
+  G_UNICODE_SCRIPT_INHERITED, G_UNICODE_SCRIPT_INHERITED, G_UNICODE_SCRIPT_INHERITED,
+  G_UNICODE_SCRIPT_INHERITED, G_UNICODE_SCRIPT_INHERITED, G_UNICODE_SCRIPT_INHERITED,
+  G_UNICODE_SCRIPT_INHERITED, G_UNICODE_SCRIPT_INHERITED, G_UNICODE_SCRIPT_INHERITED,
+  G_UNICODE_SCRIPT_INHERITED, G_UNICODE_SCRIPT_INHERITED, G_UNICODE_SCRIPT_INHERITED,
+  G_UNICODE_SCRIPT_INHERITED, G_UNICODE_SCRIPT_INHERITED, G_UNICODE_SCRIPT_UNKNOWN,
   G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN,
   G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN,
   G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN,
@@ -2337,7 +2337,7 @@ static const guchar g_script_easy_table[8192] = {
   G_UNICODE_SCRIPT_BALINESE, G_UNICODE_SCRIPT_BALINESE, G_UNICODE_SCRIPT_BALINESE,
   G_UNICODE_SCRIPT_BALINESE, G_UNICODE_SCRIPT_BALINESE, G_UNICODE_SCRIPT_BALINESE,
   G_UNICODE_SCRIPT_BALINESE, G_UNICODE_SCRIPT_BALINESE, G_UNICODE_SCRIPT_BALINESE,
-  G_UNICODE_SCRIPT_BALINESE, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN,
+  G_UNICODE_SCRIPT_BALINESE, G_UNICODE_SCRIPT_BALINESE, G_UNICODE_SCRIPT_UNKNOWN,
   G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_BALINESE,
   G_UNICODE_SCRIPT_BALINESE, G_UNICODE_SCRIPT_BALINESE, G_UNICODE_SCRIPT_BALINESE,
   G_UNICODE_SCRIPT_BALINESE, G_UNICODE_SCRIPT_BALINESE, G_UNICODE_SCRIPT_BALINESE,
@@ -2353,8 +2353,8 @@ static const guchar g_script_easy_table[8192] = {
   G_UNICODE_SCRIPT_BALINESE, G_UNICODE_SCRIPT_BALINESE, G_UNICODE_SCRIPT_BALINESE,
   G_UNICODE_SCRIPT_BALINESE, G_UNICODE_SCRIPT_BALINESE, G_UNICODE_SCRIPT_BALINESE,
   G_UNICODE_SCRIPT_BALINESE, G_UNICODE_SCRIPT_BALINESE, G_UNICODE_SCRIPT_BALINESE,
-  G_UNICODE_SCRIPT_BALINESE, G_UNICODE_SCRIPT_BALINESE, G_UNICODE_SCRIPT_UNKNOWN,
-  G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_SUNDANESE,
+  G_UNICODE_SCRIPT_BALINESE, G_UNICODE_SCRIPT_BALINESE, G_UNICODE_SCRIPT_BALINESE,
+  G_UNICODE_SCRIPT_BALINESE, G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_SUNDANESE,
   G_UNICODE_SCRIPT_SUNDANESE, G_UNICODE_SCRIPT_SUNDANESE, G_UNICODE_SCRIPT_SUNDANESE,
   G_UNICODE_SCRIPT_SUNDANESE, G_UNICODE_SCRIPT_SUNDANESE, G_UNICODE_SCRIPT_SUNDANESE,
   G_UNICODE_SCRIPT_SUNDANESE, G_UNICODE_SCRIPT_SUNDANESE, G_UNICODE_SCRIPT_SUNDANESE,
@@ -2566,7 +2566,7 @@ static const guchar g_script_easy_table[8192] = {
   G_UNICODE_SCRIPT_INHERITED, G_UNICODE_SCRIPT_INHERITED, G_UNICODE_SCRIPT_INHERITED,
   G_UNICODE_SCRIPT_INHERITED, G_UNICODE_SCRIPT_INHERITED, G_UNICODE_SCRIPT_INHERITED,
   G_UNICODE_SCRIPT_INHERITED, G_UNICODE_SCRIPT_INHERITED, G_UNICODE_SCRIPT_INHERITED,
-  G_UNICODE_SCRIPT_UNKNOWN, G_UNICODE_SCRIPT_INHERITED, G_UNICODE_SCRIPT_INHERITED,
+  G_UNICODE_SCRIPT_INHERITED, G_UNICODE_SCRIPT_INHERITED, G_UNICODE_SCRIPT_INHERITED,
   G_UNICODE_SCRIPT_INHERITED, G_UNICODE_SCRIPT_INHERITED, G_UNICODE_SCRIPT_INHERITED,
   G_UNICODE_SCRIPT_LATIN, G_UNICODE_SCRIPT_LATIN, G_UNICODE_SCRIPT_LATIN,
   G_UNICODE_SCRIPT_LATIN, G_UNICODE_SCRIPT_LATIN, G_UNICODE_SCRIPT_LATIN,
@@ -2755,7 +2755,7 @@ static const struct {
  { 0x207f,     1, G_UNICODE_SCRIPT_LATIN },
  { 0x2080,    15, G_UNICODE_SCRIPT_COMMON },
  { 0x2090,    13, G_UNICODE_SCRIPT_LATIN },
- { 0x20a0,    32, G_UNICODE_SCRIPT_COMMON },
+ { 0x20a0,    33, G_UNICODE_SCRIPT_COMMON },
  { 0x20d0,    33, G_UNICODE_SCRIPT_INHERITED },
  { 0x2100,    38, G_UNICODE_SCRIPT_COMMON },
  { 0x2126,     1, G_UNICODE_SCRIPT_GREEK },
@@ -2775,8 +2775,7 @@ static const struct {
  { 0x2900,   628, G_UNICODE_SCRIPT_COMMON },
  { 0x2b76,    32, G_UNICODE_SCRIPT_COMMON },
  { 0x2b97,   105, G_UNICODE_SCRIPT_COMMON },
- { 0x2c00,    47, G_UNICODE_SCRIPT_GLAGOLITIC },
- { 0x2c30,    47, G_UNICODE_SCRIPT_GLAGOLITIC },
+ { 0x2c00,    96, G_UNICODE_SCRIPT_GLAGOLITIC },
  { 0x2c60,    32, G_UNICODE_SCRIPT_LATIN },
  { 0x2c80,   116, G_UNICODE_SCRIPT_COPTIC },
  { 0x2cf9,     7, G_UNICODE_SCRIPT_COPTIC },
@@ -2796,7 +2795,7 @@ static const struct {
  { 0x2dd0,     7, G_UNICODE_SCRIPT_ETHIOPIC },
  { 0x2dd8,     7, G_UNICODE_SCRIPT_ETHIOPIC },
  { 0x2de0,    32, G_UNICODE_SCRIPT_CYRILLIC },
- { 0x2e00,    83, G_UNICODE_SCRIPT_COMMON },
+ { 0x2e00,    94, G_UNICODE_SCRIPT_COMMON },
  { 0x2e80,    26, G_UNICODE_SCRIPT_HAN },
  { 0x2e9b,    89, G_UNICODE_SCRIPT_HAN },
  { 0x2f00,   214, G_UNICODE_SCRIPT_HAN },
@@ -2836,7 +2835,7 @@ static const struct {
  { 0x3358,   168, G_UNICODE_SCRIPT_COMMON },
  { 0x3400,  6592, G_UNICODE_SCRIPT_HAN },
  { 0x4dc0,    64, G_UNICODE_SCRIPT_COMMON },
- { 0x4e00, 20989, G_UNICODE_SCRIPT_HAN },
+ { 0x4e00, 20992, G_UNICODE_SCRIPT_HAN },
  { 0xa000,  1165, G_UNICODE_SCRIPT_YI },
  { 0xa490,    55, G_UNICODE_SCRIPT_YI },
  { 0xa4d0,    48, G_UNICODE_SCRIPT_LISU },
@@ -2846,9 +2845,11 @@ static const struct {
  { 0xa700,    34, G_UNICODE_SCRIPT_COMMON },
  { 0xa722,   102, G_UNICODE_SCRIPT_LATIN },
  { 0xa788,     3, G_UNICODE_SCRIPT_COMMON },
- { 0xa78b,    53, G_UNICODE_SCRIPT_LATIN },
- { 0xa7c2,     9, G_UNICODE_SCRIPT_LATIN },
- { 0xa7f5,    11, G_UNICODE_SCRIPT_LATIN },
+ { 0xa78b,    64, G_UNICODE_SCRIPT_LATIN },
+ { 0xa7d0,     2, G_UNICODE_SCRIPT_LATIN },
+ { 0xa7d3,     1, G_UNICODE_SCRIPT_LATIN },
+ { 0xa7d5,     5, G_UNICODE_SCRIPT_LATIN },
+ { 0xa7f2,    14, G_UNICODE_SCRIPT_LATIN },
  { 0xa800,    45, G_UNICODE_SCRIPT_SYLOTI_NAGRI },
  { 0xa830,    10, G_UNICODE_SCRIPT_COMMON },
  { 0xa840,    56, G_UNICODE_SCRIPT_PHAGS_PA },
@@ -2901,12 +2902,13 @@ static const struct {
  { 0xfb40,     2, G_UNICODE_SCRIPT_HEBREW },
  { 0xfb43,     2, G_UNICODE_SCRIPT_HEBREW },
  { 0xfb46,    10, G_UNICODE_SCRIPT_HEBREW },
- { 0xfb50,   114, G_UNICODE_SCRIPT_ARABIC },
+ { 0xfb50,   115, G_UNICODE_SCRIPT_ARABIC },
  { 0xfbd3,   363, G_UNICODE_SCRIPT_ARABIC },
  { 0xfd3e,     2, G_UNICODE_SCRIPT_COMMON },
- { 0xfd50,    64, G_UNICODE_SCRIPT_ARABIC },
+ { 0xfd40,    80, G_UNICODE_SCRIPT_ARABIC },
  { 0xfd92,    54, G_UNICODE_SCRIPT_ARABIC },
- { 0xfdf0,    14, G_UNICODE_SCRIPT_ARABIC },
+ { 0xfdcf,     1, G_UNICODE_SCRIPT_ARABIC },
+ { 0xfdf0,    16, G_UNICODE_SCRIPT_ARABIC },
  { 0xfe00,    16, G_UNICODE_SCRIPT_INHERITED },
  { 0xfe10,    10, G_UNICODE_SCRIPT_COMMON },
  { 0xfe20,    14, G_UNICODE_SCRIPT_INHERITED },
@@ -2970,9 +2972,20 @@ static const struct {
  { 0x10500,    40, G_UNICODE_SCRIPT_ELBASAN },
  { 0x10530,    52, G_UNICODE_SCRIPT_CAUCASIAN_ALBANIAN },
  { 0x1056f,     1, G_UNICODE_SCRIPT_CAUCASIAN_ALBANIAN },
+ { 0x10570,    11, G_UNICODE_SCRIPT_VITHKUQI },
+ { 0x1057c,    15, G_UNICODE_SCRIPT_VITHKUQI },
+ { 0x1058c,     7, G_UNICODE_SCRIPT_VITHKUQI },
+ { 0x10594,     2, G_UNICODE_SCRIPT_VITHKUQI },
+ { 0x10597,    11, G_UNICODE_SCRIPT_VITHKUQI },
+ { 0x105a3,    15, G_UNICODE_SCRIPT_VITHKUQI },
+ { 0x105b3,     7, G_UNICODE_SCRIPT_VITHKUQI },
+ { 0x105bb,     2, G_UNICODE_SCRIPT_VITHKUQI },
  { 0x10600,   311, G_UNICODE_SCRIPT_LINEAR_A },
  { 0x10740,    22, G_UNICODE_SCRIPT_LINEAR_A },
  { 0x10760,     8, G_UNICODE_SCRIPT_LINEAR_A },
+ { 0x10780,     6, G_UNICODE_SCRIPT_LATIN },
+ { 0x10787,    42, G_UNICODE_SCRIPT_LATIN },
+ { 0x107b2,     9, G_UNICODE_SCRIPT_LATIN },
  { 0x10800,     6, G_UNICODE_SCRIPT_CYPRIOT },
  { 0x10808,     1, G_UNICODE_SCRIPT_CYPRIOT },
  { 0x1080a,    44, G_UNICODE_SCRIPT_CYPRIOT },
@@ -3028,12 +3041,13 @@ static const struct {
  { 0x10eb0,     2, G_UNICODE_SCRIPT_YEZIDI },
  { 0x10f00,    40, G_UNICODE_SCRIPT_OLD_SOGDIAN },
  { 0x10f30,    42, G_UNICODE_SCRIPT_SOGDIAN },
+ { 0x10f70,    26, G_UNICODE_SCRIPT_OLD_UYGHUR },
  { 0x10fb0,    28, G_UNICODE_SCRIPT_CHORASMIAN },
  { 0x10fe0,    23, G_UNICODE_SCRIPT_ELYMAIC },
  { 0x11000,    78, G_UNICODE_SCRIPT_BRAHMI },
- { 0x11052,    30, G_UNICODE_SCRIPT_BRAHMI },
+ { 0x11052,    36, G_UNICODE_SCRIPT_BRAHMI },
  { 0x1107f,     1, G_UNICODE_SCRIPT_BRAHMI },
- { 0x11080,    66, G_UNICODE_SCRIPT_KAITHI },
+ { 0x11080,    67, G_UNICODE_SCRIPT_KAITHI },
  { 0x110cd,     1, G_UNICODE_SCRIPT_KAITHI },
  { 0x110d0,    25, G_UNICODE_SCRIPT_SORA_SOMPENG },
  { 0x110f0,    10, G_UNICODE_SCRIPT_SORA_SOMPENG },
@@ -3076,11 +3090,11 @@ static const struct {
  { 0x11600,    69, G_UNICODE_SCRIPT_MODI },
  { 0x11650,    10, G_UNICODE_SCRIPT_MODI },
  { 0x11660,    13, G_UNICODE_SCRIPT_MONGOLIAN },
- { 0x11680,    57, G_UNICODE_SCRIPT_TAKRI },
+ { 0x11680,    58, G_UNICODE_SCRIPT_TAKRI },
  { 0x116c0,    10, G_UNICODE_SCRIPT_TAKRI },
  { 0x11700,    27, G_UNICODE_SCRIPT_AHOM },
  { 0x1171d,    15, G_UNICODE_SCRIPT_AHOM },
- { 0x11730,    16, G_UNICODE_SCRIPT_AHOM },
+ { 0x11730,    23, G_UNICODE_SCRIPT_AHOM },
  { 0x11800,    60, G_UNICODE_SCRIPT_DOGRA },
  { 0x118a0,    83, G_UNICODE_SCRIPT_WARANG_CITI },
  { 0x118ff,     1, G_UNICODE_SCRIPT_WARANG_CITI },
@@ -3097,6 +3111,7 @@ static const struct {
  { 0x119da,    11, G_UNICODE_SCRIPT_NANDINAGARI },
  { 0x11a00,    72, G_UNICODE_SCRIPT_ZANABAZAR_SQUARE },
  { 0x11a50,    83, G_UNICODE_SCRIPT_SOYOMBO },
+ { 0x11ab0,    16, G_UNICODE_SCRIPT_CANADIAN_ABORIGINAL },
  { 0x11ac0,    57, G_UNICODE_SCRIPT_PAU_CIN_HAU },
  { 0x11c00,     9, G_UNICODE_SCRIPT_BHAIKSUKI },
  { 0x11c0a,    45, G_UNICODE_SCRIPT_BHAIKSUKI },
@@ -3126,6 +3141,7 @@ static const struct {
  { 0x12400,   111, G_UNICODE_SCRIPT_CUNEIFORM },
  { 0x12470,     5, G_UNICODE_SCRIPT_CUNEIFORM },
  { 0x12480,   196, G_UNICODE_SCRIPT_CUNEIFORM },
+ { 0x12f90,    99, G_UNICODE_SCRIPT_CYPRO_MINOAN },
  { 0x13000,  1071, G_UNICODE_SCRIPT_EGYPTIAN_HIEROGLYPHS },
  { 0x13430,     9, G_UNICODE_SCRIPT_EGYPTIAN_HIEROGLYPHS },
  { 0x14400,   583, G_UNICODE_SCRIPT_ANATOLIAN_HIEROGLYPHS },
@@ -3133,6 +3149,8 @@ static const struct {
  { 0x16a40,    31, G_UNICODE_SCRIPT_MRO },
  { 0x16a60,    10, G_UNICODE_SCRIPT_MRO },
  { 0x16a6e,     2, G_UNICODE_SCRIPT_MRO },
+ { 0x16a70,    79, G_UNICODE_SCRIPT_TANGSA },
+ { 0x16ac0,    10, G_UNICODE_SCRIPT_TANGSA },
  { 0x16ad0,    30, G_UNICODE_SCRIPT_BASSA_VAH },
  { 0x16af0,     6, G_UNICODE_SCRIPT_BASSA_VAH },
  { 0x16b00,    70, G_UNICODE_SCRIPT_PAHAWH_HMONG },
@@ -3146,15 +3164,19 @@ static const struct {
  { 0x16f8f,    17, G_UNICODE_SCRIPT_MIAO },
  { 0x16fe0,     1, G_UNICODE_SCRIPT_TANGUT },
  { 0x16fe1,     1, G_UNICODE_SCRIPT_NUSHU },
- { 0x16fe2,     2, G_UNICODE_SCRIPT_COMMON },
+ { 0x16fe2,     2, G_UNICODE_SCRIPT_HAN },
  { 0x16fe4,     1, G_UNICODE_SCRIPT_KHITAN_SMALL_SCRIPT },
  { 0x16ff0,     2, G_UNICODE_SCRIPT_HAN },
  { 0x17000,  6136, G_UNICODE_SCRIPT_TANGUT },
  { 0x18800,   768, G_UNICODE_SCRIPT_TANGUT },
  { 0x18b00,   470, G_UNICODE_SCRIPT_KHITAN_SMALL_SCRIPT },
  { 0x18d00,     9, G_UNICODE_SCRIPT_TANGUT },
+ { 0x1aff0,     4, G_UNICODE_SCRIPT_KATAKANA },
+ { 0x1aff5,     7, G_UNICODE_SCRIPT_KATAKANA },
+ { 0x1affd,     2, G_UNICODE_SCRIPT_KATAKANA },
  { 0x1b000,     1, G_UNICODE_SCRIPT_KATAKANA },
- { 0x1b001,   286, G_UNICODE_SCRIPT_HIRAGANA },
+ { 0x1b001,   287, G_UNICODE_SCRIPT_HIRAGANA },
+ { 0x1b120,     3, G_UNICODE_SCRIPT_KATAKANA },
  { 0x1b150,     3, G_UNICODE_SCRIPT_HIRAGANA },
  { 0x1b164,     4, G_UNICODE_SCRIPT_KATAKANA },
  { 0x1b170,   396, G_UNICODE_SCRIPT_NUSHU },
@@ -3164,6 +3186,9 @@ static const struct {
  { 0x1bc90,    10, G_UNICODE_SCRIPT_DUPLOYAN },
  { 0x1bc9c,     4, G_UNICODE_SCRIPT_DUPLOYAN },
  { 0x1bca0,     4, G_UNICODE_SCRIPT_COMMON },
+ { 0x1cf00,    46, G_UNICODE_SCRIPT_INHERITED },
+ { 0x1cf30,    23, G_UNICODE_SCRIPT_INHERITED },
+ { 0x1cf50,   116, G_UNICODE_SCRIPT_COMMON },
  { 0x1d000,   246, G_UNICODE_SCRIPT_COMMON },
  { 0x1d100,    39, G_UNICODE_SCRIPT_COMMON },
  { 0x1d129,    62, G_UNICODE_SCRIPT_COMMON },
@@ -3174,7 +3199,7 @@ static const struct {
  { 0x1d185,     7, G_UNICODE_SCRIPT_INHERITED },
  { 0x1d18c,    30, G_UNICODE_SCRIPT_COMMON },
  { 0x1d1aa,     4, G_UNICODE_SCRIPT_INHERITED },
- { 0x1d1ae,    59, G_UNICODE_SCRIPT_COMMON },
+ { 0x1d1ae,    61, G_UNICODE_SCRIPT_COMMON },
  { 0x1d200,    70, G_UNICODE_SCRIPT_GREEK },
  { 0x1d2e0,    20, G_UNICODE_SCRIPT_COMMON },
  { 0x1d300,    87, G_UNICODE_SCRIPT_COMMON },
@@ -3203,6 +3228,7 @@ static const struct {
  { 0x1d800,   652, G_UNICODE_SCRIPT_SIGNWRITING },
  { 0x1da9b,     5, G_UNICODE_SCRIPT_SIGNWRITING },
  { 0x1daa1,    15, G_UNICODE_SCRIPT_SIGNWRITING },
+ { 0x1df00,    31, G_UNICODE_SCRIPT_LATIN },
  { 0x1e000,     7, G_UNICODE_SCRIPT_GLAGOLITIC },
  { 0x1e008,    17, G_UNICODE_SCRIPT_GLAGOLITIC },
  { 0x1e01b,     7, G_UNICODE_SCRIPT_GLAGOLITIC },
@@ -3212,8 +3238,13 @@ static const struct {
  { 0x1e130,    14, G_UNICODE_SCRIPT_NYIAKENG_PUACHUE_HMONG },
  { 0x1e140,    10, G_UNICODE_SCRIPT_NYIAKENG_PUACHUE_HMONG },
  { 0x1e14e,     2, G_UNICODE_SCRIPT_NYIAKENG_PUACHUE_HMONG },
+ { 0x1e290,    31, G_UNICODE_SCRIPT_TOTO },
  { 0x1e2c0,    58, G_UNICODE_SCRIPT_WANCHO },
  { 0x1e2ff,     1, G_UNICODE_SCRIPT_WANCHO },
+ { 0x1e7e0,     7, G_UNICODE_SCRIPT_ETHIOPIC },
+ { 0x1e7e8,     4, G_UNICODE_SCRIPT_ETHIOPIC },
+ { 0x1e7ed,     2, G_UNICODE_SCRIPT_ETHIOPIC },
+ { 0x1e7f0,    15, G_UNICODE_SCRIPT_ETHIOPIC },
  { 0x1e800,   197, G_UNICODE_SCRIPT_MENDE_KIKAKUI },
  { 0x1e8c7,    16, G_UNICODE_SCRIPT_MENDE_KIKAKUI },
  { 0x1e900,    76, G_UNICODE_SCRIPT_ADLAM },
@@ -3270,33 +3301,34 @@ static const struct {
  { 0x1f250,     2, G_UNICODE_SCRIPT_COMMON },
  { 0x1f260,     6, G_UNICODE_SCRIPT_COMMON },
  { 0x1f300,   984, G_UNICODE_SCRIPT_COMMON },
- { 0x1f6e0,    13, G_UNICODE_SCRIPT_COMMON },
+ { 0x1f6dd,    16, G_UNICODE_SCRIPT_COMMON },
  { 0x1f6f0,    13, G_UNICODE_SCRIPT_COMMON },
  { 0x1f700,   116, G_UNICODE_SCRIPT_COMMON },
  { 0x1f780,    89, G_UNICODE_SCRIPT_COMMON },
  { 0x1f7e0,    12, G_UNICODE_SCRIPT_COMMON },
+ { 0x1f7f0,     1, G_UNICODE_SCRIPT_COMMON },
  { 0x1f800,    12, G_UNICODE_SCRIPT_COMMON },
  { 0x1f810,    56, G_UNICODE_SCRIPT_COMMON },
  { 0x1f850,    10, G_UNICODE_SCRIPT_COMMON },
  { 0x1f860,    40, G_UNICODE_SCRIPT_COMMON },
  { 0x1f890,    30, G_UNICODE_SCRIPT_COMMON },
  { 0x1f8b0,     2, G_UNICODE_SCRIPT_COMMON },
- { 0x1f900,   121, G_UNICODE_SCRIPT_COMMON },
- { 0x1f97a,    82, G_UNICODE_SCRIPT_COMMON },
- { 0x1f9cd,   135, G_UNICODE_SCRIPT_COMMON },
+ { 0x1f900,   340, G_UNICODE_SCRIPT_COMMON },
  { 0x1fa60,    14, G_UNICODE_SCRIPT_COMMON },
  { 0x1fa70,     5, G_UNICODE_SCRIPT_COMMON },
- { 0x1fa78,     3, G_UNICODE_SCRIPT_COMMON },
+ { 0x1fa78,     5, G_UNICODE_SCRIPT_COMMON },
  { 0x1fa80,     7, G_UNICODE_SCRIPT_COMMON },
- { 0x1fa90,    25, G_UNICODE_SCRIPT_COMMON },
- { 0x1fab0,     7, G_UNICODE_SCRIPT_COMMON },
- { 0x1fac0,     3, G_UNICODE_SCRIPT_COMMON },
- { 0x1fad0,     7, G_UNICODE_SCRIPT_COMMON },
+ { 0x1fa90,    29, G_UNICODE_SCRIPT_COMMON },
+ { 0x1fab0,    11, G_UNICODE_SCRIPT_COMMON },
+ { 0x1fac0,     6, G_UNICODE_SCRIPT_COMMON },
+ { 0x1fad0,    10, G_UNICODE_SCRIPT_COMMON },
+ { 0x1fae0,     8, G_UNICODE_SCRIPT_COMMON },
+ { 0x1faf0,     7, G_UNICODE_SCRIPT_COMMON },
  { 0x1fb00,   147, G_UNICODE_SCRIPT_COMMON },
  { 0x1fb94,    55, G_UNICODE_SCRIPT_COMMON },
  { 0x1fbf0,    10, G_UNICODE_SCRIPT_COMMON },
- { 0x20000, 42718, G_UNICODE_SCRIPT_HAN },
- { 0x2a700,  4149, G_UNICODE_SCRIPT_HAN },
+ { 0x20000, 42720, G_UNICODE_SCRIPT_HAN },
+ { 0x2a700,  4153, G_UNICODE_SCRIPT_HAN },
  { 0x2b740,   222, G_UNICODE_SCRIPT_HAN },
  { 0x2b820,  5762, G_UNICODE_SCRIPT_HAN },
  { 0x2ceb0,  7473, G_UNICODE_SCRIPT_HAN },
index 9d76dbb..9cf1e8d 100644 (file)
@@ -120,6 +120,7 @@ struct _GSequence
 struct _GSequenceNode
 {
   gint                  n_nodes;
+  guint32               priority;
   GSequenceNode *       parent;
   GSequenceNode *       left;
   GSequenceNode *       right;
@@ -607,7 +608,7 @@ g_sequence_move_range (GSequenceIter *dest,
                        GSequenceIter *begin,
                        GSequenceIter *end)
 {
-  GSequence *src_seq, *end_seq, *dest_seq;
+  GSequence *src_seq, *end_seq, *dest_seq = NULL;
   GSequenceNode *first;
 
   g_return_if_fail (begin != NULL);
@@ -1572,11 +1573,9 @@ g_sequence_swap (GSequenceIter *a,
  *
  *
  */
-static guint
-get_priority (GSequenceNode *node)
+static guint32
+hash_uint32 (guint32 key)
 {
-  guint key = GPOINTER_TO_UINT (node);
-
   /* This hash function is based on one found on Thomas Wang's
    * web page at
    *
@@ -1590,6 +1589,20 @@ get_priority (GSequenceNode *node)
   key = key + (key << 3) + (key << 11);
   key = key ^ (key >> 16);
 
+  return key;
+}
+
+static inline guint
+get_priority (GSequenceNode *node)
+{
+  return node->priority;
+}
+
+static guint
+make_priority (guint32 key)
+{
+  key = hash_uint32 (key);
+
   /* We rely on 0 being less than all other priorities */
   return key? key : 1;
 }
@@ -1608,7 +1621,40 @@ node_new (gpointer data)
 {
   GSequenceNode *node = g_slice_new0 (GSequenceNode);
 
+  /*
+   * Make a random number quickly. Some binary magic is used to avoid
+   * the costs of proper RNG, such as locking around global GRand.
+   *
+   * Using just the node pointer alone is not enough, because in this
+   * case freeing and re-allocating sequence causes node's priorities
+   * to no longer be random. This happens for two reasons:
+   * 1) Nodes are freed from the root and the treap's property is that
+   *    node's priority is >= than its children's priorities.
+   * 2) g_slice_new0() will reuse freed nodes in the order similar to
+   *    the order of freeing.
+   * As a result, there are severe problems where building the treap is
+   * much slower (100x and more after a few sequence new/free
+   * iterations) and treap becomes more like a list (tree height
+   * approaches tree's number of elements), which increases costs of
+   * using the built treap.
+   *
+   * Note that for performance reasons, counter completely ignores
+   * multi-threading issues. This is fine because it's merely a source
+   * of additional randomness. Even if it fails to ++ sometimes, this
+   * won't really matter for its goal.
+   *
+   * Note that 64-bit counter is used to avoid undefined behavior on
+   * overflow.
+   *
+   * See https://gitlab.gnome.org/GNOME/glib/-/issues/2468
+   */
+  static guint64 counter = 0;
+  guint32 hash_key = (guint32) GPOINTER_TO_UINT (node);
+  hash_key ^= (guint32) counter;
+  counter++;
+
   node->n_nodes = 1;
+  node->priority = make_priority (hash_key);
   node->data = data;
   node->left = NULL;
   node->right = NULL;
index 33c5349..ed89390 100644 (file)
@@ -646,6 +646,11 @@ tokenize_command_line (const gchar *command_line,
  *
  * Possible errors are those from the %G_SHELL_ERROR domain.
  *
+ * In particular, if @command_line is an empty string (or a string containing
+ * only whitespace), %G_SHELL_ERROR_EMPTY_STRING will be returned. It’s
+ * guaranteed that @argvp will be a non-empty array if this function returns
+ * successfully.
+ *
  * Free the returned vector with g_strfreev().
  * 
  * Returns: %TRUE on success, %FALSE if error set
@@ -702,7 +707,10 @@ g_shell_parse_argv (const gchar *command_line,
     }
   
   g_slist_free_full (tokens, g_free);
-  
+
+  g_assert (argc > 0);
+  g_assert (argv != NULL && argv[0] != NULL);
+
   if (argcp)
     *argcp = argc;
 
index 630b6bc..4e99920 100644 (file)
@@ -380,7 +380,7 @@ slice_config_init (SliceConfig *config)
   {
 
   wchar_t wvalue[128];  /* at least big enough for `always-malloc,debug-blocks` */
-  int len;
+  gsize len;
 
   len = GetEnvironmentVariableW (L"G_SLICE", wvalue, G_N_ELEMENTS (wvalue));
 
@@ -610,8 +610,8 @@ magazine_count (ChunkLink *head)
 #endif
 
 static inline gsize
-allocator_get_magazine_threshold (Allocator *allocator,
-                                  guint      ix)
+allocator_get_magazine_threshold (Allocator *local_allocator,
+                                  guint ix)
 {
   /* the magazine size calculated here has a lower bound of MIN_MAGAZINE_SIZE,
    * which is required by the implementation. also, for moderately sized chunks
@@ -622,9 +622,9 @@ allocator_get_magazine_threshold (Allocator *allocator,
    * MAX_MAGAZINE_SIZE. for larger chunks, this number is scaled down so that
    * the content of a single magazine doesn't exceed ca. 16KB.
    */
-  gsize chunk_size = SLAB_CHUNK_SIZE (allocator, ix);
-  guint threshold = MAX (MIN_MAGAZINE_SIZE, allocator->max_page_size / MAX (5 * chunk_size, 5 * 32));
-  guint contention_counter = allocator->contention_counters[ix];
+  gsize chunk_size = SLAB_CHUNK_SIZE (local_allocator, ix);
+  guint threshold = MAX (MIN_MAGAZINE_SIZE, local_allocator->max_page_size / MAX (5 * chunk_size, 5 * 32));
+  guint contention_counter = local_allocator->contention_counters[ix];
   if (G_UNLIKELY (contention_counter))  /* single CPU bias */
     {
       /* adapt contention counter thresholds to chunk sizes */
@@ -676,16 +676,16 @@ magazine_chain_prepare_fields (ChunkLink *magazine_chunks)
 #define magazine_chain_count(mc)        ((mc)->next->next->next->data)
 
 static void
-magazine_cache_trim (Allocator *allocator,
-                     guint      ix,
-                     guint      stamp)
+magazine_cache_trim (Allocator *local_allocator,
+                     guint ix,
+                     guint stamp)
 {
-  /* g_mutex_lock (allocator->mutex); done by caller */
+  /* g_mutex_lock (local_allocator->mutex); done by caller */
   /* trim magazine cache from tail */
-  ChunkLink *current = magazine_chain_prev (allocator->magazines[ix]);
+  ChunkLink *current = magazine_chain_prev (local_allocator->magazines[ix]);
   ChunkLink *trash = NULL;
-  while (!G_APPROX_VALUE(stamp, magazine_chain_uint_stamp (current),
-                         allocator->config.working_set_msecs))
+  while (!G_APPROX_VALUE (stamp, magazine_chain_uint_stamp (current),
+                          local_allocator->config.working_set_msecs))
     {
       /* unlink */
       ChunkLink *prev = magazine_chain_prev (current);
@@ -699,19 +699,19 @@ magazine_cache_trim (Allocator *allocator,
       magazine_chain_prev (current) = trash;
       trash = current;
       /* fixup list head if required */
-      if (current == allocator->magazines[ix])
+      if (current == local_allocator->magazines[ix])
         {
-          allocator->magazines[ix] = NULL;
+          local_allocator->magazines[ix] = NULL;
           break;
         }
       current = prev;
     }
-  g_mutex_unlock (&allocator->magazine_mutex);
+  g_mutex_unlock (&local_allocator->magazine_mutex);
   /* free trash */
   if (trash)
     {
-      const gsize chunk_size = SLAB_CHUNK_SIZE (allocator, ix);
-      g_mutex_lock (&allocator->slab_mutex);
+      const gsize chunk_size = SLAB_CHUNK_SIZE (local_allocator, ix);
+      g_mutex_lock (&local_allocator->slab_mutex);
       while (trash)
         {
           current = trash;
@@ -723,7 +723,7 @@ magazine_cache_trim (Allocator *allocator,
               slab_allocator_free_chunk (chunk_size, chunk);
             }
         }
-      g_mutex_unlock (&allocator->slab_mutex);
+      g_mutex_unlock (&local_allocator->slab_mutex);
     }
 }
 
@@ -1282,40 +1282,40 @@ g_slice_free_chain_with_offset (gsize    mem_size,
 
 /* --- single page allocator --- */
 static void
-allocator_slab_stack_push (Allocator *allocator,
-                           guint      ix,
-                           SlabInfo  *sinfo)
+allocator_slab_stack_push (Allocator *local_allocator,
+                           guint ix,
+                           SlabInfo *sinfo)
 {
   /* insert slab at slab ring head */
-  if (!allocator->slab_stack[ix])
+  if (!local_allocator->slab_stack[ix])
     {
       sinfo->next = sinfo;
       sinfo->prev = sinfo;
     }
   else
     {
-      SlabInfo *next = allocator->slab_stack[ix], *prev = next->prev;
+      SlabInfo *next = local_allocator->slab_stack[ix], *prev = next->prev;
       next->prev = sinfo;
       prev->next = sinfo;
       sinfo->next = next;
       sinfo->prev = prev;
     }
-  allocator->slab_stack[ix] = sinfo;
+  local_allocator->slab_stack[ix] = sinfo;
 }
 
 static gsize
-allocator_aligned_page_size (Allocator *allocator,
-                             gsize      n_bytes)
+allocator_aligned_page_size (Allocator *local_allocator,
+                             gsize n_bytes)
 {
   gsize val = (gsize) 1 << g_bit_storage (n_bytes - 1);
-  val = MAX (val, allocator->min_page_size);
+  val = MAX (val, local_allocator->min_page_size);
   return val;
 }
 
 static void
-allocator_add_slab (Allocator *allocator,
-                    guint      ix,
-                    gsize      chunk_size)
+allocator_add_slab (Allocator *local_allocator,
+                    guint ix,
+                    gsize chunk_size)
 {
   ChunkLink *chunk;
   SlabInfo *sinfo;
@@ -1326,7 +1326,7 @@ allocator_add_slab (Allocator *allocator,
   guint8 *mem;
   guint i;
 
-  page_size = allocator_aligned_page_size (allocator, SLAB_BPAGE_SIZE (allocator, chunk_size));
+  page_size = allocator_aligned_page_size (local_allocator, SLAB_BPAGE_SIZE (local_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;
@@ -1351,8 +1351,8 @@ allocator_add_slab (Allocator *allocator,
   padding = ((guint8*) sinfo - mem) - n_chunks * chunk_size;
   if (padding)
     {
-      color = (allocator->color_accu * P2ALIGNMENT) % padding;
-      allocator->color_accu += allocator->config.color_increment;
+      color = (local_allocator->color_accu * P2ALIGNMENT) % padding;
+      local_allocator->color_accu += local_allocator->config.color_increment;
     }
   /* add chunks to free list */
   chunk = (ChunkLink*) (mem + color);
@@ -1364,7 +1364,7 @@ allocator_add_slab (Allocator *allocator,
     }
   chunk->next = NULL;   /* last chunk */
   /* add slab to slab ring */
-  allocator_slab_stack_push (allocator, ix, sinfo);
+  allocator_slab_stack_push (local_allocator, ix, sinfo);
 }
 
 static gpointer
index efc2e49..4729ee4 100644 (file)
@@ -153,6 +153,18 @@ protect_wargv (gint       argc,
   return argc;
 }
 
+static int
+checked_dup2 (int oldfd, int newfd, int report_fd)
+{
+  if (oldfd == newfd)
+    return newfd;
+
+  if (dup2 (oldfd, newfd) == -1)
+    write_err_and_exit (report_fd, CHILD_DUP_FAILED);
+
+  return newfd;
+}
+
 #if (defined (_MSC_VER) && _MSC_VER >= 1400)
 /*
  * This is the (empty) invalid parameter handler
@@ -188,12 +200,14 @@ int
 main (int ignored_argc, char **ignored_argv)
 #endif
 {
+  GHashTable *fds;  /* (element-type int int) */
   int child_err_report_fd = -1;
   int helper_sync_fd = -1;
   int saved_stderr_fd = -1;
   int i;
   int fd;
   int mode;
+  int maxfd = 2;
   gintptr handle;
   int saved_errno;
   gintptr no_error = CHILD_NO_ERROR;
@@ -229,6 +243,7 @@ main (int ignored_argc, char **ignored_argv)
    * which write error messages.
    */
   child_err_report_fd = atoi (argv[ARG_CHILD_ERR_REPORT]);
+  maxfd = MAX (child_err_report_fd, maxfd);
 
   /* Hack to implement G_SPAWN_FILE_AND_ARGV_ZERO. If
    * argv[ARG_CHILD_ERR_REPORT] is suffixed with a '#' it means we get
@@ -244,6 +259,7 @@ main (int ignored_argc, char **ignored_argv)
    * from another process works only if that other process exists.
    */
   helper_sync_fd = atoi (argv[ARG_HELPER_SYNC]);
+  maxfd = MAX (helper_sync_fd, maxfd);
 
   /* argv[ARG_STDIN..ARG_STDERR] are the file descriptor numbers that
    * should be dup2'd to 0, 1 and 2. '-' if the corresponding fd
@@ -255,20 +271,12 @@ main (int ignored_argc, char **ignored_argv)
   else if (argv[ARG_STDIN][0] == 'z')
     {
       fd = open ("NUL:", O_RDONLY);
-      if (fd != 0)
-       {
-         dup2 (fd, 0);
-         close (fd);
-       }
+      checked_dup2 (fd, 0, child_err_report_fd);
     }
   else
     {
       fd = atoi (argv[ARG_STDIN]);
-      if (fd != 0)
-       {
-         dup2 (fd, 0);
-         close (fd);
-       }
+      checked_dup2 (fd, 0, child_err_report_fd);
     }
 
   if (argv[ARG_STDOUT][0] == '-')
@@ -276,42 +284,34 @@ main (int ignored_argc, char **ignored_argv)
   else if (argv[ARG_STDOUT][0] == 'z')
     {
       fd = open ("NUL:", O_WRONLY);
-      if (fd != 1)
-       {
-         dup2 (fd, 1);
-         close (fd);
-       }
+      checked_dup2 (fd, 1, child_err_report_fd);
     }
   else
     {
       fd = atoi (argv[ARG_STDOUT]);
-      if (fd != 1)
-       {
-         dup2 (fd, 1);
-         close (fd);
-       }
+      checked_dup2 (fd, 1, child_err_report_fd);
+    }
+
+  /* GUI application do not necessarily have a stderr */
+  if (_fileno (stderr) == 2)
+    {
+      saved_stderr_fd = reopen_noninherited (dup (2), _O_WRONLY);
+      if (saved_stderr_fd == -1)
+        write_err_and_exit (child_err_report_fd, CHILD_DUP_FAILED);
     }
 
-  saved_stderr_fd = reopen_noninherited (dup (2), _O_WRONLY);
+  maxfd = MAX (saved_stderr_fd, maxfd);
   if (argv[ARG_STDERR][0] == '-')
     ; /* Nothing */
   else if (argv[ARG_STDERR][0] == 'z')
     {
       fd = open ("NUL:", O_WRONLY);
-      if (fd != 2)
-       {
-         dup2 (fd, 2);
-         close (fd);
-       }
+      checked_dup2 (fd, 2, child_err_report_fd);
     }
   else
     {
       fd = atoi (argv[ARG_STDERR]);
-      if (fd != 2)
-       {
-         dup2 (fd, 2);
-         close (fd);
-       }
+      checked_dup2 (fd, 2, child_err_report_fd);
     }
 
   /* argv[ARG_WORKING_DIRECTORY] is the directory in which to run the
@@ -323,12 +323,80 @@ main (int ignored_argc, char **ignored_argv)
   else if (_wchdir (wargv[ARG_WORKING_DIRECTORY]) < 0)
     write_err_and_exit (child_err_report_fd, CHILD_CHDIR_FAILED);
 
+  fds = g_hash_table_new (NULL, NULL);
+  if (argv[ARG_FDS][0] != '-')
+    {
+      gchar **fdsv = g_strsplit (argv[ARG_FDS], ",", -1);
+      gsize i;
+
+      for (i = 0; fdsv[i]; i++)
+        {
+          char *endptr = NULL;
+          int sourcefd, targetfd;
+          gint64 val;
+
+          val = g_ascii_strtoll (fdsv[i], &endptr, 10);
+          g_assert (val <= G_MAXINT32);
+          sourcefd = val;
+          g_assert (endptr != fdsv[i]);
+          g_assert (*endptr == ':');
+          val = g_ascii_strtoll (endptr + 1, &endptr, 10);
+          targetfd = val;
+          g_assert (val <= G_MAXINT32);
+          g_assert (*endptr == '\0');
+
+          maxfd = MAX (maxfd, sourcefd);
+          maxfd = MAX (maxfd, targetfd);
+
+          g_hash_table_insert (fds, GINT_TO_POINTER (targetfd), GINT_TO_POINTER (sourcefd));
+        }
+
+      g_strfreev (fdsv);
+    }
+
+  maxfd++;
+  child_err_report_fd = checked_dup2 (child_err_report_fd, maxfd, child_err_report_fd);
+  maxfd++;
+  helper_sync_fd = checked_dup2 (helper_sync_fd, maxfd, child_err_report_fd);
+  if (saved_stderr_fd >= 0)
+    {
+      maxfd++;
+      saved_stderr_fd = checked_dup2 (saved_stderr_fd, maxfd, child_err_report_fd);
+    }
+
+  {
+    GHashTableIter iter;
+    gpointer sourcefd, targetfd;
+
+    g_hash_table_iter_init (&iter, fds);
+    while (g_hash_table_iter_next (&iter, &targetfd, &sourcefd))
+      {
+        /* If we're doing remapping fd assignments, we need to handle
+         * the case where the user has specified e.g. 5 -> 4, 4 -> 6.
+         * We do this by duping all source fds, taking care to ensure the new
+         * fds are larger than any target fd to avoid introducing new conflicts.
+         */
+        maxfd++;
+        checked_dup2 (GPOINTER_TO_INT (sourcefd), maxfd, child_err_report_fd);
+        g_hash_table_iter_replace (&iter, GINT_TO_POINTER (maxfd));
+      }
+
+    g_hash_table_iter_init (&iter, fds);
+    while (g_hash_table_iter_next (&iter, &targetfd, &sourcefd))
+      checked_dup2 (GPOINTER_TO_INT (sourcefd), GPOINTER_TO_INT (targetfd), child_err_report_fd);
+  }
+
+  g_hash_table_add (fds, GINT_TO_POINTER (child_err_report_fd));
+  g_hash_table_add (fds, GINT_TO_POINTER (helper_sync_fd));
+  if (saved_stderr_fd >= 0)
+    g_hash_table_add (fds, GINT_TO_POINTER (saved_stderr_fd));
+
   /* argv[ARG_CLOSE_DESCRIPTORS] is "y" if file descriptors from 3
    *  upwards should be closed
    */
   if (argv[ARG_CLOSE_DESCRIPTORS][0] == 'y')
     for (i = 3; i < 1000; i++) /* FIXME real limit? */
-      if (i != child_err_report_fd && i != helper_sync_fd && i != saved_stderr_fd)
+      if (!g_hash_table_contains (fds, GINT_TO_POINTER (i)))
         if (_get_osfhandle (i) != -1)
           close (i);
 
@@ -337,6 +405,8 @@ main (int ignored_argc, char **ignored_argv)
    */
   child_err_report_fd = reopen_noninherited (child_err_report_fd, _O_WRONLY);
   helper_sync_fd = reopen_noninherited (helper_sync_fd, _O_RDONLY);
+  if (helper_sync_fd == -1)
+    write_err_and_exit (child_err_report_fd, CHILD_DUP_FAILED);
 
   /* argv[ARG_WAIT] is "w" to wait for the program to exit */
   if (argv[ARG_WAIT][0] == 'w')
@@ -368,7 +438,9 @@ main (int ignored_argc, char **ignored_argv)
    * Remove redirection so that they would go to original stderr
    * instead of being treated as part of stderr of child process.
    */
-  dup2 (saved_stderr_fd, 2);
+  if (saved_stderr_fd >= 0)
+    dup2 (saved_stderr_fd, 2);
+
   if (handle == -1 && saved_errno != 0)
     {
       int ec = (saved_errno == ENOENT)
@@ -384,6 +456,7 @@ main (int ignored_argc, char **ignored_argv)
 
   LocalFree (wargv);
   g_strfreev (argv);
+  g_hash_table_unref (fds);
 
   return 0;
 }
index 638bac5..fc2a96c 100644 (file)
 
 #include "config.h"
 
-#include "glib.h"
+#include "glib-init.h"
 #include "glib-private.h"
-#include "gprintfint.h"
+#include "glib.h"
 #include "glibintl.h"
+#include "gprintfint.h"
 #include "gspawn-private.h"
 #include "gthread.h"
 
@@ -88,6 +89,7 @@ enum
   CHILD_CHDIR_FAILED,
   CHILD_SPAWN_FAILED,
   CHILD_SPAWN_NOENT,
+  CHILD_DUP_FAILED,
 };
 
 enum {
@@ -100,6 +102,7 @@ enum {
   ARG_CLOSE_DESCRIPTORS,
   ARG_USE_PATH,
   ARG_WAIT,
+  ARG_FDS,
   ARG_PROGRAM,
   ARG_COUNT = ARG_PROGRAM
 };
@@ -233,7 +236,7 @@ g_spawn_async (const gchar          *working_directory,
                GPid                 *child_pid,
                GError              **error)
 {
-  g_return_val_if_fail (argv != NULL, FALSE);
+  g_return_val_if_fail (argv != NULL && argv[0] != NULL, FALSE);
   
   return g_spawn_async_with_pipes (working_directory,
                                    argv, envp,
@@ -324,7 +327,7 @@ read_helper_report (int      fd,
                    gintptr  report[2],
                    GError **error)
 {
-  gint bytes = 0;
+  gsize bytes = 0;
   
   while (bytes < sizeof(gintptr)*2)
     {
@@ -392,6 +395,11 @@ set_child_error (gintptr      report[2],
                    _("Failed to execute child process (%s)"),
                    g_strerror (report[1]));
       break;
+    case CHILD_DUP_FAILED:
+      g_set_error (error, G_SPAWN_ERROR, G_SPAWN_ERROR_FAILED,
+                   _("Failed to dup() in child process (%s)"),
+                   g_strerror (report[1]));
+      break;
     default:
       g_assert_not_reached ();
     }
@@ -452,6 +460,8 @@ do_spawn_directly (gint                 *exit_status,
   gint conv_error_index;
   wchar_t *wargv0, **wargv, **wenvp;
 
+  g_assert (argv != NULL && argv[0] != NULL);
+
   new_argv = (flags & G_SPAWN_FILE_AND_ARGV_ZERO) ? protected_argv + 1 : protected_argv;
       
   wargv0 = g_utf8_to_utf16 (argv[0], -1, NULL, NULL, &conv_error);
@@ -568,6 +578,9 @@ fork_exec (gint                  *exit_status,
            gint                   stdin_fd,
            gint                   stdout_fd,
            gint                   stderr_fd,
+           const gint            *source_fds,
+           const gint            *target_fds,
+           gsize                  n_fds,
            gint                  *err_report,
            GError               **error)
 {
@@ -586,11 +599,11 @@ fork_exec (gint                  *exit_status,
   gint conv_error_index;
   gchar *helper_process;
   wchar_t *whelper, **wargv, **wenvp;
-  gchar *glib_dll_directory;
   int stdin_pipe[2] = { -1, -1 };
   int stdout_pipe[2] = { -1, -1 };
   int stderr_pipe[2] = { -1, -1 };
 
+  g_assert (argv != NULL && argv[0] != NULL);
   g_assert (stdin_pipe_out == NULL || stdin_fd < 0);
   g_assert (stdout_pipe_out == NULL || stdout_fd < 0);
   g_assert (stderr_pipe_out == NULL || stderr_fd < 0);
@@ -624,12 +637,20 @@ fork_exec (gint                  *exit_status,
 
   argc = protect_argv (argv, &protected_argv);
 
+  /*
+   * FIXME: Workaround broken spawnvpe functions that SEGV when "=X:="
+   * environment variables are missing. Calling chdir() will set the magic
+   * environment variable again.
+   */
+  _chdir (".");
+
   if (stdin_fd == -1 && stdout_fd == -1 && stderr_fd == -1 &&
       (flags & G_SPAWN_CHILD_INHERITS_STDIN) &&
       !(flags & G_SPAWN_STDOUT_TO_DEV_NULL) &&
       !(flags & G_SPAWN_STDERR_TO_DEV_NULL) &&
       (working_directory == NULL || !*working_directory) &&
-      (flags & G_SPAWN_LEAVE_DESCRIPTORS_OPEN))
+      (flags & G_SPAWN_LEAVE_DESCRIPTORS_OPEN) &&
+      n_fds == 0)
     {
       /* We can do without the helper process */
       gboolean retval =
@@ -651,16 +672,8 @@ fork_exec (gint                  *exit_status,
     helper_process = HELPER_PROCESS "-console.exe";
   else
     helper_process = HELPER_PROCESS ".exe";
-  
-  glib_dll_directory = _glib_get_dll_directory ();
-  if (glib_dll_directory != NULL)
-    {
-      helper_process = g_build_filename (glib_dll_directory, helper_process, NULL);
-      g_free (glib_dll_directory);
-    }
-  else
-    helper_process = g_strdup (helper_process);
 
+  helper_process = g_win32_find_helper_executable_path (helper_process, glib_dll);
   new_argv[0] = protect_argv_string (helper_process);
 
   _g_sprintf (args[ARG_CHILD_ERR_REPORT], "%d", child_err_report_pipe[1]);
@@ -756,6 +769,21 @@ fork_exec (gint                  *exit_status,
   else
     new_argv[ARG_WAIT] = "w";
 
+  if (n_fds == 0)
+    new_argv[ARG_FDS] = g_strdup ("-");
+  else
+    {
+      GString *fds = g_string_new ("");
+      gsize n;
+
+      for (n = 0; n < n_fds; n++)
+        g_string_append_printf (fds, "%d:%d,", source_fds[n], target_fds[n]);
+
+      /* remove the trailing , */
+      g_string_truncate (fds, fds->len - 1);
+      new_argv[ARG_FDS] = g_string_free (fds, FALSE);
+    }
+
   for (i = 0; i <= argc; i++)
     new_argv[ARG_PROGRAM + i] = protected_argv[i];
 
@@ -782,6 +810,7 @@ fork_exec (gint                  *exit_status,
       g_strfreev (protected_argv);
       g_free (new_argv[0]);
       g_free (new_argv[ARG_WORKING_DIRECTORY]);
+      g_free (new_argv[ARG_FDS]);
       g_free (new_argv);
       g_free (helper_process);
 
@@ -797,6 +826,7 @@ fork_exec (gint                  *exit_status,
       g_strfreev (protected_argv);
       g_free (new_argv[0]);
       g_free (new_argv[ARG_WORKING_DIRECTORY]);
+      g_free (new_argv[ARG_FDS]);
       g_free (new_argv);
       g_free (helper_process);
       g_strfreev ((gchar **) wargv);
@@ -828,6 +858,7 @@ fork_exec (gint                  *exit_status,
 
   g_free (new_argv[0]);
   g_free (new_argv[ARG_WORKING_DIRECTORY]);
+  g_free (new_argv[ARG_FDS]);
   g_free (new_argv);
 
   /* Check if gspawn-win32-helper couldn't be run */
@@ -957,7 +988,7 @@ g_spawn_sync (const gchar          *working_directory,
   gint reportpipe = -1;
   GIOChannel *outchannel = NULL;
   GIOChannel *errchannel = NULL;
-  GPollFD outfd, errfd;
+  GPollFD outfd = { -1, 0, 0 }, errfd = { -1, 0, 0 };
   GPollFD fds[2];
   gint nfds;
   gint outindex = -1;
@@ -968,7 +999,7 @@ g_spawn_sync (const gchar          *working_directory,
   gboolean failed;
   gint status;
   
-  g_return_val_if_fail (argv != NULL, FALSE);
+  g_return_val_if_fail (argv != NULL && argv[0] != NULL, FALSE);
   g_return_val_if_fail (!(flags & G_SPAWN_DO_NOT_REAP_CHILD), FALSE);
   g_return_val_if_fail (standard_output == NULL ||
                         !(flags & G_SPAWN_STDOUT_TO_DEV_NULL), FALSE);
@@ -999,6 +1030,7 @@ g_spawn_sync (const gchar          *working_directory,
                   -1,
                   -1,
                   -1,
+                  NULL, NULL, 0,
                   &reportpipe,
                   error))
     return FALSE;
@@ -1199,7 +1231,7 @@ g_spawn_async_with_pipes (const gchar          *working_directory,
                           gint                 *standard_error,
                           GError              **error)
 {
-  g_return_val_if_fail (argv != NULL, FALSE);
+  g_return_val_if_fail (argv != NULL && argv[0] != NULL, FALSE);
   g_return_val_if_fail (standard_output == NULL ||
                         !(flags & G_SPAWN_STDOUT_TO_DEV_NULL), FALSE);
   g_return_val_if_fail (standard_error == NULL ||
@@ -1223,6 +1255,7 @@ g_spawn_async_with_pipes (const gchar          *working_directory,
                     -1,
                     -1,
                     -1,
+                    NULL, NULL, 0,
                     NULL,
                     error);
 }
@@ -1240,7 +1273,7 @@ g_spawn_async_with_fds (const gchar          *working_directory,
                         gint                  stderr_fd,
                         GError              **error)
 {
-  g_return_val_if_fail (argv != NULL, FALSE);
+  g_return_val_if_fail (argv != NULL && argv[0] != NULL, FALSE);
   g_return_val_if_fail (stdin_fd == -1 ||
                         !(flags & G_SPAWN_STDOUT_TO_DEV_NULL), FALSE);
   g_return_val_if_fail (stderr_fd == -1 ||
@@ -1264,6 +1297,7 @@ g_spawn_async_with_fds (const gchar          *working_directory,
                     stdin_fd,
                     stdout_fd,
                     stderr_fd,
+                    NULL, NULL, 0,
                     NULL,
                     error);
 
@@ -1288,7 +1322,7 @@ g_spawn_async_with_pipes_and_fds (const gchar           *working_directory,
                                   gint                  *stderr_pipe_out,
                                   GError               **error)
 {
-  g_return_val_if_fail (argv != NULL, FALSE);
+  g_return_val_if_fail (argv != NULL && argv[0] != NULL, FALSE);
   g_return_val_if_fail (stdout_pipe_out == NULL ||
                         !(flags & G_SPAWN_STDOUT_TO_DEV_NULL), FALSE);
   g_return_val_if_fail (stderr_pipe_out == NULL ||
@@ -1301,14 +1335,6 @@ g_spawn_async_with_pipes_and_fds (const gchar           *working_directory,
   g_return_val_if_fail (stdout_pipe_out == NULL || stdout_fd < 0, FALSE);
   g_return_val_if_fail (stderr_pipe_out == NULL || stderr_fd < 0, FALSE);
 
-  /* source_fds/target_fds isn’t supported on Windows at the moment. */
-  if (n_fds != 0)
-    {
-      g_set_error_literal (error, G_SPAWN_ERROR, G_SPAWN_ERROR_INVAL,
-                           "FD redirection is not supported on Windows at the moment");
-      return FALSE;
-    }
-
   return fork_exec (NULL,
                     (flags & G_SPAWN_DO_NOT_REAP_CHILD),
                     working_directory,
@@ -1324,6 +1350,9 @@ g_spawn_async_with_pipes_and_fds (const gchar           *working_directory,
                     stdin_fd,
                     stdout_fd,
                     stderr_fd,
+                    source_fds,
+                    target_fds,
+                    n_fds,
                     NULL,
                     error);
 }
@@ -1340,6 +1369,7 @@ g_spawn_command_line_sync (const gchar  *command_line,
 
   g_return_val_if_fail (command_line != NULL, FALSE);
   
+  /* This will return a runtime error if @command_line is the empty string. */
   if (!g_shell_parse_argv (command_line,
                            NULL, &argv,
                            error))
@@ -1369,6 +1399,7 @@ g_spawn_command_line_async (const gchar *command_line,
 
   g_return_val_if_fail (command_line != NULL, FALSE);
 
+  /* This will return a runtime error if @command_line is the empty string. */
   if (!g_shell_parse_argv (command_line,
                            NULL, &argv,
                            error))
index 67be6a6..0a2cbe5 100644 (file)
@@ -319,7 +319,7 @@ read_data (GString *str,
  * @working_directory: (type filename) (nullable): child's current working
  *     directory, or %NULL to inherit parent's
  * @argv: (array zero-terminated=1) (element-type filename):
- *     child's argument vector
+ *     child's argument vector, which must be non-empty and %NULL-terminated
  * @envp: (array zero-terminated=1) (element-type filename) (nullable):
  *     child's environment, or %NULL to inherit parent's
  * @flags: flags from #GSpawnFlags
@@ -378,6 +378,7 @@ g_spawn_sync (const gchar          *working_directory,
   gint status;
   
   g_return_val_if_fail (argv != NULL, FALSE);
+  g_return_val_if_fail (argv[0] != NULL, FALSE);
   g_return_val_if_fail (!(flags & G_SPAWN_DO_NOT_REAP_CHILD), FALSE);
   g_return_val_if_fail (standard_output == NULL ||
                         !(flags & G_SPAWN_STDOUT_TO_DEV_NULL), FALSE);
@@ -578,7 +579,7 @@ g_spawn_sync (const gchar          *working_directory,
  * @working_directory: (type filename) (nullable): child's current working
  *     directory, or %NULL to inherit parent's, in the GLib file name encoding
  * @argv: (array zero-terminated=1) (element-type filename): child's argument
- *     vector, in the GLib file name encoding
+ *     vector, in the GLib file name encoding; it must be non-empty and %NULL-terminated
  * @envp: (array zero-terminated=1) (element-type filename) (nullable):
  *     child's environment, or %NULL to inherit parent's, in the GLib file
  *     name encoding
@@ -610,6 +611,7 @@ g_spawn_async_with_pipes (const gchar          *working_directory,
                           GError              **error)
 {
   g_return_val_if_fail (argv != NULL, FALSE);
+  g_return_val_if_fail (argv[0] != NULL, FALSE);
   g_return_val_if_fail (standard_output == NULL ||
                         !(flags & G_SPAWN_STDOUT_TO_DEV_NULL), FALSE);
   g_return_val_if_fail (standard_error == NULL ||
@@ -646,7 +648,7 @@ g_spawn_async_with_pipes (const gchar          *working_directory,
  * @working_directory: (type filename) (nullable): child's current working
  *     directory, or %NULL to inherit parent's, in the GLib file name encoding
  * @argv: (array zero-terminated=1) (element-type filename): child's argument
- *     vector, in the GLib file name encoding
+ *     vector, in the GLib file name encoding; it must be non-empty and %NULL-terminated
  * @envp: (array zero-terminated=1) (element-type filename) (nullable):
  *     child's environment, or %NULL to inherit parent's, in the GLib file
  *     name encoding
@@ -772,6 +774,8 @@ g_spawn_async_with_pipes (const gchar          *working_directory,
  * any target FDs which equal @stdin_fd, @stdout_fd or @stderr_fd will overwrite
  * them in the spawned process.
  *
+ * @source_fds is supported on Windows since 2.72.
+ *
  * %G_SPAWN_FILE_AND_ARGV_ZERO means that the first element of @argv is
  * the file to execute, while the remaining elements are the actual
  * argument vector to pass to the file. Normally g_spawn_async_with_pipes()
@@ -824,7 +828,7 @@ g_spawn_async_with_pipes (const gchar          *working_directory,
  * even if they occur in the child (for example if the executable in
  * `@argv[0]` is not found). Typically the `message` field of returned
  * errors should be displayed to users. Possible errors are those from
- * the #G_SPAWN_ERROR domain.
+ * the %G_SPAWN_ERROR domain.
  *
  * If an error occurs, @child_pid, @stdin_pipe_out, @stdout_pipe_out,
  * and @stderr_pipe_out will not be filled with valid values.
@@ -878,6 +882,7 @@ g_spawn_async_with_pipes_and_fds (const gchar           *working_directory,
                                   GError               **error)
 {
   g_return_val_if_fail (argv != NULL, FALSE);
+  g_return_val_if_fail (argv[0] != NULL, FALSE);
   g_return_val_if_fail (stdout_pipe_out == NULL ||
                         !(flags & G_SPAWN_STDOUT_TO_DEV_NULL), FALSE);
   g_return_val_if_fail (stderr_pipe_out == NULL ||
@@ -920,7 +925,8 @@ g_spawn_async_with_pipes_and_fds (const gchar           *working_directory,
 /**
  * g_spawn_async_with_fds:
  * @working_directory: (type filename) (nullable): child's current working directory, or %NULL to inherit parent's, in the GLib file name encoding
- * @argv: (array zero-terminated=1): child's argument vector, in the GLib file name encoding
+ * @argv: (array zero-terminated=1): child's argument vector, in the GLib file name encoding;
+ *   it must be non-empty and %NULL-terminated
  * @envp: (array zero-terminated=1) (nullable): child's environment, or %NULL to inherit parent's, in the GLib file name encoding
  * @flags: flags from #GSpawnFlags
  * @child_setup: (scope async) (nullable): function to run in the child just before exec()
@@ -954,6 +960,7 @@ g_spawn_async_with_fds (const gchar          *working_directory,
                         GError              **error)
 {
   g_return_val_if_fail (argv != NULL, FALSE);
+  g_return_val_if_fail (argv[0] != NULL, FALSE);
   g_return_val_if_fail (stdout_fd < 0 ||
                         !(flags & G_SPAWN_STDOUT_TO_DEV_NULL), FALSE);
   g_return_val_if_fail (stderr_fd < 0 ||
@@ -1037,6 +1044,7 @@ g_spawn_command_line_sync (const gchar  *command_line,
 
   g_return_val_if_fail (command_line != NULL, FALSE);
   
+  /* This will return a runtime error if @command_line is the empty string. */
   if (!g_shell_parse_argv (command_line,
                            NULL, &argv,
                            error))
@@ -1084,6 +1092,7 @@ g_spawn_command_line_async (const gchar *command_line,
 
   g_return_val_if_fail (command_line != NULL, FALSE);
 
+  /* This will return a runtime error if @command_line is the empty string. */
   if (!g_shell_parse_argv (command_line,
                            NULL, &argv,
                            error))
@@ -1627,13 +1636,16 @@ enum
 {
   CHILD_CHDIR_FAILED,
   CHILD_EXEC_FAILED,
+  CHILD_OPEN_FAILED,
   CHILD_DUP2_FAILED,
   CHILD_FORK_FAILED,
   CHILD_CLOSE_FAILED,
 };
 
 /* This function is called between fork() and exec() and hence must be
- * async-signal-safe (see signal-safety(7)) until it calls exec(). */
+ * async-signal-safe (see signal-safety(7)) until it calls exec().
+ *
+ * All callers must guarantee that @argv and @argv[0] are non-NULL. */
 static void
 do_exec (gint                  child_err_report_fd,
          gint                  stdin_fd,
@@ -1668,7 +1680,6 @@ do_exec (gint                  child_err_report_fd,
   /* Redirect pipes as required */
   if (stdin_fd >= 0)
     {
-      /* dup2 can't actually fail here I don't think */
       if (safe_dup2 (stdin_fd, 0) < 0)
         write_err_and_exit (child_err_report_fd,
                             CHILD_DUP2_FAILED);
@@ -1683,14 +1694,15 @@ do_exec (gint                  child_err_report_fd,
       gint read_null = safe_open ("/dev/null", O_RDONLY);
       if (read_null < 0)
         write_err_and_exit (child_err_report_fd,
+                            CHILD_OPEN_FAILED);
+      if (safe_dup2 (read_null, 0) < 0)
+        write_err_and_exit (child_err_report_fd,
                             CHILD_DUP2_FAILED);
-      safe_dup2 (read_null, 0);
       close_and_invalidate (&read_null);
     }
 
   if (stdout_fd >= 0)
     {
-      /* dup2 can't actually fail here I don't think */
       if (safe_dup2 (stdout_fd, 1) < 0)
         write_err_and_exit (child_err_report_fd,
                             CHILD_DUP2_FAILED);
@@ -1704,14 +1716,15 @@ do_exec (gint                  child_err_report_fd,
       gint write_null = safe_open ("/dev/null", O_WRONLY);
       if (write_null < 0)
         write_err_and_exit (child_err_report_fd,
+                            CHILD_OPEN_FAILED);
+      if (safe_dup2 (write_null, 1) < 0)
+        write_err_and_exit (child_err_report_fd,
                             CHILD_DUP2_FAILED);
-      safe_dup2 (write_null, 1);
       close_and_invalidate (&write_null);
     }
 
   if (stderr_fd >= 0)
     {
-      /* dup2 can't actually fail here I don't think */
       if (safe_dup2 (stderr_fd, 2) < 0)
         write_err_and_exit (child_err_report_fd,
                             CHILD_DUP2_FAILED);
@@ -1725,8 +1738,10 @@ do_exec (gint                  child_err_report_fd,
       gint write_null = safe_open ("/dev/null", O_WRONLY);
       if (write_null < 0)
         write_err_and_exit (child_err_report_fd,
+                            CHILD_OPEN_FAILED);
+      if (safe_dup2 (write_null, 2) < 0)
+        write_err_and_exit (child_err_report_fd,
                             CHILD_DUP2_FAILED);
-      safe_dup2 (write_null, 2);
       close_and_invalidate (&write_null);
     }
 
@@ -1739,7 +1754,8 @@ do_exec (gint                  child_err_report_fd,
     {
       if (child_setup == NULL && n_fds == 0)
         {
-          safe_dup2 (child_err_report_fd, 3);
+          if (safe_dup2 (child_err_report_fd, 3) < 0)
+            write_err_and_exit (child_err_report_fd, CHILD_DUP2_FAILED);
           set_cloexec (GINT_TO_POINTER (0), 3);
           if (safe_closefrom (4) < 0)
             write_err_and_exit (child_err_report_fd, CHILD_CLOSE_FAILED);
@@ -1786,7 +1802,11 @@ do_exec (gint                  child_err_report_fd,
       for (i = 0; i < n_fds; i++)
         {
           if (source_fds[i] != target_fds[i])
-            source_fds[i] = dupfd_cloexec (source_fds[i], max_target_fd + 1);
+            {
+              source_fds[i] = dupfd_cloexec (source_fds[i], max_target_fd + 1);
+              if (source_fds[i] < 0)
+                write_err_and_exit (child_err_report_fd, CHILD_DUP2_FAILED);
+            }
         }
 
       for (i = 0; i < n_fds; i++)
@@ -1804,9 +1824,15 @@ do_exec (gint                  child_err_report_fd,
                * dup it so it doesn’t get conflated.
                */
               if (target_fds[i] == child_err_report_fd)
-                child_err_report_fd = dupfd_cloexec (child_err_report_fd, max_target_fd + 1);
+                {
+                  child_err_report_fd = dupfd_cloexec (child_err_report_fd, max_target_fd + 1);
+                  if (child_err_report_fd < 0)
+                    write_err_and_exit (child_err_report_fd, CHILD_DUP2_FAILED);
+                }
+
+              if (safe_dup2 (source_fds[i], target_fds[i]) < 0)
+                write_err_and_exit (child_err_report_fd, CHILD_DUP2_FAILED);
 
-              safe_dup2 (source_fds[i], target_fds[i]);
               close_and_invalidate (&source_fds[i]);
             }
         }
@@ -1890,18 +1916,26 @@ do_posix_spawn (const gchar * const *argv,
                 gint       *child_close_fds,
                 gint        stdin_fd,
                 gint        stdout_fd,
-                gint        stderr_fd)
+                gint        stderr_fd,
+                const gint *source_fds,
+                const gint *target_fds,
+                gsize       n_fds)
 {
   pid_t pid;
+  gint *duped_source_fds = NULL;
+  gint max_target_fd = 0;
   const gchar * const *argv_pass;
   posix_spawnattr_t attr;
   posix_spawn_file_actions_t file_actions;
   gint parent_close_fds[3];
-  gint num_parent_close_fds = 0;
+  gsize num_parent_close_fds = 0;
   GSList *child_close = NULL;
   GSList *elem;
   sigset_t mask;
-  int i, r;
+  gsize i;
+  int r;
+
+  g_assert (argv != NULL && argv[0] != NULL);
 
   if (*argv[0] == '\0')
     {
@@ -2015,6 +2049,50 @@ do_posix_spawn (const gchar * const *argv,
         goto out_close_fds;
     }
 
+  /* If source_fds[i] != target_fds[i], we need to handle the case
+   * where the user has specified, e.g., 5 -> 4, 4 -> 6. We do this
+   * by duping the source fds, taking care to ensure the new fds are
+   * larger than any target fd to avoid introducing new conflicts.
+   *
+   * If source_fds[i] == target_fds[i], then we just need to leak
+   * the fd into the child process, which we *could* do by temporarily
+   * unsetting CLOEXEC and then setting it again after we spawn if
+   * it was originally set. POSIX requires that the addup2 action unset
+   * CLOEXEC if source and target are identical, so you'd think doing it
+   * manually wouldn't be needed, but unfortunately as of 2021 many
+   * libcs still don't do so. Example nonconforming libcs:
+   *  Bionic: https://android.googlesource.com/platform/bionic/+/f6e5b582604715729b09db3e36a7aeb8c24b36a4/libc/bionic/spawn.cpp#71
+   *  uclibc-ng: https://cgit.uclibc-ng.org/cgi/cgit/uclibc-ng.git/tree/librt/spawn.c?id=7c36bcae09d66bbaa35cbb02253ae0556f42677e#n88
+   *
+   * Anyway, unsetting CLOEXEC ourselves would open a small race window
+   * where the fd could be inherited into a child process if another
+   * thread spawns something at the same time, because we have not
+   * called fork() and are multithreaded here. This race is avoidable by
+   * using dupfd_cloexec, which we already have to do to handle the
+   * source_fds[i] != target_fds[i] case. So let's always do it!
+   */
+
+  for (i = 0; i < n_fds; i++)
+    max_target_fd = MAX (max_target_fd, target_fds[i]);
+
+  if (max_target_fd == G_MAXINT)
+    goto out_close_fds;
+
+  duped_source_fds = g_new (gint, n_fds);
+  for (i = 0; i < n_fds; i++)
+    {
+      duped_source_fds[i] = dupfd_cloexec (source_fds[i], max_target_fd + 1);
+      if (duped_source_fds[i] < 0)
+        goto out_close_fds;
+    }
+
+  for (i = 0; i < n_fds; i++)
+    {
+      r = posix_spawn_file_actions_adddup2 (&file_actions, duped_source_fds[i], target_fds[i]);
+      if (r != 0)
+        goto out_close_fds;
+    }
+
   /* Intentionally close the fds in the child as the last file action,
    * having been careful not to add the same fd to this list twice.
    *
@@ -2047,6 +2125,13 @@ out_close_fds:
   for (i = 0; i < num_parent_close_fds; i++)
     close_and_invalidate (&parent_close_fds [i]);
 
+  if (duped_source_fds != NULL)
+    {
+      for (i = 0; i < n_fds; i++)
+        close_and_invalidate (&duped_source_fds[i]);
+      g_free (duped_source_fds);
+    }
+
   posix_spawn_file_actions_destroy (&file_actions);
 out_free_spawnattr:
   posix_spawnattr_destroy (&attr);
@@ -2102,6 +2187,7 @@ fork_exec (gboolean              intermediate_child,
   gint n_child_close_fds = 0;
   gint *source_fds_copy = NULL;
 
+  g_assert (argv != NULL && argv[0] != NULL);
   g_assert (stdin_pipe_out == NULL || stdin_fd < 0);
   g_assert (stdout_pipe_out == NULL || stdout_fd < 0);
   g_assert (stderr_pipe_out == NULL || stderr_fd < 0);
@@ -2134,10 +2220,8 @@ fork_exec (gboolean              intermediate_child,
   child_close_fds[n_child_close_fds++] = -1;
 
 #ifdef POSIX_SPAWN_AVAILABLE
-  /* FIXME: Handle @source_fds and @target_fds in do_posix_spawn() using the
-   * file actions API. */
   if (!intermediate_child && working_directory == NULL && !close_descriptors &&
-      !search_path_from_envp && child_setup == NULL && n_fds == 0)
+      !search_path_from_envp && child_setup == NULL)
     {
       g_trace_mark (G_TRACE_CURRENT_TIME, 0,
                     "GLib", "posix_spawn",
@@ -2154,7 +2238,10 @@ fork_exec (gboolean              intermediate_child,
                                child_close_fds,
                                stdin_fd,
                                stdout_fd,
-                               stderr_fd);
+                               stderr_fd,
+                               source_fds,
+                               target_fds,
+                               n_fds);
       if (status == 0)
         goto success;
 
@@ -2455,12 +2542,20 @@ fork_exec (gboolean              intermediate_child,
                            g_strerror (buf[1]));
 
               break;
-              
+
+            case CHILD_OPEN_FAILED:
+              g_set_error (error,
+                           G_SPAWN_ERROR,
+                           G_SPAWN_ERROR_FAILED,
+                           _("Failed to open file to remap file descriptor (%s)"),
+                           g_strerror (buf[1]));
+              break;
+
             case CHILD_DUP2_FAILED:
               g_set_error (error,
                            G_SPAWN_ERROR,
                            G_SPAWN_ERROR_FAILED,
-                           _("Failed to redirect output or input of child process (%s)"),
+                           _("Failed to duplicate file descriptor for child process (%s)"),
                            g_strerror (buf[1]));
 
               break;
@@ -2651,7 +2746,7 @@ g_execute (const gchar  *file,
            gchar        *search_path_buffer,
            gsize         search_path_buffer_len)
 {
-  if (*file == '\0')
+  if (file == NULL || *file == '\0')
     {
       /* We check the simple case first. */
       errno = ENOENT;
index c04b6c2..45180eb 100644 (file)
@@ -760,7 +760,7 @@ _g_win32_stat_utf8 (const gchar       *filename,
     len--;
 
   if (len <= 0 ||
-      (g_path_is_absolute (filename) && len <= g_path_skip_root (filename) - filename))
+      (g_path_is_absolute (filename) && len <= (gsize) (g_path_skip_root (filename) - filename)))
     len = strlen (filename);
 
   wfilename = g_utf8_to_utf16 (filename, len, NULL, NULL, NULL);
@@ -893,7 +893,7 @@ g_win32_readlink_utf8 (const gchar  *filename,
       return tmp_len;
     }
 
-  if (tmp_len > buf_size)
+  if ((gsize) tmp_len > buf_size)
     tmp_len = buf_size;
 
   memcpy (buf, tmp, tmp_len);
index 7ed9c5d..4af0efd 100644 (file)
@@ -61,7 +61,7 @@ typedef struct stat GStatBuf;
  * A few functions can't be handled in this way, since they are not defined
  * in a portable system header that we could include here.
  *
- * #G_STDIO_WRAP_ON_UNIX is not public API and its behaviour is not guaranteed
+ * G_STDIO_WRAP_ON_UNIX is not public API and its behaviour is not guaranteed
  * in future.
  */
 
index ef69206..9273533 100644 (file)
@@ -317,11 +317,8 @@ static const guint16 ascii_table_data[256] = {
 
 const guint16 * const g_ascii_table = ascii_table_data;
 
-#if defined (HAVE_NEWLOCALE) && \
-    defined (HAVE_USELOCALE) && \
-    defined (HAVE_STRTOD_L) && \
-    defined (HAVE_STRTOULL_L) && \
-    defined (HAVE_STRTOLL_L)
+#if defined(HAVE_NEWLOCALE) && \
+    defined(HAVE_USELOCALE)
 #define USE_XLOCALE 1
 #endif
 
@@ -731,7 +728,7 @@ gdouble
 g_ascii_strtod (const gchar *nptr,
                 gchar      **endptr)
 {
-#ifdef USE_XLOCALE
+#if defined(USE_XLOCALE) && defined(HAVE_STRTOD_L)
 
   g_return_val_if_fail (nptr != NULL, 0);
 
@@ -909,7 +906,7 @@ g_ascii_strtod (const gchar *nptr,
  * the string back using g_ascii_strtod() gives the same machine-number
  * (on machines with IEEE compatible 64bit doubles). It is
  * guaranteed that the size of the resulting string will never
- * be larger than @G_ASCII_DTOSTR_BUF_SIZE bytes, including the terminating
+ * be larger than %G_ASCII_DTOSTR_BUF_SIZE bytes, including the terminating
  * nul character, which is always added.
  *
  * Returns: The pointer to the buffer with the converted string.
@@ -930,7 +927,7 @@ g_ascii_dtostr (gchar       *buffer,
  * @buffer: A buffer to place the resulting string in
  * @buf_len: The length of the buffer.
  * @format: The printf()-style format to use for the
- *          code to use for converting.
+ *   code to use for converting
  * @d: The #gdouble to convert
  *
  * Converts a #gdouble to a string, using the '.' as
@@ -938,6 +935,9 @@ g_ascii_dtostr (gchar       *buffer,
  * a printf()-style format string. Allowed conversion
  * specifiers are 'e', 'E', 'f', 'F', 'g' and 'G'.
  *
+ * The @format must just be a single format specifier
+ * starting with `%`, expecting a #gdouble argument.
+ *
  * The returned buffer is guaranteed to be nul-terminated.
  *
  * If you just want to want to serialize the value into a
@@ -954,6 +954,10 @@ g_ascii_formatd (gchar       *buffer,
 #ifdef USE_XLOCALE
   locale_t old_locale;
 
+  g_return_val_if_fail (buffer != NULL, NULL);
+  g_return_val_if_fail (format[0] == '%', NULL);
+  g_return_val_if_fail (strpbrk (format + 1, "'l%") == NULL, NULL);
+
   old_locale = uselocale (get_C_locale ());
    _g_snprintf (buffer, buf_len, format, d);
   uselocale (old_locale);
@@ -1044,7 +1048,7 @@ g_ascii_formatd (gchar       *buffer,
 #define TOUPPER(c)              (ISLOWER (c) ? (c) - 'a' + 'A' : (c))
 #define TOLOWER(c)              (ISUPPER (c) ? (c) - 'A' + 'a' : (c))
 
-#ifndef USE_XLOCALE
+#if !defined(USE_XLOCALE) || !defined(HAVE_STRTOULL_L) || !defined(HAVE_STRTOLL_L)
 
 static guint64
 g_parse_long_long (const gchar  *nptr,
@@ -1169,7 +1173,7 @@ g_parse_long_long (const gchar  *nptr,
     }
   return 0;
 }
-#endif /* !USE_XLOCALE */
+#endif /* !defined(USE_XLOCALE) || !defined(HAVE_STRTOULL_L) || !defined(HAVE_STRTOLL_L) */
 
 /**
  * g_ascii_strtoull:
@@ -1210,7 +1214,7 @@ g_ascii_strtoull (const gchar *nptr,
                   gchar      **endptr,
                   guint        base)
 {
-#ifdef USE_XLOCALE
+#if defined(USE_XLOCALE) && defined(HAVE_STRTOULL_L)
   return strtoull_l (nptr, endptr, base, get_C_locale ());
 #else
   gboolean negative;
@@ -1257,7 +1261,7 @@ g_ascii_strtoll (const gchar *nptr,
                  gchar      **endptr,
                  guint        base)
 {
-#ifdef USE_XLOCALE
+#if defined(USE_XLOCALE) && defined(HAVE_STRTOLL_L)
   return strtoll_l (nptr, endptr, base, get_C_locale ());
 #else
   gboolean negative;
@@ -1874,7 +1878,9 @@ g_ascii_strcasecmp (const gchar *s1,
  * @n: number of characters to compare
  *
  * Compare @s1 and @s2, ignoring the case of ASCII characters and any
- * characters after the first @n in each string.
+ * characters after the first @n in each string. If either string is
+ * less than @n bytes long, comparison will stop at the first nul byte
+ * encountered.
  *
  * Unlike the BSD strcasecmp() function, this only recognizes standard
  * ASCII letters and ignores the locale, treating all non-ASCII
@@ -2024,7 +2030,7 @@ g_strncasecmp (const gchar *s1,
  * g_strdelimit:
  * @string: the string to convert
  * @delimiters: (nullable): a string containing the current delimiters,
- *     or %NULL to use the standard delimiters defined in #G_STR_DELIMITERS
+ *     or %NULL to use the standard delimiters defined in %G_STR_DELIMITERS
  * @new_delimiter: the new delimiter character
  *
  * Converts any delimiter characters in @string to @new_delimiter.
index 17dc2c3..0a509e5 100644 (file)
@@ -37,6 +37,7 @@
 #include "gstring.h"
 #include "guriprivate.h"
 #include "gprintf.h"
+#include "gutilsprivate.h"
 
 
 /**
  * The GString struct contains the public fields of a GString.
  */
 
-
-#define MY_MAXSIZE ((gsize)-1)
-
-static inline gsize
-nearest_power (gsize base, gsize num)
-{
-  if (num > MY_MAXSIZE / 2)
-    {
-      return MY_MAXSIZE;
-    }
-  else
-    {
-      gsize n = base;
-
-      while (n < num)
-        n <<= 1;
-
-      return n;
-    }
-}
-
 static void
 g_string_maybe_expand (GString *string,
                        gsize    len)
 {
+  /* Detect potential overflow */
+  if G_UNLIKELY ((G_MAXSIZE - string->len - 1) < len)
+    g_error ("adding %" G_GSIZE_FORMAT " to string would overflow", len);
+
   if (string->len + len >= string->allocated_len)
     {
-      string->allocated_len = nearest_power (1, string->len + len + 1);
+      string->allocated_len = g_nearest_pow (string->len + len + 1);
+      /* If the new size is bigger than G_MAXSIZE / 2, only allocate enough
+       * memory for this string and don't over-allocate. */
+      if (string->allocated_len == 0)
+        string->allocated_len = string->len + len + 1;
       string->str = g_realloc (string->str, string->allocated_len);
     }
 }
index 524eadc..feacb15 100644 (file)
@@ -37,6 +37,7 @@
 #include "gmessages.h"
 
 #include "gutils.h"
+#include "gutilsprivate.h"
 
 /**
  * SECTION:string_chunks
@@ -82,27 +83,6 @@ struct _GStringChunk
   gsize       default_size;
 };
 
-#define MY_MAXSIZE ((gsize)-1)
-
-static inline gsize
-nearest_power (gsize base,
-               gsize num)
-{
-  if (num > MY_MAXSIZE / 2)
-    {
-      return MY_MAXSIZE;
-    }
-  else
-    {
-      gsize n = base;
-
-      while (n < num)
-        n <<= 1;
-
-      return n;
-    }
-}
-
 /**
  * g_string_chunk_new:
  * @size: the default size of the blocks of memory which are
@@ -120,7 +100,7 @@ g_string_chunk_new (gsize size)
   GStringChunk *new_chunk = g_new (GStringChunk, 1);
   gsize actual_size = 1;
 
-  actual_size = nearest_power (1, size);
+  actual_size = g_nearest_pow (MAX (1, size));
 
   new_chunk->const_table  = NULL;
   new_chunk->storage_list = NULL;
@@ -280,7 +260,7 @@ g_string_chunk_insert_len (GStringChunk *chunk,
                            const gchar  *string,
                            gssize        len)
 {
-  gssize size;
+  gsize size;
   gchar* pos;
 
   g_return_val_if_fail (chunk != NULL, NULL);
@@ -288,11 +268,16 @@ g_string_chunk_insert_len (GStringChunk *chunk,
   if (len < 0)
     size = strlen (string);
   else
-    size = len;
+    size = (gsize) len;
 
-  if ((chunk->storage_next + size + 1) > chunk->this_size)
+  if ((G_MAXSIZE - chunk->storage_next < size + 1) || (chunk->storage_next + size + 1) > chunk->this_size)
     {
-      gsize new_size = nearest_power (chunk->default_size, size + 1);
+      gsize new_size = g_nearest_pow (MAX (chunk->default_size, size + 1));
+
+      /* If size is bigger than G_MAXSIZE / 2 then store it in its own
+       * allocation instead of failing here */
+      if (new_size == 0)
+        new_size = size + 1;
 
       chunk->storage_list = g_slist_prepend (chunk->storage_list,
                                              g_new (gchar, new_size));
index 94cfba6..c48ecaf 100644 (file)
@@ -668,8 +668,8 @@ parse_args (gint    *argc_p,
         }
     }
   /* collapse argv */
-  e = 1;
-  for (i = 1; i < argc; i++)
+  e = 0;
+  for (i = 0; i < argc; i++)
     if (argv[i])
       {
         argv[e++] = argv[i];
index 5782703..dca4bad 100644 (file)
@@ -35,6 +35,7 @@
 #include <sys/resource.h>
 #endif
 #ifdef G_OS_WIN32
+#include <crtdbg.h>
 #include <io.h>
 #include <windows.h>
 #endif
@@ -889,10 +890,10 @@ static gboolean    test_debug_log = FALSE;
 static gboolean    test_tap_log = TRUE;  /* default to TAP as of GLib 2.62; see #1619; the non-TAP output mode is deprecated */
 static gboolean    test_nonfatal_assertions = FALSE;
 static DestroyEntry *test_destroy_queue = NULL;
-static char       *test_argv0 = NULL;
-static char       *test_argv0_dirname;
-static const char *test_disted_files_dir;
-static const char *test_built_files_dir;
+static const char *test_argv0 = NULL;           /* (nullable), points into global argv */
+static char       *test_argv0_dirname = NULL;   /* owned by GLib */
+static const char *test_disted_files_dir;       /* points into test_argv0_dirname or an environment variable */
+static const char *test_built_files_dir;        /* points into test_argv0_dirname or an environment variable */
 static char       *test_initial_cwd = NULL;
 static gboolean    test_in_forked_child = FALSE;
 static gboolean    test_in_subprocess = FALSE;
@@ -1137,7 +1138,7 @@ parse_args (gint    *argc_p,
   gchar **argv = *argv_p;
   guint i, e;
 
-  test_argv0 = argv[0];
+  test_argv0 = argv[0];  /* will be NULL iff argc == 0 */
   test_initial_cwd = g_get_current_dir ();
 
   /* parse known args */
@@ -1381,8 +1382,8 @@ parse_args (gint    *argc_p,
   test_paths = g_slist_reverse (test_paths);
 
   /* collapse argv */
-  e = 1;
-  for (i = 1; i < argc; i++)
+  e = 0;
+  for (i = 0; i < argc; i++)
     if (argv[i])
       {
         argv[e++] = argv[i];
@@ -1433,7 +1434,7 @@ test_do_isolate_dirs (GError **error)
 {
   gchar *subdir = NULL;
   gchar *home_dir = NULL, *cache_dir = NULL, *config_dir = NULL;
-  gchar *data_dir = NULL, *runtime_dir = NULL;
+  gchar *state_dir = NULL, *data_dir = NULL, *runtime_dir = NULL;
   gchar *config_dirs[3];
   gchar *data_dirs[3];
 
@@ -1470,6 +1471,7 @@ test_do_isolate_dirs (GError **error)
   cache_dir = g_build_filename (subdir, "cache", NULL);
   config_dir = g_build_filename (subdir, "config", NULL);
   data_dir = g_build_filename (subdir, "data", NULL);
+  state_dir = g_build_filename (subdir, "state", NULL);
 
   config_dirs[0] = g_build_filename (subdir, "system-config1", NULL);
   config_dirs[1] = g_build_filename (subdir, "system-config2", NULL);
@@ -1487,10 +1489,12 @@ test_do_isolate_dirs (GError **error)
                    "XDG_CONFIG_HOME", config_dir,
                    "XDG_DATA_DIRS", data_dirs,
                    "XDG_DATA_HOME", data_dir,
+                   "XDG_STATE_HOME", state_dir,
                    "XDG_RUNTIME_DIR", runtime_dir,
                    NULL);
 
   g_free (runtime_dir);
+  g_free (state_dir);
   g_free (data_dir);
   g_free (config_dir);
   g_free (cache_dir);
@@ -1597,6 +1601,25 @@ void
   mutable_test_config_vars.test_undefined = FALSE;
 #endif
 
+#ifdef G_OS_WIN32
+  // don't open a window for errors (like the "abort() was called one")
+  _CrtSetReportMode (_CRT_ERROR, _CRTDBG_MODE_FILE);
+  _CrtSetReportFile (_CRT_ERROR, _CRTDBG_FILE_STDERR);
+  // while gtest tests tend to use g_assert and friends
+  // if they do use the C standard assert macro we want to
+  // output a message to stderr, not open a popup window
+  _CrtSetReportMode (_CRT_ASSERT, _CRTDBG_MODE_FILE);
+  _CrtSetReportFile (_CRT_ASSERT, _CRTDBG_FILE_STDERR);
+  // in release mode abort() will pop up a windows error
+  // reporting dialog, let's prevent that. Only msvcrxx and
+  // the UCRT have this function, but there's no great way to
+  // detect msvcrxx (that I know of) so only call this when using
+  // the UCRT
+#ifdef _UCRT
+  _set_abort_behavior (0, _CALL_REPORTFAULT);
+#endif
+#endif
+
   va_start (args, argv);
   while ((option = va_arg (args, char *)))
     {
@@ -1709,7 +1732,7 @@ void
   g_log_set_default_handler (gtest_default_log_handler, NULL);
   g_test_log (G_TEST_LOG_START_BINARY, g_get_prgname(), test_run_seedstr, 0, NULL);
 
-  test_argv0_dirname = g_path_get_dirname (test_argv0);
+  test_argv0_dirname = (test_argv0 != NULL) ? g_path_get_dirname (test_argv0) : g_strdup (".");
 
   /* Make sure we get the real dirname that the test was run from */
   if (g_str_has_suffix (test_argv0_dirname, "/.libs"))
@@ -1900,9 +1923,10 @@ g_test_timer_start (void)
 /**
  * g_test_timer_elapsed:
  *
- * Get the time since the last start of the timer with g_test_timer_start().
+ * Get the number of seconds since the last start of the timer with
+ * g_test_timer_start().
  *
- * Returns: the time since the last start of the timer, as a double
+ * Returns: the time since the last start of the timer in seconds, as a double
  *
  * Since: 2.16
  */
@@ -2196,6 +2220,13 @@ g_test_run (void)
   int ret;
   GTestSuite *suite;
 
+  if (atexit (test_cleanup) != 0)
+    {
+      int errsv = errno;
+      g_error ("Unable to register test cleanup to be run at exit: %s",
+               g_strerror (errsv));
+    }
+
   suite = g_test_get_root ();
   if (g_test_run_suite (suite) != 0)
     {
@@ -2232,7 +2263,6 @@ g_test_run (void)
 
 out:
   g_test_suite_free (suite);
-  test_cleanup ();
   return ret;
 }
 
@@ -3798,8 +3828,11 @@ g_test_trap_subprocess (const char           *test_path,
   test_trap_clear ();
   test_trap_last_subprocess = g_strdup (test_path);
 
+  if (test_argv0 == NULL)
+    g_error ("g_test_trap_subprocess() requires argv0 to be passed to g_test_init()");
+
   argv = g_ptr_array_new ();
-  g_ptr_array_add (argv, test_argv0);
+  g_ptr_array_add (argv, (char *) test_argv0);
   g_ptr_array_add (argv, "-q");
   g_ptr_array_add (argv, "-p");
   g_ptr_array_add (argv, (char *)test_path);
@@ -4371,9 +4404,9 @@ g_test_get_dir (GTestFileType file_type)
  * Gets the pathname to a data file that is required for a test.
  *
  * This is the same as g_test_build_filename() with two differences.
- * The first difference is that must only use this function from within
+ * The first difference is that you must only use this function from within
  * a testcase function.  The second difference is that you need not free
- * the return value -- it will be automatically freed when the testcase
+ * the return value  it will be automatically freed when the testcase
  * finishes running.
  *
  * It is safe to use this function from a thread inside of a testcase
index f5202ac..7dee482 100644 (file)
@@ -275,6 +275,7 @@ void    g_test_init                     (int            *argc,
  *  - g_get_user_config_dir()
  *  - g_get_system_data_dirs()
  *  - g_get_user_data_dir()
+ *  - g_get_user_state_dir()
  *  - g_get_user_runtime_dir()
  *
  * The subdirectories may not be created by the test harness; as with normal
index c6ba122..e7a4cde 100644 (file)
@@ -422,6 +422,28 @@ g_system_thread_free (GRealThread *thread)
 void
 g_system_thread_exit (void)
 {
+  /* In static compilation, DllMain doesn't exist and so DLL_THREAD_DETACH
+   * case is never called and thread destroy notifications are not triggered.
+   * To ensure that notifications are correctly triggered in static
+   * compilation mode, we call directly the "detach" function here right
+   * before terminating the thread.
+   * As all win32 threads initialized through the glib API are run through
+   * the same proxy function g_thread_win32_proxy() which calls systematically
+   * g_system_thread_exit() when finishing, we obtain the same behavior as
+   * with dynamic compilation.
+   *
+   * WARNING: unfortunately this mechanism cannot work with threads created
+   * directly from the Windows API using CreateThread() or _beginthread/ex().
+   * It only works with threads created by using the glib API with
+   * g_system_thread_new(). If users need absolutely to use a thread NOT
+   * created with glib API under Windows and in static compilation mode, they
+   * should not use glib functions within their thread or they may encounter
+   * memory leaks when the thread finishes.
+   */
+#ifdef GLIB_STATIC_COMPILATION
+  g_thread_win32_thread_detach ();
+#endif
+
   _endthreadex (0);
 }
 
@@ -514,7 +536,7 @@ g_system_thread_new (GThreadFunc proxy,
       goto error;
     }
 
-  if (ResumeThread (thread->handle) == -1)
+  if (ResumeThread (thread->handle) == (DWORD) -1)
     {
       message = "Error resuming new thread";
       goto error;
@@ -610,7 +632,7 @@ SetThreadName (DWORD  dwThreadID,
 typedef HRESULT (WINAPI *pSetThreadDescription) (HANDLE hThread,
                                                  PCWSTR lpThreadDescription);
 static pSetThreadDescription SetThreadDescriptionFunc = NULL;
-HMODULE kernel32_module = NULL;
+static HMODULE kernel32_module = NULL;
 
 static gboolean
 g_thread_win32_load_library (void)
index 7d21ba8..c6a1140 100644 (file)
@@ -260,7 +260,7 @@ g_timer_is_active (GTimer *timer)
  * Pauses the current thread for the given number of microseconds.
  *
  * There are 1 million microseconds per second (represented by the
- * #G_USEC_PER_SEC macro). g_usleep() may have limited precision,
+ * %G_USEC_PER_SEC macro). g_usleep() may have limited precision,
  * depending on hardware and operating system; don't rely on the exact
  * length of the sleep.
  */
@@ -294,7 +294,9 @@ G_GNUC_BEGIN_IGNORE_DEPRECATIONS
 void 
 g_time_val_add (GTimeVal *time_, glong microseconds)
 {
-  g_return_if_fail (time_->tv_usec >= 0 && time_->tv_usec < G_USEC_PER_SEC);
+  g_return_if_fail (time_ != NULL &&
+                    time_->tv_usec >= 0 &&
+                    time_->tv_usec < G_USEC_PER_SEC);
 
   if (microseconds >= 0)
     {
@@ -603,7 +605,9 @@ g_time_val_to_iso8601 (GTimeVal *time_)
 #endif
   time_t secs;
 
-  g_return_val_if_fail (time_->tv_usec >= 0 && time_->tv_usec < G_USEC_PER_SEC, NULL);
+  g_return_val_if_fail (time_ != NULL &&
+                        time_->tv_usec >= 0 &&
+                        time_->tv_usec < G_USEC_PER_SEC, NULL);
 
   secs = time_->tv_sec;
 #ifdef _WIN32
index df71478..a37dbe2 100644 (file)
@@ -157,7 +157,7 @@ typedef struct
  */
 typedef struct
 {
-  gint         start_year;
+  guint        start_year;
   gint32       std_offset;
   gint32       dlt_offset;
   TimeZoneDate dlt_start;
@@ -440,6 +440,88 @@ zone_for_constant_offset (GTimeZone *gtz, const gchar *name)
 }
 
 #ifdef G_OS_UNIX
+
+#if defined(__sun) && defined(__SVR4)
+/*
+ * only used by Illumos distros or Solaris < 11: parse the /etc/default/init
+ * text file looking for TZ= followed by the timezone, possibly quoted
+ *
+ */
+static gchar *
+zone_identifier_illumos (void)
+{
+  gchar *resolved_identifier = NULL;
+  gchar *contents = NULL;
+  const gchar *line_start = NULL;
+  gsize tz_len = 0;
+
+  if (!g_file_get_contents ("/etc/default/init", &contents, NULL, NULL) )
+    return NULL;
+
+  /* is TZ= the first/only line in the file? */
+  if (strncmp (contents, "TZ=", 3) == 0)
+    {
+      /* found TZ= on the first line, skip over the TZ= */
+      line_start = contents + 3;
+    }
+  else 
+    {
+      /* find a newline followed by TZ= */
+      line_start = strstr (contents, "\nTZ=");
+      if (line_start != NULL)
+        line_start = line_start + 4; /* skip past the \nTZ= */
+    }
+
+  /* 
+   * line_start is NULL if we didn't find TZ= at the start of any line,
+   * otherwise it points to what is after the '=' (possibly '\0')
+   */
+  if (line_start == NULL || *line_start == '\0')
+    return NULL;
+
+  /* skip past a possible opening " or ' */
+  if (*line_start == '"' || *line_start == '\'')
+    line_start++;
+
+  /*
+   * loop over the next few characters, building up the length of
+   * the timezone identifier, ending with end of string, newline or
+   * a " or ' character
+   */
+  while (*(line_start + tz_len) != '\0' &&
+         *(line_start + tz_len) != '\n' &&
+         *(line_start + tz_len) != '"'  &&
+         *(line_start + tz_len) != '\'')
+    tz_len++; 
+
+  if (tz_len > 0)
+    {
+      /* found it */
+      resolved_identifier = g_strndup (line_start, tz_len);
+      g_strchomp (resolved_identifier);
+      g_free (contents);
+      return g_steal_pointer (&resolved_identifier);
+    }
+  else
+    return NULL;
+}
+#endif /* defined(__sun) && defined(__SRVR) */
+
+/*
+ * returns the path to the top of the Olson zoneinfo timezone hierarchy.
+ */
+static const gchar *
+zone_info_base_dir (void)
+{
+  if (g_file_test ("/usr/share/zoneinfo", G_FILE_TEST_IS_DIR))
+    return "/usr/share/zoneinfo";     /* Most distros */
+  else if (g_file_test ("/usr/share/lib/zoneinfo", G_FILE_TEST_IS_DIR))
+    return "/usr/share/lib/zoneinfo"; /* Illumos distros */
+
+  /* need a better fallback case */
+  return "/usr/share/zoneinfo";
+}
+
 static gchar *
 zone_identifier_unix (void)
 {
@@ -458,17 +540,26 @@ zone_identifier_unix (void)
                                                 G_FILE_ERROR_INVAL);
       g_clear_error (&read_link_err);
 
-      /* Fallback to the content of /var/db/zoneinfo or /etc/timezone
-       * if /etc/localtime is not a symlink. /var/db/zoneinfo is
-       * where 'tzsetup' program on FreeBSD and DragonflyBSD stores
-       * the timezone chosen by the user. /etc/timezone is where user
-       * choice is expressed on Gentoo OpenRC and others. */
+      /* if /etc/localtime is not a symlink, try:
+       *  - /var/db/zoneinfo : 'tzsetup' program on FreeBSD and
+       *    DragonflyBSD stores the timezone chosen by the user there.
+       *  - /etc/timezone : Gentoo, OpenRC, and others store
+       *    the user choice there.
+       *  - call zone_identifier_illumos iff __sun and __SVR4 are defined,
+       *    as a last-ditch effort to parse the TZ= setting from within
+       *    /etc/default/init
+       */
       if (not_a_symlink && (g_file_get_contents ("/var/db/zoneinfo",
                                                  &resolved_identifier,
                                                  NULL, NULL) ||
                             g_file_get_contents ("/etc/timezone",
                                                  &resolved_identifier,
-                                                 NULL, NULL)))
+                                                 NULL, NULL)
+#if defined(__sun) && defined(__SVR4)
+                                                             ||
+                            (resolved_identifier = zone_identifier_illumos ())
+#endif
+                                                             ))
         g_strchomp (resolved_identifier);
       else
         {
@@ -487,7 +578,7 @@ zone_identifier_unix (void)
 
   tzdir = g_getenv ("TZDIR");
   if (tzdir == NULL)
-    tzdir = "/usr/share/zoneinfo";
+    tzdir = zone_info_base_dir ();
 
   /* Strip the prefix and slashes if possible. */
   if (g_str_has_prefix (resolved_identifier, tzdir))
@@ -520,7 +611,7 @@ zone_info_unix (const gchar *identifier,
 
   tzdir = g_getenv ("TZDIR");
   if (tzdir == NULL)
-    tzdir = "/usr/share/zoneinfo";
+    tzdir = zone_info_base_dir ();
 
   /* identifier can be a relative or absolute path name;
      if relative, it is interpreted starting from /usr/share/zoneinfo
@@ -840,7 +931,7 @@ rules_from_windows_time_zone (const gchar   *identifier,
   TIME_ZONE_INFORMATION tzi;
   DWORD size;
   guint rules_num = 0;
-  RegTZI regtzi, regtzi_prev;
+  RegTZI regtzi = { 0 }, regtzi_prev;
   WCHAR winsyspath[MAX_PATH];
   gunichar2 *subkey_w, *subkey_dynamic_w;
 
@@ -906,8 +997,7 @@ rules_from_windows_time_zone (const gchar   *identifier,
   if (RegOpenKeyExW (HKEY_LOCAL_MACHINE, subkey_dynamic_w, 0,
                      KEY_QUERY_VALUE, &key) == ERROR_SUCCESS)
     {
-      DWORD first, last;
-      int year, i;
+      DWORD i, first, last, year;
       wchar_t s[12];
 
       size = sizeof first;
@@ -1037,7 +1127,7 @@ find_relative_date (TimeZoneDate *buffer)
       g_date_set_dmy (&date, 1, buffer->mon, buffer->year);
       first_wday = g_date_get_weekday (&date);
 
-      if (first_wday > wday)
+      if ((guint) first_wday > wday)
         ++(buffer->week);
       /* week is 1 <= w <= 5, we need 0-based */
       days = 7 * (buffer->week - 1) + wday - first_wday;
@@ -1458,6 +1548,8 @@ set_tz_name (gchar **pos, gchar *buffer, guint size)
   gchar *name_pos = *pos;
   guint len;
 
+  g_assert (size != 0);
+
   if (quoted)
     {
       name_pos++;
@@ -1479,7 +1571,7 @@ set_tz_name (gchar **pos, gchar *buffer, guint size)
 
   memset (buffer, 0, size);
   /* name_pos isn't 0-terminated, so we have to limit the length expressly */
-  len = *pos - name_pos > size - 1 ? size - 1 : *pos - name_pos;
+  len = (guint) (*pos - name_pos) > size - 1 ? size - 1 : (guint) (*pos - name_pos);
   strncpy (buffer, name_pos, len);
   *pos += quoted;
   return TRUE;
@@ -1542,8 +1634,7 @@ rules_from_identifier (const gchar   *identifier,
 #ifdef G_OS_WIN32
     /* Windows allows us to use the US DST boundaries if they're not given */
     {
-      int i;
-      guint rules_num = 0;
+      guint i, rules_num = 0;
 
       /* Use US rules, Windows' default is Pacific Standard Time */
       if ((rules_num = rules_from_windows_time_zone ("Pacific Standard Time",
index 2c48255..ea2a490 100644 (file)
@@ -424,56 +424,62 @@ typedef const gchar *   (*GTranslateFunc)       (const gchar   *str,
 /* https://bugzilla.gnome.org/show_bug.cgi?id=769104 */
 #if __GNUC__ >= 5 && !defined(__INTEL_COMPILER)
 #define _GLIB_HAVE_BUILTIN_OVERFLOW_CHECKS
-#elif g_macro__has_builtin(__builtin_uadd_overflow)
+#elif g_macro__has_builtin(__builtin_add_overflow)
 #define _GLIB_HAVE_BUILTIN_OVERFLOW_CHECKS
 #endif
 #endif
 
+#ifdef _GLIB_HAVE_BUILTIN_OVERFLOW_CHECKS
+
 #define g_uint_checked_add(dest, a, b) \
-    _GLIB_CHECKED_ADD_U32(dest, a, b)
+    (!__builtin_add_overflow(a, b, dest))
 #define g_uint_checked_mul(dest, a, b) \
-    _GLIB_CHECKED_MUL_U32(dest, a, b)
+    (!__builtin_mul_overflow(a, b, dest))
 
 #define g_uint64_checked_add(dest, a, b) \
-    _GLIB_CHECKED_ADD_U64(dest, a, b)
+    (!__builtin_add_overflow(a, b, dest))
 #define g_uint64_checked_mul(dest, a, b) \
-    _GLIB_CHECKED_MUL_U64(dest, a, b)
+    (!__builtin_mul_overflow(a, b, dest))
 
-#if GLIB_SIZEOF_SIZE_T == 8
 #define g_size_checked_add(dest, a, b) \
-    _GLIB_CHECKED_ADD_U64(dest, a, b)
+    (!__builtin_add_overflow(a, b, dest))
 #define g_size_checked_mul(dest, a, b) \
-    _GLIB_CHECKED_MUL_U64(dest, a, b)
-#else
-#define g_size_checked_add(dest, a, b) \
-    _GLIB_CHECKED_ADD_U32(dest, a, b)
-#define g_size_checked_mul(dest, a, b) \
-    _GLIB_CHECKED_MUL_U32(dest, a, b)
-#endif
+    (!__builtin_mul_overflow(a, b, dest))
+
+#else  /* !_GLIB_HAVE_BUILTIN_OVERFLOW_CHECKS */
 
 /* The names of the following inlines are private.  Use the macro
  * definitions above.
  */
-#ifdef _GLIB_HAVE_BUILTIN_OVERFLOW_CHECKS
-static inline gboolean _GLIB_CHECKED_ADD_U32 (guint32 *dest, guint32 a, guint32 b) {
-  return !__builtin_uadd_overflow(a, b, dest); }
-static inline gboolean _GLIB_CHECKED_MUL_U32 (guint32 *dest, guint32 a, guint32 b) {
-  return !__builtin_umul_overflow(a, b, dest); }
-static inline gboolean _GLIB_CHECKED_ADD_U64 (guint64 *dest, guint64 a, guint64 b) {
-  G_STATIC_ASSERT(sizeof (unsigned long long) == sizeof (guint64));
-  return !__builtin_uaddll_overflow(a, b, (unsigned long long *) dest); }
-static inline gboolean _GLIB_CHECKED_MUL_U64 (guint64 *dest, guint64 a, guint64 b) {
-  return !__builtin_umulll_overflow(a, b, (unsigned long long *) dest); }
-#else
-static inline gboolean _GLIB_CHECKED_ADD_U32 (guint32 *dest, guint32 a, guint32 b) {
+static inline gboolean _GLIB_CHECKED_ADD_UINT (guint *dest, guint a, guint b) {
   *dest = a + b; return *dest >= a; }
-static inline gboolean _GLIB_CHECKED_MUL_U32 (guint32 *dest, guint32 a, guint32 b) {
+static inline gboolean _GLIB_CHECKED_MUL_UINT (guint *dest, guint a, guint b) {
   *dest = a * b; return !a || *dest / a == b; }
-static inline gboolean _GLIB_CHECKED_ADD_U64 (guint64 *dest, guint64 a, guint64 b) {
+static inline gboolean _GLIB_CHECKED_ADD_UINT64 (guint64 *dest, guint64 a, guint64 b) {
   *dest = a + b; return *dest >= a; }
-static inline gboolean _GLIB_CHECKED_MUL_U64 (guint64 *dest, guint64 a, guint64 b) {
+static inline gboolean _GLIB_CHECKED_MUL_UINT64 (guint64 *dest, guint64 a, guint64 b) {
   *dest = a * b; return !a || *dest / a == b; }
-#endif
+static inline gboolean _GLIB_CHECKED_ADD_SIZE (gsize *dest, gsize a, gsize b) {
+  *dest = a + b; return *dest >= a; }
+static inline gboolean _GLIB_CHECKED_MUL_SIZE (gsize *dest, gsize a, gsize b) {
+  *dest = a * b; return !a || *dest / a == b; }
+
+#define g_uint_checked_add(dest, a, b) \
+    _GLIB_CHECKED_ADD_UINT(dest, a, b)
+#define g_uint_checked_mul(dest, a, b) \
+    _GLIB_CHECKED_MUL_UINT(dest, a, b)
+
+#define g_uint64_checked_add(dest, a, b) \
+    _GLIB_CHECKED_ADD_UINT64(dest, a, b)
+#define g_uint64_checked_mul(dest, a, b) \
+    _GLIB_CHECKED_MUL_UINT64(dest, a, b)
+
+#define g_size_checked_add(dest, a, b) \
+    _GLIB_CHECKED_ADD_SIZE(dest, a, b)
+#define g_size_checked_mul(dest, a, b) \
+    _GLIB_CHECKED_MUL_SIZE(dest, a, b)
+
+#endif  /* !_GLIB_HAVE_BUILTIN_OVERFLOW_CHECKS */
 
 /* IEEE Standard 754 Single Precision Storage Format (gfloat):
  *
index 8548f52..f83393a 100644 (file)
@@ -7,7 +7,7 @@
 #include <glib/gtypes.h>
 #include <glib/gunicode.h>
 
-#define G_UNICODE_DATA_VERSION "13.0.0"
+#define G_UNICODE_DATA_VERSION "14"
 
 #define G_UNICODE_LAST_CHAR 0x10FFFF
 
@@ -682,7 +682,7 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
     G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
     G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_EXCLAMATION, 
-    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_EXCLAMATION, 
     G_UNICODE_BREAK_EXCLAMATION, G_UNICODE_BREAK_EXCLAMATION, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
@@ -984,30 +984,30 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
@@ -1018,7 +1018,6 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
-    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
@@ -1028,12 +1027,13 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
     G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
     G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
     G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
@@ -1478,7 +1478,7 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
     G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
     G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
@@ -1494,7 +1494,7 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
@@ -1558,7 +1558,7 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
@@ -2751,16 +2751,16 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
-    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
-    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
@@ -2882,7 +2882,7 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_EXCLAMATION, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
     G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_NON_BREAKING_GLUE, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_NUMERIC, 
     G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
     G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
     G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
@@ -3231,6 +3231,13 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
     G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
     G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
     G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
@@ -3255,13 +3262,6 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
   },
   { /* page 27, index 25 */
@@ -3303,7 +3303,7 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
     G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
@@ -3326,9 +3326,9 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_AFTER, G_UNICODE_BREAK_AFTER, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
@@ -3343,20 +3343,19 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
-    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_COMBINING_MARK
     G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
     G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
     G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
     G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
     G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
     G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
-    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_ALPHABETIC, 
-    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
     G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
     G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
     G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
     G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
-    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
@@ -3378,20 +3377,20 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
-    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
     G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
     G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
     G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
     G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
     G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
     G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
-    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
-    G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
   },
   { /* page 28, index 26 */
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
@@ -3648,7 +3647,7 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
     G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
     G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
     G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
     G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK
   },
@@ -3870,7 +3869,7 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_POSTFIX, G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_PREFIX, 
     G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_POSTFIX, 
     G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_POSTFIX, 
-    G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_PREFIX, 
+    G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_POSTFIX, G_UNICODE_BREAK_PREFIX, 
     G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_PREFIX, 
     G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_PREFIX, 
     G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_PREFIX, G_UNICODE_BREAK_PREFIX, 
@@ -5095,7 +5094,6 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
-    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
@@ -5119,7 +5117,8 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
-    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
@@ -5367,12 +5366,12 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_AFTER, G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AFTER, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_AFTER, G_UNICODE_BREAK_AFTER, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
-    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_EXCLAMATION, 
+    G_UNICODE_BREAK_EXCLAMATION, G_UNICODE_BREAK_OPEN_PUNCTUATION, 
+    G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_OPEN_PUNCTUATION, 
+    G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_OPEN_PUNCTUATION, 
+    G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_OPEN_PUNCTUATION, 
+    G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_AFTER
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
@@ -6620,7 +6619,7 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
@@ -6628,6 +6627,11 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
@@ -6640,13 +6644,8 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
@@ -12989,7 +12988,7 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
@@ -13054,14 +13053,14 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_CLOSE_PUNCTUATION, G_UNICODE_BREAK_OPEN_PUNCTUATION, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
@@ -13125,7 +13124,7 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
@@ -13149,7 +13148,7 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_POSTFIX, G_UNICODE_BREAK_ALPHABETIC, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
   },
   { /* page 254, index 101 */
     G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
@@ -14123,45 +14122,45 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
@@ -14261,36 +14260,36 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
@@ -15290,19 +15289,19 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
@@ -15420,9 +15419,9 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
     G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
     G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_ALPHABETIC
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_COMBINING_MARK
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_ALPHABETIC
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
@@ -15460,13 +15459,14 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_AFTER, G_UNICODE_BREAK_AFTER, G_UNICODE_BREAK_AFTER, 
-    G_UNICODE_BREAK_AFTER, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
+    G_UNICODE_BREAK_AFTER, G_UNICODE_BREAK_COMBINING_MARK
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
@@ -15479,18 +15479,18 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
-    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_NUMERIC, 
     G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
     G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
     G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
     G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
-    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_UNKNOWN
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
+    G_UNICODE_BREAK_UNKNOWN
   },
   { /* page 273, index 119 */
     G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
@@ -16227,7 +16227,7 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
     G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
     G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_ALPHABETIC, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_NUMERIC, 
@@ -16296,10 +16296,10 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
     G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT, 
     G_UNICODE_BREAK_AFTER, G_UNICODE_BREAK_AFTER, G_UNICODE_BREAK_AFTER, 
-    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT
+    G_UNICODE_BREAK_COMPLEX_CONTEXT, G_UNICODE_BREAK_COMPLEX_CONTEXT
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
@@ -16740,14 +16740,6 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
@@ -16777,6 +16769,14 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
@@ -17690,7 +17690,137 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
   },
-  { /* page 306, index 136 */
+  { /* page 303, index 136 */
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
+  },
+  { /* page 306, index 137 */
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
@@ -17820,7 +17950,7 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
   },
-  { /* page 307, index 137 */
+  { /* page 307, index 138 */
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
@@ -17950,7 +18080,7 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
   },
-  { /* page 308, index 138 */
+  { /* page 308, index 139 */
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
@@ -18080,7 +18210,7 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
   },
-  { /* page 325, index 139 */
+  { /* page 325, index 140 */
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
@@ -18210,7 +18340,7 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
   },
-  { /* page 326, index 140 */
+  { /* page 326, index 141 */
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
@@ -18340,7 +18470,7 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
   },
-  { /* page 362, index 141 */
+  { /* page 362, index 142 */
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
@@ -18396,54 +18526,24 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_AFTER, 
-    G_UNICODE_BREAK_AFTER, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_AFTER, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
@@ -18459,17 +18559,47 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
+    G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMBINING_MARK, 
     G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
     G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
-    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_AFTER, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_AFTER, G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
   },
-  { /* page 363, index 142 */
+  { /* page 363, index 143 */
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
@@ -18599,7 +18729,7 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN
   },
-  { /* page 366, index 143 */
+  { /* page 366, index 144 */
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
@@ -18729,7 +18859,7 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN
   },
-  { /* page 367, index 144 */
+  { /* page 367, index 145 */
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
@@ -18859,7 +18989,7 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
   },
-  { /* page 391, index 145 */
+  { /* page 391, index 146 */
     G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
     G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
     G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
@@ -18989,7 +19119,7 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
   },
-  { /* page 396, index 146 */
+  { /* page 396, index 147 */
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
@@ -19119,7 +19249,7 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
   },
-  { /* page 397, index 147 */
+  { /* page 397, index 148 */
     G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
     G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
     G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
@@ -19249,7 +19379,139 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
   },
-  { /* page 433, index 148 */
+  { /* page 431, index 149 */
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN
+  },
+  { /* page 433, index 150 */
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
     G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
     G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
     G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
@@ -19288,8 +19550,6 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_CONDITIONAL_JAPANESE_STARTER, 
     G_UNICODE_BREAK_CONDITIONAL_JAPANESE_STARTER, 
     G_UNICODE_BREAK_CONDITIONAL_JAPANESE_STARTER, G_UNICODE_BREAK_UNKNOWN, 
@@ -19382,7 +19642,7 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
     G_UNICODE_BREAK_IDEOGRAPHIC
   },
-  { /* page 434, index 149 */
+  { /* page 434, index 151 */
     G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
     G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
     G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
@@ -19512,7 +19772,7 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
   },
-  { /* page 444, index 150 */
+  { /* page 444, index 152 */
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
@@ -19642,7 +19902,137 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
   },
-  { /* page 464, index 151 */
+  { /* page 463, index 153 */
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
+  },
+  { /* page 464, index 154 */
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
@@ -19772,7 +20162,7 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
   },
-  { /* page 465, index 152 */
+  { /* page 465, index 155 */
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
@@ -19889,6 +20279,7 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
@@ -19899,10 +20290,9 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
   },
-  { /* page 466, index 153 */
+  { /* page 466, index 156 */
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
@@ -20032,7 +20422,7 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
   },
-  { /* page 467, index 154 */
+  { /* page 467, index 157 */
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
@@ -20162,7 +20552,7 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
   },
-  { /* page 468, index 155 */
+  { /* page 468, index 158 */
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
@@ -20292,7 +20682,7 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
   },
-  { /* page 469, index 156 */
+  { /* page 469, index 159 */
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
@@ -20422,7 +20812,7 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
   },
-  { /* page 470, index 157 */
+  { /* page 470, index 160 */
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
@@ -20552,7 +20942,7 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC
   },
-  { /* page 471, index 158 */
+  { /* page 471, index 161 */
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
@@ -20682,7 +21072,7 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC, 
     G_UNICODE_BREAK_NUMERIC, G_UNICODE_BREAK_NUMERIC
   },
-  { /* page 474, index 159 */
+  { /* page 474, index 162 */
     G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
     G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
     G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
@@ -20759,17 +21149,147 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMBINING_MARK, 
-    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
-    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMBINING_MARK, 
-    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
-    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
-    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
-    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
-    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
-    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
-    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
+  },
+  { /* page 479, index 163 */
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
@@ -20811,7 +21331,7 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
   },
-  { /* page 480, index 160 */
+  { /* page 480, index 164 */
     G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
     G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
     G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
@@ -20941,7 +21461,7 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
   },
-  { /* page 481, index 161 */
+  { /* page 481, index 165 */
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
@@ -21071,23 +21591,7 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
   },
-  { /* page 482, index 162 */
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
-    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+  { /* page 482, index 166 */
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
@@ -21160,6 +21664,22 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
@@ -21201,7 +21721,137 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_PREFIX
   },
-  { /* page 488, index 163 */
+  { /* page 487, index 167 */
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
+    G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_UNKNOWN
+  },
+  { /* page 488, index 168 */
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
@@ -21331,7 +21981,7 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
   },
-  { /* page 489, index 164 */
+  { /* page 489, index 169 */
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
@@ -21461,7 +22111,7 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
   },
-  { /* page 492, index 165 */
+  { /* page 492, index 170 */
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
@@ -21591,7 +22241,7 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
   },
-  { /* page 493, index 166 */
+  { /* page 493, index 171 */
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
@@ -21721,7 +22371,7 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
   },
-  { /* page 494, index 167 */
+  { /* page 494, index 172 */
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_ALPHABETIC, 
@@ -21851,7 +22501,7 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
   },
-  { /* page 497, index 168 */
+  { /* page 497, index 173 */
     G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
     G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
     G_UNICODE_BREAK_AMBIGUOUS, G_UNICODE_BREAK_AMBIGUOUS, 
@@ -21981,7 +22631,7 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_REGIONAL_INDICATOR, G_UNICODE_BREAK_REGIONAL_INDICATOR, 
     G_UNICODE_BREAK_REGIONAL_INDICATOR, G_UNICODE_BREAK_REGIONAL_INDICATOR
   },
-  { /* page 499, index 169 */
+  { /* page 499, index 174 */
     G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
     G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
     G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
@@ -22111,7 +22761,7 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_EMOJI_MODIFIER, G_UNICODE_BREAK_EMOJI_MODIFIER, 
     G_UNICODE_BREAK_EMOJI_MODIFIER, G_UNICODE_BREAK_EMOJI_MODIFIER
   },
-  { /* page 500, index 170 */
+  { /* page 500, index 175 */
     G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
     G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
     G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
@@ -22241,7 +22891,7 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
     G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC
   },
-  { /* page 501, index 171 */
+  { /* page 501, index 176 */
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
@@ -22371,7 +23021,7 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
     G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC
   },
-  { /* page 502, index 172 */
+  { /* page 502, index 177 */
     G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
     G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
     G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
@@ -22501,7 +23151,7 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
     G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC
   },
-  { /* page 503, index 173 */
+  { /* page 503, index 178 */
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
@@ -22631,7 +23281,7 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
     G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC
   },
-  { /* page 504, index 174 */
+  { /* page 504, index 179 */
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
@@ -22761,7 +23411,7 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
     G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC
   },
-  { /* page 505, index 175 */
+  { /* page 505, index 180 */
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
@@ -22891,7 +23541,7 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
     G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC
   },
-  { /* page 506, index 176 */
+  { /* page 506, index 181 */
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
@@ -22989,6 +23639,8 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
     G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
     G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_EMOJI_BASE, 
+    G_UNICODE_BREAK_EMOJI_BASE, G_UNICODE_BREAK_EMOJI_BASE, 
     G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
     G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
     G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
@@ -23010,18 +23662,16 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
     G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
     G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
-    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
-    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
-    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
-    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
-    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
-    G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
+    G_UNICODE_BREAK_EMOJI_BASE, G_UNICODE_BREAK_EMOJI_BASE, 
+    G_UNICODE_BREAK_EMOJI_BASE, G_UNICODE_BREAK_EMOJI_BASE, 
+    G_UNICODE_BREAK_EMOJI_BASE, G_UNICODE_BREAK_EMOJI_BASE, 
+    G_UNICODE_BREAK_EMOJI_BASE, G_UNICODE_BREAK_IDEOGRAPHIC, 
     G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
     G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
     G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
     G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC
   },
-  { /* page 507, index 177 */
+  { /* page 507, index 182 */
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
     G_UNICODE_BREAK_ALPHABETIC, G_UNICODE_BREAK_ALPHABETIC, 
@@ -23151,7 +23801,7 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
   },
-  { /* page 511, index 178 */
+  { /* page 511, index 183 */
     G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
     G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
     G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
@@ -23281,7 +23931,7 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
   },
-  { /* page 767, index 179 */
+  { /* page 767, index 184 */
     G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
     G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
     G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
@@ -23411,7 +24061,7 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
   },
-  { /* page 1023, index 180 */
+  { /* page 1023, index 185 */
     G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
     G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
     G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
@@ -23541,7 +24191,7 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_IDEOGRAPHIC, G_UNICODE_BREAK_IDEOGRAPHIC, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
   },
-  { /* page 3584, index 181 */
+  { /* page 3584, index 186 */
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_COMBINING_MARK, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
@@ -23671,7 +24321,7 @@ static const gint8 break_property_data[][256] = {
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN, 
     G_UNICODE_BREAK_UNKNOWN, G_UNICODE_BREAK_UNKNOWN
   },
-  { /* page 3585, index 182 */
+  { /* page 3585, index 187 */
     G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
     G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
     G_UNICODE_BREAK_COMBINING_MARK, G_UNICODE_BREAK_COMBINING_MARK, 
@@ -24108,12 +24758,12 @@ static const gint16 break_property_table_part1[788] = {
   G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
-  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  136 /* page 303 */,
   G_UNICODE_BREAK_ALPHABETIC + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_BREAK_ALPHABETIC + G_UNICODE_MAX_TABLE_INDEX,
-  136 /* page 306 */,
-  137 /* page 307 */,
-  138 /* page 308 */,
+  137 /* page 306 */,
+  138 /* page 307 */,
+  139 /* page 308 */,
   G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
@@ -24130,8 +24780,8 @@ static const gint16 break_property_table_part1[788] = {
   G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_BREAK_ALPHABETIC + G_UNICODE_MAX_TABLE_INDEX,
-  139 /* page 325 */,
-  140 /* page 326 */,
+  140 /* page 325 */,
+  141 /* page 326 */,
   G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
@@ -24167,12 +24817,12 @@ static const gint16 break_property_table_part1[788] = {
   G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_BREAK_ALPHABETIC + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_BREAK_ALPHABETIC + G_UNICODE_MAX_TABLE_INDEX,
-  141 /* page 362 */,
-  142 /* page 363 */,
+  142 /* page 362 */,
+  143 /* page 363 */,
   G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
-  143 /* page 366 */,
-  144 /* page 367 */,
+  144 /* page 366 */,
+  145 /* page 367 */,
   G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
@@ -24196,14 +24846,13 @@ static const gint16 break_property_table_part1[788] = {
   G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
-  145 /* page 391 */,
+  146 /* page 391 */,
   G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_BREAK_ALPHABETIC + G_UNICODE_MAX_TABLE_INDEX,
-  146 /* page 396 */,
-  147 /* page 397 */,
-  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  147 /* page 396 */,
+  148 /* page 397 */,
   G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
@@ -24237,10 +24886,10 @@ static const gint16 break_property_table_part1[788] = {
   G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  149 /* page 431 */,
   G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
-  148 /* page 433 */,
-  149 /* page 434 */,
-  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  150 /* page 433 */,
+  151 /* page 434 */,
   G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
@@ -24249,8 +24898,8 @@ static const gint16 break_property_table_part1[788] = {
   G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
-  150 /* page 444 */,
   G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  152 /* page 444 */,
   G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
@@ -24269,54 +24918,55 @@ static const gint16 break_property_table_part1[788] = {
   G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
-  151 /* page 464 */,
-  152 /* page 465 */,
-  153 /* page 466 */,
-  154 /* page 467 */,
-  155 /* page 468 */,
-  156 /* page 469 */,
-  157 /* page 470 */,
-  158 /* page 471 */,
+  153 /* page 463 */,
+  154 /* page 464 */,
+  155 /* page 465 */,
+  156 /* page 466 */,
+  157 /* page 467 */,
+  158 /* page 468 */,
+  159 /* page 469 */,
+  160 /* page 470 */,
+  161 /* page 471 */,
   G_UNICODE_BREAK_ALPHABETIC + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_BREAK_ALPHABETIC + G_UNICODE_MAX_TABLE_INDEX,
-  159 /* page 474 */,
-  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
-  G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  162 /* page 474 */,
   G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
-  160 /* page 480 */,
-  161 /* page 481 */,
-  162 /* page 482 */,
   G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
+  163 /* page 479 */,
+  164 /* page 480 */,
+  165 /* page 481 */,
+  166 /* page 482 */,
   G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
-  163 /* page 488 */,
-  164 /* page 489 */,
+  167 /* page 487 */,
+  168 /* page 488 */,
+  169 /* page 489 */,
   G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
-  165 /* page 492 */,
-  166 /* page 493 */,
-  167 /* page 494 */,
+  170 /* page 492 */,
+  171 /* page 493 */,
+  172 /* page 494 */,
   G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
-  168 /* page 497 */,
+  173 /* page 497 */,
   G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
-  169 /* page 499 */,
-  170 /* page 500 */,
-  171 /* page 501 */,
-  172 /* page 502 */,
-  173 /* page 503 */,
-  174 /* page 504 */,
-  175 /* page 505 */,
-  176 /* page 506 */,
-  177 /* page 507 */,
+  174 /* page 499 */,
+  175 /* page 500 */,
+  176 /* page 501 */,
+  177 /* page 502 */,
+  178 /* page 503 */,
+  179 /* page 504 */,
+  180 /* page 505 */,
+  181 /* page 506 */,
+  182 /* page 507 */,
   G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
-  178 /* page 511 */,
+  183 /* page 511 */,
   G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
@@ -24572,7 +25222,7 @@ static const gint16 break_property_table_part1[788] = {
   G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
-  179 /* page 767 */,
+  184 /* page 767 */,
   G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_BREAK_IDEOGRAPHIC + G_UNICODE_MAX_TABLE_INDEX,
@@ -24597,8 +25247,8 @@ static const gint16 break_property_table_part1[788] = {
 
 /* U+E0000 through U+10FFFF */
 static const gint16 break_property_table_part2[768] = {
-  181 /* page 3584 */,
-  182 /* page 3585 */,
+  186 /* page 3584 */,
+  187 /* page 3585 */,
   G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_BREAK_UNKNOWN + G_UNICODE_MAX_TABLE_INDEX,
index f6b5cce..f83d11c 100644 (file)
@@ -4,7 +4,7 @@
 #ifndef CHARTABLES_H
 #define CHARTABLES_H
 
-#define G_UNICODE_DATA_VERSION "13.0.0"
+#define G_UNICODE_DATA_VERSION "14"
 
 #define G_UNICODE_LAST_CHAR 0x10ffff
 
@@ -784,8 +784,9 @@ static const char type_data[][256] = {
     G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
     G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
     G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
-    G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_FORMAT, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_FORMAT, 
     G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION, 
+    G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
@@ -796,11 +797,11 @@ static const char type_data[][256] = {
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_MODIFIER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_MODIFIER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_NON_SPACING_MARK, 
     G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
     G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
     G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
@@ -811,16 +812,15 @@ static const char type_data[][256] = {
     G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
     G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
     G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
-    G_UNICODE_NON_SPACING_MARK, G_UNICODE_DECIMAL_NUMBER, 
     G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, 
     G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, 
     G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, 
     G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, 
-    G_UNICODE_DECIMAL_NUMBER, G_UNICODE_OTHER_PUNCTUATION
+    G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER
     G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION, 
-    G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_LETTER
-    G_UNICODE_OTHER_LETTER, G_UNICODE_NON_SPACING_MARK
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER
+    G_UNICODE_NON_SPACING_MARK, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
@@ -853,6 +853,7 @@ static const char type_data[][256] = {
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
     G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
@@ -1021,22 +1022,6 @@ static const char type_data[][256] = {
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
@@ -1044,17 +1029,37 @@ static const char type_data[][256] = {
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_MODIFIER_SYMBOL, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_FORMAT, G_UNICODE_FORMAT, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_NON_SPACING_MARK, 
+    G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
+    G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
+    G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
+    G_UNICODE_NON_SPACING_MARK, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_NON_SPACING_MARK, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_MODIFIER_LETTER, 
+    G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
+    G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
+    G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
+    G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
+    G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
     G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
     G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
     G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
@@ -1388,10 +1393,11 @@ static const char type_data[][256] = {
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_NON_SPACING_MARK
+    G_UNICODE_NON_SPACING_MARK, G_UNICODE_OTHER_LETTER
     G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
+    G_UNICODE_NON_SPACING_MARK, G_UNICODE_SPACING_MARK, 
     G_UNICODE_SPACING_MARK, G_UNICODE_SPACING_MARK, G_UNICODE_SPACING_MARK, 
-    G_UNICODE_SPACING_MARK, G_UNICODE_UNASSIGNED, G_UNICODE_NON_SPACING_MARK, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_NON_SPACING_MARK, 
     G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
     G_UNICODE_UNASSIGNED, G_UNICODE_NON_SPACING_MARK, 
     G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
@@ -1400,7 +1406,7 @@ static const char type_data[][256] = {
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_NON_SPACING_MARK, 
     G_UNICODE_NON_SPACING_MARK, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_DECIMAL_NUMBER, 
@@ -1446,7 +1452,7 @@ static const char type_data[][256] = {
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_SPACING_MARK, 
     G_UNICODE_SPACING_MARK, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_DECIMAL_NUMBER, 
@@ -2250,13 +2256,13 @@ static const char type_data[][256] = {
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
-    G_UNICODE_NON_SPACING_MARK, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_NON_SPACING_MARK, G_UNICODE_SPACING_MARK, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
@@ -2264,7 +2270,7 @@ static const char type_data[][256] = {
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
-    G_UNICODE_NON_SPACING_MARK, G_UNICODE_OTHER_PUNCTUATION, 
+    G_UNICODE_SPACING_MARK, G_UNICODE_OTHER_PUNCTUATION, 
     G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
@@ -2349,13 +2355,14 @@ static const char type_data[][256] = {
     G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION, 
     G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_NON_SPACING_MARK, 
     G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, G_UNICODE_FORMAT, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, 
+    G_UNICODE_NON_SPACING_MARK, G_UNICODE_DECIMAL_NUMBER, 
     G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, 
     G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, 
     G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, 
-    G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, 
+    G_UNICODE_DECIMAL_NUMBER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
@@ -2367,7 +2374,7 @@ static const char type_data[][256] = {
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_MODIFIER_LETTER, 
+    G_UNICODE_MODIFIER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
@@ -2385,12 +2392,12 @@ static const char type_data[][256] = {
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER
-    G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK
+    G_UNICODE_OTHER_LETTER, G_UNICODE_NON_SPACING_MARK
+    G_UNICODE_NON_SPACING_MARK, G_UNICODE_OTHER_LETTER
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
@@ -2402,9 +2409,9 @@ static const char type_data[][256] = {
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_NON_SPACING_MARK, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_NON_SPACING_MARK, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
@@ -2427,11 +2434,10 @@ static const char type_data[][256] = {
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED
   },
   { /* page 25, index 23 */
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
@@ -2606,6 +2612,13 @@ static const char type_data[][256] = {
     G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
     G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
     G_UNICODE_ENCLOSING_MARK, G_UNICODE_NON_SPACING_MARK, 
+    G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
+    G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
+    G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
+    G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
+    G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
+    G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
+    G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
     G_UNICODE_NON_SPACING_MARK, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
@@ -2622,12 +2635,7 @@ static const char type_data[][256] = {
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED
   },
   { /* page 27, index 25 */
     G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
@@ -2658,7 +2666,7 @@ static const char type_data[][256] = {
     G_UNICODE_SPACING_MARK, G_UNICODE_SPACING_MARK, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, 
     G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, 
     G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, 
@@ -2678,8 +2686,9 @@ static const char type_data[][256] = {
     G_UNICODE_NON_SPACING_MARK, G_UNICODE_OTHER_SYMBOL, 
     G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
     G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_NON_SPACING_MARK, 
+    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
+    G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_NON_SPACING_MARK, 
     G_UNICODE_NON_SPACING_MARK, G_UNICODE_SPACING_MARK, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
@@ -2967,7 +2976,7 @@ static const char type_data[][256] = {
     G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
     G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
     G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_NON_SPACING_MARK, 
+    G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
     G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
     G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK
   },
@@ -3313,33 +3322,34 @@ static const char type_data[][256] = {
     G_UNICODE_CURRENCY_SYMBOL, G_UNICODE_CURRENCY_SYMBOL, 
     G_UNICODE_CURRENCY_SYMBOL, G_UNICODE_CURRENCY_SYMBOL, 
     G_UNICODE_CURRENCY_SYMBOL, G_UNICODE_CURRENCY_SYMBOL, 
-    G_UNICODE_CURRENCY_SYMBOL, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_CURRENCY_SYMBOL, G_UNICODE_CURRENCY_SYMBOL, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_NON_SPACING_MARK, 
     G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
     G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
     G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
     G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
     G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
     G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
-    G_UNICODE_ENCLOSING_MARK, G_UNICODE_ENCLOSING_MARK, 
-    G_UNICODE_ENCLOSING_MARK, G_UNICODE_ENCLOSING_MARK, 
     G_UNICODE_NON_SPACING_MARK, G_UNICODE_ENCLOSING_MARK, 
     G_UNICODE_ENCLOSING_MARK, G_UNICODE_ENCLOSING_MARK, 
+    G_UNICODE_ENCLOSING_MARK, G_UNICODE_NON_SPACING_MARK, 
+    G_UNICODE_ENCLOSING_MARK, G_UNICODE_ENCLOSING_MARK, 
+    G_UNICODE_ENCLOSING_MARK, G_UNICODE_NON_SPACING_MARK, 
     G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
     G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
     G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
     G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
     G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
-    G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK
+    G_UNICODE_NON_SPACING_MARK, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED
+    G_UNICODE_UNASSIGNED
   },
   { /* page 33, index 31 */
     G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
@@ -4096,7 +4106,8 @@ static const char type_data[][256] = {
     G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, 
     G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, 
     G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, 
-    G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, 
+    G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, 
     G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, 
     G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, 
     G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, 
@@ -4120,7 +4131,6 @@ static const char type_data[][256] = {
     G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, 
     G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, 
     G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, 
-    G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, 
     G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, 
     G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, 
@@ -4343,10 +4353,12 @@ static const char type_data[][256] = {
     G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION, 
     G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION, 
     G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION, 
+    G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OPEN_PUNCTUATION, 
+    G_UNICODE_CLOSE_PUNCTUATION, G_UNICODE_OPEN_PUNCTUATION, 
+    G_UNICODE_CLOSE_PUNCTUATION, G_UNICODE_OPEN_PUNCTUATION, 
+    G_UNICODE_CLOSE_PUNCTUATION, G_UNICODE_OPEN_PUNCTUATION, 
+    G_UNICODE_CLOSE_PUNCTUATION, G_UNICODE_DASH_PUNCTUATION, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
@@ -4854,95 +4866,7 @@ static const char type_data[][256] = {
     G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
     G_UNICODE_OTHER_SYMBOL
   },
-  { /* page 159, index 47 */
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED
-  },
-  { /* page 160, index 48 */
+  { /* page 160, index 47 */
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
@@ -5030,7 +4954,7 @@ static const char type_data[][256] = {
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER
   },
-  { /* page 164, index 49 */
+  { /* page 164, index 48 */
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
@@ -5119,7 +5043,7 @@ static const char type_data[][256] = {
     G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER, 
     G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION
   },
-  { /* page 166, index 50 */
+  { /* page 166, index 49 */
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
@@ -5228,7 +5152,7 @@ static const char type_data[][256] = {
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED
   },
-  { /* page 167, index 51 */
+  { /* page 167, index 50 */
     G_UNICODE_MODIFIER_SYMBOL, G_UNICODE_MODIFIER_SYMBOL, 
     G_UNICODE_MODIFIER_SYMBOL, G_UNICODE_MODIFIER_SYMBOL, 
     G_UNICODE_MODIFIER_SYMBOL, G_UNICODE_MODIFIER_SYMBOL, 
@@ -5325,12 +5249,18 @@ static const char type_data[][256] = {
     G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, 
     G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, 
     G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UPPERCASE_LETTER, 
-    G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, 
-    G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, 
     G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, 
     G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, 
+    G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, 
+    G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, 
+    G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, 
+    G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, 
+    G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, 
+    G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
@@ -5338,19 +5268,15 @@ static const char type_data[][256] = {
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_MODIFIER_LETTER, 
+    G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER, 
     G_UNICODE_UPPERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_MODIFIER_LETTER, 
     G_UNICODE_MODIFIER_LETTER, G_UNICODE_LOWERCASE_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER
   },
-  { /* page 168, index 52 */
+  { /* page 168, index 51 */
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_NON_SPACING_MARK, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
@@ -5447,7 +5373,7 @@ static const char type_data[][256] = {
     G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_NON_SPACING_MARK
   },
-  { /* page 169, index 53 */
+  { /* page 169, index 52 */
     G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, 
     G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, 
     G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, 
@@ -5550,7 +5476,7 @@ static const char type_data[][256] = {
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_UNASSIGNED
   },
-  { /* page 170, index 54 */
+  { /* page 170, index 53 */
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
@@ -5649,7 +5575,7 @@ static const char type_data[][256] = {
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED
   },
-  { /* page 171, index 55 */
+  { /* page 171, index 54 */
     G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
@@ -5763,7 +5689,7 @@ static const char type_data[][256] = {
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED
   },
-  { /* page 215, index 56 */
+  { /* page 215, index 55 */
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
@@ -5851,7 +5777,7 @@ static const char type_data[][256] = {
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED
   },
-  { /* page 250, index 57 */
+  { /* page 250, index 56 */
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
@@ -5939,7 +5865,7 @@ static const char type_data[][256] = {
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED
   },
-  { /* page 251, index 58 */
+  { /* page 251, index 57 */
     G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, 
     G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, 
     G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, 
@@ -6010,7 +5936,7 @@ static const char type_data[][256] = {
     G_UNICODE_MODIFIER_SYMBOL, G_UNICODE_MODIFIER_SYMBOL, 
     G_UNICODE_MODIFIER_SYMBOL, G_UNICODE_MODIFIER_SYMBOL, 
     G_UNICODE_MODIFIER_SYMBOL, G_UNICODE_MODIFIER_SYMBOL, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_MODIFIER_SYMBOL, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
@@ -6032,7 +5958,7 @@ static const char type_data[][256] = {
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER
   },
-  { /* page 253, index 59 */
+  { /* page 253, index 58 */
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
@@ -6055,12 +5981,12 @@ static const char type_data[][256] = {
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_CLOSE_PUNCTUATION, G_UNICODE_OPEN_PUNCTUATION, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED
-    G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL
+    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL
+    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL
+    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL
+    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL
+    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
@@ -6102,7 +6028,7 @@ static const char type_data[][256] = {
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_SYMBOL
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
@@ -6118,10 +6044,10 @@ static const char type_data[][256] = {
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_CURRENCY_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED
+    G_UNICODE_CURRENCY_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
+    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL
   },
-  { /* page 254, index 60 */
+  { /* page 254, index 59 */
     G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
     G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
     G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
@@ -6225,7 +6151,7 @@ static const char type_data[][256] = {
     G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_FORMAT
   },
-  { /* page 255, index 61 */
+  { /* page 255, index 60 */
     G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_PUNCTUATION, 
     G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION, 
     G_UNICODE_CURRENCY_SYMBOL, G_UNICODE_OTHER_PUNCTUATION, 
@@ -6332,7 +6258,7 @@ static const char type_data[][256] = {
     G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED
   },
-  { /* page 256, index 62 */
+  { /* page 256, index 61 */
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
@@ -6420,7 +6346,7 @@ static const char type_data[][256] = {
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED
   },
-  { /* page 257, index 63 */
+  { /* page 257, index 62 */
     G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION, 
     G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_NUMBER, 
@@ -6516,7 +6442,7 @@ static const char type_data[][256] = {
     G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
     G_UNICODE_NON_SPACING_MARK, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED
   },
-  { /* page 258, index 64 */
+  { /* page 258, index 63 */
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
@@ -6604,7 +6530,7 @@ static const char type_data[][256] = {
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED
   },
-  { /* page 259, index 65 */
+  { /* page 259, index 64 */
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
@@ -6694,7 +6620,7 @@ static const char type_data[][256] = {
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED
   },
-  { /* page 260, index 66 */
+  { /* page 260, index 65 */
     G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, 
     G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, 
     G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, 
@@ -6808,7 +6734,7 @@ static const char type_data[][256] = {
     G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED
   },
-  { /* page 261, index 67 */
+  { /* page 261, index 66 */
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
@@ -6846,32 +6772,45 @@ static const char type_data[][256] = {
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_UPPERCASE_LETTER, 
+    G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, 
+    G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, 
+    G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, 
+    G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, 
+    G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UPPERCASE_LETTER, 
+    G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, 
+    G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, 
+    G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, 
+    G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, 
+    G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, 
+    G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, 
+    G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UPPERCASE_LETTER, 
+    G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, 
+    G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, 
+    G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UPPERCASE_LETTER, 
+    G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, 
+    G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, 
+    G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, 
+    G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, 
+    G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, 
+    G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, 
+    G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, 
+    G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, 
+    G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, 
+    G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, 
+    G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, 
+    G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, 
+    G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, 
+    G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, 
+    G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, 
+    G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
@@ -6896,7 +6835,7 @@ static const char type_data[][256] = {
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED
   },
-  { /* page 263, index 68 */
+  { /* page 263, index 67 */
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
@@ -6939,6 +6878,36 @@ static const char type_data[][256] = {
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_MODIFIER_LETTER, 
+    G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER, 
+    G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER, 
+    G_UNICODE_MODIFIER_LETTER, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER, 
+    G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER, 
+    G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER, 
+    G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER, 
+    G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER, 
+    G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER, 
+    G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER, 
+    G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER, 
+    G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER, 
+    G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER, 
+    G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER, 
+    G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER, 
+    G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER, 
+    G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER, 
+    G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER, 
+    G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER, 
+    G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER, 
+    G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER, 
+    G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER, 
+    G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER, 
+    G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_MODIFIER_LETTER, 
+    G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER, 
+    G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER, 
+    G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER, 
+    G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
@@ -6961,30 +6930,9 @@ static const char type_data[][256] = {
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED
   },
-  { /* page 264, index 69 */
+  { /* page 264, index 68 */
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, 
@@ -7072,7 +7020,7 @@ static const char type_data[][256] = {
     G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, 
     G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER
   },
-  { /* page 265, index 70 */
+  { /* page 265, index 69 */
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
@@ -7160,7 +7108,7 @@ static const char type_data[][256] = {
     G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, 
     G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER
   },
-  { /* page 266, index 71 */
+  { /* page 266, index 70 */
     G_UNICODE_OTHER_LETTER, G_UNICODE_NON_SPACING_MARK, 
     G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
     G_UNICODE_UNASSIGNED, G_UNICODE_NON_SPACING_MARK, 
@@ -7253,7 +7201,7 @@ static const char type_data[][256] = {
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED
   },
-  { /* page 267, index 72 */
+  { /* page 267, index 71 */
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
@@ -7343,7 +7291,7 @@ static const char type_data[][256] = {
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED
   },
-  { /* page 268, index 73 */
+  { /* page 268, index 72 */
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
@@ -7448,7 +7396,7 @@ static const char type_data[][256] = {
     G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, 
     G_UNICODE_OTHER_NUMBER
   },
-  { /* page 269, index 74 */
+  { /* page 269, index 73 */
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
@@ -7538,7 +7486,7 @@ static const char type_data[][256] = {
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED
   },
-  { /* page 270, index 75 */
+  { /* page 270, index 74 */
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
@@ -7626,7 +7574,7 @@ static const char type_data[][256] = {
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED
   },
-  { /* page 271, index 76 */
+  { /* page 271, index 75 */
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
@@ -7667,6 +7615,17 @@ static const char type_data[][256] = {
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_NON_SPACING_MARK, 
+    G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
+    G_UNICODE_NON_SPACING_MARK, G_UNICODE_OTHER_PUNCTUATION, 
+    G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION, 
+    G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
@@ -7679,32 +7638,22 @@ static const char type_data[][256] = {
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_NUMBER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, 
     G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, 
+    G_UNICODE_OTHER_NUMBER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
@@ -7712,12 +7661,12 @@ static const char type_data[][256] = {
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED
   },
-  { /* page 272, index 77 */
+  { /* page 272, index 76 */
     G_UNICODE_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
     G_UNICODE_SPACING_MARK, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
@@ -7760,9 +7709,10 @@ static const char type_data[][256] = {
     G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, 
     G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, 
     G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, 
-    G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, 
+    G_UNICODE_NON_SPACING_MARK, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_NON_SPACING_MARK, 
+    G_UNICODE_NON_SPACING_MARK, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_NON_SPACING_MARK, 
@@ -7791,7 +7741,7 @@ static const char type_data[][256] = {
     G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_FORMAT, 
     G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION, 
     G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_NON_SPACING_MARK, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_FORMAT, 
@@ -7814,7 +7764,7 @@ static const char type_data[][256] = {
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED
   },
-  { /* page 273, index 78 */
+  { /* page 273, index 77 */
     G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
     G_UNICODE_NON_SPACING_MARK, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
@@ -7915,7 +7865,7 @@ static const char type_data[][256] = {
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED
   },
-  { /* page 274, index 79 */
+  { /* page 274, index 78 */
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
@@ -8010,7 +7960,7 @@ static const char type_data[][256] = {
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED
   },
-  { /* page 275, index 80 */
+  { /* page 275, index 79 */
     G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
     G_UNICODE_SPACING_MARK, G_UNICODE_SPACING_MARK, G_UNICODE_UNASSIGNED, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
@@ -8101,7 +8051,7 @@ static const char type_data[][256] = {
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED
   },
-  { /* page 276, index 81 */
+  { /* page 276, index 80 */
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
@@ -8199,7 +8149,7 @@ static const char type_data[][256] = {
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED
   },
-  { /* page 277, index 82 */
+  { /* page 277, index 81 */
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
@@ -8293,7 +8243,7 @@ static const char type_data[][256] = {
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED
   },
-  { /* page 278, index 83 */
+  { /* page 278, index 82 */
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
@@ -8364,10 +8314,10 @@ static const char type_data[][256] = {
     G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
     G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
     G_UNICODE_NON_SPACING_MARK, G_UNICODE_SPACING_MARK, 
-    G_UNICODE_NON_SPACING_MARK, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_NON_SPACING_MARK, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, 
     G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, 
     G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, 
     G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, 
@@ -8391,7 +8341,7 @@ static const char type_data[][256] = {
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED
   },
-  { /* page 279, index 84 */
+  { /* page 279, index 83 */
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
@@ -8418,9 +8368,9 @@ static const char type_data[][256] = {
     G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, 
     G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION, 
     G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER
+    G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
@@ -8483,7 +8433,7 @@ static const char type_data[][256] = {
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED
   },
-  { /* page 280, index 85 */
+  { /* page 280, index 84 */
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
@@ -8585,7 +8535,7 @@ static const char type_data[][256] = {
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER
   },
-  { /* page 281, index 86 */
+  { /* page 281, index 85 */
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
@@ -8677,7 +8627,7 @@ static const char type_data[][256] = {
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED
   },
-  { /* page 282, index 87 */
+  { /* page 282, index 86 */
     G_UNICODE_OTHER_LETTER, G_UNICODE_NON_SPACING_MARK, 
     G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
     G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
@@ -8748,12 +8698,12 @@ static const char type_data[][256] = {
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
@@ -8776,7 +8726,7 @@ static const char type_data[][256] = {
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED
   },
-  { /* page 284, index 88 */
+  { /* page 284, index 87 */
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
@@ -8875,7 +8825,7 @@ static const char type_data[][256] = {
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED
   },
-  { /* page 285, index 89 */
+  { /* page 285, index 88 */
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, 
@@ -8968,7 +8918,7 @@ static const char type_data[][256] = {
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED
   },
-  { /* page 286, index 90 */
+  { /* page 286, index 89 */
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
@@ -9057,7 +9007,7 @@ static const char type_data[][256] = {
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED
   },
-  { /* page 287, index 91 */
+  { /* page 287, index 90 */
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
@@ -9146,7 +9096,7 @@ static const char type_data[][256] = {
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_OTHER_PUNCTUATION
   },
-  { /* page 291, index 92 */
+  { /* page 291, index 91 */
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
@@ -9234,7 +9184,7 @@ static const char type_data[][256] = {
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED
   },
-  { /* page 292, index 93 */
+  { /* page 292, index 92 */
     G_UNICODE_LETTER_NUMBER, G_UNICODE_LETTER_NUMBER, 
     G_UNICODE_LETTER_NUMBER, G_UNICODE_LETTER_NUMBER, 
     G_UNICODE_LETTER_NUMBER, G_UNICODE_LETTER_NUMBER, 
@@ -9341,7 +9291,7 @@ static const char type_data[][256] = {
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER
   },
-  { /* page 293, index 94 */
+  { /* page 293, index 93 */
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
@@ -9429,32 +9379,7 @@ static const char type_data[][256] = {
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED
   },
-  { /* page 308, index 95 */
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_FORMAT, G_UNICODE_FORMAT, G_UNICODE_FORMAT, G_UNICODE_FORMAT, 
-    G_UNICODE_FORMAT, G_UNICODE_FORMAT, G_UNICODE_FORMAT, G_UNICODE_FORMAT, 
-    G_UNICODE_FORMAT, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+  { /* page 303, index 94 */
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
@@ -9503,20 +9428,6 @@ static const char type_data[][256] = {
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED
-  },
-  { /* page 326, index 96 */
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
@@ -9540,16 +9451,42 @@ static const char type_data[][256] = {
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_PUNCTUATION, 
+    G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED
+  },
+  { /* page 308, index 95 */
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_FORMAT, G_UNICODE_FORMAT, G_UNICODE_FORMAT, G_UNICODE_FORMAT, 
+    G_UNICODE_FORMAT, G_UNICODE_FORMAT, G_UNICODE_FORMAT, G_UNICODE_FORMAT, 
+    G_UNICODE_FORMAT, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
@@ -9602,14 +9539,22 @@ static const char type_data[][256] = {
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED
   },
-  { /* page 362, index 97 */
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+  { /* page 326, index 96 */
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
@@ -9624,9 +9569,6 @@ static const char type_data[][256] = {
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
@@ -9637,13 +9579,7 @@ static const char type_data[][256] = {
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, 
-    G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, 
-    G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, 
-    G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, 
-    G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
@@ -9676,6 +9612,37 @@ static const char type_data[][256] = {
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED
+  },
+  { /* page 362, index 97 */
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
@@ -9686,13 +9653,86 @@ static const char type_data[][256] = {
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_NON_SPACING_MARK, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, 
+    G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, 
+    G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, 
+    G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, 
+    G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_OTHER_PUNCTUATION, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_DECIMAL_NUMBER, 
+    G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, 
+    G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, 
+    G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, 
+    G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, 
+    G_UNICODE_DECIMAL_NUMBER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
     G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
-    G_UNICODE_OTHER_PUNCTUATION, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED
+    G_UNICODE_NON_SPACING_MARK, G_UNICODE_OTHER_PUNCTUATION
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED
   },
   { /* page 363, index 98 */
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
@@ -10240,7 +10280,97 @@ static const char type_data[][256] = {
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED
   },
-  { /* page 433, index 104 */
+  { /* page 431, index 104 */
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER, 
+    G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_MODIFIER_LETTER, 
+    G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER, 
+    G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER, 
+    G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_MODIFIER_LETTER, 
+    G_UNICODE_MODIFIER_LETTER, G_UNICODE_UNASSIGNED
+  },
+  { /* page 433, index 105 */
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
@@ -10251,8 +10381,8 @@ static const char type_data[][256] = {
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
@@ -10328,7 +10458,7 @@ static const char type_data[][256] = {
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER
   },
-  { /* page 434, index 105 */
+  { /* page 434, index 106 */
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
@@ -10416,7 +10546,7 @@ static const char type_data[][256] = {
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED
   },
-  { /* page 444, index 106 */
+  { /* page 444, index 107 */
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
@@ -10504,7 +10634,106 @@ static const char type_data[][256] = {
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED
   },
-  { /* page 464, index 107 */
+  { /* page 463, index 108 */
+    G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
+    G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
+    G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
+    G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
+    G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
+    G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
+    G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
+    G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
+    G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
+    G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
+    G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
+    G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
+    G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
+    G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
+    G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
+    G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
+    G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
+    G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
+    G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
+    G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
+    G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
+    G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
+    G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_NON_SPACING_MARK, 
+    G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
+    G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
+    G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
+    G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
+    G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
+    G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
+    G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
+    G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
+    G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
+    G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
+    G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
+    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
+    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
+    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
+    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
+    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
+    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
+    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
+    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
+    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
+    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
+    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
+    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
+    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
+    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
+    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
+    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
+    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
+    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
+    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
+    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
+    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
+    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
+    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
+    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
+    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
+    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
+    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
+    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
+    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
+    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
+    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
+    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
+    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
+    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
+    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
+    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
+    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
+    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED
+  },
+  { /* page 464, index 109 */
     G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
     G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
     G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
@@ -10592,7 +10821,7 @@ static const char type_data[][256] = {
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED
   },
-  { /* page 465, index 108 */
+  { /* page 465, index 110 */
     G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
     G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
     G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
@@ -10674,8 +10903,8 @@ static const char type_data[][256] = {
     G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
     G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
     G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_UNASSIGNED
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL
+    G_UNICODE_OTHER_SYMBOL, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
@@ -10684,7 +10913,7 @@ static const char type_data[][256] = {
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED
   },
-  { /* page 466, index 109 */
+  { /* page 466, index 111 */
     G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
     G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
     G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
@@ -10772,7 +11001,7 @@ static const char type_data[][256] = {
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED
   },
-  { /* page 467, index 110 */
+  { /* page 467, index 112 */
     G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
     G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
     G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
@@ -10860,7 +11089,7 @@ static const char type_data[][256] = {
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED
   },
-  { /* page 468, index 111 */
+  { /* page 468, index 113 */
     G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, 
     G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, 
     G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, 
@@ -10989,7 +11218,7 @@ static const char type_data[][256] = {
     G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, 
     G_UNICODE_LOWERCASE_LETTER
   },
-  { /* page 469, index 112 */
+  { /* page 469, index 114 */
     G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, 
     G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, 
     G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, 
@@ -11118,7 +11347,7 @@ static const char type_data[][256] = {
     G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, 
     G_UNICODE_LOWERCASE_LETTER
   },
-  { /* page 470, index 113 */
+  { /* page 470, index 115 */
     G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, 
     G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, 
     G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, 
@@ -11248,7 +11477,7 @@ static const char type_data[][256] = {
     G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, 
     G_UNICODE_LOWERCASE_LETTER
   },
-  { /* page 471, index 114 */
+  { /* page 471, index 116 */
     G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, 
     G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, 
     G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, 
@@ -11378,7 +11607,7 @@ static const char type_data[][256] = {
     G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, 
     G_UNICODE_DECIMAL_NUMBER
   },
-  { /* page 474, index 115 */
+  { /* page 474, index 117 */
     G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
     G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
     G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
@@ -11489,7 +11718,100 @@ static const char type_data[][256] = {
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED
   },
-  { /* page 480, index 116 */
+  { /* page 479, index 118 */
+    G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, 
+    G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, 
+    G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, 
+    G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, 
+    G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_LOWERCASE_LETTER, 
+    G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, 
+    G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, 
+    G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, 
+    G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, 
+    G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, 
+    G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, 
+    G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, 
+    G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, 
+    G_UNICODE_LOWERCASE_LETTER, G_UNICODE_LOWERCASE_LETTER, 
+    G_UNICODE_LOWERCASE_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED
+  },
+  { /* page 480, index 119 */
     G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
     G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
     G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
@@ -11581,40 +11903,107 @@ static const char type_data[][256] = {
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED
-  },
-  { /* page 481, index 117 */
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED
+  },
+  { /* page 481, index 120 */
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
+    G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
+    G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
+    G_UNICODE_NON_SPACING_MARK, G_UNICODE_MODIFIER_LETTER, 
+    G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER, 
+    G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER, 
+    G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_DECIMAL_NUMBER, 
+    G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, 
+    G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, 
+    G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, 
+    G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, 
+    G_UNICODE_DECIMAL_NUMBER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_SYMBOL, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED
+  },
+  { /* page 482, index 121 */
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
-    G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
-    G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
-    G_UNICODE_NON_SPACING_MARK, G_UNICODE_MODIFIER_LETTER, 
-    G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER, 
-    G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER, 
-    G_UNICODE_MODIFIER_LETTER, G_UNICODE_MODIFIER_LETTER, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_DECIMAL_NUMBER, 
-    G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, 
-    G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, 
-    G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, 
-    G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, 
-    G_UNICODE_DECIMAL_NUMBER, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
@@ -11656,12 +12045,48 @@ static const char type_data[][256] = {
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_NON_SPACING_MARK, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
+    G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
+    G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, 
+    G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, 
+    G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, 
+    G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, 
+    G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_CURRENCY_SYMBOL
+  },
+  { /* page 487, index 122 */
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
@@ -11672,9 +12097,6 @@ static const char type_data[][256] = {
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED
-  },
-  { /* page 482, index 118 */
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
@@ -11739,32 +12161,20 @@ static const char type_data[][256] = {
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
-    G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
-    G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, 
-    G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, 
-    G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, 
-    G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, 
-    G_UNICODE_DECIMAL_NUMBER, G_UNICODE_DECIMAL_NUMBER, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_CURRENCY_SYMBOL
+    G_UNICODE_UNASSIGNED
   },
-  { /* page 488, index 119 */
+  { /* page 488, index 123 */
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
@@ -11853,7 +12263,7 @@ static const char type_data[][256] = {
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED
   },
-  { /* page 489, index 120 */
+  { /* page 489, index 124 */
     G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, 
     G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, 
     G_UNICODE_UPPERCASE_LETTER, G_UNICODE_UPPERCASE_LETTER, 
@@ -11955,7 +12365,7 @@ static const char type_data[][256] = {
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED
   },
-  { /* page 492, index 121 */
+  { /* page 492, index 125 */
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
@@ -12043,7 +12453,7 @@ static const char type_data[][256] = {
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED
   },
-  { /* page 493, index 122 */
+  { /* page 493, index 126 */
     G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, 
     G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, 
     G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, 
@@ -12131,7 +12541,7 @@ static const char type_data[][256] = {
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED
   },
-  { /* page 494, index 123 */
+  { /* page 494, index 127 */
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
@@ -12219,7 +12629,7 @@ static const char type_data[][256] = {
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED
   },
-  { /* page 496, index 124 */
+  { /* page 496, index 128 */
     G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
     G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
     G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
@@ -12307,7 +12717,7 @@ static const char type_data[][256] = {
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED
   },
-  { /* page 497, index 125 */
+  { /* page 497, index 129 */
     G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, 
     G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, 
     G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, G_UNICODE_OTHER_NUMBER, 
@@ -12395,7 +12805,7 @@ static const char type_data[][256] = {
     G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
     G_UNICODE_OTHER_SYMBOL
   },
-  { /* page 498, index 126 */
+  { /* page 498, index 130 */
     G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
@@ -12483,7 +12893,7 @@ static const char type_data[][256] = {
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED
   },
-  { /* page 499, index 127 */
+  { /* page 499, index 131 */
     G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
     G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
     G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
@@ -12572,7 +12982,7 @@ static const char type_data[][256] = {
     G_UNICODE_MODIFIER_SYMBOL, G_UNICODE_MODIFIER_SYMBOL, 
     G_UNICODE_MODIFIER_SYMBOL
   },
-  { /* page 502, index 128 */
+  { /* page 502, index 132 */
     G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
     G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
     G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
@@ -12646,12 +13056,12 @@ static const char type_data[][256] = {
     G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
     G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_SYMBOL, 
     G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
     G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
     G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
     G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
+    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
     G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
@@ -12660,7 +13070,7 @@ static const char type_data[][256] = {
     G_UNICODE_OTHER_SYMBOL, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED
   },
-  { /* page 503, index 129 */
+  { /* page 503, index 133 */
     G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
     G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
     G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
@@ -12741,14 +13151,14 @@ static const char type_data[][256] = {
     G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
     G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_OTHER_SYMBOL, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED
   },
-  { /* page 504, index 130 */
+  { /* page 504, index 134 */
     G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
     G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
     G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
@@ -12836,95 +13246,7 @@ static const char type_data[][256] = {
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED
   },
-  { /* page 505, index 131 */
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL
-  },
-  { /* page 506, index 132 */
+  { /* page 506, index 135 */
     G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
     G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
     G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
@@ -12966,7 +13288,7 @@ static const char type_data[][256] = {
     G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_SYMBOL, 
     G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
     G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
@@ -12981,38 +13303,38 @@ static const char type_data[][256] = {
     G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
     G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
     G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_OTHER_SYMBOL, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL
+    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_SYMBOL, 
     G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
     G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
+    G_UNICODE_OTHER_SYMBOL, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
+    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
     G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
+    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
     G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_SYMBOL, 
+    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
+    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
+    G_UNICODE_OTHER_SYMBOL, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
+    G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
+    G_UNICODE_OTHER_SYMBOL, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED
   },
-  { /* page 507, index 133 */
+  { /* page 507, index 136 */
     G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
     G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
     G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, G_UNICODE_OTHER_SYMBOL, 
@@ -13101,7 +13423,7 @@ static const char type_data[][256] = {
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED
   },
-  { /* page 678, index 134 */
+  { /* page 678, index 137 */
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
@@ -13176,7 +13498,7 @@ static const char type_data[][256] = {
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
@@ -13189,7 +13511,9 @@ static const char type_data[][256] = {
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED
   },
-  { /* page 695, index 135 */
+  { /* page 695, index 138 */
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
+    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
@@ -13207,8 +13531,6 @@ static const char type_data[][256] = {
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
-    G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_UNASSIGNED, 
-    G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
@@ -13277,7 +13599,7 @@ static const char type_data[][256] = {
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER
   },
-  { /* page 696, index 136 */
+  { /* page 696, index 139 */
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
@@ -13365,7 +13687,7 @@ static const char type_data[][256] = {
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER
   },
-  { /* page 718, index 137 */
+  { /* page 718, index 140 */
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
@@ -13453,7 +13775,7 @@ static const char type_data[][256] = {
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER
   },
-  { /* page 747, index 138 */
+  { /* page 747, index 141 */
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
@@ -13541,7 +13863,7 @@ static const char type_data[][256] = {
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED
   },
-  { /* page 762, index 139 */
+  { /* page 762, index 142 */
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
@@ -13629,7 +13951,7 @@ static const char type_data[][256] = {
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED
   },
-  { /* page 787, index 140 */
+  { /* page 787, index 143 */
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
     G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, G_UNICODE_OTHER_LETTER, 
@@ -13717,7 +14039,7 @@ static const char type_data[][256] = {
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED
   },
-  { /* page 3584, index 141 */
+  { /* page 3584, index 144 */
     G_UNICODE_UNASSIGNED, G_UNICODE_FORMAT, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
@@ -13797,7 +14119,7 @@ static const char type_data[][256] = {
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED
   },
-  { /* page 3585, index 142 */
+  { /* page 3585, index 145 */
     G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
     G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
     G_UNICODE_NON_SPACING_MARK, G_UNICODE_NON_SPACING_MARK, 
@@ -13925,7 +14247,7 @@ static const char type_data[][256] = {
     G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED
   },
-  { /* page 4095, index 143 */
+  { /* page 4095, index 146 */
     G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, 
     G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, 
     G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, 
@@ -14013,7 +14335,7 @@ static const char type_data[][256] = {
     G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_UNASSIGNED, 
     G_UNICODE_UNASSIGNED
   },
-  { /* page 4351, index 144 */
+  { /* page 4351, index 147 */
     G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, 
     G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, 
     G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, G_UNICODE_PRIVATE_USE, 
@@ -14264,20 +14586,19 @@ static const gint16 type_table_part1[788] = {
   G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
-  47 /* page 159 */,
-  48 /* page 160 */,
   G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
+  47 /* page 160 */,
   G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
-  49 /* page 164 */,
   G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
-  50 /* page 166 */,
-  51 /* page 167 */,
-  52 /* page 168 */,
-  53 /* page 169 */,
-  54 /* page 170 */,
-  55 /* page 171 */,
+  48 /* page 164 */,
   G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
+  49 /* page 166 */,
+  50 /* page 167 */,
+  51 /* page 168 */,
+  52 /* page 169 */,
+  53 /* page 170 */,
+  54 /* page 171 */,
   G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
@@ -14320,7 +14641,8 @@ static const gint16 type_table_part1[788] = {
   G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
-  56 /* page 215 */,
+  G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
+  55 /* page 215 */,
   G_UNICODE_SURROGATE + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_SURROGATE + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_SURROGATE + G_UNICODE_MAX_TABLE_INDEX,
@@ -14355,51 +14677,50 @@ static const gint16 type_table_part1[788] = {
   G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
-  57 /* page 250 */,
-  58 /* page 251 */,
+  56 /* page 250 */,
+  57 /* page 251 */,
   G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
-  59 /* page 253 */,
-  60 /* page 254 */,
-  61 /* page 255 */,
-  62 /* page 256 */,
-  63 /* page 257 */,
-  64 /* page 258 */,
-  65 /* page 259 */,
-  66 /* page 260 */,
-  67 /* page 261 */,
+  58 /* page 253 */,
+  59 /* page 254 */,
+  60 /* page 255 */,
+  61 /* page 256 */,
+  62 /* page 257 */,
+  63 /* page 258 */,
+  64 /* page 259 */,
+  65 /* page 260 */,
+  66 /* page 261 */,
   G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
-  68 /* page 263 */,
-  69 /* page 264 */,
-  70 /* page 265 */,
-  71 /* page 266 */,
-  72 /* page 267 */,
-  73 /* page 268 */,
-  74 /* page 269 */,
-  75 /* page 270 */,
-  76 /* page 271 */,
-  77 /* page 272 */,
-  78 /* page 273 */,
-  79 /* page 274 */,
-  80 /* page 275 */,
-  81 /* page 276 */,
-  82 /* page 277 */,
-  83 /* page 278 */,
-  84 /* page 279 */,
-  85 /* page 280 */,
-  86 /* page 281 */,
-  87 /* page 282 */,
+  67 /* page 263 */,
+  68 /* page 264 */,
+  69 /* page 265 */,
+  70 /* page 266 */,
+  71 /* page 267 */,
+  72 /* page 268 */,
+  73 /* page 269 */,
+  74 /* page 270 */,
+  75 /* page 271 */,
+  76 /* page 272 */,
+  77 /* page 273 */,
+  78 /* page 274 */,
+  79 /* page 275 */,
+  80 /* page 276 */,
+  81 /* page 277 */,
+  82 /* page 278 */,
+  83 /* page 279 */,
+  84 /* page 280 */,
+  85 /* page 281 */,
+  86 /* page 282 */,
   G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
-  88 /* page 284 */,
-  89 /* page 285 */,
-  90 /* page 286 */,
-  91 /* page 287 */,
+  87 /* page 284 */,
+  88 /* page 285 */,
+  89 /* page 286 */,
+  90 /* page 287 */,
   G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
-  92 /* page 291 */,
-  93 /* page 292 */,
-  94 /* page 293 */,
-  G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
+  91 /* page 291 */,
+  92 /* page 292 */,
+  93 /* page 293 */,
   G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
@@ -14409,6 +14730,7 @@ static const gint16 type_table_part1[788] = {
   G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
+  94 /* page 303 */,
   G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
@@ -14536,11 +14858,10 @@ static const gint16 type_table_part1[788] = {
   G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
-  G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
+  104 /* page 431 */,
   G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
-  104 /* page 433 */,
-  105 /* page 434 */,
-  G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
+  105 /* page 433 */,
+  106 /* page 434 */,
   G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
@@ -14549,8 +14870,8 @@ static const gint16 type_table_part1[788] = {
   G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
-  106 /* page 444 */,
   G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
+  107 /* page 444 */,
   G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
@@ -14569,50 +14890,51 @@ static const gint16 type_table_part1[788] = {
   G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
-  107 /* page 464 */,
-  108 /* page 465 */,
-  109 /* page 466 */,
-  110 /* page 467 */,
-  111 /* page 468 */,
-  112 /* page 469 */,
-  113 /* page 470 */,
-  114 /* page 471 */,
+  108 /* page 463 */,
+  109 /* page 464 */,
+  110 /* page 465 */,
+  111 /* page 466 */,
+  112 /* page 467 */,
+  113 /* page 468 */,
+  114 /* page 469 */,
+  115 /* page 470 */,
+  116 /* page 471 */,
   G_UNICODE_OTHER_SYMBOL + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_OTHER_SYMBOL + G_UNICODE_MAX_TABLE_INDEX,
-  115 /* page 474 */,
-  G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
-  G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
+  117 /* page 474 */,
   G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
-  116 /* page 480 */,
-  117 /* page 481 */,
-  118 /* page 482 */,
   G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
+  118 /* page 479 */,
+  119 /* page 480 */,
+  120 /* page 481 */,
+  121 /* page 482 */,
   G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
-  119 /* page 488 */,
-  120 /* page 489 */,
+  122 /* page 487 */,
+  123 /* page 488 */,
+  124 /* page 489 */,
   G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
-  121 /* page 492 */,
-  122 /* page 493 */,
-  123 /* page 494 */,
+  125 /* page 492 */,
+  126 /* page 493 */,
+  127 /* page 494 */,
   G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
-  124 /* page 496 */,
-  125 /* page 497 */,
-  126 /* page 498 */,
-  127 /* page 499 */,
+  128 /* page 496 */,
+  129 /* page 497 */,
+  130 /* page 498 */,
+  131 /* page 499 */,
   G_UNICODE_OTHER_SYMBOL + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_OTHER_SYMBOL + G_UNICODE_MAX_TABLE_INDEX,
-  128 /* page 502 */,
-  129 /* page 503 */,
-  130 /* page 504 */,
-  131 /* page 505 */,
-  132 /* page 506 */,
-  133 /* page 507 */,
+  132 /* page 502 */,
+  133 /* page 503 */,
+  134 /* page 504 */,
+  G_UNICODE_OTHER_SYMBOL + G_UNICODE_MAX_TABLE_INDEX,
+  135 /* page 506 */,
+  136 /* page 507 */,
   G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
@@ -14783,7 +15105,7 @@ static const gint16 type_table_part1[788] = {
   G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
-  134 /* page 678 */,
+  137 /* page 678 */,
   G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
@@ -14800,8 +15122,8 @@ static const gint16 type_table_part1[788] = {
   G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
-  135 /* page 695 */,
-  136 /* page 696 */,
+  138 /* page 695 */,
+  139 /* page 696 */,
   G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
@@ -14823,7 +15145,7 @@ static const gint16 type_table_part1[788] = {
   G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
-  137 /* page 718 */,
+  140 /* page 718 */,
   G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
@@ -14852,7 +15174,7 @@ static const gint16 type_table_part1[788] = {
   G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
-  138 /* page 747 */,
+  141 /* page 747 */,
   G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
@@ -14867,7 +15189,7 @@ static const gint16 type_table_part1[788] = {
   G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
-  139 /* page 762 */,
+  142 /* page 762 */,
   G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
@@ -14892,13 +15214,13 @@ static const gint16 type_table_part1[788] = {
   G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_OTHER_LETTER + G_UNICODE_MAX_TABLE_INDEX,
-  140 /* page 787 */
+  143 /* page 787 */
 };
 
 /* U+E0000 through U+10FFFF */
 static const gint16 type_table_part2[768] = {
-  141 /* page 3584 */,
-  142 /* page 3585 */,
+  144 /* page 3584 */,
+  145 /* page 3585 */,
   G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_UNASSIGNED + G_UNICODE_MAX_TABLE_INDEX,
@@ -15408,7 +15730,7 @@ static const gint16 type_table_part2[768] = {
   G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
-  143 /* page 4095 */,
+  146 /* page 4095 */,
   G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
@@ -15664,7 +15986,7 @@ static const gint16 type_table_part2[768] = {
   G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
   G_UNICODE_PRIVATE_USE + G_UNICODE_MAX_TABLE_INDEX,
-  144 /* page 4351 */
+  147 /* page 4351 */
 };
 
 static const gunichar attr_data[][256] = {
@@ -16515,12 +16837,12 @@ static const gunichar attr_data[][256] = {
     0x2c42, 0x2c43, 0x2c44, 0x2c45, 0x2c46, 0x2c47, 0x2c48, 0x2c49, 0x2c4a, 
     0x2c4b, 0x2c4c, 0x2c4d, 0x2c4e, 0x2c4f, 0x2c50, 0x2c51, 0x2c52, 0x2c53, 
     0x2c54, 0x2c55, 0x2c56, 0x2c57, 0x2c58, 0x2c59, 0x2c5a, 0x2c5b, 0x2c5c, 
-    0x2c5d, 0x2c5e, 0x0000, 0x2c00, 0x2c01, 0x2c02, 0x2c03, 0x2c04, 0x2c05, 
+    0x2c5d, 0x2c5e, 0x2c5f, 0x2c00, 0x2c01, 0x2c02, 0x2c03, 0x2c04, 0x2c05, 
     0x2c06, 0x2c07, 0x2c08, 0x2c09, 0x2c0a, 0x2c0b, 0x2c0c, 0x2c0d, 0x2c0e, 
     0x2c0f, 0x2c10, 0x2c11, 0x2c12, 0x2c13, 0x2c14, 0x2c15, 0x2c16, 0x2c17, 
     0x2c18, 0x2c19, 0x2c1a, 0x2c1b, 0x2c1c, 0x2c1d, 0x2c1e, 0x2c1f, 0x2c20, 
     0x2c21, 0x2c22, 0x2c23, 0x2c24, 0x2c25, 0x2c26, 0x2c27, 0x2c28, 0x2c29, 
-    0x2c2a, 0x2c2b, 0x2c2c, 0x2c2d, 0x2c2e, 0x0000, 0x2c61, 0x2c60, 0x026b, 
+    0x2c2a, 0x2c2b, 0x2c2c, 0x2c2d, 0x2c2e, 0x2c2f, 0x2c61, 0x2c60, 0x026b, 
     0x1d7d, 0x027d, 0x023a, 0x023e, 0x2c68, 0x2c67, 0x2c6a, 0x2c69, 0x2c6c, 
     0x2c6b, 0x0251, 0x0271, 0x0250, 0x0252, 0x0000, 0x2c73, 0x2c72, 0x0000, 
     0x2c76, 0x2c75, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
@@ -16624,10 +16946,10 @@ static const gunichar attr_data[][256] = {
     0xa7a3, 0xa7a2, 0xa7a5, 0xa7a4, 0xa7a7, 0xa7a6, 0xa7a9, 0xa7a8, 0x0266, 
     0x025c, 0x0261, 0x026c, 0x026a, 0x0000, 0x029e, 0x0287, 0x029d, 0xab53, 
     0xa7b5, 0xa7b4, 0xa7b7, 0xa7b6, 0xa7b9, 0xa7b8, 0xa7bb, 0xa7ba, 0xa7bd, 
-    0xa7bc, 0xa7bf, 0xa7be, 0x0000, 0x0000, 0xa7c3, 0xa7c2, 0xa794, 0x0282, 
+    0xa7bc, 0xa7bf, 0xa7be, 0xa7c1, 0xa7c0, 0xa7c3, 0xa7c2, 0xa794, 0x0282, 
     0x1d8e, 0xa7c8, 0xa7c7, 0xa7ca, 0xa7c9, 0x0000, 0x0000, 0x0000, 0x0000, 
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
+    0x0000, 0xa7d1, 0xa7d0, 0x0000, 0x0000, 0x0000, 0x0000, 0xa7d7, 0xa7d6
+    0xa7d9, 0xa7d8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
     0x0000, 0x0000, 0xa7f6, 0xa7f5, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
@@ -16853,7 +17175,39 @@ static const gunichar attr_data[][256] = {
     0x104ca, 0x104cb, 0x104cc, 0x104cd, 0x104ce, 0x104cf, 0x104d0, 0x104d1, 
     0x104d2, 0x104d3, 0x0000, 0x0000, 0x0000, 0x0000
   },
-  { /* page 268, index 38 */
+  { /* page 261, index 38 */
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
+    0x0000, 0x0000, 0x0000, 0x0000, 0x10597, 0x10598, 0x10599, 0x1059a, 
+    0x1059b, 0x1059c, 0x1059d, 0x1059e, 0x1059f, 0x105a0, 0x105a1, 0x0000, 
+    0x105a3, 0x105a4, 0x105a5, 0x105a6, 0x105a7, 0x105a8, 0x105a9, 0x105aa, 
+    0x105ab, 0x105ac, 0x105ad, 0x105ae, 0x105af, 0x105b0, 0x105b1, 0x0000, 
+    0x105b3, 0x105b4, 0x105b5, 0x105b6, 0x105b7, 0x105b8, 0x105b9, 0x0000, 
+    0x105bb, 0x105bc, 0x0000, 0x10570, 0x10571, 0x10572, 0x10573, 0x10574, 
+    0x10575, 0x10576, 0x10577, 0x10578, 0x10579, 0x1057a, 0x0000, 0x1057c, 
+    0x1057d, 0x1057e, 0x1057f, 0x10580, 0x10581, 0x10582, 0x10583, 0x10584, 
+    0x10585, 0x10586, 0x10587, 0x10588, 0x10589, 0x1058a, 0x0000, 0x1058c, 
+    0x1058d, 0x1058e, 0x1058f, 0x10590, 0x10591, 0x10592, 0x0000, 0x10594, 
+    0x10595, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0000
+  },
+  { /* page 268, index 39 */
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
@@ -16885,7 +17239,7 @@ static const gunichar attr_data[][256] = {
     0x10caf, 0x10cb0, 0x10cb1, 0x10cb2, 0x0000, 0x0000, 0x0000, 0x0000, 
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
   },
-  { /* page 269, index 39 */
+  { /* page 269, index 40 */
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
@@ -16916,7 +17270,7 @@ static const gunichar attr_data[][256] = {
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
     0x0000, 0x0000, 0x0000, 0x0000
   },
-  { /* page 272, index 40 */
+  { /* page 272, index 41 */
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
@@ -16947,7 +17301,7 @@ static const gunichar attr_data[][256] = {
     0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 0x0000, 
     0x0000, 0x0000, 0x0000, 0x0000
   },
-  { /* page 273, index 41 */
+  { /* page 273, index 42 */
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
@@ -16978,7 +17332,7 @@ static const gunichar attr_data[][256] = {
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
     0x0000, 0x0000, 0x0000, 0x0000
   },
-  { /* page 274, index 42 */
+  { /* page 274, index 43 */
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
@@ -17009,7 +17363,7 @@ static const gunichar attr_data[][256] = {
     0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 0x0000, 
     0x0000, 0x0000, 0x0000, 0x0000
   },
-  { /* page 276, index 43 */
+  { /* page 276, index 44 */
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
@@ -17040,7 +17394,7 @@ static const gunichar attr_data[][256] = {
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
     0x0000, 0x0000, 0x0000, 0x0000
   },
-  { /* page 278, index 44 */
+  { /* page 278, index 45 */
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
@@ -17071,7 +17425,7 @@ static const gunichar attr_data[][256] = {
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
     0x0000, 0x0000, 0x0000, 0x0000
   },
-  { /* page 279, index 45 */
+  { /* page 279, index 46 */
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
@@ -17102,7 +17456,7 @@ static const gunichar attr_data[][256] = {
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
     0x0000, 0x0000, 0x0000, 0x0000
   },
-  { /* page 280, index 46 */
+  { /* page 280, index 47 */
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
@@ -17134,7 +17488,7 @@ static const gunichar attr_data[][256] = {
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
     0x0000, 0x0000, 0x0000
   },
-  { /* page 281, index 47 */
+  { /* page 281, index 48 */
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
@@ -17165,7 +17519,7 @@ static const gunichar attr_data[][256] = {
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
     0x0000, 0x0000, 0x0000, 0x0000
   },
-  { /* page 284, index 48 */
+  { /* page 284, index 49 */
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
@@ -17196,7 +17550,7 @@ static const gunichar attr_data[][256] = {
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
     0x0000, 0x0000, 0x0000, 0x0000
   },
-  { /* page 285, index 49 */
+  { /* page 285, index 50 */
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
@@ -17227,7 +17581,7 @@ static const gunichar attr_data[][256] = {
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
     0x0000, 0x0000, 0x0000, 0x0000
   },
-  { /* page 362, index 50 */
+  { /* page 362, index 51 */
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
@@ -17249,8 +17603,8 @@ static const gunichar attr_data[][256] = {
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000
-    0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
+    0x0000, 0x0000, 0x0000, 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005
+    0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
@@ -17258,7 +17612,7 @@ static const gunichar attr_data[][256] = {
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
     0x0000, 0x0000, 0x0000, 0x0000
   },
-  { /* page 363, index 51 */
+  { /* page 363, index 52 */
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
@@ -17289,7 +17643,7 @@ static const gunichar attr_data[][256] = {
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
     0x0000, 0x0000, 0x0000, 0x0000
   },
-  { /* page 366, index 52 */
+  { /* page 366, index 53 */
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
@@ -17321,7 +17675,7 @@ static const gunichar attr_data[][256] = {
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
     0x0000, 0x0000, 0x0000
   },
-  { /* page 471, index 53 */
+  { /* page 471, index 54 */
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
@@ -17352,7 +17706,7 @@ static const gunichar attr_data[][256] = {
     0x0007, 0x0008, 0x0009, 0x0000, 0x0001, 0x0002, 0x0003, 0x0004, 0x0005, 
     0x0006, 0x0007, 0x0008, 0x0009
   },
-  { /* page 481, index 54 */
+  { /* page 481, index 55 */
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
@@ -17383,7 +17737,7 @@ static const gunichar attr_data[][256] = {
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
     0x0000, 0x0000, 0x0000, 0x0000
   },
-  { /* page 482, index 55 */
+  { /* page 482, index 56 */
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
@@ -17414,7 +17768,7 @@ static const gunichar attr_data[][256] = {
     0x0003, 0x0004, 0x0005, 0x0006, 0x0007, 0x0008, 0x0009, 0x0000, 0x0000, 
     0x0000, 0x0000, 0x0000, 0x0000
   },
-  { /* page 489, index 56 */
+  { /* page 489, index 57 */
     0x1e922, 0x1e923, 0x1e924, 0x1e925, 0x1e926, 0x1e927, 0x1e928, 0x1e929, 
     0x1e92a, 0x1e92b, 0x1e92c, 0x1e92d, 0x1e92e, 0x1e92f, 0x1e930, 0x1e931, 
     0x1e932, 0x1e933, 0x1e934, 0x1e935, 0x1e936, 0x1e937, 0x1e938, 0x1e939, 
@@ -17446,7 +17800,7 @@ static const gunichar attr_data[][256] = {
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
     0x0000, 0x0000, 0x0000, 0x0000
   },
-  { /* page 507, index 57 */
+  { /* page 507, index 58 */
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
@@ -17742,31 +18096,31 @@ static const gint16 attr_table_part1[788] = {
   0x0000 + G_UNICODE_MAX_TABLE_INDEX,
   0x0000 + G_UNICODE_MAX_TABLE_INDEX,
   37 /* page 260 */,
+  38 /* page 261 */,
   0x0000 + G_UNICODE_MAX_TABLE_INDEX,
   0x0000 + G_UNICODE_MAX_TABLE_INDEX,
   0x0000 + G_UNICODE_MAX_TABLE_INDEX,
   0x0000 + G_UNICODE_MAX_TABLE_INDEX,
   0x0000 + G_UNICODE_MAX_TABLE_INDEX,
   0x0000 + G_UNICODE_MAX_TABLE_INDEX,
-  0x0000 + G_UNICODE_MAX_TABLE_INDEX,
-  38 /* page 268 */,
-  39 /* page 269 */,
+  39 /* page 268 */,
+  40 /* page 269 */,
   0x0000 + G_UNICODE_MAX_TABLE_INDEX,
   0x0000 + G_UNICODE_MAX_TABLE_INDEX,
-  40 /* page 272 */,
-  41 /* page 273 */,
-  42 /* page 274 */,
+  41 /* page 272 */,
+  42 /* page 273 */,
+  43 /* page 274 */,
   0x0000 + G_UNICODE_MAX_TABLE_INDEX,
-  43 /* page 276 */,
+  44 /* page 276 */,
   0x0000 + G_UNICODE_MAX_TABLE_INDEX,
-  44 /* page 278 */,
-  45 /* page 279 */,
-  46 /* page 280 */,
-  47 /* page 281 */,
+  45 /* page 278 */,
+  46 /* page 279 */,
+  47 /* page 280 */,
+  48 /* page 281 */,
   0x0000 + G_UNICODE_MAX_TABLE_INDEX,
   0x0000 + G_UNICODE_MAX_TABLE_INDEX,
-  48 /* page 284 */,
-  49 /* page 285 */,
+  49 /* page 284 */,
+  50 /* page 285 */,
   0x0000 + G_UNICODE_MAX_TABLE_INDEX,
   0x0000 + G_UNICODE_MAX_TABLE_INDEX,
   0x0000 + G_UNICODE_MAX_TABLE_INDEX,
@@ -17843,11 +18197,11 @@ static const gint16 attr_table_part1[788] = {
   0x0000 + G_UNICODE_MAX_TABLE_INDEX,
   0x0000 + G_UNICODE_MAX_TABLE_INDEX,
   0x0000 + G_UNICODE_MAX_TABLE_INDEX,
-  50 /* page 362 */,
-  51 /* page 363 */,
+  51 /* page 362 */,
+  52 /* page 363 */,
   0x0000 + G_UNICODE_MAX_TABLE_INDEX,
   0x0000 + G_UNICODE_MAX_TABLE_INDEX,
-  52 /* page 366 */,
+  53 /* page 366 */,
   0x0000 + G_UNICODE_MAX_TABLE_INDEX,
   0x0000 + G_UNICODE_MAX_TABLE_INDEX,
   0x0000 + G_UNICODE_MAX_TABLE_INDEX,
@@ -17952,7 +18306,7 @@ static const gint16 attr_table_part1[788] = {
   0x0000 + G_UNICODE_MAX_TABLE_INDEX,
   0x0000 + G_UNICODE_MAX_TABLE_INDEX,
   0x0000 + G_UNICODE_MAX_TABLE_INDEX,
-  53 /* page 471 */,
+  54 /* page 471 */,
   0x0000 + G_UNICODE_MAX_TABLE_INDEX,
   0x0000 + G_UNICODE_MAX_TABLE_INDEX,
   0x0000 + G_UNICODE_MAX_TABLE_INDEX,
@@ -17962,15 +18316,15 @@ static const gint16 attr_table_part1[788] = {
   0x0000 + G_UNICODE_MAX_TABLE_INDEX,
   0x0000 + G_UNICODE_MAX_TABLE_INDEX,
   0x0000 + G_UNICODE_MAX_TABLE_INDEX,
-  54 /* page 481 */,
-  55 /* page 482 */,
+  55 /* page 481 */,
+  56 /* page 482 */,
   0x0000 + G_UNICODE_MAX_TABLE_INDEX,
   0x0000 + G_UNICODE_MAX_TABLE_INDEX,
   0x0000 + G_UNICODE_MAX_TABLE_INDEX,
   0x0000 + G_UNICODE_MAX_TABLE_INDEX,
   0x0000 + G_UNICODE_MAX_TABLE_INDEX,
   0x0000 + G_UNICODE_MAX_TABLE_INDEX,
-  56 /* page 489 */,
+  57 /* page 489 */,
   0x0000 + G_UNICODE_MAX_TABLE_INDEX,
   0x0000 + G_UNICODE_MAX_TABLE_INDEX,
   0x0000 + G_UNICODE_MAX_TABLE_INDEX,
@@ -17988,7 +18342,7 @@ static const gint16 attr_table_part1[788] = {
   0x0000 + G_UNICODE_MAX_TABLE_INDEX,
   0x0000 + G_UNICODE_MAX_TABLE_INDEX,
   0x0000 + G_UNICODE_MAX_TABLE_INDEX,
-  57 /* page 507 */,
+  58 /* page 507 */,
   0x0000 + G_UNICODE_MAX_TABLE_INDEX,
   0x0000 + G_UNICODE_MAX_TABLE_INDEX,
   0x0000 + G_UNICODE_MAX_TABLE_INDEX,
@@ -19524,7 +19878,10 @@ static const struct Interval g_unicode_width_table_wide[] = {
 {0x17000, 0x187F7},
 {0x18800, 0x18CD5},
 {0x18D00, 0x18D08},
-{0x1B000, 0x1B11E},
+{0x1AFF0, 0x1AFF3},
+{0x1AFF5, 0x1AFFB},
+{0x1AFFD, 0x1AFFE},
+{0x1B000, 0x1B122},
 {0x1B150, 0x1B152},
 {0x1B164, 0x1B167},
 {0x1B170, 0x1B2FB},
@@ -19559,21 +19916,23 @@ static const struct Interval g_unicode_width_table_wide[] = {
 {0x1F6CC, 0x1F6CC},
 {0x1F6D0, 0x1F6D2},
 {0x1F6D5, 0x1F6D7},
+{0x1F6DD, 0x1F6DF},
 {0x1F6EB, 0x1F6EC},
 {0x1F6F4, 0x1F6FC},
 {0x1F7E0, 0x1F7EB},
+{0x1F7F0, 0x1F7F0},
 {0x1F90C, 0x1F93A},
 {0x1F93C, 0x1F945},
-{0x1F947, 0x1F978},
-{0x1F97A, 0x1F9CB},
-{0x1F9CD, 0x1F9FF},
+{0x1F947, 0x1F9FF},
 {0x1FA70, 0x1FA74},
-{0x1FA78, 0x1FA7A},
+{0x1FA78, 0x1FA7C},
 {0x1FA80, 0x1FA86},
-{0x1FA90, 0x1FAA8},
-{0x1FAB0, 0x1FAB6},
-{0x1FAC0, 0x1FAC2},
-{0x1FAD0, 0x1FAD6},
+{0x1FA90, 0x1FAAC},
+{0x1FAB0, 0x1FABA},
+{0x1FAC0, 0x1FAC5},
+{0x1FAD0, 0x1FAD9},
+{0x1FAE0, 0x1FAE7},
+{0x1FAF0, 0x1FAF6},
 {0x20000, 0x2FFFD},
 {0x30000, 0x3FFFD},
 };
index f2ad3ca..15972a6 100644 (file)
@@ -430,6 +430,12 @@ typedef enum
  * @G_UNICODE_SCRIPT_DIVES_AKURU:          Dives Akuru. Since: 2.66
  * @G_UNICODE_SCRIPT_KHITAN_SMALL_SCRIPT:  Khitan small script. Since: 2.66
  * @G_UNICODE_SCRIPT_YEZIDI:               Yezidi. Since: 2.66
+ * @G_UNICODE_SCRIPT_CYPRO_MINOAN:         Cypro-Minoan. Since: 2.72
+ * @G_UNICODE_SCRIPT_OLD_UYGHUR:           Old Uyghur. Since: 2.72
+ * @G_UNICODE_SCRIPT_TANGSA:               Tangsa. Since: 2.72
+ * @G_UNICODE_SCRIPT_TOTO:                 Toto. Since: 2.72
+ * @G_UNICODE_SCRIPT_VITHKUQI:             Vithkuqi. Since: 2.72
+ * @G_UNICODE_SCRIPT_MATH:                 Mathematical notation. Since: 2.72
  *
  * The #GUnicodeScript enumeration identifies different writing
  * systems. The values correspond to the names as defined in the
@@ -627,7 +633,17 @@ typedef enum
   G_UNICODE_SCRIPT_CHORASMIAN,             /* Chrs */
   G_UNICODE_SCRIPT_DIVES_AKURU,            /* Diak */
   G_UNICODE_SCRIPT_KHITAN_SMALL_SCRIPT,    /* Kits */
-  G_UNICODE_SCRIPT_YEZIDI                  /* Yezi */
+  G_UNICODE_SCRIPT_YEZIDI,                 /* Yezi */
+
+  /* Unicode 14.0 additions */
+  G_UNICODE_SCRIPT_CYPRO_MINOAN,           /* Cpmn */
+  G_UNICODE_SCRIPT_OLD_UYGHUR,             /* Ougr */
+  G_UNICODE_SCRIPT_TANGSA,                 /* Tnsa */
+  G_UNICODE_SCRIPT_TOTO,                   /* Toto */
+  G_UNICODE_SCRIPT_VITHKUQI,               /* Vith */
+
+  /* not really a Unicode script, but part of ISO 15924 */
+  G_UNICODE_SCRIPT_MATH,                   /* Zmth */
 } GUnicodeScript;
 
 GLIB_AVAILABLE_IN_ALL
index dfed104..3f24f98 100644 (file)
@@ -71,6 +71,10 @@ msc_strxfrm_wrapper (char       *string1,
  * compare the keys with strcmp() when sorting instead of sorting 
  * the original strings.
  * 
+ * If the two strings are not comparable due to being in different collation
+ * sequences, the result is undefined. This can happen if the strings are in
+ * different language scripts, for example.
+ *
  * Returns: < 0 if @str1 compares before @str2, 
  *   0 if they compare equal, > 0 if @str1 compares after @str2.
  **/
@@ -415,7 +419,7 @@ g_utf8_collate_key (const gchar *str,
   return result;
 #else
 
-  gsize xfrm_len;
+  gsize xfrm_len = 0;
   const gchar *charset;
   gchar *str_norm;
 
index 2b10286..ed64c48 100644 (file)
@@ -93,12 +93,12 @@ static const guchar cclass_data[][256] = {
     0, 0, 0, 0, 0, 0, 0, 220, 220, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    230, 220, 220, 220, 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 230, 230, 230, 230, 230, 230, 230, 
-    230, 230, 230, 230, 230, 230, 230, 0, 220, 230, 230, 220, 230, 230, 220, 
-    230, 230, 230, 220, 220, 220, 27, 28, 29, 230, 230, 230, 220, 230, 230, 
-    220, 220, 230, 230, 230, 230, 230
+    0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 220, 220, 220, 220, 220, 
+    230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 0, 
+    220, 230, 230, 220, 230, 230, 220, 230, 230, 230, 220, 220, 220, 27, 28, 
+    29, 230, 230, 230, 220, 230, 230, 220, 220, 230, 230, 230, 230, 230
   },
   { /* page 9, index 6 */
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
@@ -142,7 +142,7 @@ static const guchar cclass_data[][256] = {
   { /* page 12, index 9 */
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
     0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 84, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
@@ -219,7 +219,7 @@ static const guchar cclass_data[][256] = {
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
   },
   { /* page 23, index 15 */
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 9, 0, 0, 
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
     0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
@@ -266,10 +266,10 @@ static const guchar cclass_data[][256] = {
     230, 230, 230, 230, 230, 230, 0, 0, 220, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 230, 230, 230, 220, 220, 
-    220, 220, 220, 220, 230, 230, 220, 0, 220, 220, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    220, 220, 220, 220, 230, 230, 220, 0, 220, 220, 230, 230, 220, 220, 230, 
+    230, 230, 230, 230, 220, 230, 230, 230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
   },
   { /* page 27, index 19 */
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
@@ -311,7 +311,7 @@ static const guchar cclass_data[][256] = {
     214, 220, 202, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 
     230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 
     230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 232, 228, 
-    228, 220, 0, 230, 233, 220, 230, 220
+    228, 220, 218, 230, 233, 220, 230, 220
   },
   { /* page 32, index 22 */
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
@@ -545,19 +545,20 @@ static const guchar cclass_data[][256] = {
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 220, 
     220, 230, 230, 230, 220, 230, 220, 220, 220, 220, 0, 0, 0, 0, 0, 0, 0, 0, 
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 220, 230, 220, 0, 
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+    0
   },
   { /* page 272, index 40 */
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 
     0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 9, 7, 0, 0, 0, 0, 0, 
@@ -835,7 +836,7 @@ static const guchar cclass_data[][256] = {
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
-    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
+    0, 0, 0, 0, 0, 0, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 
     0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 230, 230, 
     230, 230, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
@@ -4778,6 +4779,9 @@ static const decomposition decomp_table[] =
   { 0xa69c, G_UNICODE_NOT_PRESENT_OFFSET, 10883 },
   { 0xa69d, G_UNICODE_NOT_PRESENT_OFFSET, 10886 },
   { 0xa770, G_UNICODE_NOT_PRESENT_OFFSET, 10889 },
+  { 0xa7f2, G_UNICODE_NOT_PRESENT_OFFSET, 5292 },
+  { 0xa7f3, G_UNICODE_NOT_PRESENT_OFFSET, 5336 },
+  { 0xa7f4, G_UNICODE_NOT_PRESENT_OFFSET, 5319 },
   { 0xa7f8, G_UNICODE_NOT_PRESENT_OFFSET, 10893 },
   { 0xa7f9, G_UNICODE_NOT_PRESENT_OFFSET, 10896 },
   { 0xab5c, G_UNICODE_NOT_PRESENT_OFFSET, 10899 },
@@ -6324,32 +6328,88 @@ static const decomposition decomp_table[] =
   { 0xffec, G_UNICODE_NOT_PRESENT_OFFSET, 14995 },
   { 0xffed, G_UNICODE_NOT_PRESENT_OFFSET, 14999 },
   { 0xffee, G_UNICODE_NOT_PRESENT_OFFSET, 15003 },
-  { 0x1109a, 15007, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x1109c, 15016, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x110ab, 15025, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x1112e, 15034, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x1112f, 15043, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x1134b, 15052, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x1134c, 15061, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x114bb, 15070, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x114bc, 15079, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x114be, 15088, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x115ba, 15097, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x115bb, 15106, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x11938, 15115, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x1d15e, 15124, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x1d15f, 15133, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x1d160, 15142, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x1d161, 15155, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x1d162, 15168, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x1d163, 15181, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x1d164, 15194, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x1d1bb, 15207, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x1d1bc, 15216, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x1d1bd, 15225, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x1d1be, 15238, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x1d1bf, 15251, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x1d1c0, 15264, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x10781, G_UNICODE_NOT_PRESENT_OFFSET, 15007 },
+  { 0x10782, G_UNICODE_NOT_PRESENT_OFFSET, 15010 },
+  { 0x10783, G_UNICODE_NOT_PRESENT_OFFSET, 15013 },
+  { 0x10784, G_UNICODE_NOT_PRESENT_OFFSET, 15016 },
+  { 0x10785, G_UNICODE_NOT_PRESENT_OFFSET, 15019 },
+  { 0x10787, G_UNICODE_NOT_PRESENT_OFFSET, 15022 },
+  { 0x10788, G_UNICODE_NOT_PRESENT_OFFSET, 15025 },
+  { 0x10789, G_UNICODE_NOT_PRESENT_OFFSET, 15029 },
+  { 0x1078a, G_UNICODE_NOT_PRESENT_OFFSET, 15032 },
+  { 0x1078b, G_UNICODE_NOT_PRESENT_OFFSET, 15035 },
+  { 0x1078c, G_UNICODE_NOT_PRESENT_OFFSET, 15038 },
+  { 0x1078d, G_UNICODE_NOT_PRESENT_OFFSET, 15041 },
+  { 0x1078e, G_UNICODE_NOT_PRESENT_OFFSET, 15045 },
+  { 0x1078f, G_UNICODE_NOT_PRESENT_OFFSET, 15048 },
+  { 0x10790, G_UNICODE_NOT_PRESENT_OFFSET, 15051 },
+  { 0x10791, G_UNICODE_NOT_PRESENT_OFFSET, 15054 },
+  { 0x10792, G_UNICODE_NOT_PRESENT_OFFSET, 15057 },
+  { 0x10793, G_UNICODE_NOT_PRESENT_OFFSET, 15060 },
+  { 0x10794, G_UNICODE_NOT_PRESENT_OFFSET, 15063 },
+  { 0x10795, G_UNICODE_NOT_PRESENT_OFFSET, 5313 },
+  { 0x10796, G_UNICODE_NOT_PRESENT_OFFSET, 15066 },
+  { 0x10797, G_UNICODE_NOT_PRESENT_OFFSET, 15069 },
+  { 0x10798, G_UNICODE_NOT_PRESENT_OFFSET, 15072 },
+  { 0x10799, G_UNICODE_NOT_PRESENT_OFFSET, 15075 },
+  { 0x1079a, G_UNICODE_NOT_PRESENT_OFFSET, 15078 },
+  { 0x1079b, G_UNICODE_NOT_PRESENT_OFFSET, 15081 },
+  { 0x1079c, G_UNICODE_NOT_PRESENT_OFFSET, 15084 },
+  { 0x1079d, G_UNICODE_NOT_PRESENT_OFFSET, 15089 },
+  { 0x1079e, G_UNICODE_NOT_PRESENT_OFFSET, 15093 },
+  { 0x1079f, G_UNICODE_NOT_PRESENT_OFFSET, 15096 },
+  { 0x107a0, G_UNICODE_NOT_PRESENT_OFFSET, 15101 },
+  { 0x107a1, G_UNICODE_NOT_PRESENT_OFFSET, 15104 },
+  { 0x107a2, G_UNICODE_NOT_PRESENT_OFFSET, 15109 },
+  { 0x107a3, G_UNICODE_NOT_PRESENT_OFFSET, 15112 },
+  { 0x107a4, G_UNICODE_NOT_PRESENT_OFFSET, 15115 },
+  { 0x107a5, G_UNICODE_NOT_PRESENT_OFFSET, 6137 },
+  { 0x107a6, G_UNICODE_NOT_PRESENT_OFFSET, 15118 },
+  { 0x107a7, G_UNICODE_NOT_PRESENT_OFFSET, 15121 },
+  { 0x107a8, G_UNICODE_NOT_PRESENT_OFFSET, 15126 },
+  { 0x107a9, G_UNICODE_NOT_PRESENT_OFFSET, 15129 },
+  { 0x107aa, G_UNICODE_NOT_PRESENT_OFFSET, 15132 },
+  { 0x107ab, G_UNICODE_NOT_PRESENT_OFFSET, 15135 },
+  { 0x107ac, G_UNICODE_NOT_PRESENT_OFFSET, 15138 },
+  { 0x107ad, G_UNICODE_NOT_PRESENT_OFFSET, 15141 },
+  { 0x107ae, G_UNICODE_NOT_PRESENT_OFFSET, 15145 },
+  { 0x107af, G_UNICODE_NOT_PRESENT_OFFSET, 15148 },
+  { 0x107b0, G_UNICODE_NOT_PRESENT_OFFSET, 15151 },
+  { 0x107b2, G_UNICODE_NOT_PRESENT_OFFSET, 15155 },
+  { 0x107b3, G_UNICODE_NOT_PRESENT_OFFSET, 15158 },
+  { 0x107b4, G_UNICODE_NOT_PRESENT_OFFSET, 15161 },
+  { 0x107b5, G_UNICODE_NOT_PRESENT_OFFSET, 15164 },
+  { 0x107b6, G_UNICODE_NOT_PRESENT_OFFSET, 15167 },
+  { 0x107b7, G_UNICODE_NOT_PRESENT_OFFSET, 15170 },
+  { 0x107b8, G_UNICODE_NOT_PRESENT_OFFSET, 15173 },
+  { 0x107b9, G_UNICODE_NOT_PRESENT_OFFSET, 15176 },
+  { 0x107ba, G_UNICODE_NOT_PRESENT_OFFSET, 15181 },
+  { 0x1109a, 15186, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1109c, 15195, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x110ab, 15204, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1112e, 15213, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1112f, 15222, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1134b, 15231, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1134c, 15240, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x114bb, 15249, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x114bc, 15258, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x114be, 15267, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x115ba, 15276, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x115bb, 15285, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x11938, 15294, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1d15e, 15303, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1d15f, 15312, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1d160, 15321, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1d161, 15334, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1d162, 15347, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1d163, 15360, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1d164, 15373, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1d1bb, 15386, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1d1bc, 15395, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1d1bd, 15404, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1d1be, 15417, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1d1bf, 15430, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x1d1c0, 15443, G_UNICODE_NOT_PRESENT_OFFSET },
   { 0x1d400, G_UNICODE_NOT_PRESENT_OFFSET, 2309 },
   { 0x1d401, G_UNICODE_NOT_PRESENT_OFFSET, 2314 },
   { 0x1d402, G_UNICODE_NOT_PRESENT_OFFSET, 5292 },
@@ -7002,300 +7062,300 @@ static const decomposition decomp_table[] =
   { 0x1d6a1, G_UNICODE_NOT_PRESENT_OFFSET, 1222 },
   { 0x1d6a2, G_UNICODE_NOT_PRESENT_OFFSET, 1191 },
   { 0x1d6a3, G_UNICODE_NOT_PRESENT_OFFSET, 2526 },
-  { 0x1d6a4, G_UNICODE_NOT_PRESENT_OFFSET, 15277 },
-  { 0x1d6a5, G_UNICODE_NOT_PRESENT_OFFSET, 15280 },
-  { 0x1d6a8, G_UNICODE_NOT_PRESENT_OFFSET, 15283 },
-  { 0x1d6a9, G_UNICODE_NOT_PRESENT_OFFSET, 15286 },
+  { 0x1d6a4, G_UNICODE_NOT_PRESENT_OFFSET, 15456 },
+  { 0x1d6a5, G_UNICODE_NOT_PRESENT_OFFSET, 15459 },
+  { 0x1d6a8, G_UNICODE_NOT_PRESENT_OFFSET, 15462 },
+  { 0x1d6a9, G_UNICODE_NOT_PRESENT_OFFSET, 15465 },
   { 0x1d6aa, G_UNICODE_NOT_PRESENT_OFFSET, 5354 },
-  { 0x1d6ab, G_UNICODE_NOT_PRESENT_OFFSET, 15289 },
-  { 0x1d6ac, G_UNICODE_NOT_PRESENT_OFFSET, 15292 },
-  { 0x1d6ad, G_UNICODE_NOT_PRESENT_OFFSET, 15295 },
-  { 0x1d6ae, G_UNICODE_NOT_PRESENT_OFFSET, 15298 },
+  { 0x1d6ab, G_UNICODE_NOT_PRESENT_OFFSET, 15468 },
+  { 0x1d6ac, G_UNICODE_NOT_PRESENT_OFFSET, 15471 },
+  { 0x1d6ad, G_UNICODE_NOT_PRESENT_OFFSET, 15474 },
+  { 0x1d6ae, G_UNICODE_NOT_PRESENT_OFFSET, 15477 },
   { 0x1d6af, G_UNICODE_NOT_PRESENT_OFFSET, 1402 },
-  { 0x1d6b0, G_UNICODE_NOT_PRESENT_OFFSET, 15301 },
-  { 0x1d6b1, G_UNICODE_NOT_PRESENT_OFFSET, 15304 },
-  { 0x1d6b2, G_UNICODE_NOT_PRESENT_OFFSET, 15307 },
-  { 0x1d6b3, G_UNICODE_NOT_PRESENT_OFFSET, 15310 },
-  { 0x1d6b4, G_UNICODE_NOT_PRESENT_OFFSET, 15313 },
-  { 0x1d6b5, G_UNICODE_NOT_PRESENT_OFFSET, 15316 },
-  { 0x1d6b6, G_UNICODE_NOT_PRESENT_OFFSET, 15319 },
+  { 0x1d6b0, G_UNICODE_NOT_PRESENT_OFFSET, 15480 },
+  { 0x1d6b1, G_UNICODE_NOT_PRESENT_OFFSET, 15483 },
+  { 0x1d6b2, G_UNICODE_NOT_PRESENT_OFFSET, 15486 },
+  { 0x1d6b3, G_UNICODE_NOT_PRESENT_OFFSET, 15489 },
+  { 0x1d6b4, G_UNICODE_NOT_PRESENT_OFFSET, 15492 },
+  { 0x1d6b5, G_UNICODE_NOT_PRESENT_OFFSET, 15495 },
+  { 0x1d6b6, G_UNICODE_NOT_PRESENT_OFFSET, 15498 },
   { 0x1d6b7, G_UNICODE_NOT_PRESENT_OFFSET, 5357 },
-  { 0x1d6b8, G_UNICODE_NOT_PRESENT_OFFSET, 15322 },
+  { 0x1d6b8, G_UNICODE_NOT_PRESENT_OFFSET, 15501 },
   { 0x1d6b9, G_UNICODE_NOT_PRESENT_OFFSET, 1402 },
   { 0x1d6ba, G_UNICODE_NOT_PRESENT_OFFSET, 1408 },
-  { 0x1d6bb, G_UNICODE_NOT_PRESENT_OFFSET, 15325 },
+  { 0x1d6bb, G_UNICODE_NOT_PRESENT_OFFSET, 15504 },
   { 0x1d6bc, G_UNICODE_NOT_PRESENT_OFFSET, 1374 },
-  { 0x1d6bd, G_UNICODE_NOT_PRESENT_OFFSET, 15328 },
-  { 0x1d6be, G_UNICODE_NOT_PRESENT_OFFSET, 15331 },
-  { 0x1d6bf, G_UNICODE_NOT_PRESENT_OFFSET, 15334 },
+  { 0x1d6bd, G_UNICODE_NOT_PRESENT_OFFSET, 15507 },
+  { 0x1d6be, G_UNICODE_NOT_PRESENT_OFFSET, 15510 },
+  { 0x1d6bf, G_UNICODE_NOT_PRESENT_OFFSET, 15513 },
   { 0x1d6c0, G_UNICODE_NOT_PRESENT_OFFSET, 5333 },
-  { 0x1d6c1, G_UNICODE_NOT_PRESENT_OFFSET, 15337 },
-  { 0x1d6c2, G_UNICODE_NOT_PRESENT_OFFSET, 15341 },
+  { 0x1d6c1, G_UNICODE_NOT_PRESENT_OFFSET, 15516 },
+  { 0x1d6c2, G_UNICODE_NOT_PRESENT_OFFSET, 15520 },
   { 0x1d6c3, G_UNICODE_NOT_PRESENT_OFFSET, 1368 },
   { 0x1d6c4, G_UNICODE_NOT_PRESENT_OFFSET, 2418 },
   { 0x1d6c5, G_UNICODE_NOT_PRESENT_OFFSET, 2421 },
   { 0x1d6c6, G_UNICODE_NOT_PRESENT_OFFSET, 1405 },
-  { 0x1d6c7, G_UNICODE_NOT_PRESENT_OFFSET, 15344 },
-  { 0x1d6c8, G_UNICODE_NOT_PRESENT_OFFSET, 15347 },
+  { 0x1d6c7, G_UNICODE_NOT_PRESENT_OFFSET, 15523 },
+  { 0x1d6c8, G_UNICODE_NOT_PRESENT_OFFSET, 15526 },
   { 0x1d6c9, G_UNICODE_NOT_PRESENT_OFFSET, 1371 },
   { 0x1d6ca, G_UNICODE_NOT_PRESENT_OFFSET, 4860 },
   { 0x1d6cb, G_UNICODE_NOT_PRESENT_OFFSET, 1393 },
-  { 0x1d6cc, G_UNICODE_NOT_PRESENT_OFFSET, 15350 },
+  { 0x1d6cc, G_UNICODE_NOT_PRESENT_OFFSET, 15529 },
   { 0x1d6cd, G_UNICODE_NOT_PRESENT_OFFSET, 20 },
-  { 0x1d6ce, G_UNICODE_NOT_PRESENT_OFFSET, 15353 },
-  { 0x1d6cf, G_UNICODE_NOT_PRESENT_OFFSET, 15356 },
-  { 0x1d6d0, G_UNICODE_NOT_PRESENT_OFFSET, 15359 },
+  { 0x1d6ce, G_UNICODE_NOT_PRESENT_OFFSET, 15532 },
+  { 0x1d6cf, G_UNICODE_NOT_PRESENT_OFFSET, 15535 },
+  { 0x1d6d0, G_UNICODE_NOT_PRESENT_OFFSET, 15538 },
   { 0x1d6d1, G_UNICODE_NOT_PRESENT_OFFSET, 1390 },
   { 0x1d6d2, G_UNICODE_NOT_PRESENT_OFFSET, 1396 },
   { 0x1d6d3, G_UNICODE_NOT_PRESENT_OFFSET, 1399 },
-  { 0x1d6d4, G_UNICODE_NOT_PRESENT_OFFSET, 15362 },
-  { 0x1d6d5, G_UNICODE_NOT_PRESENT_OFFSET, 15365 },
-  { 0x1d6d6, G_UNICODE_NOT_PRESENT_OFFSET, 15368 },
+  { 0x1d6d4, G_UNICODE_NOT_PRESENT_OFFSET, 15541 },
+  { 0x1d6d5, G_UNICODE_NOT_PRESENT_OFFSET, 15544 },
+  { 0x1d6d6, G_UNICODE_NOT_PRESENT_OFFSET, 15547 },
   { 0x1d6d7, G_UNICODE_NOT_PRESENT_OFFSET, 1387 },
   { 0x1d6d8, G_UNICODE_NOT_PRESENT_OFFSET, 2424 },
-  { 0x1d6d9, G_UNICODE_NOT_PRESENT_OFFSET, 15371 },
-  { 0x1d6da, G_UNICODE_NOT_PRESENT_OFFSET, 15374 },
-  { 0x1d6db, G_UNICODE_NOT_PRESENT_OFFSET, 15377 },
+  { 0x1d6d9, G_UNICODE_NOT_PRESENT_OFFSET, 15550 },
+  { 0x1d6da, G_UNICODE_NOT_PRESENT_OFFSET, 15553 },
+  { 0x1d6db, G_UNICODE_NOT_PRESENT_OFFSET, 15556 },
   { 0x1d6dc, G_UNICODE_NOT_PRESENT_OFFSET, 1405 },
   { 0x1d6dd, G_UNICODE_NOT_PRESENT_OFFSET, 1371 },
   { 0x1d6de, G_UNICODE_NOT_PRESENT_OFFSET, 1393 },
   { 0x1d6df, G_UNICODE_NOT_PRESENT_OFFSET, 1387 },
   { 0x1d6e0, G_UNICODE_NOT_PRESENT_OFFSET, 1396 },
   { 0x1d6e1, G_UNICODE_NOT_PRESENT_OFFSET, 1390 },
-  { 0x1d6e2, G_UNICODE_NOT_PRESENT_OFFSET, 15283 },
-  { 0x1d6e3, G_UNICODE_NOT_PRESENT_OFFSET, 15286 },
+  { 0x1d6e2, G_UNICODE_NOT_PRESENT_OFFSET, 15462 },
+  { 0x1d6e3, G_UNICODE_NOT_PRESENT_OFFSET, 15465 },
   { 0x1d6e4, G_UNICODE_NOT_PRESENT_OFFSET, 5354 },
-  { 0x1d6e5, G_UNICODE_NOT_PRESENT_OFFSET, 15289 },
-  { 0x1d6e6, G_UNICODE_NOT_PRESENT_OFFSET, 15292 },
-  { 0x1d6e7, G_UNICODE_NOT_PRESENT_OFFSET, 15295 },
-  { 0x1d6e8, G_UNICODE_NOT_PRESENT_OFFSET, 15298 },
+  { 0x1d6e5, G_UNICODE_NOT_PRESENT_OFFSET, 15468 },
+  { 0x1d6e6, G_UNICODE_NOT_PRESENT_OFFSET, 15471 },
+  { 0x1d6e7, G_UNICODE_NOT_PRESENT_OFFSET, 15474 },
+  { 0x1d6e8, G_UNICODE_NOT_PRESENT_OFFSET, 15477 },
   { 0x1d6e9, G_UNICODE_NOT_PRESENT_OFFSET, 1402 },
-  { 0x1d6ea, G_UNICODE_NOT_PRESENT_OFFSET, 15301 },
-  { 0x1d6eb, G_UNICODE_NOT_PRESENT_OFFSET, 15304 },
-  { 0x1d6ec, G_UNICODE_NOT_PRESENT_OFFSET, 15307 },
-  { 0x1d6ed, G_UNICODE_NOT_PRESENT_OFFSET, 15310 },
-  { 0x1d6ee, G_UNICODE_NOT_PRESENT_OFFSET, 15313 },
-  { 0x1d6ef, G_UNICODE_NOT_PRESENT_OFFSET, 15316 },
-  { 0x1d6f0, G_UNICODE_NOT_PRESENT_OFFSET, 15319 },
+  { 0x1d6ea, G_UNICODE_NOT_PRESENT_OFFSET, 15480 },
+  { 0x1d6eb, G_UNICODE_NOT_PRESENT_OFFSET, 15483 },
+  { 0x1d6ec, G_UNICODE_NOT_PRESENT_OFFSET, 15486 },
+  { 0x1d6ed, G_UNICODE_NOT_PRESENT_OFFSET, 15489 },
+  { 0x1d6ee, G_UNICODE_NOT_PRESENT_OFFSET, 15492 },
+  { 0x1d6ef, G_UNICODE_NOT_PRESENT_OFFSET, 15495 },
+  { 0x1d6f0, G_UNICODE_NOT_PRESENT_OFFSET, 15498 },
   { 0x1d6f1, G_UNICODE_NOT_PRESENT_OFFSET, 5357 },
-  { 0x1d6f2, G_UNICODE_NOT_PRESENT_OFFSET, 15322 },
+  { 0x1d6f2, G_UNICODE_NOT_PRESENT_OFFSET, 15501 },
   { 0x1d6f3, G_UNICODE_NOT_PRESENT_OFFSET, 1402 },
   { 0x1d6f4, G_UNICODE_NOT_PRESENT_OFFSET, 1408 },
-  { 0x1d6f5, G_UNICODE_NOT_PRESENT_OFFSET, 15325 },
+  { 0x1d6f5, G_UNICODE_NOT_PRESENT_OFFSET, 15504 },
   { 0x1d6f6, G_UNICODE_NOT_PRESENT_OFFSET, 1374 },
-  { 0x1d6f7, G_UNICODE_NOT_PRESENT_OFFSET, 15328 },
-  { 0x1d6f8, G_UNICODE_NOT_PRESENT_OFFSET, 15331 },
-  { 0x1d6f9, G_UNICODE_NOT_PRESENT_OFFSET, 15334 },
+  { 0x1d6f7, G_UNICODE_NOT_PRESENT_OFFSET, 15507 },
+  { 0x1d6f8, G_UNICODE_NOT_PRESENT_OFFSET, 15510 },
+  { 0x1d6f9, G_UNICODE_NOT_PRESENT_OFFSET, 15513 },
   { 0x1d6fa, G_UNICODE_NOT_PRESENT_OFFSET, 5333 },
-  { 0x1d6fb, G_UNICODE_NOT_PRESENT_OFFSET, 15337 },
-  { 0x1d6fc, G_UNICODE_NOT_PRESENT_OFFSET, 15341 },
+  { 0x1d6fb, G_UNICODE_NOT_PRESENT_OFFSET, 15516 },
+  { 0x1d6fc, G_UNICODE_NOT_PRESENT_OFFSET, 15520 },
   { 0x1d6fd, G_UNICODE_NOT_PRESENT_OFFSET, 1368 },
   { 0x1d6fe, G_UNICODE_NOT_PRESENT_OFFSET, 2418 },
   { 0x1d6ff, G_UNICODE_NOT_PRESENT_OFFSET, 2421 },
   { 0x1d700, G_UNICODE_NOT_PRESENT_OFFSET, 1405 },
-  { 0x1d701, G_UNICODE_NOT_PRESENT_OFFSET, 15344 },
-  { 0x1d702, G_UNICODE_NOT_PRESENT_OFFSET, 15347 },
+  { 0x1d701, G_UNICODE_NOT_PRESENT_OFFSET, 15523 },
+  { 0x1d702, G_UNICODE_NOT_PRESENT_OFFSET, 15526 },
   { 0x1d703, G_UNICODE_NOT_PRESENT_OFFSET, 1371 },
   { 0x1d704, G_UNICODE_NOT_PRESENT_OFFSET, 4860 },
   { 0x1d705, G_UNICODE_NOT_PRESENT_OFFSET, 1393 },
-  { 0x1d706, G_UNICODE_NOT_PRESENT_OFFSET, 15350 },
+  { 0x1d706, G_UNICODE_NOT_PRESENT_OFFSET, 15529 },
   { 0x1d707, G_UNICODE_NOT_PRESENT_OFFSET, 20 },
-  { 0x1d708, G_UNICODE_NOT_PRESENT_OFFSET, 15353 },
-  { 0x1d709, G_UNICODE_NOT_PRESENT_OFFSET, 15356 },
-  { 0x1d70a, G_UNICODE_NOT_PRESENT_OFFSET, 15359 },
+  { 0x1d708, G_UNICODE_NOT_PRESENT_OFFSET, 15532 },
+  { 0x1d709, G_UNICODE_NOT_PRESENT_OFFSET, 15535 },
+  { 0x1d70a, G_UNICODE_NOT_PRESENT_OFFSET, 15538 },
   { 0x1d70b, G_UNICODE_NOT_PRESENT_OFFSET, 1390 },
   { 0x1d70c, G_UNICODE_NOT_PRESENT_OFFSET, 1396 },
   { 0x1d70d, G_UNICODE_NOT_PRESENT_OFFSET, 1399 },
-  { 0x1d70e, G_UNICODE_NOT_PRESENT_OFFSET, 15362 },
-  { 0x1d70f, G_UNICODE_NOT_PRESENT_OFFSET, 15365 },
-  { 0x1d710, G_UNICODE_NOT_PRESENT_OFFSET, 15368 },
+  { 0x1d70e, G_UNICODE_NOT_PRESENT_OFFSET, 15541 },
+  { 0x1d70f, G_UNICODE_NOT_PRESENT_OFFSET, 15544 },
+  { 0x1d710, G_UNICODE_NOT_PRESENT_OFFSET, 15547 },
   { 0x1d711, G_UNICODE_NOT_PRESENT_OFFSET, 1387 },
   { 0x1d712, G_UNICODE_NOT_PRESENT_OFFSET, 2424 },
-  { 0x1d713, G_UNICODE_NOT_PRESENT_OFFSET, 15371 },
-  { 0x1d714, G_UNICODE_NOT_PRESENT_OFFSET, 15374 },
-  { 0x1d715, G_UNICODE_NOT_PRESENT_OFFSET, 15377 },
+  { 0x1d713, G_UNICODE_NOT_PRESENT_OFFSET, 15550 },
+  { 0x1d714, G_UNICODE_NOT_PRESENT_OFFSET, 15553 },
+  { 0x1d715, G_UNICODE_NOT_PRESENT_OFFSET, 15556 },
   { 0x1d716, G_UNICODE_NOT_PRESENT_OFFSET, 1405 },
   { 0x1d717, G_UNICODE_NOT_PRESENT_OFFSET, 1371 },
   { 0x1d718, G_UNICODE_NOT_PRESENT_OFFSET, 1393 },
   { 0x1d719, G_UNICODE_NOT_PRESENT_OFFSET, 1387 },
   { 0x1d71a, G_UNICODE_NOT_PRESENT_OFFSET, 1396 },
   { 0x1d71b, G_UNICODE_NOT_PRESENT_OFFSET, 1390 },
-  { 0x1d71c, G_UNICODE_NOT_PRESENT_OFFSET, 15283 },
-  { 0x1d71d, G_UNICODE_NOT_PRESENT_OFFSET, 15286 },
+  { 0x1d71c, G_UNICODE_NOT_PRESENT_OFFSET, 15462 },
+  { 0x1d71d, G_UNICODE_NOT_PRESENT_OFFSET, 15465 },
   { 0x1d71e, G_UNICODE_NOT_PRESENT_OFFSET, 5354 },
-  { 0x1d71f, G_UNICODE_NOT_PRESENT_OFFSET, 15289 },
-  { 0x1d720, G_UNICODE_NOT_PRESENT_OFFSET, 15292 },
-  { 0x1d721, G_UNICODE_NOT_PRESENT_OFFSET, 15295 },
-  { 0x1d722, G_UNICODE_NOT_PRESENT_OFFSET, 15298 },
+  { 0x1d71f, G_UNICODE_NOT_PRESENT_OFFSET, 15468 },
+  { 0x1d720, G_UNICODE_NOT_PRESENT_OFFSET, 15471 },
+  { 0x1d721, G_UNICODE_NOT_PRESENT_OFFSET, 15474 },
+  { 0x1d722, G_UNICODE_NOT_PRESENT_OFFSET, 15477 },
   { 0x1d723, G_UNICODE_NOT_PRESENT_OFFSET, 1402 },
-  { 0x1d724, G_UNICODE_NOT_PRESENT_OFFSET, 15301 },
-  { 0x1d725, G_UNICODE_NOT_PRESENT_OFFSET, 15304 },
-  { 0x1d726, G_UNICODE_NOT_PRESENT_OFFSET, 15307 },
-  { 0x1d727, G_UNICODE_NOT_PRESENT_OFFSET, 15310 },
-  { 0x1d728, G_UNICODE_NOT_PRESENT_OFFSET, 15313 },
-  { 0x1d729, G_UNICODE_NOT_PRESENT_OFFSET, 15316 },
-  { 0x1d72a, G_UNICODE_NOT_PRESENT_OFFSET, 15319 },
+  { 0x1d724, G_UNICODE_NOT_PRESENT_OFFSET, 15480 },
+  { 0x1d725, G_UNICODE_NOT_PRESENT_OFFSET, 15483 },
+  { 0x1d726, G_UNICODE_NOT_PRESENT_OFFSET, 15486 },
+  { 0x1d727, G_UNICODE_NOT_PRESENT_OFFSET, 15489 },
+  { 0x1d728, G_UNICODE_NOT_PRESENT_OFFSET, 15492 },
+  { 0x1d729, G_UNICODE_NOT_PRESENT_OFFSET, 15495 },
+  { 0x1d72a, G_UNICODE_NOT_PRESENT_OFFSET, 15498 },
   { 0x1d72b, G_UNICODE_NOT_PRESENT_OFFSET, 5357 },
-  { 0x1d72c, G_UNICODE_NOT_PRESENT_OFFSET, 15322 },
+  { 0x1d72c, G_UNICODE_NOT_PRESENT_OFFSET, 15501 },
   { 0x1d72d, G_UNICODE_NOT_PRESENT_OFFSET, 1402 },
   { 0x1d72e, G_UNICODE_NOT_PRESENT_OFFSET, 1408 },
-  { 0x1d72f, G_UNICODE_NOT_PRESENT_OFFSET, 15325 },
+  { 0x1d72f, G_UNICODE_NOT_PRESENT_OFFSET, 15504 },
   { 0x1d730, G_UNICODE_NOT_PRESENT_OFFSET, 1374 },
-  { 0x1d731, G_UNICODE_NOT_PRESENT_OFFSET, 15328 },
-  { 0x1d732, G_UNICODE_NOT_PRESENT_OFFSET, 15331 },
-  { 0x1d733, G_UNICODE_NOT_PRESENT_OFFSET, 15334 },
+  { 0x1d731, G_UNICODE_NOT_PRESENT_OFFSET, 15507 },
+  { 0x1d732, G_UNICODE_NOT_PRESENT_OFFSET, 15510 },
+  { 0x1d733, G_UNICODE_NOT_PRESENT_OFFSET, 15513 },
   { 0x1d734, G_UNICODE_NOT_PRESENT_OFFSET, 5333 },
-  { 0x1d735, G_UNICODE_NOT_PRESENT_OFFSET, 15337 },
-  { 0x1d736, G_UNICODE_NOT_PRESENT_OFFSET, 15341 },
+  { 0x1d735, G_UNICODE_NOT_PRESENT_OFFSET, 15516 },
+  { 0x1d736, G_UNICODE_NOT_PRESENT_OFFSET, 15520 },
   { 0x1d737, G_UNICODE_NOT_PRESENT_OFFSET, 1368 },
   { 0x1d738, G_UNICODE_NOT_PRESENT_OFFSET, 2418 },
   { 0x1d739, G_UNICODE_NOT_PRESENT_OFFSET, 2421 },
   { 0x1d73a, G_UNICODE_NOT_PRESENT_OFFSET, 1405 },
-  { 0x1d73b, G_UNICODE_NOT_PRESENT_OFFSET, 15344 },
-  { 0x1d73c, G_UNICODE_NOT_PRESENT_OFFSET, 15347 },
+  { 0x1d73b, G_UNICODE_NOT_PRESENT_OFFSET, 15523 },
+  { 0x1d73c, G_UNICODE_NOT_PRESENT_OFFSET, 15526 },
   { 0x1d73d, G_UNICODE_NOT_PRESENT_OFFSET, 1371 },
   { 0x1d73e, G_UNICODE_NOT_PRESENT_OFFSET, 4860 },
   { 0x1d73f, G_UNICODE_NOT_PRESENT_OFFSET, 1393 },
-  { 0x1d740, G_UNICODE_NOT_PRESENT_OFFSET, 15350 },
+  { 0x1d740, G_UNICODE_NOT_PRESENT_OFFSET, 15529 },
   { 0x1d741, G_UNICODE_NOT_PRESENT_OFFSET, 20 },
-  { 0x1d742, G_UNICODE_NOT_PRESENT_OFFSET, 15353 },
-  { 0x1d743, G_UNICODE_NOT_PRESENT_OFFSET, 15356 },
-  { 0x1d744, G_UNICODE_NOT_PRESENT_OFFSET, 15359 },
+  { 0x1d742, G_UNICODE_NOT_PRESENT_OFFSET, 15532 },
+  { 0x1d743, G_UNICODE_NOT_PRESENT_OFFSET, 15535 },
+  { 0x1d744, G_UNICODE_NOT_PRESENT_OFFSET, 15538 },
   { 0x1d745, G_UNICODE_NOT_PRESENT_OFFSET, 1390 },
   { 0x1d746, G_UNICODE_NOT_PRESENT_OFFSET, 1396 },
   { 0x1d747, G_UNICODE_NOT_PRESENT_OFFSET, 1399 },
-  { 0x1d748, G_UNICODE_NOT_PRESENT_OFFSET, 15362 },
-  { 0x1d749, G_UNICODE_NOT_PRESENT_OFFSET, 15365 },
-  { 0x1d74a, G_UNICODE_NOT_PRESENT_OFFSET, 15368 },
+  { 0x1d748, G_UNICODE_NOT_PRESENT_OFFSET, 15541 },
+  { 0x1d749, G_UNICODE_NOT_PRESENT_OFFSET, 15544 },
+  { 0x1d74a, G_UNICODE_NOT_PRESENT_OFFSET, 15547 },
   { 0x1d74b, G_UNICODE_NOT_PRESENT_OFFSET, 1387 },
   { 0x1d74c, G_UNICODE_NOT_PRESENT_OFFSET, 2424 },
-  { 0x1d74d, G_UNICODE_NOT_PRESENT_OFFSET, 15371 },
-  { 0x1d74e, G_UNICODE_NOT_PRESENT_OFFSET, 15374 },
-  { 0x1d74f, G_UNICODE_NOT_PRESENT_OFFSET, 15377 },
+  { 0x1d74d, G_UNICODE_NOT_PRESENT_OFFSET, 15550 },
+  { 0x1d74e, G_UNICODE_NOT_PRESENT_OFFSET, 15553 },
+  { 0x1d74f, G_UNICODE_NOT_PRESENT_OFFSET, 15556 },
   { 0x1d750, G_UNICODE_NOT_PRESENT_OFFSET, 1405 },
   { 0x1d751, G_UNICODE_NOT_PRESENT_OFFSET, 1371 },
   { 0x1d752, G_UNICODE_NOT_PRESENT_OFFSET, 1393 },
   { 0x1d753, G_UNICODE_NOT_PRESENT_OFFSET, 1387 },
   { 0x1d754, G_UNICODE_NOT_PRESENT_OFFSET, 1396 },
   { 0x1d755, G_UNICODE_NOT_PRESENT_OFFSET, 1390 },
-  { 0x1d756, G_UNICODE_NOT_PRESENT_OFFSET, 15283 },
-  { 0x1d757, G_UNICODE_NOT_PRESENT_OFFSET, 15286 },
+  { 0x1d756, G_UNICODE_NOT_PRESENT_OFFSET, 15462 },
+  { 0x1d757, G_UNICODE_NOT_PRESENT_OFFSET, 15465 },
   { 0x1d758, G_UNICODE_NOT_PRESENT_OFFSET, 5354 },
-  { 0x1d759, G_UNICODE_NOT_PRESENT_OFFSET, 15289 },
-  { 0x1d75a, G_UNICODE_NOT_PRESENT_OFFSET, 15292 },
-  { 0x1d75b, G_UNICODE_NOT_PRESENT_OFFSET, 15295 },
-  { 0x1d75c, G_UNICODE_NOT_PRESENT_OFFSET, 15298 },
+  { 0x1d759, G_UNICODE_NOT_PRESENT_OFFSET, 15468 },
+  { 0x1d75a, G_UNICODE_NOT_PRESENT_OFFSET, 15471 },
+  { 0x1d75b, G_UNICODE_NOT_PRESENT_OFFSET, 15474 },
+  { 0x1d75c, G_UNICODE_NOT_PRESENT_OFFSET, 15477 },
   { 0x1d75d, G_UNICODE_NOT_PRESENT_OFFSET, 1402 },
-  { 0x1d75e, G_UNICODE_NOT_PRESENT_OFFSET, 15301 },
-  { 0x1d75f, G_UNICODE_NOT_PRESENT_OFFSET, 15304 },
-  { 0x1d760, G_UNICODE_NOT_PRESENT_OFFSET, 15307 },
-  { 0x1d761, G_UNICODE_NOT_PRESENT_OFFSET, 15310 },
-  { 0x1d762, G_UNICODE_NOT_PRESENT_OFFSET, 15313 },
-  { 0x1d763, G_UNICODE_NOT_PRESENT_OFFSET, 15316 },
-  { 0x1d764, G_UNICODE_NOT_PRESENT_OFFSET, 15319 },
+  { 0x1d75e, G_UNICODE_NOT_PRESENT_OFFSET, 15480 },
+  { 0x1d75f, G_UNICODE_NOT_PRESENT_OFFSET, 15483 },
+  { 0x1d760, G_UNICODE_NOT_PRESENT_OFFSET, 15486 },
+  { 0x1d761, G_UNICODE_NOT_PRESENT_OFFSET, 15489 },
+  { 0x1d762, G_UNICODE_NOT_PRESENT_OFFSET, 15492 },
+  { 0x1d763, G_UNICODE_NOT_PRESENT_OFFSET, 15495 },
+  { 0x1d764, G_UNICODE_NOT_PRESENT_OFFSET, 15498 },
   { 0x1d765, G_UNICODE_NOT_PRESENT_OFFSET, 5357 },
-  { 0x1d766, G_UNICODE_NOT_PRESENT_OFFSET, 15322 },
+  { 0x1d766, G_UNICODE_NOT_PRESENT_OFFSET, 15501 },
   { 0x1d767, G_UNICODE_NOT_PRESENT_OFFSET, 1402 },
   { 0x1d768, G_UNICODE_NOT_PRESENT_OFFSET, 1408 },
-  { 0x1d769, G_UNICODE_NOT_PRESENT_OFFSET, 15325 },
+  { 0x1d769, G_UNICODE_NOT_PRESENT_OFFSET, 15504 },
   { 0x1d76a, G_UNICODE_NOT_PRESENT_OFFSET, 1374 },
-  { 0x1d76b, G_UNICODE_NOT_PRESENT_OFFSET, 15328 },
-  { 0x1d76c, G_UNICODE_NOT_PRESENT_OFFSET, 15331 },
-  { 0x1d76d, G_UNICODE_NOT_PRESENT_OFFSET, 15334 },
+  { 0x1d76b, G_UNICODE_NOT_PRESENT_OFFSET, 15507 },
+  { 0x1d76c, G_UNICODE_NOT_PRESENT_OFFSET, 15510 },
+  { 0x1d76d, G_UNICODE_NOT_PRESENT_OFFSET, 15513 },
   { 0x1d76e, G_UNICODE_NOT_PRESENT_OFFSET, 5333 },
-  { 0x1d76f, G_UNICODE_NOT_PRESENT_OFFSET, 15337 },
-  { 0x1d770, G_UNICODE_NOT_PRESENT_OFFSET, 15341 },
+  { 0x1d76f, G_UNICODE_NOT_PRESENT_OFFSET, 15516 },
+  { 0x1d770, G_UNICODE_NOT_PRESENT_OFFSET, 15520 },
   { 0x1d771, G_UNICODE_NOT_PRESENT_OFFSET, 1368 },
   { 0x1d772, G_UNICODE_NOT_PRESENT_OFFSET, 2418 },
   { 0x1d773, G_UNICODE_NOT_PRESENT_OFFSET, 2421 },
   { 0x1d774, G_UNICODE_NOT_PRESENT_OFFSET, 1405 },
-  { 0x1d775, G_UNICODE_NOT_PRESENT_OFFSET, 15344 },
-  { 0x1d776, G_UNICODE_NOT_PRESENT_OFFSET, 15347 },
+  { 0x1d775, G_UNICODE_NOT_PRESENT_OFFSET, 15523 },
+  { 0x1d776, G_UNICODE_NOT_PRESENT_OFFSET, 15526 },
   { 0x1d777, G_UNICODE_NOT_PRESENT_OFFSET, 1371 },
   { 0x1d778, G_UNICODE_NOT_PRESENT_OFFSET, 4860 },
   { 0x1d779, G_UNICODE_NOT_PRESENT_OFFSET, 1393 },
-  { 0x1d77a, G_UNICODE_NOT_PRESENT_OFFSET, 15350 },
+  { 0x1d77a, G_UNICODE_NOT_PRESENT_OFFSET, 15529 },
   { 0x1d77b, G_UNICODE_NOT_PRESENT_OFFSET, 20 },
-  { 0x1d77c, G_UNICODE_NOT_PRESENT_OFFSET, 15353 },
-  { 0x1d77d, G_UNICODE_NOT_PRESENT_OFFSET, 15356 },
-  { 0x1d77e, G_UNICODE_NOT_PRESENT_OFFSET, 15359 },
+  { 0x1d77c, G_UNICODE_NOT_PRESENT_OFFSET, 15532 },
+  { 0x1d77d, G_UNICODE_NOT_PRESENT_OFFSET, 15535 },
+  { 0x1d77e, G_UNICODE_NOT_PRESENT_OFFSET, 15538 },
   { 0x1d77f, G_UNICODE_NOT_PRESENT_OFFSET, 1390 },
   { 0x1d780, G_UNICODE_NOT_PRESENT_OFFSET, 1396 },
   { 0x1d781, G_UNICODE_NOT_PRESENT_OFFSET, 1399 },
-  { 0x1d782, G_UNICODE_NOT_PRESENT_OFFSET, 15362 },
-  { 0x1d783, G_UNICODE_NOT_PRESENT_OFFSET, 15365 },
-  { 0x1d784, G_UNICODE_NOT_PRESENT_OFFSET, 15368 },
+  { 0x1d782, G_UNICODE_NOT_PRESENT_OFFSET, 15541 },
+  { 0x1d783, G_UNICODE_NOT_PRESENT_OFFSET, 15544 },
+  { 0x1d784, G_UNICODE_NOT_PRESENT_OFFSET, 15547 },
   { 0x1d785, G_UNICODE_NOT_PRESENT_OFFSET, 1387 },
   { 0x1d786, G_UNICODE_NOT_PRESENT_OFFSET, 2424 },
-  { 0x1d787, G_UNICODE_NOT_PRESENT_OFFSET, 15371 },
-  { 0x1d788, G_UNICODE_NOT_PRESENT_OFFSET, 15374 },
-  { 0x1d789, G_UNICODE_NOT_PRESENT_OFFSET, 15377 },
+  { 0x1d787, G_UNICODE_NOT_PRESENT_OFFSET, 15550 },
+  { 0x1d788, G_UNICODE_NOT_PRESENT_OFFSET, 15553 },
+  { 0x1d789, G_UNICODE_NOT_PRESENT_OFFSET, 15556 },
   { 0x1d78a, G_UNICODE_NOT_PRESENT_OFFSET, 1405 },
   { 0x1d78b, G_UNICODE_NOT_PRESENT_OFFSET, 1371 },
   { 0x1d78c, G_UNICODE_NOT_PRESENT_OFFSET, 1393 },
   { 0x1d78d, G_UNICODE_NOT_PRESENT_OFFSET, 1387 },
   { 0x1d78e, G_UNICODE_NOT_PRESENT_OFFSET, 1396 },
   { 0x1d78f, G_UNICODE_NOT_PRESENT_OFFSET, 1390 },
-  { 0x1d790, G_UNICODE_NOT_PRESENT_OFFSET, 15283 },
-  { 0x1d791, G_UNICODE_NOT_PRESENT_OFFSET, 15286 },
+  { 0x1d790, G_UNICODE_NOT_PRESENT_OFFSET, 15462 },
+  { 0x1d791, G_UNICODE_NOT_PRESENT_OFFSET, 15465 },
   { 0x1d792, G_UNICODE_NOT_PRESENT_OFFSET, 5354 },
-  { 0x1d793, G_UNICODE_NOT_PRESENT_OFFSET, 15289 },
-  { 0x1d794, G_UNICODE_NOT_PRESENT_OFFSET, 15292 },
-  { 0x1d795, G_UNICODE_NOT_PRESENT_OFFSET, 15295 },
-  { 0x1d796, G_UNICODE_NOT_PRESENT_OFFSET, 15298 },
+  { 0x1d793, G_UNICODE_NOT_PRESENT_OFFSET, 15468 },
+  { 0x1d794, G_UNICODE_NOT_PRESENT_OFFSET, 15471 },
+  { 0x1d795, G_UNICODE_NOT_PRESENT_OFFSET, 15474 },
+  { 0x1d796, G_UNICODE_NOT_PRESENT_OFFSET, 15477 },
   { 0x1d797, G_UNICODE_NOT_PRESENT_OFFSET, 1402 },
-  { 0x1d798, G_UNICODE_NOT_PRESENT_OFFSET, 15301 },
-  { 0x1d799, G_UNICODE_NOT_PRESENT_OFFSET, 15304 },
-  { 0x1d79a, G_UNICODE_NOT_PRESENT_OFFSET, 15307 },
-  { 0x1d79b, G_UNICODE_NOT_PRESENT_OFFSET, 15310 },
-  { 0x1d79c, G_UNICODE_NOT_PRESENT_OFFSET, 15313 },
-  { 0x1d79d, G_UNICODE_NOT_PRESENT_OFFSET, 15316 },
-  { 0x1d79e, G_UNICODE_NOT_PRESENT_OFFSET, 15319 },
+  { 0x1d798, G_UNICODE_NOT_PRESENT_OFFSET, 15480 },
+  { 0x1d799, G_UNICODE_NOT_PRESENT_OFFSET, 15483 },
+  { 0x1d79a, G_UNICODE_NOT_PRESENT_OFFSET, 15486 },
+  { 0x1d79b, G_UNICODE_NOT_PRESENT_OFFSET, 15489 },
+  { 0x1d79c, G_UNICODE_NOT_PRESENT_OFFSET, 15492 },
+  { 0x1d79d, G_UNICODE_NOT_PRESENT_OFFSET, 15495 },
+  { 0x1d79e, G_UNICODE_NOT_PRESENT_OFFSET, 15498 },
   { 0x1d79f, G_UNICODE_NOT_PRESENT_OFFSET, 5357 },
-  { 0x1d7a0, G_UNICODE_NOT_PRESENT_OFFSET, 15322 },
+  { 0x1d7a0, G_UNICODE_NOT_PRESENT_OFFSET, 15501 },
   { 0x1d7a1, G_UNICODE_NOT_PRESENT_OFFSET, 1402 },
   { 0x1d7a2, G_UNICODE_NOT_PRESENT_OFFSET, 1408 },
-  { 0x1d7a3, G_UNICODE_NOT_PRESENT_OFFSET, 15325 },
+  { 0x1d7a3, G_UNICODE_NOT_PRESENT_OFFSET, 15504 },
   { 0x1d7a4, G_UNICODE_NOT_PRESENT_OFFSET, 1374 },
-  { 0x1d7a5, G_UNICODE_NOT_PRESENT_OFFSET, 15328 },
-  { 0x1d7a6, G_UNICODE_NOT_PRESENT_OFFSET, 15331 },
-  { 0x1d7a7, G_UNICODE_NOT_PRESENT_OFFSET, 15334 },
+  { 0x1d7a5, G_UNICODE_NOT_PRESENT_OFFSET, 15507 },
+  { 0x1d7a6, G_UNICODE_NOT_PRESENT_OFFSET, 15510 },
+  { 0x1d7a7, G_UNICODE_NOT_PRESENT_OFFSET, 15513 },
   { 0x1d7a8, G_UNICODE_NOT_PRESENT_OFFSET, 5333 },
-  { 0x1d7a9, G_UNICODE_NOT_PRESENT_OFFSET, 15337 },
-  { 0x1d7aa, G_UNICODE_NOT_PRESENT_OFFSET, 15341 },
+  { 0x1d7a9, G_UNICODE_NOT_PRESENT_OFFSET, 15516 },
+  { 0x1d7aa, G_UNICODE_NOT_PRESENT_OFFSET, 15520 },
   { 0x1d7ab, G_UNICODE_NOT_PRESENT_OFFSET, 1368 },
   { 0x1d7ac, G_UNICODE_NOT_PRESENT_OFFSET, 2418 },
   { 0x1d7ad, G_UNICODE_NOT_PRESENT_OFFSET, 2421 },
   { 0x1d7ae, G_UNICODE_NOT_PRESENT_OFFSET, 1405 },
-  { 0x1d7af, G_UNICODE_NOT_PRESENT_OFFSET, 15344 },
-  { 0x1d7b0, G_UNICODE_NOT_PRESENT_OFFSET, 15347 },
+  { 0x1d7af, G_UNICODE_NOT_PRESENT_OFFSET, 15523 },
+  { 0x1d7b0, G_UNICODE_NOT_PRESENT_OFFSET, 15526 },
   { 0x1d7b1, G_UNICODE_NOT_PRESENT_OFFSET, 1371 },
   { 0x1d7b2, G_UNICODE_NOT_PRESENT_OFFSET, 4860 },
   { 0x1d7b3, G_UNICODE_NOT_PRESENT_OFFSET, 1393 },
-  { 0x1d7b4, G_UNICODE_NOT_PRESENT_OFFSET, 15350 },
+  { 0x1d7b4, G_UNICODE_NOT_PRESENT_OFFSET, 15529 },
   { 0x1d7b5, G_UNICODE_NOT_PRESENT_OFFSET, 20 },
-  { 0x1d7b6, G_UNICODE_NOT_PRESENT_OFFSET, 15353 },
-  { 0x1d7b7, G_UNICODE_NOT_PRESENT_OFFSET, 15356 },
-  { 0x1d7b8, G_UNICODE_NOT_PRESENT_OFFSET, 15359 },
+  { 0x1d7b6, G_UNICODE_NOT_PRESENT_OFFSET, 15532 },
+  { 0x1d7b7, G_UNICODE_NOT_PRESENT_OFFSET, 15535 },
+  { 0x1d7b8, G_UNICODE_NOT_PRESENT_OFFSET, 15538 },
   { 0x1d7b9, G_UNICODE_NOT_PRESENT_OFFSET, 1390 },
   { 0x1d7ba, G_UNICODE_NOT_PRESENT_OFFSET, 1396 },
   { 0x1d7bb, G_UNICODE_NOT_PRESENT_OFFSET, 1399 },
-  { 0x1d7bc, G_UNICODE_NOT_PRESENT_OFFSET, 15362 },
-  { 0x1d7bd, G_UNICODE_NOT_PRESENT_OFFSET, 15365 },
-  { 0x1d7be, G_UNICODE_NOT_PRESENT_OFFSET, 15368 },
+  { 0x1d7bc, G_UNICODE_NOT_PRESENT_OFFSET, 15541 },
+  { 0x1d7bd, G_UNICODE_NOT_PRESENT_OFFSET, 15544 },
+  { 0x1d7be, G_UNICODE_NOT_PRESENT_OFFSET, 15547 },
   { 0x1d7bf, G_UNICODE_NOT_PRESENT_OFFSET, 1387 },
   { 0x1d7c0, G_UNICODE_NOT_PRESENT_OFFSET, 2424 },
-  { 0x1d7c1, G_UNICODE_NOT_PRESENT_OFFSET, 15371 },
-  { 0x1d7c2, G_UNICODE_NOT_PRESENT_OFFSET, 15374 },
-  { 0x1d7c3, G_UNICODE_NOT_PRESENT_OFFSET, 15377 },
+  { 0x1d7c1, G_UNICODE_NOT_PRESENT_OFFSET, 15550 },
+  { 0x1d7c2, G_UNICODE_NOT_PRESENT_OFFSET, 15553 },
+  { 0x1d7c3, G_UNICODE_NOT_PRESENT_OFFSET, 15556 },
   { 0x1d7c4, G_UNICODE_NOT_PRESENT_OFFSET, 1405 },
   { 0x1d7c5, G_UNICODE_NOT_PRESENT_OFFSET, 1371 },
   { 0x1d7c6, G_UNICODE_NOT_PRESENT_OFFSET, 1393 },
   { 0x1d7c7, G_UNICODE_NOT_PRESENT_OFFSET, 1387 },
   { 0x1d7c8, G_UNICODE_NOT_PRESENT_OFFSET, 1396 },
   { 0x1d7c9, G_UNICODE_NOT_PRESENT_OFFSET, 1390 },
-  { 0x1d7ca, G_UNICODE_NOT_PRESENT_OFFSET, 15381 },
-  { 0x1d7cb, G_UNICODE_NOT_PRESENT_OFFSET, 15384 },
+  { 0x1d7ca, G_UNICODE_NOT_PRESENT_OFFSET, 15560 },
+  { 0x1d7cb, G_UNICODE_NOT_PRESENT_OFFSET, 15563 },
   { 0x1d7ce, G_UNICODE_NOT_PRESENT_OFFSET, 5253 },
   { 0x1d7cf, G_UNICODE_NOT_PRESENT_OFFSET, 27 },
   { 0x1d7d0, G_UNICODE_NOT_PRESENT_OFFSET, 12 },
@@ -7373,10 +7433,10 @@ static const decomposition decomp_table[] =
   { 0x1ee19, G_UNICODE_NOT_PRESENT_OFFSET, 14816 },
   { 0x1ee1a, G_UNICODE_NOT_PRESENT_OFFSET, 14822 },
   { 0x1ee1b, G_UNICODE_NOT_PRESENT_OFFSET, 14828 },
-  { 0x1ee1c, G_UNICODE_NOT_PRESENT_OFFSET, 15387 },
+  { 0x1ee1c, G_UNICODE_NOT_PRESENT_OFFSET, 15566 },
   { 0x1ee1d, G_UNICODE_NOT_PRESENT_OFFSET, 12862 },
-  { 0x1ee1e, G_UNICODE_NOT_PRESENT_OFFSET, 15390 },
-  { 0x1ee1f, G_UNICODE_NOT_PRESENT_OFFSET, 15393 },
+  { 0x1ee1e, G_UNICODE_NOT_PRESENT_OFFSET, 15569 },
+  { 0x1ee1f, G_UNICODE_NOT_PRESENT_OFFSET, 15572 },
   { 0x1ee21, G_UNICODE_NOT_PRESENT_OFFSET, 14774 },
   { 0x1ee22, G_UNICODE_NOT_PRESENT_OFFSET, 14786 },
   { 0x1ee24, G_UNICODE_NOT_PRESENT_OFFSET, 14849 },
@@ -7411,7 +7471,7 @@ static const decomposition decomp_table[] =
   { 0x1ee59, G_UNICODE_NOT_PRESENT_OFFSET, 14816 },
   { 0x1ee5b, G_UNICODE_NOT_PRESENT_OFFSET, 14828 },
   { 0x1ee5d, G_UNICODE_NOT_PRESENT_OFFSET, 12862 },
-  { 0x1ee5f, G_UNICODE_NOT_PRESENT_OFFSET, 15393 },
+  { 0x1ee5f, G_UNICODE_NOT_PRESENT_OFFSET, 15572 },
   { 0x1ee61, G_UNICODE_NOT_PRESENT_OFFSET, 14774 },
   { 0x1ee62, G_UNICODE_NOT_PRESENT_OFFSET, 14786 },
   { 0x1ee64, G_UNICODE_NOT_PRESENT_OFFSET, 14849 },
@@ -7433,8 +7493,8 @@ static const decomposition decomp_table[] =
   { 0x1ee79, G_UNICODE_NOT_PRESENT_OFFSET, 14816 },
   { 0x1ee7a, G_UNICODE_NOT_PRESENT_OFFSET, 14822 },
   { 0x1ee7b, G_UNICODE_NOT_PRESENT_OFFSET, 14828 },
-  { 0x1ee7c, G_UNICODE_NOT_PRESENT_OFFSET, 15387 },
-  { 0x1ee7e, G_UNICODE_NOT_PRESENT_OFFSET, 15390 },
+  { 0x1ee7c, G_UNICODE_NOT_PRESENT_OFFSET, 15566 },
+  { 0x1ee7e, G_UNICODE_NOT_PRESENT_OFFSET, 15569 },
   { 0x1ee80, G_UNICODE_NOT_PRESENT_OFFSET, 14771 },
   { 0x1ee81, G_UNICODE_NOT_PRESENT_OFFSET, 14774 },
   { 0x1ee82, G_UNICODE_NOT_PRESENT_OFFSET, 14786 },
@@ -7487,48 +7547,48 @@ static const decomposition decomp_table[] =
   { 0x1eeb9, G_UNICODE_NOT_PRESENT_OFFSET, 14816 },
   { 0x1eeba, G_UNICODE_NOT_PRESENT_OFFSET, 14822 },
   { 0x1eebb, G_UNICODE_NOT_PRESENT_OFFSET, 14828 },
-  { 0x1f100, G_UNICODE_NOT_PRESENT_OFFSET, 15396 },
-  { 0x1f101, G_UNICODE_NOT_PRESENT_OFFSET, 15399 },
-  { 0x1f102, G_UNICODE_NOT_PRESENT_OFFSET, 15402 },
-  { 0x1f103, G_UNICODE_NOT_PRESENT_OFFSET, 15405 },
-  { 0x1f104, G_UNICODE_NOT_PRESENT_OFFSET, 15408 },
-  { 0x1f105, G_UNICODE_NOT_PRESENT_OFFSET, 15411 },
-  { 0x1f106, G_UNICODE_NOT_PRESENT_OFFSET, 15414 },
-  { 0x1f107, G_UNICODE_NOT_PRESENT_OFFSET, 15417 },
-  { 0x1f108, G_UNICODE_NOT_PRESENT_OFFSET, 15420 },
-  { 0x1f109, G_UNICODE_NOT_PRESENT_OFFSET, 15423 },
-  { 0x1f10a, G_UNICODE_NOT_PRESENT_OFFSET, 15426 },
-  { 0x1f110, G_UNICODE_NOT_PRESENT_OFFSET, 15429 },
-  { 0x1f111, G_UNICODE_NOT_PRESENT_OFFSET, 15433 },
-  { 0x1f112, G_UNICODE_NOT_PRESENT_OFFSET, 15437 },
-  { 0x1f113, G_UNICODE_NOT_PRESENT_OFFSET, 15441 },
-  { 0x1f114, G_UNICODE_NOT_PRESENT_OFFSET, 15445 },
-  { 0x1f115, G_UNICODE_NOT_PRESENT_OFFSET, 15449 },
-  { 0x1f116, G_UNICODE_NOT_PRESENT_OFFSET, 15453 },
-  { 0x1f117, G_UNICODE_NOT_PRESENT_OFFSET, 15457 },
-  { 0x1f118, G_UNICODE_NOT_PRESENT_OFFSET, 15461 },
-  { 0x1f119, G_UNICODE_NOT_PRESENT_OFFSET, 15465 },
-  { 0x1f11a, G_UNICODE_NOT_PRESENT_OFFSET, 15469 },
-  { 0x1f11b, G_UNICODE_NOT_PRESENT_OFFSET, 15473 },
-  { 0x1f11c, G_UNICODE_NOT_PRESENT_OFFSET, 15477 },
-  { 0x1f11d, G_UNICODE_NOT_PRESENT_OFFSET, 15481 },
-  { 0x1f11e, G_UNICODE_NOT_PRESENT_OFFSET, 15485 },
-  { 0x1f11f, G_UNICODE_NOT_PRESENT_OFFSET, 15489 },
-  { 0x1f120, G_UNICODE_NOT_PRESENT_OFFSET, 15493 },
-  { 0x1f121, G_UNICODE_NOT_PRESENT_OFFSET, 15497 },
-  { 0x1f122, G_UNICODE_NOT_PRESENT_OFFSET, 15501 },
-  { 0x1f123, G_UNICODE_NOT_PRESENT_OFFSET, 15505 },
-  { 0x1f124, G_UNICODE_NOT_PRESENT_OFFSET, 15509 },
-  { 0x1f125, G_UNICODE_NOT_PRESENT_OFFSET, 15513 },
-  { 0x1f126, G_UNICODE_NOT_PRESENT_OFFSET, 15517 },
-  { 0x1f127, G_UNICODE_NOT_PRESENT_OFFSET, 15521 },
-  { 0x1f128, G_UNICODE_NOT_PRESENT_OFFSET, 15525 },
-  { 0x1f129, G_UNICODE_NOT_PRESENT_OFFSET, 15529 },
-  { 0x1f12a, G_UNICODE_NOT_PRESENT_OFFSET, 15533 },
+  { 0x1f100, G_UNICODE_NOT_PRESENT_OFFSET, 15575 },
+  { 0x1f101, G_UNICODE_NOT_PRESENT_OFFSET, 15578 },
+  { 0x1f102, G_UNICODE_NOT_PRESENT_OFFSET, 15581 },
+  { 0x1f103, G_UNICODE_NOT_PRESENT_OFFSET, 15584 },
+  { 0x1f104, G_UNICODE_NOT_PRESENT_OFFSET, 15587 },
+  { 0x1f105, G_UNICODE_NOT_PRESENT_OFFSET, 15590 },
+  { 0x1f106, G_UNICODE_NOT_PRESENT_OFFSET, 15593 },
+  { 0x1f107, G_UNICODE_NOT_PRESENT_OFFSET, 15596 },
+  { 0x1f108, G_UNICODE_NOT_PRESENT_OFFSET, 15599 },
+  { 0x1f109, G_UNICODE_NOT_PRESENT_OFFSET, 15602 },
+  { 0x1f10a, G_UNICODE_NOT_PRESENT_OFFSET, 15605 },
+  { 0x1f110, G_UNICODE_NOT_PRESENT_OFFSET, 15608 },
+  { 0x1f111, G_UNICODE_NOT_PRESENT_OFFSET, 15612 },
+  { 0x1f112, G_UNICODE_NOT_PRESENT_OFFSET, 15616 },
+  { 0x1f113, G_UNICODE_NOT_PRESENT_OFFSET, 15620 },
+  { 0x1f114, G_UNICODE_NOT_PRESENT_OFFSET, 15624 },
+  { 0x1f115, G_UNICODE_NOT_PRESENT_OFFSET, 15628 },
+  { 0x1f116, G_UNICODE_NOT_PRESENT_OFFSET, 15632 },
+  { 0x1f117, G_UNICODE_NOT_PRESENT_OFFSET, 15636 },
+  { 0x1f118, G_UNICODE_NOT_PRESENT_OFFSET, 15640 },
+  { 0x1f119, G_UNICODE_NOT_PRESENT_OFFSET, 15644 },
+  { 0x1f11a, G_UNICODE_NOT_PRESENT_OFFSET, 15648 },
+  { 0x1f11b, G_UNICODE_NOT_PRESENT_OFFSET, 15652 },
+  { 0x1f11c, G_UNICODE_NOT_PRESENT_OFFSET, 15656 },
+  { 0x1f11d, G_UNICODE_NOT_PRESENT_OFFSET, 15660 },
+  { 0x1f11e, G_UNICODE_NOT_PRESENT_OFFSET, 15664 },
+  { 0x1f11f, G_UNICODE_NOT_PRESENT_OFFSET, 15668 },
+  { 0x1f120, G_UNICODE_NOT_PRESENT_OFFSET, 15672 },
+  { 0x1f121, G_UNICODE_NOT_PRESENT_OFFSET, 15676 },
+  { 0x1f122, G_UNICODE_NOT_PRESENT_OFFSET, 15680 },
+  { 0x1f123, G_UNICODE_NOT_PRESENT_OFFSET, 15684 },
+  { 0x1f124, G_UNICODE_NOT_PRESENT_OFFSET, 15688 },
+  { 0x1f125, G_UNICODE_NOT_PRESENT_OFFSET, 15692 },
+  { 0x1f126, G_UNICODE_NOT_PRESENT_OFFSET, 15696 },
+  { 0x1f127, G_UNICODE_NOT_PRESENT_OFFSET, 15700 },
+  { 0x1f128, G_UNICODE_NOT_PRESENT_OFFSET, 15704 },
+  { 0x1f129, G_UNICODE_NOT_PRESENT_OFFSET, 15708 },
+  { 0x1f12a, G_UNICODE_NOT_PRESENT_OFFSET, 15712 },
   { 0x1f12b, G_UNICODE_NOT_PRESENT_OFFSET, 5292 },
   { 0x1f12c, G_UNICODE_NOT_PRESENT_OFFSET, 2346 },
-  { 0x1f12d, G_UNICODE_NOT_PRESENT_OFFSET, 15541 },
-  { 0x1f12e, G_UNICODE_NOT_PRESENT_OFFSET, 15544 },
+  { 0x1f12d, G_UNICODE_NOT_PRESENT_OFFSET, 15720 },
+  { 0x1f12e, G_UNICODE_NOT_PRESENT_OFFSET, 15723 },
   { 0x1f130, G_UNICODE_NOT_PRESENT_OFFSET, 2309 },
   { 0x1f131, G_UNICODE_NOT_PRESENT_OFFSET, 2314 },
   { 0x1f132, G_UNICODE_NOT_PRESENT_OFFSET, 5292 },
@@ -7555,74 +7615,74 @@ static const decomposition decomp_table[] =
   { 0x1f147, G_UNICODE_NOT_PRESENT_OFFSET, 5487 },
   { 0x1f148, G_UNICODE_NOT_PRESENT_OFFSET, 6135 },
   { 0x1f149, G_UNICODE_NOT_PRESENT_OFFSET, 5331 },
-  { 0x1f14a, G_UNICODE_NOT_PRESENT_OFFSET, 15547 },
+  { 0x1f14a, G_UNICODE_NOT_PRESENT_OFFSET, 15726 },
   { 0x1f14b, G_UNICODE_NOT_PRESENT_OFFSET, 10563 },
-  { 0x1f14c, G_UNICODE_NOT_PRESENT_OFFSET, 15550 },
-  { 0x1f14d, G_UNICODE_NOT_PRESENT_OFFSET, 15553 },
-  { 0x1f14e, G_UNICODE_NOT_PRESENT_OFFSET, 15556 },
-  { 0x1f14f, G_UNICODE_NOT_PRESENT_OFFSET, 15560 },
-  { 0x1f16a, G_UNICODE_NOT_PRESENT_OFFSET, 15563 },
-  { 0x1f16b, G_UNICODE_NOT_PRESENT_OFFSET, 15566 },
-  { 0x1f16c, G_UNICODE_NOT_PRESENT_OFFSET, 15569 },
-  { 0x1f190, G_UNICODE_NOT_PRESENT_OFFSET, 15572 },
-  { 0x1f200, G_UNICODE_NOT_PRESENT_OFFSET, 15575 },
-  { 0x1f201, G_UNICODE_NOT_PRESENT_OFFSET, 15582 },
+  { 0x1f14c, G_UNICODE_NOT_PRESENT_OFFSET, 15729 },
+  { 0x1f14d, G_UNICODE_NOT_PRESENT_OFFSET, 15732 },
+  { 0x1f14e, G_UNICODE_NOT_PRESENT_OFFSET, 15735 },
+  { 0x1f14f, G_UNICODE_NOT_PRESENT_OFFSET, 15739 },
+  { 0x1f16a, G_UNICODE_NOT_PRESENT_OFFSET, 15742 },
+  { 0x1f16b, G_UNICODE_NOT_PRESENT_OFFSET, 15745 },
+  { 0x1f16c, G_UNICODE_NOT_PRESENT_OFFSET, 15748 },
+  { 0x1f190, G_UNICODE_NOT_PRESENT_OFFSET, 15751 },
+  { 0x1f200, G_UNICODE_NOT_PRESENT_OFFSET, 15754 },
+  { 0x1f201, G_UNICODE_NOT_PRESENT_OFFSET, 15761 },
   { 0x1f202, G_UNICODE_NOT_PRESENT_OFFSET, 8848 },
   { 0x1f210, G_UNICODE_NOT_PRESENT_OFFSET, 6433 },
-  { 0x1f211, G_UNICODE_NOT_PRESENT_OFFSET, 15589 },
-  { 0x1f212, G_UNICODE_NOT_PRESENT_OFFSET, 15593 },
+  { 0x1f211, G_UNICODE_NOT_PRESENT_OFFSET, 15768 },
+  { 0x1f212, G_UNICODE_NOT_PRESENT_OFFSET, 15772 },
   { 0x1f213, G_UNICODE_NOT_PRESENT_OFFSET, 7346 },
   { 0x1f214, G_UNICODE_NOT_PRESENT_OFFSET, 6205 },
-  { 0x1f215, G_UNICODE_NOT_PRESENT_OFFSET, 15597 },
-  { 0x1f216, G_UNICODE_NOT_PRESENT_OFFSET, 15601 },
+  { 0x1f215, G_UNICODE_NOT_PRESENT_OFFSET, 15776 },
+  { 0x1f216, G_UNICODE_NOT_PRESENT_OFFSET, 15780 },
   { 0x1f217, G_UNICODE_NOT_PRESENT_OFFSET, 7887 },
-  { 0x1f218, G_UNICODE_NOT_PRESENT_OFFSET, 15605 },
-  { 0x1f219, G_UNICODE_NOT_PRESENT_OFFSET, 15609 },
-  { 0x1f21a, G_UNICODE_NOT_PRESENT_OFFSET, 15613 },
+  { 0x1f218, G_UNICODE_NOT_PRESENT_OFFSET, 15784 },
+  { 0x1f219, G_UNICODE_NOT_PRESENT_OFFSET, 15788 },
+  { 0x1f21a, G_UNICODE_NOT_PRESENT_OFFSET, 15792 },
   { 0x1f21b, G_UNICODE_NOT_PRESENT_OFFSET, 11629 },
-  { 0x1f21c, G_UNICODE_NOT_PRESENT_OFFSET, 15617 },
-  { 0x1f21d, G_UNICODE_NOT_PRESENT_OFFSET, 15621 },
-  { 0x1f21e, G_UNICODE_NOT_PRESENT_OFFSET, 15625 },
-  { 0x1f21f, G_UNICODE_NOT_PRESENT_OFFSET, 15629 },
-  { 0x1f220, G_UNICODE_NOT_PRESENT_OFFSET, 15633 },
-  { 0x1f221, G_UNICODE_NOT_PRESENT_OFFSET, 15637 },
+  { 0x1f21c, G_UNICODE_NOT_PRESENT_OFFSET, 15796 },
+  { 0x1f21d, G_UNICODE_NOT_PRESENT_OFFSET, 15800 },
+  { 0x1f21e, G_UNICODE_NOT_PRESENT_OFFSET, 15804 },
+  { 0x1f21f, G_UNICODE_NOT_PRESENT_OFFSET, 15808 },
+  { 0x1f220, G_UNICODE_NOT_PRESENT_OFFSET, 15812 },
+  { 0x1f221, G_UNICODE_NOT_PRESENT_OFFSET, 15816 },
   { 0x1f222, G_UNICODE_NOT_PRESENT_OFFSET, 6577 },
-  { 0x1f223, G_UNICODE_NOT_PRESENT_OFFSET, 15641 },
-  { 0x1f224, G_UNICODE_NOT_PRESENT_OFFSET, 15645 },
-  { 0x1f225, G_UNICODE_NOT_PRESENT_OFFSET, 15649 },
-  { 0x1f226, G_UNICODE_NOT_PRESENT_OFFSET, 15653 },
-  { 0x1f227, G_UNICODE_NOT_PRESENT_OFFSET, 15657 },
-  { 0x1f228, G_UNICODE_NOT_PRESENT_OFFSET, 15661 },
+  { 0x1f223, G_UNICODE_NOT_PRESENT_OFFSET, 15820 },
+  { 0x1f224, G_UNICODE_NOT_PRESENT_OFFSET, 15824 },
+  { 0x1f225, G_UNICODE_NOT_PRESENT_OFFSET, 15828 },
+  { 0x1f226, G_UNICODE_NOT_PRESENT_OFFSET, 15832 },
+  { 0x1f227, G_UNICODE_NOT_PRESENT_OFFSET, 15836 },
+  { 0x1f228, G_UNICODE_NOT_PRESENT_OFFSET, 15840 },
   { 0x1f229, G_UNICODE_NOT_PRESENT_OFFSET, 6181 },
   { 0x1f22a, G_UNICODE_NOT_PRESENT_OFFSET, 7855 },
-  { 0x1f22b, G_UNICODE_NOT_PRESENT_OFFSET, 15665 },
+  { 0x1f22b, G_UNICODE_NOT_PRESENT_OFFSET, 15844 },
   { 0x1f22c, G_UNICODE_NOT_PRESENT_OFFSET, 8646 },
   { 0x1f22d, G_UNICODE_NOT_PRESENT_OFFSET, 7867 },
   { 0x1f22e, G_UNICODE_NOT_PRESENT_OFFSET, 8650 },
-  { 0x1f22f, G_UNICODE_NOT_PRESENT_OFFSET, 15669 },
+  { 0x1f22f, G_UNICODE_NOT_PRESENT_OFFSET, 15848 },
   { 0x1f230, G_UNICODE_NOT_PRESENT_OFFSET, 6801 },
-  { 0x1f231, G_UNICODE_NOT_PRESENT_OFFSET, 15673 },
-  { 0x1f232, G_UNICODE_NOT_PRESENT_OFFSET, 15677 },
-  { 0x1f233, G_UNICODE_NOT_PRESENT_OFFSET, 15681 },
-  { 0x1f234, G_UNICODE_NOT_PRESENT_OFFSET, 15685 },
-  { 0x1f235, G_UNICODE_NOT_PRESENT_OFFSET, 15689 },
+  { 0x1f231, G_UNICODE_NOT_PRESENT_OFFSET, 15852 },
+  { 0x1f232, G_UNICODE_NOT_PRESENT_OFFSET, 15856 },
+  { 0x1f233, G_UNICODE_NOT_PRESENT_OFFSET, 15860 },
+  { 0x1f234, G_UNICODE_NOT_PRESENT_OFFSET, 15864 },
+  { 0x1f235, G_UNICODE_NOT_PRESENT_OFFSET, 15868 },
   { 0x1f236, G_UNICODE_NOT_PRESENT_OFFSET, 8578 },
   { 0x1f237, G_UNICODE_NOT_PRESENT_OFFSET, 6473 },
-  { 0x1f238, G_UNICODE_NOT_PRESENT_OFFSET, 15693 },
-  { 0x1f239, G_UNICODE_NOT_PRESENT_OFFSET, 15697 },
-  { 0x1f23a, G_UNICODE_NOT_PRESENT_OFFSET, 15701 },
-  { 0x1f23b, G_UNICODE_NOT_PRESENT_OFFSET, 15705 },
-  { 0x1f240, G_UNICODE_NOT_PRESENT_OFFSET, 15709 },
-  { 0x1f241, G_UNICODE_NOT_PRESENT_OFFSET, 15719 },
-  { 0x1f242, G_UNICODE_NOT_PRESENT_OFFSET, 15729 },
-  { 0x1f243, G_UNICODE_NOT_PRESENT_OFFSET, 15739 },
-  { 0x1f244, G_UNICODE_NOT_PRESENT_OFFSET, 15749 },
-  { 0x1f245, G_UNICODE_NOT_PRESENT_OFFSET, 15759 },
-  { 0x1f246, G_UNICODE_NOT_PRESENT_OFFSET, 15769 },
-  { 0x1f247, G_UNICODE_NOT_PRESENT_OFFSET, 15779 },
-  { 0x1f248, G_UNICODE_NOT_PRESENT_OFFSET, 15789 },
-  { 0x1f250, G_UNICODE_NOT_PRESENT_OFFSET, 15799 },
-  { 0x1f251, G_UNICODE_NOT_PRESENT_OFFSET, 15803 },
+  { 0x1f238, G_UNICODE_NOT_PRESENT_OFFSET, 15872 },
+  { 0x1f239, G_UNICODE_NOT_PRESENT_OFFSET, 15876 },
+  { 0x1f23a, G_UNICODE_NOT_PRESENT_OFFSET, 15880 },
+  { 0x1f23b, G_UNICODE_NOT_PRESENT_OFFSET, 15884 },
+  { 0x1f240, G_UNICODE_NOT_PRESENT_OFFSET, 15888 },
+  { 0x1f241, G_UNICODE_NOT_PRESENT_OFFSET, 15898 },
+  { 0x1f242, G_UNICODE_NOT_PRESENT_OFFSET, 15908 },
+  { 0x1f243, G_UNICODE_NOT_PRESENT_OFFSET, 15918 },
+  { 0x1f244, G_UNICODE_NOT_PRESENT_OFFSET, 15928 },
+  { 0x1f245, G_UNICODE_NOT_PRESENT_OFFSET, 15938 },
+  { 0x1f246, G_UNICODE_NOT_PRESENT_OFFSET, 15948 },
+  { 0x1f247, G_UNICODE_NOT_PRESENT_OFFSET, 15958 },
+  { 0x1f248, G_UNICODE_NOT_PRESENT_OFFSET, 15968 },
+  { 0x1f250, G_UNICODE_NOT_PRESENT_OFFSET, 15978 },
+  { 0x1f251, G_UNICODE_NOT_PRESENT_OFFSET, 15982 },
   { 0x1fbf0, G_UNICODE_NOT_PRESENT_OFFSET, 5253 },
   { 0x1fbf1, G_UNICODE_NOT_PRESENT_OFFSET, 27 },
   { 0x1fbf2, G_UNICODE_NOT_PRESENT_OFFSET, 12 },
@@ -7633,548 +7693,548 @@ static const decomposition decomp_table[] =
   { 0x1fbf7, G_UNICODE_NOT_PRESENT_OFFSET, 5261 },
   { 0x1fbf8, G_UNICODE_NOT_PRESENT_OFFSET, 5263 },
   { 0x1fbf9, G_UNICODE_NOT_PRESENT_OFFSET, 5265 },
-  { 0x2f800, 15807, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f801, 15811, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f802, 15815, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f803, 15819, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f804, 15824, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f800, 15986, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f801, 15990, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f802, 15994, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f803, 15998, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f804, 16003, G_UNICODE_NOT_PRESENT_OFFSET },
   { 0x2f805, 12001, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f806, 15828, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f807, 15832, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f808, 15836, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f809, 15840, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f806, 16007, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f807, 16011, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f808, 16015, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f809, 16019, G_UNICODE_NOT_PRESENT_OFFSET },
   { 0x2f80a, 12005, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f80b, 15844, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f80c, 15848, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f80d, 15852, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f80b, 16023, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f80c, 16027, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f80d, 16031, G_UNICODE_NOT_PRESENT_OFFSET },
   { 0x2f80e, 12009, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f80f, 15857, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f810, 15861, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f811, 15865, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f812, 15869, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f813, 15874, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f814, 15878, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f815, 15625, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f816, 15882, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f817, 15887, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f818, 15891, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f819, 15895, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f81a, 15899, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f80f, 16036, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f810, 16040, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f811, 16044, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f812, 16048, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f813, 16053, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f814, 16057, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f815, 15804, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f816, 16061, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f817, 16066, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f818, 16070, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f819, 16074, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f81a, 16078, G_UNICODE_NOT_PRESENT_OFFSET },
   { 0x2f81b, 12230, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f81c, 15903, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f81c, 16082, G_UNICODE_NOT_PRESENT_OFFSET },
   { 0x2f81d, 6245, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f81e, 15908, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f81f, 15912, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f820, 15916, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f821, 15920, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f822, 15697, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f823, 15924, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f824, 15928, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f81e, 16087, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f81f, 16091, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f820, 16095, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f821, 16099, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f822, 15876, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f823, 16103, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f824, 16107, G_UNICODE_NOT_PRESENT_OFFSET },
   { 0x2f825, 12250, G_UNICODE_NOT_PRESENT_OFFSET },
   { 0x2f826, 12013, G_UNICODE_NOT_PRESENT_OFFSET },
   { 0x2f827, 12017, G_UNICODE_NOT_PRESENT_OFFSET },
   { 0x2f828, 12254, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f829, 15932, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f82a, 15936, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f829, 16111, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f82a, 16115, G_UNICODE_NOT_PRESENT_OFFSET },
   { 0x2f82b, 11285, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f82c, 15940, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f82c, 16119, G_UNICODE_NOT_PRESENT_OFFSET },
   { 0x2f82d, 12021, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f82e, 15944, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f82f, 15948, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f830, 15952, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f831, 15956, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f832, 15956, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f833, 15956, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f834, 15960, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f835, 15965, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f836, 15969, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f837, 15973, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f838, 15977, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f839, 15982, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f83a, 15986, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f83b, 15990, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f83c, 15994, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f83d, 15998, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f83e, 16002, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f83f, 16006, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f840, 16010, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f841, 16014, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f842, 16018, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f843, 16022, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f844, 16026, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f845, 16030, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f846, 16030, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f82e, 16123, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f82f, 16127, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f830, 16131, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f831, 16135, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f832, 16135, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f833, 16135, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f834, 16139, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f835, 16144, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f836, 16148, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f837, 16152, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f838, 16156, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f839, 16161, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f83a, 16165, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f83b, 16169, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f83c, 16173, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f83d, 16177, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f83e, 16181, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f83f, 16185, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f840, 16189, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f841, 16193, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f842, 16197, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f843, 16201, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f844, 16205, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f845, 16209, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f846, 16209, G_UNICODE_NOT_PRESENT_OFFSET },
   { 0x2f847, 12262, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f848, 16034, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f849, 16038, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f84a, 16042, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f84b, 16046, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f848, 16213, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f849, 16217, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f84a, 16221, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f84b, 16225, G_UNICODE_NOT_PRESENT_OFFSET },
   { 0x2f84c, 12029, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f84d, 16050, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f84e, 16054, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f84f, 16058, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f84d, 16229, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f84e, 16233, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f84f, 16237, G_UNICODE_NOT_PRESENT_OFFSET },
   { 0x2f850, 11869, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f851, 16062, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f852, 16066, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f853, 16070, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f854, 16074, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f855, 16078, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f856, 16082, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f857, 16086, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f858, 16090, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f859, 16094, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f85a, 16099, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f85b, 16103, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f85c, 16107, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f85d, 15597, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f85e, 16111, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f85f, 16115, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f860, 16119, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f861, 16124, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f862, 16129, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f863, 16133, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f864, 16137, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f865, 16141, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f866, 16145, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f867, 16149, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f868, 16153, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f869, 16157, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f86a, 16161, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f86b, 16161, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f86c, 16165, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f86d, 16170, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f86e, 16174, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f851, 16241, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f852, 16245, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f853, 16249, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f854, 16253, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f855, 16257, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f856, 16261, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f857, 16265, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f858, 16269, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f859, 16273, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f85a, 16278, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f85b, 16282, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f85c, 16286, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f85d, 15776, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f85e, 16290, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f85f, 16294, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f860, 16298, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f861, 16303, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f862, 16308, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f863, 16312, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f864, 16316, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f865, 16320, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f866, 16324, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f867, 16328, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f868, 16332, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f869, 16336, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f86a, 16340, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f86b, 16340, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f86c, 16344, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f86d, 16349, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f86e, 16353, G_UNICODE_NOT_PRESENT_OFFSET },
   { 0x2f86f, 11269, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f870, 16178, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f871, 16182, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f872, 16187, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f873, 16191, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f874, 16195, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f870, 16357, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f871, 16361, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f872, 16366, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f873, 16370, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f874, 16374, G_UNICODE_NOT_PRESENT_OFFSET },
   { 0x2f875, 6349, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f876, 16199, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f877, 16203, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f876, 16378, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f877, 16382, G_UNICODE_NOT_PRESENT_OFFSET },
   { 0x2f878, 6357, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f879, 16207, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f87a, 16211, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f87b, 16215, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f87c, 16220, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f87d, 16224, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f87e, 16229, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f87f, 16233, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f880, 16237, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f881, 16241, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f882, 16245, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f883, 16249, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f884, 16253, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f885, 16257, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f886, 16261, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f887, 16265, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f888, 16269, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f889, 16273, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f88a, 16278, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f88b, 16282, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f88c, 16286, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f88d, 16290, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f879, 16386, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f87a, 16390, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f87b, 16394, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f87c, 16399, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f87d, 16403, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f87e, 16408, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f87f, 16412, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f880, 16416, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f881, 16420, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f882, 16424, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f883, 16428, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f884, 16432, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f885, 16436, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f886, 16440, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f887, 16444, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f888, 16448, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f889, 16452, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f88a, 16457, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f88b, 16461, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f88c, 16465, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f88d, 16469, G_UNICODE_NOT_PRESENT_OFFSET },
   { 0x2f88e, 11061, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f88f, 16294, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f88f, 16473, G_UNICODE_NOT_PRESENT_OFFSET },
   { 0x2f890, 6397, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f891, 16299, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f892, 16299, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f893, 16304, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f894, 16308, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f895, 16308, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f896, 16312, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f897, 16316, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f898, 16321, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f899, 16326, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f89a, 16330, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f89b, 16334, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f89c, 16338, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f89d, 16342, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f89e, 16346, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f89f, 16350, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8a0, 16354, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8a1, 16358, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8a2, 16362, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f891, 16478, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f892, 16478, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f893, 16483, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f894, 16487, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f895, 16487, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f896, 16491, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f897, 16495, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f898, 16500, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f899, 16505, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f89a, 16509, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f89b, 16513, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f89c, 16517, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f89d, 16521, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f89e, 16525, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f89f, 16529, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8a0, 16533, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8a1, 16537, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8a2, 16541, G_UNICODE_NOT_PRESENT_OFFSET },
   { 0x2f8a3, 12049, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8a4, 16366, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8a5, 16371, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8a6, 16375, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8a7, 16379, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8a4, 16545, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8a5, 16550, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8a6, 16554, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8a7, 16558, G_UNICODE_NOT_PRESENT_OFFSET },
   { 0x2f8a8, 12310, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8a9, 16379, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8aa, 16383, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8a9, 16558, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8aa, 16562, G_UNICODE_NOT_PRESENT_OFFSET },
   { 0x2f8ab, 12057, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8ac, 16387, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8ad, 16391, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8ae, 16395, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8af, 16399, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8ac, 16566, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8ad, 16570, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8ae, 16574, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8af, 16578, G_UNICODE_NOT_PRESENT_OFFSET },
   { 0x2f8b0, 12061, G_UNICODE_NOT_PRESENT_OFFSET },
   { 0x2f8b1, 10953, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8b2, 16403, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8b3, 16407, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8b4, 16411, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8b5, 16415, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8b6, 16419, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8b7, 16423, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8b8, 16427, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8b9, 16432, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8ba, 16436, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8bb, 16440, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8bc, 16444, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8bd, 16448, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8be, 16452, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8bf, 16457, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8c0, 16461, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8c1, 16465, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8c2, 16469, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8c3, 16473, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8c4, 16477, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8c5, 16481, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8c6, 16485, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8c7, 16489, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8b2, 16582, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8b3, 16586, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8b4, 16590, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8b5, 16594, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8b6, 16598, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8b7, 16602, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8b8, 16606, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8b9, 16611, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8ba, 16615, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8bb, 16619, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8bc, 16623, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8bd, 16627, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8be, 16631, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8bf, 16636, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8c0, 16640, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8c1, 16644, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8c2, 16648, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8c3, 16652, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8c4, 16656, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8c5, 16660, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8c6, 16664, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8c7, 16668, G_UNICODE_NOT_PRESENT_OFFSET },
   { 0x2f8c8, 12065, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8c9, 16493, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8ca, 16497, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8cb, 16502, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8cc, 16506, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8cd, 16510, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8ce, 16514, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8c9, 16672, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8ca, 16676, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8cb, 16681, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8cc, 16685, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8cd, 16689, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8ce, 16693, G_UNICODE_NOT_PRESENT_OFFSET },
   { 0x2f8cf, 12073, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8d0, 16518, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8d1, 16522, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8d2, 16526, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8d3, 16530, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8d4, 16534, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8d5, 16538, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8d6, 16542, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8d7, 16546, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8d0, 16697, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8d1, 16701, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8d2, 16705, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8d3, 16709, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8d4, 16713, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8d5, 16717, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8d6, 16721, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8d7, 16725, G_UNICODE_NOT_PRESENT_OFFSET },
   { 0x2f8d8, 11065, G_UNICODE_NOT_PRESENT_OFFSET },
   { 0x2f8d9, 12342, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8da, 16550, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8db, 16554, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8dc, 16558, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8dd, 16562, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8de, 16567, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8df, 16571, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8e0, 16575, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8e1, 16579, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8da, 16729, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8db, 16733, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8dc, 16737, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8dd, 16741, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8de, 16746, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8df, 16750, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8e0, 16754, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8e1, 16758, G_UNICODE_NOT_PRESENT_OFFSET },
   { 0x2f8e2, 12077, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8e3, 16583, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8e4, 16588, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8e5, 16592, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8e6, 16596, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8e3, 16762, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8e4, 16767, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8e5, 16771, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8e6, 16775, G_UNICODE_NOT_PRESENT_OFFSET },
   { 0x2f8e7, 12513, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8e8, 16600, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8e9, 16604, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8ea, 16608, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8eb, 16612, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8ec, 16616, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8ed, 16621, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8ee, 16625, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8ef, 16629, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8f0, 16633, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8f1, 16638, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8f2, 16642, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8f3, 16646, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8f4, 16650, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8e8, 16779, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8e9, 16783, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8ea, 16787, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8eb, 16791, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8ec, 16795, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8ed, 16800, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8ee, 16804, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8ef, 16808, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8f0, 16812, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8f1, 16817, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8f2, 16821, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8f3, 16825, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8f4, 16829, G_UNICODE_NOT_PRESENT_OFFSET },
   { 0x2f8f5, 11337, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8f6, 16654, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8f7, 16658, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8f8, 16663, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8f9, 16668, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8fa, 16673, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8fb, 16677, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8fc, 16682, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8fd, 16686, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8fe, 16690, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f8ff, 16694, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f900, 16698, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8f6, 16833, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8f7, 16837, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8f8, 16842, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8f9, 16847, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8fa, 16852, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8fb, 16856, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8fc, 16861, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8fd, 16865, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8fe, 16869, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f8ff, 16873, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f900, 16877, G_UNICODE_NOT_PRESENT_OFFSET },
   { 0x2f901, 12081, G_UNICODE_NOT_PRESENT_OFFSET },
   { 0x2f902, 11669, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f903, 16702, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f904, 16706, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f905, 16710, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f906, 16714, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f907, 16719, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f908, 16723, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f909, 16727, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f90a, 16731, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f903, 16881, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f904, 16885, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f905, 16889, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f906, 16893, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f907, 16898, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f908, 16902, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f909, 16906, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f90a, 16910, G_UNICODE_NOT_PRESENT_OFFSET },
   { 0x2f90b, 12354, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f90c, 16735, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f90d, 16739, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f90e, 16744, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f90f, 16748, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f910, 16752, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f911, 16757, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f912, 16762, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f913, 16766, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f90c, 16914, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f90d, 16918, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f90e, 16923, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f90f, 16927, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f910, 16931, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f911, 16936, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f912, 16941, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f913, 16945, G_UNICODE_NOT_PRESENT_OFFSET },
   { 0x2f914, 12358, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f915, 16770, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f916, 16774, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f917, 16778, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f918, 16782, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f919, 16786, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f91a, 16790, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f91b, 16794, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f91c, 16799, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f91d, 16803, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f91e, 16808, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f91f, 16812, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f920, 16817, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f915, 16949, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f916, 16953, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f917, 16957, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f918, 16961, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f919, 16965, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f91a, 16969, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f91b, 16973, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f91c, 16978, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f91d, 16982, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f91e, 16987, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f91f, 16991, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f920, 16996, G_UNICODE_NOT_PRESENT_OFFSET },
   { 0x2f921, 12366, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f922, 16821, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f923, 16825, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f924, 16830, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f925, 16834, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f926, 16838, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f927, 16843, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f928, 16848, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f929, 16852, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f92a, 16856, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f92b, 16860, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f92c, 16864, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f92d, 16864, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f92e, 16868, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f92f, 16872, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f922, 17000, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f923, 17004, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f924, 17009, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f925, 17013, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f926, 17017, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f927, 17022, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f928, 17027, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f929, 17031, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f92a, 17035, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f92b, 17039, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f92c, 17043, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f92d, 17043, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f92e, 17047, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f92f, 17051, G_UNICODE_NOT_PRESENT_OFFSET },
   { 0x2f930, 12374, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f931, 16876, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f932, 16880, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f933, 16884, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f934, 16888, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f935, 16892, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f936, 16897, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f937, 16901, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f931, 17055, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f932, 17059, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f933, 17063, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f934, 17067, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f935, 17071, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f936, 17076, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f937, 17080, G_UNICODE_NOT_PRESENT_OFFSET },
   { 0x2f938, 11281, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f939, 16906, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f93a, 16911, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f93b, 16915, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f93c, 16920, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f93d, 16925, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f93e, 16930, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f93f, 16934, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f939, 17085, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f93a, 17090, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f93b, 17094, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f93c, 17099, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f93d, 17104, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f93e, 17109, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f93f, 17113, G_UNICODE_NOT_PRESENT_OFFSET },
   { 0x2f940, 12398, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f941, 16938, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f942, 16943, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f943, 16948, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f944, 16953, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f945, 16958, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f946, 16962, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f947, 16962, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f941, 17117, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f942, 17122, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f943, 17127, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f944, 17132, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f945, 17137, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f946, 17141, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f947, 17141, G_UNICODE_NOT_PRESENT_OFFSET },
   { 0x2f948, 12402, G_UNICODE_NOT_PRESENT_OFFSET },
   { 0x2f949, 12521, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f94a, 16966, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f94b, 16970, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f94c, 16974, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f94d, 16978, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f94e, 16983, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f94a, 17145, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f94b, 17149, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f94c, 17153, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f94d, 17157, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f94e, 17162, G_UNICODE_NOT_PRESENT_OFFSET },
   { 0x2f94f, 11133, G_UNICODE_NOT_PRESENT_OFFSET },
   { 0x2f950, 12410, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f951, 16987, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f952, 16991, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f951, 17166, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f952, 17170, G_UNICODE_NOT_PRESENT_OFFSET },
   { 0x2f953, 12121, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f954, 16996, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f955, 17001, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f954, 17175, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f955, 17180, G_UNICODE_NOT_PRESENT_OFFSET },
   { 0x2f956, 11949, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f957, 17006, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f958, 17010, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f957, 17185, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f958, 17189, G_UNICODE_NOT_PRESENT_OFFSET },
   { 0x2f959, 12133, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f95a, 17014, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f95b, 17018, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f95c, 17022, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f95d, 17027, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f95e, 17027, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f95f, 17032, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f960, 17036, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f961, 17040, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f962, 17045, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f963, 17049, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f964, 17053, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f965, 17057, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f966, 17062, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f967, 17066, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f968, 17070, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f969, 17074, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f96a, 17078, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f96b, 17082, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f96c, 17087, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f96d, 17091, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f96e, 17095, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f96f, 17099, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f970, 17103, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f971, 17107, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f972, 17111, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f973, 17116, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f974, 17121, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f975, 17125, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f976, 17130, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f977, 17134, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f978, 17139, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f979, 17143, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f95a, 17193, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f95b, 17197, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f95c, 17201, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f95d, 17206, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f95e, 17206, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f95f, 17211, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f960, 17215, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f961, 17219, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f962, 17224, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f963, 17228, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f964, 17232, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f965, 17236, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f966, 17241, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f967, 17245, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f968, 17249, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f969, 17253, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f96a, 17257, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f96b, 17261, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f96c, 17266, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f96d, 17270, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f96e, 17274, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f96f, 17278, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f970, 17282, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f971, 17286, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f972, 17290, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f973, 17295, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f974, 17300, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f975, 17304, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f976, 17309, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f977, 17313, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f978, 17318, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f979, 17322, G_UNICODE_NOT_PRESENT_OFFSET },
   { 0x2f97a, 12157, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f97b, 17147, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f97c, 17152, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f97d, 17157, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f97e, 17161, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f97f, 17166, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f980, 17170, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f981, 17175, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f982, 17179, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f983, 17183, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f984, 17187, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f985, 17191, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f986, 17195, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f987, 17199, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f988, 17204, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f989, 17209, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f98a, 17214, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f98b, 16304, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f98c, 17219, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f98d, 17223, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f98e, 17227, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f98f, 17231, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f990, 17235, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f991, 17239, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f992, 17243, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f993, 17247, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f994, 17251, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f995, 17255, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f996, 17259, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f997, 17263, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f97b, 17326, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f97c, 17331, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f97d, 17336, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f97e, 17340, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f97f, 17345, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f980, 17349, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f981, 17354, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f982, 17358, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f983, 17362, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f984, 17366, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f985, 17370, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f986, 17374, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f987, 17378, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f988, 17383, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f989, 17388, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f98a, 17393, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f98b, 16483, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f98c, 17398, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f98d, 17402, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f98e, 17406, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f98f, 17410, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f990, 17414, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f991, 17418, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f992, 17422, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f993, 17426, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f994, 17430, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f995, 17434, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f996, 17438, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f997, 17442, G_UNICODE_NOT_PRESENT_OFFSET },
   { 0x2f998, 11349, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f999, 17268, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f99a, 17272, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f99b, 17276, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f99c, 17280, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f99d, 17284, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f99e, 17288, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f999, 17447, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f99a, 17451, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f99b, 17455, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f99c, 17459, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f99d, 17463, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f99e, 17467, G_UNICODE_NOT_PRESENT_OFFSET },
   { 0x2f99f, 12169, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9a0, 17292, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9a1, 17296, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9a2, 17300, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9a3, 17304, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9a4, 17308, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9a5, 17313, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9a6, 17318, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9a7, 17323, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9a8, 17327, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9a9, 17331, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9aa, 17335, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9ab, 17339, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9ac, 17344, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9ad, 17348, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9ae, 17353, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9af, 17357, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9b0, 17361, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9b1, 17366, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9b2, 17371, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9b3, 17375, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9a0, 17471, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9a1, 17475, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9a2, 17479, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9a3, 17483, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9a4, 17487, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9a5, 17492, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9a6, 17497, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9a7, 17502, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9a8, 17506, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9a9, 17510, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9aa, 17514, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9ab, 17518, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9ac, 17523, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9ad, 17527, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9ae, 17532, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9af, 17536, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9b0, 17540, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9b1, 17545, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9b2, 17550, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9b3, 17554, G_UNICODE_NOT_PRESENT_OFFSET },
   { 0x2f9b4, 11113, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9b5, 17379, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9b6, 17383, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9b7, 17387, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9b8, 17391, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9b9, 17395, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9ba, 17399, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9b5, 17558, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9b6, 17562, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9b7, 17566, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9b8, 17570, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9b9, 17574, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9ba, 17578, G_UNICODE_NOT_PRESENT_OFFSET },
   { 0x2f9bb, 12438, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9bc, 17403, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9bd, 17407, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9be, 17411, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9bf, 17415, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9c0, 17419, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9c1, 17423, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9c2, 17427, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9c3, 17431, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9bc, 17582, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9bd, 17586, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9be, 17590, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9bf, 17594, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9c0, 17598, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9c1, 17602, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9c2, 17606, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9c3, 17610, G_UNICODE_NOT_PRESENT_OFFSET },
   { 0x2f9c4, 6757, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9c5, 17435, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9c6, 17440, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9c7, 17444, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9c8, 17448, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9c9, 17452, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9ca, 17456, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9cb, 17460, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9cc, 17465, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9cd, 17470, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9ce, 17474, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9cf, 17478, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9c5, 17614, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9c6, 17619, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9c7, 17623, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9c8, 17627, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9c9, 17631, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9ca, 17635, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9cb, 17639, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9cc, 17644, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9cd, 17649, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9ce, 17653, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9cf, 17657, G_UNICODE_NOT_PRESENT_OFFSET },
   { 0x2f9d0, 12458, G_UNICODE_NOT_PRESENT_OFFSET },
   { 0x2f9d1, 12462, G_UNICODE_NOT_PRESENT_OFFSET },
   { 0x2f9d2, 6785, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9d3, 17482, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9d4, 17487, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9d5, 17491, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9d6, 17495, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9d7, 17499, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9d8, 17503, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9d9, 17508, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9da, 17513, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9db, 17517, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9dc, 17521, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9dd, 17525, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9de, 17530, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9d3, 17661, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9d4, 17666, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9d5, 17670, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9d6, 17674, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9d7, 17678, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9d8, 17682, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9d9, 17687, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9da, 17692, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9db, 17696, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9dc, 17700, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9dd, 17704, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9de, 17709, G_UNICODE_NOT_PRESENT_OFFSET },
   { 0x2f9df, 12466, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9e0, 17534, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9e1, 17539, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9e2, 17544, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9e3, 17548, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9e4, 17552, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9e5, 17556, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9e6, 17561, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9e7, 17565, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9e8, 17569, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9e9, 17573, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9ea, 17577, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9eb, 17581, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9ec, 17585, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9ed, 17589, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9ee, 17594, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9ef, 17598, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9f0, 17602, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9f1, 17606, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9f2, 17611, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9f3, 17615, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9f4, 17619, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9f5, 17623, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9f6, 17627, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9f7, 17632, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9f8, 17637, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9f9, 17641, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9fa, 17645, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9fb, 17649, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9fc, 17654, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2f9fd, 17658, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9e0, 17713, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9e1, 17718, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9e2, 17723, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9e3, 17727, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9e4, 17731, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9e5, 17735, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9e6, 17740, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9e7, 17744, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9e8, 17748, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9e9, 17752, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9ea, 17756, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9eb, 17760, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9ec, 17764, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9ed, 17768, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9ee, 17773, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9ef, 17777, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9f0, 17781, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9f1, 17785, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9f2, 17790, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9f3, 17794, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9f4, 17798, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9f5, 17802, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9f6, 17806, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9f7, 17811, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9f8, 17816, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9f9, 17820, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9fa, 17824, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9fb, 17828, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9fc, 17833, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2f9fd, 17837, G_UNICODE_NOT_PRESENT_OFFSET },
   { 0x2f9fe, 12490, G_UNICODE_NOT_PRESENT_OFFSET },
   { 0x2f9ff, 12490, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2fa00, 17663, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2fa01, 17667, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2fa02, 17672, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2fa03, 17676, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2fa04, 17680, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2fa05, 17684, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2fa06, 17688, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2fa07, 17692, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2fa08, 17696, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2fa09, 17700, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2fa00, 17842, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2fa01, 17846, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2fa02, 17851, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2fa03, 17855, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2fa04, 17859, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2fa05, 17863, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2fa06, 17867, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2fa07, 17871, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2fa08, 17875, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2fa09, 17879, G_UNICODE_NOT_PRESENT_OFFSET },
   { 0x2fa0a, 12494, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2fa0b, 17705, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2fa0c, 17709, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2fa0d, 17713, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2fa0e, 17717, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2fa0f, 17721, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2fa10, 17725, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2fa11, 17730, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2fa12, 17734, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2fa13, 17739, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2fa14, 17744, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2fa0b, 17884, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2fa0c, 17888, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2fa0d, 17892, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2fa0e, 17896, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2fa0f, 17900, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2fa10, 17904, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2fa11, 17909, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2fa12, 17913, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2fa13, 17918, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2fa14, 17923, G_UNICODE_NOT_PRESENT_OFFSET },
   { 0x2fa15, 6977, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2fa16, 17749, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2fa16, 17928, G_UNICODE_NOT_PRESENT_OFFSET },
   { 0x2fa17, 6993, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2fa18, 17753, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2fa19, 17757, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2fa1a, 17761, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2fa1b, 17765, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2fa18, 17932, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2fa19, 17936, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2fa1a, 17940, G_UNICODE_NOT_PRESENT_OFFSET },
+  { 0x2fa1b, 17944, G_UNICODE_NOT_PRESENT_OFFSET },
   { 0x2fa1c, 7013, G_UNICODE_NOT_PRESENT_OFFSET },
-  { 0x2fa1d, 17769, G_UNICODE_NOT_PRESENT_OFFSET }
+  { 0x2fa1d, 17948, G_UNICODE_NOT_PRESENT_OFFSET }
 };
 
 static const gchar decomp_expansion_string[] = 
@@ -11209,629 +11269,683 @@ static const gchar decomp_expansion_string[] =
   "\xe2\x86\x93\0" /* offset 14995 */
   "\xe2\x96\xa0\0" /* offset 14999 */
   "\xe2\x97\x8b\0" /* offset 15003 */
-  "\xf0\x91\x82\x99\xf0\x91\x82\xba\0" /* offset 15007 */
-  "\xf0\x91\x82\x9b\xf0\x91\x82\xba\0" /* offset 15016 */
-  "\xf0\x91\x82\xa5\xf0\x91\x82\xba\0" /* offset 15025 */
-  "\xf0\x91\x84\xb1\xf0\x91\x84\xa7\0" /* offset 15034 */
-  "\xf0\x91\x84\xb2\xf0\x91\x84\xa7\0" /* offset 15043 */
-  "\xf0\x91\x8d\x87\xf0\x91\x8c\xbe\0" /* offset 15052 */
-  "\xf0\x91\x8d\x87\xf0\x91\x8d\x97\0" /* offset 15061 */
-  "\xf0\x91\x92\xb9\xf0\x91\x92\xba\0" /* offset 15070 */
-  "\xf0\x91\x92\xb9\xf0\x91\x92\xb0\0" /* offset 15079 */
-  "\xf0\x91\x92\xb9\xf0\x91\x92\xbd\0" /* offset 15088 */
-  "\xf0\x91\x96\xb8\xf0\x91\x96\xaf\0" /* offset 15097 */
-  "\xf0\x91\x96\xb9\xf0\x91\x96\xaf\0" /* offset 15106 */
-  "\xf0\x91\xa4\xb5\xf0\x91\xa4\xb0\0" /* offset 15115 */
-  "\xf0\x9d\x85\x97\xf0\x9d\x85\xa5\0" /* offset 15124 */
-  "\xf0\x9d\x85\x98\xf0\x9d\x85\xa5\0" /* offset 15133 */
-  "\xf0\x9d\x85\x98\xf0\x9d\x85\xa5\xf0\x9d\x85\xae\0" /* offset 15142 */
-  "\xf0\x9d\x85\x98\xf0\x9d\x85\xa5\xf0\x9d\x85\xaf\0" /* offset 15155 */
-  "\xf0\x9d\x85\x98\xf0\x9d\x85\xa5\xf0\x9d\x85\xb0\0" /* offset 15168 */
-  "\xf0\x9d\x85\x98\xf0\x9d\x85\xa5\xf0\x9d\x85\xb1\0" /* offset 15181 */
-  "\xf0\x9d\x85\x98\xf0\x9d\x85\xa5\xf0\x9d\x85\xb2\0" /* offset 15194 */
-  "\xf0\x9d\x86\xb9\xf0\x9d\x85\xa5\0" /* offset 15207 */
-  "\xf0\x9d\x86\xba\xf0\x9d\x85\xa5\0" /* offset 15216 */
-  "\xf0\x9d\x86\xb9\xf0\x9d\x85\xa5\xf0\x9d\x85\xae\0" /* offset 15225 */
-  "\xf0\x9d\x86\xba\xf0\x9d\x85\xa5\xf0\x9d\x85\xae\0" /* offset 15238 */
-  "\xf0\x9d\x86\xb9\xf0\x9d\x85\xa5\xf0\x9d\x85\xaf\0" /* offset 15251 */
-  "\xf0\x9d\x86\xba\xf0\x9d\x85\xa5\xf0\x9d\x85\xaf\0" /* offset 15264 */
-  "\xc4\xb1\0" /* offset 15277 */
-  "\xc8\xb7\0" /* offset 15280 */
-  "\xce\x91\0" /* offset 15283 */
-  "\xce\x92\0" /* offset 15286 */
-  "\xce\x94\0" /* offset 15289 */
-  "\xce\x95\0" /* offset 15292 */
-  "\xce\x96\0" /* offset 15295 */
-  "\xce\x97\0" /* offset 15298 */
-  "\xce\x99\0" /* offset 15301 */
-  "\xce\x9a\0" /* offset 15304 */
-  "\xce\x9b\0" /* offset 15307 */
-  "\xce\x9c\0" /* offset 15310 */
-  "\xce\x9d\0" /* offset 15313 */
-  "\xce\x9e\0" /* offset 15316 */
-  "\xce\x9f\0" /* offset 15319 */
-  "\xce\xa1\0" /* offset 15322 */
-  "\xce\xa4\0" /* offset 15325 */
-  "\xce\xa6\0" /* offset 15328 */
-  "\xce\xa7\0" /* offset 15331 */
-  "\xce\xa8\0" /* offset 15334 */
-  "\xe2\x88\x87\0" /* offset 15337 */
-  "\xce\xb1\0" /* offset 15341 */
-  "\xce\xb6\0" /* offset 15344 */
-  "\xce\xb7\0" /* offset 15347 */
-  "\xce\xbb\0" /* offset 15350 */
-  "\xce\xbd\0" /* offset 15353 */
-  "\xce\xbe\0" /* offset 15356 */
-  "\xce\xbf\0" /* offset 15359 */
-  "\xcf\x83\0" /* offset 15362 */
-  "\xcf\x84\0" /* offset 15365 */
-  "\xcf\x85\0" /* offset 15368 */
-  "\xcf\x88\0" /* offset 15371 */
-  "\xcf\x89\0" /* offset 15374 */
-  "\xe2\x88\x82\0" /* offset 15377 */
-  "\xcf\x9c\0" /* offset 15381 */
-  "\xcf\x9d\0" /* offset 15384 */
-  "\xd9\xae\0" /* offset 15387 */
-  "\xda\xa1\0" /* offset 15390 */
-  "\xd9\xaf\0" /* offset 15393 */
-  "\x30\x2e\0" /* offset 15396 */
-  "\x30\x2c\0" /* offset 15399 */
-  "\x31\x2c\0" /* offset 15402 */
-  "\x32\x2c\0" /* offset 15405 */
-  "\x33\x2c\0" /* offset 15408 */
-  "\x34\x2c\0" /* offset 15411 */
-  "\x35\x2c\0" /* offset 15414 */
-  "\x36\x2c\0" /* offset 15417 */
-  "\x37\x2c\0" /* offset 15420 */
-  "\x38\x2c\0" /* offset 15423 */
-  "\x39\x2c\0" /* offset 15426 */
-  "\x28\x41\x29\0" /* offset 15429 */
-  "\x28\x42\x29\0" /* offset 15433 */
-  "\x28\x43\x29\0" /* offset 15437 */
-  "\x28\x44\x29\0" /* offset 15441 */
-  "\x28\x45\x29\0" /* offset 15445 */
-  "\x28\x46\x29\0" /* offset 15449 */
-  "\x28\x47\x29\0" /* offset 15453 */
-  "\x28\x48\x29\0" /* offset 15457 */
-  "\x28\x49\x29\0" /* offset 15461 */
-  "\x28\x4a\x29\0" /* offset 15465 */
-  "\x28\x4b\x29\0" /* offset 15469 */
-  "\x28\x4c\x29\0" /* offset 15473 */
-  "\x28\x4d\x29\0" /* offset 15477 */
-  "\x28\x4e\x29\0" /* offset 15481 */
-  "\x28\x4f\x29\0" /* offset 15485 */
-  "\x28\x50\x29\0" /* offset 15489 */
-  "\x28\x51\x29\0" /* offset 15493 */
-  "\x28\x52\x29\0" /* offset 15497 */
-  "\x28\x53\x29\0" /* offset 15501 */
-  "\x28\x54\x29\0" /* offset 15505 */
-  "\x28\x55\x29\0" /* offset 15509 */
-  "\x28\x56\x29\0" /* offset 15513 */
-  "\x28\x57\x29\0" /* offset 15517 */
-  "\x28\x58\x29\0" /* offset 15521 */
-  "\x28\x59\x29\0" /* offset 15525 */
-  "\x28\x5a\x29\0" /* offset 15529 */
-  "\xe3\x80\x94\x53\xe3\x80\x95\0" /* offset 15533 */
-  "\x43\x44\0" /* offset 15541 */
-  "\x57\x5a\0" /* offset 15544 */
-  "\x48\x56\0" /* offset 15547 */
-  "\x53\x44\0" /* offset 15550 */
-  "\x53\x53\0" /* offset 15553 */
-  "\x50\x50\x56\0" /* offset 15556 */
-  "\x57\x43\0" /* offset 15560 */
-  "\x4d\x43\0" /* offset 15563 */
-  "\x4d\x44\0" /* offset 15566 */
-  "\x4d\x52\0" /* offset 15569 */
-  "\x44\x4a\0" /* offset 15572 */
-  "\xe3\x81\xbb\xe3\x81\x8b\0" /* offset 15575 */
-  "\xe3\x82\xb3\xe3\x82\xb3\0" /* offset 15582 */
-  "\xe5\xad\x97\0" /* offset 15589 */
-  "\xe5\x8f\x8c\0" /* offset 15593 */
-  "\xe5\xa4\x9a\0" /* offset 15597 */
-  "\xe8\xa7\xa3\0" /* offset 15601 */
-  "\xe4\xba\xa4\0" /* offset 15605 */
-  "\xe6\x98\xa0\0" /* offset 15609 */
-  "\xe7\x84\xa1\0" /* offset 15613 */
-  "\xe5\x89\x8d\0" /* offset 15617 */
-  "\xe5\xbe\x8c\0" /* offset 15621 */
-  "\xe5\x86\x8d\0" /* offset 15625 */
-  "\xe6\x96\xb0\0" /* offset 15629 */
-  "\xe5\x88\x9d\0" /* offset 15633 */
-  "\xe7\xb5\x82\0" /* offset 15637 */
-  "\xe8\xb2\xa9\0" /* offset 15641 */
-  "\xe5\xa3\xb0\0" /* offset 15645 */
-  "\xe5\x90\xb9\0" /* offset 15649 */
-  "\xe6\xbc\x94\0" /* offset 15653 */
-  "\xe6\x8a\x95\0" /* offset 15657 */
-  "\xe6\x8d\x95\0" /* offset 15661 */
-  "\xe9\x81\x8a\0" /* offset 15665 */
-  "\xe6\x8c\x87\0" /* offset 15669 */
-  "\xe6\x89\x93\0" /* offset 15673 */
-  "\xe7\xa6\x81\0" /* offset 15677 */
-  "\xe7\xa9\xba\0" /* offset 15681 */
-  "\xe5\x90\x88\0" /* offset 15685 */
-  "\xe6\xba\x80\0" /* offset 15689 */
-  "\xe7\x94\xb3\0" /* offset 15693 */
-  "\xe5\x89\xb2\0" /* offset 15697 */
-  "\xe5\x96\xb6\0" /* offset 15701 */
-  "\xe9\x85\x8d\0" /* offset 15705 */
-  "\xe3\x80\x94\xe6\x9c\xac\xe3\x80\x95\0" /* offset 15709 */
-  "\xe3\x80\x94\xe4\xb8\x89\xe3\x80\x95\0" /* offset 15719 */
-  "\xe3\x80\x94\xe4\xba\x8c\xe3\x80\x95\0" /* offset 15729 */
-  "\xe3\x80\x94\xe5\xae\x89\xe3\x80\x95\0" /* offset 15739 */
-  "\xe3\x80\x94\xe7\x82\xb9\xe3\x80\x95\0" /* offset 15749 */
-  "\xe3\x80\x94\xe6\x89\x93\xe3\x80\x95\0" /* offset 15759 */
-  "\xe3\x80\x94\xe7\x9b\x97\xe3\x80\x95\0" /* offset 15769 */
-  "\xe3\x80\x94\xe5\x8b\x9d\xe3\x80\x95\0" /* offset 15779 */
-  "\xe3\x80\x94\xe6\x95\x97\xe3\x80\x95\0" /* offset 15789 */
-  "\xe5\xbe\x97\0" /* offset 15799 */
-  "\xe5\x8f\xaf\0" /* offset 15803 */
-  "\xe4\xb8\xbd\0" /* offset 15807 */
-  "\xe4\xb8\xb8\0" /* offset 15811 */
-  "\xe4\xb9\x81\0" /* offset 15815 */
-  "\xf0\xa0\x84\xa2\0" /* offset 15819 */
-  "\xe4\xbd\xa0\0" /* offset 15824 */
-  "\xe4\xbe\xbb\0" /* offset 15828 */
-  "\xe5\x80\x82\0" /* offset 15832 */
-  "\xe5\x81\xba\0" /* offset 15836 */
-  "\xe5\x82\x99\0" /* offset 15840 */
-  "\xe5\x83\x8f\0" /* offset 15844 */
-  "\xe3\x92\x9e\0" /* offset 15848 */
-  "\xf0\xa0\x98\xba\0" /* offset 15852 */
-  "\xe5\x85\x94\0" /* offset 15857 */
-  "\xe5\x85\xa4\0" /* offset 15861 */
-  "\xe5\x85\xb7\0" /* offset 15865 */
-  "\xf0\xa0\x94\x9c\0" /* offset 15869 */
-  "\xe3\x92\xb9\0" /* offset 15874 */
-  "\xe5\x85\xa7\0" /* offset 15878 */
-  "\xf0\xa0\x95\x8b\0" /* offset 15882 */
-  "\xe5\x86\x97\0" /* offset 15887 */
-  "\xe5\x86\xa4\0" /* offset 15891 */
-  "\xe4\xbb\x8c\0" /* offset 15895 */
-  "\xe5\x86\xac\0" /* offset 15899 */
-  "\xf0\xa9\x87\x9f\0" /* offset 15903 */
-  "\xe5\x88\x83\0" /* offset 15908 */
-  "\xe3\x93\x9f\0" /* offset 15912 */
-  "\xe5\x88\xbb\0" /* offset 15916 */
-  "\xe5\x89\x86\0" /* offset 15920 */
-  "\xe5\x89\xb7\0" /* offset 15924 */
-  "\xe3\x94\x95\0" /* offset 15928 */
-  "\xe5\x8c\x85\0" /* offset 15932 */
-  "\xe5\x8c\x86\0" /* offset 15936 */
-  "\xe5\x8d\x89\0" /* offset 15940 */
-  "\xe5\x8d\x9a\0" /* offset 15944 */
-  "\xe5\x8d\xb3\0" /* offset 15948 */
-  "\xe5\x8d\xbd\0" /* offset 15952 */
-  "\xe5\x8d\xbf\0" /* offset 15956 */
-  "\xf0\xa0\xa8\xac\0" /* offset 15960 */
-  "\xe7\x81\xb0\0" /* offset 15965 */
-  "\xe5\x8f\x8a\0" /* offset 15969 */
-  "\xe5\x8f\x9f\0" /* offset 15973 */
-  "\xf0\xa0\xad\xa3\0" /* offset 15977 */
-  "\xe5\x8f\xab\0" /* offset 15982 */
-  "\xe5\x8f\xb1\0" /* offset 15986 */
-  "\xe5\x90\x86\0" /* offset 15990 */
-  "\xe5\x92\x9e\0" /* offset 15994 */
-  "\xe5\x90\xb8\0" /* offset 15998 */
-  "\xe5\x91\x88\0" /* offset 16002 */
-  "\xe5\x91\xa8\0" /* offset 16006 */
-  "\xe5\x92\xa2\0" /* offset 16010 */
-  "\xe5\x93\xb6\0" /* offset 16014 */
-  "\xe5\x94\x90\0" /* offset 16018 */
-  "\xe5\x95\x93\0" /* offset 16022 */
-  "\xe5\x95\xa3\0" /* offset 16026 */
-  "\xe5\x96\x84\0" /* offset 16030 */
-  "\xe5\x96\xab\0" /* offset 16034 */
-  "\xe5\x96\xb3\0" /* offset 16038 */
-  "\xe5\x97\x82\0" /* offset 16042 */
-  "\xe5\x9c\x96\0" /* offset 16046 */
-  "\xe5\x9c\x97\0" /* offset 16050 */
-  "\xe5\x99\x91\0" /* offset 16054 */
-  "\xe5\x99\xb4\0" /* offset 16058 */
-  "\xe5\xa3\xae\0" /* offset 16062 */
-  "\xe5\x9f\x8e\0" /* offset 16066 */
-  "\xe5\x9f\xb4\0" /* offset 16070 */
-  "\xe5\xa0\x8d\0" /* offset 16074 */
-  "\xe5\x9e\x8b\0" /* offset 16078 */
-  "\xe5\xa0\xb2\0" /* offset 16082 */
-  "\xe5\xa0\xb1\0" /* offset 16086 */
-  "\xe5\xa2\xac\0" /* offset 16090 */
-  "\xf0\xa1\x93\xa4\0" /* offset 16094 */
-  "\xe5\xa3\xb2\0" /* offset 16099 */
-  "\xe5\xa3\xb7\0" /* offset 16103 */
-  "\xe5\xa4\x86\0" /* offset 16107 */
-  "\xe5\xa4\xa2\0" /* offset 16111 */
-  "\xe5\xa5\xa2\0" /* offset 16115 */
-  "\xf0\xa1\x9a\xa8\0" /* offset 16119 */
-  "\xf0\xa1\x9b\xaa\0" /* offset 16124 */
-  "\xe5\xa7\xac\0" /* offset 16129 */
-  "\xe5\xa8\x9b\0" /* offset 16133 */
-  "\xe5\xa8\xa7\0" /* offset 16137 */
-  "\xe5\xa7\x98\0" /* offset 16141 */
-  "\xe5\xa9\xa6\0" /* offset 16145 */
-  "\xe3\x9b\xae\0" /* offset 16149 */
-  "\xe3\x9b\xbc\0" /* offset 16153 */
-  "\xe5\xac\x88\0" /* offset 16157 */
-  "\xe5\xac\xbe\0" /* offset 16161 */
-  "\xf0\xa1\xa7\x88\0" /* offset 16165 */
-  "\xe5\xaf\x83\0" /* offset 16170 */
-  "\xe5\xaf\x98\0" /* offset 16174 */
-  "\xe5\xaf\xb3\0" /* offset 16178 */
-  "\xf0\xa1\xac\x98\0" /* offset 16182 */
-  "\xe5\xaf\xbf\0" /* offset 16187 */
-  "\xe5\xb0\x86\0" /* offset 16191 */
-  "\xe5\xbd\x93\0" /* offset 16195 */
-  "\xe3\x9e\x81\0" /* offset 16199 */
-  "\xe5\xb1\xa0\0" /* offset 16203 */
-  "\xe5\xb3\x80\0" /* offset 16207 */
-  "\xe5\xb2\x8d\0" /* offset 16211 */
-  "\xf0\xa1\xb7\xa4\0" /* offset 16215 */
-  "\xe5\xb5\x83\0" /* offset 16220 */
-  "\xf0\xa1\xb7\xa6\0" /* offset 16224 */
-  "\xe5\xb5\xae\0" /* offset 16229 */
-  "\xe5\xb5\xab\0" /* offset 16233 */
-  "\xe5\xb5\xbc\0" /* offset 16237 */
-  "\xe5\xb7\xa1\0" /* offset 16241 */
-  "\xe5\xb7\xa2\0" /* offset 16245 */
-  "\xe3\xa0\xaf\0" /* offset 16249 */
-  "\xe5\xb7\xbd\0" /* offset 16253 */
-  "\xe5\xb8\xa8\0" /* offset 16257 */
-  "\xe5\xb8\xbd\0" /* offset 16261 */
-  "\xe5\xb9\xa9\0" /* offset 16265 */
-  "\xe3\xa1\xa2\0" /* offset 16269 */
-  "\xf0\xa2\x86\x83\0" /* offset 16273 */
-  "\xe3\xa1\xbc\0" /* offset 16278 */
-  "\xe5\xba\xb0\0" /* offset 16282 */
-  "\xe5\xba\xb3\0" /* offset 16286 */
-  "\xe5\xba\xb6\0" /* offset 16290 */
-  "\xf0\xaa\x8e\x92\0" /* offset 16294 */
-  "\xf0\xa2\x8c\xb1\0" /* offset 16299 */
-  "\xe8\x88\x81\0" /* offset 16304 */
-  "\xe5\xbc\xa2\0" /* offset 16308 */
-  "\xe3\xa3\x87\0" /* offset 16312 */
-  "\xf0\xa3\x8a\xb8\0" /* offset 16316 */
-  "\xf0\xa6\x87\x9a\0" /* offset 16321 */
-  "\xe5\xbd\xa2\0" /* offset 16326 */
-  "\xe5\xbd\xab\0" /* offset 16330 */
-  "\xe3\xa3\xa3\0" /* offset 16334 */
-  "\xe5\xbe\x9a\0" /* offset 16338 */
-  "\xe5\xbf\x8d\0" /* offset 16342 */
-  "\xe5\xbf\x97\0" /* offset 16346 */
-  "\xe5\xbf\xb9\0" /* offset 16350 */
-  "\xe6\x82\x81\0" /* offset 16354 */
-  "\xe3\xa4\xba\0" /* offset 16358 */
-  "\xe3\xa4\x9c\0" /* offset 16362 */
-  "\xf0\xa2\x9b\x94\0" /* offset 16366 */
-  "\xe6\x83\x87\0" /* offset 16371 */
-  "\xe6\x85\x88\0" /* offset 16375 */
-  "\xe6\x85\x8c\0" /* offset 16379 */
-  "\xe6\x85\xba\0" /* offset 16383 */
-  "\xe6\x86\xb2\0" /* offset 16387 */
-  "\xe6\x86\xa4\0" /* offset 16391 */
-  "\xe6\x86\xaf\0" /* offset 16395 */
-  "\xe6\x87\x9e\0" /* offset 16399 */
-  "\xe6\x88\x90\0" /* offset 16403 */
-  "\xe6\x88\x9b\0" /* offset 16407 */
-  "\xe6\x89\x9d\0" /* offset 16411 */
-  "\xe6\x8a\xb1\0" /* offset 16415 */
-  "\xe6\x8b\x94\0" /* offset 16419 */
-  "\xe6\x8d\x90\0" /* offset 16423 */
-  "\xf0\xa2\xac\x8c\0" /* offset 16427 */
-  "\xe6\x8c\xbd\0" /* offset 16432 */
-  "\xe6\x8b\xbc\0" /* offset 16436 */
-  "\xe6\x8d\xa8\0" /* offset 16440 */
-  "\xe6\x8e\x83\0" /* offset 16444 */
-  "\xe6\x8f\xa4\0" /* offset 16448 */
-  "\xf0\xa2\xaf\xb1\0" /* offset 16452 */
-  "\xe6\x90\xa2\0" /* offset 16457 */
-  "\xe6\x8f\x85\0" /* offset 16461 */
-  "\xe6\x8e\xa9\0" /* offset 16465 */
-  "\xe3\xa8\xae\0" /* offset 16469 */
-  "\xe6\x91\xa9\0" /* offset 16473 */
-  "\xe6\x91\xbe\0" /* offset 16477 */
-  "\xe6\x92\x9d\0" /* offset 16481 */
-  "\xe6\x91\xb7\0" /* offset 16485 */
-  "\xe3\xa9\xac\0" /* offset 16489 */
-  "\xe6\x95\xac\0" /* offset 16493 */
-  "\xf0\xa3\x80\x8a\0" /* offset 16497 */
-  "\xe6\x97\xa3\0" /* offset 16502 */
-  "\xe6\x9b\xb8\0" /* offset 16506 */
-  "\xe6\x99\x89\0" /* offset 16510 */
-  "\xe3\xac\x99\0" /* offset 16514 */
-  "\xe3\xac\x88\0" /* offset 16518 */
-  "\xe3\xab\xa4\0" /* offset 16522 */
-  "\xe5\x86\x92\0" /* offset 16526 */
-  "\xe5\x86\x95\0" /* offset 16530 */
-  "\xe6\x9c\x80\0" /* offset 16534 */
-  "\xe6\x9a\x9c\0" /* offset 16538 */
-  "\xe8\x82\xad\0" /* offset 16542 */
-  "\xe4\x8f\x99\0" /* offset 16546 */
-  "\xe6\x9c\xa1\0" /* offset 16550 */
-  "\xe6\x9d\x9e\0" /* offset 16554 */
-  "\xe6\x9d\x93\0" /* offset 16558 */
-  "\xf0\xa3\x8f\x83\0" /* offset 16562 */
-  "\xe3\xad\x89\0" /* offset 16567 */
-  "\xe6\x9f\xba\0" /* offset 16571 */
-  "\xe6\x9e\x85\0" /* offset 16575 */
-  "\xe6\xa1\x92\0" /* offset 16579 */
-  "\xf0\xa3\x91\xad\0" /* offset 16583 */
-  "\xe6\xa2\x8e\0" /* offset 16588 */
-  "\xe6\xa0\x9f\0" /* offset 16592 */
-  "\xe6\xa4\x94\0" /* offset 16596 */
-  "\xe6\xa5\x82\0" /* offset 16600 */
-  "\xe6\xa6\xa3\0" /* offset 16604 */
-  "\xe6\xa7\xaa\0" /* offset 16608 */
-  "\xe6\xaa\xa8\0" /* offset 16612 */
-  "\xf0\xa3\x9a\xa3\0" /* offset 16616 */
-  "\xe6\xab\x9b\0" /* offset 16621 */
-  "\xe3\xb0\x98\0" /* offset 16625 */
-  "\xe6\xac\xa1\0" /* offset 16629 */
-  "\xf0\xa3\xa2\xa7\0" /* offset 16633 */
-  "\xe6\xad\x94\0" /* offset 16638 */
-  "\xe3\xb1\x8e\0" /* offset 16642 */
-  "\xe6\xad\xb2\0" /* offset 16646 */
-  "\xe6\xae\x9f\0" /* offset 16650 */
-  "\xe6\xae\xbb\0" /* offset 16654 */
-  "\xf0\xa3\xaa\x8d\0" /* offset 16658 */
-  "\xf0\xa1\xb4\x8b\0" /* offset 16663 */
-  "\xf0\xa3\xab\xba\0" /* offset 16668 */
-  "\xe6\xb1\x8e\0" /* offset 16673 */
-  "\xf0\xa3\xb2\xbc\0" /* offset 16677 */
-  "\xe6\xb2\xbf\0" /* offset 16682 */
-  "\xe6\xb3\x8d\0" /* offset 16686 */
-  "\xe6\xb1\xa7\0" /* offset 16690 */
-  "\xe6\xb4\x96\0" /* offset 16694 */
-  "\xe6\xb4\xbe\0" /* offset 16698 */
-  "\xe6\xb5\xa9\0" /* offset 16702 */
-  "\xe6\xb5\xb8\0" /* offset 16706 */
-  "\xe6\xb6\x85\0" /* offset 16710 */
-  "\xf0\xa3\xb4\x9e\0" /* offset 16714 */
-  "\xe6\xb4\xb4\0" /* offset 16719 */
-  "\xe6\xb8\xaf\0" /* offset 16723 */
-  "\xe6\xb9\xae\0" /* offset 16727 */
-  "\xe3\xb4\xb3\0" /* offset 16731 */
-  "\xe6\xbb\x87\0" /* offset 16735 */
-  "\xf0\xa3\xbb\x91\0" /* offset 16739 */
-  "\xe6\xb7\xb9\0" /* offset 16744 */
-  "\xe6\xbd\xae\0" /* offset 16748 */
-  "\xf0\xa3\xbd\x9e\0" /* offset 16752 */
-  "\xf0\xa3\xbe\x8e\0" /* offset 16757 */
-  "\xe6\xbf\x86\0" /* offset 16762 */
-  "\xe7\x80\xb9\0" /* offset 16766 */
-  "\xe7\x80\x9b\0" /* offset 16770 */
-  "\xe3\xb6\x96\0" /* offset 16774 */
-  "\xe7\x81\x8a\0" /* offset 16778 */
-  "\xe7\x81\xbd\0" /* offset 16782 */
-  "\xe7\x81\xb7\0" /* offset 16786 */
-  "\xe7\x82\xad\0" /* offset 16790 */
-  "\xf0\xa0\x94\xa5\0" /* offset 16794 */
-  "\xe7\x85\x85\0" /* offset 16799 */
-  "\xf0\xa4\x89\xa3\0" /* offset 16803 */
-  "\xe7\x86\x9c\0" /* offset 16808 */
-  "\xf0\xa4\x8e\xab\0" /* offset 16812 */
-  "\xe7\x88\xa8\0" /* offset 16817 */
-  "\xe7\x89\x90\0" /* offset 16821 */
-  "\xf0\xa4\x98\x88\0" /* offset 16825 */
-  "\xe7\x8a\x80\0" /* offset 16830 */
-  "\xe7\x8a\x95\0" /* offset 16834 */
-  "\xf0\xa4\x9c\xb5\0" /* offset 16838 */
-  "\xf0\xa4\xa0\x94\0" /* offset 16843 */
-  "\xe7\x8d\xba\0" /* offset 16848 */
-  "\xe7\x8e\x8b\0" /* offset 16852 */
-  "\xe3\xba\xac\0" /* offset 16856 */
-  "\xe7\x8e\xa5\0" /* offset 16860 */
-  "\xe3\xba\xb8\0" /* offset 16864 */
-  "\xe7\x91\x87\0" /* offset 16868 */
-  "\xe7\x91\x9c\0" /* offset 16872 */
-  "\xe7\x92\x85\0" /* offset 16876 */
-  "\xe7\x93\x8a\0" /* offset 16880 */
-  "\xe3\xbc\x9b\0" /* offset 16884 */
-  "\xe7\x94\xa4\0" /* offset 16888 */
-  "\xf0\xa4\xb0\xb6\0" /* offset 16892 */
-  "\xe7\x94\xbe\0" /* offset 16897 */
-  "\xf0\xa4\xb2\x92\0" /* offset 16901 */
-  "\xf0\xa2\x86\x9f\0" /* offset 16906 */
-  "\xe7\x98\x90\0" /* offset 16911 */
-  "\xf0\xa4\xbe\xa1\0" /* offset 16915 */
-  "\xf0\xa4\xbe\xb8\0" /* offset 16920 */
-  "\xf0\xa5\x81\x84\0" /* offset 16925 */
-  "\xe3\xbf\xbc\0" /* offset 16930 */
-  "\xe4\x80\x88\0" /* offset 16934 */
-  "\xf0\xa5\x83\xb3\0" /* offset 16938 */
-  "\xf0\xa5\x83\xb2\0" /* offset 16943 */
-  "\xf0\xa5\x84\x99\0" /* offset 16948 */
-  "\xf0\xa5\x84\xb3\0" /* offset 16953 */
-  "\xe7\x9c\x9e\0" /* offset 16958 */
-  "\xe7\x9c\x9f\0" /* offset 16962 */
-  "\xe7\x9e\x8b\0" /* offset 16966 */
-  "\xe4\x81\x86\0" /* offset 16970 */
-  "\xe4\x82\x96\0" /* offset 16974 */
-  "\xf0\xa5\x90\x9d\0" /* offset 16978 */
-  "\xe7\xa1\x8e\0" /* offset 16983 */
-  "\xe4\x83\xa3\0" /* offset 16987 */
-  "\xf0\xa5\x98\xa6\0" /* offset 16991 */
-  "\xf0\xa5\x9a\x9a\0" /* offset 16996 */
-  "\xf0\xa5\x9b\x85\0" /* offset 17001 */
-  "\xe7\xa7\xab\0" /* offset 17006 */
-  "\xe4\x84\xaf\0" /* offset 17010 */
-  "\xe7\xa9\x8a\0" /* offset 17014 */
-  "\xe7\xa9\x8f\0" /* offset 17018 */
-  "\xf0\xa5\xa5\xbc\0" /* offset 17022 */
-  "\xf0\xa5\xaa\xa7\0" /* offset 17027 */
-  "\xe7\xab\xae\0" /* offset 17032 */
-  "\xe4\x88\x82\0" /* offset 17036 */
-  "\xf0\xa5\xae\xab\0" /* offset 17040 */
-  "\xe7\xaf\x86\0" /* offset 17045 */
-  "\xe7\xaf\x89\0" /* offset 17049 */
-  "\xe4\x88\xa7\0" /* offset 17053 */
-  "\xf0\xa5\xb2\x80\0" /* offset 17057 */
-  "\xe7\xb3\x92\0" /* offset 17062 */
-  "\xe4\x8a\xa0\0" /* offset 17066 */
-  "\xe7\xb3\xa8\0" /* offset 17070 */
-  "\xe7\xb3\xa3\0" /* offset 17074 */
-  "\xe7\xb4\x80\0" /* offset 17078 */
-  "\xf0\xa5\xbe\x86\0" /* offset 17082 */
-  "\xe7\xb5\xa3\0" /* offset 17087 */
-  "\xe4\x8c\x81\0" /* offset 17091 */
-  "\xe7\xb7\x87\0" /* offset 17095 */
-  "\xe7\xb8\x82\0" /* offset 17099 */
-  "\xe7\xb9\x85\0" /* offset 17103 */
-  "\xe4\x8c\xb4\0" /* offset 17107 */
-  "\xf0\xa6\x88\xa8\0" /* offset 17111 */
-  "\xf0\xa6\x89\x87\0" /* offset 17116 */
-  "\xe4\x8d\x99\0" /* offset 17121 */
-  "\xf0\xa6\x8b\x99\0" /* offset 17125 */
-  "\xe7\xbd\xba\0" /* offset 17130 */
-  "\xf0\xa6\x8c\xbe\0" /* offset 17134 */
-  "\xe7\xbe\x95\0" /* offset 17139 */
-  "\xe7\xbf\xba\0" /* offset 17143 */
-  "\xf0\xa6\x93\x9a\0" /* offset 17147 */
-  "\xf0\xa6\x94\xa3\0" /* offset 17152 */
-  "\xe8\x81\xa0\0" /* offset 17157 */
-  "\xf0\xa6\x96\xa8\0" /* offset 17161 */
-  "\xe8\x81\xb0\0" /* offset 17166 */
-  "\xf0\xa3\x8d\x9f\0" /* offset 17170 */
-  "\xe4\x8f\x95\0" /* offset 17175 */
-  "\xe8\x82\xb2\0" /* offset 17179 */
-  "\xe8\x84\x83\0" /* offset 17183 */
-  "\xe4\x90\x8b\0" /* offset 17187 */
-  "\xe8\x84\xbe\0" /* offset 17191 */
-  "\xe5\xaa\xb5\0" /* offset 17195 */
-  "\xf0\xa6\x9e\xa7\0" /* offset 17199 */
-  "\xf0\xa6\x9e\xb5\0" /* offset 17204 */
-  "\xf0\xa3\x8e\x93\0" /* offset 17209 */
-  "\xf0\xa3\x8e\x9c\0" /* offset 17214 */
-  "\xe8\x88\x84\0" /* offset 17219 */
-  "\xe8\xbe\x9e\0" /* offset 17223 */
-  "\xe4\x91\xab\0" /* offset 17227 */
-  "\xe8\x8a\x91\0" /* offset 17231 */
-  "\xe8\x8a\x8b\0" /* offset 17235 */
-  "\xe8\x8a\x9d\0" /* offset 17239 */
-  "\xe5\x8a\xb3\0" /* offset 17243 */
-  "\xe8\x8a\xb1\0" /* offset 17247 */
-  "\xe8\x8a\xb3\0" /* offset 17251 */
-  "\xe8\x8a\xbd\0" /* offset 17255 */
-  "\xe8\x8b\xa6\0" /* offset 17259 */
-  "\xf0\xa6\xac\xbc\0" /* offset 17263 */
-  "\xe8\x8c\x9d\0" /* offset 17268 */
-  "\xe8\x8d\xa3\0" /* offset 17272 */
-  "\xe8\x8e\xad\0" /* offset 17276 */
-  "\xe8\x8c\xa3\0" /* offset 17280 */
-  "\xe8\x8e\xbd\0" /* offset 17284 */
-  "\xe8\x8f\xa7\0" /* offset 17288 */
-  "\xe8\x8d\x93\0" /* offset 17292 */
-  "\xe8\x8f\x8a\0" /* offset 17296 */
-  "\xe8\x8f\x8c\0" /* offset 17300 */
-  "\xe8\x8f\x9c\0" /* offset 17304 */
-  "\xf0\xa6\xb0\xb6\0" /* offset 17308 */
-  "\xf0\xa6\xb5\xab\0" /* offset 17313 */
-  "\xf0\xa6\xb3\x95\0" /* offset 17318 */
-  "\xe4\x94\xab\0" /* offset 17323 */
-  "\xe8\x93\xb1\0" /* offset 17327 */
-  "\xe8\x93\xb3\0" /* offset 17331 */
-  "\xe8\x94\x96\0" /* offset 17335 */
-  "\xf0\xa7\x8f\x8a\0" /* offset 17339 */
-  "\xe8\x95\xa4\0" /* offset 17344 */
-  "\xf0\xa6\xbc\xac\0" /* offset 17348 */
-  "\xe4\x95\x9d\0" /* offset 17353 */
-  "\xe4\x95\xa1\0" /* offset 17357 */
-  "\xf0\xa6\xbe\xb1\0" /* offset 17361 */
-  "\xf0\xa7\x83\x92\0" /* offset 17366 */
-  "\xe4\x95\xab\0" /* offset 17371 */
-  "\xe8\x99\x90\0" /* offset 17375 */
-  "\xe8\x99\xa7\0" /* offset 17379 */
-  "\xe8\x99\xa9\0" /* offset 17383 */
-  "\xe8\x9a\xa9\0" /* offset 17387 */
-  "\xe8\x9a\x88\0" /* offset 17391 */
-  "\xe8\x9c\x8e\0" /* offset 17395 */
-  "\xe8\x9b\xa2\0" /* offset 17399 */
-  "\xe8\x9c\xa8\0" /* offset 17403 */
-  "\xe8\x9d\xab\0" /* offset 17407 */
-  "\xe8\x9e\x86\0" /* offset 17411 */
-  "\xe4\x97\x97\0" /* offset 17415 */
-  "\xe8\x9f\xa1\0" /* offset 17419 */
-  "\xe8\xa0\x81\0" /* offset 17423 */
-  "\xe4\x97\xb9\0" /* offset 17427 */
-  "\xe8\xa1\xa0\0" /* offset 17431 */
-  "\xf0\xa7\x99\xa7\0" /* offset 17435 */
-  "\xe8\xa3\x97\0" /* offset 17440 */
-  "\xe8\xa3\x9e\0" /* offset 17444 */
-  "\xe4\x98\xb5\0" /* offset 17448 */
-  "\xe8\xa3\xba\0" /* offset 17452 */
-  "\xe3\x92\xbb\0" /* offset 17456 */
-  "\xf0\xa7\xa2\xae\0" /* offset 17460 */
-  "\xf0\xa7\xa5\xa6\0" /* offset 17465 */
-  "\xe4\x9a\xbe\0" /* offset 17470 */
-  "\xe4\x9b\x87\0" /* offset 17474 */
-  "\xe8\xaa\xa0\0" /* offset 17478 */
-  "\xf0\xa7\xb2\xa8\0" /* offset 17482 */
-  "\xe8\xb2\xab\0" /* offset 17487 */
-  "\xe8\xb3\x81\0" /* offset 17491 */
-  "\xe8\xb4\x9b\0" /* offset 17495 */
-  "\xe8\xb5\xb7\0" /* offset 17499 */
-  "\xf0\xa7\xbc\xaf\0" /* offset 17503 */
-  "\xf0\xa0\xa0\x84\0" /* offset 17508 */
-  "\xe8\xb7\x8b\0" /* offset 17513 */
-  "\xe8\xb6\xbc\0" /* offset 17517 */
-  "\xe8\xb7\xb0\0" /* offset 17521 */
-  "\xf0\xa0\xa3\x9e\0" /* offset 17525 */
-  "\xe8\xbb\x94\0" /* offset 17530 */
-  "\xf0\xa8\x97\x92\0" /* offset 17534 */
-  "\xf0\xa8\x97\xad\0" /* offset 17539 */
-  "\xe9\x82\x94\0" /* offset 17544 */
-  "\xe9\x83\xb1\0" /* offset 17548 */
-  "\xe9\x84\x91\0" /* offset 17552 */
-  "\xf0\xa8\x9c\xae\0" /* offset 17556 */
-  "\xe9\x84\x9b\0" /* offset 17561 */
-  "\xe9\x88\xb8\0" /* offset 17565 */
-  "\xe9\x8b\x97\0" /* offset 17569 */
-  "\xe9\x8b\x98\0" /* offset 17573 */
-  "\xe9\x89\xbc\0" /* offset 17577 */
-  "\xe9\x8f\xb9\0" /* offset 17581 */
-  "\xe9\x90\x95\0" /* offset 17585 */
-  "\xf0\xa8\xaf\xba\0" /* offset 17589 */
-  "\xe9\x96\x8b\0" /* offset 17594 */
-  "\xe4\xa6\x95\0" /* offset 17598 */
-  "\xe9\x96\xb7\0" /* offset 17602 */
-  "\xf0\xa8\xb5\xb7\0" /* offset 17606 */
-  "\xe4\xa7\xa6\0" /* offset 17611 */
-  "\xe9\x9b\x83\0" /* offset 17615 */
-  "\xe5\xb6\xb2\0" /* offset 17619 */
-  "\xe9\x9c\xa3\0" /* offset 17623 */
-  "\xf0\xa9\x85\x85\0" /* offset 17627 */
-  "\xf0\xa9\x88\x9a\0" /* offset 17632 */
-  "\xe4\xa9\xae\0" /* offset 17637 */
-  "\xe4\xa9\xb6\0" /* offset 17641 */
-  "\xe9\x9f\xa0\0" /* offset 17645 */
-  "\xf0\xa9\x90\x8a\0" /* offset 17649 */
-  "\xe4\xaa\xb2\0" /* offset 17654 */
-  "\xf0\xa9\x92\x96\0" /* offset 17658 */
-  "\xe9\xa0\xa9\0" /* offset 17663 */
-  "\xf0\xa9\x96\xb6\0" /* offset 17667 */
-  "\xe9\xa3\xa2\0" /* offset 17672 */
-  "\xe4\xac\xb3\0" /* offset 17676 */
-  "\xe9\xa4\xa9\0" /* offset 17680 */
-  "\xe9\xa6\xa7\0" /* offset 17684 */
-  "\xe9\xa7\x82\0" /* offset 17688 */
-  "\xe9\xa7\xbe\0" /* offset 17692 */
-  "\xe4\xaf\x8e\0" /* offset 17696 */
-  "\xf0\xa9\xac\xb0\0" /* offset 17700 */
-  "\xe9\xb1\x80\0" /* offset 17705 */
-  "\xe9\xb3\xbd\0" /* offset 17709 */
-  "\xe4\xb3\x8e\0" /* offset 17713 */
-  "\xe4\xb3\xad\0" /* offset 17717 */
-  "\xe9\xb5\xa7\0" /* offset 17721 */
-  "\xf0\xaa\x83\x8e\0" /* offset 17725 */
-  "\xe4\xb3\xb8\0" /* offset 17730 */
-  "\xf0\xaa\x84\x85\0" /* offset 17734 */
-  "\xf0\xaa\x88\x8e\0" /* offset 17739 */
-  "\xf0\xaa\x8a\x91\0" /* offset 17744 */
-  "\xe4\xb5\x96\0" /* offset 17749 */
-  "\xe9\xbb\xbe\0" /* offset 17753 */
-  "\xe9\xbc\x85\0" /* offset 17757 */
-  "\xe9\xbc\x8f\0" /* offset 17761 */
-  "\xe9\xbc\x96\0" /* offset 17765 */
-  "\xf0\xaa\x98\x80\0" /* offset 17769 */;
+  "\xcb\x90\0" /* offset 15007 */
+  "\xcb\x91\0" /* offset 15010 */
+  "\xc3\xa6\0" /* offset 15013 */
+  "\xca\x99\0" /* offset 15016 */
+  "\xc9\x93\0" /* offset 15019 */
+  "\xca\xa3\0" /* offset 15022 */
+  "\xea\xad\xa6\0" /* offset 15025 */
+  "\xca\xa5\0" /* offset 15029 */
+  "\xca\xa4\0" /* offset 15032 */
+  "\xc9\x96\0" /* offset 15035 */
+  "\xc9\x97\0" /* offset 15038 */
+  "\xe1\xb6\x91\0" /* offset 15041 */
+  "\xc9\x98\0" /* offset 15045 */
+  "\xc9\x9e\0" /* offset 15048 */
+  "\xca\xa9\0" /* offset 15051 */
+  "\xc9\xa4\0" /* offset 15054 */
+  "\xc9\xa2\0" /* offset 15057 */
+  "\xc9\xa0\0" /* offset 15060 */
+  "\xca\x9b\0" /* offset 15063 */
+  "\xca\x9c\0" /* offset 15066 */
+  "\xc9\xa7\0" /* offset 15069 */
+  "\xca\x84\0" /* offset 15072 */
+  "\xca\xaa\0" /* offset 15075 */
+  "\xca\xab\0" /* offset 15078 */
+  "\xc9\xac\0" /* offset 15081 */
+  "\xf0\x9d\xbc\x84\0" /* offset 15084 */
+  "\xea\x9e\x8e\0" /* offset 15089 */
+  "\xc9\xae\0" /* offset 15093 */
+  "\xf0\x9d\xbc\x85\0" /* offset 15096 */
+  "\xca\x8e\0" /* offset 15101 */
+  "\xf0\x9d\xbc\x86\0" /* offset 15104 */
+  "\xc3\xb8\0" /* offset 15109 */
+  "\xc9\xb6\0" /* offset 15112 */
+  "\xc9\xb7\0" /* offset 15115 */
+  "\xc9\xba\0" /* offset 15118 */
+  "\xf0\x9d\xbc\x88\0" /* offset 15121 */
+  "\xc9\xbd\0" /* offset 15126 */
+  "\xc9\xbe\0" /* offset 15129 */
+  "\xca\x80\0" /* offset 15132 */
+  "\xca\xa8\0" /* offset 15135 */
+  "\xca\xa6\0" /* offset 15138 */
+  "\xea\xad\xa7\0" /* offset 15141 */
+  "\xca\xa7\0" /* offset 15145 */
+  "\xca\x88\0" /* offset 15148 */
+  "\xe2\xb1\xb1\0" /* offset 15151 */
+  "\xca\x8f\0" /* offset 15155 */
+  "\xca\xa1\0" /* offset 15158 */
+  "\xca\xa2\0" /* offset 15161 */
+  "\xca\x98\0" /* offset 15164 */
+  "\xc7\x80\0" /* offset 15167 */
+  "\xc7\x81\0" /* offset 15170 */
+  "\xc7\x82\0" /* offset 15173 */
+  "\xf0\x9d\xbc\x8a\0" /* offset 15176 */
+  "\xf0\x9d\xbc\x9e\0" /* offset 15181 */
+  "\xf0\x91\x82\x99\xf0\x91\x82\xba\0" /* offset 15186 */
+  "\xf0\x91\x82\x9b\xf0\x91\x82\xba\0" /* offset 15195 */
+  "\xf0\x91\x82\xa5\xf0\x91\x82\xba\0" /* offset 15204 */
+  "\xf0\x91\x84\xb1\xf0\x91\x84\xa7\0" /* offset 15213 */
+  "\xf0\x91\x84\xb2\xf0\x91\x84\xa7\0" /* offset 15222 */
+  "\xf0\x91\x8d\x87\xf0\x91\x8c\xbe\0" /* offset 15231 */
+  "\xf0\x91\x8d\x87\xf0\x91\x8d\x97\0" /* offset 15240 */
+  "\xf0\x91\x92\xb9\xf0\x91\x92\xba\0" /* offset 15249 */
+  "\xf0\x91\x92\xb9\xf0\x91\x92\xb0\0" /* offset 15258 */
+  "\xf0\x91\x92\xb9\xf0\x91\x92\xbd\0" /* offset 15267 */
+  "\xf0\x91\x96\xb8\xf0\x91\x96\xaf\0" /* offset 15276 */
+  "\xf0\x91\x96\xb9\xf0\x91\x96\xaf\0" /* offset 15285 */
+  "\xf0\x91\xa4\xb5\xf0\x91\xa4\xb0\0" /* offset 15294 */
+  "\xf0\x9d\x85\x97\xf0\x9d\x85\xa5\0" /* offset 15303 */
+  "\xf0\x9d\x85\x98\xf0\x9d\x85\xa5\0" /* offset 15312 */
+  "\xf0\x9d\x85\x98\xf0\x9d\x85\xa5\xf0\x9d\x85\xae\0" /* offset 15321 */
+  "\xf0\x9d\x85\x98\xf0\x9d\x85\xa5\xf0\x9d\x85\xaf\0" /* offset 15334 */
+  "\xf0\x9d\x85\x98\xf0\x9d\x85\xa5\xf0\x9d\x85\xb0\0" /* offset 15347 */
+  "\xf0\x9d\x85\x98\xf0\x9d\x85\xa5\xf0\x9d\x85\xb1\0" /* offset 15360 */
+  "\xf0\x9d\x85\x98\xf0\x9d\x85\xa5\xf0\x9d\x85\xb2\0" /* offset 15373 */
+  "\xf0\x9d\x86\xb9\xf0\x9d\x85\xa5\0" /* offset 15386 */
+  "\xf0\x9d\x86\xba\xf0\x9d\x85\xa5\0" /* offset 15395 */
+  "\xf0\x9d\x86\xb9\xf0\x9d\x85\xa5\xf0\x9d\x85\xae\0" /* offset 15404 */
+  "\xf0\x9d\x86\xba\xf0\x9d\x85\xa5\xf0\x9d\x85\xae\0" /* offset 15417 */
+  "\xf0\x9d\x86\xb9\xf0\x9d\x85\xa5\xf0\x9d\x85\xaf\0" /* offset 15430 */
+  "\xf0\x9d\x86\xba\xf0\x9d\x85\xa5\xf0\x9d\x85\xaf\0" /* offset 15443 */
+  "\xc4\xb1\0" /* offset 15456 */
+  "\xc8\xb7\0" /* offset 15459 */
+  "\xce\x91\0" /* offset 15462 */
+  "\xce\x92\0" /* offset 15465 */
+  "\xce\x94\0" /* offset 15468 */
+  "\xce\x95\0" /* offset 15471 */
+  "\xce\x96\0" /* offset 15474 */
+  "\xce\x97\0" /* offset 15477 */
+  "\xce\x99\0" /* offset 15480 */
+  "\xce\x9a\0" /* offset 15483 */
+  "\xce\x9b\0" /* offset 15486 */
+  "\xce\x9c\0" /* offset 15489 */
+  "\xce\x9d\0" /* offset 15492 */
+  "\xce\x9e\0" /* offset 15495 */
+  "\xce\x9f\0" /* offset 15498 */
+  "\xce\xa1\0" /* offset 15501 */
+  "\xce\xa4\0" /* offset 15504 */
+  "\xce\xa6\0" /* offset 15507 */
+  "\xce\xa7\0" /* offset 15510 */
+  "\xce\xa8\0" /* offset 15513 */
+  "\xe2\x88\x87\0" /* offset 15516 */
+  "\xce\xb1\0" /* offset 15520 */
+  "\xce\xb6\0" /* offset 15523 */
+  "\xce\xb7\0" /* offset 15526 */
+  "\xce\xbb\0" /* offset 15529 */
+  "\xce\xbd\0" /* offset 15532 */
+  "\xce\xbe\0" /* offset 15535 */
+  "\xce\xbf\0" /* offset 15538 */
+  "\xcf\x83\0" /* offset 15541 */
+  "\xcf\x84\0" /* offset 15544 */
+  "\xcf\x85\0" /* offset 15547 */
+  "\xcf\x88\0" /* offset 15550 */
+  "\xcf\x89\0" /* offset 15553 */
+  "\xe2\x88\x82\0" /* offset 15556 */
+  "\xcf\x9c\0" /* offset 15560 */
+  "\xcf\x9d\0" /* offset 15563 */
+  "\xd9\xae\0" /* offset 15566 */
+  "\xda\xa1\0" /* offset 15569 */
+  "\xd9\xaf\0" /* offset 15572 */
+  "\x30\x2e\0" /* offset 15575 */
+  "\x30\x2c\0" /* offset 15578 */
+  "\x31\x2c\0" /* offset 15581 */
+  "\x32\x2c\0" /* offset 15584 */
+  "\x33\x2c\0" /* offset 15587 */
+  "\x34\x2c\0" /* offset 15590 */
+  "\x35\x2c\0" /* offset 15593 */
+  "\x36\x2c\0" /* offset 15596 */
+  "\x37\x2c\0" /* offset 15599 */
+  "\x38\x2c\0" /* offset 15602 */
+  "\x39\x2c\0" /* offset 15605 */
+  "\x28\x41\x29\0" /* offset 15608 */
+  "\x28\x42\x29\0" /* offset 15612 */
+  "\x28\x43\x29\0" /* offset 15616 */
+  "\x28\x44\x29\0" /* offset 15620 */
+  "\x28\x45\x29\0" /* offset 15624 */
+  "\x28\x46\x29\0" /* offset 15628 */
+  "\x28\x47\x29\0" /* offset 15632 */
+  "\x28\x48\x29\0" /* offset 15636 */
+  "\x28\x49\x29\0" /* offset 15640 */
+  "\x28\x4a\x29\0" /* offset 15644 */
+  "\x28\x4b\x29\0" /* offset 15648 */
+  "\x28\x4c\x29\0" /* offset 15652 */
+  "\x28\x4d\x29\0" /* offset 15656 */
+  "\x28\x4e\x29\0" /* offset 15660 */
+  "\x28\x4f\x29\0" /* offset 15664 */
+  "\x28\x50\x29\0" /* offset 15668 */
+  "\x28\x51\x29\0" /* offset 15672 */
+  "\x28\x52\x29\0" /* offset 15676 */
+  "\x28\x53\x29\0" /* offset 15680 */
+  "\x28\x54\x29\0" /* offset 15684 */
+  "\x28\x55\x29\0" /* offset 15688 */
+  "\x28\x56\x29\0" /* offset 15692 */
+  "\x28\x57\x29\0" /* offset 15696 */
+  "\x28\x58\x29\0" /* offset 15700 */
+  "\x28\x59\x29\0" /* offset 15704 */
+  "\x28\x5a\x29\0" /* offset 15708 */
+  "\xe3\x80\x94\x53\xe3\x80\x95\0" /* offset 15712 */
+  "\x43\x44\0" /* offset 15720 */
+  "\x57\x5a\0" /* offset 15723 */
+  "\x48\x56\0" /* offset 15726 */
+  "\x53\x44\0" /* offset 15729 */
+  "\x53\x53\0" /* offset 15732 */
+  "\x50\x50\x56\0" /* offset 15735 */
+  "\x57\x43\0" /* offset 15739 */
+  "\x4d\x43\0" /* offset 15742 */
+  "\x4d\x44\0" /* offset 15745 */
+  "\x4d\x52\0" /* offset 15748 */
+  "\x44\x4a\0" /* offset 15751 */
+  "\xe3\x81\xbb\xe3\x81\x8b\0" /* offset 15754 */
+  "\xe3\x82\xb3\xe3\x82\xb3\0" /* offset 15761 */
+  "\xe5\xad\x97\0" /* offset 15768 */
+  "\xe5\x8f\x8c\0" /* offset 15772 */
+  "\xe5\xa4\x9a\0" /* offset 15776 */
+  "\xe8\xa7\xa3\0" /* offset 15780 */
+  "\xe4\xba\xa4\0" /* offset 15784 */
+  "\xe6\x98\xa0\0" /* offset 15788 */
+  "\xe7\x84\xa1\0" /* offset 15792 */
+  "\xe5\x89\x8d\0" /* offset 15796 */
+  "\xe5\xbe\x8c\0" /* offset 15800 */
+  "\xe5\x86\x8d\0" /* offset 15804 */
+  "\xe6\x96\xb0\0" /* offset 15808 */
+  "\xe5\x88\x9d\0" /* offset 15812 */
+  "\xe7\xb5\x82\0" /* offset 15816 */
+  "\xe8\xb2\xa9\0" /* offset 15820 */
+  "\xe5\xa3\xb0\0" /* offset 15824 */
+  "\xe5\x90\xb9\0" /* offset 15828 */
+  "\xe6\xbc\x94\0" /* offset 15832 */
+  "\xe6\x8a\x95\0" /* offset 15836 */
+  "\xe6\x8d\x95\0" /* offset 15840 */
+  "\xe9\x81\x8a\0" /* offset 15844 */
+  "\xe6\x8c\x87\0" /* offset 15848 */
+  "\xe6\x89\x93\0" /* offset 15852 */
+  "\xe7\xa6\x81\0" /* offset 15856 */
+  "\xe7\xa9\xba\0" /* offset 15860 */
+  "\xe5\x90\x88\0" /* offset 15864 */
+  "\xe6\xba\x80\0" /* offset 15868 */
+  "\xe7\x94\xb3\0" /* offset 15872 */
+  "\xe5\x89\xb2\0" /* offset 15876 */
+  "\xe5\x96\xb6\0" /* offset 15880 */
+  "\xe9\x85\x8d\0" /* offset 15884 */
+  "\xe3\x80\x94\xe6\x9c\xac\xe3\x80\x95\0" /* offset 15888 */
+  "\xe3\x80\x94\xe4\xb8\x89\xe3\x80\x95\0" /* offset 15898 */
+  "\xe3\x80\x94\xe4\xba\x8c\xe3\x80\x95\0" /* offset 15908 */
+  "\xe3\x80\x94\xe5\xae\x89\xe3\x80\x95\0" /* offset 15918 */
+  "\xe3\x80\x94\xe7\x82\xb9\xe3\x80\x95\0" /* offset 15928 */
+  "\xe3\x80\x94\xe6\x89\x93\xe3\x80\x95\0" /* offset 15938 */
+  "\xe3\x80\x94\xe7\x9b\x97\xe3\x80\x95\0" /* offset 15948 */
+  "\xe3\x80\x94\xe5\x8b\x9d\xe3\x80\x95\0" /* offset 15958 */
+  "\xe3\x80\x94\xe6\x95\x97\xe3\x80\x95\0" /* offset 15968 */
+  "\xe5\xbe\x97\0" /* offset 15978 */
+  "\xe5\x8f\xaf\0" /* offset 15982 */
+  "\xe4\xb8\xbd\0" /* offset 15986 */
+  "\xe4\xb8\xb8\0" /* offset 15990 */
+  "\xe4\xb9\x81\0" /* offset 15994 */
+  "\xf0\xa0\x84\xa2\0" /* offset 15998 */
+  "\xe4\xbd\xa0\0" /* offset 16003 */
+  "\xe4\xbe\xbb\0" /* offset 16007 */
+  "\xe5\x80\x82\0" /* offset 16011 */
+  "\xe5\x81\xba\0" /* offset 16015 */
+  "\xe5\x82\x99\0" /* offset 16019 */
+  "\xe5\x83\x8f\0" /* offset 16023 */
+  "\xe3\x92\x9e\0" /* offset 16027 */
+  "\xf0\xa0\x98\xba\0" /* offset 16031 */
+  "\xe5\x85\x94\0" /* offset 16036 */
+  "\xe5\x85\xa4\0" /* offset 16040 */
+  "\xe5\x85\xb7\0" /* offset 16044 */
+  "\xf0\xa0\x94\x9c\0" /* offset 16048 */
+  "\xe3\x92\xb9\0" /* offset 16053 */
+  "\xe5\x85\xa7\0" /* offset 16057 */
+  "\xf0\xa0\x95\x8b\0" /* offset 16061 */
+  "\xe5\x86\x97\0" /* offset 16066 */
+  "\xe5\x86\xa4\0" /* offset 16070 */
+  "\xe4\xbb\x8c\0" /* offset 16074 */
+  "\xe5\x86\xac\0" /* offset 16078 */
+  "\xf0\xa9\x87\x9f\0" /* offset 16082 */
+  "\xe5\x88\x83\0" /* offset 16087 */
+  "\xe3\x93\x9f\0" /* offset 16091 */
+  "\xe5\x88\xbb\0" /* offset 16095 */
+  "\xe5\x89\x86\0" /* offset 16099 */
+  "\xe5\x89\xb7\0" /* offset 16103 */
+  "\xe3\x94\x95\0" /* offset 16107 */
+  "\xe5\x8c\x85\0" /* offset 16111 */
+  "\xe5\x8c\x86\0" /* offset 16115 */
+  "\xe5\x8d\x89\0" /* offset 16119 */
+  "\xe5\x8d\x9a\0" /* offset 16123 */
+  "\xe5\x8d\xb3\0" /* offset 16127 */
+  "\xe5\x8d\xbd\0" /* offset 16131 */
+  "\xe5\x8d\xbf\0" /* offset 16135 */
+  "\xf0\xa0\xa8\xac\0" /* offset 16139 */
+  "\xe7\x81\xb0\0" /* offset 16144 */
+  "\xe5\x8f\x8a\0" /* offset 16148 */
+  "\xe5\x8f\x9f\0" /* offset 16152 */
+  "\xf0\xa0\xad\xa3\0" /* offset 16156 */
+  "\xe5\x8f\xab\0" /* offset 16161 */
+  "\xe5\x8f\xb1\0" /* offset 16165 */
+  "\xe5\x90\x86\0" /* offset 16169 */
+  "\xe5\x92\x9e\0" /* offset 16173 */
+  "\xe5\x90\xb8\0" /* offset 16177 */
+  "\xe5\x91\x88\0" /* offset 16181 */
+  "\xe5\x91\xa8\0" /* offset 16185 */
+  "\xe5\x92\xa2\0" /* offset 16189 */
+  "\xe5\x93\xb6\0" /* offset 16193 */
+  "\xe5\x94\x90\0" /* offset 16197 */
+  "\xe5\x95\x93\0" /* offset 16201 */
+  "\xe5\x95\xa3\0" /* offset 16205 */
+  "\xe5\x96\x84\0" /* offset 16209 */
+  "\xe5\x96\xab\0" /* offset 16213 */
+  "\xe5\x96\xb3\0" /* offset 16217 */
+  "\xe5\x97\x82\0" /* offset 16221 */
+  "\xe5\x9c\x96\0" /* offset 16225 */
+  "\xe5\x9c\x97\0" /* offset 16229 */
+  "\xe5\x99\x91\0" /* offset 16233 */
+  "\xe5\x99\xb4\0" /* offset 16237 */
+  "\xe5\xa3\xae\0" /* offset 16241 */
+  "\xe5\x9f\x8e\0" /* offset 16245 */
+  "\xe5\x9f\xb4\0" /* offset 16249 */
+  "\xe5\xa0\x8d\0" /* offset 16253 */
+  "\xe5\x9e\x8b\0" /* offset 16257 */
+  "\xe5\xa0\xb2\0" /* offset 16261 */
+  "\xe5\xa0\xb1\0" /* offset 16265 */
+  "\xe5\xa2\xac\0" /* offset 16269 */
+  "\xf0\xa1\x93\xa4\0" /* offset 16273 */
+  "\xe5\xa3\xb2\0" /* offset 16278 */
+  "\xe5\xa3\xb7\0" /* offset 16282 */
+  "\xe5\xa4\x86\0" /* offset 16286 */
+  "\xe5\xa4\xa2\0" /* offset 16290 */
+  "\xe5\xa5\xa2\0" /* offset 16294 */
+  "\xf0\xa1\x9a\xa8\0" /* offset 16298 */
+  "\xf0\xa1\x9b\xaa\0" /* offset 16303 */
+  "\xe5\xa7\xac\0" /* offset 16308 */
+  "\xe5\xa8\x9b\0" /* offset 16312 */
+  "\xe5\xa8\xa7\0" /* offset 16316 */
+  "\xe5\xa7\x98\0" /* offset 16320 */
+  "\xe5\xa9\xa6\0" /* offset 16324 */
+  "\xe3\x9b\xae\0" /* offset 16328 */
+  "\xe3\x9b\xbc\0" /* offset 16332 */
+  "\xe5\xac\x88\0" /* offset 16336 */
+  "\xe5\xac\xbe\0" /* offset 16340 */
+  "\xf0\xa1\xa7\x88\0" /* offset 16344 */
+  "\xe5\xaf\x83\0" /* offset 16349 */
+  "\xe5\xaf\x98\0" /* offset 16353 */
+  "\xe5\xaf\xb3\0" /* offset 16357 */
+  "\xf0\xa1\xac\x98\0" /* offset 16361 */
+  "\xe5\xaf\xbf\0" /* offset 16366 */
+  "\xe5\xb0\x86\0" /* offset 16370 */
+  "\xe5\xbd\x93\0" /* offset 16374 */
+  "\xe3\x9e\x81\0" /* offset 16378 */
+  "\xe5\xb1\xa0\0" /* offset 16382 */
+  "\xe5\xb3\x80\0" /* offset 16386 */
+  "\xe5\xb2\x8d\0" /* offset 16390 */
+  "\xf0\xa1\xb7\xa4\0" /* offset 16394 */
+  "\xe5\xb5\x83\0" /* offset 16399 */
+  "\xf0\xa1\xb7\xa6\0" /* offset 16403 */
+  "\xe5\xb5\xae\0" /* offset 16408 */
+  "\xe5\xb5\xab\0" /* offset 16412 */
+  "\xe5\xb5\xbc\0" /* offset 16416 */
+  "\xe5\xb7\xa1\0" /* offset 16420 */
+  "\xe5\xb7\xa2\0" /* offset 16424 */
+  "\xe3\xa0\xaf\0" /* offset 16428 */
+  "\xe5\xb7\xbd\0" /* offset 16432 */
+  "\xe5\xb8\xa8\0" /* offset 16436 */
+  "\xe5\xb8\xbd\0" /* offset 16440 */
+  "\xe5\xb9\xa9\0" /* offset 16444 */
+  "\xe3\xa1\xa2\0" /* offset 16448 */
+  "\xf0\xa2\x86\x83\0" /* offset 16452 */
+  "\xe3\xa1\xbc\0" /* offset 16457 */
+  "\xe5\xba\xb0\0" /* offset 16461 */
+  "\xe5\xba\xb3\0" /* offset 16465 */
+  "\xe5\xba\xb6\0" /* offset 16469 */
+  "\xf0\xaa\x8e\x92\0" /* offset 16473 */
+  "\xf0\xa2\x8c\xb1\0" /* offset 16478 */
+  "\xe8\x88\x81\0" /* offset 16483 */
+  "\xe5\xbc\xa2\0" /* offset 16487 */
+  "\xe3\xa3\x87\0" /* offset 16491 */
+  "\xf0\xa3\x8a\xb8\0" /* offset 16495 */
+  "\xf0\xa6\x87\x9a\0" /* offset 16500 */
+  "\xe5\xbd\xa2\0" /* offset 16505 */
+  "\xe5\xbd\xab\0" /* offset 16509 */
+  "\xe3\xa3\xa3\0" /* offset 16513 */
+  "\xe5\xbe\x9a\0" /* offset 16517 */
+  "\xe5\xbf\x8d\0" /* offset 16521 */
+  "\xe5\xbf\x97\0" /* offset 16525 */
+  "\xe5\xbf\xb9\0" /* offset 16529 */
+  "\xe6\x82\x81\0" /* offset 16533 */
+  "\xe3\xa4\xba\0" /* offset 16537 */
+  "\xe3\xa4\x9c\0" /* offset 16541 */
+  "\xf0\xa2\x9b\x94\0" /* offset 16545 */
+  "\xe6\x83\x87\0" /* offset 16550 */
+  "\xe6\x85\x88\0" /* offset 16554 */
+  "\xe6\x85\x8c\0" /* offset 16558 */
+  "\xe6\x85\xba\0" /* offset 16562 */
+  "\xe6\x86\xb2\0" /* offset 16566 */
+  "\xe6\x86\xa4\0" /* offset 16570 */
+  "\xe6\x86\xaf\0" /* offset 16574 */
+  "\xe6\x87\x9e\0" /* offset 16578 */
+  "\xe6\x88\x90\0" /* offset 16582 */
+  "\xe6\x88\x9b\0" /* offset 16586 */
+  "\xe6\x89\x9d\0" /* offset 16590 */
+  "\xe6\x8a\xb1\0" /* offset 16594 */
+  "\xe6\x8b\x94\0" /* offset 16598 */
+  "\xe6\x8d\x90\0" /* offset 16602 */
+  "\xf0\xa2\xac\x8c\0" /* offset 16606 */
+  "\xe6\x8c\xbd\0" /* offset 16611 */
+  "\xe6\x8b\xbc\0" /* offset 16615 */
+  "\xe6\x8d\xa8\0" /* offset 16619 */
+  "\xe6\x8e\x83\0" /* offset 16623 */
+  "\xe6\x8f\xa4\0" /* offset 16627 */
+  "\xf0\xa2\xaf\xb1\0" /* offset 16631 */
+  "\xe6\x90\xa2\0" /* offset 16636 */
+  "\xe6\x8f\x85\0" /* offset 16640 */
+  "\xe6\x8e\xa9\0" /* offset 16644 */
+  "\xe3\xa8\xae\0" /* offset 16648 */
+  "\xe6\x91\xa9\0" /* offset 16652 */
+  "\xe6\x91\xbe\0" /* offset 16656 */
+  "\xe6\x92\x9d\0" /* offset 16660 */
+  "\xe6\x91\xb7\0" /* offset 16664 */
+  "\xe3\xa9\xac\0" /* offset 16668 */
+  "\xe6\x95\xac\0" /* offset 16672 */
+  "\xf0\xa3\x80\x8a\0" /* offset 16676 */
+  "\xe6\x97\xa3\0" /* offset 16681 */
+  "\xe6\x9b\xb8\0" /* offset 16685 */
+  "\xe6\x99\x89\0" /* offset 16689 */
+  "\xe3\xac\x99\0" /* offset 16693 */
+  "\xe3\xac\x88\0" /* offset 16697 */
+  "\xe3\xab\xa4\0" /* offset 16701 */
+  "\xe5\x86\x92\0" /* offset 16705 */
+  "\xe5\x86\x95\0" /* offset 16709 */
+  "\xe6\x9c\x80\0" /* offset 16713 */
+  "\xe6\x9a\x9c\0" /* offset 16717 */
+  "\xe8\x82\xad\0" /* offset 16721 */
+  "\xe4\x8f\x99\0" /* offset 16725 */
+  "\xe6\x9c\xa1\0" /* offset 16729 */
+  "\xe6\x9d\x9e\0" /* offset 16733 */
+  "\xe6\x9d\x93\0" /* offset 16737 */
+  "\xf0\xa3\x8f\x83\0" /* offset 16741 */
+  "\xe3\xad\x89\0" /* offset 16746 */
+  "\xe6\x9f\xba\0" /* offset 16750 */
+  "\xe6\x9e\x85\0" /* offset 16754 */
+  "\xe6\xa1\x92\0" /* offset 16758 */
+  "\xf0\xa3\x91\xad\0" /* offset 16762 */
+  "\xe6\xa2\x8e\0" /* offset 16767 */
+  "\xe6\xa0\x9f\0" /* offset 16771 */
+  "\xe6\xa4\x94\0" /* offset 16775 */
+  "\xe6\xa5\x82\0" /* offset 16779 */
+  "\xe6\xa6\xa3\0" /* offset 16783 */
+  "\xe6\xa7\xaa\0" /* offset 16787 */
+  "\xe6\xaa\xa8\0" /* offset 16791 */
+  "\xf0\xa3\x9a\xa3\0" /* offset 16795 */
+  "\xe6\xab\x9b\0" /* offset 16800 */
+  "\xe3\xb0\x98\0" /* offset 16804 */
+  "\xe6\xac\xa1\0" /* offset 16808 */
+  "\xf0\xa3\xa2\xa7\0" /* offset 16812 */
+  "\xe6\xad\x94\0" /* offset 16817 */
+  "\xe3\xb1\x8e\0" /* offset 16821 */
+  "\xe6\xad\xb2\0" /* offset 16825 */
+  "\xe6\xae\x9f\0" /* offset 16829 */
+  "\xe6\xae\xbb\0" /* offset 16833 */
+  "\xf0\xa3\xaa\x8d\0" /* offset 16837 */
+  "\xf0\xa1\xb4\x8b\0" /* offset 16842 */
+  "\xf0\xa3\xab\xba\0" /* offset 16847 */
+  "\xe6\xb1\x8e\0" /* offset 16852 */
+  "\xf0\xa3\xb2\xbc\0" /* offset 16856 */
+  "\xe6\xb2\xbf\0" /* offset 16861 */
+  "\xe6\xb3\x8d\0" /* offset 16865 */
+  "\xe6\xb1\xa7\0" /* offset 16869 */
+  "\xe6\xb4\x96\0" /* offset 16873 */
+  "\xe6\xb4\xbe\0" /* offset 16877 */
+  "\xe6\xb5\xa9\0" /* offset 16881 */
+  "\xe6\xb5\xb8\0" /* offset 16885 */
+  "\xe6\xb6\x85\0" /* offset 16889 */
+  "\xf0\xa3\xb4\x9e\0" /* offset 16893 */
+  "\xe6\xb4\xb4\0" /* offset 16898 */
+  "\xe6\xb8\xaf\0" /* offset 16902 */
+  "\xe6\xb9\xae\0" /* offset 16906 */
+  "\xe3\xb4\xb3\0" /* offset 16910 */
+  "\xe6\xbb\x87\0" /* offset 16914 */
+  "\xf0\xa3\xbb\x91\0" /* offset 16918 */
+  "\xe6\xb7\xb9\0" /* offset 16923 */
+  "\xe6\xbd\xae\0" /* offset 16927 */
+  "\xf0\xa3\xbd\x9e\0" /* offset 16931 */
+  "\xf0\xa3\xbe\x8e\0" /* offset 16936 */
+  "\xe6\xbf\x86\0" /* offset 16941 */
+  "\xe7\x80\xb9\0" /* offset 16945 */
+  "\xe7\x80\x9b\0" /* offset 16949 */
+  "\xe3\xb6\x96\0" /* offset 16953 */
+  "\xe7\x81\x8a\0" /* offset 16957 */
+  "\xe7\x81\xbd\0" /* offset 16961 */
+  "\xe7\x81\xb7\0" /* offset 16965 */
+  "\xe7\x82\xad\0" /* offset 16969 */
+  "\xf0\xa0\x94\xa5\0" /* offset 16973 */
+  "\xe7\x85\x85\0" /* offset 16978 */
+  "\xf0\xa4\x89\xa3\0" /* offset 16982 */
+  "\xe7\x86\x9c\0" /* offset 16987 */
+  "\xf0\xa4\x8e\xab\0" /* offset 16991 */
+  "\xe7\x88\xa8\0" /* offset 16996 */
+  "\xe7\x89\x90\0" /* offset 17000 */
+  "\xf0\xa4\x98\x88\0" /* offset 17004 */
+  "\xe7\x8a\x80\0" /* offset 17009 */
+  "\xe7\x8a\x95\0" /* offset 17013 */
+  "\xf0\xa4\x9c\xb5\0" /* offset 17017 */
+  "\xf0\xa4\xa0\x94\0" /* offset 17022 */
+  "\xe7\x8d\xba\0" /* offset 17027 */
+  "\xe7\x8e\x8b\0" /* offset 17031 */
+  "\xe3\xba\xac\0" /* offset 17035 */
+  "\xe7\x8e\xa5\0" /* offset 17039 */
+  "\xe3\xba\xb8\0" /* offset 17043 */
+  "\xe7\x91\x87\0" /* offset 17047 */
+  "\xe7\x91\x9c\0" /* offset 17051 */
+  "\xe7\x92\x85\0" /* offset 17055 */
+  "\xe7\x93\x8a\0" /* offset 17059 */
+  "\xe3\xbc\x9b\0" /* offset 17063 */
+  "\xe7\x94\xa4\0" /* offset 17067 */
+  "\xf0\xa4\xb0\xb6\0" /* offset 17071 */
+  "\xe7\x94\xbe\0" /* offset 17076 */
+  "\xf0\xa4\xb2\x92\0" /* offset 17080 */
+  "\xf0\xa2\x86\x9f\0" /* offset 17085 */
+  "\xe7\x98\x90\0" /* offset 17090 */
+  "\xf0\xa4\xbe\xa1\0" /* offset 17094 */
+  "\xf0\xa4\xbe\xb8\0" /* offset 17099 */
+  "\xf0\xa5\x81\x84\0" /* offset 17104 */
+  "\xe3\xbf\xbc\0" /* offset 17109 */
+  "\xe4\x80\x88\0" /* offset 17113 */
+  "\xf0\xa5\x83\xb3\0" /* offset 17117 */
+  "\xf0\xa5\x83\xb2\0" /* offset 17122 */
+  "\xf0\xa5\x84\x99\0" /* offset 17127 */
+  "\xf0\xa5\x84\xb3\0" /* offset 17132 */
+  "\xe7\x9c\x9e\0" /* offset 17137 */
+  "\xe7\x9c\x9f\0" /* offset 17141 */
+  "\xe7\x9e\x8b\0" /* offset 17145 */
+  "\xe4\x81\x86\0" /* offset 17149 */
+  "\xe4\x82\x96\0" /* offset 17153 */
+  "\xf0\xa5\x90\x9d\0" /* offset 17157 */
+  "\xe7\xa1\x8e\0" /* offset 17162 */
+  "\xe4\x83\xa3\0" /* offset 17166 */
+  "\xf0\xa5\x98\xa6\0" /* offset 17170 */
+  "\xf0\xa5\x9a\x9a\0" /* offset 17175 */
+  "\xf0\xa5\x9b\x85\0" /* offset 17180 */
+  "\xe7\xa7\xab\0" /* offset 17185 */
+  "\xe4\x84\xaf\0" /* offset 17189 */
+  "\xe7\xa9\x8a\0" /* offset 17193 */
+  "\xe7\xa9\x8f\0" /* offset 17197 */
+  "\xf0\xa5\xa5\xbc\0" /* offset 17201 */
+  "\xf0\xa5\xaa\xa7\0" /* offset 17206 */
+  "\xe7\xab\xae\0" /* offset 17211 */
+  "\xe4\x88\x82\0" /* offset 17215 */
+  "\xf0\xa5\xae\xab\0" /* offset 17219 */
+  "\xe7\xaf\x86\0" /* offset 17224 */
+  "\xe7\xaf\x89\0" /* offset 17228 */
+  "\xe4\x88\xa7\0" /* offset 17232 */
+  "\xf0\xa5\xb2\x80\0" /* offset 17236 */
+  "\xe7\xb3\x92\0" /* offset 17241 */
+  "\xe4\x8a\xa0\0" /* offset 17245 */
+  "\xe7\xb3\xa8\0" /* offset 17249 */
+  "\xe7\xb3\xa3\0" /* offset 17253 */
+  "\xe7\xb4\x80\0" /* offset 17257 */
+  "\xf0\xa5\xbe\x86\0" /* offset 17261 */
+  "\xe7\xb5\xa3\0" /* offset 17266 */
+  "\xe4\x8c\x81\0" /* offset 17270 */
+  "\xe7\xb7\x87\0" /* offset 17274 */
+  "\xe7\xb8\x82\0" /* offset 17278 */
+  "\xe7\xb9\x85\0" /* offset 17282 */
+  "\xe4\x8c\xb4\0" /* offset 17286 */
+  "\xf0\xa6\x88\xa8\0" /* offset 17290 */
+  "\xf0\xa6\x89\x87\0" /* offset 17295 */
+  "\xe4\x8d\x99\0" /* offset 17300 */
+  "\xf0\xa6\x8b\x99\0" /* offset 17304 */
+  "\xe7\xbd\xba\0" /* offset 17309 */
+  "\xf0\xa6\x8c\xbe\0" /* offset 17313 */
+  "\xe7\xbe\x95\0" /* offset 17318 */
+  "\xe7\xbf\xba\0" /* offset 17322 */
+  "\xf0\xa6\x93\x9a\0" /* offset 17326 */
+  "\xf0\xa6\x94\xa3\0" /* offset 17331 */
+  "\xe8\x81\xa0\0" /* offset 17336 */
+  "\xf0\xa6\x96\xa8\0" /* offset 17340 */
+  "\xe8\x81\xb0\0" /* offset 17345 */
+  "\xf0\xa3\x8d\x9f\0" /* offset 17349 */
+  "\xe4\x8f\x95\0" /* offset 17354 */
+  "\xe8\x82\xb2\0" /* offset 17358 */
+  "\xe8\x84\x83\0" /* offset 17362 */
+  "\xe4\x90\x8b\0" /* offset 17366 */
+  "\xe8\x84\xbe\0" /* offset 17370 */
+  "\xe5\xaa\xb5\0" /* offset 17374 */
+  "\xf0\xa6\x9e\xa7\0" /* offset 17378 */
+  "\xf0\xa6\x9e\xb5\0" /* offset 17383 */
+  "\xf0\xa3\x8e\x93\0" /* offset 17388 */
+  "\xf0\xa3\x8e\x9c\0" /* offset 17393 */
+  "\xe8\x88\x84\0" /* offset 17398 */
+  "\xe8\xbe\x9e\0" /* offset 17402 */
+  "\xe4\x91\xab\0" /* offset 17406 */
+  "\xe8\x8a\x91\0" /* offset 17410 */
+  "\xe8\x8a\x8b\0" /* offset 17414 */
+  "\xe8\x8a\x9d\0" /* offset 17418 */
+  "\xe5\x8a\xb3\0" /* offset 17422 */
+  "\xe8\x8a\xb1\0" /* offset 17426 */
+  "\xe8\x8a\xb3\0" /* offset 17430 */
+  "\xe8\x8a\xbd\0" /* offset 17434 */
+  "\xe8\x8b\xa6\0" /* offset 17438 */
+  "\xf0\xa6\xac\xbc\0" /* offset 17442 */
+  "\xe8\x8c\x9d\0" /* offset 17447 */
+  "\xe8\x8d\xa3\0" /* offset 17451 */
+  "\xe8\x8e\xad\0" /* offset 17455 */
+  "\xe8\x8c\xa3\0" /* offset 17459 */
+  "\xe8\x8e\xbd\0" /* offset 17463 */
+  "\xe8\x8f\xa7\0" /* offset 17467 */
+  "\xe8\x8d\x93\0" /* offset 17471 */
+  "\xe8\x8f\x8a\0" /* offset 17475 */
+  "\xe8\x8f\x8c\0" /* offset 17479 */
+  "\xe8\x8f\x9c\0" /* offset 17483 */
+  "\xf0\xa6\xb0\xb6\0" /* offset 17487 */
+  "\xf0\xa6\xb5\xab\0" /* offset 17492 */
+  "\xf0\xa6\xb3\x95\0" /* offset 17497 */
+  "\xe4\x94\xab\0" /* offset 17502 */
+  "\xe8\x93\xb1\0" /* offset 17506 */
+  "\xe8\x93\xb3\0" /* offset 17510 */
+  "\xe8\x94\x96\0" /* offset 17514 */
+  "\xf0\xa7\x8f\x8a\0" /* offset 17518 */
+  "\xe8\x95\xa4\0" /* offset 17523 */
+  "\xf0\xa6\xbc\xac\0" /* offset 17527 */
+  "\xe4\x95\x9d\0" /* offset 17532 */
+  "\xe4\x95\xa1\0" /* offset 17536 */
+  "\xf0\xa6\xbe\xb1\0" /* offset 17540 */
+  "\xf0\xa7\x83\x92\0" /* offset 17545 */
+  "\xe4\x95\xab\0" /* offset 17550 */
+  "\xe8\x99\x90\0" /* offset 17554 */
+  "\xe8\x99\xa7\0" /* offset 17558 */
+  "\xe8\x99\xa9\0" /* offset 17562 */
+  "\xe8\x9a\xa9\0" /* offset 17566 */
+  "\xe8\x9a\x88\0" /* offset 17570 */
+  "\xe8\x9c\x8e\0" /* offset 17574 */
+  "\xe8\x9b\xa2\0" /* offset 17578 */
+  "\xe8\x9c\xa8\0" /* offset 17582 */
+  "\xe8\x9d\xab\0" /* offset 17586 */
+  "\xe8\x9e\x86\0" /* offset 17590 */
+  "\xe4\x97\x97\0" /* offset 17594 */
+  "\xe8\x9f\xa1\0" /* offset 17598 */
+  "\xe8\xa0\x81\0" /* offset 17602 */
+  "\xe4\x97\xb9\0" /* offset 17606 */
+  "\xe8\xa1\xa0\0" /* offset 17610 */
+  "\xf0\xa7\x99\xa7\0" /* offset 17614 */
+  "\xe8\xa3\x97\0" /* offset 17619 */
+  "\xe8\xa3\x9e\0" /* offset 17623 */
+  "\xe4\x98\xb5\0" /* offset 17627 */
+  "\xe8\xa3\xba\0" /* offset 17631 */
+  "\xe3\x92\xbb\0" /* offset 17635 */
+  "\xf0\xa7\xa2\xae\0" /* offset 17639 */
+  "\xf0\xa7\xa5\xa6\0" /* offset 17644 */
+  "\xe4\x9a\xbe\0" /* offset 17649 */
+  "\xe4\x9b\x87\0" /* offset 17653 */
+  "\xe8\xaa\xa0\0" /* offset 17657 */
+  "\xf0\xa7\xb2\xa8\0" /* offset 17661 */
+  "\xe8\xb2\xab\0" /* offset 17666 */
+  "\xe8\xb3\x81\0" /* offset 17670 */
+  "\xe8\xb4\x9b\0" /* offset 17674 */
+  "\xe8\xb5\xb7\0" /* offset 17678 */
+  "\xf0\xa7\xbc\xaf\0" /* offset 17682 */
+  "\xf0\xa0\xa0\x84\0" /* offset 17687 */
+  "\xe8\xb7\x8b\0" /* offset 17692 */
+  "\xe8\xb6\xbc\0" /* offset 17696 */
+  "\xe8\xb7\xb0\0" /* offset 17700 */
+  "\xf0\xa0\xa3\x9e\0" /* offset 17704 */
+  "\xe8\xbb\x94\0" /* offset 17709 */
+  "\xf0\xa8\x97\x92\0" /* offset 17713 */
+  "\xf0\xa8\x97\xad\0" /* offset 17718 */
+  "\xe9\x82\x94\0" /* offset 17723 */
+  "\xe9\x83\xb1\0" /* offset 17727 */
+  "\xe9\x84\x91\0" /* offset 17731 */
+  "\xf0\xa8\x9c\xae\0" /* offset 17735 */
+  "\xe9\x84\x9b\0" /* offset 17740 */
+  "\xe9\x88\xb8\0" /* offset 17744 */
+  "\xe9\x8b\x97\0" /* offset 17748 */
+  "\xe9\x8b\x98\0" /* offset 17752 */
+  "\xe9\x89\xbc\0" /* offset 17756 */
+  "\xe9\x8f\xb9\0" /* offset 17760 */
+  "\xe9\x90\x95\0" /* offset 17764 */
+  "\xf0\xa8\xaf\xba\0" /* offset 17768 */
+  "\xe9\x96\x8b\0" /* offset 17773 */
+  "\xe4\xa6\x95\0" /* offset 17777 */
+  "\xe9\x96\xb7\0" /* offset 17781 */
+  "\xf0\xa8\xb5\xb7\0" /* offset 17785 */
+  "\xe4\xa7\xa6\0" /* offset 17790 */
+  "\xe9\x9b\x83\0" /* offset 17794 */
+  "\xe5\xb6\xb2\0" /* offset 17798 */
+  "\xe9\x9c\xa3\0" /* offset 17802 */
+  "\xf0\xa9\x85\x85\0" /* offset 17806 */
+  "\xf0\xa9\x88\x9a\0" /* offset 17811 */
+  "\xe4\xa9\xae\0" /* offset 17816 */
+  "\xe4\xa9\xb6\0" /* offset 17820 */
+  "\xe9\x9f\xa0\0" /* offset 17824 */
+  "\xf0\xa9\x90\x8a\0" /* offset 17828 */
+  "\xe4\xaa\xb2\0" /* offset 17833 */
+  "\xf0\xa9\x92\x96\0" /* offset 17837 */
+  "\xe9\xa0\xa9\0" /* offset 17842 */
+  "\xf0\xa9\x96\xb6\0" /* offset 17846 */
+  "\xe9\xa3\xa2\0" /* offset 17851 */
+  "\xe4\xac\xb3\0" /* offset 17855 */
+  "\xe9\xa4\xa9\0" /* offset 17859 */
+  "\xe9\xa6\xa7\0" /* offset 17863 */
+  "\xe9\xa7\x82\0" /* offset 17867 */
+  "\xe9\xa7\xbe\0" /* offset 17871 */
+  "\xe4\xaf\x8e\0" /* offset 17875 */
+  "\xf0\xa9\xac\xb0\0" /* offset 17879 */
+  "\xe9\xb1\x80\0" /* offset 17884 */
+  "\xe9\xb3\xbd\0" /* offset 17888 */
+  "\xe4\xb3\x8e\0" /* offset 17892 */
+  "\xe4\xb3\xad\0" /* offset 17896 */
+  "\xe9\xb5\xa7\0" /* offset 17900 */
+  "\xf0\xaa\x83\x8e\0" /* offset 17904 */
+  "\xe4\xb3\xb8\0" /* offset 17909 */
+  "\xf0\xaa\x84\x85\0" /* offset 17913 */
+  "\xf0\xaa\x88\x8e\0" /* offset 17918 */
+  "\xf0\xaa\x8a\x91\0" /* offset 17923 */
+  "\xe4\xb5\x96\0" /* offset 17928 */
+  "\xe9\xbb\xbe\0" /* offset 17932 */
+  "\xe9\xbc\x85\0" /* offset 17936 */
+  "\xe9\xbc\x8f\0" /* offset 17940 */
+  "\xe9\xbc\x96\0" /* offset 17944 */
+  "\xf0\xaa\x98\x80\0" /* offset 17948 */;
 
 typedef struct
 {
index 2903367..aac833b 100644 (file)
@@ -421,8 +421,15 @@ g_unichar_iszerowidth (gunichar c)
   if (G_UNLIKELY (ISZEROWIDTHTYPE (TYPE (c))))
     return TRUE;
 
+  /* A few additional codepoints are zero-width:
+   *  - Part of the Hangul Jamo block covering medial/vowels/jungseong and
+   *    final/trailing_consonants/jongseong Jamo
+   *  - Jungseong and jongseong for Old Korean
+   *  - Zero-width space (U+200B)
+   */
   if (G_UNLIKELY ((c >= 0x1160 && c < 0x1200) ||
-                 c == 0x200B))
+                  (c >= 0xD7B0 && c < 0xD800) ||
+                  c == 0x200B))
     return TRUE;
 
   return FALSE;
@@ -1486,6 +1493,17 @@ static const guint32 iso15924_tags[] =
     PACK ('D', 'i', 'a', 'k'), /* G_UNICODE_SCRIPT_DIVES_AKURU */
     PACK ('K', 'i', 't', 's'), /* G_UNICODE_SCRIPT_KHITAN_SMALL_SCRIPT */
     PACK ('Y', 'e', 'z', 'i'), /* G_UNICODE_SCRIPT_YEZIDI */
+
+  /* Unicode 14.0 additions */
+    PACK ('C', 'p', 'm', 'n'), /* G_UNICODE_SCRIPT_CYPRO_MINOAN */
+    PACK ('O', 'u', 'g', 'r'), /* G_UNICODE_SCRIPT_OLD_UYHUR */
+    PACK ('T', 'n', 's', 'a'), /* G_UNICODE_SCRIPT_TANGSA */
+    PACK ('T', 'o', 't', 'o'), /* G_UNICODE_SCRIPT_TOTO */
+    PACK ('V', 'i', 't', 'h'), /* G_UNICODE_SCRIPT_VITHKUQI */
+
+  /* not really a Unicode script, but part of ISO 15924 */
+    PACK ('Z', 'm', 't', 'h'), /* G_UNICODE_SCRIPT_MATH */
+
 #undef PACK
 };
 
index 5c2b35b..0690608 100644 (file)
@@ -422,7 +422,7 @@ _uri_encoder (GString      *out,
               const gchar  *reserved_chars_allowed,
               gboolean      allow_utf8)
 {
-  static const gchar hex[16] = "0123456789ABCDEF";
+  static const gchar hex[] = "0123456789ABCDEF";
   const guchar *p = start;
   const guchar *end = p + length;
 
index ca1a395..a4368d5 100644 (file)
@@ -271,11 +271,15 @@ g_utf8_strlen (const gchar *p,
  * g_utf8_substring:
  * @str: a UTF-8 encoded string
  * @start_pos: a character offset within @str
- * @end_pos: another character offset within @str
+ * @end_pos: another character offset within @str,
+ *   or `-1` to indicate the end of the string
  *
  * Copies a substring out of a UTF-8 encoded string.
  * The substring will contain @end_pos - @start_pos characters.
  *
+ * Since GLib 2.72, `-1` can be passed to @end_pos to indicate the
+ * end of the string.
+ *
  * Returns: (transfer full): a newly allocated copy of the requested
  *     substring. Free with g_free() when no longer needed.
  *
@@ -288,8 +292,19 @@ g_utf8_substring (const gchar *str,
 {
   gchar *start, *end, *out;
 
+  g_return_val_if_fail (end_pos >= start_pos || end_pos == -1, NULL);
+
   start = g_utf8_offset_to_pointer (str, start_pos);
-  end = g_utf8_offset_to_pointer (start, end_pos - start_pos);
+
+  if (end_pos == -1)
+    {
+      glong length = g_utf8_strlen (start, -1);
+      end = g_utf8_offset_to_pointer (start, length);
+    }
+  else
+    {
+      end = g_utf8_offset_to_pointer (start, end_pos - start_pos);
+    }
 
   out = g_malloc (end - start + 1);
   memcpy (out, start, end - start);
@@ -574,7 +589,7 @@ static inline gunichar
 g_utf8_get_char_extended (const  gchar *p,
                          gssize max_len)
 {
-  guint i, len;
+  gsize i, len;
   gunichar min_code;
   gunichar wc = (guchar) *p;
   const gunichar partial_sequence = (gunichar) -2;
@@ -623,9 +638,9 @@ g_utf8_get_char_extended (const  gchar *p,
       return malformed_sequence;
     }
 
-  if (G_UNLIKELY (max_len >= 0 && len > max_len))
+  if (G_UNLIKELY (max_len >= 0 && len > (gsize) max_len))
     {
-      for (i = 1; i < max_len; i++)
+      for (i = 1; i < (gsize) max_len; i++)
        {
          if ((((guchar *)p)[i] & 0xc0) != 0x80)
            return malformed_sequence;
@@ -987,9 +1002,10 @@ g_ucs4_to_utf8 (const gunichar *str,
  *     words read, or %NULL. If %NULL, then %G_CONVERT_ERROR_PARTIAL_INPUT will
  *     be returned in case @str contains a trailing partial character. If
  *     an error occurs then the index of the invalid input is stored here.
+ *     It’s guaranteed to be non-negative.
  * @items_written: (out) (optional): location to store number
  *     of bytes written, or %NULL. The value stored here does not include the
- *     trailing 0 byte.
+ *     trailing 0 byte. It’s guaranteed to be non-negative.
  * @error: location to store the error occurring, or %NULL to ignore
  *     errors. Any of the errors in #GConvertError other than
  *     %G_CONVERT_ERROR_NO_CONVERSION may occur.
index 6f6f8d0..457ae09 100644 (file)
@@ -69,6 +69,7 @@
 #include "garray.h"
 #include "glibintl.h"
 #include "gstdio.h"
+#include "gquark.h"
 
 #ifdef G_PLATFORM_WIN32
 #include "gconvert.h"
 #include <langinfo.h>
 #endif
 
-#ifdef G_PLATFORM_WIN32
-
-gchar *
-_glib_get_dll_directory (void)
-{
-  gchar *retval;
-  gchar *p;
-  wchar_t wc_fn[MAX_PATH];
-
-#ifdef DLL_EXPORT
-  if (glib_dll == NULL)
-    return NULL;
-#endif
-
-  /* This code is different from that in
-   * g_win32_get_package_installation_directory_of_module() in that
-   * here we return the actual folder where the GLib DLL is. We don't
-   * do the check for it being in a "bin" or "lib" subfolder and then
-   * returning the parent of that.
-   *
-   * In a statically built GLib, glib_dll will be NULL and we will
-   * thus look up the application's .exe file's location.
-   */
-  if (!GetModuleFileNameW (glib_dll, wc_fn, MAX_PATH))
-    return NULL;
-
-  retval = g_utf16_to_utf8 (wc_fn, -1, NULL, NULL, NULL);
-
-  p = strrchr (retval, G_DIR_SEPARATOR);
-  if (p == NULL)
-    {
-      /* Wtf? */
-      return NULL;
-    }
-  *p = '\0';
-
-  return retval;
-}
-
-#endif
-
 /**
  * g_memmove: 
  * @dest: the destination address to copy the bytes to.
@@ -455,7 +415,14 @@ g_find_program_in_path (const gchar *program)
          !g_file_test (startp, G_FILE_TEST_IS_DIR))
         {
           gchar *ret;
-          ret = g_strdup (startp);
+          if (g_path_is_absolute (startp)) {
+            ret = g_strdup (startp);
+          } else {
+            gchar *cwd = NULL;
+            cwd = g_get_current_dir ();
+            ret = g_build_filename (cwd, startp, NULL);
+            g_free (cwd);
+          }
           g_free (freeme);
 #ifdef G_OS_WIN32
          g_free ((gchar *) path_copy);
@@ -548,6 +515,7 @@ static  gchar   *g_user_data_dir = NULL;
 static  gchar  **g_system_data_dirs = NULL;
 static  gchar   *g_user_cache_dir = NULL;
 static  gchar   *g_user_config_dir = NULL;
+static  gchar   *g_user_state_dir = NULL;
 static  gchar   *g_user_runtime_dir = NULL;
 static  gchar  **g_system_config_dirs = NULL;
 static  gchar  **g_user_special_dirs = NULL;
@@ -989,7 +957,7 @@ g_get_host_name (void)
   if (g_once_init_enter (&hostname))
     {
       gboolean failed;
-      gchar *utmp;
+      gchar *utmp = NULL;
 
 #ifndef G_OS_WIN32
       gsize size;
@@ -1050,7 +1018,7 @@ g_get_host_name (void)
 }
 
 G_LOCK_DEFINE_STATIC (g_prgname);
-static gchar *g_prgname = NULL;
+static const gchar *g_prgname = NULL; /* always a quark */
 
 /**
  * g_get_prgname:
@@ -1071,7 +1039,7 @@ static gchar *g_prgname = NULL;
 const gchar*
 g_get_prgname (void)
 {
-  gchar* retval;
+  const gchar* retval;
 
   G_LOCK (g_prgname);
   retval = g_prgname;
@@ -1093,14 +1061,16 @@ g_get_prgname (void)
  * #GtkApplication::startup handler. The program name is found by
  * taking the last component of @argv[0].
  *
- * Note that for thread-safety reasons this function can only be called once.
+ * Since GLib 2.72, this function can be called multiple times
+ * and is fully thread safe. Prior to GLib 2.72, this function
+ * could only be called once per process.
  */
 void
 g_set_prgname (const gchar *prgname)
 {
+  GQuark qprgname = g_quark_from_string (prgname);
   G_LOCK (g_prgname);
-  g_free (g_prgname);
-  g_prgname = g_strdup (prgname);
+  g_prgname = g_quark_to_string (qprgname);
   G_UNLOCK (g_prgname);
 }
 
@@ -1294,34 +1264,53 @@ static gchar *
 get_windows_version (gboolean with_windows)
 {
   GString *version = g_string_new (NULL);
+  gboolean is_win_server = FALSE;
 
   if (g_win32_check_windows_version (10, 0, 0, G_WIN32_OS_ANY))
     {
       gchar *win10_release;
       gboolean is_win11 = FALSE;
+      OSVERSIONINFOEXW osinfo;
 
-      if (!g_win32_check_windows_version (10, 0, 0, G_WIN32_OS_SERVER))
-        {
-          OSVERSIONINFOEXW osinfo;
+      /* Are we on Windows 2016/2019/2022 Server? */
+      is_win_server = g_win32_check_windows_version (10, 0, 0, G_WIN32_OS_SERVER);
 
-          /*
-           * This always succeeds if we get here, since the
-           * g_win32_check_windows_version() already did this!
-           * We want the OSVERSIONINFOEXW here for more even
-           * fine-grained versioning items
-           */
-          _g_win32_call_rtl_version (&osinfo);
+      /*
+       * This always succeeds if we get here, since the
+       * g_win32_check_windows_version() already did this!
+       * We want the OSVERSIONINFOEXW here for more even
+       * fine-grained versioning items
+       */
+      _g_win32_call_rtl_version (&osinfo);
 
+      if (!is_win_server)
+        {
           /*
            * Windows 11 is actually Windows 10.0.22000+,
            * so look at the build number
            */
           is_win11 = (osinfo.dwBuildNumber >= 22000);
         }
+      else
+        {
+          /*
+           * Windows 2022 Server is actually Windows 10.0.20348+,
+           * Windows 2019 Server is actually Windows 10.0.17763+,
+           * Windows 2016 Server is actually Windows 10.0.14393+,
+           * so look at the build number
+           */
+          g_string_append (version, "Server");
+          if (osinfo.dwBuildNumber >= 20348)
+            g_string_append (version, " 2022");
+          else if (osinfo.dwBuildNumber >= 17763)
+            g_string_append (version, " 2019");
+          else
+            g_string_append (version, " 2016");
+        }
 
       if (is_win11)
         g_string_append (version, "11");
-      else
+      else if (!is_win_server)
         g_string_append (version, "10");
 
       /* Windows 10/Server 2016+ is identified by its ReleaseId or
@@ -1364,10 +1353,10 @@ get_windows_version (gboolean with_windows)
     {
       gchar *win81_update;
 
-      g_string_append (version, "8.1");
-
-      if (!g_win32_check_windows_version (6, 3, 0, G_WIN32_OS_WORKSTATION))
-        g_string_append (version, " Server");
+      if (g_win32_check_windows_version (6, 3, 0, G_WIN32_OS_WORKSTATION))
+        g_string_append (version, "8.1");
+      else
+        g_string_append (version, "Server 2012 R2");
 
       win81_update = get_windows_8_1_update ();
 
@@ -1387,8 +1376,23 @@ get_windows_version (gboolean with_windows)
 
           g_string_append (version, versions[i].version);
 
-          if (!g_win32_check_windows_version (versions[i].major, versions[i].minor, versions[i].sp, G_WIN32_OS_WORKSTATION))
-            g_string_append (version, " Server");
+          if (g_win32_check_windows_version (versions[i].major, versions[i].minor, versions[i].sp, G_WIN32_OS_SERVER))
+            {
+              /*
+               * This condition should now always hold, since Windows
+               * 7+/Server 2008 R2+ is now required
+               */
+              if (versions[i].major == 6)
+                {
+                  g_string_append (version, "Server");
+                  if (versions[i].minor == 2)
+                    g_string_append (version, " 2012");
+                  else if (versions[i].minor == 1)
+                    g_string_append (version, " 2008 R2");
+                  else
+                    g_string_append (version, " 2008");
+                }
+            }
 
           g_string_append (version, versions[i].spversion);
         }
@@ -1408,7 +1412,7 @@ get_windows_version (gboolean with_windows)
 }
 #endif
 
-#ifdef G_OS_UNIX
+#if defined (G_OS_UNIX) && !defined (__APPLE__)
 static gchar *
 get_os_info_from_os_release (const gchar *key_name,
                              const gchar *buffer)
@@ -1537,7 +1541,7 @@ get_os_info_from_uname (const gchar *key_name)
   else
     return NULL;
 }
-#endif
+#endif  /* defined (G_OS_UNIX) && !defined (__APPLE__) */
 
 /**
  * g_get_os_info:
@@ -1733,6 +1737,8 @@ g_set_user_dirs (const gchar *first_dir_type,
         set_strv_if_different (&g_system_data_dirs, dir_type, dir_value);
       else if (g_str_equal (dir_type, "XDG_DATA_HOME"))
         set_str_if_different (&g_user_data_dir, dir_type, dir_value);
+      else if (g_str_equal (dir_type, "XDG_STATE_HOME"))
+        set_str_if_different (&g_user_state_dir, dir_type, dir_value);
       else if (g_str_equal (dir_type, "XDG_RUNTIME_DIR"))
         set_str_if_different (&g_user_runtime_dir, dir_type, dir_value);
       else
@@ -1934,18 +1940,91 @@ g_get_user_cache_dir (void)
 }
 
 static gchar *
+g_build_user_state_dir (void)
+{
+  gchar *state_dir = NULL;
+  const gchar *state_dir_env = g_getenv ("XDG_STATE_HOME");
+
+  if (state_dir_env && state_dir_env[0])
+    state_dir = g_strdup (state_dir_env);
+#ifdef G_OS_WIN32
+  else
+    state_dir = get_special_folder (&FOLDERID_LocalAppData);
+#endif
+  if (!state_dir || !state_dir[0])
+    {
+      gchar *home_dir = g_build_home_dir ();
+      state_dir = g_build_filename (home_dir, ".local/state", NULL);
+      g_free (home_dir);
+    }
+
+  return g_steal_pointer (&state_dir);
+}
+
+/**
+ * g_get_user_state_dir:
+ *
+ * Returns a base directory in which to store state files specific to
+ * particular user.
+ *
+ * On UNIX platforms this is determined using the mechanisms described
+ * in the
+ * [XDG Base Directory Specification](http://www.freedesktop.org/Standards/basedir-spec).
+ * In this case the directory retrieved will be `XDG_STATE_HOME`.
+ *
+ * On Windows it follows XDG Base Directory Specification if `XDG_STATE_HOME` is defined.
+ * If `XDG_STATE_HOME` is undefined, the folder to use for local (as opposed
+ * to roaming) application data is used instead. See the
+ * [documentation for `FOLDERID_LocalAppData`](https://docs.microsoft.com/en-us/windows/win32/shell/knownfolderid).
+ * Note that in this case on Windows it will be the same
+ * as what g_get_user_data_dir() returns.
+ *
+ * The return value is cached and modifying it at runtime is not supported, as
+ * it’s not thread-safe to modify environment variables at runtime.
+ *
+ * Returns: (type filename) (transfer none): a string owned by GLib that
+ *   must not be modified or freed.
+ *
+ * Since: 2.72
+ **/
+const gchar *
+g_get_user_state_dir (void)
+{
+  const gchar *user_state_dir;
+
+  G_LOCK (g_utils_global);
+
+  if (g_user_state_dir == NULL)
+    g_user_state_dir = g_build_user_state_dir ();
+  user_state_dir = g_user_state_dir;
+
+  G_UNLOCK (g_utils_global);
+
+  return user_state_dir;
+}
+
+static gchar *
 g_build_user_runtime_dir (void)
 {
   gchar *runtime_dir = NULL;
   const gchar *runtime_dir_env = g_getenv ("XDG_RUNTIME_DIR");
 
   if (runtime_dir_env && runtime_dir_env[0])
-    runtime_dir = g_strdup (runtime_dir_env);
+    {
+      runtime_dir = g_strdup (runtime_dir_env);
+
+      /* If the XDG_RUNTIME_DIR environment variable is set, we are being told by
+       * the OS that this directory exists and is appropriately configured
+       * already.
+       */
+    }
   else
     {
       runtime_dir = g_build_user_cache_dir ();
 
-      /* The user should be able to rely on the directory existing
+      /* Fallback case: the directory may not yet exist.
+       *
+       * The user should be able to rely on the directory existing
        * when the function returns.  Probably it already does, but
        * let's make sure.  Just do mkdir() directly since it will be
        * no more expensive than a stat() in the case that the
@@ -2266,9 +2345,9 @@ g_reload_user_special_dirs_cache (void)
  * of the special directory without requiring the session to restart; GLib
  * will not reflect any change once the special directories are loaded.
  *
- * Returns: (type filename): the path to the specified special directory, or
- *   %NULL if the logical id was not found. The returned string is owned by
- *   GLib and should not be modified or freed.
+ * Returns: (type filename) (nullable): the path to the specified special
+ *   directory, or %NULL if the logical id was not found. The returned string is
+ *   owned by GLib and should not be modified or freed.
  *
  * Since: 2.14
  */
@@ -3114,8 +3193,13 @@ g_check_setuid (void)
 void
 g_abort (void)
 {
-  /* One call to break the debugger */
-  DebugBreak ();
+  /* One call to break the debugger
+   * We check if a debugger is actually attached to
+   * avoid a windows error reporting popup window
+   * when run in a test harness / on CI
+   */
+  if (IsDebuggerPresent ())
+    DebugBreak ();
   /* One call in case CRT changes its abort() behaviour */
   abort ();
   /* And one call to bind them all and terminate the program for sure */
index f8a6049..08c1870 100644 (file)
@@ -197,6 +197,8 @@ GLIB_AVAILABLE_IN_ALL
 const gchar *         g_get_user_config_dir    (void);
 GLIB_AVAILABLE_IN_ALL
 const gchar *         g_get_user_cache_dir     (void);
+GLIB_AVAILABLE_IN_2_72
+const gchar *         g_get_user_state_dir     (void);
 GLIB_AVAILABLE_IN_ALL
 const gchar * const * g_get_system_data_dirs   (void);
 
index 5a06860..a3996f8 100644 (file)
@@ -20,7 +20,9 @@
 #ifndef __G_UTILS_PRIVATE_H__
 #define __G_UTILS_PRIVATE_H__
 
+#include "glibconfig.h"
 #include "gtypes.h"
+#include "gtestutils.h"
 
 G_BEGIN_DECLS
 
@@ -28,6 +30,28 @@ GLIB_AVAILABLE_IN_2_60
 void g_set_user_dirs (const gchar *first_dir_type,
                       ...) G_GNUC_NULL_TERMINATED;
 
+/* Returns the smallest power of 2 greater than or equal to n,
+ * or 0 if such power does not fit in a gsize
+ */
+static inline gsize
+g_nearest_pow (gsize num)
+{
+  gsize n = num - 1;
+
+  g_assert (num > 0 && num <= G_MAXSIZE / 2);
+
+  n |= n >> 1;
+  n |= n >> 2;
+  n |= n >> 4;
+  n |= n >> 8;
+  n |= n >> 16;
+#if GLIB_SIZEOF_SIZE_T == 8
+  n |= n >> 32;
+#endif
+
+  return n + 1;
+}
+
 G_END_DECLS
 
 #endif /* __G_UTILS_PRIVATE_H__ */
index bb5238b..1b89259 100644 (file)
@@ -1564,7 +1564,7 @@ unicode_unescape (const gchar  *src,
 {
   gchar buffer[9];
   guint64 value = 0;
-  gchar *end;
+  gchar *end = NULL;
   gsize n_valid_chars;
 
   (*src_ofs)++;
index 5fa6a82..42ffc9a 100644 (file)
@@ -3225,6 +3225,24 @@ ensure_valid_builder (GVariantBuilder *builder)
   return is_valid_builder (builder);
 }
 
+/* return_if_invalid_builder (b) is like
+ * g_return_if_fail (ensure_valid_builder (b)), except that
+ * the side effects of ensure_valid_builder are evaluated
+ * regardless of whether G_DISABLE_CHECKS is defined or not. */
+#define return_if_invalid_builder(b) G_STMT_START {                \
+  gboolean valid_builder G_GNUC_UNUSED = ensure_valid_builder (b); \
+  g_return_if_fail (valid_builder);                                \
+} G_STMT_END
+
+/* return_val_if_invalid_builder (b, val) is like
+ * g_return_val_if_fail (ensure_valid_builder (b), val), except that
+ * the side effects of ensure_valid_builder are evaluated
+ * regardless of whether G_DISABLE_CHECKS is defined or not. */
+#define return_val_if_invalid_builder(b, val) G_STMT_START {       \
+  gboolean valid_builder G_GNUC_UNUSED = ensure_valid_builder (b); \
+  g_return_val_if_fail (valid_builder, val);                       \
+} G_STMT_END
+
 /**
  * g_variant_builder_new:
  * @type: a container type
@@ -3337,7 +3355,7 @@ g_variant_builder_clear (GVariantBuilder *builder)
     /* all-zeros or partial case */
     return;
 
-  g_return_if_fail (ensure_valid_builder (builder));
+  return_if_invalid_builder (builder);
 
   g_variant_type_free (GVSB(builder)->type);
 
@@ -3500,7 +3518,7 @@ void
 g_variant_builder_add_value (GVariantBuilder *builder,
                              GVariant        *value)
 {
-  g_return_if_fail (ensure_valid_builder (builder));
+  return_if_invalid_builder (builder);
   g_return_if_fail (GVSB(builder)->offset < GVSB(builder)->max_items);
   g_return_if_fail (!GVSB(builder)->expected_type ||
                     g_variant_is_of_type (value,
@@ -3581,7 +3599,7 @@ g_variant_builder_open (GVariantBuilder    *builder,
 {
   GVariantBuilder *parent;
 
-  g_return_if_fail (ensure_valid_builder (builder));
+  return_if_invalid_builder (builder);
   g_return_if_fail (GVSB(builder)->offset < GVSB(builder)->max_items);
   g_return_if_fail (!GVSB(builder)->expected_type ||
                     g_variant_type_is_subtype_of (type,
@@ -3627,7 +3645,7 @@ g_variant_builder_close (GVariantBuilder *builder)
 {
   GVariantBuilder *parent;
 
-  g_return_if_fail (ensure_valid_builder (builder));
+  return_if_invalid_builder (builder);
   g_return_if_fail (GVSB(builder)->parent != NULL);
 
   parent = GVSB(builder)->parent;
@@ -3695,7 +3713,7 @@ g_variant_builder_end (GVariantBuilder *builder)
   GVariantType *my_type;
   GVariant *value;
 
-  g_return_val_if_fail (ensure_valid_builder (builder), NULL);
+  return_val_if_invalid_builder (builder, NULL);
   g_return_val_if_fail (GVSB(builder)->offset >= GVSB(builder)->min_items,
                         NULL);
   g_return_val_if_fail (!GVSB(builder)->uniform_item_types ||
@@ -3883,6 +3901,24 @@ ensure_valid_dict (GVariantDict *dict)
   return is_valid_dict (dict);
 }
 
+/* return_if_invalid_dict (d) is like
+ * g_return_if_fail (ensure_valid_dict (d)), except that
+ * the side effects of ensure_valid_dict are evaluated
+ * regardless of whether G_DISABLE_CHECKS is defined or not. */
+#define return_if_invalid_dict(d) G_STMT_START {                \
+  gboolean valid_dict G_GNUC_UNUSED = ensure_valid_dict (d);    \
+  g_return_if_fail (valid_dict);                                \
+} G_STMT_END
+
+/* return_val_if_invalid_dict (d, val) is like
+ * g_return_val_if_fail (ensure_valid_dict (d), val), except that
+ * the side effects of ensure_valid_dict are evaluated
+ * regardless of whether G_DISABLE_CHECKS is defined or not. */
+#define return_val_if_invalid_dict(d, val) G_STMT_START {       \
+  gboolean valid_dict G_GNUC_UNUSED = ensure_valid_dict (d);    \
+  g_return_val_if_fail (valid_dict, val);                       \
+} G_STMT_END
+
 /**
  * g_variant_dict_new:
  * @from_asv: (nullable): the #GVariant with which to initialise the
@@ -3990,7 +4026,7 @@ g_variant_dict_lookup (GVariantDict *dict,
   GVariant *value;
   va_list ap;
 
-  g_return_val_if_fail (ensure_valid_dict (dict), FALSE);
+  return_val_if_invalid_dict (dict, FALSE);
   g_return_val_if_fail (key != NULL, FALSE);
   g_return_val_if_fail (format_string != NULL, FALSE);
 
@@ -4035,7 +4071,7 @@ g_variant_dict_lookup_value (GVariantDict       *dict,
 {
   GVariant *result;
 
-  g_return_val_if_fail (ensure_valid_dict (dict), NULL);
+  return_val_if_invalid_dict (dict, NULL);
   g_return_val_if_fail (key != NULL, NULL);
 
   result = g_hash_table_lookup (GVSD(dict)->values, key);
@@ -4061,7 +4097,7 @@ gboolean
 g_variant_dict_contains (GVariantDict *dict,
                          const gchar  *key)
 {
-  g_return_val_if_fail (ensure_valid_dict (dict), FALSE);
+  return_val_if_invalid_dict (dict, FALSE);
   g_return_val_if_fail (key != NULL, FALSE);
 
   return g_hash_table_contains (GVSD(dict)->values, key);
@@ -4089,7 +4125,7 @@ g_variant_dict_insert (GVariantDict *dict,
 {
   va_list ap;
 
-  g_return_if_fail (ensure_valid_dict (dict));
+  return_if_invalid_dict (dict);
   g_return_if_fail (key != NULL);
   g_return_if_fail (format_string != NULL);
 
@@ -4115,7 +4151,7 @@ g_variant_dict_insert_value (GVariantDict *dict,
                              const gchar  *key,
                              GVariant     *value)
 {
-  g_return_if_fail (ensure_valid_dict (dict));
+  return_if_invalid_dict (dict);
   g_return_if_fail (key != NULL);
   g_return_if_fail (value != NULL);
 
@@ -4137,7 +4173,7 @@ gboolean
 g_variant_dict_remove (GVariantDict *dict,
                        const gchar  *key)
 {
-  g_return_val_if_fail (ensure_valid_dict (dict), FALSE);
+  return_val_if_invalid_dict (dict, FALSE);
   g_return_val_if_fail (key != NULL, FALSE);
 
   return g_hash_table_remove (GVSD(dict)->values, key);
@@ -4171,7 +4207,7 @@ g_variant_dict_clear (GVariantDict *dict)
     /* all-zeros case */
     return;
 
-  g_return_if_fail (ensure_valid_dict (dict));
+  return_if_invalid_dict (dict);
 
   g_hash_table_unref (GVSD(dict)->values);
   GVSD(dict)->values = NULL;
@@ -4202,7 +4238,7 @@ g_variant_dict_end (GVariantDict *dict)
   GHashTableIter iter;
   gpointer key, value;
 
-  g_return_val_if_fail (ensure_valid_dict (dict), NULL);
+  return_val_if_invalid_dict (dict, NULL);
 
   g_variant_builder_init (&builder, G_VARIANT_TYPE_VARDICT);
 
index 11c74d5..7ba586c 100644 (file)
@@ -362,7 +362,14 @@ GQuark                          g_variant_parse_error_quark             (void);
  *
  * Since: 2.50
  */
-#define G_VARIANT_BUILDER_INIT(variant_type) { { { 2942751021u, variant_type, { 0, } } } }
+#define G_VARIANT_BUILDER_INIT(variant_type)                                          \
+  {                                                                                   \
+    {                                                                                 \
+      {                                                                               \
+        2942751021u /* == GVSB_MAGIC_PARTIAL, see gvariant.c */, variant_type, { 0, } \
+      }                                                                               \
+    }                                                                                 \
+  }
 
 GLIB_AVAILABLE_IN_ALL
 GVariantBuilder *               g_variant_builder_new                   (const GVariantType   *type);
@@ -478,7 +485,14 @@ struct _GVariantDict {
  *
  * Since: 2.50
  */
-#define G_VARIANT_DICT_INIT(asv) { { { asv, 3488698669u, { 0, } } } }
+#define G_VARIANT_DICT_INIT(asv)                                             \
+  {                                                                          \
+    {                                                                        \
+      {                                                                      \
+        asv, 3488698669u /* == GVSD_MAGIC_PARTIAL, see gvariant.c */, { 0, } \
+      }                                                                      \
+    }                                                                        \
+  }
 
 GLIB_AVAILABLE_IN_2_40
 GVariantDict *                  g_variant_dict_new                      (GVariant             *from_asv);
index d052709..e08c809 100644 (file)
 #define GLIB_VERSION_2_70       (G_ENCODE_VERSION (2, 70))
 
 /**
+ * GLIB_VERSION_2_72:
+ *
+ * A macro that evaluates to the 2.72 version of GLib, in a format
+ * that can be used by the C pre-processor.
+ *
+ * Since: 2.72
+ */
+#define GLIB_VERSION_2_72       (G_ENCODE_VERSION (2, 72))
+
+/**
  * GLIB_VERSION_CUR_STABLE:
  *
  * A macro that evaluates to the current stable version of GLib, in a format
 # define GLIB_AVAILABLE_TYPE_IN_2_70
 #endif
 
+#if GLIB_VERSION_MIN_REQUIRED >= GLIB_VERSION_2_72
+# define GLIB_DEPRECATED_IN_2_72                GLIB_DEPRECATED
+# define GLIB_DEPRECATED_IN_2_72_FOR(f)         GLIB_DEPRECATED_FOR(f)
+# define GLIB_DEPRECATED_MACRO_IN_2_72          GLIB_DEPRECATED_MACRO
+# define GLIB_DEPRECATED_MACRO_IN_2_72_FOR(f)   GLIB_DEPRECATED_MACRO_FOR(f)
+# define GLIB_DEPRECATED_ENUMERATOR_IN_2_72          GLIB_DEPRECATED_ENUMERATOR
+# define GLIB_DEPRECATED_ENUMERATOR_IN_2_72_FOR(f)   GLIB_DEPRECATED_ENUMERATOR_FOR(f)
+# define GLIB_DEPRECATED_TYPE_IN_2_72           GLIB_DEPRECATED_TYPE
+# define GLIB_DEPRECATED_TYPE_IN_2_72_FOR(f)    GLIB_DEPRECATED_TYPE_FOR(f)
+#else
+# define GLIB_DEPRECATED_IN_2_72                _GLIB_EXTERN
+# define GLIB_DEPRECATED_IN_2_72_FOR(f)         _GLIB_EXTERN
+# define GLIB_DEPRECATED_MACRO_IN_2_72
+# define GLIB_DEPRECATED_MACRO_IN_2_72_FOR(f)
+# define GLIB_DEPRECATED_ENUMERATOR_IN_2_72
+# define GLIB_DEPRECATED_ENUMERATOR_IN_2_72_FOR(f)
+# define GLIB_DEPRECATED_TYPE_IN_2_72
+# define GLIB_DEPRECATED_TYPE_IN_2_72_FOR(f)
+#endif
+
+#if GLIB_VERSION_MAX_ALLOWED < GLIB_VERSION_2_72
+# define GLIB_AVAILABLE_IN_2_72                 GLIB_UNAVAILABLE(2, 72)
+# define GLIB_AVAILABLE_STATIC_INLINE_IN_2_72   GLIB_UNAVAILABLE_STATIC_INLINE(2, 72)
+# define GLIB_AVAILABLE_MACRO_IN_2_72           GLIB_UNAVAILABLE_MACRO(2, 72)
+# define GLIB_AVAILABLE_ENUMERATOR_IN_2_72      GLIB_UNAVAILABLE_ENUMERATOR(2, 72)
+# define GLIB_AVAILABLE_TYPE_IN_2_72            GLIB_UNAVAILABLE_TYPE(2, 72)
+#else
+# define GLIB_AVAILABLE_IN_2_72                 _GLIB_EXTERN
+# define GLIB_AVAILABLE_STATIC_INLINE_IN_2_72
+# define GLIB_AVAILABLE_MACRO_IN_2_72
+# define GLIB_AVAILABLE_ENUMERATOR_IN_2_72
+# define GLIB_AVAILABLE_TYPE_IN_2_72
+#endif
+
 #endif /*  __G_VERSION_MACROS_H__ */
index c28e92b..68d4703 100644 (file)
@@ -23,7 +23,7 @@
  * than `e` or `p`.
  */
 static gboolean
-_g_win32_subst_pid_and_event_w (wchar_t       *debugger,
+_g_win32_subst_pid_and_event_w (wchar_t       *local_debugger,
                                 gsize          debugger_size,
                                 const wchar_t *cmdline,
                                 DWORD          pid,
@@ -51,26 +51,26 @@ _g_win32_subst_pid_and_event_w (wchar_t       *debugger,
   while (cmdline[i] != 0 && dbg_i < debugger_size)
     {
       if (cmdline[i] != L'%')
-        debugger[dbg_i++] = cmdline[i++];
+        local_debugger[dbg_i++] = cmdline[i++];
       else if (cmdline[i + 1] == L'p')
         {
           gsize j = 0;
           while (j < pid_str_len && dbg_i < debugger_size)
-            debugger[dbg_i++] = pid_str[j++];
+            local_debugger[dbg_i++] = pid_str[j++];
           i += 2;
         }
       else if (cmdline[i + 1] == L'e')
         {
           gsize j = 0;
           while (j < event_str_len && dbg_i < debugger_size)
-            debugger[dbg_i++] = event_str[j++];
+            local_debugger[dbg_i++] = event_str[j++];
           i += 2;
         }
       else
         return FALSE;
     }
   if (dbg_i < debugger_size)
-    debugger[dbg_i] = 0;
+    local_debugger[dbg_i] = 0;
   else
     return FALSE;
 
index 04d0a89..b2b5ff6 100644 (file)
@@ -569,7 +569,7 @@ g_win32_check_windows_version (const gint major,
   gboolean is_type_checked = FALSE;
 
   /* We Only Support Checking for XP or later */
-  g_return_val_if_fail (major >= 5 && (major <=6 || major == 10), FALSE);
+  g_return_val_if_fail (major >= 5 && (major <= 6 || major == 10), FALSE);
   g_return_val_if_fail ((major >= 5 && minor >= 1) || major >= 6, FALSE);
 
   /* Check for Service Pack Version >= 0 */
@@ -577,14 +577,14 @@ g_win32_check_windows_version (const gint major,
   g_return_val_if_fail (_g_win32_call_rtl_version (&osverinfo), FALSE);
 
   /* check the OS and Service Pack Versions */
-  if (osverinfo.dwMajorVersion > major)
+  if (osverinfo.dwMajorVersion > (DWORD) major)
     is_ver_checked = TRUE;
-  else if (osverinfo.dwMajorVersion == major)
+  else if (osverinfo.dwMajorVersion == (DWORD) major)
     {
-      if (osverinfo.dwMinorVersion > minor)
+      if (osverinfo.dwMinorVersion > (DWORD) minor)
         is_ver_checked = TRUE;
-      else if (osverinfo.dwMinorVersion == minor)
-        if (osverinfo.wServicePackMajor >= spver)
+      else if (osverinfo.dwMinorVersion == (DWORD) minor)
+        if (osverinfo.wServicePackMajor >= (DWORD) spver)
           is_ver_checked = TRUE;
     }
 
@@ -1336,4 +1336,123 @@ g_crash_handler_win32_deinit (void)
   WinVEH_handle = NULL;
 }
 
+/**
+ * g_win32_find_helper_executable_path:
+ * @executable_name: (transfer none): name of the helper executable to find
+ * (something like gspawn-win64-helper.exe or gdbus.exe for example).
+ * @dll_handle: handle of the DLL to use as searching base path. Pass NULL
+ * to take current process executable as searching base path.
+ *
+ * Find an external executable path and name starting in the same folder
+ * as a specified DLL or current process executable path. Helper executables
+ * (like gspawn-win64-helper.exe, gspawn-win64-helper-console.exe or
+ * gdbus.exe for example) are generally installed in the same folder as the
+ * corresponding DLL file.
+ *
+ * So, if package has been correctly installed, with a dynamic build of GLib,
+ * the helper executable should be in the same directory as the corresponding
+ * DLL file and searching should be straightforward.
+ *
+ * But if built statically, DLL handle is not available and we have to start
+ * searching from the directory holding current executable. It may be very
+ * different from the directory containing the helper program. In order to
+ * find the right helper program automatically in all common situations, we
+ * use this pattern:
+ *
+ * current directory
+ *             |-- ???
+ *             |-- bin
+ *             |    |-- ???
+ *             |-- lib
+ *             |    |-- ???
+ *             |-- glib
+ *             |    |-- ???
+ *             |-- gio
+ *                  |-- ???
+ *
+ * starting at base searching path (DLL or current executable directory) and
+ * getting up until the root path. If we cannot still find the helper program,
+ * we'll rely on PATH as the last resort.
+ *
+ * Returns: (transfer full) (type filename) (nullable): the helper executable
+ * path and name in the GLib filename encoding or NULL in case of error. It
+ * should be deallocated with g_free().
+ */
+gchar *
+g_win32_find_helper_executable_path (const gchar *executable_name, void *dll_handle)
+{
+  static const gchar *const subdirs[] = { "", "bin", "lib", "glib", "gio" };
+  static const gsize nb_subdirs = G_N_ELEMENTS (subdirs);
+
+  DWORD module_path_len;
+  wchar_t module_path[MAX_PATH + 2] = { 0 };
+  gchar *base_searching_path;
+  gchar *p;
+  gchar *executable_path;
+  gsize i;
+
+  g_return_val_if_fail (executable_name && *executable_name, NULL);
+
+  module_path_len = GetModuleFileNameW (dll_handle, module_path, MAX_PATH + 1);
+  /* The > MAX_PATH check prevents truncated module path usage */
+  if (module_path_len == 0 || module_path_len > MAX_PATH)
+    return NULL;
+
+  base_searching_path = g_utf16_to_utf8 (module_path, -1, NULL, NULL, NULL);
+  if (base_searching_path == NULL)
+    return NULL;
+
+  p = strrchr (base_searching_path, G_DIR_SEPARATOR);
+  if (p == NULL)
+    {
+      g_free (base_searching_path);
+      return NULL;
+    }
+  *p = '\0';
+
+  for (;;)
+    {
+      /* Search in subdirectories */
+      for (i = 0; i < nb_subdirs; ++i)
+        {
+          /* As this function is exclusively used on Windows, the
+           * executable_path is always an absolute path. At worse, when
+           * reaching the root of the filesystem, base_searching_path may
+           * equal something like "[Drive letter]:" but never "/" like on
+           * Linux or Mac.
+           * For the peace of mind we still assert this, just in case that
+           * one day someone tries to use this function on Linux or Mac.
+           */
+          executable_path = g_build_filename (base_searching_path, subdirs[i], executable_name, NULL);
+          g_assert (g_path_is_absolute (executable_path));
+          if (g_file_test (executable_path, G_FILE_TEST_IS_REGULAR))
+            break;
+
+          g_free (executable_path);
+          executable_path = NULL;
+        }
+
+      if (executable_path != NULL)
+        break;
+
+      /* Let's get one directory level up */
+      p = strrchr (base_searching_path, G_DIR_SEPARATOR);
+      if (p == NULL)
+        break;
+
+      *p = '\0';
+    }
+  g_free (base_searching_path);
+
+  if (executable_path == NULL)
+    {
+      /* Search in system PATH */
+      executable_path = g_find_program_in_path (executable_name);
+      if (executable_path == NULL)
+        executable_path = g_strdup (executable_name);
+    }
+
+  return executable_path;
+}
+
 #endif
index 2e2e57f..93fa504 100644 (file)
@@ -1,4 +1,4 @@
-configure_file(input : 'glibconfig.h.in', output : 'glibconfig.h',
+glibconfig_h = configure_file(input : 'glibconfig.h.in', output : 'glibconfig.h',
   install_dir : join_paths(get_option('libdir'), 'glib-2.0/include'),
   configuration : glibconfig_conf)
 
@@ -20,14 +20,8 @@ libsysprof_capture_dep = dependency('sysprof-capture-4', version: '>= 3.38.0',
 )
 glib_conf.set('HAVE_SYSPROF', libsysprof_capture_dep.found())
 
-# TODO: gnulib_objects is a workaround for
-# <https://github.com/mesonbuild/meson/issues/3934> and
-# <https://github.com/mesonbuild/meson/issues/3937>. When we can depend
-# on a meson version where those are fixed, revert the commit that
-# introduced this workaround.
 if use_system_printf
   gnulib_lib = []
-  gnulib_objects = []
   gnulib_libm_dependency = []
   glib_conf.set ('gl_unused', '')
   glib_conf.set ('gl_extern_inline', '')
@@ -117,7 +111,6 @@ else
   endif
 
   subdir('gnulib')
-  gnulib_objects = [gnulib_lib.extract_all_objects(recursive: false)]
 endif
 
 glib_headers = files(
@@ -127,6 +120,10 @@ glib_headers = files(
 )
 install_headers(glib_headers, subdir : 'glib-2.0')
 
+# Expose as variable to be used by gobject-introspection
+# when it includes GLib as a subproject
+glib_unix_h = files('glib-unix.h')
+
 glib_deprecated_headers = files(
   'deprecated/gallocator.h',
   'deprecated/gcache.h',
@@ -317,14 +314,18 @@ glib_sources = files(
   'gprintf.c',
 )
 
+platform_deps = []
+
 if host_system == 'windows'
-  glib_win_rc = configure_file(
-    input: 'glib.rc.in',
-    output: 'glib.rc',
-    configuration: glibconfig_conf,
-  )
-  glib_win_res = windows.compile_resources(glib_win_rc)
-  glib_sources += [glib_win_res]
+  if get_option('default_library') == 'shared'
+    glib_win_rc = configure_file(
+      input: 'glib.rc.in',
+      output: 'glib.rc',
+      configuration: glibconfig_conf,
+    )
+    glib_win_res = windows.compile_resources(glib_win_rc)
+    glib_sources += [glib_win_res]
+  endif
   glib_sources += files('gwin32.c', 'gspawn-win32.c', 'giowin32.c')
   platform_deps = [winsock2, cc.find_library('winmm')]
   if cc.get_id() == 'msvc' or cc.get_id() == 'clang-cl'
@@ -337,6 +338,13 @@ endif
 
 if glib_have_cocoa
   glib_sources += files('gosxutils.m')
+  framework_dep = dependency('appleframeworks', modules : ['Foundation', 'CoreFoundation', 'AppKit'])
+  platform_deps += [framework_dep]
+endif
+
+if glib_have_carbon
+  framework_dep = dependency('appleframeworks', modules : 'Carbon')
+  platform_deps += [framework_dep]
 endif
 
 glib_sources += files('gthread-@0@.c'.format(threads_implementation))
@@ -359,7 +367,6 @@ glib_c_args = ['-DG_LOG_DOMAIN="GLib"', '-DGLIB_COMPILATION'] + pcre_static_args
 libglib = library('glib-2.0',
   glib_dtrace_obj, glib_dtrace_hdr,
   sources : [deprecated_sources, glib_sources],
-  objects : [charset_lib.extract_all_objects(recursive: false)] + gnulib_objects,
   version : library_version,
   soversion : soversion,
   darwin_versions : darwin_versions,
@@ -367,6 +374,7 @@ libglib = library('glib-2.0',
   # intl.lib is not compatible with SAFESEH
   link_args : [noseh_link_args, glib_link_flags, win32_ldflags],
   include_directories : configinc,
+  link_with: [charset_lib, gnulib_lib],
   dependencies : [pcre, thread_dep, librt] + libintl_deps + libiconv + platform_deps + [gnulib_libm_dependency, libm] + [libsysprof_capture_dep],
   c_args : glib_c_args,
   objc_args : glib_c_args,
@@ -380,7 +388,7 @@ libglib_dep = declare_dependency(
 
 pkg.generate(libglib,
   libraries : [libintl_deps],
-  libraries_private : [osx_ldflags, win32_ldflags],
+  libraries_private : [win32_ldflags],
   subdirs : ['glib-2.0'],
   extra_cflags : ['-I${libdir}/glib-2.0/include'] + win32_cflags,
   variables : ['bindir=' + join_paths('${prefix}', get_option('bindir')),
@@ -444,23 +452,34 @@ configure_file(
 
 install_data('glib_gdb.py', install_dir : join_paths(glib_pkgdatadir, 'gdb'))
 
+# This is needed to make gdb find glib_gdb.py
+if meson.version().version_compare('>=0.58')
+  env = environment()
+  env.prepend('PYTHONPATH', meson.current_source_dir())
+  meson.add_devenv(env)
+endif
+
 gdb_conf = configuration_data()
 gdb_conf.set('datadir', glib_datadir)
 # This is also used in gobject/meson.build
 if host_system != 'windows'
-  # XXX: We add a leading './' because glib_libdir is an absolute path and we
-  # need it to be a relative path so that join_paths appends it to the end.
-  gdb_install_dir = join_paths(glib_datadir, 'gdb', 'auto-load', './' + glib_libdir)
+  gdb_install = true
 else
   # FIXME: Cannot install on Windows because the path will contain a drive
   # letter and colons are not allowed in paths.
-  gdb_install_dir = false
+  gdb_install = false
 endif
+
+# XXX: We add a leading './' because glib_libdir is an absolute path and we
+# need it to be a relative path so that join_paths appends it to the end.
+gdb_install_dir = join_paths(glib_datadir, 'gdb', 'auto-load', './' + glib_libdir)
+
 configure_file(
   input: 'libglib-gdb.py.in',
   output: 'libglib-2.0.so.@0@-gdb.py'.format(library_version),
   configuration: gdb_conf,
   install_dir: gdb_install_dir,
+  install: gdb_install,
 )
 
 if enable_systemtap
index aface4e..6fed6cd 100644 (file)
 
 #include <glib.h>
 
-/* On smcv's laptop, 1e4 iterations didn't always exhibit the bug, but 1e5
- * iterations exhibited it 10/10 times in practice. YMMV. */
-#define ITERATIONS 100000
-
 static GStaticPrivate sp;
 static GMutex *mutex;
 static GCond *cond;
@@ -51,6 +47,19 @@ static gpointer thread_func (gpointer nil)
 static void
 testcase (void)
 {
+  /* On smcv's laptop, 1e4 iterations didn't always exhibit the bug, but 1e5
+   * iterations exhibited it 10/10 times in practice. YMMV.
+   *
+   * If running with `-m slow` we want to try hard to reproduce the bug 10/10
+   * times. However, as of 2022 this takes around 240s on a CI machine, which
+   * is a long time to tie up those resources to verify that a bug fixed 10
+   * years ago is still fixed.
+   *
+   * So if running without `-m slow`, try 100× less hard to reproduce the bug,
+   * and rely on the fact that this is run under CI often enough to have a good
+   * chance of reproducing the bug in 1% of CI runs. */
+  const guint n_iterations = g_test_slow () ? 100000 : 1000;
+
   g_test_bug ("https://bugzilla.gnome.org/show_bug.cgi?id=642026");
 
   mutex = g_mutex_new ();
@@ -58,7 +67,7 @@ testcase (void)
 
   g_mutex_lock (mutex);
 
-  for (i = 0; i < ITERATIONS; i++)
+  for (i = 0; i < n_iterations; i++)
     {
       GThread *t1;
 
index 471f617..284ac08 100644 (file)
@@ -845,6 +845,45 @@ test_array_copy_sized (void)
   g_array_unref (array1);
 }
 
+static void
+array_overflow_append_vals (void)
+{
+  if (!g_test_undefined ())
+      return;
+
+  if (g_test_subprocess ())
+    {
+      GArray *array = g_array_new (TRUE, FALSE, 1);
+      /* Check for overflow should happen before data is accessed. */
+      g_array_append_vals (array, NULL, G_MAXUINT);
+    }
+  else
+    {
+      g_test_trap_subprocess (NULL, 0, 0);
+      g_test_trap_assert_failed ();
+      g_test_trap_assert_stderr ("*adding 4294967295 to array would overflow*");
+    }
+}
+
+static void
+array_overflow_set_size (void)
+{
+  if (!g_test_undefined ())
+      return;
+
+  if (g_test_subprocess ())
+    {
+      GArray *array = g_array_new (TRUE, FALSE, 1);
+      g_array_set_size (array, G_MAXUINT);
+    }
+  else
+    {
+      g_test_trap_subprocess (NULL, 0, 0);
+      g_test_trap_assert_failed ();
+      g_test_trap_assert_stderr ("*adding 4294967295 to array would overflow*");
+    }
+}
+
 /* Check g_ptr_array_steal() function */
 static void
 pointer_array_steal (void)
@@ -1644,6 +1683,26 @@ pointer_array_steal_index (void)
 }
 
 static void
+byte_array_new_take_overflow (void)
+{
+#if SIZE_WIDTH <= UINT_WIDTH
+  g_test_skip ("Overflow test requires G_MAXSIZE > G_MAXUINT.");
+#else
+  GByteArray* arr;
+
+  if (!g_test_undefined ())
+      return;
+
+  /* Check for overflow should happen before data is accessed. */
+  g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                          "*assertion 'len <= G_MAXUINT' failed");
+  arr = g_byte_array_new_take (NULL, (gsize)G_MAXUINT + 1);
+  g_assert_null (arr);
+  g_test_assert_expected_messages ();
+#endif
+}
+
+static void
 byte_array_steal (void)
 {
   const guint array_size = 10000;
@@ -1998,6 +2057,8 @@ main (int argc, char *argv[])
   g_test_add_func ("/array/clear-func", array_clear_func);
   g_test_add_func ("/array/binary-search", test_array_binary_search);
   g_test_add_func ("/array/copy-sized", test_array_copy_sized);
+  g_test_add_func ("/array/overflow-append-vals", array_overflow_append_vals);
+  g_test_add_func ("/array/overflow-set-size", array_overflow_set_size);
 
   for (i = 0; i < G_N_ELEMENTS (array_configurations); i++)
     {
@@ -2043,6 +2104,7 @@ main (int argc, char *argv[])
   g_test_add_func ("/bytearray/sort", byte_array_sort);
   g_test_add_func ("/bytearray/sort-with-data", byte_array_sort_with_data);
   g_test_add_func ("/bytearray/new-take", byte_array_new_take);
+  g_test_add_func ("/bytearray/new-take-overflow", byte_array_new_take_overflow);
   g_test_add_func ("/bytearray/free-to-bytes", byte_array_free_to_bytes);
 
   return g_test_run ();
index c414e69..792b011 100644 (file)
@@ -51,6 +51,41 @@ void test_async_queue_sort (void)
 
   g_async_queue_sort (q, compare_func, NULL);
 
+  if (g_test_undefined ())
+    {
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion* failed*");
+      g_async_queue_push_sorted (NULL, GINT_TO_POINTER (1),
+                                 compare_func, NULL);
+      g_test_assert_expected_messages ();
+
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion* failed*");
+      g_async_queue_push_sorted_unlocked (NULL, GINT_TO_POINTER (1),
+                                          compare_func, NULL);
+      g_test_assert_expected_messages ();
+
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion* failed*");
+      g_async_queue_sort (NULL, compare_func, NULL);
+      g_test_assert_expected_messages ();
+
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion* failed*");
+      g_async_queue_sort (q, NULL, NULL);
+      g_test_assert_expected_messages ();
+
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion* failed*");
+      g_async_queue_sort_unlocked (NULL, compare_func, NULL);
+      g_test_assert_expected_messages ();
+
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion* failed*");
+      g_async_queue_sort_unlocked (q, NULL, NULL);
+      g_test_assert_expected_messages ();
+    }
+
   g_async_queue_push_sorted (q, GINT_TO_POINTER (1), compare_func, NULL);
   g_async_queue_push_sorted (q, GINT_TO_POINTER (8), compare_func, NULL);
 
@@ -78,6 +113,8 @@ test_async_queue_destroy (void)
 {
   GAsyncQueue *q;
 
+  destroy_count = 0;
+
   q = g_async_queue_new_full (destroy_notify);
 
   g_assert_cmpint (destroy_count, ==, 0);
@@ -181,11 +218,24 @@ test_async_queue_timed (void)
   gint64 start, end, diff;
   gpointer val;
 
+  g_get_current_time (&tv);
+  if (g_test_undefined ())
+    {
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion* failed*");
+      g_async_queue_timed_pop (NULL, &tv);
+      g_test_assert_expected_messages ();
+
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion* failed*");
+      g_async_queue_timed_pop_unlocked (NULL, &tv);
+      g_test_assert_expected_messages ();
+    }
+
   q = g_async_queue_new ();
 
   start = g_get_monotonic_time ();
-  val = g_async_queue_timeout_pop (q, G_USEC_PER_SEC / 10);
-  g_assert_null (val);
+  g_assert_null (g_async_queue_timeout_pop (q, G_USEC_PER_SEC / 10));
 
   end = g_get_monotonic_time ();
   diff = end - start;
@@ -195,24 +245,32 @@ test_async_queue_timed (void)
    */
   g_assert_cmpint (diff, <, 2 * G_USEC_PER_SEC);
 
+  g_async_queue_push (q, GINT_TO_POINTER (10));
+  val = g_async_queue_timed_pop (q, NULL);
+  g_assert_cmpint (GPOINTER_TO_INT (val), ==, 10);
+  g_assert_null (g_async_queue_try_pop (q));
+
   start = end;
   g_get_current_time (&tv);
   g_time_val_add (&tv, G_USEC_PER_SEC / 10);
-  val = g_async_queue_timed_pop (q, &tv);
-  g_assert_null (val);
+  g_assert_null (g_async_queue_timed_pop (q, &tv));
 
   end = g_get_monotonic_time ();
   diff = end - start;
   g_assert_cmpint (diff, >=, G_USEC_PER_SEC / 10);
   g_assert_cmpint (diff, <, 2 * G_USEC_PER_SEC);
 
+  g_async_queue_push (q, GINT_TO_POINTER (10));
+  val = g_async_queue_timed_pop_unlocked (q, NULL);
+  g_assert_cmpint (GPOINTER_TO_INT (val), ==, 10);
+  g_assert_null (g_async_queue_try_pop (q));
+
   start = end;
   g_get_current_time (&tv);
   g_time_val_add (&tv, G_USEC_PER_SEC / 10);
   g_async_queue_lock (q);
-  val = g_async_queue_timed_pop_unlocked (q, &tv);
+  g_assert_null (g_async_queue_timed_pop_unlocked (q, &tv));
   g_async_queue_unlock (q);
-  g_assert_null (val);
 
   end = g_get_monotonic_time ();
   diff = end - start;
@@ -229,6 +287,29 @@ test_async_queue_remove (void)
 
   q = g_async_queue_new ();
 
+  if (g_test_undefined ())
+    {
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion* failed*");
+      g_async_queue_remove (NULL, GINT_TO_POINTER (1));
+      g_test_assert_expected_messages ();
+
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion* failed*");
+      g_async_queue_remove (q, NULL);
+      g_test_assert_expected_messages ();
+
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion* failed*");
+      g_async_queue_remove_unlocked (NULL, GINT_TO_POINTER (1));
+      g_test_assert_expected_messages ();
+
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion* failed*");
+      g_async_queue_remove_unlocked (q, NULL);
+      g_test_assert_expected_messages ();
+    }
+
   g_async_queue_push (q, GINT_TO_POINTER (10));
   g_async_queue_push (q, GINT_TO_POINTER (2));
   g_async_queue_push (q, GINT_TO_POINTER (7));
@@ -252,6 +333,29 @@ test_async_queue_push_front (void)
 
   q = g_async_queue_new ();
 
+  if (g_test_undefined ())
+    {
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion* failed*");
+      g_async_queue_push_front (NULL, GINT_TO_POINTER (1));
+      g_test_assert_expected_messages ();
+
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion* failed*");
+      g_async_queue_push_front (q, NULL);
+      g_test_assert_expected_messages ();
+
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion* failed*");
+      g_async_queue_push_front_unlocked (NULL, GINT_TO_POINTER (1));
+      g_test_assert_expected_messages ();
+
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion* failed*");
+      g_async_queue_push_front_unlocked (q, NULL);
+      g_test_assert_expected_messages ();
+    }
+
   g_async_queue_push (q, GINT_TO_POINTER (10));
   g_async_queue_push (q, GINT_TO_POINTER (2));
   g_async_queue_push (q, GINT_TO_POINTER (7));
@@ -268,11 +372,149 @@ test_async_queue_push_front (void)
   g_async_queue_unref (q);
 }
 
+static void
+test_basics (void)
+{
+  GAsyncQueue *q;
+  gpointer item;
+
+  destroy_count = 0;
+
+  if (g_test_undefined ())
+    {
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion* failed*");
+      g_async_queue_length (NULL);
+      g_test_assert_expected_messages ();
+
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion* failed*");
+      g_async_queue_length_unlocked (NULL);
+      g_test_assert_expected_messages ();
+
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion* failed*");
+      g_async_queue_ref (NULL);
+      g_test_assert_expected_messages ();
+
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion* failed*");
+      g_async_queue_ref_unlocked (NULL);
+      g_test_assert_expected_messages ();
+
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion* failed*");
+      g_async_queue_unref (NULL);
+      g_test_assert_expected_messages ();
+
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion* failed*");
+      g_async_queue_unref_and_unlock (NULL);
+      g_test_assert_expected_messages ();
+
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion* failed*");
+      g_async_queue_lock (NULL);
+      g_test_assert_expected_messages ();
+
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion* failed*");
+      g_async_queue_unlock (NULL);
+      g_test_assert_expected_messages ();
+
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion* failed*");
+      g_async_queue_pop (NULL);
+      g_test_assert_expected_messages ();
+
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion* failed*");
+      g_async_queue_pop_unlocked (NULL);
+      g_test_assert_expected_messages ();
+
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion* failed*");
+      g_async_queue_try_pop (NULL);
+      g_test_assert_expected_messages ();
+
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion* failed*");
+      g_async_queue_try_pop_unlocked (NULL);
+      g_test_assert_expected_messages ();
+
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion* failed*");
+      g_async_queue_timeout_pop (NULL, 1);
+      g_test_assert_expected_messages ();
+
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion* failed*");
+      g_async_queue_timeout_pop_unlocked (NULL, 1);
+      g_test_assert_expected_messages ();
+    }
+
+  q = g_async_queue_new_full (destroy_notify);
+
+  if (g_test_undefined ())
+    {
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion* failed*");
+      g_async_queue_push (NULL, GINT_TO_POINTER (1));
+      g_test_assert_expected_messages ();
+
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion* failed*");
+      g_async_queue_push (q, NULL);
+      g_test_assert_expected_messages ();
+
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion* failed*");
+      g_async_queue_push_unlocked (NULL, GINT_TO_POINTER (1));
+      g_test_assert_expected_messages ();
+
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion* failed*");
+      g_async_queue_push_unlocked (q, NULL);
+      g_test_assert_expected_messages ();
+    }
+
+  g_async_queue_lock (q);
+  g_async_queue_ref (q);
+  g_async_queue_unlock (q);
+  g_async_queue_lock (q);
+  g_async_queue_ref_unlocked (q);
+  g_async_queue_unref_and_unlock (q);
+
+  item = g_async_queue_try_pop (q);
+  g_assert_null (item);
+
+  g_async_queue_lock (q);
+  item = g_async_queue_try_pop_unlocked (q);
+  g_async_queue_unlock (q);
+  g_assert_null (item);
+
+  g_async_queue_push (q, GINT_TO_POINTER (1));
+  g_async_queue_push (q, GINT_TO_POINTER (2));
+  g_async_queue_push (q, GINT_TO_POINTER (3));
+  g_assert_cmpint (destroy_count, ==, 0);
+
+  g_async_queue_unref (q);
+  g_assert_cmpint (destroy_count, ==, 0);
+
+  item = g_async_queue_pop (q);
+  g_assert_cmpint (GPOINTER_TO_INT (item), ==, 1);
+  g_assert_cmpint (destroy_count, ==, 0);
+
+  g_async_queue_unref (q);
+  g_assert_cmpint (destroy_count, ==, 2);
+}
+
 int
 main (int argc, char *argv[])
 {
   g_test_init (&argc, &argv, NULL);
 
+  g_test_add_func ("/asyncqueue/basics", test_basics);
   g_test_add_func ("/asyncqueue/sort", test_async_queue_sort);
   g_test_add_func ("/asyncqueue/destroy", test_async_queue_destroy);
   g_test_add_func ("/asyncqueue/threads", test_async_queue_threads);
similarity index 100%
rename from tests/casefold.txt
rename to glib/tests/casefold.txt
similarity index 100%
rename from tests/casemap.txt
rename to glib/tests/casemap.txt
similarity index 58%
rename from tests/completion-test.c
rename to glib/tests/completion.c
index e966494..4f79037 100644 (file)
  * Modified by the GLib Team and others 1997-2000.  See the AUTHORS
  * file for a list of people on the GLib Team.  See the ChangeLog
  * files for a list of changes.  These files are distributed with
- * GLib at ftp://ftp.gtk.org/pub/gtk/. 
+ * GLib at ftp://ftp.gtk.org/pub/gtk/.
  */
+
+/* We are testing some deprecated APIs here */
+#ifndef GLIB_DISABLE_DEPRECATION_WARNINGS
+#define GLIB_DISABLE_DEPRECATION_WARNINGS
+#endif
+
 #include <string.h>
 
 #include "glib.h"
 
-int main (int argc, char *argv[])
+static void
+test_completion (void)
 {
+  static const char *const a1 = "a\302\243";
+  static const char *const a2 = "a\302\244";
+  static const char *const bb = "bb";
+  static const char *const bc = "bc";
+
   GCompletion *cmp;
   GList *items;
   gchar *prefix;
-  
+
   cmp = g_completion_new (NULL);
   g_completion_set_compare (cmp, strncmp);
 
   items = NULL;
-  items = g_list_append (items, "a\302\243");
-  items = g_list_append (items, "a\302\244");
-  items = g_list_append (items, "bb");
-  items = g_list_append (items, "bc");
+  items = g_list_append (items, (gpointer) a1);
+  items = g_list_append (items, (gpointer) a2);
+  items = g_list_append (items, (gpointer) bb);
+  items = g_list_append (items, (gpointer) bc);
   g_completion_add_items (cmp, items);
   g_list_free (items);
 
   items = g_completion_complete (cmp, "a", &prefix);
-  g_assert (!strcmp ("a\302", prefix));
-  g_assert (g_list_length (items) == 2);
+  g_assert_cmpstr (prefix, ==, "a\302");
+  g_assert_cmpint (g_list_length (items), ==, 2);
   g_free (prefix);
-  
+
   items = g_completion_complete_utf8 (cmp, "a", &prefix);
-  g_assert (!strcmp ("a", prefix));
-  g_assert (g_list_length (items) == 2);
+  g_assert_cmpstr (prefix, ==, "a");
+  g_assert_cmpint (g_list_length (items), ==, 2);
   g_free (prefix);
 
   items = g_completion_complete (cmp, "b", &prefix);
-  g_assert (!strcmp ("b", prefix));
-  g_assert (g_list_length (items) == 2);
+  g_assert_cmpstr (prefix, ==, "b");
+  g_assert_cmpint (g_list_length (items), ==, 2);
   g_free (prefix);
-  
+
   items = g_completion_complete_utf8 (cmp, "b", &prefix);
-  g_assert (!strcmp ("b", prefix));
-  g_assert (g_list_length (items) == 2);
+  g_assert_cmpstr (prefix, ==, "b");
+  g_assert_cmpint (g_list_length (items), ==, 2);
   g_free (prefix);
 
   items = g_completion_complete (cmp, "a", NULL);
-  g_assert (g_list_length (items) == 2);
+  g_assert_cmpint (g_list_length (items), ==, 2);
 
   items = g_completion_complete_utf8 (cmp, "a", NULL);
-  g_assert (g_list_length (items) == 2);
+  g_assert_cmpint (g_list_length (items), ==, 2);
 
-  items = g_list_append (NULL, "bb");
+  items = g_list_append (NULL, (gpointer) bb);
   g_completion_remove_items (cmp, items);
   g_list_free (items);
 
   items = g_completion_complete_utf8 (cmp, "b", &prefix);
-  g_assert (g_list_length (items) == 1);
+  g_assert_cmpint (g_list_length (items), ==, 1);
   g_free (prefix);
 
   g_completion_free (cmp);
+}
+
+int
+main (int argc,
+      char *argv[])
+{
+  g_test_init (&argc, &argv, NULL);
+  g_test_add_func ("/completion/test-completion", test_completion);
 
-  return 0;
+  return g_test_run ();
 }
index c423b2f..6426d43 100644 (file)
@@ -49,16 +49,56 @@ test_typeof (void)
   g_clear_pointer (&obj6, g_rc_box_release);
   g_rc_box_release (obj);
 #else
-  g_test_skip ("This test requires C++11 compiler");
+  g_test_skip ("This test requires a C++11 compiler");
+#endif
+}
+
+static void
+test_atomic_pointer_compare_and_exchange (void)
+{
+#if __cplusplus >= 201103L
+  const gchar *str1 = "str1";
+  const gchar *str2 = "str2";
+  const gchar *atomic_string = str1;
+
+  g_test_message ("Test that g_atomic_pointer_compare_and_exchange() with a "
+                  "non-void* pointer doesn’t have any compiler warnings in C++ mode");
+
+  g_assert_true (g_atomic_pointer_compare_and_exchange (&atomic_string, str1, str2));
+  g_assert_true (atomic_string == str2);
+#else
+  g_test_skip ("This test requires a C++11 compiler");
+#endif
+}
+
+static void
+test_atomic_int_compare_and_exchange (void)
+{
+#if __cplusplus >= 201103L
+  gint atomic_int = 5;
+
+  g_test_message ("Test that g_atomic_int_compare_and_exchange() doesn’t have "
+                  "any compiler warnings in C++ mode");
+
+  g_assert_true (g_atomic_int_compare_and_exchange (&atomic_int, 5, 50));
+  g_assert_cmpint (atomic_int, ==, 50);
+#else
+  g_test_skip ("This test requires a C++11 compiler");
 #endif
 }
 
 int
 main (int argc, char *argv[])
 {
+#if __cplusplus >= 201103L
+  g_test_init (&argc, &argv, nullptr);
+#else
   g_test_init (&argc, &argv, NULL);
+#endif
 
   g_test_add_func ("/C++/typeof", test_typeof);
+  g_test_add_func ("/C++/atomic-pointer-compare-and-exchange", test_atomic_pointer_compare_and_exchange);
+  g_test_add_func ("/C++/atomic-int-compare-and-exchange", test_atomic_int_compare_and_exchange);
 
   return g_test_run ();
 }
index a927605..b02b3e4 100644 (file)
@@ -179,13 +179,13 @@ test_dataset_id (void)
   g_assert (ret == NULL);
 }
 
-static GData *list;
+static GData *global_list;
 
 static void
 free_one (gpointer data)
 {
   /* recurse */
-  g_datalist_clear (&list);
+  g_datalist_clear (&global_list);
 }
 
 static void
@@ -194,11 +194,11 @@ test_datalist_clear (void)
   /* Need to use a subprocess because it will deadlock if it fails */
   if (g_test_subprocess ())
     {
-      g_datalist_init (&list);
-      g_datalist_set_data_full (&list, "one", GINT_TO_POINTER (1), free_one);
-      g_datalist_set_data_full (&list, "two", GINT_TO_POINTER (2), NULL);
-      g_datalist_clear (&list);
-      g_assert (list == NULL);
+      g_datalist_init (&global_list);
+      g_datalist_set_data_full (&global_list, "one", GINT_TO_POINTER (1), free_one);
+      g_datalist_set_data_full (&global_list, "two", GINT_TO_POINTER (2), NULL);
+      g_datalist_clear (&global_list);
+      g_assert (global_list == NULL);
       return;
     }
 
index 5c60ffc..e382295 100644 (file)
@@ -1,13 +1,8 @@
-#undef G_DISABLE_ASSERT
-#undef G_LOG_DOMAIN
-
 /* We are testing some deprecated APIs here */
 #ifndef GLIB_DISABLE_DEPRECATION_WARNINGS
 #define GLIB_DISABLE_DEPRECATION_WARNINGS
 #endif
 
-#include "config.h"
-
 #include "glib.h"
 
 #include <stdio.h>
 static void
 test_basic (void)
 {
+  GDate *d;
+  struct tm tm = { 0 };
+
+  /* g_date_valid (d) */
+  if (g_test_undefined ())
+    {
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion *failed*");
+      g_assert_false (g_date_valid (NULL));
+      g_test_assert_expected_messages ();
+    }
+
+  /* g_date_new_dmy (d, m, y) */
+  if (g_test_undefined ())
+    {
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion *failed*");
+      g_assert_null (g_date_new_dmy (0, 0, 0));
+      g_test_assert_expected_messages ();
+    }
+
+  d = g_date_new ();
+  if (g_test_undefined ())
+    {
+      /* g_date_get_weekday (d) */
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion *failed*");
+      g_assert_cmpint (g_date_get_weekday (d), ==, G_DATE_BAD_WEEKDAY);
+      g_test_assert_expected_messages ();
+
+      /* g_date_get_day (d) */
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion *failed*");
+      g_assert_cmpint (g_date_get_day (d), ==, G_DATE_BAD_DAY);
+      g_test_assert_expected_messages ();
+
+      /* g_date_get_month (d) */
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion *failed*");
+      g_assert_cmpint (g_date_get_month (d), ==, G_DATE_BAD_MONTH);
+      g_test_assert_expected_messages ();
+
+      /* g_date_get_year (d) */
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion *failed*");
+      g_assert_cmpint (g_date_get_year (d), ==, G_DATE_BAD_YEAR);
+      g_test_assert_expected_messages ();
+
+      /* g_date_to_struct_tm (d, tm) */
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion *failed*");
+      g_date_to_struct_tm (d, &tm);
+      g_test_assert_expected_messages ();
+
+      /* g_is_leap_year (y) */
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion *failed*");
+      g_assert_false (g_date_is_leap_year (0));
+      g_test_assert_expected_messages ();
+
+      /* g_date_get_days_in_month (m, y) */
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion *failed*");
+      g_assert_cmpint (g_date_get_days_in_month (0, 1), ==, 0);
+      g_test_assert_expected_messages ();
+
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion *failed*");
+      g_assert_cmpint (g_date_get_days_in_month (1, 0), ==, 0);
+      g_test_assert_expected_messages ();
+
+      /* g_date_set_time_t (d, t) */
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion *failed*");
+      g_date_set_time_t (NULL, 1);
+      g_test_assert_expected_messages ();
+
+      /* g_date_is_first_of_month (d) */
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion *failed*");
+      g_assert_false (g_date_is_first_of_month (d));
+      g_test_assert_expected_messages ();
+
+      /* g_date_is_last_of_month (d) */
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion *failed*");
+      g_assert_false (g_date_is_last_of_month (d));
+      g_test_assert_expected_messages ();
+
+      /* g_date_add_days (d, n) */
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion *failed*");
+      g_date_add_days (d, 1);
+      g_test_assert_expected_messages ();
+
+      /* g_date_subtract_days (d, n) */
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion *failed*");
+      g_date_subtract_days (d, 1);
+      g_test_assert_expected_messages ();
+
+      /* g_date_add_months (d, n) */
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion *failed*");
+      g_date_add_months (d, 1);
+      g_test_assert_expected_messages ();
+
+      /* g_date_subtract_months (d, n) */
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion *failed*");
+      g_date_subtract_months (d, 1);
+      g_test_assert_expected_messages ();
+
+      /* g_date_add_years (d, y) */
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion *failed*");
+      g_date_add_years (d, 1);
+      g_test_assert_expected_messages ();
+
+      /* g_date_subtract_years (d, y) */
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion *failed*");
+      g_date_subtract_years (d, 1);
+      g_test_assert_expected_messages ();
+
+      /* g_date_set_month (d, m) */
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion *failed*");
+      g_date_set_month (NULL, 1);
+      g_test_assert_expected_messages ();
+
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion *failed*");
+      g_date_set_month (d, 13);
+      g_test_assert_expected_messages ();
+
+      /* g_date_set_day (d, day) */
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion *failed*");
+      g_date_set_day (NULL, 1);
+      g_test_assert_expected_messages ();
+
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion *failed*");
+      g_date_set_day (d, 32);
+      g_test_assert_expected_messages ();
+
+      /* g_date_set_year (d, y) */
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion *failed*");
+      g_date_set_year (NULL, 1);
+      g_test_assert_expected_messages ();
+
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion *failed*");
+      g_date_set_year (d, (GDateYear) (G_MAXUINT16 + 1));
+      g_test_assert_expected_messages ();
+
+      /* g_date_set_dmy (date, d, m, y) */
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion *failed*");
+      g_date_set_dmy (NULL, 1, 1, 1);
+      g_test_assert_expected_messages ();
+
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion *failed*");
+      g_date_set_dmy (d, 0, 0, 0);
+      g_test_assert_expected_messages ();
+
+      /* g_date_set_julian (date, d) */
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion *failed*");
+      g_date_set_julian (NULL, 1);
+      g_test_assert_expected_messages ();
+
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion *failed*");
+      g_date_set_julian (d, 0);
+      g_test_assert_expected_messages ();
+
+      /* g_date_clear (d, n) */
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion *failed*");
+      g_date_clear (d, 0);
+      g_test_assert_expected_messages ();
+
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion *failed*");
+      g_date_clear (NULL, 1);
+      g_test_assert_expected_messages ();
+    }
+
+  g_date_set_dmy (d, 1, 1, 1);
+  if (g_test_undefined ())
+    {
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion *failed*");
+      g_date_to_struct_tm (d, NULL);
+      g_test_assert_expected_messages ();
+   }
+  g_date_free (d);
+
   g_assert_cmpint (sizeof (GDate), <,  9);
-  g_assert (!g_date_valid_month (G_DATE_BAD_MONTH));
-  g_assert (!g_date_valid_month (13));
-  g_assert (!g_date_valid_day (G_DATE_BAD_DAY));
-  g_assert (!g_date_valid_day (32));
-  g_assert (!g_date_valid_year (G_DATE_BAD_YEAR));
-  g_assert (!g_date_valid_julian (G_DATE_BAD_JULIAN));
-  g_assert (!g_date_valid_weekday (G_DATE_BAD_WEEKDAY));
-  g_assert (g_date_is_leap_year (2000));
-  g_assert (!g_date_is_leap_year (1999));
-  g_assert (g_date_is_leap_year (1996));
-  g_assert (g_date_is_leap_year (1600));
-  g_assert (!g_date_is_leap_year (2100));
-  g_assert (!g_date_is_leap_year (1800));
+  g_assert_false (g_date_valid_month (G_DATE_BAD_MONTH));
+  g_assert_false (g_date_valid_month (13));
+  g_assert_false (g_date_valid_day (G_DATE_BAD_DAY));
+  g_assert_false (g_date_valid_day (32));
+  g_assert_false (g_date_valid_year (G_DATE_BAD_YEAR));
+  g_assert_false (g_date_valid_julian (G_DATE_BAD_JULIAN));
+  g_assert_false (g_date_valid_weekday (G_DATE_BAD_WEEKDAY));
+  g_assert_true (g_date_valid_weekday ((GDateWeekday) 1));
+  g_assert_false (g_date_valid_weekday ((GDateWeekday) 8));
+  g_assert_true (g_date_is_leap_year (2000));
+  g_assert_false (g_date_is_leap_year (1999));
+  g_assert_true (g_date_is_leap_year (1996));
+  g_assert_true (g_date_is_leap_year (1600));
+  g_assert_false (g_date_is_leap_year (2100));
+  g_assert_false (g_date_is_leap_year (1800));
 }
 
 static void
@@ -50,8 +249,17 @@ test_empty_constructor (void)
   GDate *d;
 
   d = g_date_new ();
-  g_assert (!g_date_valid (d));
+  g_assert_false (g_date_valid (d));
   g_date_free (d);
+
+  if (g_test_undefined ())
+    {
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion *failed*");
+      g_date_free (NULL);
+      g_test_assert_expected_messages ();
+    }
+
 }
 
 static void
@@ -61,7 +269,8 @@ test_dmy_constructor (void)
   guint32 j;
 
   d = g_date_new_dmy (1, 1, 1);
-  g_assert (g_date_valid (d));
+  g_assert_true (g_date_valid (d));
+
   j = g_date_get_julian (d);
   g_assert_cmpint (j, ==, 1);
   g_assert_cmpint (g_date_get_month (d), ==, G_DATE_JANUARY);
@@ -71,11 +280,122 @@ test_dmy_constructor (void)
 }
 
 static void
+test_date_compare (void)
+{
+  GDate *d1;
+  GDate *d2;
+
+  d1 = g_date_new ();
+  d2 = g_date_new ();
+  if (g_test_undefined ())
+    {
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion *failed*");
+      g_assert_cmpint (g_date_days_between (d1, d2), ==, 0);
+      g_test_assert_expected_messages ();
+
+      g_date_set_dmy (d1, 1, 1, 1);
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion *failed*");
+      g_assert_cmpint (g_date_days_between (d1, d2), ==, 0);
+      g_test_assert_expected_messages ();
+    }
+  g_date_free (d1);
+  g_date_free (d2);
+
+  d1 = g_date_new ();
+  d2 = g_date_new ();
+  if (g_test_undefined ())
+    {
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion *failed*");
+      g_assert_cmpint (g_date_compare (NULL, d2), ==, 0);
+      g_test_assert_expected_messages ();
+
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion *failed*");
+      g_assert_cmpint (g_date_compare (d1, NULL), ==, 0);
+      g_test_assert_expected_messages ();
+
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion *failed*");
+      g_assert_cmpint (g_date_compare (d1, d2), ==, 0);
+      g_test_assert_expected_messages ();
+
+      g_date_set_dmy (d1, 1, 1, 1);
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion *failed*");
+      g_assert_cmpint (g_date_compare (d1, d2), ==, 0);
+      g_test_assert_expected_messages ();
+    }
+  g_date_free (d1);
+  g_date_free (d2);
+
+  d1 = g_date_new ();
+  d2 = g_date_new ();
+
+  /* DMY format */
+  g_date_set_dmy (d1, 1, 1, 1);
+  g_date_set_dmy (d2, 10, 1, 1);
+
+  g_assert_cmpint (g_date_compare (d1, d1), ==, 0);
+
+  g_assert_cmpint (g_date_compare (d1, d2), ==, -1);
+  g_assert_cmpint (g_date_compare (d2, d1), >, 0);
+
+  g_date_set_dmy (d2, 1, 10, 1);
+  g_assert_cmpint (g_date_compare (d1, d2), ==, -1);
+  g_assert_cmpint (g_date_compare (d2, d1), >, 0);
+
+  g_date_set_dmy (d2, 1, 1, 10);
+  g_assert_cmpint (g_date_compare (d1, d2), ==, -1);
+  g_assert_cmpint (g_date_compare (d2, d1), >, 0);
+
+  /* Julian format */
+  g_date_set_julian (d1, 1);
+  g_date_set_julian (d2, 10);
+
+  g_assert_cmpint (g_date_compare (d1, d1), ==, 0);
+
+  g_assert_cmpint (g_date_compare (d1, d2), ==, -1);
+  g_assert_cmpint (g_date_compare (d2, d1), >, 0);
+
+  g_date_set_julian (d2, 32);
+  g_assert_cmpint (g_date_compare (d1, d2), ==, -1);
+  g_assert_cmpint (g_date_compare (d2, d1), >, 0);
+
+  g_date_set_julian (d2, 366);
+  g_assert_cmpint (g_date_compare (d1, d2), ==, -1);
+  g_assert_cmpint (g_date_compare (d2, d1), >, 0);
+
+  g_date_free (d1);
+  g_date_free (d2);
+}
+
+static void
 test_julian_constructor (void)
 {
   GDate *d1;
   GDate *d2;
 
+  if (g_test_undefined ())
+    {
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion *failed*");
+      g_assert_null (g_date_new_julian (0));
+      g_test_assert_expected_messages ();
+    }
+
+  d1 = g_date_new ();
+  if (g_test_undefined ())
+    {
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion *failed*");
+      g_assert_cmpint (g_date_get_julian (d1), ==, G_DATE_BAD_JULIAN);
+      g_test_assert_expected_messages ();
+    }
+  g_date_free (d1);
+
   d1 = g_date_new_julian (4000);
   d2 = g_date_new_julian (5000);
   g_assert_cmpint (g_date_get_julian (d1), ==, 4000);
@@ -95,91 +415,628 @@ test_dates (void)
 
   d = g_date_new ();
 
+  /* getters on empty date */
+  if (g_test_undefined ())
+    {
+      /* g_date_get_day_of_year (d) */
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion *failed*");
+      g_assert_cmpint (g_date_get_day_of_year (d), ==, 0);
+      g_test_assert_expected_messages ();
+
+      /* g_date_get_monday_week_of_year (d) */
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion *failed*");
+      g_assert_cmpint (g_date_get_monday_week_of_year (d), ==, 0);
+      g_test_assert_expected_messages ();
+
+      /* g_date_get_monday_weeks_in_year (y) */
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion *failed*");
+      g_assert_cmpint (g_date_get_monday_weeks_in_year (0), ==, 0);
+      g_test_assert_expected_messages ();
+
+      /* g_date_get_sunday_week_of_year (d) */
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion *failed*");
+      g_assert_cmpint (g_date_get_sunday_week_of_year (d), ==, 0);
+      g_test_assert_expected_messages ();
+
+      /* g_date_get_sunday_weeks_in_year (y) */
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion *failed*");
+      g_assert_cmpint (g_date_get_sunday_weeks_in_year (0), ==, 0);
+      g_test_assert_expected_messages ();
+
+      /* g_date_get_iso8601_week_of_year (d) */
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion *failed*");
+      g_assert_cmpint (g_date_get_iso8601_week_of_year (d), ==, 0);
+      g_test_assert_expected_messages ();
+    }
+
+  g_date_free (d);
+
+  /* Remove more time than we have */
+  d = g_date_new_julian (1);
+  if (g_test_undefined ())
+    {
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion *failed*");
+      g_date_subtract_days (d, 103);
+      g_test_assert_expected_messages ();
+    }
+  g_date_free (d);
+
+  d = g_date_new_julian (375);
+  if (g_test_undefined ())
+    {
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion *failed*");
+      g_date_subtract_months (d, 13);
+      g_test_assert_expected_messages ();
+    }
+  g_date_free (d);
+
+  d = g_date_new_julian (375);
+  if (g_test_undefined ())
+    {
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion *failed*");
+      g_date_subtract_years (d, 2);
+      g_test_assert_expected_messages ();
+    }
+  g_date_free (d);
+
+  /* Test on leap years */
+  g_assert_cmpint (g_date_get_monday_weeks_in_year (1764), ==, 53);
+  g_assert_cmpint (g_date_get_monday_weeks_in_year (1776), ==, 53);
+
+  g_assert_cmpint (g_date_get_sunday_weeks_in_year (1792), ==, 53);
+
+  /* Trigger the update of the dmy/julian parts */
+  d = g_date_new_julian (1);
+  g_assert_cmpint (g_date_get_day_of_year (d), ==, 1);
+  g_date_free (d);
+
+  d = g_date_new_julian (1);
+  g_assert_cmpint (g_date_get_monday_week_of_year (d), ==, 1);
+  g_date_free (d);
+
+  d = g_date_new_julian (1);
+  g_assert_cmpint (g_date_get_sunday_week_of_year (d), ==, 0);
+  g_date_free (d);
+
+  d = g_date_new_julian (1);
+  g_assert_cmpint (g_date_is_first_of_month (d), ==, 1);
+  g_date_free (d);
+
+  d = g_date_new_dmy (31, 3, 8);
+  g_date_subtract_months (d, 1);
+  g_assert_cmpint (g_date_get_month (d), ==, 2);
+  g_assert_cmpint (g_date_get_day (d), ==, 29);
+  g_assert_cmpint (g_date_get_year (d), ==, 8);
+  g_date_free (d);
+
+  d = g_date_new_julian (375);
+  g_date_add_months (d, 1);
+  g_assert_cmpint (g_date_get_month (d), ==, 2);
+  g_assert_cmpint (g_date_get_day (d), ==, 10);
+  g_assert_cmpint (g_date_get_year (d), ==, 2);
+  g_date_free (d);
+
+  d = g_date_new_julian (375);
+  g_date_subtract_months (d, 1);
+  g_assert_cmpint (g_date_get_month (d), ==, 12);
+  g_assert_cmpint (g_date_get_day (d), ==, 10);
+  g_assert_cmpint (g_date_get_year (d), ==, 1);
+  g_date_free (d);
+
+  d = g_date_new_julian (375);
+  g_date_add_years (d, 1);
+  g_assert_cmpint (g_date_get_month (d), ==, 1);
+  g_assert_cmpint (g_date_get_day (d), ==, 10);
+  g_assert_cmpint (g_date_get_year (d), ==, 3);
+  g_date_free (d);
+
+  d = g_date_new_julian (675);
+  g_date_subtract_years (d, 1);
+  g_assert_cmpint (g_date_get_month (d), ==, 11);
+  g_assert_cmpint (g_date_get_day (d), ==, 6);
+  g_assert_cmpint (g_date_get_year (d), ==, 1);
+  g_date_free (d);
+
+  d = g_date_new_dmy (28, 2, 7);
+  g_date_subtract_years (d, 1);
+  g_assert_cmpint (g_date_get_month (d), ==, 2);
+  g_assert_cmpint (g_date_get_day (d), ==, 28);
+  g_assert_cmpint (g_date_get_year (d), ==, 6);
+  g_date_free (d);
+
+  d = g_date_new_dmy (29, 2, 8);
+  g_date_subtract_years (d, 1);
+  g_assert_cmpint (g_date_get_month (d), ==, 2);
+  g_assert_cmpint (g_date_get_day (d), ==, 28);
+  g_assert_cmpint (g_date_get_year (d), ==, 7);
+  g_date_free (d);
+
+  d = g_date_new_dmy (1, 1, 1);
+  g_assert_cmpint (g_date_get_iso8601_week_of_year (d), ==, 1);
+  g_date_free (d);
+
+  d = g_date_new_julian (1);
+  g_date_set_year (d, 6);
+  g_assert_cmpint (g_date_get_month (d), ==, 1);
+  g_assert_cmpint (g_date_get_day (d), ==, 1);
+  g_assert_cmpint (g_date_get_year (d), ==, 6);
+  g_date_free (d);
+
+  d = g_date_new_dmy (1, 1, 1);
+  g_date_set_year (d, 6);
+  g_assert_cmpint (g_date_get_month (d), ==, 1);
+  g_assert_cmpint (g_date_get_day (d), ==, 1);
+  g_assert_cmpint (g_date_get_year (d), ==, 6);
+  g_date_free (d);
+
+  d = g_date_new_julian (1);
+  g_date_set_month (d, 6);
+  g_assert_cmpint (g_date_get_month (d), ==, 6);
+  g_assert_cmpint (g_date_get_day (d), ==, 1);
+  g_assert_cmpint (g_date_get_year (d), ==, 1);
+  g_date_free (d);
+
+  d = g_date_new_dmy (1, 1, 1);
+  g_date_set_month (d, 6);
+  g_assert_cmpint (g_date_get_month (d), ==, 6);
+  g_assert_cmpint (g_date_get_day (d), ==, 1);
+  g_assert_cmpint (g_date_get_year (d), ==, 1);
+  g_date_free (d);
+
+  d = g_date_new_julian (1);
+  g_date_set_day (d, 6);
+  g_assert_cmpint (g_date_get_month (d), ==, 1);
+  g_assert_cmpint (g_date_get_day (d), ==, 6);
+  g_assert_cmpint (g_date_get_year (d), ==, 1);
+  g_date_free (d);
+
+  d = g_date_new_dmy (1, 1, 1);
+  g_date_set_day (d, 6);
+  g_assert_cmpint (g_date_get_month (d), ==, 1);
+  g_assert_cmpint (g_date_get_day (d), ==, 6);
+  g_assert_cmpint (g_date_get_year (d), ==, 1);
+  g_date_free (d);
+
+  d = g_date_new_julian (1);
+  g_assert_cmpint (g_date_get_month (d), ==, 1);
+  g_date_free (d);
+
+  /* Correct usage */
+  d = g_date_new ();
+
   /* today */
   now = time (NULL);
   g_assert_cmpint (now, !=, (time_t) -1);
   g_date_set_time (d, now);
-  g_assert (g_date_valid (d));
+  g_assert_true (g_date_valid (d));
 
   /* Unix epoch */
   g_date_set_time (d, 1);
-  g_assert (g_date_valid (d));
+  g_assert_true (g_date_valid (d));
 
   tv.tv_sec = 0;
   tv.tv_usec = 0;
   g_date_set_time_val (d, &tv);
-  g_assert (g_date_valid (d));
+  g_assert_true (g_date_valid (d));
 
   /* Julian day 1 */
   g_date_set_julian (d, 1);
-  g_assert (g_date_valid (d));
+  g_assert_true (g_date_valid (d));
 
   g_date_set_year (d, 3);
   g_date_set_day (d, 3);
   g_date_set_month (d, 3);
-  g_assert (g_date_valid (d));
+  g_assert_true (g_date_valid (d));
   g_assert_cmpint (g_date_get_year (d), ==, 3);
   g_assert_cmpint (g_date_get_month (d), ==, 3);
   g_assert_cmpint (g_date_get_day (d), ==, 3);
-  g_assert (!g_date_is_first_of_month (d));
-  g_assert (!g_date_is_last_of_month (d));
+  g_assert_false (g_date_is_first_of_month (d));
+  g_assert_false (g_date_is_last_of_month (d));
   g_date_set_day (d, 1);
-  g_assert (g_date_is_first_of_month (d));
+  g_assert_true (g_date_is_first_of_month (d));
   g_date_subtract_days (d, 1);
-  g_assert (g_date_is_last_of_month (d));
+  g_assert_true (g_date_is_last_of_month (d));
+
+  /* Testing some other corner cases */
+  g_date_set_dmy (d, 29, 2, 2000);
+  g_date_subtract_months (d, 2);
+  g_assert_cmpint (g_date_get_month (d), ==, 12);
+  g_assert_cmpint (g_date_get_day (d), ==, 29);
+  g_assert_cmpint (g_date_get_year (d), ==, 1999);
+
+  /* Attempt to assign a February 29 to a non-leap year */
+  g_date_set_month (d, 2);
+  g_date_set_day (d, 29);
+  g_assert_false (g_date_valid (d));
+  g_date_set_year (d, 3);
+  g_assert_false (g_date_valid (d));
 
   g_date_free (d);
 }
 
 static void
-test_parse (void)
+test_strftime (void)
 {
+  gsize i;
   GDate *d;
   gchar buf[101];
+  const gchar invalid[] = "hello\xffworld%x";
+  gchar *oldlocale;
+#ifdef G_OS_WIN32
+  LCID old_lcid;
+#endif
+
+  struct
+  {
+    const gchar *format;
+    const gchar *expect;
+  } strftime_checks[] = {
+    { "%A", "Monday" },
+    { "%a", "Mon" },
+    { "%D", "01/01/01" },
+    { "%d", "01" },
+    { "%e", " 1" },
+    { "%H", "00" },
+    { "%I", "12" },
+    { "%j", "001" },
+    { "%M", "00" },
+    { "%m", "01" },
+    { "%n", "\n" },
+    { "%OB", "January" },
+    { "%Ob", "Jan" },
+    { "%p", "AM" },
+    { "%R", "00:00" },
+    { "%S", "00" },
+    { "%T", "00:00:00" },
+    { "%t", "\t" },
+    { "%U", "00" },
+    { "%u", "1" },
+    { "%V", "01" },
+    { "%W", "01" },
+    { "%w", "1" },
+    { "%y", "01" },
+    { "%z", "" },
+    { "%%", "%" },
+#if defined(G_OS_WIN32)
+    { "%C", "00" },
+    { "%c", " 12:00:00 AM" },
+    { "%E", "" },
+    { "%F", "" },
+    { "%G", "" },
+    { "%g", "" },
+    { "%h", "" },
+    { "%k", "" },
+    { "%l", "" },
+    { "%O", "" },
+    { "%P", "" },
+    { "%r", "12:00:00AM" },
+    { "%X", "12:00:00 AM" },
+    { "%x", "" },
+    { "%Y", "0001" },
+#else
+    { "%B", "January" },
+    { "%b", "Jan" },
+#if defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__APPLE__)
+    { "%C", "00" },
+    { "%c", "Mon Jan  1 00:00:00 0001" },
+    { "%E", "E" },
+    { "%F", "0001-01-01" },
+    { "%G", "0001" },
+    { "%O", "O" },
+    { "%P", "P" },
+    { "%Y", "0001" },
+#else
+    { "%C", "0" },
+    { "%c", "Mon Jan  1 00:00:00 1" },
+    { "%E", "%E" },
+    { "%F", "1-01-01" },
+    { "%G", "1" },
+    { "%O", "%O" },
+    { "%P", "am" },
+    { "%Y", "1" },
+#endif
+    { "%g", "01" },
+    { "%h", "Jan" },
+    { "%k", " 0" },
+    { "%l", "12" },
+    { "%r", "12:00:00 AM" },
+    { "%X", "00:00:00" },
+    { "%x", "01/01/01" },
+    { "%Z", "" },
+#endif
+  };
+
+  oldlocale = g_strdup (setlocale (LC_ALL, NULL));
+#ifdef G_OS_WIN32
+  old_lcid = GetThreadLocale ();
+#endif
+
+  /* Make sure that nothing has been changed in the original locales.  */
+  setlocale (LC_ALL, "C");
+#ifdef G_OS_WIN32
+  SetThreadLocale (MAKELCID (MAKELANGID (LANG_ENGLISH, SUBLANG_ENGLISH_US), SORT_DEFAULT));
+#endif
 
   d = g_date_new ();
 
+  if (g_test_undefined ())
+    {
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion *failed*");
+      g_date_strftime (buf, sizeof (buf), "%x", d);
+      g_test_assert_expected_messages ();
+    }
+
+  /* Trying invalid character */
+#ifndef G_OS_WIN32
+  if (g_test_undefined ())
+    {
+      g_date_set_dmy (d, 10, 1, 2000);
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING, "*Error*");
+      g_date_strftime (buf, sizeof (buf), invalid, d);
+      g_test_assert_expected_messages ();
+      g_assert_cmpstr (buf, ==, "");
+    }
+#else
   g_date_set_dmy (d, 10, 1, 2000);
-  g_date_strftime (buf, 100, "%x", d);
+  g_date_strftime (buf, sizeof (buf), invalid, d);
+  g_assert_cmpstr (buf, ==, "");
+#endif
+
+  /* Test positive cases */
+  g_date_set_dmy (d, 1, 1, 1);
+
+  for (i = 0; i < G_N_ELEMENTS (strftime_checks); i++)
+    {
+      g_date_strftime (buf, sizeof (buf), strftime_checks[i].format, d);
+      g_assert_cmpstr (buf, ==, strftime_checks[i].expect);
+    }
+
+#ifdef G_OS_WIN32
+  /*
+   * Time zone is too versatile on OS_WIN32 to be checked precisely,
+   * According to msdn: "Either the locale's time-zone name
+   * or time zone abbreviation, depending on registry settings; no characters
+   * if time zone is unknown".
+   */
+  g_assert_cmpint (g_date_strftime (buf, sizeof (buf), "%Z", d), !=, 0);
+#endif
+
+  g_date_free (d);
+
+  setlocale (LC_ALL, oldlocale);
+  g_free (oldlocale);
+#ifdef G_OS_WIN32
+  SetThreadLocale (old_lcid);
+#endif
+}
+
+static void
+test_two_digit_years (void)
+{
+  GDate *d;
+  gchar buf[101];
+  gchar *old_locale;
+  gboolean use_alternative_format = FALSE;
+
+#ifdef G_OS_WIN32
+  LCID old_lcid;
+#endif
+
+  old_locale = g_strdup (setlocale (LC_ALL, NULL));
+#ifdef G_OS_WIN32
+  old_lcid = GetThreadLocale ();
+#endif
+
+  /* Make sure that nothing has been changed in the original locales.  */
+  setlocale (LC_ALL, "C");
+#ifdef G_OS_WIN32
+  SetThreadLocale (MAKELCID (MAKELANGID (LANG_NEUTRAL, SUBLANG_DEFAULT), SORT_DEFAULT));
+#endif
+
+  d = g_date_new ();
+
+  /* Check two digit years */
+  g_date_set_dmy (d, 10, 10, 1976);
+  g_date_strftime (buf, sizeof (buf), "%D", d);
+  g_assert_cmpstr (buf, ==, "10/10/76");
+  g_date_set_parse (d, buf);
+
+#ifdef G_OS_WIN32
+  /*
+   * It depends on the locale setting whether the dd/mm/yy
+   * format is allowed for g_date_set_parse() on Windows, which
+   * corresponds to whether there is an d/M/YY or d/M/YYYY (or so)
+   * option in the "Date and Time Format" setting for the selected
+   * locale in the Control Panel settings.  If g_date_set_parse()
+   * renders the GDate invalid with the dd/mm/yy format, use an
+   * alternative format (yy/mm/dd) for g_date_set_parse() for the
+   * 2-digit year tests.
+   */
+  if (!g_date_valid (d))
+    use_alternative_format = TRUE;
+#endif
+
+  if (use_alternative_format)
+    g_date_set_parse (d, "76/10/10");
+
+  g_assert_cmpint (g_date_get_month (d), ==, 10);
+  g_assert_cmpint (g_date_get_day (d), ==, 10);
+  g_assert_true ((g_date_get_year (d) == 1976) ||
+                 (g_date_get_year (d) == 76));
+
+  /* Check two digit years below 100 */
+  g_date_set_dmy (d, 10, 10, 29);
+  g_date_strftime (buf, sizeof (buf), "%D", d);
+  g_assert_cmpstr (buf, ==, "10/10/29");
+  g_date_set_parse (d, use_alternative_format ? "29/10/10" : buf);
+  g_assert_cmpint (g_date_get_month (d), ==, 10);
+  g_assert_cmpint (g_date_get_day (d), ==, 10);
+  g_assert_true ((g_date_get_year (d) == 2029) ||
+                 (g_date_get_year (d) == 29));
+
+  g_date_free (d);
+
+  setlocale (LC_ALL, old_locale);
+  g_free (old_locale);
+#ifdef G_OS_WIN32
+  SetThreadLocale (old_lcid);
+#endif
+}
+
+static void
+test_parse (void)
+{
+  GDate *d;
+  gchar buf[101];
+
+  d = g_date_new ();
+
+  if (g_test_undefined ())
+    {
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion *failed*");
+      g_date_set_parse (NULL, "");
+      g_test_assert_expected_messages ();
+    }
+
+  g_date_set_time (d, 1);
+  g_assert_true (g_date_valid (d));
+  g_date_strftime (buf, sizeof (buf), "Today is a %A, in the month of %B, %x", d);
+  g_date_set_parse (d, buf);
+
+  if (g_test_undefined ())
+    {
+      /* g_date_strftime() */
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion *failed*");
+      g_date_strftime (NULL, 100, "%x", d);
+      g_test_assert_expected_messages ();
+
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion *failed*");
+      g_date_strftime (buf, 0, "%x", d);
+      g_test_assert_expected_messages ();
+
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion *failed*");
+      g_date_strftime (buf, sizeof (buf), NULL, d);
+      g_test_assert_expected_messages ();
+    }
 
+  g_date_set_julian (d, 1);
+  g_assert_true (g_date_valid (d));
+#ifndef G_OS_WIN32
+  /* Windows FILETIME does not support dates before Jan 1 1601,
+     so we can't strftime() the beginning of the "Julian" epoch. */
+  g_date_strftime (buf, sizeof (buf), "Today is a %A, in the month of %B, %x", d);
+  g_date_set_parse (d, buf);
+#endif
+
+  g_date_set_dmy (d, 10, 1, 2000);
+  g_assert_true (g_date_valid (d));
+  g_date_strftime (buf, sizeof (buf), "%x", d);
   g_date_set_parse (d, buf);
-  g_assert (g_date_valid (d));
   g_assert_cmpint (g_date_get_month (d), ==, 1);
   g_assert_cmpint (g_date_get_day (d), ==, 10);
   g_assert_cmpint (g_date_get_year (d), ==, 2000);
 
   g_date_set_parse (d, "2001 10 1");
-  g_assert (g_date_valid (d));
+  g_assert_true (g_date_valid (d));
   g_assert_cmpint (g_date_get_month (d), ==, 10);
   g_assert_cmpint (g_date_get_day (d), ==, 1);
   g_assert_cmpint (g_date_get_year (d), ==, 2001);
 
   g_date_set_parse (d, "2001 10");
-  g_assert (!g_date_valid (d));
+  g_assert_false (g_date_valid (d));
 
   g_date_set_parse (d, "2001 10 1 1");
-  g_assert (!g_date_valid (d));
+  g_assert_false (g_date_valid (d));
+
+  g_date_set_parse (d, "2001-10-01");
+  g_assert_true (g_date_valid (d));
+  g_assert_cmpint (g_date_get_month (d), ==, 10);
+  g_assert_cmpint (g_date_get_day (d), ==, 1);
+  g_assert_cmpint (g_date_get_year (d), ==, 2001);
 
   g_date_set_parse (d, "March 1999");
-  g_assert (g_date_valid (d));
+  g_assert_true (g_date_valid (d));
   g_assert_cmpint (g_date_get_month (d), ==, 3);
   g_assert_cmpint (g_date_get_day (d), ==, 1);
   g_assert_cmpint (g_date_get_year (d), ==, 1999);
 
+  g_date_set_parse (d, "October 98");
+  g_assert_true (g_date_valid (d));
+  g_assert_cmpint (g_date_get_month (d), ==, 10);
+  g_assert_cmpint (g_date_get_day (d), ==, 1);
+  g_assert_cmpint (g_date_get_year (d), ==, 98);
+
+  g_date_set_parse (d, "oCT 98");
+  g_assert_true (g_date_valid (d));
+  g_assert_cmpint (g_date_get_month (d), ==, 10);
+  g_assert_cmpint (g_date_get_day (d), ==, 1);
+  g_assert_cmpint (g_date_get_year (d), ==, 98);
+
+  g_date_set_parse (d, "10/24/98");
+  g_assert_true (g_date_valid (d));
+  g_assert_cmpint (g_date_get_month (d), ==, 10);
+  g_assert_cmpint (g_date_get_day (d), ==, 24);
+  g_assert_true (g_date_get_year (d) == 1998 ||
+                 g_date_get_year (d) == 98);
+
+  g_date_set_parse (d, "10 -- 24 -- 98");
+  g_assert_true (g_date_valid (d));
+  g_assert_cmpint (g_date_get_month (d), ==, 10);
+  g_assert_cmpint (g_date_get_day (d), ==, 24);
+  g_assert_true (g_date_get_year (d) == 1998 ||
+                 g_date_get_year (d) == 98);
+
+  g_date_set_parse (d, "10/24/1998");
+  g_assert_true (g_date_valid (d));
+  g_assert_cmpint (g_date_get_month (d), ==, 10);
+  g_assert_cmpint (g_date_get_day (d), ==, 24);
+  g_assert_cmpint (g_date_get_year (d), ==, 1998);
+
+  g_date_set_parse (d, "October 24, 1998");
+  g_assert_true (g_date_valid (d));
+  g_assert_cmpint (g_date_get_month (d), ==, 10);
+  g_assert_cmpint (g_date_get_day (d), ==, 24);
+  g_assert_cmpint (g_date_get_year (d), ==, 1998);
+
   g_date_set_parse (d, "10 Sep 1087");
-  g_assert (g_date_valid (d));
+  g_assert_true (g_date_valid (d));
   g_assert_cmpint (g_date_get_month (d), ==, 9);
   g_assert_cmpint (g_date_get_day (d), ==, 10);
   g_assert_cmpint (g_date_get_year (d), ==, 1087);
 
   g_date_set_parse (d, "19990301");
-  g_assert (g_date_valid (d));
+  g_assert_true (g_date_valid (d));
   g_assert_cmpint (g_date_get_month (d), ==, 3);
   g_assert_cmpint (g_date_get_day (d), ==, 1);
   g_assert_cmpint (g_date_get_year (d), ==, 1999);
 
+  g_date_set_parse (d, "981024");
+  g_assert_true (g_date_valid (d));
+  g_assert_cmpint (g_date_get_month (d), ==, 10);
+  g_assert_cmpint (g_date_get_day (d), ==, 24);
+  g_assert_true (g_date_get_year (d) == 1998 ||
+                 g_date_get_year (d) == 98);
+
+  /* Catching some invalid dates */
   g_date_set_parse (d, "20011320");
-  g_assert (!g_date_valid (d));
+  g_assert_false (g_date_valid (d));
+
+  g_date_set_parse (d, "19998 10 1");
+  g_assert_false (g_date_valid (d));
 
   g_date_free (d);
 }
@@ -232,7 +1089,14 @@ test_parse_locale_change (void)
   g_date_set_parse (&date, "07/04/76");
   g_assert_cmpint (g_date_get_day (&date), ==, 4);
   g_assert_cmpint (g_date_get_month (&date), ==, 7);
+#ifdef G_OS_WIN32
+  /* Windows g_date_strftime() implementation doesn't use twodigit_years */
+  /* FIXME: check if the function can be changed to return 4 digit years instead
+   * See https://gitlab.gnome.org/GNOME/glib/-/issues/2604 */
+  g_assert_cmpint (g_date_get_year (&date), ==, 76);
+#else
   g_assert_cmpint (g_date_get_year (&date), ==, 1976);
+#endif
 
   setlocale (LC_ALL, "");
 }
@@ -241,6 +1105,9 @@ static void
 test_month_substring (void)
 {
   GDate date;
+#ifdef G_OS_WIN32
+  LCID old_lcid;
+#endif
 
   g_test_bug ("https://bugzilla.gnome.org/show_bug.cgi?id=793550");
 
@@ -250,6 +1117,13 @@ test_month_substring (void)
       return;
     }
 
+#ifdef G_OS_WIN32
+  /* after the crt, set also the win32 thread locale: */
+  /* https://www.codeproject.com/Articles/9600/Windows-SetThreadLocale-and-CRT-setlocale */
+  old_lcid = GetThreadLocale ();
+  SetThreadLocale (MAKELCID (MAKELANGID (LANG_POLISH, SUBLANG_POLISH_POLAND), SORT_DEFAULT));
+#endif
+
   /* In Polish language September is "wrzesień" and August is "sierpień"
    * abbreviated as "sie". The former used to be confused with the latter
    * because "sie" is a substring of "wrzesień" and was matched first. */
@@ -266,6 +1140,9 @@ test_month_substring (void)
   g_assert_true (g_date_valid (&date));
   g_assert_cmpint (g_date_get_month (&date), ==, G_DATE_AUGUST);
 
+#ifdef G_OS_WIN32
+  SetThreadLocale (old_lcid);
+#endif
   setlocale (LC_ALL, "");
 }
 
@@ -311,21 +1188,24 @@ test_month_names (void)
   g_test_skip ("libc doesn’t support all alternative month names");
 #else
 
-#define TEST_DATE(d,m,y,f,o)                     G_STMT_START { \
-  gchar *o_casefold, *buf_casefold;                             \
-  g_date_set_dmy (gdate, d, m, y);                              \
-  g_date_strftime (buf, 100, f, gdate);                         \
-  buf_casefold = g_utf8_casefold (buf, -1);                     \
-  o_casefold = g_utf8_casefold ((o), -1);                       \
-  g_assert_cmpstr (buf_casefold, ==, o_casefold);               \
-  g_free (buf_casefold);                                        \
-  g_free (o_casefold);                                          \
-  g_date_set_parse (gdate, buf);                                \
-  g_assert (g_date_valid (gdate));                              \
-  g_assert_cmpint (g_date_get_day (gdate), ==, d);              \
-  g_assert_cmpint (g_date_get_month (gdate), ==, m);            \
-  g_assert_cmpint (g_date_get_year (gdate), ==, y);             \
-} G_STMT_END
+#define TEST_DATE(d, m, y, f, o)                       \
+  G_STMT_START                                         \
+  {                                                    \
+    gchar *o_casefold, *buf_casefold;                  \
+    g_date_set_dmy (gdate, d, m, y);                   \
+    g_date_strftime (buf, sizeof (buf), f, gdate);     \
+    buf_casefold = g_utf8_casefold (buf, -1);          \
+    o_casefold = g_utf8_casefold ((o), -1);            \
+    g_assert_cmpstr (buf_casefold, ==, o_casefold);    \
+    g_free (buf_casefold);                             \
+    g_free (o_casefold);                               \
+    g_date_set_parse (gdate, buf);                     \
+    g_assert_true (g_date_valid (gdate));              \
+    g_assert_cmpint (g_date_get_day (gdate), ==, d);   \
+    g_assert_cmpint (g_date_get_month (gdate), ==, m); \
+    g_assert_cmpint (g_date_get_year (gdate), ==, y);  \
+  }                                                    \
+  G_STMT_END
 
   oldlocale = g_strdup (setlocale (LC_ALL, NULL));
 #ifdef G_OS_WIN32
@@ -380,10 +1260,17 @@ test_month_names (void)
     {
       TEST_DATE ( 9,  1, 2018, "%d de %B de %Y", "09 de enero de 2018");
       TEST_DATE ( 1,  2, 2018,      "%OB de %Y",     "febrero de 2018");
+#if defined(G_OS_WIN32) && defined(_UCRT)
+      TEST_DATE (10,  3, 2018, "%e de %b de %Y",   "10 de mar. de 2018");
+      TEST_DATE ( 1,  4, 2018,      "%Ob de %Y",         "abr. de 2018");
+      TEST_DATE (11,  5, 2018, "%d de %h de %Y",   "11 de may. de 2018");
+      TEST_DATE ( 1,  6, 2018,      "%Oh de %Y",         "jun. de 2018");
+#else
       TEST_DATE (10,  3, 2018, "%e de %b de %Y",   "10 de mar de 2018");
       TEST_DATE ( 1,  4, 2018,      "%Ob de %Y",         "abr de 2018");
       TEST_DATE (11,  5, 2018, "%d de %h de %Y",   "11 de may de 2018");
       TEST_DATE ( 1,  6, 2018,      "%Oh de %Y",         "jun de 2018");
+#endif
     }
   else
     g_test_skip ("locale es_ES not available, skipping Spanish month names test");
@@ -418,7 +1305,11 @@ test_month_names (void)
       TEST_DATE ( 1,  5, 2018,   "%OB %Y",          "Μάιος 2018");
       TEST_DATE ( 1,  6, 2018,   "%OB %Y",        "Ιούνιος 2018");
       TEST_DATE (16,  7, 2018, "%e %b %Y",        "16 Ιουλ 2018");
+#if defined(G_OS_WIN32) && defined(_UCRT)
+      TEST_DATE ( 1,  8, 2018,   "%Ob %Y",            "Αυγ 2018");
+#else
       TEST_DATE ( 1,  8, 2018,   "%Ob %Y",            "Αύγ 2018");
+#endif
     }
   else
     g_test_skip ("locale el_GR not available, skipping Greek month names test");
@@ -527,7 +1418,7 @@ test_year (gconstpointer t)
   guint   monday_weeks_in_year = g_date_get_monday_weeks_in_year (y);
   guint   iso8601_week_of_year = 0;
 
-  g_assert (g_date_valid_year (y));
+  g_assert_true (g_date_valid_year (y));
   /* Years ought to have roundabout 52 weeks */
   g_assert (sunday_weeks_in_year == 52 || sunday_weeks_in_year == 53);
   g_assert (monday_weeks_in_year == 52 || monday_weeks_in_year == 53);
@@ -541,64 +1432,82 @@ test_year (gconstpointer t)
       g_date_clear (days, 31);
 
       g_assert (dim > 0 && dim < 32);
-      g_assert (g_date_valid_month (m));
+      g_assert_true (g_date_valid_month (m));
 
       day = 1;
       while (day <= dim)
         {
-          g_assert (g_date_valid_dmy (day, m, y));
+          g_assert_true (g_date_valid_dmy (day, m, y));
 
           d = &days[day - 1];
-          //g_assert (!g_date_valid (d));
+          g_assert_false (g_date_valid (d));
 
           g_date_set_dmy (d, day, m, y);
 
-          g_assert (g_date_valid (d));
+          g_assert_true (g_date_valid (d));
 
           if (m == G_DATE_JANUARY && day == 1)
             first_day_of_year = g_date_get_julian (d);
 
-          g_assert (first_day_of_year != G_DATE_BAD_JULIAN);
+          g_assert_cmpint (first_day_of_year, !=, G_DATE_BAD_JULIAN);
 
           g_assert_cmpint (g_date_get_month (d), ==, m);
           g_assert_cmpint (g_date_get_year (d), ==, y);
           g_assert_cmpint (g_date_get_day (d), ==, day);
 
-          g_assert (g_date_get_julian (d) + 1 - first_day_of_year ==
-                    g_date_get_day_of_year (d));
+          g_assert_cmpint (g_date_get_julian (d) + 1 - first_day_of_year,
+                           ==,
+                           g_date_get_day_of_year (d));
 
           if (m == G_DATE_DECEMBER && day == 31)
             g_assert_cmpint (g_date_get_day_of_year (d), ==, days_in_year);
 
           g_assert_cmpint (g_date_get_day_of_year (d), <=, days_in_year);
-          g_assert_cmpint (g_date_get_monday_week_of_year (d), <=, monday_weeks_in_year);
-          g_assert_cmpint (g_date_get_monday_week_of_year (d), >=, monday_week_of_year);
+          g_assert_cmpint (g_date_get_monday_week_of_year (d),
+                           <=, monday_weeks_in_year);
+          g_assert_cmpint (g_date_get_monday_week_of_year (d),
+                           >=, monday_week_of_year);
 
           if (g_date_get_weekday(d) == G_DATE_MONDAY)
             {
-              g_assert_cmpint (g_date_get_monday_week_of_year (d) - monday_week_of_year, ==, 1);
+              g_assert_cmpint (g_date_get_monday_week_of_year (d) -
+                                   monday_week_of_year,
+                               ==, 1);
               if ((m == G_DATE_JANUARY && day <= 4) ||
                   (m == G_DATE_DECEMBER && day >= 29))
-                 g_assert_cmpint (g_date_get_iso8601_week_of_year (d), ==, 1);
+                g_assert_cmpint (g_date_get_iso8601_week_of_year (d),
+                                 ==, 1);
               else
-                g_assert_cmpint (g_date_get_iso8601_week_of_year (d) - iso8601_week_of_year, ==, 1);
+                g_assert_cmpint (g_date_get_iso8601_week_of_year (d) -
+                                     iso8601_week_of_year,
+                                 ==, 1);
             }
           else
             {
-              g_assert_cmpint (g_date_get_monday_week_of_year(d) - monday_week_of_year, ==, 0);
+              g_assert_cmpint (g_date_get_monday_week_of_year (d) -
+                                   monday_week_of_year,
+                               ==, 0);
               if (!(day == 1 && m == G_DATE_JANUARY))
-                g_assert_cmpint (g_date_get_iso8601_week_of_year(d) - iso8601_week_of_year, ==, 0);
+                g_assert_cmpint (g_date_get_iso8601_week_of_year (d) -
+                                     iso8601_week_of_year,
+                                 ==, 0);
             }
 
           monday_week_of_year = g_date_get_monday_week_of_year (d);
           iso8601_week_of_year = g_date_get_iso8601_week_of_year (d);
 
-          g_assert_cmpint (g_date_get_sunday_week_of_year (d), <=, sunday_weeks_in_year);
-          g_assert_cmpint (g_date_get_sunday_week_of_year (d), >=, sunday_week_of_year);
+          g_assert_cmpint (g_date_get_sunday_week_of_year (d),
+                           <=, sunday_weeks_in_year);
+          g_assert_cmpint (g_date_get_sunday_week_of_year (d),
+                           >=, sunday_week_of_year);
           if (g_date_get_weekday(d) == G_DATE_SUNDAY)
-            g_assert_cmpint (g_date_get_sunday_week_of_year (d) - sunday_week_of_year, ==, 1);
+            g_assert_cmpint (g_date_get_sunday_week_of_year (d) -
+                                 sunday_week_of_year,
+                             ==, 1);
           else
-            g_assert_cmpint (g_date_get_sunday_week_of_year (d) - sunday_week_of_year, ==, 0);
+            g_assert_cmpint (g_date_get_sunday_week_of_year (d) -
+                                 sunday_week_of_year,
+                             ==, 0);
 
           sunday_week_of_year = g_date_get_sunday_week_of_year (d);
 
@@ -660,36 +1569,110 @@ test_year (gconstpointer t)
 static void
 test_clamp (void)
 {
-  GDate d1, d2, d, o;
+  GDate *d, *d1, *d2, *o;
 
-  g_date_set_dmy (&d1, 1, 1, 1970);
-  g_date_set_dmy (&d2, 1, 1, 1980);
-  g_date_set_dmy (&d, 1, 1, 1);
+  d = g_date_new ();
+  d1 = g_date_new ();
+  d2 = g_date_new ();
+  if (g_test_undefined ())
+    {
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion *failed*");
+      g_date_clamp (d, d1, d2);
+      g_test_assert_expected_messages ();
+    }
+
+  g_date_set_dmy (d, 1, 1, 1);
+  g_date_clamp (d, NULL, NULL);
+  if (g_test_undefined ())
+    {
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion *failed*");
+      g_date_clamp (d, d1, NULL);
+      g_test_assert_expected_messages ();
+
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion *failed*");
+      g_date_clamp (d, d1, d2);
+      g_test_assert_expected_messages ();
+    }
 
-  o = d;
-  g_date_clamp (&o, NULL, NULL);
-  g_assert (g_date_compare (&o, &d) == 0);
+  g_date_set_dmy (d1, 1, 1, 1970);
+  if (g_test_undefined ())
+    {
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion *failed*");
+      g_date_clamp (d, d1, d2);
+      g_test_assert_expected_messages ();
+
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion *failed*");
+      g_date_clamp (d, NULL, d2);
+      g_test_assert_expected_messages ();
+    }
 
-  g_date_clamp (&o,  &d1, &d2);
-  g_assert (g_date_compare (&o, &d1) == 0);
+  g_date_set_dmy (d2, 1, 1, 1980);
+  if (g_test_undefined ())
+    {
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion *failed*");
+      g_date_clamp (d, d2, d1);
+      g_test_assert_expected_messages ();
+    }
 
-  g_date_set_dmy (&o, 1, 1, 2000);
+  o = g_date_copy (d);
+  g_date_clamp (o, NULL, NULL);
+  g_assert_cmpint (g_date_compare (o, d), ==, 0);
 
-  g_date_clamp (&o,  &d1, &d2);
-  g_assert (g_date_compare (&o, &d2) == 0);
+  g_date_clamp (o,  d1, d2);
+  g_assert_cmpint (g_date_compare (o, d1), ==, 0);
+
+  g_date_set_dmy (o, 1, 1, 2000);
+
+  g_date_clamp (o,  d1, d2);
+  g_assert_cmpint (g_date_compare (o, d2), ==, 0);
+
+  g_date_free (d);
+  g_date_free (d1);
+  g_date_free (d2);
+  g_date_free (o);
 }
 
 static void
 test_order (void)
 {
-  GDate d1, d2;
+  GDate *d1, *d2;
+
+  d1 = g_date_new ();
+  d2 = g_date_new ();
+
+  if (g_test_undefined ())
+    {
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion *failed*");
+      g_date_order (d1, d2);
+      g_test_assert_expected_messages ();
+    }
 
-  g_date_set_dmy (&d1, 1, 1, 1970);
-  g_date_set_dmy (&d2, 1, 1, 1980);
+  g_date_set_dmy (d1, 1, 1, 1970);
 
-  g_assert (g_date_compare (&d1, &d2) == -1);
-  g_date_order (&d2, &d1);
-  g_assert (g_date_compare (&d1, &d2) == 1);
+  if (g_test_undefined ())
+    {
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion *failed*");
+      g_date_order (d1, d2);
+      g_test_assert_expected_messages ();
+    }
+
+  g_date_set_dmy (d2, 1, 1, 1980);
+
+  g_date_order (d1, d2);
+  g_assert_cmpint (g_date_compare (d1, d2), ==, -1);
+  g_date_order (d2, d1);
+  g_assert_cmpint (g_date_compare (d1, d2), ==, 1);
+
+  g_date_free (d1);
+  g_date_free (d2);
 }
 
 static void
@@ -698,6 +1681,14 @@ test_copy (void)
   GDate *d;
   GDate *c;
 
+  if (g_test_undefined ())
+    {
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion *failed*");
+      g_assert_null (g_date_copy (NULL));
+      g_test_assert_expected_messages ();
+    }
+
   d = g_date_new ();
   g_assert_false (g_date_valid (d));
 
@@ -751,7 +1742,9 @@ test_valid_dmy (void)
                       i, vectors[i].year, vectors[i].month, vectors[i].day,
                       vectors[i].expected_valid ? "valid" : "invalid");
 
-      valid = g_date_valid_dmy (vectors[i].day, vectors[i].month, vectors[i].year);
+      valid = g_date_valid_dmy (vectors[i].day,
+                                vectors[i].month,
+                                vectors[i].year);
 
       if (vectors[i].expected_valid)
         g_assert_true (valid);
@@ -794,7 +1787,10 @@ main (int argc, char** argv)
   g_test_add_func ("/date/empty", test_empty_constructor);
   g_test_add_func ("/date/dmy", test_dmy_constructor);
   g_test_add_func ("/date/julian", test_julian_constructor);
+  g_test_add_func ("/date/compare", test_date_compare);
   g_test_add_func ("/date/dates", test_dates);
+  g_test_add_func ("/date/strftime", test_strftime);
+  g_test_add_func ("/date/two-digit-years", test_two_digit_years);
   g_test_add_func ("/date/parse", test_parse);
   g_test_add_func ("/date/parse/invalid", test_parse_invalid);
   g_test_add_func ("/date/parse_locale_change", test_parse_locale_change);
index aba19a7..9413550 100644 (file)
@@ -1,3 +1,20 @@
+/* GLIB - Library of useful routines for C programming
+ * Copyright (C) 2010 Ryan Lortie
+ *
+ * This library 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 library 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>
 
 static void
@@ -16,7 +33,7 @@ test_listenv (void)
       gchar **parts;
 
       parts = g_strsplit (list[i], "=", 2);
-      g_assert (g_hash_table_lookup (table, parts[0]) == NULL);
+      g_assert_null (g_hash_table_lookup (table, parts[0]));
       if (g_strcmp0 (parts[0], ""))
         g_hash_table_insert (table, parts[0], parts[1]);
       g_free (parts);
@@ -42,6 +59,87 @@ test_listenv (void)
 }
 
 static void
+test_getenv (void)
+{
+  const gchar *data;
+  const gchar *variable = "TEST_G_SETENV";
+  const gchar *value1 = "works";
+  const gchar *value2 = "again";
+
+  /* Check that TEST_G_SETENV is not already set */
+  g_assert_null (g_getenv (variable));
+
+  /* Check if g_setenv() failed */
+  g_assert_cmpint (g_setenv (variable, value1, TRUE), !=, 0);
+
+  data = g_getenv (variable);
+  g_assert_nonnull (data);
+  g_assert_cmpstr (data, ==, value1);
+
+  g_assert_cmpint (g_setenv (variable, value2, FALSE), !=, 0);
+
+  data = g_getenv (variable);
+  g_assert_nonnull (data);
+  g_assert_cmpstr (data, !=, value2);
+  g_assert_cmpstr (data, ==, value1);
+
+  g_assert_cmpint (g_setenv (variable, value2, TRUE), !=, 0);
+
+  data = g_getenv (variable);
+  g_assert_nonnull (data);
+  g_assert_cmpstr (data, !=, value1);
+  g_assert_cmpstr (data, ==, value2);
+
+  g_unsetenv (variable);
+  g_assert_null (g_getenv (variable));
+
+  if (g_test_undefined ())
+    {
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion* != NULL*");
+      g_assert_false (g_setenv (NULL, "baz", TRUE));
+      g_test_assert_expected_messages ();
+
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion* != NULL*");
+      g_assert_false (g_setenv ("foo", NULL, TRUE));
+      g_test_assert_expected_messages ();
+
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion* == NULL*");
+      g_assert_false (g_setenv ("foo=bar", "baz", TRUE));
+      g_test_assert_expected_messages ();
+    }
+
+  g_assert_true (g_setenv ("foo", "bar=baz", TRUE));
+
+  /* Different OSs return different values; some return NULL because the key
+   * is invalid, but some are happy to return what we set above. */
+  data = g_getenv ("foo=bar");
+  if (data != NULL)
+    g_assert_cmpstr (data, ==, "baz");
+
+  data = g_getenv ("foo");
+  g_assert_cmpstr (data, ==, "bar=baz");
+
+  if (g_test_undefined ())
+    {
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion* != NULL*");
+      g_unsetenv (NULL);
+      g_test_assert_expected_messages ();
+
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion* == NULL*");
+      g_unsetenv ("foo=bar");
+      g_test_assert_expected_messages ();
+    }
+
+  g_unsetenv ("foo");
+  g_assert_null (g_getenv ("foo"));
+}
+
+static void
 test_setenv (void)
 {
   const gchar *var, *value;
@@ -49,15 +147,15 @@ test_setenv (void)
   var = "NOSUCHENVVAR";
   value = "value1";
 
-  g_assert (g_getenv (var) == NULL);
+  g_assert_null (g_getenv (var));
   g_setenv (var, value, FALSE);
   g_assert_cmpstr (g_getenv (var), ==, value);
-  g_assert (g_setenv (var, "value2", FALSE));
+  g_assert_true (g_setenv (var, "value2", FALSE));
   g_assert_cmpstr (g_getenv (var), ==, value);
-  g_assert (g_setenv (var, "value2", TRUE));
+  g_assert_true (g_setenv (var, "value2", TRUE));
   g_assert_cmpstr (g_getenv (var), ==, "value2");
   g_unsetenv (var);
-  g_assert (g_getenv (var) == NULL);
+  g_assert_null (g_getenv (var));
 }
 
 static void
@@ -69,8 +167,45 @@ test_environ_array (void)
   env = g_new (gchar *, 1);
   env[0] = NULL;
 
+  if (g_test_undefined ())
+    {
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion* != NULL*");
+      g_environ_getenv (env, NULL);
+      g_test_assert_expected_messages ();
+    }
+
   value = g_environ_getenv (env, "foo");
-  g_assert (value == NULL);
+  g_assert_null (value);
+
+  if (g_test_undefined ())
+    {
+      gchar **undefined_env;
+
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion* != NULL*");
+      undefined_env = g_environ_setenv (env, NULL, "bar", TRUE);
+      g_test_assert_expected_messages ();
+      g_strfreev (undefined_env);
+
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion* == NULL*");
+      undefined_env = g_environ_setenv (env, "foo=fuz", "bar", TRUE);
+      g_test_assert_expected_messages ();
+      g_strfreev (undefined_env);
+
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion* != NULL*");
+      undefined_env = g_environ_setenv (env, "foo", NULL, TRUE);
+      g_test_assert_expected_messages ();
+      g_strfreev (undefined_env);
+
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion* != NULL*");
+      undefined_env = g_environ_unsetenv (env, NULL);
+      g_test_assert_expected_messages ();
+      g_strfreev (undefined_env);
+    }
 
   env = g_environ_setenv (env, "foo", "bar", TRUE);
   value = g_environ_getenv (env, "foo");
@@ -92,7 +227,7 @@ test_environ_array (void)
 
   env = g_environ_unsetenv (env, "foo2");
   value = g_environ_getenv (env, "foo2");
-  g_assert (value == NULL);
+  g_assert_null (value);
 
   g_strfreev (env);
 }
@@ -106,14 +241,14 @@ test_environ_null (void)
   env = NULL;
 
   value = g_environ_getenv (env, "foo");
-  g_assert (value == NULL);
+  g_assert_null (value);
 
   env = g_environ_setenv (NULL, "foo", "bar", TRUE);
-  g_assert (env != NULL);
+  g_assert_nonnull (env);
   g_strfreev (env);
 
   env = g_environ_unsetenv (NULL, "foo");
-  g_assert (env == NULL);
+  g_assert_null (env);
 }
 
 static void
@@ -132,7 +267,7 @@ test_environ_case (void)
 #ifdef G_OS_WIN32
   g_assert_cmpstr (value, ==, "bar");
 #else
-  g_assert (value == NULL);
+  g_assert_null (value);
 #endif
 
   env = g_environ_setenv (env, "FOO", "x", TRUE);
@@ -146,7 +281,7 @@ test_environ_case (void)
   env = g_environ_unsetenv (env, "Foo");
   value = g_environ_getenv (env, "foo");
 #ifdef G_OS_WIN32
-  g_assert (value == NULL);
+  g_assert_null (value);
 #else
   g_assert_cmpstr (value, ==, "bar");
 #endif
@@ -160,6 +295,7 @@ main (int argc, char **argv)
   g_test_init (&argc, &argv, NULL);
 
   g_test_add_func ("/environ/listenv", test_listenv);
+  g_test_add_func ("/environ/getenv", test_getenv);
   g_test_add_func ("/environ/setenv", test_setenv);
   g_test_add_func ("/environ/array", test_environ_array);
   g_test_add_func ("/environ/null", test_environ_null);
index a3c1c33..e0ade53 100644 (file)
@@ -68,8 +68,229 @@ check_string (gchar *str, const gchar *expected)
 }
 
 static void
+test_paths (void)
+{
+  struct
+  {
+    gchar *filename;
+    gchar *dirname;
+  } dirname_checks[] = {
+    { "/", "/" },
+    { "////", "/" },
+    { ".////", "." },
+    { "../", ".." },
+    { "..////", ".." },
+    { "a/b", "a" },
+    { "a/b/", "a/b" },
+    { "c///", "c" },
+#ifdef G_OS_WIN32
+    { "\\", "\\" },
+    { ".\\\\\\\\", "." },
+    { "..\\", ".." },
+    { "..\\\\\\\\", ".." },
+    { "a\\b", "a" },
+    { "a\\b/", "a\\b" },
+    { "a/b\\", "a/b" },
+    { "c\\\\/", "c" },
+    { "//\\", "/" },
+#endif
+#ifdef G_WITH_CYGWIN
+    { "//server/share///x", "//server/share" },
+#endif
+    { ".", "." },
+    { "..", "." },
+    { "", "." },
+  };
+  const guint n_dirname_checks = G_N_ELEMENTS (dirname_checks);
+  struct
+  {
+    gchar *filename;
+    gchar *without_root;
+  } skip_root_checks[] = {
+    { "/", "" },
+    { "//", "" },
+    { "/foo", "foo" },
+    { "//foo", "foo" },
+    { "a/b", NULL },
+#ifdef G_OS_WIN32
+    { "\\", "" },
+    { "\\foo", "foo" },
+    { "\\\\server\\foo", "" },
+    { "\\\\server\\foo\\bar", "bar" },
+    { "a\\b", NULL },
+#endif
+#ifdef G_WITH_CYGWIN
+    { "//server/share///x", "//x" },
+#endif
+    { ".", NULL },
+    { "", NULL },
+  };
+  const guint n_skip_root_checks = G_N_ELEMENTS (skip_root_checks);
+  struct
+  {
+    gchar *cwd;
+    gchar *relative_path;
+    gchar *canonical_path;
+  } canonicalize_filename_checks[] = {
+#ifndef G_OS_WIN32
+    { "/etc", "../usr/share", "/usr/share" },
+    { "/", "/foo/bar", "/foo/bar" },
+    { "/usr/bin", "../../foo/bar", "/foo/bar" },
+    { "/", "../../foo/bar", "/foo/bar" },
+    { "/double//dash", "../../foo/bar", "/foo/bar" },
+    { "/usr/share/foo", ".././././bar", "/usr/share/bar" },
+    { "/foo/bar", "../bar/./.././bar", "/foo/bar" },
+    { "/test///dir", "../../././foo/bar", "/foo/bar" },
+    { "/test///dir", "../../././/foo///bar", "/foo/bar" },
+    { "/etc", "///triple/slash", "/triple/slash" },
+    { "/etc", "//double/slash", "//double/slash" },
+    { "///triple/slash", ".", "/triple/slash" },
+    { "//double/slash", ".", "//double/slash" },
+    { "/cwd/../with/./complexities/", "./hello", "/with/complexities/hello" },
+    { "/", ".dot-dir", "/.dot-dir" },
+    { "/cwd", "..", "/" },
+    { "/etc", "hello/..", "/etc" },
+    { "/etc", "hello/../", "/etc" },
+    { "/", "..", "/" },
+    { "/", "../", "/" },
+    { "/", "/..", "/" },
+    { "/", "/../", "/" },
+    { "/", ".", "/" },
+    { "/", "./", "/" },
+    { "/", "/.", "/" },
+    { "/", "/./", "/" },
+    { "/", "///usr/../usr", "/usr" },
+#else
+    { "/etc", "../usr/share", "\\usr\\share" },
+    { "/", "/foo/bar", "\\foo\\bar" },
+    { "/usr/bin", "../../foo/bar", "\\foo\\bar" },
+    { "/", "../../foo/bar", "\\foo\\bar" },
+    { "/double//dash", "../../foo/bar", "\\foo\\bar" },
+    { "/usr/share/foo", ".././././bar", "\\usr\\share\\bar" },
+    { "/foo/bar", "../bar/./.././bar", "\\foo\\bar" },
+    { "/test///dir", "../../././foo/bar", "\\foo\\bar" },
+    { "/test///dir", "../../././/foo///bar", "\\foo\\bar" },
+    { "/etc", "///triple/slash", "\\triple\\slash" },
+    { "/etc", "//double/slash", "//double/slash" },
+    { "///triple/slash", ".", "\\triple\\slash" },
+    { "//double/slash", ".", "//double/slash\\" },
+    { "/cwd/../with/./complexities/", "./hello", "\\with\\complexities\\hello" },
+    { "/", ".dot-dir", "\\.dot-dir" },
+    { "/cwd", "..", "\\" },
+    { "/etc", "hello/..", "\\etc" },
+    { "/etc", "hello/../", "\\etc" },
+    { "/", "..", "\\" },
+    { "/", "../", "\\" },
+    { "/", "/..", "\\" },
+    { "/", "/../", "\\" },
+    { "/", ".", "\\" },
+    { "/", "./", "\\" },
+    { "/", "/.", "\\" },
+    { "/", "/./", "\\" },
+    { "/", "///usr/../usr", "\\usr" },
+
+    { "\\etc", "..\\usr\\share", "\\usr\\share" },
+    { "\\", "\\foo\\bar", "\\foo\\bar" },
+    { "\\usr\\bin", "..\\..\\foo\\bar", "\\foo\\bar" },
+    { "\\", "..\\..\\foo\\bar", "\\foo\\bar" },
+    { "\\double\\\\dash", "..\\..\\foo\\bar", "\\foo\\bar" },
+    { "\\usr\\share\\foo", "..\\.\\.\\.\\bar", "\\usr\\share\\bar" },
+    { "\\foo\\bar", "..\\bar\\.\\..\\.\\bar", "\\foo\\bar" },
+    { "\\test\\\\\\dir", "..\\..\\.\\.\\foo\\bar", "\\foo\\bar" },
+    { "\\test\\\\\\dir", "..\\..\\.\\.\\\\foo\\\\\\bar", "\\foo\\bar" },
+    { "\\etc", "\\\\\\triple\\slash", "\\triple\\slash" },
+    { "\\etc", "\\\\double\\slash", "\\\\double\\slash" },
+    { "\\\\\\triple\\slash", ".", "\\triple\\slash" },
+    { "\\\\double\\slash", ".", "\\\\double\\slash\\" },
+    { "\\cwd\\..\\with\\.\\complexities\\", ".\\hello", "\\with\\complexities\\hello" },
+    { "\\", ".dot-dir", "\\.dot-dir" },
+    { "\\cwd", "..", "\\" },
+    { "\\etc", "hello\\..", "\\etc" },
+    { "\\etc", "hello\\..\\", "\\etc" },
+    { "\\", "..", "\\" },
+    { "\\", "..\\", "\\" },
+    { "\\", "\\..", "\\" },
+    { "\\", "\\..\\", "\\" },
+    { "\\", ".", "\\" },
+    { "\\", ".\\", "\\" },
+    { "\\", "\\.", "\\" },
+    { "\\", "\\.\\", "\\" },
+    { "\\", "\\\\\\usr\\..\\usr", "\\usr" },
+#endif
+  };
+  const guint n_canonicalize_filename_checks = G_N_ELEMENTS (canonicalize_filename_checks);
+  gchar *string;
+  guint i;
+
+  string = g_path_get_basename (G_DIR_SEPARATOR_S "foo" G_DIR_SEPARATOR_S "dir" G_DIR_SEPARATOR_S);
+  g_assert_cmpstr (string, ==, "dir");
+  g_free (string);
+  string = g_path_get_basename (G_DIR_SEPARATOR_S "foo" G_DIR_SEPARATOR_S "file");
+  g_assert_cmpstr (string, ==, "file");
+  g_free (string);
+
+#ifdef G_OS_WIN32
+  string = g_path_get_basename ("/foo/dir/");
+  g_assert_cmpstr (string, ==, "dir");
+  g_free (string);
+  string = g_path_get_basename ("/foo/file");
+  g_assert_cmpstr (string, ==, "file");
+  g_free (string);
+#endif
+
+  for (i = 0; i < n_dirname_checks; i++)
+    {
+      gchar *dirname = g_path_get_dirname (dirname_checks[i].filename);
+      g_assert_cmpstr (dirname, ==, dirname_checks[i].dirname);
+      g_free (dirname);
+    }
+
+  for (i = 0; i < n_skip_root_checks; i++)
+    {
+      const gchar *skipped = g_path_skip_root (skip_root_checks[i].filename);
+      if ((skipped && !skip_root_checks[i].without_root) ||
+          (!skipped && skip_root_checks[i].without_root) ||
+          ((skipped && skip_root_checks[i].without_root) &&
+           strcmp (skipped, skip_root_checks[i].without_root)))
+        {
+          g_error ("failed for \"%s\"==\"%s\" (returned: \"%s\")",
+                   skip_root_checks[i].filename,
+                   (skip_root_checks[i].without_root ? skip_root_checks[i].without_root : "<NULL>"),
+                   (skipped ? skipped : "<NULL>"));
+        }
+    }
+
+  for (i = 0; i < n_canonicalize_filename_checks; i++)
+    {
+      gchar *canonical_path =
+          g_canonicalize_filename (canonicalize_filename_checks[i].relative_path,
+                                   canonicalize_filename_checks[i].cwd);
+      g_assert_cmpstr (canonical_path, ==,
+                       canonicalize_filename_checks[i].canonical_path);
+      g_free (canonical_path);
+    }
+
+  {
+    const gchar *relative_path = "./";
+    gchar *canonical_path = g_canonicalize_filename (relative_path, NULL);
+    gchar *cwd = g_get_current_dir ();
+    g_assert_cmpstr (canonical_path, ==, cwd);
+    g_free (cwd);
+    g_free (canonical_path);
+  }
+}
+
+static void
 test_build_path (void)
 {
+  if (g_test_undefined ())
+    {
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion*!= NULL*");
+      g_assert_null (g_build_path (NULL, "x", "y", NULL));
+      g_test_assert_expected_messages ();
+    }
+
 /*  check_string (g_build_path ("", NULL), "");*/
   check_string (g_build_path ("", "", NULL), "");
   check_string (g_build_path ("", "x", NULL), "x");
@@ -255,7 +476,6 @@ test_build_pathv (void)
 static void
 test_build_filename (void)
 {
-/*  check_string (g_build_filename (NULL), "");*/
   check_string (g_build_filename (S, NULL), S);
   check_string (g_build_filename (S"x", NULL), S"x");
   check_string (g_build_filename ("x"S, NULL), "x"S);
@@ -503,14 +723,14 @@ test_mkdir_with_parents_1 (const gchar *base)
 static void
 test_mkdir_with_parents (void)
 {
-  gchar *cwd;
+  gchar *cwd, *new_path;
   if (g_test_verbose())
     g_printerr ("checking g_mkdir_with_parents() in subdir ./hum/");
   test_mkdir_with_parents_1 ("hum");
   g_remove ("hum");
   if (g_test_verbose())
     g_printerr ("checking g_mkdir_with_parents() in subdir ./hii///haa/hee/");
-  test_mkdir_with_parents_1 ("hii///haa/hee");
+  test_mkdir_with_parents_1 ("./hii///haa/hee///");
   g_remove ("hii/haa/hee");
   g_remove ("hii/haa");
   g_remove ("hii");
@@ -518,8 +738,26 @@ test_mkdir_with_parents (void)
   if (g_test_verbose())
     g_printerr ("checking g_mkdir_with_parents() in cwd: %s", cwd);
   test_mkdir_with_parents_1 (cwd);
+
+  new_path = g_build_filename (cwd, "new", NULL);
+  g_assert_cmpint (g_mkdir_with_parents (new_path, 0), ==, 0);
+  g_assert_cmpint (g_rmdir (new_path), ==, 0);
+  g_free (new_path);
   g_free (cwd);
 
+  g_assert_cmpint (g_mkdir_with_parents ("./test", 0), ==, 0);
+  g_assert_cmpint (g_mkdir_with_parents ("./test", 0), ==, 0);
+  g_remove ("./test");
+
+#ifdef G_OS_WIN32
+  g_assert_cmpint (g_mkdir_with_parents ("\\Windows\\b\\c", 0), ==, -1);
+#else
+  g_assert_cmpint (g_mkdir_with_parents ("/usr/b/c", 0), ==, -1);
+  /* EPERM may be returned if the filesystem as a whole is read-only */
+  if (errno != EPERM)
+    g_assert_cmpint (errno, ==, EACCES);
+#endif
+
   g_assert_cmpint (g_mkdir_with_parents (NULL, 0), ==, -1);
   g_assert_cmpint (errno, ==, EINVAL);
 }
@@ -577,7 +815,7 @@ check_cap_dac_override (const char *tmpdir)
   inside = g_build_filename (dac_denies_write, "inside", NULL);
 
   g_assert_no_errno (mkdir (dac_denies_write, S_IRWXU));
-  g_assert_no_errno (chmod (dac_denies_write, 0));
+  g_assert_no_errno (g_chmod (dac_denies_write, 0));
 
   if (mkdir (inside, S_IRWXU) == 0)
     {
@@ -594,7 +832,7 @@ check_cap_dac_override (const char *tmpdir)
       have_cap = FALSE;
     }
 
-  g_assert_no_errno (chmod (dac_denies_write, S_IRWXU));
+  g_assert_no_errno (g_chmod (dac_denies_write, S_IRWXU));
   g_assert_no_errno (rmdir (dac_denies_write));
 
   if (safe_tmpdir != NULL)
@@ -742,6 +980,8 @@ test_format_size_for_display (void)
 static void
 test_file_errors (void)
 {
+  g_assert_cmpint (g_file_error_from_errno (-1), ==, G_FILE_ERROR_FAILED);
+
 #ifdef EEXIST
   g_assert_cmpint (g_file_error_from_errno (EEXIST), ==, G_FILE_ERROR_EXIST);
 #endif
@@ -819,8 +1059,35 @@ test_file_errors (void)
 static void
 test_basename (void)
 {
+  const gchar *path = "/path/to/a/file/deep/down.sh";
+  const gchar *b;
+
+  if (g_test_undefined ())
+    {
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion*!= NULL*");
+      g_assert_null (g_basename (NULL));
+      g_test_assert_expected_messages ();
+    }
+
+  b = g_basename (path);
+
+  g_assert_cmpstr (b, ==, "down.sh");
+}
+
+static void
+test_get_basename (void)
+{
   gchar *b;
 
+  if (g_test_undefined ())
+    {
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion*!= NULL*");
+      g_assert_null (g_path_get_basename (NULL));
+      g_test_assert_expected_messages ();
+    }
+
   b = g_path_get_basename ("");
   g_assert_cmpstr (b, ==, ".");
   g_free (b);
@@ -835,6 +1102,75 @@ test_basename (void)
 }
 
 static void
+test_dirname (void)
+{
+  gsize i;
+  struct {
+    const gchar *filename;
+    const gchar *dirname;
+  } dirname_checks[] = {
+    { "/", "/" },
+    { "////", "/" },
+    { ".////", "." },
+    { ".", "." },
+    { "..", "." },
+    { "../", ".." },
+    { "..////", ".." },
+    { "", "." },
+    { "a/b", "a" },
+    { "a/b/", "a/b" },
+    { "c///", "c" },
+    { "/a/b", "/a" },
+    { "/a/b/", "/a/b" },
+#ifdef G_OS_WIN32
+    { "\\", "\\" },
+    { ".\\\\\\\\", "." },
+    { ".\\/\\/", "." },
+    { ".", "." },
+    { "..", "." },
+    { "..\\", ".." },
+    { "..\\\\\\\\", ".." },
+    { "..\\//\\", ".." },
+    { "", "." },
+    { "a\\b", "a" },
+    { "a\\b\\", "a\\b" },
+    { "\\a\\b", "\\a" },
+    { "\\a\\b\\", "\\a\\b" },
+    { "c\\\\\\", "c" },
+    { "c/\\\\", "c" },
+    { "a:", "a:." },
+    { "a:foo", "a:." },
+    { "a:foo\\bar", "a:foo" },
+    { "a:/foo", "a:/" },
+    { "a:/foo/bar", "a:/foo" },
+    { "a:/", "a:/" },
+    { "a://", "a:/" },
+    { "a:\\foo", "a:\\" },
+    { "a:\\", "a:\\" },
+    { "a:\\\\", "a:\\" },
+    { "a:\\/", "a:\\" },
+#endif
+  };
+
+  if (g_test_undefined ())
+    {
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion*!= NULL*");
+      g_assert_null (g_path_get_dirname (NULL));
+      g_test_assert_expected_messages ();
+    }
+
+  for (i = 0; i < G_N_ELEMENTS (dirname_checks); i++)
+    {
+      gchar *dirname;
+
+      dirname = g_path_get_dirname (dirname_checks[i].filename);
+      g_assert_cmpstr (dirname, ==, dirname_checks[i].dirname);
+      g_free (dirname);
+    }
+}
+
+static void
 test_dir_make_tmp (void)
 {
   gchar *name;
@@ -901,14 +1237,68 @@ test_file_open_tmp (void)
   g_assert_null (name);
   g_assert_error (error, G_FILE_ERROR, G_FILE_ERROR_FAILED);
   g_clear_error (&error);
+
+  error = NULL;
+  name = NULL;
+  fd = g_file_open_tmp ("zap" G_DIR_SEPARATOR_S "barXXXXXX", &name, &error);
+  g_assert_cmpint (fd, ==, -1);
+
+  g_clear_error (&error);
+  g_free (name);
+
+#ifdef G_OS_WIN32
+  name = NULL;
+  fd = g_file_open_tmp ("zap/barXXXXXX", &name, &error);
+  g_assert_cmpint (fd, ==, -1);
+
+  g_clear_error (&error);
+  g_free (name);
+#endif
+
+  name = NULL;
+  fd = g_file_open_tmp ("zapXXXXXX", &name, &error);
+  g_assert_cmpint (fd, !=, -1);
+
+  close (fd);
+  g_clear_error (&error);
+  remove (name);
+  g_free (name);
+
+  name = NULL;
+  fd = g_file_open_tmp (NULL, &name, &error);
+  g_assert_cmpint (fd, !=, -1);
+
+  close (fd);
+  g_clear_error (&error);
+  remove (name);
+  g_free (name);
 }
 
 static void
 test_mkstemp (void)
 {
-  gchar *name;
   gint fd;
+  gint result;
+  gchar *name;
+  char chars[62];
+  char template[32];
+  const char hello[] = "Hello, World";
+  const gsize hellolen = sizeof (hello) - 1;
+
+  if (g_test_undefined ())
+    {
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion*!= NULL*");
+      g_assert_cmpint (g_mkstemp (NULL), ==, -1);
+      g_test_assert_expected_messages ();
+    }
+
+  /* Expect to fail if no 'XXXXXX' is given */
+  name = g_strdup ("test");
+  g_assert_cmpint (g_mkstemp (name), ==, -1);
+  g_free (name);
 
+  /* Test normal case */
   name = g_strdup ("testXXXXXXtest"),
   fd = g_mkstemp (name);
   g_assert_cmpint (fd, !=, -1);
@@ -917,17 +1307,48 @@ test_mkstemp (void)
   close (fd);
   g_free (name);
 
-  name = g_strdup ("testYYYYYYtest"),
-  fd = g_mkstemp (name);
-  g_assert_cmpint (fd, ==, -1);
-  g_free (name);
+  /* g_mkstemp() must not work if template doesn't contain XXXXXX */
+  strcpy (template, "foobar");
+  g_assert_cmpint (g_mkstemp (template), ==, -1);
+
+  /* g_mkstemp() must not work if template doesn't contain six X */
+  strcpy (template, "foobarXXX");
+  g_assert_cmpint (g_mkstemp (template), ==, -1);
+
+  strcpy (template, "fooXXXXXX");
+  fd = g_mkstemp (template);
+  g_assert_cmpint (fd, !=, -1);
+  result = write (fd, hello, hellolen);
+  g_assert_cmpint (result, !=, -1);
+  g_assert_cmpint (result, ==, hellolen);
+
+  lseek (fd, 0, 0);
+  result = read (fd, chars, sizeof (chars));
+  g_assert_cmpint (result, !=, -1);
+  g_assert_cmpint (result, ==, hellolen);
+
+  chars[result] = '\0';
+  g_assert_cmpstr (chars, ==, hello);
+
+  close (fd);
+  remove (template);
+
+  /* Check that is does not work for "fooXXXXXX.pdf" */
+  strcpy (template, "fooXXXXXX.pdf");
+  fd = g_mkstemp (template);
+  g_assert_cmpint (fd, !=, -1);
+
+  close (fd);
+  remove (template);
 }
 
 static void
 test_mkdtemp (void)
 {
-  gchar *name;
+  gint fd;
   gchar *ret;
+  gchar *name;
+  char template[32];
 
   name = g_strdup ("testXXXXXXtest"),
   ret = g_mkdtemp (name);
@@ -940,6 +1361,108 @@ test_mkdtemp (void)
   ret = g_mkdtemp (name);
   g_assert_null (ret);
   g_free (name);
+
+  strcpy (template, "foodir");
+  g_assert_null (g_mkdtemp (template));
+
+  strcpy (template, "foodir");
+  g_assert_null (g_mkdtemp (template));
+
+  strcpy (template, "fooXXXXXX");
+  ret = g_mkdtemp (template);
+  g_assert_nonnull (ret);
+  g_assert_true (ret == template);
+  g_assert_false (g_file_test (template, G_FILE_TEST_IS_REGULAR));
+  g_assert_true (g_file_test (template, G_FILE_TEST_IS_DIR));
+
+  strcat (template, "/abc");
+  fd = g_open (template, O_WRONLY | O_CREAT, 0600);
+  g_assert_cmpint (fd, !=, -1);
+  close (fd);
+  g_assert_true (g_file_test (template, G_FILE_TEST_IS_REGULAR));
+  g_assert_cmpint (g_unlink (template), !=, -1);
+
+  template[9] = '\0';
+  g_assert_cmpint (g_rmdir (template), !=, -1);
+
+  strcpy (template, "fooXXXXXX.dir");
+  g_assert_nonnull (g_mkdtemp (template));
+  g_assert_true (g_file_test (template, G_FILE_TEST_IS_DIR));
+  g_rmdir (template);
+}
+
+static void
+test_get_contents (void)
+{
+  FILE *f;
+  gsize len;
+  gchar *contents;
+  GError *error = NULL;
+  const gchar *text = "abcdefghijklmnopqrstuvwxyz";
+  const gchar *filename = "file-test-get-contents";
+
+  f = g_fopen (filename, "w");
+  fwrite (text, 1, strlen (text), f);
+  fclose (f);
+
+  if (g_test_undefined ())
+    {
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion*!= NULL*");
+      g_assert_false (g_file_get_contents (NULL, &contents, &len, &error));
+      g_test_assert_expected_messages ();
+
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion*!= NULL*");
+      g_assert_false (g_file_get_contents (filename, NULL, &len, &error));
+      g_test_assert_expected_messages ();
+    }
+
+  g_assert_true (g_file_test (filename, G_FILE_TEST_IS_REGULAR));
+
+  g_assert_true (g_file_get_contents (filename, &contents, &len, &error));
+  g_assert_cmpstr (text, ==, contents);
+  g_assert_no_error (error);
+
+  g_free (contents);
+}
+
+static void
+test_file_test (void)
+{
+  GError *error = NULL;
+  gboolean result;
+  gchar *name;
+  gint fd;
+
+  if (g_test_undefined ())
+    {
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion*!= NULL*");
+      result = g_file_test (NULL, G_FILE_TEST_EXISTS);
+      g_assert_false (result);
+      g_test_assert_expected_messages ();
+    }
+
+  fd = g_file_open_tmp (NULL, &name, &error);
+  g_assert_no_error (error);
+  write (fd, "a", 1);
+  g_assert_cmpint (g_fsync (fd), ==, 0);
+  close (fd);
+
+#ifndef G_OS_WIN32
+  result = g_file_test (name, G_FILE_TEST_IS_SYMLINK);
+  g_assert_false (result);
+
+  symlink (name, "symlink");
+  result = g_file_test ("symlink", G_FILE_TEST_IS_SYMLINK);
+  g_assert_true (result);
+  unlink ("symlink");
+#endif
+
+  /* Cleaning */
+  g_remove (name);
+  g_free (name);
 }
 
 static void
@@ -1012,8 +1535,11 @@ test_set_contents_full (void)
       { EXISTING_FILE_REGULAR, 0644, FALSE, TRUE, 0 },
 #ifndef G_OS_WIN32
       { EXISTING_FILE_SYMLINK, 0644, FALSE, TRUE, 0 },
-#endif
       { EXISTING_FILE_DIRECTORY, 0644, FALSE, FALSE, G_FILE_ERROR_ISDIR },
+#else
+      /* on win32, _wopen returns EACCES if path is a directory */
+      { EXISTING_FILE_DIRECTORY, 0644, FALSE, FALSE, G_FILE_ERROR_ACCES },
+#endif
     };
   gsize i;
 
@@ -1116,7 +1642,17 @@ test_set_contents_full (void)
               g_assert_no_errno (g_lstat (set_contents_name, &statbuf));
 
               if (tests[i].existing_file == EXISTING_FILE_NONE)
-                g_assert_cmpint (statbuf.st_mode & ~S_IFMT, ==, tests[i].new_mode);
+                {
+                  int mode = statbuf.st_mode & ~S_IFMT;
+                  int new_mode = tests[i].new_mode;
+#ifdef G_OS_WIN32
+                  /* on windows, group and others perms handling is different */
+                  /* only check the rwx user permissions */
+                  mode &= (_S_IREAD|_S_IWRITE|_S_IEXEC);
+                  new_mode &= (_S_IREAD|_S_IWRITE|_S_IEXEC);
+#endif
+                  g_assert_cmpint (mode, ==, new_mode);
+                }
 
 #ifndef G_OS_WIN32
               if (tests[i].existing_file == EXISTING_FILE_SYMLINK)
@@ -1170,7 +1706,24 @@ test_set_contents_full_read_only_file (void)
   write (fd, "a", 1);
   g_assert_no_errno (g_fsync (fd));
   close (fd);
-  g_assert_no_errno (chmod (file_name, 0200));
+  g_assert_no_errno (g_chmod (file_name, 0400)); /* S_IREAD */
+
+  if (g_test_undefined ())
+    {
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion*!= NULL*");
+      ret = g_file_set_contents_full (NULL, "b", 1,
+                                      G_FILE_SET_CONTENTS_NONE, 0644, &error);
+      g_assert_false (ret);
+      g_test_assert_expected_messages ();
+
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion*!= NULL*");
+      ret = g_file_set_contents_full (file_name, NULL, 1,
+                                      G_FILE_SET_CONTENTS_NONE, 0644, &error);
+      g_assert_false (ret);
+      g_test_assert_expected_messages ();
+    }
 
   /* Set the file contents */
   ret = g_file_set_contents_full (file_name, "b", 1, G_FILE_SET_CONTENTS_NONE, 0644, &error);
@@ -1196,6 +1749,8 @@ test_set_contents_full_read_only_file (void)
 static void
 test_set_contents_full_read_only_directory (void)
 {
+#ifndef G_OS_WIN32
+/* windows mostly ignores read-only flagged directories, chmod doesn't work */
   GFileSetContentsFlags flags_mask =
       G_FILE_SET_CONTENTS_ONLY_EXISTING |
       G_FILE_SET_CONTENTS_DURABLE |
@@ -1226,7 +1781,7 @@ test_set_contents_full_read_only_directory (void)
       g_assert_no_errno (g_fsync (fd));
       close (fd);
 
-      g_assert_no_errno (chmod (dir_name, 0));
+      g_assert_no_errno (g_chmod (dir_name, 0));
 
       /* Set the file contents */
       ret = g_file_set_contents_full (file_name, "b", 1, flags, 0644, &error);
@@ -1249,6 +1804,9 @@ test_set_contents_full_read_only_directory (void)
       g_free (file_name);
       g_free (dir_name);
     }
+#else
+  g_test_skip ("Windows doesn’t support read-only directories in the same way as Unix");
+#endif
 }
 
 static void
@@ -1257,12 +1815,26 @@ test_read_link (void)
 #ifdef HAVE_READLINK
 #ifdef G_OS_UNIX
   int ret;
-  const gchar *oldpath;
+  FILE *file;
   gchar *cwd;
+  gchar *data;
   gchar *newpath;
   gchar *badpath;
   gchar *path;
   GError *error = NULL;
+  const gchar *oldpath;
+  const gchar *filename = "file-test-data";
+  const gchar *link1 = "file-test-link1";
+  const gchar *link2 = "file-test-link2";
+  const gchar *link3 = "file-test-link3";
+
+  if (g_test_undefined ())
+    {
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion*!= NULL*");
+      newpath = g_file_read_link (NULL, &error);
+      g_test_assert_expected_messages ();
+    }
 
   cwd = g_get_current_dir ();
 
@@ -1295,6 +1867,42 @@ test_read_link (void)
   g_free (newpath);
   g_free (badpath);
 
+  file = fopen (filename, "w");
+  g_assert_nonnull (file);
+  fclose (file);
+
+  g_assert_cmpint (symlink (filename, link1), ==, 0);
+  g_assert_cmpint (symlink (link1, link2), ==, 0);
+
+  error = NULL;
+  data = g_file_read_link (link1, &error);
+  g_assert_nonnull (data);
+  g_assert_cmpstr (data, ==, filename);
+  g_assert_no_error (error);
+  g_free (data);
+
+  error = NULL;
+  data = g_file_read_link (link2, &error);
+  g_assert_nonnull (data);
+  g_assert_cmpstr (data, ==, link1);
+  g_assert_no_error (error);
+  g_free (data);
+
+  error = NULL;
+  data = g_file_read_link (link3, &error);
+  g_assert_null (data);
+  g_assert_error (error, G_FILE_ERROR, G_FILE_ERROR_NOENT);
+  g_error_free (error);
+
+  error = NULL;
+  data = g_file_read_link (filename, &error);
+  g_assert_null (data);
+  g_assert_error (error, G_FILE_ERROR, G_FILE_ERROR_INVAL);
+  g_error_free (error);
+
+  remove (filename);
+  remove (link1);
+  remove (link2);
 #endif
 #else
   g_test_skip ("Symbolic links not supported");
@@ -1830,6 +2438,7 @@ main (int   argc,
   g_test_add_func ("/fileutils/stdio-win32-pathstrip", test_win32_pathstrip);
   g_test_add_func ("/fileutils/stdio-win32-zero-terminate-symlink", test_win32_zero_terminate_symlink);
 #endif
+  g_test_add_func ("/fileutils/paths", test_paths);
   g_test_add_func ("/fileutils/build-path", test_build_path);
   g_test_add_func ("/fileutils/build-pathv", test_build_pathv);
   g_test_add_func ("/fileutils/build-filename", test_build_filename);
@@ -1839,10 +2448,14 @@ main (int   argc,
   g_test_add_func ("/fileutils/format-size-for-display", test_format_size_for_display);
   g_test_add_func ("/fileutils/errors", test_file_errors);
   g_test_add_func ("/fileutils/basename", test_basename);
+  g_test_add_func ("/fileutils/get-basename", test_get_basename);
+  g_test_add_func ("/fileutils/dirname", test_dirname);
   g_test_add_func ("/fileutils/dir-make-tmp", test_dir_make_tmp);
   g_test_add_func ("/fileutils/file-open-tmp", test_file_open_tmp);
+  g_test_add_func ("/fileutils/file-test", test_file_test);
   g_test_add_func ("/fileutils/mkstemp", test_mkstemp);
   g_test_add_func ("/fileutils/mkdtemp", test_mkdtemp);
+  g_test_add_func ("/fileutils/get-contents", test_get_contents);
   g_test_add_func ("/fileutils/set-contents", test_set_contents);
   g_test_add_func ("/fileutils/set-contents-full", test_set_contents_full);
   g_test_add_func ("/fileutils/set-contents-full/read-only-file", test_set_contents_full_read_only_file);
index 38555bf..141263b 100644 (file)
   g_assert_cmpint ((U), ==, g_date_time_get_microsecond ((dt))); \
 } G_STMT_END
 
+static gboolean
+skip_if_running_uninstalled (void)
+{
+  /* If running uninstalled (G_TEST_BUILDDIR is set), skip this test, since we
+   * need the translations to be installed. We can’t mess around with
+   * bindtextdomain() here, as the compiled .gmo files in po/ are not in the
+   * right installed directory hierarchy to be successfully loaded by gettext. */
+  if (g_getenv ("G_TEST_BUILDDIR") != NULL)
+    {
+      g_test_skip ("Skipping due to running uninstalled. "
+                   "This test can only be run when the translations are installed.");
+      return TRUE;
+    }
+
+  return FALSE;
+}
+
 static void
 get_localtime_tm (time_t     time_,
                   struct tm *retval)
@@ -1650,16 +1667,8 @@ test_non_utf8_printf (void)
 {
   gchar *oldlocale;
 
-  /* If running uninstalled (G_TEST_BUILDDIR is set), skip this test, since we
-   * need the translations to be installed. We can’t mess around with
-   * bindtextdomain() here, as the compiled .gmo files in po/ are not in the
-   * right installed directory hierarchy to be successfully loaded by gettext. */
-  if (g_getenv ("G_TEST_BUILDDIR") != NULL)
-    {
-      g_test_skip ("Skipping due to running uninstalled. "
-                   "This test can only be run when the translations are installed.");
-      return;
-    }
+  if (skip_if_running_uninstalled())
+    return;
 
   oldlocale = g_strdup (setlocale (LC_ALL, NULL));
   setlocale (LC_ALL, "ja_JP.eucjp");
@@ -1805,6 +1814,7 @@ test_modifiers (void)
 
   oldlocale = g_strdup (setlocale (LC_ALL, NULL));
   setlocale (LC_ALL, "fa_IR.utf-8");
+#ifdef HAVE_LANGINFO_OUTDIGIT
   if (strstr (setlocale (LC_ALL, NULL), "fa_IR") != NULL)
     {
       TEST_PRINTF_TIME (23, 0, 0, "%OH", "\333\262\333\263");    /* '23' */
@@ -1818,6 +1828,9 @@ test_modifiers (void)
     }
   else
     g_test_skip ("locale fa_IR not available, skipping O modifier tests");
+#else
+    g_test_skip ("langinfo not available, skipping O modifier tests");
+#endif
   setlocale (LC_ALL, oldlocale);
   g_free (oldlocale);
 }
@@ -1831,16 +1844,8 @@ test_month_names (void)
 
   g_test_bug ("http://bugzilla.gnome.org/749206");
 
-  /* If running uninstalled (G_TEST_BUILDDIR is set), skip this test, since we
-   * need the translations to be installed. We can’t mess around with
-   * bindtextdomain() here, as the compiled .gmo files in po/ are not in the
-   * right installed directory hierarchy to be successfully loaded by gettext. */
-  if (g_getenv ("G_TEST_BUILDDIR") != NULL)
-    {
-      g_test_skip ("Skipping due to running uninstalled. "
-                   "This test can only be run when the translations are installed.");
-      return;
-    }
+  if (skip_if_running_uninstalled())
+    return;
 
   oldlocale = g_strdup (setlocale (LC_ALL, NULL));
 
@@ -2316,6 +2321,22 @@ test_format_iso8601 (void)
   g_free (p);
   g_date_time_unref (dt);
   g_time_zone_unref (tz);
+
+  tz = g_time_zone_new_utc ();
+  dt = g_date_time_new (tz, 9, 1, 2, 3, 4, 55);
+  p = g_date_time_format_iso8601 (dt);
+  g_assert_cmpstr (p, ==, "0009-01-02T03:04:55Z");
+  g_free (p);
+  g_date_time_unref (dt);
+  g_time_zone_unref (tz);
+
+  tz = g_time_zone_new_utc ();
+  dt = g_date_time_new (tz, 9990, 1, 2, 3, 4, 55.000001);
+  p = g_date_time_format_iso8601 (dt);
+  g_assert_cmpstr (p, ==, "9990-01-02T03:04:55.000001Z");
+  g_free (p);
+  g_date_time_unref (dt);
+  g_time_zone_unref (tz);
 }
 
 typedef struct
@@ -2351,7 +2372,7 @@ check_and_set_locale (int          category,
   setlocale (category, name);
   if (strstr (setlocale (category, NULL), name) == NULL)
     {
-      g_print ("Unavaible '%s' locale\n", name);
+      g_print ("Unavailable '%s' locale\n", name);
       g_test_skip ("required locale not available, skipping tests");
       return FALSE;
     }
@@ -2361,6 +2382,9 @@ check_and_set_locale (int          category,
 static void
 test_format_time_mixed_utf8 (gconstpointer data)
 {
+#ifdef _MSC_VER
+  g_test_skip ("setlocale (LC_MESSAGES) asserts on ucrt");
+#else
   const MixedUtf8TestData *test_data;
   gchar *old_time_locale;
   gchar *old_messages_locale;
@@ -2426,6 +2450,7 @@ test_format_time_mixed_utf8 (gconstpointer data)
   setlocale (LC_MESSAGES, old_messages_locale);
   g_free (old_time_locale);
   g_free (old_messages_locale);
+#endif
 }
 
 #pragma GCC diagnostic push
@@ -2463,6 +2488,17 @@ static void
 test_GDateTime_strftime_error_handling (void)
 {
   gchar *oldlocale;
+#ifdef G_OS_WIN32
+  LCID old_lcid;
+#endif
+
+  if (skip_if_running_uninstalled())
+    return;
+
+#ifdef G_OS_WIN32
+  old_lcid = GetThreadLocale ();
+  SetThreadLocale (MAKELCID (MAKELANGID (LANG_GERMAN, SUBLANG_GERMAN), SORT_DEFAULT));
+#endif
 
   oldlocale = g_strdup (setlocale (LC_ALL, NULL));
   setlocale (LC_ALL, "de_DE.utf-8");
@@ -2476,6 +2512,10 @@ test_GDateTime_strftime_error_handling (void)
     g_test_skip ("locale de_DE not available, skipping error handling tests");
   setlocale (LC_ALL, oldlocale);
   g_free (oldlocale);
+
+#ifdef G_OS_WIN32
+  SetThreadLocale (old_lcid);
+#endif
 }
 
 static void
@@ -2965,6 +3005,7 @@ test_new_offset (void)
 static void
 test_time_zone_parse_rfc8536 (void)
 {
+#ifndef G_OS_WIN32
   const gchar *test_files[] =
     {
       /* Generated with `zic -b slim`; see
@@ -2990,6 +3031,9 @@ test_time_zone_parse_rfc8536 (void)
       g_time_zone_unref (tz);
       g_free (path);
     }
+#else
+  g_test_skip ("RFC 8536 format time zone files are not available on Windows");
+#endif
 }
 
 /* Check GTimeZone instances are cached. */
@@ -3063,6 +3107,10 @@ main (gint   argc,
    * Unset it to avoid interference with tests using setlocale and translation. */
   g_unsetenv ("LANGUAGE");
 
+  /* GLib uses CHARSET to allow overriding the character set used for all locale
+   * categories. Unset it to avoid interference with tests. */
+  g_unsetenv ("CHARSET");
+
   g_test_init (&argc, &argv, NULL);
 
   /* GDateTime Tests */
index fe72606..114b6a2 100644 (file)
@@ -34,9 +34,7 @@
 
 #include <glib.h>
 
-
-
-int array[10000];
+static int global_array[10000];
 
 static void
 fill_hash_table_and_array (GHashTable *hash_table)
@@ -45,8 +43,8 @@ fill_hash_table_and_array (GHashTable *hash_table)
 
   for (i = 0; i < 10000; i++)
     {
-      array[i] = i;
-      g_hash_table_insert (hash_table, &array[i], &array[i]);
+      global_array[i] = i;
+      g_hash_table_insert (hash_table, &global_array[i], &global_array[i]);
     }
 }
 
@@ -641,7 +639,7 @@ test_hash_misc (void)
   verify_result_array (result_array);
 
   for (i = 0; i < 10000; i++)
-    g_hash_table_remove (hash_table, &array[i]);
+    g_hash_table_remove (hash_table, &global_array[i]);
 
   fill_hash_table_and_array (hash_table);
 
@@ -971,14 +969,14 @@ set_ref_hash_test (void)
   key_unref (key2);
 }
 
-GHashTable *h;
+static GHashTable *global_hashtable;
 
 typedef struct {
     gchar *string;
     gboolean freed;
 } FakeFreeData;
 
-GPtrArray *fake_free_data;
+static GPtrArray *fake_free_data;
 
 static void
 fake_free (gpointer dead)
@@ -1003,7 +1001,7 @@ fake_free (gpointer dead)
 static void
 value_destroy_insert (gpointer value)
 {
-  g_hash_table_remove_all (h);
+  g_hash_table_remove_all (global_hashtable);
 }
 
 static void
@@ -1016,44 +1014,44 @@ test_destroy_modify (void)
 
   fake_free_data = g_ptr_array_new ();
 
-  h = g_hash_table_new_full (g_str_hash, g_str_equal, fake_free, value_destroy_insert);
+  global_hashtable = g_hash_table_new_full (g_str_hash, g_str_equal, fake_free, value_destroy_insert);
 
   ffd = g_new0 (FakeFreeData, 1);
   ffd->string = g_strdup ("a");
   g_ptr_array_add (fake_free_data, ffd);
-  g_hash_table_insert (h, ffd->string, "b");
+  g_hash_table_insert (global_hashtable, ffd->string, "b");
 
   ffd = g_new0 (FakeFreeData, 1);
   ffd->string = g_strdup ("c");
   g_ptr_array_add (fake_free_data, ffd);
-  g_hash_table_insert (h, ffd->string, "d");
+  g_hash_table_insert (global_hashtable, ffd->string, "d");
 
   ffd = g_new0 (FakeFreeData, 1);
   ffd->string = g_strdup ("e");
   g_ptr_array_add (fake_free_data, ffd);
-  g_hash_table_insert (h, ffd->string, "f");
+  g_hash_table_insert (global_hashtable, ffd->string, "f");
 
   ffd = g_new0 (FakeFreeData, 1);
   ffd->string = g_strdup ("g");
   g_ptr_array_add (fake_free_data, ffd);
-  g_hash_table_insert (h, ffd->string, "h");
+  g_hash_table_insert (global_hashtable, ffd->string, "h");
 
   ffd = g_new0 (FakeFreeData, 1);
   ffd->string = g_strdup ("h");
   g_ptr_array_add (fake_free_data, ffd);
-  g_hash_table_insert (h, ffd->string, "k");
+  g_hash_table_insert (global_hashtable, ffd->string, "k");
 
   ffd = g_new0 (FakeFreeData, 1);
   ffd->string = g_strdup ("a");
   g_ptr_array_add (fake_free_data, ffd);
-  g_hash_table_insert (h, ffd->string, "c");
+  g_hash_table_insert (global_hashtable, ffd->string, "c");
 
-  g_hash_table_remove (h, "c");
+  g_hash_table_remove (global_hashtable, "c");
 
   /* that removed everything... */
   for (i = 0; i < fake_free_data->len; i++)
     {
-      FakeFreeData *ffd = g_ptr_array_index (fake_free_data, i);
+      ffd = g_ptr_array_index (fake_free_data, i);
 
       g_assert (ffd->freed);
       g_free (ffd->string);
@@ -1063,9 +1061,9 @@ test_destroy_modify (void)
   g_ptr_array_unref (fake_free_data);
 
   /* ... so this is a no-op */
-  g_hash_table_remove (h, "e");
+  g_hash_table_remove (global_hashtable, "e");
 
-  g_hash_table_unref (h);
+  g_hash_table_unref (global_hashtable);
 }
 
 static gboolean
@@ -1345,6 +1343,49 @@ test_lookup_extended (void)
   g_hash_table_unref (hash);
 }
 
+static void
+inc_state (gpointer user_data)
+{
+  int *state = user_data;
+  g_assert_cmpint (*state, ==, 0);
+  *state = 1;
+}
+
+static void
+test_new_similar (void)
+{
+  GHashTable *hash1;
+  GHashTable *hash2;
+  int state1;
+  int state2;
+
+  hash1 = g_hash_table_new_full (g_str_hash, g_str_equal,
+                                 g_free, inc_state);
+  state1 = 0;
+  g_hash_table_insert (hash1,
+                       g_strdup ("test"),
+                       &state1);
+  g_assert_true (g_hash_table_lookup (hash1, "test") == &state1);
+
+  hash2 = g_hash_table_new_similar (hash1);
+
+  g_assert_true (g_hash_table_lookup (hash1, "test") == &state1);
+  g_assert_null (g_hash_table_lookup (hash2, "test"));
+
+  state2 = 0;
+  g_hash_table_insert (hash2, g_strdup ("test"), &state2);
+  g_assert_true (g_hash_table_lookup (hash2, "test") == &state2);
+  g_hash_table_remove (hash2, "test");
+  g_assert_cmpint (state2, ==, 1);
+
+  g_assert_cmpint (state1, ==, 0);
+  g_hash_table_remove (hash1, "test");
+  g_assert_cmpint (state1, ==, 1);
+
+  g_hash_table_unref (hash1);
+  g_hash_table_unref (hash2);
+}
+
 struct _GHashTable
 {
   gsize            size;
@@ -1685,6 +1726,7 @@ main (int argc, char *argv[])
   g_test_add_func ("/hash/steal-extended", test_steal_extended);
   g_test_add_func ("/hash/steal-extended/optional", test_steal_extended_optional);
   g_test_add_func ("/hash/lookup-extended", test_lookup_extended);
+  g_test_add_func ("/hash/new-similar", test_new_similar);
 
   /* tests for individual bugs */
   g_test_add_func ("/hash/lookup-null-key", test_lookup_null_key);
index 4a1b108..a04bcd0 100644 (file)
@@ -1,5 +1,13 @@
 /* GLib testing framework examples and tests
  *
+ * Copyright © 2001 Hidetoshi Tajima
+ * Copyright © 2001 Ron Steinke
+ * Copyright © 2001 Owen Taylor
+ * Copyright © 2002 Manish Singh
+ * Copyright © 2011 Sjoerd Simons
+ * Copyright © 2012 Simon McVittie
+ * Copyright © 2013 Stef Walter
+ * Copyright © 2005, 2006, 2008, 2012, 2013 Matthias Clasen
  * Copyright © 2020 Endless Mobile, Inc.
  *
  * This library is free software; you can redistribute it and/or
 #include <glib/gstdio.h>
 
 static void
+test_small_writes (void)
+{
+  GIOChannel *io;
+  GIOStatus status = G_IO_STATUS_ERROR;
+  guint bytes_remaining;
+  gchar tmp;
+  GError *local_error = NULL;
+
+  io = g_io_channel_new_file ("iochannel-test-outfile", "w", &local_error);
+  g_assert_no_error (local_error);
+
+  g_io_channel_set_encoding (io, NULL, NULL);
+  g_io_channel_set_buffer_size (io, 1022);
+
+  bytes_remaining = 2 * g_io_channel_get_buffer_size (io);
+  tmp = 0;
+
+  while (bytes_remaining)
+    {
+      status = g_io_channel_write_chars (io, &tmp, 1, NULL, NULL);
+      if (status == G_IO_STATUS_ERROR)
+        break;
+      if (status == G_IO_STATUS_NORMAL)
+        bytes_remaining--;
+    }
+
+  g_assert_cmpint (status, ==, G_IO_STATUS_NORMAL);
+
+  g_io_channel_unref (io);
+}
+
+static void
+test_read_write (void)
+{
+  GIOChannel *gio_r, *gio_w ;
+  GError *local_error = NULL;
+  GString *buffer;
+  char *filename;
+  gint rlength = 0;
+  glong wlength = 0;
+  gsize length_out;
+  const gchar *encoding = "EUC-JP";
+  GIOStatus status;
+  const gsize buffer_size_bytes = 1024;
+
+  filename = g_test_build_filename (G_TEST_DIST, "iochannel-test-infile", NULL);
+
+  setbuf (stdout, NULL); /* For debugging */
+
+  gio_r = g_io_channel_new_file (filename, "r", &local_error);
+  g_assert_no_error (local_error);
+
+  gio_w = g_io_channel_new_file ("iochannel-test-outfile", "w", &local_error);
+  g_assert_no_error (local_error);
+
+  g_io_channel_set_encoding (gio_r, encoding, &local_error);
+  g_assert_no_error (local_error);
+
+  g_io_channel_set_buffer_size (gio_r, buffer_size_bytes);
+
+  status = g_io_channel_set_flags (gio_r, G_IO_FLAG_NONBLOCK, &local_error);
+  if (status == G_IO_STATUS_ERROR)
+    {
+      /* Errors should not happen */
+      g_assert_no_error (local_error);
+      g_clear_error (&local_error);
+    }
+  buffer = g_string_sized_new (buffer_size_bytes);
+
+  while (TRUE)
+    {
+      do
+        status = g_io_channel_read_line_string (gio_r, buffer, NULL, &local_error);
+      while (status == G_IO_STATUS_AGAIN);
+      if (status != G_IO_STATUS_NORMAL)
+        break;
+
+      rlength += buffer->len;
+
+      do
+        status = g_io_channel_write_chars (gio_w, buffer->str, buffer->len,
+          &length_out, &local_error);
+      while (status == G_IO_STATUS_AGAIN);
+      if (status != G_IO_STATUS_NORMAL)
+        break;
+
+      wlength += length_out;
+
+      /* Ensure the whole line was written */
+      g_assert_cmpuint (length_out, ==, buffer->len);
+
+      g_test_message ("%s", buffer->str);
+      g_string_truncate (buffer, 0);
+    }
+
+  switch (status)
+    {
+      case G_IO_STATUS_EOF:
+        break;
+      case G_IO_STATUS_ERROR:
+        /* Errors should not happen */
+        g_assert_no_error (local_error);
+        g_clear_error (&local_error);
+        break;
+      default:
+        g_assert_not_reached ();
+        break;
+    }
+
+  do
+    status = g_io_channel_flush (gio_w, &local_error);
+  while (status == G_IO_STATUS_AGAIN);
+
+  if (status == G_IO_STATUS_ERROR)
+    {
+      /* Errors should not happen */
+      g_assert_no_error (local_error);
+      g_clear_error (&local_error);
+    }
+
+  g_test_message ("read %d bytes, wrote %ld bytes", rlength, wlength);
+
+  g_io_channel_unref (gio_r);
+  g_io_channel_unref (gio_w);
+
+  test_small_writes ();
+
+  g_free (filename);
+  g_string_free (buffer, TRUE);
+}
+
+static void
 test_read_line_embedded_nuls (void)
 {
   const guint8 test_data[] = { 'H', 'i', '!', '\0', 'y', 'o', 'u', '\n', ':', ')', '\n' };
@@ -75,6 +215,7 @@ main (int   argc,
 {
   g_test_init (&argc, &argv, NULL);
 
+  g_test_add_func ("/io-channel/read-write", test_read_write);
   g_test_add_func ("/io-channel/read-line/embedded-nuls", test_read_line_embedded_nuls);
 
   return g_test_run ();
index 1f5be8b..3d72d96 100644 (file)
@@ -45,7 +45,7 @@ check_string_value (GKeyFile    *keyfile,
 
   value = g_key_file_get_string (keyfile, group, key, &error);
   check_no_error (&error);
-  g_assert (value != NULL);
+  g_assert_nonnull (value);
   g_assert_cmpstr (value, ==, expected);
   g_free (value);
 }
@@ -62,7 +62,7 @@ check_locale_string_value (GKeyFile    *keyfile,
 
   value = g_key_file_get_locale_string (keyfile, group, key, locale, &error);
   check_no_error (&error);
-  g_assert (value != NULL);
+  g_assert_nonnull (value);
   g_assert_cmpstr (value, ==, expected);
   g_free (value);
 }
@@ -95,14 +95,14 @@ check_string_list_value (GKeyFile    *keyfile,
 
   value = g_key_file_get_string_list (keyfile, group, key, &len, &error);
   check_no_error (&error);
-  g_assert (value != NULL);
+  g_assert_nonnull (value);
 
   va_start (args, key);
   i = 0;
   v = va_arg (args, gchar*);
   while (v)
     {
-      g_assert (value[i] != NULL);
+      g_assert_nonnull (value[i]);
       g_assert_cmpstr (v, ==, value[i]);
       i++;
       v = va_arg (args, gchar*);
@@ -128,14 +128,14 @@ check_locale_string_list_value (GKeyFile    *keyfile,
 
   value = g_key_file_get_locale_string_list (keyfile, group, key, locale, &len, &error);
   check_no_error (&error);
-  g_assert (value != NULL);
+  g_assert_nonnull (value);
 
   va_start (args, locale);
   i = 0;
   v = va_arg (args, gchar*);
   while (v)
     {
-      g_assert (value[i] != NULL);
+      g_assert_nonnull (value[i]);
       g_assert_cmpstr (v, ==, value[i]);
       i++;
       v = va_arg (args, gchar*);
@@ -160,7 +160,7 @@ check_integer_list_value (GKeyFile    *keyfile,
 
   value = g_key_file_get_integer_list (keyfile, group, key, &len, &error);
   check_no_error (&error);
-  g_assert (value != NULL);
+  g_assert_nonnull (value);
 
   va_start (args, key);
   i = 0;
@@ -192,7 +192,7 @@ check_double_list_value (GKeyFile    *keyfile,
 
   value = g_key_file_get_double_list (keyfile, group, key, &len, &error);
   check_no_error (&error);
-  g_assert (value != NULL);
+  g_assert_nonnull (value);
 
   va_start (args, key);
   i = 0;
@@ -224,7 +224,7 @@ check_boolean_list_value (GKeyFile    *keyfile,
 
   value = g_key_file_get_boolean_list (keyfile, group, key, &len, &error);
   check_no_error (&error);
-  g_assert (value != NULL);
+  g_assert_nonnull (value);
 
   va_start (args, key);
   i = 0;
@@ -436,7 +436,7 @@ test_comments (void)
   check_no_error (&error);
   comment = g_key_file_get_comment (keyfile, "group1", "key2", &error);
   check_no_error (&error);
-  g_assert (comment == NULL);
+  g_assert_null (comment);
 
   comment = g_key_file_get_comment (keyfile, "group1", "key4", &error);
   check_no_error (&error);
@@ -452,7 +452,7 @@ test_comments (void)
   check_error (&error,
                G_KEY_FILE_ERROR,
                G_KEY_FILE_ERROR_GROUP_NOT_FOUND);
-  g_assert (comment == NULL);
+  g_assert_null (comment);
 
   g_key_file_free (keyfile);
 }
@@ -479,7 +479,7 @@ test_listing (void)
   keyfile = load_data (data, 0);
 
   names = g_key_file_get_groups (keyfile, &len);
-  g_assert (names != NULL);
+  g_assert_nonnull (names);
 
   check_length ("groups", g_strv_length (names), len, 2);
   check_name ("group name", names[0], "group1", 0);
@@ -501,20 +501,20 @@ test_listing (void)
 
   g_strfreev (names);
 
-  g_assert (g_key_file_has_group (keyfile, "group1"));
-  g_assert (g_key_file_has_group (keyfile, "group2"));
-  g_assert (!g_key_file_has_group (keyfile, "group10"));
-  g_assert (!g_key_file_has_group (keyfile, "group20"));
+  g_assert_true (g_key_file_has_group (keyfile, "group1"));
+  g_assert_true (g_key_file_has_group (keyfile, "group2"));
+  g_assert_false (g_key_file_has_group (keyfile, "group10"));
+  g_assert_false (g_key_file_has_group (keyfile, "group20"));
 
   start = g_key_file_get_start_group (keyfile);
   g_assert_cmpstr (start, ==, "group1");
   g_free (start);
 
-  g_assert (g_key_file_has_key (keyfile, "group1", "key1", &error));
+  g_assert_true (g_key_file_has_key (keyfile, "group1", "key1", &error));
   check_no_error (&error);
-  g_assert (g_key_file_has_key (keyfile, "group2", "key3", &error));
+  g_assert_true (g_key_file_has_key (keyfile, "group2", "key3", &error));
   check_no_error (&error);
-  g_assert (!g_key_file_has_key (keyfile, "group2", "no-such-key", NULL));
+  g_assert_false (g_key_file_has_key (keyfile, "group2", "no-such-key", NULL));
 
   g_key_file_has_key (keyfile, "no-such-group", "key", &error);
   check_error (&error, G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_GROUP_NOT_FOUND);
@@ -902,7 +902,7 @@ test_group_remove (void)
   keyfile = load_data (data, 0);
 
   names = g_key_file_get_groups (keyfile, &len);
-  g_assert (names != NULL);
+  g_assert_nonnull (names);
 
   check_length ("groups", g_strv_length (names), len, 3);
   check_name ("group name", names[0], "group1", 0);
@@ -915,7 +915,7 @@ test_group_remove (void)
   g_strfreev (names);
 
   names = g_key_file_get_groups (keyfile, &len);
-  g_assert (names != NULL);
+  g_assert_nonnull (names);
 
   check_length ("groups", g_strv_length (names), len, 2);
   check_name ("group name", names[0], "group2", 0);
@@ -927,7 +927,7 @@ test_group_remove (void)
   g_strfreev (names);
 
   names = g_key_file_get_groups (keyfile, &len);
-  g_assert (names != NULL);
+  g_assert_nonnull (names);
 
   check_length ("groups", g_strv_length (names), len, 1);
   check_name ("group name", names[0], "group3", 0);
@@ -1058,7 +1058,7 @@ test_group_names (void)
   check_error (&error,
                G_KEY_FILE_ERROR,
                G_KEY_FILE_ERROR_GROUP_NOT_FOUND);
-  g_assert (value == NULL);
+  g_assert_null (value);
   g_key_file_free (keyfile);
 
   keyfile = g_key_file_new ();
@@ -1067,7 +1067,7 @@ test_group_names (void)
   check_error (&error,
                G_KEY_FILE_ERROR,
                G_KEY_FILE_ERROR_GROUP_NOT_FOUND);
-  g_assert (value == NULL);
+  g_assert_null (value);
   g_key_file_free (keyfile);
 
   keyfile = g_key_file_new ();
@@ -1076,7 +1076,7 @@ test_group_names (void)
   check_error (&error,
                G_KEY_FILE_ERROR,
                G_KEY_FILE_ERROR_GROUP_NOT_FOUND);
-  g_assert (value == NULL);
+  g_assert_null (value);
   g_key_file_free (keyfile);
 
   keyfile = g_key_file_new ();
@@ -1335,7 +1335,7 @@ test_reload_idempotency (void)
   check_no_error (&error);
 
   data1 = g_key_file_to_data (keyfile, &len1, &error);
-  g_assert (data1 != NULL);
+  g_assert_nonnull (data1);
   g_key_file_free (keyfile);
 
   keyfile = g_key_file_new ();
@@ -1346,7 +1346,7 @@ test_reload_idempotency (void)
   check_no_error (&error);
 
   data2 = g_key_file_to_data (keyfile, &len2, &error);
-  g_assert (data2 != NULL);
+  g_assert_nonnull (data2);
   g_key_file_free (keyfile);
 
   g_assert_cmpstr (data1, ==, data2);
@@ -1377,13 +1377,13 @@ test_int64 (void)
 
   ok = g_key_file_load_from_data (file, int64_data, strlen (int64_data),
       0, NULL);
-  g_assert (ok);
+  g_assert_true (ok);
 
   c = g_key_file_get_uint64 (file, "bees", "c", NULL);
-  g_assert (c == G_GUINT64_CONSTANT (123456789123456789));
+  g_assert_cmpuint (c, ==, G_GUINT64_CONSTANT (123456789123456789));
 
   d = g_key_file_get_int64 (file, "bees", "d", NULL);
-  g_assert (d == G_GINT64_CONSTANT (-123456789123456789));
+  g_assert_cmpint (d, ==, G_GINT64_CONSTANT (-123456789123456789));
 
   g_key_file_set_uint64 (file, "bees", "c",
       G_GUINT64_CONSTANT (987654321987654321));
@@ -1417,7 +1417,7 @@ test_load (void)
   loaded = g_key_file_load_from_file (file, g_test_get_filename (G_TEST_DIST, "keyfiletest.ini", NULL), 0, &error);
 #endif
   g_assert_no_error (error);
-  g_assert (loaded);
+  g_assert_true (loaded);
 
   g_key_file_set_locale_string (file, "test", "key4", "de", "Vierter Schlüssel");
   g_key_file_set_boolean_list (file, "test", "key5", bools, 2);
@@ -1431,7 +1431,7 @@ test_load (void)
 
   file = g_key_file_new ();
   error = NULL;
-  g_assert (!g_key_file_load_from_data_dirs (file, "keyfile-test.ini", NULL, 0, &error));
+  g_assert_false (g_key_file_load_from_data_dirs (file, "keyfile-test.ini", NULL, 0, &error));
   g_assert_error (error, G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_NOT_FOUND);
   g_error_free (error);
   g_key_file_free (file);
@@ -1456,25 +1456,25 @@ test_save (void)
 
   kf = g_key_file_new ();
   ok = g_key_file_load_from_data (kf, data, strlen (data), 0, NULL);
-  g_assert (ok);
+  g_assert_true (ok);
 
   file = g_strdup ("key_file_XXXXXX");
   fd = g_mkstemp (file);
-  g_assert (fd != -1);
+  g_assert_cmpint (fd, !=, -1);
   ok = g_close (fd, &error);
-  g_assert (ok);
+  g_assert_true (ok);
   g_assert_no_error (error);
   ok = g_key_file_save_to_file (kf, file, &error);
-  g_assert (ok);
+  g_assert_true (ok);
   g_assert_no_error (error);
 
   kf2 = g_key_file_new ();
   ok = g_key_file_load_from_file (kf2, file, 0, &error);
-  g_assert (ok);
+  g_assert_true (ok);
   g_assert_no_error (error);
 
   c = g_key_file_get_uint64 (kf2, "bees", "c", NULL);
-  g_assert (c == G_GUINT64_CONSTANT (123456789123456789));
+  g_assert_cmpuint (c, ==, G_GUINT64_CONSTANT (123456789123456789));
 
   remove (file);
   g_free (file);
@@ -1490,10 +1490,10 @@ test_load_fail (void)
 
   file = g_key_file_new ();
   error = NULL;
-  g_assert (!g_key_file_load_from_file (file, g_test_get_filename (G_TEST_DIST, "keyfile.c", NULL), 0, &error));
+  g_assert_false (g_key_file_load_from_file (file, g_test_get_filename (G_TEST_DIST, "keyfile.c", NULL), 0, &error));
   g_assert_error (error, G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_PARSE);
   g_clear_error (&error);
-  g_assert (!g_key_file_load_from_file (file, "/nosuchfile", 0, &error));
+  g_assert_false (g_key_file_load_from_file (file, "/nosuchfile", 0, &error));
   g_assert_error (error, G_FILE_ERROR, G_FILE_ERROR_NOENT);
   g_clear_error (&error);
 
@@ -1517,22 +1517,22 @@ test_non_utf8 (void)
   file = g_key_file_new ();
 
   ok = g_key_file_load_from_data (file, data, strlen (data), 0, NULL);
-  g_assert (ok);
+  g_assert_true (ok);
 
   error = NULL;
   s = g_key_file_get_string (file, "group", "a", &error);
   g_assert_error (error, G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_UNKNOWN_ENCODING);
-  g_assert (s == NULL);
+  g_assert_null (s);
 
   g_clear_error (&error);
   l = g_key_file_get_string_list (file, "group", "b", NULL, &error);
   g_assert_error (error, G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_UNKNOWN_ENCODING);
-  g_assert (l == NULL);
+  g_assert_null (l);
 
   g_clear_error (&error);
   l = g_key_file_get_string_list (file, "group", "c", NULL, &error);
   g_assert_error (error, G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_INVALID_VALUE);
-  g_assert (l == NULL);
+  g_assert_null (l);
 
   g_clear_error (&error);
 
@@ -1587,8 +1587,8 @@ test_ref (void)
   file = g_key_file_new ();
 
   ok = g_key_file_load_from_data (file, data, strlen (data), 0, NULL);
-  g_assert (ok);
-  g_assert (g_key_file_has_key (file, "group", "a", NULL));
+  g_assert_true (ok);
+  g_assert_true (g_key_file_has_key (file, "group", "a", NULL));
   g_key_file_ref (file);
   g_key_file_free (file);
   g_key_file_unref (file);
@@ -1666,7 +1666,7 @@ test_limbo (void)
 
   error = NULL;
   ok = g_key_file_load_from_data (file, data, strlen (data), 0, &error);
-  g_assert (!ok);
+  g_assert_false (ok);
   g_assert_error (error, G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_GROUP_NOT_FOUND);
   g_clear_error (&error);
   g_key_file_free (file);
@@ -1675,21 +1675,33 @@ test_limbo (void)
 static void
 test_utf8 (void)
 {
-  GKeyFile *file;
-  static const char data[] =
-"[group]\n"
-"Encoding=non-UTF-8\n";
-  gboolean ok;
-  GError *error;
-
-  file = g_key_file_new ();
+  const gchar *invalid_encoding_names[] =
+    {
+      "non-UTF-8",
+      "UTF",
+      "UTF-9",
+    };
+  gsize i;
 
-  error = NULL;
-  ok = g_key_file_load_from_data (file, data, strlen (data), 0, &error);
-  g_assert (!ok);
-  g_assert_error (error, G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_UNKNOWN_ENCODING);
-  g_clear_error (&error);
-  g_key_file_free (file);
+  for (i = 0; i < G_N_ELEMENTS (invalid_encoding_names); i++)
+    {
+      GKeyFile *file = NULL;
+      gchar *data = NULL;
+      gboolean ok;
+      GError *error = NULL;
+
+      g_test_message ("Testing invalid encoding ‘%s’", invalid_encoding_names[i]);
+
+      file = g_key_file_new ();
+      data = g_strdup_printf ("[group]\n"
+                              "Encoding=%s\n", invalid_encoding_names[i]);
+      ok = g_key_file_load_from_data (file, data, strlen (data), 0, &error);
+      g_assert_false (ok);
+      g_assert_error (error, G_KEY_FILE_ERROR, G_KEY_FILE_ERROR_UNKNOWN_ENCODING);
+      g_clear_error (&error);
+      g_key_file_free (file);
+      g_free (data);
+    }
 }
 
 static void
index 5620c24..4efd8b6 100644 (file)
@@ -500,25 +500,29 @@ static void
 test_position (void)
 {
   GList *l, *ll;
+  char *a = "a";
+  char *b = "b";
+  char *c = "c";
+  char *d = "d";
 
   l = NULL;
-  l = g_list_append (l, "a");
-  l = g_list_append (l, "b");
-  l = g_list_append (l, "c");
+  l = g_list_append (l, a);
+  l = g_list_append (l, b);
+  l = g_list_append (l, c);
 
-  ll = g_list_find (l, "a");
+  ll = g_list_find (l, a);
   g_assert_cmpint (g_list_position (l, ll), ==, 0);
-  g_assert_cmpint (g_list_index (l, "a"), ==, 0);
-  ll = g_list_find (l, "b");
+  g_assert_cmpint (g_list_index (l, a), ==, 0);
+  ll = g_list_find (l, b);
   g_assert_cmpint (g_list_position (l, ll), ==, 1);
-  g_assert_cmpint (g_list_index (l, "b"), ==, 1);
-  ll = g_list_find (l, "c");
+  g_assert_cmpint (g_list_index (l, b), ==, 1);
+  ll = g_list_find (l, c);
   g_assert_cmpint (g_list_position (l, ll), ==, 2);
-  g_assert_cmpint (g_list_index (l, "c"), ==, 2);
+  g_assert_cmpint (g_list_index (l, c), ==, 2);
 
-  ll = g_list_append (NULL, "d");
+  ll = g_list_append (NULL, d);
   g_assert_cmpint (g_list_position (l, ll), ==, -1);
-  g_assert_cmpint (g_list_index (l, "d"), ==, -1);
+  g_assert_cmpint (g_list_index (l, d), ==, -1);
 
   g_list_free (l);
   g_list_free (ll);
@@ -528,7 +532,9 @@ static void
 test_double_free (void)
 {
   GList *list, *link;
-  GList  intruder = { NULL, (gpointer)0xDEADBEEF, (gpointer)0xDEADBEEF };
+  // Casts to size_t first ensure compilers won't warn about pointer casts that change size
+  // MSVC's C4312 warning with /Wp64
+  GList  intruder = { NULL, (gpointer)(size_t)0xDEADBEEF, (gpointer)(size_t)0xDEADBEEF };
 
   if (g_test_subprocess ())
     {
index ab60148..e9c4e39 100644 (file)
@@ -525,9 +525,9 @@ test_structured_logging_roundtrip1 (void)
   if (expected_messages != NULL)
     {
       char *str;
-      ExpectedMessage *expected = expected_messages->data;
+      ExpectedMessage *msg = expected_messages->data;
 
-      str = g_log_writer_format_fields (0, expected->fields, expected->n_fields, FALSE);
+      str = g_log_writer_format_fields (0, msg->fields, msg->n_fields, FALSE);
       g_test_fail_printf ("Unexpected message: %s", str);
       g_free (str);
     }
index ab13176..38eee47 100644 (file)
@@ -48,7 +48,7 @@ dispatch (GSource *source, GSourceFunc cb, gpointer date)
   return FALSE;
 }
 
-static GSourceFuncs funcs = {
+static GSourceFuncs global_funcs = {
   prepare,
   check,
   dispatch,
@@ -63,14 +63,14 @@ test_maincontext_basic (void)
   GMainContext *ctx;
   GSource *source;
   guint id;
-  gpointer data = &funcs;
+  gpointer data = &global_funcs;
 
   ctx = g_main_context_new ();
 
   g_assert_false (g_main_context_pending (ctx));
   g_assert_false (g_main_context_iteration (ctx, FALSE));
 
-  source = g_source_new (&funcs, sizeof (GSource));
+  source = g_source_new (&global_funcs, sizeof (GSource));
   g_assert_cmpint (g_source_get_priority (source), ==, G_PRIORITY_DEFAULT);
   g_assert_false (g_source_is_destroyed (source));
 
@@ -87,7 +87,7 @@ test_maincontext_basic (void)
   g_assert_cmpstr (g_source_get_name (source), ==, "still d");
 
   g_assert_null (g_main_context_find_source_by_user_data (ctx, NULL));
-  g_assert_null (g_main_context_find_source_by_funcs_user_data (ctx, &funcs, NULL));
+  g_assert_null (g_main_context_find_source_by_funcs_user_data (ctx, &global_funcs, NULL));
 
   id = g_source_attach (source, ctx);
   g_assert_cmpint (g_source_get_id (source), ==, id);
@@ -113,18 +113,18 @@ test_maincontext_basic (void)
   g_source_unref (source);
 
   ctx = g_main_context_default ();
-  source = g_source_new (&funcs, sizeof (GSource));
-  g_source_set_funcs (source, &funcs);
+  source = g_source_new (&global_funcs, sizeof (GSource));
+  g_source_set_funcs (source, &global_funcs);
   g_source_set_callback (source, cb, data, NULL);
   id = g_source_attach (source, ctx);
   g_source_unref (source);
   g_source_set_name_by_id (id, "e");
   g_assert_cmpstr (g_source_get_name (source), ==, "e");
   g_assert_true (g_source_get_context (source) == ctx);
-  g_assert_true (g_source_remove_by_funcs_user_data (&funcs, data));
+  g_assert_true (g_source_remove_by_funcs_user_data (&global_funcs, data));
 
-  source = g_source_new (&funcs, sizeof (GSource));
-  g_source_set_funcs (source, &funcs);
+  source = g_source_new (&global_funcs, sizeof (GSource));
+  g_source_set_funcs (source, &global_funcs);
   g_source_set_callback (source, cb, data, NULL);
   id = g_source_attach (source, ctx);
   g_assert_cmpint (id, >, 0);
@@ -158,9 +158,59 @@ test_mainloop_basic (void)
   g_main_loop_unref (loop);
 }
 
-static gint a;
-static gint b;
-static gint c;
+static void
+test_ownerless_polling (gconstpointer test_data)
+{
+  gboolean attach_first = GPOINTER_TO_INT (test_data);
+  GMainContext *ctx = g_main_context_new_with_flags (
+    G_MAIN_CONTEXT_FLAGS_OWNERLESS_POLLING);
+
+  GPollFD fds[20];
+  gint fds_size;
+  gint max_priority;
+  GSource *source = NULL;
+
+  g_assert_true (ctx != g_main_context_default ());
+
+  g_main_context_push_thread_default (ctx);
+
+  /* Drain events */
+  for (;;)
+    {
+      gboolean ready_to_dispatch = g_main_context_prepare (ctx, &max_priority);
+      gint timeout, nready;
+      fds_size = g_main_context_query (ctx, max_priority, &timeout, fds, G_N_ELEMENTS (fds));
+      nready = g_poll (fds, fds_size, /*timeout=*/0);
+      if (!ready_to_dispatch && nready == 0)
+        {
+          if (timeout == -1)
+            break;
+          else
+            g_usleep (timeout * 1000);
+        }
+      ready_to_dispatch = g_main_context_check (ctx, max_priority, fds, fds_size);
+      if (ready_to_dispatch)
+        g_main_context_dispatch (ctx);
+    }
+
+  if (!attach_first)
+    g_main_context_pop_thread_default (ctx);
+
+  source = g_idle_source_new ();
+  g_source_attach (source, ctx);
+  g_source_unref (source);
+
+  if (attach_first)
+    g_main_context_pop_thread_default (ctx);
+
+  g_assert_cmpint (g_poll (fds, fds_size, 0), >, 0);
+
+  g_main_context_unref (ctx);
+}
+
+static gint global_a;
+static gint global_b;
+static gint global_c;
 
 static gboolean
 count_calls (gpointer data)
@@ -185,23 +235,23 @@ test_timeouts (void)
       return;
     }
 
-  a = b = c = 0;
+  global_a = global_b = global_c = 0;
 
   ctx = g_main_context_new ();
   loop = g_main_loop_new (ctx, FALSE);
 
   source = g_timeout_source_new (100);
-  g_source_set_callback (source, count_calls, &a, NULL);
+  g_source_set_callback (source, count_calls, &global_a, NULL);
   g_source_attach (source, ctx);
   g_source_unref (source);
 
   source = g_timeout_source_new (250);
-  g_source_set_callback (source, count_calls, &b, NULL);
+  g_source_set_callback (source, count_calls, &global_b, NULL);
   g_source_attach (source, ctx);
   g_source_unref (source);
 
   source = g_timeout_source_new (330);
-  g_source_set_callback (source, count_calls, &c, NULL);
+  g_source_set_callback (source, count_calls, &global_c, NULL);
   g_source_attach (source, ctx);
   g_source_unref (source);
 
@@ -215,13 +265,13 @@ test_timeouts (void)
   /* We may be delayed for an arbitrary amount of time - for example,
    * it's possible for all timeouts to fire exactly once.
    */
-  g_assert_cmpint (a, >, 0);
-  g_assert_cmpint (a, >=, b);
-  g_assert_cmpint (b, >=, c);
+  g_assert_cmpint (global_a, >, 0);
+  g_assert_cmpint (global_a, >=, global_b);
+  g_assert_cmpint (global_b, >=, global_c);
 
-  g_assert_cmpint (a, <=, 10);
-  g_assert_cmpint (b, <=, 4);
-  g_assert_cmpint (c, <=, 3);
+  g_assert_cmpint (global_a, <=, 10);
+  g_assert_cmpint (global_b, <=, 4);
+  g_assert_cmpint (global_c, <=, 3);
 
   g_main_loop_unref (loop);
   g_main_context_unref (ctx);
@@ -234,36 +284,36 @@ test_priorities (void)
   GSource *sourcea;
   GSource *sourceb;
 
-  a = b = c = 0;
+  global_a = global_b = global_c = 0;
 
   ctx = g_main_context_new ();
 
   sourcea = g_idle_source_new ();
-  g_source_set_callback (sourcea, count_calls, &a, NULL);
+  g_source_set_callback (sourcea, count_calls, &global_a, NULL);
   g_source_set_priority (sourcea, 1);
   g_source_attach (sourcea, ctx);
   g_source_unref (sourcea);
 
   sourceb = g_idle_source_new ();
-  g_source_set_callback (sourceb, count_calls, &b, NULL);
+  g_source_set_callback (sourceb, count_calls, &global_b, NULL);
   g_source_set_priority (sourceb, 0);
   g_source_attach (sourceb, ctx);
   g_source_unref (sourceb);
 
   g_assert_true (g_main_context_pending (ctx));
   g_assert_true (g_main_context_iteration (ctx, FALSE));
-  g_assert_cmpint (a, ==, 0);
-  g_assert_cmpint (b, ==, 1);
+  g_assert_cmpint (global_a, ==, 0);
+  g_assert_cmpint (global_b, ==, 1);
 
   g_assert_true (g_main_context_iteration (ctx, FALSE));
-  g_assert_cmpint (a, ==, 0);
-  g_assert_cmpint (b, ==, 2);
+  g_assert_cmpint (global_a, ==, 0);
+  g_assert_cmpint (global_b, ==, 2);
 
   g_source_destroy (sourceb);
 
   g_assert_true (g_main_context_iteration (ctx, FALSE));
-  g_assert_cmpint (a, ==, 1);
-  g_assert_cmpint (b, ==, 2);
+  g_assert_cmpint (global_a, ==, 1);
+  g_assert_cmpint (global_b, ==, 2);
 
   g_assert_true (g_main_context_pending (ctx));
   g_source_destroy (sourcea);
@@ -449,7 +499,7 @@ run_inner_loop (gpointer user_data)
   GMainLoop *inner;
   GSource *timeout;
 
-  a++;
+  global_a++;
 
   inner = g_main_loop_new (ctx, FALSE);
   timeout = counter_source_new (100);
@@ -473,7 +523,7 @@ test_child_sources (void)
   ctx = g_main_context_new ();
   loop = g_main_loop_new (ctx, FALSE);
 
-  a = b = c = 0;
+  global_a = global_b = global_c = 0;
 
   parent = counter_source_new (2000);
   g_source_set_callback (parent, run_inner_loop, ctx, NULL);
@@ -481,11 +531,11 @@ test_child_sources (void)
   g_source_attach (parent, ctx);
 
   child_b = counter_source_new (250);
-  g_source_set_callback (child_b, count_calls, &b, NULL);
+  g_source_set_callback (child_b, count_calls, &global_b, NULL);
   g_source_add_child_source (parent, child_b);
 
   child_c = counter_source_new (330);
-  g_source_set_callback (child_c, count_calls, &c, NULL);
+  g_source_set_callback (child_c, count_calls, &global_c, NULL);
   g_source_set_priority (child_c, G_PRIORITY_HIGH);
   g_source_add_child_source (parent, child_c);
 
@@ -528,9 +578,9 @@ test_child_sources (void)
    * 1110 - inner loop ends, a returns, outer loop exits
    */
 
-  g_assert_cmpint (a, ==, 6);
-  g_assert_cmpint (b, ==, 3);
-  g_assert_cmpint (c, ==, 3);
+  g_assert_cmpint (global_a, ==, 6);
+  g_assert_cmpint (global_b, ==, 3);
+  g_assert_cmpint (global_c, ==, 3);
 
   g_source_destroy (parent);
   g_source_unref (parent);
@@ -551,17 +601,17 @@ test_recursive_child_sources (void)
   ctx = g_main_context_new ();
   loop = g_main_loop_new (ctx, FALSE);
 
-  a = b = c = 0;
+  global_a = global_b = global_c = 0;
 
   parent = counter_source_new (500);
-  g_source_set_callback (parent, count_calls, &a, NULL);
+  g_source_set_callback (parent, count_calls, &global_a, NULL);
 
   child_b = counter_source_new (220);
-  g_source_set_callback (child_b, count_calls, &b, NULL);
+  g_source_set_callback (child_b, count_calls, &global_b, NULL);
   g_source_add_child_source (parent, child_b);
 
   child_c = counter_source_new (430);
-  g_source_set_callback (child_c, count_calls, &c, NULL);
+  g_source_set_callback (child_c, count_calls, &global_c, NULL);
   g_source_add_child_source (child_b, child_c);
 
   g_source_attach (parent, ctx);
@@ -585,9 +635,9 @@ test_recursive_child_sources (void)
    * 1940 b (b -> 2160, a -> 2440)
    */
 
-  g_assert_cmpint (a, ==, 9);
-  g_assert_cmpint (b, ==, 9);
-  g_assert_cmpint (c, ==, 4);
+  g_assert_cmpint (global_a, ==, 9);
+  g_assert_cmpint (global_b, ==, 9);
+  g_assert_cmpint (global_c, ==, 4);
 
   g_source_destroy (parent);
   g_source_unref (parent);
@@ -1637,10 +1687,11 @@ threadf (gpointer data)
   source = g_timeout_source_new (250);
   g_source_set_callback (source, timeout_cb, loop, NULL);
   g_source_attach (source, context);
-  g_source_unref (source);
  
   g_main_loop_run (loop);
 
+  g_source_destroy (source);
+  g_source_unref (source);
   g_main_loop_unref (loop);
 
   return NULL;
@@ -1803,14 +1854,17 @@ test_nfds (void)
 
   /* Now actually iterate the loop; the fd should be readable and
    * writable, so source1 and source3 should be triggered, but *not*
-   * source2, since it's lower priority than them. (Though on
-   * G_OS_WIN32, source3 doesn't get triggered, probably because of
-   * giowin32 weirdness...)
+   * source2, since it's lower priority than them.
    */
   g_main_context_iteration (ctx, FALSE);
 
-  g_assert_true (source1_ran);
+  /* FIXME:
+   * On win32, giowin32.c uses blocking threads for read/write on channels. They
+   * may not have yet triggered an event after one loop iteration. Hence, the
+   * following asserts are racy and disabled.
+   */
 #ifndef G_OS_WIN32
+  g_assert_true (source1_ran);
   g_assert_true (source3_ran);
 #endif
 
@@ -1828,6 +1882,191 @@ test_nfds (void)
   g_main_context_unref (ctx);
 }
 
+static gboolean
+nsources_cb (gpointer user_data)
+{
+  g_assert_not_reached ();
+  return FALSE;
+}
+
+static void
+shuffle_nsources (GSource **sources, int num)
+{
+  int i, a, b;
+  GSource *tmp;
+
+  for (i = 0; i < num * 10; i++)
+    {
+      a = g_random_int_range (0, num);
+      b = g_random_int_range (0, num);
+      tmp = sources[a];
+      sources[a] = sources[b];
+      sources[b] = tmp;
+    }
+}
+
+static void
+test_nsources_same_priority (void)
+{
+  GMainContext *context;
+  GSource **sources;
+  gint64 start, end;
+  gsize n_sources = 50000, i;
+
+  context = g_main_context_default ();
+  sources = g_new0 (GSource *, n_sources);
+
+  start = g_get_monotonic_time ();
+  for (i = 0; i < n_sources; i++)
+    {
+      sources[i] = g_idle_source_new ();
+      g_source_set_callback (sources[i], nsources_cb, NULL, NULL);
+      g_source_attach (sources[i], context);
+    }
+  end = g_get_monotonic_time ();
+  g_test_message ("Add same-priority sources: %" G_GINT64_FORMAT,
+                  (end - start) / 1000);
+
+  start = g_get_monotonic_time ();
+  for (i = 0; i < n_sources; i++)
+    g_assert_true (sources[i] == g_main_context_find_source_by_id (context, g_source_get_id (sources[i])));
+  end = g_get_monotonic_time ();
+  g_test_message ("Find each source: %" G_GINT64_FORMAT,
+                  (end - start) / 1000);
+
+  shuffle_nsources (sources, n_sources);
+
+  start = g_get_monotonic_time ();
+  for (i = 0; i < n_sources; i++)
+    {
+      g_source_destroy (sources[i]);
+      g_source_unref (sources[i]);
+    }
+  end = g_get_monotonic_time ();
+  g_test_message ("Remove in random order: %" G_GINT64_FORMAT,
+                  (end - start) / 1000);
+
+  /* Make sure they really did get removed */
+  g_main_context_iteration (context, FALSE);
+
+  g_free (sources);
+}
+
+static void
+test_nsources_different_priority (void)
+{
+  GMainContext *context;
+  GSource **sources;
+  gint64 start, end;
+  gsize n_sources = 50000, i;
+
+  context = g_main_context_default ();
+  sources = g_new0 (GSource *, n_sources);
+
+  start = g_get_monotonic_time ();
+  for (i = 0; i < n_sources; i++)
+    {
+      sources[i] = g_idle_source_new ();
+      g_source_set_callback (sources[i], nsources_cb, NULL, NULL);
+      g_source_set_priority (sources[i], i % 100);
+      g_source_attach (sources[i], context);
+    }
+  end = g_get_monotonic_time ();
+  g_test_message ("Add different-priority sources: %" G_GINT64_FORMAT,
+                  (end - start) / 1000);
+
+  start = g_get_monotonic_time ();
+  for (i = 0; i < n_sources; i++)
+    g_assert_true (sources[i] == g_main_context_find_source_by_id (context, g_source_get_id (sources[i])));
+  end = g_get_monotonic_time ();
+  g_test_message ("Find each source: %" G_GINT64_FORMAT,
+                  (end - start) / 1000);
+
+  shuffle_nsources (sources, n_sources);
+
+  start = g_get_monotonic_time ();
+  for (i = 0; i < n_sources; i++)
+    {
+      g_source_destroy (sources[i]);
+      g_source_unref (sources[i]);
+    }
+  end = g_get_monotonic_time ();
+  g_test_message ("Remove in random order: %" G_GINT64_FORMAT,
+                  (end - start) / 1000);
+
+  /* Make sure they really did get removed */
+  g_main_context_iteration (context, FALSE);
+
+  g_free (sources);
+}
+
+static void
+thread_pool_attach_func (gpointer data,
+                         gpointer user_data)
+{
+  GMainContext *context = user_data;
+  GSource *source = data;
+
+  g_source_attach (source, context);
+  g_source_unref (source);
+}
+
+static void
+thread_pool_destroy_func (gpointer data,
+                          gpointer user_data)
+{
+  GSource *source = data;
+
+  g_source_destroy (source);
+}
+
+static void
+test_nsources_threadpool (void)
+{
+  GMainContext *context;
+  GSource **sources;
+  GThreadPool *pool;
+  GError *error = NULL;
+  gint64 start, end;
+  gsize n_sources = 50000, i;
+
+  context = g_main_context_default ();
+  sources = g_new0 (GSource *, n_sources);
+
+  pool = g_thread_pool_new (thread_pool_attach_func, context,
+                            20, TRUE, NULL);
+  start = g_get_monotonic_time ();
+  for (i = 0; i < n_sources; i++)
+    {
+      sources[i] = g_idle_source_new ();
+      g_source_set_callback (sources[i], nsources_cb, NULL, NULL);
+      g_thread_pool_push (pool, sources[i], &error);
+      g_assert_no_error (error);
+    }
+  g_thread_pool_free (pool, FALSE, TRUE);
+  end = g_get_monotonic_time ();
+  g_test_message ("Add sources from threads: %" G_GINT64_FORMAT,
+                  (end - start) / 1000);
+
+  pool = g_thread_pool_new (thread_pool_destroy_func, context,
+                            20, TRUE, NULL);
+  start = g_get_monotonic_time ();
+  for (i = 0; i < n_sources; i++)
+    {
+      g_thread_pool_push (pool, sources[i], &error);
+      g_assert_no_error (error);
+    }
+  g_thread_pool_free (pool, FALSE, TRUE);
+  end = g_get_monotonic_time ();
+  g_test_message ("Remove sources from threads: %" G_GINT64_FORMAT,
+                  (end - start) / 1000);
+
+  /* Make sure they really did get removed */
+  g_main_context_iteration (context, FALSE);
+
+  g_free (sources);
+}
+
 static gboolean source_finalize_called = FALSE;
 static guint source_dispose_called = 0;
 static gboolean source_dispose_recycle = FALSE;
@@ -2108,6 +2347,9 @@ main (int argc, char *argv[])
   g_test_init (&argc, &argv, NULL);
 
   g_test_add_func ("/maincontext/basic", test_maincontext_basic);
+  g_test_add_func ("/maincontext/nsources_same_priority", test_nsources_same_priority);
+  g_test_add_func ("/maincontext/nsources_different_priority", test_nsources_different_priority);
+  g_test_add_func ("/maincontext/nsources_threadpool", test_nsources_threadpool);
   g_test_add_func ("/maincontext/source_finalization", test_maincontext_source_finalization);
   for (i = 0; i < 10; i++)
     {
@@ -2145,6 +2387,8 @@ main (int argc, char *argv[])
 #endif
   g_test_add_func ("/mainloop/nfds", test_nfds);
   g_test_add_func ("/mainloop/steal-fd", test_steal_fd);
+  g_test_add_data_func ("/mainloop/ownerless-polling/attach-first", GINT_TO_POINTER (TRUE), test_ownerless_polling);
+  g_test_add_data_func ("/mainloop/ownerless-polling/pop-first", GINT_TO_POINTER (FALSE), test_ownerless_polling);
 
   return g_test_run ();
 }
index 1654ab7..fd92685 100644 (file)
@@ -34,13 +34,14 @@ static gsize a = G_MAXSIZE / 10 + 10;
 static gsize b = 10;
 typedef char X[10];
 
-#define MEM_OVERFLOW_TEST(name, code) \
+#define MEM_OVERFLOW_TEST(name, code) MEM_OVERFLOW_TEST_FULL(name, code, g_free)
+#define MEM_OVERFLOW_TEST_FULL(name, code, free_func) \
 static void                           \
 mem_overflow_ ## name (void)          \
 {                                     \
   gpointer p;                         \
   code;                               \
-  g_free (p);                         \
+  free_func (p);                      \
   exit (0);                           \
 }
 
@@ -68,6 +69,12 @@ MEM_OVERFLOW_TEST (new0_b, p = g_new0 (X, b))
 MEM_OVERFLOW_TEST (renew_a, p = g_malloc (1); p = g_renew (X, p, a))
 MEM_OVERFLOW_TEST (renew_b, p = g_malloc (1); p = g_renew (X, p, b))
 
+MEM_OVERFLOW_TEST_FULL (aligned_alloc_a, p = g_aligned_alloc (sizeof(X), a, 16), g_aligned_free)
+MEM_OVERFLOW_TEST_FULL (aligned_alloc_b, p = g_aligned_alloc (sizeof(X), b, 16), g_aligned_free)
+
+MEM_OVERFLOW_TEST_FULL (aligned_alloc0_a, p = g_aligned_alloc0 (sizeof(X), a, 16), g_aligned_free)
+MEM_OVERFLOW_TEST_FULL (aligned_alloc0_b, p = g_aligned_alloc0 (sizeof(X), b, 16), g_aligned_free)
+
 static void
 mem_overflow_malloc_0 (void)
 {
@@ -171,6 +178,12 @@ mem_overflow (void)
 
   CHECK_SUBPROCESS_PASS (malloc_0);
   CHECK_SUBPROCESS_PASS (realloc_0);
+
+  CHECK_SUBPROCESS_FAIL (aligned_alloc_a);
+  CHECK_SUBPROCESS_PASS (aligned_alloc_b);
+
+  CHECK_SUBPROCESS_FAIL (aligned_alloc0_a);
+  CHECK_SUBPROCESS_PASS (aligned_alloc0_b);
 }
 
 #ifdef __GNUC__
@@ -231,6 +244,10 @@ main (int   argc,
   g_test_add_func ("/mem/overflow/subprocess/renew_b", mem_overflow_renew_b);
   g_test_add_func ("/mem/overflow/subprocess/malloc_0", mem_overflow_malloc_0);
   g_test_add_func ("/mem/overflow/subprocess/realloc_0", mem_overflow_realloc_0);
+  g_test_add_func ("/mem/overflow/subprocess/aligned_alloc_a", mem_overflow_aligned_alloc_a);
+  g_test_add_func ("/mem/overflow/subprocess/aligned_alloc_b", mem_overflow_aligned_alloc_b);
+  g_test_add_func ("/mem/overflow/subprocess/aligned_alloc0_a", mem_overflow_aligned_alloc0_a);
+  g_test_add_func ("/mem/overflow/subprocess/aligned_alloc0_b", mem_overflow_aligned_alloc0_b);
 
 #ifdef __GNUC__
   g_test_add_func ("/mem/empty-alloc", empty_alloc);
diff --git a/glib/tests/memchunk.c b/glib/tests/memchunk.c
new file mode 100644 (file)
index 0000000..8c13787
--- /dev/null
@@ -0,0 +1,64 @@
+/* GLIB - Library of useful routines for C programming
+ * Copyright (C) 1995-1997  Peter Mattis, Spencer Kimball and Josh MacDonald
+ *
+ * This library 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 library 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/>.
+ */
+
+/*
+ * Modified by the GLib Team and others 1997-2000.  See the AUTHORS
+ * file for a list of people on the GLib Team.  See the ChangeLog
+ * files for a list of changes.  These files are distributed with
+ * GLib at ftp://ftp.gtk.org/pub/gtk/.
+ */
+
+/* We are testing some deprecated APIs here */
+#ifndef GLIB_DISABLE_DEPRECATION_WARNINGS
+#define GLIB_DISABLE_DEPRECATION_WARNINGS
+#endif
+
+#include <glib.h>
+
+static void
+test_basic (void)
+{
+  G_GNUC_BEGIN_IGNORE_DEPRECATIONS
+
+  GMemChunk *mem_chunk = g_mem_chunk_new ("test mem chunk", 50, 100, G_ALLOC_AND_FREE);
+  gchar *mem[10000];
+  guint i;
+  for (i = 0; i < 10000; i++)
+    {
+      guint j;
+      mem[i] = g_chunk_new (gchar, mem_chunk);
+      for (j = 0; j < 50; j++)
+       mem[i][j] = i * j;
+    }
+  for (i = 0; i < 10000; i++)
+    g_mem_chunk_free (mem_chunk, mem[i]);
+
+  g_mem_chunk_destroy (mem_chunk);
+
+  G_GNUC_END_IGNORE_DEPRECATIONS
+}
+
+int
+main (int   argc,
+      char *argv[])
+{
+  g_test_init (&argc, &argv, NULL);
+
+  g_test_add_func ("/memchunk/basic", test_basic);
+
+  return g_test_run ();
+}
index c77ccdd..301158e 100644 (file)
@@ -12,15 +12,22 @@ glib_tests = {
   'charset' : {},
   'checksum' : {},
   'collate' : {},
+  'completion' : {},
   'cond' : {},
   'convert' : {},
   'cxx' : {
     'source' : ['cxx.cpp'],
   },
   'dataset' : {},
-  'date' : {},
+  'date' : {
+    # FIXME: https://gitlab.gnome.org/GNOME/glib/-/issues/1392
+    'should_fail' : host_system == 'darwin',
+  },
   'dir' : {},
-  'environment' : {},
+  'environment' : {
+    # FIXME: https://gitlab.gnome.org/GNOME/glib/-/issues/1392
+    'should_fail' : host_system == 'darwin',
+  },
   'error' : {},
   'fileutils' : {},
   'gdatetime' : {
@@ -50,6 +57,7 @@ glib_tests = {
   'markup-collect' : {},
   'markup-escape' : {},
   'markup-subparser' : {},
+  'memchunk' : {},
   'mem-overflow' : {
     'link_args' : cc.get_id() == 'gcc' and cc.version().version_compare('> 6')
       ? ['-Wno-alloc-size-larger-than'] : [],
@@ -81,6 +89,7 @@ glib_tests = {
     'dependencies' : [pcre],
     'c_args' : use_pcre_static_flag ? ['-DPCRE_STATIC'] : [],
   },
+  'relation' : {},
   'rwlock' : {},
   'scannerapi' : {},
   'search-utils' : {},
@@ -89,6 +98,10 @@ glib_tests = {
   },
   'shell' : {},
   'slice' : {},
+  'slice-color' : {
+    'extra_sources' : ['memchunks.c'],
+  },
+  'slice-concurrent' : {},
   'slist' : {},
   'sort' : {},
   'spawn-multithreaded' : {},
@@ -104,6 +117,7 @@ glib_tests = {
   'timeout' : {},
   'timer' : {},
   'tree' : {},
+  'types' : {},
   'utf8-performance' : {},
   'utf8-pointer' : {},
   'utf8-validate' : {},
@@ -183,13 +197,16 @@ endif
 
 if installed_tests_enabled
   install_data(
-    'keyfiletest.ini',
-    'pages.ini',
-    'keyfile.c',
-    'empty',
     '4096-random-bytes',
+    'casefold.txt',
+    'casemap.txt',
     'echo-script',
     'echo-script.bat',
+    'empty',
+    'iochannel-test-infile',
+    'keyfile.c',
+    'keyfiletest.ini',
+    'pages.ini',
     install_dir : installed_tests_execdir,
   )
   install_subdir('bookmarks', install_dir : installed_tests_execdir)
@@ -237,7 +254,12 @@ foreach test_name, extra_args : glib_tests
 
   suite = ['glib'] + extra_args.get('suite', [])
   timeout = suite.contains('slow') ? test_timeout_slow : test_timeout
-  test(test_name, exe, env : test_env, timeout : timeout, suite : suite)
+  test(test_name, exe,
+    env : test_env,
+    timeout : timeout,
+    suite : suite,
+    should_fail : extra_args.get('should_fail', false),
+  )
 endforeach
 
 executable('spawn-path-search-helper', 'spawn-path-search-helper.c',
@@ -262,6 +284,16 @@ executable('test-spawn-echo', 'test-spawn-echo.c',
   install: installed_tests_enabled,
 )
 
+if host_machine.system() == 'windows'
+  # test-spawn-sleep helper binary required by the spawn tests above
+  executable('test-spawn-sleep', 'test-spawn-sleep.c',
+    c_args : test_cargs,
+    dependencies : test_deps,
+    install_dir: installed_tests_execdir,
+    install: installed_tests_enabled,
+  )
+endif
+
 executable('testing-helper', 'testing-helper.c',
   c_args : test_cargs,
   dependencies : test_deps,
index 22e8023..e75821c 100644 (file)
@@ -31,9 +31,6 @@
 
 #include "glib.h"
 
-#define C2P(c)          ((gpointer) ((long) (c)))
-#define P2C(p)          ((gchar) ((long) (p)))
-
 typedef struct {
   GString *s;
   gint count;
@@ -45,7 +42,7 @@ node_build_string (GNode    *node,
 {
   CallbackData *d = data;
 
-  g_string_append_c (d->s, P2C (node->data));
+  g_string_append_c (d->s, GPOINTER_TO_INT (node->data));
 
   d->count--;
 
@@ -171,22 +168,22 @@ traversal_test (void)
   gsize i;
   CallbackData data;
 
-  root = g_node_new (C2P ('A'));
-  node_B = g_node_new (C2P ('B'));
+  root = g_node_new (GINT_TO_POINTER ('A'));
+  node_B = g_node_new (GINT_TO_POINTER ('B'));
   g_node_append (root, node_B);
-  g_node_append_data (node_B, C2P ('E'));
-  g_node_prepend_data (node_B, C2P ('C'));
-  node_D = g_node_new (C2P ('D'));
+  g_node_append_data (node_B, GINT_TO_POINTER ('E'));
+  g_node_prepend_data (node_B, GINT_TO_POINTER ('C'));
+  node_D = g_node_new (GINT_TO_POINTER ('D'));
   g_node_insert (node_B, 1, node_D);
-  node_F = g_node_new (C2P ('F'));
+  node_F = g_node_new (GINT_TO_POINTER ('F'));
   g_node_append (root, node_F);
-  node_G = g_node_new (C2P ('G'));
+  node_G = g_node_new (GINT_TO_POINTER ('G'));
   g_node_append (node_F, node_G);
-  node_J = g_node_new (C2P ('J'));
+  node_J = g_node_new (GINT_TO_POINTER ('J'));
   g_node_prepend (node_G, node_J);
-  g_node_insert (node_G, 42, g_node_new (C2P ('K')));
-  g_node_insert_data (node_G, 0, C2P ('H'));
-  g_node_insert (node_G, 1, g_node_new (C2P ('I')));
+  g_node_insert (node_G, 42, g_node_new (GINT_TO_POINTER ('K')));
+  g_node_insert_data (node_G, 0, GINT_TO_POINTER ('H'));
+  g_node_insert (node_G, 1, g_node_new (GINT_TO_POINTER ('I')));
 
   /* we have built:                    A
    *                                 /   \
@@ -227,14 +224,24 @@ traversal_test (void)
   g_node_traverse (root, G_LEVEL_ORDER, G_TRAVERSE_ALL, -1, node_build_string, &data);
   g_assert_cmpstr (data.s->str, ==, "ABFEDCGKJIH");
   
-  g_node_append (node_D, g_node_new (C2P ('L')));
-  g_node_insert (node_D, -1, g_node_new (C2P ('M')));
+  g_node_append (node_D, g_node_new (GINT_TO_POINTER ('L')));
+  g_node_insert (node_D, -1, g_node_new (GINT_TO_POINTER ('M')));
 
   g_string_set_size (data.s, 0);
   data.count = -1;
   g_node_traverse (root, G_LEVEL_ORDER, G_TRAVERSE_ALL, -1, node_build_string, &data);
   g_assert_cmpstr (data.s->str, ==, "ABFEDCGLMKJIH");
 
+  g_string_set_size (data.s, 0);
+  data.count = -1;
+  g_node_traverse (root, G_PRE_ORDER, G_TRAVERSE_LEAFS, -1, node_build_string, &data);
+  g_assert_cmpstr (data.s->str, ==, "ELMCKJIH");
+
+  g_string_set_size (data.s, 0);
+  data.count = -1;
+  g_node_traverse (root, G_PRE_ORDER, G_TRAVERSE_NON_LEAFS, -1, node_build_string, &data);
+  g_assert_cmpstr (data.s->str, ==, "ABDFG");
+
   g_node_destroy (root);
   g_string_free (data.s, TRUE);
 }
@@ -252,31 +259,31 @@ construct_test (void)
   GNode *node_H;
   guint i;
 
-  root = g_node_new (C2P ('A'));
+  root = g_node_new (GINT_TO_POINTER ('A'));
   g_assert_cmpint (g_node_depth (root), ==, 1);
   g_assert_cmpint (g_node_max_height (root), ==, 1);
 
-  node_B = g_node_new (C2P ('B'));
+  node_B = g_node_new (GINT_TO_POINTER ('B'));
   g_node_append (root, node_B);
   g_assert (root->children == node_B);
 
-  g_node_append_data (node_B, C2P ('E'));
-  g_node_prepend_data (node_B, C2P ('C'));
-  node_D = g_node_new (C2P ('D'));
+  g_node_append_data (node_B, GINT_TO_POINTER ('E'));
+  g_node_prepend_data (node_B, GINT_TO_POINTER ('C'));
+  node_D = g_node_new (GINT_TO_POINTER ('D'));
   g_node_insert (node_B, 1, node_D);
 
-  node_F = g_node_new (C2P ('F'));
+  node_F = g_node_new (GINT_TO_POINTER ('F'));
   g_node_append (root, node_F);
   g_assert (root->children->next == node_F);
 
-  node_G = g_node_new (C2P ('G'));
+  node_G = g_node_new (GINT_TO_POINTER ('G'));
   g_node_append (node_F, node_G);
-  node_J = g_node_new (C2P ('J'));
+  node_J = g_node_new (GINT_TO_POINTER ('J'));
   g_node_insert_after (node_G, NULL, node_J);
-  g_node_insert (node_G, 42, g_node_new (C2P ('K')));
-  node_H = g_node_new (C2P ('H'));
+  g_node_insert (node_G, 42, g_node_new (GINT_TO_POINTER ('K')));
+  node_H = g_node_new (GINT_TO_POINTER ('H'));
   g_node_insert_after (node_G, NULL, node_H);
-  g_node_insert (node_G, 1, g_node_new (C2P ('I')));
+  g_node_insert (node_G, 1, g_node_new (GINT_TO_POINTER ('I')));
 
   /* we have built:                    A
    *                                 /   \
@@ -294,16 +301,16 @@ construct_test (void)
   g_assert_cmpint (g_node_n_nodes (root, G_TRAVERSE_ALL), ==, 11);
   g_assert_cmpint (g_node_max_height (node_F), ==, 3);
   g_assert_cmpint (g_node_n_children (node_G), ==, 4);
-  g_assert (g_node_find_child (root, G_TRAVERSE_ALL, C2P ('F')) == node_F);
-  g_assert (g_node_find_child (node_G, G_TRAVERSE_LEAFS, C2P ('H')) == node_H);
-  g_assert (g_node_find_child (root, G_TRAVERSE_ALL, C2P ('H')) == NULL);
-  g_assert (g_node_find (root, G_LEVEL_ORDER, G_TRAVERSE_NON_LEAFS, C2P ('I')) == NULL);
-  g_assert (g_node_find (root, G_IN_ORDER, G_TRAVERSE_LEAFS, C2P ('J')) == node_J);
+  g_assert (g_node_find_child (root, G_TRAVERSE_ALL, GINT_TO_POINTER ('F')) == node_F);
+  g_assert (g_node_find_child (node_G, G_TRAVERSE_LEAFS, GINT_TO_POINTER ('H')) == node_H);
+  g_assert (g_node_find_child (root, G_TRAVERSE_ALL, GINT_TO_POINTER ('H')) == NULL);
+  g_assert (g_node_find (root, G_LEVEL_ORDER, G_TRAVERSE_NON_LEAFS, GINT_TO_POINTER ('I')) == NULL);
+  g_assert (g_node_find (root, G_IN_ORDER, G_TRAVERSE_LEAFS, GINT_TO_POINTER ('J')) == node_J);
 
   for (i = 0; i < g_node_n_children (node_B); i++)
     {
       node = g_node_nth_child (node_B, i);
-      g_assert_cmpint (P2C (node->data), ==, ('C' + i));
+      g_assert_cmpint (GPOINTER_TO_INT (node->data), ==, ('C' + i));
     }
 
   for (i = 0; i < g_node_n_children (node_G); i++)
@@ -345,14 +352,14 @@ misc_test (void)
   GNode *node_E;
   CallbackData data;
 
-  root = g_node_new (C2P ('A'));
-  node_B = g_node_new (C2P ('B'));
+  root = g_node_new (GINT_TO_POINTER ('A'));
+  node_B = g_node_new (GINT_TO_POINTER ('B'));
   g_node_append (root, node_B);
-  node_D = g_node_new (C2P ('D'));
+  node_D = g_node_new (GINT_TO_POINTER ('D'));
   g_node_append (root, node_D);
-  node_C = g_node_new (C2P ('C'));
+  node_C = g_node_new (GINT_TO_POINTER ('C'));
   g_node_insert_after (root, node_B, node_C);
-  node_E = g_node_new (C2P ('E'));
+  node_E = g_node_new (GINT_TO_POINTER ('E'));
   g_node_append (node_C, node_E);
 
   g_assert (g_node_get_root (node_E) == root);
@@ -362,10 +369,10 @@ misc_test (void)
   g_assert (g_node_first_sibling (node_D) == node_B);
   g_assert (g_node_first_sibling (node_E) == node_E);
   g_assert (g_node_first_sibling (root) == root);
-  g_assert_cmpint (g_node_child_index (root, C2P ('B')), ==, 0);
-  g_assert_cmpint (g_node_child_index (root, C2P ('C')), ==, 1);
-  g_assert_cmpint (g_node_child_index (root, C2P ('D')), ==, 2);
-  g_assert_cmpint (g_node_child_index (root, C2P ('E')), ==, -1);
+  g_assert_cmpint (g_node_child_index (root, GINT_TO_POINTER ('B')), ==, 0);
+  g_assert_cmpint (g_node_child_index (root, GINT_TO_POINTER ('C')), ==, 1);
+  g_assert_cmpint (g_node_child_index (root, GINT_TO_POINTER ('D')), ==, 2);
+  g_assert_cmpint (g_node_child_index (root, GINT_TO_POINTER ('E')), ==, -1);
 
   data.s = g_string_new ("");
   data.count = -1;
@@ -418,21 +425,21 @@ unlink_test (void)
    *
    */
 
-  root = g_node_new (C2P ('a'));
-  node = bnode = g_node_append_data (root, C2P ('b'));
-  g_node_append_data (node, C2P ('e'));
-  g_node_append_data (node, C2P ('f'));
-  g_node_append_data (node, C2P ('g'));
+  root = g_node_new (GINT_TO_POINTER ('a'));
+  node = bnode = g_node_append_data (root, GINT_TO_POINTER ('b'));
+  g_node_append_data (node, GINT_TO_POINTER ('e'));
+  g_node_append_data (node, GINT_TO_POINTER ('f'));
+  g_node_append_data (node, GINT_TO_POINTER ('g'));
 
-  node = cnode = g_node_append_data (root, C2P ('c'));
-  g_node_append_data (node, C2P ('h'));
-  g_node_append_data (node, C2P ('i'));
-  g_node_append_data (node, C2P ('j'));
+  node = cnode = g_node_append_data (root, GINT_TO_POINTER ('c'));
+  g_node_append_data (node, GINT_TO_POINTER ('h'));
+  g_node_append_data (node, GINT_TO_POINTER ('i'));
+  g_node_append_data (node, GINT_TO_POINTER ('j'));
 
-  node = g_node_append_data (root, C2P ('d'));
-  g_node_append_data (node, C2P ('k'));
-  g_node_append_data (node, C2P ('l'));
-  g_node_append_data (node, C2P ('m'));
+  node = g_node_append_data (root, GINT_TO_POINTER ('d'));
+  g_node_append_data (node, GINT_TO_POINTER ('k'));
+  g_node_append_data (node, GINT_TO_POINTER ('l'));
+  g_node_append_data (node, GINT_TO_POINTER ('m'));
 
   g_node_unlink (cnode);
 
@@ -473,10 +480,10 @@ copy_test (void)
   GNode *copy;
   gchar *expected;
 
-  root = g_node_new (C2P ('a'));
-  g_node_append_data (root, C2P ('b'));
-  g_node_append_data (root, C2P ('c'));
-  g_node_append_data (root, C2P ('d'));
+  root = g_node_new (GINT_TO_POINTER ('a'));
+  g_node_append_data (root, GINT_TO_POINTER ('b'));
+  g_node_append_data (root, GINT_TO_POINTER ('c'));
+  g_node_append_data (root, GINT_TO_POINTER ('d'));
 
   expected = "abcd";
   g_node_traverse (root, G_LEVEL_ORDER, G_TRAVERSE_ALL, -1, check_order, &expected);
index 37ac44a..a18e686 100644 (file)
@@ -39,7 +39,6 @@ test_platform_argv0 (void)
   const gchar * const expected_prgnames[] =
     {
       "option-argv0",
-      "lt-option-argv0",
 #ifdef G_OS_WIN32
       "option-argv0.exe",
 #endif
index d4ed3a9..0fdb67c 100644 (file)
 #include <locale.h>
 #include <math.h>
 
-
-static GOptionEntry main_entries[] = {
+static GOptionEntry global_main_entries[] = {
   { "main-switch", 0, 0,
     G_OPTION_ARG_NONE, NULL,
     "A switch that is in the main group", NULL },
   G_OPTION_ENTRY_NULL
 };
 
-static GOptionEntry group_entries[] = {
+static GOptionEntry global_group_entries[] = {
   { "test-switch", 0, 0,
     G_OPTION_ARG_NONE, NULL,
     "A switch that is in the test group", NULL },
@@ -54,14 +53,14 @@ make_options (int test_number)
   options = g_option_context_new (NULL);
 
   if (have_main_entries)
-    g_option_context_add_main_entries (options, main_entries, NULL);
+    g_option_context_add_main_entries (options, global_main_entries, NULL);
   if (have_test_entries)
     {
       group = g_option_group_new ("test", "Test Options",
                                   "Show all test options",
                                   NULL, NULL);
       g_option_context_add_group (options, group);
-      g_option_group_add_entries (group, group_entries);
+      g_option_group_add_entries (group, global_group_entries);
     }
 
   return options;
index 5e89b35..6ecf1a8 100644 (file)
@@ -146,6 +146,19 @@ test_private3 (void)
     thread = (HANDLE) _beginthreadex (NULL, 0, private3_func, NULL, 0, &ignore);
     WaitForSingleObject (thread, INFINITE);
     CloseHandle (thread);
+
+    /* FIXME: with static compilation on Windows this test will fail because
+     * it is mixing up glib threads with Microsoft native thread API. See
+     * comment in gthread-win32.c for g_system_thread_exit() implementation.
+     * Fix is not straightforward, possible solution could be to use FLS
+     * functions (instead of TLS) as proposed in
+     * https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1655
+     */
+    if (!private3_freed)
+      {
+        g_test_skip ("FIXME: GPrivate with native win32 thread");
+        return;
+      }
   }
 #else
   {
index 27ebd99..b03aaf9 100644 (file)
@@ -100,7 +100,10 @@ test_message_cb1 (GIOChannel  * channel,
       g_test_log_buffer_push (user_data, read_bytes, buf);
     }
 
-  g_assert_cmpuint (status, ==, G_IO_STATUS_AGAIN);
+  if (status == G_IO_STATUS_EOF)
+    return FALSE;
+  else
+    g_assert_cmpuint (status, ==, G_IO_STATUS_AGAIN);
 
   return TRUE;
 }
@@ -133,7 +136,6 @@ test_message (void)
   GMainLoop     * loop;
   GError        * error = NULL;
   gulong          child_source;
-  gulong          io_source;
   GPid            pid = 0;
   int             pipes[2];
   int             passed = 0;
@@ -159,6 +161,7 @@ test_message (void)
       g_error ("error spawning the test: %s", error->message);
     }
 
+  close (pipes[1]);
   tlb = g_test_log_buffer_new ();
   loop = g_main_loop_new (NULL, FALSE);
 
@@ -181,7 +184,7 @@ test_message (void)
   g_assert (g_io_channel_get_encoding (channel) == NULL);
   g_assert (!g_io_channel_get_buffered (channel));
 
-  io_source = g_io_add_watch (channel, G_IO_IN, test_message_cb1, tlb);
+  g_io_add_watch (channel, G_IO_IN, test_message_cb1, tlb);
   child_source = g_child_watch_add (pid, test_message_cb2, loop);
 
   g_main_loop_run (loop);
@@ -191,7 +194,6 @@ test_message (void)
   g_test_expect_message ("GLib", G_LOG_LEVEL_CRITICAL, "Source ID*");
   g_assert (!g_source_remove (child_source));
   g_test_assert_expected_messages ();
-  g_assert (g_source_remove (io_source));
   g_io_channel_unref (channel);
 
   for (msg = g_test_log_buffer_pop (tlb);
@@ -264,7 +266,6 @@ test_error (void)
       GMainLoop     * loop;
       GError        * error = NULL;
       gulong          child_source;
-      gulong          io_source;
       GPid            pid = 0;
       int             pipes[2];
 
@@ -286,6 +287,7 @@ test_error (void)
           g_error ("error spawning the test: %s", error->message);
         }
 
+      close (pipes[1]);
       tlb = g_test_log_buffer_new ();
       loop = g_main_loop_new (NULL, FALSE);
 
@@ -299,7 +301,7 @@ test_error (void)
       g_io_channel_set_buffered (channel, FALSE);
       g_io_channel_set_flags (channel, G_IO_FLAG_NONBLOCK, NULL);
 
-      io_source = g_io_add_watch (channel, G_IO_IN, test_message_cb1, tlb);
+      g_io_add_watch (channel, G_IO_IN, test_message_cb1, tlb);
       child_source = g_child_watch_add (pid, test_message_cb2, loop);
 
       g_main_loop_run (loop);
@@ -309,7 +311,6 @@ test_error (void)
       g_test_expect_message ("GLib", G_LOG_LEVEL_CRITICAL, "Source ID*");
       g_assert (!g_source_remove (child_source));
       g_test_assert_expected_messages ();
-      g_assert (g_source_remove (io_source));
       g_io_channel_unref (channel);
 
       for (msg = g_test_log_buffer_pop (tlb);
similarity index 62%
rename from tests/relation-test.c
rename to glib/tests/relation.c
index 67fcb49..f96890b 100644 (file)
  * Modified by the GLib Team and others 1997-2000.  See the AUTHORS
  * file for a list of people on the GLib Team.  See the ChangeLog
  * files for a list of changes.  These files are distributed with
- * GLib at ftp://ftp.gtk.org/pub/gtk/. 
+ * GLib at ftp://ftp.gtk.org/pub/gtk/.
  */
 
-#undef G_DISABLE_ASSERT
-#undef G_LOG_DOMAIN
+#define GLIB_DISABLE_DEPRECATION_WARNINGS
 
-#include <stdio.h>
-#include <string.h>
-#include "glib.h"
+#include <glib.h>
 
 int array[10000];
 gboolean failed = FALSE;
@@ -50,22 +47,18 @@ else \
 #define GLIB_TEST_STRING_5 "el do"
 
 typedef struct {
-       guint age;
-       gchar name[40];
+  guint age;
+  gchar name[40];
 } GlibTestInfo;
 
-
-
-int
-main (int   argc,
-      char *argv[])
+static void
+test_relation (void)
 {
   gint i;
   GRelation *relation;
   GTuples *tuples;
   gint data [1024];
 
-
   relation = g_relation_new (2);
 
   g_relation_index (relation, 0, g_int_hash, g_int_equal);
@@ -82,55 +75,54 @@ main (int   argc,
 
   for (i = 2; i < 1022; i += 1)
     {
-      g_assert (! g_relation_exists (relation, data + i, data + i));
-      g_assert (! g_relation_exists (relation, data + i, data + i + 2));
-      g_assert (! g_relation_exists (relation, data + i, data + i - 2));
+      g_assert_false (g_relation_exists (relation, data + i, data + i));
+      g_assert_false (g_relation_exists (relation, data + i, data + i + 2));
+      g_assert_false (g_relation_exists (relation, data + i, data + i - 2));
     }
 
   for (i = 1; i < 1023; i += 1)
     {
-      g_assert (g_relation_exists (relation, data + i, data + i + 1));
-      g_assert (g_relation_exists (relation, data + i, data + i - 1));
+      g_assert_true (g_relation_exists (relation, data + i, data + i + 1));
+      g_assert_true (g_relation_exists (relation, data + i, data + i - 1));
     }
 
   for (i = 2; i < 1022; i += 1)
     {
-      g_assert (g_relation_count (relation, data + i, 0) == 2);
-      g_assert (g_relation_count (relation, data + i, 1) == 2);
+      g_assert_cmpint (g_relation_count (relation, data + i, 0), ==, 2);
+      g_assert_cmpint (g_relation_count (relation, data + i, 1), ==, 2);
     }
 
-  g_assert (g_relation_count (relation, data, 0) == 0);
+  g_assert_cmpint (g_relation_count (relation, data, 0), ==, 0);
+
+  g_assert_cmpint (g_relation_count (relation, data + 42, 0), ==, 2);
+  g_assert_cmpint (g_relation_count (relation, data + 43, 1), ==, 2);
+  g_assert_cmpint (g_relation_count (relation, data + 41, 1), ==, 2);
 
-  g_assert (g_relation_count (relation, data + 42, 0) == 2);
-  g_assert (g_relation_count (relation, data + 43, 1) == 2);
-  g_assert (g_relation_count (relation, data + 41, 1) == 2);
   g_relation_delete (relation, data + 42, 0);
-  g_assert (g_relation_count (relation, data + 42, 0) == 0);
-  g_assert (g_relation_count (relation, data + 43, 1) == 1);
-  g_assert (g_relation_count (relation, data + 41, 1) == 1);
 
-  tuples = g_relation_select (relation, data + 200, 0);
+  g_assert_cmpint (g_relation_count (relation, data + 42, 0), ==, 0);
+  g_assert_cmpint (g_relation_count (relation, data + 43, 1), ==, 1);
+  g_assert_cmpint (g_relation_count (relation, data + 41, 1), ==, 1);
 
-  g_assert (tuples->len == 2);
+  tuples = g_relation_select (relation, data + 200, 0);
 
-#if 0
-  for (i = 0; i < tuples->len; i += 1)
-    {
-      printf ("%d %d\n",
-             *(gint*) g_tuples_index (tuples, i, 0),
-             *(gint*) g_tuples_index (tuples, i, 1));
-    }
-#endif
+  g_assert_cmpint (tuples->len, ==, 2);
 
-  g_assert (g_relation_exists (relation, data + 300, data + 301));
+  g_assert_true (g_relation_exists (relation, data + 300, data + 301));
   g_relation_delete (relation, data + 300, 0);
-  g_assert (!g_relation_exists (relation, data + 300, data + 301));
+  g_assert_false (g_relation_exists (relation, data + 300, data + 301));
 
   g_tuples_destroy (tuples);
-
   g_relation_destroy (relation);
+}
+
+int
+main (int   argc,
+      char *argv[])
+{
+  g_test_init (&argc, &argv, NULL);
 
-  relation = NULL;
+  g_test_add_func ("/glib/relation", test_relation);
 
-  return 0;
+  return g_test_run ();
 }
index 7478a29..cbe5bed 100644 (file)
@@ -76,7 +76,7 @@ test_search (gconstpointer d)
   for (i = 0; tests[i].string != NULL; i++)
     {
       gboolean match;
-      gboolean ok;
+      gboolean ok = FALSE;
       gboolean skipped;
 
       if (setlocale (LC_ALL, tests[i].locale))
index c2eba2c..842bc54 100644 (file)
@@ -15,7 +15,8 @@ struct _GSequence
 
 struct _GSequenceNode
 {
-  guint                 n_nodes;
+  gint                  n_nodes;
+  guint32               priority;
   GSequenceNode *       parent;
   GSequenceNode *       left;
   GSequenceNode *       right;
@@ -25,15 +26,9 @@ struct _GSequenceNode
 static guint
 get_priority (GSequenceNode *node)
 {
-  guint key = GPOINTER_TO_UINT (node);
-
-  key = (key << 15) - key - 1;
-  key = key ^ (key >> 12);
-  key = key + (key << 2);
-  key = key ^ (key >> 4);
-  key = key + (key << 3) + (key << 11);
-  key = key ^ (key >> 16);
+  guint key = node->priority;
 
+  /* We rely on 0 being less than all other priorities */
   return key? key : 1;
 }
 
@@ -549,8 +544,6 @@ run_random_tests (gconstpointer d)
           break;
         case GET_ITER_AT_POS:
           {
-            int i;
-
             g_assert (g_queue_get_length (seq->queue) == (guint) g_sequence_get_length (seq->sequence));
 
             for (i = 0; i < 10; ++i)
@@ -665,7 +658,6 @@ run_random_tests (gconstpointer d)
           break;
         case INSERT_SORTED:
           {
-            int i;
             dump_info (seq);
 
             g_sequence_sort (seq->sequence, compare_items, NULL);
@@ -688,7 +680,6 @@ run_random_tests (gconstpointer d)
           break;
         case INSERT_SORTED_ITER:
           {
-            int i;
             dump_info (seq);
 
             g_sequence_sort (seq->sequence, compare_items, NULL);
@@ -715,8 +706,6 @@ run_random_tests (gconstpointer d)
           break;
         case SORT_CHANGED:
           {
-            int i;
-
             g_sequence_sort (seq->sequence, compare_items, NULL);
             g_queue_sort (seq->queue, compare_iters, NULL);
 
@@ -742,8 +731,6 @@ run_random_tests (gconstpointer d)
           break;
         case SORT_CHANGED_ITER:
           {
-            int i;
-
             g_sequence_sort (seq->sequence, compare_items, NULL);
             g_queue_sort (seq->queue, compare_iters, NULL);
 
@@ -770,8 +757,6 @@ run_random_tests (gconstpointer d)
           break;
         case REMOVE:
           {
-            int i;
-
             for (i = 0; i < N_TIMES; ++i)
               {
                 GList *link;
@@ -963,7 +948,6 @@ run_random_tests (gconstpointer d)
             if (!g_sequence_iter_is_end (iter))
               {
                 Item *item;
-                int i;
 
                 check_integrity (seq);
 
diff --git a/glib/tests/slice-color.c b/glib/tests/slice-color.c
new file mode 100644 (file)
index 0000000..733bfcc
--- /dev/null
@@ -0,0 +1,133 @@
+/* GLIB sliced memory - fast threaded memory chunk allocator
+ * Copyright (C) 2005 Tim Janik
+ *
+ * This library 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 library 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>
+
+#define ALIGN(size, base) \
+  ((base) * (gsize) (((size) + (base) - 1) / (base)))
+
+static void
+fill_memory (guint **mem,
+             guint   n,
+             guint   val)
+{
+  guint j;
+
+  for (j = 0; j < n; j++)
+    mem[j][0] = val;
+}
+
+static guint64
+access_memory3 (guint  **mema,
+                guint  **memb,
+                guint  **memd,
+                guint    n,
+                guint64  repeats)
+{
+  guint64 accu = 0, i, j;
+
+  for (i = 0; i < repeats; i++)
+    {
+      for (j = 1; j < n; j += 2)
+        memd[j][0] = mema[j][0] + memb[j][0];
+    }
+
+  for (i = 0; i < repeats; i++)
+    for (j = 0; j < n; j++)
+      accu += memd[j][0];
+
+  return accu;
+}
+
+static void
+touch_mem (guint64 block_size,
+           guint64 n_blocks,
+           guint64 repeats)
+{
+  GTimer *timer;
+  guint **mema, **memb, **memc;
+  guint64 j, accu, n = n_blocks;
+
+  mema = g_new (guint*, n);
+  for (j = 0; j < n; j++)
+    mema[j] = g_slice_alloc (block_size);
+
+  memb = g_new (guint*, n);
+  for (j = 0; j < n; j++)
+    memb[j] = g_slice_alloc (block_size);
+
+  memc = g_new (guint*, n);
+  for (j = 0; j < n; j++)
+    memc[j] = g_slice_alloc (block_size);
+
+  timer = g_timer_new();
+
+  fill_memory (mema, n, 2);
+  fill_memory (memb, n, 3);
+  fill_memory (memc, n, 4);
+
+  access_memory3 (mema, memb, memc, n, 3);
+
+  g_timer_start (timer);
+  accu = access_memory3 (mema, memb, memc, n, repeats);
+  g_timer_stop (timer);
+
+  g_test_message ("Access-time = %fs", g_timer_elapsed (timer, NULL));
+  g_assert_cmpuint (accu / repeats, ==, (2 + 3) * n / 2 + 4 * n / 2);
+
+  for (j = 0; j < n; j++)
+    {
+      g_slice_free1 (block_size, mema[j]);
+      g_slice_free1 (block_size, memb[j]);
+      g_slice_free1 (block_size, memc[j]);
+    }
+
+  g_timer_destroy (timer);
+  g_free (mema);
+  g_free (memb);
+  g_free (memc);
+}
+
+static void
+test_slice_colors (void)
+{
+  guint64 block_size = 512;
+  guint64 area_size = 1024 * 1024;
+  guint64 n_blocks, repeats = 1000000;
+
+  /* figure number of blocks from block and area size.
+   * divide area by 3 because touch_mem() allocates 3 areas */
+  n_blocks = area_size / 3 / ALIGN (block_size, sizeof (gsize) * 2);
+
+  g_test_message ("Allocate and touch %" G_GUINT64_FORMAT
+                  " blocks of %" G_GUINT64_FORMAT " bytes"
+                  " (= %" G_GUINT64_FORMAT " bytes) %" G_GUINT64_FORMAT
+                  " times with color increment",
+                  n_blocks, block_size, n_blocks * block_size, repeats);
+
+  touch_mem (block_size, n_blocks, repeats);
+}
+
+int
+main (int argc, char **argv)
+{
+  g_test_init (&argc, &argv, NULL);
+
+  g_test_add_func ("/slice/colors", test_slice_colors);
+
+  return g_test_run ();
+}
similarity index 75%
rename from tests/slice-concurrent.c
rename to glib/tests/slice-concurrent.c
index 66f0552..4551e20 100644 (file)
  * 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 <stdlib.h>
-#ifdef G_OS_UNIX
-#include <unistd.h>
-#endif
 
-#define N_THREADS      8
-#define N_ALLOCS       50000
+#define N_THREADS       8
+#define N_ALLOCS        50000
 #define MAX_BLOCK_SIZE  64
 
 struct ThreadData
 {
-  int     thread_id;
+  int      thread_id;
   GThread* gthread;
 
   GMutex   to_free_mutex;
@@ -40,25 +39,23 @@ struct ThreadData
 static void *
 thread_func (void *arg)
 {
-  struct ThreadData *td = arg;
   int i;
-/*   g_print ("Thread %d starting\n", td->thread_id); */
+  struct ThreadData *td = arg;
+
   for (i = 0; i < N_ALLOCS; i++)
     {
-      int bytes;
+      int bytes, f, t;
       char *mem;
-      int f;
-      int t;
 
       if (rand() % (N_ALLOCS / 20) == 0)
-       g_print ("%c", 'a' - 1 + td->thread_id);
+        g_test_message ("%c", 'a' - 1 + td->thread_id);
 
       /* allocate block of random size and randomly fill */
       bytes = rand() % MAX_BLOCK_SIZE + 1;
       mem = g_slice_alloc (bytes);
 
       for (f = 0; f < bytes; f++)
-       mem[f] = rand();
+        mem[f] = rand();
 
       /* associate block with random thread */
       t = rand() % N_THREADS;
@@ -80,19 +77,20 @@ thread_func (void *arg)
       /* free a block associated with this thread */
       g_mutex_lock (&td->to_free_mutex);
       if (td->n_to_free > 0)
-       {
-         td->n_to_free--;
-         g_slice_free1 (td->bytes_to_free[td->n_to_free], td->to_free[td->n_to_free]);
-         td->n_freed++;
-       }
+        {
+          td->n_to_free--;
+          g_slice_free1 (td->bytes_to_free[td->n_to_free],
+                         td->to_free[td->n_to_free]);
+          td->n_freed++;
+        }
       g_mutex_unlock (&td->to_free_mutex);
     }
 
   return NULL;
 }
 
-int
-main (void)
+static void
+test_concurrent_slice (void)
 {
   int t;
 
@@ -102,21 +100,31 @@ main (void)
       tdata[t].n_to_free = 0;
       tdata[t].n_freed = 0;
     }
-  g_print ("Starting %d threads for concurrent GSlice usage...\n", N_THREADS);
+
   for (t = 0; t < N_THREADS; t++)
     {
-      tdata[t].gthread   = g_thread_create (thread_func, &tdata[t], TRUE, NULL);
-      g_assert (tdata[t].gthread != NULL);
+      tdata[t].gthread = g_thread_new (NULL, thread_func, &tdata[t]);
+      g_assert_nonnull (tdata[t].gthread);
     }
+
   for (t = 0; t < N_THREADS; t++)
     {
       g_thread_join (tdata[t].gthread);
     }
-  g_print ("\n");
+
   for (t = 0; t < N_THREADS; t++)
     {
-      g_print ("Thread %d: %d blocks freed, %d blocks not freed\n",
-                   tdata[t].thread_id, tdata[t].n_freed, tdata[t].n_to_free);
+      g_test_message ("Thread %d: %d blocks freed, %d blocks not freed",
+                      tdata[t].thread_id, tdata[t].n_freed, tdata[t].n_to_free);
     }
-  return 0;
+}
+
+int
+main (int argc, char **argv)
+{
+  g_test_init (&argc, &argv, NULL);
+
+  g_test_add_func ("/slice/concurrent", test_concurrent_slice);
+
+  return g_test_run ();
 }
index c2923b9..eb748c5 100644 (file)
@@ -46,6 +46,30 @@ test_sort_basic (void)
   g_free (data);
 }
 
+static void
+test_sort_zero_elements (void)
+{
+  gint *data, *data_copy;
+  gsize i;
+
+  data = g_malloc (100 * sizeof (int));
+  data_copy = g_malloc (100 * sizeof (int));
+  for (i = 0; i < 100; i++)
+    {
+      data[i] = g_random_int ();
+      data_copy[i] = data[i];
+    }
+
+  /* 0 elements is a valid case */
+  g_qsort_with_data (data, 0, sizeof (int), int_compare_data, NULL);
+
+  for (i = 0; i < 100; i++)
+    g_assert_cmpint (data[i], ==, data_copy[i]);
+
+  g_free (data);
+  g_free (data_copy);
+}
+
 typedef struct {
   int val;
   int i;
@@ -120,6 +144,7 @@ main (int argc, char *argv[])
   g_test_init (&argc, &argv, NULL);
 
   g_test_add_func ("/sort/basic", test_sort_basic);
+  g_test_add_func ("/sort/zero-elements", test_sort_zero_elements);
   g_test_add_func ("/sort/stable", test_sort_stable);
   g_test_add_func ("/sort/big", test_sort_big);
 
index bf2c8a5..8dbc7bf 100644 (file)
 
 #include "config.h"
 
+#include <stdlib.h>
+
 #include <glib.h>
 #include <string.h>
 
+#include <sys/types.h>
+
 static char *echo_prog_path;
+static char *sleep_prog_path;
+
+#ifdef G_OS_UNIX
+#include <unistd.h>
+#endif
+
+#ifdef G_OS_WIN32
+#include <windows.h>
+#endif
+
+typedef struct
+{
+  GMainLoop *main_loop;
+  gint *n_alive;  /* (atomic) */
+  gint ttl;  /* seconds */
+  GMainLoop *thread_main_loop;  /* (nullable) */
+} SpawnChildsData;
+
+static GPid
+get_a_child (gint ttl)
+{
+  GPid pid;
+
+#ifdef G_OS_WIN32
+  STARTUPINFO si;
+  PROCESS_INFORMATION pi;
+  gchar *cmdline;
+
+  memset (&si, 0, sizeof (si));
+  si.cb = sizeof (&si);
+  memset (&pi, 0, sizeof (pi));
+
+  cmdline = g_strdup_printf ("%s %d", sleep_prog_path, ttl);
+
+  if (!CreateProcess (NULL, cmdline, NULL, NULL,
+                      FALSE, 0, NULL, NULL, &si, &pi))
+    g_error ("CreateProcess failed: %s",
+             g_win32_error_message (GetLastError ()));
+
+  g_free (cmdline);
+
+  CloseHandle (pi.hThread);
+  pid = pi.hProcess;
+
+  return pid;
+#else
+  pid = fork ();
+  if (pid < 0)
+    exit (1);
+
+  if (pid > 0)
+    return pid;
+
+  sleep (ttl);
+  _exit (0);
+#endif /* G_OS_WIN32 */
+}
+
+static void
+child_watch_callback (GPid pid, gint status, gpointer user_data)
+{
+  SpawnChildsData *data = user_data;
+
+  g_test_message ("Child %" G_PID_FORMAT " (ttl %d) exited, status %d",
+                  pid, data->ttl, status);
+
+  g_spawn_close_pid (pid);
+
+  if (g_atomic_int_dec_and_test (data->n_alive))
+    g_main_loop_quit (data->main_loop);
+  if (data->thread_main_loop != NULL)
+    g_main_loop_quit (data->thread_main_loop);
+}
+
+static gpointer
+start_thread (gpointer user_data)
+{
+  GMainLoop *new_main_loop;
+  GSource *source;
+  GPid pid;
+  SpawnChildsData *data = user_data;
+  gint ttl = data->ttl;
+  GMainContext *new_main_context = NULL;
+
+  new_main_context = g_main_context_new ();
+  new_main_loop = g_main_loop_new (new_main_context, FALSE);
+  data->thread_main_loop = new_main_loop;
+
+  pid = get_a_child (ttl);
+  source = g_child_watch_source_new (pid);
+  g_source_set_callback (source,
+                         (GSourceFunc) child_watch_callback, data, NULL);
+  g_source_attach (source, g_main_loop_get_context (new_main_loop));
+  g_source_unref (source);
+
+  g_test_message ("Created pid: %" G_PID_FORMAT " (ttl %d)", pid, ttl);
+
+  g_main_loop_run (new_main_loop);
+  g_main_loop_unref (new_main_loop);
+  g_main_context_unref (new_main_context);
+
+  return NULL;
+}
+
+static gboolean
+quit_loop (gpointer data)
+{
+  GMainLoop *main_loop = data;
+
+  g_main_loop_quit (main_loop);
+
+  return TRUE;
+}
+
+static void
+test_spawn_childs (void)
+{
+  GPid pid;
+  GMainLoop *main_loop = NULL;
+  SpawnChildsData child1_data = { 0, }, child2_data = { 0, };
+  gint n_alive;
+  guint timeout_id;
+
+  main_loop = g_main_loop_new (NULL, FALSE);
+
+#ifdef G_OS_WIN32
+  system ("cd .");
+#else
+  system ("true");
+#endif
+
+  n_alive = 2;
+  timeout_id = g_timeout_add_seconds (30, quit_loop, main_loop);
+
+  child1_data.main_loop = main_loop;
+  child1_data.ttl = 1;
+  child1_data.n_alive = &n_alive;
+  pid = get_a_child (child1_data.ttl);
+  g_child_watch_add (pid,
+                     (GChildWatchFunc) child_watch_callback,
+                     &child1_data);
+
+  child2_data.main_loop = main_loop;
+  child2_data.ttl = 2;
+  child2_data.n_alive = &n_alive;
+  pid = get_a_child (child2_data.ttl);
+  g_child_watch_add (pid,
+                     (GChildWatchFunc) child_watch_callback,
+                     &child2_data);
+
+  g_main_loop_run (main_loop);
+  g_main_loop_unref (main_loop);
+  g_source_remove (timeout_id);
+
+  g_assert_cmpint (g_atomic_int_get (&n_alive), ==, 0);
+}
+
+static void
+test_spawn_childs_threads (void)
+{
+  GMainLoop *main_loop = NULL;
+  SpawnChildsData thread1_data = { 0, }, thread2_data = { 0, };
+  gint n_alive;
+  guint timeout_id;
+  GThread *thread1, *thread2;
+
+  main_loop = g_main_loop_new (NULL, FALSE);
+
+#ifdef G_OS_WIN32
+  system ("cd .");
+#else
+  system ("true");
+#endif
+
+  n_alive = 2;
+  timeout_id = g_timeout_add_seconds (30, quit_loop, main_loop);
+
+  thread1_data.main_loop = main_loop;
+  thread1_data.n_alive = &n_alive;
+  thread1_data.ttl = 1;  /* seconds */
+  thread1 = g_thread_new (NULL, start_thread, &thread1_data);
+
+  thread2_data.main_loop = main_loop;
+  thread2_data.n_alive = &n_alive;
+  thread2_data.ttl = 2;  /* seconds */
+  thread2 = g_thread_new (NULL, start_thread, &thread2_data);
+
+  g_main_loop_run (main_loop);
+  g_main_loop_unref (main_loop);
+  g_source_remove (timeout_id);
+
+  g_assert_cmpint (g_atomic_int_get (&n_alive), ==, 0);
+
+  g_thread_join (g_steal_pointer (&thread2));
+  g_thread_join (g_steal_pointer (&thread1));
+}
 
 static void
 multithreaded_test_run (GThreadFunc function)
@@ -105,7 +305,7 @@ on_child_exited (GPid     pid,
   data->child_exited = TRUE;
   if (data->child_exited && data->stdout_done)
     g_main_loop_quit (data->loop);
-  
+
   return G_SOURCE_REMOVE;
 }
 
@@ -192,8 +392,8 @@ test_spawn_async_multithreaded_instance (gpointer thread_data)
 
   g_main_loop_run (loop);
 
-  g_assert (data.child_exited);
-  g_assert (data.stdout_done);
+  g_assert_true (data.child_exited);
+  g_assert_true (data.stdout_done);
   g_assert_cmpstr (data.stdout_buf->str, ==, arg);
   g_string_free (data.stdout_buf, TRUE);
 
@@ -223,21 +423,23 @@ main (int   argc,
 
   dirname = g_path_get_dirname (argv[0]);
   echo_prog_path = g_build_filename (dirname, "test-spawn-echo" EXEEXT, NULL);
-  if (!g_file_test (echo_prog_path, G_FILE_TEST_EXISTS))
-    {
-      g_free (echo_prog_path);
-      echo_prog_path = g_build_filename (dirname, "lt-test-spawn-echo" EXEEXT, NULL);
-    }
+  sleep_prog_path = g_build_filename (dirname, "test-spawn-sleep" EXEEXT, NULL);
   g_free (dirname);
 
   g_assert (g_file_test (echo_prog_path, G_FILE_TEST_EXISTS));
+#ifdef G_OS_WIN32
+  g_assert (g_file_test (sleep_prog_path, G_FILE_TEST_EXISTS));
+#endif
 
+  g_test_add_func ("/gthread/spawn-childs", test_spawn_childs);
+  g_test_add_func ("/gthread/spawn-childs-threads", test_spawn_childs_threads);
   g_test_add_func ("/gthread/spawn-sync", test_spawn_sync_multithreaded);
   g_test_add_func ("/gthread/spawn-async", test_spawn_async_multithreaded);
 
   ret = g_test_run();
 
   g_free (echo_prog_path);
+  g_free (sleep_prog_path);
 
   return ret;
 }
index 2a89111..5008fc9 100644 (file)
 #include <sys/wait.h>
 #endif
 
+static gboolean
+skip_win32 (void)
+{
+#ifdef G_OS_WIN32
+  g_test_skip ("The test manipulate PATH, and breaks DLL lookups.");
+  return TRUE;
+#else
+  return FALSE;
+#endif
+}
+
 static void
 test_do_not_search (void)
 {
@@ -38,6 +49,9 @@ test_do_not_search (void)
   g_test_summary ("Without G_SPAWN_SEARCH_PATH, spawn-test-helper "
                   "means ./spawn-test-helper.");
 
+  if (skip_win32 ())
+    return;
+
   envp = g_environ_setenv (envp, "PATH", subdir, TRUE);
 
   g_ptr_array_add (argv,
@@ -90,6 +104,9 @@ test_search_path (void)
   g_test_summary ("With G_SPAWN_SEARCH_PATH, spawn-test-helper "
                   "means $PATH/spawn-test-helper.");
 
+  if (skip_win32 ())
+    return;
+
   envp = g_environ_setenv (envp, "PATH", subdir, TRUE);
 
   g_ptr_array_add (argv,
@@ -143,6 +160,9 @@ test_search_path_from_envp (void)
   g_test_summary ("With G_SPAWN_SEARCH_PATH_FROM_ENVP, spawn-test-helper "
                   "means $PATH/spawn-test-helper with $PATH from envp.");
 
+  if (skip_win32 ())
+    return;
+
   envp = g_environ_setenv (envp, "PATH", here, TRUE);
 
   g_ptr_array_add (argv,
@@ -198,6 +218,9 @@ test_search_path_ambiguous (void)
   g_test_summary ("With G_SPAWN_SEARCH_PATH and G_SPAWN_SEARCH_PATH_FROM_ENVP, "
                   "the latter wins.");
 
+  if (skip_win32 ())
+    return;
+
   envp = g_environ_setenv (envp, "PATH", here, TRUE);
 
   g_ptr_array_add (argv,
@@ -252,6 +275,10 @@ test_search_path_fallback_in_environ (void)
   int wait_status = -1;
 
   g_test_summary ("With G_SPAWN_SEARCH_PATH but no PATH, a fallback is used.");
+
+  if (skip_win32 ())
+    return;
+
   /* We can't make a meaningful assertion about what the fallback *is*,
    * but we can assert that it *includes* the current working directory. */
 
@@ -319,6 +346,9 @@ test_search_path_fallback_in_envp (void)
   /* We can't make a meaningful assertion about what the fallback *is*,
    * but we can assert that it *includes* the current working directory. */
 
+  if (skip_win32 ())
+    return;
+
   if (g_file_test ("/usr/bin/spawn-test-helper", G_FILE_TEST_IS_EXECUTABLE) ||
       g_file_test ("/bin/spawn-test-helper", G_FILE_TEST_IS_EXECUTABLE))
     {
@@ -384,6 +414,9 @@ test_search_path_heap_allocation (void)
   int wait_status = -1;
   gsize i;
 
+  if (skip_win32 ())
+    return;
+
   memset (placeholder, '_', sizeof (placeholder));
   /* Force search_path_buffer to be heap-allocated */
   long_dir = g_test_build_filename (G_TEST_BUILT, "path-test-subdir", placeholder, NULL);
index 6b17027..b17b472 100644 (file)
 #include <locale.h>
 #include <string.h>
 #include <fcntl.h>
+#include <glib/gstdio.h>
 
 #ifdef G_OS_UNIX
 #include <glib-unix.h>
-#include <glib/gstdio.h>
 #include <sys/types.h>
 #include <sys/stat.h>
 #include <unistd.h>
@@ -433,12 +433,11 @@ test_spawn_nonexistent (void)
 static void
 test_spawn_fd_assignment_clash (void)
 {
-#if defined(G_OS_UNIX) && defined(F_DUPFD_CLOEXEC)
   int tmp_fd;
   guint i;
-  const guint n_fds = 10;
-  gint source_fds[n_fds];
-  gint target_fds[n_fds];
+#define N_FDS 10
+  gint source_fds[N_FDS];
+  gint target_fds[N_FDS];
   const gchar *argv[] = { "/nonexistent", NULL };
   gboolean retval;
   GError *local_error = NULL;
@@ -449,27 +448,32 @@ test_spawn_fd_assignment_clash (void)
   tmp_fd = g_file_open_tmp ("glib-spawn-test-XXXXXX", NULL, NULL);
   g_assert_cmpint (tmp_fd, >=, 0);
 
-  for (i = 0; i < (n_fds - 1); ++i)
+  for (i = 0; i < (N_FDS - 1); ++i)
     {
-      int source = fcntl (tmp_fd, F_DUPFD_CLOEXEC, 3);
+      int source;
+#ifdef F_DUPFD_CLOEXEC
+      source = fcntl (tmp_fd, F_DUPFD_CLOEXEC, 3);
+#else
+      source = dup (tmp_fd);
+#endif
       g_assert_cmpint (source, >=, 0);
       source_fds[i] = source;
-      target_fds[i] = source + n_fds;
+      target_fds[i] = source + N_FDS;
     }
 
   source_fds[i] = tmp_fd;
-  target_fds[i] = tmp_fd + n_fds;
+  target_fds[i] = tmp_fd + N_FDS;
 
   /* Print out the FD map. */
   g_test_message ("FD map:");
-  for (i = 0; i < n_fds; i++)
+  for (i = 0; i < N_FDS; i++)
     g_test_message (" • %d → %d", source_fds[i], target_fds[i]);
 
   /* Spawn the subprocess. This should fail because the executable doesn’t
    * exist. */
   retval = g_spawn_async_with_pipes_and_fds (NULL, argv, NULL, G_SPAWN_DEFAULT,
                                              NULL, NULL, -1, -1, -1,
-                                             source_fds, target_fds, n_fds,
+                                             source_fds, target_fds, N_FDS,
                                              NULL, NULL, NULL, NULL,
                                              &local_error);
   g_assert_error (local_error, G_SPAWN_ERROR, G_SPAWN_ERROR_NOENT);
@@ -484,11 +488,8 @@ test_spawn_fd_assignment_clash (void)
   g_assert_cmpuint (statbuf.st_size, ==, 0);
 
   /* Clean up. */
-  for (i = 0; i < n_fds; i++)
+  for (i = 0; i < N_FDS; i++)
     g_close (source_fds[i], NULL);
-#else  /* !G_OS_UNIX */
-  g_test_skip ("FD redirection only supported on Unix with F_DUPFD_CLOEXEC");
-#endif  /* !G_OS_UNIX */
 }
 
 int
@@ -504,11 +505,6 @@ main (int   argc,
 
   dirname = g_path_get_dirname (argv[0]);
   echo_prog_path = g_build_filename (dirname, "test-spawn-echo" EXEEXT, NULL);
-  if (!g_file_test (echo_prog_path, G_FILE_TEST_EXISTS))
-    {
-      g_free (echo_prog_path);
-      echo_prog_path = g_build_filename (dirname, "lt-test-spawn-echo" EXEEXT, NULL);
-    }
   echo_script_path = g_build_filename (dirname, "echo-script" SCRIPT_EXT, NULL);
   if (!g_file_test (echo_script_path, G_FILE_TEST_EXISTS))
     {
index ab93f86..082eec0 100644 (file)
@@ -2440,15 +2440,14 @@ test_ascii_string_to_number_usual (void)
 
         case UNSIGNED:
           {
-            guint64 value64 = 0;
             result = g_ascii_string_to_unsigned (data->str,
                                                  data->base,
                                                  data->min,
                                                  data->max,
-                                                 &value64,
+                                                 &valueu64,
                                                  &error);
-            value = value64;
-            g_assert_cmpint (value, ==, value64);
+            value = valueu64;
+            g_assert_cmpint (value, ==, valueu64);
             break;
           }
 
index 24098d1..0229099 100644 (file)
@@ -215,6 +215,44 @@ test_string_append (void)
   g_string_free (string, TRUE);
 }
 
+static void string_append_vprintf_va (GString     *string,
+                                      const gchar *format,
+                                      ...) G_GNUC_PRINTF (2, 3);
+
+/* Wrapper around g_string_append_vprintf() which takes varargs */
+static void
+string_append_vprintf_va (GString     *string,
+                          const gchar *format,
+                          ...)
+{
+  va_list args;
+
+  va_start (args, format);
+  g_string_append_vprintf (string, format, args);
+  va_end (args);
+}
+
+static void
+test_string_append_vprintf (void)
+{
+  GString *string;
+
+  /* append */
+  string = g_string_new ("firsthalf");
+
+  string_append_vprintf_va (string, "some %s placeholders", "format");
+
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wformat"
+#pragma GCC diagnostic ignored "-Wformat-extra-args"
+  string_append_vprintf_va (string, "%l", "invalid");
+#pragma GCC diagnostic pop
+
+  g_assert_cmpstr (string->str, ==, "firsthalfsome format placeholders");
+
+  g_string_free (string, TRUE);
+}
+
 static void
 test_string_prepend_c (void)
 {
@@ -571,6 +609,7 @@ main (int   argc,
   g_test_add_func ("/string/test-string-assign", test_string_assign);
   g_test_add_func ("/string/test-string-append-c", test_string_append_c);
   g_test_add_func ("/string/test-string-append", test_string_append);
+  g_test_add_func ("/string/test-string-append-vprintf", test_string_append_vprintf);
   g_test_add_func ("/string/test-string-prepend-c", test_string_prepend_c);
   g_test_add_func ("/string/test-string-prepend", test_string_prepend);
   g_test_add_func ("/string/test-string-insert", test_string_insert);
index 59a461d..6eadf1e 100644 (file)
@@ -895,6 +895,52 @@ test_upper_bound (void)
   g_assert_cmpint (res, ==, 20);
 }
 
+#if !defined(__APPLE__) && !defined(__FreeBSD__)
+static gint test_vasprintf_va (gchar       **string,
+                               const gchar  *format,
+                               ...) G_GNUC_PRINTF (2, 3);
+
+/* Wrapper around g_vasprintf() which takes varargs */
+static gint
+test_vasprintf_va (gchar       **string,
+                   const gchar  *format,
+                   ...)
+{
+  va_list args;
+  gint len;
+
+  va_start (args, format);
+  len = g_vasprintf (string, format, args);
+  va_end (args);
+
+  return len;
+}
+#endif  /* !defined(__APPLE__) && !defined(__FreeBSD__) */
+
+static void
+test_vasprintf_invalid_format_placeholder (void)
+{
+#if !defined(__APPLE__) && !defined(__FreeBSD__)
+  gint len = 0;
+  gchar *buf = "some non-null string";
+#endif
+
+  g_test_summary ("Test error handling for invalid format placeholder in g_vasprintf()");
+
+#if !defined(__APPLE__) && !defined(__FreeBSD__)
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wformat"
+#pragma GCC diagnostic ignored "-Wformat-extra-args"
+  len = test_vasprintf_va (&buf, "%l", "nope");
+#pragma GCC diagnostic pop
+
+  g_assert_cmpint (len, ==, -1);
+  g_assert_null (buf);
+#else
+  g_test_skip ("vasprintf() placeholder checks on BSDs are less strict");
+#endif
+}
+
 int
 main (int   argc,
       char *argv[])
@@ -935,5 +981,7 @@ main (int   argc,
   g_test_add_func ("/sprintf/test-positional-params", test_positional_params3);
   g_test_add_func ("/sprintf/upper-bound", test_upper_bound);
 
+  g_test_add_func ("/vasprintf/invalid-format-placeholder", test_vasprintf_invalid_format_placeholder);
+
   return g_test_run();
 }
diff --git a/glib/tests/test-spawn-sleep.c b/glib/tests/test-spawn-sleep.c
new file mode 100644 (file)
index 0000000..34dfd5b
--- /dev/null
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2022 Red Hat, Inc.
+ *
+ * This work is provided "as is"; redistribution and modification
+ * in whole or in part, in any medium, physical or electronic is
+ * permitted without restriction.
+ *
+ * This work 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.
+ *
+ * In no event shall the authors or contributors be liable for any
+ * direct, indirect, incidental, special, exemplary, or consequential
+ * damages (including, but not limited to, procurement of substitute
+ * goods or services; loss of use, data, or profits; or business
+ * interruption) however caused and on any theory of liability, whether
+ * in contract, strict liability, or tort (including negligence or
+ * otherwise) arising in any way out of the use of this software, even
+ * if advised of the possibility of such damage.
+ */
+#include "config.h"
+
+#include <stdlib.h>
+#include "glib.h"
+
+int
+main (int   argc,
+      char *argv[])
+{
+  g_usleep (atoi (argv[1]) * G_USEC_PER_SEC);
+  return 0;
+}
index 7b61e83..7731538 100644 (file)
@@ -102,6 +102,24 @@ main (int   argc,
   argc -= 1;
   argv[argc] = NULL;
 
+  if (g_strcmp0 (argv1, "init-null-argv0") == 0)
+    {
+      int test_argc = 0;
+      char *test_argva[1] = { NULL };
+      char **test_argv = test_argva;
+
+      /* Test that `g_test_init()` can handle being called with an empty argv
+       * and argc == 0. While this isn’t recommended, it is possible for another
+       * process to use execve() to call a gtest process this way, so we’d
+       * better handle it gracefully.
+       *
+       * This test can’t be run after `g_test_init()` has been called normally,
+       * as it isn’t allowed to be called more than once in a process. */
+      g_test_init (&test_argc, &test_argv, NULL);
+
+      return 0;
+    }
+
   g_test_init (&argc, &argv, NULL);
   g_test_set_nonfatal_assertions ();
 
index 03cfe03..accd5db 100644 (file)
@@ -1585,16 +1585,57 @@ test_tap_summary (void)
   g_ptr_array_unref (argv);
 }
 
+static void
+test_init_no_argv0 (void)
+{
+  const char *testing_helper;
+  GPtrArray *argv;
+  GError *error = NULL;
+  int status;
+  gchar *output;
+
+  g_test_summary ("Test that g_test_init() can be called safely with argc == 0.");
+
+  testing_helper = g_test_get_filename (G_TEST_BUILT, "testing-helper" EXEEXT, NULL);
+
+  argv = g_ptr_array_new ();
+  g_ptr_array_add (argv, (char *) testing_helper);
+  g_ptr_array_add (argv, "init-null-argv0");
+  g_ptr_array_add (argv, NULL);
+
+  /* This has to be spawned manually and can’t be run with g_test_subprocess()
+   * because the test helper can’t be run after `g_test_init()` has been called
+   * in the process. */
+  g_spawn_sync (NULL, (char **) argv->pdata, NULL,
+                G_SPAWN_STDERR_TO_DEV_NULL,
+                NULL, NULL, &output, NULL, &status,
+                &error);
+  g_assert_no_error (error);
+
+  g_spawn_check_wait_status (status, &error);
+  g_assert_no_error (error);
+  g_assert_nonnull (strstr (output, "# random seed:"));
+  g_free (output);
+  g_ptr_array_unref (argv);
+}
+
 int
 main (int   argc,
       char *argv[])
 {
+  int ret;
+  char *filename, *filename2;
+
   argv0 = argv[0];
 
   setlocale (LC_ALL, "");
 
   g_test_init (&argc, &argv, NULL);
 
+  /* Part of a test for
+   * https://gitlab.gnome.org/GNOME/glib/-/issues/2563, see below */
+  filename = g_test_build_filename (G_TEST_BUILT, "nonexistent", NULL);
+
   g_test_add_func ("/random-generator/rand-1", test_rand1);
   g_test_add_func ("/random-generator/rand-2", test_rand2);
   g_test_add_func ("/random-generator/random-conversions", test_random_conversions);
@@ -1675,5 +1716,18 @@ main (int   argc,
   g_test_add_func ("/tap", test_tap);
   g_test_add_func ("/tap/summary", test_tap_summary);
 
-  return g_test_run();
+  g_test_add_func ("/init/no_argv0", test_init_no_argv0);
+
+  ret = g_test_run ();
+
+  /* We can't test for https://gitlab.gnome.org/GNOME/glib/-/issues/2563
+   * from a test-case, because the whole point of that issue is that it's
+   * about whether certain patterns are valid after g_test_run() has
+   * returned... so put an ad-hoc test here, and just crash if it fails. */
+  filename2 = g_test_build_filename (G_TEST_BUILT, "nonexistent", NULL);
+  g_assert_cmpstr (filename, ==, filename2);
+
+  g_free (filename);
+  g_free (filename2);
+  return ret;
 }
index e805ef5..42ed5a9 100644 (file)
@@ -35,10 +35,28 @@ test_timer_basic (void)
 
   timer = g_timer_new ();
 
+  g_timer_start (timer);
+  elapsed = g_timer_elapsed (timer, NULL);
+  g_timer_stop (timer);
+  g_assert_cmpfloat (elapsed, <=, g_timer_elapsed (timer, NULL));
+
+  g_timer_destroy (timer);
+
+  timer = g_timer_new ();
+
+  g_timer_start (timer);
+  elapsed = g_timer_elapsed (timer, NULL);
+  g_timer_stop (timer);
+  g_assert_cmpfloat (elapsed, <=, g_timer_elapsed (timer, NULL));
+
+  g_timer_destroy (timer);
+
+  timer = g_timer_new ();
+
   elapsed = g_timer_elapsed (timer, &micros);
 
   g_assert_cmpfloat (elapsed, <, 1.0);
-  g_assert_cmpuint (micros, ==, ((guint64)(elapsed * 1e6)) % 1000000);
+  g_assert_cmpfloat_with_epsilon (elapsed, micros / 1e6,  0.001);
 
   g_timer_destroy (timer);
 }
@@ -69,6 +87,19 @@ test_timer_continue (void)
   gdouble elapsed, elapsed2;
 
   timer = g_timer_new ();
+
+  /* Continue on a running timer */
+  if (g_test_undefined ())
+    {
+      g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                             "*assertion*== FALSE*");
+      g_timer_continue (timer);
+      g_test_assert_expected_messages ();
+    }
+
+  g_timer_reset (timer);
+
+  /* Continue on a stopped timer */
   g_usleep (100);
   g_timer_stop (timer);
 
@@ -164,16 +195,27 @@ test_timeval_from_iso8601 (void)
     { TRUE, "1970-01-01T00:00:17.1234Z", { 17, 123400 } },
     { TRUE, "1970-01-01T00:00:17.123456Z", { 17, 123456 } },
     { TRUE, "1980-02-22T12:36:00+02:00", { 320063760, 0 } },
+    { TRUE, "1980-02-22T10:36:00Z", { 320063760, 0 } },
+    { TRUE, "1980-02-22T10:36:00", { 320063760, 0 } },
+    { TRUE, "1980-02-22T12:36:00+02:00", { 320063760, 0 } },
+    { TRUE, "19800222T053600-0500", { 320063760, 0 } },
+    { TRUE, "1980-02-22T07:06:00-03:30", { 320063760, 0 } },
+    { TRUE, "1980-02-22T10:36:00.050000Z", { 320063760, 50000 } },
+    { TRUE, "1980-02-22T05:36:00,05-05:00", { 320063760, 50000 } },
+    { TRUE, "19800222T123600.050000000+0200", { 320063760, 50000 } },
+    { TRUE, "19800222T070600,0500-0330", { 320063760, 50000 } },
     { FALSE, "   ", { 0, 0 } },
     { FALSE, "x", { 0, 0 } },
     { FALSE, "123x", { 0, 0 } },
     { FALSE, "2001-10+x", { 0, 0 } },
+    { FALSE, "1980-02-22", { 0, 0 } },
     { FALSE, "1980-02-22T", { 0, 0 } },
     { FALSE, "2001-10-08Tx", { 0, 0 } },
     { FALSE, "2001-10-08T10:11x", { 0, 0 } },
     { FALSE, "Wed Dec 19 17:20:20 GMT 2007", { 0, 0 } },
     { FALSE, "1980-02-22T10:36:00Zulu", { 0, 0 } },
     { FALSE, "2T0+819855292164632335", { 0, 0 } },
+    { FALSE, "1980-02-22", { 320063760, 50000 } },
     { TRUE, "2018-08-03T14:08:05.446178377+01:00", { 1533301685, 446178 } },
     { FALSE, "2147483648-08-03T14:08:05.446178377+01:00", { 0, 0 } },
     { FALSE, "2018-13-03T14:08:05.446178377+01:00", { 0, 0 } },
@@ -222,7 +264,7 @@ test_timeval_from_iso8601 (void)
       out.tv_sec = 0;
       out.tv_usec = 0;
       success = g_time_val_from_iso8601 (tests[i].in, &out);
-      g_assert (success == tests[i].success);
+      g_assert_cmpint (success, ==, tests[i].success);
       if (tests[i].success)
         {
           g_assert_cmpint (out.tv_sec, ==, tests[i].val.tv_sec);
@@ -230,10 +272,20 @@ test_timeval_from_iso8601 (void)
         }
     }
 
+  /* revert back user defined time zone */
   if (old_tz != NULL)
     g_assert_true (g_setenv ("TZ", old_tz, TRUE));
   else
     g_unsetenv ("TZ");
+  tzset ();
+
+  for (i = 0; i < G_N_ELEMENTS (tests); i++)
+    {
+      out.tv_sec = 0;
+      out.tv_usec = 0;
+      success = g_time_val_from_iso8601 (tests[i].in, &out);
+      g_assert_cmpint (success, ==, tests[i].success);
+    }
 
   g_free (old_tz);
 }
index 5174479..e882926 100644 (file)
@@ -482,6 +482,235 @@ test_tree_insert (void)
   g_tree_unref (tree);
 }
 
+static void
+binary_tree_bound (GTree *tree,
+                   char   c,
+                   char   expected,
+                   int    lower)
+{
+  GTreeNode *node;
+
+  if (lower)
+    node = g_tree_lower_bound (tree, &c);
+  else
+    node = g_tree_upper_bound (tree, &c);
+
+  if (g_test_verbose ())
+    g_test_message ("%c %s: ", c, lower ? "lower" : "upper");
+
+  if (!node)
+    {
+      if (!g_tree_nnodes (tree))
+        {
+          if (g_test_verbose ())
+            g_test_message ("empty tree");
+        }
+      else
+        {
+          GTreeNode *last = g_tree_node_last (tree);
+
+          g_assert (last);
+          if (g_test_verbose ())
+            g_test_message ("past end last %c",
+                            *(char *) g_tree_node_key (last));
+        }
+      g_assert (expected == '\x00');
+    }
+  else
+    {
+      GTreeNode *begin = g_tree_node_first (tree);
+      GTreeNode *last = g_tree_node_last (tree);
+      GTreeNode *prev = g_tree_node_previous (node);
+      GTreeNode *next = g_tree_node_next (node);
+
+      g_assert (expected != '\x00');
+      g_assert (expected == *(char *) g_tree_node_key (node));
+
+      if (g_test_verbose ())
+        g_test_message ("%c", *(char *) g_tree_node_key (node));
+
+      if (node != begin)
+        {
+          g_assert (prev);
+          if (g_test_verbose ())
+            g_test_message (" prev %c", *(char *) g_tree_node_key (prev));
+        }
+      else
+        {
+          g_assert (!prev);
+          if (g_test_verbose ())
+            g_test_message (" no prev, it's the first one");
+        }
+
+      if (node != last)
+        {
+          g_assert (next);
+          if (g_test_verbose ())
+            g_test_message (" next %c", *(char *) g_tree_node_key (next));
+        }
+      else
+        {
+          g_assert (!next);
+          if (g_test_verbose ())
+            g_test_message (" no next, it's the last one");
+        }
+    }
+
+  if (g_test_verbose ())
+    g_test_message ("\n");
+}
+
+static void
+binary_tree_bounds (GTree *tree,
+                    char   c,
+                    int    mode)
+{
+  char expectedl, expectedu;
+  char first = mode == 0 ? '0' : mode == 1 ? 'A' : 'z';
+
+  g_assert (mode >= 0 && mode <= 3);
+
+  if (c < first)
+    expectedl = first;
+  else if (c > 'z')
+    expectedl = '\x00';
+  else
+    expectedl = c;
+
+  if (c < first)
+    expectedu = first;
+  else if (c >= 'z')
+    expectedu = '\x00';
+  else
+    expectedu = c == '9' ? 'A' : c == 'Z' ? 'a' : c + 1;
+
+  if (mode == 3)
+    {
+      expectedl = '\x00';
+      expectedu = '\x00';
+    }
+
+  binary_tree_bound (tree, c, expectedl, 1);
+  binary_tree_bound (tree, c, expectedu, 0);
+}
+
+static void
+binary_tree_bounds_test (GTree *tree,
+                         int    mode)
+{
+  binary_tree_bounds (tree, 'a', mode);
+  binary_tree_bounds (tree, 'A', mode);
+  binary_tree_bounds (tree, 'z', mode);
+  binary_tree_bounds (tree, 'Z', mode);
+  binary_tree_bounds (tree, 'Y', mode);
+  binary_tree_bounds (tree, '0', mode);
+  binary_tree_bounds (tree, '9', mode);
+  binary_tree_bounds (tree, '0' - 1, mode);
+  binary_tree_bounds (tree, 'z' + 1, mode);
+  binary_tree_bounds (tree, '0' - 2, mode);
+  binary_tree_bounds (tree, 'z' + 2, mode);
+}
+
+static void
+test_tree_bounds (void)
+{
+  GQueue queue = G_QUEUE_INIT;
+  GTree *tree;
+  char chars[62];
+  guint i, j;
+
+  tree = g_tree_new (my_compare);
+
+  i = 0;
+  for (j = 0; j < 10; j++, i++)
+    {
+      chars[i] = '0' + j;
+      g_queue_push_tail (&queue, &chars[i]);
+    }
+
+  for (j = 0; j < 26; j++, i++)
+    {
+      chars[i] = 'A' + j;
+      g_queue_push_tail (&queue, &chars[i]);
+    }
+
+  for (j = 0; j < 26; j++, i++)
+    {
+      chars[i] = 'a' + j;
+      g_queue_push_tail (&queue, &chars[i]);
+    }
+
+  if (g_test_verbose ())
+    g_test_message ("tree insert: ");
+
+  while (!g_queue_is_empty (&queue))
+    {
+      gint32 which = g_random_int_range (0, g_queue_get_length (&queue));
+      gpointer elem = g_queue_pop_nth (&queue, which);
+      GTreeNode *node;
+
+      if (g_test_verbose ())
+        g_test_message ("%c ", *(char *) elem);
+
+      node = g_tree_insert_node (tree, elem, elem);
+      g_assert (g_tree_node_key (node) == elem);
+      g_assert (g_tree_node_value (node) == elem);
+    }
+
+  if (g_test_verbose ())
+    g_test_message ("\n");
+
+  g_assert_cmpint (g_tree_nnodes (tree), ==, 10 + 26 + 26);
+  g_assert_cmpint (g_tree_height (tree), >=, 6);
+  g_assert_cmpint (g_tree_height (tree), <=, 8);
+
+  if (g_test_verbose ())
+    {
+      g_test_message ("tree: ");
+      g_tree_foreach (tree, my_traverse, NULL);
+      g_test_message ("\n");
+    }
+
+  binary_tree_bounds_test (tree, 0);
+
+  for (i = 0; i < 10; i++)
+    g_tree_remove (tree, &chars[i]);
+
+  g_assert_cmpint (g_tree_nnodes (tree), ==, 26 + 26);
+  g_assert_cmpint (g_tree_height (tree), >=, 6);
+  g_assert_cmpint (g_tree_height (tree), <=, 8);
+
+  if (g_test_verbose ())
+    {
+      g_test_message ("tree: ");
+      g_tree_foreach (tree, my_traverse, NULL);
+      g_test_message ("\n");
+    }
+
+  binary_tree_bounds_test (tree, 1);
+
+  for (i = 10; i < 10 + 26 + 26 - 1; i++)
+    g_tree_remove (tree, &chars[i]);
+
+  if (g_test_verbose ())
+    {
+      g_test_message ("tree: ");
+      g_tree_foreach (tree, my_traverse, NULL);
+      g_test_message ("\n");
+    }
+
+  binary_tree_bounds_test (tree, 2);
+
+  g_tree_remove (tree, &chars[10 + 26 + 26 - 1]);
+
+  if (g_test_verbose ())
+    g_test_message ("empty tree\n");
+
+  binary_tree_bounds_test (tree, 3);
+
+  g_tree_unref (tree);
+}
+
 int
 main (int argc, char *argv[])
 {
@@ -492,6 +721,7 @@ main (int argc, char *argv[])
   g_test_add_func ("/tree/destroy", test_tree_destroy);
   g_test_add_func ("/tree/traverse", test_tree_traverse);
   g_test_add_func ("/tree/insert", test_tree_insert);
+  g_test_add_func ("/tree/bounds", test_tree_bounds);
   g_test_add_func ("/tree/remove-all", test_tree_remove_all);
 
   return g_test_run ();
similarity index 68%
rename from tests/type-test.c
rename to glib/tests/types.c
index dceccdd..58eb748 100644 (file)
  * Modified by the GLib Team and others 1997-2000.  See the AUTHORS
  * file for a list of people on the GLib Team.  See the ChangeLog
  * files for a list of changes.  These files are distributed with
- * GLib at ftp://ftp.gtk.org/pub/gtk/. 
+ * GLib at ftp://ftp.gtk.org/pub/gtk/.
  */
 
-#undef G_DISABLE_ASSERT
-#undef G_LOG_DOMAIN
-
 #include <stdio.h>
-#include <string.h>
-#include "glib.h"
-
 
+#include <glib.h>
 
-int
-main (int   argc,
-      char *argv[])
+static void
+test_basic_types (void)
 {
   gchar *string;
   gushort gus;
@@ -50,7 +44,7 @@ main (int   argc,
   guint16 gu16t1 = 0x44afU, gu16t2 = 0xaf44U;
   guint32 gu32t1 = 0x02a7f109U, gu32t2 = 0x09f1a702U;
   guint64 gu64t1 = G_GINT64_CONSTANT(0x1d636b02300a7aa7U),
-         gu64t2 = G_GINT64_CONSTANT(0xa77a0a30026b631dU);
+          gu64t2 = G_GINT64_CONSTANT(0xa77a0a30026b631dU);
   gint64 gi64t1;
   gint64 gi64t2;
   gssize gsst1;
@@ -59,65 +53,65 @@ main (int   argc,
   gsize  gst2;
 
   /* type sizes */
-  g_assert (sizeof (gint8) == 1);
-  g_assert (sizeof (gint16) == 2);
-  g_assert (sizeof (gint32) == 4);
-  g_assert (sizeof (gint64) == 8);
+  g_assert_cmpint (sizeof (gint8), ==, 1);
+  g_assert_cmpint (sizeof (gint16), ==, 2);
+  g_assert_cmpint (sizeof (gint32), ==, 4);
+  g_assert_cmpint (sizeof (gint64), ==, 8);
 
-  g_assert (GUINT16_SWAP_LE_BE (gu16t1) == gu16t2);
-  g_assert (GUINT32_SWAP_LE_BE (gu32t1) == gu32t2);
-  g_assert (GUINT64_SWAP_LE_BE (gu64t1) == gu64t2);
+  g_assert_cmpuint (GUINT16_SWAP_LE_BE (gu16t1), ==, gu16t2);
+  g_assert_cmpuint (GUINT32_SWAP_LE_BE (gu32t1), ==, gu32t2);
+  g_assert_cmpuint (GUINT64_SWAP_LE_BE (gu64t1), ==, gu64t2);
 
   /* Test the G_(MIN|MAX|MAXU)(SHORT|INT|LONG) macros */
 
   gus = G_MAXUSHORT;
   gus++;
-  g_assert (gus == 0);
+  g_assert_cmpuint (gus, ==, 0);
 
   gui = G_MAXUINT;
   gui++;
-  g_assert (gui == 0);
+  g_assert_cmpuint (gui, ==, 0);
 
   gul = G_MAXULONG;
   gul++;
-  g_assert (gul == 0);
+  g_assert_cmpuint (gul, ==, 0);
 
   gsz = G_MAXSIZE;
   gsz++;
-  
-  g_assert (gsz == 0);
+
+  g_assert_cmpuint (gsz, ==, 0);
 
   gs = G_MAXSHORT;
   gs = (gshort) (1 + (gushort) gs);
-  g_assert (gs == G_MINSHORT);
+  g_assert_cmpint (gs, ==, G_MINSHORT);
 
   gi = G_MAXINT;
   gi = (gint) (1 + (guint) gi);
-  g_assert (gi == G_MININT);
+  g_assert_cmpint (gi, ==, G_MININT);
 
   gl = G_MAXLONG;
   gl = (glong) (1 + (gulong) gl);
-  g_assert (gl == G_MINLONG);
+  g_assert_cmpint (gl, ==, G_MINLONG);
 
   /* Test the G_G(U)?INT(16|32|64)_FORMAT macros */
 
   gi16t1 = -0x3AFA;
   gu16t1 = 0xFAFA;
   gi32t1 = -0x3AFAFAFA;
-  gu32t1 = 0xFAFAFAFA; 
+  gu32t1 = 0xFAFAFAFA;
 
 #define FORMAT "%" G_GINT16_FORMAT " %" G_GINT32_FORMAT \
                " %" G_GUINT16_FORMAT " %" G_GUINT32_FORMAT "\n"
   string = g_strdup_printf (FORMAT, gi16t1, gi32t1, gu16t1, gu32t1);
   sscanf (string, FORMAT, &gi16t2, &gi32t2, &gu16t2, &gu32t2);
   g_free (string);
-  g_assert (gi16t1 == gi16t2);
-  g_assert (gi32t1 == gi32t2);
-  g_assert (gu16t1 == gu16t2);
-  g_assert (gu32t1 == gu32t2);
+  g_assert_cmpint (gi16t1, ==, gi16t2);
+  g_assert_cmpint (gi32t1, ==, gi32t2);
+  g_assert_cmpint (gu16t1, ==, gu16t2);
+  g_assert_cmpint (gu32t1, ==, gu32t2);
 
   gi64t1 = G_GINT64_CONSTANT (-0x3AFAFAFAFAFAFAFA);
-  gu64t1 = G_GINT64_CONSTANT (0xFAFAFAFAFAFAFAFA); 
+  gu64t1 = G_GINT64_CONSTANT (0xFAFAFAFAFAFAFAFA);
 
 #define FORMAT64 "%" G_GINT64_FORMAT " %" G_GUINT64_FORMAT "\n"
 #ifndef G_OS_WIN32
@@ -129,11 +123,11 @@ main (int   argc,
   string = g_strdup_printf (FORMAT64, gi64t1, gu64t1);
   sscanf (string, SCAN_FORMAT64, &gi64t2, &gu64t2);
   g_free (string);
-  g_assert (gi64t1 == gi64t2);
-  g_assert (gu64t1 == gu64t2);
+  g_assert_cmpint (gi64t1, ==, gi64t2);
+  g_assert_cmpint (gu64t1, ==, gu64t2);
 
   gsst1 = -0x3AFAFAFA;
-  gst1 = 0xFAFAFAFA; 
+  gst1 = 0xFAFAFAFA;
 
 #define FORMATSIZE "%" G_GSSIZE_FORMAT " %" G_GSIZE_FORMAT "\n"
 #ifndef G_OS_WIN32
@@ -145,8 +139,16 @@ main (int   argc,
   string = g_strdup_printf (FORMATSIZE, gsst1, gst1);
   sscanf (string, SCAN_FORMATSIZE, &gsst2, &gst2);
   g_free (string);
-  g_assert (gsst1 == gsst2);
-  g_assert (gst1 == gst2);
-  
-  return 0;
+  g_assert_cmpint (gsst1, ==, gsst2);
+  g_assert_cmpint (gst1, ==, gst2);
+}
+
+int
+main (int argc, char *argv[])
+{
+  g_test_init (&argc, &argv, NULL);
+
+  g_test_add_func ("/types/basic_types", test_basic_types);
+
+  return g_test_run ();
 }
index 1d4e37c..5ba167e 100644 (file)
@@ -28,6 +28,7 @@
 #endif
 
 #include <locale.h>
+#include <stdio.h>
 
 #include "glib.h"
 
@@ -337,6 +338,11 @@ test_unichar_script (void)
     { G_UNICODE_SCRIPT_DIVES_AKURU,            0x11900 },
     { G_UNICODE_SCRIPT_KHITAN_SMALL_SCRIPT,    0x18B00 },
     { G_UNICODE_SCRIPT_YEZIDI,                 0x10E80 },
+    { G_UNICODE_SCRIPT_CYPRO_MINOAN,           0x12F90 },
+    { G_UNICODE_SCRIPT_OLD_UYGHUR,             0x10F70 },
+    { G_UNICODE_SCRIPT_TANGSA,                 0x16A70 },
+    { G_UNICODE_SCRIPT_TOTO,                   0x1E290 },
+    { G_UNICODE_SCRIPT_VITHKUQI,               0x10570 }
   };
   for (i = 0; i < G_N_ELEMENTS (examples); i++)
     g_assert_cmpint (g_unichar_get_script (examples[i].c), ==, examples[i].script);
@@ -530,6 +536,99 @@ test_casefold (void)
   g_free (str_casefold);
 }
 
+static void
+test_casemap_and_casefold (void)
+{
+  FILE *infile;
+  char buffer[1024];
+  char **strings;
+  char *filename;
+  const char *locale;
+  const char *test;
+  const char *expected;
+  char *convert;
+  char *current_locale = setlocale (LC_CTYPE, NULL);
+
+  filename = g_test_build_filename (G_TEST_DIST, "casemap.txt", NULL);
+  infile = fopen (filename, "r");
+  g_assert (infile != NULL);
+
+  while (fgets (buffer, sizeof (buffer), infile))
+    {
+      if (buffer[0] == '#')
+        continue;
+
+      strings = g_strsplit (buffer, "\t", -1);
+      locale = strings[0];
+      if (!locale[0])
+        locale = "C";
+
+      if (strcmp (locale, current_locale) != 0)
+        {
+          setlocale (LC_CTYPE, locale);
+          current_locale = setlocale (LC_CTYPE, NULL);
+
+          if (strncmp (current_locale, locale, 2) != 0)
+            {
+              g_test_message ("Cannot set locale to %s, skipping", locale);
+              goto next;
+            }
+        }
+
+      test = strings[1];
+
+      /* gen-casemap-txt.py uses an empty string when a single
+       * character doesn't have an equivalent in a particular case;
+       * since that behavior is nonsense for multicharacter strings,
+       * it would make more sense to put the expected result ... the
+       * original character unchanged. But for now, we just work
+       * around it here and take the empty string to mean "same as
+       * original"
+       */
+
+      convert = g_utf8_strup (test, -1);
+      expected = strings[4][0] ? strings[4] : test;
+      g_assert_cmpstr (convert, ==, expected);
+      g_free (convert);
+
+      convert = g_utf8_strdown (test, -1);
+      expected = strings[2][0] ? strings[2] : test;
+      g_assert_cmpstr (convert, ==, expected);
+      g_free (convert);
+
+    next:
+      g_strfreev (strings);
+    }
+
+  fclose (infile);
+
+  g_free (filename);
+  filename = g_test_build_filename (G_TEST_DIST, "casefold.txt", NULL);
+
+  infile = fopen (filename, "r");
+  g_assert (infile != NULL);
+
+  while (fgets (buffer, sizeof (buffer), infile))
+    {
+      if (buffer[0] == '#')
+        continue;
+
+      buffer[strlen (buffer) - 1] = '\0';
+      strings = g_strsplit (buffer, "\t", -1);
+
+      test = strings[0];
+
+      convert = g_utf8_casefold (test, -1);
+      g_assert_cmpstr (convert, ==, strings[1]);
+      g_free (convert);
+
+      g_strfreev (strings);
+    }
+
+  fclose (infile);
+  g_free (filename);
+}
+
 /* Test that g_unichar_ismark() returns the correct value for various
  * ASCII and Unicode alphabetic, numeric, and other, codepoints. */
 static void
@@ -904,6 +1003,11 @@ test_zerowidth (void)
   g_assert_false (g_unichar_iszerowidth (G_UNICODE_LAST_CHAR + 1));
   g_assert_false (g_unichar_iszerowidth (G_UNICODE_LAST_CHAR_PART1));
   g_assert_false (g_unichar_iszerowidth (G_UNICODE_LAST_CHAR_PART1 + 1));
+
+  /* Hangul Jamo Extended-B block, containing jungseong and jongseong for
+   * Old Korean */
+  g_assert_true (g_unichar_iszerowidth (0xD7B0));
+  g_assert_true (g_unichar_iszerowidth (0xD7FB));
 }
 
 /* Test that g_unichar_istitle() returns the correct value for various
@@ -1483,6 +1587,7 @@ test_iso15924 (void)
   } data[] = {
     { G_UNICODE_SCRIPT_COMMON,             "Zyyy" },
     { G_UNICODE_SCRIPT_INHERITED,          "Zinh" },
+    { G_UNICODE_SCRIPT_MATH,               "Zmth" },
     { G_UNICODE_SCRIPT_ARABIC,             "Arab" },
     { G_UNICODE_SCRIPT_ARMENIAN,           "Armn" },
     { G_UNICODE_SCRIPT_BENGALI,            "Beng" },
@@ -1666,6 +1771,13 @@ test_iso15924 (void)
     { G_UNICODE_SCRIPT_DIVES_AKURU,            "Diak" },
     { G_UNICODE_SCRIPT_KHITAN_SMALL_SCRIPT,    "Kits" },
     { G_UNICODE_SCRIPT_YEZIDI,                 "Yezi" },
+
+    /* Unicode 14.0 additions */
+    { G_UNICODE_SCRIPT_CYPRO_MINOAN,           "Cpmn" },
+    { G_UNICODE_SCRIPT_OLD_UYGHUR,             "Ougr" },
+    { G_UNICODE_SCRIPT_TANGSA,                 "Tnsa" },
+    { G_UNICODE_SCRIPT_TOTO,                   "Toto" },
+    { G_UNICODE_SCRIPT_VITHKUQI,               "Vith" }
   };
   guint i;
 
@@ -1708,6 +1820,7 @@ main (int   argc,
   g_test_add_func ("/unicode/break-type", test_unichar_break_type);
   g_test_add_func ("/unicode/canonical-decomposition", test_canonical_decomposition);
   g_test_add_func ("/unicode/casefold", test_casefold);
+  g_test_add_func ("/unicode/casemap_and_casefold", test_casemap_and_casefold);
   g_test_add_func ("/unicode/cases", test_cases);
   g_test_add_func ("/unicode/character-type", test_unichar_character_type);
   g_test_add_func ("/unicode/cntrl", test_cntrl);
index 7a8c374..c137294 100644 (file)
@@ -128,6 +128,10 @@ test_utf8_substring (void)
   r = g_utf8_substring ("abc\xe2\x82\xa0gh\xe2\x82\xa4", 2, 5);
   g_assert_cmpstr (r, ==, "c\xe2\x82\xa0g");
   g_free (r);
+
+  r = g_utf8_substring ("abcd", 1, -1);
+  g_assert_cmpstr (r, ==, "bcd");
+  g_free (r);
 }
 
 static void
index 5fc37a3..41d19ad 100644 (file)
@@ -32,7 +32,7 @@ typedef struct {
   gboolean valid;
 } Test;
 
-Test test[] = {
+static Test global_test[] = {
   /* some tests to check max_len handling */
   /* length 1 */
   { "abcde", -1, 5, TRUE },
@@ -364,10 +364,10 @@ main (int argc, char *argv[])
 
   g_test_init (&argc, &argv, NULL);
 
-  for (i = 0; test[i].text; i++)
+  for (i = 0; global_test[i].text; i++)
     {
       path = g_strdup_printf ("/utf8/validate/%d", i);
-      g_test_add_data_func (path, &test[i], do_test);
+      g_test_add_data_func (path, &global_test[i], do_test);
       g_free (path);
     }
 
index f47e359..11fed55 100644 (file)
@@ -158,6 +158,52 @@ test_appname (void)
   g_assert_cmpstr (appname, ==, "appname");
 }
 
+static gpointer
+thread_prgname_check (gpointer data)
+{
+  gint *n_threads_got_prgname = (gint *) data;
+  const gchar *old_prgname;
+
+  old_prgname = g_get_prgname ();
+  g_assert_cmpstr (old_prgname, ==, "prgname");
+
+  g_atomic_int_inc (n_threads_got_prgname);
+
+  while (g_strcmp0 (g_get_prgname (), "prgname2") != 0);
+
+  return NULL;
+}
+
+static void
+test_prgname_thread_safety (void)
+{
+  gsize i;
+  gint n_threads_got_prgname;
+  GThread *threads[4];
+
+  g_test_bug ("https://gitlab.gnome.org/GNOME/glib/-/issues/847");
+  g_test_summary ("Test that threads racing to get and set the program name "
+                  "always receive a valid program name.");
+
+  g_set_prgname ("prgname");
+  g_atomic_int_set (&n_threads_got_prgname, 0);
+
+  for (i = 0; i < G_N_ELEMENTS (threads); i++)
+    threads[i] = g_thread_new (NULL, thread_prgname_check, &n_threads_got_prgname);
+
+  while (g_atomic_int_get (&n_threads_got_prgname) != G_N_ELEMENTS (threads))
+    g_usleep (50);
+
+  g_set_prgname ("prgname2");
+
+  /* Wait for all the workers to exit. */
+  for (i = 0; i < G_N_ELEMENTS (threads); i++)
+    g_thread_join (threads[i]);
+
+  /* reset prgname */
+  g_set_prgname ("prgname");
+}
+
 static void
 test_tmpdir (void)
 {
@@ -165,6 +211,148 @@ test_tmpdir (void)
   g_assert_cmpstr (g_get_tmp_dir (), !=, "");
 }
 
+#if defined(__GNUC__) && (__GNUC__ >= 4)
+#define TEST_BUILTINS 1
+#else
+#define TEST_BUILTINS 0
+#endif
+
+#if TEST_BUILTINS
+static gint
+builtin_bit_nth_lsf1 (gulong mask, gint nth_bit)
+{
+  if (nth_bit >= 0)
+    {
+      if (G_LIKELY (nth_bit < GLIB_SIZEOF_LONG * 8 - 1))
+        mask &= -(1UL << (nth_bit + 1));
+      else
+        mask = 0;
+    }
+  return __builtin_ffsl (mask) - 1;
+}
+
+static gint
+builtin_bit_nth_lsf2 (gulong mask, gint nth_bit)
+{
+  if (nth_bit >= 0)
+    {
+      if (G_LIKELY (nth_bit < GLIB_SIZEOF_LONG * 8 - 1))
+        mask &= -(1UL << (nth_bit + 1));
+      else
+        mask = 0;
+    }
+  return mask ? __builtin_ctzl (mask) : -1;
+}
+
+static gint
+builtin_bit_nth_msf (gulong mask, gint nth_bit)
+{
+  if (nth_bit >= 0 && nth_bit < GLIB_SIZEOF_LONG * 8)
+    mask &= (1UL << nth_bit) - 1;
+  return mask ? GLIB_SIZEOF_LONG * 8 - 1 - __builtin_clzl (mask) : -1;
+}
+
+static guint
+builtin_bit_storage (gulong number)
+{
+  return number ? GLIB_SIZEOF_LONG * 8 - __builtin_clzl (number) : 1;
+}
+#endif
+
+static gint
+naive_bit_nth_lsf (gulong mask, gint nth_bit)
+{
+  if (G_UNLIKELY (nth_bit < -1))
+    nth_bit = -1;
+  while (nth_bit < ((GLIB_SIZEOF_LONG * 8) - 1))
+    {
+      nth_bit++;
+      if (mask & (1UL << nth_bit))
+        return nth_bit;
+    }
+  return -1;
+}
+
+static gint
+naive_bit_nth_msf (gulong mask, gint nth_bit)
+{
+  if (nth_bit < 0 || G_UNLIKELY (nth_bit > GLIB_SIZEOF_LONG * 8))
+    nth_bit = GLIB_SIZEOF_LONG * 8;
+  while (nth_bit > 0)
+    {
+      nth_bit--;
+      if (mask & (1UL << nth_bit))
+        return nth_bit;
+    }
+  return -1;
+}
+
+static guint
+naive_bit_storage (gulong number)
+{
+  guint n_bits = 0;
+
+  do
+    {
+      n_bits++;
+      number >>= 1;
+    }
+  while (number);
+  return n_bits;
+}
+
+static void
+test_basic_bits (void)
+{
+  gulong i;
+  gint nth_bit;
+
+  /* we loop like this: 0, -1, 1, -2, 2, -3, 3, ... */
+  for (i = 0; (glong) i < 1500; i = -(i + ((glong) i >= 0)))
+    {
+      guint naive_bit_storage_i = naive_bit_storage (i);
+
+      /* Test the g_bit_*() implementations against the compiler builtins (if
+       * available), and against a slow-but-correct ‘naive’ implementation.
+       * They should all agree.
+       *
+       * The macro and function versions of the g_bit_*() functions are tested,
+       * hence one call with the function name in brackets (to avoid it being
+       * expanded as a macro). */
+#if TEST_BUILTINS
+      g_assert_cmpint (naive_bit_storage_i, ==, builtin_bit_storage (i));
+#endif
+      g_assert_cmpint (naive_bit_storage_i, ==, g_bit_storage (i));
+      g_assert_cmpint (naive_bit_storage_i, ==, (g_bit_storage) (i));
+
+      for (nth_bit = -3; nth_bit <= 2 + GLIB_SIZEOF_LONG * 8; nth_bit++)
+        {
+          gint naive_bit_nth_lsf_i_nth_bit = naive_bit_nth_lsf (i, nth_bit);
+          gint naive_bit_nth_msf_i_nth_bit = naive_bit_nth_msf (i, nth_bit);
+
+#if TEST_BUILTINS
+          g_assert_cmpint (naive_bit_nth_lsf_i_nth_bit, ==,
+                           builtin_bit_nth_lsf1 (i, nth_bit));
+          g_assert_cmpint (naive_bit_nth_lsf_i_nth_bit, ==,
+                           builtin_bit_nth_lsf2 (i, nth_bit));
+#endif
+          g_assert_cmpint (naive_bit_nth_lsf_i_nth_bit, ==,
+                           g_bit_nth_lsf (i, nth_bit));
+          g_assert_cmpint (naive_bit_nth_lsf_i_nth_bit, ==,
+                           (g_bit_nth_lsf) (i, nth_bit));
+
+#if TEST_BUILTINS
+          g_assert_cmpint (naive_bit_nth_msf_i_nth_bit, ==,
+                           builtin_bit_nth_msf (i, nth_bit));
+#endif
+          g_assert_cmpint (naive_bit_nth_msf_i_nth_bit, ==,
+                           g_bit_nth_msf (i, nth_bit));
+          g_assert_cmpint (naive_bit_nth_msf_i_nth_bit, ==,
+                           (g_bit_nth_msf) (i, nth_bit));
+        }
+    }
+}
+
 static void
 test_bits (void)
 {
@@ -405,17 +593,6 @@ test_console_charset (void)
 #endif
 }
 
-static void
-test_basename (void)
-{
-  const gchar *path = "/path/to/a/file/deep/down.sh";
-  const gchar *b;
-
-  b = g_basename (path);
-
-  g_assert_cmpstr (b, ==, "down.sh");
-}
-
 extern const gchar *glib_pgettext (const gchar *msgidctxt, gsize msgidoffset);
 
 static void
@@ -500,6 +677,15 @@ test_xdg_dirs (void)
   g_assert_cmpstr (dir, ==, xdg);
   g_free (xdg);
 
+  xdg = g_strdup (g_getenv ("XDG_STATE_HOME"));
+  if (!xdg)
+    xdg = g_build_filename (g_get_home_dir (), ".local/state", NULL);
+
+  dir = g_get_user_state_dir ();
+
+  g_assert_cmpstr (dir, ==, xdg);
+  g_free (xdg);
+
   xdg = g_strdup (g_getenv ("XDG_RUNTIME_DIR"));
   if (!xdg)
     xdg = g_strdup (g_get_user_cache_dir ());
@@ -553,7 +739,7 @@ test_os_info (void)
 {
   gchar *name;
   gchar *contents = NULL;
-#ifdef G_OS_UNIX
+#if defined (G_OS_UNIX) && !(defined (G_OS_WIN32) || defined (__APPLE__))
   struct utsname info;
 #endif
 
@@ -719,6 +905,101 @@ test_misc_mem (void)
 }
 
 static void
+aligned_alloc_nz (void)
+{
+  gpointer a;
+
+  /* Test an alignment that’s zero */
+  a = g_aligned_alloc (16, sizeof(char), 0);
+  g_aligned_free (a);
+  exit (0);
+}
+
+static void
+aligned_alloc_npot (void)
+{
+  gpointer a;
+
+  /* Test an alignment that’s not a power of two */
+  a = g_aligned_alloc (16, sizeof(char), 15);
+  g_aligned_free (a);
+  exit (0);
+}
+
+static void
+aligned_alloc_nmov (void)
+{
+  gpointer a;
+
+  /* Test an alignment that’s not a multiple of sizeof(void*) */
+  a = g_aligned_alloc (16, sizeof(char), sizeof(void *) / 2);
+  g_aligned_free (a);
+  exit (0);
+}
+
+static void
+test_aligned_mem (void)
+{
+  gpointer a;
+
+  g_test_summary ("Aligned memory allocator");
+
+  a = g_aligned_alloc (0, sizeof(int), 8);
+  g_assert_null (a);
+
+  a = g_aligned_alloc0 (0, sizeof(int), 8);
+  g_assert_null (a);
+
+  a = g_aligned_alloc (16, 0, 8);
+  g_assert_null (a);
+
+#define CHECK_SUBPROCESS_FAIL(name,msg) do { \
+      if (g_test_undefined ()) \
+        { \
+          g_test_message (msg); \
+          g_test_trap_subprocess ("/utils/aligned-mem/subprocess/" #name, 0, 0); \
+          g_test_trap_assert_failed (); \
+        } \
+    } while (0)
+
+  CHECK_SUBPROCESS_FAIL (aligned_alloc_nz, "Alignment must not be zero");
+  CHECK_SUBPROCESS_FAIL (aligned_alloc_npot, "Alignment must be a power of two");
+  CHECK_SUBPROCESS_FAIL (aligned_alloc_nmov, "Alignment must be a multiple of sizeof(void*)");
+}
+
+static void
+test_aligned_mem_alignment (void)
+{
+  gchar *p;
+
+  g_test_summary ("Check that g_aligned_alloc() returns a correctly aligned pointer");
+
+  p = g_aligned_alloc (5, sizeof (*p), 256);
+  g_assert_nonnull (p);
+  g_assert_cmpuint (((guintptr) p) % 256, ==, 0);
+
+  g_aligned_free (p);
+}
+
+static void
+test_aligned_mem_zeroed (void)
+{
+  gsize n_blocks = 10;
+  guint *p;
+  gsize i;
+
+  g_test_summary ("Check that g_aligned_alloc0() zeroes out its allocation");
+
+  p = g_aligned_alloc0 (n_blocks, sizeof (*p), 16);
+  g_assert_nonnull (p);
+
+  for (i = 0; i < n_blocks; i++)
+    g_assert_cmpuint (p[i], ==, 0);
+
+  g_aligned_free (p);
+}
+
+static void
 test_nullify (void)
 {
   gpointer p = &test_nullify;
@@ -860,7 +1141,9 @@ main (int   argc,
   g_test_add_func ("/utils/locale-variants", test_locale_variants);
   g_test_add_func ("/utils/version", test_version);
   g_test_add_func ("/utils/appname", test_appname);
+  g_test_add_func ("/utils/prgname-thread-safety", test_prgname_thread_safety);
   g_test_add_func ("/utils/tmpdir", test_tmpdir);
+  g_test_add_func ("/utils/basic_bits", test_basic_bits);
   g_test_add_func ("/utils/bits", test_bits);
   g_test_add_func ("/utils/swap", test_swap);
   g_test_add_func ("/utils/find-program", test_find_program);
@@ -868,7 +1151,6 @@ main (int   argc,
   g_test_add_func ("/utils/codeset", test_codeset);
   g_test_add_func ("/utils/codeset2", test_codeset2);
   g_test_add_func ("/utils/console-charset", test_console_charset);
-  g_test_add_func ("/utils/basename", test_basename);
   g_test_add_func ("/utils/gettext", test_gettext);
   g_test_add_func ("/utils/username", test_username);
   g_test_add_func ("/utils/realname", test_realname);
@@ -885,6 +1167,12 @@ main (int   argc,
   g_test_add_func ("/utils/take-pointer", test_take_pointer);
   g_test_add_func ("/utils/clear-source", test_clear_source);
   g_test_add_func ("/utils/misc-mem", test_misc_mem);
+  g_test_add_func ("/utils/aligned-mem", test_aligned_mem);
+  g_test_add_func ("/utils/aligned-mem/subprocess/aligned_alloc_nz", aligned_alloc_nz);
+  g_test_add_func ("/utils/aligned-mem/subprocess/aligned_alloc_npot", aligned_alloc_npot);
+  g_test_add_func ("/utils/aligned-mem/subprocess/aligned_alloc_nmov", aligned_alloc_nmov);
+  g_test_add_func ("/utils/aligned-mem/alignment", test_aligned_mem_alignment);
+  g_test_add_func ("/utils/aligned-mem/zeroed", test_aligned_mem_zeroed);
   g_test_add_func ("/utils/nullify", test_nullify);
   g_test_add_func ("/utils/atexit", test_atexit);
   g_test_add_func ("/utils/check-setuid", test_check_setuid);
index 605e5f0..7c78e78 100644 (file)
@@ -1680,7 +1680,7 @@ utf32_wctomb(csconv_t *cv, ushort *wbuf, int wbufsize, uchar *buf, int bufsize)
  * Use MLang instead.
  */
 
-#define ISO2022_MODE(cs, shift) (((cs) << 8) | (shift))
+#define ISO2022_MODE(cs, shift) ((((DWORD) cs) << 8) | (shift))
 #define ISO2022_MODE_CS(mode) (((mode) >> 8) & 0xFF)
 #define ISO2022_MODE_SHIFT(mode) ((mode) & 0xFF)
 
@@ -2034,7 +2034,8 @@ main(int argc, char **argv)
 
     if (fromcode == NULL || tocode == NULL)
     {
-        printf("usage: %s [-c] -f from-enc -t to-enc [file]\n", argv[0]);
+        printf("usage: %s [-c] -f from-enc -t to-enc [file]\n",
+               (argc > 0) ? argv[0] : "win_iconv");
         return 0;
     }
 
index 4a4e279..c722c44 100644 (file)
@@ -477,7 +477,7 @@ static GRecMutex g_module_global_lock;
  * If that fails and @file_name has the ".la"-suffix (and is a libtool
  * archive) it tries to open the corresponding module. If that fails
  * and it doesn't have the proper module suffix for the platform
- * (#G_MODULE_SUFFIX), this suffix will be appended and the corresponding
+ * (%G_MODULE_SUFFIX), this suffix will be appended and the corresponding
  * module will be opened. If that fails and @file_name doesn't have the
  * ".la"-suffix, this suffix is appended and g_module_open_full() tries to open
  * the corresponding module. If eventually that fails as well, %NULL is
@@ -782,7 +782,7 @@ g_module_error (void)
  * @symbol: (out): returns the pointer to the symbol value
  *
  * Gets a symbol pointer from a module, such as one exported
- * by #G_MODULE_EXPORT. Note that a valid symbol can be %NULL.
+ * by %G_MODULE_EXPORT. Note that a valid symbol can be %NULL.
  *
  * Returns: %TRUE on success
  */
index b1a5a11..e4c1023 100644 (file)
@@ -30,7 +30,7 @@ if g_module_impl == 'G_MODULE_IMPL_DL'
     rres = cc.run(dlopen_dlsym_test_code,
                   dependencies : libdl_dep,
                   name : 'dlsym() preceding underscores')
-    if host_system == 'windows' or rres.returncode() == 0
+    if host_system == 'windows' or (rres.compiled() and rres.returncode() == 0)
       g_module_need_uscore = 1
     endif
   else
@@ -59,9 +59,14 @@ gmoduleconf_h = configure_file(input : 'gmoduleconf.h.in',
                                output : 'gmoduleconf.h',
                                configuration : gmoduleconf_conf)
 
-install_headers(['gmodule.h'], subdir : 'glib-2.0')
+# Expose as variable to be used by gobject-introspection
+# when it includes GLib as a subproject
+gmodule_h = files('gmodule.h')
+gmodule_c = files('gmodule.c')
 
-gmodule_sources = ['gmodule.c']
+install_headers([gmodule_h], subdir : 'glib-2.0')
+
+gmodule_sources = [gmodule_c]
 if host_system == 'windows'
   gmodule_win_rc = configure_file(
     input: 'gmodule.rc.in',
@@ -126,3 +131,7 @@ if meson.version().version_compare('>=0.54.0')
   meson.override_dependency('gmodule-export-2.0', libgmodule_dep)
   meson.override_dependency('gmodule-2.0', libgmodule_dep)
 endif
+
+if build_tests
+  subdir('tests')
+endif
diff --git a/gmodule/tests/cxx.cpp b/gmodule/tests/cxx.cpp
new file mode 100644 (file)
index 0000000..85242c5
--- /dev/null
@@ -0,0 +1,26 @@
+/* Copyright (C) 2001 Sebastian Wilhelmi <wilhelmi@google.com>
+ *
+ * This library 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 library 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/>.
+ */
+
+/* A trivial C++ program to be compiled in C++ mode, which
+ * smoketests that the GModule headers are valid C++ headers. */
+
+#include <gmodule.h>
+
+int
+main ()
+{
+  return 0;
+}
diff --git a/gmodule/tests/meson.build b/gmodule/tests/meson.build
new file mode 100644 (file)
index 0000000..9b475a8
--- /dev/null
@@ -0,0 +1,45 @@
+gmodule_tests = {
+  'cxx' : {
+    'source' : ['cxx.cpp'],
+  },
+}
+
+test_env = environment()
+test_env.set('G_TEST_SRCDIR', meson.current_source_dir())
+test_env.set('G_TEST_BUILDDIR', meson.current_build_dir())
+test_env.set('G_DEBUG', 'gc-friendly')
+test_env.set('MALLOC_CHECK_', '2')
+test_env.set('MALLOC_PERTURB_', '@0@'.format(random_number % 256))
+
+test_deps = [libm, thread_dep, libglib_dep, libgmodule_dep]
+test_cargs = ['-DG_LOG_DOMAIN="GModule"', '-UG_DISABLE_ASSERT']
+
+foreach test_name, extra_args : gmodule_tests
+  source = extra_args.get('source', test_name + '.c')
+  install = installed_tests_enabled and extra_args.get('install', true)
+
+  if install
+    test_conf = configuration_data()
+    test_conf.set('installed_tests_dir', installed_tests_execdir)
+    test_conf.set('program', test_name)
+    test_conf.set('env', '')
+    configure_file(
+      input: installed_tests_template_tap,
+      output: test_name + '.test',
+      install_dir: installed_tests_metadir,
+      configuration: test_conf
+    )
+  endif
+
+  exe = executable(test_name, source,
+    c_args : test_cargs + extra_args.get('c_args', []),
+    link_args : extra_args.get('link_args', []),
+    dependencies : test_deps + extra_args.get('dependencies', []),
+    install_dir: installed_tests_execdir,
+    install: install,
+  )
+
+  suite = ['gmodule'] + extra_args.get('suite', [])
+  timeout = suite.contains('slow') ? test_timeout_slow : test_timeout
+  test(test_name, exe, env : test_env, timeout : timeout, suite : suite)
+endforeach
diff --git a/gobject/gbindinggroup.c b/gobject/gbindinggroup.c
new file mode 100644 (file)
index 0000000..e5c8980
--- /dev/null
@@ -0,0 +1,679 @@
+/* GObject - GLib Type, Object, Parameter and Signal Library
+ *
+ * Copyright (C) 2015-2022 Christian Hergert <christian@hergert.me>
+ * Copyright (C) 2015 Garrett Regier <garrettregier@gmail.com>
+ *
+ * This library 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 library 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/>.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+#include "config.h"
+#include "glib.h"
+#include "glibintl.h"
+
+#include "gbindinggroup.h"
+#include "gparamspecs.h"
+
+/**
+ * SECTION:gbindinggroup
+ * @Title: GBindingGroup
+ * @Short_description: Binding multiple properties as a group
+ * @include: glib-object.h
+ *
+ * The #GBindingGroup can be used to bind multiple properties
+ * from an object collectively.
+ *
+ * Use the various methods to bind properties from a single source
+ * object to multiple destination objects. Properties can be bound
+ * bidirectionally and are connected when the source object is set
+ * with g_binding_group_set_source().
+ *
+ * Since: 2.72
+ */
+
+#if 0
+# define DEBUG_BINDINGS
+#endif
+
+struct _GBindingGroup
+{
+  GObject    parent_instance;
+  GMutex     mutex;
+  GObject   *source;         /* (owned weak) */
+  GPtrArray *lazy_bindings;  /* (owned) (element-type LazyBinding) */
+};
+
+typedef struct _GBindingGroupClass
+{
+  GObjectClass parent_class;
+} GBindingGroupClass;
+
+typedef struct
+{
+  GBindingGroup      *group;  /* (unowned) */
+  const char         *source_property;  /* (interned) */
+  const char         *target_property;  /* (interned) */
+  GObject            *target;  /* (owned weak) */
+  GBinding           *binding;  /* (unowned) */
+  gpointer            user_data;
+  GDestroyNotify      user_data_destroy;
+  gpointer            transform_to;  /* (nullable) (owned) */
+  gpointer            transform_from;  /* (nullable) (owned) */
+  GBindingFlags       binding_flags;
+  guint               using_closures : 1;
+} LazyBinding;
+
+G_DEFINE_TYPE (GBindingGroup, g_binding_group, G_TYPE_OBJECT)
+
+typedef enum
+{
+  PROP_SOURCE = 1,
+  N_PROPS
+} GBindingGroupProperty;
+
+static void lazy_binding_free (gpointer data);
+
+static GParamSpec *properties[N_PROPS];
+
+static void
+g_binding_group_connect (GBindingGroup *self,
+                         LazyBinding   *lazy_binding)
+{
+  GBinding *binding;
+
+  g_assert (G_IS_BINDING_GROUP (self));
+  g_assert (self->source != NULL);
+  g_assert (lazy_binding != NULL);
+  g_assert (lazy_binding->binding == NULL);
+  g_assert (lazy_binding->target != NULL);
+  g_assert (lazy_binding->target_property != NULL);
+  g_assert (lazy_binding->source_property != NULL);
+
+#ifdef DEBUG_BINDINGS
+  {
+    GFlagsClass *flags_class;
+    g_autofree gchar *flags_str = NULL;
+
+    flags_class = g_type_class_ref (G_TYPE_BINDING_FLAGS);
+    flags_str = g_flags_to_string (flags_class, lazy_binding->binding_flags);
+
+    g_print ("Binding %s(%p):%s to %s(%p):%s (flags=%s)\n",
+             G_OBJECT_TYPE_NAME (self->source),
+             self->source,
+             lazy_binding->source_property,
+             G_OBJECT_TYPE_NAME (lazy_binding->target),
+             lazy_binding->target,
+             lazy_binding->target_property,
+             flags_str);
+
+    g_type_class_unref (flags_class);
+  }
+#endif
+
+  if (!lazy_binding->using_closures)
+    binding = g_object_bind_property_full (self->source,
+                                           lazy_binding->source_property,
+                                           lazy_binding->target,
+                                           lazy_binding->target_property,
+                                           lazy_binding->binding_flags,
+                                           lazy_binding->transform_to,
+                                           lazy_binding->transform_from,
+                                           lazy_binding->user_data,
+                                           NULL);
+  else
+    binding = g_object_bind_property_with_closures (self->source,
+                                                    lazy_binding->source_property,
+                                                    lazy_binding->target,
+                                                    lazy_binding->target_property,
+                                                    lazy_binding->binding_flags,
+                                                    lazy_binding->transform_to,
+                                                    lazy_binding->transform_from);
+
+  lazy_binding->binding = binding;
+}
+
+static void
+g_binding_group_disconnect (LazyBinding *lazy_binding)
+{
+  g_assert (lazy_binding != NULL);
+
+  if (lazy_binding->binding != NULL)
+    {
+      g_binding_unbind (lazy_binding->binding);
+      lazy_binding->binding = NULL;
+    }
+}
+
+static void
+g_binding_group__source_weak_notify (gpointer  data,
+                                     GObject  *where_object_was)
+{
+  GBindingGroup *self = data;
+  guint i;
+
+  g_assert (G_IS_BINDING_GROUP (self));
+
+  g_mutex_lock (&self->mutex);
+
+  self->source = NULL;
+
+  for (i = 0; i < self->lazy_bindings->len; i++)
+    {
+      LazyBinding *lazy_binding = g_ptr_array_index (self->lazy_bindings, i);
+
+      lazy_binding->binding = NULL;
+    }
+
+  g_mutex_unlock (&self->mutex);
+}
+
+static void
+g_binding_group__target_weak_notify (gpointer  data,
+                                     GObject  *where_object_was)
+{
+  GBindingGroup *self = data;
+  LazyBinding *to_free = NULL;
+  guint i;
+
+  g_assert (G_IS_BINDING_GROUP (self));
+
+  g_mutex_lock (&self->mutex);
+
+  for (i = 0; i < self->lazy_bindings->len; i++)
+    {
+      LazyBinding *lazy_binding = g_ptr_array_index (self->lazy_bindings, i);
+
+      if (lazy_binding->target == where_object_was)
+        {
+          lazy_binding->target = NULL;
+          lazy_binding->binding = NULL;
+
+          to_free = g_ptr_array_steal_index_fast (self->lazy_bindings, i);
+          break;
+        }
+    }
+
+  g_mutex_unlock (&self->mutex);
+
+  if (to_free != NULL)
+    lazy_binding_free (to_free);
+}
+
+static void
+lazy_binding_free (gpointer data)
+{
+  LazyBinding *lazy_binding = data;
+
+  if (lazy_binding->target != NULL)
+    {
+      g_object_weak_unref (lazy_binding->target,
+                           g_binding_group__target_weak_notify,
+                           lazy_binding->group);
+      lazy_binding->target = NULL;
+    }
+
+  g_binding_group_disconnect (lazy_binding);
+
+  lazy_binding->group = NULL;
+  lazy_binding->source_property = NULL;
+  lazy_binding->target_property = NULL;
+
+  if (lazy_binding->user_data_destroy)
+    lazy_binding->user_data_destroy (lazy_binding->user_data);
+
+  if (lazy_binding->using_closures)
+    {
+      g_clear_pointer (&lazy_binding->transform_to, g_closure_unref);
+      g_clear_pointer (&lazy_binding->transform_from, g_closure_unref);
+    }
+
+  g_slice_free (LazyBinding, lazy_binding);
+}
+
+static void
+g_binding_group_dispose (GObject *object)
+{
+  GBindingGroup *self = (GBindingGroup *)object;
+  LazyBinding **lazy_bindings = NULL;
+  gsize len = 0;
+  gsize i;
+
+  g_assert (G_IS_BINDING_GROUP (self));
+
+  g_mutex_lock (&self->mutex);
+
+  if (self->source != NULL)
+    {
+      g_object_weak_unref (self->source,
+                           g_binding_group__source_weak_notify,
+                           self);
+      self->source = NULL;
+    }
+
+  if (self->lazy_bindings->len > 0)
+    lazy_bindings = (LazyBinding **)g_ptr_array_steal (self->lazy_bindings, &len);
+
+  g_mutex_unlock (&self->mutex);
+
+  /* Free bindings without holding self->mutex to avoid re-entrancy
+   * from collateral damage through release of binding closure data,
+   * GDataList, etc.
+   */
+  for (i = 0; i < len; i++)
+    lazy_binding_free (lazy_bindings[i]);
+  g_free (lazy_bindings);
+
+  G_OBJECT_CLASS (g_binding_group_parent_class)->dispose (object);
+}
+
+static void
+g_binding_group_finalize (GObject *object)
+{
+  GBindingGroup *self = (GBindingGroup *)object;
+
+  g_assert (self->lazy_bindings != NULL);
+  g_assert (self->lazy_bindings->len == 0);
+
+  g_clear_pointer (&self->lazy_bindings, g_ptr_array_unref);
+  g_mutex_clear (&self->mutex);
+
+  G_OBJECT_CLASS (g_binding_group_parent_class)->finalize (object);
+}
+
+static void
+g_binding_group_get_property (GObject    *object,
+                              guint       prop_id,
+                              GValue     *value,
+                              GParamSpec *pspec)
+{
+  GBindingGroup *self = G_BINDING_GROUP (object);
+
+  switch ((GBindingGroupProperty) prop_id)
+    {
+    case PROP_SOURCE:
+      g_value_take_object (value, g_binding_group_dup_source (self));
+      break;
+
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+    }
+}
+
+static void
+g_binding_group_set_property (GObject      *object,
+                              guint         prop_id,
+                              const GValue *value,
+                              GParamSpec   *pspec)
+{
+  GBindingGroup *self = G_BINDING_GROUP (object);
+
+  switch ((GBindingGroupProperty) prop_id)
+    {
+    case PROP_SOURCE:
+      g_binding_group_set_source (self, g_value_get_object (value));
+      break;
+
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+    }
+}
+
+static void
+g_binding_group_class_init (GBindingGroupClass *klass)
+{
+  GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+  object_class->dispose = g_binding_group_dispose;
+  object_class->finalize = g_binding_group_finalize;
+  object_class->get_property = g_binding_group_get_property;
+  object_class->set_property = g_binding_group_set_property;
+
+  /**
+   * GBindingGroup:source: (nullable)
+   *
+   * The source object used for binding properties.
+   *
+   * Since: 2.72
+   */
+  properties[PROP_SOURCE] =
+      g_param_spec_object ("source",
+                           "Source",
+                           "The source GObject used for binding properties.",
+                           G_TYPE_OBJECT,
+                           (G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS));
+
+  g_object_class_install_properties (object_class, N_PROPS, properties);
+}
+
+static void
+g_binding_group_init (GBindingGroup *self)
+{
+  g_mutex_init (&self->mutex);
+  self->lazy_bindings = g_ptr_array_new_with_free_func (lazy_binding_free);
+}
+
+/**
+ * g_binding_group_new:
+ *
+ * Creates a new #GBindingGroup.
+ *
+ * Returns: (transfer full): a new #GBindingGroup
+ *
+ * Since: 2.72
+ */
+GBindingGroup *
+g_binding_group_new (void)
+{
+  return g_object_new (G_TYPE_BINDING_GROUP, NULL);
+}
+
+/**
+ * g_binding_group_dup_source:
+ * @self: the #GBindingGroup
+ *
+ * Gets the source object used for binding properties.
+ *
+ * Returns: (transfer none) (nullable) (type GObject): a #GObject or %NULL.
+ *
+ * Since: 2.72
+ */
+gpointer
+g_binding_group_dup_source (GBindingGroup *self)
+{
+  GObject *source;
+
+  g_return_val_if_fail (G_IS_BINDING_GROUP (self), NULL);
+
+  g_mutex_lock (&self->mutex);
+  source = self->source ? g_object_ref (self->source) : NULL;
+  g_mutex_unlock (&self->mutex);
+
+  return source;
+}
+
+static gboolean
+g_binding_group_check_source (GBindingGroup *self,
+                              gpointer       source)
+{
+  guint i;
+
+  g_assert (G_IS_BINDING_GROUP (self));
+  g_assert (!source || G_IS_OBJECT (source));
+
+  for (i = 0; i < self->lazy_bindings->len; i++)
+    {
+      LazyBinding *lazy_binding = g_ptr_array_index (self->lazy_bindings, i);
+
+      g_return_val_if_fail (g_object_class_find_property (G_OBJECT_GET_CLASS (source),
+                                                          lazy_binding->source_property) != NULL,
+                            FALSE);
+    }
+
+  return TRUE;
+}
+
+/**
+ * g_binding_group_set_source:
+ * @self: the #GBindingGroup
+ * @source: (type GObject) (nullable) (transfer none): the source #GObject,
+ *   or %NULL to clear it
+ *
+ * Sets @source as the source object used for creating property
+ * bindings. If there is already a source object all bindings from it
+ * will be removed.
+ *
+ * Note that all properties that have been bound must exist on @source.
+ *
+ * Since: 2.72
+ */
+void
+g_binding_group_set_source (GBindingGroup *self,
+                            gpointer       source)
+{
+  gboolean notify = FALSE;
+
+  g_return_if_fail (G_IS_BINDING_GROUP (self));
+  g_return_if_fail (!source || G_IS_OBJECT (source));
+  g_return_if_fail (source != (gpointer) self);
+
+  g_mutex_lock (&self->mutex);
+
+  if (source == (gpointer) self->source)
+    goto unlock;
+
+  if (self->source != NULL)
+    {
+      guint i;
+
+      g_object_weak_unref (self->source,
+                           g_binding_group__source_weak_notify,
+                           self);
+      self->source = NULL;
+
+      for (i = 0; i < self->lazy_bindings->len; i++)
+        {
+          LazyBinding *lazy_binding = g_ptr_array_index (self->lazy_bindings, i);
+
+          g_binding_group_disconnect (lazy_binding);
+        }
+    }
+
+  if (source != NULL && g_binding_group_check_source (self, source))
+    {
+      guint i;
+
+      self->source = source;
+      g_object_weak_ref (self->source,
+                         g_binding_group__source_weak_notify,
+                         self);
+
+      for (i = 0; i < self->lazy_bindings->len; i++)
+        {
+          LazyBinding *lazy_binding;
+
+          lazy_binding = g_ptr_array_index (self->lazy_bindings, i);
+          g_binding_group_connect (self, lazy_binding);
+        }
+    }
+
+  notify = TRUE;
+
+unlock:
+  g_mutex_unlock (&self->mutex);
+
+  if (notify)
+    g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_SOURCE]);
+}
+
+static void
+g_binding_group_bind_helper (GBindingGroup  *self,
+                             const gchar    *source_property,
+                             gpointer        target,
+                             const gchar    *target_property,
+                             GBindingFlags   flags,
+                             gpointer        transform_to,
+                             gpointer        transform_from,
+                             gpointer        user_data,
+                             GDestroyNotify  user_data_destroy,
+                             gboolean        using_closures)
+{
+  LazyBinding *lazy_binding;
+
+  g_return_if_fail (G_IS_BINDING_GROUP (self));
+  g_return_if_fail (source_property != NULL);
+  g_return_if_fail (self->source == NULL ||
+                    g_object_class_find_property (G_OBJECT_GET_CLASS (self->source),
+                                                  source_property) != NULL);
+  g_return_if_fail (G_IS_OBJECT (target));
+  g_return_if_fail (target_property != NULL);
+  g_return_if_fail (g_object_class_find_property (G_OBJECT_GET_CLASS (target),
+                                                  target_property) != NULL);
+  g_return_if_fail (target != (gpointer) self ||
+                    strcmp (source_property, target_property) != 0);
+
+  g_mutex_lock (&self->mutex);
+
+  lazy_binding = g_slice_new0 (LazyBinding);
+  lazy_binding->group = self;
+  lazy_binding->source_property = g_intern_string (source_property);
+  lazy_binding->target_property = g_intern_string (target_property);
+  lazy_binding->target = target;
+  lazy_binding->binding_flags = flags | G_BINDING_SYNC_CREATE;
+  lazy_binding->user_data = user_data;
+  lazy_binding->user_data_destroy = user_data_destroy;
+  lazy_binding->transform_to = transform_to;
+  lazy_binding->transform_from = transform_from;
+
+  if (using_closures)
+    {
+      lazy_binding->using_closures = TRUE;
+
+      if (transform_to != NULL)
+        g_closure_sink (g_closure_ref (transform_to));
+
+      if (transform_from != NULL)
+        g_closure_sink (g_closure_ref (transform_from));
+    }
+
+  g_object_weak_ref (target,
+                     g_binding_group__target_weak_notify,
+                     self);
+
+  g_ptr_array_add (self->lazy_bindings, lazy_binding);
+
+  if (self->source != NULL)
+    g_binding_group_connect (self, lazy_binding);
+
+  g_mutex_unlock (&self->mutex);
+}
+
+/**
+ * g_binding_group_bind:
+ * @self: the #GBindingGroup
+ * @source_property: the property on the source to bind
+ * @target: (type GObject) (transfer none) (not nullable): the target #GObject
+ * @target_property: the property on @target to bind
+ * @flags: the flags used to create the #GBinding
+ *
+ * Creates a binding between @source_property on the source object
+ * and @target_property on @target. Whenever the @source_property
+ * is changed the @target_property is updated using the same value.
+ * The binding flag %G_BINDING_SYNC_CREATE is automatically specified.
+ *
+ * See g_object_bind_property() for more information.
+ *
+ * Since: 2.72
+ */
+void
+g_binding_group_bind (GBindingGroup *self,
+                      const gchar   *source_property,
+                      gpointer       target,
+                      const gchar   *target_property,
+                      GBindingFlags  flags)
+{
+  g_binding_group_bind_full (self, source_property,
+                             target, target_property,
+                             flags,
+                             NULL, NULL,
+                             NULL, NULL);
+}
+
+/**
+ * g_binding_group_bind_full:
+ * @self: the #GBindingGroup
+ * @source_property: the property on the source to bind
+ * @target: (type GObject) (transfer none) (not nullable): the target #GObject
+ * @target_property: the property on @target to bind
+ * @flags: the flags used to create the #GBinding
+ * @transform_to: (scope notified) (nullable): the transformation function
+ *     from the source object to the @target, or %NULL to use the default
+ * @transform_from: (scope notified) (nullable): the transformation function
+ *     from the @target to the source object, or %NULL to use the default
+ * @user_data: custom data to be passed to the transformation
+ *             functions, or %NULL
+ * @user_data_destroy: function to be called when disposing the binding,
+ *     to free the resources used by the transformation functions
+ *
+ * Creates a binding between @source_property on the source object and
+ * @target_property on @target, allowing you to set the transformation
+ * functions to be used by the binding. The binding flag
+ * %G_BINDING_SYNC_CREATE is automatically specified.
+ *
+ * See g_object_bind_property_full() for more information.
+ *
+ * Since: 2.72
+ */
+void
+g_binding_group_bind_full (GBindingGroup         *self,
+                           const gchar           *source_property,
+                           gpointer               target,
+                           const gchar           *target_property,
+                           GBindingFlags          flags,
+                           GBindingTransformFunc  transform_to,
+                           GBindingTransformFunc  transform_from,
+                           gpointer               user_data,
+                           GDestroyNotify         user_data_destroy)
+{
+  g_binding_group_bind_helper (self, source_property,
+                               target, target_property,
+                               flags,
+                               transform_to, transform_from,
+                               user_data, user_data_destroy,
+                               FALSE);
+}
+
+/**
+ * g_binding_group_bind_with_closures: (rename-to g_binding_group_bind_full)
+ * @self: the #GBindingGroup
+ * @source_property: the property on the source to bind
+ * @target: (type GObject) (transfer none) (not nullable): the target #GObject
+ * @target_property: the property on @target to bind
+ * @flags: the flags used to create the #GBinding
+ * @transform_to: (nullable) (transfer none): a #GClosure wrapping the
+ *     transformation function from the source object to the @target,
+ *     or %NULL to use the default
+ * @transform_from: (nullable) (transfer none): a #GClosure wrapping the
+ *     transformation function from the @target to the source object,
+ *     or %NULL to use the default
+ *
+ * Creates a binding between @source_property on the source object and
+ * @target_property on @target, allowing you to set the transformation
+ * functions to be used by the binding. The binding flag
+ * %G_BINDING_SYNC_CREATE is automatically specified.
+ *
+ * This function is the language bindings friendly version of
+ * g_binding_group_bind_property_full(), using #GClosures
+ * instead of function pointers.
+ *
+ * See g_object_bind_property_with_closures() for more information.
+ *
+ * Since: 2.72
+ */
+void
+g_binding_group_bind_with_closures (GBindingGroup *self,
+                                    const gchar   *source_property,
+                                    gpointer       target,
+                                    const gchar   *target_property,
+                                    GBindingFlags  flags,
+                                    GClosure      *transform_to,
+                                    GClosure      *transform_from)
+{
+  g_binding_group_bind_helper (self, source_property,
+                               target, target_property,
+                               flags,
+                               transform_to, transform_from,
+                               NULL, NULL,
+                               TRUE);
+}
diff --git a/gobject/gbindinggroup.h b/gobject/gbindinggroup.h
new file mode 100644 (file)
index 0000000..472ebc5
--- /dev/null
@@ -0,0 +1,85 @@
+/* GObject - GLib Type, Object, Parameter and Signal Library
+ *
+ * Copyright (C) 2015-2022 Christian Hergert <christian@hergert.me>
+ * Copyright (C) 2015 Garrett Regier <garrettregier@gmail.com>
+ *
+ * This library 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 library 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/>.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+#ifndef __G_BINDING_GROUP_H__
+#define __G_BINDING_GROUP_H__
+
+#if !defined (__GLIB_GOBJECT_H_INSIDE__) && !defined (GOBJECT_COMPILATION)
+#error "Only <glib-object.h> can be included directly."
+#endif
+
+#include <glib.h>
+#include <gobject/gobject.h>
+#include <gobject/gbinding.h>
+
+G_BEGIN_DECLS
+
+#define G_BINDING_GROUP(obj)    (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_BINDING_GROUP, GBindingGroup))
+#define G_IS_BINDING_GROUP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), G_TYPE_BINDING_GROUP))
+#define G_TYPE_BINDING_GROUP    (g_binding_group_get_type())
+
+/**
+ * GBindingGroup:
+ *
+ * GBindingGroup is an opaque structure whose members
+ * cannot be accessed directly.
+ *
+ * Since: 2.72
+ */
+typedef struct _GBindingGroup GBindingGroup;
+
+GLIB_AVAILABLE_IN_2_72
+GType          g_binding_group_get_type           (void) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_2_72
+GBindingGroup *g_binding_group_new                (void);
+GLIB_AVAILABLE_IN_2_72
+gpointer       g_binding_group_dup_source         (GBindingGroup         *self);
+GLIB_AVAILABLE_IN_2_72
+void           g_binding_group_set_source         (GBindingGroup         *self,
+                                                   gpointer               source);
+GLIB_AVAILABLE_IN_2_72
+void           g_binding_group_bind               (GBindingGroup         *self,
+                                                   const gchar           *source_property,
+                                                   gpointer               target,
+                                                   const gchar           *target_property,
+                                                   GBindingFlags          flags);
+GLIB_AVAILABLE_IN_2_72
+void           g_binding_group_bind_full          (GBindingGroup         *self,
+                                                   const gchar           *source_property,
+                                                   gpointer               target,
+                                                   const gchar           *target_property,
+                                                   GBindingFlags          flags,
+                                                   GBindingTransformFunc  transform_to,
+                                                   GBindingTransformFunc  transform_from,
+                                                   gpointer               user_data,
+                                                   GDestroyNotify         user_data_destroy);
+GLIB_AVAILABLE_IN_2_72
+void           g_binding_group_bind_with_closures (GBindingGroup         *self,
+                                                   const gchar           *source_property,
+                                                   gpointer               target,
+                                                   const gchar           *target_property,
+                                                   GBindingFlags          flags,
+                                                   GClosure              *transform_to,
+                                                   GClosure              *transform_from);
+
+G_END_DECLS
+
+#endif /* __G_BINDING_GROUP_H__ */
index c1624a5..4a26992 100644 (file)
@@ -286,7 +286,7 @@ boxed_proxy_lcopy_value (const GValue *value,
  * Boxed type handling functions have to be provided to copy and free
  * opaque boxed structures of this type.
  *
- * For the general case, it is recommended to use #G_DEFINE_BOXED_TYPE 
+ * For the general case, it is recommended to use G_DEFINE_BOXED_TYPE()
  * instead of calling g_boxed_type_register_static() directly. The macro 
  * will create the appropriate `*_get_type()` function for the boxed type.
  *
index 8082846..f0d3323 100644 (file)
@@ -44,7 +44,7 @@ typedef gsize GType;
  * The #GType for a boxed type holding a %NULL-terminated array of strings.
  *
  * The code fragments in the following example show the use of a property of
- * type #G_TYPE_STRV with g_object_class_install_property(), g_object_set()
+ * type %G_TYPE_STRV with g_object_class_install_property(), g_object_set()
  * and g_object_get().
  *
  * |[
index fd45fba..5c3c7dc 100644 (file)
@@ -196,7 +196,7 @@ main (gint   argc,
     }
   
   if (!gen_froots && !gen_tree)
-    return help (argv[i-1]);
+    return help ((argc > 0) ? argv[i-1] : NULL);
   
   if (!indent_inc)
     {
index 879ed84..d33d8e5 100644 (file)
@@ -24,6 +24,8 @@
 #include <string.h>
 #include <signal.h>
 
+#include "../glib/glib-private.h"
+
 #include "gobject.h"
 #include "gtype-private.h"
 #include "gvaluecollector.h"
@@ -233,6 +235,7 @@ static guint               object_floating_flag_handler (GObject        *object,
 
 static void object_interface_check_properties           (gpointer        check_data,
                                                         gpointer        g_iface);
+static void                weak_locations_free_unlocked (GSList **weak_locations);
 
 /* --- typedefs --- */
 typedef struct _GObjectNotifyQueue            GObjectNotifyQueue;
@@ -300,6 +303,7 @@ g_object_notify_queue_freeze (GObject  *object,
                G_OBJECT_TYPE_NAME (object), object);
   else
     nqueue->freeze_count++;
+
   G_UNLOCK(notify_lock);
 
   return nqueue;
@@ -1178,8 +1182,29 @@ g_object_real_dispose (GObject *object)
   g_signal_handlers_destroy (object);
   g_datalist_id_set_data (&object->qdata, quark_closure_array, NULL);
   g_datalist_id_set_data (&object->qdata, quark_weak_refs, NULL);
+  g_datalist_id_set_data (&object->qdata, quark_weak_locations, NULL);
 }
 
+#ifdef G_ENABLE_DEBUG
+static gboolean
+floating_check (GObject *object)
+{
+  static const char *g_enable_diagnostic = NULL;
+
+  if (G_UNLIKELY (g_enable_diagnostic == NULL))
+    {
+      g_enable_diagnostic = g_getenv ("G_ENABLE_DIAGNOSTIC");
+      if (g_enable_diagnostic == NULL)
+        g_enable_diagnostic = "0";
+    }
+
+  if (g_enable_diagnostic[0] == '1')
+    return g_object_is_floating (object);
+
+  return FALSE;
+}
+#endif
+
 static void
 g_object_finalize (GObject *object)
 {
@@ -1189,6 +1214,17 @@ g_object_finalize (GObject *object)
                   G_OBJECT_TYPE_NAME (object), object);
     }
 
+#ifdef G_ENABLE_DEBUG
+ if (floating_check (object))
+   {
+      g_critical ("A floating object %s %p was finalized. This means that someone\n"
+                  "called g_object_unref() on an object that had only a floating\n"
+                  "reference; the initial floating reference is not owned by anyone\n"
+                  "and must be removed with g_object_ref_sink().",
+                  G_OBJECT_TYPE_NAME (object), object);
+   }
+#endif
+
   g_datalist_clear (&object->qdata);
   
   GOBJECT_IF_DEBUG (OBJECTS,
@@ -1744,7 +1780,7 @@ g_object_get_type (void)
  *
  * Creates a new instance of a #GObject subtype and sets its properties.
  *
- * Construction parameters (see #G_PARAM_CONSTRUCT, #G_PARAM_CONSTRUCT_ONLY)
+ * Construction parameters (see %G_PARAM_CONSTRUCT, %G_PARAM_CONSTRUCT_ONLY)
  * which are not explicitly specified are set to their default values. Any
  * private data for the object is guaranteed to be initialized with zeros, as
  * per g_type_create_instance().
@@ -1763,6 +1799,12 @@ g_object_get_type (void)
  * Similarly, #gfloat is promoted to #gdouble, so you must ensure that the value
  * you provide is a #gdouble, even for a property of type #gfloat.
  *
+ * Since GLib 2.72, all #GObjects are guaranteed to be aligned to at least the
+ * alignment of the largest basic GLib type (typically this is #guint64 or
+ * #gdouble). If you need larger alignment for an element in a #GObject, you
+ * should allocate it on the heap (aligned), or arrange for your #GObject to be
+ * appropriately padded.
+ *
  * Returns: (transfer full) (type GObject.Object): a new instance of
  *   @object_type
  */
@@ -1785,6 +1827,26 @@ g_object_new (GType         object_type,
   return object;
 }
 
+/* Check alignment. (See https://gitlab.gnome.org/GNOME/glib/-/issues/1231.)
+ * This should never fail, since g_type_create_instance() uses g_slice_alloc0().
+ * The GSlice allocator always aligns to the next power of 2 greater than the
+ * allocation size. The allocation size for a GObject is
+ *   sizeof(GTypeInstance) + sizeof(guint) + sizeof(GData*)
+ * which is 12B on 32-bit platforms, and larger on 64-bit systems. In both
+ * cases, that’s larger than the 8B needed for a guint64 or gdouble.
+ *
+ * If GSlice falls back to malloc(), it’s documented to return something
+ * suitably aligned for any basic type. */
+static inline gboolean
+g_object_is_aligned (GObject *object)
+{
+  return ((((guintptr) (void *) object) %
+             MAX (G_ALIGNOF (gdouble),
+                  MAX (G_ALIGNOF (guint64),
+                       MAX (G_ALIGNOF (gint),
+                            G_ALIGNOF (glong))))) == 0);
+}
+
 static gpointer
 g_object_new_with_custom_constructor (GObjectClass          *class,
                                       GObjectConstructParam *params,
@@ -1872,6 +1934,16 @@ g_object_new_with_custom_constructor (GObjectClass          *class,
       return NULL;
     }
 
+  if (!g_object_is_aligned (object))
+    {
+      g_critical ("Custom constructor for class %s returned a non-aligned "
+                  "GObject (which is invalid since GLib 2.72). Assuming any "
+                  "code using this object doesn’t require it to be aligned. "
+                  "Please fix your constructor to align to the largest GLib "
+                  "basic type (typically gdouble or guint64).",
+                  G_OBJECT_CLASS_NAME (class));
+    }
+
   /* g_object_init() will have marked the object as being in-construction.
    * Check if the returned object still is so marked, or if this is an
    * already-existing singleton (in which case we should not do 'constructed').
@@ -1938,6 +2010,8 @@ g_object_new_internal (GObjectClass          *class,
 
   object = (GObject *) g_type_create_instance (class->g_type_class.g_type);
 
+  g_assert (g_object_is_aligned (object));
+
   if (CLASS_HAS_PROPS (class))
     {
       GSList *node;
@@ -2092,8 +2166,7 @@ g_object_new_with_properties (GType          object_type,
           params[count].pspec = pspec;
 
           /* Init GValue */
-          params[count].value = g_newa (GValue, 1);
-          memset (params[count].value, 0, sizeof (GValue));
+          params[count].value = g_newa0 (GValue, 1);
           g_value_init (params[count].value, G_VALUE_TYPE (&values[i]));
 
           g_value_copy (&values[i], params[count].value);
@@ -2121,7 +2194,7 @@ g_object_new_with_properties (GType          object_type,
  *
  * Creates a new instance of a #GObject subtype and sets its properties.
  *
- * Construction parameters (see #G_PARAM_CONSTRUCT, #G_PARAM_CONSTRUCT_ONLY)
+ * Construction parameters (see %G_PARAM_CONSTRUCT, %G_PARAM_CONSTRUCT_ONLY)
  * which are not explicitly specified are set to their default values.
  *
  * Returns: (type GObject.Object) (transfer full): a new instance of
@@ -2193,7 +2266,7 @@ G_GNUC_END_IGNORE_DEPRECATIONS
  *
  * Creates a new instance of a #GObject subtype and sets its properties.
  *
- * Construction parameters (see #G_PARAM_CONSTRUCT, #G_PARAM_CONSTRUCT_ONLY)
+ * Construction parameters (see %G_PARAM_CONSTRUCT, %G_PARAM_CONSTRUCT_ONLY)
  * which are not explicitly specified are set to their default values.
  *
  * Returns: a new instance of @object_type
@@ -3274,6 +3347,16 @@ toggle_refs_notify (GObject *object,
   ToggleRefStack tstack, *tstackptr;
 
   G_LOCK (toggle_refs_mutex);
+  /* If another thread removed the toggle reference on the object, while
+   * we were waiting here, there's nothing to notify.
+   * So let's check again if the object has toggle reference and in case return.
+   */
+  if (!OBJECT_HAS_TOGGLE_REF (object))
+    {
+      G_UNLOCK (toggle_refs_mutex);
+      return;
+    }
+
   tstackptr = g_datalist_id_get_data (&object->qdata, quark_toggle_refs);
   tstack = *tstackptr;
   G_UNLOCK (toggle_refs_mutex);
@@ -3494,6 +3577,7 @@ g_object_unref (gpointer _object)
   else
     {
       GSList **weak_locations;
+      GObjectNotifyQueue *nqueue;
 
       /* The only way that this object can live at this point is if
        * there are outstanding weak references already established
@@ -3503,6 +3587,10 @@ g_object_unref (gpointer _object)
        * established at this time, because the other thread would have
        * to hold a strong ref in order to call
        * g_object_add_weak_pointer() and then we wouldn't be here.
+       *
+       * Other GWeakRef's (weak locations) instead may still be added
+       * before the object is finalized, but in such case we'll unset
+       * them as part of the qdata removal.
        */
       weak_locations = g_datalist_id_get_data (&object->qdata, quark_weak_locations);
 
@@ -3522,19 +3610,27 @@ g_object_unref (gpointer _object)
             }
 
           /* We got the lock first, so the object will definitely die
-           * now. Clear out all the weak references.
+           * now. Clear out all the weak references, if they're still set.
            */
-          while (*weak_locations)
-            {
-              GWeakRef *weak_ref_location = (*weak_locations)->data;
-
-              weak_ref_location->priv.p = NULL;
-              *weak_locations = g_slist_delete_link (*weak_locations, *weak_locations);
-            }
+          weak_locations = g_datalist_id_remove_no_notify (&object->qdata,
+                                                           quark_weak_locations);
+          g_clear_pointer (&weak_locations, weak_locations_free_unlocked);
 
           g_rw_lock_writer_unlock (&weak_locations_lock);
         }
 
+      /* freeze the notification queue, so we don't accidentally emit
+       * notifications during dispose() and finalize().
+       *
+       * The notification queue stays frozen unless the instance acquires
+       * a reference during dispose(), in which case we thaw it and
+       * dispatch all the notifications. If the instance gets through
+       * to finalize(), the notification queue gets automatically
+       * drained when g_object_finalize() is reached and
+       * the qdata is cleared.
+       */
+      nqueue = g_object_notify_queue_freeze (object, FALSE);
+
       /* we are about to remove the last reference */
       TRACE (GOBJECT_OBJECT_DISPOSE(object,G_TYPE_FROM_INSTANCE(object), 1));
       G_OBJECT_GET_CLASS (object)->dispose (object);
@@ -3551,6 +3647,9 @@ g_object_unref (gpointer _object)
           if (!g_atomic_int_compare_and_exchange ((int *)&object->ref_count, old_ref, old_ref - 1))
            goto retry_atomic_decrement2;
 
+          /* emit all notifications that have been queued during dispose() */
+          g_object_notify_queue_thaw (object, nqueue);
+
          TRACE (GOBJECT_OBJECT_UNREF(object,G_TYPE_FROM_INSTANCE(object),old_ref));
 
           /* if we went from 2->1 we need to notify toggle refs if any */
@@ -3564,7 +3663,8 @@ g_object_unref (gpointer _object)
       g_datalist_id_set_data (&object->qdata, quark_closure_array, NULL);
       g_signal_handlers_destroy (object);
       g_datalist_id_set_data (&object->qdata, quark_weak_refs, NULL);
-      
+      g_datalist_id_set_data (&object->qdata, quark_weak_locations, NULL);
+
       /* decrement the last reference */
       old_ref = g_atomic_int_add (&object->ref_count, -1);
       g_return_if_fail (old_ref > 0);
@@ -3576,7 +3676,6 @@ g_object_unref (gpointer _object)
        {
          TRACE (GOBJECT_OBJECT_FINALIZE(object,G_TYPE_FROM_INSTANCE(object)));
           G_OBJECT_GET_CLASS (object)->finalize (object);
-
          TRACE (GOBJECT_OBJECT_FINALIZE_END(object,G_TYPE_FROM_INSTANCE(object)));
 
           GOBJECT_IF_DEBUG (OBJECTS,
@@ -3594,6 +3693,13 @@ g_object_unref (gpointer _object)
            });
           g_type_free_instance ((GTypeInstance*) object);
        }
+      else
+        {
+          /* The instance acquired a reference between dispose() and
+           * finalize(), so we need to thaw the notification queue
+           */
+          g_object_notify_queue_thaw (object, nqueue);
+        }
     }
 }
 
@@ -4543,11 +4649,14 @@ g_initially_unowned_class_init (GInitiallyUnownedClass *klass)
  * objects.
  *
  * If the object's #GObjectClass.dispose method results in additional
- * references to the object being held, any #GWeakRefs taken
- * before it was disposed will continue to point to %NULL.  If
- * #GWeakRefs are taken after the object is disposed and
- * re-referenced, they will continue to point to it until its refcount
+ * references to the object being held (‘re-referencing’), any #GWeakRefs taken
+ * before it was disposed will continue to point to %NULL.  Any #GWeakRefs taken
+ * during disposal and after re-referencing, or after disposal has returned due
+ * to the re-referencing, will continue to point to the object until its refcount
  * goes back to zero, at which point they too will be invalidated.
+ *
+ * It is invalid to take a #GWeakRef on an object during #GObjectClass.dispose
+ * without first having or creating a strong reference to the object.
  */
 
 /**
@@ -4637,6 +4746,35 @@ g_weak_ref_get (GWeakRef *weak_ref)
   return object_or_null;
 }
 
+static void
+weak_locations_free_unlocked (GSList **weak_locations)
+{
+  if (*weak_locations)
+    {
+      GSList *weak_location;
+
+      for (weak_location = *weak_locations; weak_location;)
+        {
+          GWeakRef *weak_ref_location = weak_location->data;
+
+          weak_ref_location->priv.p = NULL;
+          weak_location = g_slist_delete_link (weak_location, weak_location);
+        }
+    }
+
+  g_free (weak_locations);
+}
+
+static void
+weak_locations_free (gpointer data)
+{
+  GSList **weak_locations = data;
+
+  g_rw_lock_writer_lock (&weak_locations_lock);
+  weak_locations_free_unlocked (weak_locations);
+  g_rw_lock_writer_unlock (&weak_locations_lock);
+}
+
 /**
  * g_weak_ref_set: (skip)
  * @weak_ref: location for a weak reference
@@ -4693,6 +4831,12 @@ g_weak_ref_set (GWeakRef *weak_ref,
           g_assert (weak_locations != NULL);
 
           *weak_locations = g_slist_remove (*weak_locations, weak_ref);
+
+          if (!*weak_locations)
+            {
+              weak_locations_free_unlocked (weak_locations);
+              g_datalist_id_remove_no_notify (&old_object->qdata, quark_weak_locations);
+            }
         }
 
       /* Add the weak ref to the new object */
@@ -4703,7 +4847,8 @@ g_weak_ref_set (GWeakRef *weak_ref,
           if (weak_locations == NULL)
             {
               weak_locations = g_new0 (GSList *, 1);
-              g_datalist_id_set_data_full (&new_object->qdata, quark_weak_locations, weak_locations, g_free);
+              g_datalist_id_set_data_full (&new_object->qdata, quark_weak_locations,
+                                           weak_locations, weak_locations_free);
             }
 
           *weak_locations = g_slist_prepend (*weak_locations, weak_ref);
index f62f9c9..3dc4f7f 100644 (file)
@@ -238,6 +238,11 @@ typedef void (*GObjectFinalizeFunc)     (GObject      *object);
  * Since the object is already being disposed when the #GWeakNotify is called,
  * there's not much you could do with the object, apart from e.g. using its
  * address as hash-index or the like.
+ *
+ * In particular, this means it’s invalid to call g_object_ref(),
+ * g_weak_ref_init(), g_weak_ref_set(), g_object_add_toggle_ref(),
+ * g_object_weak_ref(), g_object_add_weak_pointer() or any function which calls
+ * them on the object from this callback.
  */
 typedef void (*GWeakNotify)            (gpointer      data,
                                         GObject      *where_the_object_was);
@@ -248,6 +253,14 @@ typedef void (*GWeakNotify)                (gpointer      data,
  * 
  * All the fields in the `GObject` structure are private to the implementation
  * and should never be accessed directly.
+ *
+ * Since GLib 2.72, all #GObjects are guaranteed to be aligned to at least the
+ * alignment of the largest basic GLib type (typically this is #guint64 or
+ * #gdouble). If you need larger alignment for an element in a #GObject, you
+ * should allocate it on the heap (aligned), or arrange for your #GObject to be
+ * appropriately padded. This guarantee applies to the #GObject (or derived)
+ * struct, the #GObjectClass (or derived) struct, and any private data allocated
+ * by G_ADD_PRIVATE().
  */
 struct  _GObject
 {
index b3e4c67..e9d9eac 100644 (file)
@@ -421,7 +421,7 @@ g_param_spec_is_valid_name (const gchar *name)
 
 /**
  * g_param_spec_internal: (skip)
- * @param_type: the #GType for the property; must be derived from #G_TYPE_PARAM
+ * @param_type: the #GType for the property; must be derived from %G_TYPE_PARAM
  * @name: the canonical name of the property
  * @nick: the nickname of the property
  * @blurb: a short description of the property
@@ -1403,7 +1403,7 @@ default_values_cmp (GParamSpec   *pspec,
  * @pspec_info: The #GParamSpecTypeInfo for this #GParamSpec type.
  *
  * Registers @name as the name of a new static type derived
- * from #G_TYPE_PARAM.
+ * from %G_TYPE_PARAM.
  *
  * The type system uses the information contained in the #GParamSpecTypeInfo
  * structure pointed to by @info to manage the #GParamSpec type and its
index a106bbe..fb85fd6 100644 (file)
@@ -1041,7 +1041,7 @@ signal_finalize_hook (GHookList *hook_list,
  *
  * Adds an emission hook for a signal, which will get called for any emission
  * of that signal, independent of the instance. This is possible only
- * for signals which don't have #G_SIGNAL_NO_HOOKS flag set.
+ * for signals which don't have %G_SIGNAL_NO_HOOKS flag set.
  *
  * Returns: the hook id, for later use with g_signal_remove_emission_hook().
  */
@@ -1458,7 +1458,7 @@ g_signal_query (guint         signal_id,
  * @accu_data: (nullable) (closure accumulator): user data for the @accumulator.
  * @c_marshaller: (nullable): the function to translate arrays of parameter
  *  values to signal emissions into C language callback invocations or %NULL.
- * @return_type: the type of return value, or #G_TYPE_NONE for a signal
+ * @return_type: the type of return value, or %G_TYPE_NONE for a signal
  *  without a return value.
  * @n_params: the number of parameter types to follow.
  * @...: a list of types, one for each parameter.
@@ -1534,7 +1534,7 @@ g_signal_new (const gchar  *signal_name,
  * @accu_data: (nullable) (closure accumulator): user data for the @accumulator.
  * @c_marshaller: (nullable): the function to translate arrays of parameter
  *  values to signal emissions into C language callback invocations or %NULL.
- * @return_type: the type of return value, or #G_TYPE_NONE for a signal
+ * @return_type: the type of return value, or %G_TYPE_NONE for a signal
  *  without a return value.
  * @n_params: the number of parameter types to follow.
  * @...: a list of types, one for each parameter.
@@ -1672,7 +1672,7 @@ signal_add_class_closure (SignalNode *node,
  * @c_marshaller: (nullable): the function to translate arrays of
  *     parameter values to signal emissions into C language callback
  *     invocations or %NULL
- * @return_type: the type of return value, or #G_TYPE_NONE for a signal
+ * @return_type: the type of return value, or %G_TYPE_NONE for a signal
  *     without a return value
  * @n_params: the length of @param_types
  * @param_types: (array length=n_params) (nullable): an array of types, one for
@@ -1932,7 +1932,7 @@ g_signal_set_va_marshaller (guint              signal_id,
  * @accu_data: (nullable) (closure accumulator): user data for the @accumulator.
  * @c_marshaller: (nullable): the function to translate arrays of parameter
  *  values to signal emissions into C language callback invocations or %NULL.
- * @return_type: the type of return value, or #G_TYPE_NONE for a signal
+ * @return_type: the type of return value, or %G_TYPE_NONE for a signal
  *  without a return value.
  * @n_params: the number of parameter types in @args.
  * @args: va_list of #GType, one for each parameter.
@@ -2203,7 +2203,7 @@ g_signal_chain_from_overridden (const GValue *instance_and_params,
  *    emitted on.
  * @...: parameters to be passed to the parent class closure, followed by a
  *  location for the return value. If the return type of the signal
- *  is #G_TYPE_NONE, the return value location can be omitted.
+ *  is %G_TYPE_NONE, the return value location can be omitted.
  *
  * Calls the original class closure of a signal. This function should
  * only be called from an overridden class closure; see
@@ -2219,7 +2219,7 @@ g_signal_chain_from_overridden_handler (gpointer instance,
   GType chain_type = 0, restore_type = 0;
   Emission *emission = NULL;
   GClosure *closure = NULL;
-  SignalNode *node;
+  SignalNode *node = NULL;
   guint n_params = 0;
 
   g_return_if_fail (G_TYPE_CHECK_INSTANCE (instance));
@@ -2266,8 +2266,7 @@ g_signal_chain_from_overridden_handler (gpointer instance,
       va_start (var_args, instance);
 
       signal_return_type = node->return_type;
-      instance_and_params = g_alloca (sizeof (GValue) * (n_params + 1));
-      memset (instance_and_params, 0, sizeof (GValue) * (n_params + 1));
+      instance_and_params = g_newa0 (GValue, n_params + 1);
       param_values = instance_and_params + 1;
 
       for (i = 0; i < node->n_params; i++)
@@ -3118,7 +3117,8 @@ g_signal_has_handler_pending (gpointer instance,
  * store the return value of the signal emission. This must be provided if the
  * specified signal returns a value, but may be ignored otherwise.
  *
- * Emits a signal.
+ * Emits a signal. Signal emission is done synchronously.
+ * The method will only return control after all handlers are called or signal emission was stopped.
  *
  * Note that g_signal_emitv() doesn't change @return_value if no handlers are
  * connected, in contrast to g_signal_emit() and g_signal_emit_valist().
@@ -3254,9 +3254,10 @@ accumulate (GSignalInvocationHint *ihint,
  * @detail: the detail
  * @var_args: a list of parameters to be passed to the signal, followed by a
  *  location for the return value. If the return type of the signal
- *  is #G_TYPE_NONE, the return value location can be omitted.
+ *  is %G_TYPE_NONE, the return value location can be omitted.
  *
- * Emits a signal.
+ * Emits a signal. Signal emission is done synchronously.
+ * The method will only return control after all handlers are called or signal emission was stopped.
  *
  * Note that g_signal_emit_valist() resets the return value to the default
  * if no handlers are connected, in contrast to g_signal_emitv().
@@ -3364,7 +3365,6 @@ g_signal_emit_valist (gpointer instance,
          SignalAccumulator *accumulator;
          Emission emission;
          GValue *return_accu, accu = G_VALUE_INIT;
-         guint signal_id;
          GType instance_type = G_TYPE_FROM_INSTANCE (instance);
          GValue emission_return = G_VALUE_INIT;
           GType rtype = node->return_type & ~G_SIGNAL_TYPE_STATIC_SCOPE;
@@ -3462,8 +3462,7 @@ g_signal_emit_valist (gpointer instance,
 
   n_params = node->n_params;
   signal_return_type = node->return_type;
-  instance_and_params = g_alloca (sizeof (GValue) * (n_params + 1));
-  memset (instance_and_params, 0, sizeof (GValue) * (n_params + 1));
+  instance_and_params = g_newa0 (GValue, n_params + 1);
   param_values = instance_and_params + 1;
 
   for (i = 0; i < node->n_params; i++)
@@ -3534,9 +3533,10 @@ g_signal_emit_valist (gpointer instance,
  * @detail: the detail
  * @...: parameters to be passed to the signal, followed by a
  *  location for the return value. If the return type of the signal
- *  is #G_TYPE_NONE, the return value location can be omitted.
+ *  is %G_TYPE_NONE, the return value location can be omitted.
  *
- * Emits a signal.
+ * Emits a signal. Signal emission is done synchronously.
+ * The method will only return control after all handlers are called or signal emission was stopped.
  *
  * Note that g_signal_emit() resets the return value to the default
  * if no handlers are connected, in contrast to g_signal_emitv().
@@ -3563,7 +3563,8 @@ g_signal_emit (gpointer instance,
  *  is %G_TYPE_NONE, the return value location can be omitted. The
  *  number of parameters to pass to this function is defined when creating the signal.
  *
- * Emits a signal.
+ * Emits a signal. Signal emission is done synchronously.
+ * The method will only return control after all handlers are called or signal emission was stopped.
  *
  * Note that g_signal_emit_by_name() resets the return value to the default
  * if no handlers are connected, in contrast to g_signal_emitv().
@@ -3623,14 +3624,14 @@ signal_emit_unlocked_R (SignalNode   *node,
 
   if (node->flags & G_SIGNAL_NO_RECURSE)
     {
-      Emission *node = emission_find (signal_id, detail, instance);
-      
-      if (node)
-       {
-         node->state = EMISSION_RESTART;
-         SIGNAL_UNLOCK ();
-         return return_value_altered;
-       }
+      Emission *emission_node = emission_find (signal_id, detail, instance);
+
+      if (emission_node)
+        {
+          emission_node->state = EMISSION_RESTART;
+          SIGNAL_UNLOCK ();
+          return return_value_altered;
+        }
     }
   accumulator = node->accumulator;
   if (accumulator)
index 96e4eb3..04f1344 100644 (file)
@@ -65,7 +65,7 @@ typedef GVaClosureMarshal              GSignalCVaMarshaller;
  * Emission hooks allow you to tie a hook to the signal type, so that it will
  * trap all emissions of that signal, from any object.
  * 
- * You may not attach these to signals created with the #G_SIGNAL_NO_HOOKS flag.
+ * You may not attach these to signals created with the %G_SIGNAL_NO_HOOKS flag.
  * 
  * Returns: whether it wants to stay connected. If it returns %FALSE, the signal 
  *  hook is disconnected (and destroyed).
@@ -155,7 +155,7 @@ typedef enum
 #define G_SIGNAL_FLAGS_MASK  0x1ff
 /**
  * GConnectFlags:
- * @G_CONNECT_AFTER: whether the handler should be called before or after the 
+ * @G_CONNECT_AFTER: whether the handler should be called before or after the
  *  default handler of the signal.
  * @G_CONNECT_SWAPPED: whether the instance and data should be swapped when
  *  calling the handler; see g_signal_connect_swapped() for an example.
@@ -497,7 +497,7 @@ void   g_signal_chain_from_overridden_handler (gpointer           instance,
  * 
  * Connects a #GCallback function to a signal for a particular object.
  * 
- * The handler will be called before the default handler of the signal.
+ * The handler will be called synchronously, before the default handler of the signal. g_signal_emit() will not return control until all handlers are called.
  *
  * See [memory management of signal handlers][signal-memory-management] for
  * details on how to handle the return value and memory management of @data.
@@ -515,7 +515,7 @@ void   g_signal_chain_from_overridden_handler (gpointer           instance,
  * 
  * Connects a #GCallback function to a signal for a particular object.
  * 
- * The handler will be called after the default handler of the signal.
+ * The handler will be called synchronously, after the default handler of the signal.
  * 
  * Returns: the handler ID, of type #gulong (always greater than 0 for successful connections)
  */
diff --git a/gobject/gsignalgroup.c b/gobject/gsignalgroup.c
new file mode 100644 (file)
index 0000000..8feba54
--- /dev/null
@@ -0,0 +1,912 @@
+/* GObject - GLib Type, Object, Parameter and Signal Library
+ *
+ * Copyright (C) 2015-2022 Christian Hergert <christian@hergert.me>
+ * Copyright (C) 2015 Garrett Regier <garrettregier@gmail.com>
+ *
+ * This library 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 library 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/>.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+#include "config.h"
+#include "glib.h"
+#include "glibintl.h"
+
+#include "gparamspecs.h"
+#include "gsignalgroup.h"
+#include "gvaluetypes.h"
+
+/**
+ * SECTION:gsignalgroup
+ * @Title: GSignalGroup
+ * @Short_description: Manage a collection of signals on a GObject
+ *
+ * #GSignalGroup manages to simplify the process of connecting
+ * many signals to a #GObject as a group. As such there is no API
+ * to disconnect a signal from the group.
+ *
+ * In particular, this allows you to:
+ *
+ *  - Change the target instance, which automatically causes disconnection
+ *    of the signals from the old instance and connecting to the new instance.
+ *  - Block and unblock signals as a group
+ *  - Ensuring that blocked state transfers across target instances.
+ *
+ * One place you might want to use such a structure is with #GtkTextView and
+ * #GtkTextBuffer. Often times, you'll need to connect to many signals on
+ * #GtkTextBuffer from a #GtkTextView subclass. This allows you to create a
+ * signal group during instance construction, simply bind the
+ * #GtkTextView:buffer property to #GSignalGroup:target and connect
+ * all the signals you need. When the #GtkTextView:buffer property changes
+ * all of the signals will be transitioned correctly.
+ *
+ * Since: 2.72
+ */
+
+struct _GSignalGroup
+{
+  GObject     parent_instance;
+
+  GWeakRef    target_ref;
+  GRecMutex   mutex;
+  GPtrArray  *handlers;
+  GType       target_type;
+  gssize      block_count;
+
+  guint       has_bound_at_least_once : 1;
+};
+
+typedef struct _GSignalGroupClass
+{
+  GObjectClass parent_class;
+
+  void (*bind) (GSignalGroup *self,
+                GObject      *target);
+} GSignalGroupClass;
+
+typedef struct
+{
+  GSignalGroup *group;
+  gulong             handler_id;
+  GClosure          *closure;
+  guint              signal_id;
+  GQuark             signal_detail;
+  guint              connect_after : 1;
+} SignalHandler;
+
+G_DEFINE_TYPE (GSignalGroup, g_signal_group, G_TYPE_OBJECT)
+
+typedef enum
+{
+  PROP_TARGET = 1,
+  PROP_TARGET_TYPE,
+  LAST_PROP
+} GSignalGroupProperty;
+
+enum
+{
+  BIND,
+  UNBIND,
+  LAST_SIGNAL
+};
+
+static GParamSpec *properties[LAST_PROP];
+static guint signals[LAST_SIGNAL];
+
+static void
+g_signal_group_set_target_type (GSignalGroup *self,
+                                GType         target_type)
+{
+  g_assert (G_IS_SIGNAL_GROUP (self));
+  g_assert (g_type_is_a (target_type, G_TYPE_OBJECT));
+
+  self->target_type = target_type;
+
+  /* The class must be created at least once for the signals
+   * to be registered, otherwise g_signal_parse_name() will fail
+   */
+  if (G_TYPE_IS_INTERFACE (target_type))
+    {
+      if (g_type_default_interface_peek (target_type) == NULL)
+        g_type_default_interface_unref (g_type_default_interface_ref (target_type));
+    }
+  else
+    {
+      if (g_type_class_peek (target_type) == NULL)
+        g_type_class_unref (g_type_class_ref (target_type));
+    }
+}
+
+static void
+g_signal_group_gc_handlers (GSignalGroup *self)
+{
+  guint i;
+
+  g_assert (G_IS_SIGNAL_GROUP (self));
+
+  /*
+   * Remove any handlers for which the closures have become invalid. We do
+   * this cleanup lazily to avoid situations where we could have disposal
+   * active on both the signal group and the peer object.
+   */
+
+  for (i = self->handlers->len; i > 0; i--)
+    {
+      const SignalHandler *handler = g_ptr_array_index (self->handlers, i - 1);
+
+      g_assert (handler != NULL);
+      g_assert (handler->closure != NULL);
+
+      if (handler->closure->is_invalid)
+        g_ptr_array_remove_index (self->handlers, i - 1);
+    }
+}
+
+static void
+g_signal_group__target_weak_notify (gpointer  data,
+                                    GObject  *where_object_was)
+{
+  GSignalGroup *self = data;
+  guint i;
+
+  g_assert (G_IS_SIGNAL_GROUP (self));
+  g_assert (where_object_was != NULL);
+
+  g_rec_mutex_lock (&self->mutex);
+
+  g_weak_ref_set (&self->target_ref, NULL);
+
+  for (i = 0; i < self->handlers->len; i++)
+    {
+      SignalHandler *handler = g_ptr_array_index (self->handlers, i);
+
+      handler->handler_id = 0;
+    }
+
+  g_signal_emit (self, signals[UNBIND], 0);
+  g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_TARGET]);
+
+  g_rec_mutex_unlock (&self->mutex);
+}
+
+static void
+g_signal_group_bind_handler (GSignalGroup  *self,
+                             SignalHandler *handler,
+                             GObject       *target)
+{
+  gssize i;
+
+  g_assert (self != NULL);
+  g_assert (G_IS_OBJECT (target));
+  g_assert (handler != NULL);
+  g_assert (handler->signal_id != 0);
+  g_assert (handler->closure != NULL);
+  g_assert (handler->closure->is_invalid == 0);
+  g_assert (handler->handler_id == 0);
+
+  handler->handler_id = g_signal_connect_closure_by_id (target,
+                                                        handler->signal_id,
+                                                        handler->signal_detail,
+                                                        handler->closure,
+                                                        handler->connect_after);
+
+  g_assert (handler->handler_id != 0);
+
+  for (i = 0; i < self->block_count; i++)
+    g_signal_handler_block (target, handler->handler_id);
+}
+
+static void
+g_signal_group_bind (GSignalGroup *self,
+                     GObject      *target)
+{
+  GObject *hold;
+  guint i;
+
+  g_assert (G_IS_SIGNAL_GROUP (self));
+  g_assert (!target || G_IS_OBJECT (target));
+
+  if (target == NULL)
+    return;
+
+  self->has_bound_at_least_once = TRUE;
+
+  hold = g_object_ref (target);
+
+  g_weak_ref_set (&self->target_ref, hold);
+  g_object_weak_ref (hold, g_signal_group__target_weak_notify, self);
+
+  g_signal_group_gc_handlers (self);
+
+  for (i = 0; i < self->handlers->len; i++)
+    {
+      SignalHandler *handler = g_ptr_array_index (self->handlers, i);
+
+      g_signal_group_bind_handler (self, handler, hold);
+    }
+
+  g_signal_emit (self, signals [BIND], 0, hold);
+
+  g_object_unref (hold);
+}
+
+static void
+g_signal_group_unbind (GSignalGroup *self)
+{
+  GObject *target;
+  guint i;
+
+  g_return_if_fail (G_IS_SIGNAL_GROUP (self));
+
+  target = g_weak_ref_get (&self->target_ref);
+
+  /*
+   * Target may be NULL by this point, as we got notified of its destruction.
+   * However, if we're early enough, we may get a full reference back and can
+   * cleanly disconnect our connections.
+   */
+
+  if (target != NULL)
+    {
+      g_weak_ref_set (&self->target_ref, NULL);
+
+      /*
+       * Let go of our weak reference now that we have a full reference
+       * for the life of this function.
+       */
+      g_object_weak_unref (target,
+                           g_signal_group__target_weak_notify,
+                           self);
+    }
+
+  g_signal_group_gc_handlers (self);
+
+  for (i = 0; i < self->handlers->len; i++)
+    {
+      SignalHandler *handler;
+      gulong handler_id;
+
+      handler = g_ptr_array_index (self->handlers, i);
+
+      g_assert (handler != NULL);
+      g_assert (handler->signal_id != 0);
+      g_assert (handler->closure != NULL);
+
+      handler_id = handler->handler_id;
+      handler->handler_id = 0;
+
+      /*
+       * If @target is NULL, we lost a race to cleanup the weak
+       * instance and the signal connections have already been
+       * finalized and therefore nothing to do.
+       */
+
+      if (target != NULL && handler_id != 0)
+        g_signal_handler_disconnect (target, handler_id);
+    }
+
+  g_signal_emit (self, signals [UNBIND], 0);
+
+  g_clear_object (&target);
+}
+
+static gboolean
+g_signal_group_check_target_type (GSignalGroup *self,
+                                  gpointer      target)
+{
+  if ((target != NULL) &&
+      !g_type_is_a (G_OBJECT_TYPE (target), self->target_type))
+    {
+      g_critical ("Failed to set GSignalGroup of target type %s "
+                  "using target %p of type %s",
+                  g_type_name (self->target_type),
+                  target, G_OBJECT_TYPE_NAME (target));
+      return FALSE;
+    }
+
+  return TRUE;
+}
+
+/**
+ * g_signal_group_block:
+ * @self: the #GSignalGroup
+ *
+ * Blocks all signal handlers managed by @self so they will not
+ * be called during any signal emissions. Must be unblocked exactly
+ * the same number of times it has been blocked to become active again.
+ *
+ * This blocked state will be kept across changes of the target instance.
+ *
+ * Since: 2.72
+ */
+void
+g_signal_group_block (GSignalGroup *self)
+{
+  GObject *target;
+  guint i;
+
+  g_return_if_fail (G_IS_SIGNAL_GROUP (self));
+  g_return_if_fail (self->block_count >= 0);
+
+  g_rec_mutex_lock (&self->mutex);
+
+  self->block_count++;
+
+  target = g_weak_ref_get (&self->target_ref);
+
+  if (target == NULL)
+    goto unlock;
+
+  for (i = 0; i < self->handlers->len; i++)
+    {
+      const SignalHandler *handler = g_ptr_array_index (self->handlers, i);
+
+      g_assert (handler != NULL);
+      g_assert (handler->signal_id != 0);
+      g_assert (handler->closure != NULL);
+      g_assert (handler->handler_id != 0);
+
+      g_signal_handler_block (target, handler->handler_id);
+    }
+
+  g_object_unref (target);
+
+unlock:
+  g_rec_mutex_unlock (&self->mutex);
+}
+
+/**
+ * g_signal_group_unblock:
+ * @self: the #GSignalGroup
+ *
+ * Unblocks all signal handlers managed by @self so they will be
+ * called again during any signal emissions unless it is blocked
+ * again. Must be unblocked exactly the same number of times it
+ * has been blocked to become active again.
+ *
+ * Since: 2.72
+ */
+void
+g_signal_group_unblock (GSignalGroup *self)
+{
+  GObject *target;
+  guint i;
+
+  g_return_if_fail (G_IS_SIGNAL_GROUP (self));
+  g_return_if_fail (self->block_count > 0);
+
+  g_rec_mutex_lock (&self->mutex);
+
+  self->block_count--;
+
+  target = g_weak_ref_get (&self->target_ref);
+  if (target == NULL)
+    goto unlock;
+
+  for (i = 0; i < self->handlers->len; i++)
+    {
+      const SignalHandler *handler = g_ptr_array_index (self->handlers, i);
+
+      g_assert (handler != NULL);
+      g_assert (handler->signal_id != 0);
+      g_assert (handler->closure != NULL);
+      g_assert (handler->handler_id != 0);
+
+      g_signal_handler_unblock (target, handler->handler_id);
+    }
+
+  g_object_unref (target);
+
+unlock:
+  g_rec_mutex_unlock (&self->mutex);
+}
+
+/**
+ * g_signal_group_dup_target:
+ * @self: the #GSignalGroup
+ *
+ * Gets the target instance used when connecting signals.
+ *
+ * Returns: (nullable) (transfer full) (type GObject): The target instance
+ *
+ * Since: 2.72
+ */
+gpointer
+g_signal_group_dup_target (GSignalGroup *self)
+{
+  GObject *target;
+
+  g_return_val_if_fail (G_IS_SIGNAL_GROUP (self), NULL);
+
+  g_rec_mutex_lock (&self->mutex);
+  target = g_weak_ref_get (&self->target_ref);
+  g_rec_mutex_unlock (&self->mutex);
+
+  return target;
+}
+
+/**
+ * g_signal_group_set_target:
+ * @self: the #GSignalGroup.
+ * @target: (nullable) (type GObject) (transfer none): The target instance used
+ *     when connecting signals.
+ *
+ * Sets the target instance used when connecting signals. Any signal
+ * that has been registered with g_signal_group_connect_object() or
+ * similar functions will be connected to this object.
+ *
+ * If the target instance was previously set, signals will be
+ * disconnected from that object prior to connecting to @target.
+ *
+ * Since: 2.72
+ */
+void
+g_signal_group_set_target (GSignalGroup *self,
+                           gpointer      target)
+{
+  GObject *object;
+
+  g_return_if_fail (G_IS_SIGNAL_GROUP (self));
+
+  g_rec_mutex_lock (&self->mutex);
+
+  object = g_weak_ref_get (&self->target_ref);
+
+  if (object == (GObject *)target)
+    goto cleanup;
+
+  if (!g_signal_group_check_target_type (self, target))
+    goto cleanup;
+
+  /* Only emit unbind if we've ever called bind */
+  if (self->has_bound_at_least_once)
+    g_signal_group_unbind (self);
+
+  g_signal_group_bind (self, target);
+
+  g_object_notify_by_pspec (G_OBJECT (self), properties[PROP_TARGET]);
+
+cleanup:
+  g_clear_object (&object);
+  g_rec_mutex_unlock (&self->mutex);
+}
+
+static void
+signal_handler_free (gpointer data)
+{
+  SignalHandler *handler = data;
+
+  if (handler->closure != NULL)
+    g_closure_invalidate (handler->closure);
+
+  handler->handler_id = 0;
+  handler->signal_id = 0;
+  handler->signal_detail = 0;
+  g_clear_pointer (&handler->closure, g_closure_unref);
+  g_slice_free (SignalHandler, handler);
+}
+
+static void
+g_signal_group_constructed (GObject *object)
+{
+  GSignalGroup *self = (GSignalGroup *)object;
+  GObject *target;
+
+  g_rec_mutex_lock (&self->mutex);
+
+  target = g_weak_ref_get (&self->target_ref);
+  if (!g_signal_group_check_target_type (self, target))
+    g_signal_group_set_target (self, NULL);
+
+  G_OBJECT_CLASS (g_signal_group_parent_class)->constructed (object);
+
+  g_clear_object (&target);
+
+  g_rec_mutex_unlock (&self->mutex);
+}
+
+static void
+g_signal_group_dispose (GObject *object)
+{
+  GSignalGroup *self = (GSignalGroup *)object;
+
+  g_rec_mutex_lock (&self->mutex);
+
+  g_signal_group_gc_handlers (self);
+
+  if (self->has_bound_at_least_once)
+    g_signal_group_unbind (self);
+
+  g_clear_pointer (&self->handlers, g_ptr_array_unref);
+
+  g_rec_mutex_unlock (&self->mutex);
+
+  G_OBJECT_CLASS (g_signal_group_parent_class)->dispose (object);
+}
+
+static void
+g_signal_group_finalize (GObject *object)
+{
+  GSignalGroup *self = (GSignalGroup *)object;
+
+  g_weak_ref_clear (&self->target_ref);
+  g_rec_mutex_clear (&self->mutex);
+
+  G_OBJECT_CLASS (g_signal_group_parent_class)->finalize (object);
+}
+
+static void
+g_signal_group_get_property (GObject    *object,
+                             guint       prop_id,
+                             GValue     *value,
+                             GParamSpec *pspec)
+{
+  GSignalGroup *self = G_SIGNAL_GROUP (object);
+
+  switch ((GSignalGroupProperty) prop_id)
+    {
+    case PROP_TARGET:
+      g_value_take_object (value, g_signal_group_dup_target (self));
+      break;
+
+    case PROP_TARGET_TYPE:
+      g_value_set_gtype (value, self->target_type);
+      break;
+
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+    }
+}
+
+static void
+g_signal_group_set_property (GObject      *object,
+                             guint         prop_id,
+                             const GValue *value,
+                             GParamSpec   *pspec)
+{
+  GSignalGroup *self = G_SIGNAL_GROUP (object);
+
+  switch ((GSignalGroupProperty) prop_id)
+    {
+    case PROP_TARGET:
+      g_signal_group_set_target (self, g_value_get_object (value));
+      break;
+
+    case PROP_TARGET_TYPE:
+      g_signal_group_set_target_type (self, g_value_get_gtype (value));
+      break;
+
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+    }
+}
+
+static void
+g_signal_group_class_init (GSignalGroupClass *klass)
+{
+  GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+  object_class->constructed = g_signal_group_constructed;
+  object_class->dispose = g_signal_group_dispose;
+  object_class->finalize = g_signal_group_finalize;
+  object_class->get_property = g_signal_group_get_property;
+  object_class->set_property = g_signal_group_set_property;
+
+  /**
+   * GSignalGroup:target
+   *
+   * The target instance used when connecting signals.
+   *
+   * Since: 2.72
+   */
+  properties[PROP_TARGET] =
+      g_param_spec_object ("target",
+                           "Target",
+                           "The target instance used when connecting signals.",
+                           G_TYPE_OBJECT,
+                           (G_PARAM_READWRITE | G_PARAM_EXPLICIT_NOTIFY | G_PARAM_STATIC_STRINGS));
+
+  /**
+   * GSignalGroup:target-type
+   *
+   * The #GType of the target property.
+   *
+   * Since: 2.72
+   */
+  properties[PROP_TARGET_TYPE] =
+      g_param_spec_gtype ("target-type",
+                          "Target Type",
+                          "The GType of the target property.",
+                          G_TYPE_OBJECT,
+                          (G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS));
+
+  g_object_class_install_properties (object_class, LAST_PROP, properties);
+
+  /**
+   * GSignalGroup::bind:
+   * @self: the #GSignalGroup
+   * @instance: a #GObject containing the new value for #GSignalGroup:target
+   *
+   * This signal is emitted when #GSignalGroup:target is set to a new value
+   * other than %NULL. It is similar to #GObject::notify on `target` except it
+   * will not emit when #GSignalGroup:target is %NULL and also allows for
+   * receiving the #GObject without a data-race.
+   *
+   * Since: 2.72
+   */
+  signals[BIND] =
+      g_signal_new ("bind",
+                    G_TYPE_FROM_CLASS (klass),
+                    G_SIGNAL_RUN_LAST,
+                    0,
+                    NULL, NULL, NULL,
+                    G_TYPE_NONE,
+                    1,
+                    G_TYPE_OBJECT);
+
+  /**
+   * GSignalGroup::unbind:
+   * @self: a #GSignalGroup
+   *
+   * This signal is emitted when the target instance of @self is set to a
+   * new #GObject.
+   *
+   * This signal will only be emitted if the previous target of @self is
+   * non-%NULL.
+   *
+   * Since: 2.72
+   */
+  signals[UNBIND] =
+      g_signal_new ("unbind",
+                    G_TYPE_FROM_CLASS (klass),
+                    G_SIGNAL_RUN_LAST,
+                    0,
+                    NULL, NULL, NULL,
+                    G_TYPE_NONE,
+                    0);
+}
+
+static void
+g_signal_group_init (GSignalGroup *self)
+{
+  g_rec_mutex_init (&self->mutex);
+  self->handlers = g_ptr_array_new_with_free_func (signal_handler_free);
+  self->target_type = G_TYPE_OBJECT;
+}
+
+/**
+ * g_signal_group_new:
+ * @target_type: the #GType of the target instance.
+ *
+ * Creates a new #GSignalGroup for target instances of @target_type.
+ *
+ * Returns: (transfer full): a new #GSignalGroup
+ *
+ * Since: 2.72
+ */
+GSignalGroup *
+g_signal_group_new (GType target_type)
+{
+  g_return_val_if_fail (g_type_is_a (target_type, G_TYPE_OBJECT), NULL);
+
+  return g_object_new (G_TYPE_SIGNAL_GROUP,
+                       "target-type", target_type,
+                       NULL);
+}
+
+static void
+g_signal_group_connect_full (GSignalGroup   *self,
+                             const gchar    *detailed_signal,
+                             GCallback       c_handler,
+                             gpointer        data,
+                             GClosureNotify  notify,
+                             GConnectFlags   flags,
+                             gboolean        is_object)
+{
+  GObject *target;
+  SignalHandler *handler;
+  GClosure *closure;
+  guint signal_id;
+  GQuark signal_detail;
+
+  g_return_if_fail (G_IS_SIGNAL_GROUP (self));
+  g_return_if_fail (detailed_signal != NULL);
+  g_return_if_fail (g_signal_parse_name (detailed_signal, self->target_type,
+                                         &signal_id, &signal_detail, TRUE) != 0);
+  g_return_if_fail (c_handler != NULL);
+  g_return_if_fail (!is_object || G_IS_OBJECT (data));
+
+  g_rec_mutex_lock (&self->mutex);
+
+  if (self->has_bound_at_least_once)
+    {
+      g_critical ("Cannot add signals after setting target");
+      g_rec_mutex_unlock (&self->mutex);
+      return;
+    }
+
+  if ((flags & G_CONNECT_SWAPPED) != 0)
+    closure = g_cclosure_new_swap (c_handler, data, notify);
+  else
+    closure = g_cclosure_new (c_handler, data, notify);
+
+  handler = g_slice_new0 (SignalHandler);
+  handler->group = self;
+  handler->signal_id = signal_id;
+  handler->signal_detail = signal_detail;
+  handler->closure = g_closure_ref (closure);
+  handler->connect_after = ((flags & G_CONNECT_AFTER) != 0);
+
+  g_closure_sink (closure);
+
+  if (is_object)
+    {
+      /* Set closure->is_invalid when data is disposed. We only track this to avoid
+       * reconnecting in the future. However, we do a round of cleanup when ever we
+       * connect a new object or the target changes to GC the old handlers.
+       */
+      g_object_watch_closure (data, closure);
+    }
+
+  g_ptr_array_add (self->handlers, handler);
+
+  target = g_weak_ref_get (&self->target_ref);
+
+  if (target != NULL)
+    {
+      g_signal_group_bind_handler (self, handler, target);
+      g_object_unref (target);
+    }
+
+  /* Lazily remove any old handlers on connect */
+  g_signal_group_gc_handlers (self);
+
+  g_rec_mutex_unlock (&self->mutex);
+}
+
+/**
+ * g_signal_group_connect_object: (skip)
+ * @self: a #GSignalGroup
+ * @detailed_signal: a string of the form `signal-name` with optional `::signal-detail`
+ * @c_handler: (scope notified): the #GCallback to connect
+ * @object: (not nullable) (transfer none): the #GObject to pass as data to @c_handler calls
+ * @flags: #GConnectFlags for the signal connection
+ *
+ * Connects @c_handler to the signal @detailed_signal on #GSignalGroup:target.
+ *
+ * Ensures that the @object stays alive during the call to @c_handler
+ * by temporarily adding a reference count. When the @object is destroyed
+ * the signal handler will automatically be removed.
+ *
+ * You cannot connect a signal handler after #GSignalGroup:target has been set.
+ *
+ * Since: 2.72
+ */
+void
+g_signal_group_connect_object (GSignalGroup  *self,
+                               const gchar   *detailed_signal,
+                               GCallback      c_handler,
+                               gpointer       object,
+                               GConnectFlags  flags)
+{
+  g_return_if_fail (G_IS_OBJECT (object));
+
+  g_signal_group_connect_full (self, detailed_signal, c_handler, object, NULL,
+                               flags, TRUE);
+}
+
+/**
+ * g_signal_group_connect_data:
+ * @self: a #GSignalGroup
+ * @detailed_signal: a string of the form "signal-name::detail"
+ * @c_handler: (scope notified) (closure data) (destroy notify): the #GCallback to connect
+ * @data: the data to pass to @c_handler calls
+ * @notify: function to be called when disposing of @self
+ * @flags: the flags used to create the signal connection
+ *
+ * Connects @c_handler to the signal @detailed_signal
+ * on the target instance of @self.
+ *
+ * You cannot connect a signal handler after #GSignalGroup:target has been set.
+ *
+ * Since: 2.72
+ */
+void
+g_signal_group_connect_data (GSignalGroup   *self,
+                             const gchar    *detailed_signal,
+                             GCallback       c_handler,
+                             gpointer        data,
+                             GClosureNotify  notify,
+                             GConnectFlags   flags)
+{
+  g_signal_group_connect_full (self, detailed_signal, c_handler, data, notify,
+                               flags, FALSE);
+}
+
+/**
+ * g_signal_group_connect: (skip)
+ * @self: a #GSignalGroup
+ * @detailed_signal: a string of the form "signal-name::detail"
+ * @c_handler: (scope notified): the #GCallback to connect
+ * @data: the data to pass to @c_handler calls
+ *
+ * Connects @c_handler to the signal @detailed_signal
+ * on the target instance of @self.
+ *
+ * You cannot connect a signal handler after #GSignalGroup:target has been set.
+ *
+ * Since: 2.72
+ */
+void
+g_signal_group_connect (GSignalGroup *self,
+                        const gchar  *detailed_signal,
+                        GCallback     c_handler,
+                        gpointer      data)
+{
+  g_signal_group_connect_full (self, detailed_signal, c_handler, data, NULL,
+                               0, FALSE);
+}
+
+/**
+ * g_signal_group_connect_after: (skip)
+ * @self: a #GSignalGroup
+ * @detailed_signal: a string of the form "signal-name::detail"
+ * @c_handler: (scope notified): the #GCallback to connect
+ * @data: the data to pass to @c_handler calls
+ *
+ * Connects @c_handler to the signal @detailed_signal
+ * on the target instance of @self.
+ *
+ * The @c_handler will be called after the default handler of the signal.
+ *
+ * You cannot connect a signal handler after #GSignalGroup:target has been set.
+ *
+ * Since: 2.72
+ */
+void
+g_signal_group_connect_after (GSignalGroup *self,
+                              const gchar  *detailed_signal,
+                              GCallback     c_handler,
+                              gpointer      data)
+{
+  g_signal_group_connect_full (self, detailed_signal, c_handler,
+                               data, NULL, G_CONNECT_AFTER, FALSE);
+}
+
+/**
+ * g_signal_group_connect_swapped:
+ * @self: a #GSignalGroup
+ * @detailed_signal: a string of the form "signal-name::detail"
+ * @c_handler: (scope async): the #GCallback to connect
+ * @data: the data to pass to @c_handler calls
+ *
+ * Connects @c_handler to the signal @detailed_signal
+ * on the target instance of @self.
+ *
+ * The instance on which the signal is emitted and @data
+ * will be swapped when calling @c_handler.
+ *
+ * You cannot connect a signal handler after #GSignalGroup:target has been set.
+ *
+ * Since: 2.72
+ */
+void
+g_signal_group_connect_swapped (GSignalGroup *self,
+                                const gchar  *detailed_signal,
+                                GCallback     c_handler,
+                                gpointer      data)
+{
+  g_signal_group_connect_full (self, detailed_signal, c_handler, data, NULL,
+                               G_CONNECT_SWAPPED, FALSE);
+}
diff --git a/gobject/gsignalgroup.h b/gobject/gsignalgroup.h
new file mode 100644 (file)
index 0000000..c82a5cd
--- /dev/null
@@ -0,0 +1,93 @@
+/* GObject - GLib Type, Object, Parameter and Signal Library
+ *
+ * Copyright (C) 2015-2022 Christian Hergert <christian@hergert.me>
+ * Copyright (C) 2015 Garrett Regier <garrettregier@gmail.com>
+ *
+ * This library 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 library 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/>.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+#ifndef __G_SIGNAL_GROUP_H__
+#define __G_SIGNAL_GROUP_H__
+
+#if !defined (__GLIB_GOBJECT_H_INSIDE__) && !defined (GOBJECT_COMPILATION)
+#error "Only <glib-object.h> can be included directly."
+#endif
+
+#include <glib.h>
+#include <gobject/gobject.h>
+#include <gobject/gsignal.h>
+
+G_BEGIN_DECLS
+
+#define G_SIGNAL_GROUP(obj)    (G_TYPE_CHECK_INSTANCE_CAST ((obj), G_TYPE_SIGNAL_GROUP, GSignalGroup))
+#define G_IS_SIGNAL_GROUP(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), G_TYPE_SIGNAL_GROUP))
+#define G_TYPE_SIGNAL_GROUP    (g_signal_group_get_type())
+
+/**
+ * GSignalGroup:
+ *
+ * #GSignalGroup is an opaque structure whose members
+ * cannot be accessed directly.
+ *
+ * Since: 2.72
+ */
+typedef struct _GSignalGroup GSignalGroup;
+
+GLIB_AVAILABLE_IN_2_72
+GType         g_signal_group_get_type        (void) G_GNUC_CONST;
+GLIB_AVAILABLE_IN_2_72
+GSignalGroup *g_signal_group_new             (GType           target_type);
+GLIB_AVAILABLE_IN_2_72
+void          g_signal_group_set_target      (GSignalGroup   *self,
+                                              gpointer        target);
+GLIB_AVAILABLE_IN_2_72
+gpointer      g_signal_group_dup_target      (GSignalGroup   *self);
+GLIB_AVAILABLE_IN_2_72
+void          g_signal_group_block           (GSignalGroup   *self);
+GLIB_AVAILABLE_IN_2_72
+void          g_signal_group_unblock         (GSignalGroup   *self);
+GLIB_AVAILABLE_IN_2_72
+void          g_signal_group_connect_object  (GSignalGroup   *self,
+                                              const gchar    *detailed_signal,
+                                              GCallback       c_handler,
+                                              gpointer        object,
+                                              GConnectFlags   flags);
+GLIB_AVAILABLE_IN_2_72
+void          g_signal_group_connect_data    (GSignalGroup   *self,
+                                              const gchar    *detailed_signal,
+                                              GCallback       c_handler,
+                                              gpointer        data,
+                                              GClosureNotify  notify,
+                                              GConnectFlags   flags);
+GLIB_AVAILABLE_IN_2_72
+void          g_signal_group_connect         (GSignalGroup   *self,
+                                              const gchar    *detailed_signal,
+                                              GCallback       c_handler,
+                                              gpointer        data);
+GLIB_AVAILABLE_IN_2_72
+void          g_signal_group_connect_after   (GSignalGroup   *self,
+                                              const gchar    *detailed_signal,
+                                              GCallback       c_handler,
+                                              gpointer        data);
+GLIB_AVAILABLE_IN_2_72
+void          g_signal_group_connect_swapped (GSignalGroup   *self,
+                                              const gchar    *detailed_signal,
+                                              GCallback       c_handler,
+                                              gpointer        data);
+
+G_END_DECLS
+
+#endif /* __G_SIGNAL_GROUP_H__ */
index 26ec30b..cf213b7 100644 (file)
@@ -2199,8 +2199,8 @@ type_class_init_Wm (TypeNode   *node,
   
   if (pclass)
     {
-      TypeNode *pnode = lookup_type_node_I (pclass->g_type);
-      
+      pnode = lookup_type_node_I (pclass->g_type);
+
       memcpy (class, pclass, pnode->data->class.class_size);
       memcpy (G_STRUCT_MEMBER_P (class, ALIGN_STRUCT (node->data->class.class_size)), G_STRUCT_MEMBER_P (pclass, ALIGN_STRUCT (pnode->data->class.class_size)), pnode->data->class.class_private_size);
 
@@ -2849,7 +2849,7 @@ g_type_register_static (GType            parent_type,
  * instances (if not abstract).  The value of @flags determines the nature
  * (e.g. abstract or not) of the type.
  *
- * Returns: the new type identifier or #G_TYPE_INVALID if registration failed
+ * Returns: the new type identifier or %G_TYPE_INVALID if registration failed
  */
 GType
 g_type_register_dynamic (GType        parent_type,
@@ -4521,7 +4521,23 @@ gobject_init (void)
   _g_signal_init ();
 }
 
-#if defined (G_OS_WIN32)
+#ifdef G_PLATFORM_WIN32
+
+void gobject_win32_init (void);
+
+void
+gobject_win32_init (void)
+{
+  /* May be called more than once in static compilation mode */
+  static gboolean win32_already_init = FALSE;
+  if (!win32_already_init)
+    {
+      win32_already_init = TRUE;
+      gobject_init ();
+    }
+}
+
+#ifndef GLIB_STATIC_COMPILATION
 
 BOOL WINAPI DllMain (HINSTANCE hinstDLL,
                      DWORD     fdwReason,
@@ -4535,7 +4551,7 @@ DllMain (HINSTANCE hinstDLL,
   switch (fdwReason)
     {
     case DLL_PROCESS_ATTACH:
-      gobject_init ();
+      gobject_win32_init ();
       break;
 
     default:
@@ -4546,22 +4562,56 @@ DllMain (HINSTANCE hinstDLL,
   return TRUE;
 }
 
-#elif defined (G_HAS_CONSTRUCTORS)
+#elif defined(G_HAS_CONSTRUCTORS) /* && G_PLATFORM_WIN32 && GLIB_STATIC_COMPILATION */
+extern void glib_win32_init (void);
+
 #ifdef G_DEFINE_CONSTRUCTOR_NEEDS_PRAGMA
 #pragma G_DEFINE_CONSTRUCTOR_PRAGMA_ARGS(gobject_init_ctor)
 #endif
+
 G_DEFINE_CONSTRUCTOR(gobject_init_ctor)
 
 static void
 gobject_init_ctor (void)
 {
-  gobject_init ();
+  /* When built dynamically, module initialization is done through DllMain
+   * function which is called when the dynamic library is loaded by the glib
+   * module. So, in dynamic configuration glib is always initialized BEFORE
+   * gobject.
+   *
+   * When built statically, initialization mechanism relies on hooking
+   * functions to the CRT section directly at compilation time. As we don't
+   * control how each compilation unit will be built and in which order, we
+   * obtain the same kind of issue as the "static initialization order fiasco".
+   * In this case, we must ensure explicitly that glib is always well
+   * initialized BEFORE gobject.
+   */
+  glib_win32_init ();
+  gobject_win32_init ();
 }
 
-#else
+#else /* G_PLATFORM_WIN32 && GLIB_STATIC_COMPILATION && !G_HAS_CONSTRUCTORS */
 # error Your platform/compiler is missing constructor support
+#endif /* GLIB_STATIC_COMPILATION */
+
+#elif defined(G_HAS_CONSTRUCTORS) /* && !G_PLATFORM_WIN32 */
+
+#ifdef G_DEFINE_CONSTRUCTOR_NEEDS_PRAGMA
+#pragma G_DEFINE_CONSTRUCTOR_PRAGMA_ARGS(gobject_init_ctor)
 #endif
 
+G_DEFINE_CONSTRUCTOR (gobject_init_ctor)
+
+static void
+gobject_init_ctor (void)
+{
+  gobject_init ();
+}
+
+#else /* !G_PLATFORM_WIN32 && !G_HAS_CONSTRUCTORS */
+#error Your platform/compiler is missing constructor support
+#endif /* G_PLATFORM_WIN32 */
+
 /**
  * g_type_class_add_private:
  * @g_class: (type GObject.TypeClass): class structure for an instantiatable
@@ -4709,7 +4759,7 @@ g_type_add_instance_private (GType class_gtype,
    * register the private data size in the get_type() implementation and we
    * hide it behind a macro. the function will return the private size, instead
    * of the offset, which will be stored inside a static variable defined by
-   * the G_DEFINE_TYPE_EXTENDED macro. the G_DEFINE_TYPE_EXTENDED macro will
+   * the G_DEFINE_TYPE_EXTENDED() macro. the G_DEFINE_TYPE_EXTENDED() macro will
    * check the variable and call g_type_class_add_instance_private(), which
    * will use the data size and actually register the private data, then
    * return the computed offset of the private data, which will be stored
index 874a7c0..2aa5e13 100644 (file)
@@ -72,7 +72,7 @@ G_BEGIN_DECLS
  * 
  * The fundamental type corresponding to #gchar.
  *
- * The type designated by G_TYPE_CHAR is unconditionally an 8-bit signed integer.
+ * The type designated by %G_TYPE_CHAR is unconditionally an 8-bit signed integer.
  * This may or may not be the same type a the C type "gchar".
  */
 #define G_TYPE_CHAR                    G_TYPE_MAKE_FUNDAMENTAL (3)
@@ -654,7 +654,7 @@ struct _GTypeQuery
  * This macro should only be used in type implementations.
  * 
  * Since: 2.4
- * Deprecated: 2.58: Use %G_ADD_PRIVATE and the generated
+ * Deprecated: 2.58: Use G_ADD_PRIVATE() and the generated
  *   `your_type_get_instance_private()` function instead
  * Returns: (not nullable): a pointer to the private data structure
  */
@@ -1210,7 +1210,7 @@ struct _GInterfaceInfo
  *  return NULL;
  *  ]|
  *  It should be noted, that it is generally a bad idea to follow the
- *  #G_VALUE_NOCOPY_CONTENTS hint for reference counted types. Due to
+ *  %G_VALUE_NOCOPY_CONTENTS hint for reference counted types. Due to
  *  reentrancy requirements and reference count assertions performed
  *  by the signal emission code, reference counts should always be
  *  incremented for reference counted contents stored in the value->data
@@ -1401,6 +1401,17 @@ guint     g_type_get_type_registration_serial (void);
  * #endif
  * ]|
  *
+ * And use it as follow in your C file:
+ *
+ * |[<!-- language="C" -->
+ * struct _MyAppWindow
+ * {
+ *  GtkWindow parent;
+ *  ...
+ * };
+ * G_DEFINE_TYPE (MyAppWindow, my_app_window, GTK_TYPE_WINDOW)
+ * ]|
+ *
  * This results in the following things happening:
  *
  * - the usual `my_app_window_get_type()` function is declared with a return type of #GType
@@ -1491,6 +1502,18 @@ guint     g_type_get_type_registration_serial (void);
  * #endif
  * ]|
  *
+ * Since the instance structure is public it is often needed to declare a
+ * private struct as follow in your C file:
+ *
+ * |[<!-- language="C" -->
+ * typedef struct _GtkFrobberPrivate GtkFrobberPrivate;
+ * struct _GtkFrobberPrivate
+ * {
+ *   ...
+ * };
+ * G_DEFINE_TYPE_WITH_PRIVATE (GtkFrobber, gtk_frobber, GTK_TYPE_WIDGET)
+ * ]|
+ *
  * This results in the following things happening:
  *
  * - the usual `gtk_frobber_get_type()` function is declared with a return type of #GType
@@ -1585,6 +1608,18 @@ guint     g_type_get_type_registration_serial (void);
  * #endif
  * ]|
  *
+ * And use it as follow in your C file:
+ *
+ * |[<!-- language="C" -->
+ * G_DEFINE_INTERFACE (MyModel, my_model, G_TYPE_OBJECT);
+ *
+ * static void
+ * my_model_default_init (MyModelInterface *iface)
+ * {
+ *   ...
+ * }
+ * ]|
+ *
  * This results in the following things happening:
  *
  * - the usual `my_model_get_type()` function is declared with a return type of #GType
@@ -1649,7 +1684,7 @@ guint     g_type_get_type_registration_serial (void);
  * 
  * A convenience macro for type implementations.
  *
- * Similar to G_DEFINE_TYPE(), but allows you to insert custom code into the 
+ * Similar to G_DEFINE_TYPE(), but allows you to insert custom code into the
  * `*_get_type()` function, e.g. interface implementations via G_IMPLEMENT_INTERFACE().
  * See G_DEFINE_TYPE_EXTENDED() for an example.
  * 
@@ -1709,7 +1744,7 @@ guint     g_type_get_type_registration_serial (void);
  *
  * Similar to G_DEFINE_TYPE_WITH_CODE(), but defines an abstract type and
  * allows you to insert custom code into the `*_get_type()` function, e.g.
- * interface implementations  via G_IMPLEMENT_INTERFACE().
+ * interface implementations via G_IMPLEMENT_INTERFACE().
  *
  * See G_DEFINE_TYPE_EXTENDED() for an example.
  * 
@@ -1758,7 +1793,7 @@ guint     g_type_get_type_registration_serial (void);
  *
  * Similar to G_DEFINE_TYPE_WITH_CODE(), but defines a final type and
  * allows you to insert custom code into the `*_get_type()` function, e.g.
- * interface implementations  via G_IMPLEMENT_INTERFACE().
+ * interface implementations via G_IMPLEMENT_INTERFACE().
  *
  * See G_DEFINE_TYPE_EXTENDED() for an example.
  *
@@ -1981,6 +2016,12 @@ guint     g_type_get_type_registration_serial (void);
  *   }
  * ]|
  *
+ * Since GLib 2.72, the returned `MyObjectPrivate` pointer is guaranteed to be
+ * aligned to at least the alignment of the largest basic GLib type (typically
+ * this is #guint64 or #gdouble). If you need larger alignment for an element in
+ * the struct, you should allocate it on the heap (aligned), or arrange for your
+ * `MyObjectPrivate` struct to be appropriately padded.
+ *
  * Note that this macro can only be used together with the `G_DEFINE_TYPE_*`
  * macros, since it depends on variable names from those macros.
  *
@@ -2215,7 +2256,7 @@ type_name##_get_type (void) \
  *                                register_rectangle_transform_funcs (g_define_type_id))
  * ]|
  *
- * Similarly to the %G_DEFINE_TYPE family of macros, the #GType of the newly
+ * Similarly to the `G_DEFINE_TYPE_*` family of macros, the #GType of the newly
  * defined boxed type is exposed in the `g_define_type_id` variable.
  *
  * Since: 2.26
@@ -2414,9 +2455,9 @@ const gchar *    g_type_name_from_class         (GTypeClass       *g_class);
 /* --- implementation bits --- */
 #ifndef G_DISABLE_CAST_CHECKS
 #  define _G_TYPE_CIC(ip, gt, ct) \
-    ((ct*) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
+    ((ct*) (void *) g_type_check_instance_cast ((GTypeInstance*) ip, gt))
 #  define _G_TYPE_CCC(cp, gt, ct) \
-    ((ct*) g_type_check_class_cast ((GTypeClass*) cp, gt))
+    ((ct*) (void *) g_type_check_class_cast ((GTypeClass*) cp, gt))
 #else /* G_DISABLE_CAST_CHECKS */
 #  define _G_TYPE_CIC(ip, gt, ct)       ((ct*) ip)
 #  define _G_TYPE_CCC(cp, gt, ct)       ((ct*) cp)
index 2714b36..82e675c 100644 (file)
@@ -144,8 +144,8 @@ G_STMT_START {                                                                              \
  * `va_list` variables cannot be passed by reference.
  *
  * Note: If you are creating the @value argument just before calling this macro,
- * you should use the #G_VALUE_COLLECT_INIT variant and pass the uninitialized
- * #GValue. That variant is faster than #G_VALUE_COLLECT.
+ * you should use the G_VALUE_COLLECT_INIT() variant and pass the uninitialized
+ * #GValue. That variant is faster than G_VALUE_COLLECT().
  */
 #define G_VALUE_COLLECT(value, var_args, flags, __error) G_STMT_START {                        \
   GValue *g_vc_value = (value);                                                                \
index df2f0aa..f37504b 100644 (file)
@@ -306,7 +306,7 @@ void g_value_set_string_take_ownership          (GValue            *value,
 /**
  * gchararray:
  * 
- * A C representable type name for #G_TYPE_STRING.
+ * A C representable type name for %G_TYPE_STRING.
  */
 typedef gchar* gchararray;
 
index 536f153..026a035 100644 (file)
@@ -2,6 +2,7 @@ gobject_install_headers = files(
   'gobject-autocleanups.h',
   'glib-types.h',
   'gbinding.h',
+  'gbindinggroup.h',
   'gboxed.h',
   'gclosure.h',
   'genums.h',
@@ -10,6 +11,7 @@ gobject_install_headers = files(
   'gparam.h',
   'gparamspecs.h',
   'gsignal.h',
+  'gsignalgroup.h',
   'gsourceclosure.h',
   'gtype.h',
   'gtypemodule.h',
@@ -25,6 +27,7 @@ install_headers(gobject_install_headers, subdir : 'glib-2.0/gobject')
 gobject_sources = files(
   'gatomicarray.c',
   'gbinding.c',
+  'gbindinggroup.c',
   'gboxed.c',
   'gclosure.c',
   'genums.c',
@@ -33,6 +36,7 @@ gobject_sources = files(
   'gparam.c',
   'gparamspecs.c',
   'gsignal.c',
+  'gsignalgroup.c',
   'gsourceclosure.c',
   'gtype.c',
   'gtypemodule.c',
@@ -43,7 +47,7 @@ gobject_sources = files(
   'gvaluetypes.c',
 )
 
-if host_system == 'windows'
+if host_system == 'windows' and get_option('default_library') == 'shared'
   gobject_win_rc = configure_file(
     input: 'gobject.rc.in',
     output: 'gobject.rc',
@@ -117,6 +121,10 @@ glib_enumtypes_c = custom_target('glib_enumtypes_c',
 
 glib_enumtypes_dep = declare_dependency(sources : [glib_enumtypes_h])
 
+# Expose as variable to be used by gobject-introspection
+# when it includes GLib as a subproject
+glib_types_h = files('glib-types.h')
+
 libgobject = library('gobject-2.0',
   gobject_dtrace_obj, gobject_dtrace_hdr, glib_enumtypes_h, glib_enumtypes_c,
   sources : gobject_sources,
@@ -159,8 +167,16 @@ configure_file(
   output: 'libgobject-2.0.so.@0@-gdb.py'.format(library_version),
   configuration: gdb_conf,
   install_dir: gdb_install_dir,
+  install: gdb_install,
 )
 
+# This is needed to make gdb find gobject_gdb.py
+if meson.version().version_compare('>=0.58')
+  env = environment()
+  env.prepend('PYTHONPATH', meson.current_source_dir())
+  meson.add_devenv(env)
+endif
+
 if enable_systemtap
   gobject_stp = configure_file(input : 'gobject.stp.in',
     output : '@0@.stp'.format(libgobject.full_path().split('/').get(-1)),
diff --git a/gobject/tests/bindinggroup.c b/gobject/tests/bindinggroup.c
new file mode 100644 (file)
index 0000000..94bc9b9
--- /dev/null
@@ -0,0 +1,694 @@
+/* GObject - GLib Type, Object, Parameter and Signal Library
+ *
+ * Copyright (C) 2015-2022 Christian Hergert <christian@hergert.me>
+ * Copyright (C) 2015 Garrett Regier <garrettregier@gmail.com>
+ *
+ * This library 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 library 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/>.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+#include <glib-object.h>
+
+/* Copied from glib */
+typedef struct _BindingSource
+{
+  GObject parent_instance;
+
+  gint foo;
+  gint bar;
+  gdouble value;
+  gboolean toggle;
+} BindingSource;
+
+typedef struct _BindingSourceClass
+{
+  GObjectClass parent_class;
+} BindingSourceClass;
+
+enum
+{
+  PROP_SOURCE_FOO = 1,
+  PROP_SOURCE_BAR,
+  PROP_SOURCE_VALUE,
+  PROP_SOURCE_TOGGLE
+};
+
+static GType binding_source_get_type (void);
+G_DEFINE_TYPE (BindingSource, binding_source, G_TYPE_OBJECT);
+
+static void
+binding_source_set_property (GObject      *gobject,
+                             guint         prop_id,
+                             const GValue *value,
+                             GParamSpec   *pspec)
+{
+  BindingSource *source = (BindingSource *) gobject;
+
+  switch (prop_id)
+    {
+    case PROP_SOURCE_FOO:
+      source->foo = g_value_get_int (value);
+      break;
+
+    case PROP_SOURCE_BAR:
+      source->bar = g_value_get_int (value);
+      break;
+
+    case PROP_SOURCE_VALUE:
+      source->value = g_value_get_double (value);
+      break;
+
+    case PROP_SOURCE_TOGGLE:
+      source->toggle = g_value_get_boolean (value);
+      break;
+
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
+    }
+}
+
+static void
+binding_source_get_property (GObject    *gobject,
+                             guint       prop_id,
+                             GValue     *value,
+                             GParamSpec *pspec)
+{
+  BindingSource *source = (BindingSource *) gobject;
+
+  switch (prop_id)
+    {
+    case PROP_SOURCE_FOO:
+      g_value_set_int (value, source->foo);
+      break;
+
+    case PROP_SOURCE_BAR:
+      g_value_set_int (value, source->bar);
+      break;
+
+    case PROP_SOURCE_VALUE:
+      g_value_set_double (value, source->value);
+      break;
+
+    case PROP_SOURCE_TOGGLE:
+      g_value_set_boolean (value, source->toggle);
+      break;
+
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
+    }
+}
+
+static void
+binding_source_class_init (BindingSourceClass *klass)
+{
+  GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+
+  gobject_class->set_property = binding_source_set_property;
+  gobject_class->get_property = binding_source_get_property;
+
+  g_object_class_install_property (gobject_class, PROP_SOURCE_FOO,
+                                   g_param_spec_int ("foo", "Foo", "Foo",
+                                                     -1, 100,
+                                                     0,
+                                                     G_PARAM_READWRITE));
+  g_object_class_install_property (gobject_class, PROP_SOURCE_BAR,
+                                   g_param_spec_int ("bar", "Bar", "Bar",
+                                                     -1, 100,
+                                                     0,
+                                                     G_PARAM_READWRITE));
+  g_object_class_install_property (gobject_class, PROP_SOURCE_VALUE,
+                                   g_param_spec_double ("value", "Value", "Value",
+                                                        -100.0, 200.0,
+                                                        0.0,
+                                                        G_PARAM_READWRITE));
+  g_object_class_install_property (gobject_class, PROP_SOURCE_TOGGLE,
+                                   g_param_spec_boolean ("toggle", "Toggle", "Toggle",
+                                                         FALSE,
+                                                         G_PARAM_READWRITE));
+}
+
+static void
+binding_source_init (BindingSource *self)
+{
+}
+
+typedef struct _BindingTarget
+{
+  GObject parent_instance;
+
+  gint bar;
+  gdouble value;
+  gboolean toggle;
+} BindingTarget;
+
+typedef struct _BindingTargetClass
+{
+  GObjectClass parent_class;
+} BindingTargetClass;
+
+enum
+{
+  PROP_TARGET_BAR = 1,
+  PROP_TARGET_VALUE,
+  PROP_TARGET_TOGGLE
+};
+
+static GType binding_target_get_type (void);
+G_DEFINE_TYPE (BindingTarget, binding_target, G_TYPE_OBJECT);
+
+static void
+binding_target_set_property (GObject      *gobject,
+                             guint         prop_id,
+                             const GValue *value,
+                             GParamSpec   *pspec)
+{
+  BindingTarget *target = (BindingTarget *) gobject;
+
+  switch (prop_id)
+    {
+    case PROP_TARGET_BAR:
+      target->bar = g_value_get_int (value);
+      break;
+
+    case PROP_TARGET_VALUE:
+      target->value = g_value_get_double (value);
+      break;
+
+    case PROP_TARGET_TOGGLE:
+      target->toggle = g_value_get_boolean (value);
+      break;
+
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
+    }
+}
+
+static void
+binding_target_get_property (GObject    *gobject,
+                             guint       prop_id,
+                             GValue     *value,
+                             GParamSpec *pspec)
+{
+  BindingTarget *target = (BindingTarget *) gobject;
+
+  switch (prop_id)
+    {
+    case PROP_TARGET_BAR:
+      g_value_set_int (value, target->bar);
+      break;
+
+    case PROP_TARGET_VALUE:
+      g_value_set_double (value, target->value);
+      break;
+
+    case PROP_TARGET_TOGGLE:
+      g_value_set_boolean (value, target->toggle);
+      break;
+
+    default:
+      G_OBJECT_WARN_INVALID_PROPERTY_ID (gobject, prop_id, pspec);
+    }
+}
+
+static void
+binding_target_class_init (BindingTargetClass *klass)
+{
+  GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+
+  gobject_class->set_property = binding_target_set_property;
+  gobject_class->get_property = binding_target_get_property;
+
+  g_object_class_install_property (gobject_class, PROP_TARGET_BAR,
+                                   g_param_spec_int ("bar", "Bar", "Bar",
+                                                     -1, 100,
+                                                     0,
+                                                     G_PARAM_READWRITE));
+  g_object_class_install_property (gobject_class, PROP_TARGET_VALUE,
+                                   g_param_spec_double ("value", "Value", "Value",
+                                                        -100.0, 200.0,
+                                                        0.0,
+                                                        G_PARAM_READWRITE));
+  g_object_class_install_property (gobject_class, PROP_TARGET_TOGGLE,
+                                   g_param_spec_boolean ("toggle", "Toggle", "Toggle",
+                                                         FALSE,
+                                                         G_PARAM_READWRITE));
+}
+
+static void
+binding_target_init (BindingTarget *self)
+{
+}
+
+static gboolean
+celsius_to_fahrenheit (GBinding     *binding,
+                       const GValue *from_value,
+                       GValue       *to_value,
+                       gpointer      user_data G_GNUC_UNUSED)
+{
+  gdouble celsius, fahrenheit;
+
+  g_assert_true (G_VALUE_HOLDS (from_value, G_TYPE_DOUBLE));
+  g_assert_true (G_VALUE_HOLDS (to_value, G_TYPE_DOUBLE));
+
+  celsius = g_value_get_double (from_value);
+  fahrenheit = (9 * celsius / 5) + 32.0;
+
+  if (g_test_verbose ())
+    g_printerr ("Converting %.2fC to %.2fF\n", celsius, fahrenheit);
+
+  g_value_set_double (to_value, fahrenheit);
+
+  return TRUE;
+}
+
+static gboolean
+fahrenheit_to_celsius (GBinding     *binding,
+                       const GValue *from_value,
+                       GValue       *to_value,
+                       gpointer      user_data G_GNUC_UNUSED)
+{
+  gdouble celsius, fahrenheit;
+
+  g_assert_true (G_VALUE_HOLDS (from_value, G_TYPE_DOUBLE));
+  g_assert_true (G_VALUE_HOLDS (to_value, G_TYPE_DOUBLE));
+
+  fahrenheit = g_value_get_double (from_value);
+  celsius = 5 * (fahrenheit - 32.0) / 9;
+
+  if (g_test_verbose ())
+    g_printerr ("Converting %.2fF to %.2fC\n", fahrenheit, celsius);
+
+  g_value_set_double (to_value, celsius);
+
+  return TRUE;
+}
+
+static void
+test_binding_group_invalid (void)
+{
+  GBindingGroup *group = g_binding_group_new ();
+  BindingSource *source = g_object_new (binding_source_get_type (), NULL);
+  BindingTarget *target = g_object_new (binding_target_get_type (), NULL);
+
+  /* Invalid Target Property */
+  g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                         "*find_property*target_property*!=*NULL*");
+  g_binding_group_bind (group, "value",
+                        target, "does-not-exist",
+                        G_BINDING_DEFAULT);
+  g_test_assert_expected_messages ();
+
+  g_binding_group_set_source (group, NULL);
+
+  /* Invalid Source Property */
+  g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                         "*find_property*source_property*!=*NULL*");
+  g_binding_group_set_source (group, source);
+  g_binding_group_bind (group, "does-not-exist",
+                        target, "value",
+                        G_BINDING_DEFAULT);
+  g_test_assert_expected_messages ();
+
+  g_binding_group_set_source (group, NULL);
+
+  /* Invalid Source */
+  g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                         "*find_property*->source_property*!=*NULL*");
+  g_binding_group_bind (group, "does-not-exist",
+                        target, "value",
+                        G_BINDING_DEFAULT);
+  g_binding_group_set_source (group, source);
+  g_test_assert_expected_messages ();
+
+  g_object_unref (target);
+  g_object_unref (source);
+  g_object_unref (group);
+}
+
+static void
+test_binding_group_default (void)
+{
+  gsize i, j;
+  GBindingGroup *group = g_binding_group_new ();
+  BindingSource *source = g_object_new (binding_source_get_type (), NULL);
+  BindingTarget *targets[5];
+  BindingSource *readback;
+
+  for (i = 0; i < G_N_ELEMENTS (targets); ++i)
+    {
+      targets[i] = g_object_new (binding_target_get_type (), NULL);
+      g_binding_group_bind (group, "foo",
+                            targets[i], "bar",
+                            G_BINDING_DEFAULT);
+    }
+
+  g_assert_null (g_binding_group_dup_source (group));
+  g_binding_group_set_source (group, source);
+  readback = g_binding_group_dup_source (group);
+  g_assert_true (readback == source);
+  g_object_unref (readback);
+
+  for (i = 0; i < 2; ++i)
+    {
+      g_object_set (source, "foo", 42, NULL);
+      for (j = 0; j < G_N_ELEMENTS (targets); ++j)
+        g_assert_cmpint (source->foo, ==, targets[j]->bar);
+
+      g_object_set (targets[0], "bar", 47, NULL);
+      g_assert_cmpint (source->foo, !=, targets[0]->bar);
+
+      /* Check that we transition the source correctly */
+      g_binding_group_set_source (group, NULL);
+      g_assert_null (g_binding_group_dup_source (group));
+      g_binding_group_set_source (group, source);
+      readback = g_binding_group_dup_source (group);
+      g_assert_true (readback == source);
+      g_object_unref (readback);
+    }
+
+  g_object_unref (group);
+
+  g_object_set (source, "foo", 0, NULL);
+  for (i = 0; i < G_N_ELEMENTS (targets); ++i)
+    g_assert_cmpint (source->foo, !=, targets[i]->bar);
+
+  g_object_unref (source);
+  for (i = 0; i < G_N_ELEMENTS (targets); ++i)
+    g_object_unref (targets[i]);
+}
+
+static void
+test_binding_group_bidirectional (void)
+{
+  gsize i, j;
+  GBindingGroup *group = g_binding_group_new ();
+  BindingSource *source = g_object_new (binding_source_get_type (), NULL);
+  BindingTarget *targets[5];
+  BindingSource *readback;
+
+  for (i = 0; i < G_N_ELEMENTS (targets); ++i)
+    {
+      targets[i] = g_object_new (binding_target_get_type (), NULL);
+      g_binding_group_bind (group, "value",
+                            targets[i], "value",
+                            G_BINDING_BIDIRECTIONAL);
+    }
+
+  g_assert_null (g_binding_group_dup_source (group));
+  g_binding_group_set_source (group, source);
+  readback = g_binding_group_dup_source (group);
+  g_assert_true (readback == source);
+  g_object_unref (readback);
+
+  for (i = 0; i < 2; ++i)
+    {
+      g_object_set (source, "value", 42.0, NULL);
+      for (j = 0; j < G_N_ELEMENTS (targets); ++j)
+        g_assert_cmpfloat (source->value, ==, targets[j]->value);
+
+      g_object_set (targets[0], "value", 47.0, NULL);
+      g_assert_cmpfloat (source->value, ==, targets[0]->value);
+
+      /* Check that we transition the source correctly */
+      g_binding_group_set_source (group, NULL);
+      g_assert_null (g_binding_group_dup_source (group));
+      g_binding_group_set_source (group, source);
+      readback = g_binding_group_dup_source (group);
+      g_assert_true (readback == source);
+      g_object_unref (readback);
+    }
+
+  g_object_unref (group);
+
+  g_object_set (targets[0], "value", 0.0, NULL);
+  g_assert_cmpfloat (source->value, !=, targets[0]->value);
+
+  g_object_unref (source);
+  for (i = 0; i < G_N_ELEMENTS (targets); ++i)
+    g_object_unref (targets[i]);
+}
+
+static void
+transform_destroy_notify (gpointer data)
+{
+  gboolean *transform_destroy_called = data;
+
+  *transform_destroy_called = TRUE;
+}
+
+static void
+test_binding_group_transform (void)
+{
+  gboolean transform_destroy_called = FALSE;
+  GBindingGroup *group = g_binding_group_new ();
+  BindingSource *source = g_object_new (binding_source_get_type (), NULL);
+  BindingTarget *target = g_object_new (binding_target_get_type (), NULL);
+
+  g_binding_group_set_source (group, source);
+  g_binding_group_bind_full (group, "value",
+                             target, "value",
+                             G_BINDING_BIDIRECTIONAL,
+                             celsius_to_fahrenheit,
+                             fahrenheit_to_celsius,
+                             &transform_destroy_called,
+                             transform_destroy_notify);
+
+  g_object_set (source, "value", 24.0, NULL);
+  g_assert_cmpfloat (target->value, ==, ((9 * 24.0 / 5) + 32.0));
+
+  g_object_set (target, "value", 69.0, NULL);
+  g_assert_cmpfloat (source->value, ==, (5 * (69.0 - 32.0) / 9));
+
+  /* The GDestroyNotify should only be called when the
+   * set is freed, not when the various GBindings are freed
+   */
+  g_binding_group_set_source (group, NULL);
+  g_assert_false (transform_destroy_called);
+
+  g_object_unref (group);
+  g_assert_true (transform_destroy_called);
+
+  g_object_unref (source);
+  g_object_unref (target);
+}
+
+static void
+test_binding_group_transform_closures (void)
+{
+  gboolean transform_destroy_called_1 = FALSE;
+  gboolean transform_destroy_called_2 = FALSE;
+  GBindingGroup *group = g_binding_group_new ();
+  BindingSource *source = g_object_new (binding_source_get_type (), NULL);
+  BindingTarget *target = g_object_new (binding_target_get_type (), NULL);
+  GClosure *c2f_closure, *f2c_closure;
+
+  c2f_closure = g_cclosure_new (G_CALLBACK (celsius_to_fahrenheit),
+                                &transform_destroy_called_1,
+                                (GClosureNotify) transform_destroy_notify);
+  f2c_closure = g_cclosure_new (G_CALLBACK (fahrenheit_to_celsius),
+                                &transform_destroy_called_2,
+                                (GClosureNotify) transform_destroy_notify);
+
+  g_binding_group_set_source (group, source);
+  g_binding_group_bind_with_closures (group, "value",
+                                      target, "value",
+                                      G_BINDING_BIDIRECTIONAL,
+                                      c2f_closure,
+                                      f2c_closure);
+
+  g_object_set (source, "value", 24.0, NULL);
+  g_assert_cmpfloat (target->value, ==, ((9 * 24.0 / 5) + 32.0));
+
+  g_object_set (target, "value", 69.0, NULL);
+  g_assert_cmpfloat (source->value, ==, (5 * (69.0 - 32.0) / 9));
+
+  /* The GClsoureNotify should only be called when the
+   * set is freed, not when the various GBindings are freed
+   */
+  g_binding_group_set_source (group, NULL);
+  g_assert_false (transform_destroy_called_1);
+  g_assert_false (transform_destroy_called_2);
+
+  g_object_unref (group);
+  g_assert_true (transform_destroy_called_1);
+  g_assert_true (transform_destroy_called_2);
+
+  g_object_unref (source);
+  g_object_unref (target);
+}
+
+static void
+test_binding_group_same_object (void)
+{
+  gsize i;
+  GBindingGroup *group = g_binding_group_new ();
+  BindingSource *source = g_object_new (binding_source_get_type (),
+                                        "foo", 100,
+                                        "bar", 50,
+                                        NULL);
+
+  g_binding_group_set_source (group, source);
+  g_binding_group_bind (group, "foo",
+                        source, "bar",
+                        G_BINDING_BIDIRECTIONAL);
+
+  for (i = 0; i < 2; ++i)
+    {
+      g_object_set (source, "foo", 10, NULL);
+      g_assert_cmpint (source->foo, ==, 10);
+      g_assert_cmpint (source->bar, ==, 10);
+
+      g_object_set (source, "bar", 30, NULL);
+      g_assert_cmpint (source->foo, ==, 30);
+      g_assert_cmpint (source->bar, ==, 30);
+
+      /* Check that it is possible both when initially
+       * adding the binding and when changing the source
+       */
+      g_binding_group_set_source (group, NULL);
+      g_binding_group_set_source (group, source);
+    }
+
+  g_object_unref (source);
+  g_object_unref (group);
+}
+
+static void
+test_binding_group_weak_ref_source (void)
+{
+  GBindingGroup *group = g_binding_group_new ();
+  BindingSource *source = g_object_new (binding_source_get_type (), NULL);
+  BindingTarget *target = g_object_new (binding_target_get_type (), NULL);
+  BindingSource *readback;
+
+  g_binding_group_set_source (group, source);
+  g_binding_group_bind (group, "value",
+                        target, "value",
+                        G_BINDING_BIDIRECTIONAL);
+
+  g_object_add_weak_pointer (G_OBJECT (source), (gpointer)&source);
+  readback = g_binding_group_dup_source (group);
+  g_assert_true (readback == source);
+  g_object_unref (readback);
+  g_object_unref (source);
+  g_assert_null (source);
+  g_assert_null (g_binding_group_dup_source (group));
+
+  /* Hopefully this would explode if the binding was still alive */
+  g_object_set (target, "value", 0.0, NULL);
+
+  g_object_unref (target);
+  g_object_unref (group);
+}
+
+static void
+test_binding_group_weak_ref_target (void)
+{
+  GBindingGroup *group = g_binding_group_new ();
+  BindingSource *source = g_object_new (binding_source_get_type (), NULL);
+  BindingTarget *target = g_object_new (binding_target_get_type (), NULL);
+
+  g_binding_group_set_source (group, source);
+  g_binding_group_bind (group, "value",
+                        target, "value",
+                        G_BINDING_BIDIRECTIONAL);
+
+  g_object_set (source, "value", 47.0, NULL);
+  g_assert_cmpfloat (target->value, ==, 47.0);
+
+  g_object_add_weak_pointer (G_OBJECT (target), (gpointer)&target);
+  g_object_unref (target);
+  g_assert_null (target);
+
+  /* Hopefully this would explode if the binding was still alive */
+  g_object_set (source, "value", 0.0, NULL);
+
+  g_object_unref (source);
+  g_object_unref (group);
+}
+
+static void
+test_binding_group_properties (void)
+{
+  GBindingGroup *group = g_binding_group_new ();
+  BindingSource *source = g_object_new (binding_source_get_type (), NULL);
+  BindingTarget *target = g_object_new (binding_target_get_type (), NULL);
+  BindingSource *other;
+
+  g_binding_group_set_source (group, source);
+  g_binding_group_bind (group, "value",
+                        target, "value",
+                        G_BINDING_BIDIRECTIONAL);
+
+  g_object_get (group, "source", &other, NULL);
+  g_assert_true (other == source);
+  g_object_unref (other);
+
+  g_object_set (group, "source", NULL, NULL);
+  g_object_get (group, "source", &other, NULL);
+  g_assert_null (other);
+
+  g_object_add_weak_pointer (G_OBJECT (target), (gpointer)&target);
+  g_object_unref (target);
+  g_assert_null (target);
+
+  g_object_unref (source);
+  g_object_unref (group);
+}
+
+static void
+test_binding_group_weak_notify_no_bindings (void)
+{
+  GBindingGroup *group = g_binding_group_new ();
+  BindingSource *source = g_object_new (binding_source_get_type (), NULL);
+
+  g_binding_group_set_source (group, source);
+  g_assert_finalize_object (source);
+  g_assert_finalize_object (group);
+}
+
+static void
+test_binding_group_empty_closures (void)
+{
+  GBindingGroup *group = g_binding_group_new ();
+  BindingSource *source = g_object_new (binding_source_get_type (), NULL);
+  BindingTarget *target = g_object_new (binding_target_get_type (), NULL);
+
+  g_binding_group_bind_full (group, "value", target, "value", 0,
+                             NULL, NULL, NULL, NULL);
+
+  g_assert_finalize_object (group);
+  g_assert_finalize_object (target);
+  g_assert_finalize_object (source);
+}
+
+gint
+main (gint   argc,
+      gchar *argv[])
+{
+  g_test_init (&argc, &argv, NULL);
+  g_test_add_func ("/GObject/BindingGroup/invalid", test_binding_group_invalid);
+  g_test_add_func ("/GObject/BindingGroup/default", test_binding_group_default);
+  g_test_add_func ("/GObject/BindingGroup/bidirectional", test_binding_group_bidirectional);
+  g_test_add_func ("/GObject/BindingGroup/transform", test_binding_group_transform);
+  g_test_add_func ("/GObject/BindingGroup/transform-closures", test_binding_group_transform_closures);
+  g_test_add_func ("/GObject/BindingGroup/same-object", test_binding_group_same_object);
+  g_test_add_func ("/GObject/BindingGroup/weak-ref-source", test_binding_group_weak_ref_source);
+  g_test_add_func ("/GObject/BindingGroup/weak-ref-target", test_binding_group_weak_ref_target);
+  g_test_add_func ("/GObject/BindingGroup/properties", test_binding_group_properties);
+  g_test_add_func ("/GObject/BindingGroup/weak-notify-no-bindings", test_binding_group_weak_notify_no_bindings);
+  g_test_add_func ("/GObject/BindingGroup/empty-closures", test_binding_group_empty_closures);
+  return g_test_run ();
+}
diff --git a/gobject/tests/cxx.cpp b/gobject/tests/cxx.cpp
new file mode 100644 (file)
index 0000000..210c897
--- /dev/null
@@ -0,0 +1,26 @@
+/* Copyright (C) 2001 Sebastian Wilhelmi <wilhelmi@google.com>
+ *
+ * This library 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 library 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/>.
+ */
+
+/* A trivial C++ program to be compiled in C++ mode, which
+ * smoketests that the GObject headers are valid C++ headers. */
+
+#include <glib-object.h>
+
+int
+main ()
+{
+  return 0;
+}
index e97e1bc..8d568f0 100644 (file)
@@ -29,11 +29,15 @@ marshalers_c = custom_target('marshalers_c',
 gobject_tests = {
   'qdata' : {},
   'boxed' : {},
+  'cxx' : {
+    'source' : ['cxx.cpp'],
+  },
   'enums' : {},
   'param' : {},
   'threadtests' : {},
   'dynamictests' : {},
   'binding' : {},
+  'bindinggroup' : {},
   'properties' : {},
   'reference' : {},
   'flags' : {},
@@ -50,6 +54,7 @@ gobject_tests = {
   'signals' : {
     'source' : ['signals.c', marshalers_h, marshalers_c],
   },
+  'signalgroup' : {},
   'testing' : {},
   'type-flags' : {},
 }
index a3273c5..0d0c0d0 100644 (file)
@@ -247,7 +247,7 @@ file-tail
         value_num,
     ):
         """Assert that out (from runMkenumsWithHeader()) contains a single
-           enum and value matching the given arguments."""
+        enum and value matching the given arguments."""
         subs = dict(
             {
                 "enum_name_camel": enum_name_camel,
index e1f3cde..692f07d 100644 (file)
@@ -1,3 +1,27 @@
+/* GLIB - Library of useful routines for C programming
+ * Copyright (C) 1995-1997  Peter Mattis, Spencer Kimball and Josh MacDonald
+ *
+ * This library 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 library 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/>.
+ */
+
+/*
+ * Modified by the GLib Team and others 1997-2000.  See the AUTHORS
+ * file for a list of people on the GLib Team.  See the ChangeLog
+ * files for a list of changes.  These files are distributed with
+ * GLib at ftp://ftp.gtk.org/pub/gtk/.
+ */
+
 #ifndef GLIB_DISABLE_DEPRECATION_WARNINGS
 #define GLIB_DISABLE_DEPRECATION_WARNINGS
 #endif
 #include <stdlib.h>
 
 static void
+test_param_spec_char (void)
+{
+  GParamSpec *pspec;
+  GValue value = G_VALUE_INIT;
+
+  pspec = g_param_spec_char ("char", "nick", "blurb",
+                             20, 40, 30, G_PARAM_READWRITE);
+
+  g_assert_cmpstr (g_param_spec_get_name (pspec), ==, "char");
+  g_assert_cmpstr (g_param_spec_get_nick (pspec), ==, "nick");
+  g_assert_cmpstr (g_param_spec_get_blurb (pspec), ==, "blurb");
+
+  g_value_init (&value, G_TYPE_CHAR);
+  g_value_set_char (&value, 30);
+
+  g_assert_true (g_param_value_defaults (pspec, &value));
+
+  g_value_set_char (&value, 0);
+  g_assert_true (g_param_value_validate (pspec, &value));
+  g_assert_cmpint (g_value_get_char (&value), ==, 20);
+
+  g_value_set_char (&value, 20);
+  g_assert_false (g_param_value_validate (pspec, &value));
+  g_assert_cmpint (g_value_get_char (&value), ==, 20);
+
+  g_value_set_char (&value, 40);
+  g_assert_false (g_param_value_validate (pspec, &value));
+  g_assert_cmpint (g_value_get_char (&value), ==, 40);
+
+  g_value_set_char (&value, 60);
+  g_assert_true (g_param_value_validate (pspec, &value));
+  g_assert_cmpint (g_value_get_char (&value), ==, 40);
+
+  g_value_set_schar (&value, 0);
+  g_assert_true (g_param_value_validate (pspec, &value));
+  g_assert_cmpint (g_value_get_schar (&value), ==, 20);
+
+  g_value_set_schar (&value, 20);
+  g_assert_false (g_param_value_validate (pspec, &value));
+  g_assert_cmpint (g_value_get_schar (&value), ==, 20);
+
+  g_value_set_schar (&value, 40);
+  g_assert_false (g_param_value_validate (pspec, &value));
+  g_assert_cmpint (g_value_get_schar (&value), ==, 40);
+
+  g_value_set_schar (&value, 60);
+  g_assert_true (g_param_value_validate (pspec, &value));
+  g_assert_cmpint (g_value_get_schar (&value), ==, 40);
+
+  g_param_spec_unref (pspec);
+}
+
+static void
+test_param_spec_string (void)
+{
+  GParamSpec *pspec;
+  GValue value = G_VALUE_INIT;
+
+  pspec = g_param_spec_string ("string", "nick", "blurb",
+                               NULL, G_PARAM_READWRITE);
+  g_value_init (&value, G_TYPE_STRING);
+
+  g_value_set_string (&value, "foobar");
+  g_assert_false (g_param_value_validate (pspec, &value));
+
+  g_value_set_string (&value, "");
+  g_assert_false (g_param_value_validate (pspec, &value));
+  g_assert_nonnull (g_value_get_string (&value));
+
+  /* test ensure_non_null */
+
+  G_PARAM_SPEC_STRING (pspec)->ensure_non_null = TRUE;
+
+  g_value_set_string (&value, NULL);
+  g_assert_true (g_param_value_validate (pspec, &value));
+  g_assert_nonnull (g_value_get_string (&value));
+
+  G_PARAM_SPEC_STRING (pspec)->ensure_non_null = FALSE;
+
+  /* test null_fold_if_empty */
+
+  G_PARAM_SPEC_STRING (pspec)->null_fold_if_empty = TRUE;
+
+  g_value_set_string (&value, "");
+  g_assert_true (g_param_value_validate (pspec, &value));
+  g_assert_null (g_value_get_string (&value));
+
+  g_value_set_static_string (&value, "");
+  g_assert_true (g_param_value_validate (pspec, &value));
+  g_assert_null (g_value_get_string (&value));
+
+  G_PARAM_SPEC_STRING (pspec)->null_fold_if_empty = FALSE;
+
+  /* test cset_first */
+
+  G_PARAM_SPEC_STRING (pspec)->cset_first = g_strdup ("abc");
+  G_PARAM_SPEC_STRING (pspec)->substitutor = '-';
+
+  g_value_set_string (&value, "ABC");
+  g_assert_true (g_param_value_validate (pspec, &value));
+  g_assert_cmpint (g_value_get_string (&value)[0], ==, '-');
+
+  g_value_set_static_string (&value, "ABC");
+  g_assert_true (g_param_value_validate (pspec, &value));
+  g_assert_cmpint (g_value_get_string (&value)[0], ==, '-');
+
+  /* test cset_nth */
+
+  G_PARAM_SPEC_STRING (pspec)->cset_nth = g_strdup ("abc");
+
+  g_value_set_string (&value, "aBC");
+  g_assert_true (g_param_value_validate (pspec, &value));
+  g_assert_cmpint (g_value_get_string (&value)[1], ==, '-');
+
+  g_value_set_static_string (&value, "aBC");
+  g_assert_true (g_param_value_validate (pspec, &value));
+  g_assert_cmpint (g_value_get_string (&value)[1], ==, '-');
+
+  g_value_unset (&value);
+  g_param_spec_unref (pspec);
+}
+
+static void
+test_param_spec_override (void)
+{
+  GParamSpec *ospec, *pspec;
+  GValue value = G_VALUE_INIT;
+
+  ospec = g_param_spec_char ("char", "nick", "blurb",
+                             20, 40, 30, G_PARAM_READWRITE);
+
+  pspec = g_param_spec_override ("override", ospec);
+
+  g_assert_cmpstr (g_param_spec_get_name (pspec), ==, "override");
+  g_assert_cmpstr (g_param_spec_get_nick (pspec), ==, "nick");
+  g_assert_cmpstr (g_param_spec_get_blurb (pspec), ==, "blurb");
+
+  g_value_init (&value, G_TYPE_CHAR);
+  g_value_set_char (&value, 30);
+
+  g_assert_true (g_param_value_defaults (pspec, &value));
+
+  g_value_set_char (&value, 0);
+  g_assert_true (g_param_value_validate (pspec, &value));
+  g_assert_cmpint (g_value_get_char (&value), ==, 20);
+
+  g_value_set_char (&value, 20);
+  g_assert_false (g_param_value_validate (pspec, &value));
+  g_assert_cmpint (g_value_get_char (&value), ==, 20);
+
+  g_value_set_char (&value, 40);
+  g_assert_false (g_param_value_validate (pspec, &value));
+  g_assert_cmpint (g_value_get_char (&value), ==, 40);
+
+  g_value_set_char (&value, 60);
+  g_assert_true (g_param_value_validate (pspec, &value));
+  g_assert_cmpint (g_value_get_char (&value), ==, 40);
+
+  g_param_spec_unref (pspec);
+  g_param_spec_unref (ospec);
+}
+
+static void
+test_param_spec_gtype (void)
+{
+  GParamSpec *pspec;
+  GValue value = G_VALUE_INIT;
+
+  pspec = g_param_spec_gtype ("gtype", "nick", "blurb",
+                              G_TYPE_PARAM, G_PARAM_READWRITE);
+
+  g_value_init (&value, G_TYPE_GTYPE);
+  g_value_set_gtype (&value, G_TYPE_PARAM);
+
+  g_assert_true (g_param_value_defaults (pspec, &value));
+
+  g_value_set_gtype (&value, G_TYPE_INT);
+  g_assert_true (g_param_value_validate (pspec, &value));
+  g_assert_cmpint (g_value_get_gtype (&value), ==, G_TYPE_PARAM);
+
+  g_value_set_gtype (&value, G_TYPE_PARAM_INT);
+  g_assert_false (g_param_value_validate (pspec, &value));
+  g_assert_cmpint (g_value_get_gtype (&value), ==, G_TYPE_PARAM_INT);
+
+  g_param_spec_unref (pspec);
+}
+
+static void
+test_param_spec_variant (void)
+{
+  GParamSpec *pspec;
+  GValue value = G_VALUE_INIT;
+  GValue value2 = G_VALUE_INIT;
+  GValue value3 = G_VALUE_INIT;
+  GValue value4 = G_VALUE_INIT;
+  GValue value5 = G_VALUE_INIT;
+  gboolean modified;
+
+  pspec = g_param_spec_variant ("variant", "nick", "blurb",
+                                G_VARIANT_TYPE ("i"),
+                                g_variant_new_int32 (42),
+                                G_PARAM_READWRITE);
+
+  g_value_init (&value, G_TYPE_VARIANT);
+  g_value_set_variant (&value, g_variant_new_int32 (42));
+
+  g_value_init (&value2, G_TYPE_VARIANT);
+  g_value_set_variant (&value2, g_variant_new_int32 (43));
+
+  g_value_init (&value3, G_TYPE_VARIANT);
+  g_value_set_variant (&value3, g_variant_new_int16 (42));
+
+  g_value_init (&value4, G_TYPE_VARIANT);
+  g_value_set_variant (&value4, g_variant_new_parsed ("[@u 15, @u 10]"));
+
+  g_value_init (&value5, G_TYPE_VARIANT);
+  g_value_set_variant (&value5, NULL);
+
+  g_assert_true (g_param_value_defaults (pspec, &value));
+  g_assert_false (g_param_value_defaults (pspec, &value2));
+  g_assert_false (g_param_value_defaults (pspec, &value3));
+  g_assert_false (g_param_value_defaults (pspec, &value4));
+  g_assert_false (g_param_value_defaults (pspec, &value5));
+
+  modified = g_param_value_validate (pspec, &value);
+  g_assert_false (modified);
+
+  g_value_reset (&value);
+  g_value_set_variant (&value, g_variant_new_uint32 (41));
+  modified = g_param_value_validate (pspec, &value);
+  g_assert_true (modified);
+  g_assert_cmpint (g_variant_get_int32 (g_value_get_variant (&value)), ==, 42);
+  g_value_unset (&value);
+
+  g_value_unset (&value5);
+  g_value_unset (&value4);
+  g_value_unset (&value3);
+  g_value_unset (&value2);
+
+  g_param_spec_unref (pspec);
+}
+
+/* Test g_param_values_cmp() for #GParamSpecVariant. */
+static void
+test_param_spec_variant_cmp (void)
+{
+  const struct
+    {
+      const GVariantType *pspec_type;
+      const gchar *v1;
+      enum
+        {
+          LESS_THAN = -1,
+          EQUAL = 0,
+          GREATER_THAN = 1,
+          NOT_EQUAL,
+        } expected_result;
+      const gchar *v2;
+    }
+  vectors[] =
+    {
+      { G_VARIANT_TYPE ("i"), "@i 1", LESS_THAN, "@i 2" },
+      { G_VARIANT_TYPE ("i"), "@i 2", EQUAL, "@i 2" },
+      { G_VARIANT_TYPE ("i"), "@i 3", GREATER_THAN, "@i 2" },
+      { G_VARIANT_TYPE ("i"), NULL, LESS_THAN, "@i 2" },
+      { G_VARIANT_TYPE ("i"), NULL, EQUAL, NULL },
+      { G_VARIANT_TYPE ("i"), "@i 1", GREATER_THAN, NULL },
+      { G_VARIANT_TYPE ("i"), "@u 1", LESS_THAN, "@u 2" },
+      { G_VARIANT_TYPE ("i"), "@as ['hi']", NOT_EQUAL, "@u 2" },
+      { G_VARIANT_TYPE ("i"), "@as ['hi']", NOT_EQUAL, "@as ['there']" },
+      { G_VARIANT_TYPE ("i"), "@as ['hi']", EQUAL, "@as ['hi']" },
+    };
+  gsize i;
+
+  for (i = 0; i < G_N_ELEMENTS (vectors); i++)
+    {
+      GParamSpec *pspec;
+      GValue v1 = G_VALUE_INIT;
+      GValue v2 = G_VALUE_INIT;
+      gint cmp;
+
+      pspec = g_param_spec_variant ("variant", "nick", "blurb",
+                                    vectors[i].pspec_type,
+                                    NULL,
+                                    G_PARAM_READWRITE);
+
+      g_value_init (&v1, G_TYPE_VARIANT);
+      g_value_set_variant (&v1,
+                           (vectors[i].v1 != NULL) ?
+                           g_variant_new_parsed (vectors[i].v1) : NULL);
+
+      g_value_init (&v2, G_TYPE_VARIANT);
+      g_value_set_variant (&v2,
+                           (vectors[i].v2 != NULL) ?
+                           g_variant_new_parsed (vectors[i].v2) : NULL);
+
+      cmp = g_param_values_cmp (pspec, &v1, &v2);
+
+      switch (vectors[i].expected_result)
+        {
+        case LESS_THAN:
+        case EQUAL:
+        case GREATER_THAN:
+          g_assert_cmpint (cmp, ==, vectors[i].expected_result);
+          break;
+        case NOT_EQUAL:
+          g_assert_cmpint (cmp, !=, 0);
+          break;
+        default:
+          g_assert_not_reached ();
+        }
+
+      g_value_unset (&v2);
+      g_value_unset (&v1);
+      g_param_spec_unref (pspec);
+    }
+}
+
+static void
 test_param_value (void)
 {
   GParamSpec *p, *p2;
@@ -912,6 +1255,12 @@ main (int argc, char *argv[])
   g_test_add_func ("/value/transform", test_value_transform);
   g_test_add_func ("/param/default", test_param_default);
   g_test_add_func ("/param/is-valid-name", test_param_is_valid_name);
+  g_test_add_func ("/paramspec/char", test_param_spec_char);
+  g_test_add_func ("/paramspec/string", test_param_spec_string);
+  g_test_add_func ("/paramspec/override", test_param_spec_override);
+  g_test_add_func ("/paramspec/gtype", test_param_spec_gtype);
+  g_test_add_func ("/paramspec/variant", test_param_spec_variant);
+  g_test_add_func ("/paramspec/variant/cmp", test_param_spec_variant_cmp);
 
   return g_test_run ();
 }
index 04645e1..c7afc8a 100644 (file)
@@ -558,6 +558,18 @@ test_weak_ref (void)
 
   g_weak_ref_clear (&weak3);
 
+  /* unset dynamic_weak... */
+  g_weak_ref_set (dynamic_weak, NULL);
+  g_assert_null (g_weak_ref_get (dynamic_weak));
+
+  /* initializing a weak reference to an object that had before works */
+  g_weak_ref_set (dynamic_weak, obj2);
+  tmp = g_weak_ref_get (dynamic_weak);
+  g_assert_true (tmp == obj2);
+  g_assert_cmpint (obj2->ref_count, ==, 2);
+  g_object_unref (tmp);
+  g_assert_cmpint (obj2->ref_count, ==, 1);
+
   /* clear and free dynamic_weak... */
   g_weak_ref_clear (dynamic_weak);
 
@@ -566,6 +578,130 @@ test_weak_ref (void)
   g_free (dynamic_weak);
 }
 
+G_DECLARE_FINAL_TYPE (WeakReffedObject, weak_reffed_object,
+                      WEAK, REFFED_OBJECT, GObject)
+
+struct _WeakReffedObject
+{
+  GObject parent;
+
+  GWeakRef *weak_ref;
+};
+
+G_DEFINE_TYPE (WeakReffedObject, weak_reffed_object, G_TYPE_OBJECT)
+
+static void
+weak_reffed_object_dispose (GObject *object)
+{
+  WeakReffedObject *weak_reffed = WEAK_REFFED_OBJECT (object);
+
+  g_assert_cmpint (object->ref_count, ==, 1);
+
+  g_weak_ref_set (weak_reffed->weak_ref, object);
+
+  G_OBJECT_CLASS (weak_reffed_object_parent_class)->dispose (object);
+
+  g_assert_null (g_weak_ref_get (weak_reffed->weak_ref));
+}
+
+static void
+weak_reffed_object_init (WeakReffedObject *connector)
+{
+}
+
+static void
+weak_reffed_object_class_init (WeakReffedObjectClass *klass)
+{
+  GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+  object_class->dispose = weak_reffed_object_dispose;
+}
+
+static void
+test_weak_ref_on_dispose (void)
+{
+  WeakReffedObject *obj;
+  GWeakRef weak = { { GUINT_TO_POINTER (0xDEADBEEFU) } };
+
+  g_test_bug ("https://gitlab.gnome.org/GNOME/glib/-/issues/2390");
+  g_test_summary ("Test that a weak ref set during dispose vfunc is cleared");
+
+  g_weak_ref_init (&weak, NULL);
+
+  obj = g_object_new (weak_reffed_object_get_type (), NULL);
+  obj->weak_ref = &weak;
+
+  g_assert_cmpint (G_OBJECT (obj)->ref_count, ==, 1);
+  g_clear_object (&obj);
+
+  g_assert_null (g_weak_ref_get (&weak));
+}
+
+static void
+test_weak_ref_on_run_dispose (void)
+{
+  GObject *obj;
+  GWeakRef weak = { { GUINT_TO_POINTER (0xDEADBEEFU) } };
+
+  g_test_bug ("https://gitlab.gnome.org/GNOME/glib/-/issues/865");
+  g_test_summary ("Test that a weak ref is cleared on g_object_run_dispose()");
+
+  obj = g_object_new (G_TYPE_OBJECT, NULL);
+  g_weak_ref_init (&weak, obj);
+
+  g_assert_true (obj == g_weak_ref_get (&weak));
+  g_object_unref (obj);
+
+  g_object_run_dispose (obj);
+  g_assert_null (g_weak_ref_get (&weak));
+
+  g_clear_object (&obj);
+  g_assert_null (g_weak_ref_get (&weak));
+}
+
+static void
+on_weak_ref_toggle_notify (gpointer data,
+                           GObject *object,
+                           gboolean is_last_ref)
+{
+  GWeakRef *weak = data;
+
+  if (is_last_ref)
+    g_weak_ref_set (weak, object);
+}
+
+static void
+on_weak_ref_toggle_notify_disposed (gpointer data,
+                                    GObject *object)
+{
+  g_assert_cmpint (object->ref_count, ==, 1);
+
+  g_object_ref (object);
+  g_object_unref (object);
+}
+
+static void
+test_weak_ref_on_toggle_notify (void)
+{
+  GObject *obj;
+  GWeakRef weak = { { GUINT_TO_POINTER (0xDEADBEEFU) } };
+
+  g_test_bug ("https://gitlab.gnome.org/GNOME/glib/-/issues/2390");
+  g_test_summary ("Test that a weak ref set on toggle notify is cleared");
+
+  g_weak_ref_init (&weak, NULL);
+
+  obj = g_object_new (G_TYPE_OBJECT, NULL);
+  g_object_add_toggle_ref (obj, on_weak_ref_toggle_notify, &weak);
+  g_object_weak_ref (obj, on_weak_ref_toggle_notify_disposed, NULL);
+  g_object_unref (obj);
+
+  g_assert_cmpint (obj->ref_count, ==, 1);
+  g_clear_object (&obj);
+
+  g_assert_null (g_weak_ref_get (&weak));
+}
+
 typedef struct
 {
   gboolean should_be_last;
@@ -629,15 +765,15 @@ test_toggle_ref (void)
   g_object_remove_toggle_ref (obj, toggle_notify, &c);
 }
 
-static gboolean destroyed;
-static gint value;
+static gboolean global_destroyed;
+static gint global_value;
 
 static void
 data_destroy (gpointer data)
 {
-  g_assert_cmpint (GPOINTER_TO_INT (data), ==, value);
+  g_assert_cmpint (GPOINTER_TO_INT (data), ==, global_value);
 
-  destroyed = TRUE;
+  global_destroyed = TRUE;
 }
 
 static void
@@ -649,39 +785,39 @@ test_object_qdata (void)
 
   obj = g_object_new (G_TYPE_OBJECT, NULL);
 
-  value = 1;
-  destroyed = FALSE;
+  global_value = 1;
+  global_destroyed = FALSE;
   g_object_set_data_full (obj, "test", GINT_TO_POINTER (1), data_destroy);
   v = g_object_get_data (obj, "test");
   g_assert_cmpint (GPOINTER_TO_INT (v), ==, 1);
   g_object_set_data_full (obj, "test", GINT_TO_POINTER (2), data_destroy);
-  g_assert (destroyed);
-  value = 2;
-  destroyed = FALSE;
+  g_assert (global_destroyed);
+  global_value = 2;
+  global_destroyed = FALSE;
   v = g_object_steal_data (obj, "test");
   g_assert_cmpint (GPOINTER_TO_INT (v), ==, 2);
-  g_assert (!destroyed);
+  g_assert (!global_destroyed);
 
-  value = 1;
-  destroyed = FALSE;
+  global_value = 1;
+  global_destroyed = FALSE;
   quark = g_quark_from_string ("test");
   g_object_set_qdata_full (obj, quark, GINT_TO_POINTER (1), data_destroy);
   v = g_object_get_qdata (obj, quark);
   g_assert_cmpint (GPOINTER_TO_INT (v), ==, 1);
   g_object_set_qdata_full (obj, quark, GINT_TO_POINTER (2), data_destroy);
-  g_assert (destroyed);
-  value = 2;
-  destroyed = FALSE;
+  g_assert (global_destroyed);
+  global_value = 2;
+  global_destroyed = FALSE;
   v = g_object_steal_qdata (obj, quark);
   g_assert_cmpint (GPOINTER_TO_INT (v), ==, 2);
-  g_assert (!destroyed);
+  g_assert (!global_destroyed);
 
   g_object_set_qdata_full (obj, quark, GINT_TO_POINTER (3), data_destroy);
-  value = 3;
-  destroyed = FALSE;
+  global_value = 3;
+  global_destroyed = FALSE;
   g_object_unref (obj);
 
-  g_assert (destroyed);
+  g_assert (global_destroyed);
 }
 
 typedef struct {
@@ -826,6 +962,9 @@ main (int argc, char **argv)
   g_test_add_func ("/object/weak-pointer/set", test_weak_pointer_set);
   g_test_add_func ("/object/weak-pointer/set-function", test_weak_pointer_set_function);
   g_test_add_func ("/object/weak-ref", test_weak_ref);
+  g_test_add_func ("/object/weak-ref/on-dispose", test_weak_ref_on_dispose);
+  g_test_add_func ("/object/weak-ref/on-run-dispose", test_weak_ref_on_run_dispose);
+  g_test_add_func ("/object/weak-ref/on-toggle-notify", test_weak_ref_on_toggle_notify);
   g_test_add_func ("/object/toggle-ref", test_toggle_ref);
   g_test_add_func ("/object/qdata", test_object_qdata);
   g_test_add_func ("/object/qdata2", test_object_qdata2);
diff --git a/gobject/tests/signalgroup.c b/gobject/tests/signalgroup.c
new file mode 100644 (file)
index 0000000..5d1f17a
--- /dev/null
@@ -0,0 +1,650 @@
+/* GObject - GLib Type, Object, Parameter and Signal Library
+ *
+ * Copyright (C) 2015-2022 Christian Hergert <christian@hergert.me>
+ * Copyright (C) 2015 Garrett Regier <garrettregier@gmail.com>
+ *
+ * This library 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 library 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/>.
+ *
+ * SPDX-License-Identifier: LGPL-2.1-or-later
+ */
+
+#include <glib-object.h>
+
+G_DECLARE_FINAL_TYPE (SignalTarget, signal_target, TEST, SIGNAL_TARGET, GObject)
+
+struct _SignalTarget
+{
+  GObject parent_instance;
+};
+
+G_DEFINE_TYPE (SignalTarget, signal_target, G_TYPE_OBJECT)
+
+static G_DEFINE_QUARK (detail, signal_detail);
+
+enum {
+  THE_SIGNAL,
+  NEVER_EMITTED,
+  LAST_SIGNAL
+};
+
+static guint signals[LAST_SIGNAL];
+
+static void
+signal_target_class_init (SignalTargetClass *klass)
+{
+  signals[THE_SIGNAL] =
+      g_signal_new ("the-signal",
+                    G_TYPE_FROM_CLASS (klass),
+                    G_SIGNAL_RUN_LAST | G_SIGNAL_DETAILED,
+                    0,
+                    NULL, NULL, NULL,
+                    G_TYPE_NONE,
+                    1,
+                    G_TYPE_OBJECT);
+
+  signals[NEVER_EMITTED] =
+      g_signal_new ("never-emitted",
+                    G_TYPE_FROM_CLASS (klass),
+                    G_SIGNAL_RUN_LAST,
+                    0,
+                    NULL, NULL, NULL,
+                    G_TYPE_NONE,
+                    1,
+                    G_TYPE_OBJECT);
+}
+
+static void
+signal_target_init (SignalTarget *self)
+{
+}
+
+static gint global_signal_calls;
+static gint global_weak_notify_called;
+
+static void
+connect_before_cb (SignalTarget *target,
+                   GSignalGroup *group,
+                   gint         *signal_calls)
+{
+  SignalTarget *readback;
+
+  g_assert_true (TEST_IS_SIGNAL_TARGET (target));
+  g_assert_true (G_IS_SIGNAL_GROUP (group));
+  g_assert_nonnull (signal_calls);
+  g_assert_true (signal_calls == &global_signal_calls);
+
+  readback = g_signal_group_dup_target (group);
+  g_assert_true (readback == target);
+  g_object_unref (readback);
+
+  *signal_calls += 1;
+}
+
+static void
+connect_after_cb (SignalTarget *target,
+                  GSignalGroup *group,
+                  gint         *signal_calls)
+{
+  SignalTarget *readback;
+
+  g_assert_true (TEST_IS_SIGNAL_TARGET (target));
+  g_assert_true (G_IS_SIGNAL_GROUP (group));
+  g_assert_nonnull (signal_calls);
+  g_assert_true (signal_calls == &global_signal_calls);
+
+  readback = g_signal_group_dup_target (group);
+  g_assert_true (readback == target);
+  g_object_unref (readback);
+
+  g_assert_cmpint (*signal_calls, ==, 4);
+  *signal_calls += 1;
+}
+
+static void
+connect_swapped_cb (gint         *signal_calls,
+                    GSignalGroup *group,
+                    SignalTarget *target)
+{
+  SignalTarget *readback;
+
+  g_assert_true (signal_calls != NULL);
+  g_assert_true (signal_calls == &global_signal_calls);
+  g_assert_true (G_IS_SIGNAL_GROUP (group));
+  g_assert_true (TEST_IS_SIGNAL_TARGET (target));
+
+  readback = g_signal_group_dup_target (group);
+  g_assert_true (readback == target);
+  g_object_unref (readback);
+
+  *signal_calls += 1;
+}
+
+static void
+connect_object_cb (SignalTarget *target,
+                   GSignalGroup *group,
+                   GObject      *object)
+{
+  SignalTarget *readback;
+  gint *signal_calls;
+
+  g_assert_true (TEST_IS_SIGNAL_TARGET (target));
+  g_assert_true (G_IS_SIGNAL_GROUP (group));
+  g_assert_true (G_IS_OBJECT (object));
+
+  readback = g_signal_group_dup_target (group);
+  g_assert_true (readback == target);
+  g_object_unref (readback);
+
+  signal_calls = g_object_get_data (object, "signal-calls");
+  g_assert_nonnull (signal_calls);
+  g_assert_true (signal_calls == &global_signal_calls);
+
+  *signal_calls += 1;
+}
+
+static void
+connect_bad_detail_cb (SignalTarget *target,
+                       GSignalGroup *group,
+                       GObject      *object)
+{
+  g_error ("This detailed signal is never emitted!");
+}
+
+static void
+connect_never_emitted_cb (SignalTarget *target,
+                          gboolean     *weak_notify_called)
+{
+  g_error ("This signal is never emitted!");
+}
+
+static void
+connect_data_notify_cb (gboolean *weak_notify_called,
+                        GClosure *closure)
+{
+  g_assert_nonnull (weak_notify_called);
+  g_assert_true (weak_notify_called == &global_weak_notify_called);
+  g_assert_nonnull (closure);
+
+  g_assert_false (*weak_notify_called);
+  *weak_notify_called = TRUE;
+}
+
+static void
+connect_data_weak_notify_cb (gboolean     *weak_notify_called,
+                             GSignalGroup *group)
+{
+  g_assert_nonnull (weak_notify_called);
+  g_assert_true (weak_notify_called == &global_weak_notify_called);
+  g_assert_true (G_IS_SIGNAL_GROUP (group));
+
+  g_assert_true (*weak_notify_called);
+}
+
+static void
+connect_all_signals (GSignalGroup *group)
+{
+  GObject *object;
+
+  /* Check that these are called in the right order */
+  g_signal_group_connect (group,
+                          "the-signal",
+                          G_CALLBACK (connect_before_cb),
+                          &global_signal_calls);
+  g_signal_group_connect_after (group,
+                                "the-signal",
+                                G_CALLBACK (connect_after_cb),
+                                &global_signal_calls);
+
+  /* Check that this is called with the arguments swapped */
+  g_signal_group_connect_swapped (group,
+                                  "the-signal",
+                                  G_CALLBACK (connect_swapped_cb),
+                                  &global_signal_calls);
+
+  /* Check that this is called with the arguments swapped */
+  object = g_object_new (G_TYPE_OBJECT, NULL);
+  g_object_set_data (object, "signal-calls", &global_signal_calls);
+  g_signal_group_connect_object (group,
+                                 "the-signal",
+                                 G_CALLBACK (connect_object_cb),
+                                 object,
+                                 0);
+  g_object_weak_ref (G_OBJECT (group),
+                     (GWeakNotify)g_object_unref,
+                     object);
+
+  /* Check that a detailed signal is handled correctly */
+  g_signal_group_connect (group,
+                          "the-signal::detail",
+                          G_CALLBACK (connect_before_cb),
+                          &global_signal_calls);
+  g_signal_group_connect (group,
+                          "the-signal::bad-detail",
+                          G_CALLBACK (connect_bad_detail_cb),
+                          NULL);
+
+  /* Check that the notify is called correctly */
+  global_weak_notify_called = FALSE;
+  g_signal_group_connect_data (group,
+                               "never-emitted",
+                               G_CALLBACK (connect_never_emitted_cb),
+                               &global_weak_notify_called,
+                               (GClosureNotify)connect_data_notify_cb,
+                               0);
+  g_object_weak_ref (G_OBJECT (group),
+                     (GWeakNotify)connect_data_weak_notify_cb,
+                     &global_weak_notify_called);
+}
+
+static void
+assert_signals (SignalTarget *target,
+                GSignalGroup *group,
+                gboolean      success)
+{
+  g_assert (TEST_IS_SIGNAL_TARGET (target));
+  g_assert (group == NULL || G_IS_SIGNAL_GROUP (group));
+
+  global_signal_calls = 0;
+  g_signal_emit (target, signals[THE_SIGNAL],
+                 signal_detail_quark (), group);
+  g_assert_cmpint (global_signal_calls, ==, success ? 5 : 0);
+}
+
+static void
+dummy_handler (void)
+{
+}
+
+static void
+test_signal_group_invalid (void)
+{
+  GObject *invalid_target = g_object_new (G_TYPE_OBJECT, NULL);
+  SignalTarget *target = g_object_new (signal_target_get_type (), NULL);
+  GSignalGroup *group = g_signal_group_new (signal_target_get_type ());
+
+  /* Invalid Target Type */
+  g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                         "*g_type_is_a*G_TYPE_OBJECT*");
+  g_signal_group_new (G_TYPE_DATE_TIME);
+  g_test_assert_expected_messages ();
+
+  /* Invalid Target */
+  g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                         "*Failed to set GSignalGroup of target type SignalTarget using target * of type GObject*");
+  g_signal_group_set_target (group, invalid_target);
+  g_assert_finalize_object (group);
+  g_test_assert_expected_messages ();
+
+  /* Invalid Signal Name */
+  g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                         "*g_signal_parse_name*");
+  group = g_signal_group_new (signal_target_get_type ());
+  g_signal_group_connect (group,
+                          "does-not-exist",
+                          G_CALLBACK (connect_before_cb),
+                          NULL);
+  g_test_assert_expected_messages ();
+  g_assert_finalize_object (group);
+
+  /* Invalid Callback */
+  g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                         "*c_handler != NULL*");
+  group = g_signal_group_new (signal_target_get_type ());
+  g_signal_group_connect (group,
+                          "the-signal",
+                          G_CALLBACK (NULL),
+                          NULL);
+  g_test_assert_expected_messages ();
+  g_assert_finalize_object (group);
+
+  /* Connecting after setting target */
+  g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
+                         "*Cannot add signals after setting target*");
+  group = g_signal_group_new (signal_target_get_type ());
+  g_signal_group_set_target (group, target);
+  g_signal_group_connect (group,
+                          "the-signal",
+                          G_CALLBACK (dummy_handler),
+                          NULL);
+  g_test_assert_expected_messages ();
+  g_assert_finalize_object (group);
+
+  g_assert_finalize_object (target);
+  g_assert_finalize_object (invalid_target);
+}
+
+static void
+test_signal_group_simple (void)
+{
+  SignalTarget *target;
+  GSignalGroup *group;
+  SignalTarget *readback;
+
+  /* Set the target before connecting the signals */
+  group = g_signal_group_new (signal_target_get_type ());
+  target = g_object_new (signal_target_get_type (), NULL);
+  g_assert_null (g_signal_group_dup_target (group));
+  g_signal_group_set_target (group, target);
+  readback = g_signal_group_dup_target (group);
+  g_assert_true (readback == target);
+  g_object_unref (readback);
+  g_assert_finalize_object (group);
+  assert_signals (target, NULL, FALSE);
+  g_assert_finalize_object (target);
+
+  group = g_signal_group_new (signal_target_get_type ());
+  target = g_object_new (signal_target_get_type (), NULL);
+  connect_all_signals (group);
+  g_signal_group_set_target (group, target);
+  assert_signals (target, group, TRUE);
+  g_assert_finalize_object (target);
+  g_assert_finalize_object (group);
+}
+
+static void
+test_signal_group_changing_target (void)
+{
+  SignalTarget *target1, *target2;
+  GSignalGroup *group = g_signal_group_new (signal_target_get_type ());
+  SignalTarget *readback;
+
+  connect_all_signals (group);
+  g_assert_null (g_signal_group_dup_target (group));
+
+  /* Set the target after connecting the signals */
+  target1 = g_object_new (signal_target_get_type (), NULL);
+  g_signal_group_set_target (group, target1);
+  readback = g_signal_group_dup_target (group);
+  g_assert_true (readback == target1);
+  g_object_unref (readback);
+
+  assert_signals (target1, group, TRUE);
+
+  /* Set the same target */
+  readback = g_signal_group_dup_target (group);
+  g_assert_true (readback == target1);
+  g_object_unref (readback);
+  g_signal_group_set_target (group, target1);
+
+  readback = g_signal_group_dup_target (group);
+  g_assert_true (readback == target1);
+  g_object_unref (readback);
+
+  assert_signals (target1, group, TRUE);
+
+  /* Set a new target when the current target is non-NULL */
+  target2 = g_object_new (signal_target_get_type (), NULL);
+  readback = g_signal_group_dup_target (group);
+  g_assert_true (readback == target1);
+  g_object_unref (readback);
+
+  g_signal_group_set_target (group, target2);
+  readback = g_signal_group_dup_target (group);
+  g_assert_true (readback == target2);
+  g_object_unref (readback);
+
+  assert_signals (target2, group, TRUE);
+
+  g_assert_finalize_object (target2);
+  g_assert_finalize_object (target1);
+  g_assert_finalize_object (group);
+}
+
+static void
+assert_blocking (SignalTarget *target,
+                 GSignalGroup *group,
+                 gint          count)
+{
+  gint i;
+
+  assert_signals (target, group, TRUE);
+
+  /* Assert that multiple blocks are effective */
+  for (i = 0; i < count; ++i)
+    {
+      g_signal_group_block (group);
+      assert_signals (target, group, FALSE);
+    }
+
+  /* Assert that the signal is not emitted after the first unblock */
+  for (i = 0; i < count; ++i)
+    {
+      assert_signals (target, group, FALSE);
+      g_signal_group_unblock (group);
+    }
+
+  assert_signals (target, group, TRUE);
+}
+
+static void
+test_signal_group_blocking (void)
+{
+  SignalTarget *target1, *target2, *readback;
+  GSignalGroup *group = g_signal_group_new (signal_target_get_type ());
+
+  /* Test blocking and unblocking null target */
+  g_signal_group_block (group);
+  g_signal_group_unblock (group);
+
+  connect_all_signals (group);
+  g_assert_null (g_signal_group_dup_target (group));
+
+  target1 = g_object_new (signal_target_get_type (), NULL);
+  g_signal_group_set_target (group, target1);
+  readback = g_signal_group_dup_target (group);
+  g_assert_true (readback == target1);
+  g_object_unref (readback);
+
+  assert_blocking (target1, group, 1);
+  assert_blocking (target1, group, 3);
+  assert_blocking (target1, group, 15);
+
+  /* Assert that blocking transfers across changing the target */
+  g_signal_group_block (group);
+  g_signal_group_block (group);
+
+  /* Set a new target when the current target is non-NULL */
+  target2 = g_object_new (signal_target_get_type (), NULL);
+  readback = g_signal_group_dup_target (group);
+  g_assert_true (readback == target1);
+  g_object_unref (readback);
+  g_signal_group_set_target (group, target2);
+  readback = g_signal_group_dup_target (group);
+  g_assert_true (readback == target2);
+  g_object_unref (readback);
+
+  assert_signals (target2, group, FALSE);
+  g_signal_group_unblock (group);
+  assert_signals (target2, group, FALSE);
+  g_signal_group_unblock (group);
+  assert_signals (target2, group, TRUE);
+
+  g_assert_finalize_object (target2);
+  g_assert_finalize_object (target1);
+  g_assert_finalize_object (group);
+}
+
+static void
+test_signal_group_weak_ref_target (void)
+{
+  SignalTarget *target = g_object_new (signal_target_get_type (), NULL);
+  GSignalGroup *group = g_signal_group_new (signal_target_get_type ());
+  SignalTarget *readback;
+
+  g_assert_null (g_signal_group_dup_target (group));
+  g_signal_group_set_target (group, target);
+  readback = g_signal_group_dup_target (group);
+  g_assert_true (readback == target);
+  g_object_unref (readback);
+
+  g_assert_finalize_object (target);
+  g_assert_null (g_signal_group_dup_target (group));
+  g_assert_finalize_object (group);
+}
+
+static void
+test_signal_group_connect_object (void)
+{
+  GObject *object = g_object_new (G_TYPE_OBJECT, NULL);
+  SignalTarget *target = g_object_new (signal_target_get_type (), NULL);
+  GSignalGroup *group = g_signal_group_new (signal_target_get_type ());
+  SignalTarget *readback;
+
+  /* We already do basic connect_object() tests in connect_signals(),
+   * this is only needed to test the specifics of connect_object()
+   */
+  g_signal_group_connect_object (group,
+                                 "the-signal",
+                                 G_CALLBACK (connect_object_cb),
+                                 object,
+                                 0);
+
+  g_assert_null (g_signal_group_dup_target (group));
+  g_signal_group_set_target (group, target);
+  readback = g_signal_group_dup_target (group);
+  g_assert_true (readback == target);
+  g_object_unref (readback);
+
+  g_assert_finalize_object (object);
+
+  /* This would cause a warning if the SignalGroup did not
+   * have a weakref on the object as it would try to connect again
+   */
+  g_signal_group_set_target (group, NULL);
+  g_assert_null (g_signal_group_dup_target (group));
+  g_signal_group_set_target (group, target);
+  readback = g_signal_group_dup_target (group);
+  g_assert_true (readback == target);
+  g_object_unref (readback);
+
+  g_assert_finalize_object (group);
+  g_assert_finalize_object (target);
+}
+
+static void
+test_signal_group_signal_parsing (void)
+{
+  g_test_trap_subprocess ("/GObject/SignalGroup/signal-parsing/subprocess", 0,
+                          G_TEST_SUBPROCESS_INHERIT_STDERR);
+  g_test_trap_assert_passed ();
+  g_test_trap_assert_stderr ("");
+}
+
+static void
+test_signal_group_signal_parsing_subprocess (void)
+{
+  GSignalGroup *group;
+
+  /* Check that the class has not been created and with it the
+   * signals registered. This will cause g_signal_parse_name()
+   * to fail unless GSignalGroup calls g_type_class_ref().
+   */
+  g_assert_null (g_type_class_peek (signal_target_get_type ()));
+
+  group = g_signal_group_new (signal_target_get_type ());
+  g_signal_group_connect (group,
+                          "the-signal",
+                          G_CALLBACK (connect_before_cb),
+                          NULL);
+
+  g_assert_finalize_object (group);
+}
+
+static void
+test_signal_group_properties (void)
+{
+  GSignalGroup *group;
+  SignalTarget *target, *other;
+  GType gtype;
+
+  group = g_signal_group_new (signal_target_get_type ());
+  g_object_get (group,
+                "target", &target,
+                "target-type", &gtype,
+                NULL);
+  g_assert_cmpint (gtype, ==, signal_target_get_type ());
+  g_assert_null (target);
+
+  target = g_object_new (signal_target_get_type (), NULL);
+  g_object_set (group, "target", target, NULL);
+  g_object_get (group, "target", &other, NULL);
+  g_assert_true (target == other);
+  g_object_unref (other);
+
+  g_assert_finalize_object (target);
+  g_assert_null (g_signal_group_dup_target (group));
+  g_assert_finalize_object (group);
+}
+
+G_DECLARE_INTERFACE (SignalThing, signal_thing, SIGNAL, THING, GObject)
+
+struct _SignalThingInterface
+{
+  GTypeInterface iface;
+  void (*changed) (SignalThing *thing);
+};
+
+G_DEFINE_INTERFACE (SignalThing, signal_thing, G_TYPE_OBJECT)
+
+static guint signal_thing_changed;
+
+static void
+signal_thing_default_init (SignalThingInterface *iface)
+{
+  signal_thing_changed =
+      g_signal_new ("changed",
+                    G_TYPE_FROM_INTERFACE (iface),
+                    G_SIGNAL_RUN_LAST,
+                    G_STRUCT_OFFSET (SignalThingInterface, changed),
+                    NULL, NULL, NULL,
+                    G_TYPE_NONE, 0);
+}
+
+G_GNUC_NORETURN static void
+thing_changed_cb (SignalThing *thing,
+                  gpointer     user_data G_GNUC_UNUSED)
+{
+  g_assert_not_reached ();
+}
+
+static void
+test_signal_group_interface (void)
+{
+  GSignalGroup *group;
+
+  group = g_signal_group_new (signal_thing_get_type ());
+  g_signal_group_connect (group,
+                          "changed",
+                          G_CALLBACK (thing_changed_cb),
+                          NULL);
+  g_assert_finalize_object (group);
+}
+
+gint
+main (gint   argc,
+      gchar *argv[])
+{
+  g_test_init (&argc, &argv, NULL);
+  g_test_add_func ("/GObject/SignalGroup/invalid", test_signal_group_invalid);
+  g_test_add_func ("/GObject/SignalGroup/simple", test_signal_group_simple);
+  g_test_add_func ("/GObject/SignalGroup/changing-target", test_signal_group_changing_target);
+  g_test_add_func ("/GObject/SignalGroup/blocking", test_signal_group_blocking);
+  g_test_add_func ("/GObject/SignalGroup/weak-ref-target", test_signal_group_weak_ref_target);
+  g_test_add_func ("/GObject/SignalGroup/connect-object", test_signal_group_connect_object);
+  g_test_add_func ("/GObject/SignalGroup/signal-parsing", test_signal_group_signal_parsing);
+  g_test_add_func ("/GObject/SignalGroup/signal-parsing/subprocess", test_signal_group_signal_parsing_subprocess);
+  g_test_add_func ("/GObject/SignalGroup/properties", test_signal_group_properties);
+  g_test_add_func ("/GObject/SignalGroup/interface", test_signal_group_interface);
+  return g_test_run ();
+}
index b6f9e17..3b485eb 100644 (file)
@@ -343,6 +343,170 @@ test_threaded_weak_ref (void)
              get_wins, unref_wins);
 }
 
+typedef struct
+{
+  GObject *object;
+  GWeakRef *weak;
+  gint started; /* (atomic) */
+  gint finished; /* (atomic) */
+  gint disposing; /* (atomic) */
+} ThreadedWeakRefData;
+
+static void
+on_weak_ref_disposed (gpointer data,
+                      GObject *gobj)
+{
+  ThreadedWeakRefData *thread_data = data;
+
+  /* Wait until the thread has started */
+  while (!g_atomic_int_get (&thread_data->started))
+    continue;
+
+  g_atomic_int_set (&thread_data->disposing, 1);
+
+  /* Wait for the thread to act, so that the object is still valid */
+  while (!g_atomic_int_get (&thread_data->finished))
+    continue;
+
+  g_atomic_int_set (&thread_data->disposing, 0);
+}
+
+static gpointer
+on_other_thread_weak_ref (gpointer user_data)
+{
+  ThreadedWeakRefData *thread_data = user_data;
+  GObject *object = thread_data->object;
+
+  g_atomic_int_set (&thread_data->started, 1);
+
+  /* Ensure we've started disposal */
+  while (!g_atomic_int_get (&thread_data->disposing))
+    continue;
+
+  g_object_ref (object);
+  g_weak_ref_set (thread_data->weak, object);
+  g_object_unref (object);
+
+  g_assert_cmpint (thread_data->disposing, ==, 1);
+  g_atomic_int_set (&thread_data->finished, 1);
+
+  return NULL;
+}
+
+static void
+test_threaded_weak_ref_finalization (void)
+{
+  GObject *obj = g_object_new (G_TYPE_OBJECT, NULL);
+  GWeakRef weak = { { GUINT_TO_POINTER (0xDEADBEEFU) } };
+  ThreadedWeakRefData thread_data = {
+    .object = obj, .weak = &weak, .started = 0, .finished = 0
+  };
+
+  g_test_bug ("https://gitlab.gnome.org/GNOME/glib/-/issues/2390");
+  g_test_summary ("Test that a weak ref added by another thread during dispose "
+                  "of a GObject is cleared during finalisation. "
+                  "Use on_weak_ref_disposed() to synchronize the other thread "
+                  "with the dispose vfunc.");
+
+  g_weak_ref_init (&weak, NULL);
+  g_object_weak_ref (obj, on_weak_ref_disposed, &thread_data);
+
+  g_assert_cmpint (obj->ref_count, ==, 1);
+  g_thread_unref (g_thread_new ("on_other_thread",
+                                on_other_thread_weak_ref,
+                                &thread_data));
+  g_object_unref (obj);
+
+  /* This is what this test is about: at this point the weak reference
+   * should have been unset (and not point to a dead object either). */
+  g_assert_null (g_weak_ref_get (&weak));
+}
+
+typedef struct
+{
+  GObject *object;
+  int done;    /* (atomic) */
+  int toggles; /* (atomic) */
+} ToggleNotifyThreadData;
+
+static gpointer
+on_reffer_thread (gpointer user_data)
+{
+  ToggleNotifyThreadData *thread_data = user_data;
+
+  while (!g_atomic_int_get (&thread_data->done))
+    {
+      g_object_ref (thread_data->object);
+      g_object_unref (thread_data->object);
+    }
+
+  return NULL;
+}
+
+static void
+on_toggle_notify (gpointer data,
+                  GObject *object,
+                  gboolean is_last_ref)
+{
+  /* Anything could be put here, but we don't care for this test.
+   * Actually having this empty made the bug to happen more frequently (being
+   * timing related).
+   */
+}
+
+static gpointer
+on_toggler_thread (gpointer user_data)
+{
+  ToggleNotifyThreadData *thread_data = user_data;
+
+  while (!g_atomic_int_get (&thread_data->done))
+    {
+      g_object_ref (thread_data->object);
+      g_object_remove_toggle_ref (thread_data->object, on_toggle_notify, thread_data);
+      g_object_add_toggle_ref (thread_data->object, on_toggle_notify, thread_data);
+      g_object_unref (thread_data->object);
+      g_atomic_int_add (&thread_data->toggles, 1);
+    }
+
+  return NULL;
+}
+
+static void
+test_threaded_toggle_notify (void)
+{
+  GObject *object = g_object_new (G_TYPE_OBJECT, NULL);
+  ToggleNotifyThreadData data = { object, FALSE, 0 };
+  GThread *threads[3];
+  gsize i;
+
+  g_test_bug ("https://gitlab.gnome.org/GNOME/glib/issues/2394");
+  g_test_summary ("Test that toggle reference notifications can be changed "
+                  "safely from another (the main) thread without causing the "
+                  "notifying thread to abort");
+
+  g_object_add_toggle_ref (object, on_toggle_notify, &data);
+  g_object_unref (object);
+
+  g_assert_cmpint (object->ref_count, ==, 1);
+  threads[0] = g_thread_new ("on_reffer_thread", on_reffer_thread, &data);
+  threads[1] = g_thread_new ("on_another_reffer_thread", on_reffer_thread, &data);
+  threads[2] = g_thread_new ("on_main_toggler_thread", on_toggler_thread, &data);
+
+  /* We need to wait here for the threads to run for a bit in order to make the
+   * race to happen, so we wait for an high number of toggle changes to be met
+   * so that we can be consistent on each platform.
+   */
+  while (g_atomic_int_get (&data.toggles) < 1000000)
+    ;
+  g_atomic_int_set (&data.done, TRUE);
+
+  for (i = 0; i < G_N_ELEMENTS (threads); i++)
+    g_thread_join (threads[i]);
+
+  g_assert_cmpint (object->ref_count, ==, 1);
+  g_clear_object (&object);
+}
+
 int
 main (int   argc,
       char *argv[])
@@ -352,6 +516,10 @@ main (int   argc,
   /* g_test_add_func ("/GObject/threaded-class-init", test_threaded_class_init); */
   g_test_add_func ("/GObject/threaded-object-init", test_threaded_object_init);
   g_test_add_func ("/GObject/threaded-weak-ref", test_threaded_weak_ref);
+  g_test_add_func ("/GObject/threaded-weak-ref/on-finalization",
+                   test_threaded_weak_ref_finalization);
+  g_test_add_func ("/GObject/threaded-toggle-notify",
+                   test_threaded_toggle_notify);
 
   return g_test_run();
 }
index 2e7bdb0..3c7e881 100644 (file)
@@ -1,5 +1,385 @@
+/* GLIB - Library of useful routines for C programming
+ * Copyright (C) 1995-1997  Peter Mattis, Spencer Kimball and Josh MacDonald
+ *
+ * This library 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 library 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/>.
+ */
+
+/*
+ * Modified by the GLib Team and others 1997-2000.  See the AUTHORS
+ * file for a list of people on the GLib Team.  See the ChangeLog
+ * files for a list of changes.  These files are distributed with
+ * GLib at ftp://ftp.gtk.org/pub/gtk/.
+ */
+
 #define GLIB_VERSION_MIN_REQUIRED       GLIB_VERSION_2_30
+
+#include <glib.h>
 #include <glib-object.h>
+#include "gobject/gvaluecollector.h"
+
+static void
+test_enum_transformation (void)
+{
+  GType type;
+  GValue orig = G_VALUE_INIT;
+  GValue xform = G_VALUE_INIT;
+  GEnumValue values[] = { {0,"0","0"}, {1,"1","1"}};
+
+ type = g_enum_register_static ("TestEnum", values);
+
+ g_value_init (&orig, type);
+ g_value_set_enum (&orig, 1);
+
+ memset (&xform, 0, sizeof (GValue));
+ g_value_init (&xform, G_TYPE_CHAR);
+ g_value_transform (&orig, &xform);
+ g_assert_cmpint (g_value_get_char (&xform), ==, 1);
+ g_assert_cmpint (g_value_get_schar (&xform), ==, 1);
+
+ memset (&xform, 0, sizeof (GValue));
+ g_value_init (&xform, G_TYPE_UCHAR);
+ g_value_transform (&orig, &xform);
+ g_assert_cmpint (g_value_get_uchar (&xform), ==, 1);
+
+ memset (&xform, 0, sizeof (GValue));
+ g_value_init (&xform, G_TYPE_INT);
+ g_value_transform (&orig, &xform);
+ g_assert_cmpint (g_value_get_int (&xform), ==, 1);
+
+ memset (&xform, 0, sizeof (GValue));
+ g_value_init (&xform, G_TYPE_UINT);
+ g_value_transform (&orig, &xform);
+ g_assert_cmpint (g_value_get_uint (&xform), ==, 1);
+
+ memset (&xform, 0, sizeof (GValue));
+ g_value_init (&xform, G_TYPE_LONG);
+ g_value_transform (&orig, &xform);
+ g_assert_cmpint (g_value_get_long (&xform), ==, 1);
+
+ memset (&xform, 0, sizeof (GValue));
+ g_value_init (&xform, G_TYPE_ULONG);
+ g_value_transform (&orig, &xform);
+ g_assert_cmpint (g_value_get_ulong (&xform), ==, 1);
+
+ memset (&xform, 0, sizeof (GValue));
+ g_value_init (&xform, G_TYPE_INT64);
+ g_value_transform (&orig, &xform);
+ g_assert_cmpint (g_value_get_int64 (&xform), ==, 1);
+
+ memset (&xform, 0, sizeof (GValue));
+ g_value_init (&xform, G_TYPE_UINT64);
+ g_value_transform (&orig, &xform);
+ g_assert_cmpint (g_value_get_uint64 (&xform), ==, 1);
+}
+
+
+static void
+test_gtype_value (void)
+{
+  GType type;
+  GValue value = G_VALUE_INIT;
+  GValue copy = G_VALUE_INIT;
+
+  g_value_init (&value, G_TYPE_GTYPE);
+
+  g_value_set_gtype (&value, G_TYPE_BOXED);
+  type = g_value_get_gtype (&value);
+  g_assert_true (type == G_TYPE_BOXED);
+
+  g_value_init (&copy, G_TYPE_GTYPE);
+  g_value_copy (&value, &copy);
+  type = g_value_get_gtype (&copy);
+  g_assert_true (type == G_TYPE_BOXED);
+}
+
+static gchar *
+collect (GValue *value, ...)
+{
+  gchar *error;
+  va_list var_args;
+
+  error = NULL;
+
+  va_start (var_args, value);
+  G_VALUE_COLLECT (value, var_args, 0, &error);
+  va_end (var_args);
+
+  return error;
+}
+
+static gchar *
+lcopy (GValue *value, ...)
+{
+  gchar *error;
+  va_list var_args;
+
+  error = NULL;
+
+  va_start (var_args, value);
+  G_VALUE_LCOPY (value, var_args, 0, &error);
+  va_end (var_args);
+
+  return error;
+}
+
+static void
+test_collection (void)
+{
+  GValue value = G_VALUE_INIT;
+  gchar *error;
+
+  g_value_init (&value, G_TYPE_CHAR);
+  error = collect (&value, 'c');
+  g_assert_null (error);
+  g_assert_cmpint (g_value_get_char (&value), ==, 'c');
+
+  g_value_unset (&value);
+  g_value_init (&value, G_TYPE_UCHAR);
+  error = collect (&value, 129);
+  g_assert_null (error);
+  g_assert_cmpint (g_value_get_uchar (&value), ==, 129);
+
+  g_value_unset (&value);
+  g_value_init (&value, G_TYPE_BOOLEAN);
+  error = collect (&value, TRUE);
+  g_assert_null (error);
+  g_assert_cmpint (g_value_get_boolean (&value), ==, TRUE);
+
+  g_value_unset (&value);
+  g_value_init (&value, G_TYPE_INT);
+  error = collect (&value, G_MAXINT);
+  g_assert_null (error);
+  g_assert_cmpint (g_value_get_int (&value), ==, G_MAXINT);
+
+  g_value_unset (&value);
+  g_value_init (&value, G_TYPE_UINT);
+  error = collect (&value, G_MAXUINT);
+  g_assert_null (error);
+  g_assert_cmpuint (g_value_get_uint (&value), ==, G_MAXUINT);
+
+  g_value_unset (&value);
+  g_value_init (&value, G_TYPE_LONG);
+  error = collect (&value, G_MAXLONG);
+  g_assert_null (error);
+  g_assert_cmpint (g_value_get_long (&value), ==, G_MAXLONG);
+
+  g_value_unset (&value);
+  g_value_init (&value, G_TYPE_ULONG);
+  error = collect (&value, G_MAXULONG);
+  g_assert_null (error);
+  g_assert_cmpuint (g_value_get_ulong (&value), ==, G_MAXULONG);
+
+  g_value_unset (&value);
+  g_value_init (&value, G_TYPE_INT64);
+  error = collect (&value, G_MAXINT64);
+  g_assert_null (error);
+  g_assert_cmpint (g_value_get_int64 (&value), ==, G_MAXINT64);
+
+  g_value_unset (&value);
+  g_value_init (&value, G_TYPE_UINT64);
+  error = collect (&value, G_MAXUINT64);
+  g_assert_null (error);
+  g_assert_cmpuint (g_value_get_uint64 (&value), ==, G_MAXUINT64);
+
+  g_value_unset (&value);
+  g_value_init (&value, G_TYPE_FLOAT);
+  error = collect (&value, G_MAXFLOAT);
+  g_assert_null (error);
+  g_assert_cmpfloat (g_value_get_float (&value), ==, G_MAXFLOAT);
+
+  g_value_unset (&value);
+  g_value_init (&value, G_TYPE_DOUBLE);
+  error = collect (&value, G_MAXDOUBLE);
+  g_assert_null (error);
+  g_assert_cmpfloat (g_value_get_double (&value), ==, G_MAXDOUBLE);
+
+  g_value_unset (&value);
+  g_value_init (&value, G_TYPE_STRING);
+  error = collect (&value, "string ?");
+  g_assert_null (error);
+  g_assert_cmpstr (g_value_get_string (&value), ==, "string ?");
+
+  g_value_unset (&value);
+  g_value_init (&value, G_TYPE_GTYPE);
+  error = collect (&value, G_TYPE_BOXED);
+  g_assert_null (error);
+  g_assert_true (g_value_get_gtype (&value) == G_TYPE_BOXED);
+
+  g_value_unset (&value);
+  g_value_init (&value, G_TYPE_VARIANT);
+  error = collect (&value, g_variant_new_uint32 (42));
+  g_assert_null (error);
+  g_assert_true (g_variant_is_of_type (g_value_get_variant (&value),
+                                       G_VARIANT_TYPE ("u")));
+  g_assert_cmpuint (g_variant_get_uint32 (g_value_get_variant (&value)), ==, 42);
+
+  g_value_unset (&value);
+}
+
+static void
+test_copying (void)
+{
+  GValue value = G_VALUE_INIT;
+  gchar *error;
+
+  {
+    gchar c = 0;
+
+    g_value_init (&value, G_TYPE_CHAR);
+    g_value_set_char (&value, 'c');
+    error = lcopy (&value, &c);
+    g_assert_null (error);
+    g_assert_cmpint (c, ==, 'c');
+  }
+
+  {
+    guchar c = 0;
+
+    g_value_unset (&value);
+    g_value_init (&value, G_TYPE_UCHAR);
+    g_value_set_uchar (&value, 129);
+    error = lcopy (&value, &c);
+    g_assert_null (error);
+    g_assert_cmpint (c, ==, 129);
+  }
+
+  {
+    gint c = 0;
+
+    g_value_unset (&value);
+    g_value_init (&value, G_TYPE_INT);
+    g_value_set_int (&value, G_MAXINT);
+    error = lcopy (&value, &c);
+    g_assert_null (error);
+    g_assert_cmpint (c, ==, G_MAXINT);
+  }
+
+  {
+    guint c = 0;
+
+    g_value_unset (&value);
+    g_value_init (&value, G_TYPE_UINT);
+    g_value_set_uint (&value, G_MAXUINT);
+    error = lcopy (&value, &c);
+    g_assert_null (error);
+    g_assert_cmpuint (c, ==, G_MAXUINT);
+  }
+
+  {
+    glong c = 0;
+
+    g_value_unset (&value);
+    g_value_init (&value, G_TYPE_LONG);
+    g_value_set_long (&value, G_MAXLONG);
+    error = lcopy (&value, &c);
+    g_assert_null (error);
+    g_assert (c == G_MAXLONG);
+  }
+
+  {
+    gulong c = 0;
+
+    g_value_unset (&value);
+    g_value_init (&value, G_TYPE_ULONG);
+    g_value_set_ulong (&value, G_MAXULONG);
+    error = lcopy (&value, &c);
+    g_assert_null (error);
+    g_assert (c == G_MAXULONG);
+  }
+
+  {
+    gint64 c = 0;
+
+    g_value_unset (&value);
+    g_value_init (&value, G_TYPE_INT64);
+    g_value_set_int64 (&value, G_MAXINT64);
+    error = lcopy (&value, &c);
+    g_assert_null (error);
+    g_assert (c == G_MAXINT64);
+  }
+
+  {
+    guint64 c = 0;
+
+    g_value_unset (&value);
+    g_value_init (&value, G_TYPE_UINT64);
+    g_value_set_uint64 (&value, G_MAXUINT64);
+    error = lcopy (&value, &c);
+    g_assert_null (error);
+    g_assert (c == G_MAXUINT64);
+  }
+
+  {
+    gfloat c = 0;
+
+    g_value_unset (&value);
+    g_value_init (&value, G_TYPE_FLOAT);
+    g_value_set_float (&value, G_MAXFLOAT);
+    error = lcopy (&value, &c);
+    g_assert_null (error);
+    g_assert (c == G_MAXFLOAT);
+  }
+
+  {
+    gdouble c = 0;
+
+    g_value_unset (&value);
+    g_value_init (&value, G_TYPE_DOUBLE);
+    g_value_set_double (&value, G_MAXDOUBLE);
+    error = lcopy (&value, &c);
+    g_assert_null (error);
+    g_assert (c == G_MAXDOUBLE);
+  }
+
+  {
+    gchar *c = NULL;
+
+    g_value_unset (&value);
+    g_value_init (&value, G_TYPE_STRING);
+    g_value_set_string (&value, "string ?");
+    error = lcopy (&value, &c);
+    g_assert_null (error);
+    g_assert_cmpstr (c, ==, "string ?");
+    g_free (c);
+  }
+
+  {
+    GType c = G_TYPE_NONE;
+
+    g_value_unset (&value);
+    g_value_init (&value, G_TYPE_GTYPE);
+    g_value_set_gtype (&value, G_TYPE_BOXED);
+    error = lcopy (&value, &c);
+    g_assert_null (error);
+    g_assert_true (c == G_TYPE_BOXED);
+  }
+
+  {
+    GVariant *c = NULL;
+
+    g_value_unset (&value);
+    g_value_init (&value, G_TYPE_VARIANT);
+    g_value_set_variant (&value, g_variant_new_uint32 (42));
+    error = lcopy (&value, &c);
+    g_assert_null (error);
+    g_assert_nonnull (c);
+    g_assert (g_variant_is_of_type (c, G_VARIANT_TYPE ("u")));
+    g_assert_cmpuint (g_variant_get_uint32 (c), ==, 42);
+    g_variant_unref (c);
+    g_value_unset (&value);
+  }
+}
 
 static void
 test_value_basic (void)
@@ -360,8 +740,12 @@ main (int argc, char *argv[])
   g_test_init (&argc, &argv, NULL);
 
   g_test_add_func ("/value/basic", test_value_basic);
-  g_test_add_func ("/value/string", test_value_string);
   g_test_add_func ("/value/array/basic", test_valuearray_basic);
+  g_test_add_func ("/value/collection", test_collection);
+  g_test_add_func ("/value/copying", test_copying);
+  g_test_add_func ("/value/enum-transformation", test_enum_transformation);
+  g_test_add_func ("/value/gtype", test_gtype_value);
+  g_test_add_func ("/value/string", test_value_string);
   g_test_add_func ("/value/transform-object", test_value_transform_object);
 
   return g_test_run ();
index 87d59ad..48fdfe8 100644 (file)
@@ -1,10 +1,10 @@
 project('glib', 'c', 'cpp',
-  version : '2.70.5',
-  # NOTE: We keep this pinned at 0.49 because that's what Debian 10 ships
-  meson_version : '>= 0.49.2',
+  version : '2.72.3',
+  # NOTE: We keep this pinned at 0.52 because that's what Debian Stable ships
+  meson_version : '>= 0.52.0',
   default_options : [
     'buildtype=debugoptimized',
-    'warning_level=1',
+    'warning_level=3',
     'c_std=gnu99'
   ]
 )
@@ -24,8 +24,25 @@ if cc.get_id() == 'msvc'
   # 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',language : 'c')
+  add_project_arguments(cc.get_supported_arguments([
+    '/wo4057',  # 'operator': 'identifier1' differs in indirection to slightly different base types from 'identifier2'
+    '/wd4068',  # unknown pragma
+    '/wo4090',  # 'operation': different 'modifier' qualifiers
+    '/wd4100',  # 'identifier': unreferenced formal parameter
+    '/wd4116',  # unnamed type definition in parentheses
+    '/wo4125',  # decimal digit terminates octal escape sequence
+    '/wd4127',  # conditional expression is constant
+    '/wd4146',  # unary minus operator applied to unsigned type, result still unsigned
+    '/wd4152',  # nonstandard extension, function/data pointer conversion in expression
+    '/wd4201',  # nonstandard extension used: nameless struct/union
+    '/wd4232',  # nonstandard extension used: 'identifier': address of dllimport 'dllimport' is not static, identity not guaranteed
+    '/wo4245',  # 'conversion_type': conversion from 'type1' to 'type2', signed/unsigned mismatch
+    '/wo4267',  # 'variable': conversion from 'size_t' to 'type', possible loss of data
+    '/wd4334',  # 'shift_operator': result of 32-bit shift implicitly converted to 64 bits (was 64-bit shift intended?)
+    '/wo4389',  # 'operator': signed/unsigned mismatch
+    '/wo4702',  # unreachable code
+    '/wd4706'   # assignment within conditional expression
+    ]), language : 'c')
   # Set the input and exec encoding to utf-8, like is the default with GCC
   add_project_arguments(cc.get_supported_arguments(['/utf-8']), language: 'c')
   # Disable SAFESEH with MSVC for plugins and libs that use external deps that
@@ -148,8 +165,8 @@ glibconfig_conf.set('LT_CURRENT_MINUS_AGE', soversion)
 
 glib_conf.set('_GNU_SOURCE', 1)
 
-if host_system == 'windows'
-  # Poll doesn't work on devices on Windows
+if host_system in ['windows', 'darwin']
+  # Poll doesn't work on devices on Windows, and macOS's poll() implementation is known to be broken
   glib_conf.set('BROKEN_POLL', true)
 endif
 
@@ -200,6 +217,9 @@ endif
 glib_hidden_visibility_args = []
 if get_option('default_library') != 'static'
   if host_system == 'windows' or host_system == 'cygwin'
+    if get_option('default_library') != 'shared'
+      error('On Windows default_library must be "shared" or "static" but not "both"')
+    endif
     glib_conf.set('DLL_EXPORT', true)
     if cc.get_id() == 'msvc' or cc.get_id() == 'clang-cl'
       glib_conf.set('_GLIB_EXTERN', '__declspec(dllexport) extern')
@@ -214,8 +234,10 @@ if get_option('default_library') != 'static'
 endif
 
 if get_option('default_library') == 'static'
-    glibconfig_conf.set('GLIB_STATIC_COMPILATION', '1')
-    glibconfig_conf.set('GOBJECT_STATIC_COMPILATION', '1')
+  glibconfig_conf.set('GLIB_STATIC_COMPILATION', '1')
+  glibconfig_conf.set('GOBJECT_STATIC_COMPILATION', '1')
+  glibconfig_conf.set('G_INTL_STATIC_COMPILATION', '1')
+  glibconfig_conf.set('FFI_STATIC_BUILD', '1')
 endif
 
 # Cygwin glib port maintainers made it clear
@@ -275,6 +297,7 @@ add_project_arguments(glib_debug_cflags, language: 'c')
 
 headers = [
   'alloca.h',
+  'afunix.h',
   'crt_externs.h',
   'dirent.h', # MSC does not come with this by default
   'float.h',
@@ -424,31 +447,40 @@ endforeach
 
 # Compiler flags
 if cc.get_id() == 'gcc' or cc.get_id() == 'clang'
-  warning_c_args = [
+  warning_common_args = [
     '-Wduplicated-branches',
     '-Wimplicit-fallthrough',
     '-Wmisleading-indentation',
-    '-Wstrict-prototypes',
     '-Wunused',
     # Due to maintained deprecated code, we do not want to see unused parameters
     '-Wno-unused-parameter',
     # Due to pervasive use of things like GPOINTER_TO_UINT(), we do not support
     # building with -Wbad-function-cast.
-    '-Wno-bad-function-cast',
     '-Wno-cast-function-type',
     # Due to function casts through (void*) we cannot support -Wpedantic:
     # https://wiki.gnome.org/Projects/GLib/CompilerRequirements#Function_pointer_conversions.
     '-Wno-pedantic',
     # A zero-length format string shouldn't be considered an issue.
     '-Wno-format-zero-length',
-    '-Werror=declaration-after-statement',
+    # We explicitly require variadic macros
+    '-Wno-variadic-macros',
     '-Werror=format=2',
-    '-Werror=implicit-function-declaration',
     '-Werror=init-self',
     '-Werror=missing-include-dirs',
-    '-Werror=missing-prototypes',
     '-Werror=pointer-arith',
   ]
+
+  warning_c_args = warning_common_args + [
+    '-Wstrict-prototypes',
+    # Due to pervasive use of things like GPOINTER_TO_UINT(), we do not support
+    # building with -Wbad-function-cast.
+    '-Wno-bad-function-cast',
+    '-Werror=declaration-after-statement',
+    '-Werror=implicit-function-declaration',
+    '-Werror=missing-prototypes',
+  ]
+  warning_cxx_args = warning_common_args
+  warning_objc_args = warning_c_args
   warning_c_link_args = [
     '-Wl,-z,nodelete',
   ]
@@ -457,10 +489,13 @@ if cc.get_id() == 'gcc' or cc.get_id() == 'clang'
   endif
 else
   warning_c_args = []
+  warning_cxx_args = []
+  warning_objc_args = []
   warning_c_link_args = []
 endif
 
 add_project_arguments(cc.get_supported_arguments(warning_c_args), language: 'c')
+add_project_arguments(cxx.get_supported_arguments(warning_cxx_args), language: 'cpp')
 
 # FIXME: We cannot build some of the GResource tests with -z nodelete, which
 # means we cannot use that flag in add_project_link_arguments(), and must add
@@ -635,8 +670,19 @@ if host_system == 'android'
 endif
 
 
-# Check that posix_memalign() is usable; must use header
-if host_system != 'windows' and cc.has_function('posix_memalign', prefix : '#include <stdlib.h>')
+if cc.has_function('memalign', prefix: '#include <stdlib.h>\n#include <malloc.h>')
+  glib_conf.set('HAVE_MEMALIGN', 1)
+endif
+
+if cc.has_function('_aligned_malloc', prefix: '#include <malloc.h>')
+  glib_conf.set('HAVE__ALIGNED_MALLOC', 1)
+endif
+
+if host_system != 'windows' and cc.has_function('aligned_alloc', prefix: '#include <stdlib.h>')
+  glib_conf.set('HAVE_ALIGNED_ALLOC', 1)
+endif
+
+if host_system != 'windows' and cc.has_function('posix_memalign', prefix: '#include <stdlib.h>')
   glib_conf.set('HAVE_POSIX_MEMALIGN', 1)
 endif
 
@@ -746,7 +792,6 @@ if host_system == 'linux'
   endif
 endif
 
-osx_ldflags = []
 glib_have_os_x_9_or_later = false
 glib_have_carbon = false
 glib_have_cocoa = false
@@ -754,7 +799,7 @@ if host_system == 'darwin'
   add_languages('objc')
   objcc = meson.get_compiler('objc')
 
-  osx_ldflags += ['-Wl,-framework,CoreFoundation']
+  add_project_arguments(objcc.get_supported_arguments(warning_objc_args), language: 'objc')
 
   # Mac OS X Carbon support
   glib_have_carbon = objcc.compiles('''#include <Carbon/Carbon.h>
@@ -763,7 +808,6 @@ if host_system == 'darwin'
 
   if glib_have_carbon
     glib_conf.set('HAVE_CARBON', true)
-    osx_ldflags += '-Wl,-framework,Carbon'
     glib_have_os_x_9_or_later = objcc.compiles('''#include <AvailabilityMacros.h>
                                                   #if MAC_OS_X_VERSION_MIN_REQUIRED < 1090
                                                   #error Compiling for minimum OS X version before 10.9
@@ -780,13 +824,7 @@ if host_system == 'darwin'
 
   if glib_have_cocoa
     glib_conf.set('HAVE_COCOA', true)
-    osx_ldflags += ['-Wl,-framework,Foundation', '-Wl,-framework,AppKit']
   endif
-
-  # FIXME: libgio mix C and objC source files and there is no way to reliably
-  # know which language flags it's going to use to link. Add to both languages
-  # for now. See https://github.com/mesonbuild/meson/issues/3585.
-  add_project_link_arguments(osx_ldflags, language : ['objc', 'c'])
 endif
 
 if host_system == 'qnx'
@@ -1671,7 +1709,7 @@ va_list_val_copy_prog = '''
 
 if cc_can_run
   rres = cc.run(va_list_val_copy_prog, name : 'va_lists can be copied as values')
-  glib_va_val_copy = rres.returncode() == 0
+  glib_va_val_copy = rres.compiled() and rres.returncode() == 0
 else
   glib_va_val_copy = meson.get_cross_property('va_val_copy', true)
 endif
@@ -1848,6 +1886,10 @@ glibconfig_conf.set('G_ATOMIC_LOCK_FREE', have_atomic_lock_free)
 
 # === Threads ===
 
+if get_option('force_posix_threads')
+  warning('DEPRECATION: Option \'force_posix_threads\' is deprecated and will be removed after GLib 2.72; please file an issue with your use case if you still require it')
+endif
+
 # Determination of thread implementation
 if host_system == 'windows' and not get_option('force_posix_threads')
   thread_dep = []
@@ -1946,7 +1988,7 @@ stack_grows_check_prog = '''
 
 if cc_can_run
   rres = cc.run(stack_grows_check_prog, name : 'stack grows check')
-  growing_stack = rres.returncode() == 0
+  growing_stack = rres.compiled() and rres.returncode() == 0
 else
   growing_stack = meson.get_cross_property('growing_stack', false)
 endif
@@ -2046,13 +2088,13 @@ endif
 # FIXME: glib-gettext.m4 has much more checks to detect broken/uncompatible
 # implementations. This could be extended if issues are found in some platforms.
 libintl_deps = []
-if cc.has_function('ngettext', args : osx_ldflags)
+if cc.has_function('ngettext')
   have_bind_textdomain_codeset = cc.has_function('bind_textdomain_codeset')
 else
   # First just find the bare library.
   libintl = cc.find_library('intl', required : false)
   # The bare library probably won't link without help if it's static.
-  if libintl.found() and not cc.has_function('ngettext', args : osx_ldflags, dependencies : libintl)
+  if libintl.found() and not cc.has_function('ngettext', dependencies : libintl)
      libintl_iconv = cc.find_library('iconv', required : false)
      # libintl supports different threading APIs, which may not
      # require additional flags, but it defaults to using pthreads if
@@ -2062,10 +2104,10 @@ else
      # also defining the macros with the -pthread flag.
      libintl_pthread = cc.find_library('pthread', required : false)
      # Try linking with just libiconv.
-     if libintl_iconv.found() and cc.has_function('ngettext', args : osx_ldflags, dependencies : [libintl, libintl_iconv])
+     if libintl_iconv.found() and cc.has_function('ngettext', dependencies : [libintl, libintl_iconv])
        libintl_deps += [libintl_iconv]
      # Then also try linking with pthreads.
-     elif libintl_iconv.found() and libintl_pthread.found() and cc.has_function('ngettext', args : osx_ldflags, dependencies : [libintl, libintl_iconv, libintl_pthread])
+     elif libintl_iconv.found() and libintl_pthread.found() and cc.has_function('ngettext', dependencies : [libintl, libintl_iconv, libintl_pthread])
        libintl_deps += [libintl_iconv, libintl_pthread]
      else
        libintl = disabler()
@@ -2077,7 +2119,7 @@ else
     have_bind_textdomain_codeset = true  # proxy-libintl supports it
   else
     libintl_deps = [libintl] + libintl_deps
-    have_bind_textdomain_codeset = cc.has_function('bind_textdomain_codeset', args : osx_ldflags,
+    have_bind_textdomain_codeset = cc.has_function('bind_textdomain_codeset', 
                                                    dependencies : libintl_deps)
   endif
 endif
@@ -2281,7 +2323,7 @@ if host_system == 'windows' and cc.get_id() != 'msvc' and cc.get_id() != 'clang-
   add_project_arguments(win32_cflags, language : 'c')
 
   # Win32 API libs, used only by libglib and exposed in glib-2.0.pc
-  win32_ldflags = ['-lws2_32', '-lole32', '-lwinmm', '-lshlwapi']
+  win32_ldflags = ['-lws2_32', '-lole32', '-lwinmm', '-lshlwapi', '-luuid']
 elif host_system == 'cygwin'
   win32_ldflags = ['-luser32', '-lkernel32']
 endif
index c31517d..24daa08 100644 (file)
@@ -39,6 +39,7 @@ gio/gdbusprivate.c
 gio/gdbusproxy.c
 gio/gdbusserver.c
 gio/gdbus-tool.c
+gio/gdebugcontrollerdbus.c
 gio/gdesktopappinfo.c
 gio/gdrive.c
 gio/gdtlsclientconnection.c
index 393248c..b53f296 100644 (file)
--- a/po/bg.po
+++ b/po/bg.po
@@ -11,9 +11,9 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: glib master\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-02-01 06:19+0200\n"
-"PO-Revision-Date: 2016-01-31 22:54+0200\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/glib/issues\n"
+"POT-Creation-Date: 2022-04-08 12:19+0000\n"
+"PO-Revision-Date: 2022-04-09 09:55+0200\n"
 "Last-Translator: Alexander Shopov <ash@kambanaria.org>\n"
 "Language-Team: Bulgarian <dict@fsa-bg.org>\n"
 "Language: bg\n"
@@ -22,128 +22,144 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: ../gio/gapplication.c:531
-msgid "Enter GApplication service mode (use from D-Bus service files)"
+#: gio/gappinfo.c:333
+msgid "Setting default applications not supported yet"
+msgstr "Задаването на приложение като стандартно не се поддържа"
+
+#: gio/gappinfo.c:366
+msgid "Setting application as last used for type not supported yet"
 msgstr ""
-"Ð\92лизане Ð² Ð¾Ð±Ñ\81лÑ\83жваÑ\89 Ñ\80ежим Ð½Ð° GAplication (Ñ\87Ñ\80ез Ð¾Ð±Ñ\81лÑ\83жваÑ\89и Ñ\84айлове Ð½Ð° D-Bus)"
+"Ð\97адаванеÑ\82о Ð½Ð° Ð¿Ð¾Ñ\81ледно Ð¿Ð¾Ð»Ð·Ð²Ð°Ð½Ð¾Ñ\82о Ð¿Ñ\80иложение ÐºÐ°Ñ\82о Ñ\81Ñ\82андаÑ\80Ñ\82но Ð½Ðµ Ñ\81е Ð¿Ð¾Ð´Ð´Ñ\8aÑ\80жа"
 
-#: ../gio/gapplication.c:536
+#: gio/gapplication.c:500
 msgid "GApplication options"
-msgstr "Настройки на GApplication"
+msgstr "Настройки на „GApplication“"
 
-#: ../gio/gapplication.c:536
+#: gio/gapplication.c:500
 msgid "Show GApplication options"
-msgstr "Извеждане на настройките за GApplication"
+msgstr "Извеждане на настройките за „GApplication“"
+
+#: gio/gapplication.c:545
+msgid "Enter GApplication service mode (use from D-Bus service files)"
+msgstr ""
+"Влизане в обслужващ режим на „GAplication“ (чрез обслужващи файлове на D-Bus)"
+
+#: gio/gapplication.c:557
+msgid "Override the application’s ID"
+msgstr "Предефиниране на идентификатора на приложение"
 
-#: ../gio/gapplication-tool.c:45 ../gio/gapplication-tool.c:46
-#: ../gio/gresource-tool.c:488 ../gio/gsettings-tool.c:512
+#: gio/gapplication.c:569
+msgid "Replace the running instance"
+msgstr "Замяна на стартирания процес"
+
+#: gio/gapplication-tool.c:45 gio/gapplication-tool.c:46 gio/gio-tool.c:227
+#: gio/gresource-tool.c:494 gio/gsettings-tool.c:584
 msgid "Print help"
 msgstr "Извеждане на помощта"
 
-#: ../gio/gapplication-tool.c:47 ../gio/gresource-tool.c:489
-#: ../gio/gresource-tool.c:557
+#: gio/gapplication-tool.c:47 gio/gresource-tool.c:495 gio/gresource-tool.c:563
 msgid "[COMMAND]"
 msgstr "[КОМАНДА]"
 
-#: ../gio/gapplication-tool.c:49
+#: gio/gapplication-tool.c:49 gio/gio-tool.c:228
 msgid "Print version"
 msgstr "Извеждане на версията"
 
-#: ../gio/gapplication-tool.c:50 ../gio/gsettings-tool.c:518
+#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:590
 msgid "Print version information and exit"
 msgstr "Извеждане на версията"
 
-#: ../gio/gapplication-tool.c:52
+#: gio/gapplication-tool.c:53
 msgid "List applications"
 msgstr "Показване на приложения"
 
-#: ../gio/gapplication-tool.c:53
+#: gio/gapplication-tool.c:54
 msgid "List the installed D-Bus activatable applications (by .desktop files)"
 msgstr ""
-"Ð\9fоказване Ð½Ð° Ð¸Ð½Ñ\81Ñ\82алиÑ\80аниÑ\82е Ð¸Ð·Ð¿Ð¾Ð»Ð·Ð²Ð°ÐµÐ¼Ð¸ Ð¿Ñ\80иложениÑ\8f Ð·Ð° D-Bus (Ñ\87Ñ\80ез Ñ\84айлове â\80\9e."
-"desktop“)"
+"Ð\9fоказване Ð½Ð° Ð¸Ð½Ñ\81Ñ\82алиÑ\80аниÑ\82е Ð¿Ñ\80иложениÑ\8f Ð·Ð° D-Bus, ÐºÐ¾Ð¸Ñ\82о Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ\81е Ð·Ð°Ð´ÐµÐ¹Ñ\81Ñ\82ваÑ\82 "
+"(чрез файлове „.desktop“)"
 
-#: ../gio/gapplication-tool.c:55
+#: gio/gapplication-tool.c:57
 msgid "Launch an application"
 msgstr "Стартиране на програма"
 
-#: ../gio/gapplication-tool.c:56
+#: gio/gapplication-tool.c:58
 msgid "Launch the application (with optional files to open)"
-msgstr "Стартиране на програма (с/без файлове за отваряне)"
+msgstr "Стартиране на програма (евентуално с файлове за отваряне)"
 
-#: ../gio/gapplication-tool.c:57
-msgid "APPID [FILE...]"
+#: gio/gapplication-tool.c:59
+msgid "APPID [FILE]"
 msgstr "ИД_НА_ПРИЛОЖЕНИЕ [ФАЙЛ…]"
 
-#: ../gio/gapplication-tool.c:59
+#: gio/gapplication-tool.c:61
 msgid "Activate an action"
 msgstr "Активиране на действие"
 
-#: ../gio/gapplication-tool.c:60
+#: gio/gapplication-tool.c:62
 msgid "Invoke an action on the application"
 msgstr "Повикване на действие за приложението"
 
-#: ../gio/gapplication-tool.c:61
+#: gio/gapplication-tool.c:63
 msgid "APPID ACTION [PARAMETER]"
 msgstr "ИД_НА_ПРИЛОЖЕНИЕ ДЕЙСТВИЕ [ПАРАМЕТЪР]"
 
-#: ../gio/gapplication-tool.c:63
+#: gio/gapplication-tool.c:65
 msgid "List available actions"
 msgstr "Показване на действията"
 
-#: ../gio/gapplication-tool.c:64
+#: gio/gapplication-tool.c:66
 msgid "List static actions for an application (from .desktop file)"
 msgstr ""
 "Показване на предварително зададени действия за приложение (от файл „."
 "desktop“)"
 
-#: ../gio/gapplication-tool.c:65 ../gio/gapplication-tool.c:71
+#: gio/gapplication-tool.c:67 gio/gapplication-tool.c:73
 msgid "APPID"
 msgstr "ИД_НА_ПРИЛОЖЕНИЕ"
 
-#: ../gio/gapplication-tool.c:70 ../gio/gapplication-tool.c:133
-#: ../gio/gdbus-tool.c:90
+#: gio/gapplication-tool.c:72 gio/gapplication-tool.c:135 gio/gdbus-tool.c:106
+#: gio/gio-tool.c:224
 msgid "COMMAND"
 msgstr "КОМАНДА"
 
-#: ../gio/gapplication-tool.c:70
+#: gio/gapplication-tool.c:72
 msgid "The command to print detailed help for"
 msgstr "Командата за извеждане на подробна помощ за"
 
-#: ../gio/gapplication-tool.c:71
+#: gio/gapplication-tool.c:73
 msgid "Application identifier in D-Bus format (eg: org.example.viewer)"
 msgstr ""
 "Идентификатор на приложение във формат D-Bus (например: „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:74 gio/glib-compile-resources.c:820
+#: gio/glib-compile-resources.c:826 gio/glib-compile-resources.c:855
+#: gio/gresource-tool.c:501 gio/gresource-tool.c:567
 msgid "FILE"
 msgstr "ФАЙЛ"
 
-#: ../gio/gapplication-tool.c:72
+#: gio/gapplication-tool.c:74
 msgid "Optional relative or absolute filenames, or URIs to open"
 msgstr "Незадължителни относителни или абсолютни пътища или адреси за отваряне"
 
-#: ../gio/gapplication-tool.c:73
+#: gio/gapplication-tool.c:75
 msgid "ACTION"
 msgstr "ДЕЙСТВИЕ"
 
-#: ../gio/gapplication-tool.c:73
+#: gio/gapplication-tool.c:75
 msgid "The action name to invoke"
 msgstr "Действието, което да се извърши"
 
-#: ../gio/gapplication-tool.c:74
+#: gio/gapplication-tool.c:76
 msgid "PARAMETER"
 msgstr "ПАРАМЕТЪР"
 
-#: ../gio/gapplication-tool.c:74
+#: gio/gapplication-tool.c:76
 msgid "Optional parameter to the action invocation, in GVariant format"
 msgstr ""
-"Незадължителен параметър при повикване на действието. Във формат за GVariant"
+"Незадължителен параметър при извикване на действието. Във формат за "
+"„GVariant“"
 
-#: ../gio/gapplication-tool.c:96 ../gio/gresource-tool.c:526
-#: ../gio/gsettings-tool.c:598
+#: gio/gapplication-tool.c:98 gio/gresource-tool.c:532 gio/gsettings-tool.c:676
 #, c-format
 msgid ""
 "Unknown command %s\n"
@@ -152,35 +168,35 @@ msgstr ""
 "Непозната команда „%s“\n"
 "\n"
 
-#: ../gio/gapplication-tool.c:101
+#: gio/gapplication-tool.c:103
 msgid "Usage:\n"
 msgstr "Употреба:\n"
 
-#: ../gio/gapplication-tool.c:114 ../gio/gresource-tool.c:551
-#: ../gio/gsettings-tool.c:632
+#: gio/gapplication-tool.c:116 gio/gresource-tool.c:557
+#: gio/gsettings-tool.c:711
 msgid "Arguments:\n"
 msgstr "Аргументи:\n"
 
-#: ../gio/gapplication-tool.c:133
-msgid "[ARGS...]"
-msgstr "[АРГУМЕНТИ…]"
+#: gio/gapplication-tool.c:135 gio/gio-tool.c:224
+msgid "[ARGS]"
+msgstr "[АРГУМЕНТ…]"
 
-#: ../gio/gapplication-tool.c:134
+#: gio/gapplication-tool.c:136
 #, c-format
 msgid "Commands:\n"
 msgstr "Команди:\n"
 
 #. Translators: do not translate 'help', but please translate 'COMMAND'.
-#: ../gio/gapplication-tool.c:146
+#: gio/gapplication-tool.c:148
 #, c-format
 msgid ""
-"Use '%s help COMMAND' to get detailed help.\n"
+"Use “%s help COMMAND” to get detailed help.\n"
 "\n"
 msgstr ""
 "Въведете „%s help КОМАНДА“ за подробна помощ.\n"
 "\n"
 
-#: ../gio/gapplication-tool.c:165
+#: gio/gapplication-tool.c:167
 #, c-format
 msgid ""
 "%s command requires an application id to directly follow\n"
@@ -189,365 +205,365 @@ msgstr ""
 "Командата „%s“ изисква идентификатор на приложение за директно следене\n"
 "\n"
 
-#: ../gio/gapplication-tool.c:171
+#: gio/gapplication-tool.c:173
 #, c-format
-msgid "invalid application id: '%s'\n"
+msgid "invalid application id: “%s”\n"
 msgstr "неизвестен идентификатор на приложение „%s“\n"
 
 #. Translators: %s is replaced with a command name like 'list-actions'
-#: ../gio/gapplication-tool.c:182
+#: gio/gapplication-tool.c:184
 #, c-format
 msgid ""
-"'%s' takes no arguments\n"
+"“%s” takes no arguments\n"
 "\n"
 msgstr ""
 "„%s“ не приема аргументи\n"
 "\n"
 
-#: ../gio/gapplication-tool.c:266
+#: gio/gapplication-tool.c:268
 #, c-format
 msgid "unable to connect to D-Bus: %s\n"
-msgstr "Ð\9dеуспешно свързване към D-Bus: %s\n"
+msgstr "неуспешно свързване към D-Bus: %s\n"
 
-#: ../gio/gapplication-tool.c:286
+#: gio/gapplication-tool.c:288
 #, c-format
 msgid "error sending %s message to application: %s\n"
-msgstr "Ð\93решка при изпращане на съобщение „%s“ до приложение „%s“\n"
+msgstr "грешка при изпращане на съобщение „%s“ до приложение „%s“\n"
 
-#: ../gio/gapplication-tool.c:317
-#, c-format
+#: gio/gapplication-tool.c:319
 msgid "action name must be given after application id\n"
 msgstr ""
 "името на действие трябва да бъде подадено след идентификатора на приложение\n"
 
-#: ../gio/gapplication-tool.c:325
+#: gio/gapplication-tool.c:327
 #, c-format
 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 ""
 "неправилно име на действие: „%s“\n"
 "името трябва да съдържа букви, цифри, „-“ или „.“\n"
 
-#: ../gio/gapplication-tool.c:344
+#: gio/gapplication-tool.c:346
 #, c-format
 msgid "error parsing action parameter: %s\n"
-msgstr "Ð\93решка при анализа на параметър: %s\n"
+msgstr "грешка при анализа на параметър: %s\n"
 
-#: ../gio/gapplication-tool.c:356
-#, c-format
+#: gio/gapplication-tool.c:358
 msgid "actions accept a maximum of one parameter\n"
 msgstr "действията приемат само по един параметър\n"
 
-#: ../gio/gapplication-tool.c:411
-#, c-format
+#: gio/gapplication-tool.c:413
 msgid "list-actions command takes only the application id"
-msgstr "командата list-actions изисква само идентификатор на приложение"
+msgstr "командата „list-actions“ изисква само идентификатор на приложение"
 
-#: ../gio/gapplication-tool.c:421
+#: gio/gapplication-tool.c:423
 #, c-format
 msgid "unable to find desktop file for application %s\n"
-msgstr "Ð\9dе може да се открие файл „.desktop“ за приложението „%s“\n"
+msgstr "не може да се открие файл „.desktop“ за приложението „%s“\n"
 
-#: ../gio/gapplication-tool.c:466
+#: gio/gapplication-tool.c:468
 #, c-format
 msgid ""
 "unrecognised command: %s\n"
 "\n"
 msgstr ""
-"Ð\9dепозната команда „%s“\n"
+"непозната команда „%s“\n"
 "\n"
 
-#: ../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/goutputstream.c:203 ../gio/goutputstream.c:834
-#: ../gio/gpollableinputstream.c:205 ../gio/gpollableoutputstream.c:206
+#: gio/gbufferedinputstream.c:420 gio/gbufferedinputstream.c:498
+#: gio/ginputstream.c:179 gio/ginputstream.c:379 gio/ginputstream.c:648
+#: gio/ginputstream.c:1050 gio/goutputstream.c:223 gio/goutputstream.c:1049
+#: gio/gpollableinputstream.c:205 gio/gpollableoutputstream.c:277
 #, c-format
 msgid "Too large count value passed to %s"
-msgstr "Подадена е прекалено голяма стойност на %s"
+msgstr "Подадена е прекалено голяма стойност на „%s“"
 
-#: ../gio/gbufferedinputstream.c:891 ../gio/gbufferedoutputstream.c:575
-#: ../gio/gdataoutputstream.c:562
+#: gio/gbufferedinputstream.c:891 gio/gbufferedoutputstream.c:575
+#: gio/gdataoutputstream.c:562
 msgid "Seek not supported on base stream"
 msgstr "Търсенето не се поддържа от основния поток"
 
-#: ../gio/gbufferedinputstream.c:937
+#: gio/gbufferedinputstream.c:938
 msgid "Cannot truncate GBufferedInputStream"
-msgstr "GBufferedInputStream не може да се съкрати"
+msgstr "„GBufferedInputStream“ не може да се съкрати"
 
-#: ../gio/gbufferedinputstream.c:982 ../gio/ginputstream.c:1205
-#: ../gio/giostream.c:300 ../gio/goutputstream.c:1658
+#: gio/gbufferedinputstream.c:983 gio/ginputstream.c:1239 gio/giostream.c:300
+#: gio/goutputstream.c:2198
 msgid "Stream is already closed"
 msgstr "Потокът вече е затворен"
 
-#: ../gio/gbufferedoutputstream.c:612 ../gio/gdataoutputstream.c:592
+#: gio/gbufferedoutputstream.c:612 gio/gdataoutputstream.c:592
 msgid "Truncate not supported on base stream"
 msgstr "Основният поток не може да се съкращава"
 
-#: ../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:319 gio/gdbusconnection.c:1857 gio/gdbusprivate.c:1418
+#: gio/gsimpleasyncresult.c:871 gio/gsimpleasyncresult.c:897
 #, c-format
 msgid "Operation was cancelled"
 msgstr "Действието е прекратено"
 
-#: ../gio/gcharsetconverter.c:260
+#: gio/gcharsetconverter.c:260
 msgid "Invalid object, not initialized"
 msgstr "Неправилен обект, не е инициализирано"
 
-#: ../gio/gcharsetconverter.c:281 ../gio/gcharsetconverter.c:309
+#: gio/gcharsetconverter.c:281 gio/gcharsetconverter.c:309
 msgid "Incomplete multibyte sequence in input"
 msgstr "Непълна байтова последователност на входа"
 
-#: ../gio/gcharsetconverter.c:315 ../gio/gcharsetconverter.c:324
+#: gio/gcharsetconverter.c:315 gio/gcharsetconverter.c:324
 msgid "Not enough space in destination"
 msgstr "Няма достатъчно място в целта"
 
-#: ../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/gcharsetconverter.c:342 gio/gdatainputstream.c:848
+#: gio/gdatainputstream.c:1266 glib/gconvert.c:449 glib/gconvert.c:879
+#: glib/giochannel.c:1573 glib/giochannel.c:1615 glib/giochannel.c:2470
+#: glib/gutf8.c:890 glib/gutf8.c:1344
 msgid "Invalid byte sequence in conversion input"
 msgstr "Грешна байтова последователност на входа за преобразуване"
 
-#: ../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:457 glib/gconvert.c:793
+#: glib/giochannel.c:1580 glib/giochannel.c:2482
 #, c-format
 msgid "Error during conversion: %s"
 msgstr "Грешка по време на преобразуване: %s"
 
-#: ../gio/gcharsetconverter.c:444 ../gio/gsocket.c:1078
+#: gio/gcharsetconverter.c:445 gio/gsocket.c:1147
 msgid "Cancellable initialization not supported"
 msgstr "Не се поддържа отменима инициализация"
 
-#: ../gio/gcharsetconverter.c:454 ../glib/gconvert.c:321
-#: ../glib/giochannel.c:1384
+#: gio/gcharsetconverter.c:456 glib/gconvert.c:322 glib/giochannel.c:1401
 #, 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 "Преобразуването от набора знаци „%s“ към „%s“ не се поддържа"
 
-#: ../gio/gcharsetconverter.c:458 ../glib/gconvert.c:325
+#: gio/gcharsetconverter.c:460 glib/gconvert.c:326
 #, c-format
-msgid "Could not open converter from '%s' to '%s'"
+msgid "Could not open converter from “%s” to “%s”"
 msgstr "Не може да се отвори конвертор от „%s“ към „%s“"
 
-#: ../gio/gcontenttype.c:335
+#: gio/gcontenttype.c:470
 #, c-format
 msgid "%s type"
-msgstr "Вид на %s"
+msgstr "Вид на „%s“"
 
-#: ../gio/gcontenttype-win32.c:160
+#: gio/gcontenttype-win32.c:196
 msgid "Unknown type"
 msgstr "Непознат вид"
 
-#: ../gio/gcontenttype-win32.c:162
+#: gio/gcontenttype-win32.c:198
 #, c-format
 msgid "%s filetype"
-msgstr "Вид на файла %s"
+msgstr "Вид на файла „%s“"
 
-#: ../gio/gcredentials.c:312 ../gio/gcredentials.c:571
+#: gio/gcredentials.c:335
+msgid "GCredentials contains invalid data"
+msgstr "„GCredentials“ съдържат неправилни данни"
+
+#: gio/gcredentials.c:395 gio/gcredentials.c:686
 msgid "GCredentials is not implemented on this OS"
-msgstr "Операционната система няма реализация на GCredentials"
+msgstr "Операционната система няма реализация на „GCredentials“"
 
-#: ../gio/gcredentials.c:467
+#: gio/gcredentials.c:550 gio/gcredentials.c:568
 msgid "There is no GCredentials support for your platform"
-msgstr "Платформата не поддържа GCredentials"
+msgstr "Платформата не поддържа „GCredentials“"
 
-#: ../gio/gcredentials.c:513
+#: gio/gcredentials.c:626
 msgid "GCredentials does not contain a process ID on this OS"
 msgstr ""
-"Реализацията на GCredentials върху тази операционна система не съдържа "
+"Реализацията на „GCredentials“ върху тази операционна система не съдържа "
 "идентификатор на процес"
 
-#: ../gio/gcredentials.c:565
+#: gio/gcredentials.c:680
 msgid "Credentials spoofing is not possible on this OS"
-msgstr "Операционната система няма реализация на GCredentials"
+msgstr ""
+"Замяната на данни за идентификация е невъзможна на тази операционна система"
 
-#: ../gio/gdatainputstream.c:304
+#: gio/gdatainputstream.c:304
 msgid "Unexpected early end-of-stream"
 msgstr "Неочаквано ранен край на поток"
 
-#: ../gio/gdbusaddress.c:153 ../gio/gdbusaddress.c:241
-#: ../gio/gdbusaddress.c:322
+#: gio/gdbusaddress.c:162 gio/gdbusaddress.c:236 gio/gdbusaddress.c:325
 #, c-format
-msgid "Unsupported key '%s' in address entry '%s'"
+msgid "Unsupported key “%s” in address entry “%s”"
 msgstr "Неподдържан ключ „%s“ в адрес „%s“"
 
-#: ../gio/gdbusaddress.c:180
+#: gio/gdbusaddress.c:175
+#, c-format
+msgid "Meaningless key/value pair combination in address entry “%s”"
+msgstr "Безсмислена комбинация от ключ и стойност в адреса „%s“"
+
+#: gio/gdbusaddress.c:184
 #, c-format
 msgid ""
-"Address '%s' is invalid (need exactly one of path, tmpdir or abstract keys)"
+"Address “%s” is invalid (need exactly one of path, dir, tmpdir, or abstract "
+"keys)"
 msgstr ""
 "Адресът „%s“ е грешен (трябва да съдържа само едно от следните: път, "
-"временна директория или абстрактни ключове)"
+"диÑ\80екÑ\82оÑ\80иÑ\8f, Ð²Ñ\80еменна Ð´Ð¸Ñ\80екÑ\82оÑ\80иÑ\8f Ð¸Ð»Ð¸ Ð°Ð±Ñ\81Ñ\82Ñ\80акÑ\82ни ÐºÐ»Ñ\8eÑ\87ове)"
 
-#: ../gio/gdbusaddress.c:193
+#: gio/gdbusaddress.c:251 gio/gdbusaddress.c:262 gio/gdbusaddress.c:277
+#: gio/gdbusaddress.c:340 gio/gdbusaddress.c:351
 #, c-format
-msgid "Meaningless key/value pair combination in address entry '%s'"
-msgstr "Ð\91езÑ\81миÑ\81лена ÐºÐ¾Ð¼Ð±Ð¸Ð½Ð°Ñ\86иÑ\8f Ð¾Ñ\82 ÐºÐ»Ñ\8eÑ\87 Ð¸ Ñ\81Ñ\82ойноÑ\81Ñ\82 Ð² Ð°Ð´Ñ\80еÑ\81а â\80\9e%sâ\80\9c"
+msgid "Error in address “%s” — the “%s” attribute is malformed"
+msgstr "Ð\93Ñ\80еÑ\88ка Ð² Ð°Ð´Ñ\80еÑ\81а â\80\9e%sâ\80\9c â\80\94 Ð°Ñ\82Ñ\80ибÑ\83Ñ\82Ñ\8aÑ\82 â\80\9e%sâ\80\9c Ðµ Ð½ÐµÐ¿Ñ\80авилен"
 
-#: ../gio/gdbusaddress.c:256 ../gio/gdbusaddress.c:337
+#: gio/gdbusaddress.c:421 gio/gdbusaddress.c:680
 #, c-format
-msgid "Error in address '%s' - the port attribute is malformed"
-msgstr "Ð\93Ñ\80еÑ\88ка Ð² Ð°Ð´Ñ\80еÑ\81а â\80\9e%sâ\80\9c â\80\94 Ð°Ñ\82Ñ\80ибÑ\83Ñ\82Ñ\8aÑ\82 Ð·Ð° Ð¿Ð¾Ñ\80Ñ\82 â\80\9eportâ\80\9c Ðµ Ð½ÐµÐ¿Ñ\80авилен"
+msgid "Unknown or unsupported transport “%s” for address “%s”"
+msgstr "Ð\9dепознаÑ\82 Ð¸Ð»Ð¸ Ð½ÐµÐ¿Ð¾Ð´Ð´Ñ\8aÑ\80жан Ñ\82Ñ\80анÑ\81поÑ\80Ñ\82 â\80\9e%sâ\80\9c Ð·Ð° Ð°Ð´Ñ\80еÑ\81 â\80\9e%sâ\80\9c"
 
-#: ../gio/gdbusaddress.c:267 ../gio/gdbusaddress.c:348
+#: gio/gdbusaddress.c:465
 #, c-format
-msgid "Error in address '%s' - the family attribute is malformed"
-msgstr "Ð\93Ñ\80еÑ\88ка Ð² Ð°Ð´Ñ\80еÑ\81а â\80\9e%sâ\80\9c â\80\94 Ð°Ñ\82Ñ\80ибÑ\83Ñ\82Ñ\8aÑ\82 Ð·Ð° Ñ\81емейÑ\81Ñ\82во â\80\9efamilyâ\80\9c Ðµ Ð½ÐµÐ¿Ñ\80авилен"
+msgid "Address element “%s” does not contain a colon (:)"
+msgstr "Ð\95леменÑ\82Ñ\8aÑ\82 Ð½Ð° Ð°Ð´Ñ\80еÑ\81а â\80\9e%sâ\80\9c Ð½Ðµ Ñ\81Ñ\8aдÑ\8aÑ\80жа Ð´Ð²Ð¾ÐµÑ\82оÑ\87ие (â\80\9e\80\9c)"
 
-#: ../gio/gdbusaddress.c:457
+#: gio/gdbusaddress.c:474
 #, c-format
-msgid "Address element '%s' does not contain a colon (:)"
-msgstr "Ð\95леменÑ\82Ñ\8aÑ\82 Ð½Ð° Ð°Ð´Ñ\80еÑ\81а â\80\9e%sâ\80\9c Ð½Ðµ Ñ\81Ñ\8aдÑ\8aÑ\80жа Ð´Ð²Ð¾ÐµÑ\82оÑ\87ие (â\80\9e\80\9c)"
+msgid "Transport name in address element “%s” must not be empty"
+msgstr "Ð\98меÑ\82о Ð½Ð° Ñ\82Ñ\80анÑ\81поÑ\80Ñ\82а Ð² ÐµÐ»ÐµÐ¼ÐµÐ½Ñ\82а Ð½Ð° Ð°Ð´Ñ\80еÑ\81а â\80\9e%sâ\80\9c Ð½Ðµ Ñ\82Ñ\80Ñ\8fбва Ð´Ð° Ðµ Ð¿Ñ\80азно"
 
-#: ../gio/gdbusaddress.c:478
+#: gio/gdbusaddress.c:495
 #, c-format
 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 ""
 "Двойката ключ/стойност %d, „%s“ в адресния елемент „%s“ не съдържа знак за "
 "равенство („=“)"
 
-#: ../gio/gdbusaddress.c:492
+#: gio/gdbusaddress.c:506
+#, c-format
+msgid ""
+"Key/Value pair %d, “%s”, in address element “%s” must not have an empty key"
+msgstr ""
+"Двойката ключ/стойност %d, „%s“ в адресния елемент „%s“ съдържа празен ключ"
+
+#: gio/gdbusaddress.c:520
 #, c-format
 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 ""
 "Грешка при декодиране на ключа или стойността в двойката %d, „%s“ в адресния "
 "елемент „%s“"
 
-#: ../gio/gdbusaddress.c:570
+#: gio/gdbusaddress.c:588
 #, c-format
 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 ""
 "Грешка в адреса „%s“ — транспортът „unix“ изисква точно един от ключовете "
 "„path“ или „abstract“"
 
-#: ../gio/gdbusaddress.c:606
+#: gio/gdbusaddress.c:623
 #, 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 "Грешка в адреса „%s“ — атрибутът за хост „host“ липсва или е грешен"
 
-#: ../gio/gdbusaddress.c:620
+#: gio/gdbusaddress.c:637
 #, 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 "Грешка в адреса „%s“ — атрибутът за порт „port“ липсва или е грешен"
 
-#: ../gio/gdbusaddress.c:634
+#: gio/gdbusaddress.c:651
 #, 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 ""
 "Грешка в адреса „%s“ — атрибутът за момент „noncefile“ липсва или е грешен"
 
-#: ../gio/gdbusaddress.c:655
+#: gio/gdbusaddress.c:672
 msgid "Error auto-launching: "
 msgstr "Грешка при автоматично стартиране: "
 
-#: ../gio/gdbusaddress.c:663
-#, c-format
-msgid "Unknown or unsupported transport '%s' for address '%s'"
-msgstr "Непознат или неподдържан транспорт „%s“ за адрес „%s“"
-
-#: ../gio/gdbusaddress.c:699
+#: gio/gdbusaddress.c:725
 #, c-format
-msgid "Error opening nonce file '%s': %s"
+msgid "Error opening nonce file “%s”: %s"
 msgstr "Грешка при отваряне на моментен файл „%s“: %s"
 
-#: ../gio/gdbusaddress.c:717
+#: gio/gdbusaddress.c:744
 #, c-format
-msgid "Error reading from nonce file '%s': %s"
+msgid "Error reading from nonce file “%s”: %s"
 msgstr "Грешка при четене на моментен файл „%s“: %s"
 
-#: ../gio/gdbusaddress.c:726
+#: gio/gdbusaddress.c:753
 #, 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 ""
 "Грешка при четене на моментен файл „%s“, очакват се 16 байта, а са получени "
 "%d"
 
-#: ../gio/gdbusaddress.c:744
+#: gio/gdbusaddress.c:771
 #, c-format
-msgid "Error writing contents of nonce file '%s' to stream:"
+msgid "Error writing contents of nonce file “%s” to stream:"
 msgstr "Грешка при запис на съдържанието на моментен файл „%s“ в поток:"
 
-#: ../gio/gdbusaddress.c:950
+#: gio/gdbusaddress.c:986
 msgid "The given address is empty"
 msgstr "Даденият адрес е празен"
 
-#: ../gio/gdbusaddress.c:1063
+#: gio/gdbusaddress.c:1099
 #, c-format
-msgid "Cannot spawn a message bus when setuid"
+msgid "Cannot spawn a message bus when AT_SECURE is set"
 msgstr ""
 "Създаването на шина за обмен на съобщения не е възможно при изрично зададен "
-"идентификатор на потребител (setuid)"
+"„AT_SECURE“"
 
-#: ../gio/gdbusaddress.c:1070
+#: gio/gdbusaddress.c:1106
 msgid "Cannot spawn a message bus without a machine-id: "
 msgstr ""
 "Създаването на шина за обмен на съобщения не е възможно без идентификатор на "
 "машина: "
 
-#: ../gio/gdbusaddress.c:1112
+#: gio/gdbusaddress.c:1113
 #, c-format
-msgid "Error spawning command line '%s': "
-msgstr "Грешка при изпълняване на външна команда „%s“: "
-
-#: ../gio/gdbusaddress.c:1329
-#, c-format
-msgid "(Type any character to close this window)\n"
-msgstr "(Въведете произволен знак, за да затворите този прозорец)\n"
+msgid "Cannot autolaunch D-Bus without X11 $DISPLAY"
+msgstr "D-Bus не може да се стартира автоматично без „$DISPLAY“ от X11"
 
-#: ../gio/gdbusaddress.c:1460
+#: gio/gdbusaddress.c:1155
 #, c-format
-msgid "Session dbus not running, and autolaunch failed"
-msgstr ""
-"Шината на сесията D-Bus не е стартирана. Автоматичното ѝ стартиране бе също "
-"неуспешно"
+msgid "Error spawning command line “%s”: "
+msgstr "Грешка при изпълняване на външна команда „%s“: "
 
-#: ../gio/gdbusaddress.c:1471
+#: gio/gdbusaddress.c:1224
 #, c-format
 msgid "Cannot determine session bus address (not implemented for this OS)"
 msgstr ""
 "Адресът на шината на сесията не може да се определи (липсва реализация за "
 "тази операционна система)"
 
-#: ../gio/gdbusaddress.c:1606 ../gio/gdbusconnection.c:7128
+#: gio/gdbusaddress.c:1373 gio/gdbusconnection.c:7318
 #, c-format
 msgid ""
 "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
-"- unknown value '%s'"
+"— unknown value “%s”"
 msgstr ""
 "Адресът на шината не може да се определи от променливата на обкръжението "
-"DBUS_STARTER_BUS_TYPE — непозната стойност „%s“"
+"„DBUS_STARTER_BUS_TYPE“ — непозната стойност „%s“"
 
-#: ../gio/gdbusaddress.c:1615 ../gio/gdbusconnection.c:7137
+#: gio/gdbusaddress.c:1382 gio/gdbusconnection.c:7327
 msgid ""
 "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
 "variable is not set"
 msgstr ""
 "Адресът на шината не може да се определи, защото променливата "
-"DBUS_STARTER_BUS_TYPE липсва в обкръжението"
+"„DBUS_STARTER_BUS_TYPE“ липсва в обкръжението"
 
-#: ../gio/gdbusaddress.c:1625
+#: gio/gdbusaddress.c:1392
 #, c-format
 msgid "Unknown bus type %d"
 msgstr "Непознат вид шина %d"
 
-#: ../gio/gdbusauth.c:293
+#: gio/gdbusauth.c:294
 msgid "Unexpected lack of content trying to read a line"
 msgstr "Неочаквана липса на съдържание при опит за четене на ред"
 
-#: ../gio/gdbusauth.c:337
+#: gio/gdbusauth.c:338
 msgid "Unexpected lack of content trying to (safely) read a line"
 msgstr "Неочаквана липса на съдържание при опит за (безопасно) четене на ред"
 
-#: ../gio/gdbusauth.c:508
+#: gio/gdbusauth.c:482
 #, c-format
 msgid ""
 "Exhausted all available authentication mechanisms (tried: %s) (available: %s)"
@@ -555,253 +571,279 @@ msgstr ""
 "Изчерпване на наличните механизми за идентификация (пробвани: %s) (налични: "
 "%s)"
 
-#: ../gio/gdbusauth.c:1170
+#: gio/gdbusauth.c:1171
+msgid "User IDs must be the same for peer and server"
+msgstr ""
+"Идентификаторите за потребител от сървъра и отсрещната страна трябва да са "
+"еднакви"
+
+#: gio/gdbusauth.c:1183
 msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
-msgstr "Прекъсване чрез GDBusAuthObserver::authorize-authenticated-peer"
+msgstr "Прекъсване чрез „GDBusAuthObserver::authorize-authenticated-peer“"
 
-#: ../gio/gdbusauthmechanismsha1.c:261
+#: gio/gdbusauthmechanismsha1.c:300
 #, c-format
-msgid "Error when getting information for directory '%s': %s"
+msgid "Error when getting information for directory “%s”: %s"
 msgstr "Грешка при получаване на информация за папка „%s“: %s"
 
-#: ../gio/gdbusauthmechanismsha1.c:273
+#: gio/gdbusauthmechanismsha1.c:315
 #, c-format
 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 ""
 "Правата за достъп до папката „%s“ са повредени. Очакван режим 0700, получен "
 "0%o"
 
-#: ../gio/gdbusauthmechanismsha1.c:294
+#: gio/gdbusauthmechanismsha1.c:348 gio/gdbusauthmechanismsha1.c:359
 #, c-format
-msgid "Error creating directory '%s': %s"
+msgid "Error creating directory “%s”: %s"
 msgstr "Грешка при създаване на папка „%s“: %s"
 
-#: ../gio/gdbusauthmechanismsha1.c:377
+#: gio/gdbusauthmechanismsha1.c:361 gio/gfile.c:1080 gio/gfile.c:1318
+#: gio/gfile.c:1456 gio/gfile.c:1694 gio/gfile.c:1749 gio/gfile.c:1807
+#: gio/gfile.c:1891 gio/gfile.c:1948 gio/gfile.c:2012 gio/gfile.c:2067
+#: gio/gfile.c:3772 gio/gfile.c:3912 gio/gfile.c:4205 gio/gfile.c:4675
+#: gio/gfile.c:5086 gio/gfile.c:5171 gio/gfile.c:5261 gio/gfile.c:5358
+#: gio/gfile.c:5445 gio/gfile.c:5546 gio/gfile.c:8375 gio/gfile.c:8465
+#: gio/gfile.c:8549 gio/win32/gwinhttpfile.c:453
+msgid "Operation not supported"
+msgstr "Действието не се поддържа"
+
+#: gio/gdbusauthmechanismsha1.c:404
 #, c-format
-msgid "Error opening keyring '%s' for reading: "
+msgid "Error opening keyring “%s” for reading: "
 msgstr "Грешка при отваряне на ключодържателя „%s“ за четене: "
 
-#: ../gio/gdbusauthmechanismsha1.c:401 ../gio/gdbusauthmechanismsha1.c:714
+#: gio/gdbusauthmechanismsha1.c:427 gio/gdbusauthmechanismsha1.c:769
 #, 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 "Ред %d на ключодържателя „%s“, съдържащ „%s“, е повреден"
 
-#: ../gio/gdbusauthmechanismsha1.c:415 ../gio/gdbusauthmechanismsha1.c:728
+#: gio/gdbusauthmechanismsha1.c:441 gio/gdbusauthmechanismsha1.c:783
 #, c-format
 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 ""
 "Първата лексема на ред %d на ключодържателя „%s“, съдържащ „%s“, е повреден"
 
-#: ../gio/gdbusauthmechanismsha1.c:430 ../gio/gdbusauthmechanismsha1.c:742
+#: gio/gdbusauthmechanismsha1.c:455 gio/gdbusauthmechanismsha1.c:797
 #, c-format
 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 ""
 "Втората лексема на ред %d на ключодържателя „%s“, съдържащ „%s“, е повредена"
 
-#: ../gio/gdbusauthmechanismsha1.c:454
+#: gio/gdbusauthmechanismsha1.c:479
 #, 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 "Не е намерена бисквитка с идентификатор %d в ключодържателя в „%s“"
 
-#: ../gio/gdbusauthmechanismsha1.c:532
+#: gio/gdbusauthmechanismsha1.c:536
 #, c-format
-msgid "Error deleting stale lock file '%s': %s"
-msgstr "Грешка при изтриване на остарелия файл за синхронизация „%s“: %s"
+msgid "Error creating lock file “%s”: %s"
+msgstr "Грешка при създаване на файла за синхронизация „%s“: %s"
 
-#: ../gio/gdbusauthmechanismsha1.c:564
+#: gio/gdbusauthmechanismsha1.c:609
 #, c-format
-msgid "Error creating lock file '%s': %s"
-msgstr "Грешка при създаване на файла за синхронизация „%s“: %s"
+msgid "Error deleting stale lock file “%s”: %s"
+msgstr "Грешка при изтриване на остарелия файл за синхронизация „%s“: %s"
 
-#: ../gio/gdbusauthmechanismsha1.c:594
+#: gio/gdbusauthmechanismsha1.c:648
 #, c-format
-msgid "Error closing (unlinked) lock file '%s': %s"
-msgstr "Грешка при затваряне на изтрития файл за синхронизация „%s“: %s"
+msgid "Error closing (unlinked) lock file “%s”: %s"
+msgstr ""
+"Грешка при затваряне на възможно изтрития файл за синхронизация „%s“: %s"
 
-#: ../gio/gdbusauthmechanismsha1.c:604
+#: gio/gdbusauthmechanismsha1.c:659
 #, c-format
-msgid "Error unlinking lock file '%s': %s"
+msgid "Error unlinking lock file “%s”: %s"
 msgstr "Грешка при изтриване на файла за синхронизация „%s“: %s"
 
-#: ../gio/gdbusauthmechanismsha1.c:681
+#: gio/gdbusauthmechanismsha1.c:736
 #, c-format
-msgid "Error opening keyring '%s' for writing: "
+msgid "Error opening keyring “%s” for writing: "
 msgstr "Грешка при отваряне на ключодържателя „%s“ за запис: "
 
-#: ../gio/gdbusauthmechanismsha1.c:878
+#: gio/gdbusauthmechanismsha1.c:930
 #, c-format
-msgid "(Additionally, releasing the lock for '%s' also failed: %s) "
+msgid "(Additionally, releasing the lock for “%s” also failed: %s) "
 msgstr "(Допълнително, отключването на „%s“ бе също неуспешно: %s) "
 
-#: ../gio/gdbusconnection.c:612 ../gio/gdbusconnection.c:2373
+#: gio/gdbusconnection.c:588 gio/gdbusconnection.c:2402
 msgid "The connection is closed"
 msgstr "Връзката прекъсна"
 
-#: ../gio/gdbusconnection.c:1877
+#: gio/gdbusconnection.c:1887
 msgid "Timeout was reached"
 msgstr "Времето за изчакване е просрочено"
 
-#: ../gio/gdbusconnection.c:2495
+#: gio/gdbusconnection.c:2525
 msgid ""
 "Unsupported flags encountered when constructing a client-side connection"
 msgstr "Неподдържани флагове при създаване на изходяща връзка"
 
-#: ../gio/gdbusconnection.c:4105 ../gio/gdbusconnection.c:4452
+#: gio/gdbusconnection.c:4253 gio/gdbusconnection.c:4607
 #, c-format
 msgid ""
-"No such interface 'org.freedesktop.DBus.Properties' on object at path %s"
-msgstr "Обектът в %s няма интерфейс „org.freedesktop.DBus.Properties“"
+"No such interface “org.freedesktop.DBus.Properties” on object at path %s"
+msgstr "Обектът в „%s“ няма интерфейс „org.freedesktop.DBus.Properties“"
 
-#: ../gio/gdbusconnection.c:4247
+#: gio/gdbusconnection.c:4398
 #, c-format
-msgid "No such property '%s'"
+msgid "No such property “%s”"
 msgstr "Липсва свойство „%s“"
 
-#: ../gio/gdbusconnection.c:4259
+#: gio/gdbusconnection.c:4410
 #, c-format
-msgid "Property '%s' is not readable"
+msgid "Property “%s” is not readable"
 msgstr "Свойството „%s“ не поддържа четене"
 
-#: ../gio/gdbusconnection.c:4270
+#: gio/gdbusconnection.c:4421
 #, c-format
-msgid "Property '%s' is not writable"
+msgid "Property “%s” is not writable"
 msgstr "Свойството „%s“ не поддържа запис"
 
-#: ../gio/gdbusconnection.c:4290
+#: gio/gdbusconnection.c:4441
 #, c-format
-msgid "Error setting property '%s': Expected type '%s' but got '%s'"
+msgid "Error setting property “%s”: Expected type “%s” but got “%s”"
 msgstr ""
-"Ð\93Ñ\80еÑ\88ка Ð¿Ñ\80и Ð¿Ñ\80омÑ\8fна на свойството „%s“: Очакван е вид „%s“, а е получен „%s“"
+"Ð\93Ñ\80еÑ\88ка Ð¿Ñ\80и Ð·Ð°Ð´Ð°Ð²Ð°Ð½Ðµ на свойството „%s“: Очакван е вид „%s“, а е получен „%s“"
 
-#: ../gio/gdbusconnection.c:4395 ../gio/gdbusconnection.c:6568
+#: gio/gdbusconnection.c:4546 gio/gdbusconnection.c:4761
+#: gio/gdbusconnection.c:6744
 #, c-format
-msgid "No such interface '%s'"
+msgid "No such interface “%s”"
 msgstr "Липсва интерфейс „%s“"
 
-#: ../gio/gdbusconnection.c:4603
-msgid "No such interface"
-msgstr "Липсва такъв интерфейс"
-
-#: ../gio/gdbusconnection.c:4821 ../gio/gdbusconnection.c:7077
+#: gio/gdbusconnection.c:4983 gio/gdbusconnection.c:7258
 #, c-format
-msgid "No such interface '%s' on object at path %s"
-msgstr "Липсва интерфейс „%s“ към обекта в %s"
+msgid "No such interface “%s” on object at path %s"
+msgstr "Липсва интерфейс „%s“ към обекта в „%s“"
 
-#: ../gio/gdbusconnection.c:4919
+#: gio/gdbusconnection.c:5084
 #, c-format
-msgid "No such method '%s'"
+msgid "No such method “%s”"
 msgstr "Липсва метод „%s“"
 
-#: ../gio/gdbusconnection.c:4950
+#: gio/gdbusconnection.c:5115
 #, c-format
-msgid "Type of message, '%s', does not match expected type '%s'"
+msgid "Type of message, “%s”, does not match expected type “%s”"
 msgstr "Видът на съобщението („%s“) не съвпада с очаквания („%s“)"
 
-#: ../gio/gdbusconnection.c:5148
+#: gio/gdbusconnection.c:5318
 #, c-format
 msgid "An object is already exported for the interface %s at %s"
-msgstr "Вече е наличен обект за интерфейса %s в %s"
+msgstr "Вече е наличен обект за интерфейса „%s“ в „%s“"
 
-#: ../gio/gdbusconnection.c:5374
+#: gio/gdbusconnection.c:5545
 #, c-format
 msgid "Unable to retrieve property %s.%s"
 msgstr "Свойството „%s.%s“ не може да бъде получено"
 
-#: ../gio/gdbusconnection.c:5430
+#: gio/gdbusconnection.c:5601
 #, c-format
 msgid "Unable to set property %s.%s"
 msgstr "Свойството „%s.%s“ не може да бъде зададено"
 
-#: ../gio/gdbusconnection.c:5606
+#: gio/gdbusconnection.c:5780
 #, c-format
-msgid "Method '%s' returned type '%s', but expected '%s'"
-msgstr "Методът „%s“ върна тип „%s“, а се очаква „%s“"
+msgid "Method “%s” returned type “%s”, but expected “%s”"
+msgstr "Методът „%s“ върна вид „%s“, а се очаква „%s“"
 
-#: ../gio/gdbusconnection.c:6679
+#: gio/gdbusconnection.c:6856
 #, c-format
-msgid "Method '%s' on interface '%s' with signature '%s' does not exist"
+msgid "Method “%s” on interface “%s” with signature “%s” does not exist"
 msgstr "Не съществува метод „%s“ на интерфейса „%s“ със сигнатура „%s“"
 
-#: ../gio/gdbusconnection.c:6800
+#: gio/gdbusconnection.c:6977
 #, c-format
 msgid "A subtree is already exported for %s"
-msgstr "Вече има поддърво за %s"
+msgstr "Вече е изнесено поддърво за „%s“"
+
+#: gio/gdbusconnection.c:7266
+#, c-format
+msgid "Object does not exist at path “%s”"
+msgstr "Обектът липсва в пътя „%s“"
 
-#: ../gio/gdbusmessage.c:1244
+#: gio/gdbusmessage.c:1301
 msgid "type is INVALID"
-msgstr "видът е INVALID"
+msgstr "видът е „INVALID“"
 
-#: ../gio/gdbusmessage.c:1255
+#: gio/gdbusmessage.c:1312
 msgid "METHOD_CALL message: PATH or MEMBER header field is missing"
 msgstr ""
-"Съобщение METHOD_CALL: в заглавната част липсват полета PATH или MEMBER"
+"Съобщение „METHOD_CALL“: в заглавната част липсват полета „PATH“ или „MEMBER“"
 
-#: ../gio/gdbusmessage.c:1266
+#: gio/gdbusmessage.c:1323
 msgid "METHOD_RETURN message: REPLY_SERIAL header field is missing"
-msgstr "Съобщение METHOD_RETURN: в заглавната част липсва поле REPLY_SERIAL"
+msgstr ""
+"Съобщение „METHOD_RETURN“: в заглавната част липсва поле „REPLY_SERIAL“"
 
-#: ../gio/gdbusmessage.c:1278
+#: gio/gdbusmessage.c:1335
 msgid "ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing"
 msgstr ""
-"Съобщение ERROR: в заглавната част липсват полета REPLY_SERIAL или ERROR_NAME"
+"Съобщение „ERROR“: в заглавната част липсват полета „REPLY_SERIAL“ или "
+"„ERROR_NAME“"
 
-#: ../gio/gdbusmessage.c:1291
+#: gio/gdbusmessage.c:1348
 msgid "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing"
 msgstr ""
-"Съобщение SIGNAL: в заглавната част липсват полета PATH, INTERFACE или MEMBER"
+"Съобщение „SIGNAL“: в заглавната част липсват полета „PATH“, „INTERFACE“ или "
+"„MEMBER“"
 
-#: ../gio/gdbusmessage.c:1299
+#: gio/gdbusmessage.c:1356
 msgid ""
 "SIGNAL message: The PATH header field is using the reserved value /org/"
 "freedesktop/DBus/Local"
 msgstr ""
-"Съобщение SIGNAL: Полето PATH в заглавната част използва запазената стойност "
-"„/org/freedesktop/DBus/Local“"
+"Съобщение „SIGNAL“: Полето „PATH“ в заглавната част използва запазената "
+"стойност „/org/freedesktop/DBus/Local“"
 
-#: ../gio/gdbusmessage.c:1307
+#: gio/gdbusmessage.c:1364
 msgid ""
 "SIGNAL message: The INTERFACE header field is using the reserved value org."
 "freedesktop.DBus.Local"
 msgstr ""
-"Съобщение SIGNAL: Полето INTERFACE в заглавната част използва запазената "
+"Съобщение „SIGNAL“: Полето „INTERFACE“ в заглавната част използва запазената "
 "стойност „org.freedesktop.DBus.Local“"
 
-#: ../gio/gdbusmessage.c:1355 ../gio/gdbusmessage.c:1415
+#: gio/gdbusmessage.c:1412 gio/gdbusmessage.c:1472
 #, c-format
 msgid "Wanted to read %lu byte but only got %lu"
 msgid_plural "Wanted to read %lu bytes but only got %lu"
 msgstr[0] "При опит за четене на %lu байт бяха получени %lu"
 msgstr[1] "При опит за четене на %lu байта бяха получени %lu"
 
-#: ../gio/gdbusmessage.c:1369
+#: gio/gdbusmessage.c:1426
 #, 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 "След низа „%s“ се очаква байт NUL, а не %d"
 
-#: ../gio/gdbusmessage.c:1388
+#: gio/gdbusmessage.c:1445
 #, 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'"
+"(length of string is %d). The valid UTF-8 string up until that point was “%s”"
 msgstr ""
 "Очаква се низ, кодиран в UTF-8, а са получени неправилни байтове при "
 "отместване %d (дължината на низа е %d). Декодираният от UTF-8 низ до тази "
 "позиция е „%s“"
 
-#: ../gio/gdbusmessage.c:1587
+#: gio/gdbusmessage.c:1509 gio/gdbusmessage.c:1785 gio/gdbusmessage.c:1996
+msgid "Value nested too deeply"
+msgstr "Прекалено дълбоко вложена стойност"
+
+#: gio/gdbusmessage.c:1677
 #, c-format
-msgid "Parsed value '%s' is not a valid D-Bus object path"
-msgstr "Ð\97апазената стойност „%s“ не е допустим път до обект в D-Bus"
+msgid "Parsed value “%s” is not a valid D-Bus object path"
+msgstr "Ð\90нализиÑ\80аната стойност „%s“ не е допустим път до обект в D-Bus"
 
-#: ../gio/gdbusmessage.c:1609
+#: gio/gdbusmessage.c:1701
 #, c-format
-msgid "Parsed value '%s' is not a valid D-Bus signature"
-msgstr "Ð\9fÑ\80оÑ\87еÑ\82ената стойност „%s“ не е допустима сигнатура в D-Bus"
+msgid "Parsed value “%s” is not a valid D-Bus signature"
+msgstr "Ð\90нализиÑ\80аната стойност „%s“ не е допустима сигнатура в D-Bus"
 
-#: ../gio/gdbusmessage.c:1656
+#: gio/gdbusmessage.c:1752
 #, c-format
 msgid ""
 "Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB)."
@@ -812,54 +854,63 @@ msgstr[0] ""
 msgstr[1] ""
 "Срещнат е масив с дължина %u байта. Максималната дължина е 2²⁶ (64 MiB)"
 
-#: ../gio/gdbusmessage.c:1676
+#: gio/gdbusmessage.c:1772
 #, c-format
 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 ""
-"Получен бе масив тип „a%c“. Очакваше се да има дължина делима на %u байта, "
-"но тя беше %u байта"
+"Получен бе масив от вид „a%c“. Очакваше се да има дължина делима на %u "
+"байта, но тя бе %u байта"
+
+#: gio/gdbusmessage.c:1926 gio/gdbusmessage.c:2645
+msgid "Empty structures (tuples) are not allowed in D-Bus"
+msgstr "Празни структури (n-орки) не са позволени в D-Bus"
 
-#: ../gio/gdbusmessage.c:1843
+#: gio/gdbusmessage.c:1980
 #, c-format
-msgid "Parsed value '%s' for variant is not a valid D-Bus signature"
-msgstr "Ð\9fÑ\80оÑ\87еÑ\82ената вариантна стойност „%s“ не е допустима сигнатура в D-Bus"
+msgid "Parsed value “%s” for variant is not a valid D-Bus signature"
+msgstr "Ð\90нализиÑ\80аната вариантна стойност „%s“ не е допустима сигнатура в D-Bus"
 
-#: ../gio/gdbusmessage.c:1867
+#: gio/gdbusmessage.c:2021
 #, c-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 ""
-"Грешка при разчитане на GVariant от вид „%s“ от машинния формат на D-Bus"
+"Грешка при десериализиране на „GVariant“ от вид „%s“ от машинния формат на D-"
+"Bus"
 
-#: ../gio/gdbusmessage.c:2051
+#: gio/gdbusmessage.c:2206
 #, c-format
 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 ""
 "Недопустима стойност на индикатора за подреждане на байтовете в думи. Очаква "
 "се или 0x6c („l“), или 0x42 („B“), а е открита стойност 0x%02x"
 
-#: ../gio/gdbusmessage.c:2064
+#: gio/gdbusmessage.c:2225
 #, c-format
 msgid "Invalid major protocol version. Expected 1 but found %d"
 msgstr "Недопустима главна версия на протокола. Очаква се 1, а е открита %d"
 
-#: ../gio/gdbusmessage.c:2120
+#: gio/gdbusmessage.c:2283 gio/gdbusmessage.c:2881
+msgid "Signature header found but is not of type signature"
+msgstr "Заглавната част със сигнатура е намерена, на тя не е за вид"
+
+#: gio/gdbusmessage.c:2295
 #, 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 ""
 "Открита е заглавна част със сигнатура „%s“, обаче тялото на съобщението е "
 "празно"
 
-#: ../gio/gdbusmessage.c:2134
+#: gio/gdbusmessage.c:2310
 #, 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 "Разчетената стойност „%s“ не е допустима сигнатура в D-Bus (за тяло)"
 
-#: ../gio/gdbusmessage.c:2164
+#: gio/gdbusmessage.c:2342
 #, 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"
@@ -867,112 +918,127 @@ msgstr[0] "В заглавната част на съобщението няма
 msgstr[1] ""
 "В заглавната част на съобщението няма сигнатура, а тялото е %u байта"
 
-#: ../gio/gdbusmessage.c:2174
+#: gio/gdbusmessage.c:2352
 msgid "Cannot deserialize message: "
 msgstr "Неуспешно декодиране на съобщение: "
 
-#: ../gio/gdbusmessage.c:2515
+#: gio/gdbusmessage.c:2698
 #, c-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 ""
-"Грешка при сериализиране на GVariant от вид „%s“ в машинния формат на D-Bus"
+"Грешка при сериализиране на „GVariant“ от вид „%s“ в машинния формат на D-Bus"
 
-#: ../gio/gdbusmessage.c:2652
+#: gio/gdbusmessage.c:2835
 #, c-format
 msgid ""
-"Message has %d file descriptors but the header field indicates %d file "
-"descriptors"
+"Number of file descriptors in message (%d) differs from header field (%d)"
 msgstr ""
-"Съобщението има %d файлови дескриптора, а в заглавната част са обявени %d"
+"Броят файлови дескриптори в съобщението (%d) е различно от броя в заглавното "
+"поле (%d)"
 
-#: ../gio/gdbusmessage.c:2660
+#: gio/gdbusmessage.c:2843
 msgid "Cannot serialize message: "
-msgstr "Неуспешна сериализация на съобщението:"
+msgstr "Неуспешна сериализация на съобщението: "
 
-#: ../gio/gdbusmessage.c:2704
+#: gio/gdbusmessage.c:2896
 #, 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 ""
-"Тялото на съобщението има сигнатура „%s“, но няма заглавна част със сигнатури"
+"Тялото на съобщението има сигнатура „%s“, но няма заглавна част за сигнатура"
 
-#: ../gio/gdbusmessage.c:2714
+#: gio/gdbusmessage.c:2906
 #, c-format
 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 ""
-"Тялото на съобщението има сигнатура за тип „%s“, но полето в заглавната част "
+"Тялото на съобщението има сигнатура за вид „%s“, но полето в заглавната част "
 "за сигнатури е „%s“"
 
-#: ../gio/gdbusmessage.c:2730
+#: gio/gdbusmessage.c:2922
 #, 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 ""
 "Тялото на съобщението е празно, а сигнатурата в полето на заглавната част е "
 "„(%s)“"
 
-#: ../gio/gdbusmessage.c:3283
+#: gio/gdbusmessage.c:3477
 #, c-format
-msgid "Error return with body of type '%s'"
+msgid "Error return with body of type “%s”"
 msgstr "Връщане на грешка с тяло от вид „%s“"
 
-#: ../gio/gdbusmessage.c:3291
+#: gio/gdbusmessage.c:3485
 msgid "Error return with empty body"
 msgstr "Връщане на грешка с празно тяло на съобщението"
 
-#: ../gio/gdbusprivate.c:2036
+#: gio/gdbusprivate.c:2185
+#, c-format
+msgid "(Type any character to close this window)\n"
+msgstr "(Въведете произволен знак, за да затворите този прозорец)\n"
+
+#: gio/gdbusprivate.c:2371
+#, c-format
+msgid "Session dbus not running, and autolaunch failed"
+msgstr ""
+"Шината на сесията D-Bus не е стартирана. Автоматичното ѝ стартиране бе също "
+"неуспешно"
+
+#: gio/gdbusprivate.c:2394
 #, c-format
 msgid "Unable to get Hardware profile: %s"
 msgstr "Неуспешно определяне на хардуерния профил: %s"
 
-#: ../gio/gdbusprivate.c:2081
-msgid "Unable to load /var/lib/dbus/machine-id or /etc/machine-id: "
-msgstr "Неуспешно зареждане на /var/lib/dbus/machine-id или /etc/machine-id: "
+#. Translators: Both placeholders are file paths
+#: gio/gdbusprivate.c:2445
+#, c-format
+msgid "Unable to load %s or %s: "
+msgstr "Неуспешно зареждане на „%s“ или „%s“: "
 
-#: ../gio/gdbusproxy.c:1610
+#: gio/gdbusproxy.c:1573
 #, c-format
 msgid "Error calling StartServiceByName for %s: "
-msgstr "Грешка при извикване на StartServiceByName за %s:"
+msgstr "Грешка при извикване на „StartServiceByName“ за %s:"
 
-#: ../gio/gdbusproxy.c:1633
+#: gio/gdbusproxy.c:1596
 #, c-format
 msgid "Unexpected reply %d from StartServiceByName(\"%s\") method"
-msgstr "Неочакван отговор „%d“ от метода StartServicebyName(„%s“)"
+msgstr "Неочакван отговор „%d“ от метода „StartServicebyName(\"%s\")“"
 
-#: ../gio/gdbusproxy.c:2709 ../gio/gdbusproxy.c:2843
+#: gio/gdbusproxy.c:2707 gio/gdbusproxy.c:2842
+#, c-format
 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"
+"Cannot invoke method; proxy is for the well-known name %s without an owner, "
+"and proxy was constructed with the G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START flag"
 msgstr ""
-"Ð\9dе Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ\81е Ð½Ð°Ð¿Ñ\80ави Ð¾Ð±Ñ\80Ñ\8aÑ\89ение ÐºÑ\8aм Ð¼ÐµÑ\82ода. Ð\9fоÑ\81Ñ\80едникÑ\8aÑ\82 Ðµ Ð·Ð° Ð¿Ñ\80едваÑ\80иÑ\82елно "
-"деÑ\84иниÑ\80ано Ð¸Ð¼Ðµ Ð±ÐµÐ· Ñ\81обÑ\81Ñ\82веник, а е създаден с флага "
-"G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START"
+"Ð\9dе Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ\81е Ð½Ð°Ð¿Ñ\80ави Ð¾Ð±Ñ\80Ñ\8aÑ\89ение ÐºÑ\8aм Ð¼ÐµÑ\82ода. Ð\9fоÑ\81Ñ\80едникÑ\8aÑ\82 Ðµ Ð·Ð° Ð¸Ð·Ð²ÐµÑ\81Ñ\82но Ð¸Ð¼Ðµ "
+"без Ñ\81обÑ\81Ñ\82веник â\80\9e%sâ\80\9c, а е създаден с флага "
+"„G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START“"
 
-#: ../gio/gdbusserver.c:708
-msgid "Abstract name space not supported"
+#: gio/gdbusserver.c:767
+msgid "Abstract namespace not supported"
 msgstr "Не се поддържа абстрактно пространство за имена"
 
-#: ../gio/gdbusserver.c:795
+#: gio/gdbusserver.c:860
 msgid "Cannot specify nonce file when creating a server"
 msgstr "Не може да се задава моментен файл при създаване на сървър"
 
-#: ../gio/gdbusserver.c:873
+#: gio/gdbusserver.c:942
 #, c-format
-msgid "Error writing nonce file at '%s': %s"
+msgid "Error writing nonce file at “%s”: %s"
 msgstr "Грешка при запис в моментен файл „%s“: %s"
 
-#: ../gio/gdbusserver.c:1044
+#: gio/gdbusserver.c:1117
 #, c-format
-msgid "The string '%s' is not a valid D-Bus GUID"
-msgstr "Низът „%s“ не е допустим глобален идентификатор в D-Bus"
+msgid "The string “%s” is not a valid D-Bus GUID"
+msgstr "Низът „%s“ не е допустим глобален идентификатор (GIUD) в D-Bus"
 
-#: ../gio/gdbusserver.c:1084
+#: gio/gdbusserver.c:1157
 #, c-format
-msgid "Cannot listen on unsupported transport '%s'"
+msgid "Cannot listen on unsupported transport “%s”"
 msgstr "Невъзможно е да се чака за връзки по неподдържан транспорт „%s“"
 
-#: ../gio/gdbus-tool.c:95
+#: gio/gdbus-tool.c:111
 #, c-format
 msgid ""
 "Commands:\n"
@@ -981,548 +1047,597 @@ 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 ""
 "Команди:\n"
-"  help         Ð\9fоказва този текст\n"
+"  help         Ð\98звеждане Ð½а този текст\n"
 "  introspect   Анализ на отдалечен обект\n"
 "  monitor      Наблюдение на отдалечен обект\n"
 "  call         Обръщане към метод на отдалечен обект\n"
 "  emit         Издаване на сигнал\n"
+"  wait         Изчакване да се появи името\n"
 "\n"
 "Използвайте „%s КОМАНДА --help“ за допълнителна информация за всяка "
 "команда.\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:202 gio/gdbus-tool.c:274 gio/gdbus-tool.c:346
+#: gio/gdbus-tool.c:370 gio/gdbus-tool.c:860 gio/gdbus-tool.c:1245
+#: gio/gdbus-tool.c:1733
 #, c-format
 msgid "Error: %s\n"
 msgstr "Грешка: %s\n"
 
-#: ../gio/gdbus-tool.c:175 ../gio/gdbus-tool.c:239 ../gio/gdbus-tool.c:1493
+#: gio/gdbus-tool.c:213 gio/gdbus-tool.c:287 gio/gdbus-tool.c:1749
 #, c-format
 msgid "Error parsing introspection XML: %s\n"
 msgstr "Грешка при анализа на XML с аналитична информация: %s\n"
 
-#: ../gio/gdbus-tool.c:208
+#: gio/gdbus-tool.c:251
 #, c-format
 msgid "Error: %s is not a valid name\n"
 msgstr "Грешка: „%s“ не е вярно име\n"
 
-#: ../gio/gdbus-tool.c:356
+#: gio/gdbus-tool.c:256 gio/gdbus-tool.c:746 gio/gdbus-tool.c:1064
+#: gio/gdbus-tool.c:1899 gio/gdbus-tool.c:2139
+#, c-format
+msgid "Error: %s is not a valid object path\n"
+msgstr "Грешка: „%s“ не е допустим път до обект\n"
+
+#: gio/gdbus-tool.c:404
 msgid "Connect to the system bus"
 msgstr "Свързване към системната шина"
 
-#: ../gio/gdbus-tool.c:357
+#: gio/gdbus-tool.c:405
 msgid "Connect to the session bus"
-msgstr "СвÑ\8aÑ\80зване ÐºÑ\8aм Ñ\88инаÑ\82а Ð½Ð° Ñ\81еÑ\81иÑ\8fÑ\82а"
+msgstr "СвÑ\8aÑ\80зване ÐºÑ\8aм Ñ\81еÑ\81ийнаÑ\82а Ñ\88ина"
 
-#: ../gio/gdbus-tool.c:358
+#: gio/gdbus-tool.c:406
 msgid "Connect to given D-Bus address"
 msgstr "Свързване към даден адрес на D-Bus"
 
-#: ../gio/gdbus-tool.c:368
+#: gio/gdbus-tool.c:416
 msgid "Connection Endpoint Options:"
 msgstr "Варианти за връзка:"
 
-#: ../gio/gdbus-tool.c:369
+#: gio/gdbus-tool.c:417
 msgid "Options specifying the connection endpoint"
 msgstr "Опции, указващи точката за връзка"
 
-#: ../gio/gdbus-tool.c:391
+#: gio/gdbus-tool.c:440
 #, c-format
 msgid "No connection endpoint specified"
 msgstr "Не е указана точка за връзка"
 
-#: ../gio/gdbus-tool.c:401
+#: gio/gdbus-tool.c:450
 #, c-format
 msgid "Multiple connection endpoints specified"
 msgstr "Указани са множество точки за връзка"
 
-#: ../gio/gdbus-tool.c:471
+#: gio/gdbus-tool.c:523
 #, c-format
 msgid ""
-"Warning: According to introspection data, interface '%s' does not exist\n"
+"Warning: According to introspection data, interface “%s” does not exist\n"
 msgstr "Предупреждение: Според анализа интерфейсът „%s“ не съществува\n"
 
-#: ../gio/gdbus-tool.c:480
+#: gio/gdbus-tool.c:532
 #, c-format
 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 ""
 "Предупреждение: Според анализа методът „%s“ не се предлага от интерфейса "
 "„%s“\n"
 
-#: ../gio/gdbus-tool.c:542
+#: gio/gdbus-tool.c:594
 msgid "Optional destination for signal (unique name)"
 msgstr "Незадължителен получател на сигнала (уникално име)"
 
-#: ../gio/gdbus-tool.c:543
+#: gio/gdbus-tool.c:595
 msgid "Object path to emit signal on"
 msgstr "Път до обекта, към който да се излъчи сигнал"
 
-#: ../gio/gdbus-tool.c:544
+#: gio/gdbus-tool.c:596
 msgid "Signal and interface name"
 msgstr "Име на сигнал и интерфейс"
 
-#: ../gio/gdbus-tool.c:576
+#: gio/gdbus-tool.c:629
 msgid "Emit a signal."
 msgstr "Издаване на сигнал."
 
-#: ../gio/gdbus-tool.c:610 ../gio/gdbus-tool.c:842 ../gio/gdbus-tool.c:1583
-#: ../gio/gdbus-tool.c:1818
+#: gio/gdbus-tool.c:684 gio/gdbus-tool.c:1001 gio/gdbus-tool.c:1836
+#: gio/gdbus-tool.c:2068 gio/gdbus-tool.c:2288
 #, c-format
 msgid "Error connecting: %s\n"
 msgstr "Грешка при свързване: %s\n"
 
-#: ../gio/gdbus-tool.c:622
+#: gio/gdbus-tool.c:704
 #, c-format
-msgid "Error: object path not specified.\n"
-msgstr "Грешка: не е указан път до обект\n"
+msgid "Error: %s is not a valid unique bus name.\n"
+msgstr "Грешка: „%s“ не е вярно, уникално име на шина\n"
 
-#: ../gio/gdbus-tool.c:627 ../gio/gdbus-tool.c:909 ../gio/gdbus-tool.c:1648
-#: ../gio/gdbus-tool.c:1884
-#, c-format
-msgid "Error: %s is not a valid object path\n"
-msgstr "Грешка: „%s“ не е допустим път до обект\n"
+#: gio/gdbus-tool.c:723 gio/gdbus-tool.c:1044 gio/gdbus-tool.c:1879
+msgid "Error: Object path is not specified\n"
+msgstr "Грешка: Не е указан път до обект\n"
 
-#: ../gio/gdbus-tool.c:633
-#, c-format
-msgid "Error: signal not specified.\n"
-msgstr "Грешка: не е указан сигнал\n"
+#: gio/gdbus-tool.c:766
+msgid "Error: Signal name is not specified\n"
+msgstr "Грешка: Не е указано име на сигнал\n"
 
-#: ../gio/gdbus-tool.c:640
+#: gio/gdbus-tool.c:780
 #, c-format
-msgid "Error: signal must be the fully-qualified name.\n"
-msgstr "Грешка: сигналът трябва да е указан с квалифицирано име\n"
+msgid "Error: Signal name “%s” is invalid\n"
+msgstr "Грешка: „%s“ не е допустимо име на сигнал\n"
 
-#: ../gio/gdbus-tool.c:648
+#: gio/gdbus-tool.c:792
 #, c-format
 msgid "Error: %s is not a valid interface name\n"
-msgstr "Ð\93Ñ\80еÑ\88ка: â\80\9e%sâ\80\9c Ð½Ðµ Ðµ Ð²Ñ\8fÑ\80но име на интерфейс\n"
+msgstr "Ð\93Ñ\80еÑ\88ка: â\80\9e%sâ\80\9c Ð½Ðµ Ðµ Ð´Ð¾Ð¿Ñ\83Ñ\81Ñ\82имо име на интерфейс\n"
 
-#: ../gio/gdbus-tool.c:654
+#: gio/gdbus-tool.c:798
 #, c-format
 msgid "Error: %s is not a valid member name\n"
-msgstr "Грешка: „%s“ не е вярно име на член\n"
-
-#: ../gio/gdbus-tool.c:660
-#, c-format
-msgid "Error: %s is not a valid unique bus name.\n"
-msgstr "Грешка: „%s“ не е вярно, уникално име на шина\n"
+msgstr "Грешка: „%s“ не е допустимо име на член\n"
 
 #. Use the original non-"parse-me-harder" error
-#: ../gio/gdbus-tool.c:687 ../gio/gdbus-tool.c:1011
+#: gio/gdbus-tool.c:835 gio/gdbus-tool.c:1176
 #, c-format
 msgid "Error parsing parameter %d: %s\n"
 msgstr "Грешка при анализ на параметър %d: %s\n"
 
-#: ../gio/gdbus-tool.c:718
+#: gio/gdbus-tool.c:867
 #, c-format
 msgid "Error flushing connection: %s\n"
-msgstr "Грешка при завършване на предаването на данните на връзка: %s\n"
+msgstr ""
+"Грешка при изчистване на буферите при предаването на данните на връзка: %s\n"
 
-#: ../gio/gdbus-tool.c:745
+#: gio/gdbus-tool.c:895
 msgid "Destination name to invoke method on"
 msgstr "Целево име, към чийто метод да се направи обръщение"
 
-#: ../gio/gdbus-tool.c:746
+#: gio/gdbus-tool.c:896
 msgid "Object path to invoke method on"
 msgstr "Път до обект, към чийто метод да се направи обръщение"
 
-#: ../gio/gdbus-tool.c:747
+#: gio/gdbus-tool.c:897
 msgid "Method and interface name"
 msgstr "Име на метод и интерфейс"
 
-#: ../gio/gdbus-tool.c:748
+#: gio/gdbus-tool.c:898
 msgid "Timeout in seconds"
 msgstr "Време за изчакване в секунди"
 
-#: ../gio/gdbus-tool.c:787
+#: gio/gdbus-tool.c:899
+msgid "Allow interactive authorization"
+msgstr "Позволяване на интерактивно упълномощаване"
+
+#: gio/gdbus-tool.c:946
 msgid "Invoke a method on a remote object."
 msgstr "Обръщение към метод на отдалечен обект"
 
-#: ../gio/gdbus-tool.c:862 ../gio/gdbus-tool.c:1602 ../gio/gdbus-tool.c:1837
-#, c-format
+#: gio/gdbus-tool.c:1018 gio/gdbus-tool.c:1853 gio/gdbus-tool.c:2093
 msgid "Error: Destination is not specified\n"
 msgstr "Грешка: не е указана цел\n"
 
-#: ../gio/gdbus-tool.c:874 ../gio/gdbus-tool.c:1619 ../gio/gdbus-tool.c:1849
+#: gio/gdbus-tool.c:1029 gio/gdbus-tool.c:1870 gio/gdbus-tool.c:2104
 #, c-format
 msgid "Error: %s is not a valid bus name\n"
-msgstr "Грешка: „%s“ не е вярно име на шина\n"
-
-#: ../gio/gdbus-tool.c:889 ../gio/gdbus-tool.c:1628
-#, c-format
-msgid "Error: Object path is not specified\n"
-msgstr "Грешка: Не е указан път до обект\n"
+msgstr "Грешка: „%s“ е неправилно име на шина\n"
 
-#: ../gio/gdbus-tool.c:924
-#, c-format
+#: gio/gdbus-tool.c:1079
 msgid "Error: Method name is not specified\n"
 msgstr "Грешка: Не е указано име на метод\n"
 
-#: ../gio/gdbus-tool.c:935
+#: gio/gdbus-tool.c:1090
 #, c-format
-msgid "Error: Method name '%s' is invalid\n"
-msgstr "Ð\93Ñ\80еÑ\88ка: â\80\9e%sâ\80\9c Ð½Ðµ Ðµ Ð´Ð¾Ð¿Ñ\83Ñ\81Ñ\82имо име на метод\n"
+msgid "Error: Method name “%s” is invalid\n"
+msgstr "Ð\93Ñ\80еÑ\88ка: â\80\9e%sâ\80\9c Ðµ Ð½ÐµÐ¿Ñ\80авилно име на метод\n"
 
-#: ../gio/gdbus-tool.c:1003
+#: gio/gdbus-tool.c:1168
 #, c-format
-msgid "Error parsing parameter %d of type '%s': %s\n"
+msgid "Error parsing parameter %d of type “%s”: %s\n"
 msgstr "Грешка при анализ на параметър %d от вид „%s“: %s\n"
 
-#: ../gio/gdbus-tool.c:1440
+#: gio/gdbus-tool.c:1194
+#, c-format
+msgid "Error adding handle %d: %s\n"
+msgstr "Грешка при добавяне на функция за обработка %d: %s\n"
+
+#: gio/gdbus-tool.c:1695
 msgid "Destination name to introspect"
 msgstr "Име на целта за анализ"
 
-#: ../gio/gdbus-tool.c:1441
+#: gio/gdbus-tool.c:1696
 msgid "Object path to introspect"
 msgstr "Път до обекта за анализ"
 
-#: ../gio/gdbus-tool.c:1442
+#: gio/gdbus-tool.c:1697
 msgid "Print XML"
 msgstr "Извеждане на XML"
 
-#: ../gio/gdbus-tool.c:1443
+#: gio/gdbus-tool.c:1698
 msgid "Introspect children"
 msgstr "Анализ на наследниците"
 
-#: ../gio/gdbus-tool.c:1444
+#: gio/gdbus-tool.c:1699
 msgid "Only print properties"
 msgstr "Извеждане само на свойствата"
 
-#: ../gio/gdbus-tool.c:1535
+#: gio/gdbus-tool.c:1788
 msgid "Introspect a remote object."
 msgstr "Анализ на отдалечен обект."
 
-#: ../gio/gdbus-tool.c:1740
+#: gio/gdbus-tool.c:1994
 msgid "Destination name to monitor"
 msgstr "Име на целта за наблюдение"
 
-#: ../gio/gdbus-tool.c:1741
+#: gio/gdbus-tool.c:1995
 msgid "Object path to monitor"
 msgstr "Път до обекта за наблюдение"
 
-#: ../gio/gdbus-tool.c:1770
+#: gio/gdbus-tool.c:2020
 msgid "Monitor a remote object."
 msgstr "Наблюдение на отдалечен обект."
 
-#: ../gio/gdesktopappinfo.c:1993 ../gio/gdesktopappinfo.c:4502
+#: gio/gdbus-tool.c:2078
+msgid "Error: can’t monitor a non-message-bus connection\n"
+msgstr "ГРЕШКА: може да се наблюдават само връзки към шината за съобщения\n"
+
+#: gio/gdbus-tool.c:2202
+msgid "Service to activate before waiting for the other one (well-known name)"
+msgstr ""
+"Услуга за задействане преди изчакване на другата (трябва да е известно име)"
+
+#: gio/gdbus-tool.c:2205
+msgid ""
+"Timeout to wait for before exiting with an error (seconds); 0 for no timeout "
+"(default)"
+msgstr ""
+"Време за изчакване в секунди преди изход с грешка. Стандартно е 0 за "
+"изчакване без ограничение"
+
+#: gio/gdbus-tool.c:2253
+msgid "[OPTION…] BUS-NAME"
+msgstr "[ОПЦИЯ…] ИМЕ_ПО_ШИНА"
+
+#: gio/gdbus-tool.c:2254
+msgid "Wait for a bus name to appear."
+msgstr "Изчакване за появата на името по шината."
+
+#: gio/gdbus-tool.c:2330
+msgid "Error: A service to activate for must be specified.\n"
+msgstr "Грешка: не е указана услуга за задействане.\n"
+
+#: gio/gdbus-tool.c:2335
+msgid "Error: A service to wait for must be specified.\n"
+msgstr "Грешка: не е указана услуга за изчакване.\n"
+
+#: gio/gdbus-tool.c:2340
+msgid "Error: Too many arguments.\n"
+msgstr "Грешка: Твърде много аргументи.\n"
+
+#: gio/gdbus-tool.c:2348 gio/gdbus-tool.c:2355
+#, c-format
+msgid "Error: %s is not a valid well-known bus name.\n"
+msgstr "Грешка: „%s“ не е известно име на шина.\n"
+
+#: gio/gdebugcontrollerdbus.c:358
+#, c-format
+msgid "Not authorized to change debug settings"
+msgstr "Няма права за смяната на настройки за изчистване на грешки"
+
+#: gio/gdesktopappinfo.c:2178 gio/gdesktopappinfo.c:5105
 msgid "Unnamed"
 msgstr "Без име"
 
-#: ../gio/gdesktopappinfo.c:2402
-msgid "Desktop file didn't specify Exec field"
-msgstr "Във файла „.desktop“ липсва поле за изпълнение"
+#: gio/gdesktopappinfo.c:2588
+msgid "Desktop file didnt specify Exec field"
+msgstr "Във файла „.desktop“ липсва поле за изпълнение (Exec)"
 
-#: ../gio/gdesktopappinfo.c:2687
+#: gio/gdesktopappinfo.c:2896
 msgid "Unable to find terminal required for application"
 msgstr "Не може да се открие терминал за приложението"
 
-#: ../gio/gdesktopappinfo.c:3099
+#: gio/gdesktopappinfo.c:3625
 #, c-format
-msgid "Can't create user application configuration folder %s: %s"
+msgid "Cant create user application configuration folder %s: %s"
 msgstr "Не може да се създаде папката с потребителските настройки %s: %s"
 
-#: ../gio/gdesktopappinfo.c:3103
+#: gio/gdesktopappinfo.c:3629
 #, c-format
-msgid "Can't create user MIME configuration folder %s: %s"
+msgid "Cant create user MIME configuration folder %s: %s"
 msgstr "Не може да се създаде папката с настройките за MIME %s: %s"
 
-#: ../gio/gdesktopappinfo.c:3343 ../gio/gdesktopappinfo.c:3367
+#: gio/gdesktopappinfo.c:3871 gio/gdesktopappinfo.c:3895
 msgid "Application information lacks an identifier"
 msgstr "В информацията за програма липсва идентификатор"
 
-#: ../gio/gdesktopappinfo.c:3600
+#: gio/gdesktopappinfo.c:4131
 #, c-format
-msgid "Can't create user desktop file %s"
-msgstr "Не може да се създаде файл „.desktop“ — „%s“"
+msgid "Cant create user desktop file %s"
+msgstr "Не може да се създаде файл „.desktop“: „%s“"
 
-#: ../gio/gdesktopappinfo.c:3734
+#: gio/gdesktopappinfo.c:4267
 #, c-format
 msgid "Custom definition for %s"
 msgstr "Потребителска дефиниция за %s"
 
-#: ../gio/gdrive.c:392
-msgid "drive doesn't implement eject"
+#: gio/gdrive.c:417
+msgid "drive doesnt implement eject"
 msgstr "устройството не поддържа изваждане"
 
 #. 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
+msgid "drive doesnt implement eject or eject_with_operation"
 msgstr "устройството не поддържа нито изваждане, нито изваждане с действие"
 
-#: ../gio/gdrive.c:546
-msgid "drive doesn't implement polling for media"
+#: gio/gdrive.c:571
+msgid "drive doesnt implement polling for media"
 msgstr "устройството не поддържа следене за носител"
 
-#: ../gio/gdrive.c:751
-msgid "drive doesn't implement start"
+#: gio/gdrive.c:778
+msgid "drive doesnt implement start"
 msgstr "устройството не поддържа стартиране"
 
-#: ../gio/gdrive.c:853
-msgid "drive doesn't implement stop"
+#: gio/gdrive.c:880
+msgid "drive doesnt implement stop"
 msgstr "устройството не поддържа спиране"
 
-#: ../gio/gdummytlsbackend.c:195 ../gio/gdummytlsbackend.c:317
-#: ../gio/gdummytlsbackend.c:509
+#: gio/gdtlsconnection.c:1186 gio/gtlsconnection.c:955
+msgid "TLS backend does not implement TLS binding retrieval"
+msgstr "Поддръжката на TLS е без изтегляне на свързването по TLS"
+
+#: gio/gdummytlsbackend.c:195 gio/gdummytlsbackend.c:321
+#: gio/gdummytlsbackend.c:513
 msgid "TLS support is not available"
 msgstr "Липсва поддръжка на TLS"
 
-#: ../gio/gdummytlsbackend.c:419
+#: gio/gdummytlsbackend.c:423
 msgid "DTLS support is not available"
 msgstr "Липсва поддръжка на DTLS"
 
-#: ../gio/gemblem.c:323
+#: gio/gemblem.c:323
 #, c-format
-msgid "Can't handle version %d of GEmblem encoding"
-msgstr "Версия %d на кодирането GEmblem не се поддържа"
+msgid "Cant handle version %d of GEmblem encoding"
+msgstr "Версия %d на кодирането „GEmblem“ не се поддържа"
 
-#: ../gio/gemblem.c:333
+#: gio/gemblem.c:333
 #, c-format
 msgid "Malformed number of tokens (%d) in GEmblem encoding"
-msgstr "Неправилен брой лексеми (%d) в кодирането GEmblem"
+msgstr "Неправилен брой лексеми (%d) в кодирането „GEmblem“"
 
-#: ../gio/gemblemedicon.c:362
+#: gio/gemblemedicon.c:362
 #, c-format
-msgid "Can't handle version %d of GEmblemedIcon encoding"
-msgstr "Версия %d на кодирането GEmblemedIcon не се поддържа"
+msgid "Cant handle version %d of GEmblemedIcon encoding"
+msgstr "Версия %d на кодирането „GEmblemedIcon“ не се поддържа"
 
-#: ../gio/gemblemedicon.c:372
+#: gio/gemblemedicon.c:372
 #, c-format
 msgid "Malformed number of tokens (%d) in GEmblemedIcon encoding"
-msgstr "Неправилен брой лексеми (%d) в кодирането GEmblemedIcon"
+msgstr "Неправилен брой лексеми (%d) в кодирането „GEmblemedIcon“"
 
-#: ../gio/gemblemedicon.c:395
+#: gio/gemblemedicon.c:395
 msgid "Expected a GEmblem for GEmblemedIcon"
-msgstr "Очакваше се GEmblem за 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/win32/gwinhttpfile.c:437
-msgid "Operation not supported"
-msgstr "Действието не се поддържа"
+msgstr "Очакваше се „GEmblem“ за „GEmblemedIcon“"
 
 #. 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.
-#. 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:1579
 msgid "Containing mount does not exist"
 msgstr "Съдържащият монтиран обект не съществува"
 
-#: ../gio/gfile.c:2515 ../gio/glocalfile.c:2376
-msgid "Can't copy over directory"
+#: gio/gfile.c:2626 gio/glocalfile.c:2486
+msgid "Cant copy over directory"
 msgstr "Не може да се копира върху папка"
 
-#: ../gio/gfile.c:2575
-msgid "Can't copy directory over directory"
+#: gio/gfile.c:2686
+msgid "Cant copy directory over directory"
 msgstr "Папка не може да се копира върху папка"
 
-#: ../gio/gfile.c:2583 ../gio/glocalfile.c:2385
+#: gio/gfile.c:2694
 msgid "Target file exists"
 msgstr "Целевият файл съществува"
 
-#: ../gio/gfile.c:2602
-msgid "Can't recursively copy directory"
+#: gio/gfile.c:2713
+msgid "Cant recursively copy directory"
 msgstr "Папката не може да се копира рекурсивно"
 
-#: ../gio/gfile.c:2884
+#: gio/gfile.c:3014
 msgid "Splice not supported"
 msgstr "Не се поддържа прилепване (splice)"
 
-#: ../gio/gfile.c:2888
+#: gio/gfile.c:3018
 #, c-format
 msgid "Error splicing file: %s"
 msgstr "Грешка при прилепване (splice) на файл: %s"
 
-#: ../gio/gfile.c:3019
+#: gio/gfile.c:3170
 msgid "Copy (reflink/clone) between mounts is not supported"
 msgstr ""
-"Копирането между различни монтирани дялове чрез reflink/clone не се поддържа"
+"Копирането между различни монтирани дялове чрез „reflink“/„clone“ не се "
+"поддържа"
 
-#: ../gio/gfile.c:3023
+#: gio/gfile.c:3174
 msgid "Copy (reflink/clone) is not supported or invalid"
 msgstr ""
-"Копирането чрез reflink/clone не се поддържа или е извършено неправилно"
+"Копирането чрез „reflink“/„clone“ не се поддържа или е извършено неправилно"
 
-#: ../gio/gfile.c:3028
-msgid "Copy (reflink/clone) is not supported or didn't work"
-msgstr "Копирането чрез reflink/clone не се поддържа или не проработи"
+#: gio/gfile.c:3179
+msgid "Copy (reflink/clone) is not supported or didnt work"
+msgstr "Копирането чрез „reflink“/„clone“ не се поддържа или не проработи"
 
-#: ../gio/gfile.c:3091
-msgid "Can't copy special file"
+#: gio/gfile.c:3244
+msgid "Cant copy special file"
 msgstr "Не може да се копира специален файл"
 
-#: ../gio/gfile.c:3884
+#: gio/gfile.c:4138
 msgid "Invalid symlink value given"
 msgstr "Зададена е неправилна стойност на символна връзка"
 
-#: ../gio/gfile.c:4045
+#: gio/gfile.c:4148 glib/gfileutils.c:2333
+msgid "Symbolic links not supported"
+msgstr "Символни връзки не се поддържат"
+
+#: gio/gfile.c:4316
 msgid "Trash not supported"
 msgstr "Не се поддържа кошче"
 
-#: ../gio/gfile.c:4157
+#: gio/gfile.c:4428
 #, c-format
-msgid "File names cannot contain '%c'"
-msgstr "ФайловиÑ\82е Ð¸Ð¼ÐµÐ½Ð° Ð½Ðµ Ð¼Ð¾Ð³Ð°Ñ\82 да съдържат „%c“"
+msgid "File names cannot contain “%c”"
+msgstr "ФайловиÑ\82е Ð¸Ð¼ÐµÐ½Ð° Ð½Ðµ Ð¼Ð¾Ð¶Ðµ да съдържат „%c“"
 
-#: ../gio/gfile.c:6586 ../gio/gvolume.c:363
-msgid "volume doesn't implement mount"
+#: gio/gfile.c:7028 gio/gvolume.c:364
+msgid "volume doesnt implement mount"
 msgstr "томът не поддържа монтиране"
 
-#: ../gio/gfile.c:6695
+#: gio/gfile.c:7142 gio/gfile.c:7190
 msgid "No application is registered as handling this file"
 msgstr "Не е регистрирано приложение за обработка на този вид файлове"
 
-#: ../gio/gfileenumerator.c:212
+#: gio/gfileenumerator.c:212
 msgid "Enumerator is closed"
 msgstr "Броячът е затворен"
 
-#: ../gio/gfileenumerator.c:219 ../gio/gfileenumerator.c:278
-#: ../gio/gfileenumerator.c:377 ../gio/gfileenumerator.c:476
+#: gio/gfileenumerator.c:219 gio/gfileenumerator.c:278
+#: gio/gfileenumerator.c:377 gio/gfileenumerator.c:476
 msgid "File enumerator has outstanding operation"
 msgstr "Файловият брояч все още не е привършил"
 
-#: ../gio/gfileenumerator.c:368 ../gio/gfileenumerator.c:467
+#: gio/gfileenumerator.c:368 gio/gfileenumerator.c:467
 msgid "File enumerator is already closed"
 msgstr "Файловият брояч вече е затворен"
 
-#: ../gio/gfileicon.c:236
+#: gio/gfileicon.c:250
 #, c-format
-msgid "Can't handle version %d of GFileIcon encoding"
-msgstr "Версия %d на кодирането GFileIcon не се поддържа"
+msgid "Cant handle version %d of GFileIcon encoding"
+msgstr "Версия %d на кодирането „GFileIcon“ не се поддържа"
 
-#: ../gio/gfileicon.c:246
+#: gio/gfileicon.c:260
 msgid "Malformed input data for GFileIcon"
-msgstr "Неправилни входни данни за GFileIcon"
+msgstr "Неправилни входни данни за „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"
-msgstr "Потокът не поддържа запитване за информация (query_info)"
+#: gio/gfileinputstream.c:149 gio/gfileinputstream.c:394
+#: gio/gfileiostream.c:167 gio/gfileoutputstream.c:164
+#: gio/gfileoutputstream.c:497
+msgid "Stream doesnt support query_info"
+msgstr "Потокът не поддържа запитване за информация („query_info“)"
 
-#: ../gio/gfileinputstream.c:325 ../gio/gfileiostream.c:379
-#: ../gio/gfileoutputstream.c:371
+#: gio/gfileinputstream.c:325 gio/gfileiostream.c:379
+#: gio/gfileoutputstream.c:371
 msgid "Seek not supported on stream"
 msgstr "Търсенето не се поддържа от потока"
 
-#: ../gio/gfileinputstream.c:369
+#: gio/gfileinputstream.c:369
 msgid "Truncate not allowed on input stream"
 msgstr "Входният поток не може да се съкращава"
 
-#: ../gio/gfileiostream.c:455 ../gio/gfileoutputstream.c:447
+#: gio/gfileiostream.c:455 gio/gfileoutputstream.c:447
 msgid "Truncate not supported on stream"
 msgstr "Потокът не може да се съкращава"
 
-#: ../gio/ghttpproxy.c:136
+#: gio/ghttpproxy.c:91 gio/gresolver.c:458 gio/gresolver.c:611
+#: glib/gconvert.c:1825
+msgid "Invalid hostname"
+msgstr "Неправилно име на хост"
+
+#: gio/ghttpproxy.c:143
 msgid "Bad HTTP proxy reply"
 msgstr "Неправилен отговор от сървъра-посредник по HTTP"
 
-#: ../gio/ghttpproxy.c:152
+#: gio/ghttpproxy.c:159
 msgid "HTTP proxy connection not allowed"
 msgstr "Не е позволена връзка към сървъра-посредник по HTTP"
 
-#: ../gio/ghttpproxy.c:157
+#: gio/ghttpproxy.c:164
 msgid "HTTP proxy authentication failed"
 msgstr "Неуспешна идентификация пред сървъра-посредник по HTTP"
 
-#: ../gio/ghttpproxy.c:160
+#: gio/ghttpproxy.c:167
 msgid "HTTP proxy authentication required"
 msgstr "Изисква се идентификация пред сървъра-посредник по HTTP"
 
-#: ../gio/ghttpproxy.c:164
+#: gio/ghttpproxy.c:171
 #, c-format
 msgid "HTTP proxy connection failed: %i"
 msgstr "Неуспешна връзка към сървъра-посредник по HTTP: %i"
 
-#: ../gio/ghttpproxy.c:260
+#: gio/ghttpproxy.c:266
+msgid "HTTP proxy response too big"
+msgstr "Отговорът от сървъра-посредник по HTTP е прекалено дълъг"
+
+#: gio/ghttpproxy.c:283
 msgid "HTTP proxy server closed connection unexpectedly."
 msgstr "Сървърът-посредник по HTTP неочаквано прекрати връзката"
 
-#: ../gio/gicon.c:290
+#: gio/gicon.c:298
 #, c-format
 msgid "Wrong number of tokens (%d)"
 msgstr "Неправилен брой лексеми (%d)"
 
-#: ../gio/gicon.c:310
+#: gio/gicon.c:318
 #, c-format
 msgid "No type for class name %s"
-msgstr "Липсва тип за името на клас %s"
+msgstr "Липсва вид за името на клас „%s“"
 
-#: ../gio/gicon.c:320
+#: gio/gicon.c:328
 #, c-format
 msgid "Type %s does not implement the GIcon interface"
-msgstr "ТипÑ\8aÑ\82 â\80\9e%sâ\80\9c Ð½Ðµ Ð¿Ð¾Ð´Ð´Ñ\8aÑ\80жа Ð¸Ð½Ñ\82еÑ\80Ñ\84ейÑ\81а GIcon"
+msgstr "Ð\92идÑ\8aÑ\82 â\80\9e%sâ\80\9c Ð½Ðµ Ð¿Ð¾Ð´Ð´Ñ\8aÑ\80жа Ð¸Ð½Ñ\82еÑ\80Ñ\84ейÑ\81а â\80\9eGIconâ\80\9c"
 
-#: ../gio/gicon.c:331
+#: gio/gicon.c:339
 #, c-format
 msgid "Type %s is not classed"
-msgstr "ТипÑ\8aÑ\82 â\80\9e%sâ\80\9c Ð½Ðµ Ðµ ÐºÐ»Ð°Ñ\81ов"
+msgstr "Ð\92идÑ\8aÑ\82 â\80\9e%sâ\80\9c Ð½Ðµ Ðµ ÐºÐ»Ð°Ñ\81"
 
-#: ../gio/gicon.c:345
+#: gio/gicon.c:353
 #, c-format
 msgid "Malformed version number: %s"
 msgstr "Неправилен номер на версия: %s"
 
-#: ../gio/gicon.c:359
+#: gio/gicon.c:367
 #, c-format
 msgid "Type %s does not implement from_tokens() on the GIcon interface"
-msgstr "ТипÑ\8aÑ\82 â\80\9e%sâ\80\9c Ð½Ðµ Ð¿Ð¾Ð´Ð´Ñ\8aÑ\80жа from_tokens() Ð¾Ñ\82 Ð¸Ð½Ñ\82еÑ\80Ñ\84ейÑ\81а GIcon"
+msgstr "Ð\92идÑ\8aÑ\82 â\80\9e%sâ\80\9c Ð½Ðµ Ð¿Ð¾Ð´Ð´Ñ\8aÑ\80жа â\80\9efrom_tokens()â\80\9c Ð¾Ñ\82 Ð¸Ð½Ñ\82еÑ\80Ñ\84ейÑ\81а â\80\9eGIconâ\80\9c"
 
-#: ../gio/gicon.c:461
-msgid "Can't handle the supplied version of the icon encoding"
+#: gio/gicon.c:469
+msgid "Cant handle the supplied version of the icon encoding"
 msgstr "Подадената версия на кодирането на икони не се поддържа"
 
-#: ../gio/ginetaddressmask.c:182
+#: gio/ginetaddressmask.c:182
 msgid "No address specified"
 msgstr "Не е указан адрес"
 
-#: ../gio/ginetaddressmask.c:190
+#: gio/ginetaddressmask.c:190
 #, c-format
 msgid "Length %u is too long for address"
 msgstr "Дължината на адреса %u е прекалено голяма"
 
-#: ../gio/ginetaddressmask.c:223
+#: gio/ginetaddressmask.c:223
 msgid "Address has bits set beyond prefix length"
 msgstr "В адреса са зададени битове след префикса му"
 
-#: ../gio/ginetaddressmask.c:300
+#: gio/ginetaddressmask.c:300
 #, c-format
-msgid "Could not parse '%s' as IP address mask"
+msgid "Could not parse “%s” as IP address mask"
 msgstr "„%s“ не е маска за адреси на IP"
 
-#: ../gio/ginetsocketaddress.c:203 ../gio/ginetsocketaddress.c:220
-#: ../gio/gnativesocketaddress.c:106 ../gio/gunixsocketaddress.c:216
+#: gio/ginetsocketaddress.c:203 gio/ginetsocketaddress.c:220
+#: gio/gnativesocketaddress.c:109 gio/gunixsocketaddress.c:228
 msgid "Not enough space for socket address"
 msgstr "Няма достатъчно място за адреса на гнездо"
 
-#: ../gio/ginetsocketaddress.c:235
+#: gio/ginetsocketaddress.c:235
 msgid "Unsupported socket address"
 msgstr "Неподдържан адрес на гнездо"
 
-#: ../gio/ginputstream.c:188
-msgid "Input stream doesn't implement read"
+#: gio/ginputstream.c:188
+msgid "Input stream doesnt implement read"
 msgstr "Входният поток не поддържа четене"
 
 #. Translators: This is an error you get if there is already an
@@ -1531,694 +1646,1771 @@ msgstr "Входният поток не поддържа четене"
 #. 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:1249 gio/giostream.c:310 gio/goutputstream.c:2208
 msgid "Stream has outstanding operation"
 msgstr "Действията върху потока не са привършили"
 
-#: ../gio/glib-compile-resources.c:142 ../gio/glib-compile-schemas.c:1491
-#, c-format
-msgid "Element <%s> not allowed inside <%s>"
-msgstr "Елементът <%s> не е позволен в <%s>"
+#: gio/gio-tool.c:160
+msgid "Copy with file"
+msgstr "Копиране със файла"
 
-#: ../gio/glib-compile-resources.c:146
-#, c-format
-msgid "Element <%s> not allowed at toplevel"
-msgstr "Елементът <%s> не е позволен на най-горно ниво"
+#: gio/gio-tool.c:164
+msgid "Keep with file when moved"
+msgstr "Да се мести заедно с файла"
 
-#: ../gio/glib-compile-resources.c:236
-#, c-format
-msgid "File %s appears multiple times in the resource"
-msgstr "Файлът „%s“ присъства многократно в ресурса"
+#: gio/gio-tool.c:205
+msgid "“version” takes no arguments"
+msgstr "„version“ не приема аргументи"
 
-#: ../gio/glib-compile-resources.c:249
-#, c-format
-msgid "Failed to locate '%s' in any source directory"
-msgstr "„%s“ липсва във всички папки за ресурси"
+#: gio/gio-tool.c:207 gio/gio-tool.c:223 glib/goption.c:869
+msgid "Usage:"
+msgstr "Употреба:"
 
-#: ../gio/glib-compile-resources.c:260
-#, c-format
-msgid "Failed to locate '%s' in current directory"
-msgstr "„%s“ липсва в текущата папка"
+#: gio/gio-tool.c:210
+msgid "Print version information and exit."
+msgstr "Извеждане на версията и изход."
 
-#: ../gio/glib-compile-resources.c:288
-#, c-format
-msgid "Unknown processing option \"%s\""
-msgstr "Непозната опция за обработка „%s“"
+#: gio/gio-tool.c:226
+msgid "Commands:"
+msgstr "Команди:"
 
-#: ../gio/glib-compile-resources.c:306 ../gio/glib-compile-resources.c:352
-#, c-format
-msgid "Failed to create temp file: %s"
-msgstr "Неуспешно създаване на временен файл: %s"
+#: gio/gio-tool.c:229
+msgid "Concatenate files to standard output"
+msgstr "Обединяване на съдържанието на файловете на стандартния изход"
 
-#: ../gio/glib-compile-resources.c:380
-#, c-format
-msgid "Error reading file %s: %s"
-msgstr "Грешка при четене на файл „%s“: %s"
+#: gio/gio-tool.c:230
+msgid "Copy one or more files"
+msgstr "Копиране на един или повече файлове"
 
-#: ../gio/glib-compile-resources.c:400
-#, c-format
-msgid "Error compressing file %s"
-msgstr "Грешка при компресиране на файл: %s"
+#: gio/gio-tool.c:231
+msgid "Show information about locations"
+msgstr "Извеждане на информация за местоположенията"
 
-#: ../gio/glib-compile-resources.c:464 ../gio/glib-compile-schemas.c:1603
-#, c-format
-msgid "text may not appear inside <%s>"
-msgstr "в <%s> не е позволен текст"
+#: gio/gio-tool.c:232
+msgid "Launch an application from a desktop file"
+msgstr "Стартиране на приложение чрез файл „.desktop“"
 
-#: ../gio/glib-compile-resources.c:589
-msgid "name of the output file"
-msgstr "име Ð½Ð° Ð¸Ð·Ñ\85одниÑ\8f Ñ\84айл"
+#: gio/gio-tool.c:233
+msgid "List the contents of locations"
+msgstr "Ð\98звеждане Ð½Ð° Ñ\81Ñ\8aдÑ\8aÑ\80жаниеÑ\82о Ð½Ð° Ð¼ÐµÑ\81Ñ\82оположениÑ\8fÑ\82а"
 
-#: ../gio/glib-compile-resources.c:590
-msgid ""
-"The directories where files are to be read from (default to current "
-"directory)"
-msgstr "Папката откъдето да се четат файловете (стандартно е текущата)"
+#: gio/gio-tool.c:234
+msgid "Get or set the handler for a mimetype"
+msgstr ""
+"Получаване или задаване на програмата за обработка на определен вид по MIME"
 
-#: ../gio/glib-compile-resources.c:590 ../gio/glib-compile-schemas.c:2036
-#: ../gio/glib-compile-schemas.c:2065
-msgid "DIRECTORY"
-msgstr "ПАПКА"
+#: gio/gio-tool.c:235
+msgid "Create directories"
+msgstr "Създаване на папки"
 
-#: ../gio/glib-compile-resources.c:591
-msgid ""
-"Generate output in the format selected for by the target filename extension"
-msgstr "Формат на изхода според разширението на изходния файл"
+#: gio/gio-tool.c:236
+msgid "Monitor files and directories for changes"
+msgstr "Наблюдаване на файлове и директории за промени"
 
-#: ../gio/glib-compile-resources.c:592
-msgid "Generate source header"
-msgstr "Ð\97аглавни Ñ\87аÑ\81Ñ\82и"
+#: gio/gio-tool.c:237
+msgid "Mount or unmount the locations"
+msgstr "Ð\9cонÑ\82иÑ\80ане/демонÑ\82иÑ\80ане Ð½Ð° Ð¼ÐµÑ\81Ñ\82оположение"
 
-#: ../gio/glib-compile-resources.c:593
-msgid "Generate sourcecode used to link in the resource file into your code"
-msgstr "Ð\93енеÑ\80иÑ\80ане Ð½Ð° Ð¸Ð·Ñ\85одниÑ\8f ÐºÐ¾Ð´ Ð·Ð° Ñ\81вÑ\8aÑ\80зване Ð½Ð° Ñ\80еÑ\81Ñ\83Ñ\80Ñ\81а Ð² ÐºÐ¾Ð´Ð°"
+#: gio/gio-tool.c:238
+msgid "Move one or more files"
+msgstr "Ð\9fÑ\80емеÑ\81Ñ\82ване Ð½Ð° ÐµÐ´Ð¸Ð½ Ð¸Ð»Ð¸ Ð¿Ð¾Ð²ÐµÑ\87е Ñ\84айлове"
 
-#: ../gio/glib-compile-resources.c:594
-msgid "Generate dependency list"
-msgstr "СпиÑ\81Ñ\8aк Ñ\81Ñ\8aÑ\81 Ð·Ð°Ð²Ð¸Ñ\81имоÑ\81Ñ\82иÑ\82е"
+#: gio/gio-tool.c:239
+msgid "Open files with the default application"
+msgstr "Ð\9eÑ\82ваÑ\80Ñ\8fне Ð½Ð° Ñ\84айлове Ñ\81Ñ\8aÑ\81 Ñ\81Ñ\82андаÑ\80Ñ\82наÑ\82а Ð¿Ñ\80огÑ\80ама"
 
-#: ../gio/glib-compile-resources.c:595
-msgid "Don't automatically create and register resource"
-msgstr "Ð\91ез Ð°Ð²Ñ\82омаÑ\82иÑ\87но Ð³ÐµÐ½ÐµÑ\80иÑ\80ане Ð¸ Ñ\80егиÑ\81Ñ\82Ñ\80иÑ\80ане Ð½Ð° Ñ\80еÑ\81Ñ\83Ñ\80Ñ\81и"
+#: gio/gio-tool.c:240
+msgid "Rename a file"
+msgstr "Ð\9fÑ\80еименÑ\83ване Ð½Ð° Ñ\84айл"
 
-#: ../gio/glib-compile-resources.c:596
-msgid "Don't export functions; declare them G_GNUC_INTERNAL"
-msgstr "Ð\9dе Ð¸Ð·Ð½Ð°Ñ\81Ñ\8fйÑ\82е Ñ\84Ñ\83нкÑ\86ии. Ð\94еклаÑ\80иÑ\80айÑ\82е Ð³Ð¸ G_GNUC_INTERNAL"
+#: gio/gio-tool.c:241
+msgid "Delete one or more files"
+msgstr "Ð\98зÑ\82Ñ\80иване Ð½Ð° ÐµÐ´Ð¸Ð½ Ð¸Ð»Ð¸ Ð¿Ð¾Ð²ÐµÑ\87е Ñ\84айлове"
 
-#: ../gio/glib-compile-resources.c:597
-msgid "C identifier name used for the generated source code"
-msgstr "Ð\98денÑ\82иÑ\84икаÑ\82оÑ\80 Ð½Ð° C Ð·Ð° Ð³ÐµÐ½ÐµÑ\80иÑ\80аниÑ\8f Ð¸Ð·Ñ\85оден ÐºÐ¾Ð´"
+#: gio/gio-tool.c:242
+msgid "Read from standard input and save"
+msgstr "Ð\98зÑ\87иÑ\82ане Ð¾Ñ\82 Ñ\81Ñ\82андаÑ\80Ñ\82ниÑ\8f Ð²Ñ\85од Ð¸ Ð·Ð°Ð¿Ð°Ð·Ð²Ð°Ð½Ðµ"
 
-#: ../gio/glib-compile-resources.c:623
-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 ""
-"Компилиране на файловете с указания за ресурси в ресурсен файл.\n"
-"Файловете за указване на ресурси трябва да завършват на „.gresource.xml“,\n"
-"а ресурсният файл — на „.gresource“."
+#: gio/gio-tool.c:243
+msgid "Set a file attribute"
+msgstr "Задаване на файлов атрибут"
 
-#: ../gio/glib-compile-resources.c:639
-#, c-format
-msgid "You should give exactly one file name\n"
-msgstr "Изисква се точно едно име на файл\n"
+#: gio/gio-tool.c:244
+msgid "Move files or directories to the trash"
+msgstr "Преместване на файлове или папки в кошчето"
 
-#: ../gio/glib-compile-schemas.c:784
-msgid "empty names are not permitted"
-msgstr "не Ñ\81е Ð¿Ð¾Ð·Ð²Ð¾Ð»Ñ\8fваÑ\82 Ð¿Ñ\80азни Ð¸Ð¼ÐµÐ½Ð°"
+#: gio/gio-tool.c:245
+msgid "Lists the contents of locations in a tree"
+msgstr "Ð\98звеждане Ð½Ð° Ñ\81Ñ\8aдÑ\8aÑ\80жаниеÑ\82о Ð½Ð° Ð¼ÐµÑ\81Ñ\82оположение Ð² Ð´Ñ\8aÑ\80вовиден Ð¸Ð·Ð³Ð»ÐµÐ´"
 
-#: ../gio/glib-compile-schemas.c:794
+#: gio/gio-tool.c:247
 #, c-format
-msgid "invalid name '%s': names must begin with a lowercase letter"
-msgstr "непÑ\80авилно Ð¸Ð¼Ðµ â\80\9e%sâ\80\9c: Ð¸Ð¼ÐµÐ½Ð°Ñ\82а Ñ\82Ñ\80Ñ\8fбва Ð´Ð° Ð·Ð°Ð¿Ð¾Ñ\87ваÑ\82 Ñ\81 Ð¼Ð°Ð»ÐºÐ° Ð±Ñ\83ква"
+msgid "Use %s to get detailed help.\n"
+msgstr "Ð\92Ñ\8aведеÑ\82е %s Ð·Ð° Ð¿Ð¾Ð´Ñ\80обна Ð¿Ð¾Ð¼Ð¾Ñ\89.\n"
 
-#: ../gio/glib-compile-schemas.c:806
-#, c-format
+#: gio/gio-tool-cat.c:87
+msgid "Error writing to stdout"
+msgstr "Грешка при извеждане към стандартния изход"
+
+#. Translators: commandline placeholder
+#: gio/gio-tool-cat.c:133 gio/gio-tool-info.c:340 gio/gio-tool-list.c:172
+#: 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:204 gio/gio-tool-mount.c:1199 gio/gio-tool-open.c:70
+#: gio/gio-tool-remove.c:48 gio/gio-tool-rename.c:45 gio/gio-tool-set.c:89
+#: gio/gio-tool-trash.c:220 gio/gio-tool-tree.c:239
+msgid "LOCATION"
+msgstr "МЕСТОПОЛОЖЕНИЕ"
+
+#: gio/gio-tool-cat.c:138
+msgid "Concatenate files and print to standard output."
+msgstr ""
+"Обединяване на съдържанието на файловете и извеждане на стандартния изход."
+
+#: gio/gio-tool-cat.c:140
 msgid ""
-"invalid name '%s': invalid character '%c'; only lowercase letters, numbers "
-"and hyphen ('-') are permitted."
+"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 ""
-"неправилно име „%s“: неправилен знак „%c“ — позволени са само малки букви, "
-"цифри и тире („-“)."
+"„gio cat“ е аналог на „cat“, но се ползват местоположения по GIO, а не "
+"локални\n"
+"файлове. Така може да ползвате „smb://server/resource/file.txt“, например."
 
-#: ../gio/glib-compile-schemas.c:815
-#, c-format
-msgid "invalid name '%s': two successive hyphens ('--') are not permitted."
-msgstr "неправилно име „%s“: не са позволени две последователни тирета („--“)."
+#: gio/gio-tool-cat.c:162 gio/gio-tool-info.c:371 gio/gio-tool-mkdir.c:76
+#: gio/gio-tool-monitor.c:229 gio/gio-tool-mount.c:1250 gio/gio-tool-open.c:96
+#: gio/gio-tool-remove.c:72 gio/gio-tool-trash.c:303
+msgid "No locations given"
+msgstr "Не са дадени местоположения"
 
-#: ../gio/glib-compile-schemas.c:824
-#, c-format
-msgid "invalid name '%s': the last character may not be a hyphen ('-')."
-msgstr "неправилно име „%s“: последният знак не може да е тире („-“)."
+#: gio/gio-tool-copy.c:43 gio/gio-tool-move.c:38
+msgid "No target directory"
+msgstr "Не е зададена целева папка"
 
-#: ../gio/glib-compile-schemas.c:832
-#, c-format
-msgid "invalid name '%s': maximum length is 1024"
-msgstr "неправилно име „%s“: максималната дължина е 1024"
+#: gio/gio-tool-copy.c:44 gio/gio-tool-move.c:39
+msgid "Show progress"
+msgstr "Извеждане на прогреса"
 
-#: ../gio/glib-compile-schemas.c:901
-#, c-format
-msgid "<child name='%s'> already specified"
-msgstr "<child name='%s'> вече е указано"
+#: gio/gio-tool-copy.c:45 gio/gio-tool-move.c:40
+msgid "Prompt before overwrite"
+msgstr "Питане преди презапис"
 
-#: ../gio/glib-compile-schemas.c:927
-msgid "cannot add keys to a 'list-of' schema"
-msgstr "кÑ\8aм Ñ\81Ñ\85ема â\80\9elist-ofâ\80\9c Ð½Ðµ Ð¼Ð¾Ð³Ð°Ñ\82 Ð´Ð° Ñ\81е Ð´Ð¾Ð±Ð°Ð²Ñ\8fÑ\82 ÐºÐ»Ñ\8eÑ\87ове"
+#: gio/gio-tool-copy.c:46
+msgid "Preserve all attributes"
+msgstr "Ð\97апазване Ð½Ð° Ð²Ñ\81иÑ\87ки Ð°Ñ\82Ñ\80ибÑ\83Ñ\82и"
 
-#: ../gio/glib-compile-schemas.c:938
-#, c-format
-msgid "<key name='%s'> already specified"
-msgstr "<key name='%s'> вече е указано"
+#: gio/gio-tool-copy.c:47 gio/gio-tool-move.c:41 gio/gio-tool-save.c:49
+msgid "Backup existing destination files"
+msgstr "Резервно копие на съществуващи целеви файлове"
 
-#: ../gio/glib-compile-schemas.c:956
-#, c-format
-msgid ""
-"<key name='%s'> shadows <key name='%s'> in <schema id='%s'>; use <override> "
-"to modify value"
-msgstr ""
-"<key name='%s'> засенчва <key name='%s'> в <schema id='%s'>. Използвайте "
-"<override>, за да промените стойността"
+#: gio/gio-tool-copy.c:48
+msgid "Never follow symbolic links"
+msgstr "Без проследяване на символни връзки"
+
+#: gio/gio-tool-copy.c:49
+msgid "Use default permissions for the destination"
+msgstr "Стандартни права за целта"
 
-#: ../gio/glib-compile-schemas.c:967
+#: gio/gio-tool-copy.c:74 gio/gio-tool-move.c:67
 #, c-format
+msgid "Transferred %s out of %s (%s/s)"
+msgstr "Прехвърлени са %s от общо %s (%s/s)"
+
+#. Translators: commandline placeholder
+#: gio/gio-tool-copy.c:100 gio/gio-tool-move.c:94
+msgid "SOURCE"
+msgstr "ИЗТОЧНИК"
+
+#. Translators: commandline placeholder
+#: gio/gio-tool-copy.c:100 gio/gio-tool-move.c:94 gio/gio-tool-save.c:160
+msgid "DESTINATION"
+msgstr "ЦЕЛ"
+
+#: gio/gio-tool-copy.c:105
+msgid "Copy one or more files from SOURCE to DESTINATION."
+msgstr "Копиране на един или повече файлове от ИЗТОЧНИКа към ЦЕЛта."
+
+#: gio/gio-tool-copy.c:107
 msgid ""
-"exactly one of 'type', 'enum' or 'flags' must be specified as an attribute "
-"to <key>"
+"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 ""
-"като атрибут на <key> трябва да присъства точно едно от „type“, „enum“ или "
-"„flags“"
+"„gio copy“ е аналог на „cp“, но се ползват местоположения по GIO, а не "
+"локални\n"
+"файлове. Така може да ползвате „smb://server/resource/file.txt“, например."
 
-#: ../gio/glib-compile-schemas.c:986
+#: gio/gio-tool-copy.c:149
 #, c-format
-msgid "<%s id='%s'> not (yet) defined."
-msgstr "<%s id='%s'> не е дефинирано (все още)."
+msgid "Destination %s is not a directory"
+msgstr "Целта „%s“ не е папка"
 
-#: ../gio/glib-compile-schemas.c:1001
+#: gio/gio-tool-copy.c:196 gio/gio-tool-move.c:186
 #, c-format
-msgid "invalid GVariant type string '%s'"
-msgstr "неправилен низ за вид на GVariant: „%s“"
+msgid "%s: overwrite “%s”? "
+msgstr "%s: да се презапише ли „%s“? "
 
-#: ../gio/glib-compile-schemas.c:1031
-msgid "<override> given but schema isn't extending anything"
-msgstr "използвано Ðµ <override>, Ð½Ð¾ Ñ\81Ñ\85емаÑ\82а Ð½Ðµ Ñ\80азÑ\88иÑ\80Ñ\8fва Ð½Ð¸Ñ\89о"
+#: gio/gio-tool-info.c:37
+msgid "List writable attributes"
+msgstr "СпиÑ\81Ñ\8aк Ð½Ð° Ð°Ñ\82Ñ\80ибÑ\83Ñ\82иÑ\82е, ÐºÐ¾Ð¸Ñ\82о Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ\81е Ð·Ð°Ð¿Ð¸Ñ\88аÑ\82"
 
-#: ../gio/glib-compile-schemas.c:1044
-#, c-format
-msgid "no <key name='%s'> to override"
-msgstr "липсва <key name='%s'> за предефиниране"
+#: gio/gio-tool-info.c:38
+msgid "Get file system info"
+msgstr "Получаване на информация за файловата система"
+
+#: gio/gio-tool-info.c:39 gio/gio-tool-list.c:36
+msgid "The attributes to get"
+msgstr "Атрибути за получаване"
+
+#: gio/gio-tool-info.c:39 gio/gio-tool-list.c:36
+msgid "ATTRIBUTES"
+msgstr "АТРИБУТИ"
+
+#: gio/gio-tool-info.c:40 gio/gio-tool-list.c:39 gio/gio-tool-set.c:34
+msgid "Don’t follow symbolic links"
+msgstr "Без проследяване на символни връзки"
 
-#: ../gio/glib-compile-schemas.c:1052
+#: gio/gio-tool-info.c:78
+msgid "attributes:\n"
+msgstr "атрибути:\n"
+
+#. Translators: This is a noun and represents and attribute of a file
+#: gio/gio-tool-info.c:134
 #, c-format
-msgid "<override name='%s'> already specified"
-msgstr "веÑ\87е Ðµ Ñ\83казано <override name='%s'>"
+msgid "display name: %s\n"
+msgstr "име Ð·Ð° Ð¿Ð¾ÐºÐ°Ð·Ð²Ð°Ð½Ðµ: %s\n"
 
-#: ../gio/glib-compile-schemas.c:1125
+#. Translators: This is a noun and represents and attribute of a file
+#: gio/gio-tool-info.c:139
 #, c-format
-msgid "<schema id='%s'> already specified"
-msgstr "веÑ\87е Ðµ Ñ\83казано <schema id='%s'>"
+msgid "edit name: %s\n"
+msgstr "име Ð·Ð° Ñ\80едакÑ\82иÑ\80ане: %s\n"
 
-#: ../gio/glib-compile-schemas.c:1137
+#: gio/gio-tool-info.c:145
 #, c-format
-msgid "<schema id='%s'> extends not yet existing schema '%s'"
-msgstr "<schema id='%s'> добавя към схема „%s“, която още не съществува"
+msgid "name: %s\n"
+msgstr "име: %s\n"
 
-#: ../gio/glib-compile-schemas.c:1153
+#: gio/gio-tool-info.c:152
 #, c-format
-msgid "<schema id='%s'> is list of not yet existing schema '%s'"
-msgstr "<schema id='%s'> е списък на схема „%s“, която още не съществува"
+msgid "type: %s\n"
+msgstr "вид: %s\n"
+
+#: gio/gio-tool-info.c:158
+msgid "size: "
+msgstr "размер: "
 
-#: ../gio/glib-compile-schemas.c:1161
+#: gio/gio-tool-info.c:163
+msgid "hidden\n"
+msgstr "скрит\n"
+
+#: gio/gio-tool-info.c:166
 #, c-format
-msgid "Can not be a list of a schema with a path"
-msgstr "Ð\9dе Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ðµ Ñ\81пиÑ\81Ñ\8aк Ð¾Ñ\82 Ñ\81Ñ\85ема Ñ\81 Ð¿Ñ\8aÑ\82"
+msgid "uri: %s\n"
+msgstr "адÑ\80еÑ\81: %s\n"
 
-#: ../gio/glib-compile-schemas.c:1171
+#: gio/gio-tool-info.c:172
 #, c-format
-msgid "Can not extend a schema with a path"
-msgstr "СÑ\85ема Ð½Ðµ Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ\81е Ñ\80азÑ\88иÑ\80Ñ\8fва Ñ\81 Ð¿Ñ\8aÑ\82"
+msgid "local path: %s\n"
+msgstr "локален Ð¿Ñ\8aÑ\82: %s\n"
 
-#: ../gio/glib-compile-schemas.c:1181
+#: gio/gio-tool-info.c:205
 #, c-format
+msgid "unix mount: %s%s %s %s %s\n"
+msgstr "монтирано по unix: %s%s %s %s %s\n"
+
+#: gio/gio-tool-info.c:286
+msgid "Settable attributes:\n"
+msgstr "Атрибути за задаване:\n"
+
+#: gio/gio-tool-info.c:310
+msgid "Writable attribute namespaces:\n"
+msgstr "Пространства от имена на атрибути за запис:\n"
+
+#: gio/gio-tool-info.c:345
+msgid "Show information about locations."
+msgstr "Извеждане на информация за местоположенията."
+
+#: gio/gio-tool-info.c:347
 msgid ""
-"<schema id='%s'> is a list, extending <schema id='%s'> which is not a list"
+"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 ""
-"<schema id='%s'> е списък, разширяващ <schema id='%s'>, която не е списък"
-
-#: ../gio/glib-compile-schemas.c:1191
-#, c-format
+"„gio info“ е аналог на „ls“, но се ползват местоположения по GIO, а не "
+"локални\n"
+"файлове. Така може да ползвате „smb://server/resource/file.txt“, например.\n"
+"Файловите атрибути също се указват с името им по GIO, напр: „standard::"
+"icon“,\n"
+"просто чрез името на пространството от имена „unix“ или „*“, което "
+"съответства\n"
+"на всички атрибути"
+
+#. Translators: commandline placeholder
+#: gio/gio-tool-launch.c:54
+msgid "DESKTOP-FILE [FILE-ARG …]"
+msgstr "ФАЙЛ_DESKTOP [АРГУМЕНТ_ФАЙЛ …]"
+
+#: gio/gio-tool-launch.c:57
 msgid ""
-"<schema id='%s' list-of='%s'> extends <schema id='%s' list-of='%s'> but '%s' "
-"does not extend '%s'"
+"Launch an application from a desktop file, passing optional filename "
+"arguments to it."
 msgstr ""
-"<schema id='%s' list-of='%s'> разширява <schema id='%s' list-of='%s'>, но "
-"„%s“ не разширява „%s“"
+"Стартиране на приложение от файл „desktop“ като може да се добавят аргументи-"
+"имена на файлове."
 
-#: ../gio/glib-compile-schemas.c:1208
-#, c-format
-msgid "a path, if given, must begin and end with a slash"
-msgstr "всеки път трябва да започва и да завършва с наклонена черта („/“)"
+#: gio/gio-tool-launch.c:77
+msgid "No desktop file given"
+msgstr "Не е указан файл „desktop“"
 
-#: ../gio/glib-compile-schemas.c:1215
-#, c-format
-msgid "the path of a list must end with ':/'"
-msgstr "пътят на списък трябва да завършва с „:/“"
+#: gio/gio-tool-launch.c:85
+msgid "The launch command is not currently supported on this platform"
+msgstr "Командата за стартиране не се поддържа на тази платформа"
 
-#: ../gio/glib-compile-schemas.c:1247
+#: gio/gio-tool-launch.c:98
 #, c-format
-msgid "<%s id='%s'> already specified"
-msgstr "веÑ\87е Ðµ Ñ\83казано <%s id='%s'>"
+msgid "Unable to load ‘%s‘: %s"
+msgstr "Ð\9dе Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ\81е Ð·Ð°Ñ\80еди â\80\9e%sâ\80\9c: %s"
 
-#: ../gio/glib-compile-schemas.c:1397 ../gio/glib-compile-schemas.c:1413
+#: gio/gio-tool-launch.c:107
 #, c-format
-msgid "Only one <%s> element allowed inside <%s>"
-msgstr "Само ÐµÐ´Ð¸Ð½ ÐµÐ»ÐµÐ¼ÐµÐ½Ñ\82 <%s> Ðµ Ð¿Ð¾Ð·Ð²Ð¾Ð»ÐµÐ½ Ð² <%s>"
+msgid "Unable to load application information for ‘%s‘"
+msgstr "Ð\9dе Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ\81е Ð·Ð°Ñ\80еди Ð¸Ð½Ñ\84оÑ\80маÑ\86иÑ\8fÑ\82а Ð·Ð° Ð¿Ñ\80иложениеÑ\82о â\80\9e%sâ\80\9c"
 
-#: ../gio/glib-compile-schemas.c:1495
+#: gio/gio-tool-launch.c:119
 #, c-format
-msgid "Element <%s> not allowed at the top level"
-msgstr "Ð\95леменÑ\82Ñ\8aÑ\82 <%s> Ð½Ðµ Ðµ Ð¿Ð¾Ð·Ð²Ð¾Ð»ÐµÐ½ Ð½Ð° Ð½Ð°Ð¹-гоÑ\80но Ð½Ð¸Ð²Ð¾"
+msgid "Unable to launch application ‘%s’: %s"
+msgstr "Ð\9dе Ð¼Ð¾Ð¶Ðµ Ð´Ð° Ñ\81е Ñ\81Ñ\82аÑ\80Ñ\82иÑ\80а Ð¿Ñ\80иложениеÑ\82о â\80\9e%sâ\80\9c: %s"
 
-#. Translators: Do not translate "--strict".
-#: ../gio/glib-compile-schemas.c:1794 ../gio/glib-compile-schemas.c:1865
-#: ../gio/glib-compile-schemas.c:1941
-#, c-format
-msgid "--strict was specified; exiting.\n"
-msgstr "Указано е „--strict“, изход.\n"
+#: gio/gio-tool-list.c:37 gio/gio-tool-tree.c:32
+msgid "Show hidden files"
+msgstr "Показване на скритите файлове"
 
-#: ../gio/glib-compile-schemas.c:1802
-#, c-format
-msgid "This entire file has been ignored.\n"
-msgstr "Целият файл е пренебрегнат.\n"
+#: gio/gio-tool-list.c:38
+msgid "Use a long listing format"
+msgstr "Подробен формат на извеждане"
 
-#: ../gio/glib-compile-schemas.c:1861
-#, c-format
-msgid "Ignoring this file.\n"
-msgstr "Пренебрегване на файла.\n"
+#: gio/gio-tool-list.c:40
+msgid "Print display names"
+msgstr "Отпечатване на имената за показване"
 
-#: ../gio/glib-compile-schemas.c:1901
-#, c-format
-msgid "No such key '%s' in schema '%s' as specified in override file '%s'"
+#: gio/gio-tool-list.c:41
+msgid "Print full URIs"
+msgstr "Отпечатване на целите адреси"
+
+#: gio/gio-tool-list.c:177
+msgid "List the contents of the locations."
+msgstr "Изброяване на съдържанието на местоположенията."
+
+#: gio/gio-tool-list.c:179
+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 ""
-"Липсва ключ „%s“ в схемата „%s“, указан във файла за предефиниране „%s“"
+"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<\n"
+"\n"
+"„gio list“ е аналог на „ls“, но се ползват местоположения по GIO, а не\n"
+"локални файлове. Така може да ползвате „smb://server/resource/file.txt“,\n"
+"например. Файловите атрибути също се указват с името им по GIO, напр:\n"
+"„standard::icon“"
 
-#: ../gio/glib-compile-schemas.c:1907 ../gio/glib-compile-schemas.c:1965
-#: ../gio/glib-compile-schemas.c:1993
-#, c-format
-msgid "; ignoring override for this key.\n"
-msgstr "пренебрегване на предефинирането на ключа.\n"
+#. Translators: commandline placeholder
+#: gio/gio-tool-mime.c:71
+msgid "MIMETYPE"
+msgstr "ВИД_MIME"
 
-#: ../gio/glib-compile-schemas.c:1911 ../gio/glib-compile-schemas.c:1969
-#: ../gio/glib-compile-schemas.c:1997
-#, c-format
-msgid " and --strict was specified; exiting.\n"
-msgstr "и е указано „--strict“, излизане.\n"
+#: gio/gio-tool-mime.c:71
+msgid "HANDLER"
+msgstr "ОБРАБОТВАЩА_ПРОГРАМА"
 
-#: ../gio/glib-compile-schemas.c:1927
-#, c-format
+#: gio/gio-tool-mime.c:76
+msgid "Get or set the handler for a mimetype."
+msgstr "Получаване или задаване на ОБРАБОТВАЩАта_ПРОГРАМА за даден ВИД_MIME."
+
+#: gio/gio-tool-mime.c:78
 msgid ""
-"error parsing key '%s' in schema '%s' as specified in override file '%s': %s."
+"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 ""
-"грешка при анализиране на ключа „%s“ от схемата „%s“, указан във файла за "
-"предефиниране „%s“ — %s."
+"Ако не е указано обработващо приложение, се извеждат регистрирани и "
+"препоръчани\n"
+"програми за този вид MIME. Ако е указана такова, то се задава като "
+"стандартното\n"
+"за обработка на този вид MIME."
 
-#: ../gio/glib-compile-schemas.c:1937
-#, c-format
-msgid "Ignoring override for this key.\n"
-msgstr "Пренебрегване на предефинирането на ключа.\n"
+#: gio/gio-tool-mime.c:100
+msgid "Must specify a single mimetype, and maybe a handler"
+msgstr "Трябва да укажете точно един вид MIME и максимум едно приложение"
 
-#: ../gio/glib-compile-schemas.c:1955
+#: gio/gio-tool-mime.c:116
 #, c-format
-msgid ""
-"override for key '%s' in schema '%s' in override file '%s' is outside the "
-"range given in the schema"
-msgstr ""
-"предефинирането на ключа „%s“ в схемата „%s“ във файла за предефиниране „%s“ "
-"е извън обсега, даден в схемата"
+msgid "No default applications for “%s”\n"
+msgstr "Няма стандартно приложение за „%s“\n"
 
-#: ../gio/glib-compile-schemas.c:1983
+#: gio/gio-tool-mime.c:122
 #, c-format
-msgid ""
-"override for key '%s' in schema '%s' in override file '%s' is not in the "
-"list of valid choices"
-msgstr ""
-"предефинирането на ключа „%s“ в схемата „%s“ във файла за предефиниране „%s“ "
-"не е в списъка с позволени стойности"
+msgid "Default application for “%s”: %s\n"
+msgstr "Стандартно приложение за „%s“: %s\n"
 
-#: ../gio/glib-compile-schemas.c:2036
-msgid "where to store the gschemas.compiled file"
-msgstr "мÑ\8fÑ\81Ñ\82о Ð·Ð° Ñ\81Ñ\8aÑ\85Ñ\80анÑ\8fване Ð½Ð° Ñ\84айла gschemas.compiled"
+#: gio/gio-tool-mime.c:127
+msgid "Registered applications:\n"
+msgstr "РегиÑ\81Ñ\82Ñ\80иÑ\80ани Ð¿Ñ\80иложениÑ\8f:\n"
 
-#: ../gio/glib-compile-schemas.c:2037
-msgid "Abort on any errors in schemas"
-msgstr "Ð\9fÑ\80екÑ\8aÑ\81ване Ð½Ð° Ñ\80абоÑ\82а Ð¿Ñ\80и Ð²Ñ\81Ñ\8fкакви Ð³Ñ\80еÑ\88ки Ð² Ñ\81Ñ\85емиÑ\82е"
+#: gio/gio-tool-mime.c:129
+msgid "No registered applications\n"
+msgstr "Ð\9dÑ\8fма Ñ\80егиÑ\81Ñ\82Ñ\80иÑ\80ани Ð¿Ñ\80иложениÑ\8f:\n"
 
-#: ../gio/glib-compile-schemas.c:2038
-msgid "Do not write the gschema.compiled file"
-msgstr "Ð\91ез Ð·Ð°Ð¿Ð¸Ñ\81 Ð½Ð° Ñ\84айл gschema.compiled"
+#: gio/gio-tool-mime.c:140
+msgid "Recommended applications:\n"
+msgstr "Ð\9fÑ\80епоÑ\80Ñ\8aÑ\87ани Ð¿Ñ\80иложениÑ\8f:\n"
 
-#: ../gio/glib-compile-schemas.c:2039
-msgid "Do not enforce key name restrictions"
-msgstr "Без налагане на ограниченията за имена на ключове"
+#: gio/gio-tool-mime.c:142
+msgid "No recommended applications\n"
+msgstr "Няма препоръчани приложения:\n"
+
+#: gio/gio-tool-mime.c:162
+#, c-format
+msgid "Failed to load info for handler “%s”"
+msgstr "Неуспешно зареждане на информация за функцията за обработка „%s“"
+
+#: gio/gio-tool-mime.c:168
+#, c-format
+msgid "Failed to set “%s” as the default handler for “%s”: %s\n"
+msgstr ""
+"„%s“ не може да се зададе като стандартното приложение за обработка на „%s“: "
+"%s\n"
+
+#: gio/gio-tool-mkdir.c:31
+msgid "Create parent directories"
+msgstr "Създаване на родителските папки"
+
+#: gio/gio-tool-mkdir.c:52
+msgid "Create directories."
+msgstr "Създаване на папки."
+
+#: 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 ""
+"„gio mkdir“ е аналог на „mkdir“, но се ползват местоположения по GIO, а не\n"
+"локални файлове. Така може да ползвате „smb://server/resource/file.txt“,\n"
+"например."
+
+#: gio/gio-tool-monitor.c:37
+msgid "Monitor a directory (default: depends on type)"
+msgstr "Следене на директория (стандартно: зависи от вида)"
+
+#: gio/gio-tool-monitor.c:39
+msgid "Monitor a file (default: depends on type)"
+msgstr "Следене на файл (стандартно: зависи от вида)"
+
+#: gio/gio-tool-monitor.c:41
+msgid "Monitor a file directly (notices changes made via hardlinks)"
+msgstr "Директно следене на файл (отбелязват се промени през твърди връзки)"
+
+#: gio/gio-tool-monitor.c:43
+msgid "Monitors a file directly, but doesn’t report changes"
+msgstr "Директно следене на файл без докладване на промени"
+
+#: gio/gio-tool-monitor.c:45
+msgid "Report moves and renames as simple deleted/created events"
+msgstr ""
+"Докладване на преместванията/преименуванията като прости събития за "
+"изтриване и създаване наново"
+
+#: gio/gio-tool-monitor.c:47
+msgid "Watch for mount events"
+msgstr "Следене за събития по монтиране"
+
+#: gio/gio-tool-monitor.c:209
+msgid "Monitor files or directories for changes."
+msgstr "Следене на файлове или директории за промени."
+
+#: gio/gio-tool-mount.c:63
+msgid "Mount as mountable"
+msgstr "Монтиране като подлежащо за монтиране"
+
+#: gio/gio-tool-mount.c:64
+msgid "Mount volume with device file, or other identifier"
+msgstr "Монтиране на том чрез файла му за устройство или друг идентификатор"
+
+#: gio/gio-tool-mount.c:64
+msgid "ID"
+msgstr "ИДЕНТИФИКАТОР"
+
+#: gio/gio-tool-mount.c:65
+msgid "Unmount"
+msgstr "Демонтиране"
+
+#: gio/gio-tool-mount.c:66
+msgid "Eject"
+msgstr "Изваждане"
+
+#: gio/gio-tool-mount.c:67
+msgid "Stop drive with device file"
+msgstr "Спиране на устройството, отговарящо на файла за устройство"
+
+#: gio/gio-tool-mount.c:67
+msgid "DEVICE"
+msgstr "УСТРОЙСТВО"
+
+#: gio/gio-tool-mount.c:68
+msgid "Unmount all mounts with the given scheme"
+msgstr "Демонтиране на всичко монтирано с текущата схема"
+
+#: gio/gio-tool-mount.c:68
+msgid "SCHEME"
+msgstr "СХЕМА"
+
+#: gio/gio-tool-mount.c:69
+msgid "Ignore outstanding file operations when unmounting or ejecting"
+msgstr "При демонтиране или изваждане предстоящите операции да се прескочат"
+
+#: gio/gio-tool-mount.c:70
+msgid "Use an anonymous user when authenticating"
+msgstr "Идентификация като анонимен потребител"
+
+#. Translator: List here is a verb as in 'List all mounts'
+#: gio/gio-tool-mount.c:72
+msgid "List"
+msgstr "Изброяване"
+
+#: gio/gio-tool-mount.c:73
+msgid "Monitor events"
+msgstr "Наблюдаване на събитията"
+
+#: gio/gio-tool-mount.c:74
+msgid "Show extra information"
+msgstr "Показване на допълнителна информация"
+
+#: gio/gio-tool-mount.c:75
+msgid "The numeric PIM when unlocking a VeraCrypt volume"
+msgstr ""
+"Личен мултипликатор на итерациите (PIM) при дешифрирането на том на VeraCrypt"
+
+#: gio/gio-tool-mount.c:75
+msgid "PIM"
+msgstr "PIM"
+
+#: gio/gio-tool-mount.c:76
+msgid "Mount a TCRYPT hidden volume"
+msgstr "Монтиране на том скрит с TCRYPT"
+
+#: gio/gio-tool-mount.c:77
+msgid "Mount a TCRYPT system volume"
+msgstr "Монтиране на системен том с TCRYPT"
+
+#: gio/gio-tool-mount.c:265 gio/gio-tool-mount.c:297
+msgid "Anonymous access denied"
+msgstr "Анонимният достъп е отказан"
+
+#: gio/gio-tool-mount.c:522
+msgid "No drive for device file"
+msgstr "Няма устройство към файла за устройство"
+
+#: gio/gio-tool-mount.c:1014
+msgid "No volume for given ID"
+msgstr "Няма том с такъв идентификатор"
+
+#: gio/gio-tool-mount.c:1203
+msgid "Mount or unmount the locations."
+msgstr "Монтиране или демонтиране на местоположенията."
+
+#: gio/gio-tool-move.c:42
+msgid "Don’t use copy and delete fallback"
+msgstr "Без резервния вариант с копиране и последващо изтриване"
+
+#: gio/gio-tool-move.c:99
+msgid "Move one or more files from SOURCE to DEST."
+msgstr "Преместване на един или повече файлове от ИЗТОЧНИКа към ЦЕЛта."
+
+#: 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 ""
+"„gio move“ е аналог на „mv“, но се ползват местоположения по GIO, а не "
+"локални\n"
+"файлове. Така може да ползвате „smb://server/resource/file.txt“, например"
+
+#: gio/gio-tool-move.c:143
+#, c-format
+msgid "Target %s is not a directory"
+msgstr "Целта „%s“ не е папка"
+
+#: gio/gio-tool-open.c:75
+msgid ""
+"Open files with the default application that\n"
+"is registered to handle files of this type."
+msgstr ""
+"Отваряне на файлове със стандартното приложение, което\n"
+"е регистрирано да обработва файлове от този вид."
+
+#: gio/gio-tool-remove.c:31 gio/gio-tool-trash.c:33
+msgid "Ignore nonexistent files, never prompt"
+msgstr "Прескачане на несъществуващите файлове без предупреждаване"
+
+#: gio/gio-tool-remove.c:52
+msgid "Delete the given files."
+msgstr "Изтриване на изброените файлове."
+
+#: gio/gio-tool-rename.c:45
+msgid "NAME"
+msgstr "ИМЕ"
+
+#: gio/gio-tool-rename.c:50
+msgid "Rename a file."
+msgstr "Преименуване на файл."
+
+#: gio/gio-tool-rename.c:70
+msgid "Missing argument"
+msgstr "Липсва аргумент"
+
+#: gio/gio-tool-rename.c:76 gio/gio-tool-save.c:190 gio/gio-tool-set.c:137
+msgid "Too many arguments"
+msgstr "Прекалено много аргументи"
+
+#: gio/gio-tool-rename.c:95
+#, c-format
+msgid "Rename successful. New uri: %s\n"
+msgstr "Успешно преименуване. Новият адрес е: %s\n"
+
+#: gio/gio-tool-save.c:50
+msgid "Only create if not existing"
+msgstr "Създаване, ако не съществува"
+
+#: gio/gio-tool-save.c:51
+msgid "Append to end of file"
+msgstr "Добавяне към края на файла"
+
+#: gio/gio-tool-save.c:52
+msgid "When creating, restrict access to the current user"
+msgstr "При създаване ограничаване на права до такива за текущия потребител"
+
+#: gio/gio-tool-save.c:53
+msgid "When replacing, replace as if the destination did not exist"
+msgstr "При заместване да се замества все едно целта не съществува"
+
+#. 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 "Отпечатване на нов ETAG в края"
+
+#. 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 "Етикетът ETAG на файла, който се презаписва"
+
+#: gio/gio-tool-save.c:57
+msgid "ETAG"
+msgstr "ETAG"
+
+#: gio/gio-tool-save.c:113
+msgid "Error reading from standard input"
+msgstr "Грешка при четене от стандартния вход"
+
+#. Translators: The "etag" is a token allowing to verify whether a file has been modified
+#: gio/gio-tool-save.c:139
+msgid "Etag not available\n"
+msgstr "Липсва ETAG\n"
+
+#: gio/gio-tool-save.c:163
+msgid "Read from standard input and save to DEST."
+msgstr "Четене от стандартния вход и запис в ЦЕЛта."
+
+#: gio/gio-tool-save.c:183
+msgid "No destination given"
+msgstr "Не е зададена цел"
+
+#: gio/gio-tool-set.c:33
+msgid "Type of the attribute"
+msgstr "Вид атрибут"
+
+#: gio/gio-tool-set.c:33
+msgid "TYPE"
+msgstr "ВИД"
+
+#: gio/gio-tool-set.c:89
+msgid "ATTRIBUTE"
+msgstr "АТРИБУТ"
+
+#: gio/gio-tool-set.c:89
+msgid "VALUE"
+msgstr "СТОЙНОСТ"
+
+#: gio/gio-tool-set.c:93
+msgid "Set a file attribute of LOCATION."
+msgstr "Задаване на файлов атрибут МЕСТОПОЛОЖЕНИЕ."
+
+#: gio/gio-tool-set.c:113
+msgid "Location not specified"
+msgstr "Местоположението не е указано"
+
+#: gio/gio-tool-set.c:120
+msgid "Attribute not specified"
+msgstr "Атрибутът не е указан"
+
+#: gio/gio-tool-set.c:130
+msgid "Value not specified"
+msgstr "Стойността не е указана"
+
+#: gio/gio-tool-set.c:180
+#, c-format
+msgid "Invalid attribute type “%s”"
+msgstr "Неправилен вид на атрибут „%s“"
+
+#: gio/gio-tool-trash.c:34
+msgid "Empty the trash"
+msgstr "Изчистване на кошчето"
+
+#: gio/gio-tool-trash.c:35
+msgid "List files in the trash with their original locations"
+msgstr ""
+"Списък на файловете в кошчето заедно с първоначалното им местоположение"
+
+#: gio/gio-tool-trash.c:36
+msgid ""
+"Restore a file from trash to its original location (possibly recreating the "
+"directory)"
+msgstr ""
+"Възстановяване на файл от кошчето в първоначалното му местоположение (това "
+"може да доведе до възстановяване на папка)"
+
+#: gio/gio-tool-trash.c:106
+msgid "Unable to find original path"
+msgstr "Първоначалният път не може да бъде открит"
+
+#: gio/gio-tool-trash.c:123
+msgid "Unable to recreate original location: "
+msgstr "Първоначалното местоположение не може да се възстанови: "
+
+#: gio/gio-tool-trash.c:136
+msgid "Unable to move file to its original location: "
+msgstr "Този файл не може да се премести на първоначалното си местоположение: "
+
+#: gio/gio-tool-trash.c:225
+msgid "Move/Restore files or directories to the trash."
+msgstr "Преместване/възстановяване на файлове или директории от кошчето."
+
+#: gio/gio-tool-trash.c:227
+msgid ""
+"Note: for --restore switch, if the original location of the trashed file \n"
+"already exists, it will not be overwritten unless --force is set."
+msgstr ""
+"Бележка: ако на оригиналното местоположение съответстващо обекта посочен "
+"към\n"
+"опцията „--restore“ съществува, то няма да бъде презаписано, освен ако не е\n"
+"дадена и опцията „--force“."
+
+#: gio/gio-tool-trash.c:258
+msgid "Location given doesn't start with trash:///"
+msgstr "Местоположението не започва с „trash:///“"
+
+#: gio/gio-tool-tree.c:33
+msgid "Follow symbolic links, mounts and shortcuts"
+msgstr ""
+"Проследяване на символните връзки, монтираните устройства и ускорителите"
+
+#: gio/gio-tool-tree.c:244
+msgid "List contents of directories in a tree-like format."
+msgstr "Извеждане на съдържанието на директориите в дървовиден вариант."
+
+#: gio/glib-compile-resources.c:140 gio/glib-compile-schemas.c:1514
+#, c-format
+msgid "Element <%s> not allowed inside <%s>"
+msgstr "Елементът <%s> не е позволен в <%s>"
+
+#: gio/glib-compile-resources.c:144
+#, c-format
+msgid "Element <%s> not allowed at toplevel"
+msgstr "Елементът <%s> не е позволен на най-горно ниво"
+
+#: gio/glib-compile-resources.c:234
+#, c-format
+msgid "File %s appears multiple times in the resource"
+msgstr "Файлът „%s“ присъства многократно в ресурса"
+
+#: gio/glib-compile-resources.c:245
+#, c-format
+msgid "Failed to locate “%s” in any source directory"
+msgstr "„%s“ липсва във всички папки за ресурси"
+
+#: gio/glib-compile-resources.c:256
+#, c-format
+msgid "Failed to locate “%s” in current directory"
+msgstr "„%s“ липсва в текущата папка"
+
+#: gio/glib-compile-resources.c:290
+#, c-format
+msgid "Unknown processing option “%s”"
+msgstr "Непозната опция за обработка „%s“"
+
+#. Translators: the first %s is a gresource XML attribute,
+#. * the second %s is an environment variable, and the third
+#. * %s is a command line tool
+#.
+#: gio/glib-compile-resources.c:310 gio/glib-compile-resources.c:367
+#: gio/glib-compile-resources.c:424
+#, c-format
+msgid "%s preprocessing requested, but %s is not set, and %s is not in PATH"
+msgstr ""
+"Заявена е предварителна обработка с „%s“, но „%s“ не е зададен, а и „%s“ не "
+"е в „PATH“"
+
+#: gio/glib-compile-resources.c:457
+#, c-format
+msgid "Error reading file %s: %s"
+msgstr "Грешка при четене на файл „%s“: %s"
+
+#: gio/glib-compile-resources.c:477
+#, c-format
+msgid "Error compressing file %s"
+msgstr "Грешка при компресиране на файл: %s"
+
+#: gio/glib-compile-resources.c:541
+#, c-format
+msgid "text may not appear inside <%s>"
+msgstr "в <%s> не е позволен текст"
+
+#: gio/glib-compile-resources.c:819 gio/glib-compile-schemas.c:2172
+msgid "Show program version and exit"
+msgstr "Извеждане на версията на програмата и изход"
+
+#: gio/glib-compile-resources.c:820
+msgid "Name of the output file"
+msgstr "Име на изходния файл"
+
+#: gio/glib-compile-resources.c:821
+msgid ""
+"The directories to load files referenced in FILE from (default: current "
+"directory)"
+msgstr ""
+"Папката откъдето да се заредят файловете, указани във ФАЙЛа (стандартно е "
+"текущата)"
+
+#: gio/glib-compile-resources.c:821 gio/glib-compile-schemas.c:2173
+#: gio/glib-compile-schemas.c:2202
+msgid "DIRECTORY"
+msgstr "ПАПКА"
+
+#: gio/glib-compile-resources.c:822
+msgid ""
+"Generate output in the format selected for by the target filename extension"
+msgstr "Формат на изхода според разширението на изходния файл"
+
+#: gio/glib-compile-resources.c:823
+msgid "Generate source header"
+msgstr "Заглавни части"
+
+#: gio/glib-compile-resources.c:824
+msgid "Generate source code used to link in the resource file into your code"
+msgstr "Генериране на изходния код за свързване на ресурсния файл в кода ви"
+
+#: gio/glib-compile-resources.c:825
+msgid "Generate dependency list"
+msgstr "Списък със зависимостите"
+
+#: gio/glib-compile-resources.c:826
+msgid "Name of the dependency file to generate"
+msgstr "Име на файл със зависимости, който да се генерира"
+
+#: gio/glib-compile-resources.c:827
+msgid "Include phony targets in the generated dependency file"
+msgstr "Включване на изкуствените цели в генерираните файлове със зависимости"
+
+#: gio/glib-compile-resources.c:828
+msgid "Don’t automatically create and register resource"
+msgstr "Без автоматично генериране и регистриране на ресурси"
+
+#: gio/glib-compile-resources.c:829
+msgid "Don’t export functions; declare them G_GNUC_INTERNAL"
+msgstr "Не изнасяйте функции. Декларирайте ги с „G_GNUC_INTERNAL“"
+
+#: gio/glib-compile-resources.c:830
+msgid ""
+"Don’t embed resource data in the C file; assume it's linked externally "
+"instead"
+msgstr ""
+"Без вграждане на ресурсните данни във файла на C — приемане, че е свързан"
+
+#: gio/glib-compile-resources.c:831
+msgid "C identifier name used for the generated source code"
+msgstr "Идентификатор на C за генерирания изходен код"
+
+#: gio/glib-compile-resources.c:832
+msgid "The target C compiler (default: the CC environment variable)"
+msgstr ""
+"Целеви компилатор на C (стандартно: съдържанието на променливата на средата "
+"„CC“)"
+
+#: gio/glib-compile-resources.c:858
+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 ""
+"Компилиране на файловете с указания за ресурси в ресурсен файл.\n"
+"Файловете за указване на ресурси трябва да завършват на „.gresource.xml“,\n"
+"а ресурсният файл — на „.gresource“."
+
+#: gio/glib-compile-resources.c:880
+msgid "You should give exactly one file name\n"
+msgstr "Изисква се точно едно име на файл\n"
+
+#: gio/glib-compile-schemas.c:92
+#, c-format
+msgid "nick must be a minimum of 2 characters"
+msgstr "псевдонимът трябва да е поне 2 знака"
+
+#: gio/glib-compile-schemas.c:103
+#, c-format
+msgid "Invalid numeric value"
+msgstr "Неправилна числова стойност"
+
+#: gio/glib-compile-schemas.c:111
+#, c-format
+msgid "<value nick='%s'/> already specified"
+msgstr "вече е указано <value nick='%s'/>"
+
+#: gio/glib-compile-schemas.c:119
+#, c-format
+msgid "value='%s' already specified"
+msgstr "value='%s' вече е указано"
+
+#: gio/glib-compile-schemas.c:133
+#, c-format
+msgid "flags values must have at most 1 bit set"
+msgstr "стойността за флаговете трябва да има поне един зададен бит"
+
+#: gio/glib-compile-schemas.c:158
+#, c-format
+msgid "<%s> must contain at least one <value>"
+msgstr "<%s> трябва да съдържа поне един възел <value>"
+
+#: gio/glib-compile-schemas.c:314
+#, c-format
+msgid "<%s> is not contained in the specified range"
+msgstr "<%s> липсва в указания диапазон"
+
+#: gio/glib-compile-schemas.c:326
+#, c-format
+msgid "<%s> is not a valid member of the specified enumerated type"
+msgstr "<%s> не е правилен член на указания изброим вид"
+
+#: gio/glib-compile-schemas.c:332
+#, c-format
+msgid "<%s> contains string not in the specified flags type"
+msgstr "<%s> съдържа низ, който не е в указания вид за флагове"
+
+#: gio/glib-compile-schemas.c:338
+#, c-format
+msgid "<%s> contains a string not in <choices>"
+msgstr "<%s> съдържа низ, който липсва в <choices>"
+
+#: gio/glib-compile-schemas.c:372
+msgid "<range/> already specified for this key"
+msgstr "<range/> вече е указано за ключа"
+
+#: gio/glib-compile-schemas.c:390
+#, c-format
+msgid "<range> not allowed for keys of type “%s”"
+msgstr "<range> не се позволява за ключове от вида „%s“"
+
+#: gio/glib-compile-schemas.c:407
+#, c-format
+msgid "<range> specified minimum is greater than maximum"
+msgstr "указаният минимум за <range> е по-голям от максимума"
+
+#: gio/glib-compile-schemas.c:432
+#, c-format
+msgid "unsupported l10n category: %s"
+msgstr "неподдържана категория за локализиране: %s"
+
+#: gio/glib-compile-schemas.c:440
+msgid "l10n requested, but no gettext domain given"
+msgstr "изискано е локализиране, но липсва област на „gettext“"
+
+#: gio/glib-compile-schemas.c:452
+msgid "translation context given for value without l10n enabled"
+msgstr "даден е преводачески контекст за стойност без локализиране"
+
+#: gio/glib-compile-schemas.c:474
+#, c-format
+msgid "Failed to parse <default> value of type “%s”: "
+msgstr "Неуспешен анализ на стойността за <default> от вида „%s“: "
+
+#: gio/glib-compile-schemas.c:491
+msgid ""
+"<choices> cannot be specified for keys tagged as having an enumerated type"
+msgstr ""
+"<choices> не може да се указва за ключове, които са отбелязани, че са от "
+"изброим вид"
+
+#: gio/glib-compile-schemas.c:500
+msgid "<choices> already specified for this key"
+msgstr "<choices> вече е указано за този ключ"
+
+#: gio/glib-compile-schemas.c:512
+#, c-format
+msgid "<choices> not allowed for keys of type “%s”"
+msgstr "<choices> не е позволен за ключове от вид „%s“"
+
+#: gio/glib-compile-schemas.c:528
+#, c-format
+msgid "<choice value='%s'/> already given"
+msgstr "<choice value='%s'/> вече е указано за този ключ"
+
+#: gio/glib-compile-schemas.c:543
+#, c-format
+msgid "<choices> must contain at least one <choice>"
+msgstr "<choices> трябва да съдържа поне един <choice>"
+
+#: gio/glib-compile-schemas.c:557
+msgid "<aliases> already specified for this key"
+msgstr "<aliases> вече е указано за този ключ"
+
+#: gio/glib-compile-schemas.c:561
+msgid ""
+"<aliases> can only be specified for keys with enumerated or flags types or "
+"after <choices>"
+msgstr ""
+"<aliases> може да се указва само за ключове от изброим или флагов вид или "
+"след <choices>"
+
+#: gio/glib-compile-schemas.c:580
+#, c-format
+msgid ""
+"<alias value='%s'/> given when “%s” is already a member of the enumerated "
+"type"
+msgstr ""
+"<alias value='%s'/> е указано, но „%s“ вече е е член на е изброимия вид"
+
+#: gio/glib-compile-schemas.c:586
+#, c-format
+msgid "<alias value='%s'/> given when <choice value='%s'/> was already given"
+msgstr "<alias value='%s'/> е указано, но <choice value='%s'/> вече е зададен"
+
+#: gio/glib-compile-schemas.c:594
+#, c-format
+msgid "<alias value='%s'/> already specified"
+msgstr "<alias value='%s'/> вече е указано за този ключ"
+
+#: gio/glib-compile-schemas.c:604
+#, c-format
+msgid "alias target “%s” is not in enumerated type"
+msgstr "целта на псевдоним „%s“ не е изброим вид"
+
+#: gio/glib-compile-schemas.c:605
+#, c-format
+msgid "alias target “%s” is not in <choices>"
+msgstr "целта на псевдоним „%s“ не е в <choices>"
+
+#: gio/glib-compile-schemas.c:620
+#, c-format
+msgid "<aliases> must contain at least one <alias>"
+msgstr "<aliases> трябва да съдържа поне един <alias>"
+
+#: gio/glib-compile-schemas.c:797
+msgid "Empty names are not permitted"
+msgstr "Празни имена не са позволени"
+
+#: gio/glib-compile-schemas.c:807
+#, c-format
+msgid "Invalid name “%s”: names must begin with a lowercase letter"
+msgstr "Неправилно име „%s“: имената трябва да започват с малка буква"
+
+#: gio/glib-compile-schemas.c:819
+#, c-format
+msgid ""
+"Invalid name “%s”: invalid character “%c”; only lowercase letters, numbers "
+"and hyphen (“-”) are permitted"
+msgstr ""
+"Неправилно име „%s“: неправилен знак „%c“ — позволени са само малки букви, "
+"цифри и тире („-“)"
+
+#: gio/glib-compile-schemas.c:828
+#, c-format
+msgid "Invalid name “%s”: two successive hyphens (“--”) are not permitted"
+msgstr "Неправилно име „%s“: не са позволени две последователни тирета („--“)"
+
+#: gio/glib-compile-schemas.c:837
+#, c-format
+msgid "Invalid name “%s”: the last character may not be a hyphen (“-”)"
+msgstr "Неправилно име „%s“: последният знак не може да е тире („-“)"
+
+#: gio/glib-compile-schemas.c:845
+#, c-format
+msgid "Invalid name “%s”: maximum length is 1024"
+msgstr "Неправилно име „%s“: максималната дължина е 1024"
+
+#: gio/glib-compile-schemas.c:917
+#, c-format
+msgid "<child name='%s'> already specified"
+msgstr "<child name='%s'> вече е указано"
+
+#: gio/glib-compile-schemas.c:943
+msgid "Cannot add keys to a “list-of” schema"
+msgstr "Към схема „list-of“ не може да се добавят ключове"
+
+#: gio/glib-compile-schemas.c:954
+#, c-format
+msgid "<key name='%s'> already specified"
+msgstr "<key name='%s'> вече е указано"
+
+#: gio/glib-compile-schemas.c:972
+#, c-format
+msgid ""
+"<key name='%s'> shadows <key name='%s'> in <schema id='%s'>; use <override> "
+"to modify value"
+msgstr ""
+"<key name='%s'> засенчва <key name='%s'> в <schema id='%s'>. Използвайте "
+"<override>, за да промените стойността"
+
+#: gio/glib-compile-schemas.c:983
+#, c-format
+msgid ""
+"Exactly one of “type”, “enum” or “flags” must be specified as an attribute "
+"to <key>"
+msgstr ""
+"Като атрибут на <key> трябва да присъства точно едно от „type“, „enum“ или "
+"„flags“"
+
+#: gio/glib-compile-schemas.c:1002
+#, c-format
+msgid "<%s id='%s'> not (yet) defined."
+msgstr "<%s id='%s'> не е дефинирано (все още)."
+
+#: gio/glib-compile-schemas.c:1017
+#, c-format
+msgid "Invalid GVariant type string “%s”"
+msgstr "Неправилен низ за вид на „GVariant“: „%s“"
+
+#: gio/glib-compile-schemas.c:1047
+msgid "<override> given but schema isn’t extending anything"
+msgstr "Използвано е <override>, но схемата не разширява нищо"
+
+#: gio/glib-compile-schemas.c:1060
+#, c-format
+msgid "No <key name='%s'> to override"
+msgstr "Липсва <key name='%s'> за предефиниране"
+
+#: gio/glib-compile-schemas.c:1068
+#, c-format
+msgid "<override name='%s'> already specified"
+msgstr "Вече е указано <override name='%s'>"
+
+#: gio/glib-compile-schemas.c:1141
+#, c-format
+msgid "<schema id='%s'> already specified"
+msgstr "Вече е указано <schema id='%s'>"
+
+#: gio/glib-compile-schemas.c:1153
+#, c-format
+msgid "<schema id='%s'> extends not yet existing schema “%s”"
+msgstr "<schema id='%s'> добавя към схема „%s“, която още не съществува"
+
+#: gio/glib-compile-schemas.c:1169
+#, c-format
+msgid "<schema id='%s'> is list of not yet existing schema “%s”"
+msgstr "<schema id='%s'> е списък на схема „%s“, която още не съществува"
+
+#: gio/glib-compile-schemas.c:1177
+#, c-format
+msgid "Cannot be a list of a schema with a path"
+msgstr "Не може да е списък от схема с път"
+
+#: gio/glib-compile-schemas.c:1187
+#, c-format
+msgid "Cannot extend a schema with a path"
+msgstr "Схема не може да се разширява с път"
+
+#: gio/glib-compile-schemas.c:1197
+#, c-format
+msgid ""
+"<schema id='%s'> is a list, extending <schema id='%s'> which is not a list"
+msgstr ""
+"<schema id='%s'> е списък, разширяващ <schema id='%s'>, която не е списък"
+
+#: gio/glib-compile-schemas.c:1207
+#, c-format
+msgid ""
+"<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'> разширява <schema id='%s' list-of='%s'>, но "
+"„%s“ не разширява „%s“"
+
+#: gio/glib-compile-schemas.c:1224
+#, c-format
+msgid "A path, if given, must begin and end with a slash"
+msgstr "Всеки път трябва да започва и да завършва с наклонена черта („/“)"
+
+#: gio/glib-compile-schemas.c:1231
+#, c-format
+msgid "The path of a list must end with “:/”"
+msgstr "Пътят на списък трябва да завършва с „:/“"
+
+#: gio/glib-compile-schemas.c:1240
+#, c-format
+msgid ""
+"Warning: Schema “%s” has path “%s”.  Paths starting with “/apps/”, “/"
+"desktop/” or “/system/” are deprecated."
+msgstr ""
+"ПРЕДУПРЕЖДЕНИЕ: схемата „%s“ съдържа пътя „%s“. Пътищата, които започват с „/"
+"apps/“, „/desktop/“ или „/system/“ са остарели."
+
+#: gio/glib-compile-schemas.c:1270
+#, c-format
+msgid "<%s id='%s'> already specified"
+msgstr "вече е указано <%s id='%s'>"
+
+#: gio/glib-compile-schemas.c:1420 gio/glib-compile-schemas.c:1436
+#, c-format
+msgid "Only one <%s> element allowed inside <%s>"
+msgstr "Само един елемент <%s> е позволен в <%s>"
+
+#: gio/glib-compile-schemas.c:1518
+#, c-format
+msgid "Element <%s> not allowed at the top level"
+msgstr "Елементът <%s> не е позволен на най-горно ниво"
+
+#: gio/glib-compile-schemas.c:1536
+msgid "Element <default> is required in <key>"
+msgstr "Задължително е в <key> да има елемент <default>"
+
+#: gio/glib-compile-schemas.c:1626
+#, c-format
+msgid "Text may not appear inside <%s>"
+msgstr "В <%s> не е позволен текст"
+
+#: gio/glib-compile-schemas.c:1694
+#, c-format
+msgid "Warning: undefined reference to <schema id='%s'/>"
+msgstr "ПРЕДУПРЕЖДЕНИЕ: недефиниран указател към <schema id='%s'/>"
+
+#. Translators: Do not translate "--strict".
+#: gio/glib-compile-schemas.c:1833 gio/glib-compile-schemas.c:1912
+msgid "--strict was specified; exiting."
+msgstr "Указано е „--strict“, изход."
+
+#: gio/glib-compile-schemas.c:1845
+msgid "This entire file has been ignored."
+msgstr "Целият файл е пренебрегнат."
+
+#: gio/glib-compile-schemas.c:1908
+msgid "Ignoring this file."
+msgstr "Пренебрегване на файла."
+
+#: gio/glib-compile-schemas.c:1963
+#, c-format
+msgid ""
+"No such key “%s” in schema “%s” as specified in override file “%s”; ignoring "
+"override for this key."
+msgstr ""
+"Липсва ключ „%s“ в схемата „%s“, указан във файла за предефиниране „%s“. "
+"Това предифиниране се прескача."
+
+#: gio/glib-compile-schemas.c:1971
+#, c-format
+msgid ""
+"No such key “%s” in schema “%s” as specified in override file “%s” and --"
+"strict was specified; exiting."
+msgstr ""
+"Липсва ключ „%s“ в схемата „%s“, указан във файла за предефиниране „%s“, "
+"зададена е и опцията „--strict“, затова програмата приключва."
+
+#: gio/glib-compile-schemas.c:1993
+#, c-format
+msgid ""
+"Cannot provide per-desktop overrides for localized key “%s” in schema "
+"“%s” (override file “%s”); ignoring override for this key."
+msgstr ""
+"Не може да се предостави предефиниране за всяка работна среда за "
+"локализирания ключ „%s“ в схемата „%s“ (файлът с предефинирана стойност е "
+"„%s“). Това предифиниране се прескача."
+
+#: gio/glib-compile-schemas.c:2002
+#, c-format
+msgid ""
+"Cannot provide per-desktop overrides for localized key “%s” in schema "
+"“%s” (override file “%s”) and --strict was specified; exiting."
+msgstr ""
+"Не може да се предостави предефиниране за всяка работна среда за "
+"локализирания ключ „%s“ в схемата „%s“ (файлът с предефинирана стойност е "
+"„%s“), зададена е и опцията „--strict“, затова програмата приключва."
+
+#: gio/glib-compile-schemas.c:2026
+#, c-format
+msgid ""
+"Error parsing key “%s” in schema “%s” as specified in override file “%s”: "
+"%s. Ignoring override for this key."
+msgstr ""
+"Грешка при анализиране на ключа „%s“ от схемата „%s“, указан във файла за "
+"предефиниране „%s“ — %s. Това предифиниране се прескача."
 
-#: ../gio/glib-compile-schemas.c:2068
+#: gio/glib-compile-schemas.c:2038
+#, c-format
 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."
+"Error parsing key “%s” in schema “%s” as specified in override file “%s”: "
+"%s. --strict was specified; exiting."
 msgstr ""
-"Ð\9aомпилиÑ\80ане Ð½Ð° Ð²Ñ\81иÑ\87ки Ñ\84айлове Ñ\81Ñ\8aÑ\81 Ñ\81Ñ\85еми Ð·Ð° GSettings Ð² ÐºÐµÑ\88.\n"
-"ФайловеÑ\82е Ñ\81Ñ\8aÑ\81 Ñ\81Ñ\85емиÑ\82е Ñ\82Ñ\80Ñ\8fбва Ð´Ð° Ð·Ð°Ð²Ñ\8aÑ\80Ñ\88ваÑ\82 Ð½Ð° .gschema.xml,\n"
-"а Ñ\84айлÑ\8aÑ\82 Ñ\81 ÐºÐµÑ\88а Ñ\81е Ð½Ð°Ñ\80иÑ\87а gschemas.compiled."
+"Ð\93Ñ\80еÑ\88ка Ð¿Ñ\80и Ð°Ð½Ð°Ð»Ð¸Ð·Ð¸Ñ\80ане Ð½Ð° ÐºÐ»Ñ\8eÑ\87а â\80\9e%sâ\80\9c Ð¾Ñ\82 Ñ\81Ñ\85емаÑ\82а â\80\9e%sâ\80\9c, Ñ\83казан Ð²Ñ\8aв Ñ\84айла Ð·Ð° "
+"пÑ\80едеÑ\84иниÑ\80ане â\80\9e%sâ\80\9c â\80\94 %s, Ð·Ð°Ð´Ð°Ð´ÐµÐ½Ð° Ðµ Ð¸ Ð¾Ð¿Ñ\86иÑ\8fÑ\82а â\80\9e--strictâ\80\9c, Ð·Ð°Ñ\82ова Ð¿Ñ\80огÑ\80амаÑ\82а "
+"пÑ\80иклÑ\8eÑ\87ва."
 
-#: ../gio/glib-compile-schemas.c:2084
+#: gio/glib-compile-schemas.c:2065
 #, c-format
-msgid "You should give exactly one directory name\n"
-msgstr "Изисква се точно едно име на папка\n"
+msgid ""
+"Override for key “%s” in schema “%s” in override file “%s” is outside the "
+"range given in the schema; ignoring override for this key."
+msgstr ""
+"Предефинирането на ключа „%s“ в схемата „%s“ във файла за предефиниране „%s“ "
+"е извън обсега, даден в схемата. Това предифиниране се прескача."
 
-#: ../gio/glib-compile-schemas.c:2123
+#: gio/glib-compile-schemas.c:2075
 #, c-format
-msgid "No schema files found: "
-msgstr "Не са открити файлове със схеми: "
+msgid ""
+"Override for key “%s” in schema “%s” in override file “%s” is outside the "
+"range given in the schema and --strict was specified; exiting."
+msgstr ""
+"Предефинирането на ключа „%s“ в схемата „%s“ във файла за предефиниране „%s“ "
+"е извън обсега, даден в схемата, зададена е и опцията „--strict“, затова "
+"програмата приключва."
 
-#: ../gio/glib-compile-schemas.c:2126
+#: gio/glib-compile-schemas.c:2101
 #, c-format
-msgid "doing nothing.\n"
-msgstr "без обработка.\n"
+msgid ""
+"Override for key “%s” in schema “%s” in override file “%s” is not in the "
+"list of valid choices; ignoring override for this key."
+msgstr ""
+"Предефинирането на ключа „%s“ в схемата „%s“ във файла за предефиниране „%s“ "
+"не е в списъка с позволени стойности. Това предифиниране се прескача."
 
-#: ../gio/glib-compile-schemas.c:2129
+#: gio/glib-compile-schemas.c:2111
 #, c-format
-msgid "removed existing output file.\n"
-msgstr "съществуващият резултатен файл е премахнат.\n"
+msgid ""
+"Override for key “%s” in schema “%s” in override file “%s” is not in the "
+"list of valid choices and --strict was specified; exiting."
+msgstr ""
+"Предефинирането на ключа „%s“ в схемата „%s“ във файла за предефиниране „%s“ "
+"не е в списъка с позволени стойности, зададена е и опцията „--strict“, "
+"затова програмата приключва."
+
+#: gio/glib-compile-schemas.c:2173
+msgid "Where to store the gschemas.compiled file"
+msgstr "Място за съхраняване на файла „gschemas.compiled“"
+
+#: gio/glib-compile-schemas.c:2174
+msgid "Abort on any errors in schemas"
+msgstr "Прекъсване на работа при всякакви грешки в схемите"
+
+#: gio/glib-compile-schemas.c:2175
+msgid "Do not write the gschema.compiled file"
+msgstr "Без запис на файл „gschema.compiled“"
+
+#: gio/glib-compile-schemas.c:2176
+msgid "Do not enforce key name restrictions"
+msgstr "Без налагане на ограниченията за имена на ключове"
+
+#: gio/glib-compile-schemas.c:2205
+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 ""
+"Компилиране на всички файлове със схеми за „GSettings“ в кеш.\n"
+"Файловете със схемите трябва да завършват на „.gschema.xml“,\n"
+"а файлът с кеша се нарича „gschemas.compiled“."
+
+#: gio/glib-compile-schemas.c:2226
+msgid "You should give exactly one directory name"
+msgstr "Изисква се точно едно име на папка"
+
+#: gio/glib-compile-schemas.c:2269
+msgid "No schema files found: doing nothing."
+msgstr "Не са открити файлове със схеми: нищо няма да се прави."
+
+#: gio/glib-compile-schemas.c:2271
+msgid "No schema files found: removed existing output file."
+msgstr ""
+"Не са открити файлове със схеми: съществуващият резултатен файл е премахнат."
 
-#: ../gio/glocalfile.c:635 ../gio/win32/gwinhttpfile.c:420
+#: gio/glocalfile.c:549 gio/win32/gwinhttpfile.c:436
 #, c-format
 msgid "Invalid filename %s"
 msgstr "Неправилно име на файл: %s"
 
-#: ../gio/glocalfile.c:1012
+#: gio/glocalfile.c:982
+#, c-format
+msgid "Error getting filesystem info for %s: %s"
+msgstr "Грешка при получаване на информация за файловата система за „%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:1123
 #, c-format
-msgid "Error getting filesystem info: %s"
-msgstr "Ð\93Ñ\80еÑ\88ка Ð¿Ñ\80и Ð¿Ð¾Ð»Ñ\83Ñ\87аване Ð½Ð° Ð¸Ð½Ñ\84оÑ\80маÑ\86иÑ\8f Ð·Ð° Ñ\84айловаÑ\82а Ñ\81иÑ\81Ñ\82ема: %s"
+msgid "Containing mount for file %s not found"
+msgstr "СÑ\8aдÑ\8aÑ\80жаÑ\89иÑ\8fÑ\82 Ð¼Ð¾Ð½Ñ\82иÑ\80ан Ð¾Ð±ÐµÐºÑ\82 Ð·Ð° Ñ\84айла â\80\9e%sâ\80\9c Ð½Ðµ Ñ\81Ñ\8aÑ\89еÑ\81Ñ\82вÑ\83ва"
 
-#: ../gio/glocalfile.c:1180
-msgid "Can't rename root directory"
+#: gio/glocalfile.c:1146
+msgid "Cant rename root directory"
 msgstr "Кореновата папка не може да се преименува"
 
-#: ../gio/glocalfile.c:1200 ../gio/glocalfile.c:1226
+#: gio/glocalfile.c:1164 gio/glocalfile.c:1187
 #, c-format
-msgid "Error renaming file: %s"
-msgstr "Грешка при преименуване на файл: %s"
+msgid "Error renaming file %s: %s"
+msgstr "Грешка при преименуване на файла „%s“: %s"
 
-#: ../gio/glocalfile.c:1209
-msgid "Can't rename file, filename already exists"
+#: gio/glocalfile.c:1171
+msgid "Cant rename file, filename already exists"
 msgstr "Файлът не може да се преименува — съществува друг файл с такова име"
 
-#: ../gio/glocalfile.c:1222 ../gio/glocalfile.c:2249 ../gio/glocalfile.c:2278
-#: ../gio/glocalfile.c:2438 ../gio/glocalfileoutputstream.c:549
+#: gio/glocalfile.c:1184 gio/glocalfile.c:2380 gio/glocalfile.c:2408
+#: gio/glocalfile.c:2547 gio/glocalfileoutputstream.c:656
 msgid "Invalid filename"
 msgstr "Неправилно име на файл"
 
-#: ../gio/glocalfile.c:1389 ../gio/glocalfile.c:1413
-msgid "Can't open directory"
-msgstr "Папката не може да бъде отворена"
-
-#: ../gio/glocalfile.c:1397
+#: gio/glocalfile.c:1352 gio/glocalfile.c:1363
 #, c-format
-msgid "Error opening file: %s"
-msgstr "Грешка при отваряне на файл: %s"
+msgid "Error opening file %s: %s"
+msgstr "Грешка при отваряне на файла „%s“: %s"
 
-#: ../gio/glocalfile.c:1538
+#: gio/glocalfile.c:1488
 #, c-format
-msgid "Error removing file: %s"
-msgstr "Грешка при изтриване на файл: %s"
+msgid "Error removing file %s: %s"
+msgstr "Грешка при изтриване на файла „%s“: %s"
 
-#: ../gio/glocalfile.c:1922
+#: gio/glocalfile.c:1982 gio/glocalfile.c:1993 gio/glocalfile.c:2020
 #, c-format
-msgid "Error trashing file: %s"
-msgstr "Грешка при преместване на файл в кошчето: %s"
+msgid "Error trashing file %s: %s"
+msgstr "Грешка при преместване на файл в кошчето „%s“: %s"
 
-#: ../gio/glocalfile.c:1945
+#: gio/glocalfile.c:2040
 #, c-format
-msgid "Unable to create trash dir %s: %s"
+msgid "Unable to create trash directory %s: %s"
 msgstr "Неуспешно създаване на папката за кошче „%s“: %s"
 
-#: ../gio/glocalfile.c:1966
-msgid "Unable to find toplevel directory for trash"
-msgstr "Не може да се открие най-горната папка за кошче"
+#: gio/glocalfile.c:2061
+#, c-format
+msgid "Unable to find toplevel directory to trash %s"
+msgstr ""
+"Не може да се открие най-горната папка за преместване в кошчето на „%s“"
 
-#: ../gio/glocalfile.c:2045 ../gio/glocalfile.c:2065
-msgid "Unable to find or create trash directory"
-msgstr "Не може да се създаде папката за кошче"
+#: gio/glocalfile.c:2069
+#, c-format
+msgid "Trashing on system internal mounts is not supported"
+msgstr ""
+"Преместване в кошчето на монтираните вътрешни системни томове не се поддържа"
 
-#: ../gio/glocalfile.c:2099
+#: gio/glocalfile.c:2155 gio/glocalfile.c:2183
 #, c-format
-msgid "Unable to create trashing info file: %s"
-msgstr "Неуспешно създаване на файл с информация за кошчето: %s"
+msgid "Unable to find or create trash directory %s to trash %s"
+msgstr "Не може да се създаде папката за кошче „%s“ за изхвърлянето на „%s“"
 
-#: ../gio/glocalfile.c:2157 ../gio/glocalfile.c:2162 ../gio/glocalfile.c:2219
-#: ../gio/glocalfile.c:2226
+#: gio/glocalfile.c:2229
 #, c-format
-msgid "Unable to trash file: %s"
-msgstr "Неуспешно преместване на файл в кошчето: %s"
+msgid "Unable to create trashing info file for %s: %s"
+msgstr "Неуспешно създаване на файл с информация за кошчето за „%s“: %s"
 
-#: ../gio/glocalfile.c:2227 ../glib/gregex.c:281
-msgid "internal error"
-msgstr "вътрешна грешка"
+#: gio/glocalfile.c:2291
+#, c-format
+msgid "Unable to trash file %s across filesystem boundaries"
+msgstr "Неуспешно преместване на файл в кошче на друга файлова система: %s"
 
-#: ../gio/glocalfile.c:2253
+#: gio/glocalfile.c:2295 gio/glocalfile.c:2351
 #, c-format
-msgid "Error creating directory: %s"
-msgstr "Ð\93Ñ\80еÑ\88ка Ð¿Ñ\80и Ñ\81Ñ\8aздаване Ð½Ð° Ð¿Ð°Ð¿ÐºÐ°: %s"
+msgid "Unable to trash file %s: %s"
+msgstr "Ð\9dеÑ\83Ñ\81пеÑ\88но Ð¿Ñ\80емеÑ\81Ñ\82ване Ð½Ð° Ñ\84айл Ð² ÐºÐ¾Ñ\88Ñ\87еÑ\82о â\80\9e%sâ\80\9c: %s"
 
-#: ../gio/glocalfile.c:2282
+#: gio/glocalfile.c:2357
+#, c-format
+msgid "Unable to trash file %s"
+msgstr "Неуспешно преместване на файл в кошчето „%s“"
+
+#: gio/glocalfile.c:2383
+#, c-format
+msgid "Error creating directory %s: %s"
+msgstr "Грешка при създаване на папка „%s“: %s"
+
+#: gio/glocalfile.c:2412
 #, c-format
 msgid "Filesystem does not support symbolic links"
 msgstr "Файловата система не поддържа символни връзки"
 
-#: ../gio/glocalfile.c:2286
+#: gio/glocalfile.c:2415
 #, c-format
-msgid "Error making symbolic link: %s"
-msgstr "Грешка при създаване на символна връзка: %s"
+msgid "Error making symbolic link %s: %s"
+msgstr "Грешка при създаване на символна връзка „%s“: %s"
 
-#: ../gio/glocalfile.c:2348 ../gio/glocalfile.c:2442
+#: gio/glocalfile.c:2458 gio/glocalfile.c:2493 gio/glocalfile.c:2550
 #, c-format
-msgid "Error moving file: %s"
-msgstr "Грешка при преместване на файл: %s"
+msgid "Error moving file %s: %s"
+msgstr "Грешка при преместване на файл „%s“: %s"
 
-#: ../gio/glocalfile.c:2371
-msgid "Can't move directory over directory"
+#: gio/glocalfile.c:2481
+msgid "Cant move directory over directory"
 msgstr "Папка не може да бъде преместена върху папка"
 
-#: ../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:2507 gio/glocalfileoutputstream.c:1108
+#: gio/glocalfileoutputstream.c:1122 gio/glocalfileoutputstream.c:1137
+#: gio/glocalfileoutputstream.c:1154 gio/glocalfileoutputstream.c:1168
 msgid "Backup file creation failed"
 msgstr "Неуспешно създаване на резервен файл"
 
-#: ../gio/glocalfile.c:2417
+#: gio/glocalfile.c:2526
 #, c-format
 msgid "Error removing target file: %s"
 msgstr "Грешка при премахване на целевия файл: %s"
 
-#: ../gio/glocalfile.c:2431
+#: gio/glocalfile.c:2540
 msgid "Move between mounts not supported"
 msgstr "Не се поддържа местене между монтирани местоположения"
 
-#: ../gio/glocalfile.c:2623
+#: gio/glocalfile.c:2714
 #, c-format
 msgid "Could not determine the disk usage of %s: %s"
 msgstr "Не може да се определи заетото място на %s: %s"
 
-#: ../gio/glocalfileinfo.c:721
+#: gio/glocalfileinfo.c:767
 msgid "Attribute value must be non-NULL"
 msgstr "Стойността на атрибут не трябва да е NULL"
 
-#: ../gio/glocalfileinfo.c:728
+#: gio/glocalfileinfo.c:774
 msgid "Invalid attribute type (string expected)"
 msgstr "Неправилен вид на атрибут (очакваше се низ)"
 
-#: ../gio/glocalfileinfo.c:735
+#: gio/glocalfileinfo.c:781
 msgid "Invalid extended attribute name"
 msgstr "Неправилно име на допълнителен атрибут"
 
-#: ../gio/glocalfileinfo.c:775
+#: gio/glocalfileinfo.c:821
 #, c-format
-msgid "Error setting extended attribute '%s': %s"
-msgstr "Грешка при задаване на допълнителен атрибут „%s“: %s"
+msgid "Error setting extended attribute “%s”: %s"
+msgstr "Грешка при задаване на разширен атрибут „%s“: %s"
 
-#: ../gio/glocalfileinfo.c:1575
+#: gio/glocalfileinfo.c:1709 gio/win32/gwinhttpfile.c:191
 msgid " (invalid encoding)"
 msgstr " (неправилно кодиране)"
 
-#: ../gio/glocalfileinfo.c:1766 ../gio/glocalfileoutputstream.c:803
+#: gio/glocalfileinfo.c:1868 gio/glocalfileoutputstream.c:943
+#: gio/glocalfileoutputstream.c:995
 #, c-format
-msgid "Error when getting information for file '%s': %s"
+msgid "Error when getting information for file “%s”: %s"
 msgstr "Грешка при получаване на информация за файла „%s“: %s"
 
-#: ../gio/glocalfileinfo.c:2017
+#: gio/glocalfileinfo.c:2134
 #, c-format
 msgid "Error when getting information for file descriptor: %s"
 msgstr "Грешка при получаване на информация за файловия дескриптор: %s"
 
-#: ../gio/glocalfileinfo.c:2062
+#: gio/glocalfileinfo.c:2179
 msgid "Invalid attribute type (uint32 expected)"
 msgstr "Неправилен вид на атрибут (очакваше се uint32)"
 
-#: ../gio/glocalfileinfo.c:2080
+#: gio/glocalfileinfo.c:2197
 msgid "Invalid attribute type (uint64 expected)"
 msgstr "Неправилен вид на атрибут (очакваше се uint64)"
 
-#: ../gio/glocalfileinfo.c:2099 ../gio/glocalfileinfo.c:2118
+#: gio/glocalfileinfo.c:2216 gio/glocalfileinfo.c:2235
 msgid "Invalid attribute type (byte string expected)"
 msgstr "Неправилен вид на атрибут (очакваше се низ от байтове)"
 
-#: ../gio/glocalfileinfo.c:2153
+#: gio/glocalfileinfo.c:2282
 msgid "Cannot set permissions on symlinks"
 msgstr "Грешка при задаване на правата за достъп на символната връзка"
 
-#: ../gio/glocalfileinfo.c:2169
+#: gio/glocalfileinfo.c:2298
 #, c-format
 msgid "Error setting permissions: %s"
 msgstr "Грешка при задаване на правата за достъп: %s"
 
-#: ../gio/glocalfileinfo.c:2220
+#: gio/glocalfileinfo.c:2349
 #, c-format
 msgid "Error setting owner: %s"
 msgstr "Грешка при задаване на собственик: %s"
 
-#: ../gio/glocalfileinfo.c:2243
+#: gio/glocalfileinfo.c:2372
 msgid "symlink must be non-NULL"
 msgstr "символната връзка трябва да не е NULL"
 
-#: ../gio/glocalfileinfo.c:2253 ../gio/glocalfileinfo.c:2272
-#: ../gio/glocalfileinfo.c:2283
+#: gio/glocalfileinfo.c:2382 gio/glocalfileinfo.c:2401
+#: gio/glocalfileinfo.c:2412
 #, c-format
 msgid "Error setting symlink: %s"
 msgstr "Грешка при задаване на символна връзка: %s"
 
-#: ../gio/glocalfileinfo.c:2262
+#: gio/glocalfileinfo.c:2391
 msgid "Error setting symlink: file is not a symlink"
 msgstr "Грешка при задаване на символна връзка: файлът не е такава"
 
-#: ../gio/glocalfileinfo.c:2388
+#: gio/glocalfileinfo.c:2463
+#, c-format
+msgid "Extra nanoseconds %d for UNIX timestamp %lld are negative"
+msgstr ""
+"Допълнителните наносекунди %d за времевото клеймо по UNIX %lld са отрицателни"
+
+#: gio/glocalfileinfo.c:2472
+#, c-format
+msgid "Extra nanoseconds %d for UNIX timestamp %lld reach 1 second"
+msgstr ""
+"Допълнителните наносекунди %d за времевото клеймо по UNIX %lld стигат 1 "
+"секунда"
+
+#: gio/glocalfileinfo.c:2482
+#, c-format
+msgid "UNIX timestamp %lld does not fit into 64 bits"
+msgstr "Времевото клеймо по UNIX %lld не се помества в 64 бита"
+
+#: gio/glocalfileinfo.c:2493
+#, c-format
+msgid "UNIX timestamp %lld is outside of the range supported by Windows"
+msgstr "Времевото клеймо по UNIX %lld е извън диапазона, поддържан в Windows"
+
+#: gio/glocalfileinfo.c:2570
+#, c-format
+msgid "File name “%s” cannot be converted to UTF-16"
+msgstr "Името на файла „%s“ не може да се преобразува в UTF-16"
+
+#: gio/glocalfileinfo.c:2589
+#, c-format
+msgid "File “%s” cannot be opened: Windows Error %lu"
+msgstr "Файлът „%s“ не може да бъде отворен — грешка от Windows: %lu"
+
+#: gio/glocalfileinfo.c:2602
+#, c-format
+msgid "Error setting modification or access time for file “%s”: %lu"
+msgstr ""
+"Грешка при задаване на времето на промяна или достъп на файла „%s“: %lu"
+
+#: gio/glocalfileinfo.c:2703
 #, c-format
 msgid "Error setting modification or access time: %s"
 msgstr "Грешка при задаване на времето на промяна или достъп: %s"
 
-#: ../gio/glocalfileinfo.c:2411
+#: gio/glocalfileinfo.c:2726
 msgid "SELinux context must be non-NULL"
 msgstr "Контекстът на SELinux трябва да не е NULL"
 
-#: ../gio/glocalfileinfo.c:2426
+#: gio/glocalfileinfo.c:2733
+msgid "SELinux is not enabled on this system"
+msgstr "SELinux не е включен на тази система"
+
+#: gio/glocalfileinfo.c:2743
 #, c-format
 msgid "Error setting SELinux context: %s"
 msgstr "Грешка при задаване на контекста на SELinux: %s"
 
-#: ../gio/glocalfileinfo.c:2433
-msgid "SELinux is not enabled on this system"
-msgstr "SELinux не е включен на тази система"
-
-#: ../gio/glocalfileinfo.c:2525
+#: gio/glocalfileinfo.c:2836
 #, c-format
 msgid "Setting attribute %s not supported"
 msgstr "Не се поддържа задаването на атрибута %s"
 
-#: ../gio/glocalfileinputstream.c:168 ../gio/glocalfileoutputstream.c:694
+#: gio/glocalfileinputstream.c:163 gio/glocalfileoutputstream.c:801
 #, c-format
 msgid "Error reading from file: %s"
 msgstr "Грешка при четене от файл: %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
-#, c-format
-msgid "Error seeking in file: %s"
-msgstr "Грешка при търсене във файл: %s"
-
-#: ../gio/glocalfileinputstream.c:255 ../gio/glocalfileoutputstream.c:246
-#: ../gio/glocalfileoutputstream.c:340
+#: gio/glocalfileinputstream.c:194 gio/glocalfileoutputstream.c:353
+#: gio/glocalfileoutputstream.c:447
 #, c-format
 msgid "Error closing file: %s"
 msgstr "Грешка при затваряне на файл: %s"
 
-#: ../gio/glocalfilemonitor.c:840
+#: gio/glocalfileinputstream.c:272 gio/glocalfileoutputstream.c:563
+#: gio/glocalfileoutputstream.c:1186
+#, c-format
+msgid "Error seeking in file: %s"
+msgstr "Грешка при търсене във файл: %s"
+
+#: gio/glocalfilemonitor.c:866
 msgid "Unable to find default local file monitor type"
 msgstr ""
 "Стандартната функционалност за наблюдение на локални файлове не може да бъде "
 "открита"
 
-#: ../gio/glocalfileoutputstream.c:194 ../gio/glocalfileoutputstream.c:226
-#: ../gio/glocalfileoutputstream.c:715
+#: gio/glocalfileoutputstream.c:220 gio/glocalfileoutputstream.c:298
+#: gio/glocalfileoutputstream.c:334 gio/glocalfileoutputstream.c:822
 #, c-format
 msgid "Error writing to file: %s"
 msgstr "Грешка при запис във файл: %s"
 
-#: ../gio/glocalfileoutputstream.c:273
+#: gio/glocalfileoutputstream.c:380
 #, c-format
 msgid "Error removing old backup link: %s"
 msgstr "Грешка при премахване на стара, резервна връзка: %s"
 
-#: ../gio/glocalfileoutputstream.c:287 ../gio/glocalfileoutputstream.c:300
+#: gio/glocalfileoutputstream.c:394 gio/glocalfileoutputstream.c:407
 #, c-format
 msgid "Error creating backup copy: %s"
 msgstr "Грешка при създаване на резервно копие: %s"
 
-#: ../gio/glocalfileoutputstream.c:318
+#: gio/glocalfileoutputstream.c:425
 #, c-format
 msgid "Error renaming temporary file: %s"
 msgstr "Грешка при преименуване на временен файл: %s"
 
-#: ../gio/glocalfileoutputstream.c:502 ../gio/glocalfileoutputstream.c:1053
+#: gio/glocalfileoutputstream.c:609 gio/glocalfileoutputstream.c:1239
 #, c-format
 msgid "Error truncating file: %s"
 msgstr "Грешка при съкращаване на файл: %s"
 
-#: ../gio/glocalfileoutputstream.c:555 ../gio/glocalfileoutputstream.c:785
-#: ../gio/glocalfileoutputstream.c:1034 ../gio/gsubprocess.c:360
+#: gio/glocalfileoutputstream.c:662 gio/glocalfileoutputstream.c:907
+#: gio/glocalfileoutputstream.c:1220 gio/gsubprocess.c:229
 #, c-format
-msgid "Error opening file '%s': %s"
+msgid "Error opening file “%s”: %s"
 msgstr "Грешка при отваряне на файла „%s“: %s"
 
-#: ../gio/glocalfileoutputstream.c:816
+#: gio/glocalfileoutputstream.c:957
 msgid "Target file is a directory"
 msgstr "Целевият файл е папка"
 
-#: ../gio/glocalfileoutputstream.c:821
+#: gio/glocalfileoutputstream.c:971
 msgid "Target file is not a regular file"
 msgstr "Целевият файл не е обикновен файл"
 
-#: ../gio/glocalfileoutputstream.c:833
+#: gio/glocalfileoutputstream.c:1013
 msgid "The file was externally modified"
 msgstr "Файлът бе променен от външно приложение"
 
-#: ../gio/glocalfileoutputstream.c:1018
+#: gio/glocalfileoutputstream.c:1202
 #, c-format
 msgid "Error removing old file: %s"
 msgstr "Грешка при изтриване на стар файл: %s"
 
-#: ../gio/gmemoryinputstream.c:471 ../gio/gmemoryoutputstream.c:771
+#: gio/gmemoryinputstream.c:474 gio/gmemoryoutputstream.c:762
 msgid "Invalid GSeekType supplied"
-msgstr "Зададен е неправилен GSeekType"
+msgstr "Зададен е неправилен „GSeekType“"
 
-#: ../gio/gmemoryinputstream.c:481
+#: gio/gmemoryinputstream.c:484
 msgid "Invalid seek request"
 msgstr "Неправилна заявка за търсене"
 
-#: ../gio/gmemoryinputstream.c:505
+#: gio/gmemoryinputstream.c:508
 msgid "Cannot truncate GMemoryInputStream"
-msgstr "GMemoryInputStream не може да се съкрати"
+msgstr "„GMemoryInputStream“ не може да се съкрати"
 
-#: ../gio/gmemoryoutputstream.c:567
+#: gio/gmemoryoutputstream.c:568
 msgid "Memory output stream not resizable"
 msgstr "Изходящият поток в паметта не може да бъде преоразмерен"
 
-#: ../gio/gmemoryoutputstream.c:583
+#: gio/gmemoryoutputstream.c:584
 msgid "Failed to resize memory output stream"
 msgstr "Неуспешно преоразмеряване на изходящия поток в паметта"
 
-#: ../gio/gmemoryoutputstream.c:673
+#: gio/gmemoryoutputstream.c:663
 msgid ""
 "Amount of memory required to process the write is larger than available "
 "address space"
@@ -2226,138 +3418,161 @@ msgstr ""
 "Количеството памет, необходимо за обработката на записа, е по-голямо от "
 "наличното адресно пространство."
 
-#: ../gio/gmemoryoutputstream.c:781
+#: gio/gmemoryoutputstream.c:772
 msgid "Requested seek before the beginning of the stream"
 msgstr "Заявеното търсене е преди началото на потока"
 
-#: ../gio/gmemoryoutputstream.c:796
+#: gio/gmemoryoutputstream.c:787
 msgid "Requested seek beyond the end of the stream"
 msgstr "Заявеното търсене е след края на потока"
 
 #. Translators: This is an error
 #. * message for mount objects that
 #. * don't implement unmount.
-#: ../gio/gmount.c:393
-msgid "mount doesn't implement \"unmount\""
+#: gio/gmount.c:399
+msgid "mount doesn’t implement “unmount”"
 msgstr "монтираният обект не поддържа демонтиране"
 
 #. Translators: This is an error
 #. * message for mount objects that
 #. * don't implement eject.
-#: ../gio/gmount.c:469
-msgid "mount doesn't implement \"eject\""
+#: gio/gmount.c:475
+msgid "mount doesn’t implement “eject”"
 msgstr "монтираният обект не поддържа изваждане"
 
 #. 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\""
+#: gio/gmount.c:553
+msgid "mount doesn’t implement “unmount” or “unmount_with_operation”"
 msgstr ""
 "монтираният обект не поддържа нито демонтиране, нито демонтиране с действие"
 
 #. 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\""
+#: gio/gmount.c:638
+msgid "mount doesn’t implement “eject” or “eject_with_operation”"
 msgstr ""
 "монтираният обект не поддържа нито изваждане, нито изваждане с действие"
 
 #. Translators: This is an error
 #. * message for mount objects that
 #. * don't implement remount.
-#: ../gio/gmount.c:720
-msgid "mount doesn't implement \"remount\""
+#: gio/gmount.c:726
+msgid "mount doesn’t implement “remount”"
 msgstr "монтираният обект не поддържа повторно монтиране"
 
 #. 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"
+#: gio/gmount.c:808
+msgid "mount doesnt implement content type guessing"
 msgstr "монтираният обект не поддържа откриване на вида"
 
 #. 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"
+#: gio/gmount.c:895
+msgid "mount doesnt implement synchronous content type guessing"
 msgstr "монтираният обект не поддържа синхронно откриване на вида"
 
-#: ../gio/gnetworkaddress.c:378
+#: gio/gnetworkaddress.c:415
 #, c-format
-msgid "Hostname '%s' contains '[' but not ']'"
+msgid "Hostname “%s” contains “[” but not “]”"
 msgstr "Името на хоста „%s“ съдържа „[“, но липсва „]“"
 
-#: ../gio/gnetworkmonitorbase.c:206 ../gio/gnetworkmonitorbase.c:309
+#: gio/gnetworkmonitorbase.c:219 gio/gnetworkmonitorbase.c:323
 msgid "Network unreachable"
 msgstr "Мрежата е недостъпна"
 
-#: ../gio/gnetworkmonitorbase.c:244 ../gio/gnetworkmonitorbase.c:274
+#: gio/gnetworkmonitorbase.c:257 gio/gnetworkmonitorbase.c:287
 msgid "Host unreachable"
 msgstr "Хостът е недостъпен"
 
-#: ../gio/gnetworkmonitornetlink.c:96 ../gio/gnetworkmonitornetlink.c:108
-#: ../gio/gnetworkmonitornetlink.c:127
+#: gio/gnetworkmonitornetlink.c:99 gio/gnetworkmonitornetlink.c:111
+#: gio/gnetworkmonitornetlink.c:130
 #, c-format
 msgid "Could not create network monitor: %s"
 msgstr "Състоянието на мрежата не може да бъде наблюдавано: %s"
 
-#: ../gio/gnetworkmonitornetlink.c:117
+#: gio/gnetworkmonitornetlink.c:120
 msgid "Could not create network monitor: "
 msgstr "Състоянието на мрежата не може да бъде наблюдавано: "
 
-#: ../gio/gnetworkmonitornetlink.c:175
+#: gio/gnetworkmonitornetlink.c:183
 msgid "Could not get network status: "
 msgstr "Състоянието на мрежата не може да бъде получено: "
 
-#: ../gio/gnetworkmonitornm.c:326
+#: gio/gnetworkmonitornm.c:311
+#, c-format
+msgid "NetworkManager not running"
+msgstr "„NetworkManager“ не работи"
+
+#: gio/gnetworkmonitornm.c:322
 #, c-format
 msgid "NetworkManager version too old"
 msgstr "Прекалено стара версия на „NetworkManager“"
 
-#: ../gio/goutputstream.c:212 ../gio/goutputstream.c:560
-msgid "Output stream doesn't implement write"
+#: gio/goutputstream.c:232 gio/goutputstream.c:775
+msgid "Output stream doesnt implement write"
 msgstr "Изходният поток не поддържа запис"
 
-#: ../gio/goutputstream.c:521 ../gio/goutputstream.c:1222
+#: gio/goutputstream.c:472 gio/goutputstream.c:1533
+#, c-format
+msgid "Sum of vectors passed to %s too large"
+msgstr "Сумата на векторите подадена на „%s“ е прекалено голяма"
+
+#: gio/goutputstream.c:736 gio/goutputstream.c:1761
 msgid "Source stream is already closed"
 msgstr "Изходният поток вече е затворен"
 
-#: ../gio/gresolver.c:330 ../gio/gthreadedresolver.c:116
-#: ../gio/gthreadedresolver.c:126
+#. Translators: the first placeholder is a domain name, the
+#. * second is an error message
+#: gio/gresolver.c:401 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
+#: gio/gthreadedresolver.c:780 gio/gthreadedresolver.c:804
+#: gio/gthreadedresolver.c:829 gio/gthreadedresolver.c:844
 #, c-format
-msgid "Error resolving '%s': %s"
+msgid "Error resolving “%s”: %s"
 msgstr "Грешка при откриване по адрес на „%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/gresourcefile.c:576
-#: ../gio/gresourcefile.c:713
+#. Translators: The placeholder is for a function name.
+#: gio/gresolver.c:470 gio/gresolver.c:630
 #, c-format
-msgid "The resource at '%s' does not exist"
-msgstr "РеÑ\81Ñ\83Ñ\80Ñ\81Ñ\8aÑ\82 â\80\9e%sâ\80\9c Ð»Ð¸Ð¿Ñ\81ва"
+msgid "%s not implemented"
+msgstr "нÑ\8fма Ñ\80еализаÑ\86иÑ\8f Ð½Ð° â\80\9e%sâ\80\9c"
 
-#: ../gio/gresource.c:469
+#: gio/gresolver.c:999 gio/gresolver.c:1051
+msgid "Invalid domain"
+msgstr "Неправилен домейн"
+
+#: gio/gresource.c:681 gio/gresource.c:943 gio/gresource.c:983
+#: gio/gresource.c:1107 gio/gresource.c:1179 gio/gresource.c:1253
+#: gio/gresource.c:1334 gio/gresourcefile.c:476 gio/gresourcefile.c:599
+#: gio/gresourcefile.c:736
+#, c-format
+msgid "The resource at “%s” does not exist"
+msgstr "Ресурсът при „%s“ не съществува"
+
+#: gio/gresource.c:848
 #, c-format
-msgid "The resource at '%s' failed to decompress"
-msgstr "Ресурсът „%s“ не може да се декомпресира"
+msgid "The resource at “%s” failed to decompress"
+msgstr "Ресурсът при „%s“ не може да се декомпресира"
 
-#: ../gio/gresourcefile.c:709
+#: gio/gresourcefile.c:732
 #, c-format
-msgid "The resource at '%s' is not a directory"
-msgstr "Ресурсът „%s“ не е папка"
+msgid "The resource at “%s” is not a directory"
+msgstr "Ресурсът при „%s“ не е папка"
 
-#: ../gio/gresourcefile.c:917
-msgid "Input stream doesn't implement seek"
+#: gio/gresourcefile.c:940
+msgid "Input stream doesnt implement seek"
 msgstr "Входният поток не поддържа търсене"
 
-#: ../gio/gresource-tool.c:494
+#: gio/gresource-tool.c:500
 msgid "List sections containing resources in an elf FILE"
 msgstr "Изброяване на разделите с ресурси във ФАЙЛа във формат elf"
 
-#: ../gio/gresource-tool.c:500
+#: gio/gresource-tool.c:506
 msgid ""
 "List resources\n"
 "If SECTION is given, only list resources in this section\n"
@@ -2367,16 +3582,15 @@ msgstr ""
 "Ако е даден РАЗДЕЛ, се изброяват само ресурсите в него\n"
 "Ако е даден ПЪТ, се изброяват само съвпадащите ресурси"
 
-#: ../gio/gresource-tool.c:503 ../gio/gresource-tool.c:513
+#: gio/gresource-tool.c:509 gio/gresource-tool.c:519
 msgid "FILE [PATH]"
 msgstr "ФАЙЛ [ПЪТ]"
 
-#: ../gio/gresource-tool.c:504 ../gio/gresource-tool.c:514
-#: ../gio/gresource-tool.c:521
+#: gio/gresource-tool.c:510 gio/gresource-tool.c:520 gio/gresource-tool.c:527
 msgid "SECTION"
 msgstr "РАЗДЕЛ"
 
-#: ../gio/gresource-tool.c:509
+#: gio/gresource-tool.c:515
 msgid ""
 "List resources with details\n"
 "If SECTION is given, only list resources in this section\n"
@@ -2388,18 +3602,18 @@ msgstr ""
 "Ако е даден ПЪТ, се изброяват само съвпадащите ресурси\n"
 "Подробностите включват раздел, размер и компресия"
 
-#: ../gio/gresource-tool.c:519
+#: gio/gresource-tool.c:525
 msgid "Extract a resource file to stdout"
 msgstr "Разархивиране на ресурс към стандартния изход"
 
-#: ../gio/gresource-tool.c:520
+#: gio/gresource-tool.c:526
 msgid "FILE PATH"
 msgstr "ПЪТ ДО ФАЙЛ"
 
-#: ../gio/gresource-tool.c:534
+#: gio/gresource-tool.c:540
 msgid ""
 "Usage:\n"
-"  gresource [--section SECTION] COMMAND [ARGS...]\n"
+"  gresource [--section SECTION] COMMAND [ARGS]\n"
 "\n"
 "Commands:\n"
 "  help                      Show this information\n"
@@ -2408,11 +3622,11 @@ 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 ""
 "Употреба:\n"
-"  gresource [--section РАЗДЕЛ] КОМАНДА [АРГУМЕНТИ…]\n"
+"  gresource [--section РАЗДЕЛ] КОМАНДА [АРГУМЕНТ…]\n"
 "\n"
 "Команда:\n"
 "  help                      Тази информация\n"
@@ -2421,10 +3635,10 @@ msgstr ""
 "  details                   Подробен списък с ресурси\n"
 "  extract                   Разархивиране на ресурс\n"
 "\n"
-"За подробна информация стартирайте „gresource help КОМАНДА“\n"
+"За подробна информация изпълнете „gresource help КОМАНДА“\n"
 "\n"
 
-#: ../gio/gresource-tool.c:548
+#: gio/gresource-tool.c:554
 #, c-format
 msgid ""
 "Usage:\n"
@@ -2439,19 +3653,19 @@ msgstr ""
 "%s\n"
 "\n"
 
-#: ../gio/gresource-tool.c:555
+#: gio/gresource-tool.c:561
 msgid "  SECTION   An (optional) elf section name\n"
 msgstr "  РАЗДЕЛ    (Незадължително) име на раздел в elf\n"
 
-#: ../gio/gresource-tool.c:559 ../gio/gsettings-tool.c:639
+#: gio/gresource-tool.c:565 gio/gsettings-tool.c:718
 msgid "  COMMAND   The (optional) command to explain\n"
 msgstr "  КОМАНДА   Помощ за командата или обща помощ, ако не е указано име\n"
 
-#: ../gio/gresource-tool.c:565
+#: gio/gresource-tool.c:571
 msgid "  FILE      An elf file (a binary or a shared library)\n"
 msgstr "  ФАЙЛ      Файл във формат elf (изпълним или споделена библиотека)\n"
 
-#: ../gio/gresource-tool.c:568
+#: gio/gresource-tool.c:574
 msgid ""
 "  FILE      An elf file (a binary or a shared library)\n"
 "            or a compiled resource file\n"
@@ -2459,90 +3673,82 @@ msgstr ""
 "  ФАЙЛ      Файл във формат elf (изпълним или споделена библиотека)\n"
 "            или компилиран файл с ресурси\n"
 
-#: ../gio/gresource-tool.c:572
+#: gio/gresource-tool.c:578
 msgid "[PATH]"
 msgstr "[ПЪТ]"
 
-#: ../gio/gresource-tool.c:574
+#: gio/gresource-tool.c:580
 msgid "  PATH      An (optional) resource path (may be partial)\n"
 msgstr "  ПЪТ       (Незадължителен) (непълен) път до ресурс\n"
 
-#: ../gio/gresource-tool.c:575
+#: gio/gresource-tool.c:581
 msgid "PATH"
 msgstr "ПЪТ"
 
-#: ../gio/gresource-tool.c:577
+#: gio/gresource-tool.c:583
 msgid "  PATH      A resource path\n"
 msgstr "  ПЪТ       Път до ресурс\n"
 
-#: ../gio/gsettings-tool.c:51 ../gio/gsettings-tool.c:72
-#: ../gio/gsettings-tool.c:824
+#: gio/gsettings-tool.c:49 gio/gsettings-tool.c:70 gio/gsettings-tool.c:923
 #, c-format
-msgid "No such schema '%s'\n"
+msgid "No such schema “%s”\n"
 msgstr "Липсва схема „%s“\n"
 
-#: ../gio/gsettings-tool.c:57
+#: gio/gsettings-tool.c:55
 #, c-format
-msgid "Schema '%s' is not relocatable (path must not be specified)\n"
+msgid "Schema “%s” is not relocatable (path must not be specified)\n"
 msgstr "Схемата „%s“ не може да се мести (не трябва да указвате път)\n"
 
-#: ../gio/gsettings-tool.c:78
+#: gio/gsettings-tool.c:76
 #, c-format
-msgid "Schema '%s' is relocatable (path must be specified)\n"
+msgid "Schema “%s” is relocatable (path must be specified)\n"
 msgstr "Схемата „%s“ може да се мести (трябва да укажете път)\n"
 
-#: ../gio/gsettings-tool.c:92
-#, c-format
+#: gio/gsettings-tool.c:90
 msgid "Empty path given.\n"
 msgstr "Даден е празен път.\n"
 
-#: ../gio/gsettings-tool.c:98
-#, c-format
+#: gio/gsettings-tool.c:96
 msgid "Path must begin with a slash (/)\n"
 msgstr "Пътят трябва да започва с наклонена черта („/“)\n"
 
-#: ../gio/gsettings-tool.c:104
-#, c-format
+#: gio/gsettings-tool.c:102
 msgid "Path must end with a slash (/)\n"
 msgstr "Пътят трябва да завършва с наклонена черта („/“)\n"
 
-#: ../gio/gsettings-tool.c:110
-#, c-format
+#: gio/gsettings-tool.c:108
 msgid "Path must not contain two adjacent slashes (//)\n"
 msgstr "Пътят не трябва да съдържа две последователни наклонени черти („//“)\n"
 
-#: ../gio/gsettings-tool.c:481
-#, c-format
+#: gio/gsettings-tool.c:553
 msgid "The provided value is outside of the valid range\n"
 msgstr "Стойността е извън интервала на допустимите стойности\n"
 
-#: ../gio/gsettings-tool.c:488
-#, c-format
+#: gio/gsettings-tool.c:560
 msgid "The key is not writable\n"
 msgstr "Ключът не поддържа запис\n"
 
-#: ../gio/gsettings-tool.c:524
+#: gio/gsettings-tool.c:596
 msgid "List the installed (non-relocatable) schemas"
 msgstr "Извеждане на инсталираните схеми (които не се местят)"
 
-#: ../gio/gsettings-tool.c:530
+#: gio/gsettings-tool.c:602
 msgid "List the installed relocatable schemas"
-msgstr "Ð\98звеждане Ð½Ð° Ð¸Ð½Ñ\81Ñ\82алиÑ\80аниÑ\82е Ñ\81Ñ\85еми, ÐºÐ¾Ð¸Ñ\82о Ð¼Ð¾Ð³Ð°Ñ\82 да се местят"
+msgstr "Ð\98звеждане Ð½Ð° Ð¸Ð½Ñ\81Ñ\82алиÑ\80аниÑ\82е Ñ\81Ñ\85еми, ÐºÐ¾Ð¸Ñ\82о Ð¼Ð¾Ð¶Ðµ да се местят"
 
-#: ../gio/gsettings-tool.c:536
+#: gio/gsettings-tool.c:608
 msgid "List the keys in SCHEMA"
 msgstr "Извеждане на ключовете в СХЕМАта"
 
-#: ../gio/gsettings-tool.c:537 ../gio/gsettings-tool.c:543
-#: ../gio/gsettings-tool.c:580
+#: gio/gsettings-tool.c:609 gio/gsettings-tool.c:615 gio/gsettings-tool.c:658
 msgid "SCHEMA[:PATH]"
 msgstr "СХЕМА[:ПЪТ]"
 
-#: ../gio/gsettings-tool.c:542
+#: gio/gsettings-tool.c:614
 msgid "List the children of SCHEMA"
 msgstr "Извеждане на наследниците на СХЕМАта"
 
-#: ../gio/gsettings-tool.c:548
+#: gio/gsettings-tool.c:620
 msgid ""
 "List keys and values, recursively\n"
 "If no SCHEMA is given, list all keys\n"
@@ -2550,44 +3756,48 @@ msgstr ""
 "Рекурсивно извеждане на ключовете и стойностите им.\n"
 "Ако липсва СХЕМА, се извеждат всички ключове\n"
 
-#: ../gio/gsettings-tool.c:550
+#: gio/gsettings-tool.c:622
 msgid "[SCHEMA[:PATH]]"
 msgstr "[СХЕМА[:ПЪТ]]"
 
-#: ../gio/gsettings-tool.c:555
+#: gio/gsettings-tool.c:627
 msgid "Get the value of KEY"
 msgstr "Получаване на стойността на КЛЮЧ"
 
-#: ../gio/gsettings-tool.c:556 ../gio/gsettings-tool.c:562
-#: ../gio/gsettings-tool.c:574 ../gio/gsettings-tool.c:586
+#: gio/gsettings-tool.c:628 gio/gsettings-tool.c:634 gio/gsettings-tool.c:640
+#: gio/gsettings-tool.c:652 gio/gsettings-tool.c:664
 msgid "SCHEMA[:PATH] KEY"
 msgstr "СХЕМА[:ПЪТ] КЛЮЧ"
 
-#: ../gio/gsettings-tool.c:561
+#: gio/gsettings-tool.c:633
 msgid "Query the range of valid values for KEY"
 msgstr "Запитване за интервала от допустими стойности за КЛЮЧа"
 
-#: ../gio/gsettings-tool.c:567
+#: gio/gsettings-tool.c:639
+msgid "Query the description for KEY"
+msgstr "Запитване на описанието за КЛЮЧа"
+
+#: gio/gsettings-tool.c:645
 msgid "Set the value of KEY to VALUE"
 msgstr "Задаване на СТОЙНОСТта на КЛЮЧ"
 
-#: ../gio/gsettings-tool.c:568
+#: gio/gsettings-tool.c:646
 msgid "SCHEMA[:PATH] KEY VALUE"
 msgstr "СХЕМА[:ПЪТ] КЛЮЧ СТОЙНОСТ"
 
-#: ../gio/gsettings-tool.c:573
+#: gio/gsettings-tool.c:651
 msgid "Reset KEY to its default value"
 msgstr "Връщане на стандартната стойност на КЛЮЧ"
 
-#: ../gio/gsettings-tool.c:579
+#: gio/gsettings-tool.c:657
 msgid "Reset all keys in SCHEMA to their defaults"
 msgstr "Връщане на стандартната стойност на всички ключове в СХЕМАта"
 
-#: ../gio/gsettings-tool.c:585
+#: gio/gsettings-tool.c:663
 msgid "Check if KEY is writable"
 msgstr "Проверка дали стойността на КЛЮЧ може да се променя"
 
-#: ../gio/gsettings-tool.c:591
+#: gio/gsettings-tool.c:669
 msgid ""
 "Monitor KEY for changes.\n"
 "If no KEY is specified, monitor all keys in SCHEMA.\n"
@@ -2597,15 +3807,15 @@ msgstr ""
 "Ако не е указан определен КЛЮЧ, се следят всички във СХЕМАта.\n"
 "Наблюдението се спира с „^C“.\n"
 
-#: ../gio/gsettings-tool.c:594
+#: gio/gsettings-tool.c:672
 msgid "SCHEMA[:PATH] [KEY]"
 msgstr "СХЕМА[:ПЪТ] [КЛЮЧ]"
 
-#: ../gio/gsettings-tool.c:606
+#: gio/gsettings-tool.c:684
 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"
@@ -2615,6 +3825,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"
@@ -2622,21 +3833,22 @@ 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 ""
 "Употреба:\n"
+"  gsettings --version\n"
 "  gsettings [--schemadir ПАПКА_НА_СХЕМА] КОМАНДА [АРГУМЕНТИ…]\n"
 "\n"
 "Команди:\n"
 "  help                      Показване на този текст\n"
 "  list-schemas              Извеждане на инсталираните схеми\n"
-"  list-relocatable-schemas  Ð\98звеждане Ð½Ð° Ñ\81Ñ\85емиÑ\82е, ÐºÐ¾Ð¸Ñ\82о Ð¼Ð¾Ð³Ð°Ñ\82 да се местят\n"
+"  list-relocatable-schemas  Ð\98звеждане Ð½Ð° Ñ\81Ñ\85емиÑ\82е, ÐºÐ¾Ð¸Ñ\82о Ð¼Ð¾Ð¶Ðµ да се местят\n"
 "  list-keys                 Извеждане на ключовете в схема\n"
 "  list-children             Извеждане на наследниците на схема\n"
 "  list-recursively          Рекурсивно извеждане на ключовете и стойностите "
 "им\n"
-"  range                     Какъв е интервала от допустими стойности за "
+"  range                     Какъв е интервалът от допустими стойности за "
 "ключ\n"
 "  get                       Получаване на стойността на даден ключ\n"
 "  set                       Промяна на стойността на даден ключ\n"
@@ -2649,7 +3861,7 @@ msgstr ""
 "Използвайте „gsettings help КОМАНДА“ за допълнителна информация.\n"
 "\n"
 
-#: ../gio/gsettings-tool.c:629
+#: gio/gsettings-tool.c:708
 #, c-format
 msgid ""
 "Usage:\n"
@@ -2664,258 +3876,294 @@ msgstr ""
 "%s\n"
 "\n"
 
-#: ../gio/gsettings-tool.c:635
+#: gio/gsettings-tool.c:714
 msgid "  SCHEMADIR A directory to search for additional schemas\n"
 msgstr "  ПАПКА_НА_СХЕМА     Папка, в която да се търсят допълнителни схеми\n"
 
-#: ../gio/gsettings-tool.c:643
+#: gio/gsettings-tool.c:722
 msgid ""
 "  SCHEMA    The name of the schema\n"
 "  PATH      The path, for relocatable schemas\n"
 msgstr ""
 "Аргументи:\n"
 "  СХЕМА       Името на схемата\n"
-"  Ð\9fЪТ         Ð\9fÑ\8aÑ\82 (за Ñ\81Ñ\85еми, ÐºÐ¾Ð¸Ñ\82о Ð¼Ð¾Ð³Ð°Ñ\82 да се местят)\n"
+"  Ð\9fЪТ         Ð\9fÑ\8aÑ\82 (за Ñ\81Ñ\85еми, ÐºÐ¾Ð¸Ñ\82о Ð¼Ð¾Ð¶Ðµ да се местят)\n"
 
-#: ../gio/gsettings-tool.c:648
+#: gio/gsettings-tool.c:727
 msgid "  KEY       The (optional) key within the schema\n"
 msgstr "  КЛЮЧ        Ключ в схемата (незадължителен)\n"
 
-#: ../gio/gsettings-tool.c:652
+#: gio/gsettings-tool.c:731
 msgid "  KEY       The key within the schema\n"
 msgstr "  КЛЮЧ        Ключ в схемата\n"
 
-#: ../gio/gsettings-tool.c:656
+#: gio/gsettings-tool.c:735
 msgid "  VALUE     The value to set\n"
 msgstr "  СТОЙНОСТ    Стойност, която да бъде зададена\n"
 
-#: ../gio/gsettings-tool.c:712
+#: gio/gsettings-tool.c:790
 #, c-format
 msgid "Could not load schemas from %s: %s\n"
-msgstr "СÑ\85еми Ð¾Ñ\82 â\80\9e%sâ\80\9c Ð½Ðµ Ð¼Ð¾Ð³Ð°Ñ\82 да се заредят: %s\n"
+msgstr "СÑ\85еми Ð¾Ñ\82 â\80\9e%sâ\80\9c Ð½Ðµ Ð¼Ð¾Ð¶Ðµ да се заредят: %s\n"
 
-#: ../gio/gsettings-tool.c:782
-#, c-format
+#: gio/gsettings-tool.c:802
+msgid "No schemas installed\n"
+msgstr "Не са открити схеми\n"
+
+#: gio/gsettings-tool.c:881
 msgid "Empty schema name given\n"
 msgstr "Подадено е празно име за схема\n"
 
-#: ../gio/gsettings-tool.c:837
+#: gio/gsettings-tool.c:936
 #, c-format
-msgid "No such key '%s'\n"
+msgid "No such key “%s”\n"
 msgstr "Липсва ключ „%s“\n"
 
-#: ../gio/gsocket.c:364
+#: gio/gsocket.c:417
 msgid "Invalid socket, not initialized"
 msgstr "Неправилно гнездо, не е инициализирано"
 
-#: ../gio/gsocket.c:371
+#: gio/gsocket.c:424
 #, c-format
 msgid "Invalid socket, initialization failed due to: %s"
 msgstr "Неправилно гнездо, неуспешна инициализация понеже: %s"
 
-#: ../gio/gsocket.c:379
+#: gio/gsocket.c:432
 msgid "Socket is already closed"
 msgstr "Гнездото вече е затворено"
 
-#: ../gio/gsocket.c:394 ../gio/gsocket.c:2751 ../gio/gsocket.c:3896
-#: ../gio/gsocket.c:3951
+#: gio/gsocket.c:447 gio/gsocket.c:3194 gio/gsocket.c:4427 gio/gsocket.c:4485
 msgid "Socket I/O timed out"
 msgstr "Просрочено време за отговор при входни-изходна операция с гнездото"
 
-#: ../gio/gsocket.c:526
+#: gio/gsocket.c:582
 #, c-format
 msgid "creating GSocket from fd: %s"
-msgstr "създаване на GSocket от файлов дескриптор: %s"
+msgstr "създаване на „GSocket“ от файлов дескриптор: %s"
 
-#: ../gio/gsocket.c:554 ../gio/gsocket.c:608 ../gio/gsocket.c:615
+#: gio/gsocket.c:611 gio/gsocket.c:675 gio/gsocket.c:682
 #, c-format
 msgid "Unable to create socket: %s"
 msgstr "Неуспешно създаване на гнездо: %s"
 
-#: ../gio/gsocket.c:608
+#: gio/gsocket.c:675
 msgid "Unknown family was specified"
 msgstr "Указан е непознат вид версия на протокол"
 
-#: ../gio/gsocket.c:615
+#: gio/gsocket.c:682
 msgid "Unknown protocol was specified"
 msgstr "Указан е непознат протокол"
 
-#: ../gio/gsocket.c:1104
+#: gio/gsocket.c:1173
 #, c-format
 msgid "Cannot use datagram operations on a non-datagram socket."
 msgstr ""
 "Не може да се използват операции за дейтаграми върху гнезда, които не са за "
 "дейтаграми."
 
-#: ../gio/gsocket.c:1121
+#: gio/gsocket.c:1190
 #, c-format
 msgid "Cannot use datagram operations on a socket with a timeout set."
 msgstr ""
 "Не може да се използват операции за дейтаграми върху гнезда без зададено "
 "максимално време за операцията."
 
-#: ../gio/gsocket.c:1925
+#: gio/gsocket.c:1997
 #, c-format
 msgid "could not get local address: %s"
 msgstr "локалният адрес не може да бъде получен :%s"
 
-#: ../gio/gsocket.c:1968
+#: gio/gsocket.c:2043
 #, c-format
 msgid "could not get remote address: %s"
 msgstr "отдалеченият адрес не може да бъде получен :%s"
 
-#: ../gio/gsocket.c:2034
+#: gio/gsocket.c:2109
 #, c-format
 msgid "could not listen: %s"
 msgstr "не може да се слуша: %s"
 
-#: ../gio/gsocket.c:2133
+#: gio/gsocket.c:2213
 #, c-format
-msgid "Error binding to address: %s"
-msgstr "Грешка при свързване към адрес: %s"
+msgid "Error binding to address %s: %s"
+msgstr "Грешка при свързване към адрес %s: %s"
 
-#: ../gio/gsocket.c:2248 ../gio/gsocket.c:2285
+#: gio/gsocket.c:2389 gio/gsocket.c:2426 gio/gsocket.c:2536 gio/gsocket.c:2561
+#: gio/gsocket.c:2624 gio/gsocket.c:2682 gio/gsocket.c:2700
 #, c-format
 msgid "Error joining multicast group: %s"
 msgstr "Грешка при включване към група за разпръскване: %s"
 
-#: ../gio/gsocket.c:2249 ../gio/gsocket.c:2286
+#: gio/gsocket.c:2390 gio/gsocket.c:2427 gio/gsocket.c:2537 gio/gsocket.c:2562
+#: gio/gsocket.c:2625 gio/gsocket.c:2683 gio/gsocket.c:2701
 #, c-format
 msgid "Error leaving multicast group: %s"
 msgstr "Грешка при напускане на група за разпръскване: %s"
 
-#: ../gio/gsocket.c:2250
+#: gio/gsocket.c:2391
 msgid "No support for source-specific multicast"
 msgstr "Липсва поддръжка за насочено разпръскване"
 
-#: ../gio/gsocket.c:2470
+#: gio/gsocket.c:2538
+msgid "Unsupported socket family"
+msgstr "Неподдържана фамилия гнездо"
+
+#: gio/gsocket.c:2563
+msgid "source-specific not an IPv4 address"
+msgstr "насочено разпръскване не към адрес по IPv4"
+
+#: gio/gsocket.c:2587
+#, c-format
+msgid "Interface name too long"
+msgstr "Името на интерфейса е твърде дълго"
+
+#: gio/gsocket.c:2600 gio/gsocket.c:2650
+#, c-format
+msgid "Interface not found: %s"
+msgstr "Интерфейсът липсва: %s"
+
+#: gio/gsocket.c:2626
+msgid "No support for IPv4 source-specific multicast"
+msgstr "Липсва поддръжка за насочено разпръскване по IPv4"
+
+#: gio/gsocket.c:2684
+msgid "No support for IPv6 source-specific multicast"
+msgstr "Липсва поддръжка за насочено разпръскване по IPv6"
+
+#: gio/gsocket.c:2893
 #, c-format
 msgid "Error accepting connection: %s"
 msgstr "Грешка при приемане на връзка: %s"
 
-#: ../gio/gsocket.c:2593
+#: gio/gsocket.c:3019
 msgid "Connection in progress"
 msgstr "В момента се осъществява връзка"
 
-#: ../gio/gsocket.c:2644
+#: gio/gsocket.c:3070
 msgid "Unable to get pending error: "
 msgstr "Неуспешно получаване на текущата грешка: "
 
-#: ../gio/gsocket.c:2816
+#: gio/gsocket.c:3259
 #, c-format
 msgid "Error receiving data: %s"
 msgstr "Грешка при получаване на данни: %s"
 
-#: ../gio/gsocket.c:3013
+#: gio/gsocket.c:3456
 #, c-format
 msgid "Error sending data: %s"
 msgstr "Грешка при изпращане на данни: %s"
 
-#: ../gio/gsocket.c:3200
+#: gio/gsocket.c:3643
 #, c-format
 msgid "Unable to shutdown socket: %s"
 msgstr "Неуспешно изключване на гнездо: %s"
 
-#: ../gio/gsocket.c:3281
+#: gio/gsocket.c:3724
 #, c-format
 msgid "Error closing socket: %s"
 msgstr "Грешка при затваряне на гнездо: %s"
 
-#: ../gio/gsocket.c:3889
+#: gio/gsocket.c:4420
 #, c-format
 msgid "Waiting for socket condition: %s"
 msgstr "Изчакване за състояние на гнездо: %s"
 
-#: ../gio/gsocket.c:4361 ../gio/gsocket.c:4441 ../gio/gsocket.c:4619
+#: gio/gsocket.c:4810 gio/gsocket.c:4826 gio/gsocket.c:4839
+#, c-format
+msgid "Unable to send message: %s"
+msgstr "Неуспешно изпращане на съобщение: %s"
+
+#: gio/gsocket.c:4811 gio/gsocket.c:4827 gio/gsocket.c:4840
+msgid "Message vectors too large"
+msgstr "Векторите на съобщението са прекалено дълги"
+
+#: gio/gsocket.c:4856 gio/gsocket.c:4858 gio/gsocket.c:5005 gio/gsocket.c:5090
+#: gio/gsocket.c:5268 gio/gsocket.c:5308 gio/gsocket.c:5310
 #, c-format
 msgid "Error sending message: %s"
 msgstr "Грешка при изпращане на съобщение: %s"
 
-#: ../gio/gsocket.c:4385
+#: gio/gsocket.c:5032
 msgid "GSocketControlMessage not supported on Windows"
-msgstr "GSocketControlMessage не се поддържа под Windows"
+msgstr "„GSocketControlMessage“ не се поддържа под Windows"
 
-#: ../gio/gsocket.c:4840 ../gio/gsocket.c:4913 ../gio/gsocket.c:5140
+#: gio/gsocket.c:5505 gio/gsocket.c:5581 gio/gsocket.c:5807
 #, c-format
 msgid "Error receiving message: %s"
 msgstr "Грешка при изпращане на съобщение: %s"
 
-#: ../gio/gsocket.c:5412
+#: gio/gsocket.c:6090 gio/gsocket.c:6101 gio/gsocket.c:6164
 #, c-format
 msgid "Unable to read socket credentials: %s"
 msgstr "Неуспешно изчитане на правата на гнездо: %s"
 
-#: ../gio/gsocket.c:5421
+#: gio/gsocket.c:6173
 msgid "g_socket_get_credentials not implemented for this OS"
-msgstr "g_socket_get_credentials не е реализирана на тази операционна система"
+msgstr ""
+"„g_socket_get_credentials“ не е реализирана на тази операционна система"
 
-#: ../gio/gsocketclient.c:176
+#: gio/gsocketclient.c:191
 #, c-format
 msgid "Could not connect to proxy server %s: "
 msgstr "Неуспешно свързване към сървъра-посредник %s: "
 
-#: ../gio/gsocketclient.c:190
+#: gio/gsocketclient.c:205
 #, c-format
 msgid "Could not connect to %s: "
 msgstr "Неуспешно свързване към „%s“: "
 
-#: ../gio/gsocketclient.c:192
+#: gio/gsocketclient.c:207
 msgid "Could not connect: "
 msgstr "Неуспешно свързване: "
 
-#: ../gio/gsocketclient.c:1027 ../gio/gsocketclient.c:1599
-msgid "Unknown error on connect"
-msgstr "Непозната грешка при свързване"
-
-#: ../gio/gsocketclient.c:1081 ../gio/gsocketclient.c:1535
+#: gio/gsocketclient.c:1202 gio/gsocketclient.c:1793
 msgid "Proxying over a non-TCP connection is not supported."
 msgstr "Не се поддържа посредничество на връзки извън TCP."
 
-#: ../gio/gsocketclient.c:1110 ../gio/gsocketclient.c:1561
+#: gio/gsocketclient.c:1234 gio/gsocketclient.c:1822
 #, c-format
-msgid "Proxy protocol '%s' is not supported."
+msgid "Proxy protocol “%s” is not supported."
 msgstr "Протоколът за посредничество „%s“ не се поддържа."
 
-#: ../gio/gsocketlistener.c:218
+#: gio/gsocketlistener.c:230
 msgid "Listener is already closed"
 msgstr "Функцията за слушане вече е затворена"
 
-#: ../gio/gsocketlistener.c:264
+#: gio/gsocketlistener.c:276
 msgid "Added socket is closed"
 msgstr "Добавеното гнездо е затворено"
 
-#: ../gio/gsocks4aproxy.c:118
+#: gio/gsocks4aproxy.c:118
 #, c-format
-msgid "SOCKSv4 does not support IPv6 address '%s'"
+msgid "SOCKSv4 does not support IPv6 address “%s”"
 msgstr "SOCKSv4 не поддържа адреса IPv6 „%s“"
 
-#: ../gio/gsocks4aproxy.c:136
+#: gio/gsocks4aproxy.c:136
 msgid "Username is too long for SOCKSv4 protocol"
 msgstr "Потребителското име е твърде дълго за протокола SOCKSv4"
 
-#: ../gio/gsocks4aproxy.c:153
+#: gio/gsocks4aproxy.c:153
 #, c-format
-msgid "Hostname '%s' is too long for SOCKSv4 protocol"
+msgid "Hostname “%s” is too long for SOCKSv4 protocol"
 msgstr "Името на хоста „%s“ е твърде дълго за протокола SOCKSv4"
 
-#: ../gio/gsocks4aproxy.c:179
+#: gio/gsocks4aproxy.c:179
 msgid "The server is not a SOCKSv4 proxy server."
-msgstr "Този Ñ\81Ñ\8aÑ\80вÑ\8aÑ\80 Ð½Ðµ Ð¿Ñ\80едоÑ\81Ñ\82авÑ\8f Ð¿Ð¾Ñ\81Ñ\80едниÑ\87еÑ\81Ñ\82во чрез SOCKSv4."
+msgstr "Този Ñ\81Ñ\8aÑ\80вÑ\8aÑ\80 Ð½Ðµ Ðµ Ð¿Ð¾Ñ\81Ñ\80едник чрез SOCKSv4."
 
-#: ../gio/gsocks4aproxy.c:186
+#: gio/gsocks4aproxy.c:186
 msgid "Connection through SOCKSv4 server was rejected"
 msgstr "Връзката през сървъра SOCKSv4 беше отхвърлена"
 
-#: ../gio/gsocks5proxy.c:153 ../gio/gsocks5proxy.c:324
-#: ../gio/gsocks5proxy.c:334
+#: gio/gsocks5proxy.c:153 gio/gsocks5proxy.c:338 gio/gsocks5proxy.c:348
 msgid "The server is not a SOCKSv5 proxy server."
-msgstr "Този сървър не предоставя посредничество чрез SOCKSv5."
+msgstr "Този сървър не посредничи чрез SOCKSv5."
 
-#: ../gio/gsocks5proxy.c:167
+#: gio/gsocks5proxy.c:167 gio/gsocks5proxy.c:184
 msgid "The SOCKSv5 proxy requires authentication."
 msgstr "Посредникът чрез SOCKSv5 изисква идентификация."
 
-#: ../gio/gsocks5proxy.c:177
+#: gio/gsocks5proxy.c:191
 msgid ""
 "The SOCKSv5 proxy requires an authentication method that is not supported by "
 "GLib."
@@ -2923,108 +4171,147 @@ msgstr ""
 "Посредникът чрез SOCKSv5 изисква механизъм за идентификация, който не се "
 "поддържа от GLib."
 
-#: ../gio/gsocks5proxy.c:206
+#: gio/gsocks5proxy.c:220
 msgid "Username or password is too long for SOCKSv5 protocol."
 msgstr "Потребителското име или паролата са твърде дълги за протокола SOCKSv5."
 
-#: ../gio/gsocks5proxy.c:236
+#: gio/gsocks5proxy.c:250
 msgid "SOCKSv5 authentication failed due to wrong username or password."
 msgstr ""
 "Идентифицирането за SOCKSv4 не успя поради грешно потребителско име или "
 "парола."
 
-#: ../gio/gsocks5proxy.c:286
+#: gio/gsocks5proxy.c:300
 #, c-format
-msgid "Hostname '%s' is too long for SOCKSv5 protocol"
-msgstr "Името на хоста „%s“ е твърде дълго за протокола SOCKSv5."
+msgid "Hostname “%s” is too long for SOCKSv5 protocol"
+msgstr "Името на хоста „%s“ е твърде дълго за протокола SOCKSv5"
 
-#: ../gio/gsocks5proxy.c:348
+#: gio/gsocks5proxy.c:362
 msgid "The SOCKSv5 proxy server uses unknown address type."
-msgstr "Сървърът посредник за SOCKSv5 използва непознат вид адрес."
+msgstr "Сървърът-посредник за SOCKSv5 използва непознат вид адрес."
 
-#: ../gio/gsocks5proxy.c:355
+#: gio/gsocks5proxy.c:369
 msgid "Internal SOCKSv5 proxy server error."
-msgstr "Вътрешна грешка на сървъра посредник за SOCKSv5."
+msgstr "Вътрешна грешка на сървъра-посредник за SOCKSv5."
 
-#: ../gio/gsocks5proxy.c:361
+#: gio/gsocks5proxy.c:375
 msgid "SOCKSv5 connection not allowed by ruleset."
 msgstr "Правилата не позволяват свързването по SOCKSv5."
 
-#: ../gio/gsocks5proxy.c:368
+#: gio/gsocks5proxy.c:382
 msgid "Host unreachable through SOCKSv5 server."
 msgstr "Хостът не е достъпен през сървъра за SOCKSv5."
 
-#: ../gio/gsocks5proxy.c:374
+#: gio/gsocks5proxy.c:388
 msgid "Network unreachable through SOCKSv5 proxy."
-msgstr "Мрежата не е достъпна през сървъра посредник за SOCKSv5."
+msgstr "Мрежата не е достъпна през сървъра-посредник за SOCKSv5."
 
-#: ../gio/gsocks5proxy.c:380
+#: gio/gsocks5proxy.c:394
 msgid "Connection refused through SOCKSv5 proxy."
-msgstr "Връзката сървъра посредник за SOCKSv5 е отказана."
+msgstr "Връзката през посредник за SOCKSv5 е отказана."
 
-#: ../gio/gsocks5proxy.c:386
-msgid "SOCKSv5 proxy does not support 'connect' command."
-msgstr "Сървърът посредник за SOCKSv5 не поддържа командата „connect“."
+#: gio/gsocks5proxy.c:400
+msgid "SOCKSv5 proxy does not support “connect” command."
+msgstr "Сървърът-посредник за SOCKSv5 не поддържа командата „connect“."
 
-#: ../gio/gsocks5proxy.c:392
+#: gio/gsocks5proxy.c:406
 msgid "SOCKSv5 proxy does not support provided address type."
-msgstr "Сървърът посредник за SOCKSv5 не поддържа предоставения вид адрес."
+msgstr "Сървърът-посредник за SOCKSv5 не поддържа предоставения вид адрес."
 
-#: ../gio/gsocks5proxy.c:398
+#: gio/gsocks5proxy.c:412
 msgid "Unknown SOCKSv5 proxy error."
-msgstr "Неизвестна грешка със сървъра посредник за SOCKSv5."
+msgstr "Неизвестна грешка със сървъра-посредник за SOCKSv5."
+
+#: gio/gtestdbus.c:612 glib/gspawn-win32.c:314
+#, c-format
+msgid "Failed to create pipe for communicating with child process (%s)"
+msgstr "Неуспешно създаване на канал за комуникация с дъщерен процес (%s)"
+
+#: gio/gtestdbus.c:619
+#, c-format
+msgid "Pipes are not supported in this platform"
+msgstr "Тази платформа не поддържа програмни канали"
 
-#: ../gio/gthemedicon.c:518
+#: gio/gthemedicon.c:595
 #, c-format
-msgid "Can't handle version %d of GThemedIcon encoding"
-msgstr "Версия %d на кодирането GThemedIcon не се поддържа"
+msgid "Cant handle version %d of GThemedIcon encoding"
+msgstr "Версия %d на кодирането „GThemedIcon“ не се поддържа"
 
-#: ../gio/gthreadedresolver.c:118
+#: gio/gthreadedresolver.c:152
 msgid "No valid addresses were found"
 msgstr "Не бяха намерени валидни адреси"
 
-#: ../gio/gthreadedresolver.c:211
+#: gio/gthreadedresolver.c:337
 #, c-format
-msgid "Error reverse-resolving '%s': %s"
+msgid "Error reverse-resolving “%s”: %s"
 msgstr "Грешка при обратно откриване по адрес на „%s“: %s"
 
-#: ../gio/gthreadedresolver.c:546 ../gio/gthreadedresolver.c:626
-#: ../gio/gthreadedresolver.c:724 ../gio/gthreadedresolver.c:774
+#. Translators: the placeholder is a DNS record type, such as ‘MX’ or ‘SRV’
+#: gio/gthreadedresolver.c:550 gio/gthreadedresolver.c:572
+#: gio/gthreadedresolver.c:610 gio/gthreadedresolver.c:657
+#: gio/gthreadedresolver.c:686 gio/gthreadedresolver.c:698
 #, c-format
-msgid "No DNS record of the requested type for '%s'"
+msgid "Error parsing DNS %s record: malformed DNS packet"
+msgstr "Грешка при анализ на запис от DNS — „%s“: неправилен пакет от DNS"
+
+#: gio/gthreadedresolver.c:756 gio/gthreadedresolver.c:893
+#: gio/gthreadedresolver.c:991 gio/gthreadedresolver.c:1041
+#, c-format
+msgid "No DNS record of the requested type for “%s”"
 msgstr "Няма запис в DNS от указания вид за „%s“"
 
-#: ../gio/gthreadedresolver.c:551 ../gio/gthreadedresolver.c:729
+#: gio/gthreadedresolver.c:761 gio/gthreadedresolver.c:996
 #, c-format
-msgid "Temporarily unable to resolve '%s'"
+msgid "Temporarily unable to resolve “%s”"
 msgstr "Временно е невъзможно „%s“ да бъде открит по адрес"
 
-#: ../gio/gthreadedresolver.c:556 ../gio/gthreadedresolver.c:734
+#: gio/gthreadedresolver.c:766 gio/gthreadedresolver.c:1001
+#: gio/gthreadedresolver.c:1111
 #, c-format
-msgid "Error resolving '%s'"
-msgstr "Грешка при откриване по адрес на %s"
+msgid "Error resolving “%s”"
+msgstr "Грешка при откриване по адрес на „%s“"
 
-#: ../gio/gtlscertificate.c:250
-msgid "Cannot decrypt PEM-encoded private key"
-msgstr "Частният ключ, шифриран с PEM, не може да бъде дешифриран"
+#: gio/gthreadedresolver.c:780 gio/gthreadedresolver.c:804
+#: gio/gthreadedresolver.c:829 gio/gthreadedresolver.c:844
+msgid "Malformed DNS packet"
+msgstr "Неправилен пакет от DNS"
 
-#: ../gio/gtlscertificate.c:255
+#: gio/gthreadedresolver.c:886
+#, c-format
+msgid "Failed to parse DNS response for “%s”: "
+msgstr "Неуспешен анализ на отговор от DNS за „%s“: "
+
+#: gio/gtlscertificate.c:478
 msgid "No PEM-encoded private key found"
 msgstr "Липсва частен ключ, шифриран с PEM"
 
-#: ../gio/gtlscertificate.c:265
+#: gio/gtlscertificate.c:488
+msgid "Cannot decrypt PEM-encoded private key"
+msgstr "Частният ключ, шифриран с PEM, не може да бъде дешифриран"
+
+#: gio/gtlscertificate.c:499
 msgid "Could not parse PEM-encoded private key"
 msgstr "Частният ключ, шифриран с PEM, не може да бъде анализиран"
 
-#: ../gio/gtlscertificate.c:290
+#: gio/gtlscertificate.c:526
 msgid "No PEM-encoded certificate found"
 msgstr "Липсва сертификат, шифриран с PEM"
 
-#: ../gio/gtlscertificate.c:299
+#: gio/gtlscertificate.c:535
 msgid "Could not parse PEM-encoded certificate"
 msgstr "Сертификатът, шифриран с PEM, не може да бъде анализиран"
 
-#: ../gio/gtlspassword.c:111
+#: gio/gtlscertificate.c:796
+msgid "The current TLS backend does not support PKCS #12"
+msgstr "Реализацията на TLS не поддържа PKCS #12"
+
+#: gio/gtlscertificate.c:1013
+msgid "This GTlsBackend does not support creating PKCS #11 certificates"
+msgstr ""
+"Тази реализация на „GTlsBackend“ не поддържа създаване на сертификати PKCS "
+"#11"
+
+#: gio/gtlspassword.c:111
 msgid ""
 "This is the last chance to enter the password correctly before your access "
 "is locked out."
@@ -3032,905 +4319,1118 @@ msgstr ""
 "Това е последният ви шанс да въведете правилна парола, преди машината да се "
 "заключи."
 
-#: ../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
 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 ""
 "Няколко пъти сте въвели неправилна парола. Ако отново сгрешите, машината ще "
 "се заключи за достъп."
 
-#: ../gio/gtlspassword.c:115
+#: gio/gtlspassword.c:117
 msgid "The password entered is incorrect."
 msgstr "Въведената парола е неправилна."
 
-#: ../gio/gunixconnection.c:166 ../gio/gunixconnection.c:561
+#: gio/gunixconnection.c:125
+msgid "Sending FD is not supported"
+msgstr "Изпращането на файлов дескриптор не се поддържа"
+
+#: gio/gunixconnection.c:178 gio/gunixconnection.c:596
 #, c-format
 msgid "Expecting 1 control message, got %d"
 msgid_plural "Expecting 1 control message, got %d"
 msgstr[0] "Очакваше се 1 контролно съобщение, а беше получено %d"
 msgstr[1] "Очакваше се 1 контролно съобщение, а бяха получени %d"
 
-#: ../gio/gunixconnection.c:182 ../gio/gunixconnection.c:573
+#: gio/gunixconnection.c:194 gio/gunixconnection.c:608
 msgid "Unexpected type of ancillary data"
 msgstr "Неочакван вид на помощните данни"
 
-#: ../gio/gunixconnection.c:200
+#: gio/gunixconnection.c:212
 #, c-format
 msgid "Expecting one fd, but got %d\n"
 msgid_plural "Expecting one fd, but got %d\n"
 msgstr[0] "Очакваше се един файлов дескриптор, а беше получен %d\n"
 msgstr[1] "Очакваше се един файлов дескриптор, а бяха получени %d\n"
 
-#: ../gio/gunixconnection.c:219
+#: gio/gunixconnection.c:231
 msgid "Received invalid fd"
 msgstr "Получен е неправилен файлов дескриптор"
 
-#: ../gio/gunixconnection.c:355
+#: gio/gunixconnection.c:238
+msgid "Receiving FD is not supported"
+msgstr "Получаването на файлов дескриптор не се поддържа"
+
+#: gio/gunixconnection.c:380
 msgid "Error sending credentials: "
 msgstr "Грешка при изпращане на самоличност: "
 
-#: ../gio/gunixconnection.c:503
+#: gio/gunixconnection.c:537
 #, c-format
 msgid "Error checking if SO_PASSCRED is enabled for socket: %s"
-msgstr "Грешка при проверка дали SO_PASSCRED е позволено за гнездото: %s"
+msgstr "Грешка при проверка дали „SO_PASSCRED“ е позволено за гнездото: %s"
 
-#: ../gio/gunixconnection.c:518
+#: gio/gunixconnection.c:553
 #, c-format
 msgid "Error enabling SO_PASSCRED: %s"
-msgstr "Грешка при разрешаване на SO_PASSCRED: %s"
+msgstr "Грешка при разрешаване на „SO_PASSCRED“: %s"
 
-#: ../gio/gunixconnection.c:547
+#: gio/gunixconnection.c:582
 msgid ""
 "Expecting to read a single byte for receiving credentials but read zero bytes"
 msgstr ""
 "Очаква се един байт за получаване на самоличност, но са прочетени 0 байта."
 
-#: ../gio/gunixconnection.c:587
+#: gio/gunixconnection.c:622
 #, c-format
 msgid "Not expecting control message, but got %d"
 msgstr "Не се очакваше контролно съобщение, а бяха получени %d"
 
-#: ../gio/gunixconnection.c:611
+#: gio/gunixconnection.c:647
 #, c-format
 msgid "Error while disabling SO_PASSCRED: %s"
-msgstr "Грешка при забраняване на SO_PASSCRED: %s"
+msgstr "Грешка при забраняване на „SO_PASSCRED“: %s"
 
-#: ../gio/gunixinputstream.c:369 ../gio/gunixinputstream.c:390
+#: gio/gunixinputstream.c:357 gio/gunixinputstream.c:378
 #, c-format
 msgid "Error reading from file descriptor: %s"
 msgstr "Грешка при четене от файловия дескриптор: %s"
 
-#: ../gio/gunixinputstream.c:423 ../gio/gunixoutputstream.c:409
+#: gio/gunixinputstream.c:411 gio/gunixoutputstream.c:520
+#: gio/gwin32inputstream.c:217 gio/gwin32outputstream.c:204
 #, c-format
 msgid "Error closing file descriptor: %s"
 msgstr "Грешка при затваряне на файловия дескриптор: %s"
 
-#: ../gio/gunixmounts.c:2099 ../gio/gunixmounts.c:2152
+#: gio/gunixmounts.c:2809 gio/gunixmounts.c:2862
 msgid "Filesystem root"
 msgstr "Коренова папка на файловата система"
 
-#: ../gio/gunixoutputstream.c:355 ../gio/gunixoutputstream.c:376
+#: gio/gunixoutputstream.c:357 gio/gunixoutputstream.c:377
+#: gio/gunixoutputstream.c:464 gio/gunixoutputstream.c:484
+#: gio/gunixoutputstream.c:630
 #, c-format
 msgid "Error writing to file descriptor: %s"
 msgstr "Грешка при запис във файловия дескриптор: %s"
 
-#: ../gio/gunixsocketaddress.c:239
+#: gio/gunixsocketaddress.c:251
 msgid "Abstract UNIX domain socket addresses not supported on this system"
 msgstr "Тази система не поддържа абстрактни адреси на гнезда за домейни в Unix"
 
-#: ../gio/gvolume.c:437
-msgid "volume doesn't implement eject"
+#: gio/gvolume.c:438
+msgid "volume doesnt implement eject"
 msgstr "томът не поддържа изваждане"
 
 #. 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"
+#: gio/gvolume.c:515
+msgid "volume doesnt implement eject or eject_with_operation"
 msgstr "томът не поддържа нито изваждане, нито изваждане с действие"
 
-#: ../gio/gwin32inputstream.c:343
+#: gio/gwin32inputstream.c:185
 #, c-format
 msgid "Error reading from handle: %s"
 msgstr "Грешка при четене от манипулатор: %s"
 
-#: ../gio/gwin32inputstream.c:387 ../gio/gwin32outputstream.c:374
+#: gio/gwin32inputstream.c:232 gio/gwin32outputstream.c:219
 #, c-format
 msgid "Error closing handle: %s"
 msgstr "Грешка при затваряне на манипулатор: %s"
 
-#: ../gio/gwin32outputstream.c:330
+#: gio/gwin32outputstream.c:172
 #, c-format
 msgid "Error writing to handle: %s"
 msgstr "Грешка при запис в манипулатор: %s"
 
-#: ../gio/gzlibcompressor.c:394 ../gio/gzlibdecompressor.c:347
+#: gio/gzlibcompressor.c:394 gio/gzlibdecompressor.c:347
 msgid "Not enough memory"
 msgstr "недостатъчно памет"
 
-#: ../gio/gzlibcompressor.c:401 ../gio/gzlibdecompressor.c:354
+#: gio/gzlibcompressor.c:401 gio/gzlibdecompressor.c:354
 #, c-format
 msgid "Internal error: %s"
 msgstr "Вътрешна грешка: %s"
 
-#: ../gio/gzlibcompressor.c:414 ../gio/gzlibdecompressor.c:368
+#: gio/gzlibcompressor.c:414 gio/gzlibdecompressor.c:368
 msgid "Need more input"
 msgstr "Необходими са още данни от входа"
 
-#: ../gio/gzlibdecompressor.c:340
+#: gio/gzlibdecompressor.c:340
 msgid "Invalid compressed data"
 msgstr "Неправилни, компресирани данни"
 
-#: ../gio/tests/gdbus-daemon.c:18
+#: gio/tests/gdbus-daemon.c:18
 msgid "Address to listen on"
 msgstr "Адрес, на който да се слуша"
 
-#: ../gio/tests/gdbus-daemon.c:19
+#: gio/tests/gdbus-daemon.c:19
 msgid "Ignored, for compat with GTestDbus"
-msgstr "Стойността няма значение, просто осигурява съвместимост с GTestDbus"
+msgstr "Стойността няма значение, просто осигурява съвместимост с „GTestDbus“"
 
-#: ../gio/tests/gdbus-daemon.c:20
+#: gio/tests/gdbus-daemon.c:20
 msgid "Print address"
 msgstr "Извеждане на адреса"
 
-#: ../gio/tests/gdbus-daemon.c:21
+#: gio/tests/gdbus-daemon.c:21
 msgid "Print address in shell mode"
 msgstr "Извеждане на адреса в режим за обвивката"
 
-#: ../gio/tests/gdbus-daemon.c:28
+#: gio/tests/gdbus-daemon.c:28
 msgid "Run a dbus service"
-msgstr "Стартиране на сесийна шина dbus"
+msgstr "Стартиране на сесийна шина D-Bus"
 
-#: ../gio/tests/gdbus-daemon.c:42
-#, c-format
+#: gio/tests/gdbus-daemon.c:42
 msgid "Wrong args\n"
 msgstr "Неправилни аргументи\n"
 
-#: ../glib/gbookmarkfile.c:755
+#: glib/gbookmarkfile.c:777
 #, c-format
-msgid "Unexpected attribute '%s' for element '%s'"
+msgid "Unexpected attribute “%s” for element “%s”"
 msgstr "Неочакван атрибут „%s“ на елемента „%s“"
 
-#: ../glib/gbookmarkfile.c:766 ../glib/gbookmarkfile.c:837
-#: ../glib/gbookmarkfile.c:847 ../glib/gbookmarkfile.c:954
+#: glib/gbookmarkfile.c:788 glib/gbookmarkfile.c:868 glib/gbookmarkfile.c:878
+#: glib/gbookmarkfile.c:991
 #, c-format
-msgid "Attribute '%s' of element '%s' not found"
+msgid "Attribute “%s” of element “%s” not found"
 msgstr "Атрибутът „%s“ на елемента „%s“ не е открит"
 
-#: ../glib/gbookmarkfile.c:1124 ../glib/gbookmarkfile.c:1189
-#: ../glib/gbookmarkfile.c:1253 ../glib/gbookmarkfile.c:1263
+#: glib/gbookmarkfile.c:1200 glib/gbookmarkfile.c:1265
+#: glib/gbookmarkfile.c:1329 glib/gbookmarkfile.c:1339
 #, c-format
-msgid "Unexpected tag '%s', tag '%s' expected"
+msgid "Unexpected tag “%s”, tag “%s” expected"
 msgstr "Неочакван етикет „%s“, очакваше се „%s“"
 
-#: ../glib/gbookmarkfile.c:1149 ../glib/gbookmarkfile.c:1163
-#: ../glib/gbookmarkfile.c:1231
+#: glib/gbookmarkfile.c:1225 glib/gbookmarkfile.c:1239
+#: glib/gbookmarkfile.c:1307 glib/gbookmarkfile.c:1353
 #, c-format
-msgid "Unexpected tag '%s' inside '%s'"
+msgid "Unexpected tag “%s” inside “%s”"
 msgstr "Неочакван етикет „%s“ вътре в „%s“"
 
-#: ../glib/gbookmarkfile.c:1756
+#: glib/gbookmarkfile.c:1633
+#, c-format
+msgid "Invalid date/time ‘%s’ in bookmark file"
+msgstr "Неправилна дата или време „%s“ във файла с отметки"
+
+#: glib/gbookmarkfile.c:1836
 msgid "No valid bookmark file found in data dirs"
 msgstr "Не може да се открие валиден файл с отметки в папките с данни"
 
-#: ../glib/gbookmarkfile.c:1957
+#: glib/gbookmarkfile.c:2037
 #, c-format
-msgid "A bookmark for URI '%s' already exists"
+msgid "A bookmark for URI “%s” already exists"
 msgstr "Вече съществува отметка за адреса „%s“"
 
-#: ../glib/gbookmarkfile.c:2003 ../glib/gbookmarkfile.c:2161
-#: ../glib/gbookmarkfile.c:2246 ../glib/gbookmarkfile.c:2326
-#: ../glib/gbookmarkfile.c:2411 ../glib/gbookmarkfile.c:2494
-#: ../glib/gbookmarkfile.c:2572 ../glib/gbookmarkfile.c:2651
-#: ../glib/gbookmarkfile.c:2693 ../glib/gbookmarkfile.c:2790
-#: ../glib/gbookmarkfile.c:2910 ../glib/gbookmarkfile.c:3100
-#: ../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'"
+#: glib/gbookmarkfile.c:2086 glib/gbookmarkfile.c:2244
+#: glib/gbookmarkfile.c:2329 glib/gbookmarkfile.c:2409
+#: glib/gbookmarkfile.c:2494 glib/gbookmarkfile.c:2628
+#: glib/gbookmarkfile.c:2761 glib/gbookmarkfile.c:2896
+#: glib/gbookmarkfile.c:2938 glib/gbookmarkfile.c:3035
+#: glib/gbookmarkfile.c:3156 glib/gbookmarkfile.c:3350
+#: glib/gbookmarkfile.c:3491 glib/gbookmarkfile.c:3710
+#: glib/gbookmarkfile.c:3799 glib/gbookmarkfile.c:3888
+#: glib/gbookmarkfile.c:4007
+#, c-format
+msgid "No bookmark found for URI “%s”"
 msgstr "Не е открита отметка за адреса „%s“"
 
-#: ../glib/gbookmarkfile.c:2335
+#: glib/gbookmarkfile.c:2418
 #, 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 "Не е указан видът MIME в отметката за адреса „%s“"
 
-#: ../glib/gbookmarkfile.c:2420
+#: glib/gbookmarkfile.c:2503
 #, 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 "Не е зададен флаг за лични данни в отметката за адреса „%s“"
 
-#: ../glib/gbookmarkfile.c:2799
+#: glib/gbookmarkfile.c:3044
 #, c-format
-msgid "No groups set in bookmark for URI '%s'"
+msgid "No groups set in bookmark for URI “%s”"
 msgstr "Не са зададени групи в отметката за адреса „%s“"
 
-#: ../glib/gbookmarkfile.c:3197 ../glib/gbookmarkfile.c:3354
+#: glib/gbookmarkfile.c:3512 glib/gbookmarkfile.c:3720
 #, 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 "Никоя програма „%s“ не е регистрирала отметка за „%s“"
 
-#: ../glib/gbookmarkfile.c:3377
+#: glib/gbookmarkfile.c:3743
 #, c-format
-msgid "Failed to expand exec line '%s' with URI '%s'"
-msgstr "Неуспешно дописване на реда за изпълнение „%s“ с адреса „%s“"
+msgid "Failed to expand exec line “%s” with URI “%s”"
+msgstr "Неуспешно дописване за изпълнение на реда „%s“ с адреса „%s“"
+
+#: glib/gconvert.c:468
+msgid "Unrepresentable character in conversion input"
+msgstr "Неправилна последователност на входа"
 
-#: ../glib/gconvert.c:477 ../glib/gutf8.c:849 ../glib/gutf8.c:1061
-#: ../glib/gutf8.c:1198 ../glib/gutf8.c:1302
+#: glib/gconvert.c:495 glib/gutf8.c:886 glib/gutf8.c:1099 glib/gutf8.c:1236
+#: glib/gutf8.c:1340
 msgid "Partial character sequence at end of input"
 msgstr "Непълна знакова последователност в края на входните данни"
 
-#: ../glib/gconvert.c:742
+#: glib/gconvert.c:764
 #, c-format
-msgid "Cannot convert fallback '%s' to codeset '%s'"
+msgid "Cannot convert fallback “%s” to codeset “%s”"
 msgstr ""
 "Заместващият знак „%s“ не може да бъде преобразуван към знак от набора „%s“"
 
-#: ../glib/gconvert.c:1567
+#: glib/gconvert.c:936
+msgid "Embedded NUL byte in conversion input"
+msgstr "На входа за преобразуване има байт NUL"
+
+#: glib/gconvert.c:957
+msgid "Embedded NUL byte in conversion output"
+msgstr "На изхода от преобразуване има байт NUL"
+
+#: glib/gconvert.c:1688
 #, c-format
-msgid "The URI '%s' is not an absolute URI using the \"file\" scheme"
+msgid "The URI “%s” is not an absolute URI using the “file” scheme"
 msgstr ""
 "Адресът „%s“ не е абсолютен при използване на схемата „file“ (файлова "
 "система)"
 
-#: ../glib/gconvert.c:1577
+#: glib/gconvert.c:1698
 #, c-format
-msgid "The local file URI '%s' may not include a '#'"
+msgid "The local file URI “%s” may not include a “#”"
 msgstr "Адресът „%s“ на локален файл не може да включва „#“"
 
-#: ../glib/gconvert.c:1594
+#: glib/gconvert.c:1715
 #, c-format
-msgid "The URI '%s' is invalid"
+msgid "The URI “%s” is invalid"
 msgstr "Адресът „%s“ е неправилен"
 
-#: ../glib/gconvert.c:1606
+#: glib/gconvert.c:1727
 #, c-format
-msgid "The hostname of the URI '%s' is invalid"
+msgid "The hostname of the URI “%s” is invalid"
 msgstr "Името на хоста в адреса „%s“ е неправилно"
 
-#: ../glib/gconvert.c:1622
+#: glib/gconvert.c:1743
 #, c-format
-msgid "The URI '%s' contains invalidly escaped characters"
+msgid "The URI “%s” contains invalidly escaped characters"
 msgstr "Адресът „%s“ съдържа грешни екраниращи последователности"
 
-#: ../glib/gconvert.c:1717
+#: glib/gconvert.c:1815
 #, c-format
-msgid "The pathname '%s' is not an absolute path"
+msgid "The pathname “%s” is not an absolute path"
 msgstr "Пътят „%s“ не е абсолютен"
 
-#: ../glib/gconvert.c:1727
-msgid "Invalid hostname"
-msgstr "Неправилно име на хост"
-
-#. Translators: 'before midday' indicator
-#: ../glib/gdatetime.c:201
-msgctxt "GDateTime"
-msgid "AM"
-msgstr "пр. об."
-
-#. Translators: 'after midday' indicator
-#: ../glib/gdatetime.c:203
-msgctxt "GDateTime"
-msgid "PM"
-msgstr "сл. об."
-
 #. Translators: this is the preferred format for expressing the date and the time
-#: ../glib/gdatetime.c:206
+#: glib/gdatetime.c:226
 msgctxt "GDateTime"
 msgid "%a %b %e %H:%M:%S %Y"
-msgstr "%d.%m.%Y (%a) %H:%M:%S"
+msgstr "%d.%m.%Y, %a, %H:%M:%S"
 
 #. Translators: this is the preferred format for expressing the date
-#: ../glib/gdatetime.c:209
+#: glib/gdatetime.c:229
 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:232
 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:235
 msgctxt "GDateTime"
 msgid "%I:%M:%S %p"
 msgstr "%l:%M:%S %p"
 
-#: ../glib/gdatetime.c:228
+#. Translators: Some languages (Baltic, Slavic, Greek, and some more)
+#. * need different grammatical forms of month names depending on whether
+#. * they are standalone or in a complete date context, with the day
+#. * number.  Some other languages may prefer starting with uppercase when
+#. * they are standalone and with lowercase when they are in a complete
+#. * date context.  Here are full month names in a form appropriate when
+#. * they are used standalone.  If your system is Linux with the glibc
+#. * version 2.27 (released Feb 1, 2018) or newer or if it is from the BSD
+#. * family (which includes OS X) then you can refer to the date command
+#. * line utility and see what the command `date +%OB' produces.  Also in
+#. * the latest Linux the command `locale alt_mon' in your native locale
+#. * produces a complete list of month names almost ready to copy and
+#. * paste here.  Note that in most of the languages (western European,
+#. * non-European) there is no difference between the standalone and
+#. * complete date form.
+#.
+#: glib/gdatetime.c:274
 msgctxt "full month name"
 msgid "January"
 msgstr "януари"
 
-#: ../glib/gdatetime.c:230
+#: glib/gdatetime.c:276
 msgctxt "full month name"
 msgid "February"
 msgstr "февруари"
 
-#: ../glib/gdatetime.c:232
+#: glib/gdatetime.c:278
 msgctxt "full month name"
 msgid "March"
 msgstr "март"
 
-#: ../glib/gdatetime.c:234
+#: glib/gdatetime.c:280
 msgctxt "full month name"
 msgid "April"
 msgstr "април"
 
-#: ../glib/gdatetime.c:236
+#: glib/gdatetime.c:282
 msgctxt "full month name"
 msgid "May"
 msgstr "май"
 
-#: ../glib/gdatetime.c:238
+#: glib/gdatetime.c:284
 msgctxt "full month name"
 msgid "June"
 msgstr "юни"
 
-#: ../glib/gdatetime.c:240
+#: glib/gdatetime.c:286
 msgctxt "full month name"
 msgid "July"
 msgstr "юли"
 
-#: ../glib/gdatetime.c:242
+#: glib/gdatetime.c:288
 msgctxt "full month name"
 msgid "August"
 msgstr "август"
 
-#: ../glib/gdatetime.c:244
+#: glib/gdatetime.c:290
 msgctxt "full month name"
 msgid "September"
 msgstr "септември"
 
-#: ../glib/gdatetime.c:246
+#: glib/gdatetime.c:292
 msgctxt "full month name"
 msgid "October"
 msgstr "октомври"
 
-#: ../glib/gdatetime.c:248
+#: glib/gdatetime.c:294
 msgctxt "full month name"
 msgid "November"
 msgstr "ноември"
 
-#: ../glib/gdatetime.c:250
+#: glib/gdatetime.c:296
 msgctxt "full month name"
 msgid "December"
 msgstr "декември"
 
-#: ../glib/gdatetime.c:265
+#. Translators: Some languages need different grammatical forms of
+#. * month names depending on whether they are standalone or in a complete
+#. * date context, with the day number.  Some may prefer starting with
+#. * uppercase when they are standalone and with lowercase when they are
+#. * in a full date context.  However, as these names are abbreviated
+#. * the grammatical difference is visible probably only in Belarusian
+#. * and Russian.  In other languages there is no difference between
+#. * the standalone and complete date form when they are abbreviated.
+#. * If your system is Linux with the glibc version 2.27 (released
+#. * Feb 1, 2018) or newer then you can refer to the date command line
+#. * utility and see what the command `date +%Ob' produces.  Also in
+#. * the latest Linux the command `locale ab_alt_mon' in your native
+#. * locale produces a complete list of month names almost ready to copy
+#. * and paste here.  Note that this feature is not yet supported by any
+#. * other platform.  Here are abbreviated month names in a form
+#. * appropriate when they are used standalone.
+#.
+#: glib/gdatetime.c:328
 msgctxt "abbreviated month name"
 msgid "Jan"
 msgstr "яну"
 
-#: ../glib/gdatetime.c:267
+#: glib/gdatetime.c:330
 msgctxt "abbreviated month name"
 msgid "Feb"
 msgstr "фев"
 
-#: ../glib/gdatetime.c:269
+#: glib/gdatetime.c:332
 msgctxt "abbreviated month name"
 msgid "Mar"
 msgstr "мар"
 
-#: ../glib/gdatetime.c:271
+#: glib/gdatetime.c:334
 msgctxt "abbreviated month name"
 msgid "Apr"
 msgstr "апр"
 
-#: ../glib/gdatetime.c:273
+#: glib/gdatetime.c:336
 msgctxt "abbreviated month name"
 msgid "May"
 msgstr "май"
 
-#: ../glib/gdatetime.c:275
+#: glib/gdatetime.c:338
 msgctxt "abbreviated month name"
 msgid "Jun"
 msgstr "юни"
 
-#: ../glib/gdatetime.c:277
+#: glib/gdatetime.c:340
 msgctxt "abbreviated month name"
 msgid "Jul"
 msgstr "юли"
 
-#: ../glib/gdatetime.c:279
+#: glib/gdatetime.c:342
 msgctxt "abbreviated month name"
 msgid "Aug"
 msgstr "авг"
 
-#: ../glib/gdatetime.c:281
+#: glib/gdatetime.c:344
 msgctxt "abbreviated month name"
 msgid "Sep"
 msgstr "сеп"
 
-#: ../glib/gdatetime.c:283
+#: glib/gdatetime.c:346
 msgctxt "abbreviated month name"
 msgid "Oct"
 msgstr "окт"
 
-#: ../glib/gdatetime.c:285
+#: glib/gdatetime.c:348
 msgctxt "abbreviated month name"
 msgid "Nov"
 msgstr "ное"
 
-#: ../glib/gdatetime.c:287
+#: glib/gdatetime.c:350
 msgctxt "abbreviated month name"
 msgid "Dec"
 msgstr "дек"
 
-#: ../glib/gdatetime.c:302
+#: glib/gdatetime.c:365
 msgctxt "full weekday name"
 msgid "Monday"
 msgstr "понеделник"
 
-#: ../glib/gdatetime.c:304
+#: glib/gdatetime.c:367
 msgctxt "full weekday name"
 msgid "Tuesday"
 msgstr "вторник"
 
-#: ../glib/gdatetime.c:306
+#: glib/gdatetime.c:369
 msgctxt "full weekday name"
 msgid "Wednesday"
 msgstr "сряда"
 
-#: ../glib/gdatetime.c:308
+#: glib/gdatetime.c:371
 msgctxt "full weekday name"
 msgid "Thursday"
 msgstr "четвъртък"
 
-#: ../glib/gdatetime.c:310
+#: glib/gdatetime.c:373
 msgctxt "full weekday name"
 msgid "Friday"
 msgstr "петък"
 
-#: ../glib/gdatetime.c:312
+#: glib/gdatetime.c:375
 msgctxt "full weekday name"
 msgid "Saturday"
 msgstr "събота"
 
-#: ../glib/gdatetime.c:314
-msgctxt "full weekday name"
-msgid "Sunday"
-msgstr "неделя"
+#: glib/gdatetime.c:377
+msgctxt "full weekday name"
+msgid "Sunday"
+msgstr "неделя"
+
+#: glib/gdatetime.c:392
+msgctxt "abbreviated weekday name"
+msgid "Mon"
+msgstr "пн"
+
+#: glib/gdatetime.c:394
+msgctxt "abbreviated weekday name"
+msgid "Tue"
+msgstr "вт"
+
+#: glib/gdatetime.c:396
+msgctxt "abbreviated weekday name"
+msgid "Wed"
+msgstr "ср"
+
+#: glib/gdatetime.c:398
+msgctxt "abbreviated weekday name"
+msgid "Thu"
+msgstr "чт"
+
+#: glib/gdatetime.c:400
+msgctxt "abbreviated weekday name"
+msgid "Fri"
+msgstr "пт"
+
+#: glib/gdatetime.c:402
+msgctxt "abbreviated weekday name"
+msgid "Sat"
+msgstr "сб"
+
+#: glib/gdatetime.c:404
+msgctxt "abbreviated weekday name"
+msgid "Sun"
+msgstr "нд"
+
+#. Translators: Some languages need different grammatical forms of
+#. * month names depending on whether they are standalone or in a full
+#. * date context, with the day number.  Some may prefer starting with
+#. * uppercase when they are standalone and with lowercase when they are
+#. * in a full date context.  Here are full month names in a form
+#. * appropriate when they are used in a full date context, with the
+#. * day number.  If your system is Linux with the glibc version 2.27
+#. * (released Feb 1, 2018) or newer or if it is from the BSD family
+#. * (which includes OS X) then you can refer to the date command line
+#. * utility and see what the command `date +%B' produces.  Also in
+#. * the latest Linux the command `locale mon' in your native locale
+#. * produces a complete list of month names almost ready to copy and
+#. * paste here.  In older Linux systems due to a bug the result is
+#. * incorrect in some languages.  Note that in most of the languages
+#. * (western European, non-European) there is no difference between the
+#. * standalone and complete date form.
+#.
+#: glib/gdatetime.c:468
+msgctxt "full month name with day"
+msgid "January"
+msgstr "януари"
+
+#: glib/gdatetime.c:470
+msgctxt "full month name with day"
+msgid "February"
+msgstr "февруари"
+
+#: glib/gdatetime.c:472
+msgctxt "full month name with day"
+msgid "March"
+msgstr "март"
+
+#: glib/gdatetime.c:474
+msgctxt "full month name with day"
+msgid "April"
+msgstr "април"
+
+#: glib/gdatetime.c:476
+msgctxt "full month name with day"
+msgid "May"
+msgstr "май"
+
+#: glib/gdatetime.c:478
+msgctxt "full month name with day"
+msgid "June"
+msgstr "юни"
+
+#: glib/gdatetime.c:480
+msgctxt "full month name with day"
+msgid "July"
+msgstr "юли"
+
+#: glib/gdatetime.c:482
+msgctxt "full month name with day"
+msgid "August"
+msgstr "август"
+
+#: glib/gdatetime.c:484
+msgctxt "full month name with day"
+msgid "September"
+msgstr "септември"
+
+#: glib/gdatetime.c:486
+msgctxt "full month name with day"
+msgid "October"
+msgstr "октомври"
+
+#: glib/gdatetime.c:488
+msgctxt "full month name with day"
+msgid "November"
+msgstr "ноември"
+
+#: glib/gdatetime.c:490
+msgctxt "full month name with day"
+msgid "December"
+msgstr "декември"
+
+#. Translators: Some languages need different grammatical forms of
+#. * month names depending on whether they are standalone or in a full
+#. * date context, with the day number.  Some may prefer starting with
+#. * uppercase when they are standalone and with lowercase when they are
+#. * in a full date context.  Here are abbreviated month names in a form
+#. * appropriate when they are used in a full date context, with the
+#. * day number.  However, as these names are abbreviated the grammatical
+#. * difference is visible probably only in Belarusian and Russian.
+#. * In other languages there is no difference between the standalone
+#. * and complete date form when they are abbreviated.  If your system
+#. * is Linux with the glibc version 2.27 (released Feb 1, 2018) or newer
+#. * then you can refer to the date command line utility and see what the
+#. * command `date +%b' produces.  Also in the latest Linux the command
+#. * `locale abmon' in your native locale produces a complete list of
+#. * month names almost ready to copy and paste here.  In other systems
+#. * due to a bug the result is incorrect in some languages.
+#.
+#: glib/gdatetime.c:555
+msgctxt "abbreviated month name with day"
+msgid "Jan"
+msgstr "яну"
+
+#: glib/gdatetime.c:557
+msgctxt "abbreviated month name with day"
+msgid "Feb"
+msgstr "фев"
+
+#: glib/gdatetime.c:559
+msgctxt "abbreviated month name with day"
+msgid "Mar"
+msgstr "мар"
+
+#: glib/gdatetime.c:561
+msgctxt "abbreviated month name with day"
+msgid "Apr"
+msgstr "апр"
+
+#: glib/gdatetime.c:563
+msgctxt "abbreviated month name with day"
+msgid "May"
+msgstr "май"
+
+#: glib/gdatetime.c:565
+msgctxt "abbreviated month name with day"
+msgid "Jun"
+msgstr "юни"
 
-#: ../glib/gdatetime.c:329
-msgctxt "abbreviated weekday name"
-msgid "Mon"
-msgstr "пн"
+#: glib/gdatetime.c:567
+msgctxt "abbreviated month name with day"
+msgid "Jul"
+msgstr "юли"
 
-#: ../glib/gdatetime.c:331
-msgctxt "abbreviated weekday name"
-msgid "Tue"
-msgstr "вÑ\82"
+#: glib/gdatetime.c:569
+msgctxt "abbreviated month name with day"
+msgid "Aug"
+msgstr "авг"
 
-#: ../glib/gdatetime.c:333
-msgctxt "abbreviated weekday name"
-msgid "Wed"
-msgstr "ср"
+#: glib/gdatetime.c:571
+msgctxt "abbreviated month name with day"
+msgid "Sep"
+msgstr "сеп"
 
-#: ../glib/gdatetime.c:335
-msgctxt "abbreviated weekday name"
-msgid "Thu"
-msgstr "чт"
+#: glib/gdatetime.c:573
+msgctxt "abbreviated month name with day"
+msgid "Oct"
+msgstr "окт"
 
-#: ../glib/gdatetime.c:337
-msgctxt "abbreviated weekday name"
-msgid "Fri"
-msgstr "пÑ\82"
+#: glib/gdatetime.c:575
+msgctxt "abbreviated month name with day"
+msgid "Nov"
+msgstr "ное"
 
-#: ../glib/gdatetime.c:339
-msgctxt "abbreviated weekday name"
-msgid "Sat"
-msgstr "сб"
+#: glib/gdatetime.c:577
+msgctxt "abbreviated month name with day"
+msgid "Dec"
+msgstr "дек"
 
-#: ../glib/gdatetime.c:341
-msgctxt "abbreviated weekday name"
-msgid "Sun"
-msgstr "нд"
+#. Translators: 'before midday' indicator
+#: glib/gdatetime.c:594
+msgctxt "GDateTime"
+msgid "AM"
+msgstr "пр.об."
 
-#: ../glib/gdir.c:155
+#. Translators: 'after midday' indicator
+#: glib/gdatetime.c:597
+msgctxt "GDateTime"
+msgid "PM"
+msgstr "сл.об."
+
+#: glib/gdir.c:156
 #, c-format
-msgid "Error opening directory '%s': %s"
+msgid "Error opening directory “%s”: %s"
 msgstr "Грешка при отваряне на папка „%s“: %s"
 
-#: ../glib/gfileutils.c:700 ../glib/gfileutils.c:792
+#: glib/gfileutils.c:733 glib/gfileutils.c:825
 #, 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] "Неуспешно заделяне на %lu байт за четене на файла „%s“"
 msgstr[1] "Неуспешно заделяне на %lu байта за четене на файла „%s“"
 
-#: ../glib/gfileutils.c:717
+#: glib/gfileutils.c:750
 #, c-format
-msgid "Error reading file '%s': %s"
+msgid "Error reading file “%s”: %s"
 msgstr "Грешка при четене на файл „%s“: %s"
 
-#: ../glib/gfileutils.c:753
+#: glib/gfileutils.c:786
 #, c-format
-msgid "File \"%s\" is too large"
+msgid "File “%s” is too large"
 msgstr "Файлът „%s“ е прекалено голям"
 
-#: ../glib/gfileutils.c:817
+#: glib/gfileutils.c:850
 #, c-format
-msgid "Failed to read from file '%s': %s"
+msgid "Failed to read from file “%s”: %s"
 msgstr "Неуспешно четене от файл „%s“: %s"
 
-#: ../glib/gfileutils.c:865 ../glib/gfileutils.c:937
+#: glib/gfileutils.c:900 glib/gfileutils.c:975 glib/gfileutils.c:1447
 #, c-format
-msgid "Failed to open file '%s': %s"
+msgid "Failed to open file “%s”: %s"
 msgstr "Неуспешно отваряне на файл „%s“: %s"
 
-#: ../glib/gfileutils.c:877
+#: glib/gfileutils.c:913
 #, 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 ""
 "Неуспешно получаване на атрибутите на файл „%s“: неуспешно изпълнение на "
-"fstat(): %s"
+"„fstat()“: %s"
 
-#: ../glib/gfileutils.c:907
+#: glib/gfileutils.c:944
 #, c-format
-msgid "Failed to open file '%s': fdopen() failed: %s"
-msgstr "Неуспешно отваряне на файл „%s“: неуспешно изпълнение на fdopen(): %s"
+msgid "Failed to open file “%s”: fdopen() failed: %s"
+msgstr ""
+"Неуспешно отваряне на файл „%s“: неуспешно изпълнение на „fdopen()“: %s"
 
-#: ../glib/gfileutils.c:1006
+#: glib/gfileutils.c:1045
 #, 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 ""
 "Неуспешно преименуване на файл „%s“ на „%s“: неуспешно изпълнение на "
-"g_rename(): %s"
+"„g_rename()“: %s"
 
-#: ../glib/gfileutils.c:1041 ../glib/gfileutils.c:1540
+#: glib/gfileutils.c:1154
 #, c-format
-msgid "Failed to create file '%s': %s"
-msgstr "Ð\9dеÑ\83Ñ\81пеÑ\88но Ñ\81Ñ\8aздаване Ð½Ð° Ñ\84айл â\80\9e%s“: %s"
+msgid "Failed to write file “%s”: write() failed: %s"
+msgstr "Ð\9dеÑ\83Ñ\81пеÑ\88ен Ð·Ð°Ð¿Ð¸Ñ\81 Ð½Ð° Ñ\84айл â\80\9e%sâ\80\9c: Ð½ÐµÑ\83Ñ\81пеÑ\88но Ð¸Ð·Ð¿Ñ\8aлнение Ð½Ð° â\80\9ewrite()“: %s"
 
-#: ../glib/gfileutils.c:1068
+#: glib/gfileutils.c:1175
 #, c-format
-msgid "Failed to write file '%s': write() failed: %s"
-msgstr "Неуспешен запис на файл „%s“: неуспешно изпълнение на write(): %s"
+msgid "Failed to write file “%s”: fsync() failed: %s"
+msgstr "Неуспешен запис на файл „%s“: неуспешно изпълнение на „fsync()“: %s"
 
-#: ../glib/gfileutils.c:1111
+#: glib/gfileutils.c:1336 glib/gfileutils.c:1751
 #, c-format
-msgid "Failed to write file '%s': fsync() failed: %s"
-msgstr "Ð\9dеÑ\83Ñ\81пеÑ\88ен Ð·Ð°Ð¿Ð¸Ñ\81 Ð½Ð° Ñ\84айл â\80\9e%sâ\80\9c: Ð½ÐµÑ\83Ñ\81пеÑ\88но Ð¸Ð·Ð¿Ñ\8aлнение Ð½Ð° fsync(): %s"
+msgid "Failed to create file “%s”: %s"
+msgstr "Ð\9dеÑ\83Ñ\81пеÑ\88но Ñ\81Ñ\8aздаване Ð½Ð° Ñ\84айл â\80\9e%sâ\80\9c: %s"
 
-#: ../glib/gfileutils.c:1235
+#: glib/gfileutils.c:1381
 #, 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 ""
 "Неуспешно изтриване на съществуващия файл „%s“: неуспешно изпълнение на "
-"g_unlink(): %s"
+"„g_unlink()“: %s"
 
-#: ../glib/gfileutils.c:1506
+#: glib/gfileutils.c:1716
 #, c-format
-msgid "Template '%s' invalid, should not contain a '%s'"
+msgid "Template “%s” invalid, should not contain a “%s”"
 msgstr "Шаблонът „%s“ е неправилен, не трябва да съдържа „%s“"
 
-#: ../glib/gfileutils.c:1519
+#: glib/gfileutils.c:1729
 #, c-format
-msgid "Template '%s' doesn't contain XXXXXX"
+msgid "Template “%s” doesn’t contain XXXXXX"
 msgstr "Шаблонът „%s“ не съдържа „XXXXXX“"
 
-#: ../glib/gfileutils.c:2038
+#: glib/gfileutils.c:2289 glib/gfileutils.c:2318
 #, c-format
-msgid "Failed to read the symbolic link '%s': %s"
+msgid "Failed to read the symbolic link “%s”: %s"
 msgstr "Неуспешно четене на символната връзка „%s“: %s"
 
-#: ../glib/gfileutils.c:2057
-msgid "Symbolic links not supported"
-msgstr "Символни връзки не се поддържат"
-
-#: ../glib/giochannel.c:1388
+#: glib/giochannel.c:1405
 #, c-format
-msgid "Could not open converter from '%s' to '%s': %s"
+msgid "Could not open converter from “%s” to “%s”: %s"
 msgstr "Не може да се отвори конвертор от „%s“ към „%s“: %s"
 
-#: ../glib/giochannel.c:1733
-msgid "Can't do a raw read in g_io_channel_read_line_string"
-msgstr "Не може да се чете от g_io_channel_read_line_string"
+#: glib/giochannel.c:1758
+msgid "Cant do a raw read in g_io_channel_read_line_string"
+msgstr "Не може да се чете от „g_io_channel_read_line_string“"
 
-#: ../glib/giochannel.c:1780 ../glib/giochannel.c:2038
-#: ../glib/giochannel.c:2125
+#: glib/giochannel.c:1805 glib/giochannel.c:2063 glib/giochannel.c:2150
 msgid "Leftover unconverted data in read buffer"
 msgstr "В буфера за четене останаха непреобразувани данни"
 
-#: ../glib/giochannel.c:1861 ../glib/giochannel.c:1938
+#: glib/giochannel.c:1886 glib/giochannel.c:1963
 msgid "Channel terminates in a partial character"
 msgstr "Каналът прекъсна на непълен знак"
 
-#: ../glib/giochannel.c:1924
-msgid "Can't do a raw read in g_io_channel_read_to_end"
-msgstr "Не може да се чете от g_io_channel_read_to_end"
+#: glib/giochannel.c:1949
+msgid "Cant do a raw read in g_io_channel_read_to_end"
+msgstr "Не може да се чете от „g_io_channel_read_to_end“"
 
-#: ../glib/gkeyfile.c:737
+#: glib/gkeyfile.c:794
 msgid "Valid key file could not be found in search dirs"
 msgstr "Не може да се открие валиден файл с ключове в папките с данни"
 
-#: ../glib/gkeyfile.c:773
+#: glib/gkeyfile.c:831
 msgid "Not a regular file"
 msgstr "Не е обикновен файл"
 
-#: ../glib/gkeyfile.c:1173
+#: glib/gkeyfile.c:1289
 #, 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 ""
 "Ключовият файл съдържа реда „%s“, който не е нито двойка ключ-стойност, нито "
 "група, нито коментар"
 
-#: ../glib/gkeyfile.c:1230
+#: glib/gkeyfile.c:1346
 #, c-format
 msgid "Invalid group name: %s"
-msgstr "Неправилно име на група: %s"
+msgstr "Неправилно име на група: „%s“"
 
-#: ../glib/gkeyfile.c:1252
+#: glib/gkeyfile.c:1370
 msgid "Key file does not start with a group"
 msgstr "Ключовият файл не започва с група"
 
-#: ../glib/gkeyfile.c:1278
+#: glib/gkeyfile.c:1394
 #, c-format
-msgid "Invalid key name: %s"
-msgstr "Неправилно име на ключ: %s"
+msgid "Invalid key name: %.*s"
+msgstr "Неправилно име на ключ: „%.*s“"
 
-#: ../glib/gkeyfile.c:1305
+#: glib/gkeyfile.c:1422
 #, c-format
-msgid "Key file contains unsupported encoding '%s'"
+msgid "Key file contains unsupported encoding “%s”"
 msgstr "Ключовият файл съдържа неподдържаното кодиране „%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:1677 glib/gkeyfile.c:1850 glib/gkeyfile.c:3297
+#: glib/gkeyfile.c:3361 glib/gkeyfile.c:3491 glib/gkeyfile.c:3623
+#: glib/gkeyfile.c:3769 glib/gkeyfile.c:4004 glib/gkeyfile.c:4071
 #, c-format
-msgid "Key file does not have group '%s'"
+msgid "Key file does not have group “%s”"
 msgstr "Ключовият файл не съдържа групата „%s“"
 
-#: ../glib/gkeyfile.c:1676
+#: glib/gkeyfile.c:1805
 #, c-format
-msgid "Key file does not have key '%s' in group '%s'"
+msgid "Key file does not have key “%s” in group “%s”"
 msgstr "Ключовият файл не съдържа ключа „%s“ в групата „%s“"
 
-#: ../glib/gkeyfile.c:1838 ../glib/gkeyfile.c:1954
+#: glib/gkeyfile.c:1967 glib/gkeyfile.c:2083
 #, 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 "Ключовият файл съдържа ключ „%s“ със стойност „%s“, която не е в UTF-8"
 
-#: ../glib/gkeyfile.c:1858 ../glib/gkeyfile.c:1974 ../glib/gkeyfile.c:2343
+#: glib/gkeyfile.c:1987 glib/gkeyfile.c:2103 glib/gkeyfile.c:2542
 #, 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 ""
 "Ключовият файл съдържа ключа „%s“, чиято стойност не може да бъде "
 "анализирана."
 
-#: ../glib/gkeyfile.c:2560 ../glib/gkeyfile.c:2928
+#: glib/gkeyfile.c:2757 glib/gkeyfile.c:3126
 #, 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 ""
 "Ключовият файл съдържа ключа „%s“ в групата „%s“, чиято стойност не може да "
 "бъде анализирана."
 
-#: ../glib/gkeyfile.c:2638 ../glib/gkeyfile.c:2715
+#: glib/gkeyfile.c:2835 glib/gkeyfile.c:2912
 #, c-format
-msgid "Key '%s' in group '%s' has value '%s' where %s was expected"
-msgstr "Ключът „%s“ в групата „%s“ има стойност „%s“, а се очакваше „%s“."
+msgid "Key “%s” in group “%s” has value “%s” where %s was expected"
+msgstr "Ключът „%s“ в групата „%s“ има стойност „%s“, а се очакваше „%s“"
 
-#: ../glib/gkeyfile.c:4102
+#: glib/gkeyfile.c:4324
 msgid "Key file contains escape character at end of line"
 msgstr "Ключовият файл съдържа екранираща последователност в край на ред"
 
-#: ../glib/gkeyfile.c:4124
+#: glib/gkeyfile.c:4346
 #, c-format
-msgid "Key file contains invalid escape sequence '%s'"
+msgid "Key file contains invalid escape sequence “%s”"
 msgstr "Ключовият файл съдържа грешна екранираща последователност — „%s“"
 
-#: ../glib/gkeyfile.c:4266
+#: glib/gkeyfile.c:4491
 #, c-format
-msgid "Value '%s' cannot be interpreted as a number."
+msgid "Value “%s” cannot be interpreted as a number."
 msgstr "Стойността „%s“ не може да се интерпретира като число."
 
-#: ../glib/gkeyfile.c:4280
+#: glib/gkeyfile.c:4505
 #, c-format
-msgid "Integer value '%s' out of range"
+msgid "Integer value “%s” out of range"
 msgstr "Целочислената стойност „%s“ е извън интервала на допустими стойности"
 
-#: ../glib/gkeyfile.c:4313
+#: glib/gkeyfile.c:4538
 #, c-format
-msgid "Value '%s' cannot be interpreted as a float number."
+msgid "Value “%s” cannot be interpreted as a float number."
 msgstr ""
 "Стойността „%s“ не може да се интерпретира като число с плаваща запетая."
 
-#: ../glib/gkeyfile.c:4350
+#: glib/gkeyfile.c:4577
 #, c-format
-msgid "Value '%s' cannot be interpreted as a boolean."
+msgid "Value “%s” cannot be interpreted as a boolean."
 msgstr "Стойността „%s“ не може да се интерпретира като булева."
 
-#: ../glib/gmappedfile.c:129
+#: 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 ""
 "Неуспешно получаване на атрибутите на файла „%s%s%s%s“: неуспешно изпълнение "
-"на fstat(): %s"
+"на „fstat()“: %s"
 
-#: ../glib/gmappedfile.c:195
+#: glib/gmappedfile.c:195
 #, c-format
 msgid "Failed to map %s%s%s%s: mmap() failed: %s"
 msgstr ""
 "Неуспешно отваряне на файл в паметта „%s%s%s%s“: неуспешно изпълнение на "
-"mmap(): %s"
+"„mmap()“: %s"
 
-#: ../glib/gmappedfile.c:261
+#: glib/gmappedfile.c:262
 #, c-format
-msgid "Failed to open file '%s': open() failed: %s"
-msgstr "Неуспешно отваряне на файл „%s“: неуспешно изпълнение на open(): %s"
+msgid "Failed to open file “%s”: open() failed: %s"
+msgstr "Неуспешно отваряне на файл „%s“: неуспешно изпълнение на „open()“: %s"
 
-#: ../glib/gmarkup.c:398 ../glib/gmarkup.c:440
+#: glib/gmarkup.c:398 glib/gmarkup.c:440
 #, c-format
 msgid "Error on line %d char %d: "
 msgstr "Грешка на ред %d, знак %d: "
 
-#: ../glib/gmarkup.c:462 ../glib/gmarkup.c:545
+#: glib/gmarkup.c:462 glib/gmarkup.c:545
 #, c-format
-msgid "Invalid UTF-8 encoded text in name - not valid '%s'"
+msgid "Invalid UTF-8 encoded text in name — not valid “%s”"
 msgstr "Неправилно кодиран текст в UTF-8 — „%s“ е грешен"
 
-#: ../glib/gmarkup.c:473
+#: glib/gmarkup.c:473
 #, c-format
-msgid "'%s' is not a valid name"
+msgid "“%s” is not a valid name"
 msgstr "„%s“ е неправилно име"
 
-#: ../glib/gmarkup.c:489
+#: glib/gmarkup.c:489
 #, c-format
-msgid "'%s' is not a valid name: '%c'"
+msgid "“%s” is not a valid name: “%c”"
 msgstr "„%s“ е неправилно име: „%c“"
 
-#: ../glib/gmarkup.c:599
+#: glib/gmarkup.c:613
 #, c-format
 msgid "Error on line %d: %s"
 msgstr "Грешка на ред %d: %s"
 
-#: ../glib/gmarkup.c:676
+#: glib/gmarkup.c:690
 #, c-format
 msgid ""
-"Failed to parse '%-.*s', which should have been a digit inside a character "
-"reference (&#234; for example) - perhaps the digit is too large"
+"Failed to parse “%-.*s”, which should have been a digit inside a character "
+"reference (&#234; for example)  perhaps the digit is too large"
 msgstr ""
 "Грешка при анализ на „%-.*s“, което трябва да е число в указател на знак "
 "(напр. „&#234;“). Вероятно числото е твърде голямо"
 
-#: ../glib/gmarkup.c:688
+#: glib/gmarkup.c:702
 msgid ""
 "Character reference did not end with a semicolon; most likely you used an "
-"ampersand character without intending to start an entity - escape ampersand "
+"ampersand character without intending to start an entity  escape ampersand "
 "as &amp;"
 msgstr ""
 "Указателят на знак не завършва с „;“. Най-вероятно сте използвали „&“, без "
 "той да е начало на заместваща последователност. Представете го чрез „&amp;“"
 
-#: ../glib/gmarkup.c:714
+#: glib/gmarkup.c:728
 #, c-format
-msgid "Character reference '%-.*s' does not encode a permitted character"
+msgid "Character reference “%-.*s” does not encode a permitted character"
 msgstr "Указателят на знак „%-.*s“ не представя разрешен знак при декодиране"
 
-#: ../glib/gmarkup.c:752
+#: glib/gmarkup.c:766
 msgid ""
-"Empty entity '&;' seen; valid entities are: &amp; &quot; &lt; &gt; &apos;"
+"Empty entity “&;” seen; valid entities are: &amp; &quot; &lt; &gt; &apos;"
 msgstr ""
 "Намерена е празна заместваща последователност: „&;“. Валидни "
 "последователности са: „&amp;“, „&quot;“, „&lt;“, „&gt;“, „&apos;“"
 
-#: ../glib/gmarkup.c:760
+#: glib/gmarkup.c:774
 #, c-format
-msgid "Entity name '%-.*s' is not known"
+msgid "Entity name “%-.*s” is not known"
 msgstr "Името на заместващата последователност „%-.*s“ е неизвестно"
 
-#: ../glib/gmarkup.c:765
+#: glib/gmarkup.c:779
 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;"
+"character without intending to start an entity  escape ampersand as &amp;"
 msgstr ""
 "Заместващата последователност не завършва с „;“. Най-вероятно сте използвали "
 "„&“, без той да е начало на заместваща последователност. Представете го чрез "
 "„&amp;“"
 
-#: ../glib/gmarkup.c:1171
+#: glib/gmarkup.c:1193
 msgid "Document must begin with an element (e.g. <book>)"
 msgstr "Документът трябва да започва с елемент (напр. <book>)"
 
-#: ../glib/gmarkup.c:1211
+#: glib/gmarkup.c:1233
 #, c-format
 msgid ""
-"'%s' is not a valid character following a '<' character; it may not begin an "
+"“%s” is not a valid character following a “<” character; it may not begin an "
 "element name"
 msgstr ""
 "„%s“ е неправилен знак след „<“. Името на елемент не може да започне с него"
 
-#: ../glib/gmarkup.c:1253
+#: glib/gmarkup.c:1276
 #, c-format
 msgid ""
-"Odd character '%s', expected a '>' character to end the empty-element tag "
-"'%s'"
+"Odd character “%s”, expected a “>” character to end the empty-element tag "
+"“%s”"
 msgstr ""
 "Неподходящ знак „%s“, очаква се етикетът на празния елемент „%s“ да завърши "
 "с „>“"
 
-#: ../glib/gmarkup.c:1334
+#: glib/gmarkup.c:1346
+#, c-format
+msgid "Too many attributes in element “%s”"
+msgstr "Прекалено много атрибути в елемента „%s“"
+
+#: glib/gmarkup.c:1366
 #, c-format
 msgid ""
-"Odd character '%s', expected a '=' after attribute name '%s' of element '%s'"
+"Odd character “%s”, expected a “=” after attribute name “%s” of element “%s”"
 msgstr ""
 "Неподходящ знак „%s“, очаква се „=“ след името на атрибут „%s“ на елемент "
 "„%s“"
 
-#: ../glib/gmarkup.c:1375
+#: glib/gmarkup.c:1408
 #, c-format
 msgid ""
-"Odd character '%s', expected a '>' or '/' character to end the start tag of "
-"element '%s', or optionally an attribute; perhaps you used an invalid "
+"Odd character “%s”, expected a “>” or “/” character to end the start tag of "
+"element “%s”, or optionally an attribute; perhaps you used an invalid "
 "character in an attribute name"
 msgstr ""
 "Неподходящ знак „%s“, очаква се или отварящият етикет на елемента „%s“ да "
 "завърши със знак „>“ или „/“, или евентуално да продължи с атрибут. Най-"
 "вероятно използвате неправилен знак в името на атрибут"
 
-#: ../glib/gmarkup.c:1419
+#: glib/gmarkup.c:1453
 #, c-format
 msgid ""
-"Odd character '%s', expected an open quote mark after the equals sign when "
-"giving value for attribute '%s' of element '%s'"
+"Odd character “%s”, expected an open quote mark after the equals sign when "
+"giving value for attribute “%s” of element “%s”"
 msgstr ""
-"Неподходящ знак „%s“, очаква се знакът „\"“ след знака за равенство, когато "
-"се присвоява стойност на атрибута „%s“ на елемент „%s“"
+"Неподходящ знак „%s“, очаква се знак „\"“ или „'“ след знака за равенство, "
+"когато се присвоява стойност на атрибута „%s“ на елемент „%s“"
 
-#: ../glib/gmarkup.c:1552
+#: glib/gmarkup.c:1587
 #, c-format
 msgid ""
-"'%s' is not a valid character following the characters '</'; '%s' may not "
+"“%s” is not a valid character following the characters “</”; “%s” may not "
 "begin an element name"
 msgstr ""
 "„%s“ е неправилен знак след „</“. Името на елемент не може да започва с „%s“"
 
-#: ../glib/gmarkup.c:1588
+#: glib/gmarkup.c:1625
 #, c-format
 msgid ""
-"'%s' is not a valid character following the close element name '%s'; the "
-"allowed character is '>'"
+"“%s” is not a valid character following the close element name “%s”; the "
+"allowed character is “>”"
 msgstr ""
 "„%s“ е неправилен знак при завършването на затварящ етикет с име „%s“. "
 "Позволен е знакът „>“"
 
-#: ../glib/gmarkup.c:1599
+#: glib/gmarkup.c:1637
 #, c-format
-msgid "Element '%s' was closed, no element is currently open"
+msgid "Element “%s” was closed, no element is currently open"
 msgstr "Елементът „%s“ е затворен, няма текущо отворен елемент"
 
-#: ../glib/gmarkup.c:1608
+#: glib/gmarkup.c:1646
 #, c-format
-msgid "Element '%s' was closed, but the currently open element is '%s'"
+msgid "Element “%s” was closed, but the currently open element is “%s”"
 msgstr "Елементът „%s“ е затворен, но текущо е отворен елемент „%s“"
 
-#: ../glib/gmarkup.c:1761
+#: glib/gmarkup.c:1799
 msgid "Document was empty or contained only whitespace"
 msgstr "Документът е празен или съдържа само празни знаци"
 
-#: ../glib/gmarkup.c:1775
-msgid "Document ended unexpectedly just after an open angle bracket '<'"
+#: glib/gmarkup.c:1813
+msgid "Document ended unexpectedly just after an open angle bracket “<”"
 msgstr ""
 "Документът завършва неочаквано веднага след отваряща счупена скоба — „<“"
 
-#: ../glib/gmarkup.c:1783 ../glib/gmarkup.c:1828
+#: glib/gmarkup.c:1821 glib/gmarkup.c:1866
 #, c-format
 msgid ""
-"Document ended unexpectedly with elements still open - '%s' was the last "
+"Document ended unexpectedly with elements still open — “%s” was the last "
 "element opened"
 msgstr ""
 "Документът завършва неочаквано — има отворени елементи. Последно отворен е "
 "„%s“"
 
-#: ../glib/gmarkup.c:1791
+#: glib/gmarkup.c:1829
 #, c-format
 msgid ""
 "Document ended unexpectedly, expected to see a close angle bracket ending "
@@ -3939,336 +5439,342 @@ msgstr ""
 "Документът завършва неочаквано, очаква се затваряща счупена скоба да завърши "
 "етикета <%s/>"
 
-#: ../glib/gmarkup.c:1797
+#: glib/gmarkup.c:1835
 msgid "Document ended unexpectedly inside an element name"
 msgstr "Документът завършва неочаквано в името на елемент"
 
-#: ../glib/gmarkup.c:1803
+#: glib/gmarkup.c:1841
 msgid "Document ended unexpectedly inside an attribute name"
 msgstr "Документът завършва неочаквано в името на атрибут"
 
-#: ../glib/gmarkup.c:1808
+#: glib/gmarkup.c:1846
 msgid "Document ended unexpectedly inside an element-opening tag."
 msgstr "Документът завършва неочаквано в отварящ етикет на елемент "
 
-#: ../glib/gmarkup.c:1814
+#: glib/gmarkup.c:1852
 msgid ""
 "Document ended unexpectedly after the equals sign following an attribute "
 "name; no attribute value"
 msgstr ""
-"Документът завършва неочаквано след знака за равенство следващ името на "
+"Документът завършва неочаквано след знака за равенство след името на "
 "атрибута. Атрибутът няма стойност"
 
-#: ../glib/gmarkup.c:1821
+#: glib/gmarkup.c:1859
 msgid "Document ended unexpectedly while inside an attribute value"
 msgstr "Документът завършва неочаквано вътре в стойността на атрибут"
 
-#: ../glib/gmarkup.c:1837
+#: glib/gmarkup.c:1876
 #, c-format
-msgid "Document ended unexpectedly inside the close tag for element '%s'"
+msgid "Document ended unexpectedly inside the close tag for element “%s”"
 msgstr "Документът завършва неочаквано в затварящия етикет на елемент „%s“"
 
-#: ../glib/gmarkup.c:1843
+#: glib/gmarkup.c:1880
+msgid ""
+"Document ended unexpectedly inside the close tag for an unopened element"
+msgstr ""
+"Документът завършва неочаквано в затварящия етикет на неотворен елемент"
+
+#: glib/gmarkup.c:1886
 msgid "Document ended unexpectedly inside a comment or processing instruction"
 msgstr "Документът завършва неочаквано в коментар или инструкция за обработка"
 
-#: ../glib/goption.c:857
-msgid "Usage:"
-msgstr "Употреба:"
-
-#: ../glib/goption.c:861
-msgid "[OPTION...]"
+#: glib/goption.c:873
+msgid "[OPTION…]"
 msgstr "[ОПЦИЯ…]"
 
-#: ../glib/goption.c:977
+#: glib/goption.c:989
 msgid "Help Options:"
 msgstr "Настройки на помощта:"
 
-#: ../glib/goption.c:978
+#: glib/goption.c:990
 msgid "Show help options"
 msgstr "Показване на настройките на помощта"
 
-#: ../glib/goption.c:984
+#: glib/goption.c:996
 msgid "Show all help options"
 msgstr "Показване на всички настройки на помощта"
 
-#: ../glib/goption.c:1047
+#: glib/goption.c:1059
 msgid "Application Options:"
 msgstr "Настройки на приложението:"
 
-#: ../glib/goption.c:1049
+#: glib/goption.c:1061
 msgid "Options:"
 msgstr "Настройки:"
 
-#: ../glib/goption.c:1113 ../glib/goption.c:1183
+#: glib/goption.c:1125 glib/goption.c:1195
 #, c-format
-msgid "Cannot parse integer value '%s' for %s"
+msgid "Cannot parse integer value “%s” for %s"
 msgstr "Не може да се анализира целочислената стойност „%s“ за %s"
 
-#: ../glib/goption.c:1123 ../glib/goption.c:1191
+#: glib/goption.c:1135 glib/goption.c:1203
 #, c-format
-msgid "Integer value '%s' for %s out of range"
+msgid "Integer value “%s” for %s out of range"
 msgstr ""
 "Целочислената стойност „%s“ за %s е извън интервала на допустимите стойности"
 
-#: ../glib/goption.c:1148
+#: glib/goption.c:1160
 #, c-format
-msgid "Cannot parse double value '%s' for %s"
+msgid "Cannot parse double value “%s” for %s"
 msgstr ""
 "Не може да се анализира стойността с повишена точност double „%s“ за %s"
 
-#: ../glib/goption.c:1156
+#: glib/goption.c:1168
 #, c-format
-msgid "Double value '%s' for %s out of range"
+msgid "Double value “%s” for %s out of range"
 msgstr ""
 "Стойността с повишена точност — double „%s“ за %s е извън интервала на "
 "допустимите стойности"
 
-#: ../glib/goption.c:1442 ../glib/goption.c:1521
+#: glib/goption.c:1460 glib/goption.c:1539
 #, c-format
 msgid "Error parsing option %s"
-msgstr "Грешка при анализа на опцията: %s"
+msgstr "Грешка при анализа на опцията „%s“"
 
-#: ../glib/goption.c:1552 ../glib/goption.c:1665
+#: glib/goption.c:1561 glib/goption.c:1674
 #, c-format
 msgid "Missing argument for %s"
-msgstr "Липсва аргумент за %s"
+msgstr "Липсва аргумент за „%s“"
 
-#: ../glib/goption.c:2126
+#: glib/goption.c:2184
 #, c-format
 msgid "Unknown option %s"
-msgstr "Непозната опция %s"
+msgstr "Непозната опция „%s“"
 
-#: ../glib/gregex.c:258
+#: glib/gregex.c:255
 msgid "corrupted object"
 msgstr "повреден обект"
 
-#: ../glib/gregex.c:260
+#: glib/gregex.c:257
 msgid "internal error or corrupted object"
 msgstr "вътрешна грешка или повреден обект"
 
-#: ../glib/gregex.c:262
+#: glib/gregex.c:259
 msgid "out of memory"
 msgstr "недостатъчно памет"
 
-#: ../glib/gregex.c:267
+#: glib/gregex.c:264
 msgid "backtracking limit reached"
 msgstr "достигната е границата на обратното връщане"
 
-#: ../glib/gregex.c:279 ../glib/gregex.c:287
+#: glib/gregex.c:276 glib/gregex.c:284
 msgid "the pattern contains items not supported for partial matching"
 msgstr ""
 "шаблонът съдържа елементи, които не се поддържат при частично съвпадение"
 
-#: ../glib/gregex.c:289
+#: glib/gregex.c:278
+msgid "internal error"
+msgstr "вътрешна грешка"
+
+#: glib/gregex.c:286
 msgid "back references as conditions are not supported for partial matching"
 msgstr ""
 "обратните указатели не се поддържат като условие при частично съвпадение"
 
-#: ../glib/gregex.c:298
+#: glib/gregex.c:295
 msgid "recursion limit reached"
 msgstr "прекалено дълбока рекурсия"
 
-#: ../glib/gregex.c:300
+#: glib/gregex.c:297
 msgid "invalid combination of newline flags"
 msgstr "неправилна комбинация от флагове за нов ред"
 
-#: ../glib/gregex.c:302
+#: glib/gregex.c:299
 msgid "bad offset"
 msgstr "неправилно отместване"
 
-#: ../glib/gregex.c:304
+#: glib/gregex.c:301
 msgid "short utf8"
 msgstr "прекалено къс UTF-8"
 
-#: ../glib/gregex.c:306
+#: glib/gregex.c:303
 msgid "recursion loop"
 msgstr "зацикляне при рекурсия"
 
-#: ../glib/gregex.c:310
+#: glib/gregex.c:307
 msgid "unknown error"
 msgstr "непозната грешка"
 
-#: ../glib/gregex.c:330
+#: glib/gregex.c:327
 msgid "\\ at end of pattern"
 msgstr "„\\“ в края на шаблон"
 
-#: ../glib/gregex.c:333
+#: glib/gregex.c:330
 msgid "\\c at end of pattern"
 msgstr "„\\c“ в края на шаблон"
 
-#: ../glib/gregex.c:336
+#: glib/gregex.c:333
 msgid "unrecognized character following \\"
 msgstr "след „\\“ следва непознат знак"
 
-#: ../glib/gregex.c:339
+#: glib/gregex.c:336
 msgid "numbers out of order in {} quantifier"
 msgstr "числата не са в правилен ред в определението за брой с „{}“"
 
-#: ../glib/gregex.c:342
+#: glib/gregex.c:339
 msgid "number too big in {} quantifier"
 msgstr "прекалено голямо число в определението за брой с „{}“"
 
-#: ../glib/gregex.c:345
+#: glib/gregex.c:342
 msgid "missing terminating ] for character class"
 msgstr "липсва завършващ знак „]“ за клас от знаци"
 
-#: ../glib/gregex.c:348
+#: glib/gregex.c:345
 msgid "invalid escape sequence in character class"
 msgstr "грешна екранираща последователност в класа от знаци"
 
-#: ../glib/gregex.c:351
+#: glib/gregex.c:348
 msgid "range out of order in character class"
 msgstr "знаците са в неправилен ред в класа от знаци"
 
-#: ../glib/gregex.c:354
+#: glib/gregex.c:351
 msgid "nothing to repeat"
 msgstr "няма какво да се повтори"
 
-#: ../glib/gregex.c:358
+#: glib/gregex.c:355
 msgid "unexpected repeat"
 msgstr "неочаквано повторение"
 
-#: ../glib/gregex.c:361
+#: glib/gregex.c:358
 msgid "unrecognized character after (? or (?-"
 msgstr "непознат знак след „(?“ или „(?-“"
 
-#: ../glib/gregex.c:364
+#: glib/gregex.c:361
 msgid "POSIX named classes are supported only within a class"
 msgstr "именованите класове от POSIX се поддържат само в клас"
 
-#: ../glib/gregex.c:367
+#: glib/gregex.c:364
 msgid "missing terminating )"
 msgstr "липсва завършваща „)“"
 
-#: ../glib/gregex.c:370
+#: glib/gregex.c:367
 msgid "reference to non-existent subpattern"
 msgstr "указател към несъществуващ подшаблон"
 
-#: ../glib/gregex.c:373
+#: glib/gregex.c:370
 msgid "missing ) after comment"
 msgstr "липсва „)“ след коментар"
 
-#: ../glib/gregex.c:376
+#: glib/gregex.c:373
 msgid "regular expression is too large"
 msgstr "регулярният израз е прекалено голям"
 
-#: ../glib/gregex.c:379
+#: glib/gregex.c:376
 msgid "failed to get memory"
 msgstr "неуспешно получаване на памет"
 
-#: ../glib/gregex.c:383
+#: glib/gregex.c:380
 msgid ") without opening ("
 msgstr "„)“ без отваряща „(“"
 
-#: ../glib/gregex.c:387
+#: glib/gregex.c:384
 msgid "code overflow"
 msgstr "препълване на кода"
 
-#: ../glib/gregex.c:391
+#: glib/gregex.c:388
 msgid "unrecognized character after (?<"
 msgstr "непознат знак след „(?<“"
 
-#: ../glib/gregex.c:394
+#: glib/gregex.c:391
 msgid "lookbehind assertion is not fixed length"
 msgstr "предположението за преглед назад не е с постоянна дължина"
 
-#: ../glib/gregex.c:397
+#: glib/gregex.c:394
 msgid "malformed number or name after (?("
 msgstr "неправилен номер или име след „(?(“"
 
-#: ../glib/gregex.c:400
+#: glib/gregex.c:397
 msgid "conditional group contains more than two branches"
 msgstr "условната група съдържа повече от две разклонения"
 
-#: ../glib/gregex.c:403
+#: glib/gregex.c:400
 msgid "assertion expected after (?("
 msgstr "очаква се предположение след „(?(“"
 
 #. 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:407
 msgid "(?R or (?[+-]digits must be followed by )"
 msgstr "„(?R“ или „(?[+-]цифри“ трябва да се следват от „)“"
 
-#: ../glib/gregex.c:413
+#: glib/gregex.c:410
 msgid "unknown POSIX class name"
 msgstr "непознато име на клас по POSIX"
 
-#: ../glib/gregex.c:416
+#: glib/gregex.c:413
 msgid "POSIX collating elements are not supported"
 msgstr "не се поддържат елементи на POSIX за подредба"
 
-#: ../glib/gregex.c:419
+#: glib/gregex.c:416
 msgid "character value in \\x{...} sequence is too large"
 msgstr "знаковата стойност в последователността „\\x{…}“ е прекалено голяма"
 
-#: ../glib/gregex.c:422
+#: glib/gregex.c:419
 msgid "invalid condition (?(0)"
 msgstr "неправилно условие „(?(0)“"
 
-#: ../glib/gregex.c:425
+#: glib/gregex.c:422
 msgid "\\C not allowed in lookbehind assertion"
 msgstr "предположението за преглед назад не може да съдържа „\\C“"
 
-#: ../glib/gregex.c:432
+#: glib/gregex.c:429
 msgid "escapes \\L, \\l, \\N{name}, \\U, and \\u are not supported"
 msgstr "екраниранията „\\L“, „\\l“, „\\N{name}“, „\\U“ и „\\u“ не се поддържат"
 
-#: ../glib/gregex.c:435
+#: glib/gregex.c:432
 msgid "recursive call could loop indefinitely"
 msgstr "рекурсивно извикване може да доведе до безкраен цикъл"
 
-#: ../glib/gregex.c:439
+#: glib/gregex.c:436
 msgid "unrecognized character after (?P"
 msgstr "непознат знак след „(?P“"
 
-#: ../glib/gregex.c:442
+#: glib/gregex.c:439
 msgid "missing terminator in subpattern name"
 msgstr "липсва краен знак в име на подшаблон"
 
-#: ../glib/gregex.c:445
+#: glib/gregex.c:442
 msgid "two named subpatterns have the same name"
 msgstr "два именовани подшаблона са с еднакво име"
 
-#: ../glib/gregex.c:448
+#: glib/gregex.c:445
 msgid "malformed \\P or \\p sequence"
 msgstr "неправилни последователности „\\P“ или „\\p“"
 
-#: ../glib/gregex.c:451
+#: glib/gregex.c:448
 msgid "unknown property name after \\P or \\p"
 msgstr "непознато име на свойство след „\\P“ или „\\p“"
 
-#: ../glib/gregex.c:454
+#: glib/gregex.c:451
 msgid "subpattern name is too long (maximum 32 characters)"
 msgstr "името на подшаблон е прекалено дълго (максимално е 32 знака)"
 
-#: ../glib/gregex.c:457
+#: glib/gregex.c:454
 msgid "too many named subpatterns (maximum 10,000)"
 msgstr "прекалено много именовани подшаблони (максимумът е 10 000)"
 
-#: ../glib/gregex.c:460
+#: glib/gregex.c:457
 msgid "octal value is greater than \\377"
 msgstr "осмичната стойност е по-голяма от „\\377“"
 
-#: ../glib/gregex.c:464
+#: glib/gregex.c:461
 msgid "overran compiling workspace"
 msgstr "надхвърлено е работното пространство за компилация"
 
-#: ../glib/gregex.c:468
+#: glib/gregex.c:465
 msgid "previously-checked referenced subpattern not found"
 msgstr "не е открит указан предварително проверен подшаблон"
 
-#: ../glib/gregex.c:471
+#: glib/gregex.c:468
 msgid "DEFINE group contains more than one branch"
-msgstr "групата DEFINE съдържа повече от едно разклонение"
+msgstr "група „DEFINE“ съдържа повече от едно разклонение"
 
-#: ../glib/gregex.c:474
+#: glib/gregex.c:471
 msgid "inconsistent NEWLINE options"
 msgstr "несъвместими опции за нов ред"
 
-#: ../glib/gregex.c:477
+#: glib/gregex.c:474
 msgid ""
 "\\g is not followed by a braced, angle-bracketed, or quoted name or number, "
 "or by a plain number"
@@ -4276,482 +5782,599 @@ msgstr ""
 "„\\g“ не е последвано от име, число във фигурни или квадратни скоби, "
 "цитирано име или обикновено число"
 
-#: ../glib/gregex.c:481
+#: glib/gregex.c:478
 msgid "a numbered reference must not be zero"
 msgstr "номерираният указател не трябва да е „0“"
 
-#: ../glib/gregex.c:484
+#: glib/gregex.c:481
 msgid "an argument is not allowed for (*ACCEPT), (*FAIL), or (*COMMIT)"
 msgstr "„(*ACCEPT)“, „(*FAIL)“ и „(*COMMIT)“ не приемат аргументи"
 
-#: ../glib/gregex.c:487
+#: glib/gregex.c:484
 msgid "(*VERB) not recognized"
 msgstr "неразпознат „(*ГЛАГОЛ)“"
 
-#: ../glib/gregex.c:490
+#: glib/gregex.c:487
 msgid "number is too big"
 msgstr "числото е прекалено голямо"
 
-#: ../glib/gregex.c:493
+#: glib/gregex.c:490
 msgid "missing subpattern name after (?&"
 msgstr "липсва име на подшаблон след „(?&“"
 
-#: ../glib/gregex.c:496
+#: glib/gregex.c:493
 msgid "digit expected after (?+"
 msgstr "очаква се цифра след „(?+“"
 
-#: ../glib/gregex.c:499
+#: glib/gregex.c:496
 msgid "] is an invalid data character in JavaScript compatibility mode"
 msgstr "„]“ е неправилен знак за данни в режима съвместим с JavaScript"
 
-#: ../glib/gregex.c:502
+#: glib/gregex.c:499
 msgid "different names for subpatterns of the same number are not allowed"
 msgstr "не са позволени различни имена за подшаблони с еднакъв номер"
 
-#: ../glib/gregex.c:505
+#: glib/gregex.c:502
 msgid "(*MARK) must have an argument"
 msgstr "„(*MARK)“ изисква аргумент"
 
-#: ../glib/gregex.c:508
+#: glib/gregex.c:505
 msgid "\\c must be followed by an ASCII character"
 msgstr "„\\c“ трябва да се следва от знак от ASCII"
 
-#: ../glib/gregex.c:511
+#: glib/gregex.c:508
 msgid "\\k is not followed by a braced, angle-bracketed, or quoted name"
 msgstr ""
 "„\\k“ не е последвано от име във фигурни или квадратни скоби или от цитирано "
 "име"
 
-#: ../glib/gregex.c:514
+#: glib/gregex.c:511
 msgid "\\N is not supported in a class"
 msgstr "„\\N“ не се поддържа в клас"
 
-#: ../glib/gregex.c:517
+#: glib/gregex.c:514
 msgid "too many forward references"
-msgstr "прекалено много прави указатели"
+msgstr "прекалено много указатели напред"
 
-#: ../glib/gregex.c:520
+#: glib/gregex.c:517
 msgid "name is too long in (*MARK), (*PRUNE), (*SKIP), or (*THEN)"
 msgstr ""
 "името е прекалено дълго за „(*MARK)“, „(*PRUNE)“, „(*SKIP)“ и „(*THEN)“"
 
-#: ../glib/gregex.c:523
+#: glib/gregex.c:520
 msgid "character value in \\u.... sequence is too large"
 msgstr "знаковата стойност в последователността „\\u…“ е прекалено голяма"
 
-#: ../glib/gregex.c:746 ../glib/gregex.c:1973
+#: glib/gregex.c:743 glib/gregex.c:1988
 #, c-format
 msgid "Error while matching regular expression %s: %s"
-msgstr "Грешка %2$s при напасването на регулярния израз — %1$s"
+msgstr "Грешка при напасването на регулярния израз „%s“: %s"
 
-#: ../glib/gregex.c:1317
+#: glib/gregex.c:1321
 msgid "PCRE library is compiled without UTF8 support"
 msgstr "Библиотеката PCRE е компилирана без поддръжка на UTF-8"
 
-#: ../glib/gregex.c:1321
+#: glib/gregex.c:1325
 msgid "PCRE library is compiled without UTF8 properties support"
 msgstr "Библиотеката PCRE е компилирана без поддръжка на настройки в UTF-8"
 
-#: ../glib/gregex.c:1329
+#: glib/gregex.c:1333
 msgid "PCRE library is compiled with incompatible options"
 msgstr "Библиотеката PCRE е компилирана с несъвместими опции"
 
-#: ../glib/gregex.c:1358
+#: glib/gregex.c:1362
 #, c-format
 msgid "Error while optimizing regular expression %s: %s"
 msgstr "Грешка при оптимизирането на регулярния израз %s: %s"
 
-#: ../glib/gregex.c:1438
+#: glib/gregex.c:1442
 #, c-format
 msgid "Error while compiling regular expression %s at char %d: %s"
 msgstr "Грешка при компилирането на регулярния израз %s, знак %d: %s"
 
-#: ../glib/gregex.c:2409
-msgid "hexadecimal digit or '}' expected"
+#: glib/gregex.c:2427
+msgid "hexadecimal digit or “}” expected"
 msgstr "очаква се шестнадесетично число или „}“"
 
-#: ../glib/gregex.c:2425
+#: glib/gregex.c:2443
 msgid "hexadecimal digit expected"
 msgstr "очаква се шестнадесетично число"
 
-#: ../glib/gregex.c:2465
-msgid "missing '<' in symbolic reference"
+#: glib/gregex.c:2483
+msgid "missing “<” in symbolic reference"
 msgstr "в символния указател липсва „<“"
 
-#: ../glib/gregex.c:2474
+#: glib/gregex.c:2492
 msgid "unfinished symbolic reference"
 msgstr "незавършен символен указател"
 
-#: ../glib/gregex.c:2481
+#: glib/gregex.c:2499
 msgid "zero-length symbolic reference"
 msgstr "символен указател с нулева дължина"
 
-#: ../glib/gregex.c:2492
+#: glib/gregex.c:2510
 msgid "digit expected"
 msgstr "очаква се цифра"
 
-#: ../glib/gregex.c:2510
+#: glib/gregex.c:2528
 msgid "illegal symbolic reference"
 msgstr "неправилен символен указател"
 
-#: ../glib/gregex.c:2572
-msgid "stray final '\\'"
+#: glib/gregex.c:2591
+msgid "stray final “\\”"
 msgstr "в края има един знак „\\“ в повече"
 
-#: ../glib/gregex.c:2576
+#: glib/gregex.c:2595
 msgid "unknown escape sequence"
 msgstr "непозната екранираща последователност"
 
-#: ../glib/gregex.c:2586
+#: glib/gregex.c:2605
 #, c-format
-msgid "Error while parsing replacement text \"%s\" at char %lu: %s"
-msgstr "Грешка при анализа на текста за замяна „%s“, знак %lu: %s"
+msgid "Error while parsing replacement text “%s” at char %lu: %s"
+msgstr "Грешка при анализа на текста за замяна „%s“ при знак %lu: %s"
 
-#: ../glib/gshell.c:96
-msgid "Quoted text doesn't begin with a quotation mark"
-msgstr "Цитиран текст не започва със знака „\"“"
+#: glib/gshell.c:96
+msgid "Quoted text doesnt begin with a quotation mark"
+msgstr "Цитиран текст не започва със знака „\"“ или „'“"
 
-#: ../glib/gshell.c:186
+#: glib/gshell.c:186
 msgid "Unmatched quotation mark in command line or other shell-quoted text"
 msgstr ""
 "Липсват затварящи кавички в команден ред или друг текст цитиран за обвивката"
 
-#: ../glib/gshell.c:582
+#: glib/gshell.c:592
 #, c-format
-msgid "Text ended just after a '\\' character. (The text was '%s')"
-msgstr "Текстът свърши веднага след знака „\\“. (Текстът е „%s“)"
+msgid "Text ended just after a “\\” character. (The text was “%s”)"
+msgstr "Текстът свърши веднага след знак „\\“. (Текстът е „%s“)"
 
-#: ../glib/gshell.c:589
+#: glib/gshell.c:599
 #, 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 ""
-"Текстът свърши преди откриването на затварящи кавички за %c. (Текстът е „%s“)"
+"Текстът свърши преди откриването на затварящи кавички за „%c“. (Текстът е "
+"„%s“)"
 
-#: ../glib/gshell.c:601
+#: glib/gshell.c:611
 msgid "Text was empty (or contained only whitespace)"
 msgstr "Текстът е празен (или съдържа само празни знаци)"
 
-#: ../glib/gspawn.c:209
+#: glib/gspawn.c:310
 #, c-format
 msgid "Failed to read data from child process (%s)"
 msgstr "Неуспешно четене на данни от дъщерен процес (%s)"
 
-#: ../glib/gspawn.c:353
+#: glib/gspawn.c:462
 #, c-format
-msgid "Unexpected error in select() reading data from a child process (%s)"
+msgid "Unexpected error in reading data from a child process (%s)"
 msgstr ""
-"Неочаквана грешка в select() при четене на данни от дъщерен процес (%s)"
+"Неочаквана грешка в „select()“ при четене на данни от дъщерен процес (%s)"
 
-#: ../glib/gspawn.c:438
+#: glib/gspawn.c:547
 #, c-format
 msgid "Unexpected error in waitpid() (%s)"
-msgstr "Неочаквана грешка в waitpid() (%s)"
+msgstr "Неочаквана грешка в „waitpid()“ (%s)"
 
-#: ../glib/gspawn.c:844 ../glib/gspawn-win32.c:1233
+#: glib/gspawn.c:1175 glib/gspawn-win32.c:1438
 #, c-format
 msgid "Child process exited with code %ld"
 msgstr "Дъщерният процес завърши с код %ld"
 
-#: ../glib/gspawn.c:852
+#: glib/gspawn.c:1183
 #, c-format
 msgid "Child process killed by signal %ld"
 msgstr "Дъщерният процес бе убит от сигнал %ld"
 
-#: ../glib/gspawn.c:859
+#: glib/gspawn.c:1190
 #, c-format
 msgid "Child process stopped by signal %ld"
 msgstr "Дъщерният процес бе спрян от сигнал %ld"
 
-#: ../glib/gspawn.c:866
+#: glib/gspawn.c:1197
 #, c-format
 msgid "Child process exited abnormally"
 msgstr "Дъщерният процес завърши аварийно"
 
-#: ../glib/gspawn.c:1271 ../glib/gspawn-win32.c:339 ../glib/gspawn-win32.c:347
+#: glib/gspawn.c:1890 glib/gspawn-win32.c:353 glib/gspawn-win32.c:361
 #, c-format
 msgid "Failed to read from child pipe (%s)"
 msgstr "Неуспешно четене от дъщерен канал (%s)"
 
-#: ../glib/gspawn.c:1341
+#: glib/gspawn.c:2253
+#, c-format
+msgid "Failed to spawn child process “%s” (%s)"
+msgstr "Неуспешно пораждане на дъщерен процес „%s“ (%s)"
+
+#: glib/gspawn.c:2370
 #, c-format
 msgid "Failed to fork (%s)"
-msgstr "Неуспешно разклоняване (%s)"
+msgstr "Неуспешно пораждане (%s)"
 
-#: ../glib/gspawn.c:1490 ../glib/gspawn-win32.c:370
+#: glib/gspawn.c:2530 glib/gspawn-win32.c:384
 #, c-format
-msgid "Failed to change to directory '%s' (%s)"
+msgid "Failed to change to directory “%s” (%s)"
 msgstr "Неуспешна смяна към папка „%s“ (%s)"
 
-#: ../glib/gspawn.c:1500
+#: glib/gspawn.c:2540
 #, c-format
-msgid "Failed to execute child process \"%s\" (%s)"
+msgid "Failed to execute child process “%s” (%s)"
 msgstr "Неуспешно изпълнение на дъщерен процес „%s“ (%s)"
 
-#: ../glib/gspawn.c:1510
+#: glib/gspawn.c:2550
+#, c-format
+msgid "Failed to open file to remap file descriptor (%s)"
+msgstr "Неуспешно отваряне на файл за заместване на файлов дескриптор (%s)"
+
+#: glib/gspawn.c:2558
 #, c-format
-msgid "Failed to redirect output or input of child process (%s)"
-msgstr "Ð\9dеÑ\83Ñ\81пеÑ\88но Ð¿Ñ\80енаÑ\81оÑ\87ване Ð½Ð° Ð¸Ð·Ñ\85ода Ð¸Ð»Ð¸ Ð²Ñ\85ода Ð½а дъщерен процес (%s)"
+msgid "Failed to duplicate file descriptor for child process (%s)"
+msgstr "Ð\9dеÑ\83Ñ\81пеÑ\88но Ð´Ñ\83блиÑ\80ане Ð½Ð° Ñ\84айлов Ð´ÐµÑ\81кÑ\80ипÑ\82оÑ\80 Ð·а дъщерен процес (%s)"
 
-#: ../glib/gspawn.c:1519
+#: glib/gspawn.c:2567
 #, c-format
 msgid "Failed to fork child process (%s)"
 msgstr "Неуспешно разклоняване на дъщерен процес (%s)"
 
-#: ../glib/gspawn.c:1527
+#: glib/gspawn.c:2575
+#, c-format
+msgid "Failed to close file descriptor for child process (%s)"
+msgstr "Неуспешно затваряне на файловия дескриптор на дъщерен процес (%s)"
+
+#: glib/gspawn.c:2583
 #, c-format
-msgid "Unknown error executing child process \"%s\""
+msgid "Unknown error executing child process “%s”"
 msgstr "Неизвестна грешка при изпълнение на дъщерен процес „%s“"
 
-#: ../glib/gspawn.c:1551
+#: glib/gspawn.c:2607
 #, c-format
 msgid "Failed to read enough data from child pid pipe (%s)"
 msgstr ""
 "Неуспешно четене на достатъчно данни от канала на дъщерен процес (с "
 "идентификатор %s)"
 
-#: ../glib/gspawn-win32.c:283
+#: glib/gspawn-win32.c:297
 msgid "Failed to read data from child process"
 msgstr "Неуспешно четене на данни от дъщерен процес"
 
-#: ../glib/gspawn-win32.c:300
-#, c-format
-msgid "Failed to create pipe for communicating with child process (%s)"
-msgstr "Неуспешно създаване на канал за комуникация с дъщерен процес (%s)"
-
-#: ../glib/gspawn-win32.c:376 ../glib/gspawn-win32.c:495
+#: glib/gspawn-win32.c:390 glib/gspawn-win32.c:395 glib/gspawn-win32.c:521
 #, c-format
 msgid "Failed to execute child process (%s)"
 msgstr "Неуспешно изпълнение на дъщерен процес (%s)"
 
-#: ../glib/gspawn-win32.c:445
+#: glib/gspawn-win32.c:400
+#, c-format
+msgid "Failed to dup() in child process (%s)"
+msgstr "Неуспешно разклоняване на дъщерен процес чрез „dup()“ (%s)"
+
+#: glib/gspawn-win32.c:471
 #, c-format
 msgid "Invalid program name: %s"
 msgstr "Неправилно име на програма: %s"
 
-#: ../glib/gspawn-win32.c:455 ../glib/gspawn-win32.c:722
-#: ../glib/gspawn-win32.c:1297
+#: glib/gspawn-win32.c:481 glib/gspawn-win32.c:807
 #, c-format
 msgid "Invalid string in argument vector at %d: %s"
 msgstr "Неправилен низ във вектора с аргументи на позиция %d: %s"
 
-#: ../glib/gspawn-win32.c:466 ../glib/gspawn-win32.c:737
-#: ../glib/gspawn-win32.c:1330
+#: glib/gspawn-win32.c:492 glib/gspawn-win32.c:823
 #, c-format
 msgid "Invalid string in environment: %s"
 msgstr "Неправилен низ в средата: %s"
 
-#: ../glib/gspawn-win32.c:718 ../glib/gspawn-win32.c:1278
+#: glib/gspawn-win32.c:803
 #, c-format
 msgid "Invalid working directory: %s"
 msgstr "Неправилна работна папка: %s"
 
-#: ../glib/gspawn-win32.c:783
+#: glib/gspawn-win32.c:868
 #, c-format
 msgid "Failed to execute helper program (%s)"
 msgstr "Неуспешно изпълнение на програмата за помощта (%s)"
 
-#: ../glib/gspawn-win32.c:997
+#: glib/gspawn-win32.c:1096
 msgid ""
 "Unexpected error in g_io_channel_win32_poll() reading data from a child "
 "process"
 msgstr ""
-"Неочаквана грешка в g_io_channel_win32_poll() при четене на данни от дъщерен "
-"процес"
+"Неочаквана грешка в „g_io_channel_win32_poll()“ при четене на данни от "
+"дъщерен процес"
+
+#: glib/gstrfuncs.c:3351 glib/gstrfuncs.c:3453
+msgid "Empty string is not a number"
+msgstr "Празен низ не е число"
+
+#: glib/gstrfuncs.c:3375
+#, c-format
+msgid "“%s” is not a signed number"
+msgstr "„%s“ е число със знак"
+
+#: glib/gstrfuncs.c:3385 glib/gstrfuncs.c:3489
+#, c-format
+msgid "Number “%s” is out of bounds [%s, %s]"
+msgstr "Числото „%s“ е извън диапазона на допустимите стойности [%s, %s]"
+
+#: glib/gstrfuncs.c:3479
+#, c-format
+msgid "“%s” is not an unsigned number"
+msgstr "„%s“ не е число без знак"
+
+#: glib/guri.c:315
+#, no-c-format
+msgid "Invalid %-encoding in URI"
+msgstr "Неправилно кодиране с „%“ в адрес"
+
+#: glib/guri.c:332
+msgid "Illegal character in URI"
+msgstr "Неправилен знак в адрес"
+
+#: glib/guri.c:366
+msgid "Non-UTF-8 characters in URI"
+msgstr "Знаци в адрес, които не са UTF-8"
+
+#: glib/guri.c:546
+#, c-format
+msgid "Invalid IPv6 address ‘%.*s’ in URI"
+msgstr "Неправилен запис за IPv6 „%.*s“ в адреса"
+
+#: glib/guri.c:601
+#, c-format
+msgid "Illegal encoded IP address ‘%.*s’ in URI"
+msgstr "Неправилен запис за IP „%.*s“ в адреса"
+
+#: glib/guri.c:613
+#, c-format
+msgid "Illegal internationalized hostname ‘%.*s’ in URI"
+msgstr "Неправилно име не на латиница „%.*s“ в адреса"
+
+#: glib/guri.c:645 glib/guri.c:657
+#, c-format
+msgid "Could not parse port ‘%.*s’ in URI"
+msgstr "Портът в адреса „%.*s“ не може да се анализира"
+
+#: glib/guri.c:664
+#, c-format
+msgid "Port ‘%.*s’ in URI is out of range"
+msgstr "Портът в адреса „%.*s“ е извън допустимия диапазон"
+
+#: glib/guri.c:1224 glib/guri.c:1288
+#, c-format
+msgid "URI ‘%s’ is not an absolute URI"
+msgstr "Адресът „%s“ не е абсолютен"
+
+#: glib/guri.c:1230
+#, c-format
+msgid "URI ‘%s’ has no host component"
+msgstr "Липсва хост в адреса „%s“"
+
+#: glib/guri.c:1460
+msgid "URI is not absolute, and no base URI was provided"
+msgstr "Адресът не абсолютен, а не е зададен базов адрес"
 
-#: ../glib/gutf8.c:795
+#: glib/guri.c:2238
+msgid "Missing ‘=’ and parameter value"
+msgstr "Липсва „=“ и стойност на параметъра"
+
+#: glib/gutf8.c:832
 msgid "Failed to allocate memory"
 msgstr "Неуспешно заделяне на памет"
 
-#: ../glib/gutf8.c:928
+#: glib/gutf8.c:965
 msgid "Character out of range for UTF-8"
 msgstr "Знак извън обхвата на 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:1067 glib/gutf8.c:1076 glib/gutf8.c:1206 glib/gutf8.c:1215
+#: glib/gutf8.c:1354 glib/gutf8.c:1451
 msgid "Invalid sequence in conversion input"
 msgstr "Неправилна последователност на входа"
 
-#: ../glib/gutf8.c:1327 ../glib/gutf8.c:1424
+#: glib/gutf8.c:1365 glib/gutf8.c:1462
 msgid "Character out of range for UTF-16"
 msgstr "Знак извън обхвата на UTF-16"
 
-#: ../glib/gutils.c:2117 ../glib/gutils.c:2144 ../glib/gutils.c:2250
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2849
 #, c-format
-msgid "%u byte"
-msgid_plural "%u bytes"
-msgstr[0] "%u B"
-msgstr[1] "%u B"
+msgid "%.1f kB"
+msgstr "%.1f kB"
 
-#: ../glib/gutils.c:2123
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2851
 #, c-format
-msgid "%.1f KiB"
-msgstr "%.1f KiB"
+msgid "%.1f MB"
+msgstr "%.1f MB"
 
-#: ../glib/gutils.c:2125
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2853
 #, c-format
-msgid "%.1f MiB"
-msgstr "%.1f MiB"
+msgid "%.1f GB"
+msgstr "%.1f GB"
 
-#: ../glib/gutils.c:2128
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2855
 #, c-format
-msgid "%.1f GiB"
-msgstr "%.1f GiB"
+msgid "%.1f TB"
+msgstr "%.1f TB"
 
-#: ../glib/gutils.c:2131
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2857
 #, c-format
-msgid "%.1f TiB"
-msgstr "%.1f TiB"
+msgid "%.1f PB"
+msgstr "%.1f PB"
 
-#: ../glib/gutils.c:2134
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2859
 #, c-format
-msgid "%.1f PiB"
-msgstr "%.1f PiB"
+msgid "%.1f EB"
+msgstr "%.1f EB"
 
-#: ../glib/gutils.c:2137
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2863
 #, c-format
-msgid "%.1f EiB"
-msgstr "%.1f EiB"
+msgid "%.1f KiB"
+msgstr "%.1f KiB"
 
-#: ../glib/gutils.c:2150
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2865
 #, c-format
-msgid "%.1f kB"
-msgstr "%.1f kb"
+msgid "%.1f MiB"
+msgstr "%.1f MiB"
 
-#: ../glib/gutils.c:2153 ../glib/gutils.c:2268
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2867
 #, c-format
-msgid "%.1f MB"
-msgstr "%.1f MB"
+msgid "%.1f GiB"
+msgstr "%.1f GiB"
 
-#: ../glib/gutils.c:2156 ../glib/gutils.c:2273
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2869
 #, c-format
-msgid "%.1f GB"
-msgstr "%.1f GB"
+msgid "%.1f TiB"
+msgstr "%.1f TiB"
 
-#: ../glib/gutils.c:2158 ../glib/gutils.c:2278
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2871
 #, c-format
-msgid "%.1f TB"
-msgstr "%.1f TB"
+msgid "%.1f PiB"
+msgstr "%.1f PiB"
 
-#: ../glib/gutils.c:2161 ../glib/gutils.c:2283
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2873
 #, c-format
-msgid "%.1f PB"
-msgstr "%.1f PB"
+msgid "%.1f EiB"
+msgstr "%.1f EiB"
 
-#: ../glib/gutils.c:2164 ../glib/gutils.c:2288
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2877
 #, c-format
-msgid "%.1f EB"
-msgstr "%.1f EB"
+msgid "%.1f kb"
+msgstr "%.1f kb"
 
-#. Translators: the %s in "%s bytes" will always be replaced by a number.
-#: ../glib/gutils.c:2201
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2879
 #, c-format
-msgid "%s byte"
-msgid_plural "%s bytes"
-msgstr[0] "%s байт"
-msgstr[1] "%s байта"
+msgid "%.1f Mb"
+msgstr "%.1f Mb"
 
-#. Translators: this is from the deprecated function g_format_size_for_display() which uses 'KB' to
-#. * mean 1024 bytes.  I am aware that 'KB' is not correct, but it has been preserved for reasons of
-#. * 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
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2881
 #, c-format
-msgid "%.1f KB"
-msgstr "%.1f KB"
-
-msgctxt "full month name with day"
-msgid "January"
-msgstr "януари"
-
-msgctxt "full month name with day"
-msgid "February"
-msgstr "февруари"
-
-msgctxt "full month name with day"
-msgid "March"
-msgstr "март"
-
-msgctxt "full month name with day"
-msgid "April"
-msgstr "април"
-
-msgctxt "full month name with day"
-msgid "May"
-msgstr "май"
+msgid "%.1f Gb"
+msgstr "%.1f GB"
 
-msgctxt "full month name with day"
-msgid "June"
-msgstr "юни"
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2883
+#, c-format
+msgid "%.1f Tb"
+msgstr "%.1f Tb"
 
-msgctxt "full month name with day"
-msgid "July"
-msgstr "юли"
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2885
+#, c-format
+msgid "%.1f Pb"
+msgstr "%.1f Pb"
 
-msgctxt "full month name with day"
-msgid "August"
-msgstr "август"
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2887
+#, c-format
+msgid "%.1f Eb"
+msgstr "%.1f Eb"
 
-msgctxt "full month name with day"
-msgid "September"
-msgstr "септември"
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2891
+#, c-format
+msgid "%.1f Kib"
+msgstr "%.1f Kib"
 
-msgctxt "full month name with day"
-msgid "October"
-msgstr "октомври"
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2893
+#, c-format
+msgid "%.1f Mib"
+msgstr "%.1f Mib"
 
-msgctxt "full month name with day"
-msgid "November"
-msgstr "ноември"
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2895
+#, c-format
+msgid "%.1f Gib"
+msgstr "%.1f Gib"
 
-msgctxt "full month name with day"
-msgid "December"
-msgstr "декември"
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2897
+#, c-format
+msgid "%.1f Tib"
+msgstr "%.1f Tib"
 
-msgctxt "abbreviated month name with day"
-msgid "Jan"
-msgstr "яну"
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2899
+#, c-format
+msgid "%.1f Pib"
+msgstr "%.1f Pib"
 
-msgctxt "abbreviated month name with day"
-msgid "Feb"
-msgstr "фев"
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2901
+#, c-format
+msgid "%.1f Eib"
+msgstr "%.1f Eib"
 
-msgctxt "abbreviated month name with day"
-msgid "Mar"
-msgstr "мар"
+#: glib/gutils.c:2935 glib/gutils.c:3052
+#, c-format
+msgid "%u byte"
+msgid_plural "%u bytes"
+msgstr[0] "%u B"
+msgstr[1] "%u B"
 
-msgctxt "abbreviated month name with day"
-msgid "Apr"
-msgstr "апр"
+#: glib/gutils.c:2939
+#, c-format
+msgid "%u bit"
+msgid_plural "%u bits"
+msgstr[0] "%u бит"
+msgstr[1] "%u бита"
 
-msgctxt "abbreviated month name with day"
-msgid "May"
-msgstr "май"
+#. Translators: the %s in "%s bytes" will always be replaced by a number.
+#: glib/gutils.c:3006
+#, c-format
+msgid "%s byte"
+msgid_plural "%s bytes"
+msgstr[0] "%s байт"
+msgstr[1] "%s байта"
 
-msgctxt "abbreviated month name with day"
-msgid "Jun"
-msgstr "юни"
+#. Translators: the %s in "%s bits" will always be replaced by a number.
+#: glib/gutils.c:3011
+#, c-format
+msgid "%s bit"
+msgid_plural "%s bits"
+msgstr[0] "%s бит"
+msgstr[1] "%s бита"
 
-msgctxt "abbreviated month name with day"
-msgid "Jul"
-msgstr "юли"
+#. Translators: this is from the deprecated function g_format_size_for_display() which uses 'KB' to
+#. * mean 1024 bytes.  I am aware that 'KB' is not correct, but it has been preserved for reasons of
+#. * compatibility.  Users will not see this string unless a program is using this deprecated function.
+#. * Please translate as literally as possible.
+#.
+#: glib/gutils.c:3065
+#, c-format
+msgid "%.1f KB"
+msgstr "%.1f KB"
 
-msgctxt "abbreviated month name with day"
-msgid "Aug"
-msgstr "авг"
+#: glib/gutils.c:3070
+#, c-format
+msgid "%.1f MB"
+msgstr "%.1f MB"
 
-msgctxt "abbreviated month name with day"
-msgid "Sep"
-msgstr "сеп"
+#: glib/gutils.c:3075
+#, c-format
+msgid "%.1f GB"
+msgstr "%.1f GB"
 
-msgctxt "abbreviated month name with day"
-msgid "Oct"
-msgstr "окт"
+#: glib/gutils.c:3080
+#, c-format
+msgid "%.1f TB"
+msgstr "%.1f TB"
 
-msgctxt "abbreviated month name with day"
-msgid "Nov"
-msgstr "ное"
+#: glib/gutils.c:3085
+#, c-format
+msgid "%.1f PB"
+msgstr "%.1f PB"
 
-msgctxt "abbreviated month name with day"
-msgid "Dec"
-msgstr "дек"
+#: glib/gutils.c:3090
+#, c-format
+msgid "%.1f EB"
+msgstr "%.1f EB"
index a9fe6ac..796544d 100644 (file)
--- a/po/ca.po
+++ b/po/ca.po
@@ -6,15 +6,15 @@
 # Sílvia Miranda <silvia@softcatala.cat>, 2011.
 # Jordi Serratosa <jordis@softcatala.cat>, 2012, 2017.
 # Gil Forcada <gilforcada@guifi.net>, 2008-2013, 2013, 2014, 2016.
-# Jordi Mas i Hernàndez <jmas@softcatala.org>, 2016, 2017, 2019, 2021
+# Jordi Mas i Hernàndez <jmas@softcatala.org>, 2016-2022
 # Xavi Ivars <xavi.ivars@gmail.com>, 2017.
 msgid ""
 msgstr ""
 "Project-Id-Version: glib 2.8\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/glib/issues\n"
-"POT-Creation-Date: 2022-02-11 12:33+0000\n"
-"PO-Revision-Date: 2022-02-12 18:43+0100\n"
-"Last-Translator: maite guix <maite.guix@me.com>\n"
+"POT-Creation-Date: 2022-03-22 15:19+0000\n"
+"PO-Revision-Date: 2022-03-22 11:48+0100\n"
+"Last-Translator: Jordi Mas <jmas@softcatala.org>\n"
 "Language-Team: Catalan <tradgnome@softcatala.org>\n"
 "Language: ca\n"
 "MIME-Version: 1.0\n"
@@ -24,6 +24,16 @@ msgstr ""
 "X-Generator: Poedit 3.0.1\n"
 "X-Project-Style: gnome\n"
 
+#: gio/gappinfo.c:333
+msgid "Setting default applications not supported yet"
+msgstr "Encara no s'admeten les aplicacions per defecte"
+
+#: gio/gappinfo.c:366
+msgid "Setting application as last used for type not supported yet"
+msgstr ""
+"L'establiment de l'aplicació com a última utilitzada per al tipus encara no "
+"és compatible"
+
 #: gio/gapplication.c:500
 msgid "GApplication options"
 msgstr "Opcions de la GApplication"
@@ -47,11 +57,12 @@ msgid "Replace the running instance"
 msgstr "Reemplaça la instància en execució"
 
 #: gio/gapplication-tool.c:45 gio/gapplication-tool.c:46 gio/gio-tool.c:227
-#: gio/gresource-tool.c:494 gio/gsettings-tool.c:572
+#: gio/gresource-tool.c:494 gio/gsettings-tool.c:584
 msgid "Print help"
 msgstr "Mostra l'ajuda"
 
-#: gio/gapplication-tool.c:47 gio/gresource-tool.c:495 gio/gresource-tool.c:563
+#: gio/gapplication-tool.c:47 gio/gresource-tool.c:495
+#: gio/gresource-tool.c:563
 msgid "[COMMAND]"
 msgstr "[ORDRE]"
 
@@ -59,7 +70,7 @@ msgstr "[ORDRE]"
 msgid "Print version"
 msgstr "Mostra la versió"
 
-#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:578
+#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:590
 msgid "Print version information and exit"
 msgstr "Mostra la informació de la versió i surt"
 
@@ -123,15 +134,16 @@ msgid "Application identifier in D-Bus format (eg: org.example.viewer)"
 msgstr ""
 "Identificador de l'aplicació en format D-Bus (p. ex.: org.example.viewer)"
 
-#: gio/gapplication-tool.c:74 gio/glib-compile-resources.c:738
-#: gio/glib-compile-resources.c:744 gio/glib-compile-resources.c:772
+#: gio/gapplication-tool.c:74 gio/glib-compile-resources.c:820
+#: gio/glib-compile-resources.c:826 gio/glib-compile-resources.c:855
 #: gio/gresource-tool.c:501 gio/gresource-tool.c:567
 msgid "FILE"
 msgstr "FITXER"
 
 #: gio/gapplication-tool.c:74
 msgid "Optional relative or absolute filenames, or URIs to open"
-msgstr "Noms de fitxers relatius opcionals o relatius, o URI que s'han d'obrir"
+msgstr ""
+"Noms de fitxers relatius opcionals o relatius, o URI que s'han d'obrir"
 
 #: gio/gapplication-tool.c:75
 msgid "ACTION"
@@ -149,7 +161,8 @@ msgstr "PARÀMETRE"
 msgid "Optional parameter to the action invocation, in GVariant format"
 msgstr "Paràmetre opcional per la invocació de l'acció, en format GVariant"
 
-#: gio/gapplication-tool.c:98 gio/gresource-tool.c:532 gio/gsettings-tool.c:664
+#: gio/gapplication-tool.c:98 gio/gresource-tool.c:532
+#: gio/gsettings-tool.c:676
 #, c-format
 msgid ""
 "Unknown command %s\n"
@@ -163,7 +176,7 @@ msgid "Usage:\n"
 msgstr "Forma d'ús:\n"
 
 #: gio/gapplication-tool.c:116 gio/gresource-tool.c:557
-#: gio/gsettings-tool.c:699
+#: gio/gsettings-tool.c:711
 msgid "Arguments:\n"
 msgstr "Arguments:\n"
 
@@ -290,7 +303,7 @@ msgstr "Ja està tancat el flux"
 msgid "Truncate not supported on base stream"
 msgstr "No es permet truncar en els fluxos base"
 
-#: gio/gcancellable.c:319 gio/gdbusconnection.c:1873 gio/gdbusprivate.c:1416
+#: gio/gcancellable.c:319 gio/gdbusconnection.c:1857 gio/gdbusprivate.c:1418
 #: gio/gsimpleasyncresult.c:871 gio/gsimpleasyncresult.c:897
 #, c-format
 msgid "Operation was cancelled"
@@ -311,7 +324,7 @@ msgstr "No hi ha prou espai a la destinació"
 #: gio/gcharsetconverter.c:342 gio/gdatainputstream.c:848
 #: gio/gdatainputstream.c:1266 glib/gconvert.c:449 glib/gconvert.c:879
 #: glib/giochannel.c:1573 glib/giochannel.c:1615 glib/giochannel.c:2470
-#: glib/gutf8.c:875 glib/gutf8.c:1328
+#: glib/gutf8.c:890 glib/gutf8.c:1344
 msgid "Invalid byte sequence in conversion input"
 msgstr "La seqüència de bytes a l'entrada de conversió no és vàlida"
 
@@ -321,7 +334,7 @@ msgstr "La seqüència de bytes a l'entrada de conversió no és vàlida"
 msgid "Error during conversion: %s"
 msgstr "S'ha produït un error durant la conversió: %s"
 
-#: gio/gcharsetconverter.c:445 gio/gsocket.c:1143
+#: gio/gcharsetconverter.c:445 gio/gsocket.c:1147
 msgid "Cancellable initialization not supported"
 msgstr "La cancel·lació de la inicialització no està implementada"
 
@@ -335,39 +348,39 @@ msgstr "No es permet la conversió entre els jocs de caràcters «%s» i «%s»"
 msgid "Could not open converter from “%s” to “%s”"
 msgstr "No s'ha pogut obrir el convertidor de «%s» a «%s»"
 
-#: gio/gcontenttype.c:454
+#: gio/gcontenttype.c:470
 #, c-format
 msgid "%s type"
 msgstr "tipus %s"
 
-#: gio/gcontenttype-win32.c:192
+#: gio/gcontenttype-win32.c:196
 msgid "Unknown type"
 msgstr "Tipus desconegut"
 
-#: gio/gcontenttype-win32.c:194
+#: gio/gcontenttype-win32.c:198
 #, c-format
 msgid "%s filetype"
 msgstr "tipus de fitxer %s"
 
-#: gio/gcredentials.c:323
+#: gio/gcredentials.c:335
 msgid "GCredentials contains invalid data"
 msgstr "GCredentials conté dades no vàlides"
 
-#: gio/gcredentials.c:383 gio/gcredentials.c:667
+#: gio/gcredentials.c:395 gio/gcredentials.c:686
 msgid "GCredentials is not implemented on this OS"
 msgstr "Aquest sistema operatiu no implementa les GCredentials"
 
-#: gio/gcredentials.c:538 gio/gcredentials.c:556
+#: gio/gcredentials.c:550 gio/gcredentials.c:568
 msgid "There is no GCredentials support for your platform"
 msgstr "La vostra plataforma no implementa les GCredentials"
 
-#: gio/gcredentials.c:607
+#: gio/gcredentials.c:626
 msgid "GCredentials does not contain a process ID on this OS"
 msgstr ""
 "Les GCredentials no contenen cap identificador de procés en aquest sistema "
 "operatiu"
 
-#: gio/gcredentials.c:661
+#: gio/gcredentials.c:680
 msgid "Credentials spoofing is not possible on this OS"
 msgstr "Aquest sistema operatiu no implementa el falsejament de credencials"
 
@@ -375,48 +388,48 @@ msgstr "Aquest sistema operatiu no implementa el falsejament de credencials"
 msgid "Unexpected early end-of-stream"
 msgstr "No s'esperava un final de flux tan aviat"
 
-#: gio/gdbusaddress.c:159 gio/gdbusaddress.c:233 gio/gdbusaddress.c:322
+#: gio/gdbusaddress.c:162 gio/gdbusaddress.c:236 gio/gdbusaddress.c:325
 #, c-format
 msgid "Unsupported key “%s” in address entry “%s”"
 msgstr "No es permet la clau «%s» en l'entrada de l'adreça «%s»"
 
-#: gio/gdbusaddress.c:172
+#: gio/gdbusaddress.c:175
 #, c-format
 msgid "Meaningless key/value pair combination in address entry “%s”"
 msgstr "L'entrada d'adreça «%s» té una parella clau/valor que no té sentit"
 
-#: gio/gdbusaddress.c:181
+#: gio/gdbusaddress.c:184
 #, c-format
 msgid ""
 "Address “%s” is invalid (need exactly one of path, dir, tmpdir, or abstract "
 "keys)"
 msgstr ""
-"L'adreça «%s» no és vàlida (ha de ser, o bé un camí, o bé un tmpdir -"
-"directori temporal-, o bé unes claus abstractes)"
+"L'adreça «%s» no és vàlida (ha de ser, o bé un camí, o bé un tmpdir "
+"-directori temporal-, o bé unes claus abstractes)"
 
-#: gio/gdbusaddress.c:248 gio/gdbusaddress.c:259 gio/gdbusaddress.c:274
-#: gio/gdbusaddress.c:337 gio/gdbusaddress.c:348
+#: gio/gdbusaddress.c:251 gio/gdbusaddress.c:262 gio/gdbusaddress.c:277
+#: gio/gdbusaddress.c:340 gio/gdbusaddress.c:351
 #, c-format
 msgid "Error in address “%s” — the “%s” attribute is malformed"
 msgstr "Hi ha un error a l'adreça «%s» — l'atribut «%s» no està ben formatat"
 
-#: gio/gdbusaddress.c:418 gio/gdbusaddress.c:682
+#: gio/gdbusaddress.c:421 gio/gdbusaddress.c:680
 #, c-format
 msgid "Unknown or unsupported transport “%s” for address “%s”"
 msgstr ""
 "El transport «%s» per a l'adreça «%s» és desconegut o no està implementat"
 
-#: gio/gdbusaddress.c:462
+#: gio/gdbusaddress.c:465
 #, c-format
 msgid "Address element “%s” does not contain a colon (:)"
 msgstr "L'element d'adreça «%s» no conté dos punts (:)"
 
-#: gio/gdbusaddress.c:471
+#: gio/gdbusaddress.c:474
 #, c-format
 msgid "Transport name in address element “%s” must not be empty"
 msgstr "El nom del transport a l'adreça a l'element «%s» no pot estar buit"
 
-#: gio/gdbusaddress.c:492
+#: gio/gdbusaddress.c:495
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” does not contain an equal "
@@ -425,7 +438,7 @@ msgstr ""
 "La parella de clau/valor %d, «%s», a l'element d'adreça «%s», no conté un "
 "signe d'igual"
 
-#: gio/gdbusaddress.c:503
+#: gio/gdbusaddress.c:506
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” must not have an empty key"
@@ -433,16 +446,16 @@ msgstr ""
 "La parella de clau/valor %d, «%s», a l'element d'adreça «%s», no conté un "
 "signe d'igual"
 
-#: gio/gdbusaddress.c:517
+#: gio/gdbusaddress.c:520
 #, c-format
 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 ""
-"S'ha produït un error en suprimir l'escapament d'una clau o d'un valor en la "
-"parella clau/valor %d, «%s», de l'element d'adreça «%s»"
+"S'ha produït un error en suprimir l'escapament d'una clau o d'un valor en la"
+" parella clau/valor %d, «%s», de l'element d'adreça «%s»"
 
-#: gio/gdbusaddress.c:589
+#: gio/gdbusaddress.c:588
 #, c-format
 msgid ""
 "Error in address “%s” — the unix transport requires exactly one of the keys "
@@ -452,97 +465,96 @@ msgstr ""
 "establerta exactament una clau, o bé de tipus «path» (camí), o bé de tipus "
 "«abstract» (abstracte)"
 
-#: gio/gdbusaddress.c:625
+#: gio/gdbusaddress.c:623
 #, c-format
 msgid "Error in address “%s” — the host attribute is missing or malformed"
 msgstr ""
 "Hi ha un error a l'adreça «%s»: manca o està mal formatat l'atribut del nom "
 "d'ordinador"
 
-#: gio/gdbusaddress.c:639
+#: gio/gdbusaddress.c:637
 #, c-format
 msgid "Error in address “%s” — the port attribute is missing or malformed"
 msgstr ""
 "Hi ha un error a l'adreça «%s»: manca o està mal formatat l'atribut del port"
 
-#: gio/gdbusaddress.c:653
+#: gio/gdbusaddress.c:651
 #, 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 ""
 "Hi ha un error a l'adreça «%s»: l'atribut noncefile no existeix o està mal "
 "formatat"
 
-#: gio/gdbusaddress.c:674
+#: gio/gdbusaddress.c:672
 msgid "Error auto-launching: "
 msgstr "S'ha produït un error en executar-se automàticament: "
 
-#: gio/gdbusaddress.c:727
+#: gio/gdbusaddress.c:725
 #, c-format
 msgid "Error opening nonce file “%s”: %s"
 msgstr "S'ha produït un error en obrir el fitxer nonce «%s»: %s"
 
-#: gio/gdbusaddress.c:746
+#: gio/gdbusaddress.c:744
 #, c-format
 msgid "Error reading from nonce file “%s”: %s"
 msgstr "S'ha produït un error en llegir el fitxer nonce «%s»: %s"
 
-#: gio/gdbusaddress.c:755
+#: gio/gdbusaddress.c:753
 #, c-format
 msgid "Error reading from nonce file “%s”, expected 16 bytes, got %d"
 msgstr ""
 "S'ha produït un error en llegir el fitxer nonce «%s»: s'esperaven 16 bytes, "
 "però se n'han obtingut %d"
 
-#: gio/gdbusaddress.c:773
+#: gio/gdbusaddress.c:771
 #, c-format
 msgid "Error writing contents of nonce file “%s” to stream:"
 msgstr ""
 "S'ha produït un error en escriure els continguts del fitxer nonce «%s» al "
 "flux:"
 
-#: gio/gdbusaddress.c:988
+#: gio/gdbusaddress.c:986
 msgid "The given address is empty"
 msgstr "L'adreça que s'ha indicat és buida"
 
-#: gio/gdbusaddress.c:1101
+#: gio/gdbusaddress.c:1099
 #, c-format
-msgid "Cannot spawn a message bus when setuid"
-msgstr ""
-"No es pot engendrar un bus de missatge si s'executa com un altre usuari "
-"(setuid)"
+msgid "Cannot spawn a message bus when AT_SECURE is set"
+msgstr "No es pot engendrar un bus de missatges quan s'ha definit AT_SECURE"
 
-#: gio/gdbusaddress.c:1108
+#: gio/gdbusaddress.c:1106
 msgid "Cannot spawn a message bus without a machine-id: "
 msgstr ""
 "No es pot engendrar un bus de missatge sense un identificador de màquina: "
 
-#: gio/gdbusaddress.c:1115
+#: gio/gdbusaddress.c:1113
 #, c-format
 msgid "Cannot autolaunch D-Bus without X11 $DISPLAY"
 msgstr "No es pot executar D-Bus automàticament sense X11 $DISPLAY"
 
-#: gio/gdbusaddress.c:1157
+#: gio/gdbusaddress.c:1155
 #, c-format
 msgid "Error spawning command line “%s”: "
 msgstr "S'ha produït un error en engendrar la línia d'ordres «%s»: "
 
-#: gio/gdbusaddress.c:1226
+#: gio/gdbusaddress.c:1224
 #, c-format
 msgid "Cannot determine session bus address (not implemented for this OS)"
 msgstr ""
 "No s'ha pogut determinar l'adreça del bus de sessió (no està implementat en "
 "aquest sistema operatiu)"
 
-#: gio/gdbusaddress.c:1375 gio/gdbusconnection.c:7334
+#: gio/gdbusaddress.c:1373 gio/gdbusconnection.c:7318
 #, c-format
 msgid ""
-"Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
-"— unknown value “%s”"
+"Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable"
+" — unknown value “%s”"
 msgstr ""
 "No es pot determinar l'adreça del bus a través de la variable d'entorn "
 "«DBUS_STARTER_BUS_TYPE»: conté un valor desconegut «%s»"
 
-#: gio/gdbusaddress.c:1384 gio/gdbusconnection.c:7343
+#: gio/gdbusaddress.c:1382 gio/gdbusconnection.c:7327
 msgid ""
 "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
 "variable is not set"
@@ -550,7 +562,7 @@ msgstr ""
 "No es pot determinar l'adreça del bus perquè la variable d'entorn "
 "«DBUS_STARTER_BUS_TYPE» no està establerta"
 
-#: gio/gdbusaddress.c:1394
+#: gio/gdbusaddress.c:1392
 #, c-format
 msgid "Unknown bus type %d"
 msgstr "Tipus de bus desconegut %d"
@@ -568,10 +580,11 @@ msgstr ""
 #: gio/gdbusauth.c:482
 #, c-format
 msgid ""
-"Exhausted all available authentication mechanisms (tried: %s) (available: %s)"
+"Exhausted all available authentication mechanisms (tried: %s) (available: "
+"%s)"
 msgstr ""
-"S'han exhaurit tots els mecanismes d'autenticació disponibles (s'han provat: "
-"%s) (hi ha disponibles: %s)"
+"S'han exhaurit tots els mecanismes d'autenticació disponibles (s'han provat:"
+" %s) (hi ha disponibles: %s)"
 
 #: gio/gdbusauth.c:1171
 msgid "User IDs must be the same for peer and server"
@@ -583,12 +596,12 @@ msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
 msgstr ""
 "S'ha cancel·lat a través de GDBusAuthObserver::authorize-authenticated-peer"
 
-#: gio/gdbusauthmechanismsha1.c:298
+#: gio/gdbusauthmechanismsha1.c:300
 #, c-format
 msgid "Error when getting information for directory “%s”: %s"
 msgstr "S'ha produït un error en obtenir la informació del directori «%s»: %s"
 
-#: gio/gdbusauthmechanismsha1.c:313
+#: gio/gdbusauthmechanismsha1.c:315
 #, c-format
 msgid ""
 "Permissions on directory “%s” are malformed. Expected mode 0700, got 0%o"
@@ -596,34 +609,35 @@ msgstr ""
 "Els permisos del directori «%s» no estan ben formatats. S'esperava el mode "
 "0700, però s'ha obtingut el 0%o"
 
-#: gio/gdbusauthmechanismsha1.c:346 gio/gdbusauthmechanismsha1.c:357
+#: gio/gdbusauthmechanismsha1.c:348 gio/gdbusauthmechanismsha1.c:359
 #, c-format
 msgid "Error creating directory “%s”: %s"
 msgstr "S'ha produït un error en crear el directori «%s»: %s"
 
-#: gio/gdbusauthmechanismsha1.c:359 gio/gfile.c:1062 gio/gfile.c:1300
-#: gio/gfile.c:1438 gio/gfile.c:1676 gio/gfile.c:1731 gio/gfile.c:1789
-#: gio/gfile.c:1873 gio/gfile.c:1930 gio/gfile.c:1994 gio/gfile.c:2049
-#: gio/gfile.c:3754 gio/gfile.c:3809 gio/gfile.c:4102 gio/gfile.c:4572
-#: gio/gfile.c:4983 gio/gfile.c:5068 gio/gfile.c:5158 gio/gfile.c:5255
-#: gio/gfile.c:5342 gio/gfile.c:5443 gio/gfile.c:8153 gio/gfile.c:8243
-#: gio/gfile.c:8327 gio/win32/gwinhttpfile.c:453
+#: gio/gdbusauthmechanismsha1.c:361 gio/gfile.c:1080 gio/gfile.c:1318
+#: gio/gfile.c:1456 gio/gfile.c:1694 gio/gfile.c:1749 gio/gfile.c:1807
+#: gio/gfile.c:1891 gio/gfile.c:1948 gio/gfile.c:2012 gio/gfile.c:2067
+#: gio/gfile.c:3772 gio/gfile.c:3912 gio/gfile.c:4205 gio/gfile.c:4675
+#: gio/gfile.c:5086 gio/gfile.c:5171 gio/gfile.c:5261 gio/gfile.c:5358
+#: gio/gfile.c:5445 gio/gfile.c:5546 gio/gfile.c:8375 gio/gfile.c:8465
+#: gio/gfile.c:8549 gio/win32/gwinhttpfile.c:453
 msgid "Operation not supported"
 msgstr "L'operació no està implementada"
 
-#: gio/gdbusauthmechanismsha1.c:402
+#: gio/gdbusauthmechanismsha1.c:404
 #, c-format
 msgid "Error opening keyring “%s” for reading: "
-msgstr "S'ha produït un error en obrir l'anell de claus «%s» per a llegir-lo: "
+msgstr ""
+"S'ha produït un error en obrir l'anell de claus «%s» per a llegir-lo: "
 
-#: gio/gdbusauthmechanismsha1.c:425 gio/gdbusauthmechanismsha1.c:747
+#: gio/gdbusauthmechanismsha1.c:427 gio/gdbusauthmechanismsha1.c:769
 #, c-format
 msgid "Line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr ""
 "La línia %d de l'anell de claus a «%s» amb el contingut «%s» no està ben "
 "formatada"
 
-#: gio/gdbusauthmechanismsha1.c:439 gio/gdbusauthmechanismsha1.c:761
+#: gio/gdbusauthmechanismsha1.c:441 gio/gdbusauthmechanismsha1.c:783
 #, c-format
 msgid ""
 "First token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -631,69 +645,70 @@ msgstr ""
 "El primer testimoni de la línia %d de l'anell de claus a «%s» amb el "
 "contingut «%s» no està ben formatat"
 
-#: gio/gdbusauthmechanismsha1.c:453 gio/gdbusauthmechanismsha1.c:775
+#: gio/gdbusauthmechanismsha1.c:455 gio/gdbusauthmechanismsha1.c:797
 #, c-format
 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 ""
 "El segon testimoni de la línia %d de l'anell de claus a «%s» amb el "
 "contingut «%s» no està ben formatat"
 
-#: gio/gdbusauthmechanismsha1.c:477
+#: gio/gdbusauthmechanismsha1.c:479
 #, c-format
 msgid "Didn’t find cookie with id %d in the keyring at “%s”"
 msgstr ""
 "No s'ha trobat la galeta amb l'identificador %d a l'anell de claus a «%s»"
 
-#: gio/gdbusauthmechanismsha1.c:523
+#: gio/gdbusauthmechanismsha1.c:536
 #, c-format
 msgid "Error creating lock file “%s”: %s"
 msgstr "S'ha produït un error en crear el fitxer de blocatge «%s»: %s"
 
-#: gio/gdbusauthmechanismsha1.c:587
+#: gio/gdbusauthmechanismsha1.c:609
 #, c-format
 msgid "Error deleting stale lock file “%s”: %s"
 msgstr "S'ha produït un suprimir el fitxer de blocatge antic «%s»: %s"
 
-#: gio/gdbusauthmechanismsha1.c:626
+#: gio/gdbusauthmechanismsha1.c:648
 #, c-format
 msgid "Error closing (unlinked) lock file “%s”: %s"
 msgstr ""
 "S'ha produït un error en tancar el fitxer (no enllaçat) de blocatge «%s»: %s"
 
-#: gio/gdbusauthmechanismsha1.c:637
+#: gio/gdbusauthmechanismsha1.c:659
 #, c-format
 msgid "Error unlinking lock file “%s”: %s"
 msgstr "S'ha produït un error en desenllaçar el fitxer de blocatge «%s»: %s"
 
-#: gio/gdbusauthmechanismsha1.c:714
+#: gio/gdbusauthmechanismsha1.c:736
 #, c-format
 msgid "Error opening keyring “%s” for writing: "
 msgstr ""
 "S'ha produït un error en obrir l'anell de claus «%s» per a escriptura: "
 
-#: gio/gdbusauthmechanismsha1.c:908
+#: gio/gdbusauthmechanismsha1.c:930
 #, c-format
 msgid "(Additionally, releasing the lock for “%s” also failed: %s) "
 msgstr ""
 "(A més a més, l'alliberació del blocatge per a «%s» també ha fallat: %s) "
 
-#: gio/gdbusconnection.c:604 gio/gdbusconnection.c:2418
+#: gio/gdbusconnection.c:588 gio/gdbusconnection.c:2402
 msgid "The connection is closed"
 msgstr "La connexió està tancada"
 
-#: gio/gdbusconnection.c:1903
+#: gio/gdbusconnection.c:1887
 msgid "Timeout was reached"
 msgstr "S'ha esgotat el temps d'espera"
 
-#: gio/gdbusconnection.c:2541
+#: gio/gdbusconnection.c:2525
 msgid ""
 "Unsupported flags encountered when constructing a client-side connection"
 msgstr ""
 "S'han trobat senyaladors no implementats en construir-se la part de la "
 "connexió del client"
 
-#: gio/gdbusconnection.c:4269 gio/gdbusconnection.c:4623
+#: gio/gdbusconnection.c:4253 gio/gdbusconnection.c:4607
 #, c-format
 msgid ""
 "No such interface “org.freedesktop.DBus.Properties” on object at path %s"
@@ -701,166 +716,168 @@ msgstr ""
 "No existeix la interfície «org.freedesktop.DBus.Properties» en l'objecte al "
 "camí %s"
 
-#: gio/gdbusconnection.c:4414
+#: gio/gdbusconnection.c:4398
 #, c-format
 msgid "No such property “%s”"
 msgstr "No existeix la propietat «%s»"
 
-#: gio/gdbusconnection.c:4426
+#: gio/gdbusconnection.c:4410
 #, c-format
 msgid "Property “%s” is not readable"
 msgstr "La propietat «%s» no és de lectura"
 
-#: gio/gdbusconnection.c:4437
+#: gio/gdbusconnection.c:4421
 #, c-format
 msgid "Property “%s” is not writable"
 msgstr "La propietat «%s» no és d'escriptura"
 
-#: gio/gdbusconnection.c:4457
+#: gio/gdbusconnection.c:4441
 #, c-format
 msgid "Error setting property “%s”: Expected type “%s” but got “%s”"
 msgstr ""
 "S'ha produït un error en establir la propietat «%s»: s'esperava el tipus "
 "«%s», però s'ha obtingut el «%s»"
 
-#: gio/gdbusconnection.c:4562 gio/gdbusconnection.c:4777
-#: gio/gdbusconnection.c:6760
+#: gio/gdbusconnection.c:4546 gio/gdbusconnection.c:4761
+#: gio/gdbusconnection.c:6744
 #, c-format
 msgid "No such interface “%s”"
 msgstr "No existeix la interfície «%s»"
 
-#: gio/gdbusconnection.c:4999 gio/gdbusconnection.c:7274
+#: gio/gdbusconnection.c:4983 gio/gdbusconnection.c:7258
 #, c-format
 msgid "No such interface “%s” on object at path %s"
 msgstr "No existeix la interfície «%s» en l'objecte al camí %s"
 
-#: gio/gdbusconnection.c:5100
+#: gio/gdbusconnection.c:5084
 #, c-format
 msgid "No such method “%s”"
 msgstr "No existeix el mètode «%s»"
 
-#: gio/gdbusconnection.c:5131
+#: gio/gdbusconnection.c:5115
 #, c-format
 msgid "Type of message, “%s”, does not match expected type “%s”"
 msgstr "El tipus de missatge «%s» no correspon al tipus «%s» que s'esperava"
 
-#: gio/gdbusconnection.c:5334
+#: gio/gdbusconnection.c:5318
 #, c-format
 msgid "An object is already exported for the interface %s at %s"
 msgstr "Ja hi ha un objecte exportat per a la interfície %s a %s"
 
-#: gio/gdbusconnection.c:5561
+#: gio/gdbusconnection.c:5545
 #, c-format
 msgid "Unable to retrieve property %s.%s"
 msgstr "No s'ha pogut recuperar la propietat %s.%s"
 
-#: gio/gdbusconnection.c:5617
+#: gio/gdbusconnection.c:5601
 #, c-format
 msgid "Unable to set property %s.%s"
 msgstr "No s'ha pogut establir la propietat %s.%s"
 
-#: gio/gdbusconnection.c:5796
+#: gio/gdbusconnection.c:5780
 #, c-format
 msgid "Method “%s” returned type “%s”, but expected “%s”"
 msgstr "El mètode «%s» ha retornat un tipus «%s», però s'esperava «%s»"
 
-#: gio/gdbusconnection.c:6872
+#: gio/gdbusconnection.c:6856
 #, c-format
 msgid "Method “%s” on interface “%s” with signature “%s” does not exist"
 msgstr "No existeix el mètode «%s» a la interfície «%s» amb la signatura «%s»"
 
-#: gio/gdbusconnection.c:6993
+#: gio/gdbusconnection.c:6977
 #, c-format
 msgid "A subtree is already exported for %s"
 msgstr "Ja està exportat un subarbre per a %s"
 
-#: gio/gdbusconnection.c:7282
+#: gio/gdbusconnection.c:7266
 #, c-format
 msgid "Object does not exist at path “%s”"
 msgstr "L'objecte no existeix al camí «%s»"
 
-#: gio/gdbusmessage.c:1311
+#: gio/gdbusmessage.c:1301
 msgid "type is INVALID"
 msgstr "el tipus és no vàlid"
 
-#: gio/gdbusmessage.c:1322
+#: gio/gdbusmessage.c:1312
 msgid "METHOD_CALL message: PATH or MEMBER header field is missing"
 msgstr "Missatge «METHOD_CALL»: manca el camp de capçalera «PATH» o «MEMBER»"
 
-#: gio/gdbusmessage.c:1333
+#: gio/gdbusmessage.c:1323
 msgid "METHOD_RETURN message: REPLY_SERIAL header field is missing"
 msgstr "Missatge «METHOD_RETURN»: manca el camp de capçalera «REPLY_SERIAL»"
 
-#: gio/gdbusmessage.c:1345
+#: gio/gdbusmessage.c:1335
 msgid "ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing"
 msgstr ""
 "Missatge «ERROR»: manca el camp de capçalera «REPLY_SERIAL» o «ERROR_NAME»"
 
-#: gio/gdbusmessage.c:1358
+#: gio/gdbusmessage.c:1348
 msgid "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing"
 msgstr ""
 "Missatge «SIGNAL»: manca el camp de capçalera «PATH», «INTERFACE» o «MEMBER»"
 
-#: gio/gdbusmessage.c:1366
+#: gio/gdbusmessage.c:1356
 msgid ""
-"SIGNAL message: The PATH header field is using the reserved value /org/"
-"freedesktop/DBus/Local"
+"SIGNAL message: The PATH header field is using the reserved value "
+"/org/freedesktop/DBus/Local"
 msgstr ""
-"Missatge «SIGNAL»: el camp de la capçalera «PATH» utilitza el valor reservat "
-"«/org/freedesktop/DBus/Local»"
+"Missatge «SIGNAL»: el camp de la capçalera «PATH» utilitza el valor reservat"
+" «/org/freedesktop/DBus/Local»"
 
-#: gio/gdbusmessage.c:1374
+#: gio/gdbusmessage.c:1364
 msgid ""
-"SIGNAL message: The INTERFACE header field is using the reserved value org."
-"freedesktop.DBus.Local"
+"SIGNAL message: The INTERFACE header field is using the reserved value "
+"org.freedesktop.DBus.Local"
 msgstr ""
 "Missatge SIGNAL: el camp de capçalera INTERFACE utilitza el valor reservat "
 "org.freedesktop.DBus.Local"
 
-#: gio/gdbusmessage.c:1422 gio/gdbusmessage.c:1482
+#: gio/gdbusmessage.c:1412 gio/gdbusmessage.c:1472
 #, c-format
 msgid "Wanted to read %lu byte but only got %lu"
 msgid_plural "Wanted to read %lu bytes but only got %lu"
 msgstr[0] "Es volia llegir %lu byte però només s'han rebut %lu"
 msgstr[1] "Es volien llegir %lu bytes però només s'han rebut %lu"
 
-#: gio/gdbusmessage.c:1436
+#: gio/gdbusmessage.c:1426
 #, c-format
 msgid "Expected NUL byte after the string “%s” but found byte %d"
 msgstr ""
 "S'esperava el byte «NUL» després de la cadena «%s» però s'ha trobat el byte "
 "%d"
 
-#: gio/gdbusmessage.c:1455
+#: gio/gdbusmessage.c:1445
 #, 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”"
+"(length of string is %d). The valid UTF-8 string up until that point was "
+"“%s”"
 msgstr ""
 "S'esperava una cadena UTF-8 vàlida però s'han trobat bytes no vàlids a "
 "l'òfset %d (la llargada de la cadena és %d). La cadena UTF-8 vàlida fins "
 "aquell moment era «%s»"
 
-#: gio/gdbusmessage.c:1519 gio/gdbusmessage.c:1795 gio/gdbusmessage.c:2006
+#: gio/gdbusmessage.c:1509 gio/gdbusmessage.c:1785 gio/gdbusmessage.c:1996
 msgid "Value nested too deeply"
 msgstr "Valor imbricat massa profund"
 
-#: gio/gdbusmessage.c:1687
+#: gio/gdbusmessage.c:1677
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus object path"
 msgstr "El valor analitzat «%s» no és un camí d'objecte D-Bus vàlid"
 
-#: gio/gdbusmessage.c:1711
+#: gio/gdbusmessage.c:1701
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature"
 msgstr "El valor analitzat «%s» no és una signatura D-Bus vàlida"
 
-#: gio/gdbusmessage.c:1762
+#: gio/gdbusmessage.c:1752
 #, c-format
 msgid ""
 "Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB)."
 msgid_plural ""
-"Encountered array of length %u bytes. Maximum length is 2<<26 bytes (64 MiB)."
+"Encountered array of length %u bytes. Maximum length is 2<<26 bytes (64 "
+"MiB)."
 msgstr[0] ""
 "S'ha trobat una matriu de llargada %u byte. La llargada màxima és de 2<<26 "
 "bytes (64 MiB)."
@@ -868,7 +885,7 @@ msgstr[1] ""
 "S'ha trobat una matriu de llargada %u bytes. La llargada màxima és de 2<<26 "
 "bytes (64 MiB)."
 
-#: gio/gdbusmessage.c:1782
+#: gio/gdbusmessage.c:1772
 #, c-format
 msgid ""
 "Encountered array of type “a%c”, expected to have a length a multiple of %u "
@@ -877,24 +894,25 @@ msgstr ""
 "S'ha trobat una matriu de tipus «a%c» que s'esperava que tingués una "
 "llargada múltiple de %u bytes, però en realitat és de %u bytes"
 
-#: gio/gdbusmessage.c:1936 gio/gdbusmessage.c:2655
+#: gio/gdbusmessage.c:1926 gio/gdbusmessage.c:2645
 msgid "Empty structures (tuples) are not allowed in D-Bus"
 msgstr "No es permeten estructures buides (tuples) a D-Bus"
 
-#: gio/gdbusmessage.c:1990
+#: gio/gdbusmessage.c:1980
 #, c-format
 msgid "Parsed value “%s” for variant is not a valid D-Bus signature"
 msgstr "El valor analitzat «%s» per variant no és una signatura D-Bus vàlida"
 
-#: gio/gdbusmessage.c:2031
+#: gio/gdbusmessage.c:2021
 #, c-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 ""
 "S'ha produït un error en convertir a estructura de dades la GVariant amb el "
 "tipus de cadena «%s» del format de cable D-Bus"
 
-#: gio/gdbusmessage.c:2216
+#: gio/gdbusmessage.c:2206
 #, c-format
 msgid ""
 "Invalid endianness value. Expected 0x6c (“l”) or 0x42 (“B”) but found value "
@@ -903,28 +921,28 @@ msgstr ""
 "Valor d'ordenació de bits (endianness) no vàlid. S'esperava 0x6c («l») o "
 "0x42 («B») però s'ha trobat el valor 0x%02x"
 
-#: gio/gdbusmessage.c:2235
+#: gio/gdbusmessage.c:2225
 #, c-format
 msgid "Invalid major protocol version. Expected 1 but found %d"
 msgstr "Versió major del protocol no vàlida. S'esperava 1 però s'ha trobat %d"
 
-#: gio/gdbusmessage.c:2293 gio/gdbusmessage.c:2891
+#: gio/gdbusmessage.c:2283 gio/gdbusmessage.c:2881
 msgid "Signature header found but is not of type signature"
 msgstr "S'ha trobat la capçalera de signatura però no és del tipus signatura"
 
-#: gio/gdbusmessage.c:2305
+#: gio/gdbusmessage.c:2295
 #, c-format
 msgid "Signature header with signature “%s” found but message body is empty"
 msgstr ""
 "S'ha trobat la capçalera de la signatura amb la signatura «%s», però el cos "
 "és buit"
 
-#: gio/gdbusmessage.c:2320
+#: gio/gdbusmessage.c:2310
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature (for body)"
 msgstr "El valor analitzat «%s» no és una signatura de D-Bus vàlida (pel cos)"
 
-#: gio/gdbusmessage.c:2352
+#: gio/gdbusmessage.c:2342
 #, 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"
@@ -935,19 +953,19 @@ msgstr[1] ""
 "No hi ha cap capçalera de la signatura en el missatge, però el cos és de %u "
 "bytes"
 
-#: gio/gdbusmessage.c:2362
+#: gio/gdbusmessage.c:2352
 msgid "Cannot deserialize message: "
 msgstr "No s'ha pogut tornar a convertir el missatge a estructura de dades: "
 
-#: gio/gdbusmessage.c:2708
+#: gio/gdbusmessage.c:2698
 #, c-format
 msgid ""
 "Error serializing GVariant with type string “%s” to the D-Bus wire format"
 msgstr ""
-"No s'ha pogut convertir a seqüència de bits la GVariant de tipus cadena «%s» "
-"al format de cable D-Bus"
+"No s'ha pogut convertir a seqüència de bits la GVariant de tipus cadena «%s»"
+" al format de cable D-Bus"
 
-#: gio/gdbusmessage.c:2845
+#: gio/gdbusmessage.c:2835
 #, c-format
 msgid ""
 "Number of file descriptors in message (%d) differs from header field (%d)"
@@ -955,18 +973,18 @@ msgstr ""
 "El nombre de descriptors de fitxer al missatge (%d) difereix del camp de la "
 "capçalera (%d)"
 
-#: gio/gdbusmessage.c:2853
+#: gio/gdbusmessage.c:2843
 msgid "Cannot serialize message: "
 msgstr "No s'ha pogut convertir a seqüència de bits el missatge: "
 
-#: gio/gdbusmessage.c:2906
+#: gio/gdbusmessage.c:2896
 #, c-format
 msgid "Message body has signature “%s” but there is no signature header"
 msgstr ""
 "El cos del missatge té la signatura «%s» però no hi ha cap capçalera de "
 "signatura"
 
-#: gio/gdbusmessage.c:2916
+#: gio/gdbusmessage.c:2906
 #, c-format
 msgid ""
 "Message body has type signature “%s” but signature in the header field is "
@@ -975,58 +993,58 @@ msgstr ""
 "El cos del missatge té el tipus de signatura «%s» però la signatura en el "
 "camp de la capçalera és «%s»"
 
-#: gio/gdbusmessage.c:2932
+#: gio/gdbusmessage.c:2922
 #, c-format
 msgid "Message body is empty but signature in the header field is “(%s)”"
 msgstr ""
 "El cos del missatge és buit però la signatura en el camp de la capçalera és "
 "«(%s)»"
 
-#: gio/gdbusmessage.c:3487
+#: gio/gdbusmessage.c:3477
 #, c-format
 msgid "Error return with body of type “%s”"
 msgstr "S'ha retornat un error amb el cos de tipus «%s»"
 
-#: gio/gdbusmessage.c:3495
+#: gio/gdbusmessage.c:3485
 msgid "Error return with empty body"
 msgstr "S'ha retornat un error amb el cos buit"
 
-#: gio/gdbusprivate.c:2246
+#: gio/gdbusprivate.c:2185
 #, c-format
 msgid "(Type any character to close this window)\n"
 msgstr "(Premeu qualsevol tecla per a tancar aquesta finestra)\n"
 
-#: gio/gdbusprivate.c:2420
+#: gio/gdbusprivate.c:2371
 #, c-format
 msgid "Session dbus not running, and autolaunch failed"
 msgstr ""
-"El bus de sessió (D-Bus) no està en funcionament i l'arrencada automàtica no "
-"ha funcionat"
+"El bus de sessió (D-Bus) no està en funcionament i l'arrencada automàtica no"
+" ha funcionat"
 
-#: gio/gdbusprivate.c:2443
+#: gio/gdbusprivate.c:2394
 #, c-format
 msgid "Unable to get Hardware profile: %s"
 msgstr "No s'ha pogut obtenir el perfil de maquinari: %s"
 
 #. Translators: Both placeholders are file paths
-#: gio/gdbusprivate.c:2494
+#: gio/gdbusprivate.c:2445
 #, c-format
 msgid "Unable to load %s or %s: "
 msgstr "No s'ha pogut carregar %s ni %s: "
 
-#: gio/gdbusproxy.c:1569
+#: gio/gdbusproxy.c:1573
 #, c-format
 msgid "Error calling StartServiceByName for %s: "
 msgstr "S'ha produït un error en cridar «StartServiceByName» per a %s: "
 
-#: gio/gdbusproxy.c:1592
+#: gio/gdbusproxy.c:1596
 #, c-format
 msgid "Unexpected reply %d from StartServiceByName(\"%s\") method"
 msgstr ""
 "S'ha obtingut una resposta inesperada %d per al mètode "
 "«StartServiceByName(\"%s\")»"
 
-#: gio/gdbusproxy.c:2699 gio/gdbusproxy.c:2834
+#: gio/gdbusproxy.c:2707 gio/gdbusproxy.c:2842
 #, c-format
 msgid ""
 "Cannot invoke method; proxy is for the well-known name %s without an owner, "
@@ -1080,70 +1098,69 @@ msgstr ""
 "  emit         Emet un senyal\n"
 "  wait         Espera que aparegui un nom de bus\n"
 "\n"
-"Utilitzeu «%s ORDRE --help» per a veure l'ajuda de cada ordre en "
-"particular.\n"
+"Utilitzeu «%s ORDRE --help» per a veure l'ajuda de cada ordre en particular.\n"
 
-#: gio/gdbus-tool.c:201 gio/gdbus-tool.c:273 gio/gdbus-tool.c:345
-#: gio/gdbus-tool.c:369 gio/gdbus-tool.c:859 gio/gdbus-tool.c:1236
-#: gio/gdbus-tool.c:1724
+#: gio/gdbus-tool.c:202 gio/gdbus-tool.c:274 gio/gdbus-tool.c:346
+#: gio/gdbus-tool.c:370 gio/gdbus-tool.c:860 gio/gdbus-tool.c:1245
+#: gio/gdbus-tool.c:1733
 #, c-format
 msgid "Error: %s\n"
 msgstr "S'ha produït un error: %s\n"
 
-#: gio/gdbus-tool.c:212 gio/gdbus-tool.c:286 gio/gdbus-tool.c:1740
+#: gio/gdbus-tool.c:213 gio/gdbus-tool.c:287 gio/gdbus-tool.c:1749
 #, c-format
 msgid "Error parsing introspection XML: %s\n"
 msgstr "S'ha produït un error en analitzar la introspecció XML: %s\n"
 
-#: gio/gdbus-tool.c:250
+#: gio/gdbus-tool.c:251
 #, c-format
 msgid "Error: %s is not a valid name\n"
 msgstr "Error: %s no és un nom de membre vàlid\n"
 
-#: gio/gdbus-tool.c:255 gio/gdbus-tool.c:745 gio/gdbus-tool.c:1060
-#: gio/gdbus-tool.c:1890 gio/gdbus-tool.c:2130
+#: gio/gdbus-tool.c:256 gio/gdbus-tool.c:746 gio/gdbus-tool.c:1064
+#: gio/gdbus-tool.c:1899 gio/gdbus-tool.c:2139
 #, c-format
 msgid "Error: %s is not a valid object path\n"
 msgstr "Error: «%s» no és un camí d'objecte vàlid\n"
 
-#: gio/gdbus-tool.c:403
+#: gio/gdbus-tool.c:404
 msgid "Connect to the system bus"
 msgstr "Connecta al bus del sistema"
 
-#: gio/gdbus-tool.c:404
+#: gio/gdbus-tool.c:405
 msgid "Connect to the session bus"
 msgstr "Connecta al bus de la sessió"
 
-#: gio/gdbus-tool.c:405
+#: gio/gdbus-tool.c:406
 msgid "Connect to given D-Bus address"
 msgstr "Connecta a l'adreça de D-Bus donada"
 
-#: gio/gdbus-tool.c:415
+#: gio/gdbus-tool.c:416
 msgid "Connection Endpoint Options:"
 msgstr "Opcions del punt final de connexió:"
 
-#: gio/gdbus-tool.c:416
+#: gio/gdbus-tool.c:417
 msgid "Options specifying the connection endpoint"
 msgstr "Opcions d'especificació del punt final de connexió"
 
-#: gio/gdbus-tool.c:439
+#: gio/gdbus-tool.c:440
 #, c-format
 msgid "No connection endpoint specified"
 msgstr "No s'ha especificat el punt final de connexió"
 
-#: gio/gdbus-tool.c:449
+#: gio/gdbus-tool.c:450
 #, c-format
 msgid "Multiple connection endpoints specified"
 msgstr "S'han especificat més d'un punt final de connexió"
 
-#: gio/gdbus-tool.c:522
+#: gio/gdbus-tool.c:523
 #, c-format
 msgid ""
 "Warning: According to introspection data, interface “%s” does not exist\n"
 msgstr ""
 "Avís: d'acord amb les dades d'introspecció no existeix la interfície «%s»\n"
 
-#: gio/gdbus-tool.c:531
+#: gio/gdbus-tool.c:532
 #, c-format
 msgid ""
 "Warning: According to introspection data, method “%s” does not exist on "
@@ -1152,230 +1169,238 @@ msgstr ""
 "Avís: d'acord amb les dades d'introspecció no existeix el mètode «%s» a la "
 "interfície «%s»\n"
 
-#: gio/gdbus-tool.c:593
+#: gio/gdbus-tool.c:594
 msgid "Optional destination for signal (unique name)"
 msgstr "Destinació opcional del senyal (nom únic)"
 
-#: gio/gdbus-tool.c:594
+#: gio/gdbus-tool.c:595
 msgid "Object path to emit signal on"
 msgstr "Camí a l'objecte al qual se li enviarà un senyal"
 
-#: gio/gdbus-tool.c:595
+#: gio/gdbus-tool.c:596
 msgid "Signal and interface name"
 msgstr "Senyal i nom d'interfície"
 
-#: gio/gdbus-tool.c:628
+#: gio/gdbus-tool.c:629
 msgid "Emit a signal."
 msgstr "Envia un senyal."
 
-#: gio/gdbus-tool.c:683 gio/gdbus-tool.c:997 gio/gdbus-tool.c:1827
-#: gio/gdbus-tool.c:2059 gio/gdbus-tool.c:2279
+#: gio/gdbus-tool.c:684 gio/gdbus-tool.c:1001 gio/gdbus-tool.c:1836
+#: gio/gdbus-tool.c:2068 gio/gdbus-tool.c:2288
 #, c-format
 msgid "Error connecting: %s\n"
 msgstr "S'ha produït un error en connectar-se: %s\n"
 
-#: gio/gdbus-tool.c:703
+#: gio/gdbus-tool.c:704
 #, c-format
 msgid "Error: %s is not a valid unique bus name.\n"
 msgstr "Error: %s no és un nom de bus únic vàlid.\n"
 
-#: gio/gdbus-tool.c:722 gio/gdbus-tool.c:1040 gio/gdbus-tool.c:1870
+#: gio/gdbus-tool.c:723 gio/gdbus-tool.c:1044 gio/gdbus-tool.c:1879
 msgid "Error: Object path is not specified\n"
 msgstr "Error: no s'ha especificat el camí a l'objecte\n"
 
-#: gio/gdbus-tool.c:765
+#: gio/gdbus-tool.c:766
 msgid "Error: Signal name is not specified\n"
 msgstr "Error: no s'ha especificat el nom del senyal\n"
 
-#: gio/gdbus-tool.c:779
+#: gio/gdbus-tool.c:780
 #, c-format
 msgid "Error: Signal name “%s” is invalid\n"
 msgstr "Error: el nom del senyal «%s» no és vàlid\n"
 
-#: gio/gdbus-tool.c:791
+#: gio/gdbus-tool.c:792
 #, c-format
 msgid "Error: %s is not a valid interface name\n"
 msgstr "Error: %s no és un nom d'interfície vàlid\n"
 
-#: gio/gdbus-tool.c:797
+#: gio/gdbus-tool.c:798
 #, c-format
 msgid "Error: %s is not a valid member name\n"
 msgstr "Error: %s no és un nom de membre vàlid\n"
 
 #. Use the original non-"parse-me-harder" error
-#: gio/gdbus-tool.c:834 gio/gdbus-tool.c:1172
+#: gio/gdbus-tool.c:835 gio/gdbus-tool.c:1176
 #, c-format
 msgid "Error parsing parameter %d: %s\n"
 msgstr "S'ha produït un error en analitzar el paràmetre %d: %s\n"
 
-#: gio/gdbus-tool.c:866
+#: gio/gdbus-tool.c:867
 #, c-format
 msgid "Error flushing connection: %s\n"
 msgstr "S'ha produït un error en buidar la connexió: %s\n"
 
-#: gio/gdbus-tool.c:893
+#: gio/gdbus-tool.c:895
 msgid "Destination name to invoke method on"
 msgstr "Nom de destinació on invocar el mètode"
 
-#: gio/gdbus-tool.c:894
+#: gio/gdbus-tool.c:896
 msgid "Object path to invoke method on"
 msgstr "Camí a l'objecte on invocar el mètode"
 
-#: gio/gdbus-tool.c:895
+#: gio/gdbus-tool.c:897
 msgid "Method and interface name"
 msgstr "Mètode i nom d'interfície"
 
-#: gio/gdbus-tool.c:896
+#: gio/gdbus-tool.c:898
 msgid "Timeout in seconds"
 msgstr "Temps d'espera, en segons"
 
-#: gio/gdbus-tool.c:942
+#: gio/gdbus-tool.c:899
+msgid "Allow interactive authorization"
+msgstr "Permet l'autorització interactiva"
+
+#: gio/gdbus-tool.c:946
 msgid "Invoke a method on a remote object."
 msgstr "Invoca un mètode en un objecte remot."
 
-#: gio/gdbus-tool.c:1014 gio/gdbus-tool.c:1844 gio/gdbus-tool.c:2084
+#: gio/gdbus-tool.c:1018 gio/gdbus-tool.c:1853 gio/gdbus-tool.c:2093
 msgid "Error: Destination is not specified\n"
 msgstr "Error: no s'ha especificat la destinació\n"
 
-#: gio/gdbus-tool.c:1025 gio/gdbus-tool.c:1861 gio/gdbus-tool.c:2095
+#: gio/gdbus-tool.c:1029 gio/gdbus-tool.c:1870 gio/gdbus-tool.c:2104
 #, c-format
 msgid "Error: %s is not a valid bus name\n"
 msgstr "Error: %s no és un nom de bus vàlid\n"
 
-#: gio/gdbus-tool.c:1075
+#: gio/gdbus-tool.c:1079
 msgid "Error: Method name is not specified\n"
 msgstr "Error: no s'ha especificat el nom del mètode\n"
 
-#: gio/gdbus-tool.c:1086
+#: gio/gdbus-tool.c:1090
 #, c-format
 msgid "Error: Method name “%s” is invalid\n"
 msgstr "Error: el nom del mètode «%s» no és vàlid\n"
 
-#: gio/gdbus-tool.c:1164
+#: gio/gdbus-tool.c:1168
 #, c-format
 msgid "Error parsing parameter %d of type “%s”: %s\n"
-msgstr ""
-"S'ha produït un error en analitzar el paràmetre %d del tipus «%s»: %s\n"
+msgstr "S'ha produït un error en analitzar el paràmetre %d del tipus «%s»: %s\n"
 
-#: gio/gdbus-tool.c:1190
+#: gio/gdbus-tool.c:1194
 #, c-format
 msgid "Error adding handle %d: %s\n"
 msgstr "S'ha produït un error en afegir el gestor %d: %s\n"
 
-#: gio/gdbus-tool.c:1686
+#: gio/gdbus-tool.c:1695
 msgid "Destination name to introspect"
 msgstr "Nom de destinació a examinar"
 
-#: gio/gdbus-tool.c:1687
+#: gio/gdbus-tool.c:1696
 msgid "Object path to introspect"
 msgstr "Camí a l'objecte a examinar"
 
-#: gio/gdbus-tool.c:1688
+#: gio/gdbus-tool.c:1697
 msgid "Print XML"
 msgstr "Imprimeix XML"
 
-#: gio/gdbus-tool.c:1689
+#: gio/gdbus-tool.c:1698
 msgid "Introspect children"
 msgstr "Examina el fill"
 
-#: gio/gdbus-tool.c:1690
+#: gio/gdbus-tool.c:1699
 msgid "Only print properties"
 msgstr "Només mostra les propietats"
 
-#: gio/gdbus-tool.c:1779
+#: gio/gdbus-tool.c:1788
 msgid "Introspect a remote object."
 msgstr "Examina un objecte remot."
 
-#: gio/gdbus-tool.c:1985
+#: gio/gdbus-tool.c:1994
 msgid "Destination name to monitor"
 msgstr "Nom de destinació al qual se li vol fer un seguiment"
 
-#: gio/gdbus-tool.c:1986
+#: gio/gdbus-tool.c:1995
 msgid "Object path to monitor"
 msgstr "Camí a l'objecte al qual se li vol fer un seguiment"
 
-#: gio/gdbus-tool.c:2011
+#: gio/gdbus-tool.c:2020
 msgid "Monitor a remote object."
 msgstr "Fes el seguiment a un objecte remot."
 
-#: gio/gdbus-tool.c:2069
+#: gio/gdbus-tool.c:2078
 msgid "Error: can’t monitor a non-message-bus connection\n"
 msgstr ""
 "Error: no es pot fer un seguiment d'una connexió que no sigui de missatges "
 "del bus\n"
 
-#: gio/gdbus-tool.c:2193
+#: gio/gdbus-tool.c:2202
 msgid "Service to activate before waiting for the other one (well-known name)"
 msgstr "Servei a activar abans d'esperar l'altre (nom conegut)"
 
-#: gio/gdbus-tool.c:2196
+#: gio/gdbus-tool.c:2205
 msgid ""
-"Timeout to wait for before exiting with an error (seconds); 0 for no timeout "
-"(default)"
+"Timeout to wait for before exiting with an error (seconds); 0 for no timeout"
+" (default)"
 msgstr ""
 "Temps d'espera abans de sortir amb un error (segons); 0 si no voleu temps "
 "d'espera (predeterminat)"
 
-#: gio/gdbus-tool.c:2244
+#: gio/gdbus-tool.c:2253
 msgid "[OPTION…] BUS-NAME"
 msgstr "[OPCIÓ...] NOM-DEL-BUS"
 
-#: gio/gdbus-tool.c:2245
+#: gio/gdbus-tool.c:2254
 msgid "Wait for a bus name to appear."
 msgstr "Espera que aparegui el nom del bus."
 
-#: gio/gdbus-tool.c:2321
+#: gio/gdbus-tool.c:2330
 msgid "Error: A service to activate for must be specified.\n"
 msgstr "Error: no s'ha especificat el servei a activar.\n"
 
-#: gio/gdbus-tool.c:2326
+#: gio/gdbus-tool.c:2335
 msgid "Error: A service to wait for must be specified.\n"
 msgstr "Error: no s'ha especificat el servei a esperar.\n"
 
-#: gio/gdbus-tool.c:2331
+#: gio/gdbus-tool.c:2340
 msgid "Error: Too many arguments.\n"
 msgstr "Error: massa arguments.\n"
 
-#: gio/gdbus-tool.c:2339 gio/gdbus-tool.c:2346
+#: gio/gdbus-tool.c:2348 gio/gdbus-tool.c:2355
 #, c-format
 msgid "Error: %s is not a valid well-known bus name.\n"
 msgstr "Error: %s no és un nom de bus conegut vàlid.\n"
 
-#: gio/gdesktopappinfo.c:2106 gio/gdesktopappinfo.c:4935
+#: gio/gdebugcontrollerdbus.c:358
+#, c-format
+msgid "Not authorized to change debug settings"
+msgstr "No esteu autoritzat a canviar la configuració de depuració"
+
+#: gio/gdesktopappinfo.c:2178 gio/gdesktopappinfo.c:5105
 msgid "Unnamed"
 msgstr "Sense nom"
 
-#: gio/gdesktopappinfo.c:2516
+#: gio/gdesktopappinfo.c:2588
 msgid "Desktop file didn’t specify Exec field"
 msgstr "El fitxer d'escriptori no especificava el camp d'execució"
 
-#: gio/gdesktopappinfo.c:2804
+#: gio/gdesktopappinfo.c:2896
 msgid "Unable to find terminal required for application"
 msgstr "No s'ha pogut trobar el terminal que demanava l'aplicació"
 
-#: gio/gdesktopappinfo.c:3455
+#: gio/gdesktopappinfo.c:3625
 #, c-format
 msgid "Can’t create user application configuration folder %s: %s"
 msgstr ""
 "No s'ha pogut crear el directori de configuració de l'aplicació de l'usuari "
 "%s: %s"
 
-#: gio/gdesktopappinfo.c:3459
+#: gio/gdesktopappinfo.c:3629
 #, c-format
 msgid "Can’t create user MIME configuration folder %s: %s"
 msgstr ""
 "No s'ha pogut crear el directori de configuració MIME de l'usuari %s: %s"
 
-#: gio/gdesktopappinfo.c:3701 gio/gdesktopappinfo.c:3725
+#: gio/gdesktopappinfo.c:3871 gio/gdesktopappinfo.c:3895
 msgid "Application information lacks an identifier"
 msgstr "A la informació d'aplicació li manca un identificador"
 
-#: gio/gdesktopappinfo.c:3961
+#: gio/gdesktopappinfo.c:4131
 #, c-format
 msgid "Can’t create user desktop file %s"
 msgstr "No s'ha pogut crear el fitxer d'escriptori de l'usuari %s"
 
-#: gio/gdesktopappinfo.c:4097
+#: gio/gdesktopappinfo.c:4267
 #, c-format
 msgid "Custom definition for %s"
 msgstr "Definició personalitzada per a %s"
@@ -1403,9 +1428,9 @@ msgstr "la unitat no implementa la inicialització"
 msgid "drive doesn’t implement stop"
 msgstr "la unitat no implementa l'aturada"
 
-#: gio/gdtlsconnection.c:1153 gio/gtlsconnection.c:920
+#: gio/gdtlsconnection.c:1186 gio/gtlsconnection.c:955
 msgid "TLS backend does not implement TLS binding retrieval"
-msgstr "El dorsal TLS no implementa la recuperació de la vinculació TLS"
+msgstr "El backend TLS no implementa la recuperació de la vinculació TLS"
 
 #: gio/gdummytlsbackend.c:195 gio/gdummytlsbackend.c:321
 #: gio/gdummytlsbackend.c:513
@@ -1447,76 +1472,76 @@ msgstr "S'esperava un GEmblem per a un GEmblemedIcon"
 #. Translators: This is an error message when
 #. * trying to find the enclosing (user visible)
 #. * mount of a file, but none exists.
-#.
-#: gio/gfile.c:1561
+#: gio/gfile.c:1579
 msgid "Containing mount does not exist"
 msgstr "No existeix el punt de muntatge contenidor"
 
-#: gio/gfile.c:2608 gio/glocalfile.c:2486
+#: gio/gfile.c:2626 gio/glocalfile.c:2486
 msgid "Can’t copy over directory"
 msgstr "No es pot copiar al directori"
 
-#: gio/gfile.c:2668
+#: gio/gfile.c:2686
 msgid "Can’t copy directory over directory"
 msgstr "No es pot copiar el directori al directori"
 
-#: gio/gfile.c:2676
+#: gio/gfile.c:2694
 msgid "Target file exists"
 msgstr "Ja existeix el fitxer de destinació"
 
-#: gio/gfile.c:2695
+#: gio/gfile.c:2713
 msgid "Can’t recursively copy directory"
 msgstr "No es pot copiar el directori de forma recursiva"
 
-#: gio/gfile.c:2996
+#: gio/gfile.c:3014
 msgid "Splice not supported"
 msgstr "No es pot empalmar"
 
-#: gio/gfile.c:3000
+#: gio/gfile.c:3018
 #, c-format
 msgid "Error splicing file: %s"
 msgstr "S'ha produït un error en empalmar el fitxer: %s"
 
-#: gio/gfile.c:3152
+#: gio/gfile.c:3170
 msgid "Copy (reflink/clone) between mounts is not supported"
 msgstr ""
 "No està implementada la còpia (referències, clonacions) entre muntatges"
 
-#: gio/gfile.c:3156
+#: gio/gfile.c:3174
 msgid "Copy (reflink/clone) is not supported or invalid"
-msgstr "No està implementada o no és vàlida la còpia (referències, clonacions)"
+msgstr ""
+"No està implementada o no és vàlida la còpia (referències, clonacions)"
 
-#: gio/gfile.c:3161
+#: gio/gfile.c:3179
 msgid "Copy (reflink/clone) is not supported or didn’t work"
 msgstr ""
 "No està implementada o no ha funcionat la còpia (referències, clonacions)"
 
-#: gio/gfile.c:3226
+#: gio/gfile.c:3244
 msgid "Can’t copy special file"
 msgstr "No es pot copiar el fitxer especial"
 
-#: gio/gfile.c:4035
+#: gio/gfile.c:4138
 msgid "Invalid symlink value given"
 msgstr "El valor donat per a l'enllaç simbòlic no és vàlid"
 
-#: gio/gfile.c:4045 glib/gfileutils.c:2333
+#: gio/gfile.c:4148 glib/gfileutils.c:2333
 msgid "Symbolic links not supported"
 msgstr "No es poden utilitzar els enllaços simbòlics"
 
-#: gio/gfile.c:4213
+#: gio/gfile.c:4316
 msgid "Trash not supported"
 msgstr "No es pot utilitzar la paperera"
 
-#: gio/gfile.c:4325
+#: gio/gfile.c:4428
 #, c-format
 msgid "File names cannot contain “%c”"
 msgstr "En els noms de fitxers no pot haver-hi «%c»"
 
-#: gio/gfile.c:6806 gio/gvolume.c:364
+#: gio/gfile.c:7028 gio/gvolume.c:364
 msgid "volume doesn’t implement mount"
 msgstr "el volum no implementa el muntatge"
 
-#: gio/gfile.c:6920 gio/gfile.c:6968
+#: gio/gfile.c:7142 gio/gfile.c:7190
 msgid "No application is registered as handling this file"
 msgstr ""
 "No hi ha cap aplicació que s'hagi registrat per a gestionar aquest fitxer"
@@ -1562,7 +1587,7 @@ msgstr "No es permet truncar en els fluxos d'entrada"
 msgid "Truncate not supported on stream"
 msgstr "No es permet truncar en els fluxos"
 
-#: gio/ghttpproxy.c:91 gio/gresolver.c:443 gio/gresolver.c:596
+#: gio/ghttpproxy.c:91 gio/gresolver.c:458 gio/gresolver.c:611
 #: glib/gconvert.c:1825
 msgid "Invalid hostname"
 msgstr "El nom de l'ordinador no és vàlid"
@@ -1650,7 +1675,7 @@ msgid "Could not parse “%s” as IP address mask"
 msgstr "No s'ha pogut analitzar «%s» com a màscara d'adreça IP"
 
 #: gio/ginetsocketaddress.c:203 gio/ginetsocketaddress.c:220
-#: gio/gnativesocketaddress.c:109 gio/gunixsocketaddress.c:221
+#: gio/gnativesocketaddress.c:109 gio/gunixsocketaddress.c:228
 msgid "Not enough space for socket address"
 msgstr "No hi ha prou espai per a l'adreça del sòcol"
 
@@ -1822,7 +1847,8 @@ msgstr "Conserva tots els atributs"
 #: gio/gio-tool-copy.c:47 gio/gio-tool-move.c:41 gio/gio-tool-save.c:49
 msgid "Backup existing destination files"
 msgstr ""
-"Crea una còpia de seguretat dels fitxers existents al directori de destinació"
+"Crea una còpia de seguretat dels fitxers existents al directori de "
+"destinació"
 
 #: gio/gio-tool-copy.c:48
 msgid "Never follow symbolic links"
@@ -1962,10 +1988,8 @@ msgid ""
 msgstr ""
 "gio info és similar a l'eina tradicional ls, però usant ubicacions GIO\n"
 "en comptes de fitxers locals: per exemple, podeu usar quelcom com ara\n"
-"smb://servidor/recurs/fitxer.txt com a ubicació. Els atributs de fitxer "
-"poden\n"
-"especificar-se amb el seu nom GIO. Per exemple, standard::icon o usant només "
-"el\n"
+"smb://servidor/recurs/fitxer.txt com a ubicació. Els atributs de fitxer poden\n"
+"especificar-se amb el seu nom GIO. Per exemple, standard::icon o usant només el\n"
 "nom d'espais, p. ex. unix, o usant «*», que coincideix amb tots els atributs"
 
 #. Translators: commandline placeholder
@@ -2033,8 +2057,7 @@ msgid ""
 msgstr ""
 "gio list és similar a l'eina tradicional ls, però usant ubicacions GIO\n"
 "en comptes de fitxers locals: per exemple, podeu usar quelcom com ara\n"
-"smb://servidor/recurs/fitxer.txt com a ubicació. Els atributs de fitxer "
-"poden\n"
+"smb://servidor/recurs/fitxer.txt com a ubicació. Els atributs de fitxer poden\n"
 "especificar-se amb el seu nom GIO. Per exemple, standard::icon"
 
 #. Translators: commandline placeholder
@@ -2099,7 +2122,8 @@ msgstr "No s'ha pogut carregar la informació del gestor «%s»"
 #, c-format
 msgid "Failed to set “%s” as the default handler for “%s”: %s\n"
 msgstr ""
-"S'ha produït un error en establir «%s» com a gestor per defecte de «%s»: %s\n"
+"S'ha produït un error en establir «%s» com a gestor per defecte de «%s»: "
+"%s\n"
 
 #: gio/gio-tool-mkdir.c:31
 msgid "Create parent directories"
@@ -2316,12 +2340,14 @@ msgstr "En crear un fitxer, limita'n l'accés a només l'usuari actual"
 msgid "When replacing, replace as if the destination did not exist"
 msgstr "Quan es reemplaci, fes com si el destí no existís"
 
-#. Translators: The "etag" is a token allowing to verify whether a file has been modified
+#. 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 "Mostra la nova etag al final"
 
-#. Translators: The "etag" is a token allowing to verify whether a file has been modified
+#. 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 "L'etag del fitxer que s'està sobreescrivint"
@@ -2334,7 +2360,8 @@ msgstr "ETAG"
 msgid "Error reading from standard input"
 msgstr "S'ha produït un error en llegir de l'entrada estàndard"
 
-#. Translators: The "etag" is a token allowing to verify whether a file has been modified
+#. Translators: The "etag" is a token allowing to verify whether a file has
+#. been modified
 #: gio/gio-tool-save.c:139
 msgid "Etag not available\n"
 msgstr "L'etag no està disponible\n"
@@ -2397,8 +2424,8 @@ msgid ""
 "Restore a file from trash to its original location (possibly recreating the "
 "directory)"
 msgstr ""
-"Restaura un fitxer de la paperera a la ubicació original (i torna a crear el "
-"directori si cal)"
+"Restaura un fitxer de la paperera a la ubicació original (i torna a crear el"
+" directori si cal)"
 
 #: gio/gio-tool-trash.c:106
 msgid "Unable to find original path"
@@ -2469,7 +2496,6 @@ msgstr "Es desconeix l'opció de processament «%s»"
 #. Translators: the first %s is a gresource XML attribute,
 #. * the second %s is an environment variable, and the third
 #. * %s is a command line tool
-#.
 #: gio/glib-compile-resources.c:310 gio/glib-compile-resources.c:367
 #: gio/glib-compile-resources.c:424
 #, c-format
@@ -2493,15 +2519,15 @@ msgstr "S'ha produït un error en comprimir el fitxer %s"
 msgid "text may not appear inside <%s>"
 msgstr "no pot haver-hi text dins de <%s>"
 
-#: gio/glib-compile-resources.c:737 gio/glib-compile-schemas.c:2172
+#: gio/glib-compile-resources.c:819 gio/glib-compile-schemas.c:2172
 msgid "Show program version and exit"
 msgstr "Mostra la versió del programa i surt"
 
-#: gio/glib-compile-resources.c:738
+#: gio/glib-compile-resources.c:820
 msgid "Name of the output file"
 msgstr "Nom del fitxer de sortida"
 
-#: gio/glib-compile-resources.c:739
+#: gio/glib-compile-resources.c:821
 msgid ""
 "The directories to load files referenced in FILE from (default: current "
 "directory)"
@@ -2509,49 +2535,49 @@ msgstr ""
 "Els directoris des d'on s'han de llegir els fitxers (per defecte és el "
 "directori actual)"
 
-#: gio/glib-compile-resources.c:739 gio/glib-compile-schemas.c:2173
+#: gio/glib-compile-resources.c:821 gio/glib-compile-schemas.c:2173
 #: gio/glib-compile-schemas.c:2202
 msgid "DIRECTORY"
 msgstr "DIRECTORI"
 
-#: gio/glib-compile-resources.c:740
+#: gio/glib-compile-resources.c:822
 msgid ""
 "Generate output in the format selected for by the target filename extension"
 msgstr ""
 "Genera la sortida en el format seleccionat per l'extensió del nom de fitxer "
 "de destinació"
 
-#: gio/glib-compile-resources.c:741
+#: gio/glib-compile-resources.c:823
 msgid "Generate source header"
 msgstr "Genera la capçalera del codi"
 
-#: gio/glib-compile-resources.c:742
+#: gio/glib-compile-resources.c:824
 msgid "Generate source code used to link in the resource file into your code"
 msgstr ""
 "Genera el codi font que es fa servir per a enllaçar el fitxer de recurs amb "
 "el codi"
 
-#: gio/glib-compile-resources.c:743
+#: gio/glib-compile-resources.c:825
 msgid "Generate dependency list"
 msgstr "Genera una llista de dependències"
 
-#: gio/glib-compile-resources.c:744
+#: gio/glib-compile-resources.c:826
 msgid "Name of the dependency file to generate"
 msgstr "Nom del fitxer de dependència a generar"
 
-#: gio/glib-compile-resources.c:745
+#: gio/glib-compile-resources.c:827
 msgid "Include phony targets in the generated dependency file"
 msgstr "Inclou destinacions falses en el fitxer de dependències generat"
 
-#: gio/glib-compile-resources.c:746
+#: gio/glib-compile-resources.c:828
 msgid "Don’t automatically create and register resource"
 msgstr "No creïs ni registris automàticament els recursos"
 
-#: gio/glib-compile-resources.c:747
+#: gio/glib-compile-resources.c:829
 msgid "Don’t export functions; declare them G_GNUC_INTERNAL"
 msgstr "No exportis les funcions, declara-les com a «G_GNUC_INTERNAL»"
 
-#: gio/glib-compile-resources.c:748
+#: gio/glib-compile-resources.c:830
 msgid ""
 "Don’t embed resource data in the C file; assume it's linked externally "
 "instead"
@@ -2559,12 +2585,16 @@ msgstr ""
 "No incrusteu recursos de dades a un fitxer C; en comptes assumiu que està "
 "enllaçat externament"
 
-#: gio/glib-compile-resources.c:749
+#: gio/glib-compile-resources.c:831
 msgid "C identifier name used for the generated source code"
 msgstr ""
 "El nom de l'identificador de C que s'utilitzarà en el codi font generat"
 
-#: gio/glib-compile-resources.c:775
+#: gio/glib-compile-resources.c:832
+msgid "The target C compiler (default: the CC environment variable)"
+msgstr "El compilador C de destinació (per defecte: la variable d'entorn CC)"
+
+#: gio/glib-compile-resources.c:858
 msgid ""
 "Compile a resource specification into a resource file.\n"
 "Resource specification files have the extension .gresource.xml,\n"
@@ -2574,7 +2604,7 @@ msgstr ""
 "Els fitxers d'especificació de recursos tenen l'extensió .gresource.xml\n"
 "i els fitxers de recursos tenen l'extensió .gresource."
 
-#: gio/glib-compile-resources.c:797
+#: gio/glib-compile-resources.c:880
 msgid "You should give exactly one file name\n"
 msgstr "Heu de donar un sol nom de fitxer\n"
 
@@ -2757,7 +2787,8 @@ msgstr ""
 #: gio/glib-compile-schemas.c:828
 #, c-format
 msgid "Invalid name “%s”: two successive hyphens (“--”) are not permitted"
-msgstr "El nom «%s» no és vàlid: no es poden posar dos guionets seguits («--»)"
+msgstr ""
+"El nom «%s» no és vàlid: no es poden posar dos guionets seguits («--»)"
 
 #: gio/glib-compile-schemas.c:837
 #, c-format
@@ -2855,14 +2886,14 @@ msgstr "No es pot ampliar un esquema amb un camí"
 msgid ""
 "<schema id='%s'> is a list, extending <schema id='%s'> which is not a list"
 msgstr ""
-"El <schema id='%s'> és una llista i amplia el <schema id='%s'> que no és una "
-"llista"
+"El <schema id='%s'> és una llista i amplia el <schema id='%s'> que no és una"
+" llista"
 
 #: gio/glib-compile-schemas.c:1207
 #, 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 ""
 "El <schema id='%s' list-of='%s'> amplia el <schema id='%s' list-of='%s'> "
 "però «%s» no amplia «%s»"
@@ -2880,11 +2911,11 @@ msgstr "El camí d'una llista ha d'acabar amb «:/»"
 #: gio/glib-compile-schemas.c:1240
 #, c-format
 msgid ""
-"Warning: Schema “%s” has path “%s”.  Paths starting with “/apps/”, “/"
-"desktop/” or “/system/” are deprecated."
+"Warning: Schema “%s” has path “%s”.  Paths starting with “/apps/”, "
+"“/desktop/” or “/system/” are deprecated."
 msgstr ""
-"Avís: l'esquema «%s» conté el camí «%s». Els camins que comencen amb «/"
-"apps/», «/desktop/» o «/system/» estan obsolets."
+"Avís: l'esquema «%s» conté el camí «%s». Els camins que comencen amb "
+"«/apps/», «/desktop/» o «/system/» estan obsolets."
 
 #: gio/glib-compile-schemas.c:1270
 #, c-format
@@ -2931,8 +2962,8 @@ msgstr "S'està ignorant aquest fitxer."
 #: gio/glib-compile-schemas.c:1963
 #, c-format
 msgid ""
-"No such key “%s” in schema “%s” as specified in override file “%s”; ignoring "
-"override for this key."
+"No such key “%s” in schema “%s” as specified in override file “%s”; ignoring"
+" override for this key."
 msgstr ""
 "No existeix la clau «%s» en l'esquema «%s» tal com especifica el fitxer de "
 "sobreescriptura «%s»; s'ignora la sobreescriptura d'aquesta clau."
@@ -2941,8 +2972,8 @@ msgstr ""
 #: gio/glib-compile-schemas.c:1971
 #, c-format
 msgid ""
-"No such key “%s” in schema “%s” as specified in override file “%s” and --"
-"strict was specified; exiting."
+"No such key “%s” in schema “%s” as specified in override file “%s” and "
+"--strict was specified; exiting."
 msgstr ""
 "No existeix la clau «%s» en l'esquema «%s» tal com especifica el fitxer de "
 "sobreescriptura «%s» i s'ha especificat --strict; se surt."
@@ -2950,22 +2981,22 @@ msgstr ""
 #: gio/glib-compile-schemas.c:1993
 #, c-format
 msgid ""
-"Cannot provide per-desktop overrides for localized key “%s” in schema "
-"“%s” (override file “%s”); ignoring override for this key."
+"Cannot provide per-desktop overrides for localized key “%s” in schema “%s” "
+"(override file “%s”); ignoring override for this key."
 msgstr ""
-"No es pot proveir la sobreescriptura per escriptori de la clau traduïda «%s» "
-"a l'esquema «%s» (fitxer de sobreescriptura «%s»); s'ignora la "
+"No es pot proveir la sobreescriptura per escriptori de la clau traduïda «%s»"
+" a l'esquema «%s» (fitxer de sobreescriptura «%s»); s'ignora la "
 "sobreescriptura d'aquesta clau."
 
 #: gio/glib-compile-schemas.c:2002
 #, c-format
 msgid ""
-"Cannot provide per-desktop overrides for localized key “%s” in schema "
-"“%s” (override file “%s”) and --strict was specified; exiting."
+"Cannot provide per-desktop overrides for localized key “%s” in schema “%s” "
+"(override file “%s”) and --strict was specified; exiting."
 msgstr ""
-"No es pot proveir la sobreescriptura per escriptori de la clau traduïda «%s» "
-"a l'esquema «%s» (fitxer de sobreescriptura «%s») i s'ha especificat --"
-"strict; se surt."
+"No es pot proveir la sobreescriptura per escriptori de la clau traduïda «%s»"
+" a l'esquema «%s» (fitxer de sobreescriptura «%s») i s'ha especificat "
+"--strict; se surt."
 
 #: gio/glib-compile-schemas.c:2026
 #, c-format
@@ -2984,8 +3015,8 @@ msgid ""
 "%s. --strict was specified; exiting."
 msgstr ""
 "S'ha produït un error en analitzar la clau «%s» en l'esquema «%s» tal com "
-"especifica el fitxer de sobreescriptura «%s»: %s. S'ha especificat --strict; "
-"se surt."
+"especifica el fitxer de sobreescriptura «%s»: %s. S'ha especificat --strict;"
+" se surt."
 
 #: gio/glib-compile-schemas.c:2065
 #, c-format
@@ -3024,8 +3055,8 @@ msgid ""
 "list of valid choices and --strict was specified; exiting."
 msgstr ""
 "La sobreescriptura de la clau «%s» de l'esquema «%s» en el fitxer de "
-"sobreescriptura «%s» no és a la llista de valors vàlids i s'ha especificat --"
-"strict; se surt."
+"sobreescriptura «%s» no és a la llista de valors vàlids i s'ha especificat "
+"--strict; se surt."
 
 #: gio/glib-compile-schemas.c:2173
 msgid "Where to store the gschemas.compiled file"
@@ -3081,7 +3112,6 @@ msgstr ""
 #. Translators: This is an error message when trying to find
 #. * the enclosing (user visible) mount of a file, but none
 #. * exists.
-#.
 #: gio/glocalfile.c:1123
 #, c-format
 msgid "Containing mount for file %s not found"
@@ -3391,13 +3421,13 @@ msgstr "S'ha produït un error en crear la còpia de seguretat: %s"
 msgid "Error renaming temporary file: %s"
 msgstr "S'ha produït un error en canviar el nom del fitxer temporal: %s"
 
-#: gio/glocalfileoutputstream.c:609 gio/glocalfileoutputstream.c:1237
+#: gio/glocalfileoutputstream.c:609 gio/glocalfileoutputstream.c:1239
 #, c-format
 msgid "Error truncating file: %s"
 msgstr "S'ha produït un error en truncar el fitxer: %s"
 
 #: gio/glocalfileoutputstream.c:662 gio/glocalfileoutputstream.c:907
-#: gio/glocalfileoutputstream.c:1218 gio/gsubprocess.c:226
+#: gio/glocalfileoutputstream.c:1220 gio/gsubprocess.c:229
 #, c-format
 msgid "Error opening file “%s”: %s"
 msgstr "S'ha produït un error en obrir el fitxer «%s»: %s"
@@ -3419,7 +3449,7 @@ msgstr "El fitxer ha estat modificat des d'alguna aplicació externa"
 msgid "Error removing old file: %s"
 msgstr "S'ha produït un error en suprimir el fitxer vell: %s"
 
-#: gio/gmemoryinputstream.c:474 gio/gmemoryoutputstream.c:772
+#: gio/gmemoryinputstream.c:474 gio/gmemoryoutputstream.c:762
 msgid "Invalid GSeekType supplied"
 msgstr "El GSeekType proporcionat no és vàlid"
 
@@ -3431,15 +3461,15 @@ msgstr "La sol·licitud de cerca és no vàlida"
 msgid "Cannot truncate GMemoryInputStream"
 msgstr "No es pot truncar el GMemoryInputStream"
 
-#: gio/gmemoryoutputstream.c:567
+#: gio/gmemoryoutputstream.c:568
 msgid "Memory output stream not resizable"
 msgstr "El flux de sortida de memòria no és modificable"
 
-#: gio/gmemoryoutputstream.c:583
+#: gio/gmemoryoutputstream.c:584
 msgid "Failed to resize memory output stream"
 msgstr "Ha fallat el redimensionament de la memòria del flux de sortida"
 
-#: gio/gmemoryoutputstream.c:673
+#: gio/gmemoryoutputstream.c:663
 msgid ""
 "Amount of memory required to process the write is larger than available "
 "address space"
@@ -3447,11 +3477,11 @@ msgstr ""
 "La quantitat de memòria necessària per a processar l'escriptura és més gran "
 "que l'espai d'adreces disponible"
 
-#: gio/gmemoryoutputstream.c:782
+#: gio/gmemoryoutputstream.c:772
 msgid "Requested seek before the beginning of the stream"
 msgstr "S'ha sol·licitat un desplaçament abans de l'inici del flux"
 
-#: gio/gmemoryoutputstream.c:797
+#: gio/gmemoryoutputstream.c:787
 msgid "Requested seek beyond the end of the stream"
 msgstr "S'ha sol·licitat un desplaçament més enllà del final del flux"
 
@@ -3557,18 +3587,22 @@ msgstr "La suma de vectors donada a %s és massa gran"
 msgid "Source stream is already closed"
 msgstr "El flux font ja està tancat"
 
-#: gio/gresolver.c:386 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
+#. Translators: the first placeholder is a domain name, the
+#. * second is an error message
+#: gio/gresolver.c:401 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
+#: gio/gthreadedresolver.c:780 gio/gthreadedresolver.c:804
+#: gio/gthreadedresolver.c:829 gio/gthreadedresolver.c:844
 #, c-format
 msgid "Error resolving “%s”: %s"
 msgstr "S'ha produït un error en resoldre «%s»: %s"
 
 #. Translators: The placeholder is for a function name.
-#: gio/gresolver.c:455 gio/gresolver.c:615
+#: gio/gresolver.c:470 gio/gresolver.c:630
 #, c-format
 msgid "%s not implemented"
 msgstr "no s'ha implementat %s"
 
-#: gio/gresolver.c:984 gio/gresolver.c:1036
+#: gio/gresolver.c:999 gio/gresolver.c:1051
 msgid "Invalid domain"
 msgstr "El domini no és vàlid"
 
@@ -3683,7 +3717,7 @@ msgstr ""
 msgid "  SECTION   An (optional) elf section name\n"
 msgstr "  SECCIÓ   El nom (opcional) d'una secció elf\n"
 
-#: gio/gresource-tool.c:565 gio/gsettings-tool.c:706
+#: gio/gresource-tool.c:565 gio/gsettings-tool.c:718
 msgid "  COMMAND   The (optional) command to explain\n"
 msgstr "  ORDRE     L'ordre (opcional) que s'explicarà\n"
 
@@ -3716,7 +3750,7 @@ msgstr "CAMÍ"
 msgid "  PATH      A resource path\n"
 msgstr "  CAMÍ      Un camí de recurs\n"
 
-#: gio/gsettings-tool.c:49 gio/gsettings-tool.c:70 gio/gsettings-tool.c:911
+#: gio/gsettings-tool.c:49 gio/gsettings-tool.c:70 gio/gsettings-tool.c:923
 #, c-format
 msgid "No such schema “%s”\n"
 msgstr "No existeix l'esquema «%s»\n"
@@ -3748,35 +3782,35 @@ msgstr "El camí ha d'acabar amb una barra inclinada (/)\n"
 msgid "Path must not contain two adjacent slashes (//)\n"
 msgstr "El camí no pot contenir dues barres inclinades seguides (//)\n"
 
-#: gio/gsettings-tool.c:541
+#: gio/gsettings-tool.c:553
 msgid "The provided value is outside of the valid range\n"
 msgstr "El valor proporcionat està fora del rang vàlid\n"
 
-#: gio/gsettings-tool.c:548
+#: gio/gsettings-tool.c:560
 msgid "The key is not writable\n"
 msgstr "La clau no és d'escriptura\n"
 
-#: gio/gsettings-tool.c:584
+#: gio/gsettings-tool.c:596
 msgid "List the installed (non-relocatable) schemas"
 msgstr "Llista els esquemes instal·lats (que no es poden canviar de lloc)"
 
-#: gio/gsettings-tool.c:590
+#: gio/gsettings-tool.c:602
 msgid "List the installed relocatable schemas"
 msgstr "Llista els esquemes instal·lats que es poden canviar de lloc"
 
-#: gio/gsettings-tool.c:596
+#: gio/gsettings-tool.c:608
 msgid "List the keys in SCHEMA"
 msgstr "Llista les claus a l'ESQUEMA"
 
-#: gio/gsettings-tool.c:597 gio/gsettings-tool.c:603 gio/gsettings-tool.c:646
+#: gio/gsettings-tool.c:609 gio/gsettings-tool.c:615 gio/gsettings-tool.c:658
 msgid "SCHEMA[:PATH]"
 msgstr "ESQUEMA[:CAMÍ]"
 
-#: gio/gsettings-tool.c:602
+#: gio/gsettings-tool.c:614
 msgid "List the children of SCHEMA"
 msgstr "Llista els fills de l'ESQUEMA"
 
-#: gio/gsettings-tool.c:608
+#: gio/gsettings-tool.c:620
 msgid ""
 "List keys and values, recursively\n"
 "If no SCHEMA is given, list all keys\n"
@@ -3784,48 +3818,48 @@ msgstr ""
 "Llista les claus i els valors recursivament\n"
 "Si no es passa cap ESQUEMA, es llista totes les claus\n"
 
-#: gio/gsettings-tool.c:610
+#: gio/gsettings-tool.c:622
 msgid "[SCHEMA[:PATH]]"
 msgstr "[ESQUEMA[:CAMÍ]]"
 
-#: gio/gsettings-tool.c:615
+#: gio/gsettings-tool.c:627
 msgid "Get the value of KEY"
 msgstr "Obtén el valor de la CLAU"
 
-#: gio/gsettings-tool.c:616 gio/gsettings-tool.c:622 gio/gsettings-tool.c:628
-#: gio/gsettings-tool.c:640 gio/gsettings-tool.c:652
+#: gio/gsettings-tool.c:628 gio/gsettings-tool.c:634 gio/gsettings-tool.c:640
+#: gio/gsettings-tool.c:652 gio/gsettings-tool.c:664
 msgid "SCHEMA[:PATH] KEY"
 msgstr "ESQUEMA[:CAMÍ] CLAU"
 
-#: gio/gsettings-tool.c:621
+#: gio/gsettings-tool.c:633
 msgid "Query the range of valid values for KEY"
 msgstr "Consulta el rang de valors vàlids per a la CLAU"
 
-#: gio/gsettings-tool.c:627
+#: gio/gsettings-tool.c:639
 msgid "Query the description for KEY"
 msgstr "Consulta la descripció per a la CLAU"
 
-#: gio/gsettings-tool.c:633
+#: gio/gsettings-tool.c:645
 msgid "Set the value of KEY to VALUE"
 msgstr "Estableix el valor de la CLAU a VALOR"
 
-#: gio/gsettings-tool.c:634
+#: gio/gsettings-tool.c:646
 msgid "SCHEMA[:PATH] KEY VALUE"
 msgstr "ESQUEMA[:CAMÍ] CLAU VALOR"
 
-#: gio/gsettings-tool.c:639
+#: gio/gsettings-tool.c:651
 msgid "Reset KEY to its default value"
 msgstr "Reinicia la CLAU al seu valor predeterminat"
 
-#: gio/gsettings-tool.c:645
+#: gio/gsettings-tool.c:657
 msgid "Reset all keys in SCHEMA to their defaults"
 msgstr "Reinicia totes les claus de l'ESQUEMA als seus valors per defecte"
 
-#: gio/gsettings-tool.c:651
+#: gio/gsettings-tool.c:663
 msgid "Check if KEY is writable"
 msgstr "Comprova si la CLAU és d'escriptura"
 
-#: gio/gsettings-tool.c:657
+#: gio/gsettings-tool.c:669
 msgid ""
 "Monitor KEY for changes.\n"
 "If no KEY is specified, monitor all keys in SCHEMA.\n"
@@ -3836,11 +3870,11 @@ msgstr ""
 "totes les claus de l'ESQUEMA.\n"
 "Utilitzeu ^C per a deixar de fer el seguiment.\n"
 
-#: gio/gsettings-tool.c:660
+#: gio/gsettings-tool.c:672
 msgid "SCHEMA[:PATH] [KEY]"
 msgstr "ESQUEMA[:CAMÍ] [CLAU]"
 
-#: gio/gsettings-tool.c:672
+#: gio/gsettings-tool.c:684
 msgid ""
 "Usage:\n"
 "  gsettings --version\n"
@@ -3872,8 +3906,7 @@ msgstr ""
 "Ordres:\n"
 "  help                      Mostra aquesta informació\n"
 "  list-schemas              Llista els esquemes instal·lats\n"
-"  list-relocatable-schemas  Llista els esquemes que es poden canviar de "
-"lloc\n"
+"  list-relocatable-schemas  Llista els esquemes que es poden canviar de lloc\n"
 "  list-keys                 Llista les claus d'un esquema\n"
 "  list-children             Llista els fills d'un esquema\n"
 "  list-recursively          Llista les claus i els valors recursivament\n"
@@ -3888,7 +3921,7 @@ msgstr ""
 "Utilitzeu «gsettings help ORDRE» per a veure l'ajuda més detallada.\n"
 "\n"
 
-#: gio/gsettings-tool.c:696
+#: gio/gsettings-tool.c:708
 #, c-format
 msgid ""
 "Usage:\n"
@@ -3903,12 +3936,11 @@ msgstr ""
 "%s\n"
 "\n"
 
-#: gio/gsettings-tool.c:702
+#: gio/gsettings-tool.c:714
 msgid "  SCHEMADIR A directory to search for additional schemas\n"
-msgstr ""
-"  DIRECTORI_D'ESQUEMES Un directori on cercar-hi esquemes addicionals\n"
+msgstr "  DIRECTORI_D'ESQUEMES Un directori on cercar-hi esquemes addicionals\n"
 
-#: gio/gsettings-tool.c:710
+#: gio/gsettings-tool.c:722
 msgid ""
 "  SCHEMA    The name of the schema\n"
 "  PATH      The path, for relocatable schemas\n"
@@ -3916,217 +3948,217 @@ msgstr ""
 "  ESQUEMA   El nom de l'esquema\n"
 "  CAMÍ      El camí, pels esquemes que es poden canviar de lloc\n"
 
-#: gio/gsettings-tool.c:715
+#: gio/gsettings-tool.c:727
 msgid "  KEY       The (optional) key within the schema\n"
 msgstr "  CLAU      La clau (opcional) de l'esquema\n"
 
-#: gio/gsettings-tool.c:719
+#: gio/gsettings-tool.c:731
 msgid "  KEY       The key within the schema\n"
 msgstr "  CLAU      La clau de l'esquema\n"
 
-#: gio/gsettings-tool.c:723
+#: gio/gsettings-tool.c:735
 msgid "  VALUE     The value to set\n"
 msgstr "  VALOR     El valor a establir\n"
 
-#: gio/gsettings-tool.c:778
+#: gio/gsettings-tool.c:790
 #, c-format
 msgid "Could not load schemas from %s: %s\n"
 msgstr "No s'han pogut carregar els esquemes %s: %s\n"
 
-#: gio/gsettings-tool.c:790
+#: gio/gsettings-tool.c:802
 msgid "No schemas installed\n"
 msgstr "No hi ha cap esquema instal·lat\n"
 
-#: gio/gsettings-tool.c:869
+#: gio/gsettings-tool.c:881
 msgid "Empty schema name given\n"
 msgstr "S'ha donat un nom d'esquema buit\n"
 
-#: gio/gsettings-tool.c:924
+#: gio/gsettings-tool.c:936
 #, c-format
 msgid "No such key “%s”\n"
 msgstr "No existeix la clau «%s»\n"
 
-#: gio/gsocket.c:413
+#: gio/gsocket.c:417
 msgid "Invalid socket, not initialized"
 msgstr "El sòcol no és vàlid, no està inicialitzat"
 
-#: gio/gsocket.c:420
+#: gio/gsocket.c:424
 #, c-format
 msgid "Invalid socket, initialization failed due to: %s"
 msgstr "El sòcol no és vàlid, ha fallat la inicialització a causa de: %s"
 
-#: gio/gsocket.c:428
+#: gio/gsocket.c:432
 msgid "Socket is already closed"
 msgstr "El sòcol ja és tancat"
 
-#: gio/gsocket.c:443 gio/gsocket.c:3190 gio/gsocket.c:4420 gio/gsocket.c:4478
+#: gio/gsocket.c:447 gio/gsocket.c:3194 gio/gsocket.c:4427 gio/gsocket.c:4485
 msgid "Socket I/O timed out"
 msgstr "S'ha excedit el temps d'espera d'entrada/sortida del sòcol"
 
-#: gio/gsocket.c:578
+#: gio/gsocket.c:582
 #, c-format
 msgid "creating GSocket from fd: %s"
 msgstr "s'està creant un GSocket a partir del descriptor de fitxer: %s"
 
-#: gio/gsocket.c:607 gio/gsocket.c:671 gio/gsocket.c:678
+#: gio/gsocket.c:611 gio/gsocket.c:675 gio/gsocket.c:682
 #, c-format
 msgid "Unable to create socket: %s"
 msgstr "No s'ha pogut crear el sòcol: %s"
 
-#: gio/gsocket.c:671
+#: gio/gsocket.c:675
 msgid "Unknown family was specified"
 msgstr "S'ha especificat una família desconeguda"
 
-#: gio/gsocket.c:678
+#: gio/gsocket.c:682
 msgid "Unknown protocol was specified"
 msgstr "S'ha especificat un protocol desconegut"
 
-#: gio/gsocket.c:1169
+#: gio/gsocket.c:1173
 #, c-format
 msgid "Cannot use datagram operations on a non-datagram socket."
 msgstr ""
 "No es poden realitzar operacions de datagrames a un sòcol que no és de "
 "datagrama."
 
-#: gio/gsocket.c:1186
+#: gio/gsocket.c:1190
 #, c-format
 msgid "Cannot use datagram operations on a socket with a timeout set."
 msgstr ""
 "No es poden realitzar operacions de datagrames a un sòcol que tingui un "
 "temps d'espera màxim establert."
 
-#: gio/gsocket.c:1993
+#: gio/gsocket.c:1997
 #, c-format
 msgid "could not get local address: %s"
 msgstr "no s'ha pogut obtenir l'adreça local: %s"
 
-#: gio/gsocket.c:2039
+#: gio/gsocket.c:2043
 #, c-format
 msgid "could not get remote address: %s"
 msgstr "no s'ha pogut obtenir l'adreça remota: %s"
 
-#: gio/gsocket.c:2105
+#: gio/gsocket.c:2109
 #, c-format
 msgid "could not listen: %s"
 msgstr "no s'ha pogut escoltar: %s"
 
-#: gio/gsocket.c:2209
+#: gio/gsocket.c:2213
 #, c-format
 msgid "Error binding to address %s: %s"
 msgstr "S'ha produït un error en vincular-se a l'adreça %s: %s"
 
-#: gio/gsocket.c:2385 gio/gsocket.c:2422 gio/gsocket.c:2532 gio/gsocket.c:2557
-#: gio/gsocket.c:2620 gio/gsocket.c:2678 gio/gsocket.c:2696
+#: gio/gsocket.c:2389 gio/gsocket.c:2426 gio/gsocket.c:2536 gio/gsocket.c:2561
+#: gio/gsocket.c:2624 gio/gsocket.c:2682 gio/gsocket.c:2700
 #, c-format
 msgid "Error joining multicast group: %s"
 msgstr "S'ha produït un error en unir-se a un grup de multidestinació: %s"
 
-#: gio/gsocket.c:2386 gio/gsocket.c:2423 gio/gsocket.c:2533 gio/gsocket.c:2558
-#: gio/gsocket.c:2621 gio/gsocket.c:2679 gio/gsocket.c:2697
+#: gio/gsocket.c:2390 gio/gsocket.c:2427 gio/gsocket.c:2537 gio/gsocket.c:2562
+#: gio/gsocket.c:2625 gio/gsocket.c:2683 gio/gsocket.c:2701
 #, c-format
 msgid "Error leaving multicast group: %s"
 msgstr "S'ha produït un error en deixar un grup de multidestinació: %s"
 
-#: gio/gsocket.c:2387
+#: gio/gsocket.c:2391
 msgid "No support for source-specific multicast"
 msgstr "Encara no es pot fer multidestinació des d'un origen concret"
 
-#: gio/gsocket.c:2534
+#: gio/gsocket.c:2538
 msgid "Unsupported socket family"
 msgstr "La família del sòcol no és compatible"
 
-#: gio/gsocket.c:2559
+#: gio/gsocket.c:2563
 msgid "source-specific not an IPv4 address"
 msgstr "la font especificada no és una adreça IPv4"
 
-#: gio/gsocket.c:2583
+#: gio/gsocket.c:2587
 #, c-format
 msgid "Interface name too long"
 msgstr "El nom de la interfície és massa llarg"
 
-#: gio/gsocket.c:2596 gio/gsocket.c:2646
+#: gio/gsocket.c:2600 gio/gsocket.c:2650
 #, c-format
 msgid "Interface not found: %s"
 msgstr "No s'ha trobat la interfície: %s"
 
-#: gio/gsocket.c:2622
+#: gio/gsocket.c:2626
 msgid "No support for IPv4 source-specific multicast"
 msgstr "Encara no es pot fer multidestinació en IPv4 des d'un origen concret"
 
-#: gio/gsocket.c:2680
+#: gio/gsocket.c:2684
 msgid "No support for IPv6 source-specific multicast"
 msgstr "Encara no es pot fer multidestinació en IPv6 des d'un origen concret"
 
-#: gio/gsocket.c:2889
+#: gio/gsocket.c:2893
 #, c-format
 msgid "Error accepting connection: %s"
 msgstr "S'ha produït un error en acceptar la connexió: %s"
 
-#: gio/gsocket.c:3015
+#: gio/gsocket.c:3019
 msgid "Connection in progress"
 msgstr "Connexió en curs"
 
-#: gio/gsocket.c:3066
+#: gio/gsocket.c:3070
 msgid "Unable to get pending error: "
 msgstr "No s'ha pogut obtenir l'error pendent: "
 
-#: gio/gsocket.c:3255
+#: gio/gsocket.c:3259
 #, c-format
 msgid "Error receiving data: %s"
 msgstr "S'ha produït un error en rebre les dades: %s"
 
-#: gio/gsocket.c:3452
+#: gio/gsocket.c:3456
 #, c-format
 msgid "Error sending data: %s"
 msgstr "S'ha produït un error en enviar les dades: %s"
 
-#: gio/gsocket.c:3639
+#: gio/gsocket.c:3643
 #, c-format
 msgid "Unable to shutdown socket: %s"
 msgstr "No s'ha pogut aturar el sòcol: %s"
 
-#: gio/gsocket.c:3720
+#: gio/gsocket.c:3724
 #, c-format
 msgid "Error closing socket: %s"
 msgstr "S'ha produït un error en tancar el sòcol: %s"
 
-#: gio/gsocket.c:4413
+#: gio/gsocket.c:4420
 #, c-format
 msgid "Waiting for socket condition: %s"
 msgstr "S'està esperant la condició del sòcol: %s"
 
-#: gio/gsocket.c:4804 gio/gsocket.c:4820 gio/gsocket.c:4833
+#: gio/gsocket.c:4810 gio/gsocket.c:4826 gio/gsocket.c:4839
 #, c-format
 msgid "Unable to send message: %s"
 msgstr "S'ha produït un error en enviar el missatge: %s"
 
-#: gio/gsocket.c:4805 gio/gsocket.c:4821 gio/gsocket.c:4834
+#: gio/gsocket.c:4811 gio/gsocket.c:4827 gio/gsocket.c:4840
 msgid "Message vectors too large"
 msgstr "Els vectors del missatge són massa grans"
 
-#: gio/gsocket.c:4850 gio/gsocket.c:4852 gio/gsocket.c:4999 gio/gsocket.c:5084
-#: gio/gsocket.c:5262 gio/gsocket.c:5302 gio/gsocket.c:5304
+#: gio/gsocket.c:4856 gio/gsocket.c:4858 gio/gsocket.c:5005 gio/gsocket.c:5090
+#: gio/gsocket.c:5268 gio/gsocket.c:5308 gio/gsocket.c:5310
 #, c-format
 msgid "Error sending message: %s"
 msgstr "S'ha produït un error en enviar el missatge: %s"
 
-#: gio/gsocket.c:5026
+#: gio/gsocket.c:5032
 msgid "GSocketControlMessage not supported on Windows"
 msgstr "El GSocketControlMessage no està implementat a Windows"
 
-#: gio/gsocket.c:5495 gio/gsocket.c:5571 gio/gsocket.c:5797
+#: gio/gsocket.c:5505 gio/gsocket.c:5581 gio/gsocket.c:5807
 #, c-format
 msgid "Error receiving message: %s"
 msgstr "S'ha produït un error en rebre un missatge: %s"
 
-#: gio/gsocket.c:6070 gio/gsocket.c:6081 gio/gsocket.c:6127
+#: gio/gsocket.c:6090 gio/gsocket.c:6101 gio/gsocket.c:6164
 #, c-format
 msgid "Unable to read socket credentials: %s"
 msgstr "No s'han pogut llegir les credencials del sòcol: %s"
 
-#: gio/gsocket.c:6136
+#: gio/gsocket.c:6173
 msgid "g_socket_get_credentials not implemented for this OS"
-msgstr "Aquest sistema operatiu no admet g_socket_get_credentials"
+msgstr "aquest sistema operatiu no admet g_socket_get_credentials"
 
 #: gio/gsocketclient.c:191
 #, c-format
@@ -4142,13 +4174,13 @@ msgstr "No s'ha pogut connectar a %s: "
 msgid "Could not connect: "
 msgstr "No s'ha pogut connectar: "
 
-#: gio/gsocketclient.c:1162 gio/gsocketclient.c:1749
+#: gio/gsocketclient.c:1202 gio/gsocketclient.c:1793
 msgid "Proxying over a non-TCP connection is not supported."
 msgstr ""
 "Encara no es pot fer de servidor intermediari d'una connexió que no sigui "
 "TCP."
 
-#: gio/gsocketclient.c:1194 gio/gsocketclient.c:1778
+#: gio/gsocketclient.c:1234 gio/gsocketclient.c:1822
 #, c-format
 msgid "Proxy protocol “%s” is not supported."
 msgstr "El protocol del servidor intermediari «%s» no està implementat."
@@ -4193,8 +4225,8 @@ msgstr "El servidor intermediari SOCKSv5 requereix autenticació."
 
 #: gio/gsocks5proxy.c:191
 msgid ""
-"The SOCKSv5 proxy requires an authentication method that is not supported by "
-"GLib."
+"The SOCKSv5 proxy requires an authentication method that is not supported by"
+" GLib."
 msgstr ""
 "El servidor intermediari SOCKSv5 requereix un mètode d'autenticació que "
 "encara no està implementat a la GLib."
@@ -4257,7 +4289,7 @@ msgstr ""
 msgid "Unknown SOCKSv5 proxy error."
 msgstr "S'ha produït un error desconegut en el servidor intermediari SOCKSv5."
 
-#: gio/gtestdbus.c:612 glib/gspawn-win32.c:311
+#: gio/gtestdbus.c:612 glib/gspawn-win32.c:314
 #, c-format
 msgid "Failed to create pipe for communicating with child process (%s)"
 msgstr ""
@@ -4282,44 +4314,68 @@ msgstr "No s'ha trobat cap adreça vàlida"
 msgid "Error reverse-resolving “%s”: %s"
 msgstr "S'ha produït un error en resoldre a la inversa «%s»: %s"
 
-#: gio/gthreadedresolver.c:676 gio/gthreadedresolver.c:755
-#: gio/gthreadedresolver.c:853 gio/gthreadedresolver.c:903
+#. Translators: the placeholder is a DNS record type, such as ‘MX’ or ‘SRV’
+#: gio/gthreadedresolver.c:550 gio/gthreadedresolver.c:572
+#: gio/gthreadedresolver.c:610 gio/gthreadedresolver.c:657
+#: gio/gthreadedresolver.c:686 gio/gthreadedresolver.c:698
+#, c-format
+msgid "Error parsing DNS %s record: malformed DNS packet"
+msgstr ""
+"S'ha produït un error en analitzar el registre de DNS %s: paquet DNS mal "
+"format"
+
+#: gio/gthreadedresolver.c:756 gio/gthreadedresolver.c:893
+#: gio/gthreadedresolver.c:991 gio/gthreadedresolver.c:1041
 #, c-format
 msgid "No DNS record of the requested type for “%s”"
 msgstr "No hi ha cap registre del tipus sol·licitat al DNS per «%s»"
 
-#: gio/gthreadedresolver.c:681 gio/gthreadedresolver.c:858
+#: gio/gthreadedresolver.c:761 gio/gthreadedresolver.c:996
 #, c-format
 msgid "Temporarily unable to resolve “%s”"
 msgstr "No s'ha pogut resoldre «%s» de forma temporal"
 
-#: gio/gthreadedresolver.c:686 gio/gthreadedresolver.c:863
-#: gio/gthreadedresolver.c:973
+#: gio/gthreadedresolver.c:766 gio/gthreadedresolver.c:1001
+#: gio/gthreadedresolver.c:1111
 #, c-format
 msgid "Error resolving “%s”"
 msgstr "S'ha produït un error en resoldre «%s»"
 
-#: gio/gtlscertificate.c:431
+#: gio/gthreadedresolver.c:780 gio/gthreadedresolver.c:804
+#: gio/gthreadedresolver.c:829 gio/gthreadedresolver.c:844
+msgid "Malformed DNS packet"
+msgstr "Paquet DNS mal format"
+
+#: gio/gthreadedresolver.c:886
+#, c-format
+msgid "Failed to parse DNS response for “%s”: "
+msgstr "No s'ha pogut analitzar la resposta DNS per a «%s»: "
+
+#: gio/gtlscertificate.c:478
 msgid "No PEM-encoded private key found"
 msgstr "No s'ha trobat cap clau privada codificada amb PEM"
 
-#: gio/gtlscertificate.c:441
+#: gio/gtlscertificate.c:488
 msgid "Cannot decrypt PEM-encoded private key"
 msgstr "No s'ha pogut desxifrar la clau privada codificada amb PEM"
 
-#: gio/gtlscertificate.c:452
+#: gio/gtlscertificate.c:499
 msgid "Could not parse PEM-encoded private key"
 msgstr "No s'ha pogut analitzar la clau privada codificada amb PEM"
 
-#: gio/gtlscertificate.c:479
+#: gio/gtlscertificate.c:526
 msgid "No PEM-encoded certificate found"
 msgstr "No s'ha trobat cap certificat codificat amb PEM"
 
-#: gio/gtlscertificate.c:488
+#: gio/gtlscertificate.c:535
 msgid "Could not parse PEM-encoded certificate"
 msgstr "No s'ha pogut analitzar el certificat codificat amb PEM"
 
-#: gio/gtlscertificate.c:844
+#: gio/gtlscertificate.c:796
+msgid "The current TLS backend does not support PKCS #12"
+msgstr "El backend TLS actual no és compatible amb PKCS #12"
+
+#: gio/gtlscertificate.c:1013
 msgid "This GTlsBackend does not support creating PKCS #11 certificates"
 msgstr "Aquest GTlsBackend no admet la creació de certificats PKCS #11"
 
@@ -4345,7 +4401,11 @@ msgstr ""
 msgid "The password entered is incorrect."
 msgstr "La contrasenya introduïda no és correcta."
 
-#: gio/gunixconnection.c:166 gio/gunixconnection.c:579
+#: gio/gunixconnection.c:125
+msgid "Sending FD is not supported"
+msgstr "L'enviament de FD no és compatible"
+
+#: gio/gunixconnection.c:178 gio/gunixconnection.c:596
 #, c-format
 msgid "Expecting 1 control message, got %d"
 msgid_plural "Expecting 1 control message, got %d"
@@ -4353,50 +4413,55 @@ msgstr[0] "S'esperava un missatge de control però se n'ha obtingut %d"
 msgstr[1] "S'esperava un missatge de control però se n'han obtingut %d"
 
 # FIXME
-#: gio/gunixconnection.c:182 gio/gunixconnection.c:591
+#: gio/gunixconnection.c:194 gio/gunixconnection.c:608
 msgid "Unexpected type of ancillary data"
 msgstr "Tipus de dades extres no esperades"
 
-#: gio/gunixconnection.c:200
+#: gio/gunixconnection.c:212
 #, c-format
 msgid "Expecting one fd, but got %d\n"
 msgid_plural "Expecting one fd, but got %d\n"
 msgstr[0] "S'esperava un descriptor de fitxer però se n'ha obtingut %d\n"
 msgstr[1] "S'esperava un descriptor de fitxer però se n'han obtingut %d\n"
 
-#: gio/gunixconnection.c:219
+#: gio/gunixconnection.c:231
 msgid "Received invalid fd"
 msgstr "S'ha rebut un descriptor de fitxer no vàlid"
 
-#: gio/gunixconnection.c:363
+#: gio/gunixconnection.c:238
+msgid "Receiving FD is not supported"
+msgstr "No s'admet la recepció de FD"
+
+#: gio/gunixconnection.c:380
 msgid "Error sending credentials: "
 msgstr "S'ha produït un error en enviar les credencials: "
 
-#: gio/gunixconnection.c:520
+#: gio/gunixconnection.c:537
 #, c-format
 msgid "Error checking if SO_PASSCRED is enabled for socket: %s"
 msgstr ""
 "S'ha produït un error en la comprovació de si «SO_PASSCRED» és habilitat en "
 "el sòcol: %s"
 
-#: gio/gunixconnection.c:536
+#: gio/gunixconnection.c:553
 #, c-format
 msgid "Error enabling SO_PASSCRED: %s"
 msgstr "S'ha produït un error en habilitar «SO_PASSCRED»: %s"
 
-#: gio/gunixconnection.c:565
+#: gio/gunixconnection.c:582
 msgid ""
-"Expecting to read a single byte for receiving credentials but read zero bytes"
+"Expecting to read a single byte for receiving credentials but read zero "
+"bytes"
 msgstr ""
 "S'esperava llegir un sol byte per a rebre les credencials però s'han llegit "
 "zero bytes"
 
-#: gio/gunixconnection.c:605
+#: gio/gunixconnection.c:622
 #, c-format
 msgid "Not expecting control message, but got %d"
 msgstr "No s'esperava un missatge de control però s'ha obtingut %d"
 
-#: gio/gunixconnection.c:630
+#: gio/gunixconnection.c:647
 #, c-format
 msgid "Error while disabling SO_PASSCRED: %s"
 msgstr "S'ha produït un error en inhabilitar «SO_PASSCRED»: %s"
@@ -4412,7 +4477,7 @@ msgstr "S'ha produït un error en llegir del descriptor de fitxer: %s"
 msgid "Error closing file descriptor: %s"
 msgstr "S'ha produït un error en tancar el descriptor de fitxer: %s"
 
-#: gio/gunixmounts.c:2785 gio/gunixmounts.c:2838
+#: gio/gunixmounts.c:2809 gio/gunixmounts.c:2862
 msgid "Filesystem root"
 msgstr "Arrel del sistema de fitxers"
 
@@ -4423,7 +4488,7 @@ msgstr "Arrel del sistema de fitxers"
 msgid "Error writing to file descriptor: %s"
 msgstr "S'ha produït un error en escriure al descriptor de fitxer: %s"
 
-#: gio/gunixsocketaddress.c:244
+#: gio/gunixsocketaddress.c:251
 msgid "Abstract UNIX domain socket addresses not supported on this system"
 msgstr "Aquest sistema no admet adreces de sòcol de domini UNIX abstractes"
 
@@ -4565,8 +4630,8 @@ msgstr "No hi ha cap grup establert a l'adreça d'interès per a l'URI «%s»"
 #, c-format
 msgid "No application with name “%s” registered a bookmark for “%s”"
 msgstr ""
-"No hi ha cap aplicació amb el nom «%s» que hagi registrat l'adreça d'interès "
-"«%s»"
+"No hi ha cap aplicació amb el nom «%s» que hagi registrat l'adreça d'interès"
+" «%s»"
 
 #: glib/gbookmarkfile.c:3743
 #, c-format
@@ -4577,8 +4642,8 @@ msgstr "No s'ha pogut ampliar la línia d'execució «%s» amb l'URI «%s»"
 msgid "Unrepresentable character in conversion input"
 msgstr "Caràcter no representable a l'entrada de la conversió"
 
-#: glib/gconvert.c:495 glib/gutf8.c:871 glib/gutf8.c:1083 glib/gutf8.c:1220
-#: glib/gutf8.c:1324
+#: glib/gconvert.c:495 glib/gutf8.c:886 glib/gutf8.c:1099 glib/gutf8.c:1236
+#: glib/gutf8.c:1340
 msgid "Partial character sequence at end of input"
 msgstr "Seqüència de caràcters parcial al final de l'entrada"
 
@@ -4626,7 +4691,8 @@ msgstr "L'URI «%s» conté caràcters d'escapada no vàlids"
 msgid "The pathname “%s” is not an absolute path"
 msgstr "El nom de camí «%s» no és un camí absolut"
 
-#. Translators: this is the preferred format for expressing the date and the time
+#. Translators: this is the preferred format for expressing the date and the
+#. time
 #: glib/gdatetime.c:226
 msgctxt "GDateTime"
 msgid "%a %b %e %H:%M:%S %Y"
@@ -4665,7 +4731,6 @@ msgstr "%I:%M:%S %p"
 #. * paste here.  Note that in most of the languages (western European,
 #. * non-European) there is no difference between the standalone and
 #. * complete date form.
-#.
 #: glib/gdatetime.c:274
 msgctxt "full month name"
 msgid "January"
@@ -4742,7 +4807,6 @@ msgstr "desembre"
 #. * and paste here.  Note that this feature is not yet supported by any
 #. * other platform.  Here are abbreviated month names in a form
 #. * appropriate when they are used standalone.
-#.
 #: glib/gdatetime.c:328
 msgctxt "abbreviated month name"
 msgid "Jan"
@@ -4889,7 +4953,6 @@ msgstr "dg."
 #. * incorrect in some languages.  Note that in most of the languages
 #. * (western European, non-European) there is no difference between the
 #. * standalone and complete date form.
-#.
 #: glib/gdatetime.c:468
 msgctxt "full month name with day"
 msgid "January"
@@ -4966,7 +5029,6 @@ msgstr "de desembre"
 #. * `locale abmon' in your native locale produces a complete list of
 #. * month names almost ready to copy and paste here.  In other systems
 #. * due to a bug the result is incorrect in some languages.
-#.
 #: glib/gdatetime.c:555
 msgctxt "abbreviated month name with day"
 msgid "Jan"
@@ -5093,12 +5155,14 @@ msgstr ""
 #: glib/gfileutils.c:1154
 #, c-format
 msgid "Failed to write file “%s”: write() failed: %s"
-msgstr "No s'ha pogut escriure el fitxer «%s»: ha fallat la funció write(): %s"
+msgstr ""
+"No s'ha pogut escriure el fitxer «%s»: ha fallat la funció write(): %s"
 
 #: glib/gfileutils.c:1175
 #, c-format
 msgid "Failed to write file “%s”: fsync() failed: %s"
-msgstr "No s'ha pogut escriure el fitxer «%s»: ha fallat la funció fsync(): %s"
+msgstr ""
+"No s'ha pogut escriure el fitxer «%s»: ha fallat la funció fsync(): %s"
 
 #: glib/gfileutils.c:1336 glib/gfileutils.c:1751
 #, c-format
@@ -5138,7 +5202,8 @@ msgstr "No es pot fer una lectura bàsica a g_io_channel_read_line_string"
 
 #: glib/giochannel.c:1805 glib/giochannel.c:2063 glib/giochannel.c:2150
 msgid "Leftover unconverted data in read buffer"
-msgstr "A la memòria intermèdia de lectura hi ha dades sobrants no convertides"
+msgstr ""
+"A la memòria intermèdia de lectura hi ha dades sobrants no convertides"
 
 #: glib/giochannel.c:1886 glib/giochannel.c:1963
 msgid "Channel terminates in a partial character"
@@ -5148,15 +5213,16 @@ msgstr "El canal acaba en un caràcter parcial"
 msgid "Can’t do a raw read in g_io_channel_read_to_end"
 msgstr "No es pot fer una lectura bàsica a g_io_channel_read_to_end"
 
-#: glib/gkeyfile.c:791
+#: glib/gkeyfile.c:794
 msgid "Valid key file could not be found in search dirs"
-msgstr "No s'ha pogut trobar cap fitxer de claus vàlid als directoris de cerca"
+msgstr ""
+"No s'ha pogut trobar cap fitxer de claus vàlid als directoris de cerca"
 
-#: glib/gkeyfile.c:828
+#: glib/gkeyfile.c:831
 msgid "Not a regular file"
 msgstr "No és un fitxer regular"
 
-#: glib/gkeyfile.c:1283
+#: glib/gkeyfile.c:1289
 #, c-format
 msgid ""
 "Key file contains line “%s” which is not a key-value pair, group, or comment"
@@ -5164,44 +5230,44 @@ msgstr ""
 "El fitxer de claus conté la línia «%s» que no és una parella clau-valor, "
 "grup o comentari"
 
-#: glib/gkeyfile.c:1340
+#: glib/gkeyfile.c:1346
 #, c-format
 msgid "Invalid group name: %s"
 msgstr "El nom del grup no és vàlid: %s"
 
-#: glib/gkeyfile.c:1362
+#: glib/gkeyfile.c:1370
 msgid "Key file does not start with a group"
 msgstr "El fitxer de claus no comença amb un grup"
 
-#: glib/gkeyfile.c:1388
+#: glib/gkeyfile.c:1394
 #, c-format
-msgid "Invalid key name: %s"
-msgstr "El nom de la clau no és vàlid: %s"
+msgid "Invalid key name: %.*s"
+msgstr "El nom de la clau no és vàlid: %.*s"
 
-#: glib/gkeyfile.c:1415
+#: glib/gkeyfile.c:1422
 #, c-format
 msgid "Key file contains unsupported encoding “%s”"
 msgstr "El fitxer de claus conté la codificació no implementada «%s»"
 
-#: glib/gkeyfile.c:1664 glib/gkeyfile.c:1837 glib/gkeyfile.c:3287
-#: glib/gkeyfile.c:3351 glib/gkeyfile.c:3481 glib/gkeyfile.c:3613
-#: glib/gkeyfile.c:3759 glib/gkeyfile.c:3994 glib/gkeyfile.c:4061
+#: glib/gkeyfile.c:1677 glib/gkeyfile.c:1850 glib/gkeyfile.c:3297
+#: glib/gkeyfile.c:3361 glib/gkeyfile.c:3491 glib/gkeyfile.c:3623
+#: glib/gkeyfile.c:3769 glib/gkeyfile.c:4004 glib/gkeyfile.c:4071
 #, c-format
 msgid "Key file does not have group “%s”"
 msgstr "El fitxer de claus no té el grup «%s»"
 
-#: glib/gkeyfile.c:1792
+#: glib/gkeyfile.c:1805
 #, c-format
 msgid "Key file does not have key “%s” in group “%s”"
 msgstr "El fitxer de claus no conté una clau «%s» en el grup «%s»"
 
-#: glib/gkeyfile.c:1954 glib/gkeyfile.c:2070
+#: glib/gkeyfile.c:1967 glib/gkeyfile.c:2083
 #, c-format
 msgid "Key file contains key “%s” with value “%s” which is not UTF-8"
 msgstr ""
 "El fitxer de claus conté la clau «%s» amb el valor «%s», que no és UTF-8"
 
-#: glib/gkeyfile.c:1974 glib/gkeyfile.c:2090 glib/gkeyfile.c:2529
+#: glib/gkeyfile.c:1987 glib/gkeyfile.c:2103 glib/gkeyfile.c:2542
 #, c-format
 msgid ""
 "Key file contains key “%s” which has a value that cannot be interpreted."
@@ -5209,7 +5275,7 @@ msgstr ""
 "El fitxer de claus conté la clau «%s», que té un valor que no es pot "
 "interpretar."
 
-#: glib/gkeyfile.c:2747 glib/gkeyfile.c:3116
+#: glib/gkeyfile.c:2757 glib/gkeyfile.c:3126
 #, c-format
 msgid ""
 "Key file contains key “%s” in group “%s” which has a value that cannot be "
@@ -5218,37 +5284,37 @@ msgstr ""
 "El fitxer de claus conté la clau «%s» en el grup «%s», que té un valor que "
 "no es pot interpretar."
 
-#: glib/gkeyfile.c:2825 glib/gkeyfile.c:2902
+#: glib/gkeyfile.c:2835 glib/gkeyfile.c:2912
 #, c-format
 msgid "Key “%s” in group “%s” has value “%s” where %s was expected"
 msgstr ""
 "La clau «%s» en el grup «%s» té el valor «%s» però s'esperava el valor %s"
 
-#: glib/gkeyfile.c:4304
+#: glib/gkeyfile.c:4324
 msgid "Key file contains escape character at end of line"
 msgstr "El fitxer de claus conté un caràcter d'escapada al final de línia"
 
-#: glib/gkeyfile.c:4326
+#: glib/gkeyfile.c:4346
 #, c-format
 msgid "Key file contains invalid escape sequence “%s”"
 msgstr "El fitxer de claus conté la seqüència d'escapada no vàlida «%s»"
 
-#: glib/gkeyfile.c:4470
+#: glib/gkeyfile.c:4491
 #, c-format
 msgid "Value “%s” cannot be interpreted as a number."
 msgstr "El valor «%s» no es pot interpretar com un nombre."
 
-#: glib/gkeyfile.c:4484
+#: glib/gkeyfile.c:4505
 #, c-format
 msgid "Integer value “%s” out of range"
 msgstr "El valor enter «%s» és fora de l'interval"
 
-#: glib/gkeyfile.c:4517
+#: glib/gkeyfile.c:4538
 #, c-format
 msgid "Value “%s” cannot be interpreted as a float number."
 msgstr "El valor «%s» no es pot interpretar com un nombre amb coma flotant."
 
-#: glib/gkeyfile.c:4556
+#: glib/gkeyfile.c:4577
 #, c-format
 msgid "Value “%s” cannot be interpreted as a boolean."
 msgstr "El valor «%s» no es pot interpretar com un booleà."
@@ -5324,8 +5390,8 @@ msgstr "El caràcter de referència «%-.*s» no codifica un caràcter permès"
 msgid ""
 "Empty entity “&;” seen; valid entities are: &amp; &quot; &lt; &gt; &apos;"
 msgstr ""
-"S'ha detectat una entitat buida «&;». Les entitats vàlides són: &amp; &quot; "
-"&lt; &gt; &apos;"
+"S'ha detectat una entitat buida «&;». Les entitats vàlides són: &amp; &quot;"
+" &lt; &gt; &apos;"
 
 #: glib/gmarkup.c:774
 #, c-format
@@ -5348,8 +5414,8 @@ msgstr "El document ha de començar amb un element (p. ex. <book>)"
 #: glib/gmarkup.c:1233
 #, c-format
 msgid ""
-"“%s” is not a valid character following a “<” character; it may not begin an "
-"element name"
+"“%s” is not a valid character following a “<” character; it may not begin an"
+" element name"
 msgstr ""
 "«%s» no és un caràcter vàlid després d'un caràcter «<»: no pot començar un "
 "nom d'element"
@@ -5411,8 +5477,8 @@ msgid ""
 "“%s” is not a valid character following the close element name “%s”; the "
 "allowed character is “>”"
 msgstr ""
-"«%s» no és un caràcter vàlid després del nom d'element de tancament «%s». El "
-"caràcter permès és «>»"
+"«%s» no és un caràcter vàlid després del nom d'element de tancament «%s». El"
+" caràcter permès és «>»"
 
 #: glib/gmarkup.c:1637
 #, c-format
@@ -5552,7 +5618,7 @@ msgstr "S'ha produït un error en analitzar l'opció %s"
 msgid "Missing argument for %s"
 msgstr "Manca un argument per a %s"
 
-#: glib/goption.c:2185
+#: glib/goption.c:2184
 #, c-format
 msgid "Unknown option %s"
 msgstr "Es desconeix l'opció %s"
@@ -5660,7 +5726,7 @@ msgstr "no es reconeix el caràcter després de «(?» o «(?-»"
 #: glib/gregex.c:361
 msgid "POSIX named classes are supported only within a class"
 msgstr ""
-"només es permeten les classes amb nom de POSIX dins de la pròpia classe"
+"Només es permeten les classes amb nom de POSIX dins de la pròpia classe"
 
 #: glib/gregex.c:364
 msgid "missing terminating )"
@@ -5712,7 +5778,6 @@ msgstr "s'esperava una asserció després de «(?(»"
 
 #. translators: '(?R' and '(?[+-]digits' are both meant as (groups of)
 #. * sequences here, '(?-54' would be an example for the second group.
-#.
 #: glib/gregex.c:407
 msgid "(?R or (?[+-]digits must be followed by )"
 msgstr "«(?R» o «(?[+-]dígits» han d'anar seguits de «)»"
@@ -5723,7 +5788,7 @@ msgstr "nom de classe POSIX desconeguda"
 
 #: glib/gregex.c:413
 msgid "POSIX collating elements are not supported"
-msgstr "no es poden utilitzar els elements d'ordenació de POSIX"
+msgstr "No es poden utilitzar els elements d'ordenació de POSIX"
 
 #: glib/gregex.c:416
 msgid "character value in \\x{...} sequence is too large"
@@ -5739,8 +5804,7 @@ msgstr "no es permet \\C en assercions cap enrere"
 
 #: glib/gregex.c:429
 msgid "escapes \\L, \\l, \\N{name}, \\U, and \\u are not supported"
-msgstr ""
-"no s'admeten els caràcters d'escapada «\\L», «\\l», «\\N{nom}», «\\U» i «\\u»"
+msgstr "no s'admeten els caràcters d'escapada «\\L», «\\l», «\\N{nom}», «\\U» i «\\u»"
 
 #: glib/gregex.c:432
 msgid "recursive call could loop indefinitely"
@@ -5788,7 +5852,7 @@ msgstr "no s'ha trobat el subpatró referenciat comprovat anteriorment"
 
 #: glib/gregex.c:468
 msgid "DEFINE group contains more than one branch"
-msgstr "el grup «DEFINE» conté més d'una branca"
+msgstr "El grup «DEFINE» conté més d'una branca"
 
 #: glib/gregex.c:471
 msgid "inconsistent NEWLINE options"
@@ -5829,8 +5893,8 @@ msgstr "s'esperava un dígit després de (?+"
 #: glib/gregex.c:496
 msgid "] is an invalid data character in JavaScript compatibility mode"
 msgstr ""
-"el caràcter«]» no és un caràcter de dades vàlid en el mode de compatibilitat "
-"amb JavaScript"
+"el caràcter«]» no és un caràcter de dades vàlid en el mode de compatibilitat"
+" amb JavaScript"
 
 #: glib/gregex.c:499
 msgid "different names for subpatterns of the same number are not allowed"
@@ -5934,8 +5998,8 @@ msgstr "no es reconeix la seqüència d'escapament"
 #, c-format
 msgid "Error while parsing replacement text “%s” at char %lu: %s"
 msgstr ""
-"S'ha produït un error en analitzar el text de reemplaçament «%s» al caràcter "
-"%lu: %s"
+"S'ha produït un error en analitzar el text de reemplaçament «%s» al caràcter"
+" %lu: %s"
 
 #: glib/gshell.c:96
 msgid "Quoted text doesn’t begin with a quotation mark"
@@ -5944,8 +6008,8 @@ msgstr "El text citat no comença amb cometes"
 #: glib/gshell.c:186
 msgid "Unmatched quotation mark in command line or other shell-quoted text"
 msgstr ""
-"S'han trobat unes cometes desaparellades en una línia d'ordres o en un altre "
-"text entre cometes"
+"S'han trobat unes cometes desaparellades en una línia d'ordres o en un altre"
+" text entre cometes"
 
 #: glib/gshell.c:592
 #, c-format
@@ -5968,124 +6032,137 @@ msgstr "El text era buit (o només contenia espais en blanc)"
 msgid "Failed to read data from child process (%s)"
 msgstr "No s'han pogut llegir dades des del procés fill (%s)"
 
-#: glib/gspawn.c:461
+#: glib/gspawn.c:462
 #, c-format
 msgid "Unexpected error in reading data from a child process (%s)"
 msgstr ""
 "S'ha produït un error no esperat en llegir dades des d'un procés fill (%s)"
 
-#: glib/gspawn.c:546
+#: glib/gspawn.c:547
 #, c-format
 msgid "Unexpected error in waitpid() (%s)"
 msgstr "S'ha produït un error inesperat en waitpid() (%s)"
 
-#: glib/gspawn.c:1166 glib/gspawn-win32.c:1407
+#: glib/gspawn.c:1175 glib/gspawn-win32.c:1438
 #, c-format
 msgid "Child process exited with code %ld"
 msgstr "El procés fill ha sortit amb el codi %ld"
 
-#: glib/gspawn.c:1174
+#: glib/gspawn.c:1183
 #, c-format
 msgid "Child process killed by signal %ld"
 msgstr "El senyal %ld ha matat el procés fill"
 
-#: glib/gspawn.c:1181
+#: glib/gspawn.c:1190
 #, c-format
 msgid "Child process stopped by signal %ld"
 msgstr "El senyal %ld ha aturat el procés fill"
 
-#: glib/gspawn.c:1188
+#: glib/gspawn.c:1197
 #, c-format
 msgid "Child process exited abnormally"
 msgstr "El procés fill ha sortit inesperadament"
 
-#: glib/gspawn.c:1864 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
+#: glib/gspawn.c:1890 glib/gspawn-win32.c:353 glib/gspawn-win32.c:361
 #, c-format
 msgid "Failed to read from child pipe (%s)"
 msgstr "No s'ha pogut llegir des del conducte fill (%s)"
 
-#: glib/gspawn.c:2166
+#: glib/gspawn.c:2253
 #, c-format
 msgid "Failed to spawn child process “%s” (%s)"
-msgstr "No s'ha pogut executar el procés fill «%s» (%s)"
+msgstr "No s'ha pogut engendrar el procés fill «%s» (%s)"
 
-#: glib/gspawn.c:2283
+#: glib/gspawn.c:2370
 #, c-format
 msgid "Failed to fork (%s)"
 msgstr "No s'ha pogut bifurcar (%s)"
 
-#: glib/gspawn.c:2443 glib/gspawn-win32.c:381
+#: glib/gspawn.c:2530 glib/gspawn-win32.c:384
 #, c-format
 msgid "Failed to change to directory “%s” (%s)"
 msgstr "No s'ha pogut canviar al directori «%s» (%s)"
 
-#: glib/gspawn.c:2453
+#: glib/gspawn.c:2540
 #, c-format
 msgid "Failed to execute child process “%s” (%s)"
 msgstr "No s'ha pogut executar el procés fill «%s» (%s)"
 
-#: glib/gspawn.c:2463
+#: glib/gspawn.c:2550
 #, c-format
-msgid "Failed to redirect output or input of child process (%s)"
-msgstr "No s'ha pogut redirigir l'entrada o la sortida del procés fill (%s)"
+msgid "Failed to open file to remap file descriptor (%s)"
+msgstr ""
+"No s'ha pogut obrir el fitxer per a tornar a assignar el descriptor de "
+"fitxers (%s)"
 
-#: glib/gspawn.c:2472
+#: glib/gspawn.c:2558
+#, c-format
+msgid "Failed to duplicate file descriptor for child process (%s)"
+msgstr ""
+"No s'ha pogut duplicar el descriptor de fitxers per al procés fill (%s)"
+
+#: glib/gspawn.c:2567
 #, c-format
 msgid "Failed to fork child process (%s)"
 msgstr "No s'ha pogut bifurcar el procés fill (%s)"
 
-#: glib/gspawn.c:2480
+#: glib/gspawn.c:2575
 #, c-format
 msgid "Failed to close file descriptor for child process (%s)"
 msgstr "No s'ha pogut tancar el descriptor de fitxers per al procés fill (%s)"
 
-#: glib/gspawn.c:2488
+#: glib/gspawn.c:2583
 #, c-format
 msgid "Unknown error executing child process “%s”"
 msgstr "S'ha produït un error desconegut en executar el procés fill «%s»"
 
-#: glib/gspawn.c:2512
+#: glib/gspawn.c:2607
 #, c-format
 msgid "Failed to read enough data from child pid pipe (%s)"
 msgstr ""
 "No s'han pogut llegir prou dades del conducte de l'identificador del procés "
 "fill (%s)"
 
-#: glib/gspawn-win32.c:294
+#: glib/gspawn-win32.c:297
 msgid "Failed to read data from child process"
 msgstr "No s'han pogut llegir dades del procés fill"
 
-#: glib/gspawn-win32.c:387 glib/gspawn-win32.c:392 glib/gspawn-win32.c:511
+#: glib/gspawn-win32.c:390 glib/gspawn-win32.c:395 glib/gspawn-win32.c:521
 #, c-format
 msgid "Failed to execute child process (%s)"
 msgstr "No s'ha pogut executar el procés fill (%s)"
 
-#: glib/gspawn-win32.c:461
+#: glib/gspawn-win32.c:400
+#, c-format
+msgid "Failed to dup() in child process (%s)"
+msgstr "No s'ha pogut dup() en el procés fill (%s)"
+
+#: glib/gspawn-win32.c:471
 #, c-format
 msgid "Invalid program name: %s"
 msgstr "El nom del programa no és vàlid: %s"
 
-#: glib/gspawn-win32.c:471 glib/gspawn-win32.c:779
+#: glib/gspawn-win32.c:481 glib/gspawn-win32.c:807
 #, c-format
 msgid "Invalid string in argument vector at %d: %s"
 msgstr "La cadena en el vector d'argument no és vàlida a %d: %s"
 
-#: glib/gspawn-win32.c:482 glib/gspawn-win32.c:794
+#: glib/gspawn-win32.c:492 glib/gspawn-win32.c:823
 #, c-format
 msgid "Invalid string in environment: %s"
 msgstr "Cadena no vàlida a l'entorn: %s"
 
-#: glib/gspawn-win32.c:775
+#: glib/gspawn-win32.c:803
 #, c-format
 msgid "Invalid working directory: %s"
 msgstr "El directori de treball no és vàlid: %s"
 
-#: glib/gspawn-win32.c:837
+#: glib/gspawn-win32.c:868
 #, c-format
 msgid "Failed to execute helper program (%s)"
 msgstr "No s'ha pogut executar el programa d'ajuda (%s)"
 
-#: glib/gspawn-win32.c:1064
+#: glib/gspawn-win32.c:1096
 msgid ""
 "Unexpected error in g_io_channel_win32_poll() reading data from a child "
 "process"
@@ -6093,21 +6170,21 @@ msgstr ""
 "S'ha produït un error inesperat a g_io_channel_win32_poll() en llegir dades "
 "d'un procés fill"
 
-#: glib/gstrfuncs.c:3345 glib/gstrfuncs.c:3447
+#: glib/gstrfuncs.c:3351 glib/gstrfuncs.c:3453
 msgid "Empty string is not a number"
 msgstr "La cadena buida no és un número"
 
-#: glib/gstrfuncs.c:3369
+#: glib/gstrfuncs.c:3375
 #, c-format
 msgid "“%s” is not a signed number"
 msgstr "«%s» no és un nombre amb signe"
 
-#: glib/gstrfuncs.c:3379 glib/gstrfuncs.c:3483
+#: glib/gstrfuncs.c:3385 glib/gstrfuncs.c:3489
 #, c-format
 msgid "Number “%s” is out of bounds [%s, %s]"
 msgstr "El número «%s» està fora de rangs [%s, %s]"
 
-#: glib/gstrfuncs.c:3473
+#: glib/gstrfuncs.c:3479
 #, c-format
 msgid "“%s” is not an unsigned number"
 msgstr "«%s» no és un nombre sense signe"
@@ -6153,7 +6230,7 @@ msgstr "El port «%.*s» de l'URI està fora de rang"
 #: glib/guri.c:1224 glib/guri.c:1288
 #, c-format
 msgid "URI ‘%s’ is not an absolute URI"
-msgstr "L'URI «%s» no és un URI absoluta"
+msgstr "L'URI «%s» no és un URI absolut"
 
 #: glib/guri.c:1230
 #, c-format
@@ -6168,175 +6245,175 @@ msgstr "L'URI no és absolut i no s'ha proporcionat cap URI base"
 msgid "Missing ‘=’ and parameter value"
 msgstr "Falta «=» i el valor del paràmetre"
 
-#: glib/gutf8.c:817
+#: glib/gutf8.c:832
 msgid "Failed to allocate memory"
 msgstr "No s'ha pogut ubicar memòria"
 
-#: glib/gutf8.c:950
+#: glib/gutf8.c:965
 msgid "Character out of range for UTF-8"
 msgstr "El caràcter és fora de l'interval d'UTF-8"
 
-#: glib/gutf8.c:1051 glib/gutf8.c:1060 glib/gutf8.c:1190 glib/gutf8.c:1199
-#: glib/gutf8.c:1338 glib/gutf8.c:1435
+#: glib/gutf8.c:1067 glib/gutf8.c:1076 glib/gutf8.c:1206 glib/gutf8.c:1215
+#: glib/gutf8.c:1354 glib/gutf8.c:1451
 msgid "Invalid sequence in conversion input"
 msgstr "Seqüència no vàlida a l'entrada de la conversió"
 
-#: glib/gutf8.c:1349 glib/gutf8.c:1446
+#: glib/gutf8.c:1365 glib/gutf8.c:1462
 msgid "Character out of range for UTF-16"
 msgstr "El caràcter és fora de l'interval d'UTF-16"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2770
+#: glib/gutils.c:2849
 #, c-format
 msgid "%.1f kB"
 msgstr "%.1f kB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2772
+#: glib/gutils.c:2851
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2774
+#: glib/gutils.c:2853
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2776
+#: glib/gutils.c:2855
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2778
+#: glib/gutils.c:2857
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2780
+#: glib/gutils.c:2859
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2784
+#: glib/gutils.c:2863
 #, c-format
 msgid "%.1f KiB"
 msgstr "%.1f KiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2786
+#: glib/gutils.c:2865
 #, c-format
 msgid "%.1f MiB"
 msgstr "%.1f MiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2788
+#: glib/gutils.c:2867
 #, c-format
 msgid "%.1f GiB"
 msgstr "%.1f GiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2790
+#: glib/gutils.c:2869
 #, c-format
 msgid "%.1f TiB"
 msgstr "%.1f TiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2792
+#: glib/gutils.c:2871
 #, c-format
 msgid "%.1f PiB"
 msgstr "%.1f PiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2794
+#: glib/gutils.c:2873
 #, c-format
 msgid "%.1f EiB"
 msgstr "%.1f EiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2798
+#: glib/gutils.c:2877
 #, c-format
 msgid "%.1f kb"
 msgstr "%.1f kb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2800
+#: glib/gutils.c:2879
 #, c-format
 msgid "%.1f Mb"
 msgstr "%.1f Mb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2802
+#: glib/gutils.c:2881
 #, c-format
 msgid "%.1f Gb"
 msgstr "%.1f Gb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2804
+#: glib/gutils.c:2883
 #, c-format
 msgid "%.1f Tb"
 msgstr "%.1f Tb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2806
+#: glib/gutils.c:2885
 #, c-format
 msgid "%.1f Pb"
 msgstr "%.1f Pb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2808
+#: glib/gutils.c:2887
 #, c-format
 msgid "%.1f Eb"
 msgstr "%.1f Eb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2812
+#: glib/gutils.c:2891
 #, c-format
 msgid "%.1f Kib"
 msgstr "%.1f Kib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2814
+#: glib/gutils.c:2893
 #, c-format
 msgid "%.1f Mib"
 msgstr "%.1f Mib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2816
+#: glib/gutils.c:2895
 #, c-format
 msgid "%.1f Gib"
 msgstr "%.1f Gib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2818
+#: glib/gutils.c:2897
 #, c-format
 msgid "%.1f Tib"
 msgstr "%.1f Tib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2820
+#: glib/gutils.c:2899
 #, c-format
 msgid "%.1f Pib"
 msgstr "%.1f Pib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2822
+#: glib/gutils.c:2901
 #, c-format
 msgid "%.1f Eib"
 msgstr "%.1f Eib"
 
-#: glib/gutils.c:2856 glib/gutils.c:2973
+#: glib/gutils.c:2935 glib/gutils.c:3052
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
 msgstr[0] "%u byte"
 msgstr[1] "%u bytes"
 
-#: glib/gutils.c:2860
+#: glib/gutils.c:2939
 #, c-format
 msgid "%u bit"
 msgid_plural "%u bits"
@@ -6344,7 +6421,7 @@ msgstr[0] "%u bit"
 msgstr[1] "%u bits"
 
 #. Translators: the %s in "%s bytes" will always be replaced by a number.
-#: glib/gutils.c:2927
+#: glib/gutils.c:3006
 #, c-format
 msgid "%s byte"
 msgid_plural "%s bytes"
@@ -6352,44 +6429,46 @@ msgstr[0] "%s byte"
 msgstr[1] "%s bytes"
 
 #. Translators: the %s in "%s bits" will always be replaced by a number.
-#: glib/gutils.c:2932
+#: glib/gutils.c:3011
 #, c-format
 msgid "%s bit"
 msgid_plural "%s bits"
 msgstr[0] "%s bit"
 msgstr[1] "%s bits"
 
-#. Translators: this is from the deprecated function g_format_size_for_display() which uses 'KB' to
-#. * mean 1024 bytes.  I am aware that 'KB' is not correct, but it has been preserved for reasons of
-#. * compatibility.  Users will not see this string unless a program is using this deprecated function.
+#. Translators: this is from the deprecated function
+#. g_format_size_for_display() which uses 'KB' to
+#. * mean 1024 bytes.  I am aware that 'KB' is not correct, but it has been
+#. preserved for reasons of
+#. * compatibility.  Users will not see this string unless a program is using
+#. this deprecated function.
 #. * Please translate as literally as possible.
-#.
-#: glib/gutils.c:2986
+#: glib/gutils.c:3065
 #, c-format
 msgid "%.1f KB"
 msgstr "%.1f KB"
 
-#: glib/gutils.c:2991
+#: glib/gutils.c:3070
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
-#: glib/gutils.c:2996
+#: glib/gutils.c:3075
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
-#: glib/gutils.c:3001
+#: glib/gutils.c:3080
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
-#: glib/gutils.c:3006
+#: glib/gutils.c:3085
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
-#: glib/gutils.c:3011
+#: glib/gutils.c:3090
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
index 19ca2bc..a47614c 100644 (file)
--- a/po/cs.po
+++ b/po/cs.po
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: glib glib-2-70\n"
+"Project-Id-Version: glib\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/glib/issues\n"
-"POT-Creation-Date: 2022-02-01 17:05+0000\n"
-"PO-Revision-Date: 2022-02-09 20:38+0100\n"
+"POT-Creation-Date: 2022-02-14 13:48+0000\n"
+"PO-Revision-Date: 2022-02-14 20:38+0100\n"
 "Last-Translator: Marek Černocký <marek@manet.cz>\n"
 "Language-Team: čeština <gnome-cs-list@gnome.org>\n"
 "Language: cs\n"
@@ -27,29 +27,39 @@ msgstr ""
 "X-Generator: Gtranslator 2.91.7\n"
 "X-Project-Style: gnome\n"
 
-#: gio/gapplication.c:500
+#: gio/gappinfo.c:333
+msgid "Setting default applications not supported yet"
+msgstr "Nastavení výchozích aplikací není podporováno"
+
+#: gio/gappinfo.c:366
+msgid "Setting application as last used for type not supported yet"
+msgstr ""
+"Nastavení aplikace, jako poslední použité pro daný typ, není zatím "
+"podporováno"
+
+#: gio/gapplication.c:497
 msgid "GApplication options"
 msgstr "Volby GApplication"
 
-#: gio/gapplication.c:500
+#: gio/gapplication.c:497
 msgid "Show GApplication options"
-msgstr "Ukázat volby GApplication"
+msgstr "Zobrazit volby GApplication"
 
-#: gio/gapplication.c:545
+#: gio/gapplication.c:542
 msgid "Enter GApplication service mode (use from D-Bus service files)"
 msgstr ""
 "Vstoupit do režimu služby GApplication (použít ze souborů služby D-Bus)"
 
-#: gio/gapplication.c:557
+#: gio/gapplication.c:554
 msgid "Override the application’s ID"
 msgstr "Přepsat ID aplikace"
 
-#: gio/gapplication.c:569
+#: gio/gapplication.c:566
 msgid "Replace the running instance"
 msgstr "Nahradit běžící instanci"
 
 #: gio/gapplication-tool.c:45 gio/gapplication-tool.c:46 gio/gio-tool.c:227
-#: gio/gresource-tool.c:494 gio/gsettings-tool.c:572
+#: gio/gresource-tool.c:494 gio/gsettings-tool.c:584
 msgid "Print help"
 msgstr "Vypsat nápovědu"
 
@@ -61,7 +71,7 @@ msgstr "[PŘÍKAZ]"
 msgid "Print version"
 msgstr "Vypsat verzi"
 
-#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:578
+#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:590
 msgid "Print version information and exit"
 msgstr "Vypsat informace o verzi a skončit"
 
@@ -123,8 +133,8 @@ msgstr "Příkaz, ke kterému vypsat podrobnou nápovědu"
 msgid "Application identifier in D-Bus format (eg: org.example.viewer)"
 msgstr "Identifikátor aplikace ve formátu D-Bus (např. org.example.viewer)"
 
-#: gio/gapplication-tool.c:74 gio/glib-compile-resources.c:738
-#: gio/glib-compile-resources.c:744 gio/glib-compile-resources.c:772
+#: gio/gapplication-tool.c:74 gio/glib-compile-resources.c:820
+#: gio/glib-compile-resources.c:826 gio/glib-compile-resources.c:855
 #: gio/gresource-tool.c:501 gio/gresource-tool.c:567
 msgid "FILE"
 msgstr "SOUBOR"
@@ -151,7 +161,7 @@ msgstr "PARAMETR"
 msgid "Optional parameter to the action invocation, in GVariant format"
 msgstr "Volitelný parametr k akci vyvolání ve formátu GVariant"
 
-#: gio/gapplication-tool.c:98 gio/gresource-tool.c:532 gio/gsettings-tool.c:664
+#: gio/gapplication-tool.c:98 gio/gresource-tool.c:532 gio/gsettings-tool.c:676
 #, c-format
 msgid ""
 "Unknown command %s\n"
@@ -165,7 +175,7 @@ msgid "Usage:\n"
 msgstr "Použití:\n"
 
 #: gio/gapplication-tool.c:116 gio/gresource-tool.c:557
-#: gio/gsettings-tool.c:699
+#: gio/gsettings-tool.c:711
 msgid "Arguments:\n"
 msgstr "Argumenty:\n"
 
@@ -288,7 +298,7 @@ msgstr "Proud je již uzavřen"
 msgid "Truncate not supported on base stream"
 msgstr "Zkrácování není v proudu podporováno"
 
-#: gio/gcancellable.c:319 gio/gdbusconnection.c:1873 gio/gdbusprivate.c:1416
+#: gio/gcancellable.c:319 gio/gdbusconnection.c:1873 gio/gdbusprivate.c:1418
 #: gio/gsimpleasyncresult.c:871 gio/gsimpleasyncresult.c:897
 #, c-format
 msgid "Operation was cancelled"
@@ -309,7 +319,7 @@ msgstr "Cíl nemá dostatek místa"
 #: gio/gcharsetconverter.c:342 gio/gdatainputstream.c:848
 #: gio/gdatainputstream.c:1266 glib/gconvert.c:449 glib/gconvert.c:879
 #: glib/giochannel.c:1573 glib/giochannel.c:1615 glib/giochannel.c:2470
-#: glib/gutf8.c:875 glib/gutf8.c:1328
+#: glib/gutf8.c:890 glib/gutf8.c:1344
 msgid "Invalid byte sequence in conversion input"
 msgstr "Neplatná posloupnost bajtů na vstupu převodu"
 
@@ -319,7 +329,7 @@ msgstr "Neplatná posloupnost bajtů na vstupu převodu"
 msgid "Error during conversion: %s"
 msgstr "Chyba při převodu: %s"
 
-#: gio/gcharsetconverter.c:445 gio/gsocket.c:1143
+#: gio/gcharsetconverter.c:445 gio/gsocket.c:1147
 msgid "Cancellable initialization not supported"
 msgstr "Zrušitelné spuštění není podporováno"
 
@@ -333,7 +343,7 @@ msgstr "Převod ze znakové sady „%s“ do „%s“ není podporován"
 msgid "Could not open converter from “%s” to “%s”"
 msgstr "Nelze otevřít převodník z „%s“ do „%s“"
 
-#: gio/gcontenttype.c:454
+#: gio/gcontenttype.c:470
 #, c-format
 msgid "%s type"
 msgstr "typ %s"
@@ -347,23 +357,23 @@ msgstr "Neznámý typ"
 msgid "%s filetype"
 msgstr "typ souboru %s"
 
-#: gio/gcredentials.c:323
+#: gio/gcredentials.c:335
 msgid "GCredentials contains invalid data"
 msgstr "GCredentials obsahuje neplatná data"
 
-#: gio/gcredentials.c:383 gio/gcredentials.c:667
+#: gio/gcredentials.c:395 gio/gcredentials.c:686
 msgid "GCredentials is not implemented on this OS"
 msgstr "GCredentials na tomto OS není implementováno"
 
-#: gio/gcredentials.c:538 gio/gcredentials.c:556
+#: gio/gcredentials.c:550 gio/gcredentials.c:568
 msgid "There is no GCredentials support for your platform"
 msgstr "Danou platformu GCredentials nepodporuje"
 
-#: gio/gcredentials.c:607
+#: gio/gcredentials.c:626
 msgid "GCredentials does not contain a process ID on this OS"
 msgstr "GCredentials na tomto OS neobsahuje ID procesu"
 
-#: gio/gcredentials.c:661
+#: gio/gcredentials.c:680
 msgid "Credentials spoofing is not possible on this OS"
 msgstr "Změna přihlašovacích údajů na tomto OS není implementován"
 
@@ -371,17 +381,17 @@ msgstr "Změna přihlašovacích údajů na tomto OS není implementován"
 msgid "Unexpected early end-of-stream"
 msgstr "Neočekávaný časný konec proudu"
 
-#: gio/gdbusaddress.c:159 gio/gdbusaddress.c:233 gio/gdbusaddress.c:322
+#: gio/gdbusaddress.c:162 gio/gdbusaddress.c:236 gio/gdbusaddress.c:325
 #, c-format
 msgid "Unsupported key “%s” in address entry “%s”"
 msgstr "Nepodporovaný klíč „%s“ v záznamu s adresou „%s“"
 
-#: gio/gdbusaddress.c:172
+#: gio/gdbusaddress.c:175
 #, c-format
 msgid "Meaningless key/value pair combination in address entry “%s”"
 msgstr "Nesmyslná párová kombinace klíč/hodnota v záznamu s adresou „%s“"
 
-#: gio/gdbusaddress.c:181
+#: gio/gdbusaddress.c:184
 #, c-format
 msgid ""
 "Address “%s” is invalid (need exactly one of path, dir, tmpdir, or abstract "
@@ -390,28 +400,28 @@ msgstr ""
 "Adresa „%s“ je neplatná (je zapotřebí právě jeden z klíčů path, tmpdir nebo "
 "abstract)"
 
-#: gio/gdbusaddress.c:248 gio/gdbusaddress.c:259 gio/gdbusaddress.c:274
-#: gio/gdbusaddress.c:337 gio/gdbusaddress.c:348
+#: gio/gdbusaddress.c:251 gio/gdbusaddress.c:262 gio/gdbusaddress.c:277
+#: gio/gdbusaddress.c:340 gio/gdbusaddress.c:351
 #, c-format
 msgid "Error in address “%s” — the “%s” attribute is malformed"
 msgstr "Chyba v adrese „%s“ – atribut „%s“ má chybný formát"
 
-#: gio/gdbusaddress.c:418 gio/gdbusaddress.c:682
+#: gio/gdbusaddress.c:421 gio/gdbusaddress.c:680
 #, c-format
 msgid "Unknown or unsupported transport “%s” for address “%s”"
 msgstr "Neznámý nebo nepodporovaný přenos „%s“ adresy „%s“"
 
-#: gio/gdbusaddress.c:462
+#: gio/gdbusaddress.c:465
 #, c-format
 msgid "Address element “%s” does not contain a colon (:)"
 msgstr "Prvek adresy „%s“ neobsahuje dvojtečku (:)"
 
-#: gio/gdbusaddress.c:471
+#: gio/gdbusaddress.c:474
 #, c-format
 msgid "Transport name in address element “%s” must not be empty"
 msgstr "Název přenosu v prvku adresy „%s“ nesmí být prázdný"
 
-#: gio/gdbusaddress.c:492
+#: gio/gdbusaddress.c:495
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” does not contain an equal "
@@ -419,13 +429,13 @@ msgid ""
 msgstr ""
 "Pár klíč/hodnota %d, „%s“, v prvku adresy „%s“ neobsahuje znak rovná se"
 
-#: gio/gdbusaddress.c:503
+#: gio/gdbusaddress.c:506
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” must not have an empty key"
 msgstr "Pár klíč/hodnota %d, „%s“ v prvku adresy „%s“ nesmí mít prázdný klíč"
 
-#: gio/gdbusaddress.c:517
+#: gio/gdbusaddress.c:520
 #, c-format
 msgid ""
 "Error unescaping key or value in Key/Value pair %d, “%s”, in address element "
@@ -434,7 +444,7 @@ msgstr ""
 "Chyba v neuvozeném klíči nebo hodnotě v páru klíč/hodnota %d, „%s“, v prvku "
 "adresy „%s“"
 
-#: gio/gdbusaddress.c:589
+#: gio/gdbusaddress.c:588
 #, c-format
 msgid ""
 "Error in address “%s” — the unix transport requires exactly one of the keys "
@@ -443,74 +453,74 @@ msgstr ""
 "Chyba v adrese „%s“ – unix transport vyžaduje jako nastavený právě jeden z "
 "klíčů „path“ nebo „abstract“"
 
-#: gio/gdbusaddress.c:625
+#: gio/gdbusaddress.c:623
 #, c-format
 msgid "Error in address “%s” — the host attribute is missing or malformed"
 msgstr "Chyba v adrese „%s“ – atribut počítače schází nebo má chybný formát"
 
-#: gio/gdbusaddress.c:639
+#: gio/gdbusaddress.c:637
 #, c-format
 msgid "Error in address “%s” — the port attribute is missing or malformed"
 msgstr "Chyba v adrese „%s“ – atribut portu schází nebo má chybný formát"
 
-#: gio/gdbusaddress.c:653
+#: gio/gdbusaddress.c:651
 #, c-format
 msgid "Error in address “%s” — the noncefile attribute is missing or malformed"
 msgstr "Chyba v adrese „%s“ – atribut noncefile schází nebo má chybný formát"
 
-#: gio/gdbusaddress.c:674
+#: gio/gdbusaddress.c:672
 msgid "Error auto-launching: "
 msgstr "Chyba při automatickém spouštění: "
 
-#: gio/gdbusaddress.c:727
+#: gio/gdbusaddress.c:725
 #, c-format
 msgid "Error opening nonce file “%s”: %s"
 msgstr "Chyba při otevírání souboru nonce „%s“: %s"
 
-#: gio/gdbusaddress.c:746
+#: gio/gdbusaddress.c:744
 #, c-format
 msgid "Error reading from nonce file “%s”: %s"
 msgstr "Chyba při čtení ze souboru nonce „%s“: %s"
 
-#: gio/gdbusaddress.c:755
+#: gio/gdbusaddress.c:753
 #, c-format
 msgid "Error reading from nonce file “%s”, expected 16 bytes, got %d"
 msgstr "Chyba při čtení ze souboru nonce „%s“, očekáváno 16 bajtů, obdrženo %d"
 
-#: gio/gdbusaddress.c:773
+#: gio/gdbusaddress.c:771
 #, c-format
 msgid "Error writing contents of nonce file “%s” to stream:"
 msgstr "Chyba při zápisu obsahu souboru nonce „%s“ do proudu:"
 
-#: gio/gdbusaddress.c:988
+#: gio/gdbusaddress.c:986
 msgid "The given address is empty"
 msgstr "Daná adresa je prázdná"
 
-#: gio/gdbusaddress.c:1101
+#: gio/gdbusaddress.c:1099
 #, c-format
-msgid "Cannot spawn a message bus when setuid"
-msgstr "Nelze spustit sběrnici zpráv bez setuid"
+msgid "Cannot spawn a message bus when AT_SECURE is set"
+msgstr "Nelze spustit sběrnici zpráv, když je nastaveno AT_SECURE"
 
-#: gio/gdbusaddress.c:1108
+#: gio/gdbusaddress.c:1106
 msgid "Cannot spawn a message bus without a machine-id: "
 msgstr "Nelze spustit sběrnici zpráv bez machine-id: "
 
-#: gio/gdbusaddress.c:1115
+#: gio/gdbusaddress.c:1113
 #, c-format
 msgid "Cannot autolaunch D-Bus without X11 $DISPLAY"
 msgstr "Nelze automaticky spustit D-Bus bez X11 $DISPLAY"
 
-#: gio/gdbusaddress.c:1157
+#: gio/gdbusaddress.c:1155
 #, c-format
 msgid "Error spawning command line “%s”: "
 msgstr "Chyba při spouštění příkazového řádku „%s“: "
 
-#: gio/gdbusaddress.c:1226
+#: gio/gdbusaddress.c:1224
 #, c-format
 msgid "Cannot determine session bus address (not implemented for this OS)"
 msgstr "Nelze určit adresu sběrnice sezení (v tomto OS neimplementováno)"
 
-#: gio/gdbusaddress.c:1375 gio/gdbusconnection.c:7334
+#: gio/gdbusaddress.c:1373 gio/gdbusconnection.c:7334
 #, c-format
 msgid ""
 "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
@@ -519,7 +529,7 @@ msgstr ""
 "Nelze určit adresu sběrnice z proměnné prostředí DBUS_STARTER_BUS_TYPE – "
 "neznámá hodnota „%s“"
 
-#: gio/gdbusaddress.c:1384 gio/gdbusconnection.c:7343
+#: gio/gdbusaddress.c:1382 gio/gdbusconnection.c:7343
 msgid ""
 "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
 "variable is not set"
@@ -527,7 +537,7 @@ msgstr ""
 "Nelze určit adresu sběrnice, jelikož proměnná prostředí "
 "DBUS_STARTER_BUS_TYPE není nastavena"
 
-#: gio/gdbusaddress.c:1394
+#: gio/gdbusaddress.c:1392
 #, c-format
 msgid "Unknown bus type %d"
 msgstr "Neznámý typ sběrnice %d"
@@ -555,86 +565,86 @@ msgstr "ID uživatele musí být stejné pro klienta i server"
 msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
 msgstr "Zrušeno přes GDBusAuthObserver::authorize-authenticated-peer"
 
-#: gio/gdbusauthmechanismsha1.c:298
+#: gio/gdbusauthmechanismsha1.c:299
 #, c-format
 msgid "Error when getting information for directory “%s”: %s"
 msgstr "Chyba při získávání informací pro složku „%s“: %s"
 
-#: gio/gdbusauthmechanismsha1.c:313
+#: gio/gdbusauthmechanismsha1.c:314
 #, c-format
 msgid ""
 "Permissions on directory “%s” are malformed. Expected mode 0700, got 0%o"
 msgstr ""
 "Oprávnění složky „%s“ mají chybný formát. Očekáván režim 0700, obdržen 0%o"
 
-#: gio/gdbusauthmechanismsha1.c:346 gio/gdbusauthmechanismsha1.c:357
+#: gio/gdbusauthmechanismsha1.c:347 gio/gdbusauthmechanismsha1.c:358
 #, c-format
 msgid "Error creating directory “%s”: %s"
 msgstr "Chyba při vytváření složky %s: %s"
 
-#: gio/gdbusauthmechanismsha1.c:359 gio/gfile.c:1062 gio/gfile.c:1300
-#: gio/gfile.c:1438 gio/gfile.c:1676 gio/gfile.c:1731 gio/gfile.c:1789
-#: gio/gfile.c:1873 gio/gfile.c:1930 gio/gfile.c:1994 gio/gfile.c:2049
-#: gio/gfile.c:3754 gio/gfile.c:3809 gio/gfile.c:4102 gio/gfile.c:4572
-#: gio/gfile.c:4983 gio/gfile.c:5068 gio/gfile.c:5158 gio/gfile.c:5255
-#: gio/gfile.c:5342 gio/gfile.c:5443 gio/gfile.c:8153 gio/gfile.c:8243
-#: gio/gfile.c:8327 gio/win32/gwinhttpfile.c:453
+#: gio/gdbusauthmechanismsha1.c:360 gio/gfile.c:1080 gio/gfile.c:1318
+#: gio/gfile.c:1456 gio/gfile.c:1694 gio/gfile.c:1749 gio/gfile.c:1807
+#: gio/gfile.c:1891 gio/gfile.c:1948 gio/gfile.c:2012 gio/gfile.c:2067
+#: gio/gfile.c:3772 gio/gfile.c:3912 gio/gfile.c:4205 gio/gfile.c:4675
+#: gio/gfile.c:5086 gio/gfile.c:5171 gio/gfile.c:5261 gio/gfile.c:5358
+#: gio/gfile.c:5445 gio/gfile.c:5546 gio/gfile.c:8375 gio/gfile.c:8465
+#: gio/gfile.c:8549 gio/win32/gwinhttpfile.c:453
 msgid "Operation not supported"
 msgstr "Operace není podporována"
 
-#: gio/gdbusauthmechanismsha1.c:402
+#: gio/gdbusauthmechanismsha1.c:403
 #, c-format
 msgid "Error opening keyring “%s” for reading: "
 msgstr "Chyba při otevírání klíčenky „%s“ ke čtení: "
 
-#: gio/gdbusauthmechanismsha1.c:425 gio/gdbusauthmechanismsha1.c:747
+#: gio/gdbusauthmechanismsha1.c:426 gio/gdbusauthmechanismsha1.c:748
 #, c-format
 msgid "Line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr "Řádek %d klíčenky na „%s“ s obsahem „%s“ má chybný formát"
 
-#: gio/gdbusauthmechanismsha1.c:439 gio/gdbusauthmechanismsha1.c:761
+#: gio/gdbusauthmechanismsha1.c:440 gio/gdbusauthmechanismsha1.c:762
 #, c-format
 msgid ""
 "First token of line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr "První symbol řádku %d klíčenky na „%s“ s obsahem „%s“ má chybný formát"
 
-#: gio/gdbusauthmechanismsha1.c:453 gio/gdbusauthmechanismsha1.c:775
+#: gio/gdbusauthmechanismsha1.c:454 gio/gdbusauthmechanismsha1.c:776
 #, c-format
 msgid ""
 "Second token of line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr "Druhý symbol řádku %d klíčenky na „%s“ s obsahem „%s“ má chybný formát"
 
-#: gio/gdbusauthmechanismsha1.c:477
+#: gio/gdbusauthmechanismsha1.c:478
 #, c-format
 msgid "Didn’t find cookie with id %d in the keyring at “%s”"
 msgstr "Nenalezena cookie s id %d v klíčence na „%s“"
 
-#: gio/gdbusauthmechanismsha1.c:523
+#: gio/gdbusauthmechanismsha1.c:524
 #, c-format
 msgid "Error creating lock file “%s”: %s"
 msgstr "Chyba při vytváření zamykacího souboru „%s“: %s"
 
-#: gio/gdbusauthmechanismsha1.c:587
+#: gio/gdbusauthmechanismsha1.c:588
 #, c-format
 msgid "Error deleting stale lock file “%s”: %s"
 msgstr "Chyba při mazání zastaralého zamykacího souboru „%s“: %s"
 
-#: gio/gdbusauthmechanismsha1.c:626
+#: gio/gdbusauthmechanismsha1.c:627
 #, c-format
 msgid "Error closing (unlinked) lock file “%s”: %s"
 msgstr "Chyba při zavírání (neodkazovaného) zamykacího souboru „%s“: %s"
 
-#: gio/gdbusauthmechanismsha1.c:637
+#: gio/gdbusauthmechanismsha1.c:638
 #, c-format
 msgid "Error unlinking lock file “%s”: %s"
 msgstr "Chyba mazámí zamykacího souboru „%s“: %s"
 
-#: gio/gdbusauthmechanismsha1.c:714
+#: gio/gdbusauthmechanismsha1.c:715
 #, c-format
 msgid "Error opening keyring “%s” for writing: "
 msgstr "Chyba při otevírání klíčenky „%s“ k zápisu: "
 
-#: gio/gdbusauthmechanismsha1.c:908
+#: gio/gdbusauthmechanismsha1.c:909
 #, c-format
 msgid "(Additionally, releasing the lock for “%s” also failed: %s) "
 msgstr "(Navíc selhalo také uvolnění zámku pro „%s“: %s) "
@@ -737,27 +747,27 @@ msgstr "Podstrom je již exportován pro %s"
 msgid "Object does not exist at path “%s”"
 msgstr "V cestě „%s“ objekt neexistuje"
 
-#: gio/gdbusmessage.c:1311
+#: gio/gdbusmessage.c:1301
 msgid "type is INVALID"
 msgstr "typ je INVALID"
 
-#: gio/gdbusmessage.c:1322
+#: gio/gdbusmessage.c:1312
 msgid "METHOD_CALL message: PATH or MEMBER header field is missing"
 msgstr "Zpráva METHOD_CALL: pole se záhlavím PATH nebo MEMBER schází"
 
-#: gio/gdbusmessage.c:1333
+#: gio/gdbusmessage.c:1323
 msgid "METHOD_RETURN message: REPLY_SERIAL header field is missing"
 msgstr "Zpráva METHOD_RETURN: pole se záhlavím REPLY_SERIAL schází"
 
-#: gio/gdbusmessage.c:1345
+#: gio/gdbusmessage.c:1335
 msgid "ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing"
 msgstr "Zpráva ERROR: pole se záhlavím REPLY_SERIAL nebo ERROR_NAME schází"
 
-#: gio/gdbusmessage.c:1358
+#: gio/gdbusmessage.c:1348
 msgid "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing"
 msgstr "Zpráva SIGNAL: pole se záhlavím PATH, INTERFACE nebo MEMBER schází"
 
-#: gio/gdbusmessage.c:1366
+#: gio/gdbusmessage.c:1356
 msgid ""
 "SIGNAL message: The PATH header field is using the reserved value /org/"
 "freedesktop/DBus/Local"
@@ -765,7 +775,7 @@ msgstr ""
 "Zpráva SIGNAL: pole se záhlavím PATH používá rezervovanou hodnotu /org/"
 "freedesktop/DBus/Local"
 
-#: gio/gdbusmessage.c:1374
+#: gio/gdbusmessage.c:1364
 msgid ""
 "SIGNAL message: The INTERFACE header field is using the reserved value org."
 "freedesktop.DBus.Local"
@@ -773,7 +783,7 @@ msgstr ""
 "Zpráva SIGNAL: pole se záhlavím INTERFACE používá rezervovanou hodnotu org."
 "freedesktop.DBus.Local"
 
-#: gio/gdbusmessage.c:1422 gio/gdbusmessage.c:1482
+#: gio/gdbusmessage.c:1412 gio/gdbusmessage.c:1472
 #, c-format
 msgid "Wanted to read %lu byte but only got %lu"
 msgid_plural "Wanted to read %lu bytes but only got %lu"
@@ -781,12 +791,12 @@ msgstr[0] "Zamýšlel se přečíst %lu bajt, ale obdrženo %lu"
 msgstr[1] "Zamýšlely se přečíst %lu bajty, ale obdrženo %lu"
 msgstr[2] "Zamýšlelo se přečíst %lu bajtů, ale obdrženo %lu"
 
-#: gio/gdbusmessage.c:1436
+#: gio/gdbusmessage.c:1426
 #, c-format
 msgid "Expected NUL byte after the string “%s” but found byte %d"
 msgstr "Očekáván bajt NULL za řetězcem „%s“, ale byl nalezen bajt %d"
 
-#: gio/gdbusmessage.c:1455
+#: gio/gdbusmessage.c:1445
 #, c-format
 msgid ""
 "Expected valid UTF-8 string but found invalid bytes at byte offset %d "
@@ -795,21 +805,21 @@ msgstr ""
 "Očekáván platný řetězec UTF-8, ale byly nalezeny neplatné bajty na pozici %d "
 "(délka řetězce je %d). Platný řetězec UTF-8 až do příslušného bodu byl „%s“"
 
-#: gio/gdbusmessage.c:1519 gio/gdbusmessage.c:1795 gio/gdbusmessage.c:2006
+#: gio/gdbusmessage.c:1509 gio/gdbusmessage.c:1785 gio/gdbusmessage.c:1996
 msgid "Value nested too deeply"
 msgstr "Hodnota je zanořená příliš hluboko"
 
-#: gio/gdbusmessage.c:1687
+#: gio/gdbusmessage.c:1677
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus object path"
 msgstr "Analyzovaná hodnota „%s“ není platná cesta objektu D-Bus"
 
-#: gio/gdbusmessage.c:1711
+#: gio/gdbusmessage.c:1701
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature"
 msgstr "Analyzovaná hodnota „%s“ není platný podpis D-Bus"
 
-#: gio/gdbusmessage.c:1762
+#: gio/gdbusmessage.c:1752
 #, c-format
 msgid ""
 "Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB)."
@@ -822,7 +832,7 @@ msgstr[1] ""
 msgstr[2] ""
 "Zjištěno pole o délce %u bajtů. Maximální délka je 2<<26 bajtů (64 MiB)."
 
-#: gio/gdbusmessage.c:1782
+#: gio/gdbusmessage.c:1772
 #, c-format
 msgid ""
 "Encountered array of type “a%c”, expected to have a length a multiple of %u "
@@ -831,16 +841,16 @@ msgstr ""
 "Vyskytlo se pole typu „a%c“, které by mělo mít délku v násobku %u bajtů, ale "
 "skutečná délka je %u bajtů"
 
-#: gio/gdbusmessage.c:1936 gio/gdbusmessage.c:2655
+#: gio/gdbusmessage.c:1926 gio/gdbusmessage.c:2645
 msgid "Empty structures (tuples) are not allowed in D-Bus"
 msgstr "Prázdné struktury (n-tice) nejsou na sběrnici D-Bus dovoleny"
 
-#: gio/gdbusmessage.c:1990
+#: gio/gdbusmessage.c:1980
 #, c-format
 msgid "Parsed value “%s” for variant is not a valid D-Bus signature"
 msgstr "Analyzovaná hodnota „%s“ varianty není platným podpisem D-Bus"
 
-#: gio/gdbusmessage.c:2031
+#: gio/gdbusmessage.c:2021
 #, c-format
 msgid ""
 "Error deserializing GVariant with type string “%s” from the D-Bus wire format"
@@ -848,7 +858,7 @@ msgstr ""
 "Chyba při rušení serializace GVariant s řetězcem typu „%s“ z přenosového "
 "formátu D-Bus"
 
-#: gio/gdbusmessage.c:2216
+#: gio/gdbusmessage.c:2206
 #, c-format
 msgid ""
 "Invalid endianness value. Expected 0x6c (“l”) or 0x42 (“B”) but found value "
@@ -857,27 +867,27 @@ msgstr ""
 "Neplatná hodnota endianity. Očekávána 0x6c („l“) nebo 0x42 („B“), ale "
 "nalezena hodnota 0x%02x"
 
-#: gio/gdbusmessage.c:2235
+#: gio/gdbusmessage.c:2225
 #, c-format
 msgid "Invalid major protocol version. Expected 1 but found %d"
 msgstr "Neplatná verze hlavního protokolu. Očekávána 1, ale nalezena %d"
 
-#: gio/gdbusmessage.c:2293 gio/gdbusmessage.c:2891
+#: gio/gdbusmessage.c:2283 gio/gdbusmessage.c:2881
 msgid "Signature header found but is not of type signature"
 msgstr "Byla nalezena hlavička podpisu, ale není typu podpis"
 
-#: gio/gdbusmessage.c:2305
+#: gio/gdbusmessage.c:2295
 #, c-format
 msgid "Signature header with signature “%s” found but message body is empty"
 msgstr ""
 "Byla nalezena hlavička podpisu s podpisem „%s“, ale tělo zprávy je prázdné"
 
-#: gio/gdbusmessage.c:2320
+#: gio/gdbusmessage.c:2310
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature (for body)"
 msgstr "Analyzovaná hodnota „%s“ není platným podpisem D-Bus (pro tělo)"
 
-#: gio/gdbusmessage.c:2352
+#: gio/gdbusmessage.c:2342
 #, 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"
@@ -885,11 +895,11 @@ msgstr[0] "Ve zprávě není hlavička s podpisem, ale tělo zprávy má %u bajt
 msgstr[1] "Ve zprávě není hlavička s podpisem, ale tělo zprávy má %u bajty"
 msgstr[2] "Ve zprávě není hlavička s podpisem, ale tělo zprávy má %u bajtů"
 
-#: gio/gdbusmessage.c:2362
+#: gio/gdbusmessage.c:2352
 msgid "Cannot deserialize message: "
 msgstr "Nelze zrušit serializaci zprávy: "
 
-#: gio/gdbusmessage.c:2708
+#: gio/gdbusmessage.c:2698
 #, c-format
 msgid ""
 "Error serializing GVariant with type string “%s” to the D-Bus wire format"
@@ -897,75 +907,75 @@ msgstr ""
 "Chyba při serializaci GVariant s řetězcem typu „%s“ do přenosového formátu D-"
 "Bus"
 
-#: gio/gdbusmessage.c:2845
+#: gio/gdbusmessage.c:2835
 #, c-format
 msgid ""
 "Number of file descriptors in message (%d) differs from header field (%d)"
 msgstr ""
 "Počet popisovačů souborů ve zprávě (%d) se liší od pole v hlavičce (%d)"
 
-#: gio/gdbusmessage.c:2853
+#: gio/gdbusmessage.c:2843
 msgid "Cannot serialize message: "
 msgstr "Nelze serializovat zprávu: "
 
-#: gio/gdbusmessage.c:2906
+#: gio/gdbusmessage.c:2896
 #, c-format
 msgid "Message body has signature “%s” but there is no signature header"
 msgstr "Tělo zprávy má podpis „%s“, ale záhlaví s podpisem neexistuje"
 
-#: gio/gdbusmessage.c:2916
+#: gio/gdbusmessage.c:2906
 #, c-format
 msgid ""
 "Message body has type signature “%s” but signature in the header field is "
 "“%s”"
 msgstr "Tělo zprávy má podpis typu „%s“, ale podpis v poli se záhlavím je „%s“"
 
-#: gio/gdbusmessage.c:2932
+#: gio/gdbusmessage.c:2922
 #, c-format
 msgid "Message body is empty but signature in the header field is “(%s)”"
 msgstr "Tělo zprávy je prázdné, ale podpis v poli se záhlavím je „(%s)“"
 
-#: gio/gdbusmessage.c:3487
+#: gio/gdbusmessage.c:3477
 #, c-format
 msgid "Error return with body of type “%s”"
 msgstr "Navrácena chyba s tělem typu „%s“"
 
-#: gio/gdbusmessage.c:3495
+#: gio/gdbusmessage.c:3485
 msgid "Error return with empty body"
 msgstr "Navrácena chyba s prázdným tělem"
 
-#: gio/gdbusprivate.c:2246
+#: gio/gdbusprivate.c:2185
 #, c-format
 msgid "(Type any character to close this window)\n"
 msgstr "(Zmáčknutím libovolného znaku okno zavřete)\n"
 
-#: gio/gdbusprivate.c:2420
+#: gio/gdbusprivate.c:2371
 #, c-format
 msgid "Session dbus not running, and autolaunch failed"
 msgstr "Služba dbus sezení neběží a automatické spuštění selhalo"
 
-#: gio/gdbusprivate.c:2443
+#: gio/gdbusprivate.c:2394
 #, c-format
 msgid "Unable to get Hardware profile: %s"
 msgstr "Nelze získat profil hardwaru: %s"
 
 #. Translators: Both placeholders are file paths
-#: gio/gdbusprivate.c:2494
+#: gio/gdbusprivate.c:2445
 #, c-format
 msgid "Unable to load %s or %s: "
 msgstr "Nelze načíst %s: %s"
 
-#: gio/gdbusproxy.c:1569
+#: gio/gdbusproxy.c:1573
 #, c-format
 msgid "Error calling StartServiceByName for %s: "
 msgstr "Chyba při volání StartServiceByName pro %s: "
 
-#: gio/gdbusproxy.c:1592
+#: gio/gdbusproxy.c:1596
 #, c-format
 msgid "Unexpected reply %d from StartServiceByName(\"%s\") method"
 msgstr "Neočekávaná odpověď %d od metody StartServiceByName(„%s“)"
 
-#: gio/gdbusproxy.c:2699 gio/gdbusproxy.c:2834
+#: gio/gdbusproxy.c:2707 gio/gdbusproxy.c:2842
 #, c-format
 msgid ""
 "Cannot invoke method; proxy is for the well-known name %s without an owner, "
@@ -1021,13 +1031,13 @@ msgstr ""
 "Nápovědu k jednotlivým příkazům získáte použitím „%s PŘÍKAZ --help“.\n"
 
 #: gio/gdbus-tool.c:201 gio/gdbus-tool.c:273 gio/gdbus-tool.c:345
-#: gio/gdbus-tool.c:369 gio/gdbus-tool.c:859 gio/gdbus-tool.c:1236
-#: gio/gdbus-tool.c:1724
+#: gio/gdbus-tool.c:369 gio/gdbus-tool.c:859 gio/gdbus-tool.c:1244
+#: gio/gdbus-tool.c:1732
 #, c-format
 msgid "Error: %s\n"
 msgstr "Chyba: %s\n"
 
-#: gio/gdbus-tool.c:212 gio/gdbus-tool.c:286 gio/gdbus-tool.c:1740
+#: gio/gdbus-tool.c:212 gio/gdbus-tool.c:286 gio/gdbus-tool.c:1748
 #, c-format
 msgid "Error parsing introspection XML: %s\n"
 msgstr "Chyba při analýze introspection XML: %s\n"
@@ -1037,8 +1047,8 @@ msgstr "Chyba při analýze introspection XML: %s\n"
 msgid "Error: %s is not a valid name\n"
 msgstr "Chyba: %s není platným názvem\n"
 
-#: gio/gdbus-tool.c:255 gio/gdbus-tool.c:745 gio/gdbus-tool.c:1060
-#: gio/gdbus-tool.c:1890 gio/gdbus-tool.c:2130
+#: gio/gdbus-tool.c:255 gio/gdbus-tool.c:745 gio/gdbus-tool.c:1063
+#: gio/gdbus-tool.c:1898 gio/gdbus-tool.c:2138
 #, c-format
 msgid "Error: %s is not a valid object path\n"
 msgstr "Chyba: %s není platnou cestou objektu\n"
@@ -1104,8 +1114,8 @@ msgstr "Název signálu a rozhraní"
 msgid "Emit a signal."
 msgstr "Vyslat signál."
 
-#: gio/gdbus-tool.c:683 gio/gdbus-tool.c:997 gio/gdbus-tool.c:1827
-#: gio/gdbus-tool.c:2059 gio/gdbus-tool.c:2279
+#: gio/gdbus-tool.c:683 gio/gdbus-tool.c:1000 gio/gdbus-tool.c:1835
+#: gio/gdbus-tool.c:2067 gio/gdbus-tool.c:2287
 #, c-format
 msgid "Error connecting: %s\n"
 msgstr "Chyba při spojení: %s\n"
@@ -1115,7 +1125,7 @@ msgstr "Chyba při spojení: %s\n"
 msgid "Error: %s is not a valid unique bus name.\n"
 msgstr "Chyba: %s není platným jedinečným názvem sběrnice.\n"
 
-#: gio/gdbus-tool.c:722 gio/gdbus-tool.c:1040 gio/gdbus-tool.c:1870
+#: gio/gdbus-tool.c:722 gio/gdbus-tool.c:1043 gio/gdbus-tool.c:1878
 msgid "Error: Object path is not specified\n"
 msgstr "Chyba: Není určena žádná cesta k objektu\n"
 
@@ -1139,7 +1149,7 @@ msgid "Error: %s is not a valid member name\n"
 msgstr "Chyba: %s není platným názvem členu\n"
 
 #. Use the original non-"parse-me-harder" error
-#: gio/gdbus-tool.c:834 gio/gdbus-tool.c:1172
+#: gio/gdbus-tool.c:834 gio/gdbus-tool.c:1175
 #, c-format
 msgid "Error parsing parameter %d: %s\n"
 msgstr "Chyba při analyzování parametru %d: %s\n"
@@ -1149,101 +1159,105 @@ msgstr "Chyba při analyzování parametru %d: %s\n"
 msgid "Error flushing connection: %s\n"
 msgstr "Chyba při vyprazdňování spojení: %s\n"
 
-#: gio/gdbus-tool.c:893
+#: gio/gdbus-tool.c:894
 msgid "Destination name to invoke method on"
 msgstr "Název cíle, u kterého se má spustit metoda"
 
-#: gio/gdbus-tool.c:894
+#: gio/gdbus-tool.c:895
 msgid "Object path to invoke method on"
 msgstr "Cesta objektu, u kterého se má spustit metoda"
 
-#: gio/gdbus-tool.c:895
+#: gio/gdbus-tool.c:896
 msgid "Method and interface name"
 msgstr "Název metody a rozhraní"
 
-#: gio/gdbus-tool.c:896
+#: gio/gdbus-tool.c:897
 msgid "Timeout in seconds"
 msgstr "Časový limit v sekundách"
 
-#: gio/gdbus-tool.c:942
+#: gio/gdbus-tool.c:898
+msgid "Allow interactive authorization"
+msgstr "Povolit interaktivní autorizaci"
+
+#: gio/gdbus-tool.c:945
 msgid "Invoke a method on a remote object."
 msgstr "Spustit metodu na vzdáleném objektu."
 
-#: gio/gdbus-tool.c:1014 gio/gdbus-tool.c:1844 gio/gdbus-tool.c:2084
+#: gio/gdbus-tool.c:1017 gio/gdbus-tool.c:1852 gio/gdbus-tool.c:2092
 msgid "Error: Destination is not specified\n"
 msgstr "Chyba: Není určen žádný cíl\n"
 
-#: gio/gdbus-tool.c:1025 gio/gdbus-tool.c:1861 gio/gdbus-tool.c:2095
+#: gio/gdbus-tool.c:1028 gio/gdbus-tool.c:1869 gio/gdbus-tool.c:2103
 #, c-format
 msgid "Error: %s is not a valid bus name\n"
 msgstr "Chyba: %s není platným názvem sběrnice\n"
 
-#: gio/gdbus-tool.c:1075
+#: gio/gdbus-tool.c:1078
 msgid "Error: Method name is not specified\n"
 msgstr "Chyba: Není určen název metody\n"
 
-#: gio/gdbus-tool.c:1086
+#: gio/gdbus-tool.c:1089
 #, c-format
 msgid "Error: Method name “%s” is invalid\n"
 msgstr "Chyba: Název metody „%s“ je neplatný\n"
 
-#: gio/gdbus-tool.c:1164
+#: gio/gdbus-tool.c:1167
 #, c-format
 msgid "Error parsing parameter %d of type “%s”: %s\n"
 msgstr "Chyba při analyzování parametru %d typu „%s“: %s\n"
 
-#: gio/gdbus-tool.c:1190
+#: gio/gdbus-tool.c:1193
 #, c-format
 msgid "Error adding handle %d: %s\n"
 msgstr "Chyba při přidávání obsluhy %d: %s\n"
 
-#: gio/gdbus-tool.c:1686
+#: gio/gdbus-tool.c:1694
 msgid "Destination name to introspect"
 msgstr "Název cíle, u kterého provést introspection"
 
-#: gio/gdbus-tool.c:1687
+#: gio/gdbus-tool.c:1695
 msgid "Object path to introspect"
 msgstr "Cesta objektu, u které provést introspection"
 
-#: gio/gdbus-tool.c:1688
+#: gio/gdbus-tool.c:1696
 msgid "Print XML"
 msgstr "Vypsat XML"
 
-#: gio/gdbus-tool.c:1689
+#: gio/gdbus-tool.c:1697
 msgid "Introspect children"
 msgstr "Provést introspection potomka"
 
-#: gio/gdbus-tool.c:1690
+#: gio/gdbus-tool.c:1698
 msgid "Only print properties"
 msgstr "Vypsat pouze vlastnosti"
 
-#: gio/gdbus-tool.c:1779
+#: gio/gdbus-tool.c:1787
 msgid "Introspect a remote object."
 msgstr "Provést introspection vzdáleného objektu."
 
-#: gio/gdbus-tool.c:1985
+#: gio/gdbus-tool.c:1993
 msgid "Destination name to monitor"
 msgstr "Název cíle určený ke sledování"
 
-#: gio/gdbus-tool.c:1986
+#: gio/gdbus-tool.c:1994
 msgid "Object path to monitor"
 msgstr "Cesta objektu určená ke sledování"
 
-#: gio/gdbus-tool.c:2011
+#: gio/gdbus-tool.c:2019
 msgid "Monitor a remote object."
 msgstr "Sledovat vzdálený objekt."
 
-#: gio/gdbus-tool.c:2069
+#: gio/gdbus-tool.c:2077
 msgid "Error: can’t monitor a non-message-bus connection\n"
 msgstr "Chyba: nelze monitorovat připojení na sběrnici bez zpráv\n"
 
-#: gio/gdbus-tool.c:2193
+#: gio/gdbus-tool.c:2201
 msgid "Service to activate before waiting for the other one (well-known name)"
 msgstr ""
 "Služba, která se má aktivovat před čekáním na jinou službu (oficiálně známý "
 "název)"
 
-#: gio/gdbus-tool.c:2196
+#: gio/gdbus-tool.c:2204
 msgid ""
 "Timeout to wait for before exiting with an error (seconds); 0 for no timeout "
 "(default)"
@@ -1251,63 +1265,68 @@ msgstr ""
 "Časové omezení čekaní, po kterém se skončí s chybou (v sekundách). 0 znamená "
 "bez omezení (výchozí)"
 
-#: gio/gdbus-tool.c:2244
+#: gio/gdbus-tool.c:2252
 msgid "[OPTION…] BUS-NAME"
 msgstr "[PŘEPÍNAČ…] NÁZEV-SBĚRNICE"
 
-#: gio/gdbus-tool.c:2245
+#: gio/gdbus-tool.c:2253
 msgid "Wait for a bus name to appear."
 msgstr "Čekat, než se objeví název sběrnice."
 
-#: gio/gdbus-tool.c:2321
+#: gio/gdbus-tool.c:2329
 msgid "Error: A service to activate for must be specified.\n"
 msgstr "Chyba: Musí být určena služba, pro kterou provádíte aktivaci.\n"
 
-#: gio/gdbus-tool.c:2326
+#: gio/gdbus-tool.c:2334
 msgid "Error: A service to wait for must be specified.\n"
 msgstr "Chyba: Musí být určena služba, na kterou čekáte.\n"
 
-#: gio/gdbus-tool.c:2331
+#: gio/gdbus-tool.c:2339
 msgid "Error: Too many arguments.\n"
 msgstr "Chyba: Příliš mnoho argumentů.\n"
 
-#: gio/gdbus-tool.c:2339 gio/gdbus-tool.c:2346
+#: gio/gdbus-tool.c:2347 gio/gdbus-tool.c:2354
 #, c-format
 msgid "Error: %s is not a valid well-known bus name.\n"
 msgstr "Chyba: %s není platným oficiálně známým názvem sběrnice.\n"
 
-#: gio/gdesktopappinfo.c:2106 gio/gdesktopappinfo.c:4935
+#: gio/gdebugcontrollerdbus.c:203
+#, c-format
+msgid "Not authorized to change debug settings"
+msgstr "Neautorizováno ke změnám ladicích nastavení"
+
+#: gio/gdesktopappinfo.c:2174 gio/gdesktopappinfo.c:5099
 msgid "Unnamed"
 msgstr "Bez názvu"
 
-#: gio/gdesktopappinfo.c:2516
+#: gio/gdesktopappinfo.c:2584
 msgid "Desktop file didn’t specify Exec field"
 msgstr "V souboru .desktop není určeno pole Exec"
 
-#: gio/gdesktopappinfo.c:2804
+#: gio/gdesktopappinfo.c:2892
 msgid "Unable to find terminal required for application"
 msgstr "Nezdařilo se najít  terminál vyžadovaný pro aplikaci"
 
-#: gio/gdesktopappinfo.c:3455
+#: gio/gdesktopappinfo.c:3619
 #, c-format
 msgid "Can’t create user application configuration folder %s: %s"
 msgstr "Nezdařilo se vytvořit složku %s s uživatelským nastavením aplikace: %s"
 
-#: gio/gdesktopappinfo.c:3459
+#: gio/gdesktopappinfo.c:3623
 #, c-format
 msgid "Can’t create user MIME configuration folder %s: %s"
 msgstr "Nezdařilo se vytvořit složku %s s uživatelským nastavením MIME: %s"
 
-#: gio/gdesktopappinfo.c:3701 gio/gdesktopappinfo.c:3725
+#: gio/gdesktopappinfo.c:3865 gio/gdesktopappinfo.c:3889
 msgid "Application information lacks an identifier"
 msgstr "Informace o aplikaci postrádá identifikátor"
 
-#: gio/gdesktopappinfo.c:3961
+#: gio/gdesktopappinfo.c:4125
 #, c-format
 msgid "Can’t create user desktop file %s"
 msgstr "Nezdařilo se vytvořit uživatelský soubor .desktop %s"
 
-#: gio/gdesktopappinfo.c:4097
+#: gio/gdesktopappinfo.c:4261
 #, c-format
 msgid "Custom definition for %s"
 msgstr "Vlastní definice %s"
@@ -1335,7 +1354,7 @@ msgstr "mechanika neumí spuštění"
 msgid "drive doesn’t implement stop"
 msgstr "mechanika neumí zastavení"
 
-#: gio/gdtlsconnection.c:1153 gio/gtlsconnection.c:920
+#: gio/gdtlsconnection.c:1186 gio/gtlsconnection.c:955
 msgid "TLS backend does not implement TLS binding retrieval"
 msgstr "Knihovna TLS neimplementuje zjišťování vazeb TLS"
 
@@ -1376,74 +1395,74 @@ msgstr "Očekáváno GEmblem u GEmblemedIcon"
 #. * trying to find the enclosing (user visible)
 #. * mount of a file, but none exists.
 #.
-#: gio/gfile.c:1561
+#: gio/gfile.c:1579
 msgid "Containing mount does not exist"
 msgstr "Obsahující připojené neexistuje"
 
-#: gio/gfile.c:2608 gio/glocalfile.c:2486
+#: gio/gfile.c:2626 gio/glocalfile.c:2486
 msgid "Can’t copy over directory"
 msgstr "Nelze kopírovat nad složku"
 
-#: gio/gfile.c:2668
+#: gio/gfile.c:2686
 msgid "Can’t copy directory over directory"
 msgstr "Nelze kopírovat složku nad složku"
 
-#: gio/gfile.c:2676
+#: gio/gfile.c:2694
 msgid "Target file exists"
 msgstr "Cílový soubor existuje"
 
-#: gio/gfile.c:2695
+#: gio/gfile.c:2713
 msgid "Can’t recursively copy directory"
 msgstr "Složku nelze kopírovat rekurzivně"
 
 # For splice(), see http://en.wikipedia.org/w/index.php?title=Splice_(system_call)&oldid=334434835
-#: gio/gfile.c:2996
+#: gio/gfile.c:3014
 msgid "Splice not supported"
 msgstr "splice() není podporováno"
 
-#: gio/gfile.c:3000
+#: gio/gfile.c:3018
 #, c-format
 msgid "Error splicing file: %s"
 msgstr "Chyba při spojování souboru: %s"
 
-#: gio/gfile.c:3152
+#: gio/gfile.c:3170
 msgid "Copy (reflink/clone) between mounts is not supported"
 msgstr "Kopírování (reflink/clone) mezi připojeními není podporováno"
 
-#: gio/gfile.c:3156
+#: gio/gfile.c:3174
 msgid "Copy (reflink/clone) is not supported or invalid"
 msgstr "Kopírování (reflink/clone) není podporováno nebo je neplatné"
 
-#: gio/gfile.c:3161
+#: gio/gfile.c:3179
 msgid "Copy (reflink/clone) is not supported or didn’t work"
 msgstr "Kopírování (reflink/clone) není podporováno nebo neproběhlo správně"
 
-#: gio/gfile.c:3226
+#: gio/gfile.c:3244
 msgid "Can’t copy special file"
 msgstr "Nelze kopírovat zvláštní soubor"
 
-#: gio/gfile.c:4035
+#: gio/gfile.c:4138
 msgid "Invalid symlink value given"
 msgstr "Zadaný symbolický odkaz je neplatný"
 
-#: gio/gfile.c:4045 glib/gfileutils.c:2333
+#: gio/gfile.c:4148 glib/gfileutils.c:2333
 msgid "Symbolic links not supported"
 msgstr "Symbolické odkazy nejsou podporovány"
 
-#: gio/gfile.c:4213
+#: gio/gfile.c:4316
 msgid "Trash not supported"
 msgstr "Zahozené není podporováno"
 
-#: gio/gfile.c:4325
+#: gio/gfile.c:4428
 #, c-format
 msgid "File names cannot contain “%c”"
 msgstr "Názvy souborů nemohou obsahovat „%c“"
 
-#: gio/gfile.c:6806 gio/gvolume.c:364
+#: gio/gfile.c:7028 gio/gvolume.c:364
 msgid "volume doesn’t implement mount"
 msgstr "svazek neumí připojení"
 
-#: gio/gfile.c:6920 gio/gfile.c:6968
+#: gio/gfile.c:7142 gio/gfile.c:7190
 msgid "No application is registered as handling this file"
 msgstr "Žádná aplikace není zaregistrována k obsluze tohoto souboru"
 
@@ -1488,7 +1507,7 @@ msgstr "Oříznutí není možné ve vstupním datovém proudu"
 msgid "Truncate not supported on stream"
 msgstr "Oříznutí není v datovém proudu podporováno"
 
-#: gio/ghttpproxy.c:91 gio/gresolver.c:443 gio/gresolver.c:596
+#: gio/ghttpproxy.c:91 gio/gresolver.c:458 gio/gresolver.c:611
 #: glib/gconvert.c:1825
 msgid "Invalid hostname"
 msgstr "Neplatný název počítače"
@@ -1575,7 +1594,7 @@ msgid "Could not parse “%s” as IP address mask"
 msgstr "Nelze zpracovat „%s“ jak masku adresy IP"
 
 #: gio/ginetsocketaddress.c:203 gio/ginetsocketaddress.c:220
-#: gio/gnativesocketaddress.c:109 gio/gunixsocketaddress.c:221
+#: gio/gnativesocketaddress.c:109 gio/gunixsocketaddress.c:228
 msgid "Not enough space for socket address"
 msgstr "Adresa soketu nemá dostatek místa"
 
@@ -2410,15 +2429,15 @@ msgstr "Chyba při komprimaci souboru „%s“"
 msgid "text may not appear inside <%s>"
 msgstr "text nemůže být umístěn uvnitř <%s>"
 
-#: gio/glib-compile-resources.c:737 gio/glib-compile-schemas.c:2172
+#: gio/glib-compile-resources.c:819 gio/glib-compile-schemas.c:2172
 msgid "Show program version and exit"
 msgstr "Zobrazit verzi programu a skončit"
 
-#: gio/glib-compile-resources.c:738
+#: gio/glib-compile-resources.c:820
 msgid "Name of the output file"
 msgstr "Název výstupního souboru"
 
-#: gio/glib-compile-resources.c:739
+#: gio/glib-compile-resources.c:821
 msgid ""
 "The directories to load files referenced in FILE from (default: current "
 "directory)"
@@ -2426,48 +2445,48 @@ msgstr ""
 "Složka, ze které mají být čteny soubory odkazované v SOUBOR (výchozí je "
 "aktuální složka)"
 
-#: gio/glib-compile-resources.c:739 gio/glib-compile-schemas.c:2173
+#: gio/glib-compile-resources.c:821 gio/glib-compile-schemas.c:2173
 #: gio/glib-compile-schemas.c:2202
 msgid "DIRECTORY"
 msgstr "SLOŽKA"
 
-#: gio/glib-compile-resources.c:740
+#: gio/glib-compile-resources.c:822
 msgid ""
 "Generate output in the format selected for by the target filename extension"
 msgstr ""
 "Generovat výstup ve formátu vybraného podle přípony v názvu cílového souboru"
 
-#: gio/glib-compile-resources.c:741
+#: gio/glib-compile-resources.c:823
 msgid "Generate source header"
 msgstr "Generovat hlavičkový soubor"
 
-#: gio/glib-compile-resources.c:742
+#: gio/glib-compile-resources.c:824
 msgid "Generate source code used to link in the resource file into your code"
 msgstr ""
 "Generovat zdrojový kód, který se použije ve vašem zdrojovém kódu jako odkaz "
 "na soubor prostředků"
 
-#: gio/glib-compile-resources.c:743
+#: gio/glib-compile-resources.c:825
 msgid "Generate dependency list"
 msgstr "Generovat seznam závislostí"
 
-#: gio/glib-compile-resources.c:744
+#: gio/glib-compile-resources.c:826
 msgid "Name of the dependency file to generate"
 msgstr "Název souboru se závislostmi, který se má vygenerovat"
 
-#: gio/glib-compile-resources.c:745
+#: gio/glib-compile-resources.c:827
 msgid "Include phony targets in the generated dependency file"
 msgstr "Do generovaných souborů závislostí zahrnout i fiktivní cíle"
 
-#: gio/glib-compile-resources.c:746
+#: gio/glib-compile-resources.c:828
 msgid "Don’t automatically create and register resource"
 msgstr "Prostředek nevytvářet a neregistrovat automaticky"
 
-#: gio/glib-compile-resources.c:747
+#: gio/glib-compile-resources.c:829
 msgid "Don’t export functions; declare them G_GNUC_INTERNAL"
 msgstr "Neexportovat funkce; označit je za G_GNUC_INTERNAL"
 
-#: gio/glib-compile-resources.c:748
+#: gio/glib-compile-resources.c:830
 msgid ""
 "Don’t embed resource data in the C file; assume it's linked externally "
 "instead"
@@ -2475,11 +2494,15 @@ msgstr ""
 "Nevkládat data prostředků do souborů C; předpokládat, že jsou místo toho "
 "navázána externě"
 
-#: gio/glib-compile-resources.c:749
+#: gio/glib-compile-resources.c:831
 msgid "C identifier name used for the generated source code"
 msgstr "Název identifikátoru C použitý ke generování zdrojového kódu"
 
-#: gio/glib-compile-resources.c:775
+#: gio/glib-compile-resources.c:832
+msgid "The target C compiler (default: the CC environment variable)"
+msgstr "Kompilátor C pro cíl (výchozí: proměnná prostředí CC)"
+
+#: gio/glib-compile-resources.c:858
 msgid ""
 "Compile a resource specification into a resource file.\n"
 "Resource specification files have the extension .gresource.xml,\n"
@@ -2489,7 +2512,7 @@ msgstr ""
 "Soubory se specifikacemi prostředků musí mít příponu .gschema.xml,\n"
 "a soubor prostředků musí mít příponu .gresource."
 
-#: gio/glib-compile-resources.c:797
+#: gio/glib-compile-resources.c:880
 msgid "You should give exactly one file name\n"
 msgstr "Měl by být zadán právě jeden název souboru\n"
 
@@ -3286,7 +3309,7 @@ msgid "Error truncating file: %s"
 msgstr "Chyba při zkracování souboru: %s"
 
 #: gio/glocalfileoutputstream.c:662 gio/glocalfileoutputstream.c:907
-#: gio/glocalfileoutputstream.c:1218 gio/gsubprocess.c:226
+#: gio/glocalfileoutputstream.c:1218 gio/gsubprocess.c:229
 #, c-format
 msgid "Error opening file “%s”: %s"
 msgstr "Chyba při otevírání souboru %s: %s"
@@ -3308,7 +3331,7 @@ msgstr "Soubor byl externě pozměněn"
 msgid "Error removing old file: %s"
 msgstr "Chyba při odstraňování starého souboru: %s"
 
-#: gio/gmemoryinputstream.c:474 gio/gmemoryoutputstream.c:772
+#: gio/gmemoryinputstream.c:474 gio/gmemoryoutputstream.c:762
 msgid "Invalid GSeekType supplied"
 msgstr "Poskytnut neplatný GSeekType"
 
@@ -3320,15 +3343,15 @@ msgstr "Neplatný požadavek na hledání"
 msgid "Cannot truncate GMemoryInputStream"
 msgstr "Nelze zkrátit GMemoryInputStream"
 
-#: gio/gmemoryoutputstream.c:567
+#: gio/gmemoryoutputstream.c:568
 msgid "Memory output stream not resizable"
 msgstr "Nelze měnit velikost výstupního proudu paměti"
 
-#: gio/gmemoryoutputstream.c:583
+#: gio/gmemoryoutputstream.c:584
 msgid "Failed to resize memory output stream"
 msgstr "Nelze změnit velikost výstupního proudu paměti"
 
-#: gio/gmemoryoutputstream.c:673
+#: gio/gmemoryoutputstream.c:663
 msgid ""
 "Amount of memory required to process the write is larger than available "
 "address space"
@@ -3336,11 +3359,11 @@ msgstr ""
 "Velikost paměti potřebná ke zpracování zápisu je větší než dostupný adresní "
 "prostor"
 
-#: gio/gmemoryoutputstream.c:782
+#: gio/gmemoryoutputstream.c:772
 msgid "Requested seek before the beginning of the stream"
 msgstr "Požadováno hledání před počátkem proudu"
 
-#: gio/gmemoryoutputstream.c:797
+#: gio/gmemoryoutputstream.c:787
 msgid "Requested seek beyond the end of the stream"
 msgstr "Požadováno hledání za ukončením proudu"
 
@@ -3444,18 +3467,18 @@ msgstr "Součet vektorů předaných do %s je příliš velký"
 msgid "Source stream is already closed"
 msgstr "Zdrojový proud je již ukončen"
 
-#: gio/gresolver.c:386 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
+#: gio/gresolver.c:401 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
 #, c-format
 msgid "Error resolving “%s”: %s"
 msgstr "Chyba při řešení „%s“: %s"
 
 #. Translators: The placeholder is for a function name.
-#: gio/gresolver.c:455 gio/gresolver.c:615
+#: gio/gresolver.c:470 gio/gresolver.c:630
 #, c-format
 msgid "%s not implemented"
 msgstr "Funkce %s není implementovaná"
 
-#: gio/gresolver.c:984 gio/gresolver.c:1036
+#: gio/gresolver.c:999 gio/gresolver.c:1051
 msgid "Invalid domain"
 msgstr "Neplatná doména"
 
@@ -3570,7 +3593,7 @@ msgstr ""
 msgid "  SECTION   An (optional) elf section name\n"
 msgstr "  ODDÍL     (Volitelný) název oddílu elf\n"
 
-#: gio/gresource-tool.c:565 gio/gsettings-tool.c:706
+#: gio/gresource-tool.c:565 gio/gsettings-tool.c:718
 msgid "  COMMAND   The (optional) command to explain\n"
 msgstr "  PŘÍKAZ   (Volitelný) příkaz, který má být popsán\n"
 
@@ -3603,7 +3626,7 @@ msgstr "CESTA"
 msgid "  PATH      A resource path\n"
 msgstr "  CESTA     Cesta k prostředku\n"
 
-#: gio/gsettings-tool.c:49 gio/gsettings-tool.c:70 gio/gsettings-tool.c:911
+#: gio/gsettings-tool.c:49 gio/gsettings-tool.c:70 gio/gsettings-tool.c:923
 #, c-format
 msgid "No such schema “%s”\n"
 msgstr "Schéma „%s“ neexistuje\n"
@@ -3634,35 +3657,35 @@ msgstr "Cesta musí končit lomítkem (/)\n"
 msgid "Path must not contain two adjacent slashes (//)\n"
 msgstr "Cesta nesmí obsahovat dvě po sobě jdoucí lomítka (//)\n"
 
-#: gio/gsettings-tool.c:541
+#: gio/gsettings-tool.c:553
 msgid "The provided value is outside of the valid range\n"
 msgstr "Poskytnutá hodnota je mimo platný rozsah\n"
 
-#: gio/gsettings-tool.c:548
+#: gio/gsettings-tool.c:560
 msgid "The key is not writable\n"
 msgstr "Klíč není zapisovatelný\n"
 
-#: gio/gsettings-tool.c:584
+#: gio/gsettings-tool.c:596
 msgid "List the installed (non-relocatable) schemas"
 msgstr "Vypíše nainstalovaná (nepřemístitelná) schémata"
 
-#: gio/gsettings-tool.c:590
+#: gio/gsettings-tool.c:602
 msgid "List the installed relocatable schemas"
 msgstr "Vypíše nainstalovaná přemístitelná schémata"
 
-#: gio/gsettings-tool.c:596
+#: gio/gsettings-tool.c:608
 msgid "List the keys in SCHEMA"
 msgstr "Vypíše klíče ve SCHÉMATU"
 
-#: gio/gsettings-tool.c:597 gio/gsettings-tool.c:603 gio/gsettings-tool.c:646
+#: gio/gsettings-tool.c:609 gio/gsettings-tool.c:615 gio/gsettings-tool.c:658
 msgid "SCHEMA[:PATH]"
 msgstr "SCHÉMA[:CESTA]"
 
-#: gio/gsettings-tool.c:602
+#: gio/gsettings-tool.c:614
 msgid "List the children of SCHEMA"
 msgstr "Vypíše potomky SCHÉMATU"
 
-#: gio/gsettings-tool.c:608
+#: gio/gsettings-tool.c:620
 msgid ""
 "List keys and values, recursively\n"
 "If no SCHEMA is given, list all keys\n"
@@ -3670,48 +3693,48 @@ msgstr ""
 "Vypíše klíče a hodnoty, rekurzivně\n"
 "Není-li zadáno SCHÉMA, vypíše všechny klíče\n"
 
-#: gio/gsettings-tool.c:610
+#: gio/gsettings-tool.c:622
 msgid "[SCHEMA[:PATH]]"
 msgstr "[SCHÉMA[:CESTA]]"
 
-#: gio/gsettings-tool.c:615
+#: gio/gsettings-tool.c:627
 msgid "Get the value of KEY"
 msgstr "Získá hodnotu KLÍČE"
 
-#: gio/gsettings-tool.c:616 gio/gsettings-tool.c:622 gio/gsettings-tool.c:628
-#: gio/gsettings-tool.c:640 gio/gsettings-tool.c:652
+#: gio/gsettings-tool.c:628 gio/gsettings-tool.c:634 gio/gsettings-tool.c:640
+#: gio/gsettings-tool.c:652 gio/gsettings-tool.c:664
 msgid "SCHEMA[:PATH] KEY"
 msgstr "SCHÉMA[:CESTA] KLÍČ"
 
-#: gio/gsettings-tool.c:621
+#: gio/gsettings-tool.c:633
 msgid "Query the range of valid values for KEY"
 msgstr "Dotáže se na rozsah platných hodnot KLÍČE"
 
-#: gio/gsettings-tool.c:627
+#: gio/gsettings-tool.c:639
 msgid "Query the description for KEY"
 msgstr "Dotáže se na popis KLÍČE"
 
-#: gio/gsettings-tool.c:633
+#: gio/gsettings-tool.c:645
 msgid "Set the value of KEY to VALUE"
 msgstr "Nastaví hodnotu KLÍČE k HODNOTĚ"
 
-#: gio/gsettings-tool.c:634
+#: gio/gsettings-tool.c:646
 msgid "SCHEMA[:PATH] KEY VALUE"
 msgstr "SCHÉMA[:CESTA] KLÍČ HODNOTA"
 
-#: gio/gsettings-tool.c:639
+#: gio/gsettings-tool.c:651
 msgid "Reset KEY to its default value"
 msgstr "Nastaví KLÍČ na výchozí hodnotu"
 
-#: gio/gsettings-tool.c:645
+#: gio/gsettings-tool.c:657
 msgid "Reset all keys in SCHEMA to their defaults"
 msgstr "Resetovat všechny klíče ve SCHÉMATU na výchozí hodnoty"
 
-#: gio/gsettings-tool.c:651
+#: gio/gsettings-tool.c:663
 msgid "Check if KEY is writable"
 msgstr "Zjistí, zda je KLÍČ zapisovatelný"
 
-#: gio/gsettings-tool.c:657
+#: gio/gsettings-tool.c:669
 msgid ""
 "Monitor KEY for changes.\n"
 "If no KEY is specified, monitor all keys in SCHEMA.\n"
@@ -3721,11 +3744,11 @@ msgstr ""
 "Není-li zadán KLÍČ, sleduje všechny klíče ve SCHÉMATU.\n"
 "Sledování zastavíte použitím ^C.\n"
 
-#: gio/gsettings-tool.c:660
+#: gio/gsettings-tool.c:672
 msgid "SCHEMA[:PATH] [KEY]"
 msgstr "SCHÉMA[:CESTA] [KLÍČ]"
 
-#: gio/gsettings-tool.c:672
+#: gio/gsettings-tool.c:684
 msgid ""
 "Usage:\n"
 "  gsettings --version\n"
@@ -3773,7 +3796,7 @@ msgstr ""
 "Podrobnou nápovědu získáte použitím „gsettings help PŘÍKAZ“.\n"
 "\n"
 
-#: gio/gsettings-tool.c:696
+#: gio/gsettings-tool.c:708
 #, c-format
 msgid ""
 "Usage:\n"
@@ -3788,11 +3811,11 @@ msgstr ""
 "%s\n"
 "\n"
 
-#: gio/gsettings-tool.c:702
+#: gio/gsettings-tool.c:714
 msgid "  SCHEMADIR A directory to search for additional schemas\n"
 msgstr "  SLOŽKA_SCHÉMAT Složka, ve které se mají hledat dodatečná schémata\n"
 
-#: gio/gsettings-tool.c:710
+#: gio/gsettings-tool.c:722
 msgid ""
 "  SCHEMA    The name of the schema\n"
 "  PATH      The path, for relocatable schemas\n"
@@ -3800,212 +3823,212 @@ msgstr ""
 "  SCHÉMA    Název schématu\n"
 "  CESTA     Cesta, pro přemístitelná schémata\n"
 
-#: gio/gsettings-tool.c:715
+#: gio/gsettings-tool.c:727
 msgid "  KEY       The (optional) key within the schema\n"
 msgstr "  KLÍČ      (Volitelný) klíč uvnitř schématu\n"
 
-#: gio/gsettings-tool.c:719
+#: gio/gsettings-tool.c:731
 msgid "  KEY       The key within the schema\n"
 msgstr "  KLÍČ      Klíč uvnitř schématu\n"
 
-#: gio/gsettings-tool.c:723
+#: gio/gsettings-tool.c:735
 msgid "  VALUE     The value to set\n"
 msgstr "  HODNOTA   Hodnota, která má být nastavena\n"
 
-#: gio/gsettings-tool.c:778
+#: gio/gsettings-tool.c:790
 #, c-format
 msgid "Could not load schemas from %s: %s\n"
 msgstr "Nelze nahrát schémata z  %s: %s\n"
 
-#: gio/gsettings-tool.c:790
+#: gio/gsettings-tool.c:802
 msgid "No schemas installed\n"
 msgstr "Nejsou nainstalována žádná schémata\n"
 
-#: gio/gsettings-tool.c:869
+#: gio/gsettings-tool.c:881
 msgid "Empty schema name given\n"
 msgstr "Poskytnut prázdný název schématu\n"
 
-#: gio/gsettings-tool.c:924
+#: gio/gsettings-tool.c:936
 #, c-format
 msgid "No such key “%s”\n"
 msgstr "Klíč „%s“ neexistuje\n"
 
-#: gio/gsocket.c:413
+#: gio/gsocket.c:417
 msgid "Invalid socket, not initialized"
 msgstr "Neplatný soket, nebyl spuštěn"
 
-#: gio/gsocket.c:420
+#: gio/gsocket.c:424
 #, c-format
 msgid "Invalid socket, initialization failed due to: %s"
 msgstr "Neplatný soket, spuštění selhalo kvůli: %s"
 
-#: gio/gsocket.c:428
+#: gio/gsocket.c:432
 msgid "Socket is already closed"
 msgstr "Soket je již ukončen"
 
-#: gio/gsocket.c:443 gio/gsocket.c:3190 gio/gsocket.c:4420 gio/gsocket.c:4478
+#: gio/gsocket.c:447 gio/gsocket.c:3194 gio/gsocket.c:4427 gio/gsocket.c:4485
 msgid "Socket I/O timed out"
 msgstr "Časový limit V/V soketu vypršel"
 
-#: gio/gsocket.c:578
+#: gio/gsocket.c:582
 #, c-format
 msgid "creating GSocket from fd: %s"
 msgstr "vytváří se GSocket z fd: %s"
 
-#: gio/gsocket.c:607 gio/gsocket.c:671 gio/gsocket.c:678
+#: gio/gsocket.c:611 gio/gsocket.c:675 gio/gsocket.c:682
 #, c-format
 msgid "Unable to create socket: %s"
 msgstr "Nelze vytvořit soket: %s"
 
-#: gio/gsocket.c:671
+#: gio/gsocket.c:675
 msgid "Unknown family was specified"
 msgstr "Byla zadána neznámá rodina"
 
-#: gio/gsocket.c:678
+#: gio/gsocket.c:682
 msgid "Unknown protocol was specified"
 msgstr "Byl zadán neznámý protokol"
 
-#: gio/gsocket.c:1169
+#: gio/gsocket.c:1173
 #, c-format
 msgid "Cannot use datagram operations on a non-datagram socket."
 msgstr "Nelze používat datagramové operace na nedatagramovém soketu."
 
-#: gio/gsocket.c:1186
+#: gio/gsocket.c:1190
 #, c-format
 msgid "Cannot use datagram operations on a socket with a timeout set."
 msgstr ""
 "Nelze používat datagramové operace na soketu s nastaveným časovým limitem."
 
-#: gio/gsocket.c:1993
+#: gio/gsocket.c:1997
 #, c-format
 msgid "could not get local address: %s"
 msgstr "nezdařilo se získat místní adresu: %s"
 
-#: gio/gsocket.c:2039
+#: gio/gsocket.c:2043
 #, c-format
 msgid "could not get remote address: %s"
 msgstr "nezdařilo se získat vzdálenou adresu: %s"
 
-#: gio/gsocket.c:2105
+#: gio/gsocket.c:2109
 #, c-format
 msgid "could not listen: %s"
 msgstr "nezdařilo se naslouchání: %s"
 
-#: gio/gsocket.c:2209
+#: gio/gsocket.c:2213
 #, c-format
 msgid "Error binding to address %s: %s"
 msgstr "Chyba při navázání na adresu %s: %s"
 
-#: gio/gsocket.c:2385 gio/gsocket.c:2422 gio/gsocket.c:2532 gio/gsocket.c:2557
-#: gio/gsocket.c:2620 gio/gsocket.c:2678 gio/gsocket.c:2696
+#: gio/gsocket.c:2389 gio/gsocket.c:2426 gio/gsocket.c:2536 gio/gsocket.c:2561
+#: gio/gsocket.c:2624 gio/gsocket.c:2682 gio/gsocket.c:2700
 #, c-format
 msgid "Error joining multicast group: %s"
 msgstr "Chyba připojování ke skupině hromadného vysílání: %s"
 
-#: gio/gsocket.c:2386 gio/gsocket.c:2423 gio/gsocket.c:2533 gio/gsocket.c:2558
-#: gio/gsocket.c:2621 gio/gsocket.c:2679 gio/gsocket.c:2697
+#: gio/gsocket.c:2390 gio/gsocket.c:2427 gio/gsocket.c:2537 gio/gsocket.c:2562
+#: gio/gsocket.c:2625 gio/gsocket.c:2683 gio/gsocket.c:2701
 #, c-format
 msgid "Error leaving multicast group: %s"
 msgstr "Chyba při opouštění skupiny hromadného vysílání: %s"
 
-#: gio/gsocket.c:2387
+#: gio/gsocket.c:2391
 msgid "No support for source-specific multicast"
 msgstr "Není podpora pro hromadné vysílání určené zdrojem"
 
-#: gio/gsocket.c:2534
+#: gio/gsocket.c:2538
 msgid "Unsupported socket family"
 msgstr "Nepodporovaná rodina soketů"
 
-#: gio/gsocket.c:2559
+#: gio/gsocket.c:2563
 msgid "source-specific not an IPv4 address"
 msgstr "určení zdroje není adresa IPv4"
 
-#: gio/gsocket.c:2583
+#: gio/gsocket.c:2587
 #, c-format
 msgid "Interface name too long"
 msgstr "Název rozhraní je příliš dlouhý"
 
-#: gio/gsocket.c:2596 gio/gsocket.c:2646
+#: gio/gsocket.c:2600 gio/gsocket.c:2650
 #, c-format
 msgid "Interface not found: %s"
 msgstr "Rozhraní nebylo nalezeno: %s"
 
-#: gio/gsocket.c:2622
+#: gio/gsocket.c:2626
 msgid "No support for IPv4 source-specific multicast"
 msgstr "Není podpora pro hromadné vysílání určené zdrojem IPv4"
 
-#: gio/gsocket.c:2680
+#: gio/gsocket.c:2684
 msgid "No support for IPv6 source-specific multicast"
 msgstr "Není podpora pro hromadné vysílání určené zdrojem IPv6"
 
-#: gio/gsocket.c:2889
+#: gio/gsocket.c:2893
 #, c-format
 msgid "Error accepting connection: %s"
 msgstr "Chyba při přijímání spojení: %s"
 
-#: gio/gsocket.c:3015
+#: gio/gsocket.c:3019
 msgid "Connection in progress"
 msgstr "Probíhá spojení"
 
-#: gio/gsocket.c:3066
+#: gio/gsocket.c:3070
 msgid "Unable to get pending error: "
 msgstr "Nelze získat nevyřízenou chybu: "
 
-#: gio/gsocket.c:3255
+#: gio/gsocket.c:3259
 #, c-format
 msgid "Error receiving data: %s"
 msgstr "Chyba při získávání dat: %s"
 
-#: gio/gsocket.c:3452
+#: gio/gsocket.c:3456
 #, c-format
 msgid "Error sending data: %s"
 msgstr "Chyba při odesílání dat: %s"
 
-#: gio/gsocket.c:3639
+#: gio/gsocket.c:3643
 #, c-format
 msgid "Unable to shutdown socket: %s"
 msgstr "Nelze ukončit soket: %s"
 
-#: gio/gsocket.c:3720
+#: gio/gsocket.c:3724
 #, c-format
 msgid "Error closing socket: %s"
 msgstr "Chyba při zavírání soketu: %s"
 
-#: gio/gsocket.c:4413
+#: gio/gsocket.c:4420
 #, c-format
 msgid "Waiting for socket condition: %s"
 msgstr "Čeká se na stav soketu: %s"
 
-#: gio/gsocket.c:4804 gio/gsocket.c:4820 gio/gsocket.c:4833
+#: gio/gsocket.c:4810 gio/gsocket.c:4826 gio/gsocket.c:4839
 #, c-format
 msgid "Unable to send message: %s"
 msgstr "Nezdařilo se odeslat zprávu: %s"
 
-#: gio/gsocket.c:4805 gio/gsocket.c:4821 gio/gsocket.c:4834
+#: gio/gsocket.c:4811 gio/gsocket.c:4827 gio/gsocket.c:4840
 msgid "Message vectors too large"
 msgstr "Vektory zprávy jsou příliš rozsáhlé"
 
-#: gio/gsocket.c:4850 gio/gsocket.c:4852 gio/gsocket.c:4999 gio/gsocket.c:5084
-#: gio/gsocket.c:5262 gio/gsocket.c:5302 gio/gsocket.c:5304
+#: gio/gsocket.c:4856 gio/gsocket.c:4858 gio/gsocket.c:5005 gio/gsocket.c:5090
+#: gio/gsocket.c:5268 gio/gsocket.c:5308 gio/gsocket.c:5310
 #, c-format
 msgid "Error sending message: %s"
 msgstr "Chyba při odesílání zprávy: %s"
 
-#: gio/gsocket.c:5026
+#: gio/gsocket.c:5032
 msgid "GSocketControlMessage not supported on Windows"
 msgstr "GSocketControlMessage nepodporováno na Windows"
 
-#: gio/gsocket.c:5495 gio/gsocket.c:5571 gio/gsocket.c:5797
+#: gio/gsocket.c:5505 gio/gsocket.c:5581 gio/gsocket.c:5807
 #, c-format
 msgid "Error receiving message: %s"
 msgstr "Chyba při získávání zprávy: %s"
 
-#: gio/gsocket.c:6070 gio/gsocket.c:6081 gio/gsocket.c:6127
+#: gio/gsocket.c:6090 gio/gsocket.c:6101 gio/gsocket.c:6164
 #, c-format
 msgid "Unable to read socket credentials: %s"
 msgstr "Nelze číst pověření k soketu: %s"
 
-#: gio/gsocket.c:6136
+#: gio/gsocket.c:6173
 msgid "g_socket_get_credentials not implemented for this OS"
 msgstr "g_socket_get_credentials není u tohoto OS implementováno"
 
@@ -4023,12 +4046,12 @@ msgstr "Nelze se připojit k %s: "
 msgid "Could not connect: "
 msgstr "Nelze se připojit: "
 
-#: gio/gsocketclient.c:1162 gio/gsocketclient.c:1749
+#: gio/gsocketclient.c:1202 gio/gsocketclient.c:1793
 msgid "Proxying over a non-TCP connection is not supported."
 msgstr ""
 "Není podporován pokus o proxy přes spojení, které není založeno na TCP."
 
-#: gio/gsocketclient.c:1194 gio/gsocketclient.c:1778
+#: gio/gsocketclient.c:1234 gio/gsocketclient.c:1822
 #, c-format
 msgid "Proxy protocol “%s” is not supported."
 msgstr "Protokol proxy „%s“ není podporován."
@@ -4127,7 +4150,7 @@ msgstr "SOCKSv5 proxy nepodporuje poskytnutý typ adresy."
 msgid "Unknown SOCKSv5 proxy error."
 msgstr "Neznámá chyba SOCKSv5 proxy."
 
-#: gio/gtestdbus.c:612 glib/gspawn-win32.c:311
+#: gio/gtestdbus.c:612 glib/gspawn-win32.c:314
 #, c-format
 msgid "Failed to create pipe for communicating with child process (%s)"
 msgstr "Selhalo vytvoření roury ke komunikaci s procesem potomka (%s)"
@@ -4168,27 +4191,31 @@ msgstr "Dočasně není možné vyřešit „%s“"
 msgid "Error resolving “%s”"
 msgstr "Chyba při řešení „%s“"
 
-#: gio/gtlscertificate.c:431
+#: gio/gtlscertificate.c:478
 msgid "No PEM-encoded private key found"
 msgstr "Nebyl nalezen žádný soukromý klíč kódovaný jako PEM."
 
-#: gio/gtlscertificate.c:441
+#: gio/gtlscertificate.c:488
 msgid "Cannot decrypt PEM-encoded private key"
 msgstr "Nelze dešifrovat soukromý klíč kódovaný jako PEM"
 
-#: gio/gtlscertificate.c:452
+#: gio/gtlscertificate.c:499
 msgid "Could not parse PEM-encoded private key"
 msgstr "Nezdařilo se analyzovat soukromý klíč kódovaný jako PEM."
 
-#: gio/gtlscertificate.c:479
+#: gio/gtlscertificate.c:526
 msgid "No PEM-encoded certificate found"
 msgstr "Nebyl nalezen žádný certifikát kódovaný jako PEM."
 
-#: gio/gtlscertificate.c:488
+#: gio/gtlscertificate.c:535
 msgid "Could not parse PEM-encoded certificate"
 msgstr "Nezdařilo se analyzovat certifikát kódovaný jako PEM."
 
-#: gio/gtlscertificate.c:844
+#: gio/gtlscertificate.c:796
+msgid "The current TLS backend does not support PKCS #12"
+msgstr "Tato knihovna TLS nepodporuje PKCS #12."
+
+#: gio/gtlscertificate.c:1013
 msgid "This GTlsBackend does not support creating PKCS #11 certificates"
 msgstr "Tento GTlsBackend nepodporuje vytváření certifikátů PKCS #11."
 
@@ -4214,7 +4241,11 @@ msgstr ""
 msgid "The password entered is incorrect."
 msgstr "Zadané heslo není správné."
 
-#: gio/gunixconnection.c:166 gio/gunixconnection.c:579
+#: gio/gunixconnection.c:125
+msgid "Sending FD is not supported"
+msgstr "Odesílání popisovače souboru není podporováno"
+
+#: gio/gunixconnection.c:178 gio/gunixconnection.c:596
 #, c-format
 msgid "Expecting 1 control message, got %d"
 msgid_plural "Expecting 1 control message, got %d"
@@ -4222,11 +4253,11 @@ msgstr[0] "Očekávána 1 ovládací zpráva, získána %d"
 msgstr[1] "Očekávána 1 ovládací zpráva, získány %d"
 msgstr[2] "Očekávána 1 ovládací zpráva, získáno %d"
 
-#: gio/gunixconnection.c:182 gio/gunixconnection.c:591
+#: gio/gunixconnection.c:194 gio/gunixconnection.c:608
 msgid "Unexpected type of ancillary data"
 msgstr "Neočekávaný typ pomocných dat"
 
-#: gio/gunixconnection.c:200
+#: gio/gunixconnection.c:212
 #, c-format
 msgid "Expecting one fd, but got %d\n"
 msgid_plural "Expecting one fd, but got %d\n"
@@ -4234,37 +4265,41 @@ msgstr[0] "Očekáváno jedno fd, ale získána %d\n"
 msgstr[1] "Očekáváno jedno fd, ale získány %d\n"
 msgstr[2] "Očekáváno jedno fd, ale získáno %d\n"
 
-#: gio/gunixconnection.c:219
+#: gio/gunixconnection.c:231
 msgid "Received invalid fd"
-msgstr "Přijato neplatné fd"
+msgstr "Přijat neplatný popisovač souboru"
+
+#: gio/gunixconnection.c:238
+msgid "Receiving FD is not supported"
+msgstr "Přijímání popisovače souboru není podporováno"
 
-#: gio/gunixconnection.c:363
+#: gio/gunixconnection.c:380
 msgid "Error sending credentials: "
 msgstr "Chyba při odesílání přihlašovacích údajů: "
 
-#: gio/gunixconnection.c:520
+#: gio/gunixconnection.c:537
 #, c-format
 msgid "Error checking if SO_PASSCRED is enabled for socket: %s"
 msgstr "Chyba při kontrole, zda je SO_PASSCRED povoleno u soketu: %s"
 
-#: gio/gunixconnection.c:536
+#: gio/gunixconnection.c:553
 #, c-format
 msgid "Error enabling SO_PASSCRED: %s"
 msgstr "Chyba při povolování SO_PASSCRED: %s"
 
-#: gio/gunixconnection.c:565
+#: gio/gunixconnection.c:582
 msgid ""
 "Expecting to read a single byte for receiving credentials but read zero bytes"
 msgstr ""
 "U odeslání přihlašovacích údajů očekáváno přečtení jednoho bajtu, ale "
 "přečteno nula bajtů"
 
-#: gio/gunixconnection.c:605
+#: gio/gunixconnection.c:622
 #, c-format
 msgid "Not expecting control message, but got %d"
 msgstr "Ovládací zpráva nebyla očekávána, ale obdrženo %d"
 
-#: gio/gunixconnection.c:630
+#: gio/gunixconnection.c:647
 #, c-format
 msgid "Error while disabling SO_PASSCRED: %s"
 msgstr "Chyba při zakazování SO_PASSCRED: %s"
@@ -4280,7 +4315,7 @@ msgstr "Chyba při čtení z popisovače souboru: %s"
 msgid "Error closing file descriptor: %s"
 msgstr "Chyba při zavírání popisovače souboru: %s"
 
-#: gio/gunixmounts.c:2785 gio/gunixmounts.c:2838
+#: gio/gunixmounts.c:2782 gio/gunixmounts.c:2835
 msgid "Filesystem root"
 msgstr "Kořen systému souborů"
 
@@ -4291,7 +4326,7 @@ msgstr "Kořen systému souborů"
 msgid "Error writing to file descriptor: %s"
 msgstr "Chyba při zápisu do popisovače souboru: %s"
 
-#: gio/gunixsocketaddress.c:244
+#: gio/gunixsocketaddress.c:251
 msgid "Abstract UNIX domain socket addresses not supported on this system"
 msgstr "V tomto systému nejsou podporovány abstraktní adresy soketů domén UNIX"
 
@@ -4441,8 +4476,8 @@ msgstr "Nelze rozšířit řádek exec „%s“ pomocí URI „%s“"
 msgid "Unrepresentable character in conversion input"
 msgstr "Nereprezentovatelný znak na vstupu převodu"
 
-#: glib/gconvert.c:495 glib/gutf8.c:871 glib/gutf8.c:1083 glib/gutf8.c:1220
-#: glib/gutf8.c:1324
+#: glib/gconvert.c:495 glib/gutf8.c:886 glib/gutf8.c:1099 glib/gutf8.c:1236
+#: glib/gutf8.c:1340
 msgid "Partial character sequence at end of input"
 msgstr "Částečná posloupnost znaků na konci vstupu"
 
@@ -5012,15 +5047,15 @@ msgstr "Kanál ukončen částí znaku"
 msgid "Can’t do a raw read in g_io_channel_read_to_end"
 msgstr "Nelze přímo číst v g_io_channel_read_to_end"
 
-#: glib/gkeyfile.c:791
+#: glib/gkeyfile.c:794
 msgid "Valid key file could not be found in search dirs"
 msgstr "V složkách hledání nelze najít platný soubor klíče"
 
-#: glib/gkeyfile.c:828
+#: glib/gkeyfile.c:831
 msgid "Not a regular file"
 msgstr "Není obyčejným souborem"
 
-#: glib/gkeyfile.c:1283
+#: glib/gkeyfile.c:1289
 #, c-format
 msgid ""
 "Key file contains line “%s” which is not a key-value pair, group, or comment"
@@ -5028,50 +5063,50 @@ msgstr ""
 "Soubor klíče obsahuje „%s“, což není dvojice klíč-hodnota, skupina ani "
 "komentář"
 
-#: glib/gkeyfile.c:1340
+#: glib/gkeyfile.c:1346
 #, c-format
 msgid "Invalid group name: %s"
 msgstr "Neplatný název skupiny: %s"
 
-#: glib/gkeyfile.c:1362
+#: glib/gkeyfile.c:1370
 msgid "Key file does not start with a group"
 msgstr "Soubor klíče nezačíná skupinou"
 
-#: glib/gkeyfile.c:1388
+#: glib/gkeyfile.c:1394
 #, c-format
-msgid "Invalid key name: %s"
-msgstr "Neplatný název klíče: %s"
+msgid "Invalid key name: %.*s"
+msgstr "Neplatný název klíče: %.*s"
 
-#: glib/gkeyfile.c:1415
+#: glib/gkeyfile.c:1422
 #, c-format
 msgid "Key file contains unsupported encoding “%s”"
 msgstr "Soubor klíče obsahuje nepodporované kódování „%s“"
 
-#: glib/gkeyfile.c:1664 glib/gkeyfile.c:1837 glib/gkeyfile.c:3287
-#: glib/gkeyfile.c:3351 glib/gkeyfile.c:3481 glib/gkeyfile.c:3613
-#: glib/gkeyfile.c:3759 glib/gkeyfile.c:3994 glib/gkeyfile.c:4061
+#: glib/gkeyfile.c:1677 glib/gkeyfile.c:1850 glib/gkeyfile.c:3297
+#: glib/gkeyfile.c:3361 glib/gkeyfile.c:3491 glib/gkeyfile.c:3623
+#: glib/gkeyfile.c:3769 glib/gkeyfile.c:4004 glib/gkeyfile.c:4071
 #, c-format
 msgid "Key file does not have group “%s”"
 msgstr "Soubor klíče nemá skupinu „%s“"
 
-#: glib/gkeyfile.c:1792
+#: glib/gkeyfile.c:1805
 #, c-format
 msgid "Key file does not have key “%s” in group “%s”"
 msgstr "Soubor klíče nemá klíč „%s“ ve skupině „%s“"
 
-#: glib/gkeyfile.c:1954 glib/gkeyfile.c:2070
+#: glib/gkeyfile.c:1967 glib/gkeyfile.c:2083
 #, c-format
 msgid "Key file contains key “%s” with value “%s” which is not UTF-8"
 msgstr "Soubor klíče obsahuje klíč „%s“ s hodnotou „%s“, která není v UTF-8"
 
-#: glib/gkeyfile.c:1974 glib/gkeyfile.c:2090 glib/gkeyfile.c:2529
+#: glib/gkeyfile.c:1987 glib/gkeyfile.c:2103 glib/gkeyfile.c:2542
 #, c-format
 msgid ""
 "Key file contains key “%s” which has a value that cannot be interpreted."
 msgstr ""
 "Soubor klíče obsahuje klíč „%s“, který má neinterpretovatelnou hodnotu."
 
-#: glib/gkeyfile.c:2747 glib/gkeyfile.c:3116
+#: glib/gkeyfile.c:2757 glib/gkeyfile.c:3126
 #, c-format
 msgid ""
 "Key file contains key “%s” in group “%s” which has a value that cannot be "
@@ -5080,36 +5115,36 @@ msgstr ""
 "Soubor klíče obsahuje klíč „%s“ ve skupině „%s“, který má "
 "neinterpretovatelnou hodnotu."
 
-#: glib/gkeyfile.c:2825 glib/gkeyfile.c:2902
+#: glib/gkeyfile.c:2835 glib/gkeyfile.c:2912
 #, c-format
 msgid "Key “%s” in group “%s” has value “%s” where %s was expected"
 msgstr "Klíč „%s“ ve skupině „%s“ má hodnotu „%s“, když byla očekávána „%s“"
 
-#: glib/gkeyfile.c:4304
+#: glib/gkeyfile.c:4324
 msgid "Key file contains escape character at end of line"
 msgstr "Soubor klíče obsahuje na konci řádku znak změny"
 
-#: glib/gkeyfile.c:4326
+#: glib/gkeyfile.c:4346
 #, c-format
 msgid "Key file contains invalid escape sequence “%s”"
 msgstr "Soubor klíče obsahuje neplatnou únikovou sekvenci „%s“"
 
-#: glib/gkeyfile.c:4470
+#: glib/gkeyfile.c:4491
 #, c-format
 msgid "Value “%s” cannot be interpreted as a number."
 msgstr "Hodnotu „%s“ nelze interpretovat jako číslo."
 
-#: glib/gkeyfile.c:4484
+#: glib/gkeyfile.c:4505
 #, c-format
 msgid "Integer value “%s” out of range"
 msgstr "Celočíselná hodnota „%s“ je mimo rozsah"
 
-#: glib/gkeyfile.c:4517
+#: glib/gkeyfile.c:4538
 #, c-format
 msgid "Value “%s” cannot be interpreted as a float number."
 msgstr "Hodnotu „%s“ nelze interpretovat jako reálné (plovoucí) číslo."
 
-#: glib/gkeyfile.c:4556
+#: glib/gkeyfile.c:4577
 #, c-format
 msgid "Value “%s” cannot be interpreted as a boolean."
 msgstr "Hodnotu „%s“ nelze interpretovat jako pravdivostní hodnotu."
@@ -5117,17 +5152,18 @@ msgstr "Hodnotu „%s“ nelze interpretovat jako pravdivostní hodnotu."
 #: glib/gmappedfile.c:129
 #, c-format
 msgid "Failed to get attributes of file “%s%s%s%s”: fstat() failed: %s"
-msgstr "Nelze získat atributy souboru „%s%s%s%s“: fstat() selhalo: %s"
+msgstr ""
+"Selhalo získání atributů souboru „%s%s%s%s“: selhala funkce fstat(): %s"
 
 #: glib/gmappedfile.c:195
 #, c-format
 msgid "Failed to map %s%s%s%s: mmap() failed: %s"
-msgstr "Nelze mapovat „%s%s%s%s“: mmap() selhalo: %s"
+msgstr "Selhalo namapování „%s%s%s%s“: selhala funkce mmap(): %s"
 
 #: glib/gmappedfile.c:262
 #, c-format
 msgid "Failed to open file “%s”: open() failed: %s"
-msgstr "Nelze otevřít soubor „%s“: open() selhalo: %s"
+msgstr "Selhalo otevření souboru „%s“: selhala funkce open(): %s"
 
 #: glib/gmarkup.c:398 glib/gmarkup.c:440
 #, c-format
@@ -5397,7 +5433,7 @@ msgstr "Chyba volby %s při syntaktické analýze"
 msgid "Missing argument for %s"
 msgstr "Chybí parametr %s"
 
-#: glib/goption.c:2185
+#: glib/goption.c:2184
 #, c-format
 msgid "Unknown option %s"
 msgstr "Neznámý přepínač %s"
@@ -5811,132 +5847,142 @@ msgstr "Neočekávaná chyba při čtení dat z procesu potomka (%s)"
 msgid "Unexpected error in waitpid() (%s)"
 msgstr "Neočekávaná chyba v waitpid() (%s)"
 
-#: glib/gspawn.c:1166 glib/gspawn-win32.c:1407
+#: glib/gspawn.c:1168 glib/gspawn-win32.c:1426
 #, c-format
 msgid "Child process exited with code %ld"
 msgstr "Proces potomka skončil s kódem %ld"
 
-#: glib/gspawn.c:1174
+#: glib/gspawn.c:1176
 #, c-format
 msgid "Child process killed by signal %ld"
 msgstr "Proces potomka byl zabit signálem %ld"
 
-#: glib/gspawn.c:1181
+#: glib/gspawn.c:1183
 #, c-format
 msgid "Child process stopped by signal %ld"
 msgstr "Proces potomka byl zastaven signálem %ld"
 
-#: glib/gspawn.c:1188
+#: glib/gspawn.c:1190
 #, c-format
 msgid "Child process exited abnormally"
 msgstr "Proces potomka neskončil normálně"
 
-#: glib/gspawn.c:1864 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
+#: glib/gspawn.c:1881 glib/gspawn-win32.c:353 glib/gspawn-win32.c:361
 #, c-format
 msgid "Failed to read from child pipe (%s)"
 msgstr "Selhalo čtení z roury potomka (%s)"
 
-#: glib/gspawn.c:2166
+#: glib/gspawn.c:2241
 #, c-format
 msgid "Failed to spawn child process “%s” (%s)"
 msgstr "Selhalo zplození procesu potomka „%s“ (%s)"
 
-#: glib/gspawn.c:2283
+#: glib/gspawn.c:2358
 #, c-format
 msgid "Failed to fork (%s)"
 msgstr "Selhalo rozvětvení procesu (%s)"
 
-#: glib/gspawn.c:2443 glib/gspawn-win32.c:381
+#: glib/gspawn.c:2518 glib/gspawn-win32.c:384
 #, c-format
 msgid "Failed to change to directory “%s” (%s)"
 msgstr "Selhal přechod do složky „%s“ (%s)"
 
-#: glib/gspawn.c:2453
+#: glib/gspawn.c:2528
 #, c-format
 msgid "Failed to execute child process “%s” (%s)"
 msgstr "Selhalo spuštění procesu potomka „%s“ (%s)"
 
-#: glib/gspawn.c:2463
+#: glib/gspawn.c:2538
+#, c-format
+msgid "Failed to open file to remap file descriptor (%s)"
+msgstr "Selhalo otevření souboru pro přemapování popisovače souboru (%s)"
+
+#: glib/gspawn.c:2546
 #, c-format
-msgid "Failed to redirect output or input of child process (%s)"
-msgstr "Selhalo přesměrování vstupu nebo výstupu procesu potomka (%s)"
+msgid "Failed to duplicate file descriptor for child process (%s)"
+msgstr "Selhalo zduplikování popisovače souboru pro proces potomka (%s)"
 
-#: glib/gspawn.c:2472
+#: glib/gspawn.c:2555
 #, c-format
 msgid "Failed to fork child process (%s)"
 msgstr "Selhalo rozvětvení procesu potomka (%s)"
 
-#: glib/gspawn.c:2480
+#: glib/gspawn.c:2563
 #, c-format
 msgid "Failed to close file descriptor for child process (%s)"
 msgstr "Selhalo zavření popisovače souboru pro proces potomka (%s)"
 
-#: glib/gspawn.c:2488
+#: glib/gspawn.c:2571
 #, c-format
 msgid "Unknown error executing child process “%s”"
 msgstr "Neznámá chyba při běhu procesu potomka „%s“"
 
-#: glib/gspawn.c:2512
+#: glib/gspawn.c:2595
 #, c-format
 msgid "Failed to read enough data from child pid pipe (%s)"
 msgstr "Nezdařilo se přečíst dostatek dat z roury pid potomka (%s)"
 
-#: glib/gspawn-win32.c:294
+#: glib/gspawn-win32.c:297
 msgid "Failed to read data from child process"
 msgstr "Selhalo čtení dat z procesu potomka"
 
-#: glib/gspawn-win32.c:387 glib/gspawn-win32.c:392 glib/gspawn-win32.c:511
+#: glib/gspawn-win32.c:390 glib/gspawn-win32.c:395 glib/gspawn-win32.c:519
 #, c-format
 msgid "Failed to execute child process (%s)"
 msgstr "Selhalo spuštění procesu potomka (%s)"
 
-#: glib/gspawn-win32.c:461
+#: glib/gspawn-win32.c:400
+#, c-format
+msgid "Failed to dup() in child process (%s)"
+msgstr "Selhala funkce dup() v procesu potomka (%s)"
+
+#: glib/gspawn-win32.c:469
 #, c-format
 msgid "Invalid program name: %s"
 msgstr "Neplatný název programu: %s"
 
-#: glib/gspawn-win32.c:471 glib/gspawn-win32.c:779
+#: glib/gspawn-win32.c:479 glib/gspawn-win32.c:797
 #, c-format
 msgid "Invalid string in argument vector at %d: %s"
 msgstr "Neplatný řetězec v poli argumentů na %d: %s"
 
-#: glib/gspawn-win32.c:482 glib/gspawn-win32.c:794
+#: glib/gspawn-win32.c:490 glib/gspawn-win32.c:813
 #, c-format
 msgid "Invalid string in environment: %s"
 msgstr "Neplatný řetězec v prostředí: %s"
 
-#: glib/gspawn-win32.c:775
+#: glib/gspawn-win32.c:793
 #, c-format
 msgid "Invalid working directory: %s"
 msgstr "Neplatná aktuální složka: %s"
 
-#: glib/gspawn-win32.c:837
+#: glib/gspawn-win32.c:858
 #, c-format
 msgid "Failed to execute helper program (%s)"
 msgstr "Nelze spustit pomocný program (%s)"
 
-#: glib/gspawn-win32.c:1064
+#: glib/gspawn-win32.c:1086
 msgid ""
 "Unexpected error in g_io_channel_win32_poll() reading data from a child "
 "process"
 msgstr ""
 "Neočekávaná chyba v g_io_channel_win32_poll() při čtení dat z procesu potomka"
 
-#: glib/gstrfuncs.c:3345 glib/gstrfuncs.c:3447
+#: glib/gstrfuncs.c:3351 glib/gstrfuncs.c:3453
 msgid "Empty string is not a number"
 msgstr "Prázdný řetězec není číslo"
 
-#: glib/gstrfuncs.c:3369
+#: glib/gstrfuncs.c:3375
 #, c-format
 msgid "“%s” is not a signed number"
 msgstr "„%s“ není číslo se znaménkem"
 
-#: glib/gstrfuncs.c:3379 glib/gstrfuncs.c:3483
+#: glib/gstrfuncs.c:3385 glib/gstrfuncs.c:3489
 #, c-format
 msgid "Number “%s” is out of bounds [%s, %s]"
 msgstr "Číslo „%s“ je mimo meze [%s, %s]"
 
-#: glib/gstrfuncs.c:3473
+#: glib/gstrfuncs.c:3479
 #, c-format
 msgid "“%s” is not an unsigned number"
 msgstr "„%s“ není číslo bez znaménka"
@@ -5997,168 +6043,168 @@ msgstr "Adresa URI není absolutní a není poskytnuta žádná základní URI"
 msgid "Missing ‘=’ and parameter value"
 msgstr "Schází „=“ a hodnota parametru"
 
-#: glib/gutf8.c:817
+#: glib/gutf8.c:832
 msgid "Failed to allocate memory"
 msgstr "Nelze alokovat paměť"
 
-#: glib/gutf8.c:950
+#: glib/gutf8.c:965
 msgid "Character out of range for UTF-8"
 msgstr "Znak je mimo rozsah UTF-8"
 
-#: glib/gutf8.c:1051 glib/gutf8.c:1060 glib/gutf8.c:1190 glib/gutf8.c:1199
-#: glib/gutf8.c:1338 glib/gutf8.c:1435
+#: glib/gutf8.c:1067 glib/gutf8.c:1076 glib/gutf8.c:1206 glib/gutf8.c:1215
+#: glib/gutf8.c:1354 glib/gutf8.c:1451
 msgid "Invalid sequence in conversion input"
 msgstr "Neplatná posloupnost na vstupu převodu"
 
-#: glib/gutf8.c:1349 glib/gutf8.c:1446
+#: glib/gutf8.c:1365 glib/gutf8.c:1462
 msgid "Character out of range for UTF-16"
 msgstr "Znak je mimo rozsah UTF-16"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2770
+#: glib/gutils.c:2849
 #, c-format
 msgid "%.1f kB"
 msgstr "%.1f kB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2772
+#: glib/gutils.c:2851
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2774
+#: glib/gutils.c:2853
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2776
+#: glib/gutils.c:2855
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2778
+#: glib/gutils.c:2857
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2780
+#: glib/gutils.c:2859
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2784
+#: glib/gutils.c:2863
 #, c-format
 msgid "%.1f KiB"
 msgstr "%.1f KiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2786
+#: glib/gutils.c:2865
 #, c-format
 msgid "%.1f MiB"
 msgstr "%.1f MiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2788
+#: glib/gutils.c:2867
 #, c-format
 msgid "%.1f GiB"
 msgstr "%.1f GiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2790
+#: glib/gutils.c:2869
 #, c-format
 msgid "%.1f TiB"
 msgstr "%.1f TiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2792
+#: glib/gutils.c:2871
 #, c-format
 msgid "%.1f PiB"
 msgstr "%.1f PiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2794
+#: glib/gutils.c:2873
 #, c-format
 msgid "%.1f EiB"
 msgstr "%.1f EiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2798
+#: glib/gutils.c:2877
 #, c-format
 msgid "%.1f kb"
 msgstr "%.1f kb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2800
+#: glib/gutils.c:2879
 #, c-format
 msgid "%.1f Mb"
 msgstr "%.1f Mb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2802
+#: glib/gutils.c:2881
 #, c-format
 msgid "%.1f Gb"
 msgstr "%.1f Gb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2804
+#: glib/gutils.c:2883
 #, c-format
 msgid "%.1f Tb"
 msgstr "%.1f Tb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2806
+#: glib/gutils.c:2885
 #, c-format
 msgid "%.1f Pb"
 msgstr "%.1f Pb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2808
+#: glib/gutils.c:2887
 #, c-format
 msgid "%.1f Eb"
 msgstr "%.1f Eb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2812
+#: glib/gutils.c:2891
 #, c-format
 msgid "%.1f Kib"
 msgstr "%.1f Kib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2814
+#: glib/gutils.c:2893
 #, c-format
 msgid "%.1f Mib"
 msgstr "%.1f Mib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2816
+#: glib/gutils.c:2895
 #, c-format
 msgid "%.1f Gib"
 msgstr "%.1f Gib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2818
+#: glib/gutils.c:2897
 #, c-format
 msgid "%.1f Tib"
 msgstr "%.1f Tib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2820
+#: glib/gutils.c:2899
 #, c-format
 msgid "%.1f Pib"
 msgstr "%.1f Pib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2822
+#: glib/gutils.c:2901
 #, c-format
 msgid "%.1f Eib"
 msgstr "%.1f Eib"
 
-#: glib/gutils.c:2856 glib/gutils.c:2973
+#: glib/gutils.c:2935 glib/gutils.c:3052
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
@@ -6166,7 +6212,7 @@ msgstr[0] "%u bajt"
 msgstr[1] "%u bajty"
 msgstr[2] "%u bajtů"
 
-#: glib/gutils.c:2860
+#: glib/gutils.c:2939
 #, c-format
 msgid "%u bit"
 msgid_plural "%u bits"
@@ -6175,7 +6221,7 @@ msgstr[1] "%u bity"
 msgstr[2] "%u bitů"
 
 #. Translators: the %s in "%s bytes" will always be replaced by a number.
-#: glib/gutils.c:2927
+#: glib/gutils.c:3006
 #, c-format
 msgid "%s byte"
 msgid_plural "%s bytes"
@@ -6184,7 +6230,7 @@ msgstr[1] "%s bajty"
 msgstr[2] "%s bajtů"
 
 #. Translators: the %s in "%s bits" will always be replaced by a number.
-#: glib/gutils.c:2932
+#: glib/gutils.c:3011
 #, c-format
 msgid "%s bit"
 msgid_plural "%s bits"
@@ -6197,32 +6243,32 @@ msgstr[2] "%s bitů"
 #. * compatibility.  Users will not see this string unless a program is using this deprecated function.
 #. * Please translate as literally as possible.
 #.
-#: glib/gutils.c:2986
+#: glib/gutils.c:3065
 #, c-format
 msgid "%.1f KB"
 msgstr "%.1f KB"
 
-#: glib/gutils.c:2991
+#: glib/gutils.c:3070
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
-#: glib/gutils.c:2996
+#: glib/gutils.c:3075
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
-#: glib/gutils.c:3001
+#: glib/gutils.c:3080
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
-#: glib/gutils.c:3006
+#: glib/gutils.c:3085
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
-#: glib/gutils.c:3011
+#: glib/gutils.c:3090
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
index 45f53a0..b373781 100644 (file)
--- a/po/da.po
+++ b/po/da.po
@@ -9,7 +9,7 @@
 # Kenneth Nielsen <k.nielsen81@gmail.com>, 2011.
 # Joe Hansen <joedalton2@yahoo.dk>, 2013.
 # Ask Hjorth Larsen <asklarsen@gmail.com>, 2007, 08, 09, 10, 11, 12, 14, 15, 16, 17, 18, 19, 20.
-# Alan Mortensen <alanmortensen.am@gmail.com>, 2019.
+# Alan Mortensen <alanmortensen.am@gmail.com>, 2019, 2022.
 #
 # Konventioner:
 #
@@ -28,8 +28,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: glib master\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/glib/issues\n"
-"POT-Creation-Date: 2021-07-19 15:52+0000\n"
-"PO-Revision-Date: 2021-08-28 11:37+0200\n"
+"POT-Creation-Date: 2022-04-08 12:19+0000\n"
+"PO-Revision-Date: 2022-04-18 19:18+0200\n"
 "Last-Translator: Alan Mortensen <alanmortensen.am@gmail.com>\n"
 "Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
 "Language: da\n"
@@ -39,6 +39,15 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 "X-Generator: Poedit 2.3\n"
 
+#: gio/gappinfo.c:333
+msgid "Setting default applications not supported yet"
+msgstr "Indstilling af standardprogrammer understøttes endnu ikke"
+
+#: gio/gappinfo.c:366
+msgid "Setting application as last used for type not supported yet"
+msgstr ""
+"Indstilling af program som det sidst brugte til typen understøttes endnu ikke"
+
 #: gio/gapplication.c:500
 msgid "GApplication options"
 msgstr "GApplication-indstillinger"
@@ -60,7 +69,7 @@ msgid "Replace the running instance"
 msgstr "Erstat den kørende instans"
 
 #: gio/gapplication-tool.c:45 gio/gapplication-tool.c:46 gio/gio-tool.c:227
-#: gio/gresource-tool.c:494 gio/gsettings-tool.c:572
+#: gio/gresource-tool.c:494 gio/gsettings-tool.c:584
 msgid "Print help"
 msgstr "Udskriv hjælp"
 
@@ -72,7 +81,7 @@ msgstr "[KOMMANDO]"
 msgid "Print version"
 msgstr "Udskriv version"
 
-#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:578
+#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:590
 msgid "Print version information and exit"
 msgstr "Udskriv versionsoplysninger og afslut"
 
@@ -134,8 +143,8 @@ msgstr "Kommandoen, der skal vises uddybende hjælp for"
 msgid "Application identifier in D-Bus format (eg: org.example.viewer)"
 msgstr "Programidentifikator i D-Bus-format (f.eks. org.eksempel.fremviser)"
 
-#: gio/gapplication-tool.c:74 gio/glib-compile-resources.c:738
-#: gio/glib-compile-resources.c:744 gio/glib-compile-resources.c:772
+#: gio/gapplication-tool.c:74 gio/glib-compile-resources.c:820
+#: gio/glib-compile-resources.c:826 gio/glib-compile-resources.c:855
 #: gio/gresource-tool.c:501 gio/gresource-tool.c:567
 msgid "FILE"
 msgstr "FIL"
@@ -160,7 +169,7 @@ msgstr "PARAMETER"
 msgid "Optional parameter to the action invocation, in GVariant format"
 msgstr "Valgfri parameter til handlingen i GVariant-format"
 
-#: gio/gapplication-tool.c:98 gio/gresource-tool.c:532 gio/gsettings-tool.c:664
+#: gio/gapplication-tool.c:98 gio/gresource-tool.c:532 gio/gsettings-tool.c:676
 #, c-format
 msgid ""
 "Unknown command %s\n"
@@ -174,7 +183,7 @@ msgid "Usage:\n"
 msgstr "Brug:\n"
 
 #: gio/gapplication-tool.c:116 gio/gresource-tool.c:557
-#: gio/gsettings-tool.c:699
+#: gio/gsettings-tool.c:711
 msgid "Arguments:\n"
 msgstr "Argumenter:\n"
 
@@ -297,7 +306,7 @@ msgstr "Strømmen er allerede lukket"
 msgid "Truncate not supported on base stream"
 msgstr "Afkortning understøttes ikke af basisstrømmen"
 
-#: gio/gcancellable.c:319 gio/gdbusconnection.c:1872 gio/gdbusprivate.c:1416
+#: gio/gcancellable.c:319 gio/gdbusconnection.c:1857 gio/gdbusprivate.c:1418
 #: gio/gsimpleasyncresult.c:871 gio/gsimpleasyncresult.c:897
 #, c-format
 msgid "Operation was cancelled"
@@ -318,7 +327,7 @@ msgstr "Ikke nok plads på destinationen"
 #: gio/gcharsetconverter.c:342 gio/gdatainputstream.c:848
 #: gio/gdatainputstream.c:1266 glib/gconvert.c:449 glib/gconvert.c:879
 #: glib/giochannel.c:1573 glib/giochannel.c:1615 glib/giochannel.c:2470
-#: glib/gutf8.c:875 glib/gutf8.c:1328
+#: glib/gutf8.c:890 glib/gutf8.c:1344
 msgid "Invalid byte sequence in conversion input"
 msgstr "Ugyldig bytesekvens i konverteringsinddata"
 
@@ -328,7 +337,7 @@ msgstr "Ugyldig bytesekvens i konverteringsinddata"
 msgid "Error during conversion: %s"
 msgstr "Fejl under konvertering: %s"
 
-#: gio/gcharsetconverter.c:445 gio/gsocket.c:1143
+#: gio/gcharsetconverter.c:445 gio/gsocket.c:1147
 msgid "Cancellable initialization not supported"
 msgstr "Initialisering med mulighed for afbrydelse understøttes ikke"
 
@@ -342,37 +351,37 @@ msgstr "Konvertering fra tegnsæt “%s” til “%s” er ikke understøttet"
 msgid "Could not open converter from “%s” to “%s”"
 msgstr "Kunne ikke konvertere fra “%s” til “%s”"
 
-#: gio/gcontenttype.c:454
+#: gio/gcontenttype.c:470
 #, c-format
 msgid "%s type"
 msgstr "%s-type"
 
-#: gio/gcontenttype-win32.c:192
+#: gio/gcontenttype-win32.c:196
 msgid "Unknown type"
 msgstr "Ukendt type"
 
-#: gio/gcontenttype-win32.c:194
+#: gio/gcontenttype-win32.c:198
 #, c-format
 msgid "%s filetype"
 msgstr "%s-filtype"
 
-#: gio/gcredentials.c:323
+#: gio/gcredentials.c:335
 msgid "GCredentials contains invalid data"
 msgstr "GCredentials indeholder ugyldige data"
 
-#: gio/gcredentials.c:383 gio/gcredentials.c:667
+#: gio/gcredentials.c:395 gio/gcredentials.c:686
 msgid "GCredentials is not implemented on this OS"
 msgstr "GCredentials er ikke implementeret på dette operativsystem"
 
-#: gio/gcredentials.c:538 gio/gcredentials.c:556
+#: gio/gcredentials.c:550 gio/gcredentials.c:568
 msgid "There is no GCredentials support for your platform"
 msgstr "Der er ingen understøttelse for GCredentials på din platform"
 
-#: gio/gcredentials.c:607
+#: gio/gcredentials.c:626
 msgid "GCredentials does not contain a process ID on this OS"
 msgstr "GCredentials indeholder ikke en proces-id på dette operativsystem"
 
-#: gio/gcredentials.c:661
+#: gio/gcredentials.c:680
 msgid "Credentials spoofing is not possible on this OS"
 msgstr "Falske akkreditiver er ikke mulige på dette operativsystem"
 
@@ -380,17 +389,17 @@ msgstr "Falske akkreditiver er ikke mulige på dette operativsystem"
 msgid "Unexpected early end-of-stream"
 msgstr "Uventet tidlig strømafslutning"
 
-#: gio/gdbusaddress.c:159 gio/gdbusaddress.c:233 gio/gdbusaddress.c:322
+#: gio/gdbusaddress.c:162 gio/gdbusaddress.c:236 gio/gdbusaddress.c:325
 #, c-format
 msgid "Unsupported key “%s” in address entry “%s”"
 msgstr "Ikke-understøttet nøgle “%s” i adresseindgang “%s”"
 
-#: gio/gdbusaddress.c:172
+#: gio/gdbusaddress.c:175
 #, c-format
 msgid "Meaningless key/value pair combination in address entry “%s”"
 msgstr "Meningsløst nøgle-/værdikombination i adresseindgang “%s”"
 
-#: gio/gdbusaddress.c:181
+#: gio/gdbusaddress.c:184
 #, c-format
 msgid ""
 "Address “%s” is invalid (need exactly one of path, dir, tmpdir, or abstract "
@@ -399,28 +408,28 @@ msgstr ""
 "Adressen “%s” er ugyldig (kræver præcist en af nøglerne path, dir, tmpdir "
 "eller abstract)"
 
-#: gio/gdbusaddress.c:248 gio/gdbusaddress.c:259 gio/gdbusaddress.c:274
-#: gio/gdbusaddress.c:337 gio/gdbusaddress.c:348
+#: gio/gdbusaddress.c:251 gio/gdbusaddress.c:262 gio/gdbusaddress.c:277
+#: gio/gdbusaddress.c:340 gio/gdbusaddress.c:351
 #, c-format
 msgid "Error in address “%s” — the “%s” attribute is malformed"
 msgstr "Fejl i adressen “%s” — attributten “%s” er fejlformateret"
 
-#: gio/gdbusaddress.c:418 gio/gdbusaddress.c:682
+#: gio/gdbusaddress.c:421 gio/gdbusaddress.c:680
 #, c-format
 msgid "Unknown or unsupported transport “%s” for address “%s”"
 msgstr "Ukendt eller ikke-understøttet transport “%s” for adressen “%s”"
 
-#: gio/gdbusaddress.c:462
+#: gio/gdbusaddress.c:465
 #, c-format
 msgid "Address element “%s” does not contain a colon (:)"
 msgstr "Adresseelementet “%s” indeholder intet kolon (:)"
 
-#: gio/gdbusaddress.c:471
+#: gio/gdbusaddress.c:474
 #, c-format
 msgid "Transport name in address element “%s” must not be empty"
 msgstr "Transportnavn i adresseelementet “%s” må ikke være tomt"
 
-#: gio/gdbusaddress.c:492
+#: gio/gdbusaddress.c:495
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” does not contain an equal "
@@ -429,14 +438,14 @@ msgstr ""
 "Nøgle-/værdiparret %d, “%s” i adresseelementet “%s” indeholder ikke et "
 "lighedstegn"
 
-#: gio/gdbusaddress.c:503
+#: gio/gdbusaddress.c:506
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” must not have an empty key"
 msgstr ""
 "Nøgle-/værdiparret %d, “%s” i adresseelementet “%s” må ikke have en tom nøgle"
 
-#: gio/gdbusaddress.c:517
+#: gio/gdbusaddress.c:520
 #, c-format
 msgid ""
 "Error unescaping key or value in Key/Value pair %d, “%s”, in address element "
@@ -445,7 +454,7 @@ msgstr ""
 "Fejl ved af-undvigelse af nøgle eller værdi i nøgle-/værdiparret %d, “%s” i "
 "adresseelementet “%s”"
 
-#: gio/gdbusaddress.c:589
+#: gio/gdbusaddress.c:588
 #, c-format
 msgid ""
 "Error in address “%s” — the unix transport requires exactly one of the keys "
@@ -454,79 +463,79 @@ msgstr ""
 "Fejl i adressen “%s” — unix-transporten kræver at præcist en af nøglerne "
 "“path” eller “abstract” er givet"
 
-#: gio/gdbusaddress.c:625
+#: gio/gdbusaddress.c:623
 #, c-format
 msgid "Error in address “%s” — the host attribute is missing or malformed"
 msgstr ""
 "Fejl i adressen “%s” — værtsattributten mangler eller er fejlformateret"
 
-#: gio/gdbusaddress.c:639
+#: gio/gdbusaddress.c:637
 #, c-format
 msgid "Error in address “%s” — the port attribute is missing or malformed"
 msgstr "Fejl i adressen “%s” — portattributten mangler eller er fejlformateret"
 
-#: gio/gdbusaddress.c:653
+#: gio/gdbusaddress.c:651
 #, c-format
 msgid "Error in address “%s” — the noncefile attribute is missing or malformed"
 msgstr ""
 "Fejl i adressen “%s” — noncefile-attributten mangler eller er fejlformateret"
 
-#: gio/gdbusaddress.c:674
+#: gio/gdbusaddress.c:672
 msgid "Error auto-launching: "
 msgstr "Fejl ved automatisk opstart: "
 
-#: gio/gdbusaddress.c:727
+#: gio/gdbusaddress.c:725
 #, c-format
 msgid "Error opening nonce file “%s”: %s"
 msgstr "Fejl ved åbning af “nonce”-filen “%s”: %s"
 
-#: gio/gdbusaddress.c:746
+#: gio/gdbusaddress.c:744
 #, c-format
 msgid "Error reading from nonce file “%s”: %s"
 msgstr "Fejl ved læsning af “nonce”-filen “%s”: %s"
 
-#: gio/gdbusaddress.c:755
+#: gio/gdbusaddress.c:753
 #, c-format
 msgid "Error reading from nonce file “%s”, expected 16 bytes, got %d"
 msgstr "Fejl ved læsning af “nonce”-filen “%s”. Forventede 16 byte, fandt %d"
 
-#: gio/gdbusaddress.c:773
+#: gio/gdbusaddress.c:771
 #, c-format
 msgid "Error writing contents of nonce file “%s” to stream:"
 msgstr "Fejl under skrivning af indhold af “nonce”-filen “%s” til strømmen:"
 
-#: gio/gdbusaddress.c:988
+#: gio/gdbusaddress.c:986
 msgid "The given address is empty"
 msgstr "Den givne adresse er tom"
 
 # nå ja, det er ikke grimmere på dansk end på engelsk
-#: gio/gdbusaddress.c:1101
+#: gio/gdbusaddress.c:1099
 #, c-format
-msgid "Cannot spawn a message bus when setuid"
-msgstr "Kan ikke starte en meddelelsesbus når setuid"
+msgid "Cannot spawn a message bus when AT_SECURE is set"
+msgstr "Kan ikke starte en meddelelsesbus, når AT_SECURE er indstillet"
 
-#: gio/gdbusaddress.c:1108
+#: gio/gdbusaddress.c:1106
 msgid "Cannot spawn a message bus without a machine-id: "
 msgstr "Kan ikke starte en meddelelsesbus uden maskine-id: "
 
-#: gio/gdbusaddress.c:1115
+#: gio/gdbusaddress.c:1113
 #, c-format
 msgid "Cannot autolaunch D-Bus without X11 $DISPLAY"
 msgstr "Kan ikke køre D-Bus automatisk uden $DISPLAY til X11"
 
-#: gio/gdbusaddress.c:1157
+#: gio/gdbusaddress.c:1155
 #, c-format
 msgid "Error spawning command line “%s”: "
 msgstr "Fejl ved kørsel af kommandolinjen “%s”: "
 
-#: gio/gdbusaddress.c:1226
+#: gio/gdbusaddress.c:1224
 #, c-format
 msgid "Cannot determine session bus address (not implemented for this OS)"
 msgstr ""
 "Kan ikke bestemme sessionsbussens adresse (ikke implementeret for dette "
 "operativsystem)"
 
-#: gio/gdbusaddress.c:1397 gio/gdbusconnection.c:7261
+#: gio/gdbusaddress.c:1373 gio/gdbusconnection.c:7318
 #, c-format
 msgid ""
 "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
@@ -535,7 +544,7 @@ msgstr ""
 "Kan ikke bestemme busadressen fra miljøvariablen DBUS_STARTER_BUS_TYPE — "
 "ukendt værdi “%s”"
 
-#: gio/gdbusaddress.c:1406 gio/gdbusconnection.c:7270
+#: gio/gdbusaddress.c:1382 gio/gdbusconnection.c:7327
 msgid ""
 "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
 "variable is not set"
@@ -543,7 +552,7 @@ msgstr ""
 "Kan ikke bestemme busadressen, da miljøvariablen DBUS_STARTER_BUS_TYPE ikke "
 "er angivet"
 
-#: gio/gdbusaddress.c:1416
+#: gio/gdbusaddress.c:1392
 #, c-format
 msgid "Unknown bus type %d"
 msgstr "Ukendt bustype %d"
@@ -572,12 +581,12 @@ msgstr "Bruger-id'er skal være de samme for peer og server"
 msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
 msgstr "Annulleret via GDBusAuthObserver::authorize-authenticated-peer"
 
-#: gio/gdbusauthmechanismsha1.c:298
+#: gio/gdbusauthmechanismsha1.c:300
 #, c-format
 msgid "Error when getting information for directory “%s”: %s"
 msgstr "Fejl ved indhentning af oplysninger for mappen “%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:313
+#: gio/gdbusauthmechanismsha1.c:315
 #, c-format
 msgid ""
 "Permissions on directory “%s” are malformed. Expected mode 0700, got 0%o"
@@ -585,32 +594,32 @@ msgstr ""
 "Rettigheder for mappen “%s” er fejlformateret. Forventede tilstanden 0700, "
 "fandt 0%o"
 
-#: gio/gdbusauthmechanismsha1.c:346 gio/gdbusauthmechanismsha1.c:357
+#: gio/gdbusauthmechanismsha1.c:348 gio/gdbusauthmechanismsha1.c:359
 #, c-format
 msgid "Error creating directory “%s”: %s"
 msgstr "Fejl ved oprettelse af mappen “%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:359 gio/gfile.c:1062 gio/gfile.c:1300
-#: gio/gfile.c:1438 gio/gfile.c:1676 gio/gfile.c:1731 gio/gfile.c:1789
-#: gio/gfile.c:1873 gio/gfile.c:1930 gio/gfile.c:1994 gio/gfile.c:2049
-#: gio/gfile.c:3754 gio/gfile.c:3809 gio/gfile.c:4102 gio/gfile.c:4572
-#: gio/gfile.c:4983 gio/gfile.c:5068 gio/gfile.c:5158 gio/gfile.c:5255
-#: gio/gfile.c:5342 gio/gfile.c:5443 gio/gfile.c:8153 gio/gfile.c:8243
-#: gio/gfile.c:8327 gio/win32/gwinhttpfile.c:453
+#: gio/gdbusauthmechanismsha1.c:361 gio/gfile.c:1080 gio/gfile.c:1318
+#: gio/gfile.c:1456 gio/gfile.c:1694 gio/gfile.c:1749 gio/gfile.c:1807
+#: gio/gfile.c:1891 gio/gfile.c:1948 gio/gfile.c:2012 gio/gfile.c:2067
+#: gio/gfile.c:3772 gio/gfile.c:3912 gio/gfile.c:4205 gio/gfile.c:4675
+#: gio/gfile.c:5086 gio/gfile.c:5171 gio/gfile.c:5261 gio/gfile.c:5358
+#: gio/gfile.c:5445 gio/gfile.c:5546 gio/gfile.c:8375 gio/gfile.c:8465
+#: gio/gfile.c:8549 gio/win32/gwinhttpfile.c:453
 msgid "Operation not supported"
 msgstr "Operationen understøttes ikke"
 
-#: gio/gdbusauthmechanismsha1.c:402
+#: gio/gdbusauthmechanismsha1.c:404
 #, c-format
 msgid "Error opening keyring “%s” for reading: "
 msgstr "Fejl ved åbning af nøgleringen “%s” til læsning: "
 
-#: gio/gdbusauthmechanismsha1.c:425 gio/gdbusauthmechanismsha1.c:747
+#: gio/gdbusauthmechanismsha1.c:427 gio/gdbusauthmechanismsha1.c:769
 #, c-format
 msgid "Line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr "Linje %d i nøgleringen på “%s” med indholdet “%s” er fejlformateret"
 
-#: gio/gdbusauthmechanismsha1.c:439 gio/gdbusauthmechanismsha1.c:761
+#: gio/gdbusauthmechanismsha1.c:441 gio/gdbusauthmechanismsha1.c:783
 #, c-format
 msgid ""
 "First token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -618,7 +627,7 @@ msgstr ""
 "Første symbol i linje %d af nøgleringen på “%s” med indholdet “%s” er "
 "fejlformateret"
 
-#: gio/gdbusauthmechanismsha1.c:453 gio/gdbusauthmechanismsha1.c:775
+#: gio/gdbusauthmechanismsha1.c:455 gio/gdbusauthmechanismsha1.c:797
 #, c-format
 msgid ""
 "Second token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -626,162 +635,162 @@ msgstr ""
 "Andet symbol i linje %d af nøgleringen på “%s” med indholdet “%s” er "
 "fejlformateret"
 
-#: gio/gdbusauthmechanismsha1.c:477
+#: gio/gdbusauthmechanismsha1.c:479
 #, c-format
 msgid "Didn’t find cookie with id %d in the keyring at “%s”"
 msgstr "Fandt ingen cookie med id %d i nøgleringen på “%s”"
 
-#: gio/gdbusauthmechanismsha1.c:523
+#: gio/gdbusauthmechanismsha1.c:536
 #, c-format
 msgid "Error creating lock file “%s”: %s"
 msgstr "Fejl ved oprettelse af låsefil “%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:587
+#: gio/gdbusauthmechanismsha1.c:609
 #, c-format
 msgid "Error deleting stale lock file “%s”: %s"
 msgstr "Fejl ved sletning af forældet låsefil “%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:626
+#: gio/gdbusauthmechanismsha1.c:648
 #, c-format
 msgid "Error closing (unlinked) lock file “%s”: %s"
 msgstr "Fejl ved lukning af låsefil (uden link) “%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:637
+#: gio/gdbusauthmechanismsha1.c:659
 #, c-format
 msgid "Error unlinking lock file “%s”: %s"
 msgstr "Fejl ved fjernelse af link til låsefil “%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:714
+#: gio/gdbusauthmechanismsha1.c:736
 #, c-format
 msgid "Error opening keyring “%s” for writing: "
 msgstr "Fejl ved åbning af nøgleringen “%s” til skrivning: "
 
-#: gio/gdbusauthmechanismsha1.c:908
+#: gio/gdbusauthmechanismsha1.c:930
 #, c-format
 msgid "(Additionally, releasing the lock for “%s” also failed: %s) "
 msgstr "(Yderligere kunne låsen for “%s” ikke opgives: %s) "
 
-#: gio/gdbusconnection.c:603 gio/gdbusconnection.c:2417
+#: gio/gdbusconnection.c:588 gio/gdbusconnection.c:2402
 msgid "The connection is closed"
 msgstr "Forbindelsen er lukket"
 
-#: gio/gdbusconnection.c:1902
+#: gio/gdbusconnection.c:1887
 msgid "Timeout was reached"
 msgstr "Tiden løb ud"
 
-#: gio/gdbusconnection.c:2540
+#: gio/gdbusconnection.c:2525
 msgid ""
 "Unsupported flags encountered when constructing a client-side connection"
 msgstr ""
 "Der blev fundet ikke-understøttede flag ved oprettelse af en forbindelse på "
 "klientsiden"
 
-#: gio/gdbusconnection.c:4189 gio/gdbusconnection.c:4536
+#: gio/gdbusconnection.c:4253 gio/gdbusconnection.c:4607
 #, c-format
 msgid ""
 "No such interface “org.freedesktop.DBus.Properties” on object at path %s"
 msgstr ""
 "Ingen grænseflade “org.freedesktop.DBus.Properties” på objekt ved stien %s"
 
-#: gio/gdbusconnection.c:4331
+#: gio/gdbusconnection.c:4398
 #, c-format
 msgid "No such property “%s”"
 msgstr "Ingen sådan egenskab “%s”"
 
-#: gio/gdbusconnection.c:4343
+#: gio/gdbusconnection.c:4410
 #, c-format
 msgid "Property “%s” is not readable"
 msgstr "Egenskaben “%s” kan ikke læses"
 
-#: gio/gdbusconnection.c:4354
+#: gio/gdbusconnection.c:4421
 #, c-format
 msgid "Property “%s” is not writable"
 msgstr "Egenskaben “%s” er skrivebeskyttet"
 
-#: gio/gdbusconnection.c:4374
+#: gio/gdbusconnection.c:4441
 #, c-format
 msgid "Error setting property “%s”: Expected type “%s” but got “%s”"
 msgstr ""
 "Fejl ved anvendelse af egenskaben “%s”: Forventede typen “%s”, men fik “%s”"
 
-#: gio/gdbusconnection.c:4479 gio/gdbusconnection.c:4687
-#: gio/gdbusconnection.c:6689
+#: gio/gdbusconnection.c:4546 gio/gdbusconnection.c:4761
+#: gio/gdbusconnection.c:6744
 #, c-format
 msgid "No such interface “%s”"
 msgstr "Ingen sådan grænseflade “%s”"
 
-#: gio/gdbusconnection.c:4905 gio/gdbusconnection.c:7201
+#: gio/gdbusconnection.c:4983 gio/gdbusconnection.c:7258
 #, c-format
 msgid "No such interface “%s” on object at path %s"
 msgstr "Ingen sådan grænseflade “%s” på objektet ved stien %s"
 
-#: gio/gdbusconnection.c:5003
+#: gio/gdbusconnection.c:5084
 #, c-format
 msgid "No such method “%s”"
 msgstr "Ingen sådan metode “%s”"
 
-#: gio/gdbusconnection.c:5034
+#: gio/gdbusconnection.c:5115
 #, c-format
 msgid "Type of message, “%s”, does not match expected type “%s”"
 msgstr "Beskedtypen “%s” er ikke den forventede type, “%s”"
 
-#: gio/gdbusconnection.c:5237
+#: gio/gdbusconnection.c:5318
 #, c-format
 msgid "An object is already exported for the interface %s at %s"
 msgstr "Der er allerede eksporteret et objekt for grænsefladen %s på %s"
 
-#: gio/gdbusconnection.c:5463
+#: gio/gdbusconnection.c:5545
 #, c-format
 msgid "Unable to retrieve property %s.%s"
 msgstr "Kan ikke hente egenskaben %s.%s"
 
-#: gio/gdbusconnection.c:5519
+#: gio/gdbusconnection.c:5601
 #, c-format
 msgid "Unable to set property %s.%s"
 msgstr "Kan ikke sætte egenskaben %s.%s"
 
-#: gio/gdbusconnection.c:5698
+#: gio/gdbusconnection.c:5780
 #, c-format
 msgid "Method “%s” returned type “%s”, but expected “%s”"
 msgstr "Metoden “%s” returnerede typen “%s”, men forventede “%s”"
 
-#: gio/gdbusconnection.c:6800
+#: gio/gdbusconnection.c:6856
 #, c-format
 msgid "Method “%s” on interface “%s” with signature “%s” does not exist"
 msgstr "Metoden “%s” på grænsefladen “%s” med signatur “%s” findes ikke"
 
-#: gio/gdbusconnection.c:6921
+#: gio/gdbusconnection.c:6977
 #, c-format
 msgid "A subtree is already exported for %s"
 msgstr "Der er allerede eksporteret et undertræ for %s"
 
-#: gio/gdbusconnection.c:7209
+#: gio/gdbusconnection.c:7266
 #, c-format
 msgid "Object does not exist at path “%s”"
 msgstr "Objektet findes ikke ved stien “%s”"
 
-#: gio/gdbusmessage.c:1266
+#: gio/gdbusmessage.c:1301
 msgid "type is INVALID"
 msgstr "typen er INVALID"
 
-#: gio/gdbusmessage.c:1277
+#: gio/gdbusmessage.c:1312
 msgid "METHOD_CALL message: PATH or MEMBER header field is missing"
 msgstr ""
 "Meddelelse for METHOD_CALL: Et af teksthovederne PATH eller MEMBER mangler"
 
-#: gio/gdbusmessage.c:1288
+#: gio/gdbusmessage.c:1323
 msgid "METHOD_RETURN message: REPLY_SERIAL header field is missing"
 msgstr "Meddelelse for METHOD_RETURN: Teksthovedet REPLY_SERIAL mangler"
 
-#: gio/gdbusmessage.c:1300
+#: gio/gdbusmessage.c:1335
 msgid "ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing"
 msgstr "FEJLmeddelelse: Teksthovedet REPLY_SERIAL eller ERROR_NAME mangler"
 
-#: gio/gdbusmessage.c:1313
+#: gio/gdbusmessage.c:1348
 msgid "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing"
 msgstr "SIGNALmeddelelse: Teksthovedet PATH, INTERFACE eller MEMBER mangler"
 
-#: gio/gdbusmessage.c:1321
+#: gio/gdbusmessage.c:1356
 msgid ""
 "SIGNAL message: The PATH header field is using the reserved value /org/"
 "freedesktop/DBus/Local"
@@ -789,7 +798,7 @@ msgstr ""
 "SIGNALmeddelelse: Teksthovedet PATH bruger den reserverede værdi /org/"
 "freedesktop/DBus/Local"
 
-#: gio/gdbusmessage.c:1329
+#: gio/gdbusmessage.c:1364
 msgid ""
 "SIGNAL message: The INTERFACE header field is using the reserved value org."
 "freedesktop.DBus.Local"
@@ -797,19 +806,19 @@ msgstr ""
 "SIGNALbesked: Teksthovedet INTERFACE bruger den reserverede værdi org."
 "freedesktop.DBus.Local"
 
-#: gio/gdbusmessage.c:1377 gio/gdbusmessage.c:1437
+#: gio/gdbusmessage.c:1412 gio/gdbusmessage.c:1472
 #, c-format
 msgid "Wanted to read %lu byte but only got %lu"
 msgid_plural "Wanted to read %lu bytes but only got %lu"
 msgstr[0] "Ville læse %lu byte men fik kun %lu"
 msgstr[1] "Ville læse %lu byte men fik kun %lu"
 
-#: gio/gdbusmessage.c:1391
+#: gio/gdbusmessage.c:1426
 #, c-format
 msgid "Expected NUL byte after the string “%s” but found byte %d"
 msgstr "Forventede NUL-byte efter strengen “%s”, men fandt byte %d"
 
-#: gio/gdbusmessage.c:1410
+#: gio/gdbusmessage.c:1445
 #, c-format
 msgid ""
 "Expected valid UTF-8 string but found invalid bytes at byte offset %d "
@@ -819,21 +828,21 @@ msgstr ""
 "(strengens længde er %d). Den gyldige UTF-8-streng indtil dette punkt var "
 "“%s”"
 
-#: gio/gdbusmessage.c:1474 gio/gdbusmessage.c:1722 gio/gdbusmessage.c:1911
+#: gio/gdbusmessage.c:1509 gio/gdbusmessage.c:1785 gio/gdbusmessage.c:1996
 msgid "Value nested too deeply"
 msgstr "Værdien er for dybt indlejret"
 
-#: gio/gdbusmessage.c:1620
+#: gio/gdbusmessage.c:1677
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus object path"
 msgstr "Den fortolkede værdi “%s” er ikke en gyldig objektsti til D-Bus"
 
-#: gio/gdbusmessage.c:1642
+#: gio/gdbusmessage.c:1701
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature"
 msgstr "Fortolket værdi “%s” er ikke en gyldig D-Bus-signatur"
 
-#: gio/gdbusmessage.c:1689
+#: gio/gdbusmessage.c:1752
 #, c-format
 msgid ""
 "Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB)."
@@ -846,7 +855,7 @@ msgstr[1] ""
 "Stødte på et array med længde %u byte. Den maksimale længde er 2<<26 byte "
 "(64 MiB)."
 
-#: gio/gdbusmessage.c:1709
+#: gio/gdbusmessage.c:1772
 #, c-format
 msgid ""
 "Encountered array of type “a%c”, expected to have a length a multiple of %u "
@@ -855,12 +864,16 @@ msgstr ""
 "Stødte på et array af typen “a%c”, som ventes at have en længde som er et "
 "multiplum af %u byte, men som havde længde %u byte"
 
-#: gio/gdbusmessage.c:1895
+#: gio/gdbusmessage.c:1926 gio/gdbusmessage.c:2645
+msgid "Empty structures (tuples) are not allowed in D-Bus"
+msgstr "Tomme strukturer (tupler) er ikke tilladte i D-Bus"
+
+#: gio/gdbusmessage.c:1980
 #, c-format
 msgid "Parsed value “%s” for variant is not a valid D-Bus signature"
 msgstr "Fortolket værdi “%s” for variant er ikke en gyldig D-Bus-signatur"
 
-#: gio/gdbusmessage.c:1936
+#: gio/gdbusmessage.c:2021
 #, c-format
 msgid ""
 "Error deserializing GVariant with type string “%s” from the D-Bus wire format"
@@ -868,7 +881,7 @@ msgstr ""
 "Fejl ved deserialisering af GVariant med type-streng “%s” fra D-Bus-wire-"
 "formatet"
 
-#: gio/gdbusmessage.c:2121
+#: gio/gdbusmessage.c:2206
 #, c-format
 msgid ""
 "Invalid endianness value. Expected 0x6c (“l”) or 0x42 (“B”) but found value "
@@ -877,38 +890,38 @@ msgstr ""
 "Ugyldigt værdi for byterækkefølge (endianness). Forventede 0x6c (“l”) eller "
 "0x42 (“B”), men fandt værdien 0x%02x"
 
-#: gio/gdbusmessage.c:2134
+#: gio/gdbusmessage.c:2225
 #, c-format
 msgid "Invalid major protocol version. Expected 1 but found %d"
 msgstr "Ugyldig hovedprotokolversion. Forventede 1 men fandt %d"
 
-#: gio/gdbusmessage.c:2188 gio/gdbusmessage.c:2784
+#: gio/gdbusmessage.c:2283 gio/gdbusmessage.c:2881
 msgid "Signature header found but is not of type signature"
 msgstr "Signaturteksthoved fundet, men er ikke af typen signatur"
 
-#: gio/gdbusmessage.c:2200
+#: gio/gdbusmessage.c:2295
 #, c-format
 msgid "Signature header with signature “%s” found but message body is empty"
 msgstr ""
 "Signaturteksthoved med signaturen “%s” fundet, men beskedteksten er tom"
 
-#: gio/gdbusmessage.c:2215
+#: gio/gdbusmessage.c:2310
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature (for body)"
 msgstr "Fortolket værdi “%s” er ikke en gyldig D-Bus-signatur (for tekst)"
 
-#: gio/gdbusmessage.c:2247
+#: gio/gdbusmessage.c:2342
 #, 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"
 msgstr[0] "Intet signaturteksthoved i beskeden, men beskedteksten er %u byte"
 msgstr[1] "Intet signaturteksthoved i beskeden, men beskedteksten er %u byte"
 
-#: gio/gdbusmessage.c:2257
+#: gio/gdbusmessage.c:2352
 msgid "Cannot deserialize message: "
 msgstr "Kan ikke deserialisere besked: "
 
-#: gio/gdbusmessage.c:2601
+#: gio/gdbusmessage.c:2698
 #, c-format
 msgid ""
 "Error serializing GVariant with type string “%s” to the D-Bus wire format"
@@ -916,23 +929,23 @@ msgstr ""
 "Fejl ved serialisering af GVariant med typestreng “%s” til D-Bus-wire-"
 "formatet"
 
-#: gio/gdbusmessage.c:2738
+#: gio/gdbusmessage.c:2835
 #, c-format
 msgid ""
 "Number of file descriptors in message (%d) differs from header field (%d)"
 msgstr ""
 "Antal fildeskriptorer i meddelelsen (%d) er forskelligt fra teksthovedet (%d)"
 
-#: gio/gdbusmessage.c:2746
+#: gio/gdbusmessage.c:2843
 msgid "Cannot serialize message: "
 msgstr "Kan ikke serialisere besked: "
 
-#: gio/gdbusmessage.c:2799
+#: gio/gdbusmessage.c:2896
 #, c-format
 msgid "Message body has signature “%s” but there is no signature header"
 msgstr "Beskedteksten har signatur “%s”, men der er intet signaturteksthoved"
 
-#: gio/gdbusmessage.c:2809
+#: gio/gdbusmessage.c:2906
 #, c-format
 msgid ""
 "Message body has type signature “%s” but signature in the header field is "
@@ -940,53 +953,53 @@ msgid ""
 msgstr ""
 "Beskedteksten har typesignatur “%s”, men signaturen i teksthovedet er “%s”"
 
-#: gio/gdbusmessage.c:2825
+#: gio/gdbusmessage.c:2922
 #, c-format
 msgid "Message body is empty but signature in the header field is “(%s)”"
 msgstr "Beskedteksten er tom, men signaturen i teksthovedet er “(%s)”"
 
-#: gio/gdbusmessage.c:3380
+#: gio/gdbusmessage.c:3477
 #, c-format
 msgid "Error return with body of type “%s”"
 msgstr "Fejlagtig returværdi med beskedtekst af typen “%s”"
 
-#: gio/gdbusmessage.c:3388
+#: gio/gdbusmessage.c:3485
 msgid "Error return with empty body"
 msgstr "Fejlagtig returværdi - tom beskedtekst"
 
-#: gio/gdbusprivate.c:2246
+#: gio/gdbusprivate.c:2185
 #, c-format
 msgid "(Type any character to close this window)\n"
 msgstr "(Tryk på en tast for at lukke dette vindue)\n"
 
-#: gio/gdbusprivate.c:2420
+#: gio/gdbusprivate.c:2371
 #, c-format
 msgid "Session dbus not running, and autolaunch failed"
 msgstr "Sessions-dbus kører ikke, og autostart mislykkedes"
 
-#: gio/gdbusprivate.c:2443
+#: gio/gdbusprivate.c:2394
 #, c-format
 msgid "Unable to get Hardware profile: %s"
 msgstr "Kan ikke hente hardwareprofil: %s"
 
 #. Translators: Both placeholders are file paths
-#: gio/gdbusprivate.c:2494
+#: gio/gdbusprivate.c:2445
 #, c-format
 msgid "Unable to load %s or %s: "
 msgstr "Kan ikke indlæse %s eller %s: "
 
-#: gio/gdbusproxy.c:1569
+#: gio/gdbusproxy.c:1573
 #, c-format
 msgid "Error calling StartServiceByName for %s: "
 msgstr "Fejl ved kald til StartServiceByName for %s: "
 
-#: gio/gdbusproxy.c:1592
+#: gio/gdbusproxy.c:1596
 #, c-format
 msgid "Unexpected reply %d from StartServiceByName(\"%s\") method"
 msgstr "Uventet svar %d fra metoden StartServiceByName(“%s”)"
 
 # Ved ikke helt hvad proxy dækker over her
-#: gio/gdbusproxy.c:2699 gio/gdbusproxy.c:2834
+#: gio/gdbusproxy.c:2707 gio/gdbusproxy.c:2842
 #, c-format
 msgid ""
 "Cannot invoke method; proxy is for the well-known name %s without an owner, "
@@ -1041,66 +1054,66 @@ msgstr ""
 "\n"
 "Brug “%s KOMMANDO --help” for at få hjælp om hver kommando.\n"
 
-#: gio/gdbus-tool.c:201 gio/gdbus-tool.c:273 gio/gdbus-tool.c:345
-#: gio/gdbus-tool.c:369 gio/gdbus-tool.c:859 gio/gdbus-tool.c:1236
-#: gio/gdbus-tool.c:1724
+#: gio/gdbus-tool.c:202 gio/gdbus-tool.c:274 gio/gdbus-tool.c:346
+#: gio/gdbus-tool.c:370 gio/gdbus-tool.c:860 gio/gdbus-tool.c:1245
+#: gio/gdbus-tool.c:1733
 #, c-format
 msgid "Error: %s\n"
 msgstr "Fejl: %s\n"
 
-#: gio/gdbus-tool.c:212 gio/gdbus-tool.c:286 gio/gdbus-tool.c:1740
+#: gio/gdbus-tool.c:213 gio/gdbus-tool.c:287 gio/gdbus-tool.c:1749
 #, c-format
 msgid "Error parsing introspection XML: %s\n"
 msgstr "Fejl ved fortolkning af XML til introspektion: %s\n"
 
-#: gio/gdbus-tool.c:250
+#: gio/gdbus-tool.c:251
 #, c-format
 msgid "Error: %s is not a valid name\n"
 msgstr "Fejl: %s er ikke et gyldigt navn\n"
 
-#: gio/gdbus-tool.c:255 gio/gdbus-tool.c:745 gio/gdbus-tool.c:1060
-#: gio/gdbus-tool.c:1890 gio/gdbus-tool.c:2130
+#: gio/gdbus-tool.c:256 gio/gdbus-tool.c:746 gio/gdbus-tool.c:1064
+#: gio/gdbus-tool.c:1899 gio/gdbus-tool.c:2139
 #, c-format
 msgid "Error: %s is not a valid object path\n"
 msgstr "Fejl: “%s” er ikke en gyldig objektsti\n"
 
-#: gio/gdbus-tool.c:403
+#: gio/gdbus-tool.c:404
 msgid "Connect to the system bus"
 msgstr "Forbind til systembussen"
 
-#: gio/gdbus-tool.c:404
+#: gio/gdbus-tool.c:405
 msgid "Connect to the session bus"
 msgstr "Forbind til sessionsbussen"
 
-#: gio/gdbus-tool.c:405
+#: gio/gdbus-tool.c:406
 msgid "Connect to given D-Bus address"
 msgstr "Forbind til den givne D-Bus-adresse"
 
-#: gio/gdbus-tool.c:415
+#: gio/gdbus-tool.c:416
 msgid "Connection Endpoint Options:"
 msgstr "Tilvalg for forbindelsesslutpunkt:"
 
-#: gio/gdbus-tool.c:416
+#: gio/gdbus-tool.c:417
 msgid "Options specifying the connection endpoint"
 msgstr "Tilvalg, der angiver forbindelsens slutpunkt"
 
-#: gio/gdbus-tool.c:439
+#: gio/gdbus-tool.c:440
 #, c-format
 msgid "No connection endpoint specified"
 msgstr "Intet slutpunkt for forbindelsen angivet"
 
-#: gio/gdbus-tool.c:449
+#: gio/gdbus-tool.c:450
 #, c-format
 msgid "Multiple connection endpoints specified"
 msgstr "Flere slutpunkter for forbindelsen angivet"
 
-#: gio/gdbus-tool.c:522
+#: gio/gdbus-tool.c:523
 #, c-format
 msgid ""
 "Warning: According to introspection data, interface “%s” does not exist\n"
 msgstr "Advarsel: Grænsefladen “%s” findes ikke ifølge introspektionsdata\n"
 
-#: gio/gdbus-tool.c:531
+#: gio/gdbus-tool.c:532
 #, c-format
 msgid ""
 "Warning: According to introspection data, method “%s” does not exist on "
@@ -1109,160 +1122,164 @@ msgstr ""
 "Advarsel: Metoden “%s” findes ikke i grænsefladen “%s” ifølge "
 "introspektionsdata\n"
 
-#: gio/gdbus-tool.c:593
+#: gio/gdbus-tool.c:594
 msgid "Optional destination for signal (unique name)"
 msgstr "Valgfri destination for signal (unikt navn)"
 
-#: gio/gdbus-tool.c:594
+#: gio/gdbus-tool.c:595
 msgid "Object path to emit signal on"
 msgstr "Objektsti, der skal udsendes et signal fra"
 
-#: gio/gdbus-tool.c:595
+#: gio/gdbus-tool.c:596
 msgid "Signal and interface name"
 msgstr "Signal- og grænsefladenavn"
 
-#: gio/gdbus-tool.c:628
+#: gio/gdbus-tool.c:629
 msgid "Emit a signal."
 msgstr "Udsend et signal."
 
-#: gio/gdbus-tool.c:683 gio/gdbus-tool.c:997 gio/gdbus-tool.c:1827
-#: gio/gdbus-tool.c:2059 gio/gdbus-tool.c:2279
+#: gio/gdbus-tool.c:684 gio/gdbus-tool.c:1001 gio/gdbus-tool.c:1836
+#: gio/gdbus-tool.c:2068 gio/gdbus-tool.c:2288
 #, c-format
 msgid "Error connecting: %s\n"
 msgstr "Fejl ved forbindelse: %s\n"
 
-#: gio/gdbus-tool.c:703
+#: gio/gdbus-tool.c:704
 #, c-format
 msgid "Error: %s is not a valid unique bus name.\n"
 msgstr "Fejl: “%s” er ikke et gyldigt unikt busnavn.\n"
 
-#: gio/gdbus-tool.c:722 gio/gdbus-tool.c:1040 gio/gdbus-tool.c:1870
+#: gio/gdbus-tool.c:723 gio/gdbus-tool.c:1044 gio/gdbus-tool.c:1879
 msgid "Error: Object path is not specified\n"
 msgstr "Fejl: Objektstien er ikke angivet\n"
 
-#: gio/gdbus-tool.c:765
+#: gio/gdbus-tool.c:766
 msgid "Error: Signal name is not specified\n"
 msgstr "Fejl: Signalnavnet er ikke angivet\n"
 
-#: gio/gdbus-tool.c:779
+#: gio/gdbus-tool.c:780
 #, c-format
 msgid "Error: Signal name “%s” is invalid\n"
 msgstr "Fejl: Signalnavnet “%s” er ugyldigt\n"
 
-#: gio/gdbus-tool.c:791
+#: gio/gdbus-tool.c:792
 #, c-format
 msgid "Error: %s is not a valid interface name\n"
 msgstr "Fejl: “%s” er ikke et gyldigt grænsefladenavn\n"
 
-#: gio/gdbus-tool.c:797
+#: gio/gdbus-tool.c:798
 #, c-format
 msgid "Error: %s is not a valid member name\n"
 msgstr "Fejl: “%s” er ikke et gyldigt medlemsnavn\n"
 
 #. Use the original non-"parse-me-harder" error
-#: gio/gdbus-tool.c:834 gio/gdbus-tool.c:1172
+#: gio/gdbus-tool.c:835 gio/gdbus-tool.c:1176
 #, c-format
 msgid "Error parsing parameter %d: %s\n"
 msgstr "Fejl ved fortolkning af parameter %d: %s\n"
 
-#: gio/gdbus-tool.c:866
+#: gio/gdbus-tool.c:867
 #, c-format
 msgid "Error flushing connection: %s\n"
 msgstr "Fejl ved tømning (flush) af forbindelse: %s\n"
 
-#: gio/gdbus-tool.c:893
+#: gio/gdbus-tool.c:895
 msgid "Destination name to invoke method on"
 msgstr "Destinationsnavnet, som metoden skal kaldes på"
 
-#: gio/gdbus-tool.c:894
+#: gio/gdbus-tool.c:896
 msgid "Object path to invoke method on"
 msgstr "Objektstien, som metoden skal kaldes på"
 
-#: gio/gdbus-tool.c:895
+#: gio/gdbus-tool.c:897
 msgid "Method and interface name"
 msgstr "Metode- og grænsefladenavn"
 
-#: gio/gdbus-tool.c:896
+#: gio/gdbus-tool.c:898
 msgid "Timeout in seconds"
 msgstr "Tidsudløb i sekunder"
 
-#: gio/gdbus-tool.c:942
+#: gio/gdbus-tool.c:899
+msgid "Allow interactive authorization"
+msgstr "Tillad interaktiv godkendelse"
+
+#: gio/gdbus-tool.c:946
 msgid "Invoke a method on a remote object."
 msgstr "Kald en metode på et fjernobjekt."
 
-#: gio/gdbus-tool.c:1014 gio/gdbus-tool.c:1844 gio/gdbus-tool.c:2084
+#: gio/gdbus-tool.c:1018 gio/gdbus-tool.c:1853 gio/gdbus-tool.c:2093
 msgid "Error: Destination is not specified\n"
 msgstr "Fejl: Destinationen er ikke angivet\n"
 
-#: gio/gdbus-tool.c:1025 gio/gdbus-tool.c:1861 gio/gdbus-tool.c:2095
+#: gio/gdbus-tool.c:1029 gio/gdbus-tool.c:1870 gio/gdbus-tool.c:2104
 #, c-format
 msgid "Error: %s is not a valid bus name\n"
 msgstr "Fejl: %s er ikke et gyldigt busnavn\n"
 
-#: gio/gdbus-tool.c:1075
+#: gio/gdbus-tool.c:1079
 msgid "Error: Method name is not specified\n"
 msgstr "Fejl: Metodenavnet er ikke angivet\n"
 
-#: gio/gdbus-tool.c:1086
+#: gio/gdbus-tool.c:1090
 #, c-format
 msgid "Error: Method name “%s” is invalid\n"
 msgstr "Fejl: Metodenavnet “%s” er ugyldigt\n"
 
-#: gio/gdbus-tool.c:1164
+#: gio/gdbus-tool.c:1168
 #, c-format
 msgid "Error parsing parameter %d of type “%s”: %s\n"
 msgstr "Fejl ved fortolkning af parameter %d af typen “%s”: %s\n"
 
-#: gio/gdbus-tool.c:1190
+#: gio/gdbus-tool.c:1194
 #, c-format
 msgid "Error adding handle %d: %s\n"
 msgstr "Fejl ved tilføjelse af håndtag: %d: %s\n"
 
-#: gio/gdbus-tool.c:1686
+#: gio/gdbus-tool.c:1695
 msgid "Destination name to introspect"
 msgstr "Destinationsnavnet, der skal introspiceres"
 
-#: gio/gdbus-tool.c:1687
+#: gio/gdbus-tool.c:1696
 msgid "Object path to introspect"
 msgstr "Objektstien, der skal introspiceres"
 
-#: gio/gdbus-tool.c:1688
+#: gio/gdbus-tool.c:1697
 msgid "Print XML"
 msgstr "Udskriv XML"
 
-#: gio/gdbus-tool.c:1689
+#: gio/gdbus-tool.c:1698
 msgid "Introspect children"
 msgstr "Foretag introspektion af underelementer"
 
-#: gio/gdbus-tool.c:1690
+#: gio/gdbus-tool.c:1699
 msgid "Only print properties"
 msgstr "Vis kun egenskaber"
 
-#: gio/gdbus-tool.c:1779
+#: gio/gdbus-tool.c:1788
 msgid "Introspect a remote object."
 msgstr "Introspicér et fjernobjekt."
 
-#: gio/gdbus-tool.c:1985
+#: gio/gdbus-tool.c:1994
 msgid "Destination name to monitor"
 msgstr "Navn på destination, der skal overvåges"
 
-#: gio/gdbus-tool.c:1986
+#: gio/gdbus-tool.c:1995
 msgid "Object path to monitor"
 msgstr "Objektsti, der skal overvåges"
 
-#: gio/gdbus-tool.c:2011
+#: gio/gdbus-tool.c:2020
 msgid "Monitor a remote object."
 msgstr "Overvåg et fjernobjekt."
 
-#: gio/gdbus-tool.c:2069
+#: gio/gdbus-tool.c:2078
 msgid "Error: can’t monitor a non-message-bus connection\n"
 msgstr "Fejl: Kan ikke overvåge en ikke-meddelelsesbus-forbindelse\n"
 
-#: gio/gdbus-tool.c:2193
+#: gio/gdbus-tool.c:2202
 msgid "Service to activate before waiting for the other one (well-known name)"
 msgstr "Tjeneste som skal aktiveres, før den anden afventes (velkendt navn)"
 
-#: gio/gdbus-tool.c:2196
+#: gio/gdbus-tool.c:2205
 msgid ""
 "Timeout to wait for before exiting with an error (seconds); 0 for no timeout "
 "(default)"
@@ -1270,63 +1287,68 @@ msgstr ""
 "Ventetid før afslutning med fejl (sekunder); 0 for ingen tidsgrænse "
 "(standard)"
 
-#: gio/gdbus-tool.c:2244
+#: gio/gdbus-tool.c:2253
 msgid "[OPTION…] BUS-NAME"
 msgstr "[TILVALG …] BUSNAVN"
 
-#: gio/gdbus-tool.c:2245
+#: gio/gdbus-tool.c:2254
 msgid "Wait for a bus name to appear."
 msgstr "Vent på at et busnavn fremkommer."
 
-#: gio/gdbus-tool.c:2321
+#: gio/gdbus-tool.c:2330
 msgid "Error: A service to activate for must be specified.\n"
 msgstr "Fejl: Der skal angives en tjeneste at aktivere for.\n"
 
-#: gio/gdbus-tool.c:2326
+#: gio/gdbus-tool.c:2335
 msgid "Error: A service to wait for must be specified.\n"
 msgstr "Fejl: Der skal angives en tjeneste at vente på.\n"
 
-#: gio/gdbus-tool.c:2331
+#: gio/gdbus-tool.c:2340
 msgid "Error: Too many arguments.\n"
 msgstr "Fejl: For mange argumenter.\n"
 
-#: gio/gdbus-tool.c:2339 gio/gdbus-tool.c:2346
+#: gio/gdbus-tool.c:2348 gio/gdbus-tool.c:2355
 #, c-format
 msgid "Error: %s is not a valid well-known bus name.\n"
 msgstr "Fejl: %s er ikke et gyldigt velkendt busnavn.\n"
 
-#: gio/gdesktopappinfo.c:2106 gio/gdesktopappinfo.c:4932
+#: gio/gdebugcontrollerdbus.c:358
+#, c-format
+msgid "Not authorized to change debug settings"
+msgstr "Ikke godkendt til at ændre fejlsøgningsindstillinger"
+
+#: gio/gdesktopappinfo.c:2178 gio/gdesktopappinfo.c:5105
 msgid "Unnamed"
 msgstr "Unavngivet"
 
-#: gio/gdesktopappinfo.c:2516
+#: gio/gdesktopappinfo.c:2588
 msgid "Desktop file didn’t specify Exec field"
 msgstr "Skrivebordsfil angav intet Exec-felt"
 
-#: gio/gdesktopappinfo.c:2801
+#: gio/gdesktopappinfo.c:2896
 msgid "Unable to find terminal required for application"
 msgstr "Kan ikke finde terminal krævet af dette program"
 
-#: gio/gdesktopappinfo.c:3452
+#: gio/gdesktopappinfo.c:3625
 #, c-format
 msgid "Can’t create user application configuration folder %s: %s"
 msgstr "Kan ikke oprette konfigurationsfolder %s for brugerprogram: %s"
 
-#: gio/gdesktopappinfo.c:3456
+#: gio/gdesktopappinfo.c:3629
 #, c-format
 msgid "Can’t create user MIME configuration folder %s: %s"
 msgstr "Kan ikke oprette bruger-MIME-konfigurationsfolder %s: %s"
 
-#: gio/gdesktopappinfo.c:3698 gio/gdesktopappinfo.c:3722
+#: gio/gdesktopappinfo.c:3871 gio/gdesktopappinfo.c:3895
 msgid "Application information lacks an identifier"
 msgstr "Programinformation mangler en identifikator"
 
-#: gio/gdesktopappinfo.c:3958
+#: gio/gdesktopappinfo.c:4131
 #, c-format
 msgid "Can’t create user desktop file %s"
 msgstr "Kan ikke oprette brugerskrivebords-fil %s"
 
-#: gio/gdesktopappinfo.c:4094
+#: gio/gdesktopappinfo.c:4267
 #, c-format
 msgid "Custom definition for %s"
 msgstr "Tilpasset definition for %s"
@@ -1354,7 +1376,7 @@ msgstr "drevet implementerer ikke start"
 msgid "drive doesn’t implement stop"
 msgstr "drevet implementerer ikke stop"
 
-#: gio/gdtlsconnection.c:1153 gio/gtlsconnection.c:920
+#: gio/gdtlsconnection.c:1186 gio/gtlsconnection.c:955
 msgid "TLS backend does not implement TLS binding retrieval"
 msgstr "TLS-motor implementerer ikke hentning af TLS-bindinger"
 
@@ -1395,74 +1417,74 @@ msgstr "Forventede et GEmblem til GEmblemedIcon"
 #. * trying to find the enclosing (user visible)
 #. * mount of a file, but none exists.
 #.
-#: gio/gfile.c:1561
+#: gio/gfile.c:1579
 msgid "Containing mount does not exist"
 msgstr "Indeholdende montering findes ikke"
 
-#: gio/gfile.c:2608 gio/glocalfile.c:2477
+#: gio/gfile.c:2626 gio/glocalfile.c:2486
 msgid "Can’t copy over directory"
 msgstr "Kan ikke kopiere over mappe"
 
-#: gio/gfile.c:2668
+#: gio/gfile.c:2686
 msgid "Can’t copy directory over directory"
 msgstr "Kan ikke kopiere mappe over mappe"
 
-#: gio/gfile.c:2676
+#: gio/gfile.c:2694
 msgid "Target file exists"
 msgstr "Målfilen findes"
 
-#: gio/gfile.c:2695
+#: gio/gfile.c:2713
 msgid "Can’t recursively copy directory"
 msgstr "Kan ikke kopiere mappe rekursivt"
 
-#: gio/gfile.c:2996
+#: gio/gfile.c:3014
 msgid "Splice not supported"
 msgstr "Splejsning understøttes ikke"
 
-#: gio/gfile.c:3000
+#: gio/gfile.c:3018
 #, c-format
 msgid "Error splicing file: %s"
 msgstr "Fejl ved splejsning af fil: %s"
 
-#: gio/gfile.c:3152
+#: gio/gfile.c:3170
 msgid "Copy (reflink/clone) between mounts is not supported"
 msgstr "Kopiering (reflink/klon) mellem monteringer understøttes ikke"
 
-#: gio/gfile.c:3156
+#: gio/gfile.c:3174
 msgid "Copy (reflink/clone) is not supported or invalid"
 msgstr "Kopiering (reflink/klon) er ikke understøttet eller ugyldigt"
 
-#: gio/gfile.c:3161
+#: gio/gfile.c:3179
 msgid "Copy (reflink/clone) is not supported or didn’t work"
 msgstr "Kopiering (reflink/klon) er ikke understøttet eller virkede ikke"
 
-#: gio/gfile.c:3226
+#: gio/gfile.c:3244
 msgid "Can’t copy special file"
 msgstr "Kan ikke kopiere specialfil"
 
-#: gio/gfile.c:4035
+#: gio/gfile.c:4138
 msgid "Invalid symlink value given"
 msgstr "Ugyldig værdi givet for symlink"
 
-#: gio/gfile.c:4045 glib/gfileutils.c:2354
+#: gio/gfile.c:4148 glib/gfileutils.c:2333
 msgid "Symbolic links not supported"
 msgstr "Symbolske links er ikke understøttet"
 
 # I koden er det en funktion der hedder g_file_trash, som kan give dette som en fejlmeddelelse
-#: gio/gfile.c:4213
+#: gio/gfile.c:4316
 msgid "Trash not supported"
 msgstr "Flyt til papirkurv understøttes ikke"
 
-#: gio/gfile.c:4325
+#: gio/gfile.c:4428
 #, c-format
 msgid "File names cannot contain “%c”"
 msgstr "Filnavne må ikke indeholder “%c”"
 
-#: gio/gfile.c:6806 gio/gvolume.c:364
+#: gio/gfile.c:7028 gio/gvolume.c:364
 msgid "volume doesn’t implement mount"
 msgstr "diskenheden implementerer ikke montering"
 
-#: gio/gfile.c:6920 gio/gfile.c:6968
+#: gio/gfile.c:7142 gio/gfile.c:7190
 msgid "No application is registered as handling this file"
 msgstr "Intet program er registreret til håndtering af denne fil"
 
@@ -1508,7 +1530,7 @@ msgstr "Afkortning tillades ikke for inputstrømmen"
 msgid "Truncate not supported on stream"
 msgstr "Afkortning understøttes ikke på strømmen"
 
-#: gio/ghttpproxy.c:91 gio/gresolver.c:443 gio/gresolver.c:596
+#: gio/ghttpproxy.c:91 gio/gresolver.c:458 gio/gresolver.c:611
 #: glib/gconvert.c:1825
 msgid "Invalid hostname"
 msgstr "Ugyldigt værtsnavn"
@@ -1596,7 +1618,7 @@ msgid "Could not parse “%s” as IP address mask"
 msgstr "Kunne ikke fortolke “%s” som en IP-adresse-maske"
 
 #: gio/ginetsocketaddress.c:203 gio/ginetsocketaddress.c:220
-#: gio/gnativesocketaddress.c:109 gio/gunixsocketaddress.c:221
+#: gio/gnativesocketaddress.c:109 gio/gunixsocketaddress.c:228
 msgid "Not enough space for socket address"
 msgstr "Utilstrækkelig plads til sokkeladresse"
 
@@ -2438,15 +2460,15 @@ msgstr "Fejl ved komprimering af filen %s"
 msgid "text may not appear inside <%s>"
 msgstr "der må ikke være tekst inden i <%s>"
 
-#: gio/glib-compile-resources.c:737 gio/glib-compile-schemas.c:2172
+#: gio/glib-compile-resources.c:819 gio/glib-compile-schemas.c:2172
 msgid "Show program version and exit"
 msgstr "Vis programversion og afslut"
 
-#: gio/glib-compile-resources.c:738
+#: gio/glib-compile-resources.c:820
 msgid "Name of the output file"
 msgstr "Navnet på outputfilen"
 
-#: gio/glib-compile-resources.c:739
+#: gio/glib-compile-resources.c:821
 msgid ""
 "The directories to load files referenced in FILE from (default: current "
 "directory)"
@@ -2454,47 +2476,47 @@ msgstr ""
 "Katalogerne hvorfra filer fra henvisninger i FIL læses (som standard det "
 "nuværende katalog)"
 
-#: gio/glib-compile-resources.c:739 gio/glib-compile-schemas.c:2173
+#: gio/glib-compile-resources.c:821 gio/glib-compile-schemas.c:2173
 #: gio/glib-compile-schemas.c:2202
 msgid "DIRECTORY"
 msgstr "KATALOG"
 
-#: gio/glib-compile-resources.c:740
+#: gio/glib-compile-resources.c:822
 msgid ""
 "Generate output in the format selected for by the target filename extension"
 msgstr "Generér output i formatet givet ved målets filendelse"
 
-#: gio/glib-compile-resources.c:741
+#: gio/glib-compile-resources.c:823
 msgid "Generate source header"
 msgstr "Generér kildeheader"
 
-#: gio/glib-compile-resources.c:742
+#: gio/glib-compile-resources.c:824
 msgid "Generate source code used to link in the resource file into your code"
 msgstr ""
 "Generér kildekoden, der bruges til at linke fra ressourcefilen ind i din kode"
 
-#: gio/glib-compile-resources.c:743
+#: gio/glib-compile-resources.c:825
 msgid "Generate dependency list"
 msgstr "Generér liste af afhængigheder"
 
-#: gio/glib-compile-resources.c:744
+#: gio/glib-compile-resources.c:826
 msgid "Name of the dependency file to generate"
 msgstr "Navn på afhængighedsfil som skal oprettes"
 
 # phony er et nøgleord i make
-#: gio/glib-compile-resources.c:745
+#: gio/glib-compile-resources.c:827
 msgid "Include phony targets in the generated dependency file"
 msgstr "Inkludér falske (phony) mål i den genererede afhængighedsfil"
 
-#: gio/glib-compile-resources.c:746
+#: gio/glib-compile-resources.c:828
 msgid "Don’t automatically create and register resource"
 msgstr "Opret og registrér ikke ressource automatisk"
 
-#: gio/glib-compile-resources.c:747
+#: gio/glib-compile-resources.c:829
 msgid "Don’t export functions; declare them G_GNUC_INTERNAL"
 msgstr "Eksporter ikke funktioner; erklær dem G_GNUC_INTERNAL"
 
-#: gio/glib-compile-resources.c:748
+#: gio/glib-compile-resources.c:830
 msgid ""
 "Don’t embed resource data in the C file; assume it's linked externally "
 "instead"
@@ -2502,11 +2524,15 @@ msgstr ""
 "Indlejr ikke ressourcedata i C-filen; antag at den i stedet er linket "
 "eksternt"
 
-#: gio/glib-compile-resources.c:749
+#: gio/glib-compile-resources.c:831
 msgid "C identifier name used for the generated source code"
 msgstr "C-identifikatornavn, der bruges til genereret kildekode"
 
-#: gio/glib-compile-resources.c:775
+#: gio/glib-compile-resources.c:832
+msgid "The target C compiler (default: the CC environment variable)"
+msgstr "Mål-C-kompileren (standard: CC-miljøvariablen)"
+
+#: gio/glib-compile-resources.c:858
 msgid ""
 "Compile a resource specification into a resource file.\n"
 "Resource specification files have the extension .gresource.xml,\n"
@@ -2516,7 +2542,7 @@ msgstr ""
 "Ressourcespecifikationsfiler har filendelsen .gresource.xml,\n"
 "og ressourcefilen har filendelsen .gresource."
 
-#: gio/glib-compile-resources.c:797
+#: gio/glib-compile-resources.c:880
 msgid "You should give exactly one file name\n"
 msgstr "Du skal angive præcist ét filnavn\n"
 
@@ -3031,8 +3057,8 @@ msgstr "Fejl ved omdøbning af filen %s: %s"
 msgid "Can’t rename file, filename already exists"
 msgstr "Kan ikke omdøbe fil, da filnavnet allerede findes"
 
-#: gio/glocalfile.c:1184 gio/glocalfile.c:2371 gio/glocalfile.c:2399
-#: gio/glocalfile.c:2538 gio/glocalfileoutputstream.c:656
+#: gio/glocalfile.c:1184 gio/glocalfile.c:2380 gio/glocalfile.c:2408
+#: gio/glocalfile.c:2547 gio/glocalfileoutputstream.c:656
 msgid "Invalid filename"
 msgstr "Ugyldigt filnavn"
 
@@ -3046,91 +3072,91 @@ msgstr "Fejl ved åbning af filen %s: %s"
 msgid "Error removing file %s: %s"
 msgstr "Fejl under fjernelse af filen %s: %s"
 
-#: gio/glocalfile.c:1982 gio/glocalfile.c:1993
+#: gio/glocalfile.c:1982 gio/glocalfile.c:1993 gio/glocalfile.c:2020
 #, c-format
 msgid "Error trashing file %s: %s"
 msgstr "Fejl ved flytning af filen %s til papirkurv: %s"
 
-#: gio/glocalfile.c:2031
+#: gio/glocalfile.c:2040
 #, c-format
 msgid "Unable to create trash directory %s: %s"
 msgstr "Kan ikke oprette papirkurvskatalog %s: %s"
 
-#: gio/glocalfile.c:2052
+#: gio/glocalfile.c:2061
 #, c-format
 msgid "Unable to find toplevel directory to trash %s"
 msgstr "Kan ikke finde topniveau-katalog til papirkurv %s"
 
-#: gio/glocalfile.c:2060
+#: gio/glocalfile.c:2069
 #, c-format
 msgid "Trashing on system internal mounts is not supported"
 msgstr "Papirkurv understøttes ikke på interne systemmonteringer"
 
-#: gio/glocalfile.c:2146 gio/glocalfile.c:2174
+#: gio/glocalfile.c:2155 gio/glocalfile.c:2183
 #, c-format
 msgid "Unable to find or create trash directory %s to trash %s"
 msgstr "Kan ikke finde eller oprette papirkurvskatalog %s til papirkurv %s"
 
-#: gio/glocalfile.c:2220
+#: gio/glocalfile.c:2229
 #, c-format
 msgid "Unable to create trashing info file for %s: %s"
 msgstr "Kan ikke oprette papirkurvs-infofil for %s: %s"
 
-#: gio/glocalfile.c:2282
+#: gio/glocalfile.c:2291
 #, c-format
 msgid "Unable to trash file %s across filesystem boundaries"
 msgstr "Kan ikke smide filen %s ud på andet filsystem"
 
-#: gio/glocalfile.c:2286 gio/glocalfile.c:2342
+#: gio/glocalfile.c:2295 gio/glocalfile.c:2351
 #, c-format
 msgid "Unable to trash file %s: %s"
 msgstr "Kan ikke smide filen %s ud: %s"
 
-#: gio/glocalfile.c:2348
+#: gio/glocalfile.c:2357
 #, c-format
 msgid "Unable to trash file %s"
 msgstr "Kan ikke smide filen %s ud"
 
-#: gio/glocalfile.c:2374
+#: gio/glocalfile.c:2383
 #, c-format
 msgid "Error creating directory %s: %s"
 msgstr "Fejl ved oprettelse af mappen %s: %s"
 
-#: gio/glocalfile.c:2403
+#: gio/glocalfile.c:2412
 #, c-format
 msgid "Filesystem does not support symbolic links"
 msgstr "Filsystemet understøtter ikke symbolske links"
 
-#: gio/glocalfile.c:2406
+#: gio/glocalfile.c:2415
 #, c-format
 msgid "Error making symbolic link %s: %s"
 msgstr "Fejl under oprettelse af symbolsk link %s: %s"
 
-#: gio/glocalfile.c:2449 gio/glocalfile.c:2484 gio/glocalfile.c:2541
+#: gio/glocalfile.c:2458 gio/glocalfile.c:2493 gio/glocalfile.c:2550
 #, c-format
 msgid "Error moving file %s: %s"
 msgstr "Fejl ved flytning af filen %s: %s"
 
-#: gio/glocalfile.c:2472
+#: gio/glocalfile.c:2481
 msgid "Can’t move directory over directory"
 msgstr "Kan ikke flytte mappe over mappe"
 
-#: gio/glocalfile.c:2498 gio/glocalfileoutputstream.c:1108
+#: gio/glocalfile.c:2507 gio/glocalfileoutputstream.c:1108
 #: gio/glocalfileoutputstream.c:1122 gio/glocalfileoutputstream.c:1137
 #: gio/glocalfileoutputstream.c:1154 gio/glocalfileoutputstream.c:1168
 msgid "Backup file creation failed"
 msgstr "Oprettelse af sikkerhedskopi mislykkedes"
 
-#: gio/glocalfile.c:2517
+#: gio/glocalfile.c:2526
 #, c-format
 msgid "Error removing target file: %s"
 msgstr "Fejl ved fjernelse af målfil: %s"
 
-#: gio/glocalfile.c:2531
+#: gio/glocalfile.c:2540
 msgid "Move between mounts not supported"
 msgstr "Flytning mellem monteringer understøttes ikke"
 
-#: gio/glocalfile.c:2705
+#: gio/glocalfile.c:2714
 #, c-format
 msgid "Could not determine the disk usage of %s: %s"
 msgstr "Kunne ikke bestemme diskforbruget af %s: %s"
@@ -3311,13 +3337,13 @@ msgstr "Fejl under oprettelse af sikkerhedskopi: %s"
 msgid "Error renaming temporary file: %s"
 msgstr "Fejl under omdøbning af midlertidig fil: %s"
 
-#: gio/glocalfileoutputstream.c:609 gio/glocalfileoutputstream.c:1237
+#: gio/glocalfileoutputstream.c:609 gio/glocalfileoutputstream.c:1239
 #, c-format
 msgid "Error truncating file: %s"
 msgstr "Fejl ved afkortning af filen: %s"
 
 #: gio/glocalfileoutputstream.c:662 gio/glocalfileoutputstream.c:907
-#: gio/glocalfileoutputstream.c:1218 gio/gsubprocess.c:226
+#: gio/glocalfileoutputstream.c:1220 gio/gsubprocess.c:229
 #, c-format
 msgid "Error opening file “%s”: %s"
 msgstr "Fejl ved åbning af filen “%s”: %s"
@@ -3339,7 +3365,7 @@ msgstr "Filen blev ændret eksternt"
 msgid "Error removing old file: %s"
 msgstr "Fejl under fjernelse af gammel fil: %s"
 
-#: gio/gmemoryinputstream.c:474 gio/gmemoryoutputstream.c:772
+#: gio/gmemoryinputstream.c:474 gio/gmemoryoutputstream.c:762
 msgid "Invalid GSeekType supplied"
 msgstr "Ugyldig GSeekType angivet"
 
@@ -3351,15 +3377,15 @@ msgstr "Ugyldig søgeforespørgsel"
 msgid "Cannot truncate GMemoryInputStream"
 msgstr "Kan ikke afkorte GMemoryInputStream"
 
-#: gio/gmemoryoutputstream.c:567
+#: gio/gmemoryoutputstream.c:568
 msgid "Memory output stream not resizable"
 msgstr "Hukommelses-uddatastrøm kan ikke ændre størrelse"
 
-#: gio/gmemoryoutputstream.c:583
+#: gio/gmemoryoutputstream.c:584
 msgid "Failed to resize memory output stream"
 msgstr "Kunne ikke ændre størrelse for hukommelses-uddatastrøm"
 
-#: gio/gmemoryoutputstream.c:673
+#: gio/gmemoryoutputstream.c:663
 msgid ""
 "Amount of memory required to process the write is larger than available "
 "address space"
@@ -3367,11 +3393,11 @@ msgstr ""
 "Mængden af hukommelse, der kræves af skrivningen, er større end det "
 "tilgængelige adresserum"
 
-#: gio/gmemoryoutputstream.c:782
+#: gio/gmemoryoutputstream.c:772
 msgid "Requested seek before the beginning of the stream"
 msgstr "Forespurgte om søgning før begyndelse af strøm"
 
-#: gio/gmemoryoutputstream.c:797
+#: gio/gmemoryoutputstream.c:787
 msgid "Requested seek beyond the end of the stream"
 msgstr "Forespurgte om søgning efter afslutning af strøm"
 
@@ -3453,12 +3479,12 @@ msgstr "Kunne ikke oprette netværksovervågning: "
 msgid "Could not get network status: "
 msgstr "Kunne ikke finde netværksstatus: "
 
-#: gio/gnetworkmonitornm.c:348
+#: gio/gnetworkmonitornm.c:311
 #, c-format
 msgid "NetworkManager not running"
 msgstr "Netværkshåndtering kører ikke"
 
-#: gio/gnetworkmonitornm.c:359
+#: gio/gnetworkmonitornm.c:322
 #, c-format
 msgid "NetworkManager version too old"
 msgstr "Versionen af NetværksHåndtering er for gammel"
@@ -3476,18 +3502,22 @@ msgstr "Summen af vektorer givet til %s er for stor"
 msgid "Source stream is already closed"
 msgstr "Kildestrømmen er allerede lukket"
 
-#: gio/gresolver.c:386 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
+#. Translators: the first placeholder is a domain name, the
+#. * second is an error message
+#: gio/gresolver.c:401 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
+#: gio/gthreadedresolver.c:780 gio/gthreadedresolver.c:804
+#: gio/gthreadedresolver.c:829 gio/gthreadedresolver.c:844
 #, c-format
 msgid "Error resolving “%s”: %s"
 msgstr "Fejl ved opløsning af “%s”: %s"
 
 #. Translators: The placeholder is for a function name.
-#: gio/gresolver.c:455 gio/gresolver.c:615
+#: gio/gresolver.c:470 gio/gresolver.c:630
 #, c-format
 msgid "%s not implemented"
 msgstr "%s er ikke implementeret"
 
-#: gio/gresolver.c:984 gio/gresolver.c:1036
+#: gio/gresolver.c:999 gio/gresolver.c:1051
 msgid "Invalid domain"
 msgstr "Ugyldigt domæne"
 
@@ -3602,7 +3632,7 @@ msgstr ""
 msgid "  SECTION   An (optional) elf section name\n"
 msgstr "  SEKTION   Navn på elf-sektion (valgfri)\n"
 
-#: gio/gresource-tool.c:565 gio/gsettings-tool.c:706
+#: gio/gresource-tool.c:565 gio/gsettings-tool.c:718
 msgid "  COMMAND   The (optional) command to explain\n"
 msgstr "  KOMMANDO  Den kommandoen der skal forklares (valgfri)\n"
 
@@ -3634,7 +3664,7 @@ msgstr "STI"
 msgid "  PATH      A resource path\n"
 msgstr "  STI       En ressourcesti\n"
 
-#: gio/gsettings-tool.c:49 gio/gsettings-tool.c:70 gio/gsettings-tool.c:911
+#: gio/gsettings-tool.c:49 gio/gsettings-tool.c:70 gio/gsettings-tool.c:923
 #, c-format
 msgid "No such schema “%s”\n"
 msgstr "Intet sådant skema “%s”\n"
@@ -3665,35 +3695,35 @@ msgstr "Sti skal slutte med skråstreg (/)\n"
 msgid "Path must not contain two adjacent slashes (//)\n"
 msgstr "Sti må ikke indeholde to skråstreger i træk (//)\n"
 
-#: gio/gsettings-tool.c:541
+#: gio/gsettings-tool.c:553
 msgid "The provided value is outside of the valid range\n"
 msgstr "Den givne værdi ligger uden for det gyldige interval\n"
 
-#: gio/gsettings-tool.c:548
+#: gio/gsettings-tool.c:560
 msgid "The key is not writable\n"
 msgstr "Nøglen er skrivebeskyttet\n"
 
-#: gio/gsettings-tool.c:584
+#: gio/gsettings-tool.c:596
 msgid "List the installed (non-relocatable) schemas"
 msgstr "Vis de installerede (uflytbare) skemaer"
 
-#: gio/gsettings-tool.c:590
+#: gio/gsettings-tool.c:602
 msgid "List the installed relocatable schemas"
 msgstr "Vis de installerede flytbare skemaer"
 
-#: gio/gsettings-tool.c:596
+#: gio/gsettings-tool.c:608
 msgid "List the keys in SCHEMA"
 msgstr "Vis nøglerne i SKEMA"
 
-#: gio/gsettings-tool.c:597 gio/gsettings-tool.c:603 gio/gsettings-tool.c:646
+#: gio/gsettings-tool.c:609 gio/gsettings-tool.c:615 gio/gsettings-tool.c:658
 msgid "SCHEMA[:PATH]"
 msgstr "SKEMA[:STI]"
 
-#: gio/gsettings-tool.c:602
+#: gio/gsettings-tool.c:614
 msgid "List the children of SCHEMA"
 msgstr "Vis underelementerne af SKEMA"
 
-#: gio/gsettings-tool.c:608
+#: gio/gsettings-tool.c:620
 msgid ""
 "List keys and values, recursively\n"
 "If no SCHEMA is given, list all keys\n"
@@ -3701,48 +3731,48 @@ msgstr ""
 "Vis nøgler og værdier rekursivt\n"
 "Hvis intet SKEMA er angivet, vis alle nøgler\n"
 
-#: gio/gsettings-tool.c:610
+#: gio/gsettings-tool.c:622
 msgid "[SCHEMA[:PATH]]"
 msgstr "[SKEMA[:STI]]"
 
-#: gio/gsettings-tool.c:615
+#: gio/gsettings-tool.c:627
 msgid "Get the value of KEY"
 msgstr "Hent værdien for NØGLE"
 
-#: gio/gsettings-tool.c:616 gio/gsettings-tool.c:622 gio/gsettings-tool.c:628
-#: gio/gsettings-tool.c:640 gio/gsettings-tool.c:652
+#: gio/gsettings-tool.c:628 gio/gsettings-tool.c:634 gio/gsettings-tool.c:640
+#: gio/gsettings-tool.c:652 gio/gsettings-tool.c:664
 msgid "SCHEMA[:PATH] KEY"
 msgstr "SKEMA[:STI] NØGLE"
 
-#: gio/gsettings-tool.c:621
+#: gio/gsettings-tool.c:633
 msgid "Query the range of valid values for KEY"
 msgstr "Forespørg om det gyldige interval af værdier for NØGLE"
 
-#: gio/gsettings-tool.c:627
+#: gio/gsettings-tool.c:639
 msgid "Query the description for KEY"
 msgstr "Forespørg om beskrivelsen af NØGLE"
 
-#: gio/gsettings-tool.c:633
+#: gio/gsettings-tool.c:645
 msgid "Set the value of KEY to VALUE"
 msgstr "Sæt værdien af NØGLE til VÆRDI"
 
-#: gio/gsettings-tool.c:634
+#: gio/gsettings-tool.c:646
 msgid "SCHEMA[:PATH] KEY VALUE"
 msgstr "SKEMA[:STI] NØGLE VÆRDI"
 
-#: gio/gsettings-tool.c:639
+#: gio/gsettings-tool.c:651
 msgid "Reset KEY to its default value"
 msgstr "Nulstil NØGLE til dens standardværdi"
 
-#: gio/gsettings-tool.c:645
+#: gio/gsettings-tool.c:657
 msgid "Reset all keys in SCHEMA to their defaults"
 msgstr "Nulstil alle nøgler i SKEMA til deres standardværdier"
 
-#: gio/gsettings-tool.c:651
+#: gio/gsettings-tool.c:663
 msgid "Check if KEY is writable"
 msgstr "Se om NØGLE er skrivbar"
 
-#: gio/gsettings-tool.c:657
+#: gio/gsettings-tool.c:669
 msgid ""
 "Monitor KEY for changes.\n"
 "If no KEY is specified, monitor all keys in SCHEMA.\n"
@@ -3752,11 +3782,11 @@ msgstr ""
 "Hvis ingen NØGLE er givet, overvåges alle nøgler i SKEMA.\n"
 "Brug ^C for at standse overvågning.\n"
 
-#: gio/gsettings-tool.c:660
+#: gio/gsettings-tool.c:672
 msgid "SCHEMA[:PATH] [KEY]"
 msgstr "SKEMA[:STI] [NØGLE]"
 
-#: gio/gsettings-tool.c:672
+#: gio/gsettings-tool.c:684
 msgid ""
 "Usage:\n"
 "  gsettings --version\n"
@@ -3804,7 +3834,7 @@ msgstr ""
 "Brug “gsettings help KOMMANDO” for at få uddybende hjælp.\n"
 "\n"
 
-#: gio/gsettings-tool.c:696
+#: gio/gsettings-tool.c:708
 #, c-format
 msgid ""
 "Usage:\n"
@@ -3819,11 +3849,11 @@ msgstr ""
 "%s\n"
 "\n"
 
-#: gio/gsettings-tool.c:702
+#: gio/gsettings-tool.c:714
 msgid "  SCHEMADIR A directory to search for additional schemas\n"
 msgstr "  SKEMAKAT  Et katalog hvor der søges efter yderligere skemaer\n"
 
-#: gio/gsettings-tool.c:710
+#: gio/gsettings-tool.c:722
 msgid ""
 "  SCHEMA    The name of the schema\n"
 "  PATH      The path, for relocatable schemas\n"
@@ -3831,211 +3861,211 @@ msgstr ""
 "  SKEMA     Navnet på skemaet\n"
 "  STI       Stien, for flytbare skemaer\n"
 
-#: gio/gsettings-tool.c:715
+#: gio/gsettings-tool.c:727
 msgid "  KEY       The (optional) key within the schema\n"
 msgstr "  NØGLE     Den (valgfri) nøgle inden for skemaet\n"
 
-#: gio/gsettings-tool.c:719
+#: gio/gsettings-tool.c:731
 msgid "  KEY       The key within the schema\n"
 msgstr "  NØGLE     Nøglen inden for skemaet\n"
 
-#: gio/gsettings-tool.c:723
+#: gio/gsettings-tool.c:735
 msgid "  VALUE     The value to set\n"
 msgstr "  VÆRDI     Værdien der skal sættes\n"
 
-#: gio/gsettings-tool.c:778
+#: gio/gsettings-tool.c:790
 #, c-format
 msgid "Could not load schemas from %s: %s\n"
 msgstr "Kunne ikke indlæse skemaer fra %s: %s\n"
 
-#: gio/gsettings-tool.c:790
+#: gio/gsettings-tool.c:802
 msgid "No schemas installed\n"
 msgstr "Ingen skemaer installeret\n"
 
-#: gio/gsettings-tool.c:869
+#: gio/gsettings-tool.c:881
 msgid "Empty schema name given\n"
 msgstr "Tomt skemanavn givet\n"
 
-#: gio/gsettings-tool.c:924
+#: gio/gsettings-tool.c:936
 #, c-format
 msgid "No such key “%s”\n"
 msgstr "Ingen sådan nøgle “%s”\n"
 
-#: gio/gsocket.c:413
+#: gio/gsocket.c:417
 msgid "Invalid socket, not initialized"
 msgstr "Ugyldig sokkel, ikke initialiseret"
 
-#: gio/gsocket.c:420
+#: gio/gsocket.c:424
 #, c-format
 msgid "Invalid socket, initialization failed due to: %s"
 msgstr "Ugyldig sokkel, initialisering mislykkedes på grund af: %s"
 
-#: gio/gsocket.c:428
+#: gio/gsocket.c:432
 msgid "Socket is already closed"
 msgstr "Soklen er allerede lukket"
 
-#: gio/gsocket.c:443 gio/gsocket.c:3190 gio/gsocket.c:4420 gio/gsocket.c:4478
+#: gio/gsocket.c:447 gio/gsocket.c:3194 gio/gsocket.c:4427 gio/gsocket.c:4485
 msgid "Socket I/O timed out"
 msgstr "Tidsudløb for sokkel-I/O"
 
-#: gio/gsocket.c:578
+#: gio/gsocket.c:582
 #, c-format
 msgid "creating GSocket from fd: %s"
 msgstr "opretter GSocket fra fd: %s"
 
-#: gio/gsocket.c:607 gio/gsocket.c:671 gio/gsocket.c:678
+#: gio/gsocket.c:611 gio/gsocket.c:675 gio/gsocket.c:682
 #, c-format
 msgid "Unable to create socket: %s"
 msgstr "Kan ikke oprette sokkel: %s"
 
-#: gio/gsocket.c:671
+#: gio/gsocket.c:675
 msgid "Unknown family was specified"
 msgstr "Der blev angivet en ukendt familie"
 
-#: gio/gsocket.c:678
+#: gio/gsocket.c:682
 msgid "Unknown protocol was specified"
 msgstr "Der blev angivet en ukendt protokol"
 
-#: gio/gsocket.c:1169
+#: gio/gsocket.c:1173
 #, c-format
 msgid "Cannot use datagram operations on a non-datagram socket."
 msgstr "Kan ikke bruge datagramoperationer på en ikke-datagram-sokkel."
 
-#: gio/gsocket.c:1186
+#: gio/gsocket.c:1190
 #, c-format
 msgid "Cannot use datagram operations on a socket with a timeout set."
 msgstr "Kan ikke bruge datagramoperationer på en sokkel med angivet udløbstid."
 
-#: gio/gsocket.c:1993
+#: gio/gsocket.c:1997
 #, c-format
 msgid "could not get local address: %s"
 msgstr "kunne ikke finde lokal adresse: %s"
 
-#: gio/gsocket.c:2039
+#: gio/gsocket.c:2043
 #, c-format
 msgid "could not get remote address: %s"
 msgstr "kunne ikke finde fjern adresse: %s"
 
-#: gio/gsocket.c:2105
+#: gio/gsocket.c:2109
 #, c-format
 msgid "could not listen: %s"
 msgstr "kunne ikke lytte: %s"
 
-#: gio/gsocket.c:2209
+#: gio/gsocket.c:2213
 #, c-format
 msgid "Error binding to address %s: %s"
 msgstr "Fejl ved binding til adresse %s: %s"
 
-#: gio/gsocket.c:2385 gio/gsocket.c:2422 gio/gsocket.c:2532 gio/gsocket.c:2557
-#: gio/gsocket.c:2620 gio/gsocket.c:2678 gio/gsocket.c:2696
+#: gio/gsocket.c:2389 gio/gsocket.c:2426 gio/gsocket.c:2536 gio/gsocket.c:2561
+#: gio/gsocket.c:2624 gio/gsocket.c:2682 gio/gsocket.c:2700
 #, c-format
 msgid "Error joining multicast group: %s"
 msgstr "Fejl ved deltagelse i multicastgruppe: %s"
 
-#: gio/gsocket.c:2386 gio/gsocket.c:2423 gio/gsocket.c:2533 gio/gsocket.c:2558
-#: gio/gsocket.c:2621 gio/gsocket.c:2679 gio/gsocket.c:2697
+#: gio/gsocket.c:2390 gio/gsocket.c:2427 gio/gsocket.c:2537 gio/gsocket.c:2562
+#: gio/gsocket.c:2625 gio/gsocket.c:2683 gio/gsocket.c:2701
 #, c-format
 msgid "Error leaving multicast group: %s"
 msgstr "Fejl ved fratræden fra multicastgruppe: %s"
 
-#: gio/gsocket.c:2387
+#: gio/gsocket.c:2391
 msgid "No support for source-specific multicast"
 msgstr "Ingen understøttelse for kildespecifik multicast"
 
-#: gio/gsocket.c:2534
+#: gio/gsocket.c:2538
 msgid "Unsupported socket family"
 msgstr "Sokkelfamilie understøttes ikke"
 
-#: gio/gsocket.c:2559
+#: gio/gsocket.c:2563
 msgid "source-specific not an IPv4 address"
 msgstr "kildespecifik er ikke en IPv4-adresse"
 
-#: gio/gsocket.c:2583
+#: gio/gsocket.c:2587
 #, c-format
 msgid "Interface name too long"
 msgstr "Grænsefladenavnet er for langt"
 
-#: gio/gsocket.c:2596 gio/gsocket.c:2646
+#: gio/gsocket.c:2600 gio/gsocket.c:2650
 #, c-format
 msgid "Interface not found: %s"
 msgstr "Grænseflade ikke fundet: %s"
 
-#: gio/gsocket.c:2622
+#: gio/gsocket.c:2626
 msgid "No support for IPv4 source-specific multicast"
 msgstr "Ingen understøttelse for kildespecifik multicast med IPv4"
 
-#: gio/gsocket.c:2680
+#: gio/gsocket.c:2684
 msgid "No support for IPv6 source-specific multicast"
 msgstr "Ingen understøttelse for kildespecifik multicast med IPv6"
 
-#: gio/gsocket.c:2889
+#: gio/gsocket.c:2893
 #, c-format
 msgid "Error accepting connection: %s"
 msgstr "Fejl ved accept af forbindelse: %s"
 
-#: gio/gsocket.c:3015
+#: gio/gsocket.c:3019
 msgid "Connection in progress"
 msgstr "Forbinder"
 
-#: gio/gsocket.c:3066
+#: gio/gsocket.c:3070
 msgid "Unable to get pending error: "
 msgstr "Kan ikke hente verserende fejl: "
 
-#: gio/gsocket.c:3255
+#: gio/gsocket.c:3259
 #, c-format
 msgid "Error receiving data: %s"
 msgstr "Fejl ved modtagelse af data: %s"
 
-#: gio/gsocket.c:3452
+#: gio/gsocket.c:3456
 #, c-format
 msgid "Error sending data: %s"
 msgstr "Fejl ved afsendelse af data: %s"
 
-#: gio/gsocket.c:3639
+#: gio/gsocket.c:3643
 #, c-format
 msgid "Unable to shutdown socket: %s"
 msgstr "Kan ikke nedlukke sokkel: %s"
 
-#: gio/gsocket.c:3720
+#: gio/gsocket.c:3724
 #, c-format
 msgid "Error closing socket: %s"
 msgstr "Fejl ved lukning af sokkel: %s"
 
-#: gio/gsocket.c:4413
+#: gio/gsocket.c:4420
 #, c-format
 msgid "Waiting for socket condition: %s"
 msgstr "Venter på sokkelbetingelse: %s"
 
-#: gio/gsocket.c:4804 gio/gsocket.c:4820 gio/gsocket.c:4833
+#: gio/gsocket.c:4810 gio/gsocket.c:4826 gio/gsocket.c:4839
 #, c-format
 msgid "Unable to send message: %s"
 msgstr "Kan ikke sende meddelelse: %s"
 
-#: gio/gsocket.c:4805 gio/gsocket.c:4821 gio/gsocket.c:4834
+#: gio/gsocket.c:4811 gio/gsocket.c:4827 gio/gsocket.c:4840
 msgid "Message vectors too large"
 msgstr "Meddelelsesvektorer er for store"
 
-#: gio/gsocket.c:4850 gio/gsocket.c:4852 gio/gsocket.c:4999 gio/gsocket.c:5084
-#: gio/gsocket.c:5262 gio/gsocket.c:5302 gio/gsocket.c:5304
+#: gio/gsocket.c:4856 gio/gsocket.c:4858 gio/gsocket.c:5005 gio/gsocket.c:5090
+#: gio/gsocket.c:5268 gio/gsocket.c:5308 gio/gsocket.c:5310
 #, c-format
 msgid "Error sending message: %s"
 msgstr "Fejl ved afsendelse af meddelelse: %s"
 
-#: gio/gsocket.c:5026
+#: gio/gsocket.c:5032
 msgid "GSocketControlMessage not supported on Windows"
 msgstr "GSocketControlMessage understøttes ikke af Windows"
 
-#: gio/gsocket.c:5495 gio/gsocket.c:5571 gio/gsocket.c:5797
+#: gio/gsocket.c:5505 gio/gsocket.c:5581 gio/gsocket.c:5807
 #, c-format
 msgid "Error receiving message: %s"
 msgstr "Fejl ved modtagelse af meddelelse: %s"
 
-#: gio/gsocket.c:6070 gio/gsocket.c:6081 gio/gsocket.c:6127
+#: gio/gsocket.c:6090 gio/gsocket.c:6101 gio/gsocket.c:6164
 #, c-format
 msgid "Unable to read socket credentials: %s"
 msgstr "Kan ikke læse sokkelakkreditiver: %s"
 
-#: gio/gsocket.c:6136
+#: gio/gsocket.c:6173
 msgid "g_socket_get_credentials not implemented for this OS"
 msgstr "g_socket_get_credentials ikke implementeret på dette operativsystem"
 
@@ -4053,11 +4083,11 @@ msgstr "Kunne ikke forbinde til %s: "
 msgid "Could not connect: "
 msgstr "Kunne ikke forbinde: "
 
-#: gio/gsocketclient.c:1162 gio/gsocketclient.c:1749
+#: gio/gsocketclient.c:1202 gio/gsocketclient.c:1793
 msgid "Proxying over a non-TCP connection is not supported."
 msgstr "Brug af proxy over ikke-TCP-forbindelse understøttes ikke."
 
-#: gio/gsocketclient.c:1194 gio/gsocketclient.c:1778
+#: gio/gsocketclient.c:1234 gio/gsocketclient.c:1822
 #, c-format
 msgid "Proxy protocol “%s” is not supported."
 msgstr "Proxyprotokollen “%s” understøttes ikke."
@@ -4157,6 +4187,16 @@ msgstr "SOCKSv5-proxy understøtter ikke den givne adressetype."
 msgid "Unknown SOCKSv5 proxy error."
 msgstr "Ukendt SOCKSv5-proxyfejl."
 
+#: gio/gtestdbus.c:612 glib/gspawn-win32.c:314
+#, c-format
+msgid "Failed to create pipe for communicating with child process (%s)"
+msgstr "Fejl under oprettelse af kommunikationskanal til underproces (%s)"
+
+#: gio/gtestdbus.c:619
+#, c-format
+msgid "Pipes are not supported in this platform"
+msgstr "Kanaler understøttes ikke på denne platform"
+
 #: gio/gthemedicon.c:595
 #, c-format
 msgid "Can’t handle version %d of GThemedIcon encoding"
@@ -4171,44 +4211,66 @@ msgstr "Der blev ikke fundet nogen gyldige adresser"
 msgid "Error reverse-resolving “%s”: %s"
 msgstr "Fejl ved baglæns opløsning af “%s”: %s"
 
-#: gio/gthreadedresolver.c:676 gio/gthreadedresolver.c:755
-#: gio/gthreadedresolver.c:853 gio/gthreadedresolver.c:903
+#. Translators: the placeholder is a DNS record type, such as ‘MX’ or ‘SRV’
+#: gio/gthreadedresolver.c:550 gio/gthreadedresolver.c:572
+#: gio/gthreadedresolver.c:610 gio/gthreadedresolver.c:657
+#: gio/gthreadedresolver.c:686 gio/gthreadedresolver.c:698
+#, c-format
+msgid "Error parsing DNS %s record: malformed DNS packet"
+msgstr "Fejl ved fortolkning af DNS-post %s: fejlformateret DNS-pakke"
+
+#: gio/gthreadedresolver.c:756 gio/gthreadedresolver.c:893
+#: gio/gthreadedresolver.c:991 gio/gthreadedresolver.c:1041
 #, c-format
 msgid "No DNS record of the requested type for “%s”"
 msgstr "Ingen DNS-post af den forespurgte type for “%s”"
 
-#: gio/gthreadedresolver.c:681 gio/gthreadedresolver.c:858
+#: gio/gthreadedresolver.c:761 gio/gthreadedresolver.c:996
 #, c-format
 msgid "Temporarily unable to resolve “%s”"
 msgstr "Midlertidigt ude af stand til at opløse “%s”"
 
-#: gio/gthreadedresolver.c:686 gio/gthreadedresolver.c:863
-#: gio/gthreadedresolver.c:973
+#: gio/gthreadedresolver.c:766 gio/gthreadedresolver.c:1001
+#: gio/gthreadedresolver.c:1111
 #, c-format
 msgid "Error resolving “%s”"
 msgstr "Fejl ved opløsning af “%s”"
 
-#: gio/gtlscertificate.c:419
+#: gio/gthreadedresolver.c:780 gio/gthreadedresolver.c:804
+#: gio/gthreadedresolver.c:829 gio/gthreadedresolver.c:844
+msgid "Malformed DNS packet"
+msgstr "Fejlformateret DNS-pakke"
+
+#: gio/gthreadedresolver.c:886
+#, c-format
+msgid "Failed to parse DNS response for “%s”: "
+msgstr "Kunne ikke fortolke DNS-svar for “%s”: "
+
+#: gio/gtlscertificate.c:478
 msgid "No PEM-encoded private key found"
 msgstr "Intet privat, PEM-kodet nøgle fundet"
 
-#: gio/gtlscertificate.c:429
+#: gio/gtlscertificate.c:488
 msgid "Cannot decrypt PEM-encoded private key"
 msgstr "Kan ikke dekryptere PEM-kodet privat nøgle"
 
-#: gio/gtlscertificate.c:440
+#: gio/gtlscertificate.c:499
 msgid "Could not parse PEM-encoded private key"
 msgstr "Kunne ikke fortolke PEM-kodet privat nøgle"
 
-#: gio/gtlscertificate.c:467
+#: gio/gtlscertificate.c:526
 msgid "No PEM-encoded certificate found"
 msgstr "Intet PEM-kodet certifikat fundet"
 
-#: gio/gtlscertificate.c:476
+#: gio/gtlscertificate.c:535
 msgid "Could not parse PEM-encoded certificate"
 msgstr "Kunne ikke fortolke PEM-kodet certifikat"
 
-#: gio/gtlscertificate.c:832
+#: gio/gtlscertificate.c:796
+msgid "The current TLS backend does not support PKCS #12"
+msgstr "Den nuværende TLS-motor understøtter ikke PKCS #12"
+
+#: gio/gtlscertificate.c:1013
 msgid "This GTlsBackend does not support creating PKCS #11 certificates"
 msgstr ""
 "Denne GTlsBackend understøtter ikke oprettelse af PKCS #11-certifikater"
@@ -4235,55 +4297,63 @@ msgstr ""
 msgid "The password entered is incorrect."
 msgstr "Den indtastede adgangskode er forkert."
 
-#: gio/gunixconnection.c:166 gio/gunixconnection.c:579
+#: gio/gunixconnection.c:125
+msgid "Sending FD is not supported"
+msgstr "Afsendelse af FD understøttes ikke"
+
+#: gio/gunixconnection.c:178 gio/gunixconnection.c:596
 #, c-format
 msgid "Expecting 1 control message, got %d"
 msgid_plural "Expecting 1 control message, got %d"
 msgstr[0] "Forventede én kontrolmeddelelse, men fik %d"
 msgstr[1] "Forventede én kontrolmeddelelse, men fik %d"
 
-#: gio/gunixconnection.c:182 gio/gunixconnection.c:591
+#: gio/gunixconnection.c:194 gio/gunixconnection.c:608
 msgid "Unexpected type of ancillary data"
 msgstr "Uventet type af supplerende data"
 
-#: gio/gunixconnection.c:200
+#: gio/gunixconnection.c:212
 #, c-format
 msgid "Expecting one fd, but got %d\n"
 msgid_plural "Expecting one fd, but got %d\n"
 msgstr[0] "Forventede én fd, men fik %d\n"
 msgstr[1] "Forventede én fd, men fik %d\n"
 
-#: gio/gunixconnection.c:219
+#: gio/gunixconnection.c:231
 msgid "Received invalid fd"
 msgstr "Modtog ugyldig fd"
 
-#: gio/gunixconnection.c:363
+#: gio/gunixconnection.c:238
+msgid "Receiving FD is not supported"
+msgstr "Modtagelse af FD understøttes ikke"
+
+#: gio/gunixconnection.c:380
 msgid "Error sending credentials: "
 msgstr "Fejl ved afsendelse af akkreditiver: "
 
-#: gio/gunixconnection.c:520
+#: gio/gunixconnection.c:537
 #, c-format
 msgid "Error checking if SO_PASSCRED is enabled for socket: %s"
 msgstr "Fejl ved kontrol af om SO_PASSCRED er slået til for sokkel: %s"
 
-#: gio/gunixconnection.c:536
+#: gio/gunixconnection.c:553
 #, c-format
 msgid "Error enabling SO_PASSCRED: %s"
 msgstr "Fejl ved aktivering af SO_PASSCRED: %s"
 
-#: gio/gunixconnection.c:565
+#: gio/gunixconnection.c:582
 msgid ""
 "Expecting to read a single byte for receiving credentials but read zero bytes"
 msgstr ""
 "Forventede at læse en enkelt byte for at modtage akkreditiver, men læste nul "
 "byte"
 
-#: gio/gunixconnection.c:605
+#: gio/gunixconnection.c:622
 #, c-format
 msgid "Not expecting control message, but got %d"
 msgstr "Forventer ikke kontrolmeddelelse, men modtog %d"
 
-#: gio/gunixconnection.c:630
+#: gio/gunixconnection.c:647
 #, c-format
 msgid "Error while disabling SO_PASSCRED: %s"
 msgstr "Fejl ved deaktivering af SO_PASSCRED: %s"
@@ -4299,7 +4369,7 @@ msgstr "Fejl ved læsning fra fildeskriptor: %s"
 msgid "Error closing file descriptor: %s"
 msgstr "Fejl ved lukning af fildeskriptor: %s"
 
-#: gio/gunixmounts.c:2785 gio/gunixmounts.c:2838
+#: gio/gunixmounts.c:2809 gio/gunixmounts.c:2862
 msgid "Filesystem root"
 msgstr "Filsystemets rod"
 
@@ -4311,7 +4381,7 @@ msgid "Error writing to file descriptor: %s"
 msgstr "Fejl under skrivning til fildeskriptor: %s"
 
 # "[abstract unix domain]-socket address" eller "abstract [unix domain socket] address", eller en anden kombination?  Vi må hellere bibeholde ordenes rækkefølge på bekostning af at ordet bliver meget langt
-#: gio/gunixsocketaddress.c:244
+#: gio/gunixsocketaddress.c:251
 msgid "Abstract UNIX domain socket addresses not supported on this system"
 msgstr "Abstrakte UNIX-domænesokkeladresser understøttes ikke af dette system"
 
@@ -4462,8 +4532,8 @@ msgstr "Kunne ikke udvide eksekveringslinjen “%s” med URI'en “%s”"
 msgid "Unrepresentable character in conversion input"
 msgstr "Konverteringsinddata indeholder et tegn, som ikke kan repræsenteres"
 
-#: glib/gconvert.c:495 glib/gutf8.c:871 glib/gutf8.c:1083 glib/gutf8.c:1220
-#: glib/gutf8.c:1324
+#: glib/gconvert.c:495 glib/gutf8.c:886 glib/gutf8.c:1099 glib/gutf8.c:1236
+#: glib/gutf8.c:1340
 msgid "Partial character sequence at end of input"
 msgstr "Delvis tegnsekvens ved slutningen af inddata"
 
@@ -4929,80 +4999,80 @@ msgstr "PM"
 msgid "Error opening directory “%s”: %s"
 msgstr "Fejl ved åbning af mappen “%s”: %s"
 
-#: glib/gfileutils.c:737 glib/gfileutils.c:829
+#: glib/gfileutils.c:733 glib/gfileutils.c:825
 #, c-format
 msgid "Could not allocate %lu byte to read file “%s”"
 msgid_plural "Could not allocate %lu bytes to read file “%s”"
 msgstr[0] "Kunne ikke allokere %lu byte til at læse filen “%s”"
 msgstr[1] "Kunne ikke allokere %lu byte til at læse filen “%s”"
 
-#: glib/gfileutils.c:754
+#: glib/gfileutils.c:750
 #, c-format
 msgid "Error reading file “%s”: %s"
 msgstr "Fejl ved læsning af filen “%s”: %s"
 
-#: glib/gfileutils.c:790
+#: glib/gfileutils.c:786
 #, c-format
 msgid "File “%s” is too large"
 msgstr "Filen “%s” er for stor"
 
-#: glib/gfileutils.c:854
+#: glib/gfileutils.c:850
 #, c-format
 msgid "Failed to read from file “%s”: %s"
 msgstr "Kunne ikke læse fra filen “%s”: %s"
 
-#: glib/gfileutils.c:904 glib/gfileutils.c:979 glib/gfileutils.c:1468
+#: glib/gfileutils.c:900 glib/gfileutils.c:975 glib/gfileutils.c:1447
 #, c-format
 msgid "Failed to open file “%s”: %s"
 msgstr "Kunne ikke åbne filen “%s”: %s"
 
-#: glib/gfileutils.c:917
+#: glib/gfileutils.c:913
 #, c-format
 msgid "Failed to get attributes of file “%s”: fstat() failed: %s"
 msgstr "Kunne ikke læse attributter for filen “%s”: fstat() mislykkedes: %s"
 
-#: glib/gfileutils.c:948
+#: glib/gfileutils.c:944
 #, c-format
 msgid "Failed to open file “%s”: fdopen() failed: %s"
 msgstr "Kunne ikke åbne filen “%s”: fdopen() mislykkedes: %s"
 
-#: glib/gfileutils.c:1049
+#: glib/gfileutils.c:1045
 #, c-format
 msgid "Failed to rename file “%s” to “%s”: g_rename() failed: %s"
 msgstr "Kunne ikke omdøbe filen “%s” til “%s”: g_rename() mislykkedes: %s"
 
-#: glib/gfileutils.c:1175
+#: glib/gfileutils.c:1154
 #, c-format
 msgid "Failed to write file “%s”: write() failed: %s"
 msgstr "Kunne ikke skrive filen “%s”: write() mislykkedes: %s"
 
-#: glib/gfileutils.c:1196
+#: glib/gfileutils.c:1175
 #, c-format
 msgid "Failed to write file “%s”: fsync() failed: %s"
 msgstr "Kunne ikke skrive filen “%s”: fsync() mislykkedes: %s"
 
-#: glib/gfileutils.c:1357 glib/gfileutils.c:1772
+#: glib/gfileutils.c:1336 glib/gfileutils.c:1751
 #, c-format
 msgid "Failed to create file “%s”: %s"
 msgstr "Fejl under oprettelse af filen “%s”: %s"
 
-#: glib/gfileutils.c:1402
+#: glib/gfileutils.c:1381
 #, c-format
 msgid "Existing file “%s” could not be removed: g_unlink() failed: %s"
 msgstr ""
 "Den eksisterende fil “%s” kunne ikke fjernes: g_unlink() mislykkedes: %s"
 
-#: glib/gfileutils.c:1737
+#: glib/gfileutils.c:1716
 #, c-format
 msgid "Template “%s” invalid, should not contain a “%s”"
 msgstr "Skabelonen “%s” er ugyldig, må ikke indeholde en “%s”"
 
-#: glib/gfileutils.c:1750
+#: glib/gfileutils.c:1729
 #, c-format
 msgid "Template “%s” doesn’t contain XXXXXX"
 msgstr "Skabelonen “%s” indeholder ikke XXXXXX"
 
-#: glib/gfileutils.c:2310 glib/gfileutils.c:2339
+#: glib/gfileutils.c:2289 glib/gfileutils.c:2318
 #, c-format
 msgid "Failed to read the symbolic link “%s”: %s"
 msgstr "Kunne ikke læse den symbolske link “%s”: %s"
@@ -5028,15 +5098,15 @@ msgstr "Kanal afslutter med et ufuldendt tegn"
 msgid "Can’t do a raw read in g_io_channel_read_to_end"
 msgstr "Kan ikke foretage en rå læsning i g_io_channel_read_to_end"
 
-#: glib/gkeyfile.c:790
+#: glib/gkeyfile.c:794
 msgid "Valid key file could not be found in search dirs"
 msgstr "Gyldig nøglefil blev ikke fundet i søgekatalogerne"
 
-#: glib/gkeyfile.c:827
+#: glib/gkeyfile.c:831
 msgid "Not a regular file"
 msgstr "Ikke en almindelig fil"
 
-#: glib/gkeyfile.c:1282
+#: glib/gkeyfile.c:1289
 #, c-format
 msgid ""
 "Key file contains line “%s” which is not a key-value pair, group, or comment"
@@ -5044,50 +5114,50 @@ msgstr ""
 "Nøglefilen indeholder linjen “%s” hvilken ikke er et nøgle-værdi-par, en "
 "gruppe eller en kommentar"
 
-#: glib/gkeyfile.c:1339
+#: glib/gkeyfile.c:1346
 #, c-format
 msgid "Invalid group name: %s"
 msgstr "Ugyldigt gruppenavn: %s"
 
-#: glib/gkeyfile.c:1361
+#: glib/gkeyfile.c:1370
 msgid "Key file does not start with a group"
 msgstr "Nøglefilen starter ikke med en gruppe"
 
-#: glib/gkeyfile.c:1387
+#: glib/gkeyfile.c:1394
 #, c-format
-msgid "Invalid key name: %s"
-msgstr "Ugyldigt nøglenavn: %s"
+msgid "Invalid key name: %.*s"
+msgstr "Ugyldigt nøglenavn: %.*s"
 
-#: glib/gkeyfile.c:1414
+#: glib/gkeyfile.c:1422
 #, c-format
 msgid "Key file contains unsupported encoding “%s”"
 msgstr "Nøglefilen indeholder kodningen “%s”, der ikke understøttes"
 
-#: glib/gkeyfile.c:1663 glib/gkeyfile.c:1836 glib/gkeyfile.c:3289
-#: glib/gkeyfile.c:3353 glib/gkeyfile.c:3483 glib/gkeyfile.c:3615
-#: glib/gkeyfile.c:3761 glib/gkeyfile.c:3996 glib/gkeyfile.c:4063
+#: glib/gkeyfile.c:1677 glib/gkeyfile.c:1850 glib/gkeyfile.c:3297
+#: glib/gkeyfile.c:3361 glib/gkeyfile.c:3491 glib/gkeyfile.c:3623
+#: glib/gkeyfile.c:3769 glib/gkeyfile.c:4004 glib/gkeyfile.c:4071
 #, c-format
 msgid "Key file does not have group “%s”"
 msgstr "Nøglefilen indeholder ikke gruppen “%s”"
 
-#: glib/gkeyfile.c:1791
+#: glib/gkeyfile.c:1805
 #, c-format
 msgid "Key file does not have key “%s” in group “%s”"
 msgstr "Nøglefilen indeholder ikke nøglen “%s” i gruppen “%s”"
 
-#: glib/gkeyfile.c:1953 glib/gkeyfile.c:2069
+#: glib/gkeyfile.c:1967 glib/gkeyfile.c:2083
 #, c-format
 msgid "Key file contains key “%s” with value “%s” which is not UTF-8"
 msgstr "Nøglefilen indeholder nøglen “%s” med værdien “%s” der ikke er UTF-8"
 
-#: glib/gkeyfile.c:1973 glib/gkeyfile.c:2089 glib/gkeyfile.c:2531
+#: glib/gkeyfile.c:1987 glib/gkeyfile.c:2103 glib/gkeyfile.c:2542
 #, c-format
 msgid ""
 "Key file contains key “%s” which has a value that cannot be interpreted."
 msgstr ""
 "Nøglefilen indeholder nøglen “%s”, som har en værdi, der ikke kan fortolkes."
 
-#: glib/gkeyfile.c:2749 glib/gkeyfile.c:3118
+#: glib/gkeyfile.c:2757 glib/gkeyfile.c:3126
 #, c-format
 msgid ""
 "Key file contains key “%s” in group “%s” which has a value that cannot be "
@@ -5096,36 +5166,36 @@ msgstr ""
 "Nøglefilen indeholder nøglen “%s” i gruppen “%s”, som har en værdi der ikke "
 "kan fortolkes."
 
-#: glib/gkeyfile.c:2827 glib/gkeyfile.c:2904
+#: glib/gkeyfile.c:2835 glib/gkeyfile.c:2912
 #, c-format
 msgid "Key “%s” in group “%s” has value “%s” where %s was expected"
 msgstr "Nøglen “%s” i gruppen “%s” har værdien “%s”, mens %s blev forventet"
 
-#: glib/gkeyfile.c:4306
+#: glib/gkeyfile.c:4324
 msgid "Key file contains escape character at end of line"
 msgstr "Nøglefilen indeholder beskyttede tegn for enden af linjen"
 
-#: glib/gkeyfile.c:4328
+#: glib/gkeyfile.c:4346
 #, c-format
 msgid "Key file contains invalid escape sequence “%s”"
 msgstr "Nøglefilen indeholder en ugyldig undvigesekvens “%s”"
 
-#: glib/gkeyfile.c:4472
+#: glib/gkeyfile.c:4491
 #, c-format
 msgid "Value “%s” cannot be interpreted as a number."
 msgstr "Værdien “%s” kan ikke fortolkes som et nummer."
 
-#: glib/gkeyfile.c:4486
+#: glib/gkeyfile.c:4505
 #, c-format
 msgid "Integer value “%s” out of range"
 msgstr "Heltalsværdien “%s” er ikke i gyldigt interval"
 
-#: glib/gkeyfile.c:4519
+#: glib/gkeyfile.c:4538
 #, c-format
 msgid "Value “%s” cannot be interpreted as a float number."
 msgstr "Værdien “%s” kan ikke fortolkes som en float."
 
-#: glib/gkeyfile.c:4558
+#: glib/gkeyfile.c:4577
 #, c-format
 msgid "Value “%s” cannot be interpreted as a boolean."
 msgstr "Værdien “%s” kan ikke fortolkes som en sandhedsværdi."
@@ -5417,7 +5487,7 @@ msgstr "Kunne ikke fortolke tilvalg %s"
 msgid "Missing argument for %s"
 msgstr "Mangler argument for %s"
 
-#: glib/goption.c:2185
+#: glib/goption.c:2184
 #, c-format
 msgid "Unknown option %s"
 msgstr "Ukendt tilvalg %s"
@@ -5564,7 +5634,7 @@ msgstr "lookbehind-assert-erklæring har ikke fast længde"
 
 #: glib/gregex.c:394
 msgid "malformed number or name after (?("
-msgstr "fejlformet tal eller navn efter (?("
+msgstr "fejlformateret tal eller navn efter (?("
 
 #: glib/gregex.c:397
 msgid "conditional group contains more than two branches"
@@ -5623,7 +5693,7 @@ msgstr "to navngivne undermønstre har samme navn"
 
 #: glib/gregex.c:445
 msgid "malformed \\P or \\p sequence"
-msgstr "fejlformet \\P- eller \\p-sekvens"
+msgstr "fejlformateret \\P- eller \\p-sekvens"
 
 #: glib/gregex.c:448
 msgid "unknown property name after \\P or \\p"
@@ -5795,152 +5865,162 @@ msgstr "ukendt undvigesekvens"
 msgid "Error while parsing replacement text “%s” at char %lu: %s"
 msgstr "Fejl under fortolkning af erstatningstekst “%s” ved tegn %lu: %s"
 
-#: glib/gshell.c:94
+#: glib/gshell.c:96
 msgid "Quoted text doesn’t begin with a quotation mark"
 msgstr "Anført tekst begynder ikke med anførselstegn"
 
-#: glib/gshell.c:184
+#: glib/gshell.c:186
 msgid "Unmatched quotation mark in command line or other shell-quoted text"
 msgstr ""
 "Uafbalanceret anførselstegn i kommandolinje eller anden skal-anført tekst"
 
-#: glib/gshell.c:580
+#: glib/gshell.c:592
 #, c-format
 msgid "Text ended just after a “\\” character. (The text was “%s”)"
 msgstr "Tekst sluttede lige efter et “\\”-tegn. (Teksten var “%s”)"
 
-#: glib/gshell.c:587
+#: glib/gshell.c:599
 #, c-format
 msgid "Text ended before matching quote was found for %c. (The text was “%s”)"
 msgstr ""
 "Tekst sluttede før tilsvarende anførselstegn blev fundet for %c (teksten var "
 "“%s”)"
 
-#: glib/gshell.c:599
+#: glib/gshell.c:611
 msgid "Text was empty (or contained only whitespace)"
 msgstr "Tekst var tom (eller indeholdt kun blanke tegn)"
 
-#: glib/gspawn.c:308
+#: glib/gspawn.c:310
 #, c-format
 msgid "Failed to read data from child process (%s)"
 msgstr "Fejl ved læsning af data fra underproces (%s)"
 
-#: glib/gspawn.c:458
+#: glib/gspawn.c:462
 #, c-format
 msgid "Unexpected error in reading data from a child process (%s)"
 msgstr "Uventet fejl ved læsning af data fra underproces (%s)"
 
-#: glib/gspawn.c:543
+#: glib/gspawn.c:547
 #, c-format
 msgid "Unexpected error in waitpid() (%s)"
 msgstr "Uventet fejl i waitpid() (%s)"
 
-#: glib/gspawn.c:1152 glib/gspawn-win32.c:1407
+#: glib/gspawn.c:1175 glib/gspawn-win32.c:1438
 #, c-format
 msgid "Child process exited with code %ld"
 msgstr "Underproces afsluttede med kode %ld"
 
-#: glib/gspawn.c:1160
+#: glib/gspawn.c:1183
 #, c-format
 msgid "Child process killed by signal %ld"
 msgstr "Underproces dræbt med signal %ld"
 
-#: glib/gspawn.c:1167
+#: glib/gspawn.c:1190
 #, c-format
 msgid "Child process stopped by signal %ld"
 msgstr "Underproces stoppet med signal %ld"
 
-#: glib/gspawn.c:1174
+#: glib/gspawn.c:1197
 #, c-format
 msgid "Child process exited abnormally"
 msgstr "Underproces afsluttede fejlagtigt"
 
-#: glib/gspawn.c:1793 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
+#: glib/gspawn.c:1890 glib/gspawn-win32.c:353 glib/gspawn-win32.c:361
 #, c-format
 msgid "Failed to read from child pipe (%s)"
 msgstr "Fejl under læsning fra barnedatakanal (%s)"
 
-#: glib/gspawn.c:2095
+#: glib/gspawn.c:2253
 #, c-format
 msgid "Failed to spawn child process “%s” (%s)"
 msgstr "Fejl under kørsel af underprocessen “%s” (%s)"
 
-#: glib/gspawn.c:2212
+#: glib/gspawn.c:2370
 #, c-format
 msgid "Failed to fork (%s)"
 msgstr "Fejl under fraspaltning af proces (%s)"
 
-#: glib/gspawn.c:2372 glib/gspawn-win32.c:381
+#: glib/gspawn.c:2530 glib/gspawn-win32.c:384
 #, c-format
 msgid "Failed to change to directory “%s” (%s)"
 msgstr "Fejl ved skift til mappen “%s” (%s)"
 
-#: glib/gspawn.c:2382
+#: glib/gspawn.c:2540
 #, c-format
 msgid "Failed to execute child process “%s” (%s)"
 msgstr "Kunne ikke køre underprocessen “%s” (%s)"
 
-#: glib/gspawn.c:2392
+#: glib/gspawn.c:2550
+#, c-format
+msgid "Failed to open file to remap file descriptor (%s)"
+msgstr "Kunne ikke åbne filen for at omtildele fildeskriptoren (%s)"
+
+#: glib/gspawn.c:2558
 #, c-format
-msgid "Failed to redirect output or input of child process (%s)"
-msgstr "Fejl under omdirigering af uddata eller inddata for underproces (%s)"
+msgid "Failed to duplicate file descriptor for child process (%s)"
+msgstr "Kunne ikke duplikere fildeskriptoren for underproces (%s)"
 
-#: glib/gspawn.c:2401
+#: glib/gspawn.c:2567
 #, c-format
 msgid "Failed to fork child process (%s)"
 msgstr "Fejl ved fraspaltning af underproces (%s)"
 
-#: glib/gspawn.c:2409
+#: glib/gspawn.c:2575
+#, c-format
+msgid "Failed to close file descriptor for child process (%s)"
+msgstr "Kunne ikke lukke fildeskriptoren for underproces (%s)"
+
+#: glib/gspawn.c:2583
 #, c-format
 msgid "Unknown error executing child process “%s”"
 msgstr "Ukendt fejl under kørsel af underprocessen “%s”"
 
-#: glib/gspawn.c:2433
+#: glib/gspawn.c:2607
 #, c-format
 msgid "Failed to read enough data from child pid pipe (%s)"
 msgstr ""
 "Kunne ikke læse tilstrækkelig mængde data fra underprocessens pid-kanal (%s)"
 
-#: glib/gspawn-win32.c:294
+#: glib/gspawn-win32.c:297
 msgid "Failed to read data from child process"
 msgstr "Fejl under læsning af data fra underproces"
 
-#: glib/gspawn-win32.c:311
-#, c-format
-msgid "Failed to create pipe for communicating with child process (%s)"
-msgstr "Fejl under oprettelse af kommunikationskanal til underproces (%s)"
-
-#: glib/gspawn-win32.c:387 glib/gspawn-win32.c:392 glib/gspawn-win32.c:511
+#: glib/gspawn-win32.c:390 glib/gspawn-win32.c:395 glib/gspawn-win32.c:521
 #, c-format
 msgid "Failed to execute child process (%s)"
 msgstr "Kunne ikke køre underproces (%s)"
 
-#: glib/gspawn-win32.c:461
+#: glib/gspawn-win32.c:400
+#, c-format
+msgid "Failed to dup() in child process (%s)"
+msgstr "Kunne ikke dup() i underproces (%s)"
+
+#: glib/gspawn-win32.c:471
 #, c-format
 msgid "Invalid program name: %s"
 msgstr "Ugyldigt programnavn: %s"
 
-#: glib/gspawn-win32.c:471 glib/gspawn-win32.c:779
+#: glib/gspawn-win32.c:481 glib/gspawn-win32.c:807
 #, c-format
 msgid "Invalid string in argument vector at %d: %s"
 msgstr "Ugyldig streng i argumentvektor på %d: %s"
 
-#: glib/gspawn-win32.c:482 glib/gspawn-win32.c:794
+#: glib/gspawn-win32.c:492 glib/gspawn-win32.c:823
 #, c-format
 msgid "Invalid string in environment: %s"
 msgstr "Ugyldig streng i miljø: %s"
 
-#: glib/gspawn-win32.c:775
+#: glib/gspawn-win32.c:803
 #, c-format
 msgid "Invalid working directory: %s"
 msgstr "Ugyldigt arbejdskatalog: %s"
 
-#: glib/gspawn-win32.c:837
+#: glib/gspawn-win32.c:868
 #, c-format
 msgid "Failed to execute helper program (%s)"
 msgstr "Fejl under kørsel af hjælpeprogram (%s)"
 
-#: glib/gspawn-win32.c:1064
+#: glib/gspawn-win32.c:1096
 msgid ""
 "Unexpected error in g_io_channel_win32_poll() reading data from a child "
 "process"
@@ -5948,21 +6028,21 @@ msgstr ""
 "Uventet fejl i g_io_channel_win32_poll() under læsning af data fra en "
 "underproces"
 
-#: glib/gstrfuncs.c:3338 glib/gstrfuncs.c:3440
+#: glib/gstrfuncs.c:3351 glib/gstrfuncs.c:3453
 msgid "Empty string is not a number"
 msgstr "Tom streng er ikke et tal"
 
-#: glib/gstrfuncs.c:3362
+#: glib/gstrfuncs.c:3375
 #, c-format
 msgid "“%s” is not a signed number"
 msgstr "“%s” er ikke et tal med fortegn"
 
-#: glib/gstrfuncs.c:3372 glib/gstrfuncs.c:3476
+#: glib/gstrfuncs.c:3385 glib/gstrfuncs.c:3489
 #, c-format
 msgid "Number “%s” is out of bounds [%s, %s]"
 msgstr "Tallet “%s” er uden for det gyldige interval [%s, %s]"
 
-#: glib/gstrfuncs.c:3466
+#: glib/gstrfuncs.c:3479
 #, c-format
 msgid "“%s” is not an unsigned number"
 msgstr "“%s” er ikke et tal uden fortegn"
@@ -6015,183 +6095,183 @@ msgstr "URI'en “%s” er ikke en absolut URI"
 msgid "URI ‘%s’ has no host component"
 msgstr "URI'en “%s” har ingen værtskomponent"
 
-#: glib/guri.c:1435
+#: glib/guri.c:1460
 msgid "URI is not absolute, and no base URI was provided"
 msgstr "URI'en er ikke absolut og der er ikke givet nogen basis-URI"
 
-#: glib/guri.c:2213
+#: glib/guri.c:2238
 msgid "Missing ‘=’ and parameter value"
 msgstr "Mangler “=” og parameterværdi"
 
-#: glib/gutf8.c:817
+#: glib/gutf8.c:832
 msgid "Failed to allocate memory"
 msgstr "Kunne ikke allokere hukommelse"
 
-#: glib/gutf8.c:950
+#: glib/gutf8.c:965
 msgid "Character out of range for UTF-8"
 msgstr "Tegn uden for gyldigt interval for UTF-8"
 
-#: glib/gutf8.c:1051 glib/gutf8.c:1060 glib/gutf8.c:1190 glib/gutf8.c:1199
-#: glib/gutf8.c:1338 glib/gutf8.c:1435
+#: glib/gutf8.c:1067 glib/gutf8.c:1076 glib/gutf8.c:1206 glib/gutf8.c:1215
+#: glib/gutf8.c:1354 glib/gutf8.c:1451
 msgid "Invalid sequence in conversion input"
 msgstr "Ugyldig sekvens i konverteringsinddata"
 
-#: glib/gutf8.c:1349 glib/gutf8.c:1446
+#: glib/gutf8.c:1365 glib/gutf8.c:1462
 msgid "Character out of range for UTF-16"
 msgstr "Tegn uden for gyldigt interval for UTF-16"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2727
+#: glib/gutils.c:2849
 #, c-format
 msgid "%.1f kB"
 msgstr "%.1f kB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2729
+#: glib/gutils.c:2851
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2731
+#: glib/gutils.c:2853
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2733
+#: glib/gutils.c:2855
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2735
+#: glib/gutils.c:2857
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2737
+#: glib/gutils.c:2859
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2741
+#: glib/gutils.c:2863
 #, c-format
 msgid "%.1f KiB"
 msgstr "%.1f KiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2743
+#: glib/gutils.c:2865
 #, c-format
 msgid "%.1f MiB"
 msgstr "%.1f MiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2745
+#: glib/gutils.c:2867
 #, c-format
 msgid "%.1f GiB"
 msgstr "%.1f GiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2747
+#: glib/gutils.c:2869
 #, c-format
 msgid "%.1f TiB"
 msgstr "%.1f TiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2749
+#: glib/gutils.c:2871
 #, c-format
 msgid "%.1f PiB"
 msgstr "%.1f PiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2751
+#: glib/gutils.c:2873
 #, c-format
 msgid "%.1f EiB"
 msgstr "%.1f EiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2755
+#: glib/gutils.c:2877
 #, c-format
 msgid "%.1f kb"
 msgstr "%.1f kb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2757
+#: glib/gutils.c:2879
 #, c-format
 msgid "%.1f Mb"
 msgstr "%.1f Mb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2759
+#: glib/gutils.c:2881
 #, c-format
 msgid "%.1f Gb"
 msgstr "%.1f Gb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2761
+#: glib/gutils.c:2883
 #, c-format
 msgid "%.1f Tb"
 msgstr "%.1f Tb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2763
+#: glib/gutils.c:2885
 #, c-format
 msgid "%.1f Pb"
 msgstr "%.1f Pb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2765
+#: glib/gutils.c:2887
 #, c-format
 msgid "%.1f Eb"
 msgstr "%.1f Eb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2769
+#: glib/gutils.c:2891
 #, c-format
 msgid "%.1f Kib"
 msgstr "%.1f Kib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2771
+#: glib/gutils.c:2893
 #, c-format
 msgid "%.1f Mib"
 msgstr "%.1f Mib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2773
+#: glib/gutils.c:2895
 #, c-format
 msgid "%.1f Gib"
 msgstr "%.1f Gib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2775
+#: glib/gutils.c:2897
 #, c-format
 msgid "%.1f Tib"
 msgstr "%.1f Tib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2777
+#: glib/gutils.c:2899
 #, c-format
 msgid "%.1f Pib"
 msgstr "%.1f Pib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2779
+#: glib/gutils.c:2901
 #, c-format
 msgid "%.1f Eib"
 msgstr "%.1f Eib"
 
-#: glib/gutils.c:2813 glib/gutils.c:2930
+#: glib/gutils.c:2935 glib/gutils.c:3052
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
 msgstr[0] "%u byte"
 msgstr[1] "%u byte"
 
-#: glib/gutils.c:2817
+#: glib/gutils.c:2939
 #, c-format
 msgid "%u bit"
 msgid_plural "%u bits"
@@ -6199,7 +6279,7 @@ msgstr[0] "%u bit"
 msgstr[1] "%u bit"
 
 #. Translators: the %s in "%s bytes" will always be replaced by a number.
-#: glib/gutils.c:2884
+#: glib/gutils.c:3006
 #, c-format
 msgid "%s byte"
 msgid_plural "%s bytes"
@@ -6207,7 +6287,7 @@ msgstr[0] "%s byte"
 msgstr[1] "%s byte"
 
 #. Translators: the %s in "%s bits" will always be replaced by a number.
-#: glib/gutils.c:2889
+#: glib/gutils.c:3011
 #, c-format
 msgid "%s bit"
 msgid_plural "%s bits"
@@ -6219,32 +6299,32 @@ msgstr[1] "%s byte"
 #. * compatibility.  Users will not see this string unless a program is using this deprecated function.
 #. * Please translate as literally as possible.
 #.
-#: glib/gutils.c:2943
+#: glib/gutils.c:3065
 #, c-format
 msgid "%.1f KB"
 msgstr "%.1f KB"
 
-#: glib/gutils.c:2948
+#: glib/gutils.c:3070
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
-#: glib/gutils.c:2953
+#: glib/gutils.c:3075
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
-#: glib/gutils.c:2958
+#: glib/gutils.c:3080
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
-#: glib/gutils.c:2963
+#: glib/gutils.c:3085
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
-#: glib/gutils.c:2968
+#: glib/gutils.c:3090
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
index 965806f..c95dcdd 100644 (file)
--- a/po/de.po
+++ b/po/de.po
 # Tobias Endrigkeit <tobiasendrigkeit@googlemail.com>, 2012.
 # Bernd Homuth <dev@hmt.im>, 2015.
 # Wolfgang Stöggl <c72578@yahoo.de>, 2011, 2015-2016.
-# Tim Sabsch <tim@sabsch.com>, 2019-2021.
+# Tim Sabsch <tim@sabsch.com>, 2019-2022.
 # Mario Blättermann <mario.blaettermann@gmail.com>, 2010-2013, 2015-2018, 2020-2021.
-# Philipp Kiemle <philipp.kiemle@gmail.com>, 2021.
+# Philipp Kiemle <philipp.kiemle@gmail.com>, 2021-2022.
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: glib master\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/glib/issues\n"
-"POT-Creation-Date: 2022-02-01 17:05+0000\n"
-"PO-Revision-Date: 2022-02-08 22:40+0100\n"
-"Last-Translator: Christian Kirbach <christian.kirbach@gmail.com>\n"
+"POT-Creation-Date: 2022-05-18 14:09+0000\n"
+"PO-Revision-Date: 2022-05-22 12:39+0200\n"
+"Last-Translator: Tim Sabsch <tim@sabsch.com>\n"
 "Language-Team: German <gnome-de@gnome.org>\n"
 "Language: de\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Poedit 3.0\n"
+"X-Generator: Poedit 3.0.1\n"
+
+#: gio/gappinfo.c:333
+msgid "Setting default applications not supported yet"
+msgstr "Setzen von Standardanwendungen wird noch nicht unterstützt"
+
+#: gio/gappinfo.c:366
+msgid "Setting application as last used for type not supported yet"
+msgstr ""
+"Setzen einer Anwendung als »zuletzt verwendet für einen Typ« wird noch nicht "
+"unterstützt"
 
 #: gio/gapplication.c:500
 msgid "GApplication options"
@@ -51,7 +61,7 @@ msgid "Replace the running instance"
 msgstr "Laufende Instanz ersetzen"
 
 #: gio/gapplication-tool.c:45 gio/gapplication-tool.c:46 gio/gio-tool.c:227
-#: gio/gresource-tool.c:494 gio/gsettings-tool.c:572
+#: gio/gresource-tool.c:494 gio/gsettings-tool.c:584
 msgid "Print help"
 msgstr "Hilfe ausgeben"
 
@@ -63,7 +73,7 @@ msgstr "[BEFEHL]"
 msgid "Print version"
 msgstr "Version ausgeben"
 
-#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:578
+#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:590
 msgid "Print version information and exit"
 msgstr "Versionsinformationen anzeigen und beenden"
 
@@ -125,8 +135,8 @@ msgstr "Der Befehl, für den eine detaillierte Hilfe ausgegeben wird"
 msgid "Application identifier in D-Bus format (eg: org.example.viewer)"
 msgstr "Anwendungsbezeichnung im D-Bus-Format (z.B: org.example.viewer)"
 
-#: gio/gapplication-tool.c:74 gio/glib-compile-resources.c:738
-#: gio/glib-compile-resources.c:744 gio/glib-compile-resources.c:772
+#: gio/gapplication-tool.c:74 gio/glib-compile-resources.c:820
+#: gio/glib-compile-resources.c:826 gio/glib-compile-resources.c:855
 #: gio/gresource-tool.c:501 gio/gresource-tool.c:567
 msgid "FILE"
 msgstr "DATEI"
@@ -152,7 +162,7 @@ msgstr "PARAMETER"
 msgid "Optional parameter to the action invocation, in GVariant format"
 msgstr "Optionaler Parameter für den Aufruf der Aktion, im GVariant-Format"
 
-#: gio/gapplication-tool.c:98 gio/gresource-tool.c:532 gio/gsettings-tool.c:664
+#: gio/gapplication-tool.c:98 gio/gresource-tool.c:532 gio/gsettings-tool.c:676
 #, c-format
 msgid ""
 "Unknown command %s\n"
@@ -166,7 +176,7 @@ msgid "Usage:\n"
 msgstr "Aufruf:\n"
 
 #: gio/gapplication-tool.c:116 gio/gresource-tool.c:557
-#: gio/gsettings-tool.c:699
+#: gio/gsettings-tool.c:711
 msgid "Arguments:\n"
 msgstr "Argumente:\n"
 
@@ -289,7 +299,7 @@ msgstr "Datenstrom ist bereits geschlossen"
 msgid "Truncate not supported on base stream"
 msgstr "Abschneiden wird vom Basis-Datenstrom nicht unterstützt"
 
-#: gio/gcancellable.c:319 gio/gdbusconnection.c:1873 gio/gdbusprivate.c:1416
+#: gio/gcancellable.c:319 gio/gdbusconnection.c:1857 gio/gdbusprivate.c:1418
 #: gio/gsimpleasyncresult.c:871 gio/gsimpleasyncresult.c:897
 #, c-format
 msgid "Operation was cancelled"
@@ -310,7 +320,7 @@ msgstr "Nicht genug Platz im Ziel"
 #: gio/gcharsetconverter.c:342 gio/gdatainputstream.c:848
 #: gio/gdatainputstream.c:1266 glib/gconvert.c:449 glib/gconvert.c:879
 #: glib/giochannel.c:1573 glib/giochannel.c:1615 glib/giochannel.c:2470
-#: glib/gutf8.c:875 glib/gutf8.c:1328
+#: glib/gutf8.c:890 glib/gutf8.c:1344
 msgid "Invalid byte sequence in conversion input"
 msgstr "Ungültige Bytefolge in Umwandlungseingabe"
 
@@ -320,7 +330,7 @@ msgstr "Ungültige Bytefolge in Umwandlungseingabe"
 msgid "Error during conversion: %s"
 msgstr "Fehler bei der Umwandlung: %s"
 
-#: gio/gcharsetconverter.c:445 gio/gsocket.c:1143
+#: gio/gcharsetconverter.c:445 gio/gsocket.c:1147
 msgid "Cancellable initialization not supported"
 msgstr "Abbrechbare Initialisierung wird nicht unterstützt"
 
@@ -334,37 +344,37 @@ msgstr "Umwandlung von Zeichensatz »%s« in »%s« wird nicht unterstützt"
 msgid "Could not open converter from “%s” to “%s”"
 msgstr "Konverter von »%s« in »%s« konnte nicht geöffnet werden"
 
-#: gio/gcontenttype.c:454
+#: gio/gcontenttype.c:470
 #, c-format
 msgid "%s type"
 msgstr "%s-Typ"
 
-#: gio/gcontenttype-win32.c:192
+#: gio/gcontenttype-win32.c:196
 msgid "Unknown type"
 msgstr "Unbekannter Typ"
 
-#: gio/gcontenttype-win32.c:194
+#: gio/gcontenttype-win32.c:198
 #, c-format
 msgid "%s filetype"
 msgstr "%s-Dateityp"
 
-#: gio/gcredentials.c:323
+#: gio/gcredentials.c:335
 msgid "GCredentials contains invalid data"
 msgstr "GCredentials enthält ungültige Daten"
 
-#: gio/gcredentials.c:383 gio/gcredentials.c:667
+#: gio/gcredentials.c:395 gio/gcredentials.c:686
 msgid "GCredentials is not implemented on this OS"
 msgstr "GCredentials ist in diesem Betriebssystem nicht implementiert"
 
-#: gio/gcredentials.c:538 gio/gcredentials.c:556
+#: gio/gcredentials.c:550 gio/gcredentials.c:568
 msgid "There is no GCredentials support for your platform"
 msgstr "Es gibt auf Ihrer Plattform keine Unterstützung für GCredentials"
 
-#: gio/gcredentials.c:607
+#: gio/gcredentials.c:626
 msgid "GCredentials does not contain a process ID on this OS"
 msgstr "GCredentials enthält in diesem Betriebssystem keine Prozesskennung"
 
-#: gio/gcredentials.c:661
+#: gio/gcredentials.c:680
 msgid "Credentials spoofing is not possible on this OS"
 msgstr ""
 "Fälschen von Anmeldedaten ist unter diesem Betriebssystem nicht möglich"
@@ -373,17 +383,17 @@ msgstr ""
 msgid "Unexpected early end-of-stream"
 msgstr "Unerwartet frühes Datenstromende"
 
-#: gio/gdbusaddress.c:159 gio/gdbusaddress.c:233 gio/gdbusaddress.c:322
+#: gio/gdbusaddress.c:162 gio/gdbusaddress.c:236 gio/gdbusaddress.c:325
 #, c-format
 msgid "Unsupported key “%s” in address entry “%s”"
 msgstr "Nicht unterstützter Schlüssel »%s« im Adresseintrag »%s«"
 
-#: gio/gdbusaddress.c:172
+#: gio/gdbusaddress.c:175
 #, c-format
 msgid "Meaningless key/value pair combination in address entry “%s”"
 msgstr "Bedeutungsloses Schlüssel-Wert-Paar im Adresseintrag »%s«"
 
-#: gio/gdbusaddress.c:181
+#: gio/gdbusaddress.c:184
 #, c-format
 msgid ""
 "Address “%s” is invalid (need exactly one of path, dir, tmpdir, or abstract "
@@ -392,28 +402,28 @@ msgstr ""
 "Adresse »%s« ist ungültig (benötigt genau einen der Schlüssel path, dir, "
 "tmpdir oder abstract keys)"
 
-#: gio/gdbusaddress.c:248 gio/gdbusaddress.c:259 gio/gdbusaddress.c:274
-#: gio/gdbusaddress.c:337 gio/gdbusaddress.c:348
+#: gio/gdbusaddress.c:251 gio/gdbusaddress.c:262 gio/gdbusaddress.c:277
+#: gio/gdbusaddress.c:340 gio/gdbusaddress.c:351
 #, c-format
 msgid "Error in address “%s” — the “%s” attribute is malformed"
 msgstr "Fehler in Adresse »%s« – Das Attribut »%s« ist nicht korrekt"
 
-#: gio/gdbusaddress.c:418 gio/gdbusaddress.c:682
+#: gio/gdbusaddress.c:421 gio/gdbusaddress.c:680
 #, c-format
 msgid "Unknown or unsupported transport “%s” for address “%s”"
 msgstr "Unbekannter oder nicht unterstützter Transport »%s« für Adresse »%s«"
 
-#: gio/gdbusaddress.c:462
+#: gio/gdbusaddress.c:465
 #, c-format
 msgid "Address element “%s” does not contain a colon (:)"
 msgstr "Adresselement »%s« enthält keinen Doppelpunkt"
 
-#: gio/gdbusaddress.c:471
+#: gio/gdbusaddress.c:474
 #, c-format
 msgid "Transport name in address element “%s” must not be empty"
 msgstr "Der Transportname im Adresselement »%s« darf nicht leer sein"
 
-#: gio/gdbusaddress.c:492
+#: gio/gdbusaddress.c:495
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” does not contain an equal "
@@ -422,7 +432,7 @@ msgstr ""
 "Schlüssel-Wert-Paar %d, »%s«, in Adresselement »%s« enthält kein "
 "Gleichheitszeichen"
 
-#: gio/gdbusaddress.c:503
+#: gio/gdbusaddress.c:506
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” must not have an empty key"
@@ -430,7 +440,7 @@ msgstr ""
 "Schlüssel-Wert-Paar %d, »%s«, in Adresselement »%s« darf keinen leeren "
 "Schlüssel enthalten"
 
-#: gio/gdbusaddress.c:517
+#: gio/gdbusaddress.c:520
 #, c-format
 msgid ""
 "Error unescaping key or value in Key/Value pair %d, “%s”, in address element "
@@ -439,7 +449,7 @@ msgstr ""
 "Fehler beim Entfernen von Escape-Zeichen im Schlüssel-Wert-Paar %d, »%s«, im "
 "Adresselement »%s«"
 
-#: gio/gdbusaddress.c:589
+#: gio/gdbusaddress.c:588
 #, c-format
 msgid ""
 "Error in address “%s” — the unix transport requires exactly one of the keys "
@@ -448,83 +458,84 @@ msgstr ""
 "Fehler in Adresse »%s« - für den Unix-Transport muss genau einer der "
 "Schlüssel »path« oder »abstract« gesetzt sein"
 
-#: gio/gdbusaddress.c:625
+#: gio/gdbusaddress.c:623
 #, c-format
 msgid "Error in address “%s” — the host attribute is missing or malformed"
 msgstr ""
 "Fehler in Adresse »%s« – Das Host-Attribut fehlt oder ist nicht korrekt"
 
-#: gio/gdbusaddress.c:639
+#: gio/gdbusaddress.c:637
 #, c-format
 msgid "Error in address “%s” — the port attribute is missing or malformed"
 msgstr ""
 "Fehler in Adresse »%s« – Das Port-Attribut fehlt oder ist nicht korrekt"
 
-#: gio/gdbusaddress.c:653
+#: gio/gdbusaddress.c:651
 #, c-format
 msgid "Error in address “%s” — the noncefile attribute is missing or malformed"
 msgstr ""
 "Fehler in Adresse »%s« – Das noncefile-Attribut fehlt oder ist nicht korrekt"
 
-#: gio/gdbusaddress.c:674
+#: gio/gdbusaddress.c:672
 msgid "Error auto-launching: "
 msgstr "Fehler beim automatischen Starten: "
 
-#: gio/gdbusaddress.c:727
+#: gio/gdbusaddress.c:725
 #, c-format
 msgid "Error opening nonce file “%s”: %s"
 msgstr "Fehler beim Öffnen der Nonce-Datei »%s«: %s"
 
-#: gio/gdbusaddress.c:746
+#: gio/gdbusaddress.c:744
 #, c-format
 msgid "Error reading from nonce file “%s”: %s"
 msgstr "Fehler beim Lesen der Nonce-Datei »%s«: %s"
 
-#: gio/gdbusaddress.c:755
+#: gio/gdbusaddress.c:753
 #, c-format
 msgid "Error reading from nonce file “%s”, expected 16 bytes, got %d"
 msgstr ""
 "Fehler beim Lesen der Nonce-Datei »%s«, erwartet wurden 16 Bytes, jedoch %d "
 "erhalten"
 
-#: gio/gdbusaddress.c:773
+#: gio/gdbusaddress.c:771
 #, c-format
 msgid "Error writing contents of nonce file “%s” to stream:"
 msgstr ""
 "Fehler beim Schreiben des Inhalts der Nonce-Datei »%s« in den Datenstrom:"
 
-#: gio/gdbusaddress.c:988
+#: gio/gdbusaddress.c:986
 msgid "The given address is empty"
 msgstr "Die angegebene Adresse ist leer"
 
-#: gio/gdbusaddress.c:1101
+#: gio/gdbusaddress.c:1099
 #, c-format
-msgid "Cannot spawn a message bus when setuid"
-msgstr "Ein Nachrichtenbus kann nicht mit setuid erzeugt werden"
+msgid "Cannot spawn a message bus when AT_SECURE is set"
+msgstr ""
+"Ein Nachrichtenbus kann nicht erzeugt werden, wenn AT_SECURE gesetzt ist"
 
-#: gio/gdbusaddress.c:1108
+#: gio/gdbusaddress.c:1106
 msgid "Cannot spawn a message bus without a machine-id: "
 msgstr ""
 "Ein Nachrichtenbus kann nicht ohne eine Rechner-Kennung erzeugt werden: "
 
-#: gio/gdbusaddress.c:1115
+#: gio/gdbusaddress.c:1113
 #, c-format
 msgid "Cannot autolaunch D-Bus without X11 $DISPLAY"
 msgstr "D-Bus kann nicht automatisch ohne X11 $DISPLAY gestartet werden"
 
-#: gio/gdbusaddress.c:1157
+#: gio/gdbusaddress.c:1155
 #, c-format
 msgid "Error spawning command line “%s”: "
 msgstr "Fehler beim Erzeugen der Befehlszeile »%s«: "
 
-#: gio/gdbusaddress.c:1226
+#: gio/gdbusaddress.c:1224
 #, c-format
 msgid "Cannot determine session bus address (not implemented for this OS)"
 msgstr ""
 "Adresse des Sitzungsbus konnte nicht ermittelt werden (für dieses "
 "Betriebssystem nicht implementiert)"
 
-#: gio/gdbusaddress.c:1375 gio/gdbusconnection.c:7334
+#: gio/gdbusaddress.c:1373 gio/gdbusconnection.c:7318
 #, c-format
 msgid ""
 "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
@@ -533,7 +544,7 @@ msgstr ""
 "Bus-Adresse konnte nicht über die Umgebungsvariable DBUS_STARTER_BUS_TYPE "
 "ermittelt werden – unbekannter Wert »%s«"
 
-#: gio/gdbusaddress.c:1384 gio/gdbusconnection.c:7343
+#: gio/gdbusaddress.c:1382 gio/gdbusconnection.c:7327
 msgid ""
 "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
 "variable is not set"
@@ -541,7 +552,7 @@ msgstr ""
 "Bus-Adresse konnte nicht ermittelt werden, da die Umgebungsvariable "
 "DBUS_STARTER_BUS_TYPE nicht gesetzt ist"
 
-#: gio/gdbusaddress.c:1394
+#: gio/gdbusaddress.c:1392
 #, c-format
 msgid "Unknown bus type %d"
 msgstr "Unbekannter Bus-Typ %d"
@@ -571,12 +582,12 @@ msgstr "Benutzerkennungen müssen für Server und Gegenstelle gleich sein"
 msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
 msgstr "Abgebrochen durch GDBusAuthObserver::authorize-authenticated-peer"
 
-#: gio/gdbusauthmechanismsha1.c:298
+#: gio/gdbusauthmechanismsha1.c:300
 #, c-format
 msgid "Error when getting information for directory “%s”: %s"
 msgstr "Fehler beim Holen der Informationen für Ordner »%s«: %s"
 
-#: gio/gdbusauthmechanismsha1.c:313
+#: gio/gdbusauthmechanismsha1.c:315
 #, c-format
 msgid ""
 "Permissions on directory “%s” are malformed. Expected mode 0700, got 0%o"
@@ -584,32 +595,32 @@ msgstr ""
 "Zugriffsrechte des Ordners »%s« sind inkorrekt. Erwarteter Modus ist 0700, "
 "0%o wurde erhalten"
 
-#: gio/gdbusauthmechanismsha1.c:346 gio/gdbusauthmechanismsha1.c:357
+#: gio/gdbusauthmechanismsha1.c:348 gio/gdbusauthmechanismsha1.c:359
 #, c-format
 msgid "Error creating directory “%s”: %s"
 msgstr "Fehler beim Erstellen des Ordners »%s«: %s"
 
-#: gio/gdbusauthmechanismsha1.c:359 gio/gfile.c:1062 gio/gfile.c:1300
-#: gio/gfile.c:1438 gio/gfile.c:1676 gio/gfile.c:1731 gio/gfile.c:1789
-#: gio/gfile.c:1873 gio/gfile.c:1930 gio/gfile.c:1994 gio/gfile.c:2049
-#: gio/gfile.c:3754 gio/gfile.c:3809 gio/gfile.c:4102 gio/gfile.c:4572
-#: gio/gfile.c:4983 gio/gfile.c:5068 gio/gfile.c:5158 gio/gfile.c:5255
-#: gio/gfile.c:5342 gio/gfile.c:5443 gio/gfile.c:8153 gio/gfile.c:8243
-#: gio/gfile.c:8327 gio/win32/gwinhttpfile.c:453
+#: gio/gdbusauthmechanismsha1.c:361 gio/gfile.c:1080 gio/gfile.c:1318
+#: gio/gfile.c:1456 gio/gfile.c:1694 gio/gfile.c:1749 gio/gfile.c:1807
+#: gio/gfile.c:1891 gio/gfile.c:1948 gio/gfile.c:2012 gio/gfile.c:2067
+#: gio/gfile.c:3772 gio/gfile.c:3912 gio/gfile.c:4205 gio/gfile.c:4675
+#: gio/gfile.c:5086 gio/gfile.c:5171 gio/gfile.c:5261 gio/gfile.c:5358
+#: gio/gfile.c:5445 gio/gfile.c:5546 gio/gfile.c:8375 gio/gfile.c:8465
+#: gio/gfile.c:8549 gio/win32/gwinhttpfile.c:453
 msgid "Operation not supported"
 msgstr "Vorgang wird nicht unterstützt"
 
-#: gio/gdbusauthmechanismsha1.c:402
+#: gio/gdbusauthmechanismsha1.c:404
 #, c-format
 msgid "Error opening keyring “%s” for reading: "
 msgstr "Fehler beim Öffnen des Schlüsselbundes »%s« zum Lesen: "
 
-#: gio/gdbusauthmechanismsha1.c:425 gio/gdbusauthmechanismsha1.c:747
+#: gio/gdbusauthmechanismsha1.c:427 gio/gdbusauthmechanismsha1.c:769
 #, c-format
 msgid "Line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr "Zeile %d des Schlüsselbundes auf »%s« mit Inhalt »%s« ist inkorrekt"
 
-#: gio/gdbusauthmechanismsha1.c:439 gio/gdbusauthmechanismsha1.c:761
+#: gio/gdbusauthmechanismsha1.c:441 gio/gdbusauthmechanismsha1.c:783
 #, c-format
 msgid ""
 "First token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -617,7 +628,7 @@ msgstr ""
 "Der erste Token in Zeile %d des Schlüsselbundes bei »%s« mit dem Inhalt »%s« "
 "ist inkorrekt"
 
-#: gio/gdbusauthmechanismsha1.c:453 gio/gdbusauthmechanismsha1.c:775
+#: gio/gdbusauthmechanismsha1.c:455 gio/gdbusauthmechanismsha1.c:797
 #, c-format
 msgid ""
 "Second token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -625,58 +636,58 @@ msgstr ""
 "Der zweite Token in Zeile %d des Schlüsselbundes bei »%s« mit dem Inhalt "
 "»%s« ist inkorrekt"
 
-#: gio/gdbusauthmechanismsha1.c:477
+#: gio/gdbusauthmechanismsha1.c:479
 #, c-format
 msgid "Didn’t find cookie with id %d in the keyring at “%s”"
 msgstr ""
 "Cookie mit Kennung %d konnte im Schlüsselbund auf »%s« nicht gefunden werden"
 
-#: gio/gdbusauthmechanismsha1.c:523
+#: gio/gdbusauthmechanismsha1.c:536
 #, c-format
 msgid "Error creating lock file “%s”: %s"
 msgstr "Fehler beim Erstellen der Sperrdatei »%s«: %s"
 
-#: gio/gdbusauthmechanismsha1.c:587
+#: gio/gdbusauthmechanismsha1.c:609
 #, c-format
 msgid "Error deleting stale lock file “%s”: %s"
 msgstr "Fehler beim Löschen der alten Sperrdatei »%s«: %s"
 
-#: gio/gdbusauthmechanismsha1.c:626
+#: gio/gdbusauthmechanismsha1.c:648
 #, c-format
 msgid "Error closing (unlinked) lock file “%s”: %s"
 msgstr "Fehler beim Schließen der entknüpften Sperrdatei »%s«: %s"
 
-#: gio/gdbusauthmechanismsha1.c:637
+#: gio/gdbusauthmechanismsha1.c:659
 #, c-format
 msgid "Error unlinking lock file “%s”: %s"
 msgstr "Fehler beim Entknüpfen der Sperrdatei »%s«: %s"
 
-#: gio/gdbusauthmechanismsha1.c:714
+#: gio/gdbusauthmechanismsha1.c:736
 #, c-format
 msgid "Error opening keyring “%s” for writing: "
 msgstr "Fehler beim Öffnen des Schlüsselbundes »%s« zum Schreiben: "
 
-#: gio/gdbusauthmechanismsha1.c:908
+#: gio/gdbusauthmechanismsha1.c:930
 #, c-format
 msgid "(Additionally, releasing the lock for “%s” also failed: %s) "
 msgstr "(Außerdem schlug das Entsperren von »%s« ebenso fehl: %s) "
 
-#: gio/gdbusconnection.c:604 gio/gdbusconnection.c:2418
+#: gio/gdbusconnection.c:588 gio/gdbusconnection.c:2402
 msgid "The connection is closed"
 msgstr "Verbindung ist geschlossen"
 
-#: gio/gdbusconnection.c:1903
+#: gio/gdbusconnection.c:1887
 msgid "Timeout was reached"
 msgstr "Zeitüberschreitung wurde erreicht"
 
-#: gio/gdbusconnection.c:2541
+#: gio/gdbusconnection.c:2525
 msgid ""
 "Unsupported flags encountered when constructing a client-side connection"
 msgstr ""
 "Beim Erstellen einer client-seitigen Verbindung wurden nicht unterstützte "
 "Flags entdeckt"
 
-#: gio/gdbusconnection.c:4269 gio/gdbusconnection.c:4623
+#: gio/gdbusconnection.c:4253 gio/gdbusconnection.c:4607
 #, c-format
 msgid ""
 "No such interface “org.freedesktop.DBus.Properties” on object at path %s"
@@ -684,105 +695,105 @@ msgstr ""
 "Keine derartige Schnittstelle »org.freedesktop.DBus.Properties« des Objekts "
 "im Pfad %s"
 
-#: gio/gdbusconnection.c:4414
+#: gio/gdbusconnection.c:4398
 #, c-format
 msgid "No such property “%s”"
 msgstr "Keine derartige Eigenschaft »%s«"
 
-#: gio/gdbusconnection.c:4426
+#: gio/gdbusconnection.c:4410
 #, c-format
 msgid "Property “%s” is not readable"
 msgstr "Eigenschaft »%s« ist nicht lesbar"
 
-#: gio/gdbusconnection.c:4437
+#: gio/gdbusconnection.c:4421
 #, c-format
 msgid "Property “%s” is not writable"
 msgstr "Eigenschaft »%s« ist nicht schreibbar"
 
-#: gio/gdbusconnection.c:4457
+#: gio/gdbusconnection.c:4441
 #, c-format
 msgid "Error setting property “%s”: Expected type “%s” but got “%s”"
 msgstr ""
 "Fehler beim Setzen der Eigenschaft »%s«: Erwarteter Typ war »%s«, aber »%s« "
 "wurde erhalten"
 
-#: gio/gdbusconnection.c:4562 gio/gdbusconnection.c:4777
-#: gio/gdbusconnection.c:6760
+#: gio/gdbusconnection.c:4546 gio/gdbusconnection.c:4761
+#: gio/gdbusconnection.c:6744
 #, c-format
 msgid "No such interface “%s”"
 msgstr "Keine derartige Schnittstelle »%s«"
 
-#: gio/gdbusconnection.c:4999 gio/gdbusconnection.c:7274
+#: gio/gdbusconnection.c:4983 gio/gdbusconnection.c:7258
 #, c-format
 msgid "No such interface “%s” on object at path %s"
 msgstr "Keine derartige Schnittstelle »%s« des Objekts im Pfad %s"
 
-#: gio/gdbusconnection.c:5100
+#: gio/gdbusconnection.c:5084
 #, c-format
 msgid "No such method “%s”"
 msgstr "Keine derartige Methode »%s«"
 
-#: gio/gdbusconnection.c:5131
+#: gio/gdbusconnection.c:5115
 #, c-format
 msgid "Type of message, “%s”, does not match expected type “%s”"
 msgstr "Der Nachrichtentyp »%s« entspricht nicht dem erwarteten Typ »%s«"
 
-#: gio/gdbusconnection.c:5334
+#: gio/gdbusconnection.c:5318
 #, c-format
 msgid "An object is already exported for the interface %s at %s"
 msgstr "Für die Schnittstelle %s auf %s wurde bereits ein Objekt exportiert"
 
-#: gio/gdbusconnection.c:5561
+#: gio/gdbusconnection.c:5545
 #, c-format
 msgid "Unable to retrieve property %s.%s"
 msgstr "Eigenschaft kann nicht abgefragt werden: %s.%s"
 
-#: gio/gdbusconnection.c:5617
+#: gio/gdbusconnection.c:5601
 #, c-format
 msgid "Unable to set property %s.%s"
 msgstr "Eigenschaft kann nicht gesetzt werden: %s.%s"
 
-#: gio/gdbusconnection.c:5796
+#: gio/gdbusconnection.c:5780
 #, c-format
 msgid "Method “%s” returned type “%s”, but expected “%s”"
 msgstr "Methode »%s« gab Typ »%s« zurück, aber »%s« wurde erwartet"
 
-#: gio/gdbusconnection.c:6872
+#: gio/gdbusconnection.c:6856
 #, c-format
 msgid "Method “%s” on interface “%s” with signature “%s” does not exist"
 msgstr "Methode »%s« in Schnittstelle »%s« mit Signatur »%s« existiert nicht"
 
-#: gio/gdbusconnection.c:6993
+#: gio/gdbusconnection.c:6977
 #, c-format
 msgid "A subtree is already exported for %s"
 msgstr "Ein Unterbaum wurde bereits für %s exportiert"
 
-#: gio/gdbusconnection.c:7282
+#: gio/gdbusconnection.c:7266
 #, c-format
 msgid "Object does not exist at path “%s”"
 msgstr "Das Objekt existiert nicht am Pfad »%s«"
 
-#: gio/gdbusmessage.c:1311
+#: gio/gdbusmessage.c:1301
 msgid "type is INVALID"
 msgstr "Typ ist UNGÜLTIG"
 
-#: gio/gdbusmessage.c:1322
+#: gio/gdbusmessage.c:1312
 msgid "METHOD_CALL message: PATH or MEMBER header field is missing"
 msgstr "METHOD_CALL-Meldung: Kopfzeilenfeld PATH oder MEMBER fehlt"
 
-#: gio/gdbusmessage.c:1333
+#: gio/gdbusmessage.c:1323
 msgid "METHOD_RETURN message: REPLY_SERIAL header field is missing"
 msgstr "METHOD_RETURN-Meldung: Kopfzeilenfeld REPLY_SERIAL fehlt"
 
-#: gio/gdbusmessage.c:1345
+#: gio/gdbusmessage.c:1335
 msgid "ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing"
 msgstr "ERROR-Meldung: Kopfzeilenfeld REPLY_SERIAL oder ERROR_NAME fehlt"
 
-#: gio/gdbusmessage.c:1358
+#: gio/gdbusmessage.c:1348
 msgid "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing"
 msgstr "SIGNAL-Meldung: Kopfzeilenfeld PATH, INTERFACE oder MEMBER fehlt"
 
-#: gio/gdbusmessage.c:1366
+#: gio/gdbusmessage.c:1356
 msgid ""
 "SIGNAL message: The PATH header field is using the reserved value /org/"
 "freedesktop/DBus/Local"
@@ -790,7 +801,7 @@ msgstr ""
 "SIGNAL-Meldung: Das Kopfzeilenfeld PATH verwendet den reservierten Wert /org/"
 "freedesktop/DBus/Local"
 
-#: gio/gdbusmessage.c:1374
+#: gio/gdbusmessage.c:1364
 msgid ""
 "SIGNAL message: The INTERFACE header field is using the reserved value org."
 "freedesktop.DBus.Local"
@@ -798,21 +809,21 @@ msgstr ""
 "SIGNAL-Meldung: Das Kopfzeilenfeld INTERFACE verwendet den reservierten Wert "
 "org.freedesktop.DBus.Local"
 
-#: gio/gdbusmessage.c:1422 gio/gdbusmessage.c:1482
+#: gio/gdbusmessage.c:1412 gio/gdbusmessage.c:1472
 #, c-format
 msgid "Wanted to read %lu byte but only got %lu"
 msgid_plural "Wanted to read %lu bytes but only got %lu"
 msgstr[0] "%lu Byte sollte gelesen werden, aber nur %lu erhalten"
 msgstr[1] "%lu Bytes sollten gelesen werden, aber nur %lu erhalten"
 
-#: gio/gdbusmessage.c:1436
+#: gio/gdbusmessage.c:1426
 #, c-format
 msgid "Expected NUL byte after the string “%s” but found byte %d"
 msgstr ""
 "Ein NUL-Byte wurde nach der Zeichenkette »%s« erwartet, aber es wurde Byte "
 "%d gefunden"
 
-#: gio/gdbusmessage.c:1455
+#: gio/gdbusmessage.c:1445
 #, c-format
 msgid ""
 "Expected valid UTF-8 string but found invalid bytes at byte offset %d "
@@ -822,21 +833,21 @@ msgstr ""
 "Position %d gefunden (Länge der Zeichenkette ist %d). Die gültige UTF-8-"
 "Zeichenkette bis zu diesem Punkt war »%s«."
 
-#: gio/gdbusmessage.c:1519 gio/gdbusmessage.c:1795 gio/gdbusmessage.c:2006
+#: gio/gdbusmessage.c:1509 gio/gdbusmessage.c:1785 gio/gdbusmessage.c:1996
 msgid "Value nested too deeply"
 msgstr "Der Wert ist zu tief verschachtelt"
 
-#: gio/gdbusmessage.c:1687
+#: gio/gdbusmessage.c:1677
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus object path"
 msgstr "Verarbeiteter Wert »%s« ist kein gültiger D-Bus-Objektpfad"
 
-#: gio/gdbusmessage.c:1711
+#: gio/gdbusmessage.c:1701
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature"
 msgstr "Verarbeiteter Wert »%s« ist keine gültige D-Bus-Signatur"
 
-#: gio/gdbusmessage.c:1762
+#: gio/gdbusmessage.c:1752
 #, c-format
 msgid ""
 "Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB)."
@@ -849,7 +860,7 @@ msgstr[1] ""
 "Array der Länge %u Bytes wurde erkannt. Maximale Länge ist 2<<26 Bytes (64 "
 "MiB)."
 
-#: gio/gdbusmessage.c:1782
+#: gio/gdbusmessage.c:1772
 #, c-format
 msgid ""
 "Encountered array of type “a%c”, expected to have a length a multiple of %u "
@@ -858,16 +869,16 @@ msgstr ""
 "Es wurde ein Feld des Typs »a%c« gefunden. Erwartet wurde als Länge ein "
 "Vielfaches von %u Byte, aber es waren %u Byte Länge"
 
-#: gio/gdbusmessage.c:1936 gio/gdbusmessage.c:2655
+#: gio/gdbusmessage.c:1926 gio/gdbusmessage.c:2645
 msgid "Empty structures (tuples) are not allowed in D-Bus"
 msgstr "Leere Strukturen (Tupel) sind in D-Bus nicht erlaubt"
 
-#: gio/gdbusmessage.c:1990
+#: gio/gdbusmessage.c:1980
 #, c-format
 msgid "Parsed value “%s” for variant is not a valid D-Bus signature"
 msgstr "Verarbeiteter Wert »%s« für Variante ist keine gültige D-Bus-Signatur"
 
-#: gio/gdbusmessage.c:2031
+#: gio/gdbusmessage.c:2021
 #, c-format
 msgid ""
 "Error deserializing GVariant with type string “%s” from the D-Bus wire format"
@@ -875,7 +886,7 @@ msgstr ""
 "Fehler beim Deserialisieren von GVariant mit der Typenzeichenkette »%s« aus "
 "dem D-Bus Wire-Format"
 
-#: gio/gdbusmessage.c:2216
+#: gio/gdbusmessage.c:2206
 #, c-format
 msgid ""
 "Invalid endianness value. Expected 0x6c (“l”) or 0x42 (“B”) but found value "
@@ -884,29 +895,29 @@ msgstr ""
 "Ungültiger Wert für die Speicherreihenfolge. Es wird entweder 0x6c (»l«) "
 "oder 0x42 (»B«) erwartet, aber der Wert 0x%02x gefunden"
 
-#: gio/gdbusmessage.c:2235
+#: gio/gdbusmessage.c:2225
 #, c-format
 msgid "Invalid major protocol version. Expected 1 but found %d"
 msgstr ""
 "Ungültige Version des Hauptprotokolls. Erwartet wurde 1, jedoch %d gefunden"
 
-#: gio/gdbusmessage.c:2293 gio/gdbusmessage.c:2891
+#: gio/gdbusmessage.c:2283 gio/gdbusmessage.c:2881
 msgid "Signature header found but is not of type signature"
 msgstr "Signatur-Kopfzeilenfeld gefunden, ist aber nicht vom Typ Signatur"
 
-#: gio/gdbusmessage.c:2305
+#: gio/gdbusmessage.c:2295
 #, c-format
 msgid "Signature header with signature “%s” found but message body is empty"
 msgstr ""
 "Signatur-Kopfzeilenfeld mit Signatur »%s« gefunden, aber Nachrichtenrumpf "
 "ist leer"
 
-#: gio/gdbusmessage.c:2320
+#: gio/gdbusmessage.c:2310
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature (for body)"
 msgstr "Verarbeiteter Wert »%s« ist keine gültige D-Bus-Signatur (für Rumpf)"
 
-#: gio/gdbusmessage.c:2352
+#: gio/gdbusmessage.c:2342
 #, 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"
@@ -917,11 +928,11 @@ msgstr[1] ""
 "Kein Signatur-Kopfzeilenfeld in der Nachricht, aber der Nachrichtenrumpf ist "
 "%u Bytes groß"
 
-#: gio/gdbusmessage.c:2362
+#: gio/gdbusmessage.c:2352
 msgid "Cannot deserialize message: "
 msgstr "Meldung kann nicht deserialisiert werden: "
 
-#: gio/gdbusmessage.c:2708
+#: gio/gdbusmessage.c:2698
 #, c-format
 msgid ""
 "Error serializing GVariant with type string “%s” to the D-Bus wire format"
@@ -929,7 +940,7 @@ msgstr ""
 "Fehler beim Deserialisieren von GVariant mit der Typenzeichenkette »%s« in "
 "das D-Bus Wire-Format"
 
-#: gio/gdbusmessage.c:2845
+#: gio/gdbusmessage.c:2835
 #, c-format
 msgid ""
 "Number of file descriptors in message (%d) differs from header field (%d)"
@@ -937,18 +948,18 @@ msgstr ""
 "Anzahl der Dateideskriptoren in Meldung (%d) und Kopfzeilenfeld (%d) ist "
 "unterschiedlich"
 
-#: gio/gdbusmessage.c:2853
+#: gio/gdbusmessage.c:2843
 msgid "Cannot serialize message: "
 msgstr "Meldung kann nicht serialisiert werden: "
 
-#: gio/gdbusmessage.c:2906
+#: gio/gdbusmessage.c:2896
 #, c-format
 msgid "Message body has signature “%s” but there is no signature header"
 msgstr ""
 "Nachrichtenrumpf hat den Signaturtyp »%s«, aber es gibt keine Signatur im "
 "Kopfzeilenfeld"
 
-#: gio/gdbusmessage.c:2916
+#: gio/gdbusmessage.c:2906
 #, c-format
 msgid ""
 "Message body has type signature “%s” but signature in the header field is "
@@ -957,54 +968,54 @@ msgstr ""
 "Nachrichtenrumpf hat den Signaturtyp »%s«, aber die Signatur im "
 "Kopfzeilenfeld ist »%s«"
 
-#: gio/gdbusmessage.c:2932
+#: gio/gdbusmessage.c:2922
 #, c-format
 msgid "Message body is empty but signature in the header field is “(%s)”"
 msgstr ""
 "Nachrichtenrumpf ist leer, aber die Signatur im Kopfzeilenfeld ist »(%s)«"
 
-#: gio/gdbusmessage.c:3487
+#: gio/gdbusmessage.c:3477
 #, c-format
 msgid "Error return with body of type “%s”"
 msgstr "Fehlerrückmeldung mit Inhalt des Typs »%s«"
 
-#: gio/gdbusmessage.c:3495
+#: gio/gdbusmessage.c:3485
 msgid "Error return with empty body"
 msgstr "Fehlerrückmeldung mit leerem Inhalt"
 
-#: gio/gdbusprivate.c:2246
+#: gio/gdbusprivate.c:2185
 #, c-format
 msgid "(Type any character to close this window)\n"
 msgstr ""
 "(Geben Sie ein beliebiges Zeichen ein, um dieses Fenster zu schließen)\n"
 
-#: gio/gdbusprivate.c:2420
+#: gio/gdbusprivate.c:2371
 #, c-format
 msgid "Session dbus not running, and autolaunch failed"
 msgstr "Der Sitzungs-dbus läuft nicht und automatisches Starten schlug fehl"
 
-#: gio/gdbusprivate.c:2443
+#: gio/gdbusprivate.c:2394
 #, c-format
 msgid "Unable to get Hardware profile: %s"
 msgstr "Hardware-Profil konnte nicht ermittelt werden: %s"
 
 #. Translators: Both placeholders are file paths
-#: gio/gdbusprivate.c:2494
+#: gio/gdbusprivate.c:2445
 #, c-format
 msgid "Unable to load %s or %s: "
 msgstr "%s oder %s kann nicht geladen werden: "
 
-#: gio/gdbusproxy.c:1569
+#: gio/gdbusproxy.c:1573
 #, c-format
 msgid "Error calling StartServiceByName for %s: "
 msgstr "Fehler beim Aufruf von StartServiceByName für %s: "
 
-#: gio/gdbusproxy.c:1592
+#: gio/gdbusproxy.c:1596
 #, c-format
 msgid "Unexpected reply %d from StartServiceByName(\"%s\") method"
 msgstr "Unerwartete Antwort %d von der Methode StartServiceByName(»%s«)"
 
-#: gio/gdbusproxy.c:2699 gio/gdbusproxy.c:2834
+#: gio/gdbusproxy.c:2707 gio/gdbusproxy.c:2842
 #, c-format
 msgid ""
 "Cannot invoke method; proxy is for the well-known name %s without an owner, "
@@ -1060,60 +1071,60 @@ msgstr ""
 "\n"
 "Mit »%s BEFEHL --help« erhalten Sie Hilfe zu jedem der Befehle.\n"
 
-#: gio/gdbus-tool.c:201 gio/gdbus-tool.c:273 gio/gdbus-tool.c:345
-#: gio/gdbus-tool.c:369 gio/gdbus-tool.c:859 gio/gdbus-tool.c:1236
-#: gio/gdbus-tool.c:1724
+#: gio/gdbus-tool.c:202 gio/gdbus-tool.c:274 gio/gdbus-tool.c:346
+#: gio/gdbus-tool.c:370 gio/gdbus-tool.c:860 gio/gdbus-tool.c:1245
+#: gio/gdbus-tool.c:1733
 #, c-format
 msgid "Error: %s\n"
 msgstr "Fehler: %s\n"
 
-#: gio/gdbus-tool.c:212 gio/gdbus-tool.c:286 gio/gdbus-tool.c:1740
+#: gio/gdbus-tool.c:213 gio/gdbus-tool.c:287 gio/gdbus-tool.c:1749
 #, c-format
 msgid "Error parsing introspection XML: %s\n"
 msgstr "Fehler beim Verarbeiten des XML-Codes der Inspektion: %s\n"
 
-#: gio/gdbus-tool.c:250
+#: gio/gdbus-tool.c:251
 #, c-format
 msgid "Error: %s is not a valid name\n"
 msgstr "Fehler: %s ist kein gültiger Name\n"
 
-#: gio/gdbus-tool.c:255 gio/gdbus-tool.c:745 gio/gdbus-tool.c:1060
-#: gio/gdbus-tool.c:1890 gio/gdbus-tool.c:2130
+#: gio/gdbus-tool.c:256 gio/gdbus-tool.c:746 gio/gdbus-tool.c:1064
+#: gio/gdbus-tool.c:1899 gio/gdbus-tool.c:2139
 #, c-format
 msgid "Error: %s is not a valid object path\n"
 msgstr "Fehler: %s ist kein gültiger Objektpfad\n"
 
-#: gio/gdbus-tool.c:403
+#: gio/gdbus-tool.c:404
 msgid "Connect to the system bus"
 msgstr "Zum Systembus verbinden"
 
-#: gio/gdbus-tool.c:404
+#: gio/gdbus-tool.c:405
 msgid "Connect to the session bus"
 msgstr "Zum Sitzungsbus verbinden"
 
-#: gio/gdbus-tool.c:405
+#: gio/gdbus-tool.c:406
 msgid "Connect to given D-Bus address"
 msgstr "Zur angegebenen D-Bus-Adresse verbinden"
 
-#: gio/gdbus-tool.c:415
+#: gio/gdbus-tool.c:416
 msgid "Connection Endpoint Options:"
 msgstr "Optionen für Gegenstelle der Verbindung:"
 
-#: gio/gdbus-tool.c:416
+#: gio/gdbus-tool.c:417
 msgid "Options specifying the connection endpoint"
 msgstr "Optionen zur Gegenstelle der Verbindung"
 
-#: gio/gdbus-tool.c:439
+#: gio/gdbus-tool.c:440
 #, c-format
 msgid "No connection endpoint specified"
 msgstr "Keine Gegenstelle der Verbindung angegeben"
 
-#: gio/gdbus-tool.c:449
+#: gio/gdbus-tool.c:450
 #, c-format
 msgid "Multiple connection endpoints specified"
 msgstr "Mehrere Gegenstellen der Verbindung angegeben"
 
-#: gio/gdbus-tool.c:522
+#: gio/gdbus-tool.c:523
 #, c-format
 msgid ""
 "Warning: According to introspection data, interface “%s” does not exist\n"
@@ -1121,7 +1132,7 @@ msgstr ""
 "Warnung: Entsprechend den Inspektionsdaten existiert die Schnittstelle »%s« "
 "nicht\n"
 
-#: gio/gdbus-tool.c:531
+#: gio/gdbus-tool.c:532
 #, c-format
 msgid ""
 "Warning: According to introspection data, method “%s” does not exist on "
@@ -1130,163 +1141,167 @@ msgstr ""
 "Warnung: Entsprechend den Inspektionsdaten existiert die Methode »%s« nicht "
 "in der Schnittstelle »%s«\n"
 
-#: gio/gdbus-tool.c:593
+#: gio/gdbus-tool.c:594
 msgid "Optional destination for signal (unique name)"
 msgstr "Optionales Ziel des Signals (eindeutiger Name)"
 
-#: gio/gdbus-tool.c:594
+#: gio/gdbus-tool.c:595
 msgid "Object path to emit signal on"
 msgstr "Objektpfad, auf den das Signal ausgegeben werden soll"
 
-#: gio/gdbus-tool.c:595
+#: gio/gdbus-tool.c:596
 msgid "Signal and interface name"
 msgstr "Signal und Schnittstellenname"
 
-#: gio/gdbus-tool.c:628
+#: gio/gdbus-tool.c:629
 msgid "Emit a signal."
 msgstr "Ein Signal ausgeben."
 
-#: gio/gdbus-tool.c:683 gio/gdbus-tool.c:997 gio/gdbus-tool.c:1827
-#: gio/gdbus-tool.c:2059 gio/gdbus-tool.c:2279
+#: gio/gdbus-tool.c:684 gio/gdbus-tool.c:1001 gio/gdbus-tool.c:1836
+#: gio/gdbus-tool.c:2068 gio/gdbus-tool.c:2288
 #, c-format
 msgid "Error connecting: %s\n"
 msgstr "Fehler beim Verbinden: %s\n"
 
-#: gio/gdbus-tool.c:703
+#: gio/gdbus-tool.c:704
 #, c-format
 msgid "Error: %s is not a valid unique bus name.\n"
 msgstr "Fehler: %s ist kein gültiger eindeutiger Bus-Name.\n"
 
-#: gio/gdbus-tool.c:722 gio/gdbus-tool.c:1040 gio/gdbus-tool.c:1870
+#: gio/gdbus-tool.c:723 gio/gdbus-tool.c:1044 gio/gdbus-tool.c:1879
 msgid "Error: Object path is not specified\n"
 msgstr "Fehler: Objektpfad wurde nicht angegeben\n"
 
-#: gio/gdbus-tool.c:765
+#: gio/gdbus-tool.c:766
 msgid "Error: Signal name is not specified\n"
 msgstr "Fehler: Signalname wurde nicht angegeben\n"
 
-#: gio/gdbus-tool.c:779
+#: gio/gdbus-tool.c:780
 #, c-format
 msgid "Error: Signal name “%s” is invalid\n"
 msgstr "Fehler: Signalname »%s« ist ungültig\n"
 
-#: gio/gdbus-tool.c:791
+#: gio/gdbus-tool.c:792
 #, c-format
 msgid "Error: %s is not a valid interface name\n"
 msgstr "Fehler: %s ist kein gültiger Schnittstellenname\n"
 
-#: gio/gdbus-tool.c:797
+#: gio/gdbus-tool.c:798
 #, c-format
 msgid "Error: %s is not a valid member name\n"
 msgstr "Fehler: %s ist kein gültiger Mitgliedsname\n"
 
 #. Use the original non-"parse-me-harder" error
-#: gio/gdbus-tool.c:834 gio/gdbus-tool.c:1172
+#: gio/gdbus-tool.c:835 gio/gdbus-tool.c:1176
 #, c-format
 msgid "Error parsing parameter %d: %s\n"
 msgstr "Fehler bei der Verarbeitung des Parameters %d: %s\n"
 
-#: gio/gdbus-tool.c:866
+#: gio/gdbus-tool.c:867
 #, c-format
 msgid "Error flushing connection: %s\n"
 msgstr "Fehler beim Löschen der Verbindung: %s\n"
 
-#: gio/gdbus-tool.c:893
+#: gio/gdbus-tool.c:895
 msgid "Destination name to invoke method on"
 msgstr "Name des Ziels, für das die Methode aufgerufen werden soll"
 
-#: gio/gdbus-tool.c:894
+#: gio/gdbus-tool.c:896
 msgid "Object path to invoke method on"
 msgstr "Objektpfad, für den die Methode aufgerufen werden soll"
 
-#: gio/gdbus-tool.c:895
+#: gio/gdbus-tool.c:897
 msgid "Method and interface name"
 msgstr "Methode und Schnittstellenname"
 
-#: gio/gdbus-tool.c:896
+#: gio/gdbus-tool.c:898
 msgid "Timeout in seconds"
 msgstr "Zeitablauf in Sekunden"
 
-#: gio/gdbus-tool.c:942
+#: gio/gdbus-tool.c:899
+msgid "Allow interactive authorization"
+msgstr "Interaktive Legitimierung erlauben"
+
+#: gio/gdbus-tool.c:946
 msgid "Invoke a method on a remote object."
 msgstr "Eine Methode für ein entferntes Objekt aufrufen."
 
-#: gio/gdbus-tool.c:1014 gio/gdbus-tool.c:1844 gio/gdbus-tool.c:2084
+#: gio/gdbus-tool.c:1018 gio/gdbus-tool.c:1853 gio/gdbus-tool.c:2093
 msgid "Error: Destination is not specified\n"
 msgstr "Fehler: Ziel wurde nicht angegeben\n"
 
-#: gio/gdbus-tool.c:1025 gio/gdbus-tool.c:1861 gio/gdbus-tool.c:2095
+#: gio/gdbus-tool.c:1029 gio/gdbus-tool.c:1870 gio/gdbus-tool.c:2104
 #, c-format
 msgid "Error: %s is not a valid bus name\n"
 msgstr "Fehler: %s ist kein gültiger Bus-Name\n"
 
-#: gio/gdbus-tool.c:1075
+#: gio/gdbus-tool.c:1079
 msgid "Error: Method name is not specified\n"
 msgstr "Fehler: Name der Methode wurde nicht angegeben\n"
 
-#: gio/gdbus-tool.c:1086
+#: gio/gdbus-tool.c:1090
 #, c-format
 msgid "Error: Method name “%s” is invalid\n"
 msgstr "Fehler: Name der Methode »%s« ist ungültig\n"
 
-#: gio/gdbus-tool.c:1164
+#: gio/gdbus-tool.c:1168
 #, c-format
 msgid "Error parsing parameter %d of type “%s”: %s\n"
 msgstr "Fehler bei der Verarbeitung des Parameters %d vom Typ »%s«: %s\n"
 
-#: gio/gdbus-tool.c:1190
+#: gio/gdbus-tool.c:1194
 #, c-format
 msgid "Error adding handle %d: %s\n"
 msgstr "Fehler beim Hinzufügen des Handlers %d: %s\n"
 
-#: gio/gdbus-tool.c:1686
+#: gio/gdbus-tool.c:1695
 msgid "Destination name to introspect"
 msgstr "Name des Ziels der Inspektion"
 
-#: gio/gdbus-tool.c:1687
+#: gio/gdbus-tool.c:1696
 msgid "Object path to introspect"
 msgstr "Zu inspizierender Objektpfad"
 
-#: gio/gdbus-tool.c:1688
+#: gio/gdbus-tool.c:1697
 msgid "Print XML"
 msgstr "XML drucken"
 
-#: gio/gdbus-tool.c:1689
+#: gio/gdbus-tool.c:1698
 msgid "Introspect children"
 msgstr "Unterelemente inspizieren"
 
-#: gio/gdbus-tool.c:1690
+#: gio/gdbus-tool.c:1699
 msgid "Only print properties"
 msgstr "Nur Eigenschaften ausgeben"
 
-#: gio/gdbus-tool.c:1779
+#: gio/gdbus-tool.c:1788
 msgid "Introspect a remote object."
 msgstr "Ein entferntes Objekt inspizieren."
 
-#: gio/gdbus-tool.c:1985
+#: gio/gdbus-tool.c:1994
 msgid "Destination name to monitor"
 msgstr "Name des zu überwachenden Ziels"
 
-#: gio/gdbus-tool.c:1986
+#: gio/gdbus-tool.c:1995
 msgid "Object path to monitor"
 msgstr "Zu überwachender Objektpfad"
 
-#: gio/gdbus-tool.c:2011
+#: gio/gdbus-tool.c:2020
 msgid "Monitor a remote object."
 msgstr "Ein entferntes Objekt überwachen."
 
-#: gio/gdbus-tool.c:2069
+#: gio/gdbus-tool.c:2078
 msgid "Error: can’t monitor a non-message-bus connection\n"
 msgstr ""
 "Fehler: eine Nicht-Message-Bus-Verbindung kann nicht überwacht werden\n"
 
-#: gio/gdbus-tool.c:2193
+#: gio/gdbus-tool.c:2202
 msgid "Service to activate before waiting for the other one (well-known name)"
 msgstr ""
 "Zu aktivierender Dienst, bevor auf den anderen gewartet wird (allgemein "
 "bekannter Name)"
 
-#: gio/gdbus-tool.c:2196
+#: gio/gdbus-tool.c:2205
 msgid ""
 "Timeout to wait for before exiting with an error (seconds); 0 for no timeout "
 "(default)"
@@ -1294,68 +1309,73 @@ msgstr ""
 "Zeitspanne, die gewartet werden soll, bis mit einer Fehlermeldung "
 "abgebrochen wird (Sekunden); 0 für keine Zeitspanne (Voreinstellung)"
 
-#: gio/gdbus-tool.c:2244
+#: gio/gdbus-tool.c:2253
 msgid "[OPTION…] BUS-NAME"
 msgstr "[OPTION …] BUS-NAME"
 
-#: gio/gdbus-tool.c:2245
+#: gio/gdbus-tool.c:2254
 msgid "Wait for a bus name to appear."
 msgstr "Name eines Busses, auf dessen Verfügbarkeit gewartet werden soll."
 
-#: gio/gdbus-tool.c:2321
+#: gio/gdbus-tool.c:2330
 msgid "Error: A service to activate for must be specified.\n"
 msgstr ""
 "Fehler: Es muss ein Dienst angegeben werden, der gestartet werden soll.\n"
 
-#: gio/gdbus-tool.c:2326
+#: gio/gdbus-tool.c:2335
 msgid "Error: A service to wait for must be specified.\n"
 msgstr ""
 "Fehler: Es muss ein Dienst angegeben werden, auf den gewartet werden soll.\n"
 
-#: gio/gdbus-tool.c:2331
+#: gio/gdbus-tool.c:2340
 msgid "Error: Too many arguments.\n"
 msgstr "Fehler: Zu viele Argumente.\n"
 
-#: gio/gdbus-tool.c:2339 gio/gdbus-tool.c:2346
+#: gio/gdbus-tool.c:2348 gio/gdbus-tool.c:2355
 #, c-format
 msgid "Error: %s is not a valid well-known bus name.\n"
 msgstr "Fehler: %s ist kein gültiger, bekannter Bus-Name\n"
 
-#: gio/gdesktopappinfo.c:2106 gio/gdesktopappinfo.c:4935
+#: gio/gdebugcontrollerdbus.c:358
+#, c-format
+msgid "Not authorized to change debug settings"
+msgstr "Nicht berechtigt, Fehlerdiagnose-Einstellungen zu ändern"
+
+#: gio/gdesktopappinfo.c:2178 gio/gdesktopappinfo.c:5105
 msgid "Unnamed"
 msgstr "Unbenannt"
 
-#: gio/gdesktopappinfo.c:2516
+#: gio/gdesktopappinfo.c:2588
 msgid "Desktop file didn’t specify Exec field"
 msgstr "Desktop-Datei hat kein Exec-Feld angegeben"
 
-#: gio/gdesktopappinfo.c:2804
+#: gio/gdesktopappinfo.c:2896
 msgid "Unable to find terminal required for application"
 msgstr "Für die Anwendung benötigtes Terminal konnte nicht gefunden werden"
 
-#: gio/gdesktopappinfo.c:3455
+#: gio/gdesktopappinfo.c:3625
 #, c-format
 msgid "Can’t create user application configuration folder %s: %s"
 msgstr ""
 "Konfigurationsordner %s für Benutzeranwendungen konnte nicht erstellt "
 "werden: %s"
 
-#: gio/gdesktopappinfo.c:3459
+#: gio/gdesktopappinfo.c:3629
 #, c-format
 msgid "Can’t create user MIME configuration folder %s: %s"
 msgstr ""
 "MIME-Konfigurationsordner %s des Benutzers konnte nicht erstellt werden: %s"
 
-#: gio/gdesktopappinfo.c:3701 gio/gdesktopappinfo.c:3725
+#: gio/gdesktopappinfo.c:3871 gio/gdesktopappinfo.c:3895
 msgid "Application information lacks an identifier"
 msgstr "Den Anwendungsinformationen fehlt ein Bezeichner"
 
-#: gio/gdesktopappinfo.c:3961
+#: gio/gdesktopappinfo.c:4131
 #, c-format
 msgid "Can’t create user desktop file %s"
 msgstr "Benutzer-Desktop-Datei %s kann nicht erstellt werden"
 
-#: gio/gdesktopappinfo.c:4097
+#: gio/gdesktopappinfo.c:4267
 #, c-format
 msgid "Custom definition for %s"
 msgstr "Benutzerdefinition für %s"
@@ -1383,7 +1403,7 @@ msgstr "Laufwerk unterstützt keinen Startvorgang"
 msgid "drive doesn’t implement stop"
 msgstr "Laufwerk unterstützt keinen Stoppvorgang"
 
-#: gio/gdtlsconnection.c:1153 gio/gtlsconnection.c:920
+#: gio/gdtlsconnection.c:1186 gio/gtlsconnection.c:955
 msgid "TLS backend does not implement TLS binding retrieval"
 msgstr "TLS-Backend implementiert keine TLS-Bindungs-Ermittlung"
 
@@ -1424,74 +1444,74 @@ msgstr "Es wurde ein GEmblem für GEmblemedIcon erwartet"
 #. * trying to find the enclosing (user visible)
 #. * mount of a file, but none exists.
 #.
-#: gio/gfile.c:1561
+#: gio/gfile.c:1579
 msgid "Containing mount does not exist"
 msgstr "Enthaltender Einhängepunkt existiert nicht"
 
-#: gio/gfile.c:2608 gio/glocalfile.c:2486
+#: gio/gfile.c:2626 gio/glocalfile.c:2486
 msgid "Can’t copy over directory"
 msgstr "Es kann nicht über den Ordner kopiert werden"
 
-#: gio/gfile.c:2668
+#: gio/gfile.c:2686
 msgid "Can’t copy directory over directory"
 msgstr "Ordner kann nicht über Ordner kopiert werden"
 
-#: gio/gfile.c:2676
+#: gio/gfile.c:2694
 msgid "Target file exists"
 msgstr "Zieldatei existiert"
 
-#: gio/gfile.c:2695
+#: gio/gfile.c:2713
 msgid "Can’t recursively copy directory"
 msgstr "Ordner kann nicht rekursiv kopiert werden"
 
-#: gio/gfile.c:2996
+#: gio/gfile.c:3014
 msgid "Splice not supported"
 msgstr "Zusammenfügen wird nicht unterstützt"
 
-#: gio/gfile.c:3000
+#: gio/gfile.c:3018
 #, c-format
 msgid "Error splicing file: %s"
 msgstr "Fehler beim Zusammenfügen der Datei: %s"
 
-#: gio/gfile.c:3152
+#: gio/gfile.c:3170
 msgid "Copy (reflink/clone) between mounts is not supported"
 msgstr "Kopieren (reflink/clone) zwischen Einhängepunkten nicht unterstützt"
 
-#: gio/gfile.c:3156
+#: gio/gfile.c:3174
 msgid "Copy (reflink/clone) is not supported or invalid"
 msgstr "Kopieren (reflink/clone) wird nicht unterstützt oder ist ungültig"
 
-#: gio/gfile.c:3161
+#: gio/gfile.c:3179
 msgid "Copy (reflink/clone) is not supported or didn’t work"
 msgstr ""
 "Kopieren (reflink/clone) wird nicht unterstützt oder funktioniert nicht"
 
-#: gio/gfile.c:3226
+#: gio/gfile.c:3244
 msgid "Can’t copy special file"
 msgstr "Spezielle Datei kann nicht kopiert werden"
 
-#: gio/gfile.c:4035
+#: gio/gfile.c:4138
 msgid "Invalid symlink value given"
 msgstr "Ungültiger Wert für symbolische Verknüpfung angegeben"
 
-#: gio/gfile.c:4045 glib/gfileutils.c:2333
+#: gio/gfile.c:4148 glib/gfileutils.c:2333
 msgid "Symbolic links not supported"
 msgstr "Symbolische Verknüpfungen nicht unterstützt"
 
-#: gio/gfile.c:4213
+#: gio/gfile.c:4316
 msgid "Trash not supported"
 msgstr "Papierkorb nicht unterstützt"
 
-#: gio/gfile.c:4325
+#: gio/gfile.c:4428
 #, c-format
 msgid "File names cannot contain “%c”"
 msgstr "Dateinamen dürfen kein »%c« enthalten"
 
-#: gio/gfile.c:6806 gio/gvolume.c:364
+#: gio/gfile.c:7028 gio/gvolume.c:364
 msgid "volume doesn’t implement mount"
 msgstr "Datenträger unterstützt Einhängen nicht"
 
-#: gio/gfile.c:6920 gio/gfile.c:6968
+#: gio/gfile.c:7142 gio/gfile.c:7190
 msgid "No application is registered as handling this file"
 msgstr "Es wurde keine Anwendung gefunden, die diese Datei verarbeiten kann"
 
@@ -1536,7 +1556,7 @@ msgstr "Abschneiden des Eingabedatenstroms nicht erlaubt"
 msgid "Truncate not supported on stream"
 msgstr "Abschneiden wird vom Datenstrom nicht unterstützt"
 
-#: gio/ghttpproxy.c:91 gio/gresolver.c:443 gio/gresolver.c:596
+#: gio/ghttpproxy.c:91 gio/gresolver.c:458 gio/gresolver.c:611
 #: glib/gconvert.c:1825
 msgid "Invalid hostname"
 msgstr "Ungültiger Rechnername"
@@ -1623,7 +1643,7 @@ msgid "Could not parse “%s” as IP address mask"
 msgstr "»%s« konnte nicht als IP-Adressmaske verarbeitet werden"
 
 #: gio/ginetsocketaddress.c:203 gio/ginetsocketaddress.c:220
-#: gio/gnativesocketaddress.c:109 gio/gunixsocketaddress.c:221
+#: gio/gnativesocketaddress.c:109 gio/gunixsocketaddress.c:228
 msgid "Not enough space for socket address"
 msgstr "Nicht genug Platz für eine Socket-Adresse"
 
@@ -1751,7 +1771,7 @@ msgstr "Fehler beim Schreiben in die Standardausgabe"
 #: 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:204 gio/gio-tool-mount.c:1199 gio/gio-tool-open.c:70
-#: gio/gio-tool-remove.c:48 gio/gio-tool-rename.c:45 gio/gio-tool-set.c:89
+#: gio/gio-tool-remove.c:48 gio/gio-tool-rename.c:45 gio/gio-tool-set.c:91
 #: gio/gio-tool-trash.c:220 gio/gio-tool-tree.c:239
 msgid "LOCATION"
 msgstr "ORT"
@@ -2266,7 +2286,7 @@ msgstr "Eine Datei umbenennen."
 msgid "Missing argument"
 msgstr "Fehlendes Argument"
 
-#: gio/gio-tool-rename.c:76 gio/gio-tool-save.c:190 gio/gio-tool-set.c:137
+#: gio/gio-tool-rename.c:76 gio/gio-tool-save.c:190 gio/gio-tool-set.c:139
 msgid "Too many arguments"
 msgstr "Zu viele Argumente"
 
@@ -2330,31 +2350,31 @@ msgstr "Typ des Attributs"
 msgid "TYPE"
 msgstr "TYP"
 
-#: gio/gio-tool-set.c:89
+#: gio/gio-tool-set.c:91
 msgid "ATTRIBUTE"
 msgstr "ATTRIBUT"
 
-#: gio/gio-tool-set.c:89
+#: gio/gio-tool-set.c:91
 msgid "VALUE"
 msgstr "WERT"
 
-#: gio/gio-tool-set.c:93
+#: gio/gio-tool-set.c:95
 msgid "Set a file attribute of LOCATION."
 msgstr "Ein Dateiattribut von ORT festlegen."
 
-#: gio/gio-tool-set.c:113
+#: gio/gio-tool-set.c:115
 msgid "Location not specified"
 msgstr "Kein Ort angegeben"
 
-#: gio/gio-tool-set.c:120
+#: gio/gio-tool-set.c:122
 msgid "Attribute not specified"
 msgstr "Kein Attribut angegeben"
 
-#: gio/gio-tool-set.c:130
+#: gio/gio-tool-set.c:132
 msgid "Value not specified"
 msgstr "Kein Wert angegeben"
 
-#: gio/gio-tool-set.c:180
+#: gio/gio-tool-set.c:182
 #, c-format
 msgid "Invalid attribute type “%s”"
 msgstr "Ungültiger Attributtyp »%s«"
@@ -2470,15 +2490,15 @@ msgstr "Fehler beim Komprimieren der Datei %s"
 msgid "text may not appear inside <%s>"
 msgstr "Text könnte nicht innerhalb von <%s> erscheinen"
 
-#: gio/glib-compile-resources.c:737 gio/glib-compile-schemas.c:2172
+#: gio/glib-compile-resources.c:819 gio/glib-compile-schemas.c:2172
 msgid "Show program version and exit"
 msgstr "Programm-Version anzeigen und beenden"
 
-#: gio/glib-compile-resources.c:738
+#: gio/glib-compile-resources.c:820
 msgid "Name of the output file"
 msgstr "Name der Ausgabedatei"
 
-#: gio/glib-compile-resources.c:739
+#: gio/glib-compile-resources.c:821
 msgid ""
 "The directories to load files referenced in FILE from (default: current "
 "directory)"
@@ -2486,47 +2506,47 @@ msgstr ""
 "Die Ordner, aus denen in FILE referenzierte Dateien gelesen werden sollen "
 "(Vorgabe ist der aktuelle Ordner)"
 
-#: gio/glib-compile-resources.c:739 gio/glib-compile-schemas.c:2173
+#: gio/glib-compile-resources.c:821 gio/glib-compile-schemas.c:2173
 #: gio/glib-compile-schemas.c:2202
 msgid "DIRECTORY"
 msgstr "ORDNER"
 
-#: gio/glib-compile-resources.c:740
+#: gio/glib-compile-resources.c:822
 msgid ""
 "Generate output in the format selected for by the target filename extension"
 msgstr ""
 "Ausgabe in dem Format generieren, welches durch die Dateiendung der "
 "Zieldatei vorgegeben wird"
 
-#: gio/glib-compile-resources.c:741
+#: gio/glib-compile-resources.c:823
 msgid "Generate source header"
 msgstr "Quellcode-Header generieren"
 
-#: gio/glib-compile-resources.c:742
+#: gio/glib-compile-resources.c:824
 msgid "Generate source code used to link in the resource file into your code"
 msgstr "Quellcode zum Verlinken der Ressourcendatei in Ihren Code verwenden"
 
-#: gio/glib-compile-resources.c:743
+#: gio/glib-compile-resources.c:825
 msgid "Generate dependency list"
 msgstr "Abhängigkeitsliste generieren"
 
-#: gio/glib-compile-resources.c:744
+#: gio/glib-compile-resources.c:826
 msgid "Name of the dependency file to generate"
 msgstr "Name der zu erzeugenden Abhängigkeitsdatei"
 
-#: gio/glib-compile-resources.c:745
+#: gio/glib-compile-resources.c:827
 msgid "Include phony targets in the generated dependency file"
 msgstr "Phony-Ziele in der erzeugten Abhängigkeitsdatei einschließen"
 
-#: gio/glib-compile-resources.c:746
+#: gio/glib-compile-resources.c:828
 msgid "Don’t automatically create and register resource"
 msgstr "Die Ressource nicht automatisch anlegen und registrieren"
 
-#: gio/glib-compile-resources.c:747
+#: gio/glib-compile-resources.c:829
 msgid "Don’t export functions; declare them G_GNUC_INTERNAL"
 msgstr "Keine Funktionen exportieren; als G_GNUC_INTERNAL deklarieren"
 
-#: gio/glib-compile-resources.c:748
+#: gio/glib-compile-resources.c:830
 msgid ""
 "Don’t embed resource data in the C file; assume it's linked externally "
 "instead"
@@ -2534,11 +2554,15 @@ msgstr ""
 "Ressourcendaten nicht in der C-Datei einbetten; stattdesssen externe "
 "Verlinkung voraussetzen"
 
-#: gio/glib-compile-resources.c:749
+#: gio/glib-compile-resources.c:831
 msgid "C identifier name used for the generated source code"
 msgstr "C-Bezeichnername für den generierten Quellcode"
 
-#: gio/glib-compile-resources.c:775
+#: gio/glib-compile-resources.c:832
+msgid "The target C compiler (default: the CC environment variable)"
+msgstr "Der Ziel-C-Compiler (Voreinstellung: die CC-Umgebungsvariable)"
+
+#: gio/glib-compile-resources.c:858
 msgid ""
 "Compile a resource specification into a resource file.\n"
 "Resource specification files have the extension .gresource.xml,\n"
@@ -2549,7 +2573,7 @@ msgstr ""
 "haben,\n"
 "die Ressourcendateien die Erweiterung .gresource."
 
-#: gio/glib-compile-resources.c:797
+#: gio/glib-compile-resources.c:880
 msgid "You should give exactly one file name\n"
 msgstr "Sie sollten genau einen Dateinamen angeben\n"
 
@@ -3367,13 +3391,13 @@ msgstr "Fehler beim Erzeugen der Sicherungskopie: %s"
 msgid "Error renaming temporary file: %s"
 msgstr "Fehler beim Umbenennen der temporären Datei: %s"
 
-#: gio/glocalfileoutputstream.c:609 gio/glocalfileoutputstream.c:1237
+#: gio/glocalfileoutputstream.c:609 gio/glocalfileoutputstream.c:1239
 #, c-format
 msgid "Error truncating file: %s"
 msgstr "Fehler beim Abschneiden der Datei: %s"
 
 #: gio/glocalfileoutputstream.c:662 gio/glocalfileoutputstream.c:907
-#: gio/glocalfileoutputstream.c:1218 gio/gsubprocess.c:226
+#: gio/glocalfileoutputstream.c:1220 gio/gsubprocess.c:229
 #, c-format
 msgid "Error opening file “%s”: %s"
 msgstr "Fehler beim Öffnen der Datei »%s«: %s"
@@ -3395,7 +3419,7 @@ msgstr "Die Datei wurde extern verändert"
 msgid "Error removing old file: %s"
 msgstr "Fehler beim Entfernen der alten Datei: %s"
 
-#: gio/gmemoryinputstream.c:474 gio/gmemoryoutputstream.c:772
+#: gio/gmemoryinputstream.c:474 gio/gmemoryoutputstream.c:762
 msgid "Invalid GSeekType supplied"
 msgstr "Ungültiger GSeekType übergeben"
 
@@ -3407,15 +3431,15 @@ msgstr "Ungültige Suchanfrage"
 msgid "Cannot truncate GMemoryInputStream"
 msgstr "GMemoryInputStream konnte nicht abgeschnitten werden"
 
-#: gio/gmemoryoutputstream.c:567
+#: gio/gmemoryoutputstream.c:568
 msgid "Memory output stream not resizable"
 msgstr "Größe des Speicherausgabestroms ist nicht änderbar"
 
-#: gio/gmemoryoutputstream.c:583
+#: gio/gmemoryoutputstream.c:584
 msgid "Failed to resize memory output stream"
 msgstr "Größe des Speicherausgabestroms konnte nicht geändert werden"
 
-#: gio/gmemoryoutputstream.c:673
+#: gio/gmemoryoutputstream.c:663
 msgid ""
 "Amount of memory required to process the write is larger than available "
 "address space"
@@ -3423,11 +3447,11 @@ msgstr ""
 "Für den Schreibvorgang erforderliche Speichermenge ist größer als der "
 "verfügbare Adressbereich"
 
-#: gio/gmemoryoutputstream.c:782
+#: gio/gmemoryoutputstream.c:772
 msgid "Requested seek before the beginning of the stream"
 msgstr "Angeforderte Suche vor dem Beginn des Datenstroms"
 
-#: gio/gmemoryoutputstream.c:797
+#: gio/gmemoryoutputstream.c:787
 msgid "Requested seek beyond the end of the stream"
 msgstr "Angeforderte Suche nach dem Ende des Datenstroms"
 
@@ -3531,18 +3555,22 @@ msgstr "An %s übermittelte Vektorsumme ist zu groß"
 msgid "Source stream is already closed"
 msgstr "Quelldatenstrom ist bereits geschlossen"
 
-#: gio/gresolver.c:386 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
+#. Translators: the first placeholder is a domain name, the
+#. * second is an error message
+#: gio/gresolver.c:401 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
+#: gio/gthreadedresolver.c:780 gio/gthreadedresolver.c:804
+#: gio/gthreadedresolver.c:829 gio/gthreadedresolver.c:844
 #, c-format
 msgid "Error resolving “%s”: %s"
 msgstr "Fehler beim Auflösen von »%s«: %s"
 
 #. Translators: The placeholder is for a function name.
-#: gio/gresolver.c:455 gio/gresolver.c:615
+#: gio/gresolver.c:470 gio/gresolver.c:630
 #, c-format
 msgid "%s not implemented"
 msgstr "%s ist nicht implementiert"
 
-#: gio/gresolver.c:984 gio/gresolver.c:1036
+#: gio/gresolver.c:999 gio/gresolver.c:1051
 msgid "Invalid domain"
 msgstr "Ungültige Domain"
 
@@ -3657,7 +3685,7 @@ msgstr ""
 msgid "  SECTION   An (optional) elf section name\n"
 msgstr "  SEKTION   Ein (optionaler) Name einer ELF-Sektion\n"
 
-#: gio/gresource-tool.c:565 gio/gsettings-tool.c:706
+#: gio/gresource-tool.c:565 gio/gsettings-tool.c:718
 msgid "  COMMAND   The (optional) command to explain\n"
 msgstr "  BEFEHL    Der (optionale) zu erklärende Befehl\n"
 
@@ -3691,7 +3719,7 @@ msgstr "PFAD"
 msgid "  PATH      A resource path\n"
 msgstr "  PFAD      Ein Ressourcenpfad\n"
 
-#: gio/gsettings-tool.c:49 gio/gsettings-tool.c:70 gio/gsettings-tool.c:911
+#: gio/gsettings-tool.c:49 gio/gsettings-tool.c:70 gio/gsettings-tool.c:923
 #, c-format
 msgid "No such schema “%s”\n"
 msgstr "Kein derartiges Schema »%s«\n"
@@ -3724,35 +3752,35 @@ msgid "Path must not contain two adjacent slashes (//)\n"
 msgstr ""
 "Pfad darf nicht zwei aufeinander folgende Schrägstriche enthalten (//)\n"
 
-#: gio/gsettings-tool.c:541
+#: gio/gsettings-tool.c:553
 msgid "The provided value is outside of the valid range\n"
 msgstr "Der angegebene Wert liegt außerhalb des gültigen Bereichs\n"
 
-#: gio/gsettings-tool.c:548
+#: gio/gsettings-tool.c:560
 msgid "The key is not writable\n"
 msgstr "Der Schlüssel ist nicht schreibbar\n"
 
-#: gio/gsettings-tool.c:584
+#: gio/gsettings-tool.c:596
 msgid "List the installed (non-relocatable) schemas"
 msgstr "Installierte (nicht verschiebbare) Schemata auflisten"
 
-#: gio/gsettings-tool.c:590
+#: gio/gsettings-tool.c:602
 msgid "List the installed relocatable schemas"
 msgstr "Installierte (verschiebbare) Schemata auflisten"
 
-#: gio/gsettings-tool.c:596
+#: gio/gsettings-tool.c:608
 msgid "List the keys in SCHEMA"
 msgstr "Schlüssel in SCHEMA auflisten"
 
-#: gio/gsettings-tool.c:597 gio/gsettings-tool.c:603 gio/gsettings-tool.c:646
+#: gio/gsettings-tool.c:609 gio/gsettings-tool.c:615 gio/gsettings-tool.c:658
 msgid "SCHEMA[:PATH]"
 msgstr "SCHEMA[:PFAD]"
 
-#: gio/gsettings-tool.c:602
+#: gio/gsettings-tool.c:614
 msgid "List the children of SCHEMA"
 msgstr "Unterelemente von SCHEMA auflisten"
 
-#: gio/gsettings-tool.c:608
+#: gio/gsettings-tool.c:620
 msgid ""
 "List keys and values, recursively\n"
 "If no SCHEMA is given, list all keys\n"
@@ -3760,48 +3788,48 @@ msgstr ""
 "Schlüssel und Werte rekursiv auflisten\n"
 "Falls kein Schema angegeben, alle Schlüssel auflisten\n"
 
-#: gio/gsettings-tool.c:610
+#: gio/gsettings-tool.c:622
 msgid "[SCHEMA[:PATH]]"
 msgstr "[SCHEMA[:PFAD]]"
 
-#: gio/gsettings-tool.c:615
+#: gio/gsettings-tool.c:627
 msgid "Get the value of KEY"
 msgstr "Den Wert von SCHLÜSSEL ermitteln"
 
-#: gio/gsettings-tool.c:616 gio/gsettings-tool.c:622 gio/gsettings-tool.c:628
-#: gio/gsettings-tool.c:640 gio/gsettings-tool.c:652
+#: gio/gsettings-tool.c:628 gio/gsettings-tool.c:634 gio/gsettings-tool.c:640
+#: gio/gsettings-tool.c:652 gio/gsettings-tool.c:664
 msgid "SCHEMA[:PATH] KEY"
 msgstr "SCHEMA[:PFAD] SCHLÜSSEL"
 
-#: gio/gsettings-tool.c:621
+#: gio/gsettings-tool.c:633
 msgid "Query the range of valid values for KEY"
 msgstr "Den Bereich gültiger Werte für SCHLÜSSEL abfragen"
 
-#: gio/gsettings-tool.c:627
+#: gio/gsettings-tool.c:639
 msgid "Query the description for KEY"
 msgstr "Die Beschreibung für SCHLÜSSEL abfragen"
 
-#: gio/gsettings-tool.c:633
+#: gio/gsettings-tool.c:645
 msgid "Set the value of KEY to VALUE"
 msgstr "Den Wert von SCHLÜSSEL auf WERT setzen"
 
-#: gio/gsettings-tool.c:634
+#: gio/gsettings-tool.c:646
 msgid "SCHEMA[:PATH] KEY VALUE"
 msgstr "SCHEMA[:PFAD] SCHLÜSSEL WERT"
 
-#: gio/gsettings-tool.c:639
+#: gio/gsettings-tool.c:651
 msgid "Reset KEY to its default value"
 msgstr "SCHLÜSSEL auf Vorgabewert setzen"
 
-#: gio/gsettings-tool.c:645
+#: gio/gsettings-tool.c:657
 msgid "Reset all keys in SCHEMA to their defaults"
 msgstr "Alle Schlüssel in SCHEMA auf deren Vorgaben zurücksetzen"
 
-#: gio/gsettings-tool.c:651
+#: gio/gsettings-tool.c:663
 msgid "Check if KEY is writable"
 msgstr "Prüfen, ob SCHLÜSSEL schreibgeschützt ist"
 
-#: gio/gsettings-tool.c:657
+#: gio/gsettings-tool.c:669
 msgid ""
 "Monitor KEY for changes.\n"
 "If no KEY is specified, monitor all keys in SCHEMA.\n"
@@ -3812,11 +3840,11 @@ msgstr ""
 "in SCHEMA überwacht.\n"
 "Drücken Sie ^C, um die Überwachung zu beenden.\n"
 
-#: gio/gsettings-tool.c:660
+#: gio/gsettings-tool.c:672
 msgid "SCHEMA[:PATH] [KEY]"
 msgstr "SCHEMA[:PFAD] [SCHLÜSSEL]"
 
-#: gio/gsettings-tool.c:672
+#: gio/gsettings-tool.c:684
 msgid ""
 "Usage:\n"
 "  gsettings --version\n"
@@ -3866,7 +3894,7 @@ msgstr ""
 "erhalten.\n"
 "\n"
 
-#: gio/gsettings-tool.c:696
+#: gio/gsettings-tool.c:708
 #, c-format
 msgid ""
 "Usage:\n"
@@ -3881,11 +3909,11 @@ msgstr ""
 "%s\n"
 "\n"
 
-#: gio/gsettings-tool.c:702
+#: gio/gsettings-tool.c:714
 msgid "  SCHEMADIR A directory to search for additional schemas\n"
 msgstr "  SCHEMADIR Ein Ordner zum Suchen nach zusätzlichen Schemas\n"
 
-#: gio/gsettings-tool.c:710
+#: gio/gsettings-tool.c:722
 msgid ""
 "  SCHEMA    The name of the schema\n"
 "  PATH      The path, for relocatable schemas\n"
@@ -3893,215 +3921,215 @@ msgstr ""
 "  SCHEMA      Die Kennung des Schemas\n"
 "  SCHLÜSSEL   Der Name des Schlüssels\n"
 
-#: gio/gsettings-tool.c:715
+#: gio/gsettings-tool.c:727
 msgid "  KEY       The (optional) key within the schema\n"
 msgstr "  SCHLÜSSEL Der (optionale) Schlüssel innerhalb des Schemas\n"
 
-#: gio/gsettings-tool.c:719
+#: gio/gsettings-tool.c:731
 msgid "  KEY       The key within the schema\n"
 msgstr "  SCHLÜSSEL Der Schlüssel innerhalb des Schemas\n"
 
-#: gio/gsettings-tool.c:723
+#: gio/gsettings-tool.c:735
 msgid "  VALUE     The value to set\n"
 msgstr "  WERT      Der zu setzende Wert\n"
 
-#: gio/gsettings-tool.c:778
+#: gio/gsettings-tool.c:790
 #, c-format
 msgid "Could not load schemas from %s: %s\n"
 msgstr "Schemata von »%s« konnten nicht geladen werden: %s\n"
 
-#: gio/gsettings-tool.c:790
+#: gio/gsettings-tool.c:802
 msgid "No schemas installed\n"
 msgstr "Keine Schemata installiert\n"
 
-#: gio/gsettings-tool.c:869
+#: gio/gsettings-tool.c:881
 msgid "Empty schema name given\n"
 msgstr "Leerer Schema-Name wurde angegeben\n"
 
-#: gio/gsettings-tool.c:924
+#: gio/gsettings-tool.c:936
 #, c-format
 msgid "No such key “%s”\n"
 msgstr "Kein derartiger Schlüssel »%s«\n"
 
-#: gio/gsocket.c:413
+#: gio/gsocket.c:417
 msgid "Invalid socket, not initialized"
 msgstr "Ungültiger Socket, wurde nicht initialisiert"
 
-#: gio/gsocket.c:420
+#: gio/gsocket.c:424
 #, c-format
 msgid "Invalid socket, initialization failed due to: %s"
 msgstr "Ungültiger Socket, Initialisierung schlug fehl wegen: %s"
 
-#: gio/gsocket.c:428
+#: gio/gsocket.c:432
 msgid "Socket is already closed"
 msgstr "Der Socket ist bereits geschlossen"
 
-#: gio/gsocket.c:443 gio/gsocket.c:3190 gio/gsocket.c:4420 gio/gsocket.c:4478
+#: gio/gsocket.c:447 gio/gsocket.c:3194 gio/gsocket.c:4427 gio/gsocket.c:4485
 msgid "Socket I/O timed out"
 msgstr "Zeitüberschreitung bei Ein-/Ausgabeoperation des Sockets"
 
-#: gio/gsocket.c:578
+#: gio/gsocket.c:582
 #, c-format
 msgid "creating GSocket from fd: %s"
 msgstr "GSocket wird erstellt von Dateideskriptor: %s"
 
-#: gio/gsocket.c:607 gio/gsocket.c:671 gio/gsocket.c:678
+#: gio/gsocket.c:611 gio/gsocket.c:675 gio/gsocket.c:682
 #, c-format
 msgid "Unable to create socket: %s"
 msgstr "Socket kann nicht angelegt werden: %s"
 
-#: gio/gsocket.c:671
+#: gio/gsocket.c:675
 msgid "Unknown family was specified"
 msgstr "Eine unbekannte Familie wurde angegeben"
 
-#: gio/gsocket.c:678
+#: gio/gsocket.c:682
 msgid "Unknown protocol was specified"
 msgstr "Ein unbekanntes Protokoll wurde angegeben"
 
-#: gio/gsocket.c:1169
+#: gio/gsocket.c:1173
 #, c-format
 msgid "Cannot use datagram operations on a non-datagram socket."
 msgstr ""
 "Datagramm-Operationen können nicht auf einem Nicht-Datagramm-Socket "
 "ausgeführt werden."
 
-#: gio/gsocket.c:1186
+#: gio/gsocket.c:1190
 #, c-format
 msgid "Cannot use datagram operations on a socket with a timeout set."
 msgstr ""
 "Datagramm-Operationen können nicht auf einem Socket mit gesetzter "
 "Zeitüberschreitung ausgeführt werden."
 
-#: gio/gsocket.c:1993
+#: gio/gsocket.c:1997
 #, c-format
 msgid "could not get local address: %s"
 msgstr "Lokale Adresse konnte nicht gelesen werden: %s"
 
-#: gio/gsocket.c:2039
+#: gio/gsocket.c:2043
 #, c-format
 msgid "could not get remote address: %s"
 msgstr "Entfernte Adresse konnte nicht gelesen werden: %s"
 
-#: gio/gsocket.c:2105
+#: gio/gsocket.c:2109
 #, c-format
 msgid "could not listen: %s"
 msgstr "Es konnte nicht gelauscht werden: %s"
 
-#: gio/gsocket.c:2209
+#: gio/gsocket.c:2213
 #, c-format
 msgid "Error binding to address %s: %s"
 msgstr "Fehler beim Binden an Adresse %s: %s"
 
-#: gio/gsocket.c:2385 gio/gsocket.c:2422 gio/gsocket.c:2532 gio/gsocket.c:2557
-#: gio/gsocket.c:2620 gio/gsocket.c:2678 gio/gsocket.c:2696
+#: gio/gsocket.c:2389 gio/gsocket.c:2426 gio/gsocket.c:2536 gio/gsocket.c:2561
+#: gio/gsocket.c:2624 gio/gsocket.c:2682 gio/gsocket.c:2700
 #, c-format
 msgid "Error joining multicast group: %s"
 msgstr "Fehler beim Beitreten zur Multicast-Gruppe: %s"
 
-#: gio/gsocket.c:2386 gio/gsocket.c:2423 gio/gsocket.c:2533 gio/gsocket.c:2558
-#: gio/gsocket.c:2621 gio/gsocket.c:2679 gio/gsocket.c:2697
+#: gio/gsocket.c:2390 gio/gsocket.c:2427 gio/gsocket.c:2537 gio/gsocket.c:2562
+#: gio/gsocket.c:2625 gio/gsocket.c:2683 gio/gsocket.c:2701
 #, c-format
 msgid "Error leaving multicast group: %s"
 msgstr "Fehler beim Verlassen der Multicast-Gruppe: %s"
 
-#: gio/gsocket.c:2387
+#: gio/gsocket.c:2391
 msgid "No support for source-specific multicast"
 msgstr "Quellen-spezifisches Multicast wird nicht unterstützt"
 
-#: gio/gsocket.c:2534
+#: gio/gsocket.c:2538
 msgid "Unsupported socket family"
 msgstr "Nicht unterstützte Socket-Familie"
 
-#: gio/gsocket.c:2559
+#: gio/gsocket.c:2563
 msgid "source-specific not an IPv4 address"
 msgstr "Quellen-spezifisch ist keine IPv4-Adresse"
 
-#: gio/gsocket.c:2583
+#: gio/gsocket.c:2587
 #, c-format
 msgid "Interface name too long"
 msgstr "Schnittstellenname ist zu lang"
 
-#: gio/gsocket.c:2596 gio/gsocket.c:2646
+#: gio/gsocket.c:2600 gio/gsocket.c:2650
 #, c-format
 msgid "Interface not found: %s"
 msgstr "Schnittstelle nicht gefunden: %s"
 
-#: gio/gsocket.c:2622
+#: gio/gsocket.c:2626
 msgid "No support for IPv4 source-specific multicast"
 msgstr "Quellen-spezifisches IPv4-Multicast wird nicht unterstützt"
 
-#: gio/gsocket.c:2680
+#: gio/gsocket.c:2684
 msgid "No support for IPv6 source-specific multicast"
 msgstr "Quellen-spezifisches IPv6-Multicast wird nicht unterstützt"
 
-#: gio/gsocket.c:2889
+#: gio/gsocket.c:2893
 #, c-format
 msgid "Error accepting connection: %s"
 msgstr "Fehler bei Annahme der Verbindung: %s"
 
-#: gio/gsocket.c:3015
+#: gio/gsocket.c:3019
 msgid "Connection in progress"
 msgstr "Verbindungsvorgang läuft"
 
-#: gio/gsocket.c:3066
+#: gio/gsocket.c:3070
 msgid "Unable to get pending error: "
 msgstr "Ausstehender Fehler konnte nicht erhalten werden: "
 
-#: gio/gsocket.c:3255
+#: gio/gsocket.c:3259
 #, c-format
 msgid "Error receiving data: %s"
 msgstr "Fehler beim Erhalt von Daten: %s"
 
-#: gio/gsocket.c:3452
+#: gio/gsocket.c:3456
 #, c-format
 msgid "Error sending data: %s"
 msgstr "Fehler beim Senden von Daten: %s"
 
-#: gio/gsocket.c:3639
+#: gio/gsocket.c:3643
 #, c-format
 msgid "Unable to shutdown socket: %s"
 msgstr "Socket kann nicht heruntergefahren werden: %s"
 
-#: gio/gsocket.c:3720
+#: gio/gsocket.c:3724
 #, c-format
 msgid "Error closing socket: %s"
 msgstr "Fehler beim Schließen des Sockets: %s"
 
-#: gio/gsocket.c:4413
+#: gio/gsocket.c:4420
 #, c-format
 msgid "Waiting for socket condition: %s"
 msgstr "Es wird auf eine Socket-Bedingung gewartet: %s"
 
-#: gio/gsocket.c:4804 gio/gsocket.c:4820 gio/gsocket.c:4833
+#: gio/gsocket.c:4810 gio/gsocket.c:4826 gio/gsocket.c:4839
 #, c-format
 msgid "Unable to send message: %s"
 msgstr "Nachricht konnte nicht gesendet werden: %s"
 
-#: gio/gsocket.c:4805 gio/gsocket.c:4821 gio/gsocket.c:4834
+#: gio/gsocket.c:4811 gio/gsocket.c:4827 gio/gsocket.c:4840
 msgid "Message vectors too large"
 msgstr "Nachrichtenträger sind zu lang"
 
-#: gio/gsocket.c:4850 gio/gsocket.c:4852 gio/gsocket.c:4999 gio/gsocket.c:5084
-#: gio/gsocket.c:5262 gio/gsocket.c:5302 gio/gsocket.c:5304
+#: gio/gsocket.c:4856 gio/gsocket.c:4858 gio/gsocket.c:5005 gio/gsocket.c:5090
+#: gio/gsocket.c:5268 gio/gsocket.c:5308 gio/gsocket.c:5310
 #, c-format
 msgid "Error sending message: %s"
 msgstr "Fehler beim Senden der Nachricht: %s"
 
-#: gio/gsocket.c:5026
+#: gio/gsocket.c:5032
 msgid "GSocketControlMessage not supported on Windows"
 msgstr "GSocketControlMessage wird unter Windows nicht unterstützt"
 
-#: gio/gsocket.c:5495 gio/gsocket.c:5571 gio/gsocket.c:5797
+#: gio/gsocket.c:5505 gio/gsocket.c:5581 gio/gsocket.c:5807
 #, c-format
 msgid "Error receiving message: %s"
 msgstr "Fehler beim Empfang der Nachricht: %s"
 
-#: gio/gsocket.c:6070 gio/gsocket.c:6081 gio/gsocket.c:6127
+#: gio/gsocket.c:6090 gio/gsocket.c:6101 gio/gsocket.c:6164
 #, c-format
 msgid "Unable to read socket credentials: %s"
 msgstr "Socket-Berechtigungen konnten nicht gelesen werden: %s"
 
-#: gio/gsocket.c:6136
+#: gio/gsocket.c:6173
 msgid "g_socket_get_credentials not implemented for this OS"
 msgstr ""
 "g_socket_get_credentials ist für dieses Betriebssystem nicht implementiert"
@@ -4120,11 +4148,11 @@ msgstr "Verbindung mit %s ist gescheitert: "
 msgid "Could not connect: "
 msgstr "Verbindung ist gescheitert: "
 
-#: gio/gsocketclient.c:1162 gio/gsocketclient.c:1749
+#: gio/gsocketclient.c:1202 gio/gsocketclient.c:1793
 msgid "Proxying over a non-TCP connection is not supported."
 msgstr "Nicht-TCP-Verbindung über Proxy wird nicht unterstützt."
 
-#: gio/gsocketclient.c:1194 gio/gsocketclient.c:1778
+#: gio/gsocketclient.c:1234 gio/gsocketclient.c:1822
 #, c-format
 msgid "Proxy protocol “%s” is not supported."
 msgstr "Proxy-Protokoll »%s« wird nicht unterstützt."
@@ -4226,7 +4254,7 @@ msgstr "SOCKSv5-Proxy unterstützt den angegebenen Adresstyp nicht."
 msgid "Unknown SOCKSv5 proxy error."
 msgstr "Unbekannter Fehler im SOCKSv5-Proxy."
 
-#: gio/gtestdbus.c:612 glib/gspawn-win32.c:311
+#: gio/gtestdbus.c:612 glib/gspawn-win32.c:314
 #, c-format
 msgid "Failed to create pipe for communicating with child process (%s)"
 msgstr ""
@@ -4252,44 +4280,66 @@ msgstr "Es wurden keine gültigen Adressen gefunden"
 msgid "Error reverse-resolving “%s”: %s"
 msgstr "Fehler beim Rückwärtsauflösen von »%s«: %s"
 
-#: gio/gthreadedresolver.c:676 gio/gthreadedresolver.c:755
-#: gio/gthreadedresolver.c:853 gio/gthreadedresolver.c:903
+#. Translators: the placeholder is a DNS record type, such as ‘MX’ or ‘SRV’
+#: gio/gthreadedresolver.c:550 gio/gthreadedresolver.c:572
+#: gio/gthreadedresolver.c:610 gio/gthreadedresolver.c:657
+#: gio/gthreadedresolver.c:686 gio/gthreadedresolver.c:698
+#, c-format
+msgid "Error parsing DNS %s record: malformed DNS packet"
+msgstr "Fehler bei der Verarbeitung des DNS %s-Eintrags: ungültiges DNS-Paket"
+
+#: gio/gthreadedresolver.c:756 gio/gthreadedresolver.c:893
+#: gio/gthreadedresolver.c:991 gio/gthreadedresolver.c:1041
 #, c-format
 msgid "No DNS record of the requested type for “%s”"
-msgstr "Kein DNS-Datensatz des angeforderten Typs für »%s«"
+msgstr "Kein DNS-Eintrag des angeforderten Typs für »%s«"
 
-#: gio/gthreadedresolver.c:681 gio/gthreadedresolver.c:858
+#: gio/gthreadedresolver.c:761 gio/gthreadedresolver.c:996
 #, c-format
 msgid "Temporarily unable to resolve “%s”"
 msgstr "»%s« kann vorübergehend nicht aufgelöst werden"
 
-#: gio/gthreadedresolver.c:686 gio/gthreadedresolver.c:863
-#: gio/gthreadedresolver.c:973
+#: gio/gthreadedresolver.c:766 gio/gthreadedresolver.c:1001
+#: gio/gthreadedresolver.c:1111
 #, c-format
 msgid "Error resolving “%s”"
 msgstr "Fehler beim Auflösen von »%s«"
 
-#: gio/gtlscertificate.c:431
+#: gio/gthreadedresolver.c:780 gio/gthreadedresolver.c:804
+#: gio/gthreadedresolver.c:829 gio/gthreadedresolver.c:844
+msgid "Malformed DNS packet"
+msgstr "Ungültiges DNS-Paket"
+
+#: gio/gthreadedresolver.c:886
+#, c-format
+msgid "Failed to parse DNS response for “%s”: "
+msgstr "Fehler bei der Verarbeitung der DNS-Antwort zu »%s«: "
+
+#: gio/gtlscertificate.c:478
 msgid "No PEM-encoded private key found"
 msgstr "Kein PEM-enkodierter geheimer Schlüssel gefunden"
 
-#: gio/gtlscertificate.c:441
+#: gio/gtlscertificate.c:488
 msgid "Cannot decrypt PEM-encoded private key"
 msgstr "PEM-enkodierter geheimer Schlüssel konnte nicht entschlüsselt werden"
 
-#: gio/gtlscertificate.c:452
+#: gio/gtlscertificate.c:499
 msgid "Could not parse PEM-encoded private key"
 msgstr "PEM-enkodierter geheimer Schlüssel konnte nicht verarbeitet werden"
 
-#: gio/gtlscertificate.c:479
+#: gio/gtlscertificate.c:526
 msgid "No PEM-encoded certificate found"
 msgstr "Kein PEM-enkodiertes Zertifikat gefunden"
 
-#: gio/gtlscertificate.c:488
+#: gio/gtlscertificate.c:535
 msgid "Could not parse PEM-encoded certificate"
 msgstr "PEM-enkodiertes Zertifikat konnte nicht verarbeitet werden"
 
-#: gio/gtlscertificate.c:844
+#: gio/gtlscertificate.c:796
+msgid "The current TLS backend does not support PKCS #12"
+msgstr "Das aktuelle TLS-Backend unterstützt PKCS #12 nicht"
+
+#: gio/gtlscertificate.c:1013
 msgid "This GTlsBackend does not support creating PKCS #11 certificates"
 msgstr ""
 "Das GTlsBackend unterstützt die Erstellung von PKCS #11-Zertifikaten nicht"
@@ -4316,56 +4366,64 @@ msgstr ""
 msgid "The password entered is incorrect."
 msgstr "Das eingegebene Passwort ist ungültig."
 
-#: gio/gunixconnection.c:166 gio/gunixconnection.c:579
+#: gio/gunixconnection.c:125
+msgid "Sending FD is not supported"
+msgstr "Senden von FD wird nicht unterstützt"
+
+#: gio/gunixconnection.c:178 gio/gunixconnection.c:596
 #, c-format
 msgid "Expecting 1 control message, got %d"
 msgid_plural "Expecting 1 control message, got %d"
 msgstr[0] "1 Kontrollnachricht wird erwartet, %d wurde erhalten"
 msgstr[1] "1 Kontrollnachricht wird erwartet, %d wurden erhalten"
 
-#: gio/gunixconnection.c:182 gio/gunixconnection.c:591
+#: gio/gunixconnection.c:194 gio/gunixconnection.c:608
 msgid "Unexpected type of ancillary data"
 msgstr "Unerwartete Art von Zusatzdaten"
 
-#: gio/gunixconnection.c:200
+#: gio/gunixconnection.c:212
 #, c-format
 msgid "Expecting one fd, but got %d\n"
 msgid_plural "Expecting one fd, but got %d\n"
 msgstr[0] "Ein Dateideskriptor wird erwartet, aber %d wurde erhalten\n"
 msgstr[1] "Ein Dateideskriptor wird erwartet, aber %d wurden erhalten\n"
 
-#: gio/gunixconnection.c:219
+#: gio/gunixconnection.c:231
 msgid "Received invalid fd"
 msgstr "Ungültiger Dateideskriptor wurde erhalten"
 
-#: gio/gunixconnection.c:363
+#: gio/gunixconnection.c:238
+msgid "Receiving FD is not supported"
+msgstr "Erhalten von FD wird nicht unterstützt"
+
+#: gio/gunixconnection.c:380
 msgid "Error sending credentials: "
 msgstr "Fehler beim Senden der Anmeldedaten: "
 
-#: gio/gunixconnection.c:520
+#: gio/gunixconnection.c:537
 #, c-format
 msgid "Error checking if SO_PASSCRED is enabled for socket: %s"
 msgstr ""
 "Fehler bei der Überprüfung, ob SO_PASSCRED für Socket aktiviert ist: %s"
 
-#: gio/gunixconnection.c:536
+#: gio/gunixconnection.c:553
 #, c-format
 msgid "Error enabling SO_PASSCRED: %s"
 msgstr "Fehler beim Aktivieren von SO_PASSCRED: %s"
 
-#: gio/gunixconnection.c:565
+#: gio/gunixconnection.c:582
 msgid ""
 "Expecting to read a single byte for receiving credentials but read zero bytes"
 msgstr ""
 "Erwartet wurde der Empfang eines einzelnen Bytes als Anmeldedaten, jedoch "
 "null Bytes gelesen"
 
-#: gio/gunixconnection.c:605
+#: gio/gunixconnection.c:622
 #, c-format
 msgid "Not expecting control message, but got %d"
 msgstr "Kontrollnachricht wurde nicht erwartet, %d wurde erhalten"
 
-#: gio/gunixconnection.c:630
+#: gio/gunixconnection.c:647
 #, c-format
 msgid "Error while disabling SO_PASSCRED: %s"
 msgstr "Fehler beim Deaktivieren von SO_PASSCRED: %s"
@@ -4381,7 +4439,7 @@ msgstr "Fehler beim Lesen aus dem Dateideskriptor: %s"
 msgid "Error closing file descriptor: %s"
 msgstr "Fehler beim Schließen des Dateideskriptors: %s"
 
-#: gio/gunixmounts.c:2785 gio/gunixmounts.c:2838
+#: gio/gunixmounts.c:2809 gio/gunixmounts.c:2862
 msgid "Filesystem root"
 msgstr "Wurzelordner des Dateisystems"
 
@@ -4392,7 +4450,7 @@ msgstr "Wurzelordner des Dateisystems"
 msgid "Error writing to file descriptor: %s"
 msgstr "Fehler beim Schreiben in den Dateideskriptor: %s"
 
-#: gio/gunixsocketaddress.c:244
+#: gio/gunixsocketaddress.c:251
 msgid "Abstract UNIX domain socket addresses not supported on this system"
 msgstr ""
 "Abstrakte Unix Domänen-Socket-Adresse wird auf diesem System nicht "
@@ -4550,8 +4608,8 @@ msgstr ""
 msgid "Unrepresentable character in conversion input"
 msgstr "Nicht darstellbares Zeichen in Umwandlungsausgabe"
 
-#: glib/gconvert.c:495 glib/gutf8.c:871 glib/gutf8.c:1083 glib/gutf8.c:1220
-#: glib/gutf8.c:1324
+#: glib/gconvert.c:495 glib/gutf8.c:886 glib/gutf8.c:1099 glib/gutf8.c:1236
+#: glib/gutf8.c:1340
 msgid "Partial character sequence at end of input"
 msgstr "Bruchstückhafte Zeichenfolge am Eingabeende"
 
@@ -5123,15 +5181,15 @@ msgstr "Kanal endet mit einem Teilzeichen"
 msgid "Can’t do a raw read in g_io_channel_read_to_end"
 msgstr "Raw-read in g_io_channel_read_to_end nicht möglich"
 
-#: glib/gkeyfile.c:791
+#: glib/gkeyfile.c:794
 msgid "Valid key file could not be found in search dirs"
 msgstr "Es wurde keine gültige Schlüsselwertedatei in den Suchordnern gefunden"
 
-#: glib/gkeyfile.c:828
+#: glib/gkeyfile.c:831
 msgid "Not a regular file"
 msgstr "Keine reguläre Datei"
 
-#: glib/gkeyfile.c:1283
+#: glib/gkeyfile.c:1289
 #, c-format
 msgid ""
 "Key file contains line “%s” which is not a key-value pair, group, or comment"
@@ -5139,45 +5197,45 @@ msgstr ""
 "Die Schlüsselwertedatei enthält die Zeile »%s«, welche kein zulässiges "
 "Schlüssel-Wert-Paar, keine Gruppe und kein Kommentar ist"
 
-#: glib/gkeyfile.c:1340
+#: glib/gkeyfile.c:1346
 #, c-format
 msgid "Invalid group name: %s"
 msgstr "Ungültiger Gruppenname: %s"
 
-#: glib/gkeyfile.c:1362
+#: glib/gkeyfile.c:1370
 msgid "Key file does not start with a group"
 msgstr "Die Schlüsselwertedatei beginnt nicht mit einer Gruppe"
 
-#: glib/gkeyfile.c:1388
+#: glib/gkeyfile.c:1394
 #, c-format
-msgid "Invalid key name: %s"
-msgstr "Ungültiger Schlüsselname: %s"
+msgid "Invalid key name: %.*s"
+msgstr "Ungültiger Schlüsselname: %.*s"
 
-#: glib/gkeyfile.c:1415
+#: glib/gkeyfile.c:1422
 #, c-format
 msgid "Key file contains unsupported encoding “%s”"
 msgstr "Die Schlüsselwertedatei enthält die nicht unterstützte Kodierung »%s«"
 
-#: glib/gkeyfile.c:1664 glib/gkeyfile.c:1837 glib/gkeyfile.c:3287
-#: glib/gkeyfile.c:3351 glib/gkeyfile.c:3481 glib/gkeyfile.c:3613
-#: glib/gkeyfile.c:3759 glib/gkeyfile.c:3994 glib/gkeyfile.c:4061
+#: glib/gkeyfile.c:1677 glib/gkeyfile.c:1850 glib/gkeyfile.c:3297
+#: glib/gkeyfile.c:3361 glib/gkeyfile.c:3491 glib/gkeyfile.c:3623
+#: glib/gkeyfile.c:3769 glib/gkeyfile.c:4004 glib/gkeyfile.c:4071
 #, c-format
 msgid "Key file does not have group “%s”"
 msgstr "Die Schlüsselwertedatei enthält nicht die Gruppe »%s«"
 
-#: glib/gkeyfile.c:1792
+#: glib/gkeyfile.c:1805
 #, c-format
 msgid "Key file does not have key “%s” in group “%s”"
 msgstr "Die Schlüsselwertedatei hat keinen Schlüssel »%s« in der Gruppe »%s«"
 
-#: glib/gkeyfile.c:1954 glib/gkeyfile.c:2070
+#: glib/gkeyfile.c:1967 glib/gkeyfile.c:2083
 #, c-format
 msgid "Key file contains key “%s” with value “%s” which is not UTF-8"
 msgstr ""
 "Die Schlüsselwertedatei enthält den Schlüssel »%s« mit dem Wert »%s«, der "
 "nicht in UTF-8 kodiert ist"
 
-#: glib/gkeyfile.c:1974 glib/gkeyfile.c:2090 glib/gkeyfile.c:2529
+#: glib/gkeyfile.c:1987 glib/gkeyfile.c:2103 glib/gkeyfile.c:2542
 #, c-format
 msgid ""
 "Key file contains key “%s” which has a value that cannot be interpreted."
@@ -5185,7 +5243,7 @@ msgstr ""
 "Die Schlüsselwertedatei enthält den Schlüssel »%s« mit einem Wert, der nicht "
 "interpretiert werden konnte."
 
-#: glib/gkeyfile.c:2747 glib/gkeyfile.c:3116
+#: glib/gkeyfile.c:2757 glib/gkeyfile.c:3126
 #, c-format
 msgid ""
 "Key file contains key “%s” in group “%s” which has a value that cannot be "
@@ -5194,39 +5252,39 @@ msgstr ""
 "Die Schlüsselwertedatei enthält den Schlüssel »%s« in der Gruppe »%s« mit "
 "einem Wert, der nicht interpretiert werden konnte."
 
-#: glib/gkeyfile.c:2825 glib/gkeyfile.c:2902
+#: glib/gkeyfile.c:2835 glib/gkeyfile.c:2912
 #, c-format
 msgid "Key “%s” in group “%s” has value “%s” where %s was expected"
 msgstr ""
 "Der Schlüssel »%s« in der Gruppe »%s« enthält den Wert »%s«, obwohl %s "
 "erwartet wurde"
 
-#: glib/gkeyfile.c:4304
+#: glib/gkeyfile.c:4324
 msgid "Key file contains escape character at end of line"
 msgstr "Die Schlüsselwertedatei enthält ein Escape-Zeichen am Zeilenende"
 
 # CHECK
-#: glib/gkeyfile.c:4326
+#: glib/gkeyfile.c:4346
 #, c-format
 msgid "Key file contains invalid escape sequence “%s”"
 msgstr "Die Schlüsselwertedatei enthält das ungültige Escape-Zeichen »%s«"
 
-#: glib/gkeyfile.c:4470
+#: glib/gkeyfile.c:4491
 #, c-format
 msgid "Value “%s” cannot be interpreted as a number."
 msgstr "Der Wert »%s« konnte nicht als Zahl interpretiert werden."
 
-#: glib/gkeyfile.c:4484
+#: glib/gkeyfile.c:4505
 #, c-format
 msgid "Integer value “%s” out of range"
 msgstr "Ganzzahliger Wert »%s« ist außerhalb des Wertebereiches"
 
-#: glib/gkeyfile.c:4517
+#: glib/gkeyfile.c:4538
 #, c-format
 msgid "Value “%s” cannot be interpreted as a float number."
 msgstr "Der Wert »%s« konnte nicht als Gleitkommazahl interpretiert werden."
 
-#: glib/gkeyfile.c:4556
+#: glib/gkeyfile.c:4577
 #, c-format
 msgid "Value “%s” cannot be interpreted as a boolean."
 msgstr ""
@@ -5528,7 +5586,7 @@ msgstr "Fehler beim Verarbeiten der Option: %s"
 msgid "Missing argument for %s"
 msgstr "Für %s wird ein Argument benötigt"
 
-#: glib/goption.c:2185
+#: glib/goption.c:2184
 #, c-format
 msgid "Unknown option %s"
 msgstr "Unbekannte Option %s"
@@ -5945,124 +6003,137 @@ msgstr "Text war leer (oder enthielt nur Leerraum)"
 msgid "Failed to read data from child process (%s)"
 msgstr "Daten vom Kindprozess konnten nicht gelesen werden (%s)"
 
-#: glib/gspawn.c:461
+#: glib/gspawn.c:462
 #, c-format
 msgid "Unexpected error in reading data from a child process (%s)"
 msgstr "Unerwarteter Fehler beim Lesen von Daten eines Kindprozesses (%s)"
 
-#: glib/gspawn.c:546
+#: glib/gspawn.c:547
 #, c-format
 msgid "Unexpected error in waitpid() (%s)"
 msgstr "Unerwarteter Fehler in waitpid() (%s)"
 
-#: glib/gspawn.c:1166 glib/gspawn-win32.c:1407
+#: glib/gspawn.c:1175 glib/gspawn-win32.c:1438
 #, c-format
 msgid "Child process exited with code %ld"
 msgstr "Der Kindprozess wurde mit Status %ld beendet"
 
-#: glib/gspawn.c:1174
+#: glib/gspawn.c:1183
 #, c-format
 msgid "Child process killed by signal %ld"
 msgstr "Der Kindprozess wurde mit Signal %ld beendet"
 
-#: glib/gspawn.c:1181
+#: glib/gspawn.c:1190
 #, c-format
 msgid "Child process stopped by signal %ld"
 msgstr "Der Kindprozess wurde mit Signal %ld beendet"
 
-#: glib/gspawn.c:1188
+#: glib/gspawn.c:1197
 #, c-format
 msgid "Child process exited abnormally"
 msgstr "Der Kindprozess wurde gewaltsam beendet"
 
-#: glib/gspawn.c:1864 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
+#: glib/gspawn.c:1890 glib/gspawn-win32.c:353 glib/gspawn-win32.c:361
 #, c-format
 msgid "Failed to read from child pipe (%s)"
 msgstr "Lesen aus Weiterleitung zum Kind (%s) gescheitert"
 
-#: glib/gspawn.c:2166
+#: glib/gspawn.c:2253
 #, c-format
 msgid "Failed to spawn child process “%s” (%s)"
 msgstr "Abspalten des Kindprozesses »%s« gescheitert (%s)"
 
-#: glib/gspawn.c:2283
+#: glib/gspawn.c:2370
 #, c-format
 msgid "Failed to fork (%s)"
 msgstr "Abspalten gescheitert (%s)"
 
-#: glib/gspawn.c:2443 glib/gspawn-win32.c:381
+#: glib/gspawn.c:2530 glib/gspawn-win32.c:384
 #, c-format
 msgid "Failed to change to directory “%s” (%s)"
 msgstr "In Ordner »%s« (%s) konnte nicht gewechselt werden"
 
-#: glib/gspawn.c:2453
+#: glib/gspawn.c:2540
 #, c-format
 msgid "Failed to execute child process “%s” (%s)"
 msgstr "Kindprozess »%s« konnte nicht ausgeführt werden (%s)"
 
-#: glib/gspawn.c:2463
+#: glib/gspawn.c:2550
 #, c-format
-msgid "Failed to redirect output or input of child process (%s)"
-msgstr "Umleiten der Ausgabe oder Eingabe des Kindprozesses (%s) gescheitert"
+msgid "Failed to open file to remap file descriptor (%s)"
+msgstr ""
+"Öffnen der Datei zur Neuzuweisung des Datei-Deskriptors ist fehlgeschlagen "
+"(%s)"
+
+#: glib/gspawn.c:2558
+#, c-format
+msgid "Failed to duplicate file descriptor for child process (%s)"
+msgstr ""
+"Duplizieren des Datei-Deskriptors für Kindprozess ist fehlgeschlagen (%s)"
 
-#: glib/gspawn.c:2472
+#: glib/gspawn.c:2567
 #, c-format
 msgid "Failed to fork child process (%s)"
 msgstr "Abspalten des Kindprozesses gescheitert (%s)"
 
-#: glib/gspawn.c:2480
+#: glib/gspawn.c:2575
 #, c-format
 msgid "Failed to close file descriptor for child process (%s)"
 msgstr ""
 "Schließen des Datei-Deskriptors des Kindprozesses ist fehlgeschlagen (%s)"
 
-#: glib/gspawn.c:2488
+#: glib/gspawn.c:2583
 #, c-format
 msgid "Unknown error executing child process “%s”"
 msgstr "Unbekannter Fehler beim Ausführen des Kindprozesses »%s«"
 
-#: glib/gspawn.c:2512
+#: glib/gspawn.c:2607
 #, c-format
 msgid "Failed to read enough data from child pid pipe (%s)"
 msgstr ""
 "Es konnten nicht genug Daten von Kind-Programmkennungsweiterleitung (%s) "
 "gelesen werden"
 
-#: glib/gspawn-win32.c:294
+#: glib/gspawn-win32.c:297
 msgid "Failed to read data from child process"
 msgstr "Daten konnten nicht vom Kindprozess gelesen werden"
 
-#: glib/gspawn-win32.c:387 glib/gspawn-win32.c:392 glib/gspawn-win32.c:511
+#: glib/gspawn-win32.c:390 glib/gspawn-win32.c:395 glib/gspawn-win32.c:521
 #, c-format
 msgid "Failed to execute child process (%s)"
 msgstr "Kindprozess konnte nicht ausgeführt werden (%s)"
 
-#: glib/gspawn-win32.c:461
+#: glib/gspawn-win32.c:400
+#, c-format
+msgid "Failed to dup() in child process (%s)"
+msgstr "dup() im Kindprozess ist fehlgeschlagen (%s)"
+
+#: glib/gspawn-win32.c:471
 #, c-format
 msgid "Invalid program name: %s"
 msgstr "Ungültiger Programmname: %s"
 
-#: glib/gspawn-win32.c:471 glib/gspawn-win32.c:779
+#: glib/gspawn-win32.c:481 glib/gspawn-win32.c:807
 #, c-format
 msgid "Invalid string in argument vector at %d: %s"
 msgstr "Ungültige Zeichenkette im Argumentsvektor bei %d: %s"
 
-#: glib/gspawn-win32.c:482 glib/gspawn-win32.c:794
+#: glib/gspawn-win32.c:492 glib/gspawn-win32.c:823
 #, c-format
 msgid "Invalid string in environment: %s"
 msgstr "Ungültige Zeichenkette in der Umgebung: %s"
 
-#: glib/gspawn-win32.c:775
+#: glib/gspawn-win32.c:803
 #, c-format
 msgid "Invalid working directory: %s"
 msgstr "Ungültiger Arbeitsordner: %s"
 
-#: glib/gspawn-win32.c:837
+#: glib/gspawn-win32.c:868
 #, c-format
 msgid "Failed to execute helper program (%s)"
 msgstr "Hilfsprogramm (%s) konnte nicht ausgeführt werden"
 
-#: glib/gspawn-win32.c:1064
+#: glib/gspawn-win32.c:1096
 msgid ""
 "Unexpected error in g_io_channel_win32_poll() reading data from a child "
 "process"
@@ -6070,21 +6141,21 @@ msgstr ""
 "Unerwarteter Fehler in g_io_channel_win32_poll() beim Lesen aus dem "
 "Kindprozess"
 
-#: glib/gstrfuncs.c:3345 glib/gstrfuncs.c:3447
+#: glib/gstrfuncs.c:3351 glib/gstrfuncs.c:3453
 msgid "Empty string is not a number"
 msgstr "Leere Zeichenkette ist keine Zahl"
 
-#: glib/gstrfuncs.c:3369
+#: glib/gstrfuncs.c:3375
 #, c-format
 msgid "“%s” is not a signed number"
 msgstr "»%s« ist keine vorzeichenbehaftete Zahl"
 
-#: glib/gstrfuncs.c:3379 glib/gstrfuncs.c:3483
+#: glib/gstrfuncs.c:3385 glib/gstrfuncs.c:3489
 #, c-format
 msgid "Number “%s” is out of bounds [%s, %s]"
 msgstr "Zahl »%s« ist außerhalb des zulässigen Bereichs [%s, %s]"
 
-#: glib/gstrfuncs.c:3473
+#: glib/gstrfuncs.c:3479
 #, c-format
 msgid "“%s” is not an unsigned number"
 msgstr "»%s« ist keine vorzeichenlose Zahl"
@@ -6145,175 +6216,175 @@ msgstr "Adresse ist nicht absolut und es wurde keine Basis-Adresse angegeben"
 msgid "Missing ‘=’ and parameter value"
 msgstr "»=« und Parameter-Wert fehlen"
 
-#: glib/gutf8.c:817
+#: glib/gutf8.c:832
 msgid "Failed to allocate memory"
 msgstr "Fehler beim Anfordern von Speicher"
 
-#: glib/gutf8.c:950
+#: glib/gutf8.c:965
 msgid "Character out of range for UTF-8"
 msgstr "Zeichen außerhalb des Bereiches für UTF-8"
 
-#: glib/gutf8.c:1051 glib/gutf8.c:1060 glib/gutf8.c:1190 glib/gutf8.c:1199
-#: glib/gutf8.c:1338 glib/gutf8.c:1435
+#: glib/gutf8.c:1067 glib/gutf8.c:1076 glib/gutf8.c:1206 glib/gutf8.c:1215
+#: glib/gutf8.c:1354 glib/gutf8.c:1451
 msgid "Invalid sequence in conversion input"
 msgstr "Ungültige Folge in Umwandlungseingabe"
 
-#: glib/gutf8.c:1349 glib/gutf8.c:1446
+#: glib/gutf8.c:1365 glib/gutf8.c:1462
 msgid "Character out of range for UTF-16"
 msgstr "Zeichen außerhalb des Bereiches für UTF-16"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2770
+#: glib/gutils.c:2849
 #, c-format
 msgid "%.1f kB"
 msgstr "%.1f kB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2772
+#: glib/gutils.c:2851
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2774
+#: glib/gutils.c:2853
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2776
+#: glib/gutils.c:2855
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2778
+#: glib/gutils.c:2857
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2780
+#: glib/gutils.c:2859
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2784
+#: glib/gutils.c:2863
 #, c-format
 msgid "%.1f KiB"
 msgstr "%.1f KiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2786
+#: glib/gutils.c:2865
 #, c-format
 msgid "%.1f MiB"
 msgstr "%.1f MiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2788
+#: glib/gutils.c:2867
 #, c-format
 msgid "%.1f GiB"
 msgstr "%.1f GiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2790
+#: glib/gutils.c:2869
 #, c-format
 msgid "%.1f TiB"
 msgstr "%.1f TiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2792
+#: glib/gutils.c:2871
 #, c-format
 msgid "%.1f PiB"
 msgstr "%.1f PiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2794
+#: glib/gutils.c:2873
 #, c-format
 msgid "%.1f EiB"
 msgstr "%.1f EiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2798
+#: glib/gutils.c:2877
 #, c-format
 msgid "%.1f kb"
 msgstr "%.1f kbit"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2800
+#: glib/gutils.c:2879
 #, c-format
 msgid "%.1f Mb"
 msgstr "%.1f Mbit"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2802
+#: glib/gutils.c:2881
 #, c-format
 msgid "%.1f Gb"
 msgstr "%.1f Gbit"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2804
+#: glib/gutils.c:2883
 #, c-format
 msgid "%.1f Tb"
 msgstr "%.1f Tbit"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2806
+#: glib/gutils.c:2885
 #, c-format
 msgid "%.1f Pb"
 msgstr "%.1f Pbit"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2808
+#: glib/gutils.c:2887
 #, c-format
 msgid "%.1f Eb"
 msgstr "%.1f Ebit"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2812
+#: glib/gutils.c:2891
 #, c-format
 msgid "%.1f Kib"
 msgstr "%.1f Kibit"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2814
+#: glib/gutils.c:2893
 #, c-format
 msgid "%.1f Mib"
 msgstr "%.1f Mibit"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2816
+#: glib/gutils.c:2895
 #, c-format
 msgid "%.1f Gib"
 msgstr "%.1f Gibit"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2818
+#: glib/gutils.c:2897
 #, c-format
 msgid "%.1f Tib"
 msgstr "%.1f Tibit"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2820
+#: glib/gutils.c:2899
 #, c-format
 msgid "%.1f Pib"
 msgstr "%.1f Pibit"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2822
+#: glib/gutils.c:2901
 #, c-format
 msgid "%.1f Eib"
 msgstr "%.1f Eibit"
 
-#: glib/gutils.c:2856 glib/gutils.c:2973
+#: glib/gutils.c:2935 glib/gutils.c:3052
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
 msgstr[0] "%u Byte"
 msgstr[1] "%u Bytes"
 
-#: glib/gutils.c:2860
+#: glib/gutils.c:2939
 #, c-format
 msgid "%u bit"
 msgid_plural "%u bits"
@@ -6321,7 +6392,7 @@ msgstr[0] "%u bit"
 msgstr[1] "%u bits"
 
 #. Translators: the %s in "%s bytes" will always be replaced by a number.
-#: glib/gutils.c:2927
+#: glib/gutils.c:3006
 #, c-format
 msgid "%s byte"
 msgid_plural "%s bytes"
@@ -6329,7 +6400,7 @@ msgstr[0] "%s Byte"
 msgstr[1] "%s Bytes"
 
 #. Translators: the %s in "%s bits" will always be replaced by a number.
-#: glib/gutils.c:2932
+#: glib/gutils.c:3011
 #, c-format
 msgid "%s bit"
 msgid_plural "%s bits"
@@ -6341,36 +6412,40 @@ msgstr[1] "%s bits"
 #. * compatibility.  Users will not see this string unless a program is using this deprecated function.
 #. * Please translate as literally as possible.
 #.
-#: glib/gutils.c:2986
+#: glib/gutils.c:3065
 #, c-format
 msgid "%.1f KB"
 msgstr "%.1f KB"
 
-#: glib/gutils.c:2991
+#: glib/gutils.c:3070
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
-#: glib/gutils.c:2996
+#: glib/gutils.c:3075
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
-#: glib/gutils.c:3001
+#: glib/gutils.c:3080
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
-#: glib/gutils.c:3006
+#: glib/gutils.c:3085
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
-#: glib/gutils.c:3011
+#: glib/gutils.c:3090
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
+#~ msgid "Failed to redirect output or input of child process (%s)"
+#~ msgstr ""
+#~ "Umleiten der Ausgabe oder Eingabe des Kindprozesses (%s) gescheitert"
+
 #~ msgid "Unable to load /var/lib/dbus/machine-id or /etc/machine-id: "
 #~ msgstr ""
 #~ "/var/lib/dbus/machine-id oder /etc/machine-id konnte nicht geladen "
index 288ef8a..95c45ba 100644 (file)
@@ -3,23 +3,23 @@
 # This file is distributed under the same licence as the GLIB package.
 # Gareth Owen <gowen72@yahoo.com> 2004
 # Philip Withnall <philip@tecnocode.co.uk>, 2010.
-# Bruce Cowan <bruce@bcowan.me.uk>, 2009-2021.
 # Zander Brown <zbrown@gnome.org>, 2019-2021.
+# Bruce Cowan <bruce@bcowan.me.uk>, 2009-2022.
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: glib\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/glib/issues\n"
-"POT-Creation-Date: 2021-07-19 15:52+0000\n"
-"PO-Revision-Date: 2021-08-29 16:22+0100\n"
-"Last-Translator: Zander Brown <zbrown@gnome.org>\n"
-"Language-Team: English - United Kingdom <en_GB@li.org>\n"
+"POT-Creation-Date: 2022-04-08 12:19+0000\n"
+"PO-Revision-Date: 2022-04-24 11:26+0100\n"
+"Last-Translator: Bruce Cowan <bruce@bcowan.me.uk>\n"
+"Language-Team: English - United Kingdom <en@li.org>\n"
 "Language: en_GB\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Gtranslator 40.0\n"
+"X-Generator: Gtranslator 42.0\n"
 "X-Project-Style: gnome\n"
 "X-DL-Team: en_GB\n"
 "X-DL-Module: glib\n"
@@ -27,6 +27,14 @@ msgstr ""
 "X-DL-Domain: po\n"
 "X-DL-State: Translating\n"
 
+#: gio/gappinfo.c:333
+msgid "Setting default applications not supported yet"
+msgstr "Setting default applications not supported yet"
+
+#: gio/gappinfo.c:366
+msgid "Setting application as last used for type not supported yet"
+msgstr "Setting application as last used for type not supported yet"
+
 #: gio/gapplication.c:500
 msgid "GApplication options"
 msgstr "GApplication options"
@@ -48,7 +56,7 @@ msgid "Replace the running instance"
 msgstr "Replace the running instance"
 
 #: gio/gapplication-tool.c:45 gio/gapplication-tool.c:46 gio/gio-tool.c:227
-#: gio/gresource-tool.c:494 gio/gsettings-tool.c:572
+#: gio/gresource-tool.c:494 gio/gsettings-tool.c:584
 msgid "Print help"
 msgstr "Print help"
 
@@ -60,7 +68,7 @@ msgstr "[COMMAND]"
 msgid "Print version"
 msgstr "Print version"
 
-#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:578
+#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:590
 msgid "Print version information and exit"
 msgstr "Print version information and exit"
 
@@ -121,8 +129,8 @@ msgstr "The command to print detailed help for"
 msgid "Application identifier in D-Bus format (eg: org.example.viewer)"
 msgstr "Application identifier in D-Bus format (eg: org.example.viewer)"
 
-#: gio/gapplication-tool.c:74 gio/glib-compile-resources.c:738
-#: gio/glib-compile-resources.c:744 gio/glib-compile-resources.c:772
+#: gio/gapplication-tool.c:74 gio/glib-compile-resources.c:820
+#: gio/glib-compile-resources.c:826 gio/glib-compile-resources.c:855
 #: gio/gresource-tool.c:501 gio/gresource-tool.c:567
 msgid "FILE"
 msgstr "FILE"
@@ -147,7 +155,7 @@ msgstr "PARAMETER"
 msgid "Optional parameter to the action invocation, in GVariant format"
 msgstr "Optional parameter to the action invocation, in GVariant format"
 
-#: gio/gapplication-tool.c:98 gio/gresource-tool.c:532 gio/gsettings-tool.c:664
+#: gio/gapplication-tool.c:98 gio/gresource-tool.c:532 gio/gsettings-tool.c:676
 #, c-format
 msgid ""
 "Unknown command %s\n"
@@ -161,7 +169,7 @@ msgid "Usage:\n"
 msgstr "Usage:\n"
 
 #: gio/gapplication-tool.c:116 gio/gresource-tool.c:557
-#: gio/gsettings-tool.c:699
+#: gio/gsettings-tool.c:711
 msgid "Arguments:\n"
 msgstr "Arguments:\n"
 
@@ -284,7 +292,7 @@ msgstr "Stream is already closed"
 msgid "Truncate not supported on base stream"
 msgstr "Truncate not supported on base stream"
 
-#: gio/gcancellable.c:319 gio/gdbusconnection.c:1872 gio/gdbusprivate.c:1416
+#: gio/gcancellable.c:319 gio/gdbusconnection.c:1857 gio/gdbusprivate.c:1418
 #: gio/gsimpleasyncresult.c:871 gio/gsimpleasyncresult.c:897
 #, c-format
 msgid "Operation was cancelled"
@@ -305,7 +313,7 @@ msgstr "Not enough space in destination"
 #: gio/gcharsetconverter.c:342 gio/gdatainputstream.c:848
 #: gio/gdatainputstream.c:1266 glib/gconvert.c:449 glib/gconvert.c:879
 #: glib/giochannel.c:1573 glib/giochannel.c:1615 glib/giochannel.c:2470
-#: glib/gutf8.c:875 glib/gutf8.c:1328
+#: glib/gutf8.c:890 glib/gutf8.c:1344
 msgid "Invalid byte sequence in conversion input"
 msgstr "Invalid byte sequence in conversion input"
 
@@ -315,7 +323,7 @@ msgstr "Invalid byte sequence in conversion input"
 msgid "Error during conversion: %s"
 msgstr "Error during conversion: %s"
 
-#: gio/gcharsetconverter.c:445 gio/gsocket.c:1143
+#: gio/gcharsetconverter.c:445 gio/gsocket.c:1147
 msgid "Cancellable initialization not supported"
 msgstr "Cancellable initialisation not supported"
 
@@ -329,37 +337,37 @@ msgstr "Conversion from character set “%s” to “%s” is not supported"
 msgid "Could not open converter from “%s” to “%s”"
 msgstr "Could not open converter from “%s” to “%s”"
 
-#: gio/gcontenttype.c:454
+#: gio/gcontenttype.c:470
 #, c-format
 msgid "%s type"
 msgstr "%s type"
 
-#: gio/gcontenttype-win32.c:192
+#: gio/gcontenttype-win32.c:196
 msgid "Unknown type"
 msgstr "Unknown type"
 
-#: gio/gcontenttype-win32.c:194
+#: gio/gcontenttype-win32.c:198
 #, c-format
 msgid "%s filetype"
 msgstr "%s filetype"
 
-#: gio/gcredentials.c:323
+#: gio/gcredentials.c:335
 msgid "GCredentials contains invalid data"
 msgstr "GCredentials contains invalid data"
 
-#: gio/gcredentials.c:383 gio/gcredentials.c:667
+#: gio/gcredentials.c:395 gio/gcredentials.c:686
 msgid "GCredentials is not implemented on this OS"
 msgstr "GCredentials is not implemented on this OS"
 
-#: gio/gcredentials.c:538 gio/gcredentials.c:556
+#: gio/gcredentials.c:550 gio/gcredentials.c:568
 msgid "There is no GCredentials support for your platform"
 msgstr "There is no GCredentials support for your platform"
 
-#: gio/gcredentials.c:607
+#: gio/gcredentials.c:626
 msgid "GCredentials does not contain a process ID on this OS"
 msgstr "GCredentials does not contain a process ID on this OS"
 
-#: gio/gcredentials.c:661
+#: gio/gcredentials.c:680
 msgid "Credentials spoofing is not possible on this OS"
 msgstr "Credentials spoofing is not possible on this OS"
 
@@ -367,17 +375,17 @@ msgstr "Credentials spoofing is not possible on this OS"
 msgid "Unexpected early end-of-stream"
 msgstr "Unexpected early end-of-stream"
 
-#: gio/gdbusaddress.c:159 gio/gdbusaddress.c:233 gio/gdbusaddress.c:322
+#: gio/gdbusaddress.c:162 gio/gdbusaddress.c:236 gio/gdbusaddress.c:325
 #, c-format
 msgid "Unsupported key “%s” in address entry “%s”"
 msgstr "Unsupported key “%s” in address entry “%s”"
 
-#: gio/gdbusaddress.c:172
+#: gio/gdbusaddress.c:175
 #, c-format
 msgid "Meaningless key/value pair combination in address entry “%s”"
 msgstr "Meaningless key/value pair combination in address entry “%s”"
 
-#: gio/gdbusaddress.c:181
+#: gio/gdbusaddress.c:184
 #, c-format
 msgid ""
 "Address “%s” is invalid (need exactly one of path, dir, tmpdir, or abstract "
@@ -386,28 +394,28 @@ msgstr ""
 "Address “%s” is invalid (need exactly one of path, dir, tmpdir, or abstract "
 "keys)"
 
-#: gio/gdbusaddress.c:248 gio/gdbusaddress.c:259 gio/gdbusaddress.c:274
-#: gio/gdbusaddress.c:337 gio/gdbusaddress.c:348
+#: gio/gdbusaddress.c:251 gio/gdbusaddress.c:262 gio/gdbusaddress.c:277
+#: gio/gdbusaddress.c:340 gio/gdbusaddress.c:351
 #, c-format
 msgid "Error in address “%s” — the “%s” attribute is malformed"
 msgstr "Error in address “%s” — the “%s” attribute is malformed"
 
-#: gio/gdbusaddress.c:418 gio/gdbusaddress.c:682
+#: gio/gdbusaddress.c:421 gio/gdbusaddress.c:680
 #, c-format
 msgid "Unknown or unsupported transport “%s” for address “%s”"
 msgstr "Unknown or unsupported transport “%s” for address “%s”"
 
-#: gio/gdbusaddress.c:462
+#: gio/gdbusaddress.c:465
 #, c-format
 msgid "Address element “%s” does not contain a colon (:)"
 msgstr "Address element “%s” does not contain a colon (:)"
 
-#: gio/gdbusaddress.c:471
+#: gio/gdbusaddress.c:474
 #, c-format
 msgid "Transport name in address element “%s” must not be empty"
 msgstr "Transport name in address element “%s” must not be empty"
 
-#: gio/gdbusaddress.c:492
+#: gio/gdbusaddress.c:495
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” does not contain an equal "
@@ -416,14 +424,14 @@ msgstr ""
 "Key/Value pair %d, “%s”, in address element “%s” does not contain an equal "
 "sign"
 
-#: gio/gdbusaddress.c:503
+#: gio/gdbusaddress.c:506
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” must not have an empty key"
 msgstr ""
 "Key/Value pair %d, “%s”, in address element “%s” must not have an empty key"
 
-#: gio/gdbusaddress.c:517
+#: gio/gdbusaddress.c:520
 #, c-format
 msgid ""
 "Error unescaping key or value in Key/Value pair %d, “%s”, in address element "
@@ -432,7 +440,7 @@ msgstr ""
 "Error unescaping key or value in Key/Value pair %d, “%s”, in address element "
 "“%s”"
 
-#: gio/gdbusaddress.c:589
+#: gio/gdbusaddress.c:588
 #, c-format
 msgid ""
 "Error in address “%s” — the unix transport requires exactly one of the keys "
@@ -441,75 +449,75 @@ msgstr ""
 "Error in address “%s” — the unix transport requires exactly one of the keys "
 "“path” or “abstract” to be set"
 
-#: gio/gdbusaddress.c:625
+#: gio/gdbusaddress.c:623
 #, c-format
 msgid "Error in address “%s” — the host attribute is missing or malformed"
 msgstr "Error in address “%s” — the host attribute is missing or malformed"
 
-#: gio/gdbusaddress.c:639
+#: gio/gdbusaddress.c:637
 #, c-format
 msgid "Error in address “%s” — the port attribute is missing or malformed"
 msgstr "Error in address “%s” — the port attribute is missing or malformed"
 
-#: gio/gdbusaddress.c:653
+#: gio/gdbusaddress.c:651
 #, c-format
 msgid "Error in address “%s” — the noncefile attribute is missing or malformed"
 msgstr ""
 "Error in address “%s” — the noncefile attribute is missing or malformed"
 
-#: gio/gdbusaddress.c:674
+#: gio/gdbusaddress.c:672
 msgid "Error auto-launching: "
 msgstr "Error auto-launching: "
 
-#: gio/gdbusaddress.c:727
+#: gio/gdbusaddress.c:725
 #, c-format
 msgid "Error opening nonce file “%s”: %s"
 msgstr "Error opening nonce file “%s”: %s"
 
-#: gio/gdbusaddress.c:746
+#: gio/gdbusaddress.c:744
 #, c-format
 msgid "Error reading from nonce file “%s”: %s"
 msgstr "Error reading from nonce file “%s”: %s"
 
-#: gio/gdbusaddress.c:755
+#: gio/gdbusaddress.c:753
 #, c-format
 msgid "Error reading from nonce file “%s”, expected 16 bytes, got %d"
 msgstr "Error reading from nonce file “%s”, expected 16 bytes, got %d"
 
-#: gio/gdbusaddress.c:773
+#: gio/gdbusaddress.c:771
 #, c-format
 msgid "Error writing contents of nonce file “%s” to stream:"
 msgstr "Error writing contents of nonce file “%s” to stream:"
 
-#: gio/gdbusaddress.c:988
+#: gio/gdbusaddress.c:986
 msgid "The given address is empty"
 msgstr "The given address is empty"
 
-#: gio/gdbusaddress.c:1101
+#: gio/gdbusaddress.c:1099
 #, c-format
-msgid "Cannot spawn a message bus when setuid"
-msgstr "Cannot spawn a message bus when setuid"
+msgid "Cannot spawn a message bus when AT_SECURE is set"
+msgstr "Cannot spawn a message bus when AT_SECURE is set"
 
-#: gio/gdbusaddress.c:1108
+#: gio/gdbusaddress.c:1106
 msgid "Cannot spawn a message bus without a machine-id: "
 msgstr "Cannot spawn a message bus without a machine-id: "
 
-#: gio/gdbusaddress.c:1115
+#: gio/gdbusaddress.c:1113
 #, c-format
 msgid "Cannot autolaunch D-Bus without X11 $DISPLAY"
 msgstr "Cannot autolaunch D-Bus without X11 $DISPLAY"
 
-#: gio/gdbusaddress.c:1157
+#: gio/gdbusaddress.c:1155
 #, c-format
 msgid "Error spawning command line “%s”: "
 msgstr "Error spawning command line “%s”: "
 
-#: gio/gdbusaddress.c:1226
+#: gio/gdbusaddress.c:1224
 #, c-format
 msgid "Cannot determine session bus address (not implemented for this OS)"
 msgstr "Cannot determine session bus address (not implemented for this OS)"
 
-#: gio/gdbusaddress.c:1397 gio/gdbusconnection.c:7261
+#: gio/gdbusaddress.c:1373 gio/gdbusconnection.c:7318
 #, c-format
 msgid ""
 "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
@@ -518,7 +526,7 @@ msgstr ""
 "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
 "— unknown value “%s”"
 
-#: gio/gdbusaddress.c:1406 gio/gdbusconnection.c:7270
+#: gio/gdbusaddress.c:1382 gio/gdbusconnection.c:7327
 msgid ""
 "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
 "variable is not set"
@@ -526,7 +534,7 @@ msgstr ""
 "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
 "variable is not set"
 
-#: gio/gdbusaddress.c:1416
+#: gio/gdbusaddress.c:1392
 #, c-format
 msgid "Unknown bus type %d"
 msgstr "Unknown bus type %d"
@@ -554,211 +562,210 @@ msgstr "User IDs must be the same for peer and server"
 msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
 msgstr "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
 
-#: gio/gdbusauthmechanismsha1.c:298
+#: gio/gdbusauthmechanismsha1.c:300
 #, c-format
 msgid "Error when getting information for directory “%s”: %s"
 msgstr "Error when getting information for directory “%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:313
+#: gio/gdbusauthmechanismsha1.c:315
 #, c-format
 msgid ""
 "Permissions on directory “%s” are malformed. Expected mode 0700, got 0%o"
 msgstr ""
 "Permissions on directory “%s” are malformed. Expected mode 0700, got 0%o"
 
-#: gio/gdbusauthmechanismsha1.c:346 gio/gdbusauthmechanismsha1.c:357
+#: gio/gdbusauthmechanismsha1.c:348 gio/gdbusauthmechanismsha1.c:359
 #, c-format
 msgid "Error creating directory “%s”: %s"
 msgstr "Error creating directory “%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:359 gio/gfile.c:1062 gio/gfile.c:1300
-#: gio/gfile.c:1438 gio/gfile.c:1676 gio/gfile.c:1731 gio/gfile.c:1789
-#: gio/gfile.c:1873 gio/gfile.c:1930 gio/gfile.c:1994 gio/gfile.c:2049
-#: gio/gfile.c:3754 gio/gfile.c:3809 gio/gfile.c:4102 gio/gfile.c:4572
-#: gio/gfile.c:4983 gio/gfile.c:5068 gio/gfile.c:5158 gio/gfile.c:5255
-#: gio/gfile.c:5342 gio/gfile.c:5443 gio/gfile.c:8153 gio/gfile.c:8243
-#: gio/gfile.c:8327 gio/win32/gwinhttpfile.c:453
+#: gio/gdbusauthmechanismsha1.c:361 gio/gfile.c:1080 gio/gfile.c:1318
+#: gio/gfile.c:1456 gio/gfile.c:1694 gio/gfile.c:1749 gio/gfile.c:1807
+#: gio/gfile.c:1891 gio/gfile.c:1948 gio/gfile.c:2012 gio/gfile.c:2067
+#: gio/gfile.c:3772 gio/gfile.c:3912 gio/gfile.c:4205 gio/gfile.c:4675
+#: gio/gfile.c:5086 gio/gfile.c:5171 gio/gfile.c:5261 gio/gfile.c:5358
+#: gio/gfile.c:5445 gio/gfile.c:5546 gio/gfile.c:8375 gio/gfile.c:8465
+#: gio/gfile.c:8549 gio/win32/gwinhttpfile.c:453
 msgid "Operation not supported"
 msgstr "Operation not supported"
 
-#: gio/gdbusauthmechanismsha1.c:402
+#: gio/gdbusauthmechanismsha1.c:404
 #, c-format
 msgid "Error opening keyring “%s” for reading: "
 msgstr "Error opening keyring “%s” for reading: "
 
-#: gio/gdbusauthmechanismsha1.c:425 gio/gdbusauthmechanismsha1.c:747
+#: gio/gdbusauthmechanismsha1.c:427 gio/gdbusauthmechanismsha1.c:769
 #, c-format
 msgid "Line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr "Line %d of the keyring at “%s” with content “%s” is malformed"
 
-#: gio/gdbusauthmechanismsha1.c:439 gio/gdbusauthmechanismsha1.c:761
+#: gio/gdbusauthmechanismsha1.c:441 gio/gdbusauthmechanismsha1.c:783
 #, c-format
 msgid ""
 "First token of line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr ""
 "First token of line %d of the keyring at “%s” with content “%s” is malformed"
 
-#: gio/gdbusauthmechanismsha1.c:453 gio/gdbusauthmechanismsha1.c:775
+#: gio/gdbusauthmechanismsha1.c:455 gio/gdbusauthmechanismsha1.c:797
 #, c-format
 msgid ""
 "Second token of line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr ""
 "Second token of line %d of the keyring at “%s” with content “%s” is malformed"
 
-#: gio/gdbusauthmechanismsha1.c:477
+#: gio/gdbusauthmechanismsha1.c:479
 #, c-format
 msgid "Didn’t find cookie with id %d in the keyring at “%s”"
 msgstr "Didn’t find cookie with id %d in the keyring at “%s”"
 
-#: gio/gdbusauthmechanismsha1.c:523
+#: gio/gdbusauthmechanismsha1.c:536
 #, c-format
 msgid "Error creating lock file “%s”: %s"
 msgstr "Error creating lock file “%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:587
+#: gio/gdbusauthmechanismsha1.c:609
 #, c-format
 msgid "Error deleting stale lock file “%s”: %s"
 msgstr "Error deleting stale lock file “%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:626
+#: gio/gdbusauthmechanismsha1.c:648
 #, c-format
 msgid "Error closing (unlinked) lock file “%s”: %s"
 msgstr "Error closing (unlinked) lock file “%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:637
+#: gio/gdbusauthmechanismsha1.c:659
 #, c-format
 msgid "Error unlinking lock file “%s”: %s"
 msgstr "Error unlinking lock file “%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:714
+#: gio/gdbusauthmechanismsha1.c:736
 #, c-format
 msgid "Error opening keyring “%s” for writing: "
 msgstr "Error opening keyring “%s” for writing: "
 
-#: gio/gdbusauthmechanismsha1.c:908
+#: gio/gdbusauthmechanismsha1.c:930
 #, c-format
 msgid "(Additionally, releasing the lock for “%s” also failed: %s) "
 msgstr "(Additionally, releasing the lock for “%s” also failed: %s) "
 
-#: gio/gdbusconnection.c:603 gio/gdbusconnection.c:2417
+#: gio/gdbusconnection.c:588 gio/gdbusconnection.c:2402
 msgid "The connection is closed"
 msgstr "The connection is closed"
 
-#: gio/gdbusconnection.c:1902
+#: gio/gdbusconnection.c:1887
 msgid "Timeout was reached"
 msgstr "Timeout was reached"
 
-#: gio/gdbusconnection.c:2540
+#: gio/gdbusconnection.c:2525
 msgid ""
 "Unsupported flags encountered when constructing a client-side connection"
 msgstr ""
 "Unsupported flags encountered when constructing a client-side connection"
 
-#: gio/gdbusconnection.c:4189 gio/gdbusconnection.c:4536
+#: gio/gdbusconnection.c:4253 gio/gdbusconnection.c:4607
 #, c-format
 msgid ""
 "No such interface “org.freedesktop.DBus.Properties” on object at path %s"
 msgstr ""
 "No such interface “org.freedesktop.DBus.Properties” on object at path %s"
 
-#: gio/gdbusconnection.c:4331
+#: gio/gdbusconnection.c:4398
 #, c-format
 msgid "No such property “%s”"
 msgstr "No such property “%s”"
 
-#: gio/gdbusconnection.c:4343
+#: gio/gdbusconnection.c:4410
 #, c-format
 msgid "Property “%s” is not readable"
 msgstr "Property “%s” is not readable"
 
-#: gio/gdbusconnection.c:4354
+#: gio/gdbusconnection.c:4421
 #, c-format
 msgid "Property “%s” is not writable"
 msgstr "Property “%s” is not writable"
 
-#: gio/gdbusconnection.c:4374
+#: gio/gdbusconnection.c:4441
 #, c-format
 msgid "Error setting property “%s”: Expected type “%s” but got “%s”"
 msgstr "Error setting property “%s”: Expected type “%s” but got “%s”"
 
-#: gio/gdbusconnection.c:4479 gio/gdbusconnection.c:4687
-#: gio/gdbusconnection.c:6689
+#: gio/gdbusconnection.c:4546 gio/gdbusconnection.c:4761
+#: gio/gdbusconnection.c:6744
 #, c-format
 msgid "No such interface “%s”"
 msgstr "No such interface “%s”"
 
-#: gio/gdbusconnection.c:4905 gio/gdbusconnection.c:7201
+#: gio/gdbusconnection.c:4983 gio/gdbusconnection.c:7258
 #, c-format
 msgid "No such interface “%s” on object at path %s"
 msgstr "No such interface “%s” on object at path %s"
 
-#: gio/gdbusconnection.c:5003
+#: gio/gdbusconnection.c:5084
 #, c-format
 msgid "No such method “%s”"
 msgstr "No such method “%s”"
 
-#: gio/gdbusconnection.c:5034
+#: gio/gdbusconnection.c:5115
 #, c-format
 msgid "Type of message, “%s”, does not match expected type “%s”"
 msgstr "Type of message, “%s”, does not match expected type “%s”"
 
-#: gio/gdbusconnection.c:5237
+#: gio/gdbusconnection.c:5318
 #, c-format
 msgid "An object is already exported for the interface %s at %s"
 msgstr "An object is already exported for the interface %s at %s"
 
-#: gio/gdbusconnection.c:5463
+#: gio/gdbusconnection.c:5545
 #, c-format
 msgid "Unable to retrieve property %s.%s"
 msgstr "Unable to retrieve property %s.%s"
 
-#: gio/gdbusconnection.c:5519
+#: gio/gdbusconnection.c:5601
 #, c-format
 msgid "Unable to set property %s.%s"
 msgstr "Unable to set property %s.%s"
 
-#: gio/gdbusconnection.c:5698
+#: gio/gdbusconnection.c:5780
 #, c-format
 msgid "Method “%s” returned type “%s”, but expected “%s”"
 msgstr "Method “%s” returned type “%s”, but expected “%s”"
 
-#: gio/gdbusconnection.c:6800
+#: gio/gdbusconnection.c:6856
 #, c-format
 msgid "Method “%s” on interface “%s” with signature “%s” does not exist"
 msgstr "Method “%s” on interface “%s” with signature “%s” does not exist"
 
-#: gio/gdbusconnection.c:6921
+#: gio/gdbusconnection.c:6977
 #, c-format
 msgid "A subtree is already exported for %s"
 msgstr "A subtree is already exported for %s"
 
-#: gio/gdbusconnection.c:7209
+#: gio/gdbusconnection.c:7266
 #, c-format
-#| msgid "Key file does not have group “%s”"
 msgid "Object does not exist at path “%s”"
 msgstr "Object does not exist at path “%s”"
 
-#: gio/gdbusmessage.c:1266
+#: gio/gdbusmessage.c:1301
 msgid "type is INVALID"
 msgstr "type is INVALID"
 
-#: gio/gdbusmessage.c:1277
+#: gio/gdbusmessage.c:1312
 msgid "METHOD_CALL message: PATH or MEMBER header field is missing"
 msgstr "METHOD_CALL message: PATH or MEMBER header field is missing"
 
-#: gio/gdbusmessage.c:1288
+#: gio/gdbusmessage.c:1323
 msgid "METHOD_RETURN message: REPLY_SERIAL header field is missing"
 msgstr "METHOD_RETURN message: REPLY_SERIAL header field is missing"
 
-#: gio/gdbusmessage.c:1300
+#: gio/gdbusmessage.c:1335
 msgid "ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing"
 msgstr "ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing"
 
-#: gio/gdbusmessage.c:1313
+#: gio/gdbusmessage.c:1348
 msgid "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing"
 msgstr "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing"
 
-#: gio/gdbusmessage.c:1321
+#: gio/gdbusmessage.c:1356
 msgid ""
 "SIGNAL message: The PATH header field is using the reserved value /org/"
 "freedesktop/DBus/Local"
@@ -766,7 +773,7 @@ msgstr ""
 "SIGNAL message: The PATH header field is using the reserved value /org/"
 "freedesktop/DBus/Local"
 
-#: gio/gdbusmessage.c:1329
+#: gio/gdbusmessage.c:1364
 msgid ""
 "SIGNAL message: The INTERFACE header field is using the reserved value org."
 "freedesktop.DBus.Local"
@@ -774,19 +781,19 @@ msgstr ""
 "SIGNAL message: The INTERFACE header field is using the reserved value org."
 "freedesktop.DBus.Local"
 
-#: gio/gdbusmessage.c:1377 gio/gdbusmessage.c:1437
+#: gio/gdbusmessage.c:1412 gio/gdbusmessage.c:1472
 #, c-format
 msgid "Wanted to read %lu byte but only got %lu"
 msgid_plural "Wanted to read %lu bytes but only got %lu"
 msgstr[0] "Wanted to read %lu byte but only got %lu"
 msgstr[1] "Wanted to read %lu bytes but only got %lu"
 
-#: gio/gdbusmessage.c:1391
+#: gio/gdbusmessage.c:1426
 #, c-format
 msgid "Expected NUL byte after the string “%s” but found byte %d"
 msgstr "Expected NUL byte after the string “%s” but found byte %d"
 
-#: gio/gdbusmessage.c:1410
+#: gio/gdbusmessage.c:1445
 #, c-format
 msgid ""
 "Expected valid UTF-8 string but found invalid bytes at byte offset %d "
@@ -795,21 +802,21 @@ msgstr ""
 "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”"
 
-#: gio/gdbusmessage.c:1474 gio/gdbusmessage.c:1722 gio/gdbusmessage.c:1911
+#: gio/gdbusmessage.c:1509 gio/gdbusmessage.c:1785 gio/gdbusmessage.c:1996
 msgid "Value nested too deeply"
 msgstr "Value nested too deeply"
 
-#: gio/gdbusmessage.c:1620
+#: gio/gdbusmessage.c:1677
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus object path"
 msgstr "Parsed value “%s” is not a valid D-Bus object path"
 
-#: gio/gdbusmessage.c:1642
+#: gio/gdbusmessage.c:1701
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature"
 msgstr "Parsed value “%s” is not a valid D-Bus signature"
 
-#: gio/gdbusmessage.c:1689
+#: gio/gdbusmessage.c:1752
 #, c-format
 msgid ""
 "Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB)."
@@ -820,7 +827,7 @@ msgstr[0] ""
 msgstr[1] ""
 "Encountered array of length %u bytes. Maximum length is 2<<26 bytes (64 MiB)."
 
-#: gio/gdbusmessage.c:1709
+#: gio/gdbusmessage.c:1772
 #, c-format
 msgid ""
 "Encountered array of type “a%c”, expected to have a length a multiple of %u "
@@ -829,19 +836,23 @@ msgstr ""
 "Encountered array of type “a%c”, expected to have a length a multiple of %u "
 "bytes, but found to be %u bytes in length"
 
-#: gio/gdbusmessage.c:1895
+#: gio/gdbusmessage.c:1926 gio/gdbusmessage.c:2645
+msgid "Empty structures (tuples) are not allowed in D-Bus"
+msgstr "Empty structures (tuples) are not allowed in D-Bus"
+
+#: gio/gdbusmessage.c:1980
 #, c-format
 msgid "Parsed value “%s” for variant is not a valid D-Bus signature"
 msgstr "Parsed value “%s” for variant is not a valid D-Bus signature"
 
-#: gio/gdbusmessage.c:1936
+#: gio/gdbusmessage.c:2021
 #, c-format
 msgid ""
 "Error deserializing GVariant with type string “%s” from the D-Bus wire format"
 msgstr ""
 "Error deserialising GVariant with type string “%s” from the D-Bus wire format"
 
-#: gio/gdbusmessage.c:2121
+#: gio/gdbusmessage.c:2206
 #, c-format
 msgid ""
 "Invalid endianness value. Expected 0x6c (“l”) or 0x42 (“B”) but found value "
@@ -850,60 +861,60 @@ msgstr ""
 "Invalid endianness value. Expected 0x6c (“l”) or 0x42 (“B”) but found value "
 "0x%02x"
 
-#: gio/gdbusmessage.c:2134
+#: gio/gdbusmessage.c:2225
 #, c-format
 msgid "Invalid major protocol version. Expected 1 but found %d"
 msgstr "Invalid major protocol version. Expected 1 but found %d"
 
-#: gio/gdbusmessage.c:2188 gio/gdbusmessage.c:2784
+#: gio/gdbusmessage.c:2283 gio/gdbusmessage.c:2881
 msgid "Signature header found but is not of type signature"
 msgstr "Signature header found but is not of type signature"
 
-#: gio/gdbusmessage.c:2200
+#: gio/gdbusmessage.c:2295
 #, c-format
 msgid "Signature header with signature “%s” found but message body is empty"
 msgstr "Signature header with signature “%s” found but message body is empty"
 
-#: gio/gdbusmessage.c:2215
+#: gio/gdbusmessage.c:2310
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature (for body)"
 msgstr "Parsed value “%s” is not a valid D-Bus signature (for body)"
 
-#: gio/gdbusmessage.c:2247
+#: gio/gdbusmessage.c:2342
 #, 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"
 msgstr[0] "No signature header in message but the message body is %u byte"
 msgstr[1] "No signature header in message but the message body is %u bytes"
 
-#: gio/gdbusmessage.c:2257
+#: gio/gdbusmessage.c:2352
 msgid "Cannot deserialize message: "
 msgstr "Cannot deserialise message: "
 
-#: gio/gdbusmessage.c:2601
+#: gio/gdbusmessage.c:2698
 #, c-format
 msgid ""
 "Error serializing GVariant with type string “%s” to the D-Bus wire format"
 msgstr ""
 "Error serialising GVariant with type string “%s” to the D-Bus wire format"
 
-#: gio/gdbusmessage.c:2738
+#: gio/gdbusmessage.c:2835
 #, c-format
 msgid ""
 "Number of file descriptors in message (%d) differs from header field (%d)"
 msgstr ""
 "Number of file descriptors in message (%d) differs from header field (%d)"
 
-#: gio/gdbusmessage.c:2746
+#: gio/gdbusmessage.c:2843
 msgid "Cannot serialize message: "
 msgstr "Cannot serialise message: "
 
-#: gio/gdbusmessage.c:2799
+#: gio/gdbusmessage.c:2896
 #, c-format
 msgid "Message body has signature “%s” but there is no signature header"
 msgstr "Message body has signature “%s” but there is no signature header"
 
-#: gio/gdbusmessage.c:2809
+#: gio/gdbusmessage.c:2906
 #, c-format
 msgid ""
 "Message body has type signature “%s” but signature in the header field is "
@@ -912,52 +923,52 @@ msgstr ""
 "Message body has type signature “%s” but signature in the header field is "
 "“%s”"
 
-#: gio/gdbusmessage.c:2825
+#: gio/gdbusmessage.c:2922
 #, c-format
 msgid "Message body is empty but signature in the header field is “(%s)”"
 msgstr "Message body is empty but signature in the header field is “(%s)”"
 
-#: gio/gdbusmessage.c:3380
+#: gio/gdbusmessage.c:3477
 #, c-format
 msgid "Error return with body of type “%s”"
 msgstr "Error return with body of type “%s”"
 
-#: gio/gdbusmessage.c:3388
+#: gio/gdbusmessage.c:3485
 msgid "Error return with empty body"
 msgstr "Error return with empty body"
 
-#: gio/gdbusprivate.c:2246
+#: gio/gdbusprivate.c:2185
 #, c-format
 msgid "(Type any character to close this window)\n"
 msgstr "(Type any character to close this window)\n"
 
-#: gio/gdbusprivate.c:2420
+#: gio/gdbusprivate.c:2371
 #, c-format
 msgid "Session dbus not running, and autolaunch failed"
 msgstr "Session dbus not running, and autolaunch failed"
 
-#: gio/gdbusprivate.c:2443
+#: gio/gdbusprivate.c:2394
 #, c-format
 msgid "Unable to get Hardware profile: %s"
 msgstr "Unable to get Hardware profile: %s"
 
 #. Translators: Both placeholders are file paths
-#: gio/gdbusprivate.c:2494
+#: gio/gdbusprivate.c:2445
 #, c-format
 msgid "Unable to load %s or %s: "
 msgstr "Unable to load %s or %s: "
 
-#: gio/gdbusproxy.c:1569
+#: gio/gdbusproxy.c:1573
 #, c-format
 msgid "Error calling StartServiceByName for %s: "
 msgstr "Error calling StartServiceByName for %s: "
 
-#: gio/gdbusproxy.c:1592
+#: gio/gdbusproxy.c:1596
 #, c-format
 msgid "Unexpected reply %d from StartServiceByName(\"%s\") method"
 msgstr "Unexpected reply %d from StartServiceByName(\"%s\") method"
 
-#: gio/gdbusproxy.c:2699 gio/gdbusproxy.c:2834
+#: gio/gdbusproxy.c:2707 gio/gdbusproxy.c:2842
 #, c-format
 msgid ""
 "Cannot invoke method; proxy is for the well-known name %s without an owner, "
@@ -1013,67 +1024,67 @@ msgstr ""
 "\n"
 "Use “%s COMMAND --help” to get help on each command.\n"
 
-#: gio/gdbus-tool.c:201 gio/gdbus-tool.c:273 gio/gdbus-tool.c:345
-#: gio/gdbus-tool.c:369 gio/gdbus-tool.c:859 gio/gdbus-tool.c:1236
-#: gio/gdbus-tool.c:1724
+#: gio/gdbus-tool.c:202 gio/gdbus-tool.c:274 gio/gdbus-tool.c:346
+#: gio/gdbus-tool.c:370 gio/gdbus-tool.c:860 gio/gdbus-tool.c:1245
+#: gio/gdbus-tool.c:1733
 #, c-format
 msgid "Error: %s\n"
 msgstr "Error: %s\n"
 
-#: gio/gdbus-tool.c:212 gio/gdbus-tool.c:286 gio/gdbus-tool.c:1740
+#: gio/gdbus-tool.c:213 gio/gdbus-tool.c:287 gio/gdbus-tool.c:1749
 #, c-format
 msgid "Error parsing introspection XML: %s\n"
 msgstr "Error parsing introspection XML: %s\n"
 
-#: gio/gdbus-tool.c:250
+#: gio/gdbus-tool.c:251
 #, c-format
 msgid "Error: %s is not a valid name\n"
 msgstr "Error: %s is not a valid name\n"
 
-#: gio/gdbus-tool.c:255 gio/gdbus-tool.c:745 gio/gdbus-tool.c:1060
-#: gio/gdbus-tool.c:1890 gio/gdbus-tool.c:2130
+#: gio/gdbus-tool.c:256 gio/gdbus-tool.c:746 gio/gdbus-tool.c:1064
+#: gio/gdbus-tool.c:1899 gio/gdbus-tool.c:2139
 #, c-format
 msgid "Error: %s is not a valid object path\n"
 msgstr "Error: %s is not a valid object path\n"
 
-#: gio/gdbus-tool.c:403
+#: gio/gdbus-tool.c:404
 msgid "Connect to the system bus"
 msgstr "Connect to the system bus"
 
-#: gio/gdbus-tool.c:404
+#: gio/gdbus-tool.c:405
 msgid "Connect to the session bus"
 msgstr "Connect to the session bus"
 
-#: gio/gdbus-tool.c:405
+#: gio/gdbus-tool.c:406
 msgid "Connect to given D-Bus address"
 msgstr "Connect to given D-Bus address"
 
-#: gio/gdbus-tool.c:415
+#: gio/gdbus-tool.c:416
 msgid "Connection Endpoint Options:"
 msgstr "Connection Endpoint Options:"
 
-#: gio/gdbus-tool.c:416
+#: gio/gdbus-tool.c:417
 msgid "Options specifying the connection endpoint"
 msgstr "Options specifying the connection endpoint"
 
-#: gio/gdbus-tool.c:439
+#: gio/gdbus-tool.c:440
 #, c-format
 msgid "No connection endpoint specified"
 msgstr "No connection endpoint specified"
 
-#: gio/gdbus-tool.c:449
+#: gio/gdbus-tool.c:450
 #, c-format
 msgid "Multiple connection endpoints specified"
 msgstr "Multiple connection endpoints specified"
 
-#: gio/gdbus-tool.c:522
+#: gio/gdbus-tool.c:523
 #, c-format
 msgid ""
 "Warning: According to introspection data, interface “%s” does not exist\n"
 msgstr ""
 "Warning: According to introspection data, interface “%s” does not exist\n"
 
-#: gio/gdbus-tool.c:531
+#: gio/gdbus-tool.c:532
 #, c-format
 msgid ""
 "Warning: According to introspection data, method “%s” does not exist on "
@@ -1082,160 +1093,164 @@ msgstr ""
 "Warning: According to introspection data, method “%s” does not exist on "
 "interface “%s”\n"
 
-#: gio/gdbus-tool.c:593
+#: gio/gdbus-tool.c:594
 msgid "Optional destination for signal (unique name)"
 msgstr "Optional destination for signal (unique name)"
 
-#: gio/gdbus-tool.c:594
+#: gio/gdbus-tool.c:595
 msgid "Object path to emit signal on"
 msgstr "Object path to emit signal on"
 
-#: gio/gdbus-tool.c:595
+#: gio/gdbus-tool.c:596
 msgid "Signal and interface name"
 msgstr "Signal and interface name"
 
-#: gio/gdbus-tool.c:628
+#: gio/gdbus-tool.c:629
 msgid "Emit a signal."
 msgstr "Emit a signal."
 
-#: gio/gdbus-tool.c:683 gio/gdbus-tool.c:997 gio/gdbus-tool.c:1827
-#: gio/gdbus-tool.c:2059 gio/gdbus-tool.c:2279
+#: gio/gdbus-tool.c:684 gio/gdbus-tool.c:1001 gio/gdbus-tool.c:1836
+#: gio/gdbus-tool.c:2068 gio/gdbus-tool.c:2288
 #, c-format
 msgid "Error connecting: %s\n"
 msgstr "Error connecting: %s\n"
 
-#: gio/gdbus-tool.c:703
+#: gio/gdbus-tool.c:704
 #, c-format
 msgid "Error: %s is not a valid unique bus name.\n"
 msgstr "Error: %s is not a valid unique bus name.\n"
 
-#: gio/gdbus-tool.c:722 gio/gdbus-tool.c:1040 gio/gdbus-tool.c:1870
+#: gio/gdbus-tool.c:723 gio/gdbus-tool.c:1044 gio/gdbus-tool.c:1879
 msgid "Error: Object path is not specified\n"
 msgstr "Error: Object path is not specified\n"
 
-#: gio/gdbus-tool.c:765
+#: gio/gdbus-tool.c:766
 msgid "Error: Signal name is not specified\n"
 msgstr "Error: Signal name is not specified\n"
 
-#: gio/gdbus-tool.c:779
+#: gio/gdbus-tool.c:780
 #, c-format
 msgid "Error: Signal name “%s” is invalid\n"
 msgstr "Error: Signal name “%s” is invalid\n"
 
-#: gio/gdbus-tool.c:791
+#: gio/gdbus-tool.c:792
 #, c-format
 msgid "Error: %s is not a valid interface name\n"
 msgstr "Error: %s is not a valid interface name\n"
 
-#: gio/gdbus-tool.c:797
+#: gio/gdbus-tool.c:798
 #, c-format
 msgid "Error: %s is not a valid member name\n"
 msgstr "Error: %s is not a valid member name\n"
 
 #. Use the original non-"parse-me-harder" error
-#: gio/gdbus-tool.c:834 gio/gdbus-tool.c:1172
+#: gio/gdbus-tool.c:835 gio/gdbus-tool.c:1176
 #, c-format
 msgid "Error parsing parameter %d: %s\n"
 msgstr "Error parsing parameter %d: %s\n"
 
-#: gio/gdbus-tool.c:866
+#: gio/gdbus-tool.c:867
 #, c-format
 msgid "Error flushing connection: %s\n"
 msgstr "Error flushing connection: %s\n"
 
-#: gio/gdbus-tool.c:893
+#: gio/gdbus-tool.c:895
 msgid "Destination name to invoke method on"
 msgstr "Destination name to invoke method on"
 
-#: gio/gdbus-tool.c:894
+#: gio/gdbus-tool.c:896
 msgid "Object path to invoke method on"
 msgstr "Object path to invoke method on"
 
-#: gio/gdbus-tool.c:895
+#: gio/gdbus-tool.c:897
 msgid "Method and interface name"
 msgstr "Method and interface name"
 
-#: gio/gdbus-tool.c:896
+#: gio/gdbus-tool.c:898
 msgid "Timeout in seconds"
 msgstr "Timeout in seconds"
 
-#: gio/gdbus-tool.c:942
+#: gio/gdbus-tool.c:899
+msgid "Allow interactive authorization"
+msgstr "Allow interactive authorisation"
+
+#: gio/gdbus-tool.c:946
 msgid "Invoke a method on a remote object."
 msgstr "Invoke a method on a remote object."
 
-#: gio/gdbus-tool.c:1014 gio/gdbus-tool.c:1844 gio/gdbus-tool.c:2084
+#: gio/gdbus-tool.c:1018 gio/gdbus-tool.c:1853 gio/gdbus-tool.c:2093
 msgid "Error: Destination is not specified\n"
 msgstr "Error: Destination is not specified\n"
 
-#: gio/gdbus-tool.c:1025 gio/gdbus-tool.c:1861 gio/gdbus-tool.c:2095
+#: gio/gdbus-tool.c:1029 gio/gdbus-tool.c:1870 gio/gdbus-tool.c:2104
 #, c-format
 msgid "Error: %s is not a valid bus name\n"
 msgstr "Error: %s is not a valid bus name\n"
 
-#: gio/gdbus-tool.c:1075
+#: gio/gdbus-tool.c:1079
 msgid "Error: Method name is not specified\n"
 msgstr "Error: Method name is not specified\n"
 
-#: gio/gdbus-tool.c:1086
+#: gio/gdbus-tool.c:1090
 #, c-format
 msgid "Error: Method name “%s” is invalid\n"
 msgstr "Error: Method name “%s” is invalid\n"
 
-#: gio/gdbus-tool.c:1164
+#: gio/gdbus-tool.c:1168
 #, c-format
 msgid "Error parsing parameter %d of type “%s”: %s\n"
 msgstr "Error parsing parameter %d of type “%s”: %s\n"
 
-#: gio/gdbus-tool.c:1190
+#: gio/gdbus-tool.c:1194
 #, c-format
 msgid "Error adding handle %d: %s\n"
 msgstr "Error adding handle %d: %s\n"
 
-#: gio/gdbus-tool.c:1686
+#: gio/gdbus-tool.c:1695
 msgid "Destination name to introspect"
 msgstr "Destination name to introspect"
 
-#: gio/gdbus-tool.c:1687
+#: gio/gdbus-tool.c:1696
 msgid "Object path to introspect"
 msgstr "Object path to introspect"
 
-#: gio/gdbus-tool.c:1688
+#: gio/gdbus-tool.c:1697
 msgid "Print XML"
 msgstr "Print XML"
 
-#: gio/gdbus-tool.c:1689
+#: gio/gdbus-tool.c:1698
 msgid "Introspect children"
 msgstr "Introspect children"
 
-#: gio/gdbus-tool.c:1690
+#: gio/gdbus-tool.c:1699
 msgid "Only print properties"
 msgstr "Only print properties"
 
-#: gio/gdbus-tool.c:1779
+#: gio/gdbus-tool.c:1788
 msgid "Introspect a remote object."
 msgstr "Introspect a remote object."
 
-#: gio/gdbus-tool.c:1985
+#: gio/gdbus-tool.c:1994
 msgid "Destination name to monitor"
 msgstr "Destination name to monitor"
 
-#: gio/gdbus-tool.c:1986
+#: gio/gdbus-tool.c:1995
 msgid "Object path to monitor"
 msgstr "Object path to monitor"
 
-#: gio/gdbus-tool.c:2011
+#: gio/gdbus-tool.c:2020
 msgid "Monitor a remote object."
 msgstr "Monitor a remote object."
 
-#: gio/gdbus-tool.c:2069
+#: gio/gdbus-tool.c:2078
 msgid "Error: can’t monitor a non-message-bus connection\n"
 msgstr "Error: can’t monitor a non-message-bus connection\n"
 
-#: gio/gdbus-tool.c:2193
+#: gio/gdbus-tool.c:2202
 msgid "Service to activate before waiting for the other one (well-known name)"
 msgstr "Service to activate before waiting for the other one (well-known name)"
 
-#: gio/gdbus-tool.c:2196
+#: gio/gdbus-tool.c:2205
 msgid ""
 "Timeout to wait for before exiting with an error (seconds); 0 for no timeout "
 "(default)"
@@ -1243,63 +1258,68 @@ msgstr ""
 "Timeout to wait for before exiting with an error (seconds); 0 for no timeout "
 "(default)"
 
-#: gio/gdbus-tool.c:2244
+#: gio/gdbus-tool.c:2253
 msgid "[OPTION…] BUS-NAME"
 msgstr "[OPTION…] BUS-NAME"
 
-#: gio/gdbus-tool.c:2245
+#: gio/gdbus-tool.c:2254
 msgid "Wait for a bus name to appear."
 msgstr "Wait for a bus name to appear."
 
-#: gio/gdbus-tool.c:2321
+#: gio/gdbus-tool.c:2330
 msgid "Error: A service to activate for must be specified.\n"
 msgstr "Error: A service to activate for must be specified.\n"
 
-#: gio/gdbus-tool.c:2326
+#: gio/gdbus-tool.c:2335
 msgid "Error: A service to wait for must be specified.\n"
 msgstr "Error: A service to wait for must be specified.\n"
 
-#: gio/gdbus-tool.c:2331
+#: gio/gdbus-tool.c:2340
 msgid "Error: Too many arguments.\n"
 msgstr "Error: Too many arguments.\n"
 
-#: gio/gdbus-tool.c:2339 gio/gdbus-tool.c:2346
+#: gio/gdbus-tool.c:2348 gio/gdbus-tool.c:2355
 #, c-format
 msgid "Error: %s is not a valid well-known bus name.\n"
 msgstr "Error: %s is not a valid well-known bus name.\n"
 
-#: gio/gdesktopappinfo.c:2106 gio/gdesktopappinfo.c:4932
+#: gio/gdebugcontrollerdbus.c:358
+#, c-format
+msgid "Not authorized to change debug settings"
+msgstr "Not authorised to change debug settings"
+
+#: gio/gdesktopappinfo.c:2178 gio/gdesktopappinfo.c:5105
 msgid "Unnamed"
 msgstr "Unnamed"
 
-#: gio/gdesktopappinfo.c:2516
+#: gio/gdesktopappinfo.c:2588
 msgid "Desktop file didn’t specify Exec field"
 msgstr "Desktop file didn’t specify Exec field"
 
-#: gio/gdesktopappinfo.c:2801
+#: gio/gdesktopappinfo.c:2896
 msgid "Unable to find terminal required for application"
 msgstr "Unable to find terminal required for application"
 
-#: gio/gdesktopappinfo.c:3452
+#: gio/gdesktopappinfo.c:3625
 #, c-format
 msgid "Can’t create user application configuration folder %s: %s"
 msgstr "Can’t create user application configuration folder %s: %s"
 
-#: gio/gdesktopappinfo.c:3456
+#: gio/gdesktopappinfo.c:3629
 #, c-format
 msgid "Can’t create user MIME configuration folder %s: %s"
 msgstr "Can’t create user MIME configuration folder %s: %s"
 
-#: gio/gdesktopappinfo.c:3698 gio/gdesktopappinfo.c:3722
+#: gio/gdesktopappinfo.c:3871 gio/gdesktopappinfo.c:3895
 msgid "Application information lacks an identifier"
 msgstr "Application information lacks an identifier"
 
-#: gio/gdesktopappinfo.c:3958
+#: gio/gdesktopappinfo.c:4131
 #, c-format
 msgid "Can’t create user desktop file %s"
 msgstr "Can’t create user desktop file %s"
 
-#: gio/gdesktopappinfo.c:4094
+#: gio/gdesktopappinfo.c:4267
 #, c-format
 msgid "Custom definition for %s"
 msgstr "Custom definition for %s"
@@ -1327,7 +1347,7 @@ msgstr "drive doesn’t implement start"
 msgid "drive doesn’t implement stop"
 msgstr "drive doesn’t implement stop"
 
-#: gio/gdtlsconnection.c:1153 gio/gtlsconnection.c:920
+#: gio/gdtlsconnection.c:1186 gio/gtlsconnection.c:955
 msgid "TLS backend does not implement TLS binding retrieval"
 msgstr "TLS backend does not implement TLS binding retrieval"
 
@@ -1368,73 +1388,73 @@ msgstr "Expected a GEmblem for GEmblemedIcon"
 #. * trying to find the enclosing (user visible)
 #. * mount of a file, but none exists.
 #.
-#: gio/gfile.c:1561
+#: gio/gfile.c:1579
 msgid "Containing mount does not exist"
 msgstr "Containing mount does not exist"
 
-#: gio/gfile.c:2608 gio/glocalfile.c:2477
+#: gio/gfile.c:2626 gio/glocalfile.c:2486
 msgid "Can’t copy over directory"
 msgstr "Can’t copy over directory"
 
-#: gio/gfile.c:2668
+#: gio/gfile.c:2686
 msgid "Can’t copy directory over directory"
 msgstr "Can’t copy directory over directory"
 
-#: gio/gfile.c:2676
+#: gio/gfile.c:2694
 msgid "Target file exists"
 msgstr "Target file exists"
 
-#: gio/gfile.c:2695
+#: gio/gfile.c:2713
 msgid "Can’t recursively copy directory"
 msgstr "Can’t recursively copy directory"
 
-#: gio/gfile.c:2996
+#: gio/gfile.c:3014
 msgid "Splice not supported"
 msgstr "Splice not supported"
 
-#: gio/gfile.c:3000
+#: gio/gfile.c:3018
 #, c-format
 msgid "Error splicing file: %s"
 msgstr "Error splicing file: %s"
 
-#: gio/gfile.c:3152
+#: gio/gfile.c:3170
 msgid "Copy (reflink/clone) between mounts is not supported"
 msgstr "Copy (reflink/clone) between mounts is not supported"
 
-#: gio/gfile.c:3156
+#: gio/gfile.c:3174
 msgid "Copy (reflink/clone) is not supported or invalid"
 msgstr "Copy (reflink/clone) is not supported or invalid"
 
-#: gio/gfile.c:3161
+#: gio/gfile.c:3179
 msgid "Copy (reflink/clone) is not supported or didn’t work"
 msgstr "Copy (reflink/clone) is not supported or didn’t work"
 
-#: gio/gfile.c:3226
+#: gio/gfile.c:3244
 msgid "Can’t copy special file"
 msgstr "Can’t copy special file"
 
-#: gio/gfile.c:4035
+#: gio/gfile.c:4138
 msgid "Invalid symlink value given"
 msgstr "Invalid symlink value given"
 
-#: gio/gfile.c:4045 glib/gfileutils.c:2354
+#: gio/gfile.c:4148 glib/gfileutils.c:2333
 msgid "Symbolic links not supported"
 msgstr "Symbolic links not supported"
 
-#: gio/gfile.c:4213
+#: gio/gfile.c:4316
 msgid "Trash not supported"
 msgstr "Wastebasket not supported"
 
-#: gio/gfile.c:4325
+#: gio/gfile.c:4428
 #, c-format
 msgid "File names cannot contain “%c”"
 msgstr "File names cannot contain “%c”"
 
-#: gio/gfile.c:6806 gio/gvolume.c:364
+#: gio/gfile.c:7028 gio/gvolume.c:364
 msgid "volume doesn’t implement mount"
 msgstr "volume doesn’t implement mount"
 
-#: gio/gfile.c:6920 gio/gfile.c:6968
+#: gio/gfile.c:7142 gio/gfile.c:7190
 msgid "No application is registered as handling this file"
 msgstr "No application is registered as handling this file"
 
@@ -1479,7 +1499,7 @@ msgstr "Truncate not allowed on input stream"
 msgid "Truncate not supported on stream"
 msgstr "Truncate not supported on stream"
 
-#: gio/ghttpproxy.c:91 gio/gresolver.c:443 gio/gresolver.c:596
+#: gio/ghttpproxy.c:91 gio/gresolver.c:458 gio/gresolver.c:611
 #: glib/gconvert.c:1825
 msgid "Invalid hostname"
 msgstr "Invalid hostname"
@@ -1566,7 +1586,7 @@ msgid "Could not parse “%s” as IP address mask"
 msgstr "Could not parse “%s” as IP address mask"
 
 #: gio/ginetsocketaddress.c:203 gio/ginetsocketaddress.c:220
-#: gio/gnativesocketaddress.c:109 gio/gunixsocketaddress.c:221
+#: gio/gnativesocketaddress.c:109 gio/gunixsocketaddress.c:228
 msgid "Not enough space for socket address"
 msgstr "Not enough space for socket address"
 
@@ -2399,15 +2419,15 @@ msgstr "Error compressing file %s"
 msgid "text may not appear inside <%s>"
 msgstr "text may not appear inside <%s>"
 
-#: gio/glib-compile-resources.c:737 gio/glib-compile-schemas.c:2172
+#: gio/glib-compile-resources.c:819 gio/glib-compile-schemas.c:2172
 msgid "Show program version and exit"
 msgstr "Show program version and exit"
 
-#: gio/glib-compile-resources.c:738
+#: gio/glib-compile-resources.c:820
 msgid "Name of the output file"
 msgstr "Name of the output file"
 
-#: gio/glib-compile-resources.c:739
+#: gio/glib-compile-resources.c:821
 msgid ""
 "The directories to load files referenced in FILE from (default: current "
 "directory)"
@@ -2415,46 +2435,46 @@ msgstr ""
 "The directories to load files referenced in FILE from (default: current "
 "directory)"
 
-#: gio/glib-compile-resources.c:739 gio/glib-compile-schemas.c:2173
+#: gio/glib-compile-resources.c:821 gio/glib-compile-schemas.c:2173
 #: gio/glib-compile-schemas.c:2202
 msgid "DIRECTORY"
 msgstr "DIRECTORY"
 
-#: gio/glib-compile-resources.c:740
+#: gio/glib-compile-resources.c:822
 msgid ""
 "Generate output in the format selected for by the target filename extension"
 msgstr ""
 "Generate output in the format selected for by the target filename extension"
 
-#: gio/glib-compile-resources.c:741
+#: gio/glib-compile-resources.c:823
 msgid "Generate source header"
 msgstr "Generate source header"
 
-#: gio/glib-compile-resources.c:742
+#: gio/glib-compile-resources.c:824
 msgid "Generate source code used to link in the resource file into your code"
 msgstr "Generate source code used to link in the resource file into your code"
 
-#: gio/glib-compile-resources.c:743
+#: gio/glib-compile-resources.c:825
 msgid "Generate dependency list"
 msgstr "Generate dependency list"
 
-#: gio/glib-compile-resources.c:744
+#: gio/glib-compile-resources.c:826
 msgid "Name of the dependency file to generate"
 msgstr "Name of the dependency file to generate"
 
-#: gio/glib-compile-resources.c:745
+#: gio/glib-compile-resources.c:827
 msgid "Include phony targets in the generated dependency file"
 msgstr "Include phony targets in the generated dependency file"
 
-#: gio/glib-compile-resources.c:746
+#: gio/glib-compile-resources.c:828
 msgid "Don’t automatically create and register resource"
 msgstr "Don’t automatically create and register resource"
 
-#: gio/glib-compile-resources.c:747
+#: gio/glib-compile-resources.c:829
 msgid "Don’t export functions; declare them G_GNUC_INTERNAL"
 msgstr "Don’t export functions; declare them G_GNUC_INTERNAL"
 
-#: gio/glib-compile-resources.c:748
+#: gio/glib-compile-resources.c:830
 msgid ""
 "Don’t embed resource data in the C file; assume it's linked externally "
 "instead"
@@ -2462,11 +2482,15 @@ msgstr ""
 "Don’t embed resource data in the C file; assume it’s linked externally "
 "instead"
 
-#: gio/glib-compile-resources.c:749
+#: gio/glib-compile-resources.c:831
 msgid "C identifier name used for the generated source code"
 msgstr "C identifier name used for the generated source code"
 
-#: gio/glib-compile-resources.c:775
+#: gio/glib-compile-resources.c:832
+msgid "The target C compiler (default: the CC environment variable)"
+msgstr "The target C compiler (default: the CC environment variable)"
+
+#: gio/glib-compile-resources.c:858
 msgid ""
 "Compile a resource specification into a resource file.\n"
 "Resource specification files have the extension .gresource.xml,\n"
@@ -2476,7 +2500,7 @@ msgstr ""
 "Resource specification files have the extension .gresource.xml,\n"
 "and the resource file have the extension called .gresource."
 
-#: gio/glib-compile-resources.c:797
+#: gio/glib-compile-resources.c:880
 msgid "You should give exactly one file name\n"
 msgstr "You should give exactly one file name\n"
 
@@ -2984,8 +3008,8 @@ msgstr "Error renaming file %s: %s"
 msgid "Can’t rename file, filename already exists"
 msgstr "Can’t rename file, filename already exists"
 
-#: gio/glocalfile.c:1184 gio/glocalfile.c:2371 gio/glocalfile.c:2399
-#: gio/glocalfile.c:2538 gio/glocalfileoutputstream.c:656
+#: gio/glocalfile.c:1184 gio/glocalfile.c:2380 gio/glocalfile.c:2408
+#: gio/glocalfile.c:2547 gio/glocalfileoutputstream.c:656
 msgid "Invalid filename"
 msgstr "Invalid filename"
 
@@ -2999,91 +3023,91 @@ msgstr "Error opening file %s: %s"
 msgid "Error removing file %s: %s"
 msgstr "Error removing file %s: %s"
 
-#: gio/glocalfile.c:1982 gio/glocalfile.c:1993
+#: gio/glocalfile.c:1982 gio/glocalfile.c:1993 gio/glocalfile.c:2020
 #, c-format
 msgid "Error trashing file %s: %s"
 msgstr "Error moving file %s to the wastebasket: %s"
 
-#: gio/glocalfile.c:2031
+#: gio/glocalfile.c:2040
 #, c-format
 msgid "Unable to create trash directory %s: %s"
 msgstr "Unable to create the wastebasket directory %s: %s"
 
-#: gio/glocalfile.c:2052
+#: gio/glocalfile.c:2061
 #, c-format
 msgid "Unable to find toplevel directory to trash %s"
 msgstr "Unable to find toplevel directory to move %s to the wastebasket"
 
-#: gio/glocalfile.c:2060
+#: gio/glocalfile.c:2069
 #, c-format
 msgid "Trashing on system internal mounts is not supported"
 msgstr "Can’t move to wastebasket on system internal mounts"
 
-#: gio/glocalfile.c:2146 gio/glocalfile.c:2174
+#: gio/glocalfile.c:2155 gio/glocalfile.c:2183
 #, c-format
 msgid "Unable to find or create trash directory %s to trash %s"
 msgstr "Unable to find or create wastebasket directory %s to move %s to"
 
-#: gio/glocalfile.c:2220
+#: gio/glocalfile.c:2229
 #, c-format
 msgid "Unable to create trashing info file for %s: %s"
 msgstr "Unable to create wastebasket info file for %s: %s"
 
-#: gio/glocalfile.c:2282
+#: gio/glocalfile.c:2291
 #, c-format
 msgid "Unable to trash file %s across filesystem boundaries"
 msgstr "Unable to move %s to wastebasket across filesystem boundaries"
 
-#: gio/glocalfile.c:2286 gio/glocalfile.c:2342
+#: gio/glocalfile.c:2295 gio/glocalfile.c:2351
 #, c-format
 msgid "Unable to trash file %s: %s"
 msgstr "Unable to move file %s to the wastebasket: %s"
 
-#: gio/glocalfile.c:2348
+#: gio/glocalfile.c:2357
 #, c-format
 msgid "Unable to trash file %s"
 msgstr "Unable to move file %s to the wastebasket"
 
-#: gio/glocalfile.c:2374
+#: gio/glocalfile.c:2383
 #, c-format
 msgid "Error creating directory %s: %s"
 msgstr "Error creating directory %s: %s"
 
-#: gio/glocalfile.c:2403
+#: gio/glocalfile.c:2412
 #, c-format
 msgid "Filesystem does not support symbolic links"
 msgstr "Filesystem does not support symbolic links"
 
-#: gio/glocalfile.c:2406
+#: gio/glocalfile.c:2415
 #, c-format
 msgid "Error making symbolic link %s: %s"
 msgstr "Error making symbolic link %s: %s"
 
-#: gio/glocalfile.c:2449 gio/glocalfile.c:2484 gio/glocalfile.c:2541
+#: gio/glocalfile.c:2458 gio/glocalfile.c:2493 gio/glocalfile.c:2550
 #, c-format
 msgid "Error moving file %s: %s"
 msgstr "Error moving file %s: %s"
 
-#: gio/glocalfile.c:2472
+#: gio/glocalfile.c:2481
 msgid "Can’t move directory over directory"
 msgstr "Can’t move directory over directory"
 
-#: gio/glocalfile.c:2498 gio/glocalfileoutputstream.c:1108
+#: gio/glocalfile.c:2507 gio/glocalfileoutputstream.c:1108
 #: gio/glocalfileoutputstream.c:1122 gio/glocalfileoutputstream.c:1137
 #: gio/glocalfileoutputstream.c:1154 gio/glocalfileoutputstream.c:1168
 msgid "Backup file creation failed"
 msgstr "Backup file creation failed"
 
-#: gio/glocalfile.c:2517
+#: gio/glocalfile.c:2526
 #, c-format
 msgid "Error removing target file: %s"
 msgstr "Error removing target file: %s"
 
-#: gio/glocalfile.c:2531
+#: gio/glocalfile.c:2540
 msgid "Move between mounts not supported"
 msgstr "Move between mounts not supported"
 
-#: gio/glocalfile.c:2705
+#: gio/glocalfile.c:2714
 #, c-format
 msgid "Could not determine the disk usage of %s: %s"
 msgstr "Could not determine the disk usage of %s: %s"
@@ -3260,13 +3284,13 @@ msgstr "Error creating backup copy: %s"
 msgid "Error renaming temporary file: %s"
 msgstr "Error renaming temporary file: %s"
 
-#: gio/glocalfileoutputstream.c:609 gio/glocalfileoutputstream.c:1237
+#: gio/glocalfileoutputstream.c:609 gio/glocalfileoutputstream.c:1239
 #, c-format
 msgid "Error truncating file: %s"
 msgstr "Error truncating file: %s"
 
 #: gio/glocalfileoutputstream.c:662 gio/glocalfileoutputstream.c:907
-#: gio/glocalfileoutputstream.c:1218 gio/gsubprocess.c:226
+#: gio/glocalfileoutputstream.c:1220 gio/gsubprocess.c:229
 #, c-format
 msgid "Error opening file “%s”: %s"
 msgstr "Error opening file “%s”: %s"
@@ -3288,7 +3312,7 @@ msgstr "The file was externally modified"
 msgid "Error removing old file: %s"
 msgstr "Error removing old file: %s"
 
-#: gio/gmemoryinputstream.c:474 gio/gmemoryoutputstream.c:772
+#: gio/gmemoryinputstream.c:474 gio/gmemoryoutputstream.c:762
 msgid "Invalid GSeekType supplied"
 msgstr "Invalid GSeekType supplied"
 
@@ -3300,15 +3324,15 @@ msgstr "Invalid seek request"
 msgid "Cannot truncate GMemoryInputStream"
 msgstr "Cannot truncate GMemoryInputStream"
 
-#: gio/gmemoryoutputstream.c:567
+#: gio/gmemoryoutputstream.c:568
 msgid "Memory output stream not resizable"
 msgstr "Memory output stream not resizable"
 
-#: gio/gmemoryoutputstream.c:583
+#: gio/gmemoryoutputstream.c:584
 msgid "Failed to resize memory output stream"
 msgstr "Failed to resize memory output stream"
 
-#: gio/gmemoryoutputstream.c:673
+#: gio/gmemoryoutputstream.c:663
 msgid ""
 "Amount of memory required to process the write is larger than available "
 "address space"
@@ -3316,11 +3340,11 @@ msgstr ""
 "Amount of memory required to process the write is larger than available "
 "address space"
 
-#: gio/gmemoryoutputstream.c:782
+#: gio/gmemoryoutputstream.c:772
 msgid "Requested seek before the beginning of the stream"
 msgstr "Requested seek before the beginning of the stream"
 
-#: gio/gmemoryoutputstream.c:797
+#: gio/gmemoryoutputstream.c:787
 msgid "Requested seek beyond the end of the stream"
 msgstr "Requested seek beyond the end of the stream"
 
@@ -3400,12 +3424,12 @@ msgstr "Could not create network monitor: "
 msgid "Could not get network status: "
 msgstr "Could not get network status: "
 
-#: gio/gnetworkmonitornm.c:348
+#: gio/gnetworkmonitornm.c:311
 #, c-format
 msgid "NetworkManager not running"
 msgstr "NetworkManager not running"
 
-#: gio/gnetworkmonitornm.c:359
+#: gio/gnetworkmonitornm.c:322
 #, c-format
 msgid "NetworkManager version too old"
 msgstr "NetworkManager version too old"
@@ -3423,18 +3447,22 @@ msgstr "Sum of vectors passed to %s too large"
 msgid "Source stream is already closed"
 msgstr "Source stream is already closed"
 
-#: gio/gresolver.c:386 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
+#. Translators: the first placeholder is a domain name, the
+#. * second is an error message
+#: gio/gresolver.c:401 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
+#: gio/gthreadedresolver.c:780 gio/gthreadedresolver.c:804
+#: gio/gthreadedresolver.c:829 gio/gthreadedresolver.c:844
 #, c-format
 msgid "Error resolving “%s”: %s"
 msgstr "Error resolving “%s”: %s"
 
 #. Translators: The placeholder is for a function name.
-#: gio/gresolver.c:455 gio/gresolver.c:615
+#: gio/gresolver.c:470 gio/gresolver.c:630
 #, c-format
 msgid "%s not implemented"
 msgstr "%s not implemented"
 
-#: gio/gresolver.c:984 gio/gresolver.c:1036
+#: gio/gresolver.c:999 gio/gresolver.c:1051
 msgid "Invalid domain"
 msgstr "Invalid domain"
 
@@ -3549,7 +3577,7 @@ msgstr ""
 msgid "  SECTION   An (optional) elf section name\n"
 msgstr "  SECTION   An (optional) elf section name\n"
 
-#: gio/gresource-tool.c:565 gio/gsettings-tool.c:706
+#: gio/gresource-tool.c:565 gio/gsettings-tool.c:718
 msgid "  COMMAND   The (optional) command to explain\n"
 msgstr "  COMMAND   The (optional) command to explain\n"
 
@@ -3581,7 +3609,7 @@ msgstr "PATH"
 msgid "  PATH      A resource path\n"
 msgstr "  PATH      A resource path\n"
 
-#: gio/gsettings-tool.c:49 gio/gsettings-tool.c:70 gio/gsettings-tool.c:911
+#: gio/gsettings-tool.c:49 gio/gsettings-tool.c:70 gio/gsettings-tool.c:923
 #, c-format
 msgid "No such schema “%s”\n"
 msgstr "No such schema “%s”\n"
@@ -3612,35 +3640,35 @@ msgstr "Path must end with a slash (/)\n"
 msgid "Path must not contain two adjacent slashes (//)\n"
 msgstr "Path must not contain two adjacent slashes (//)\n"
 
-#: gio/gsettings-tool.c:541
+#: gio/gsettings-tool.c:553
 msgid "The provided value is outside of the valid range\n"
 msgstr "The provided value is outside of the valid range\n"
 
-#: gio/gsettings-tool.c:548
+#: gio/gsettings-tool.c:560
 msgid "The key is not writable\n"
 msgstr "The key is not writable\n"
 
-#: gio/gsettings-tool.c:584
+#: gio/gsettings-tool.c:596
 msgid "List the installed (non-relocatable) schemas"
 msgstr "List the installed (non-relocatable) schemas"
 
-#: gio/gsettings-tool.c:590
+#: gio/gsettings-tool.c:602
 msgid "List the installed relocatable schemas"
 msgstr "List the installed relocatable schemas"
 
-#: gio/gsettings-tool.c:596
+#: gio/gsettings-tool.c:608
 msgid "List the keys in SCHEMA"
 msgstr "List the keys in SCHEMA"
 
-#: gio/gsettings-tool.c:597 gio/gsettings-tool.c:603 gio/gsettings-tool.c:646
+#: gio/gsettings-tool.c:609 gio/gsettings-tool.c:615 gio/gsettings-tool.c:658
 msgid "SCHEMA[:PATH]"
 msgstr "SCHEMA[:PATH]"
 
-#: gio/gsettings-tool.c:602
+#: gio/gsettings-tool.c:614
 msgid "List the children of SCHEMA"
 msgstr "List the children of SCHEMA"
 
-#: gio/gsettings-tool.c:608
+#: gio/gsettings-tool.c:620
 msgid ""
 "List keys and values, recursively\n"
 "If no SCHEMA is given, list all keys\n"
@@ -3648,48 +3676,48 @@ msgstr ""
 "List keys and values, recursively\n"
 "If no SCHEMA is given, list all keys\n"
 
-#: gio/gsettings-tool.c:610
+#: gio/gsettings-tool.c:622
 msgid "[SCHEMA[:PATH]]"
 msgstr "[SCHEMA[:PATH]]"
 
-#: gio/gsettings-tool.c:615
+#: gio/gsettings-tool.c:627
 msgid "Get the value of KEY"
 msgstr "Get the value of KEY"
 
-#: gio/gsettings-tool.c:616 gio/gsettings-tool.c:622 gio/gsettings-tool.c:628
-#: gio/gsettings-tool.c:640 gio/gsettings-tool.c:652
+#: gio/gsettings-tool.c:628 gio/gsettings-tool.c:634 gio/gsettings-tool.c:640
+#: gio/gsettings-tool.c:652 gio/gsettings-tool.c:664
 msgid "SCHEMA[:PATH] KEY"
 msgstr "SCHEMA[:PATH] KEY"
 
-#: gio/gsettings-tool.c:621
+#: gio/gsettings-tool.c:633
 msgid "Query the range of valid values for KEY"
 msgstr "Query the range of valid values for KEY"
 
-#: gio/gsettings-tool.c:627
+#: gio/gsettings-tool.c:639
 msgid "Query the description for KEY"
 msgstr "Query the description for KEY"
 
-#: gio/gsettings-tool.c:633
+#: gio/gsettings-tool.c:645
 msgid "Set the value of KEY to VALUE"
 msgstr "Set the value of KEY to VALUE"
 
-#: gio/gsettings-tool.c:634
+#: gio/gsettings-tool.c:646
 msgid "SCHEMA[:PATH] KEY VALUE"
 msgstr "SCHEMA[:PATH] KEY VALUE"
 
-#: gio/gsettings-tool.c:639
+#: gio/gsettings-tool.c:651
 msgid "Reset KEY to its default value"
 msgstr "Reset KEY to its default value"
 
-#: gio/gsettings-tool.c:645
+#: gio/gsettings-tool.c:657
 msgid "Reset all keys in SCHEMA to their defaults"
 msgstr "Reset all keys in SCHEMA to their defaults"
 
-#: gio/gsettings-tool.c:651
+#: gio/gsettings-tool.c:663
 msgid "Check if KEY is writable"
 msgstr "Check if KEY is writable"
 
-#: gio/gsettings-tool.c:657
+#: gio/gsettings-tool.c:669
 msgid ""
 "Monitor KEY for changes.\n"
 "If no KEY is specified, monitor all keys in SCHEMA.\n"
@@ -3699,11 +3727,11 @@ msgstr ""
 "If no KEY is specified, monitor all keys in SCHEMA.\n"
 "Use ^C to stop monitoring.\n"
 
-#: gio/gsettings-tool.c:660
+#: gio/gsettings-tool.c:672
 msgid "SCHEMA[:PATH] [KEY]"
 msgstr "SCHEMA[:PATH] [KEY]"
 
-#: gio/gsettings-tool.c:672
+#: gio/gsettings-tool.c:684
 msgid ""
 "Usage:\n"
 "  gsettings --version\n"
@@ -3751,7 +3779,7 @@ msgstr ""
 "Use “gsettings help COMMAND” to get detailed help.\n"
 "\n"
 
-#: gio/gsettings-tool.c:696
+#: gio/gsettings-tool.c:708
 #, c-format
 msgid ""
 "Usage:\n"
@@ -3766,11 +3794,11 @@ msgstr ""
 "%s\n"
 "\n"
 
-#: gio/gsettings-tool.c:702
+#: gio/gsettings-tool.c:714
 msgid "  SCHEMADIR A directory to search for additional schemas\n"
 msgstr "  SCHEMADIR A directory to search for additional schemas\n"
 
-#: gio/gsettings-tool.c:710
+#: gio/gsettings-tool.c:722
 msgid ""
 "  SCHEMA    The name of the schema\n"
 "  PATH      The path, for relocatable schemas\n"
@@ -3778,211 +3806,211 @@ msgstr ""
 "  SCHEMA    The name of the schema\n"
 "  PATH      The path, for relocatable schemas\n"
 
-#: gio/gsettings-tool.c:715
+#: gio/gsettings-tool.c:727
 msgid "  KEY       The (optional) key within the schema\n"
 msgstr "  KEY       The (optional) key within the schema\n"
 
-#: gio/gsettings-tool.c:719
+#: gio/gsettings-tool.c:731
 msgid "  KEY       The key within the schema\n"
 msgstr "  KEY       The key within the schema\n"
 
-#: gio/gsettings-tool.c:723
+#: gio/gsettings-tool.c:735
 msgid "  VALUE     The value to set\n"
 msgstr "  VALUE     The value to set\n"
 
-#: gio/gsettings-tool.c:778
+#: gio/gsettings-tool.c:790
 #, c-format
 msgid "Could not load schemas from %s: %s\n"
 msgstr "Could not load schemas from %s: %s\n"
 
-#: gio/gsettings-tool.c:790
+#: gio/gsettings-tool.c:802
 msgid "No schemas installed\n"
 msgstr "No schemas installed\n"
 
-#: gio/gsettings-tool.c:869
+#: gio/gsettings-tool.c:881
 msgid "Empty schema name given\n"
 msgstr "Empty schema name given\n"
 
-#: gio/gsettings-tool.c:924
+#: gio/gsettings-tool.c:936
 #, c-format
 msgid "No such key “%s”\n"
 msgstr "No such key “%s”\n"
 
-#: gio/gsocket.c:413
+#: gio/gsocket.c:417
 msgid "Invalid socket, not initialized"
 msgstr "Invalid socket, not initialised"
 
-#: gio/gsocket.c:420
+#: gio/gsocket.c:424
 #, c-format
 msgid "Invalid socket, initialization failed due to: %s"
 msgstr "Invalid socket, initialisation failed due to: %s"
 
-#: gio/gsocket.c:428
+#: gio/gsocket.c:432
 msgid "Socket is already closed"
 msgstr "Socket is already closed"
 
-#: gio/gsocket.c:443 gio/gsocket.c:3190 gio/gsocket.c:4420 gio/gsocket.c:4478
+#: gio/gsocket.c:447 gio/gsocket.c:3194 gio/gsocket.c:4427 gio/gsocket.c:4485
 msgid "Socket I/O timed out"
 msgstr "Socket I/O timed out"
 
-#: gio/gsocket.c:578
+#: gio/gsocket.c:582
 #, c-format
 msgid "creating GSocket from fd: %s"
 msgstr "creating GSocket from fd: %s"
 
-#: gio/gsocket.c:607 gio/gsocket.c:671 gio/gsocket.c:678
+#: gio/gsocket.c:611 gio/gsocket.c:675 gio/gsocket.c:682
 #, c-format
 msgid "Unable to create socket: %s"
 msgstr "Unable to create socket: %s"
 
-#: gio/gsocket.c:671
+#: gio/gsocket.c:675
 msgid "Unknown family was specified"
 msgstr "Unknown family was specified"
 
-#: gio/gsocket.c:678
+#: gio/gsocket.c:682
 msgid "Unknown protocol was specified"
 msgstr "Unknown protocol was specified"
 
-#: gio/gsocket.c:1169
+#: gio/gsocket.c:1173
 #, c-format
 msgid "Cannot use datagram operations on a non-datagram socket."
 msgstr "Cannot use datagram operations on a non-datagram socket."
 
-#: gio/gsocket.c:1186
+#: gio/gsocket.c:1190
 #, c-format
 msgid "Cannot use datagram operations on a socket with a timeout set."
 msgstr "Cannot use datagram operations on a socket with a timeout set."
 
-#: gio/gsocket.c:1993
+#: gio/gsocket.c:1997
 #, c-format
 msgid "could not get local address: %s"
 msgstr "could not get local address: %s"
 
-#: gio/gsocket.c:2039
+#: gio/gsocket.c:2043
 #, c-format
 msgid "could not get remote address: %s"
 msgstr "could not get remote address: %s"
 
-#: gio/gsocket.c:2105
+#: gio/gsocket.c:2109
 #, c-format
 msgid "could not listen: %s"
 msgstr "could not listen: %s"
 
-#: gio/gsocket.c:2209
+#: gio/gsocket.c:2213
 #, c-format
 msgid "Error binding to address %s: %s"
 msgstr "Error binding to address %s: %s"
 
-#: gio/gsocket.c:2385 gio/gsocket.c:2422 gio/gsocket.c:2532 gio/gsocket.c:2557
-#: gio/gsocket.c:2620 gio/gsocket.c:2678 gio/gsocket.c:2696
+#: gio/gsocket.c:2389 gio/gsocket.c:2426 gio/gsocket.c:2536 gio/gsocket.c:2561
+#: gio/gsocket.c:2624 gio/gsocket.c:2682 gio/gsocket.c:2700
 #, c-format
 msgid "Error joining multicast group: %s"
 msgstr "Error joining multicast group: %s"
 
-#: gio/gsocket.c:2386 gio/gsocket.c:2423 gio/gsocket.c:2533 gio/gsocket.c:2558
-#: gio/gsocket.c:2621 gio/gsocket.c:2679 gio/gsocket.c:2697
+#: gio/gsocket.c:2390 gio/gsocket.c:2427 gio/gsocket.c:2537 gio/gsocket.c:2562
+#: gio/gsocket.c:2625 gio/gsocket.c:2683 gio/gsocket.c:2701
 #, c-format
 msgid "Error leaving multicast group: %s"
 msgstr "Error leaving multicast group: %s"
 
-#: gio/gsocket.c:2387
+#: gio/gsocket.c:2391
 msgid "No support for source-specific multicast"
 msgstr "No support for source-specific multicast"
 
-#: gio/gsocket.c:2534
+#: gio/gsocket.c:2538
 msgid "Unsupported socket family"
 msgstr "Unsupported socket family"
 
-#: gio/gsocket.c:2559
+#: gio/gsocket.c:2563
 msgid "source-specific not an IPv4 address"
 msgstr "source-specific not an IPv4 address"
 
-#: gio/gsocket.c:2583
+#: gio/gsocket.c:2587
 #, c-format
 msgid "Interface name too long"
 msgstr "Interface name too long"
 
-#: gio/gsocket.c:2596 gio/gsocket.c:2646
+#: gio/gsocket.c:2600 gio/gsocket.c:2650
 #, c-format
 msgid "Interface not found: %s"
 msgstr "Interface not found: %s"
 
-#: gio/gsocket.c:2622
+#: gio/gsocket.c:2626
 msgid "No support for IPv4 source-specific multicast"
 msgstr "No support for IPv4 source-specific multicast"
 
-#: gio/gsocket.c:2680
+#: gio/gsocket.c:2684
 msgid "No support for IPv6 source-specific multicast"
 msgstr "No support for IPv6 source-specific multicast"
 
-#: gio/gsocket.c:2889
+#: gio/gsocket.c:2893
 #, c-format
 msgid "Error accepting connection: %s"
 msgstr "Error accepting connection: %s"
 
-#: gio/gsocket.c:3015
+#: gio/gsocket.c:3019
 msgid "Connection in progress"
 msgstr "Connection in progress"
 
-#: gio/gsocket.c:3066
+#: gio/gsocket.c:3070
 msgid "Unable to get pending error: "
 msgstr "Unable to get pending error: "
 
-#: gio/gsocket.c:3255
+#: gio/gsocket.c:3259
 #, c-format
 msgid "Error receiving data: %s"
 msgstr "Error receiving data: %s"
 
-#: gio/gsocket.c:3452
+#: gio/gsocket.c:3456
 #, c-format
 msgid "Error sending data: %s"
 msgstr "Error sending data: %s"
 
-#: gio/gsocket.c:3639
+#: gio/gsocket.c:3643
 #, c-format
 msgid "Unable to shutdown socket: %s"
 msgstr "Unable to shutdown socket: %s"
 
-#: gio/gsocket.c:3720
+#: gio/gsocket.c:3724
 #, c-format
 msgid "Error closing socket: %s"
 msgstr "Error closing socket: %s"
 
-#: gio/gsocket.c:4413
+#: gio/gsocket.c:4420
 #, c-format
 msgid "Waiting for socket condition: %s"
 msgstr "Waiting for socket condition: %s"
 
-#: gio/gsocket.c:4804 gio/gsocket.c:4820 gio/gsocket.c:4833
+#: gio/gsocket.c:4810 gio/gsocket.c:4826 gio/gsocket.c:4839
 #, c-format
 msgid "Unable to send message: %s"
 msgstr "Unable to send message: %s"
 
-#: gio/gsocket.c:4805 gio/gsocket.c:4821 gio/gsocket.c:4834
+#: gio/gsocket.c:4811 gio/gsocket.c:4827 gio/gsocket.c:4840
 msgid "Message vectors too large"
 msgstr "Message vectors too large"
 
-#: gio/gsocket.c:4850 gio/gsocket.c:4852 gio/gsocket.c:4999 gio/gsocket.c:5084
-#: gio/gsocket.c:5262 gio/gsocket.c:5302 gio/gsocket.c:5304
+#: gio/gsocket.c:4856 gio/gsocket.c:4858 gio/gsocket.c:5005 gio/gsocket.c:5090
+#: gio/gsocket.c:5268 gio/gsocket.c:5308 gio/gsocket.c:5310
 #, c-format
 msgid "Error sending message: %s"
 msgstr "Error sending message: %s"
 
-#: gio/gsocket.c:5026
+#: gio/gsocket.c:5032
 msgid "GSocketControlMessage not supported on Windows"
 msgstr "GSocketControlMessage not supported on Windows"
 
-#: gio/gsocket.c:5495 gio/gsocket.c:5571 gio/gsocket.c:5797
+#: gio/gsocket.c:5505 gio/gsocket.c:5581 gio/gsocket.c:5807
 #, c-format
 msgid "Error receiving message: %s"
 msgstr "Error receiving message: %s"
 
-#: gio/gsocket.c:6070 gio/gsocket.c:6081 gio/gsocket.c:6127
+#: gio/gsocket.c:6090 gio/gsocket.c:6101 gio/gsocket.c:6164
 #, c-format
 msgid "Unable to read socket credentials: %s"
 msgstr "Unable to read socket credentials: %s"
 
-#: gio/gsocket.c:6136
+#: gio/gsocket.c:6173
 msgid "g_socket_get_credentials not implemented for this OS"
 msgstr "g_socket_get_credentials not implemented for this OS"
 
@@ -4000,11 +4028,11 @@ msgstr "Could not connect to %s: "
 msgid "Could not connect: "
 msgstr "Could not connect: "
 
-#: gio/gsocketclient.c:1162 gio/gsocketclient.c:1749
+#: gio/gsocketclient.c:1202 gio/gsocketclient.c:1793
 msgid "Proxying over a non-TCP connection is not supported."
 msgstr "Proxying over a non-TCP connection is not supported."
 
-#: gio/gsocketclient.c:1194 gio/gsocketclient.c:1778
+#: gio/gsocketclient.c:1234 gio/gsocketclient.c:1822
 #, c-format
 msgid "Proxy protocol “%s” is not supported."
 msgstr "Proxy protocol “%s” is not supported."
@@ -4104,6 +4132,16 @@ msgstr "SOCKSv5 proxy does not support provided address type."
 msgid "Unknown SOCKSv5 proxy error."
 msgstr "Unknown SOCKSv5 proxy error."
 
+#: gio/gtestdbus.c:612 glib/gspawn-win32.c:314
+#, c-format
+msgid "Failed to create pipe for communicating with child process (%s)"
+msgstr "Failed to create pipe for communicating with child process (%s)"
+
+#: gio/gtestdbus.c:619
+#, c-format
+msgid "Pipes are not supported in this platform"
+msgstr "Pipes are not supported in this platform"
+
 #: gio/gthemedicon.c:595
 #, c-format
 msgid "Can’t handle version %d of GThemedIcon encoding"
@@ -4118,44 +4156,66 @@ msgstr "No valid addresses were found"
 msgid "Error reverse-resolving “%s”: %s"
 msgstr "Error reverse-resolving “%s”: %s"
 
-#: gio/gthreadedresolver.c:676 gio/gthreadedresolver.c:755
-#: gio/gthreadedresolver.c:853 gio/gthreadedresolver.c:903
+#. Translators: the placeholder is a DNS record type, such as ‘MX’ or ‘SRV’
+#: gio/gthreadedresolver.c:550 gio/gthreadedresolver.c:572
+#: gio/gthreadedresolver.c:610 gio/gthreadedresolver.c:657
+#: gio/gthreadedresolver.c:686 gio/gthreadedresolver.c:698
+#, c-format
+msgid "Error parsing DNS %s record: malformed DNS packet"
+msgstr "Error parsing DNS %s record: malformed DNS packet"
+
+#: gio/gthreadedresolver.c:756 gio/gthreadedresolver.c:893
+#: gio/gthreadedresolver.c:991 gio/gthreadedresolver.c:1041
 #, c-format
 msgid "No DNS record of the requested type for “%s”"
 msgstr "No DNS record of the requested type for “%s”"
 
-#: gio/gthreadedresolver.c:681 gio/gthreadedresolver.c:858
+#: gio/gthreadedresolver.c:761 gio/gthreadedresolver.c:996
 #, c-format
 msgid "Temporarily unable to resolve “%s”"
 msgstr "Temporarily unable to resolve “%s”"
 
-#: gio/gthreadedresolver.c:686 gio/gthreadedresolver.c:863
-#: gio/gthreadedresolver.c:973
+#: gio/gthreadedresolver.c:766 gio/gthreadedresolver.c:1001
+#: gio/gthreadedresolver.c:1111
 #, c-format
 msgid "Error resolving “%s”"
 msgstr "Error resolving “%s”"
 
-#: gio/gtlscertificate.c:419
+#: gio/gthreadedresolver.c:780 gio/gthreadedresolver.c:804
+#: gio/gthreadedresolver.c:829 gio/gthreadedresolver.c:844
+msgid "Malformed DNS packet"
+msgstr "Malformed DNS packet"
+
+#: gio/gthreadedresolver.c:886
+#, c-format
+msgid "Failed to parse DNS response for “%s”: "
+msgstr "Failed to parse DNS response for “%s”: "
+
+#: gio/gtlscertificate.c:478
 msgid "No PEM-encoded private key found"
 msgstr "No PEM-encoded private key found"
 
-#: gio/gtlscertificate.c:429
+#: gio/gtlscertificate.c:488
 msgid "Cannot decrypt PEM-encoded private key"
 msgstr "Cannot decrypt PEM-encoded private key"
 
-#: gio/gtlscertificate.c:440
+#: gio/gtlscertificate.c:499
 msgid "Could not parse PEM-encoded private key"
 msgstr "Could not parse PEM-encoded private key"
 
-#: gio/gtlscertificate.c:467
+#: gio/gtlscertificate.c:526
 msgid "No PEM-encoded certificate found"
 msgstr "No PEM-encoded certificate found"
 
-#: gio/gtlscertificate.c:476
+#: gio/gtlscertificate.c:535
 msgid "Could not parse PEM-encoded certificate"
 msgstr "Could not parse PEM-encoded certificate"
 
-#: gio/gtlscertificate.c:832
+#: gio/gtlscertificate.c:796
+msgid "The current TLS backend does not support PKCS #12"
+msgstr "The current TLS backend does not support PKCS #12"
+
+#: gio/gtlscertificate.c:1013
 msgid "This GTlsBackend does not support creating PKCS #11 certificates"
 msgstr "This GTlsBackend does not support creating PKCS #11 certificates"
 
@@ -4181,54 +4241,62 @@ msgstr ""
 msgid "The password entered is incorrect."
 msgstr "The password entered is incorrect."
 
-#: gio/gunixconnection.c:166 gio/gunixconnection.c:579
+#: gio/gunixconnection.c:125
+msgid "Sending FD is not supported"
+msgstr "Sending FD is not supported"
+
+#: gio/gunixconnection.c:178 gio/gunixconnection.c:596
 #, c-format
 msgid "Expecting 1 control message, got %d"
 msgid_plural "Expecting 1 control message, got %d"
 msgstr[0] "Expecting 1 control message, got %d"
 msgstr[1] "Expecting 1 control message, got %d"
 
-#: gio/gunixconnection.c:182 gio/gunixconnection.c:591
+#: gio/gunixconnection.c:194 gio/gunixconnection.c:608
 msgid "Unexpected type of ancillary data"
 msgstr "Unexpected type of ancillary data"
 
-#: gio/gunixconnection.c:200
+#: gio/gunixconnection.c:212
 #, c-format
 msgid "Expecting one fd, but got %d\n"
 msgid_plural "Expecting one fd, but got %d\n"
 msgstr[0] "Expecting one fd, but got %d\n"
 msgstr[1] "Expecting one fd, but got %d\n"
 
-#: gio/gunixconnection.c:219
+#: gio/gunixconnection.c:231
 msgid "Received invalid fd"
 msgstr "Received invalid fd"
 
-#: gio/gunixconnection.c:363
+#: gio/gunixconnection.c:238
+msgid "Receiving FD is not supported"
+msgstr "Receiving FD is not supported"
+
+#: gio/gunixconnection.c:380
 msgid "Error sending credentials: "
 msgstr "Error sending credentials: "
 
-#: gio/gunixconnection.c:520
+#: gio/gunixconnection.c:537
 #, c-format
 msgid "Error checking if SO_PASSCRED is enabled for socket: %s"
 msgstr "Error checking if SO_PASSCRED is enabled for socket: %s"
 
-#: gio/gunixconnection.c:536
+#: gio/gunixconnection.c:553
 #, c-format
 msgid "Error enabling SO_PASSCRED: %s"
 msgstr "Error enabling SO_PASSCRED: %s"
 
-#: gio/gunixconnection.c:565
+#: gio/gunixconnection.c:582
 msgid ""
 "Expecting to read a single byte for receiving credentials but read zero bytes"
 msgstr ""
 "Expecting to read a single byte for receiving credentials but read zero bytes"
 
-#: gio/gunixconnection.c:605
+#: gio/gunixconnection.c:622
 #, c-format
 msgid "Not expecting control message, but got %d"
 msgstr "Not expecting control message, but got %d"
 
-#: gio/gunixconnection.c:630
+#: gio/gunixconnection.c:647
 #, c-format
 msgid "Error while disabling SO_PASSCRED: %s"
 msgstr "Error while disabling SO_PASSCRED: %s"
@@ -4244,7 +4312,7 @@ msgstr "Error reading from file descriptor: %s"
 msgid "Error closing file descriptor: %s"
 msgstr "Error closing file descriptor: %s"
 
-#: gio/gunixmounts.c:2785 gio/gunixmounts.c:2838
+#: gio/gunixmounts.c:2809 gio/gunixmounts.c:2862
 msgid "Filesystem root"
 msgstr "Filesystem root"
 
@@ -4255,7 +4323,7 @@ msgstr "Filesystem root"
 msgid "Error writing to file descriptor: %s"
 msgstr "Error writing to file descriptor: %s"
 
-#: gio/gunixsocketaddress.c:244
+#: gio/gunixsocketaddress.c:251
 msgid "Abstract UNIX domain socket addresses not supported on this system"
 msgstr "Abstract UNIX domain socket addresses not supported on this system"
 
@@ -4405,8 +4473,8 @@ msgstr "Failed to expand exec line “%s” with URI “%s”"
 msgid "Unrepresentable character in conversion input"
 msgstr "Unrepresentable character in conversion input"
 
-#: glib/gconvert.c:495 glib/gutf8.c:871 glib/gutf8.c:1083 glib/gutf8.c:1220
-#: glib/gutf8.c:1324
+#: glib/gconvert.c:495 glib/gutf8.c:886 glib/gutf8.c:1099 glib/gutf8.c:1236
+#: glib/gutf8.c:1340
 msgid "Partial character sequence at end of input"
 msgstr "Partial character sequence at end of input"
 
@@ -4871,79 +4939,79 @@ msgstr "PM"
 msgid "Error opening directory “%s”: %s"
 msgstr "Error opening directory “%s”: %s"
 
-#: glib/gfileutils.c:737 glib/gfileutils.c:829
+#: glib/gfileutils.c:733 glib/gfileutils.c:825
 #, c-format
 msgid "Could not allocate %lu byte to read file “%s”"
 msgid_plural "Could not allocate %lu bytes to read file “%s”"
 msgstr[0] "Could not allocate %lu byte to read file “%s”"
 msgstr[1] "Could not allocate %lu bytes to read file “%s”"
 
-#: glib/gfileutils.c:754
+#: glib/gfileutils.c:750
 #, c-format
 msgid "Error reading file “%s”: %s"
 msgstr "Error reading file “%s”: %s"
 
-#: glib/gfileutils.c:790
+#: glib/gfileutils.c:786
 #, c-format
 msgid "File “%s” is too large"
 msgstr "File “%s” is too large"
 
-#: glib/gfileutils.c:854
+#: glib/gfileutils.c:850
 #, c-format
 msgid "Failed to read from file “%s”: %s"
 msgstr "Failed to read from file “%s”: %s"
 
-#: glib/gfileutils.c:904 glib/gfileutils.c:979 glib/gfileutils.c:1468
+#: glib/gfileutils.c:900 glib/gfileutils.c:975 glib/gfileutils.c:1447
 #, c-format
 msgid "Failed to open file “%s”: %s"
 msgstr "Failed to open file “%s”: %s"
 
-#: glib/gfileutils.c:917
+#: glib/gfileutils.c:913
 #, c-format
 msgid "Failed to get attributes of file “%s”: fstat() failed: %s"
 msgstr "Failed to get attributes of file “%s”: fstat() failed: %s"
 
-#: glib/gfileutils.c:948
+#: glib/gfileutils.c:944
 #, c-format
 msgid "Failed to open file “%s”: fdopen() failed: %s"
 msgstr "Failed to open file “%s”: fdopen() failed: %s"
 
-#: glib/gfileutils.c:1049
+#: glib/gfileutils.c:1045
 #, c-format
 msgid "Failed to rename file “%s” to “%s”: g_rename() failed: %s"
 msgstr "Failed to rename file “%s” to “%s”: g_rename() failed: %s"
 
-#: glib/gfileutils.c:1175
+#: glib/gfileutils.c:1154
 #, c-format
 msgid "Failed to write file “%s”: write() failed: %s"
 msgstr "Failed to write file “%s”: write() failed: %s"
 
-#: glib/gfileutils.c:1196
+#: glib/gfileutils.c:1175
 #, c-format
 msgid "Failed to write file “%s”: fsync() failed: %s"
 msgstr "Failed to write file “%s”: fsync() failed: %s"
 
-#: glib/gfileutils.c:1357 glib/gfileutils.c:1772
+#: glib/gfileutils.c:1336 glib/gfileutils.c:1751
 #, c-format
 msgid "Failed to create file “%s”: %s"
 msgstr "Failed to create file “%s”: %s"
 
-#: glib/gfileutils.c:1402
+#: glib/gfileutils.c:1381
 #, c-format
 msgid "Existing file “%s” could not be removed: g_unlink() failed: %s"
 msgstr "Existing file “%s” could not be removed: g_unlink() failed: %s"
 
-#: glib/gfileutils.c:1737
+#: glib/gfileutils.c:1716
 #, c-format
 msgid "Template “%s” invalid, should not contain a “%s”"
 msgstr "Template “%s” invalid, should not contain a “%s”"
 
-#: glib/gfileutils.c:1750
+#: glib/gfileutils.c:1729
 #, c-format
 msgid "Template “%s” doesn’t contain XXXXXX"
 msgstr "Template “%s” doesn’t contain XXXXXX"
 
-#: glib/gfileutils.c:2310 glib/gfileutils.c:2339
+#: glib/gfileutils.c:2289 glib/gfileutils.c:2318
 #, c-format
 msgid "Failed to read the symbolic link “%s”: %s"
 msgstr "Failed to read the symbolic link “%s”: %s"
@@ -4969,65 +5037,65 @@ msgstr "Channel terminates in a partial character"
 msgid "Can’t do a raw read in g_io_channel_read_to_end"
 msgstr "Can’t do a raw read in g_io_channel_read_to_end"
 
-#: glib/gkeyfile.c:790
+#: glib/gkeyfile.c:794
 msgid "Valid key file could not be found in search dirs"
 msgstr "Valid key file could not be found in search dirs"
 
-#: glib/gkeyfile.c:827
+#: glib/gkeyfile.c:831
 msgid "Not a regular file"
 msgstr "Not a regular file"
 
-#: glib/gkeyfile.c:1282
+#: glib/gkeyfile.c:1289
 #, c-format
 msgid ""
 "Key file contains line “%s” which is not a key-value pair, group, or comment"
 msgstr ""
 "Key file contains line “%s” which is not a key-value pair, group, or comment"
 
-#: glib/gkeyfile.c:1339
+#: glib/gkeyfile.c:1346
 #, c-format
 msgid "Invalid group name: %s"
 msgstr "Invalid group name: %s"
 
-#: glib/gkeyfile.c:1361
+#: glib/gkeyfile.c:1370
 msgid "Key file does not start with a group"
 msgstr "Key file does not start with a group"
 
-#: glib/gkeyfile.c:1387
+#: glib/gkeyfile.c:1394
 #, c-format
-msgid "Invalid key name: %s"
-msgstr "Invalid key name: %s"
+msgid "Invalid key name: %.*s"
+msgstr "Invalid key name: %.*s"
 
-#: glib/gkeyfile.c:1414
+#: glib/gkeyfile.c:1422
 #, c-format
 msgid "Key file contains unsupported encoding “%s”"
 msgstr "Key file contains unsupported encoding “%s”"
 
-#: glib/gkeyfile.c:1663 glib/gkeyfile.c:1836 glib/gkeyfile.c:3289
-#: glib/gkeyfile.c:3353 glib/gkeyfile.c:3483 glib/gkeyfile.c:3615
-#: glib/gkeyfile.c:3761 glib/gkeyfile.c:3996 glib/gkeyfile.c:4063
+#: glib/gkeyfile.c:1677 glib/gkeyfile.c:1850 glib/gkeyfile.c:3297
+#: glib/gkeyfile.c:3361 glib/gkeyfile.c:3491 glib/gkeyfile.c:3623
+#: glib/gkeyfile.c:3769 glib/gkeyfile.c:4004 glib/gkeyfile.c:4071
 #, c-format
 msgid "Key file does not have group “%s”"
 msgstr "Key file does not have group “%s”"
 
-#: glib/gkeyfile.c:1791
+#: glib/gkeyfile.c:1805
 #, c-format
 msgid "Key file does not have key “%s” in group “%s”"
 msgstr "Key file does not have key “%s” in group “%s”"
 
-#: glib/gkeyfile.c:1953 glib/gkeyfile.c:2069
+#: glib/gkeyfile.c:1967 glib/gkeyfile.c:2083
 #, c-format
 msgid "Key file contains key “%s” with value “%s” which is not UTF-8"
 msgstr "Key file contains key “%s” with value “%s” which is not UTF-8"
 
-#: glib/gkeyfile.c:1973 glib/gkeyfile.c:2089 glib/gkeyfile.c:2531
+#: glib/gkeyfile.c:1987 glib/gkeyfile.c:2103 glib/gkeyfile.c:2542
 #, c-format
 msgid ""
 "Key file contains key “%s” which has a value that cannot be interpreted."
 msgstr ""
 "Key file contains key “%s” which has a value that cannot be interpreted."
 
-#: glib/gkeyfile.c:2749 glib/gkeyfile.c:3118
+#: glib/gkeyfile.c:2757 glib/gkeyfile.c:3126
 #, c-format
 msgid ""
 "Key file contains key “%s” in group “%s” which has a value that cannot be "
@@ -5036,36 +5104,36 @@ msgstr ""
 "Key file contains key “%s” in group “%s” which has a value that cannot be "
 "interpreted."
 
-#: glib/gkeyfile.c:2827 glib/gkeyfile.c:2904
+#: glib/gkeyfile.c:2835 glib/gkeyfile.c:2912
 #, c-format
 msgid "Key “%s” in group “%s” has value “%s” where %s was expected"
 msgstr "Key “%s” in group “%s” has value “%s” where %s was expected"
 
-#: glib/gkeyfile.c:4306
+#: glib/gkeyfile.c:4324
 msgid "Key file contains escape character at end of line"
 msgstr "Key file contains escape character at end of line"
 
-#: glib/gkeyfile.c:4328
+#: glib/gkeyfile.c:4346
 #, c-format
 msgid "Key file contains invalid escape sequence “%s”"
 msgstr "Key file contains invalid escape sequence “%s”"
 
-#: glib/gkeyfile.c:4472
+#: glib/gkeyfile.c:4491
 #, c-format
 msgid "Value “%s” cannot be interpreted as a number."
 msgstr "Value “%s” cannot be interpreted as a number."
 
-#: glib/gkeyfile.c:4486
+#: glib/gkeyfile.c:4505
 #, c-format
 msgid "Integer value “%s” out of range"
 msgstr "Integer value “%s” out of range"
 
-#: glib/gkeyfile.c:4519
+#: glib/gkeyfile.c:4538
 #, c-format
 msgid "Value “%s” cannot be interpreted as a float number."
 msgstr "Value “%s” cannot be interpreted as a float number."
 
-#: glib/gkeyfile.c:4558
+#: glib/gkeyfile.c:4577
 #, c-format
 msgid "Value “%s” cannot be interpreted as a boolean."
 msgstr "Value “%s” cannot be interpreted as a boolean."
@@ -5354,7 +5422,7 @@ msgstr "Error parsing option %s"
 msgid "Missing argument for %s"
 msgstr "Missing argument for %s"
 
-#: glib/goption.c:2185
+#: glib/goption.c:2184
 #, c-format
 msgid "Unknown option %s"
 msgstr "Unknown option %s"
@@ -5726,148 +5794,158 @@ msgstr "unknown escape sequence"
 msgid "Error while parsing replacement text “%s” at char %lu: %s"
 msgstr "Error while parsing replacement text “%s” at char %lu: %s"
 
-#: glib/gshell.c:94
+#: glib/gshell.c:96
 msgid "Quoted text doesn’t begin with a quotation mark"
 msgstr "Quoted text doesn’t begin with a quotation mark"
 
-#: glib/gshell.c:184
+#: glib/gshell.c:186
 msgid "Unmatched quotation mark in command line or other shell-quoted text"
 msgstr "Unmatched quotation mark in command line or other shell-quoted text"
 
-#: glib/gshell.c:580
+#: glib/gshell.c:592
 #, c-format
 msgid "Text ended just after a “\\” character. (The text was “%s”)"
 msgstr "Text ended just after a “\\” character. (The text was “%s”)"
 
-#: glib/gshell.c:587
+#: glib/gshell.c:599
 #, c-format
 msgid "Text ended before matching quote was found for %c. (The text was “%s”)"
 msgstr "Text ended before matching quote was found for %c. (The text was “%s”)"
 
-#: glib/gshell.c:599
+#: glib/gshell.c:611
 msgid "Text was empty (or contained only whitespace)"
 msgstr "Text was empty (or contained only whitespace)"
 
-#: glib/gspawn.c:308
+#: glib/gspawn.c:310
 #, c-format
 msgid "Failed to read data from child process (%s)"
 msgstr "Failed to read data from child process (%s)"
 
-#: glib/gspawn.c:458
+#: glib/gspawn.c:462
 #, c-format
 msgid "Unexpected error in reading data from a child process (%s)"
 msgstr "Unexpected error in reading data from a child process (%s)"
 
-#: glib/gspawn.c:543
+#: glib/gspawn.c:547
 #, c-format
 msgid "Unexpected error in waitpid() (%s)"
 msgstr "Unexpected error in waitpid() (%s)"
 
-#: glib/gspawn.c:1152 glib/gspawn-win32.c:1407
+#: glib/gspawn.c:1175 glib/gspawn-win32.c:1438
 #, c-format
 msgid "Child process exited with code %ld"
 msgstr "Child process exited with code %ld"
 
-#: glib/gspawn.c:1160
+#: glib/gspawn.c:1183
 #, c-format
 msgid "Child process killed by signal %ld"
 msgstr "Child process killed by signal %ld"
 
-#: glib/gspawn.c:1167
+#: glib/gspawn.c:1190
 #, c-format
 msgid "Child process stopped by signal %ld"
 msgstr "Child process stopped by signal %ld"
 
-#: glib/gspawn.c:1174
+#: glib/gspawn.c:1197
 #, c-format
 msgid "Child process exited abnormally"
 msgstr "Child process exited abnormally"
 
-#: glib/gspawn.c:1793 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
+#: glib/gspawn.c:1890 glib/gspawn-win32.c:353 glib/gspawn-win32.c:361
 #, c-format
 msgid "Failed to read from child pipe (%s)"
 msgstr "Failed to read from child pipe (%s)"
 
-#: glib/gspawn.c:2095
+#: glib/gspawn.c:2253
 #, c-format
 msgid "Failed to spawn child process “%s” (%s)"
 msgstr "Failed to spawn child process “%s” (%s)"
 
-#: glib/gspawn.c:2212
+#: glib/gspawn.c:2370
 #, c-format
 msgid "Failed to fork (%s)"
 msgstr "Failed to fork (%s)"
 
-#: glib/gspawn.c:2372 glib/gspawn-win32.c:381
+#: glib/gspawn.c:2530 glib/gspawn-win32.c:384
 #, c-format
 msgid "Failed to change to directory “%s” (%s)"
 msgstr "Failed to change to directory “%s” (%s)"
 
-#: glib/gspawn.c:2382
+#: glib/gspawn.c:2540
 #, c-format
 msgid "Failed to execute child process “%s” (%s)"
 msgstr "Failed to execute child process “%s” (%s)"
 
-#: glib/gspawn.c:2392
+#: glib/gspawn.c:2550
+#, c-format
+msgid "Failed to open file to remap file descriptor (%s)"
+msgstr "Failed to open file to remap file descriptor (%s)"
+
+#: glib/gspawn.c:2558
 #, c-format
-msgid "Failed to redirect output or input of child process (%s)"
-msgstr "Failed to redirect output or input of child process (%s)"
+msgid "Failed to duplicate file descriptor for child process (%s)"
+msgstr "Failed to duplicate file descriptor for child process (%s)"
 
-#: glib/gspawn.c:2401
+#: glib/gspawn.c:2567
 #, c-format
 msgid "Failed to fork child process (%s)"
 msgstr "Failed to fork child process (%s)"
 
-#: glib/gspawn.c:2409
+#: glib/gspawn.c:2575
+#, c-format
+msgid "Failed to close file descriptor for child process (%s)"
+msgstr "Failed to close file descriptor for child process (%s)"
+
+#: glib/gspawn.c:2583
 #, c-format
 msgid "Unknown error executing child process “%s”"
 msgstr "Unknown error executing child process “%s”"
 
-#: glib/gspawn.c:2433
+#: glib/gspawn.c:2607
 #, c-format
 msgid "Failed to read enough data from child pid pipe (%s)"
 msgstr "Failed to read enough data from child pid pipe (%s)"
 
-#: glib/gspawn-win32.c:294
+#: glib/gspawn-win32.c:297
 msgid "Failed to read data from child process"
 msgstr "Failed to read data from child process"
 
-#: glib/gspawn-win32.c:311
-#, c-format
-msgid "Failed to create pipe for communicating with child process (%s)"
-msgstr "Failed to create pipe for communicating with child process (%s)"
-
-#: glib/gspawn-win32.c:387 glib/gspawn-win32.c:392 glib/gspawn-win32.c:511
+#: glib/gspawn-win32.c:390 glib/gspawn-win32.c:395 glib/gspawn-win32.c:521
 #, c-format
 msgid "Failed to execute child process (%s)"
 msgstr "Failed to execute child process (%s)"
 
-#: glib/gspawn-win32.c:461
+#: glib/gspawn-win32.c:400
+#, c-format
+msgid "Failed to dup() in child process (%s)"
+msgstr "Failed to dup() in child process (%s)"
+
+#: glib/gspawn-win32.c:471
 #, c-format
 msgid "Invalid program name: %s"
 msgstr "Invalid program name: %s"
 
-#: glib/gspawn-win32.c:471 glib/gspawn-win32.c:779
+#: glib/gspawn-win32.c:481 glib/gspawn-win32.c:807
 #, c-format
 msgid "Invalid string in argument vector at %d: %s"
 msgstr "Invalid string in argument vector at %d: %s"
 
-#: glib/gspawn-win32.c:482 glib/gspawn-win32.c:794
+#: glib/gspawn-win32.c:492 glib/gspawn-win32.c:823
 #, c-format
 msgid "Invalid string in environment: %s"
 msgstr "Invalid string in environment: %s"
 
-#: glib/gspawn-win32.c:775
+#: glib/gspawn-win32.c:803
 #, c-format
 msgid "Invalid working directory: %s"
 msgstr "Invalid working directory: %s"
 
-#: glib/gspawn-win32.c:837
+#: glib/gspawn-win32.c:868
 #, c-format
 msgid "Failed to execute helper program (%s)"
 msgstr "Failed to execute helper program (%s)"
 
-#: glib/gspawn-win32.c:1064
+#: glib/gspawn-win32.c:1096
 msgid ""
 "Unexpected error in g_io_channel_win32_poll() reading data from a child "
 "process"
@@ -5875,21 +5953,21 @@ msgstr ""
 "Unexpected error in g_io_channel_win32_poll() reading data from a child "
 "process"
 
-#: glib/gstrfuncs.c:3338 glib/gstrfuncs.c:3440
+#: glib/gstrfuncs.c:3351 glib/gstrfuncs.c:3453
 msgid "Empty string is not a number"
 msgstr "Empty string is not a number"
 
-#: glib/gstrfuncs.c:3362
+#: glib/gstrfuncs.c:3375
 #, c-format
 msgid "“%s” is not a signed number"
 msgstr "“%s” is not a signed number"
 
-#: glib/gstrfuncs.c:3372 glib/gstrfuncs.c:3476
+#: glib/gstrfuncs.c:3385 glib/gstrfuncs.c:3489
 #, c-format
 msgid "Number “%s” is out of bounds [%s, %s]"
 msgstr "Number “%s” is out of bounds [%s, %s]"
 
-#: glib/gstrfuncs.c:3466
+#: glib/gstrfuncs.c:3479
 #, c-format
 msgid "“%s” is not an unsigned number"
 msgstr "“%s” is not an unsigned number"
@@ -5942,183 +6020,183 @@ msgstr "URI ‘%s’ is not an absolute URI"
 msgid "URI ‘%s’ has no host component"
 msgstr "URI ‘%s’ has no host component"
 
-#: glib/guri.c:1435
+#: glib/guri.c:1460
 msgid "URI is not absolute, and no base URI was provided"
 msgstr "URI is not absolute, and no base URI was provided"
 
-#: glib/guri.c:2213
+#: glib/guri.c:2238
 msgid "Missing ‘=’ and parameter value"
 msgstr "Missing ‘=’ and parameter value"
 
-#: glib/gutf8.c:817
+#: glib/gutf8.c:832
 msgid "Failed to allocate memory"
 msgstr "Failed to allocate memory"
 
-#: glib/gutf8.c:950
+#: glib/gutf8.c:965
 msgid "Character out of range for UTF-8"
 msgstr "Character out of range for UTF-8"
 
-#: glib/gutf8.c:1051 glib/gutf8.c:1060 glib/gutf8.c:1190 glib/gutf8.c:1199
-#: glib/gutf8.c:1338 glib/gutf8.c:1435
+#: glib/gutf8.c:1067 glib/gutf8.c:1076 glib/gutf8.c:1206 glib/gutf8.c:1215
+#: glib/gutf8.c:1354 glib/gutf8.c:1451
 msgid "Invalid sequence in conversion input"
 msgstr "Invalid sequence in conversion input"
 
-#: glib/gutf8.c:1349 glib/gutf8.c:1446
+#: glib/gutf8.c:1365 glib/gutf8.c:1462
 msgid "Character out of range for UTF-16"
 msgstr "Character out of range for UTF-16"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2727
+#: glib/gutils.c:2849
 #, c-format
 msgid "%.1f kB"
 msgstr "%.1f kB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2729
+#: glib/gutils.c:2851
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2731
+#: glib/gutils.c:2853
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2733
+#: glib/gutils.c:2855
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2735
+#: glib/gutils.c:2857
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2737
+#: glib/gutils.c:2859
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2741
+#: glib/gutils.c:2863
 #, c-format
 msgid "%.1f KiB"
 msgstr "%.1f KiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2743
+#: glib/gutils.c:2865
 #, c-format
 msgid "%.1f MiB"
 msgstr "%.1f MiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2745
+#: glib/gutils.c:2867
 #, c-format
 msgid "%.1f GiB"
 msgstr "%.1f GiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2747
+#: glib/gutils.c:2869
 #, c-format
 msgid "%.1f TiB"
 msgstr "%.1f TiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2749
+#: glib/gutils.c:2871
 #, c-format
 msgid "%.1f PiB"
 msgstr "%.1f PiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2751
+#: glib/gutils.c:2873
 #, c-format
 msgid "%.1f EiB"
 msgstr "%.1f EiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2755
+#: glib/gutils.c:2877
 #, c-format
 msgid "%.1f kb"
 msgstr "%.1f kb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2757
+#: glib/gutils.c:2879
 #, c-format
 msgid "%.1f Mb"
 msgstr "%.1f Mb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2759
+#: glib/gutils.c:2881
 #, c-format
 msgid "%.1f Gb"
 msgstr "%.1f Gb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2761
+#: glib/gutils.c:2883
 #, c-format
 msgid "%.1f Tb"
 msgstr "%.1f Tb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2763
+#: glib/gutils.c:2885
 #, c-format
 msgid "%.1f Pb"
 msgstr "%.1f Pb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2765
+#: glib/gutils.c:2887
 #, c-format
 msgid "%.1f Eb"
 msgstr "%.1f Eb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2769
+#: glib/gutils.c:2891
 #, c-format
 msgid "%.1f Kib"
 msgstr "%.1f Kib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2771
+#: glib/gutils.c:2893
 #, c-format
 msgid "%.1f Mib"
 msgstr "%.1f Mib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2773
+#: glib/gutils.c:2895
 #, c-format
 msgid "%.1f Gib"
 msgstr "%.1f Gib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2775
+#: glib/gutils.c:2897
 #, c-format
 msgid "%.1f Tib"
 msgstr "%.1f Tib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2777
+#: glib/gutils.c:2899
 #, c-format
 msgid "%.1f Pib"
 msgstr "%.1f Pib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2779
+#: glib/gutils.c:2901
 #, c-format
 msgid "%.1f Eib"
 msgstr "%.1f Eib"
 
-#: glib/gutils.c:2813 glib/gutils.c:2930
+#: glib/gutils.c:2935 glib/gutils.c:3052
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
 msgstr[0] "%u byte"
 msgstr[1] "%u bytes"
 
-#: glib/gutils.c:2817
+#: glib/gutils.c:2939
 #, c-format
 msgid "%u bit"
 msgid_plural "%u bits"
@@ -6126,7 +6204,7 @@ msgstr[0] "%u bit"
 msgstr[1] "%u bits"
 
 #. Translators: the %s in "%s bytes" will always be replaced by a number.
-#: glib/gutils.c:2884
+#: glib/gutils.c:3006
 #, c-format
 msgid "%s byte"
 msgid_plural "%s bytes"
@@ -6134,7 +6212,7 @@ msgstr[0] "%s byte"
 msgstr[1] "%s bytes"
 
 #. Translators: the %s in "%s bits" will always be replaced by a number.
-#: glib/gutils.c:2889
+#: glib/gutils.c:3011
 #, c-format
 msgid "%s bit"
 msgid_plural "%s bits"
@@ -6146,32 +6224,32 @@ msgstr[1] "%s bits"
 #. * compatibility.  Users will not see this string unless a program is using this deprecated function.
 #. * Please translate as literally as possible.
 #.
-#: glib/gutils.c:2943
+#: glib/gutils.c:3065
 #, c-format
 msgid "%.1f KB"
 msgstr "%.1f KB"
 
-#: glib/gutils.c:2948
+#: glib/gutils.c:3070
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
-#: glib/gutils.c:2953
+#: glib/gutils.c:3075
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
-#: glib/gutils.c:2958
+#: glib/gutils.c:3080
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
-#: glib/gutils.c:2963
+#: glib/gutils.c:3085
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
-#: glib/gutils.c:2968
+#: glib/gutils.c:3090
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
@@ -6311,9 +6389,6 @@ msgstr "%.1f EB"
 #~ "Unexpected option length while checking if SO_PASSCRED is enabled for "
 #~ "socket. Expected %d bytes, got %d"
 
-#~ msgid "URIs not supported"
-#~ msgstr "URIs not supported"
-
 #~ msgid "association changes not supported on win32"
 #~ msgstr "association changes not supported on win32"
 
index b78329d..e2fdc38 100644 (file)
--- a/po/es.po
+++ b/po/es.po
@@ -9,46 +9,57 @@
 #
 # Jorge González <jorgegonz@svn.gnome.org>, 2007, 2008, 2009, 2010, 2011, 2012.
 # Daniel Mustieles <daniel.mustieles@gmail.com>, 2010-2022.
+# Daniel Mustieles García <daniel.mustieles@gmail.com>, 2022.
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: glib.master\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/glib/issues\n"
-"POT-Creation-Date: 2022-02-01 17:05+0000\n"
-"PO-Revision-Date: 2022-02-07 13:55+0100\n"
-"Last-Translator: Daniel Mustieles <daniel.mustieles@gmail.com>\n"
+"POT-Creation-Date: 2022-02-22 18:23+0000\n"
+"PO-Revision-Date: 2022-02-24 12:31+0100\n"
+"Last-Translator: Daniel Mustieles García <daniel.mustieles@gmail.com>\n"
 "Language-Team: Spanish - Spain <gnome-es-list@gnome.org>\n"
 "Language: es_ES\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+"Plural-Forms: nplurals=2; plural=(n != 1)\n"
 "X-Generator: Gtranslator 41.0\n"
 
-#: gio/gapplication.c:500
+#: gio/gappinfo.c:333
+msgid "Setting default applications not supported yet"
+msgstr "Todavía no se soporta establecer aplicaciones predeterminadas"
+
+#: gio/gappinfo.c:366
+msgid "Setting application as last used for type not supported yet"
+msgstr ""
+"Establecer aplicación como la usada por última vez para el tipo no está "
+"soportado"
+
+#: gio/gapplication.c:497
 msgid "GApplication options"
 msgstr "Opciones de GApplication"
 
-#: gio/gapplication.c:500
+#: gio/gapplication.c:497
 msgid "Show GApplication options"
 msgstr "Mostrar las opciones de GApplication"
 
-#: gio/gapplication.c:545
+#: gio/gapplication.c:542
 msgid "Enter GApplication service mode (use from D-Bus service files)"
 msgstr ""
 "Entrar en modo de servicio de GApplication (usar desde archivos de servicio "
 "de D-Bus)"
 
-#: gio/gapplication.c:557
+#: gio/gapplication.c:554
 msgid "Override the application’s ID"
 msgstr "Omitir el ID de la aplicación"
 
-#: gio/gapplication.c:569
+#: gio/gapplication.c:566
 msgid "Replace the running instance"
 msgstr "Reemplazar la instancia actual en ejecución"
 
 #: gio/gapplication-tool.c:45 gio/gapplication-tool.c:46 gio/gio-tool.c:227
-#: gio/gresource-tool.c:494 gio/gsettings-tool.c:572
+#: gio/gresource-tool.c:494 gio/gsettings-tool.c:584
 msgid "Print help"
 msgstr "Imprimir ayuda"
 
@@ -60,7 +71,7 @@ msgstr "[COMANDO]"
 msgid "Print version"
 msgstr "Imprimir versión"
 
-#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:578
+#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:590
 msgid "Print version information and exit"
 msgstr "Mostrar información de la versión y salir"
 
@@ -124,8 +135,8 @@ msgid "Application identifier in D-Bus format (eg: org.example.viewer)"
 msgstr ""
 "Identificador de la aplicación en formato D-Bus (ej. org.example.viewer)"
 
-#: gio/gapplication-tool.c:74 gio/glib-compile-resources.c:738
-#: gio/glib-compile-resources.c:744 gio/glib-compile-resources.c:772
+#: gio/gapplication-tool.c:74 gio/glib-compile-resources.c:820
+#: gio/glib-compile-resources.c:826 gio/glib-compile-resources.c:855
 #: gio/gresource-tool.c:501 gio/gresource-tool.c:567
 msgid "FILE"
 msgstr "ARCHIVO"
@@ -151,7 +162,7 @@ msgid "Optional parameter to the action invocation, in GVariant format"
 msgstr ""
 "Parámetro opcionales para la invocación de la acción, en formato GVariant"
 
-#: gio/gapplication-tool.c:98 gio/gresource-tool.c:532 gio/gsettings-tool.c:664
+#: gio/gapplication-tool.c:98 gio/gresource-tool.c:532 gio/gsettings-tool.c:676
 #, c-format
 msgid ""
 "Unknown command %s\n"
@@ -165,7 +176,7 @@ msgid "Usage:\n"
 msgstr "Uso:\n"
 
 #: gio/gapplication-tool.c:116 gio/gresource-tool.c:557
-#: gio/gsettings-tool.c:699
+#: gio/gsettings-tool.c:711
 msgid "Arguments:\n"
 msgstr "Argumentos:\n"
 
@@ -290,7 +301,7 @@ msgstr "El flujo ya se cerró"
 msgid "Truncate not supported on base stream"
 msgstr "No se soporta el truncado en el flujo base"
 
-#: gio/gcancellable.c:319 gio/gdbusconnection.c:1873 gio/gdbusprivate.c:1416
+#: gio/gcancellable.c:319 gio/gdbusconnection.c:1873 gio/gdbusprivate.c:1418
 #: gio/gsimpleasyncresult.c:871 gio/gsimpleasyncresult.c:897
 #, c-format
 msgid "Operation was cancelled"
@@ -311,7 +322,7 @@ msgstr "No hay suficiente espacio en el destino"
 #: gio/gcharsetconverter.c:342 gio/gdatainputstream.c:848
 #: gio/gdatainputstream.c:1266 glib/gconvert.c:449 glib/gconvert.c:879
 #: glib/giochannel.c:1573 glib/giochannel.c:1615 glib/giochannel.c:2470
-#: glib/gutf8.c:875 glib/gutf8.c:1328
+#: glib/gutf8.c:890 glib/gutf8.c:1344
 msgid "Invalid byte sequence in conversion input"
 msgstr "Hay una secuencia de bytes no válida en la entrada de conversión"
 
@@ -321,7 +332,7 @@ 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:445 gio/gsocket.c:1143
+#: gio/gcharsetconverter.c:445 gio/gsocket.c:1147
 msgid "Cancellable initialization not supported"
 msgstr "La inicialización cancelable no eestá soportada"
 
@@ -336,7 +347,7 @@ msgstr ""
 msgid "Could not open converter from “%s” to “%s”"
 msgstr "No se pudo abrir el conversor de «%s» a «%s»"
 
-#: gio/gcontenttype.c:454
+#: gio/gcontenttype.c:470
 #, c-format
 msgid "%s type"
 msgstr "tipo %s"
@@ -350,23 +361,23 @@ msgstr "Tipo desconocido"
 msgid "%s filetype"
 msgstr "tipo de archivo %s"
 
-#: gio/gcredentials.c:323
+#: gio/gcredentials.c:335
 msgid "GCredentials contains invalid data"
 msgstr "GCredentials contiene datos no válidos"
 
-#: gio/gcredentials.c:383 gio/gcredentials.c:667
+#: gio/gcredentials.c:395 gio/gcredentials.c:686
 msgid "GCredentials is not implemented on this OS"
 msgstr "GCredentials no está implementado en este SO"
 
-#: gio/gcredentials.c:538 gio/gcredentials.c:556
+#: gio/gcredentials.c:550 gio/gcredentials.c:568
 msgid "There is no GCredentials support for your platform"
 msgstr "No existe soporte de GCredentials para su plataforma"
 
-#: gio/gcredentials.c:607
+#: gio/gcredentials.c:626
 msgid "GCredentials does not contain a process ID on this OS"
 msgstr "GCredentials no contiene un ID de proceso en este SO"
 
-#: gio/gcredentials.c:661
+#: gio/gcredentials.c:680
 msgid "Credentials spoofing is not possible on this OS"
 msgstr "No se soporta la burla de credenciales en este SO"
 
@@ -374,18 +385,18 @@ msgstr "No se soporta la burla de credenciales en este SO"
 msgid "Unexpected early end-of-stream"
 msgstr "Final de flujo inesperadamente prematuro"
 
-#: gio/gdbusaddress.c:159 gio/gdbusaddress.c:233 gio/gdbusaddress.c:322
+#: gio/gdbusaddress.c:162 gio/gdbusaddress.c:236 gio/gdbusaddress.c:325
 #, c-format
 msgid "Unsupported key “%s” in address entry “%s”"
 msgstr "Clave «%s» no soportada en la entrada de dirección «%s»"
 
-#: gio/gdbusaddress.c:172
+#: gio/gdbusaddress.c:175
 #, c-format
 msgid "Meaningless key/value pair combination in address entry “%s”"
 msgstr ""
 "Combinación del par clave/valor sin sentido en la entrada de dirección «%s»"
 
-#: gio/gdbusaddress.c:181
+#: gio/gdbusaddress.c:184
 #, c-format
 msgid ""
 "Address “%s” is invalid (need exactly one of path, dir, tmpdir, or abstract "
@@ -394,29 +405,29 @@ msgstr ""
 "La dirección «%s» no es válida (se necesita exactamente una ruta, carpeta, "
 "carpeta temporal o claves abstractas)"
 
-#: gio/gdbusaddress.c:248 gio/gdbusaddress.c:259 gio/gdbusaddress.c:274
-#: gio/gdbusaddress.c:337 gio/gdbusaddress.c:348
+#: gio/gdbusaddress.c:251 gio/gdbusaddress.c:262 gio/gdbusaddress.c:277
+#: gio/gdbusaddress.c:340 gio/gdbusaddress.c:351
 #, c-format
 msgid "Error in address “%s” — the “%s” attribute is malformed"
 msgstr "Error en la dirección «%s» —  el atributo «%s» está mal formado"
 
-#: gio/gdbusaddress.c:418 gio/gdbusaddress.c:682
+#: gio/gdbusaddress.c:421 gio/gdbusaddress.c:680
 #, c-format
 msgid "Unknown or unsupported transport “%s” for address “%s”"
 msgstr "Transporte «%s» desconocido o no soportado para la dirección «%s»"
 
-#: gio/gdbusaddress.c:462
+#: gio/gdbusaddress.c:465
 #, c-format
 msgid "Address element “%s” does not contain a colon (:)"
 msgstr "El elemento de dirección «%s» no contiene dos puntos (:)"
 
-#: gio/gdbusaddress.c:471
+#: gio/gdbusaddress.c:474
 #, c-format
 msgid "Transport name in address element “%s” must not be empty"
 msgstr ""
 "El nombre del transporte en el elemento de dirección «%s» no debe estar vacío"
 
-#: gio/gdbusaddress.c:492
+#: gio/gdbusaddress.c:495
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” does not contain an equal "
@@ -425,7 +436,7 @@ msgstr ""
 "El par clave/valor %d, «%s», en el elemento de dirección «%s», no contiene "
 "un signo de igual"
 
-#: gio/gdbusaddress.c:503
+#: gio/gdbusaddress.c:506
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” must not have an empty key"
@@ -433,7 +444,7 @@ msgstr ""
 "El par clave/valor %d, «%s», en el elemento de dirección «%s», no debe "
 "contener una clave vacía"
 
-#: gio/gdbusaddress.c:517
+#: gio/gdbusaddress.c:520
 #, c-format
 msgid ""
 "Error unescaping key or value in Key/Value pair %d, “%s”, in address element "
@@ -442,7 +453,7 @@ msgstr ""
 "Error al desescapar la clave o el valor en el par clave/valor %d, «%s», en "
 "el elemento de dirección «%s»"
 
-#: gio/gdbusaddress.c:589
+#: gio/gdbusaddress.c:588
 #, c-format
 msgid ""
 "Error in address “%s” — the unix transport requires exactly one of the keys "
@@ -451,86 +462,86 @@ msgstr ""
 "Error en la dirección «%s»: el transporte UNIX requiere exactamente que una "
 "de las claves «path» o «abstract» esté establecida"
 
-#: gio/gdbusaddress.c:625
+#: gio/gdbusaddress.c:623
 #, c-format
 msgid "Error in address “%s” — the host attribute is missing or malformed"
 msgstr ""
 "Error en la dirección «%s»: falta o está mal formado el atributo para el "
 "servidor"
 
-#: gio/gdbusaddress.c:639
+#: gio/gdbusaddress.c:637
 #, c-format
 msgid "Error in address “%s” — the port attribute is missing or malformed"
 msgstr ""
 "Error en la dirección «%s»: falta o está mal formado el atributo para el "
 "puerto"
 
-#: gio/gdbusaddress.c:653
+#: gio/gdbusaddress.c:651
 #, c-format
 msgid "Error in address “%s” — the noncefile attribute is missing or malformed"
 msgstr ""
 "Error en la dirección «%s»: falta o está mal formado el atributo para el "
 "archivo de número usado una sola vez"
 
-#: gio/gdbusaddress.c:674
+#: gio/gdbusaddress.c:672
 msgid "Error auto-launching: "
 msgstr "Error al autolanzar: "
 
-#: gio/gdbusaddress.c:727
+#: gio/gdbusaddress.c:725
 #, 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:746
+#: gio/gdbusaddress.c:744
 #, 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:755
+#: gio/gdbusaddress.c:753
 #, 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:773
+#: gio/gdbusaddress.c:771
 #, 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:988
+#: gio/gdbusaddress.c:986
 msgid "The given address is empty"
 msgstr "La dirección proporcionada está vacía"
 
-#: gio/gdbusaddress.c:1101
+#: gio/gdbusaddress.c:1099
 #, c-format
-msgid "Cannot spawn a message bus when setuid"
-msgstr "No se puede lanzar («spawn») un mensaje al bus con setuid"
+msgid "Cannot spawn a message bus when AT_SECURE is set"
+msgstr "No se puede lanzar un mensaje cuando AT_SECURE está activado"
 
-#: gio/gdbusaddress.c:1108
+#: gio/gdbusaddress.c:1106
 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:1115
+#: gio/gdbusaddress.c:1113
 #, 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:1157
+#: gio/gdbusaddress.c:1155
 #, c-format
 msgid "Error spawning command line “%s”: "
 msgstr "Error al lanzar («spawn») el comando «%s»: "
 
-#: gio/gdbusaddress.c:1226
+#: gio/gdbusaddress.c:1224
 #, 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:1375 gio/gdbusconnection.c:7334
+#: gio/gdbusaddress.c:1373 gio/gdbusconnection.c:7334
 #, c-format
 msgid ""
 "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
@@ -539,7 +550,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:1384 gio/gdbusconnection.c:7343
+#: gio/gdbusaddress.c:1382 gio/gdbusconnection.c:7343
 msgid ""
 "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
 "variable is not set"
@@ -547,7 +558,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:1394
+#: gio/gdbusaddress.c:1392
 #, c-format
 msgid "Unknown bus type %d"
 msgstr "Tipo de bus %d desconocido"
@@ -577,12 +588,12 @@ msgstr "El ID del usuario debe ser el mismo en el par y el servidor"
 msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
 msgstr "Cancelado a través de GDBusAuthObserver::authorize-authenticated-peer"
 
-#: gio/gdbusauthmechanismsha1.c:298
+#: gio/gdbusauthmechanismsha1.c:300
 #, 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:313
+#: gio/gdbusauthmechanismsha1.c:315
 #, c-format
 msgid ""
 "Permissions on directory “%s” are malformed. Expected mode 0700, got 0%o"
@@ -590,34 +601,34 @@ msgstr ""
 "Los permisos de la carpeta «%s» están mal formados. Se esperaba el modo "
 "0700, se obtuvo 0%o"
 
-#: gio/gdbusauthmechanismsha1.c:346 gio/gdbusauthmechanismsha1.c:357
+#: gio/gdbusauthmechanismsha1.c:348 gio/gdbusauthmechanismsha1.c:359
 #, c-format
 msgid "Error creating directory “%s”: %s"
 msgstr "Error al crear la carpeta %s: %s"
 
-#: gio/gdbusauthmechanismsha1.c:359 gio/gfile.c:1062 gio/gfile.c:1300
-#: gio/gfile.c:1438 gio/gfile.c:1676 gio/gfile.c:1731 gio/gfile.c:1789
-#: gio/gfile.c:1873 gio/gfile.c:1930 gio/gfile.c:1994 gio/gfile.c:2049
-#: gio/gfile.c:3754 gio/gfile.c:3809 gio/gfile.c:4102 gio/gfile.c:4572
-#: gio/gfile.c:4983 gio/gfile.c:5068 gio/gfile.c:5158 gio/gfile.c:5255
-#: gio/gfile.c:5342 gio/gfile.c:5443 gio/gfile.c:8153 gio/gfile.c:8243
-#: gio/gfile.c:8327 gio/win32/gwinhttpfile.c:453
+#: gio/gdbusauthmechanismsha1.c:361 gio/gfile.c:1080 gio/gfile.c:1318
+#: gio/gfile.c:1456 gio/gfile.c:1694 gio/gfile.c:1749 gio/gfile.c:1807
+#: gio/gfile.c:1891 gio/gfile.c:1948 gio/gfile.c:2012 gio/gfile.c:2067
+#: gio/gfile.c:3772 gio/gfile.c:3912 gio/gfile.c:4205 gio/gfile.c:4675
+#: gio/gfile.c:5086 gio/gfile.c:5171 gio/gfile.c:5261 gio/gfile.c:5358
+#: gio/gfile.c:5445 gio/gfile.c:5546 gio/gfile.c:8375 gio/gfile.c:8465
+#: gio/gfile.c:8549 gio/win32/gwinhttpfile.c:453
 msgid "Operation not supported"
 msgstr "Operación no soportada"
 
-#: gio/gdbusauthmechanismsha1.c:402
+#: gio/gdbusauthmechanismsha1.c:404
 #, 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:425 gio/gdbusauthmechanismsha1.c:747
+#: gio/gdbusauthmechanismsha1.c:427 gio/gdbusauthmechanismsha1.c:769
 #, 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:439 gio/gdbusauthmechanismsha1.c:761
+#: gio/gdbusauthmechanismsha1.c:441 gio/gdbusauthmechanismsha1.c:783
 #, c-format
 msgid ""
 "First token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -625,7 +636,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:453 gio/gdbusauthmechanismsha1.c:775
+#: gio/gdbusauthmechanismsha1.c:455 gio/gdbusauthmechanismsha1.c:797
 #, c-format
 msgid ""
 "Second token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -633,37 +644,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:477
+#: gio/gdbusauthmechanismsha1.c:479
 #, 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:523
+#: gio/gdbusauthmechanismsha1.c:536
 #, c-format
 msgid "Error creating lock file “%s”: %s"
 msgstr "Error al crear el archivo de bloqueo «%s»: %s"
 
-#: gio/gdbusauthmechanismsha1.c:587
+#: gio/gdbusauthmechanismsha1.c:609
 #, c-format
 msgid "Error deleting stale lock file “%s”: %s"
 msgstr "Error al eliminar el archivo de bloqueo antiguo «%s»: %s"
 
-#: gio/gdbusauthmechanismsha1.c:626
+#: gio/gdbusauthmechanismsha1.c:648
 #, c-format
 msgid "Error closing (unlinked) lock file “%s”: %s"
 msgstr "Error al cerrar (desenlazar) el archivo de bloqueo «%s»: %s"
 
-#: gio/gdbusauthmechanismsha1.c:637
+#: gio/gdbusauthmechanismsha1.c:659
 #, c-format
 msgid "Error unlinking lock file “%s”: %s"
 msgstr "Error al desenlazar el archivo de bloqueo «%s»: %s"
 
-#: gio/gdbusauthmechanismsha1.c:714
+#: gio/gdbusauthmechanismsha1.c:736
 #, 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:908
+#: gio/gdbusauthmechanismsha1.c:930
 #, c-format
 msgid "(Additionally, releasing the lock for “%s” also failed: %s) "
 msgstr ""
@@ -770,28 +781,28 @@ msgstr "Ya se ha exportado un subárbol para %s"
 msgid "Object does not exist at path “%s”"
 msgstr "El objeto no existe en la ruta «%s»"
 
-#: gio/gdbusmessage.c:1311
+#: gio/gdbusmessage.c:1301
 msgid "type is INVALID"
 msgstr "el tipo no es válido («INVALID»)"
 
-#: gio/gdbusmessage.c:1322
+#: gio/gdbusmessage.c:1312
 msgid "METHOD_CALL message: PATH or MEMBER header field is missing"
 msgstr "Mensaje de METHOD_CALL: falta el campo de cabecera PATH o MEMEBER"
 
-#: gio/gdbusmessage.c:1333
+#: gio/gdbusmessage.c:1323
 msgid "METHOD_RETURN message: REPLY_SERIAL header field is missing"
 msgstr "Mensaje de METHOD_RETURN: falta el campo de cabecera REPLY_SERIAL"
 
-#: gio/gdbusmessage.c:1345
+#: gio/gdbusmessage.c:1335
 msgid "ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing"
 msgstr ""
 "Mensaje de ERROR: falta el campo de cabecera REPLY_SERRIAL o ERROR_NAME"
 
-#: gio/gdbusmessage.c:1358
+#: gio/gdbusmessage.c:1348
 msgid "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing"
 msgstr "Mensaje de SIGNAL: falta el campo de cabecera PATH, INTERFACE o MEMBER"
 
-#: gio/gdbusmessage.c:1366
+#: gio/gdbusmessage.c:1356
 msgid ""
 "SIGNAL message: The PATH header field is using the reserved value /org/"
 "freedesktop/DBus/Local"
@@ -799,7 +810,7 @@ msgstr ""
 "Mensaje de SIGNAL: el campo de cabecera PATH está usando el valor reservado /"
 "org/freedesktop/DBus/Local"
 
-#: gio/gdbusmessage.c:1374
+#: gio/gdbusmessage.c:1364
 msgid ""
 "SIGNAL message: The INTERFACE header field is using the reserved value org."
 "freedesktop.DBus.Local"
@@ -807,21 +818,21 @@ msgstr ""
 "Mensaje de SIGNAL: el campo de cabecera INTERFACE está usando el valor "
 "reservado org.freedesktop.DBus.Local"
 
-#: gio/gdbusmessage.c:1422 gio/gdbusmessage.c:1482
+#: gio/gdbusmessage.c:1412 gio/gdbusmessage.c:1472
 #, c-format
 msgid "Wanted to read %lu byte but only got %lu"
 msgid_plural "Wanted to read %lu bytes but only got %lu"
 msgstr[0] "Se quería leer %lu byte pero sólo se obtuvo %lu"
 msgstr[1] "Se querían leer %lu bytes pero sólo se obtuvo %lu"
 
-#: gio/gdbusmessage.c:1436
+#: gio/gdbusmessage.c:1426
 #, c-format
 msgid "Expected NUL byte after the string “%s” but found byte %d"
 msgstr ""
 "Se esperaba el byte NULL después de la cadena «%s» pero se encontró el byte "
 "%d"
 
-#: gio/gdbusmessage.c:1455
+#: gio/gdbusmessage.c:1445
 #, c-format
 msgid ""
 "Expected valid UTF-8 string but found invalid bytes at byte offset %d "
@@ -831,21 +842,21 @@ msgstr ""
 "en el byte desplazado %d (la longitud de la cadena es %d). La cadena UTF-8 "
 "válida hasta ese punto era «%s»."
 
-#: gio/gdbusmessage.c:1519 gio/gdbusmessage.c:1795 gio/gdbusmessage.c:2006
+#: gio/gdbusmessage.c:1509 gio/gdbusmessage.c:1785 gio/gdbusmessage.c:1996
 msgid "Value nested too deeply"
 msgstr "Valor anidado demasiado profundamente"
 
-#: gio/gdbusmessage.c:1687
+#: gio/gdbusmessage.c:1677
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus object path"
 msgstr "El valor analizado «%s» no es un objeto de ruta D-Bus válido"
 
-#: gio/gdbusmessage.c:1711
+#: gio/gdbusmessage.c:1701
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature"
 msgstr "El valor analizado «%s» no es una firma de D-Bus válida"
 
-#: gio/gdbusmessage.c:1762
+#: gio/gdbusmessage.c:1752
 #, c-format
 msgid ""
 "Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB)."
@@ -858,7 +869,7 @@ msgstr[1] ""
 "Se encontró un array de longitud %u bytes. La longitud máxima es 2<<26 bytes "
 "(64 MiB)."
 
-#: gio/gdbusmessage.c:1782
+#: gio/gdbusmessage.c:1772
 #, c-format
 msgid ""
 "Encountered array of type “a%c”, expected to have a length a multiple of %u "
@@ -867,17 +878,17 @@ msgstr ""
 "Encontrado un vector de tipo «a%c», esperando que su longitud fuese múltiplo "
 "de %u bytes, pero su longitud es de %u"
 
-#: gio/gdbusmessage.c:1936 gio/gdbusmessage.c:2655
+#: gio/gdbusmessage.c:1926 gio/gdbusmessage.c:2645
 msgid "Empty structures (tuples) are not allowed in D-Bus"
-msgstr "La estructuras vacías (tuplas) no están permitidas en D-Bus"
+msgstr "Las estructuras vacías (tuplas) no están permitidas en D-Bus"
 
-#: gio/gdbusmessage.c:1990
+#: gio/gdbusmessage.c:1980
 #, c-format
 msgid "Parsed value “%s” for variant is not a valid D-Bus signature"
 msgstr ""
 "El valor analizado «%s» para la variante no es una firma de D-Bus válida"
 
-#: gio/gdbusmessage.c:2031
+#: gio/gdbusmessage.c:2021
 #, c-format
 msgid ""
 "Error deserializing GVariant with type string “%s” from the D-Bus wire format"
@@ -885,7 +896,7 @@ msgstr ""
 "Error al deserializar GVariant con el tipo de cadena «%s» al formato de "
 "mensaje de D-Bus"
 
-#: gio/gdbusmessage.c:2216
+#: gio/gdbusmessage.c:2206
 #, c-format
 msgid ""
 "Invalid endianness value. Expected 0x6c (“l”) or 0x42 (“B”) but found value "
@@ -894,31 +905,31 @@ msgstr ""
 "Valor endian no válido. Se esperaba 0x6c («l») o 0x42 («B»)» pero se obtuvo "
 "el valor 0x%02x"
 
-#: gio/gdbusmessage.c:2235
+#: gio/gdbusmessage.c:2225
 #, c-format
 msgid "Invalid major protocol version. Expected 1 but found %d"
 msgstr ""
 "La versión principal del protocolo no es válida. Se esperaba 1 pero se "
 "encontró %d."
 
-#: gio/gdbusmessage.c:2293 gio/gdbusmessage.c:2891
+#: gio/gdbusmessage.c:2283 gio/gdbusmessage.c:2881
 msgid "Signature header found but is not of type signature"
 msgstr "Cabecera de firma encontrada pero no es del tipo firma"
 
-#: gio/gdbusmessage.c:2305
+#: gio/gdbusmessage.c:2295
 #, c-format
 msgid "Signature header with signature “%s” found but message body is empty"
 msgstr ""
 "Se encontró la cabecera de firma con firma «%s» pero el cuerpo del mensaje "
 "está vacío"
 
-#: gio/gdbusmessage.c:2320
+#: gio/gdbusmessage.c:2310
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature (for body)"
 msgstr ""
 "El valor analizado «%s» no es una firma de D-Bus válida (para el cuerpo)"
 
-#: gio/gdbusmessage.c:2352
+#: gio/gdbusmessage.c:2342
 #, 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"
@@ -929,11 +940,11 @@ msgstr[1] ""
 "No existe la cabecera de firma en el mensaje pero el cuerpo del mensaje "
 "tiene %u bytes"
 
-#: gio/gdbusmessage.c:2362
+#: gio/gdbusmessage.c:2352
 msgid "Cannot deserialize message: "
 msgstr "No se puede deserializar el mensaje: "
 
-#: gio/gdbusmessage.c:2708
+#: gio/gdbusmessage.c:2698
 #, c-format
 msgid ""
 "Error serializing GVariant with type string “%s” to the D-Bus wire format"
@@ -941,7 +952,7 @@ msgstr ""
 "Error al serializar GVariant con el tipo de cadena «%s» al formato de "
 "mensaje de D-Bus"
 
-#: gio/gdbusmessage.c:2845
+#: gio/gdbusmessage.c:2835
 #, c-format
 msgid ""
 "Number of file descriptors in message (%d) differs from header field (%d)"
@@ -949,17 +960,17 @@ msgstr ""
 "El número de descriptores de archivos en el mensaje (%d) es distinto del "
 "campo de cabecera (%d)"
 
-#: gio/gdbusmessage.c:2853
+#: gio/gdbusmessage.c:2843
 msgid "Cannot serialize message: "
 msgstr "No se puede serializar el mensaje: "
 
-#: gio/gdbusmessage.c:2906
+#: gio/gdbusmessage.c:2896
 #, c-format
 msgid "Message body has signature “%s” but there is no signature header"
 msgstr ""
 "El cuerpo del mensaje tiene la firma «%s» pero no existe la cabecera de firma"
 
-#: gio/gdbusmessage.c:2916
+#: gio/gdbusmessage.c:2906
 #, c-format
 msgid ""
 "Message body has type signature “%s” but signature in the header field is "
@@ -968,55 +979,55 @@ msgstr ""
 "El cuerpo del mensaje tiene un tipo de firma «%s» pero la firma en el campo "
 "de cabecera es «%s»"
 
-#: gio/gdbusmessage.c:2932
+#: gio/gdbusmessage.c:2922
 #, c-format
 msgid "Message body is empty but signature in the header field is “(%s)”"
 msgstr ""
 "El cuerpo del mensaje está vacío pero la firma en el campo de cabecera es "
 "«(%s)»"
 
-#: gio/gdbusmessage.c:3487
+#: gio/gdbusmessage.c:3477
 #, c-format
 msgid "Error return with body of type “%s”"
 msgstr "Error al devolver el cuerpo de tipo «%s»"
 
-#: gio/gdbusmessage.c:3495
+#: gio/gdbusmessage.c:3485
 msgid "Error return with empty body"
 msgstr "Error al devolver un cuepro vacío"
 
-#: gio/gdbusprivate.c:2246
+#: gio/gdbusprivate.c:2185
 #, c-format
 msgid "(Type any character to close this window)\n"
 msgstr "(Escriba un carácter cualquiera para cerrar esta ventana)\n"
 
-#: gio/gdbusprivate.c:2420
+#: gio/gdbusprivate.c:2371
 #, 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/gdbusprivate.c:2443
+#: gio/gdbusprivate.c:2394
 #, c-format
 msgid "Unable to get Hardware profile: %s"
 msgstr "No se pudo obtener el perfil de hardware: %s"
 
 #. Translators: Both placeholders are file paths
-#: gio/gdbusprivate.c:2494
+#: gio/gdbusprivate.c:2445
 #, c-format
 msgid "Unable to load %s or %s: "
 msgstr "No se pudo cargar «%s» o %s: "
 
-#: gio/gdbusproxy.c:1569
+#: gio/gdbusproxy.c:1573
 #, c-format
 msgid "Error calling StartServiceByName for %s: "
 msgstr "Error al llamar StartSereviceByName para %s: "
 
-#: gio/gdbusproxy.c:1592
+#: gio/gdbusproxy.c:1596
 #, c-format
 msgid "Unexpected reply %d from StartServiceByName(\"%s\") method"
 msgstr "Respuesta %d no esperada del método StartServiceByName(«%s»)"
 
-#: gio/gdbusproxy.c:2699 gio/gdbusproxy.c:2834
+#: gio/gdbusproxy.c:2707 gio/gdbusproxy.c:2842
 #, c-format
 msgid ""
 "Cannot invoke method; proxy is for the well-known name %s without an owner, "
@@ -1074,60 +1085,60 @@ msgstr ""
 "\n"
 "Use «%s COMANDO --help» para obtener ayuda de cada comando.\n"
 
-#: gio/gdbus-tool.c:201 gio/gdbus-tool.c:273 gio/gdbus-tool.c:345
-#: gio/gdbus-tool.c:369 gio/gdbus-tool.c:859 gio/gdbus-tool.c:1236
-#: gio/gdbus-tool.c:1724
+#: gio/gdbus-tool.c:202 gio/gdbus-tool.c:274 gio/gdbus-tool.c:346
+#: gio/gdbus-tool.c:370 gio/gdbus-tool.c:860 gio/gdbus-tool.c:1245
+#: gio/gdbus-tool.c:1733
 #, c-format
 msgid "Error: %s\n"
 msgstr "Error: %s\n"
 
-#: gio/gdbus-tool.c:212 gio/gdbus-tool.c:286 gio/gdbus-tool.c:1740
+#: gio/gdbus-tool.c:213 gio/gdbus-tool.c:287 gio/gdbus-tool.c:1749
 #, c-format
 msgid "Error parsing introspection XML: %s\n"
 msgstr "Error al analizar la introspección XML: %s\n"
 
-#: gio/gdbus-tool.c:250
+#: gio/gdbus-tool.c:251
 #, c-format
 msgid "Error: %s is not a valid name\n"
 msgstr "Error: %s no es un nombre válido\n"
 
-#: gio/gdbus-tool.c:255 gio/gdbus-tool.c:745 gio/gdbus-tool.c:1060
-#: gio/gdbus-tool.c:1890 gio/gdbus-tool.c:2130
+#: gio/gdbus-tool.c:256 gio/gdbus-tool.c:746 gio/gdbus-tool.c:1064
+#: gio/gdbus-tool.c:1899 gio/gdbus-tool.c:2139
 #, c-format
 msgid "Error: %s is not a valid object path\n"
 msgstr "Error: %s no es una ruta de objeto válida\n"
 
-#: gio/gdbus-tool.c:403
+#: gio/gdbus-tool.c:404
 msgid "Connect to the system bus"
 msgstr "Conectar con el bus del sistema"
 
-#: gio/gdbus-tool.c:404
+#: gio/gdbus-tool.c:405
 msgid "Connect to the session bus"
 msgstr "Conectar con el bus de sesión"
 
-#: gio/gdbus-tool.c:405
+#: gio/gdbus-tool.c:406
 msgid "Connect to given D-Bus address"
 msgstr "Conectar con la dirección de D-Bus proporcionada"
 
-#: gio/gdbus-tool.c:415
+#: gio/gdbus-tool.c:416
 msgid "Connection Endpoint Options:"
 msgstr "Opciones de conexión del extremo:"
 
-#: gio/gdbus-tool.c:416
+#: gio/gdbus-tool.c:417
 msgid "Options specifying the connection endpoint"
 msgstr "Opciones para especificar la conexión del extremo:"
 
-#: gio/gdbus-tool.c:439
+#: gio/gdbus-tool.c:440
 #, c-format
 msgid "No connection endpoint specified"
 msgstr "No se especificó ningún punto de conexión extremo"
 
-#: gio/gdbus-tool.c:449
+#: gio/gdbus-tool.c:450
 #, c-format
 msgid "Multiple connection endpoints specified"
 msgstr "Se especificaron varios puntos de conexión extremos"
 
-#: gio/gdbus-tool.c:522
+#: gio/gdbus-tool.c:523
 #, c-format
 msgid ""
 "Warning: According to introspection data, interface “%s” does not exist\n"
@@ -1135,7 +1146,7 @@ msgstr ""
 "Advertencia: según la introspección de los datos, la interfaz «%s» no "
 "existe\n"
 
-#: gio/gdbus-tool.c:531
+#: gio/gdbus-tool.c:532
 #, c-format
 msgid ""
 "Warning: According to introspection data, method “%s” does not exist on "
@@ -1144,161 +1155,165 @@ msgstr ""
 "Advertencia: según la introspección de los datos, el método «%s» no existe "
 "en la interfaz «%s»\n"
 
-#: gio/gdbus-tool.c:593
+#: gio/gdbus-tool.c:594
 msgid "Optional destination for signal (unique name)"
 msgstr "Destino opcional para la señal (nombre único)"
 
-#: gio/gdbus-tool.c:594
+#: gio/gdbus-tool.c:595
 msgid "Object path to emit signal on"
 msgstr "Ruta del objeto sobre el que emitir la señal"
 
-#: gio/gdbus-tool.c:595
+#: gio/gdbus-tool.c:596
 msgid "Signal and interface name"
 msgstr "Nombres de la interfaz y señal"
 
-#: gio/gdbus-tool.c:628
+#: gio/gdbus-tool.c:629
 msgid "Emit a signal."
 msgstr "Emitir una señal."
 
-#: gio/gdbus-tool.c:683 gio/gdbus-tool.c:997 gio/gdbus-tool.c:1827
-#: gio/gdbus-tool.c:2059 gio/gdbus-tool.c:2279
+#: gio/gdbus-tool.c:684 gio/gdbus-tool.c:1001 gio/gdbus-tool.c:1836
+#: gio/gdbus-tool.c:2068 gio/gdbus-tool.c:2288
 #, c-format
 msgid "Error connecting: %s\n"
 msgstr "Error al conectar: %s\n"
 
-#: gio/gdbus-tool.c:703
+#: gio/gdbus-tool.c:704
 #, c-format
 msgid "Error: %s is not a valid unique bus name.\n"
 msgstr "Error: %s no es un nombre de bus único válido.\n"
 
-#: gio/gdbus-tool.c:722 gio/gdbus-tool.c:1040 gio/gdbus-tool.c:1870
+#: gio/gdbus-tool.c:723 gio/gdbus-tool.c:1044 gio/gdbus-tool.c:1879
 msgid "Error: Object path is not specified\n"
 msgstr "Error: no se especificó la ruta del objeto\n"
 
-#: gio/gdbus-tool.c:765
+#: gio/gdbus-tool.c:766
 msgid "Error: Signal name is not specified\n"
 msgstr "Error: no se especificó el nombre de la señal\n"
 
-#: gio/gdbus-tool.c:779
+#: gio/gdbus-tool.c:780
 #, c-format
 msgid "Error: Signal name “%s” is invalid\n"
 msgstr "Error: el nombre de la señal «%s» no es válido\n"
 
-#: gio/gdbus-tool.c:791
+#: gio/gdbus-tool.c:792
 #, c-format
 msgid "Error: %s is not a valid interface name\n"
 msgstr "Error: %s no es un nombre de interfaz válida\n"
 
-#: gio/gdbus-tool.c:797
+#: gio/gdbus-tool.c:798
 #, c-format
 msgid "Error: %s is not a valid member name\n"
 msgstr "Error: %s no es un nombre de miembro válido\n"
 
 #. Use the original non-"parse-me-harder" error
-#: gio/gdbus-tool.c:834 gio/gdbus-tool.c:1172
+#: gio/gdbus-tool.c:835 gio/gdbus-tool.c:1176
 #, c-format
 msgid "Error parsing parameter %d: %s\n"
 msgstr "Error al analizar el parámetro %d: %s\n"
 
-#: gio/gdbus-tool.c:866
+#: gio/gdbus-tool.c:867
 #, c-format
 msgid "Error flushing connection: %s\n"
 msgstr "Error al limpiar la conexión: %s\n"
 
-#: gio/gdbus-tool.c:893
+#: gio/gdbus-tool.c:895
 msgid "Destination name to invoke method on"
 msgstr "Nombre del detino sobre el que invocar elmétodo"
 
-#: gio/gdbus-tool.c:894
+#: gio/gdbus-tool.c:896
 msgid "Object path to invoke method on"
 msgstr "Ruta del objeto sobre la que invocar el método"
 
-#: gio/gdbus-tool.c:895
+#: gio/gdbus-tool.c:897
 msgid "Method and interface name"
 msgstr "Nombre de la interfaz y método"
 
-#: gio/gdbus-tool.c:896
+#: gio/gdbus-tool.c:898
 msgid "Timeout in seconds"
 msgstr "Tiempo de expiración en segundos"
 
-#: gio/gdbus-tool.c:942
+#: gio/gdbus-tool.c:899
+msgid "Allow interactive authorization"
+msgstr "Permitir autorización interactiva"
+
+#: gio/gdbus-tool.c:946
 msgid "Invoke a method on a remote object."
 msgstr "Invocar un método en un objeto remoto."
 
-#: gio/gdbus-tool.c:1014 gio/gdbus-tool.c:1844 gio/gdbus-tool.c:2084
+#: gio/gdbus-tool.c:1018 gio/gdbus-tool.c:1853 gio/gdbus-tool.c:2093
 msgid "Error: Destination is not specified\n"
 msgstr "Error: el destino no está especificado\n"
 
-#: gio/gdbus-tool.c:1025 gio/gdbus-tool.c:1861 gio/gdbus-tool.c:2095
+#: gio/gdbus-tool.c:1029 gio/gdbus-tool.c:1870 gio/gdbus-tool.c:2104
 #, c-format
 msgid "Error: %s is not a valid bus name\n"
 msgstr "Error: %s no es un nombre de bus válido\n"
 
-#: gio/gdbus-tool.c:1075
+#: gio/gdbus-tool.c:1079
 msgid "Error: Method name is not specified\n"
 msgstr "Error: no se especificó el nombre del método\n"
 
-#: gio/gdbus-tool.c:1086
+#: gio/gdbus-tool.c:1090
 #, c-format
 msgid "Error: Method name “%s” is invalid\n"
 msgstr "Error: el nombre del método «%s» no es válido\n"
 
-#: gio/gdbus-tool.c:1164
+#: gio/gdbus-tool.c:1168
 #, c-format
 msgid "Error parsing parameter %d of type “%s”: %s\n"
 msgstr "Error al analizar el parámetro %d del tipo «%s»: %s\n"
 
-#: gio/gdbus-tool.c:1190
+#: gio/gdbus-tool.c:1194
 #, c-format
 msgid "Error adding handle %d: %s\n"
 msgstr "Error al añadir el manejador %d: %s\n"
 
-#: gio/gdbus-tool.c:1686
+#: gio/gdbus-tool.c:1695
 msgid "Destination name to introspect"
 msgstr "Nombre de destino que introspeccionar"
 
-#: gio/gdbus-tool.c:1687
+#: gio/gdbus-tool.c:1696
 msgid "Object path to introspect"
 msgstr "Ruta del objeto que introspeccionar"
 
-#: gio/gdbus-tool.c:1688
+#: gio/gdbus-tool.c:1697
 msgid "Print XML"
 msgstr "Imprimir XML"
 
-#: gio/gdbus-tool.c:1689
+#: gio/gdbus-tool.c:1698
 msgid "Introspect children"
 msgstr "Introspeccionar hijo"
 
-#: gio/gdbus-tool.c:1690
+#: gio/gdbus-tool.c:1699
 msgid "Only print properties"
 msgstr "Solo mostrar propiedades"
 
-#: gio/gdbus-tool.c:1779
+#: gio/gdbus-tool.c:1788
 msgid "Introspect a remote object."
 msgstr "Introspeccionar un objeto remoto."
 
-#: gio/gdbus-tool.c:1985
+#: gio/gdbus-tool.c:1994
 msgid "Destination name to monitor"
 msgstr "Nombre de destino para monitorizar"
 
-#: gio/gdbus-tool.c:1986
+#: gio/gdbus-tool.c:1995
 msgid "Object path to monitor"
 msgstr "Ruta objeto para monitorizar"
 
-#: gio/gdbus-tool.c:2011
+#: gio/gdbus-tool.c:2020
 msgid "Monitor a remote object."
 msgstr "Monitorizar un objeto remoto."
 
-#: gio/gdbus-tool.c:2069
+#: gio/gdbus-tool.c:2078
 msgid "Error: can’t monitor a non-message-bus connection\n"
 msgstr ""
 "Error: no se puede monitorizar una conexión que no sea de mensajes del bus\n"
 
-#: gio/gdbus-tool.c:2193
+#: gio/gdbus-tool.c:2202
 msgid "Service to activate before waiting for the other one (well-known name)"
 msgstr "Servicio que activar antes de esperar a otro (nombre conocido)"
 
-#: gio/gdbus-tool.c:2196
+#: gio/gdbus-tool.c:2205
 msgid ""
 "Timeout to wait for before exiting with an error (seconds); 0 for no timeout "
 "(default)"
@@ -1306,65 +1321,70 @@ msgstr ""
 "Tiempo que esperar antes de salir con un error (en segundos); 0 para que no "
 "haya tiempo de expiración (predeterminado)"
 
-#: gio/gdbus-tool.c:2244
+#: gio/gdbus-tool.c:2253
 msgid "[OPTION…] BUS-NAME"
 msgstr "[OPCIÓN…] NOMBRE-BUS"
 
-#: gio/gdbus-tool.c:2245
+#: gio/gdbus-tool.c:2254
 msgid "Wait for a bus name to appear."
 msgstr "Esperar a que aparezca el nombre del bus."
 
-#: gio/gdbus-tool.c:2321
+#: gio/gdbus-tool.c:2330
 msgid "Error: A service to activate for must be specified.\n"
 msgstr "Error: se debe especificar un servicio que activar.\n"
 
-#: gio/gdbus-tool.c:2326
+#: gio/gdbus-tool.c:2335
 msgid "Error: A service to wait for must be specified.\n"
 msgstr "Error: se debe especificar un servicio al que esperar.\n"
 
-#: gio/gdbus-tool.c:2331
+#: gio/gdbus-tool.c:2340
 msgid "Error: Too many arguments.\n"
 msgstr "Demasiados argumentos.\n"
 
-#: gio/gdbus-tool.c:2339 gio/gdbus-tool.c:2346
+#: gio/gdbus-tool.c:2348 gio/gdbus-tool.c:2355
 #, c-format
 msgid "Error: %s is not a valid well-known bus name.\n"
 msgstr "Error: %s no es un nombre de bus conocido válido\n"
 
-#: gio/gdesktopappinfo.c:2106 gio/gdesktopappinfo.c:4935
+#: gio/gdebugcontrollerdbus.c:357
+#, c-format
+msgid "Not authorized to change debug settings"
+msgstr "No autorizado para cambiar la configuración de depuración"
+
+#: gio/gdesktopappinfo.c:2178 gio/gdesktopappinfo.c:5105
 msgid "Unnamed"
 msgstr "Sin nombre"
 
-#: gio/gdesktopappinfo.c:2516
+#: gio/gdesktopappinfo.c:2588
 msgid "Desktop file didn’t specify Exec field"
 msgstr "El archivo de escritorio no especificó el campo Exec"
 
-#: gio/gdesktopappinfo.c:2804
+#: gio/gdesktopappinfo.c:2896
 msgid "Unable to find terminal required for application"
 msgstr "Imposible encontrar el terminal requerido por la aplicación"
 
-#: gio/gdesktopappinfo.c:3455
+#: gio/gdesktopappinfo.c:3625
 #, c-format
 msgid "Can’t create user application configuration folder %s: %s"
 msgstr ""
 "No se puede crear la carpeta de configuración de la aplicación %s del "
 "usuario: %s"
 
-#: gio/gdesktopappinfo.c:3459
+#: gio/gdesktopappinfo.c:3629
 #, c-format
 msgid "Can’t create user MIME configuration folder %s: %s"
 msgstr "No se puede crear la carpeta de configuración MIME %s del usuario: %s"
 
-#: gio/gdesktopappinfo.c:3701 gio/gdesktopappinfo.c:3725
+#: gio/gdesktopappinfo.c:3871 gio/gdesktopappinfo.c:3895
 msgid "Application information lacks an identifier"
 msgstr "La información de la aplicación carece de un identificador"
 
-#: gio/gdesktopappinfo.c:3961
+#: gio/gdesktopappinfo.c:4131
 #, c-format
 msgid "Can’t create user desktop file %s"
 msgstr "No se puede crear el archivo de escritorio %s del usuario"
 
-#: gio/gdesktopappinfo.c:4097
+#: gio/gdesktopappinfo.c:4267
 #, c-format
 msgid "Custom definition for %s"
 msgstr "Definición personalizada para %s"
@@ -1392,7 +1412,7 @@ msgstr "la unidad no implementa reproducir"
 msgid "drive doesn’t implement stop"
 msgstr "la unidad no implementa detener"
 
-#: gio/gdtlsconnection.c:1153 gio/gtlsconnection.c:920
+#: gio/gdtlsconnection.c:1186 gio/gtlsconnection.c:955
 msgid "TLS backend does not implement TLS binding retrieval"
 msgstr "El «backend» de TLS no implementa recuperación de enlace de TLS"
 
@@ -1433,73 +1453,73 @@ msgstr "Se esperaba un GEmblem para GEmblemedIconjo"
 #. * trying to find the enclosing (user visible)
 #. * mount of a file, but none exists.
 #.
-#: gio/gfile.c:1561
+#: gio/gfile.c:1579
 msgid "Containing mount does not exist"
 msgstr "El punto de montaje contenido no existe"
 
-#: gio/gfile.c:2608 gio/glocalfile.c:2486
+#: gio/gfile.c:2626 gio/glocalfile.c:2486
 msgid "Can’t copy over directory"
 msgstr "No se puede copiar sobre la carpeta"
 
-#: gio/gfile.c:2668
+#: gio/gfile.c:2686
 msgid "Can’t copy directory over directory"
 msgstr "No se puede copiar una carpeta sobre otra"
 
-#: gio/gfile.c:2676
+#: gio/gfile.c:2694
 msgid "Target file exists"
 msgstr "El archivo destino ya existe"
 
-#: gio/gfile.c:2695
+#: gio/gfile.c:2713
 msgid "Can’t recursively copy directory"
 msgstr "No se puede copiar la carpeta recursivamente"
 
-#: gio/gfile.c:2996
+#: gio/gfile.c:3014
 msgid "Splice not supported"
 msgstr "La unión no  está soportada"
 
-#: gio/gfile.c:3000
+#: gio/gfile.c:3018
 #, c-format
 msgid "Error splicing file: %s"
 msgstr "Error al unir el archivo: %s"
 
-#: gio/gfile.c:3152
+#: gio/gfile.c:3170
 msgid "Copy (reflink/clone) between mounts is not supported"
 msgstr "Copiar (reflink/clone) entre puntos de montaje no está soportado"
 
-#: gio/gfile.c:3156
+#: gio/gfile.c:3174
 msgid "Copy (reflink/clone) is not supported or invalid"
 msgstr "Copiar (reflink/clone) no está soportado o no es válido"
 
-#: gio/gfile.c:3161
+#: gio/gfile.c:3179
 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:3226
+#: gio/gfile.c:3244
 msgid "Can’t copy special file"
 msgstr "No se puede copiar el archivo especial"
 
-#: gio/gfile.c:4035
+#: gio/gfile.c:4138
 msgid "Invalid symlink value given"
 msgstr "El valor del enlace simbólico dado no es válido"
 
-#: gio/gfile.c:4045 glib/gfileutils.c:2333
+#: gio/gfile.c:4148 glib/gfileutils.c:2333
 msgid "Symbolic links not supported"
 msgstr "Enlaces simbólicos no soportados"
 
-#: gio/gfile.c:4213
+#: gio/gfile.c:4316
 msgid "Trash not supported"
 msgstr "No se soporta mover a la papelera"
 
-#: gio/gfile.c:4325
+#: gio/gfile.c:4428
 #, c-format
 msgid "File names cannot contain “%c”"
 msgstr "Los nombres de archivo no pueden contener «%c»"
 
-#: gio/gfile.c:6806 gio/gvolume.c:364
+#: gio/gfile.c:7028 gio/gvolume.c:364
 msgid "volume doesn’t implement mount"
 msgstr "el volumen no implementa el montaje"
 
-#: gio/gfile.c:6920 gio/gfile.c:6968
+#: gio/gfile.c:7142 gio/gfile.c:7190
 msgid "No application is registered as handling this file"
 msgstr "No hay ninguna aplicación registrada para manejar este archivo"
 
@@ -1544,7 +1564,7 @@ msgstr "No se permite truncar en el flujo de entrada"
 msgid "Truncate not supported on stream"
 msgstr "No se soporta el truncamiento en el flujo"
 
-#: gio/ghttpproxy.c:91 gio/gresolver.c:443 gio/gresolver.c:596
+#: gio/ghttpproxy.c:91 gio/gresolver.c:458 gio/gresolver.c:611
 #: glib/gconvert.c:1825
 msgid "Invalid hostname"
 msgstr "El nombre del host no es válido"
@@ -1632,7 +1652,7 @@ msgid "Could not parse “%s” as IP address mask"
 msgstr "No se pudo analizar «%s» como una máscara de una dirección IP"
 
 #: gio/ginetsocketaddress.c:203 gio/ginetsocketaddress.c:220
-#: gio/gnativesocketaddress.c:109 gio/gunixsocketaddress.c:221
+#: gio/gnativesocketaddress.c:109 gio/gunixsocketaddress.c:228
 msgid "Not enough space for socket address"
 msgstr "No hay suficiente espacio para la dirección del socket"
 
@@ -2476,15 +2496,15 @@ msgstr "Error al comprimir el archivo %s"
 msgid "text may not appear inside <%s>"
 msgstr "El texto no debe aparecer dentro de <%s>"
 
-#: gio/glib-compile-resources.c:737 gio/glib-compile-schemas.c:2172
+#: gio/glib-compile-resources.c:819 gio/glib-compile-schemas.c:2172
 msgid "Show program version and exit"
 msgstr "Mostrar la versión del programa y salir"
 
-#: gio/glib-compile-resources.c:738
+#: gio/glib-compile-resources.c:820
 msgid "Name of the output file"
 msgstr "Nombre del archivo de salida"
 
-#: gio/glib-compile-resources.c:739
+#: gio/glib-compile-resources.c:821
 msgid ""
 "The directories to load files referenced in FILE from (default: current "
 "directory)"
@@ -2492,49 +2512,49 @@ msgstr ""
 "La carpeta de la que se tienen que leer los archivos indicados en ARCHIVO "
 "(la predeterminada es la carpeta actual)"
 
-#: gio/glib-compile-resources.c:739 gio/glib-compile-schemas.c:2173
+#: gio/glib-compile-resources.c:821 gio/glib-compile-schemas.c:2173
 #: gio/glib-compile-schemas.c:2202
 msgid "DIRECTORY"
 msgstr "CARPETA"
 
-#: gio/glib-compile-resources.c:740
+#: gio/glib-compile-resources.c:822
 msgid ""
 "Generate output in the format selected for by the target filename extension"
 msgstr ""
 "Generar salida en el formato seleccionado por la extensión del nombre del "
 "archivo objetivo"
 
-#: gio/glib-compile-resources.c:741
+#: gio/glib-compile-resources.c:823
 msgid "Generate source header"
 msgstr "Generar cabecera fuente"
 
-#: gio/glib-compile-resources.c:742
+#: gio/glib-compile-resources.c:824
 msgid "Generate source code used to link in the resource file into your code"
 msgstr ""
 "Generar el código fuente usado para enlazar el archivo del recurso en su "
 "código fuente"
 
-#: gio/glib-compile-resources.c:743
+#: gio/glib-compile-resources.c:825
 msgid "Generate dependency list"
 msgstr "Generar lista de dependencias"
 
-#: gio/glib-compile-resources.c:744
+#: gio/glib-compile-resources.c:826
 msgid "Name of the dependency file to generate"
 msgstr "Nombre del archivo de dependencias que generar"
 
-#: gio/glib-compile-resources.c:745
+#: gio/glib-compile-resources.c:827
 msgid "Include phony targets in the generated dependency file"
 msgstr "Incluir objetivos falsos en el archivo de dependencias generado"
 
-#: gio/glib-compile-resources.c:746
+#: gio/glib-compile-resources.c:828
 msgid "Don’t automatically create and register resource"
 msgstr "No crear y registrar automáticamente un recurso"
 
-#: gio/glib-compile-resources.c:747
+#: gio/glib-compile-resources.c:829
 msgid "Don’t export functions; declare them G_GNUC_INTERNAL"
 msgstr "No exportar funciones; declararlas como G_GNUC_INTERNAL"
 
-#: gio/glib-compile-resources.c:748
+#: gio/glib-compile-resources.c:830
 msgid ""
 "Don’t embed resource data in the C file; assume it's linked externally "
 "instead"
@@ -2542,11 +2562,15 @@ msgstr ""
 "No incluir datos de recursos en el archivo C; en su lugar, asumir que está "
 "enlazado de manera externa"
 
-#: gio/glib-compile-resources.c:749
+#: gio/glib-compile-resources.c:831
 msgid "C identifier name used for the generated source code"
 msgstr "Nombre del identificador C usado para el código fuente generado"
 
-#: gio/glib-compile-resources.c:775
+#: gio/glib-compile-resources.c:832
+msgid "The target C compiler (default: the CC environment variable)"
+msgstr "El compilador C objetivo (predeterminado: la variable de entorno CC)"
+
+#: gio/glib-compile-resources.c:858
 msgid ""
 "Compile a resource specification into a resource file.\n"
 "Resource specification files have the extension .gresource.xml,\n"
@@ -2557,7 +2581,7 @@ msgstr ""
 "gresource.xml,\n"
 "y el archivo del recurso debe tener la extensión se llama .gresource."
 
-#: gio/glib-compile-resources.c:797
+#: gio/glib-compile-resources.c:880
 msgid "You should give exactly one file name\n"
 msgstr "Deberá proporcionar exactamente un nombre de archivo\n"
 
@@ -3368,7 +3392,7 @@ msgid "Error truncating file: %s"
 msgstr "Error al truncar el archivo: %s"
 
 #: gio/glocalfileoutputstream.c:662 gio/glocalfileoutputstream.c:907
-#: gio/glocalfileoutputstream.c:1218 gio/gsubprocess.c:226
+#: gio/glocalfileoutputstream.c:1218 gio/gsubprocess.c:229
 #, c-format
 msgid "Error opening file “%s”: %s"
 msgstr "Error al abrir el archivo %s: %s"
@@ -3390,7 +3414,7 @@ msgstr "El archivo se modificó externamente"
 msgid "Error removing old file: %s"
 msgstr "Error al eliminar el archivo antiguo: %s"
 
-#: gio/gmemoryinputstream.c:474 gio/gmemoryoutputstream.c:772
+#: gio/gmemoryinputstream.c:474 gio/gmemoryoutputstream.c:762
 msgid "Invalid GSeekType supplied"
 msgstr "Se proporcionó un GSeekType no válido"
 
@@ -3402,15 +3426,15 @@ msgstr "Petición de búsqueda no válida"
 msgid "Cannot truncate GMemoryInputStream"
 msgstr "No se puede truncar GMemoryInputStream"
 
-#: gio/gmemoryoutputstream.c:567
+#: gio/gmemoryoutputstream.c:568
 msgid "Memory output stream not resizable"
 msgstr "El flujo de salida de la memoria no es redimensionable"
 
-#: gio/gmemoryoutputstream.c:583
+#: gio/gmemoryoutputstream.c:584
 msgid "Failed to resize memory output stream"
 msgstr "Falló al redimensionar el flujo de salida de la memoria"
 
-#: gio/gmemoryoutputstream.c:673
+#: gio/gmemoryoutputstream.c:663
 msgid ""
 "Amount of memory required to process the write is larger than available "
 "address space"
@@ -3418,11 +3442,11 @@ msgstr ""
 "La cantidad de memoria necesaria para procesar el escrito es mayor que el "
 "espacio de direcciones libre disponible"
 
-#: gio/gmemoryoutputstream.c:782
+#: gio/gmemoryoutputstream.c:772
 msgid "Requested seek before the beginning of the stream"
 msgstr "La búsqueda solicitada antes del inicio del flujo"
 
-#: gio/gmemoryoutputstream.c:797
+#: gio/gmemoryoutputstream.c:787
 msgid "Requested seek beyond the end of the stream"
 msgstr "La búsqueda solicitada después del final del flujo"
 
@@ -3530,18 +3554,18 @@ msgstr "La suma de vectores pasada a %s es demasiado grande"
 msgid "Source stream is already closed"
 msgstr "El flujo de origen ya está cerrado"
 
-#: gio/gresolver.c:386 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
+#: gio/gresolver.c:401 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
 #, c-format
 msgid "Error resolving “%s”: %s"
 msgstr "Error al resolver «%s»: %s"
 
 #. Translators: The placeholder is for a function name.
-#: gio/gresolver.c:455 gio/gresolver.c:615
+#: gio/gresolver.c:470 gio/gresolver.c:630
 #, c-format
 msgid "%s not implemented"
 msgstr "%s no está implementado"
 
-#: gio/gresolver.c:984 gio/gresolver.c:1036
+#: gio/gresolver.c:999 gio/gresolver.c:1051
 msgid "Invalid domain"
 msgstr "Dominio no válido"
 
@@ -3656,7 +3680,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:565 gio/gsettings-tool.c:706
+#: gio/gresource-tool.c:565 gio/gsettings-tool.c:718
 msgid "  COMMAND   The (optional) command to explain\n"
 msgstr "  COMANDO   El comando (opcional) que explicar\n"
 
@@ -3689,7 +3713,7 @@ msgstr "RUTA"
 msgid "  PATH      A resource path\n"
 msgstr "  RUTA      La ruta de un recurso\n"
 
-#: gio/gsettings-tool.c:49 gio/gsettings-tool.c:70 gio/gsettings-tool.c:911
+#: gio/gsettings-tool.c:49 gio/gsettings-tool.c:70 gio/gsettings-tool.c:923
 #, c-format
 msgid "No such schema “%s”\n"
 msgstr "No existe el esquema «%s»\n"
@@ -3720,35 +3744,35 @@ 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:541
+#: gio/gsettings-tool.c:553
 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:548
+#: gio/gsettings-tool.c:560
 msgid "The key is not writable\n"
 msgstr "No se puede escribir la clave\n"
 
-#: gio/gsettings-tool.c:584
+#: gio/gsettings-tool.c:596
 msgid "List the installed (non-relocatable) schemas"
 msgstr "Listar los esquemas instalados (no reubicables)"
 
-#: gio/gsettings-tool.c:590
+#: gio/gsettings-tool.c:602
 msgid "List the installed relocatable schemas"
 msgstr "Listar los esquemas reubicables instalados"
 
-#: gio/gsettings-tool.c:596
+#: gio/gsettings-tool.c:608
 msgid "List the keys in SCHEMA"
 msgstr "Listar las claves en el ESQUEMA"
 
-#: gio/gsettings-tool.c:597 gio/gsettings-tool.c:603 gio/gsettings-tool.c:646
+#: gio/gsettings-tool.c:609 gio/gsettings-tool.c:615 gio/gsettings-tool.c:658
 msgid "SCHEMA[:PATH]"
 msgstr "ESQUEMA[:RUTA]"
 
-#: gio/gsettings-tool.c:602
+#: gio/gsettings-tool.c:614
 msgid "List the children of SCHEMA"
 msgstr "Listar los hijos del ESQUEMA"
 
-#: gio/gsettings-tool.c:608
+#: gio/gsettings-tool.c:620
 msgid ""
 "List keys and values, recursively\n"
 "If no SCHEMA is given, list all keys\n"
@@ -3756,49 +3780,49 @@ msgstr ""
 "Listar las claves y valores recursivamente\n"
 "Si no se proporciona un ESQUEMA, listar todas las claves\n"
 
-#: gio/gsettings-tool.c:610
+#: gio/gsettings-tool.c:622
 msgid "[SCHEMA[:PATH]]"
 msgstr "[ESQUEMA[:RUTA]]"
 
-#: gio/gsettings-tool.c:615
+#: gio/gsettings-tool.c:627
 msgid "Get the value of KEY"
 msgstr "Obtener el valor de la CLAVE"
 
-#: gio/gsettings-tool.c:616 gio/gsettings-tool.c:622 gio/gsettings-tool.c:628
-#: gio/gsettings-tool.c:640 gio/gsettings-tool.c:652
+#: gio/gsettings-tool.c:628 gio/gsettings-tool.c:634 gio/gsettings-tool.c:640
+#: gio/gsettings-tool.c:652 gio/gsettings-tool.c:664
 msgid "SCHEMA[:PATH] KEY"
 msgstr "ESQUEMA[:RUTA] CLAVE"
 
-#: gio/gsettings-tool.c:621
+#: gio/gsettings-tool.c:633
 msgid "Query the range of valid values for KEY"
 msgstr "Consultar el rango de valores válidos para la CLAVE"
 
-#: gio/gsettings-tool.c:627
+#: gio/gsettings-tool.c:639
 msgid "Query the description for KEY"
 msgstr "Consultar la descripción para la CLAVE"
 
-#: gio/gsettings-tool.c:633
+#: gio/gsettings-tool.c:645
 msgid "Set the value of KEY to VALUE"
 msgstr "Establecer el valor de la CLAVE a VALOR"
 
-#: gio/gsettings-tool.c:634
+#: gio/gsettings-tool.c:646
 msgid "SCHEMA[:PATH] KEY VALUE"
 msgstr "ESQUEMA[:RUTA] CLAVE VALOR"
 
-#: gio/gsettings-tool.c:639
+#: gio/gsettings-tool.c:651
 msgid "Reset KEY to its default value"
 msgstr "Restablecer la CLAVE a su valor predeterminado"
 
-#: gio/gsettings-tool.c:645
+#: gio/gsettings-tool.c:657
 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:651
+#: gio/gsettings-tool.c:663
 msgid "Check if KEY is writable"
 msgstr "Comprobar si la CLAVE se puede escribir"
 
-#: gio/gsettings-tool.c:657
+#: gio/gsettings-tool.c:669
 msgid ""
 "Monitor KEY for changes.\n"
 "If no KEY is specified, monitor all keys in SCHEMA.\n"
@@ -3808,11 +3832,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:660
+#: gio/gsettings-tool.c:672
 msgid "SCHEMA[:PATH] [KEY]"
 msgstr "ESQUEMA[:RUTA] [CLAVE]"
 
-#: gio/gsettings-tool.c:672
+#: gio/gsettings-tool.c:684
 msgid ""
 "Usage:\n"
 "  gsettings --version\n"
@@ -3861,7 +3885,7 @@ msgstr ""
 "Use «gsettings help COMANDO» para obtener una ayuda detallada.\n"
 "\n"
 
-#: gio/gsettings-tool.c:696
+#: gio/gsettings-tool.c:708
 #, c-format
 msgid ""
 "Usage:\n"
@@ -3876,11 +3900,11 @@ msgstr ""
 "%s\n"
 "\n"
 
-#: gio/gsettings-tool.c:702
+#: gio/gsettings-tool.c:714
 msgid "  SCHEMADIR A directory to search for additional schemas\n"
 msgstr "  CARPETA_ESQUEMA: una carpeta para buscar esquemas adicionales\n"
 
-#: gio/gsettings-tool.c:710
+#: gio/gsettings-tool.c:722
 msgid ""
 "  SCHEMA    The name of the schema\n"
 "  PATH      The path, for relocatable schemas\n"
@@ -3888,215 +3912,215 @@ msgstr ""
 "  SCHEMA      El nombre del esquema\n"
 "  RUTA        La ruta, para esquemas reubicables\n"
 
-#: gio/gsettings-tool.c:715
+#: gio/gsettings-tool.c:727
 msgid "  KEY       The (optional) key within the schema\n"
 msgstr "  CLAVE      La clave (opcional) para el esquema\n"
 
-#: gio/gsettings-tool.c:719
+#: gio/gsettings-tool.c:731
 msgid "  KEY       The key within the schema\n"
 msgstr "  CLAVE      La clave para el esquema\n"
 
-#: gio/gsettings-tool.c:723
+#: gio/gsettings-tool.c:735
 msgid "  VALUE     The value to set\n"
 msgstr "  VALOR     El valor para establecer\n"
 
-#: gio/gsettings-tool.c:778
+#: gio/gsettings-tool.c:790
 #, 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:790
+#: gio/gsettings-tool.c:802
 msgid "No schemas installed\n"
 msgstr "No hay esquemas instalados\n"
 
-#: gio/gsettings-tool.c:869
+#: gio/gsettings-tool.c:881
 msgid "Empty schema name given\n"
 msgstr "Se proporcionó un nombre de esquema vacío\n"
 
-#: gio/gsettings-tool.c:924
+#: gio/gsettings-tool.c:936
 #, c-format
 msgid "No such key “%s”\n"
 msgstr "No existe la clave «%s»\n"
 
-#: gio/gsocket.c:413
+#: gio/gsocket.c:417
 msgid "Invalid socket, not initialized"
 msgstr "Socket no válido, no inicializado"
 
-#: gio/gsocket.c:420
+#: gio/gsocket.c:424
 #, 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:428
+#: gio/gsocket.c:432
 msgid "Socket is already closed"
 msgstr "El socket ya está cerrado"
 
-#: gio/gsocket.c:443 gio/gsocket.c:3190 gio/gsocket.c:4420 gio/gsocket.c:4478
+#: gio/gsocket.c:447 gio/gsocket.c:3194 gio/gsocket.c:4427 gio/gsocket.c:4485
 msgid "Socket I/O timed out"
 msgstr "Expiró la E/S del socket"
 
-#: gio/gsocket.c:578
+#: gio/gsocket.c:582
 #, c-format
 msgid "creating GSocket from fd: %s"
 msgstr "creando el GSocket desde fd: %s"
 
-#: gio/gsocket.c:607 gio/gsocket.c:671 gio/gsocket.c:678
+#: gio/gsocket.c:611 gio/gsocket.c:675 gio/gsocket.c:682
 #, c-format
 msgid "Unable to create socket: %s"
 msgstr "No se pudo crear el socket: %s"
 
-#: gio/gsocket.c:671
+#: gio/gsocket.c:675
 msgid "Unknown family was specified"
 msgstr "Se especificó una familia desconocida"
 
-#: gio/gsocket.c:678
+#: gio/gsocket.c:682
 msgid "Unknown protocol was specified"
 msgstr "Se especificó un protocolo desconocido"
 
-#: gio/gsocket.c:1169
+#: gio/gsocket.c:1173
 #, 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:1186
+#: gio/gsocket.c:1190
 #, 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:1993
+#: gio/gsocket.c:1997
 #, c-format
 msgid "could not get local address: %s"
 msgstr "no se pudo obtener la dirección local: %s"
 
-#: gio/gsocket.c:2039
+#: gio/gsocket.c:2043
 #, c-format
 msgid "could not get remote address: %s"
 msgstr "no se pudo obtener la dirección remota: %s"
 
-#: gio/gsocket.c:2105
+#: gio/gsocket.c:2109
 #, c-format
 msgid "could not listen: %s"
 msgstr "no se pudo escuchar: %s"
 
-#: gio/gsocket.c:2209
+#: gio/gsocket.c:2213
 #, c-format
 msgid "Error binding to address %s: %s"
 msgstr "Error al vincular con la dirección %s: %s"
 
-#: gio/gsocket.c:2385 gio/gsocket.c:2422 gio/gsocket.c:2532 gio/gsocket.c:2557
-#: gio/gsocket.c:2620 gio/gsocket.c:2678 gio/gsocket.c:2696
+#: gio/gsocket.c:2389 gio/gsocket.c:2426 gio/gsocket.c:2536 gio/gsocket.c:2561
+#: gio/gsocket.c:2624 gio/gsocket.c:2682 gio/gsocket.c:2700
 #, c-format
 msgid "Error joining multicast group: %s"
 msgstr "Error al unirse al grupo de multicast: %s"
 
-#: gio/gsocket.c:2386 gio/gsocket.c:2423 gio/gsocket.c:2533 gio/gsocket.c:2558
-#: gio/gsocket.c:2621 gio/gsocket.c:2679 gio/gsocket.c:2697
+#: gio/gsocket.c:2390 gio/gsocket.c:2427 gio/gsocket.c:2537 gio/gsocket.c:2562
+#: gio/gsocket.c:2625 gio/gsocket.c:2683 gio/gsocket.c:2701
 #, c-format
 msgid "Error leaving multicast group: %s"
 msgstr "Error al abandonar al grupo de multicast: %s"
 
-#: gio/gsocket.c:2387
+#: gio/gsocket.c:2391
 msgid "No support for source-specific multicast"
 msgstr "No se soporta el multicast específico de la fuente"
 
-#: gio/gsocket.c:2534
+#: gio/gsocket.c:2538
 msgid "Unsupported socket family"
 msgstr "Familia del socket no soportada"
 
-#: gio/gsocket.c:2559
+#: gio/gsocket.c:2563
 msgid "source-specific not an IPv4 address"
 msgstr "la fuente específica no es una dirección IPv4"
 
-#: gio/gsocket.c:2583
+#: gio/gsocket.c:2587
 #, c-format
 msgid "Interface name too long"
 msgstr "El nombre de la interfaz es demasiado largo"
 
-#: gio/gsocket.c:2596 gio/gsocket.c:2646
+#: gio/gsocket.c:2600 gio/gsocket.c:2650
 #, c-format
 msgid "Interface not found: %s"
 msgstr "Interfaz no encontrada: %s"
 
-#: gio/gsocket.c:2622
+#: gio/gsocket.c:2626
 msgid "No support for IPv4 source-specific multicast"
 msgstr "No se soporta el multicast específico de la fuente para IPv4"
 
-#: gio/gsocket.c:2680
+#: gio/gsocket.c:2684
 msgid "No support for IPv6 source-specific multicast"
 msgstr "No se soporta el multicast específico de la fuente para IPv6"
 
-#: gio/gsocket.c:2889
+#: gio/gsocket.c:2893
 #, c-format
 msgid "Error accepting connection: %s"
 msgstr "Error al aceptar la conexión: %s"
 
-#: gio/gsocket.c:3015
+#: gio/gsocket.c:3019
 msgid "Connection in progress"
 msgstr "Conexión en progreso"
 
-#: gio/gsocket.c:3066
+#: gio/gsocket.c:3070
 msgid "Unable to get pending error: "
 msgstr "No se pudo obtener el error pendiente: "
 
-#: gio/gsocket.c:3255
+#: gio/gsocket.c:3259
 #, c-format
 msgid "Error receiving data: %s"
 msgstr "Error al recibir los datos: %s"
 
-#: gio/gsocket.c:3452
+#: gio/gsocket.c:3456
 #, c-format
 msgid "Error sending data: %s"
 msgstr "Error al enviar los datos: %s"
 
-#: gio/gsocket.c:3639
+#: gio/gsocket.c:3643
 #, c-format
 msgid "Unable to shutdown socket: %s"
 msgstr "No se pudo desconectar el socket: %s"
 
-#: gio/gsocket.c:3720
+#: gio/gsocket.c:3724
 #, c-format
 msgid "Error closing socket: %s"
 msgstr "Error al cerrar el socket: %s"
 
-#: gio/gsocket.c:4413
+#: gio/gsocket.c:4420
 #, c-format
 msgid "Waiting for socket condition: %s"
 msgstr "Esperando la condición del socket: %s"
 
-#: gio/gsocket.c:4804 gio/gsocket.c:4820 gio/gsocket.c:4833
+#: gio/gsocket.c:4810 gio/gsocket.c:4826 gio/gsocket.c:4839
 #, c-format
 msgid "Unable to send message: %s"
 msgstr "No se pudo enviar el mensaje: %s"
 
-#: gio/gsocket.c:4805 gio/gsocket.c:4821 gio/gsocket.c:4834
+#: gio/gsocket.c:4811 gio/gsocket.c:4827 gio/gsocket.c:4840
 msgid "Message vectors too large"
 msgstr "Vectores de mensaje demasiado largos"
 
-#: gio/gsocket.c:4850 gio/gsocket.c:4852 gio/gsocket.c:4999 gio/gsocket.c:5084
-#: gio/gsocket.c:5262 gio/gsocket.c:5302 gio/gsocket.c:5304
+#: gio/gsocket.c:4856 gio/gsocket.c:4858 gio/gsocket.c:5005 gio/gsocket.c:5090
+#: gio/gsocket.c:5268 gio/gsocket.c:5308 gio/gsocket.c:5310
 #, c-format
 msgid "Error sending message: %s"
 msgstr "Error al enviar el mensaje: %s"
 
-#: gio/gsocket.c:5026
+#: gio/gsocket.c:5032
 msgid "GSocketControlMessage not supported on Windows"
 msgstr "GSocketControlMessage no está soportado en Windows"
 
-#: gio/gsocket.c:5495 gio/gsocket.c:5571 gio/gsocket.c:5797
+#: gio/gsocket.c:5505 gio/gsocket.c:5581 gio/gsocket.c:5807
 #, c-format
 msgid "Error receiving message: %s"
 msgstr "Error al recibir el mensaje: %s"
 
-#: gio/gsocket.c:6070 gio/gsocket.c:6081 gio/gsocket.c:6127
+#: gio/gsocket.c:6090 gio/gsocket.c:6101 gio/gsocket.c:6164
 #, c-format
 msgid "Unable to read socket credentials: %s"
 msgstr "No se pudieron leer las credenciales del socket: %s"
 
-#: gio/gsocket.c:6136
+#: gio/gsocket.c:6173
 msgid "g_socket_get_credentials not implemented for this OS"
 msgstr "g_socket_get_credentials no está implementado en este SO"
 
@@ -4114,12 +4138,12 @@ msgstr "No se pudo conectar a %s: "
 msgid "Could not connect: "
 msgstr "No se pudo conectar: "
 
-#: gio/gsocketclient.c:1162 gio/gsocketclient.c:1749
+#: gio/gsocketclient.c:1202 gio/gsocketclient.c:1793
 msgid "Proxying over a non-TCP connection is not supported."
 msgstr ""
 "No se soporta intentar hacer de proxy sobre una conexión que no es TCP."
 
-#: gio/gsocketclient.c:1194 gio/gsocketclient.c:1778
+#: gio/gsocketclient.c:1234 gio/gsocketclient.c:1822
 #, c-format
 msgid "Proxy protocol “%s” is not supported."
 msgstr "El protocolo del proxy «%s» no está soportado."
@@ -4223,7 +4247,7 @@ msgstr "El proxy SOCKSv5 no soporta el tipo de dirección proporcionado."
 msgid "Unknown SOCKSv5 proxy error."
 msgstr "Error desconocido del proxy SOCKSv5."
 
-#: gio/gtestdbus.c:612 glib/gspawn-win32.c:311
+#: gio/gtestdbus.c:612 glib/gspawn-win32.c:314
 #, c-format
 msgid "Failed to create pipe for communicating with child process (%s)"
 msgstr ""
@@ -4233,7 +4257,7 @@ msgstr ""
 #: gio/gtestdbus.c:619
 #, c-format
 msgid "Pipes are not supported in this platform"
-msgstr "No se soportan las tuberías en esta plataforma"
+msgstr "En esta plataforma no se soportan las tuberías"
 
 #: gio/gthemedicon.c:595
 #, c-format
@@ -4266,27 +4290,31 @@ msgstr "No se puede resolver «%s» temporalmente"
 msgid "Error resolving “%s”"
 msgstr "Error al resolver «%s»"
 
-#: gio/gtlscertificate.c:431
+#: gio/gtlscertificate.c:478
 msgid "No PEM-encoded private key found"
 msgstr "No se encontró ninguna clave privada codificada con PEM"
 
-#: gio/gtlscertificate.c:441
+#: gio/gtlscertificate.c:488
 msgid "Cannot decrypt PEM-encoded private key"
 msgstr "No se pudo descifrar la clave privada codificada con PEM"
 
-#: gio/gtlscertificate.c:452
+#: gio/gtlscertificate.c:499
 msgid "Could not parse PEM-encoded private key"
 msgstr "No se pudo analizar la clave privada codificada con PEM"
 
-#: gio/gtlscertificate.c:479
+#: gio/gtlscertificate.c:526
 msgid "No PEM-encoded certificate found"
 msgstr "No se encontró ningún certificado codificado con PEM"
 
-#: gio/gtlscertificate.c:488
+#: gio/gtlscertificate.c:535
 msgid "Could not parse PEM-encoded certificate"
 msgstr "No se pudo analizar el certificado codificado con PEM"
 
-#: gio/gtlscertificate.c:844
+#: gio/gtlscertificate.c:796
+msgid "The current TLS backend does not support PKCS #12"
+msgstr "Este «backend» de TLS actual no soporta crear certificados PKCS #12"
+
+#: gio/gtlscertificate.c:1013
 msgid "This GTlsBackend does not support creating PKCS #11 certificates"
 msgstr "Este GTlsBackend no soporta crear certificados PKCS #11"
 
@@ -4312,55 +4340,63 @@ msgstr ""
 msgid "The password entered is incorrect."
 msgstr "La contraseña introducida no es correcta."
 
-#: gio/gunixconnection.c:166 gio/gunixconnection.c:579
+#: gio/gunixconnection.c:125
+msgid "Sending FD is not supported"
+msgstr "No se soporta el envío de FD"
+
+#: gio/gunixconnection.c:178 gio/gunixconnection.c:596
 #, 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:591
+#: gio/gunixconnection.c:194 gio/gunixconnection.c:608
 msgid "Unexpected type of ancillary data"
 msgstr "Tipos de datos complementarios inesperados"
 
-#: gio/gunixconnection.c:200
+#: gio/gunixconnection.c:212
 #, c-format
 msgid "Expecting one fd, but got %d\n"
 msgid_plural "Expecting one fd, but got %d\n"
 msgstr[0] "Se esperaba un fd pero se obtuvo %d\n"
 msgstr[1] "Se esperaba un fd pero se obtuvieron %d\n"
 
-#: gio/gunixconnection.c:219
+#: gio/gunixconnection.c:231
 msgid "Received invalid fd"
 msgstr "Se recibió un fd no válido"
 
-#: gio/gunixconnection.c:363
+#: gio/gunixconnection.c:238
+msgid "Receiving FD is not supported"
+msgstr "No se soporta recibid FD"
+
+#: gio/gunixconnection.c:380
 msgid "Error sending credentials: "
 msgstr "Error al enviar las credenciales: "
 
-#: gio/gunixconnection.c:520
+#: gio/gunixconnection.c:537
 #, 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:536
+#: gio/gunixconnection.c:553
 #, c-format
 msgid "Error enabling SO_PASSCRED: %s"
 msgstr "Error al activar SO_PASSCRED: %s"
 
-#: gio/gunixconnection.c:565
+#: gio/gunixconnection.c:582
 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:605
+#: gio/gunixconnection.c:622
 #, 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:630
+#: gio/gunixconnection.c:647
 #, c-format
 msgid "Error while disabling SO_PASSCRED: %s"
 msgstr "Error al desactivar SO_PASSCRED: %s"
@@ -4376,7 +4412,7 @@ msgstr "Error al leer del descriptor del archivo: %s"
 msgid "Error closing file descriptor: %s"
 msgstr "Error al cerrar el descriptor del archivo: %s"
 
-#: gio/gunixmounts.c:2785 gio/gunixmounts.c:2838
+#: gio/gunixmounts.c:2809 gio/gunixmounts.c:2862
 msgid "Filesystem root"
 msgstr "Sistema de archivos raíz"
 
@@ -4387,7 +4423,7 @@ msgstr "Sistema de archivos raíz"
 msgid "Error writing to file descriptor: %s"
 msgstr "Error al escribir en el descriptor del archivo: %s"
 
-#: gio/gunixsocketaddress.c:244
+#: gio/gunixsocketaddress.c:251
 msgid "Abstract UNIX domain socket addresses not supported on this system"
 msgstr ""
 "Este sistema no soporta direcciones de socket de dominio UNIX abstracto"
@@ -4540,8 +4576,8 @@ msgstr "Falló la expansión de lalinea ejecutable «%s» con el URI «%s»"
 msgid "Unrepresentable character in conversion input"
 msgstr "Carácter no representable en entrada de conversión"
 
-#: glib/gconvert.c:495 glib/gutf8.c:871 glib/gutf8.c:1083 glib/gutf8.c:1220
-#: glib/gutf8.c:1324
+#: glib/gconvert.c:495 glib/gutf8.c:886 glib/gutf8.c:1099 glib/gutf8.c:1236
+#: glib/gutf8.c:1340
 msgid "Partial character sequence at end of input"
 msgstr "Hay una secuencia parcial de caracteres en el final de la entrada"
 
@@ -5106,16 +5142,16 @@ msgid "Can’t do a raw read in g_io_channel_read_to_end"
 msgstr ""
 "No se puede hacer una lectura en bruto (raw) en g_io_channel_read_to_end"
 
-#: glib/gkeyfile.c:791
+#: glib/gkeyfile.c:794
 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:828
+#: glib/gkeyfile.c:831
 msgid "Not a regular file"
 msgstr "No es un archivo regular"
 
-#: glib/gkeyfile.c:1283
+#: glib/gkeyfile.c:1289
 #, c-format
 msgid ""
 "Key file contains line “%s” which is not a key-value pair, group, or comment"
@@ -5123,45 +5159,45 @@ msgstr ""
 "El archivo de claves contiene la línea «%s» que no es un par valor-clave, "
 "grupo o comentario"
 
-#: glib/gkeyfile.c:1340
+#: glib/gkeyfile.c:1346
 #, c-format
 msgid "Invalid group name: %s"
 msgstr "Nombre de grupo no válido: %s"
 
-#: glib/gkeyfile.c:1362
+#: glib/gkeyfile.c:1370
 msgid "Key file does not start with a group"
 msgstr "El archivo de claves no empieza por un grupo"
 
-#: glib/gkeyfile.c:1388
+#: glib/gkeyfile.c:1394
 #, c-format
-msgid "Invalid key name: %s"
-msgstr "Nombre de clave no válida: %s"
+msgid "Invalid key name: %.*s"
+msgstr "Nombre de clave no válido: %.*s"
 
-#: glib/gkeyfile.c:1415
+#: glib/gkeyfile.c:1422
 #, c-format
 msgid "Key file contains unsupported encoding “%s”"
 msgstr "El archivo de claves contiene una codificación «%s» no soportada"
 
-#: glib/gkeyfile.c:1664 glib/gkeyfile.c:1837 glib/gkeyfile.c:3287
-#: glib/gkeyfile.c:3351 glib/gkeyfile.c:3481 glib/gkeyfile.c:3613
-#: glib/gkeyfile.c:3759 glib/gkeyfile.c:3994 glib/gkeyfile.c:4061
+#: glib/gkeyfile.c:1677 glib/gkeyfile.c:1850 glib/gkeyfile.c:3297
+#: glib/gkeyfile.c:3361 glib/gkeyfile.c:3491 glib/gkeyfile.c:3623
+#: glib/gkeyfile.c:3769 glib/gkeyfile.c:4004 glib/gkeyfile.c:4071
 #, c-format
 msgid "Key file does not have group “%s”"
 msgstr "El archivo de claves no tiene el grupo «%s»"
 
-#: glib/gkeyfile.c:1792
+#: glib/gkeyfile.c:1805
 #, 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:1954 glib/gkeyfile.c:2070
+#: glib/gkeyfile.c:1967 glib/gkeyfile.c:2083
 #, 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:1974 glib/gkeyfile.c:2090 glib/gkeyfile.c:2529
+#: glib/gkeyfile.c:1987 glib/gkeyfile.c:2103 glib/gkeyfile.c:2542
 #, c-format
 msgid ""
 "Key file contains key “%s” which has a value that cannot be interpreted."
@@ -5169,7 +5205,7 @@ msgstr ""
 "El archivo de claves contiene la clave «%s» que tiene un valor que no se "
 "puede interpretar."
 
-#: glib/gkeyfile.c:2747 glib/gkeyfile.c:3116
+#: glib/gkeyfile.c:2757 glib/gkeyfile.c:3126
 #, c-format
 msgid ""
 "Key file contains key “%s” in group “%s” which has a value that cannot be "
@@ -5178,38 +5214,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:2825 glib/gkeyfile.c:2902
+#: glib/gkeyfile.c:2835 glib/gkeyfile.c:2912
 #, 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:4304
+#: glib/gkeyfile.c:4324
 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:4326
+#: glib/gkeyfile.c:4346
 #, 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:4470
+#: glib/gkeyfile.c:4491
 #, 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:4484
+#: glib/gkeyfile.c:4505
 #, c-format
 msgid "Integer value “%s” out of range"
 msgstr "El valor entero «%s» está fuera de rango"
 
-#: glib/gkeyfile.c:4517
+#: glib/gkeyfile.c:4538
 #, 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:4556
+#: glib/gkeyfile.c:4577
 #, c-format
 msgid "Value “%s” cannot be interpreted as a boolean."
 msgstr "El valor «%s» no puede interpretarse como un booleano."
@@ -5512,7 +5548,7 @@ msgstr "Error al analizar la opción: %s"
 msgid "Missing argument for %s"
 msgstr "Falta un argumento para %s"
 
-#: glib/goption.c:2185
+#: glib/goption.c:2184
 #, c-format
 msgid "Unknown option %s"
 msgstr "Opción desconocida %s"
@@ -5926,121 +5962,132 @@ msgstr "El texto está vacío (o sólo contiene espacios en blanco)"
 msgid "Failed to read data from child process (%s)"
 msgstr "Falló en la lectura de datos desde el proceso hijo (%s)"
 
-#: glib/gspawn.c:461
+#: glib/gspawn.c:462
 #, c-format
 msgid "Unexpected error in reading data from a child process (%s)"
 msgstr "Error inesperado al leer datos desde el proceso hijo (%s)"
 
-#: glib/gspawn.c:546
+#: glib/gspawn.c:547
 #, c-format
 msgid "Unexpected error in waitpid() (%s)"
 msgstr "Falló inesperado en waitpid() (%s)"
 
-#: glib/gspawn.c:1166 glib/gspawn-win32.c:1407
+#: glib/gspawn.c:1175 glib/gspawn-win32.c:1431
 #, c-format
 msgid "Child process exited with code %ld"
 msgstr "El proceso hijo terminó con el código %ld"
 
-#: glib/gspawn.c:1174
+#: glib/gspawn.c:1183
 #, c-format
 msgid "Child process killed by signal %ld"
 msgstr "El proceso hijo terminado por la señal %ld"
 
-#: glib/gspawn.c:1181
+#: glib/gspawn.c:1190
 #, c-format
 msgid "Child process stopped by signal %ld"
 msgstr "El proceso hijo se detuvo por la señal %ld"
 
-#: glib/gspawn.c:1188
+#: glib/gspawn.c:1197
 #, c-format
 msgid "Child process exited abnormally"
 msgstr "El proceso hijo terminó de forma anormal"
 
-#: glib/gspawn.c:1864 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
+#: glib/gspawn.c:1890 glib/gspawn-win32.c:353 glib/gspawn-win32.c:361
 #, c-format
 msgid "Failed to read from child pipe (%s)"
 msgstr "Falló al leer desde el conducto hijo (%s)"
 
-#: glib/gspawn.c:2166
+#: glib/gspawn.c:2253
 #, c-format
 msgid "Failed to spawn child process “%s” (%s)"
 msgstr "Falló al ejecutar el proceso hijo «%s» (%s)"
 
-#: glib/gspawn.c:2283
+#: glib/gspawn.c:2370
 #, c-format
 msgid "Failed to fork (%s)"
 msgstr "Falló al bifurcar (fork) (%s)"
 
-#: glib/gspawn.c:2443 glib/gspawn-win32.c:381
+#: glib/gspawn.c:2530 glib/gspawn-win32.c:384
 #, c-format
 msgid "Failed to change to directory “%s” (%s)"
 msgstr "Falló al cambiar a la carpeta «%s» (%s)"
 
-#: glib/gspawn.c:2453
+#: glib/gspawn.c:2540
 #, c-format
 msgid "Failed to execute child process “%s” (%s)"
 msgstr "Falló al ejecutar el proceso hijo «%s» (%s)"
 
-#: glib/gspawn.c:2463
+#: glib/gspawn.c:2550
+#, c-format
+msgid "Failed to open file to remap file descriptor (%s)"
+msgstr "Falló al abrir el archivo para volver a mapear el descriptor: (%s)"
+
+#: glib/gspawn.c:2558
 #, c-format
-msgid "Failed to redirect output or input of child process (%s)"
-msgstr "Falló al redirigir la salida o la entrada del proceso hijo (%s)"
+msgid "Failed to duplicate file descriptor for child process (%s)"
+msgstr "Falló al duplicar el descriptor del archivo para el proceso hijo (%s)"
 
-#: glib/gspawn.c:2472
+#: glib/gspawn.c:2567
 #, c-format
 msgid "Failed to fork child process (%s)"
 msgstr "Falló al bifurcar el proceso hijo (%s)"
 
-#: glib/gspawn.c:2480
+#: glib/gspawn.c:2575
 #, c-format
 msgid "Failed to close file descriptor for child process (%s)"
 msgstr "Falló al cerrar el descriptor del archivo para el proceso hijo (%s)"
 
-#: glib/gspawn.c:2488
+#: glib/gspawn.c:2583
 #, c-format
 msgid "Unknown error executing child process “%s”"
 msgstr "Error desconocido al ejecutar el proceso hijo «%s»"
 
-#: glib/gspawn.c:2512
+#: glib/gspawn.c:2607
 #, c-format
 msgid "Failed to read enough data from child pid pipe (%s)"
 msgstr "Falló al leer suficientes datos desde el conducto del pid hijo (%s)"
 
-#: glib/gspawn-win32.c:294
+#: glib/gspawn-win32.c:297
 msgid "Failed to read data from child process"
 msgstr "Falló al leer los datos desde un proceso hijo"
 
-#: glib/gspawn-win32.c:387 glib/gspawn-win32.c:392 glib/gspawn-win32.c:511
+#: glib/gspawn-win32.c:390 glib/gspawn-win32.c:395 glib/gspawn-win32.c:521
 #, c-format
 msgid "Failed to execute child process (%s)"
 msgstr "Falló al ejecutar el proceso hijo (%s)"
 
-#: glib/gspawn-win32.c:461
+#: glib/gspawn-win32.c:400
+#, c-format
+#| msgid "Failed to fork child process (%s)"
+msgid "Failed to dup() in child process (%s)"
+msgstr "Falló al hacer dup() en el proceso hijo (%s)"
+
+#: glib/gspawn-win32.c:471
 #, c-format
 msgid "Invalid program name: %s"
 msgstr "Nombre de programa no válido: %s"
 
-#: glib/gspawn-win32.c:471 glib/gspawn-win32.c:779
+#: glib/gspawn-win32.c:481 glib/gspawn-win32.c:800
 #, c-format
 msgid "Invalid string in argument vector at %d: %s"
 msgstr "Cadena no válida en el vector del argumento en %d: %s"
 
-#: glib/gspawn-win32.c:482 glib/gspawn-win32.c:794
+#: glib/gspawn-win32.c:492 glib/gspawn-win32.c:816
 #, c-format
 msgid "Invalid string in environment: %s"
 msgstr "Cadena no válida en el entorno: %s"
 
-#: glib/gspawn-win32.c:775
+#: glib/gspawn-win32.c:796
 #, c-format
 msgid "Invalid working directory: %s"
 msgstr "Carpeta de trabajo no válido: %s"
 
-#: glib/gspawn-win32.c:837
+#: glib/gspawn-win32.c:861
 #, c-format
 msgid "Failed to execute helper program (%s)"
 msgstr "Falló al ejecutar el programa auxiliar (%s)"
 
-#: glib/gspawn-win32.c:1064
+#: glib/gspawn-win32.c:1089
 msgid ""
 "Unexpected error in g_io_channel_win32_poll() reading data from a child "
 "process"
@@ -6048,21 +6095,21 @@ msgstr ""
 "Falló inesperado en g_io_channel_win32_poll() al leer datos desde un proceso "
 "hijo"
 
-#: glib/gstrfuncs.c:3345 glib/gstrfuncs.c:3447
+#: glib/gstrfuncs.c:3351 glib/gstrfuncs.c:3453
 msgid "Empty string is not a number"
 msgstr "Una cadena vacía no es un número"
 
-#: glib/gstrfuncs.c:3369
+#: glib/gstrfuncs.c:3375
 #, c-format
 msgid "“%s” is not a signed number"
 msgstr "«%s» no es un número con signo"
 
-#: glib/gstrfuncs.c:3379 glib/gstrfuncs.c:3483
+#: glib/gstrfuncs.c:3385 glib/gstrfuncs.c:3489
 #, 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:3473
+#: glib/gstrfuncs.c:3479
 #, c-format
 msgid "“%s” is not an unsigned number"
 msgstr "«%s» no es un número sin signo"
@@ -6123,175 +6170,175 @@ msgstr "El URI no es absoluto y no se ha proporcionado un URI base"
 msgid "Missing ‘=’ and parameter value"
 msgstr "Faltan el «=» y el valor del parámetro"
 
-#: glib/gutf8.c:817
+#: glib/gutf8.c:832
 msgid "Failed to allocate memory"
 msgstr "Falló al obtener memoria"
 
-#: glib/gutf8.c:950
+#: glib/gutf8.c:965
 msgid "Character out of range for UTF-8"
 msgstr "El carácter se sale del rango para UTF-8"
 
-#: glib/gutf8.c:1051 glib/gutf8.c:1060 glib/gutf8.c:1190 glib/gutf8.c:1199
-#: glib/gutf8.c:1338 glib/gutf8.c:1435
+#: glib/gutf8.c:1067 glib/gutf8.c:1076 glib/gutf8.c:1206 glib/gutf8.c:1215
+#: glib/gutf8.c:1354 glib/gutf8.c:1451
 msgid "Invalid sequence in conversion input"
 msgstr "Secuencia no válida en la entrada de conversión"
 
-#: glib/gutf8.c:1349 glib/gutf8.c:1446
+#: glib/gutf8.c:1365 glib/gutf8.c:1462
 msgid "Character out of range for UTF-16"
 msgstr "El carácter se sale del rango para UTF-16"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2770
+#: glib/gutils.c:2849
 #, c-format
 msgid "%.1f kB"
 msgstr "%.1f kB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2772
+#: glib/gutils.c:2851
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2774
+#: glib/gutils.c:2853
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2776
+#: glib/gutils.c:2855
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2778
+#: glib/gutils.c:2857
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2780
+#: glib/gutils.c:2859
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2784
+#: glib/gutils.c:2863
 #, c-format
 msgid "%.1f KiB"
 msgstr "%.1f KiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2786
+#: glib/gutils.c:2865
 #, c-format
 msgid "%.1f MiB"
 msgstr "%.1f MiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2788
+#: glib/gutils.c:2867
 #, c-format
 msgid "%.1f GiB"
 msgstr "%.1f GiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2790
+#: glib/gutils.c:2869
 #, c-format
 msgid "%.1f TiB"
 msgstr "%.1f TiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2792
+#: glib/gutils.c:2871
 #, c-format
 msgid "%.1f PiB"
 msgstr "%.1f PiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2794
+#: glib/gutils.c:2873
 #, c-format
 msgid "%.1f EiB"
 msgstr "%.1f EiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2798
+#: glib/gutils.c:2877
 #, c-format
 msgid "%.1f kb"
 msgstr "%.1f kb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2800
+#: glib/gutils.c:2879
 #, c-format
 msgid "%.1f Mb"
 msgstr "%.1f Mb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2802
+#: glib/gutils.c:2881
 #, c-format
 msgid "%.1f Gb"
 msgstr "%.1f Gb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2804
+#: glib/gutils.c:2883
 #, c-format
 msgid "%.1f Tb"
 msgstr "%.1f Tb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2806
+#: glib/gutils.c:2885
 #, c-format
 msgid "%.1f Pb"
 msgstr "%.1f Pb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2808
+#: glib/gutils.c:2887
 #, c-format
 msgid "%.1f Eb"
 msgstr "%.1f Eb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2812
+#: glib/gutils.c:2891
 #, c-format
 msgid "%.1f Kib"
 msgstr "%.1f Kib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2814
+#: glib/gutils.c:2893
 #, c-format
 msgid "%.1f Mib"
 msgstr "%.1f Mib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2816
+#: glib/gutils.c:2895
 #, c-format
 msgid "%.1f Gib"
 msgstr "%.1f Gib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2818
+#: glib/gutils.c:2897
 #, c-format
 msgid "%.1f Tib"
 msgstr "%.1f Tib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2820
+#: glib/gutils.c:2899
 #, c-format
 msgid "%.1f Pib"
 msgstr "%.1f Pib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2822
+#: glib/gutils.c:2901
 #, c-format
 msgid "%.1f Eib"
 msgstr "%.1f Eib"
 
-#: glib/gutils.c:2856 glib/gutils.c:2973
+#: glib/gutils.c:2935 glib/gutils.c:3052
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
 msgstr[0] "%u byte"
 msgstr[1] "%u bytes"
 
-#: glib/gutils.c:2860
+#: glib/gutils.c:2939
 #, c-format
 msgid "%u bit"
 msgid_plural "%u bits"
@@ -6299,7 +6346,7 @@ msgstr[0] "%u bit"
 msgstr[1] "%u bits"
 
 #. Translators: the %s in "%s bytes" will always be replaced by a number.
-#: glib/gutils.c:2927
+#: glib/gutils.c:3006
 #, c-format
 msgid "%s byte"
 msgid_plural "%s bytes"
@@ -6307,7 +6354,7 @@ msgstr[0] "%s byte"
 msgstr[1] "%s bytes"
 
 #. Translators: the %s in "%s bits" will always be replaced by a number.
-#: glib/gutils.c:2932
+#: glib/gutils.c:3011
 #, c-format
 msgid "%s bit"
 msgid_plural "%s bits"
@@ -6319,32 +6366,32 @@ msgstr[1] "%s bits"
 #. * compatibility.  Users will not see this string unless a program is using this deprecated function.
 #. * Please translate as literally as possible.
 #.
-#: glib/gutils.c:2986
+#: glib/gutils.c:3065
 #, c-format
 msgid "%.1f KB"
 msgstr "%.1f KB"
 
-#: glib/gutils.c:2991
+#: glib/gutils.c:3070
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
-#: glib/gutils.c:2996
+#: glib/gutils.c:3075
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
-#: glib/gutils.c:3001
+#: glib/gutils.c:3080
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
-#: glib/gutils.c:3006
+#: glib/gutils.c:3085
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
-#: glib/gutils.c:3011
+#: glib/gutils.c:3090
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
@@ -6479,9 +6526,6 @@ msgstr "%.1f EB"
 #~ "No se pudo encontrar el tipo de monitorización de la carpeta local "
 #~ "predeterminada"
 
-#~ msgid "URIs not supported"
-#~ msgstr "No se soportan URI"
-
 #~ msgid "Key file does not have key '%s'"
 #~ msgstr "El archivo de claves no tiene la clave «%s»"
 
index 2995df6..8406e4d 100644 (file)
--- a/po/eu.po
+++ b/po/eu.po
@@ -5,13 +5,13 @@
 # Hizkuntza Politikarako Sailburuordetza <hizpol@ej-gv.es>, 2004.
 # Iñaki Larrañaga Murgoitio <dooteo@zundan.com>, 2004, 2005, 2006, 2007, 2008, 2009, 2010.
 # Iñaki Larrañaga Murgoitio <dooteo@zundan.com>, 2011, 2012, 2013, 2014, 2015, 2016, 2017.
-# Asier Sarasua Garmendia <asiersarasua@ni.eus>, 2019, 2020, 2021.
+# Asier Sarasua Garmendia <asiersarasua@ni.eus>, 2019, 2020, 2021, 2022.
 #
 msgid ""
 msgstr "Project-Id-Version: glib master\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/glib/issues\n"
-"POT-Creation-Date: 2021-07-19 15:52+0000\n"
-"PO-Revision-Date: 2021-08-21 10:00+0100\n"
+"POT-Creation-Date: 2022-02-22 18:23+0000\n"
+"PO-Revision-Date: 2022-02-27 10:00+0100\n"
 "Last-Translator: Asier Sarasua Garmendia <asiersarasua@ni.eus>\n"
 "Language-Team: Basque <librezale@librezale.eus>\n"
 "Language: eu\n"
@@ -20,28 +20,36 @@ msgstr "Project-Id-Version: glib master\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: gio/gapplication.c:500
+#: gio/gappinfo.c:333
+msgid "Setting default applications not supported yet"
+msgstr "Aplikazio lehenetsia ezartzea edago onartuta oraindik"
+
+#: gio/gappinfo.c:366
+msgid "Setting application as last used for type not supported yet"
+msgstr "Erabilitako azken aplikazioa motarako ezartzea ez dago onartuta oraindik"
+
+#: gio/gapplication.c:497
 msgid "GApplication options"
 msgstr "GApplication aplikazioaren aukerak"
 
-#: gio/gapplication.c:500
+#: gio/gapplication.c:497
 msgid "Show GApplication options"
 msgstr "Erakutsi GApplication-en aukerak"
 
-#: gio/gapplication.c:545
+#: gio/gapplication.c:542
 msgid "Enter GApplication service mode (use from D-Bus service files)"
 msgstr "Sartu GApplication zerbitzu moduan (erabili D-Bus zerbitzuaren fitxategietatik)"
 
-#: gio/gapplication.c:557
+#: gio/gapplication.c:554
 msgid "Override the application’s ID"
 msgstr "Gainidatzi aplikazioaren IDa"
 
-#: gio/gapplication.c:569
+#: gio/gapplication.c:566
 msgid "Replace the running instance"
 msgstr "Ordeztu exekuzioan dagoen instantzia"
 
 #: gio/gapplication-tool.c:45 gio/gapplication-tool.c:46 gio/gio-tool.c:227
-#: gio/gresource-tool.c:494 gio/gsettings-tool.c:572
+#: gio/gresource-tool.c:494 gio/gsettings-tool.c:584
 msgid "Print help"
 msgstr "Erakutsi laguntza"
 
@@ -53,7 +61,7 @@ msgstr "[KOMANDOA]"
 msgid "Print version"
 msgstr "Bistaratu bertsioa"
 
-#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:578
+#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:590
 msgid "Print version information and exit"
 msgstr "Erakutsi bertsioaren informazioa eta irten"
 
@@ -114,8 +122,8 @@ msgstr "Erakutsi komandoaren laguntza xehea"
 msgid "Application identifier in D-Bus format (eg: org.example.viewer)"
 msgstr "Aplikazioaren identifikatzailea D-bus formatuan (adib: org.example.viewer)"
 
-#: gio/gapplication-tool.c:74 gio/glib-compile-resources.c:738
-#: gio/glib-compile-resources.c:744 gio/glib-compile-resources.c:772
+#: gio/gapplication-tool.c:74 gio/glib-compile-resources.c:820
+#: gio/glib-compile-resources.c:826 gio/glib-compile-resources.c:855
 #: gio/gresource-tool.c:501 gio/gresource-tool.c:567
 msgid "FILE"
 msgstr "FITXATEGIA"
@@ -140,7 +148,7 @@ msgstr "PARAMETROA"
 msgid "Optional parameter to the action invocation, in GVariant format"
 msgstr "Ekintza deitzean emango zaion parametroa, GVariant formatuan"
 
-#: gio/gapplication-tool.c:98 gio/gresource-tool.c:532 gio/gsettings-tool.c:664
+#: gio/gapplication-tool.c:98 gio/gresource-tool.c:532 gio/gsettings-tool.c:676
 #, c-format
 msgid ""
 "Unknown command %s\n"
@@ -153,7 +161,7 @@ msgid "Usage:\n"
 msgstr "Erabilera:\n"
 
 #: gio/gapplication-tool.c:116 gio/gresource-tool.c:557
-#: gio/gsettings-tool.c:699
+#: gio/gsettings-tool.c:711
 msgid "Arguments:\n"
 msgstr "Argumentuak:\n"
 
@@ -272,7 +280,7 @@ msgstr "Korrontea jadanik itxita dago"
 msgid "Truncate not supported on base stream"
 msgstr "Trunkatzea ez da onartzen oinarrizko korrontean"
 
-#: gio/gcancellable.c:319 gio/gdbusconnection.c:1872 gio/gdbusprivate.c:1416
+#: gio/gcancellable.c:319 gio/gdbusconnection.c:1873 gio/gdbusprivate.c:1418
 #: gio/gsimpleasyncresult.c:871 gio/gsimpleasyncresult.c:897
 #, c-format
 msgid "Operation was cancelled"
@@ -293,7 +301,7 @@ msgstr "Ez dago nahikoa lekurik helburuan"
 #: gio/gcharsetconverter.c:342 gio/gdatainputstream.c:848
 #: gio/gdatainputstream.c:1266 glib/gconvert.c:449 glib/gconvert.c:879
 #: glib/giochannel.c:1573 glib/giochannel.c:1615 glib/giochannel.c:2470
-#: glib/gutf8.c:875 glib/gutf8.c:1328
+#: glib/gutf8.c:890 glib/gutf8.c:1344
 msgid "Invalid byte sequence in conversion input"
 msgstr "Byteen sekuentzia baliogabea bihurketa-sarreran"
 
@@ -303,7 +311,7 @@ msgstr "Byteen sekuentzia baliogabea bihurketa-sarreran"
 msgid "Error during conversion: %s"
 msgstr "Errorea bihurtzean: %s"
 
-#: gio/gcharsetconverter.c:445 gio/gsocket.c:1143
+#: gio/gcharsetconverter.c:445 gio/gsocket.c:1147
 msgid "Cancellable initialization not supported"
 msgstr "Hasieratzea bertan behera uztea ez dago onartuta"
 
@@ -317,7 +325,7 @@ msgstr "“%s” karaktere-multzoa “%s” bihurtzea ez da onartzen"
 msgid "Could not open converter from “%s” to “%s”"
 msgstr "Ezin izan da “%s” “%s” bihurtzeko tresna ireki"
 
-#: gio/gcontenttype.c:454
+#: gio/gcontenttype.c:470
 #, c-format
 msgid "%s type"
 msgstr "%s mota"
@@ -331,23 +339,23 @@ msgstr "Mota ezezaguna"
 msgid "%s filetype"
 msgstr "%s fitxategi mota"
 
-#: gio/gcredentials.c:323
+#: gio/gcredentials.c:335
 msgid "GCredentials contains invalid data"
 msgstr "GCredentials-ek baliogabeko datuak ditu"
 
-#: gio/gcredentials.c:383 gio/gcredentials.c:667
+#: gio/gcredentials.c:395 gio/gcredentials.c:686
 msgid "GCredentials is not implemented on this OS"
 msgstr "GCredentials ez dago inplementatuta SE honetan"
 
-#: gio/gcredentials.c:538 gio/gcredentials.c:556
+#: gio/gcredentials.c:550 gio/gcredentials.c:568
 msgid "There is no GCredentials support for your platform"
 msgstr "Ez dago GCredentials euskarririk plataforma honetan"
 
-#: gio/gcredentials.c:607
+#: gio/gcredentials.c:626
 msgid "GCredentials does not contain a process ID on this OS"
 msgstr "GCredentials-ek ez dauka prozesuaren IDrik SE honetan"
 
-#: gio/gcredentials.c:661
+#: gio/gcredentials.c:680
 msgid "Credentials spoofing is not possible on this OS"
 msgstr "Kredentzialak usurpatzea ezinezkoa da SE honetan"
 
@@ -355,152 +363,152 @@ msgstr "Kredentzialak usurpatzea ezinezkoa da SE honetan"
 msgid "Unexpected early end-of-stream"
 msgstr "Ustekabeko korronte-amaiera azkarregia"
 
-#: gio/gdbusaddress.c:159 gio/gdbusaddress.c:233 gio/gdbusaddress.c:322
+#: gio/gdbusaddress.c:162 gio/gdbusaddress.c:236 gio/gdbusaddress.c:325
 #, c-format
 msgid "Unsupported key “%s” in address entry “%s”"
 msgstr "Onartu gabeko “%s” gakoa helbidearen “%s” sarreran"
 
-#: gio/gdbusaddress.c:172
+#: gio/gdbusaddress.c:175
 #, c-format
 msgid "Meaningless key/value pair combination in address entry “%s”"
 msgstr "Zentzurik gabeko gakoa/balioa bikotearen konbinazioa “%s” helbidearen sarreran"
 
-#: gio/gdbusaddress.c:181
+#: gio/gdbusaddress.c:184
 #, c-format
 msgid ""
 "Address “%s” is invalid (need exactly one of path, dir, tmpdir, or abstract "
 "keys)"
 msgstr "“%s” helbidea baliogabea da (gako hauetako bat behar du: “path” (bide-izena), “tmpdir” (aldi baterako direktorioa) edo “abstract” (abstraktua))"
 
-#: gio/gdbusaddress.c:248 gio/gdbusaddress.c:259 gio/gdbusaddress.c:274
-#: gio/gdbusaddress.c:337 gio/gdbusaddress.c:348
+#: gio/gdbusaddress.c:251 gio/gdbusaddress.c:262 gio/gdbusaddress.c:277
+#: gio/gdbusaddress.c:340 gio/gdbusaddress.c:351
 #, c-format
 msgid "Error in address “%s” — the “%s” attribute is malformed"
 msgstr "Errorea “%s” helbidean — “%s” atributua gaizki osatuta dago"
 
-#: gio/gdbusaddress.c:418 gio/gdbusaddress.c:682
+#: gio/gdbusaddress.c:421 gio/gdbusaddress.c:680
 #, c-format
 msgid "Unknown or unsupported transport “%s” for address “%s”"
 msgstr "“%2$s” helbidearen “%1$s” garraioa ezezaguna edo onartu gabea"
 
-#: gio/gdbusaddress.c:462
+#: gio/gdbusaddress.c:465
 #, c-format
 msgid "Address element “%s” does not contain a colon (:)"
 msgstr "“%s” helbidearen elementuak ez dauka bi punturik (:)"
 
-#: gio/gdbusaddress.c:471
+#: gio/gdbusaddress.c:474
 #, c-format
 msgid "Transport name in address element “%s” must not be empty"
 msgstr "“%s” helbidearen elementuko garraio-izenak ez du hutsik egon behar"
 
-#: gio/gdbusaddress.c:492
+#: gio/gdbusaddress.c:495
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” does not contain an equal "
 "sign"
 msgstr "%d. gakoa/balioa bikoteak, “%s”, “%s” helbidearen elementuan, ez dauka berdina (=) ikurrik"
 
-#: gio/gdbusaddress.c:503
+#: gio/gdbusaddress.c:506
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” must not have an empty key"
 msgstr "%d. gakoa/balioa bikoteak, “%s”, “%s” helbidearen elementuan, ez du gakoa hutsik eduki behar"
 
-#: gio/gdbusaddress.c:517
+#: gio/gdbusaddress.c:520
 #, c-format
 msgid ""
 "Error unescaping key or value in Key/Value pair %d, “%s”, in address element "
 "“%s”"
 msgstr "Errorea gakoa edo balioa iheseko modutik kentzean %d. gakoa/balioa bikotean, “%s”, “%s” helbidearen elementuan"
 
-#: gio/gdbusaddress.c:589
+#: gio/gdbusaddress.c:588
 #, c-format
 msgid ""
 "Error in address “%s” — the unix transport requires exactly one of the keys "
 "“path” or “abstract” to be set"
 msgstr "Errorea “%s” helbidean - unix-eko garraioak “path” edo “abstract” gakoetariko bat behar du hain zuzen."
 
-#: gio/gdbusaddress.c:625
+#: gio/gdbusaddress.c:623
 #, c-format
 msgid "Error in address “%s” — the host attribute is missing or malformed"
 msgstr "Errorea “%s” helbidean — ostalariaren atributua falta da edo gaizki osatuta dago"
 
-#: gio/gdbusaddress.c:639
+#: gio/gdbusaddress.c:637
 #, c-format
 msgid "Error in address “%s” — the port attribute is missing or malformed"
 msgstr "Errorea “%s” helbidean — atakaren atributua falta da edo gaizki osatuta dago"
 
-#: gio/gdbusaddress.c:653
+#: gio/gdbusaddress.c:651
 #, c-format
 msgid "Error in address “%s” — the noncefile attribute is missing or malformed"
 msgstr "Errorea “%s” helbidean — izendapenaren fitxategiaren atributua falta da edo gaizki osatuta dago"
 
-#: gio/gdbusaddress.c:674
+#: gio/gdbusaddress.c:672
 msgid "Error auto-launching: "
 msgstr "Errorea automatikoki abiaraztean: "
 
-#: gio/gdbusaddress.c:727
+#: gio/gdbusaddress.c:725
 #, c-format
 msgid "Error opening nonce file “%s”: %s"
 msgstr "Errorea “%s” izendapeneko fitxategia irekitzean: %s"
 
-#: gio/gdbusaddress.c:746
+#: gio/gdbusaddress.c:744
 #, c-format
 msgid "Error reading from nonce file “%s”: %s"
 msgstr "Errorea “%s” izendapeneko fitxategitik irakurtzean: %s"
 
-#: gio/gdbusaddress.c:755
+#: gio/gdbusaddress.c:753
 #, c-format
 msgid "Error reading from nonce file “%s”, expected 16 bytes, got %d"
 msgstr "Errorea “%s” izendapeneko fitxategitik irakurtzean: 16 byte espero ziren, baina %d lortu dira"
 
-#: gio/gdbusaddress.c:773
+#: gio/gdbusaddress.c:771
 #, c-format
 msgid "Error writing contents of nonce file “%s” to stream:"
 msgstr "Errorea “%s” izendapeneko fitxategiko edukia korrontean idaztean:"
 
-#: gio/gdbusaddress.c:988
+#: gio/gdbusaddress.c:986
 msgid "The given address is empty"
 msgstr "Emandako helbidea hutsik dago"
 
-#: gio/gdbusaddress.c:1101
+#: gio/gdbusaddress.c:1099
 #, c-format
-msgid "Cannot spawn a message bus when setuid"
-msgstr "Ezin da mezuaren deia abiarazi 'setuid' duenean"
+msgid "Cannot spawn a message bus when AT_SECURE is set"
+msgstr "Ezin da mezuaren deia abiarazi AT_SECURE ezarrita dagoenean"
 
-#: gio/gdbusaddress.c:1108
+#: gio/gdbusaddress.c:1106
 msgid "Cannot spawn a message bus without a machine-id: "
 msgstr "Ezin da mezuaren deia abiarazi makinaren IDrik gabe: "
 
-#: gio/gdbusaddress.c:1115
+#: gio/gdbusaddress.c:1113
 #, c-format
 msgid "Cannot autolaunch D-Bus without X11 $DISPLAY"
 msgstr "Ezin da D-Bus automatikoki abiarazi X11 $DISPLAY gabe"
 
-#: gio/gdbusaddress.c:1157
+#: gio/gdbusaddress.c:1155
 #, c-format
 msgid "Error spawning command line “%s”: "
 msgstr "Errorea “%s” komando-lerroa abiaraztean: "
 
-#: gio/gdbusaddress.c:1226
+#: gio/gdbusaddress.c:1224
 #, c-format
 msgid "Cannot determine session bus address (not implemented for this OS)"
 msgstr "Ezin da saioaren bus-eko helbidea zehaztu (ez dago SE honetan garatuta)"
 
-#: gio/gdbusaddress.c:1397 gio/gdbusconnection.c:7261
+#: gio/gdbusaddress.c:1373 gio/gdbusconnection.c:7334
 #, c-format
 msgid ""
 "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
 "— unknown value “%s”"
 msgstr "Ezin da bus-aren helbidea zehaztua inguruneko DBUS_STARTER_BUS_TYPE aldagaitik. “%s” balio ezezaguna"
 
-#: gio/gdbusaddress.c:1406 gio/gdbusconnection.c:7270
+#: gio/gdbusaddress.c:1382 gio/gdbusconnection.c:7343
 msgid ""
 "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
 "variable is not set"
 msgstr "Ezin da bus-aren helbidea zehaztua, inguruneko DBUS_STARTER_BUS_TYPE aldagaia ezarri gabe dagoelako"
 
-#: gio/gdbusaddress.c:1416
+#: gio/gdbusaddress.c:1392
 #, c-format
 msgid "Unknown bus type %d"
 msgstr "%d bus mota ezezaguna"
@@ -527,250 +535,250 @@ msgstr "Erabiltzailearen IDak ID bera izan behar du parekoan eta zerbitzarian"
 msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
 msgstr "Bertan behera utzita GDBusAuthObserver::authorize-authenticated-peer erabiliz"
 
-#: gio/gdbusauthmechanismsha1.c:298
+#: gio/gdbusauthmechanismsha1.c:300
 #, c-format
 msgid "Error when getting information for directory “%s”: %s"
 msgstr "Errorea “%s” direktorioaren informazioa eskuratzean: %s"
 
-#: gio/gdbusauthmechanismsha1.c:313
+#: gio/gdbusauthmechanismsha1.c:315
 #, c-format
 msgid ""
 "Permissions on directory “%s” are malformed. Expected mode 0700, got 0%o"
 msgstr "“%s” direktorioko baimenak gaizki osatuta. 0700 modua espero zen, baina 0%o lortuta"
 
-#: gio/gdbusauthmechanismsha1.c:346 gio/gdbusauthmechanismsha1.c:357
+#: gio/gdbusauthmechanismsha1.c:348 gio/gdbusauthmechanismsha1.c:359
 #, c-format
 msgid "Error creating directory “%s”: %s"
 msgstr "Errorea “%s” direktorioa sortzean: %s"
 
-#: gio/gdbusauthmechanismsha1.c:359 gio/gfile.c:1062 gio/gfile.c:1300
-#: gio/gfile.c:1438 gio/gfile.c:1676 gio/gfile.c:1731 gio/gfile.c:1789
-#: gio/gfile.c:1873 gio/gfile.c:1930 gio/gfile.c:1994 gio/gfile.c:2049
-#: gio/gfile.c:3754 gio/gfile.c:3809 gio/gfile.c:4102 gio/gfile.c:4572
-#: gio/gfile.c:4983 gio/gfile.c:5068 gio/gfile.c:5158 gio/gfile.c:5255
-#: gio/gfile.c:5342 gio/gfile.c:5443 gio/gfile.c:8153 gio/gfile.c:8243
-#: gio/gfile.c:8327 gio/win32/gwinhttpfile.c:453
+#: gio/gdbusauthmechanismsha1.c:361 gio/gfile.c:1080 gio/gfile.c:1318
+#: gio/gfile.c:1456 gio/gfile.c:1694 gio/gfile.c:1749 gio/gfile.c:1807
+#: gio/gfile.c:1891 gio/gfile.c:1948 gio/gfile.c:2012 gio/gfile.c:2067
+#: gio/gfile.c:3772 gio/gfile.c:3912 gio/gfile.c:4205 gio/gfile.c:4675
+#: gio/gfile.c:5086 gio/gfile.c:5171 gio/gfile.c:5261 gio/gfile.c:5358
+#: gio/gfile.c:5445 gio/gfile.c:5546 gio/gfile.c:8375 gio/gfile.c:8465
+#: gio/gfile.c:8549 gio/win32/gwinhttpfile.c:453
 msgid "Operation not supported"
 msgstr "Eragiketa ez dago onartuta"
 
-#: gio/gdbusauthmechanismsha1.c:402
+#: gio/gdbusauthmechanismsha1.c:404
 #, c-format
 msgid "Error opening keyring “%s” for reading: "
 msgstr "Errorea “%s” gako sorta irakurtzeko irekitzean: "
 
-#: gio/gdbusauthmechanismsha1.c:425 gio/gdbusauthmechanismsha1.c:747
+#: gio/gdbusauthmechanismsha1.c:427 gio/gdbusauthmechanismsha1.c:769
 #, c-format
 msgid "Line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr "“%2$s”(e)ngo gako sortako %1$d. lerroa (“%3$s” edukiarekin) gaizki osatuta dago"
 
-#: gio/gdbusauthmechanismsha1.c:439 gio/gdbusauthmechanismsha1.c:761
+#: gio/gdbusauthmechanismsha1.c:441 gio/gdbusauthmechanismsha1.c:783
 #, c-format
 msgid ""
 "First token of line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr "“%2$s”(e)ngo gako sortako %1$d. lerroko aurreneko tokena (“%3$s” edukiarekin) gaizki osatuta dago"
 
-#: gio/gdbusauthmechanismsha1.c:453 gio/gdbusauthmechanismsha1.c:775
+#: gio/gdbusauthmechanismsha1.c:455 gio/gdbusauthmechanismsha1.c:797
 #, c-format
 msgid ""
 "Second token of line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr "“%2$s”(e)ngo gako sortako %1$d. lerroko bigarren tokena (“%3$s” edukiarekin) gaizki osatuta dago"
 
-#: gio/gdbusauthmechanismsha1.c:477
+#: gio/gdbusauthmechanismsha1.c:479
 #, c-format
 msgid "Didn’t find cookie with id %d in the keyring at “%s”"
 msgstr "Ez da %d IDko cookie-rik aurkitu “%s”(e)ngo gako sortan"
 
-#: gio/gdbusauthmechanismsha1.c:523
+#: gio/gdbusauthmechanismsha1.c:536
 #, c-format
 msgid "Error creating lock file “%s”: %s"
 msgstr "Errorea blokeoko “%s” fitxategia sortzean: %s"
 
-#: gio/gdbusauthmechanismsha1.c:587
+#: gio/gdbusauthmechanismsha1.c:609
 #, c-format
 msgid "Error deleting stale lock file “%s”: %s"
 msgstr "Errorea blokeoaren “%s” fitxategi zaharkitua ezabatzean: %s"
 
-#: gio/gdbusauthmechanismsha1.c:626
+#: gio/gdbusauthmechanismsha1.c:648
 #, c-format
 msgid "Error closing (unlinked) lock file “%s”: %s"
 msgstr "Errorea blokeoko (estekatu gabeko) “%s” fitxategia ixtean: %s"
 
-#: gio/gdbusauthmechanismsha1.c:637
+#: gio/gdbusauthmechanismsha1.c:659
 #, c-format
 msgid "Error unlinking lock file “%s”: %s"
 msgstr "Errorea blokeoko “%s” fitxategia desestekatzean: %s"
 
-#: gio/gdbusauthmechanismsha1.c:714
+#: gio/gdbusauthmechanismsha1.c:736
 #, c-format
 msgid "Error opening keyring “%s” for writing: "
 msgstr "Errorea “%s” gako sorta idazteko irekitzean: "
 
-#: gio/gdbusauthmechanismsha1.c:908
+#: gio/gdbusauthmechanismsha1.c:930
 #, c-format
 msgid "(Additionally, releasing the lock for “%s” also failed: %s) "
 msgstr "(Gainera, “%s”(r)en blokeoa askatzeak ere huts egin du: %s) "
 
-#: gio/gdbusconnection.c:603 gio/gdbusconnection.c:2417
+#: gio/gdbusconnection.c:604 gio/gdbusconnection.c:2418
 msgid "The connection is closed"
 msgstr "Konexioa itxi egin da"
 
-#: gio/gdbusconnection.c:1902
+#: gio/gdbusconnection.c:1903
 msgid "Timeout was reached"
 msgstr "Denbora-mugara iritsi da"
 
-#: gio/gdbusconnection.c:2540
+#: gio/gdbusconnection.c:2541
 msgid ""
 "Unsupported flags encountered when constructing a client-side connection"
 msgstr "Onartu gabeko banderak aurkitu dira bezeroaren aldeko konexioa eraikitzean"
 
-#: gio/gdbusconnection.c:4189 gio/gdbusconnection.c:4536
+#: gio/gdbusconnection.c:4269 gio/gdbusconnection.c:4623
 #, c-format
 msgid ""
 "No such interface “org.freedesktop.DBus.Properties” on object at path %s"
 msgstr "Ez dago “org.freedesktop.DBus.Properties” interfazerik %s bide-izeneko objektuan"
 
-#: gio/gdbusconnection.c:4331
+#: gio/gdbusconnection.c:4414
 #, c-format
 msgid "No such property “%s”"
 msgstr "Ez dago “%s” propietaterik"
 
-#: gio/gdbusconnection.c:4343
+#: gio/gdbusconnection.c:4426
 #, c-format
 msgid "Property “%s” is not readable"
 msgstr "“%s” propietatea ez da irakurgarria"
 
-#: gio/gdbusconnection.c:4354
+#: gio/gdbusconnection.c:4437
 #, c-format
 msgid "Property “%s” is not writable"
 msgstr "“%s” propietatea ez da idazgarria"
 
-#: gio/gdbusconnection.c:4374
+#: gio/gdbusconnection.c:4457
 #, c-format
 msgid "Error setting property “%s”: Expected type “%s” but got “%s”"
 msgstr "Errorea “%s” propietatea ezartzean: “%s” mota espero zen, baina “%s” lortu da"
 
-#: gio/gdbusconnection.c:4479 gio/gdbusconnection.c:4687
-#: gio/gdbusconnection.c:6689
+#: gio/gdbusconnection.c:4562 gio/gdbusconnection.c:4777
+#: gio/gdbusconnection.c:6760
 #, c-format
 msgid "No such interface “%s”"
 msgstr "Ez dago “%s” interfazerik"
 
-#: gio/gdbusconnection.c:4905 gio/gdbusconnection.c:7201
+#: gio/gdbusconnection.c:4999 gio/gdbusconnection.c:7274
 #, c-format
 msgid "No such interface “%s” on object at path %s"
 msgstr "Ez dago “%s” interfazerik %s bide-izeneko objektuan"
 
-#: gio/gdbusconnection.c:5003
+#: gio/gdbusconnection.c:5100
 #, c-format
 msgid "No such method “%s”"
 msgstr "Ez dago “%s” metodorik"
 
-#: gio/gdbusconnection.c:5034
+#: gio/gdbusconnection.c:5131
 #, c-format
 msgid "Type of message, “%s”, does not match expected type “%s”"
 msgstr "“%s” mezu mota ez dator bat espero zen “%s” motarekin"
 
-#: gio/gdbusconnection.c:5237
+#: gio/gdbusconnection.c:5334
 #, c-format
 msgid "An object is already exported for the interface %s at %s"
 msgstr "Jadanik objektu bat esportatuta dago %s interfazearentzako %s(e)n"
 
-#: gio/gdbusconnection.c:5463
+#: gio/gdbusconnection.c:5561
 #, c-format
 msgid "Unable to retrieve property %s.%s"
 msgstr "Ezin da %s.%s propietatea eskuratu"
 
-#: gio/gdbusconnection.c:5519
+#: gio/gdbusconnection.c:5617
 #, c-format
 msgid "Unable to set property %s.%s"
 msgstr "Ezin da %s.%s propietatea ezarri"
 
-#: gio/gdbusconnection.c:5698
+#: gio/gdbusconnection.c:5796
 #, c-format
 msgid "Method “%s” returned type “%s”, but expected “%s”"
 msgstr "“%s” metodoak “%s” mota itzuli du, baina “%s” espero zen"
 
-#: gio/gdbusconnection.c:6800
+#: gio/gdbusconnection.c:6872
 #, c-format
 msgid "Method “%s” on interface “%s” with signature “%s” does not exist"
 msgstr "“%s” metodoa, “%s” interfazekoa eta “%s” sinadura duena, ez da existitzen"
 
-#: gio/gdbusconnection.c:6921
+#: gio/gdbusconnection.c:6993
 #, c-format
 msgid "A subtree is already exported for %s"
 msgstr "Azpizuhaitza jadanik %s(e)ra esportatuta"
 
-#: gio/gdbusconnection.c:7209
+#: gio/gdbusconnection.c:7282
 #, c-format
 msgid "Object does not exist at path “%s”"
 msgstr "Objekturik ez da existitzen “%s” bide-izenean"
 
-#: gio/gdbusmessage.c:1266
+#: gio/gdbusmessage.c:1301
 msgid "type is INVALID"
 msgstr "mota baliogabea da"
 
-#: gio/gdbusmessage.c:1277
+#: gio/gdbusmessage.c:1312
 msgid "METHOD_CALL message: PATH or MEMBER header field is missing"
 msgstr "METHOD_CALL-en mezua: goiburuko PATH edo MEMBER eremua falta da"
 
-#: gio/gdbusmessage.c:1288
+#: gio/gdbusmessage.c:1323
 msgid "METHOD_RETURN message: REPLY_SERIAL header field is missing"
 msgstr "METHOD_RETURN-en mezua: goiburuko REPLY_SERIAL eremua falta da"
 
-#: gio/gdbusmessage.c:1300
+#: gio/gdbusmessage.c:1335
 msgid "ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing"
 msgstr "ERROR-en mezua: goiburuko REPLY_SERIAL edo ERROR_NAME eremua falta da"
 
-#: gio/gdbusmessage.c:1313
+#: gio/gdbusmessage.c:1348
 msgid "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing"
 msgstr "SIGNAL-en mezua: goiburuko PATH, INTERFACE edo MEMBER eremua falta da"
 
-#: gio/gdbusmessage.c:1321
+#: gio/gdbusmessage.c:1356
 msgid ""
 "SIGNAL message: The PATH header field is using the reserved value /org/"
 "freedesktop/DBus/Local"
 msgstr "SIGNAL-en mezua: goiburuko PATH eremua '/org/freedesktop/DBus/Local' balio erreserbatua erabiltzen ari da"
 
-#: gio/gdbusmessage.c:1329
+#: gio/gdbusmessage.c:1364
 msgid ""
 "SIGNAL message: The INTERFACE header field is using the reserved value org."
 "freedesktop.DBus.Local"
 msgstr "SIGNAL-en mezua: goiburuko INTERFACE eremua '/org/freedesktop/DBus/Local' balio erreserbatua erabiltzen ari da"
 
-#: gio/gdbusmessage.c:1377 gio/gdbusmessage.c:1437
+#: gio/gdbusmessage.c:1412 gio/gdbusmessage.c:1472
 #, c-format
 msgid "Wanted to read %lu byte but only got %lu"
 msgid_plural "Wanted to read %lu bytes but only got %lu"
 msgstr[0] "byte %lu irakurtzea nahi zen, baina soilik %lu lortu da"
 msgstr[1] "%lu byte irakurtzea nahi ziren, baina %lu lortu da"
 
-#: gio/gdbusmessage.c:1391
+#: gio/gdbusmessage.c:1426
 #, c-format
 msgid "Expected NUL byte after the string “%s” but found byte %d"
 msgstr "NUL bytea espero zen “%s” katearen ondoren, baina “%d” bytea aurkitu da"
 
-#: gio/gdbusmessage.c:1410
+#: gio/gdbusmessage.c:1445
 #, 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”"
 msgstr "Baliozko UTF-8 katea espero zen, baina baliogabeko byte batzuk aurkitu dira byteen %d desplazamenduan (katearen luzera: %d). Ordurarteko baliozko UTF-8 katea honakoa zen: “%s”"
 
-#: gio/gdbusmessage.c:1474 gio/gdbusmessage.c:1722 gio/gdbusmessage.c:1911
+#: gio/gdbusmessage.c:1509 gio/gdbusmessage.c:1785 gio/gdbusmessage.c:1996
 msgid "Value nested too deeply"
 msgstr "Balioa sakonegi habiaratuta dago"
 
-#: gio/gdbusmessage.c:1620
+#: gio/gdbusmessage.c:1677
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus object path"
 msgstr "Analizatutako “%s” balioa ez da baliozko D-Bus objektuaren bide-izen bat"
 
-#: gio/gdbusmessage.c:1642
+#: gio/gdbusmessage.c:1701
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature"
 msgstr "Analizatutako “%s” balioa ez da baliozko D-Bus sinadura"
 
-#: gio/gdbusmessage.c:1689
+#: gio/gdbusmessage.c:1752
 #, c-format
 msgid ""
 "Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB)."
@@ -779,135 +787,139 @@ msgid_plural ""
 msgstr[0] "%u byte luzerako matrizea aurkituta. Gehieneko luzera 2<<26 byte da (64 MiB)."
 msgstr[1] "%u byte luzerako matrizea aurkituta. Gehieneko luzera 2<<26 byte da (64 MiB)."
 
-#: gio/gdbusmessage.c:1709
+#: gio/gdbusmessage.c:1772
 #, 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"
 msgstr "“a%c' motako matrizea aurkitu da, expected to have a length a multiple of %u byteko multiploko luzera edukitzea espero zen, baina %u byteko luzera du"
 
-#: gio/gdbusmessage.c:1895
+#: gio/gdbusmessage.c:1926 gio/gdbusmessage.c:2645
+msgid "Empty structures (tuples) are not allowed in D-Bus"
+msgstr "D-Bus-en ez dira hutsik dauden egiturak (tuplak) onartzen"
+
+#: gio/gdbusmessage.c:1980
 #, c-format
 msgid "Parsed value “%s” for variant is not a valid D-Bus signature"
 msgstr "Analizatutako “%s” balioa aldagaiarentzat ez da baliozko D-Bus sinadura bat"
 
-#: gio/gdbusmessage.c:1936
+#: gio/gdbusmessage.c:2021
 #, c-format
 msgid ""
 "Error deserializing GVariant with type string “%s” from the D-Bus wire format"
 msgstr "Errorea GVariant deserializatzean “%s” kate motarekin D-Bus konexioko formatutik"
 
-#: gio/gdbusmessage.c:2121
+#: gio/gdbusmessage.c:2206
 #, c-format
 msgid ""
 "Invalid endianness value. Expected 0x6c (“l”) or 0x42 (“B”) but found value "
 "0x%02x"
 msgstr "Baliogabeko endian balioa. 0x6c (“l“) edo 0x42 (“B“) espero zen, baina 0x%02x balioa aurkitu da."
 
-#: gio/gdbusmessage.c:2134
+#: gio/gdbusmessage.c:2225
 #, c-format
 msgid "Invalid major protocol version. Expected 1 but found %d"
 msgstr "Protokoloaren bertsio nagusia baliogabea. 1 espero zen, baina %d aurkitu da"
 
-#: gio/gdbusmessage.c:2188 gio/gdbusmessage.c:2784
+#: gio/gdbusmessage.c:2283 gio/gdbusmessage.c:2881
 msgid "Signature header found but is not of type signature"
 msgstr "Sinaduraren goiburua aurkitu da, baina ez da sinadura motakoa"
 
-#: gio/gdbusmessage.c:2200
+#: gio/gdbusmessage.c:2295
 #, c-format
 msgid "Signature header with signature “%s” found but message body is empty"
 msgstr "Sinaduraren goiburua “%s” sinadurarekin aurkitu da, baina gorputza hutsik dago"
 
-#: gio/gdbusmessage.c:2215
+#: gio/gdbusmessage.c:2310
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature (for body)"
 msgstr "Analizatutako “%s” balioa ez da baliozko D-Bus sinadura (gorputzarentzako)"
 
-#: gio/gdbusmessage.c:2247
+#: gio/gdbusmessage.c:2342
 #, 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"
 msgstr[0] "Ez dago sinaduraren goibururik mezuan, baina mezuaren gorputzak %u byte du"
 msgstr[1] "Ez dago sinaduraren goibururik mezuan, baina mezuaren gorputzak %u byte ditu"
 
-#: gio/gdbusmessage.c:2257
+#: gio/gdbusmessage.c:2352
 msgid "Cannot deserialize message: "
 msgstr "Ezin da mezua deserializatu: "
 
-#: gio/gdbusmessage.c:2601
+#: gio/gdbusmessage.c:2698
 #, c-format
 msgid ""
 "Error serializing GVariant with type string “%s” to the D-Bus wire format"
 msgstr "Errorea GVariant serializatzean “%s” kate motarekin D-Bus konexioaren formatura"
 
-#: gio/gdbusmessage.c:2738
+#: gio/gdbusmessage.c:2835
 #, c-format
 msgid ""
 "Number of file descriptors in message (%d) differs from header field (%d)"
 msgstr "Mezuko fitxategi-deskriptoreen kopurua (%d) goiburu-eremukoaren (%d) desberdina da"
 
-#: gio/gdbusmessage.c:2746
+#: gio/gdbusmessage.c:2843
 msgid "Cannot serialize message: "
 msgstr "Ezin da mezua serializatu: "
 
-#: gio/gdbusmessage.c:2799
+#: gio/gdbusmessage.c:2896
 #, c-format
 msgid "Message body has signature “%s” but there is no signature header"
 msgstr "Mezuaren gorputzak “%s” sinadura du, baina ez dago sinaduraren goibururik"
 
-#: gio/gdbusmessage.c:2809
+#: gio/gdbusmessage.c:2906
 #, c-format
 msgid ""
 "Message body has type signature “%s” but signature in the header field is "
 "“%s”"
 msgstr "Mezuaren gorputzak “%s” sinadura mota du, baina goiburuaren eremuko sinadura “%s” da"
 
-#: gio/gdbusmessage.c:2825
+#: gio/gdbusmessage.c:2922
 #, c-format
 msgid "Message body is empty but signature in the header field is “(%s)”"
 msgstr "Mezuaren gorputza hutsik dago, baina goiburuaren eremuko sinadura “(%s)“ da"
 
-#: gio/gdbusmessage.c:3380
+#: gio/gdbusmessage.c:3477
 #, c-format
 msgid "Error return with body of type “%s”"
 msgstr "Errorearen itzulera “'%s” motako gorputzarekin"
 
-#: gio/gdbusmessage.c:3388
+#: gio/gdbusmessage.c:3485
 msgid "Error return with empty body"
 msgstr "Errorearen itzulera gorputz hutsarekin"
 
-#: gio/gdbusprivate.c:2246
+#: gio/gdbusprivate.c:2185
 #, c-format
 msgid "(Type any character to close this window)\n"
 msgstr "(Sakatu edozer tekla leihoa ixteko)\n"
 
-#: gio/gdbusprivate.c:2420
+#: gio/gdbusprivate.c:2371
 #, c-format
 msgid "Session dbus not running, and autolaunch failed"
 msgstr "Saioaren dbus ez da exekutatzen ari, eta abiarazte automatikoak huts egin du"
 
-#: gio/gdbusprivate.c:2443
+#: gio/gdbusprivate.c:2394
 #, c-format
 msgid "Unable to get Hardware profile: %s"
 msgstr "Ezin da hardwarearen profila eskuratu: %s"
 
 #. Translators: Both placeholders are file paths
-#: gio/gdbusprivate.c:2494
+#: gio/gdbusprivate.c:2445
 #, c-format
 msgid "Unable to load %s or %s: "
 msgstr "Ezin izan da %s edo %s kargatu: "
 
-#: gio/gdbusproxy.c:1569
+#: gio/gdbusproxy.c:1573
 #, c-format
 msgid "Error calling StartServiceByName for %s: "
 msgstr "Errorea %s(r)en StartServiceByName deia egitean: "
 
-#: gio/gdbusproxy.c:1592
+#: gio/gdbusproxy.c:1596
 #, c-format
 msgid "Unexpected reply %d from StartServiceByName(\"%s\") method"
 msgstr "Ustekabeko %d erantzuna StartServiceByName(“%s”) metodotik"
 
-#: gio/gdbusproxy.c:2699 gio/gdbusproxy.c:2834
+#: gio/gdbusproxy.c:2707 gio/gdbusproxy.c:2842
 #, c-format
 msgid ""
 "Cannot invoke method; proxy is for the well-known name %s without an owner, "
@@ -959,288 +971,297 @@ msgstr "Komandoak:\n"
 "\n"
 "Erabili “%s KOMANDOA --help” komando bakoitzari dagokion laguntza lortzeko.\n"
 
-#: gio/gdbus-tool.c:201 gio/gdbus-tool.c:273 gio/gdbus-tool.c:345
-#: gio/gdbus-tool.c:369 gio/gdbus-tool.c:859 gio/gdbus-tool.c:1236
-#: gio/gdbus-tool.c:1724
+#: gio/gdbus-tool.c:202 gio/gdbus-tool.c:274 gio/gdbus-tool.c:346
+#: gio/gdbus-tool.c:370 gio/gdbus-tool.c:860 gio/gdbus-tool.c:1245
+#: gio/gdbus-tool.c:1733
 #, c-format
 msgid "Error: %s\n"
 msgstr "Errorea: %s\n"
 
-#: gio/gdbus-tool.c:212 gio/gdbus-tool.c:286 gio/gdbus-tool.c:1740
+#: gio/gdbus-tool.c:213 gio/gdbus-tool.c:287 gio/gdbus-tool.c:1749
 #, c-format
 msgid "Error parsing introspection XML: %s\n"
 msgstr "Errorea introspekzioko XMLa analizatzean: %s\n"
 
-#: gio/gdbus-tool.c:250
+#: gio/gdbus-tool.c:251
 #, c-format
 msgid "Error: %s is not a valid name\n"
 msgstr "Errorea: '%s' ez da baliozko izena\n"
 
-#: gio/gdbus-tool.c:255 gio/gdbus-tool.c:745 gio/gdbus-tool.c:1060
-#: gio/gdbus-tool.c:1890 gio/gdbus-tool.c:2130
+#: gio/gdbus-tool.c:256 gio/gdbus-tool.c:746 gio/gdbus-tool.c:1064
+#: gio/gdbus-tool.c:1899 gio/gdbus-tool.c:2139
 #, c-format
 msgid "Error: %s is not a valid object path\n"
 msgstr "Errorea: '%s' ez da objektuaren baliozko bide-izena\n"
 
-#: gio/gdbus-tool.c:403
+#: gio/gdbus-tool.c:404
 msgid "Connect to the system bus"
 msgstr "Konektatu sistemako bus-arekin"
 
-#: gio/gdbus-tool.c:404
+#: gio/gdbus-tool.c:405
 msgid "Connect to the session bus"
 msgstr "Konektatu saioko bus-arekin"
 
-#: gio/gdbus-tool.c:405
+#: gio/gdbus-tool.c:406
 msgid "Connect to given D-Bus address"
 msgstr "Konektatu emandako D-Bus helbidera"
 
-#: gio/gdbus-tool.c:415
+#: gio/gdbus-tool.c:416
 msgid "Connection Endpoint Options:"
 msgstr "Konexioaren amaierako puntuaren aukerak:"
 
-#: gio/gdbus-tool.c:416
+#: gio/gdbus-tool.c:417
 msgid "Options specifying the connection endpoint"
 msgstr "Aukerak konexioaren amaierako puntua zehaztuz"
 
-#: gio/gdbus-tool.c:439
+#: gio/gdbus-tool.c:440
 #, c-format
 msgid "No connection endpoint specified"
 msgstr "Ez da konexioaren amaierako punturik zehaztu"
 
-#: gio/gdbus-tool.c:449
+#: gio/gdbus-tool.c:450
 #, c-format
 msgid "Multiple connection endpoints specified"
 msgstr "Konexioaren hainbat amaierako puntu zehaztu dira"
 
-#: gio/gdbus-tool.c:522
+#: gio/gdbus-tool.c:523
 #, c-format
 msgid ""
 "Warning: According to introspection data, interface “%s” does not exist\n"
 msgstr "Abisua: introspekzioko datuen arabera, “%s” interfazea ez da existitzen\n"
 
-#: gio/gdbus-tool.c:531
+#: gio/gdbus-tool.c:532
 #, c-format
 msgid ""
 "Warning: According to introspection data, method “%s” does not exist on "
 "interface “%s”\n"
 msgstr "Abisua: introspekzioko datuen arabera, “%s” metodoa ez da existitzen “%s” interfazean\n"
 
-#: gio/gdbus-tool.c:593
+#: gio/gdbus-tool.c:594
 msgid "Optional destination for signal (unique name)"
 msgstr "Seinalearen aukerazko helburua (izen esklusiboa)"
 
-#: gio/gdbus-tool.c:594
+#: gio/gdbus-tool.c:595
 msgid "Object path to emit signal on"
 msgstr "Objektuaren bide-izena bere gainera seinalea igortzeko"
 
-#: gio/gdbus-tool.c:595
+#: gio/gdbus-tool.c:596
 msgid "Signal and interface name"
 msgstr "Seinale eta interfazearen izena"
 
-#: gio/gdbus-tool.c:628
+#: gio/gdbus-tool.c:629
 msgid "Emit a signal."
 msgstr "Igorri seinale bat."
 
-#: gio/gdbus-tool.c:683 gio/gdbus-tool.c:997 gio/gdbus-tool.c:1827
-#: gio/gdbus-tool.c:2059 gio/gdbus-tool.c:2279
+#: gio/gdbus-tool.c:684 gio/gdbus-tool.c:1001 gio/gdbus-tool.c:1836
+#: gio/gdbus-tool.c:2068 gio/gdbus-tool.c:2288
 #, c-format
 msgid "Error connecting: %s\n"
 msgstr "Errorea konektatzean: %s\n"
 
-#: gio/gdbus-tool.c:703
+#: gio/gdbus-tool.c:704
 #, c-format
 msgid "Error: %s is not a valid unique bus name.\n"
 msgstr "Errorea: '%s' ez da bus-aren baliozko izen esklusiboa\n"
 
-#: gio/gdbus-tool.c:722 gio/gdbus-tool.c:1040 gio/gdbus-tool.c:1870
+#: gio/gdbus-tool.c:723 gio/gdbus-tool.c:1044 gio/gdbus-tool.c:1879
 msgid "Error: Object path is not specified\n"
 msgstr "Errorea: objektuaren bide-izena ez dago zehaztuta\n"
 
-#: gio/gdbus-tool.c:765
+#: gio/gdbus-tool.c:766
 msgid "Error: Signal name is not specified\n"
 msgstr "Errorea: seinalearen izena ez dago zehaztuta\n"
 
-#: gio/gdbus-tool.c:779
+#: gio/gdbus-tool.c:780
 #, c-format
 msgid "Error: Signal name “%s” is invalid\n"
 msgstr "Errorea: “%s” seinalearen izena baliogabea da\n"
 
-#: gio/gdbus-tool.c:791
+#: gio/gdbus-tool.c:792
 #, c-format
 msgid "Error: %s is not a valid interface name\n"
 msgstr "Errorea: '%s' ez da interfazearen baliozko izena\n"
 
-#: gio/gdbus-tool.c:797
+#: gio/gdbus-tool.c:798
 #, c-format
 msgid "Error: %s is not a valid member name\n"
 msgstr "Errorea: '%s' ez da kidearen baliozko izena\n"
 
 #. Use the original non-"parse-me-harder" error
-#: gio/gdbus-tool.c:834 gio/gdbus-tool.c:1172
+#: gio/gdbus-tool.c:835 gio/gdbus-tool.c:1176
 #, c-format
 msgid "Error parsing parameter %d: %s\n"
 msgstr "Errorea %d parametroa analizatzean: %s\n"
 
-#: gio/gdbus-tool.c:866
+#: gio/gdbus-tool.c:867
 #, c-format
 msgid "Error flushing connection: %s\n"
 msgstr "Errorea konexioa garbitzean: %s\n"
 
-#: gio/gdbus-tool.c:893
+#: gio/gdbus-tool.c:895
 msgid "Destination name to invoke method on"
 msgstr "Helburuaren izena metodoari deitzeko"
 
-#: gio/gdbus-tool.c:894
+#: gio/gdbus-tool.c:896
 msgid "Object path to invoke method on"
 msgstr "Objektuaren bide-izena metodoari deitzeko"
 
-#: gio/gdbus-tool.c:895
+#: gio/gdbus-tool.c:897
 msgid "Method and interface name"
 msgstr "Metodo eta interfazearen izena"
 
-#: gio/gdbus-tool.c:896
+#: gio/gdbus-tool.c:898
 msgid "Timeout in seconds"
 msgstr "Denbora-muga (segundotan)"
 
-#: gio/gdbus-tool.c:942
+#: gio/gdbus-tool.c:899
+msgid "Allow interactive authorization"
+msgstr "Onartu baimen dinamikoa"
+
+#: gio/gdbus-tool.c:946
 msgid "Invoke a method on a remote object."
 msgstr "Deitu metodo bati urruneko objektu batean."
 
-#: gio/gdbus-tool.c:1014 gio/gdbus-tool.c:1844 gio/gdbus-tool.c:2084
+#: gio/gdbus-tool.c:1018 gio/gdbus-tool.c:1853 gio/gdbus-tool.c:2093
 msgid "Error: Destination is not specified\n"
 msgstr "Errorea: helburua ez dago zehaztuta\n"
 
-#: gio/gdbus-tool.c:1025 gio/gdbus-tool.c:1861 gio/gdbus-tool.c:2095
+#: gio/gdbus-tool.c:1029 gio/gdbus-tool.c:1870 gio/gdbus-tool.c:2104
 #, c-format
 msgid "Error: %s is not a valid bus name\n"
 msgstr "Errorea: '%s' ez da busaren baliozko izena\n"
 
-#: gio/gdbus-tool.c:1075
+#: gio/gdbus-tool.c:1079
 msgid "Error: Method name is not specified\n"
 msgstr "Errorea: metodoaren izena ez dago zehaztuta\n"
 
-#: gio/gdbus-tool.c:1086
+#: gio/gdbus-tool.c:1090
 #, c-format
 msgid "Error: Method name “%s” is invalid\n"
 msgstr "Errorea: “%s” metodoaren izena baliogabea da\n"
 
-#: gio/gdbus-tool.c:1164
+#: gio/gdbus-tool.c:1168
 #, c-format
 msgid "Error parsing parameter %d of type “%s”: %s\n"
 msgstr "Errorea “%2$s” motako %1$d parametroa analizatzean: %3$s\n"
 
-#: gio/gdbus-tool.c:1190
+#: gio/gdbus-tool.c:1194
 #, c-format
 msgid "Error adding handle %d: %s\n"
 msgstr "Errorea %d heldulekua gehitzean: %s\n"
 
-#: gio/gdbus-tool.c:1686
+#: gio/gdbus-tool.c:1695
 msgid "Destination name to introspect"
 msgstr "Helburuko izena introspekzioa egiteko"
 
-#: gio/gdbus-tool.c:1687
+#: gio/gdbus-tool.c:1696
 msgid "Object path to introspect"
 msgstr "Objektuaren bide-izena introspekzioa egiteko"
 
-#: gio/gdbus-tool.c:1688
+#: gio/gdbus-tool.c:1697
 msgid "Print XML"
 msgstr "Inprimatu XML"
 
-#: gio/gdbus-tool.c:1689
+#: gio/gdbus-tool.c:1698
 msgid "Introspect children"
 msgstr "Aztertu umeen barnean"
 
-#: gio/gdbus-tool.c:1690
+#: gio/gdbus-tool.c:1699
 msgid "Only print properties"
 msgstr "Soilik inprimatzeko propietateak"
 
-#: gio/gdbus-tool.c:1779
+#: gio/gdbus-tool.c:1788
 msgid "Introspect a remote object."
 msgstr "Urruneko objektu baten introspekzioa egin."
 
-#: gio/gdbus-tool.c:1985
+#: gio/gdbus-tool.c:1994
 msgid "Destination name to monitor"
 msgstr "Helburuko izena monitorizatzeko"
 
-#: gio/gdbus-tool.c:1986
+#: gio/gdbus-tool.c:1995
 msgid "Object path to monitor"
 msgstr "Objektuaren bide-izena monitorizatzeko"
 
-#: gio/gdbus-tool.c:2011
+#: gio/gdbus-tool.c:2020
 msgid "Monitor a remote object."
 msgstr "Monitorizatu urruneko objektu bat."
 
-#: gio/gdbus-tool.c:2069
+#: gio/gdbus-tool.c:2078
 msgid "Error: can’t monitor a non-message-bus connection\n"
 msgstr "Errorea: ezin da monitorizatu non-message-bus konexio bat\n"
 
-#: gio/gdbus-tool.c:2193
+#: gio/gdbus-tool.c:2202
 msgid "Service to activate before waiting for the other one (well-known name)"
 msgstr "Aktibatu beharreko zerbitzua bestearen (izen ezaguna) zain egon aurretik"
 
-#: gio/gdbus-tool.c:2196
+#: gio/gdbus-tool.c:2205
 msgid ""
 "Timeout to wait for before exiting with an error (seconds); 0 for no timeout "
 "(default)"
 msgstr "Denbora-muga errore batekin irten aurretik zain egoteko (segundotan); 0 denbora-mugarik ez (lehenetsia)"
 
-#: gio/gdbus-tool.c:2244
+#: gio/gdbus-tool.c:2253
 msgid "[OPTION…] BUS-NAME"
 msgstr "[AUKERA…] BUS-IZENA"
 
-#: gio/gdbus-tool.c:2245
+#: gio/gdbus-tool.c:2254
 msgid "Wait for a bus name to appear."
 msgstr "Bus-izen bat agertzeko zain egon."
 
-#: gio/gdbus-tool.c:2321
+#: gio/gdbus-tool.c:2330
 msgid "Error: A service to activate for must be specified.\n"
 msgstr "Errorea: zerbitzua zehaztu behar da aktibatzeko.\n"
 
-#: gio/gdbus-tool.c:2326
+#: gio/gdbus-tool.c:2335
 msgid "Error: A service to wait for must be specified.\n"
 msgstr "Errorea: zerbitzua zehaztu behar da haren zain egoteko.\n"
 
-#: gio/gdbus-tool.c:2331
+#: gio/gdbus-tool.c:2340
 msgid "Error: Too many arguments.\n"
 msgstr "Errorea: argumentu gehiegi.\n"
 
-#: gio/gdbus-tool.c:2339 gio/gdbus-tool.c:2346
+#: gio/gdbus-tool.c:2348 gio/gdbus-tool.c:2355
 #, c-format
 msgid "Error: %s is not a valid well-known bus name.\n"
 msgstr "Errorea: '%s' ez da busaren izen ezagun bat\n"
 
-#: gio/gdesktopappinfo.c:2106 gio/gdesktopappinfo.c:4932
+#: gio/gdebugcontrollerdbus.c:357
+#, c-format
+msgid "Not authorized to change debug settings"
+msgstr "Ez duzu arazketa-ezarpenak aldatzeko baimenik"
+
+#: gio/gdesktopappinfo.c:2178 gio/gdesktopappinfo.c:5105
 msgid "Unnamed"
 msgstr "Izengabea"
 
-#: gio/gdesktopappinfo.c:2516
+#: gio/gdesktopappinfo.c:2588
 msgid "Desktop file didn’t specify Exec field"
 msgstr "Mahaigaineko fitxategiak ez du Exec eremua zehaztu"
 
-#: gio/gdesktopappinfo.c:2801
+#: gio/gdesktopappinfo.c:2896
 msgid "Unable to find terminal required for application"
 msgstr "Ezin izan da aplikazioak eskatzen duen terminala aurkitu"
 
-#: gio/gdesktopappinfo.c:3452
+#: gio/gdesktopappinfo.c:3625
 #, c-format
 msgid "Can’t create user application configuration folder %s: %s"
 msgstr "Ezin da erabiltzailearen aplikazioaren %s konfigurazio-karpeta sortu: %s"
 
-#: gio/gdesktopappinfo.c:3456
+#: gio/gdesktopappinfo.c:3629
 #, c-format
 msgid "Can’t create user MIME configuration folder %s: %s"
 msgstr "Ezin da erabiltzailearen MIMEren %s konfigurazio-karpeta sortu: %s"
 
-#: gio/gdesktopappinfo.c:3698 gio/gdesktopappinfo.c:3722
+#: gio/gdesktopappinfo.c:3871 gio/gdesktopappinfo.c:3895
 msgid "Application information lacks an identifier"
 msgstr "Aplikazioaren informazioari identifikatzaile bat falta zaio"
 
-#: gio/gdesktopappinfo.c:3958
+#: gio/gdesktopappinfo.c:4131
 #, c-format
 msgid "Can’t create user desktop file %s"
 msgstr "Ezin da erabiltzailearen mahaigaineko %s fitxategia sortu"
 
-#: gio/gdesktopappinfo.c:4094
+#: gio/gdesktopappinfo.c:4267
 #, c-format
 msgid "Custom definition for %s"
 msgstr "%s(r)en definizio pertsonalizatua"
@@ -1268,7 +1289,7 @@ msgstr "gailuak ez dauka “abiatu” inplementatuta"
 msgid "drive doesn’t implement stop"
 msgstr "gailuak ez dauka “gelditu” inplementatuta"
 
-#: gio/gdtlsconnection.c:1153 gio/gtlsconnection.c:920
+#: gio/gdtlsconnection.c:1186 gio/gtlsconnection.c:955
 msgid "TLS backend does not implement TLS binding retrieval"
 msgstr "TLS motorrak ez du inplementatu TLS loturen atzitzea"
 
@@ -1309,73 +1330,73 @@ msgstr "GEmblen espero zen GEmblemedIcon-entzako"
 #. * trying to find the enclosing (user visible)
 #. * mount of a file, but none exists.
 #.
-#: gio/gfile.c:1561
+#: gio/gfile.c:1579
 msgid "Containing mount does not exist"
 msgstr "Ontziaren muntaia ez da existitzen"
 
-#: gio/gfile.c:2608 gio/glocalfile.c:2477
+#: gio/gfile.c:2626 gio/glocalfile.c:2486
 msgid "Can’t copy over directory"
 msgstr "Ezin da direktorioaren gainean kopiatu"
 
-#: gio/gfile.c:2668
+#: gio/gfile.c:2686
 msgid "Can’t copy directory over directory"
 msgstr "Ezin da direktorioa kopiatu direktorio gainean"
 
-#: gio/gfile.c:2676
+#: gio/gfile.c:2694
 msgid "Target file exists"
 msgstr "Helburuko fitxategia existitzen da"
 
-#: gio/gfile.c:2695
+#: gio/gfile.c:2713
 msgid "Can’t recursively copy directory"
 msgstr "Ezin da direktorioa errekurtsiboki kopiatu"
 
-#: gio/gfile.c:2996
+#: gio/gfile.c:3014
 msgid "Splice not supported"
 msgstr "Lotura ez da onartzen"
 
-#: gio/gfile.c:3000
+#: gio/gfile.c:3018
 #, c-format
 msgid "Error splicing file: %s"
 msgstr "Errorea fitxategia batzean: %s"
 
-#: gio/gfile.c:3152
+#: gio/gfile.c:3170
 msgid "Copy (reflink/clone) between mounts is not supported"
 msgstr "Muntaien artean kopiatzea (reflink/clone) ez dago onartuta"
 
-#: gio/gfile.c:3156
+#: gio/gfile.c:3174
 msgid "Copy (reflink/clone) is not supported or invalid"
 msgstr "Kopiatzea (reflink/clone) ez dago onartuta edo baliogabea da"
 
-#: gio/gfile.c:3161
+#: gio/gfile.c:3179
 msgid "Copy (reflink/clone) is not supported or didn’t work"
 msgstr "Kopiatzea (reflink/clone) ez dago onartuta edo ez du funtzionatzen"
 
-#: gio/gfile.c:3226
+#: gio/gfile.c:3244
 msgid "Can’t copy special file"
 msgstr "Ezin da fitxategi berezia kopiatu"
 
-#: gio/gfile.c:4035
+#: gio/gfile.c:4138
 msgid "Invalid symlink value given"
 msgstr "Esteka sinbolikoaren baliogabeko balioa eman da"
 
-#: gio/gfile.c:4045 glib/gfileutils.c:2354
+#: gio/gfile.c:4148 glib/gfileutils.c:2333
 msgid "Symbolic links not supported"
 msgstr "Esteka sinbolikoak ez dira onartzen"
 
-#: gio/gfile.c:4213
+#: gio/gfile.c:4316
 msgid "Trash not supported"
 msgstr "Zakarrontzira botatzea ez dago onartuta"
 
-#: gio/gfile.c:4325
+#: gio/gfile.c:4428
 #, c-format
 msgid "File names cannot contain “%c”"
 msgstr "Fitxategi-izenek ezin dute “%c” eduki"
 
-#: gio/gfile.c:6806 gio/gvolume.c:364
+#: gio/gfile.c:7028 gio/gvolume.c:364
 msgid "volume doesn’t implement mount"
 msgstr "bolumenak ez dauka muntatzea inplementatuta"
 
-#: gio/gfile.c:6920 gio/gfile.c:6968
+#: gio/gfile.c:7142 gio/gfile.c:7190
 msgid "No application is registered as handling this file"
 msgstr "Ez da aplikaziorik erregistratu fitxategi hau kudeatzeko"
 
@@ -1421,7 +1442,7 @@ msgid "Truncate not supported on stream"
 msgstr "Trunkatzea ez da onartzen korrontean"
 
 #
-#: gio/ghttpproxy.c:91 gio/gresolver.c:443 gio/gresolver.c:596
+#: gio/ghttpproxy.c:91 gio/gresolver.c:458 gio/gresolver.c:611
 #: glib/gconvert.c:1825
 msgid "Invalid hostname"
 msgstr "Ostalari-izen baliogabea"
@@ -1508,7 +1529,7 @@ msgid "Could not parse “%s” as IP address mask"
 msgstr "Ezin izan da “%s” analizatu IP helbide-maskara gisa"
 
 #: gio/ginetsocketaddress.c:203 gio/ginetsocketaddress.c:220
-#: gio/gnativesocketaddress.c:109 gio/gunixsocketaddress.c:221
+#: gio/gnativesocketaddress.c:109 gio/gunixsocketaddress.c:228
 msgid "Not enough space for socket address"
 msgstr "Ez dago nahikoa lekurik socket helbideentzako"
 
@@ -2323,69 +2344,73 @@ msgstr "Errorea %s fitxategia konprimatzean"
 msgid "text may not appear inside <%s>"
 msgstr "testua ezin da <%s>(r)en barruan egon"
 
-#: gio/glib-compile-resources.c:737 gio/glib-compile-schemas.c:2172
+#: gio/glib-compile-resources.c:819 gio/glib-compile-schemas.c:2172
 msgid "Show program version and exit"
 msgstr "Erakutsi programaren bertsioa eta irten"
 
-#: gio/glib-compile-resources.c:738
+#: gio/glib-compile-resources.c:820
 msgid "Name of the output file"
 msgstr "Irteerako fitxategiaren izena"
 
-#: gio/glib-compile-resources.c:739
+#: gio/glib-compile-resources.c:821
 msgid ""
 "The directories to load files referenced in FILE from (default: current "
 "directory)"
 msgstr "FITXATEGIA atributuak erreferentziatutako fitxategiak kargatzeko direktorioak (lehenetsia: uneko direktorioa)"
 
-#: gio/glib-compile-resources.c:739 gio/glib-compile-schemas.c:2173
+#: gio/glib-compile-resources.c:821 gio/glib-compile-schemas.c:2173
 #: gio/glib-compile-schemas.c:2202
 msgid "DIRECTORY"
 msgstr "DIREKTORIOA"
 
-#: gio/glib-compile-resources.c:740
+#: gio/glib-compile-resources.c:822
 msgid ""
 "Generate output in the format selected for by the target filename extension"
 msgstr "Sortu irteera hautatutako formatuan helburuko fitxategiaren luzapenaren arabera"
 
-#: gio/glib-compile-resources.c:741
+#: gio/glib-compile-resources.c:823
 msgid "Generate source header"
 msgstr "Sortu iturburuaren goiburua"
 
-#: gio/glib-compile-resources.c:742
+#: gio/glib-compile-resources.c:824
 msgid "Generate source code used to link in the resource file into your code"
 msgstr "Sortu iturburu-kodea (baliabidearen fitxategia zure kodean estekatzeko erabilita)"
 
-#: gio/glib-compile-resources.c:743
+#: gio/glib-compile-resources.c:825
 msgid "Generate dependency list"
 msgstr "Sortu mendekotasunen zerrenda"
 
-#: gio/glib-compile-resources.c:744
+#: gio/glib-compile-resources.c:826
 msgid "Name of the dependency file to generate"
 msgstr "Sortuko den mendekotasun-fitxategiaren izena"
 
-#: gio/glib-compile-resources.c:745
+#: gio/glib-compile-resources.c:827
 msgid "Include phony targets in the generated dependency file"
 msgstr "Sartu helburu faltsuak sortutako mendekotasun-fitxategian"
 
-#: gio/glib-compile-resources.c:746
+#: gio/glib-compile-resources.c:828
 msgid "Don’t automatically create and register resource"
 msgstr "Ez sortu eta erregistratu baliabidea automatikoki"
 
-#: gio/glib-compile-resources.c:747
+#: gio/glib-compile-resources.c:829
 msgid "Don’t export functions; declare them G_GNUC_INTERNAL"
 msgstr "Ez esportatu funtzioak: deklaratu haiek G_GNUC_INTERNAL gisa"
 
-#: gio/glib-compile-resources.c:748
+#: gio/glib-compile-resources.c:830
 msgid ""
 "Don’t embed resource data in the C file; assume it's linked externally "
 "instead"
 msgstr "Ez kapsulatu baliabide-datuak C fitxategian; onartu kanpotik estekatuta dagoela"
 
-#: gio/glib-compile-resources.c:749
+#: gio/glib-compile-resources.c:831
 msgid "C identifier name used for the generated source code"
 msgstr "C identifikatzailearen izena (sortutako iturburuaren kodean erabilita)"
 
-#: gio/glib-compile-resources.c:775
+#: gio/glib-compile-resources.c:832
+msgid "The target C compiler (default: the CC environment variable)"
+msgstr "Helburuko C konpilatzailea (balio lehenetsia: CC ingurumen-aldagaia)"
+
+#: gio/glib-compile-resources.c:858
 msgid ""
 "Compile a resource specification into a resource file.\n"
 "Resource specification files have the extension .gresource.xml,\n"
@@ -2394,7 +2419,7 @@ msgstr "Konpilatu baliabidearen zehaztapen bat baliabideko fitxategi batean.\n"
 "Baliabideen zehaztapenen fitxategiak .gresource.xml luzapena dute,\n"
 "eta baliabideen fitxategiek berriz .gresource luzapena."
 
-#: gio/glib-compile-resources.c:797
+#: gio/glib-compile-resources.c:880
 msgid "You should give exactly one file name\n"
 msgstr "Fitxategi baten izena bakarrik eman behar duzu\n"
 
@@ -2867,8 +2892,8 @@ msgid "Can’t rename file, filename already exists"
 msgstr "Ezin da fitxategia izenez aldatu, fitxategi-izena badago lehendik ere"
 
 #
-#: gio/glocalfile.c:1184 gio/glocalfile.c:2371 gio/glocalfile.c:2399
-#: gio/glocalfile.c:2538 gio/glocalfileoutputstream.c:656
+#: gio/glocalfile.c:1184 gio/glocalfile.c:2380 gio/glocalfile.c:2408
+#: gio/glocalfile.c:2547 gio/glocalfileoutputstream.c:656
 msgid "Invalid filename"
 msgstr "Fitxategi-izen baliogabea"
 
@@ -2882,91 +2907,91 @@ msgstr "Errorea '%s' fitxategia irekitzean: %s"
 msgid "Error removing file %s: %s"
 msgstr "Errorea '%s' fitxategia kentzean: %s"
 
-#: gio/glocalfile.c:1982 gio/glocalfile.c:1993
+#: gio/glocalfile.c:1982 gio/glocalfile.c:1993 gio/glocalfile.c:2020
 #, c-format
 msgid "Error trashing file %s: %s"
 msgstr "Errorea '%s' fitxategia zakarrontzira botatzean: %s"
 
-#: gio/glocalfile.c:2031
+#: gio/glocalfile.c:2040
 #, c-format
 msgid "Unable to create trash directory %s: %s"
 msgstr "Ezin izan da %s zakarrontzi-direktorioa sortu: %s"
 
-#: gio/glocalfile.c:2052
+#: gio/glocalfile.c:2061
 #, c-format
 msgid "Unable to find toplevel directory to trash %s"
 msgstr "Ezin da '%s' zakarrontziaren goi-mailako direktorioa aurkitu"
 
-#: gio/glocalfile.c:2060
+#: gio/glocalfile.c:2069
 #, c-format
 msgid "Trashing on system internal mounts is not supported"
 msgstr "Sistemaren barneko muntaietan ez da onartzen zakarrontzira botatzea"
 
-#: gio/glocalfile.c:2146 gio/glocalfile.c:2174
+#: gio/glocalfile.c:2155 gio/glocalfile.c:2183
 #, c-format
 msgid "Unable to find or create trash directory %s to trash %s"
 msgstr "Ezin izan da %s zakarrontzi-direktorioa aurkitu edo sortu %s zakarrontzian"
 
-#: gio/glocalfile.c:2220
+#: gio/glocalfile.c:2229
 #, c-format
 msgid "Unable to create trashing info file for %s: %s"
 msgstr "Ezin da '%s' fitxategiaren zakarrontzi-informazioa sortu: %s"
 
-#: gio/glocalfile.c:2282
+#: gio/glocalfile.c:2291
 #, c-format
 msgid "Unable to trash file %s across filesystem boundaries"
 msgstr "Ezin da '%s' fitxategia fitxategi-sistemen arteko zakarrontzira bota"
 
-#: gio/glocalfile.c:2286 gio/glocalfile.c:2342
+#: gio/glocalfile.c:2295 gio/glocalfile.c:2351
 #, c-format
 msgid "Unable to trash file %s: %s"
 msgstr "Ezin da '%s' fitxategia zakarrontzira bota: %s"
 
-#: gio/glocalfile.c:2348
+#: gio/glocalfile.c:2357
 #, c-format
 msgid "Unable to trash file %s"
 msgstr "Ezin da '%s' fitxategia zakarrontzira bota"
 
-#: gio/glocalfile.c:2374
+#: gio/glocalfile.c:2383
 #, c-format
 msgid "Error creating directory %s: %s"
 msgstr "Errorea '%s' direktorioa sortzean: %s"
 
-#: gio/glocalfile.c:2403
+#: gio/glocalfile.c:2412
 #, c-format
 msgid "Filesystem does not support symbolic links"
 msgstr "Fitxategi-sistemak ez ditu esteka sinbolikorik onartzen"
 
-#: gio/glocalfile.c:2406
+#: gio/glocalfile.c:2415
 #, c-format
 msgid "Error making symbolic link %s: %s"
 msgstr "Errorea '%s' esteka sinbolikoa sortzean: %s"
 
-#: gio/glocalfile.c:2449 gio/glocalfile.c:2484 gio/glocalfile.c:2541
+#: gio/glocalfile.c:2458 gio/glocalfile.c:2493 gio/glocalfile.c:2550
 #, c-format
 msgid "Error moving file %s: %s"
 msgstr "Errorea '%s' fitxategia lekuz aldatzean: %s"
 
-#: gio/glocalfile.c:2472
+#: gio/glocalfile.c:2481
 msgid "Can’t move directory over directory"
 msgstr "Ezin da direktorioa lekuz aldatu direktorioaren gainera"
 
-#: gio/glocalfile.c:2498 gio/glocalfileoutputstream.c:1108
+#: gio/glocalfile.c:2507 gio/glocalfileoutputstream.c:1108
 #: gio/glocalfileoutputstream.c:1122 gio/glocalfileoutputstream.c:1137
 #: gio/glocalfileoutputstream.c:1154 gio/glocalfileoutputstream.c:1168
 msgid "Backup file creation failed"
 msgstr "Huts egin du babeskopia sortzean"
 
-#: gio/glocalfile.c:2517
+#: gio/glocalfile.c:2526
 #, c-format
 msgid "Error removing target file: %s"
 msgstr "Errorea helburuko fitxategia kentzean: %s"
 
-#: gio/glocalfile.c:2531
+#: gio/glocalfile.c:2540
 msgid "Move between mounts not supported"
 msgstr "Muntaien artean lekuz aldatzea ez dago onartuta"
 
-#: gio/glocalfile.c:2705
+#: gio/glocalfile.c:2714
 #, c-format
 msgid "Could not determine the disk usage of %s: %s"
 msgstr "Ezin izan da '%s' diskoaren erabilpena zehaztu: %s"
@@ -3149,7 +3174,7 @@ msgid "Error truncating file: %s"
 msgstr "Errorea fitxategia trunkatzean: %s"
 
 #: gio/glocalfileoutputstream.c:662 gio/glocalfileoutputstream.c:907
-#: gio/glocalfileoutputstream.c:1218 gio/gsubprocess.c:226
+#: gio/glocalfileoutputstream.c:1218 gio/gsubprocess.c:229
 #, c-format
 msgid "Error opening file “%s”: %s"
 msgstr "Errorea “%s” fitxategia irekitzean: %s"
@@ -3171,7 +3196,7 @@ msgstr "Fitxategia kanpotik aldatu da"
 msgid "Error removing old file: %s"
 msgstr "Errorea fitxategi zaharra kentzean: %s"
 
-#: gio/gmemoryinputstream.c:474 gio/gmemoryoutputstream.c:772
+#: gio/gmemoryinputstream.c:474 gio/gmemoryoutputstream.c:762
 msgid "Invalid GSeekType supplied"
 msgstr "Baliogabeko GSeekType eman da"
 
@@ -3184,25 +3209,25 @@ msgstr "Bilaketa-eskaera baliogabea"
 msgid "Cannot truncate GMemoryInputStream"
 msgstr "Ezin da GMemoryInputStream trunkatu"
 
-#: gio/gmemoryoutputstream.c:567
+#: gio/gmemoryoutputstream.c:568
 msgid "Memory output stream not resizable"
 msgstr "Ezin da memoriaren irteeraren korrontea tamainaz aldatu"
 
-#: gio/gmemoryoutputstream.c:583
+#: gio/gmemoryoutputstream.c:584
 msgid "Failed to resize memory output stream"
 msgstr "Huts egin du memoriaren irteeraren korrontea tamainaz aldatzean"
 
-#: gio/gmemoryoutputstream.c:673
+#: gio/gmemoryoutputstream.c:663
 msgid ""
 "Amount of memory required to process the write is larger than available "
 "address space"
 msgstr "Idazketa lantzeko behar den memoria kopurua erabilgarri dagoen helbide-espazioa baino handiagoa da"
 
-#: gio/gmemoryoutputstream.c:782
+#: gio/gmemoryoutputstream.c:772
 msgid "Requested seek before the beginning of the stream"
 msgstr "Bilaketa eskatu da korrontearen hasieraren aurretik"
 
-#: gio/gmemoryoutputstream.c:797
+#: gio/gmemoryoutputstream.c:787
 msgid "Requested seek beyond the end of the stream"
 msgstr "Bilaketa eskatu da korrontearen amaieraren ondoren"
 
@@ -3282,12 +3307,12 @@ msgstr "Ezin izan da sareko monitorea sortu: "
 msgid "Could not get network status: "
 msgstr "Ezin izan da sarearen egoera eskuratu: "
 
-#: gio/gnetworkmonitornm.c:348
+#: gio/gnetworkmonitornm.c:311
 #, c-format
 msgid "NetworkManager not running"
 msgstr "NetworkManager ez dago abian"
 
-#: gio/gnetworkmonitornm.c:359
+#: gio/gnetworkmonitornm.c:322
 #, c-format
 msgid "NetworkManager version too old"
 msgstr "NetworkManager-en bertsioa zaharregia"
@@ -3305,19 +3330,19 @@ msgstr "%s(e)ri pasatutako bektoreen batuketa handiegia da"
 msgid "Source stream is already closed"
 msgstr "Iturburuko korrontea jadanik itxi da"
 
-#: gio/gresolver.c:386 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
+#: gio/gresolver.c:401 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
 #, c-format
 msgid "Error resolving “%s”: %s"
 msgstr "Errorea “%s” ebaztean: %s"
 
 #. Translators: The placeholder is for a function name.
-#: gio/gresolver.c:455 gio/gresolver.c:615
+#: gio/gresolver.c:470 gio/gresolver.c:630
 #, c-format
 msgid "%s not implemented"
 msgstr "%s ez dago inplementatuta"
 
 #
-#: gio/gresolver.c:984 gio/gresolver.c:1036
+#: gio/gresolver.c:999 gio/gresolver.c:1051
 msgid "Invalid domain"
 msgstr "Baliogabeko domeinua"
 
@@ -3428,7 +3453,7 @@ msgstr "Erabilera:\n"
 msgid "  SECTION   An (optional) elf section name\n"
 msgstr "  ATALA   elf atalaren izena (aukerakoa)\n"
 
-#: gio/gresource-tool.c:565 gio/gsettings-tool.c:706
+#: gio/gresource-tool.c:565 gio/gsettings-tool.c:718
 msgid "  COMMAND   The (optional) command to explain\n"
 msgstr "  KOMANDOA   (aukerako) komandoa deskribatzeko\n"
 
@@ -3459,7 +3484,7 @@ msgstr "BIDE-IZENA"
 msgid "  PATH      A resource path\n"
 msgstr "  BIDE-IZENA      Baliabidearen bide-izena\n"
 
-#: gio/gsettings-tool.c:49 gio/gsettings-tool.c:70 gio/gsettings-tool.c:911
+#: gio/gsettings-tool.c:49 gio/gsettings-tool.c:70 gio/gsettings-tool.c:923
 #, c-format
 msgid "No such schema “%s”\n"
 msgstr "Ez dago “%s” bezalako eskemarik\n"
@@ -3490,83 +3515,83 @@ msgstr "Bide-izena barra batekin (/) amaitu behar da\n"
 msgid "Path must not contain two adjacent slashes (//)\n"
 msgstr "Bide-izenak ezin ditu bi barra jarraian eduki (//)\n"
 
-#: gio/gsettings-tool.c:541
+#: gio/gsettings-tool.c:553
 msgid "The provided value is outside of the valid range\n"
 msgstr "Emandako balioa baliozko barrutitik kanpo dago\n"
 
-#: gio/gsettings-tool.c:548
+#: gio/gsettings-tool.c:560
 msgid "The key is not writable\n"
 msgstr "Gakoa ez da idazgarria\n"
 
-#: gio/gsettings-tool.c:584
+#: gio/gsettings-tool.c:596
 msgid "List the installed (non-relocatable) schemas"
 msgstr "Zerrendatu instalatutako eskemak (lekuz ezin direnak aldatu)"
 
-#: gio/gsettings-tool.c:590
+#: gio/gsettings-tool.c:602
 msgid "List the installed relocatable schemas"
 msgstr "Zerrendatu instalatutako eskemak (lekuz alda daitezkeenak)"
 
-#: gio/gsettings-tool.c:596
+#: gio/gsettings-tool.c:608
 msgid "List the keys in SCHEMA"
 msgstr "Zerrendatu ESKEMAko gakoak"
 
-#: gio/gsettings-tool.c:597 gio/gsettings-tool.c:603 gio/gsettings-tool.c:646
+#: gio/gsettings-tool.c:609 gio/gsettings-tool.c:615 gio/gsettings-tool.c:658
 msgid "SCHEMA[:PATH]"
 msgstr "ESKEMA[:bide-izena]"
 
-#: gio/gsettings-tool.c:602
+#: gio/gsettings-tool.c:614
 msgid "List the children of SCHEMA"
 msgstr "Zerrendatu ESKEMAren haurrak"
 
-#: gio/gsettings-tool.c:608
+#: gio/gsettings-tool.c:620
 msgid ""
 "List keys and values, recursively\n"
 "If no SCHEMA is given, list all keys\n"
 msgstr "Zerrendatu gako eta balioak, errekurtsiboki\n"
 "Ez bada ESKEMArik ematen, zerrendatu gako guztiak\n"
 
-#: gio/gsettings-tool.c:610
+#: gio/gsettings-tool.c:622
 msgid "[SCHEMA[:PATH]]"
 msgstr "[ESKEMA[:BIDE-IZENA]]"
 
-#: gio/gsettings-tool.c:615
+#: gio/gsettings-tool.c:627
 msgid "Get the value of KEY"
 msgstr "Lortu GAKOAren balioa"
 
-#: gio/gsettings-tool.c:616 gio/gsettings-tool.c:622 gio/gsettings-tool.c:628
-#: gio/gsettings-tool.c:640 gio/gsettings-tool.c:652
+#: gio/gsettings-tool.c:628 gio/gsettings-tool.c:634 gio/gsettings-tool.c:640
+#: gio/gsettings-tool.c:652 gio/gsettings-tool.c:664
 msgid "SCHEMA[:PATH] KEY"
 msgstr "ESKEMA[:BIDE-IZENA] GAKOA"
 
-#: gio/gsettings-tool.c:621
+#: gio/gsettings-tool.c:633
 msgid "Query the range of valid values for KEY"
 msgstr "Kontsultatu GAKOAren baliozko balioen barrutiari buruz"
 
-#: gio/gsettings-tool.c:627
+#: gio/gsettings-tool.c:639
 msgid "Query the description for KEY"
 msgstr "Kontsultatu GAKOAren azalpena"
 
-#: gio/gsettings-tool.c:633
+#: gio/gsettings-tool.c:645
 msgid "Set the value of KEY to VALUE"
 msgstr "Ezarri GAKOAren balioa BALIOArekin"
 
-#: gio/gsettings-tool.c:634
+#: gio/gsettings-tool.c:646
 msgid "SCHEMA[:PATH] KEY VALUE"
 msgstr "ESKEMA[:BIDE-IZENA] GAKOA BALIOA"
 
-#: gio/gsettings-tool.c:639
+#: gio/gsettings-tool.c:651
 msgid "Reset KEY to its default value"
 msgstr "Berrezarri GAKOA bere balio lehenetsira"
 
-#: gio/gsettings-tool.c:645
+#: gio/gsettings-tool.c:657
 msgid "Reset all keys in SCHEMA to their defaults"
 msgstr "Berrezarri ESKEMAko gako guztiak beraien balio lehenetsietara"
 
-#: gio/gsettings-tool.c:651
+#: gio/gsettings-tool.c:663
 msgid "Check if KEY is writable"
 msgstr "Begiratu GAKOA idazgarria den edo ez"
 
-#: gio/gsettings-tool.c:657
+#: gio/gsettings-tool.c:669
 msgid ""
 "Monitor KEY for changes.\n"
 "If no KEY is specified, monitor all keys in SCHEMA.\n"
@@ -3575,11 +3600,11 @@ msgstr "Monitorizatu GAKOAren aldaketak.\n"
 "Ez bada GAKOA zehazten, ESKEMAko gako guztiak monitorizatuko ditu.\n"
 "Erabili ^C monitorizazioa gelditzeko.\n"
 
-#: gio/gsettings-tool.c:660
+#: gio/gsettings-tool.c:672
 msgid "SCHEMA[:PATH] [KEY]"
 msgstr "ESKEMA[:BIDE-IZENA] GAKOA"
 
-#: gio/gsettings-tool.c:672
+#: gio/gsettings-tool.c:684
 msgid ""
 "Usage:\n"
 "  gsettings --version\n"
@@ -3628,7 +3653,7 @@ msgstr "Erabilera:\n"
 "Erabili “gsettings help KOMANDOA“ laguntza xehea lortzeko.\n"
 "\n"
 
-#: gio/gsettings-tool.c:696
+#: gio/gsettings-tool.c:708
 #, c-format
 msgid ""
 "Usage:\n"
@@ -3642,222 +3667,222 @@ msgstr "Erabilera:\n"
 "%s\n"
 "\n"
 
-#: gio/gsettings-tool.c:702
+#: gio/gsettings-tool.c:714
 msgid "  SCHEMADIR A directory to search for additional schemas\n"
 msgstr "  ESKEMA-DIREKTORIOA    Eskema gehigarriak bilatzeko direkotrioa\n"
 
-#: gio/gsettings-tool.c:710
+#: gio/gsettings-tool.c:722
 msgid ""
 "  SCHEMA    The name of the schema\n"
 "  PATH      The path, for relocatable schemas\n"
 msgstr "  ESKEMA            Eskemaren izena\n"
 "  BIDE-IZENA       Bide-izena, lekuz alda daitezkeen eskementzako\n"
 
-#: gio/gsettings-tool.c:715
+#: gio/gsettings-tool.c:727
 msgid "  KEY       The (optional) key within the schema\n"
 msgstr "  GAKOA       Eskema barruko (aukerako) gakoa\n"
 
-#: gio/gsettings-tool.c:719
+#: gio/gsettings-tool.c:731
 msgid "  KEY       The key within the schema\n"
 msgstr "  GAKOA       Eskema barruko gakoa\n"
 
-#: gio/gsettings-tool.c:723
+#: gio/gsettings-tool.c:735
 msgid "  VALUE     The value to set\n"
 msgstr "  BALIOA     Ezarriko den balioa\n"
 
-#: gio/gsettings-tool.c:778
+#: gio/gsettings-tool.c:790
 #, c-format
 msgid "Could not load schemas from %s: %s\n"
 msgstr "Ezin izan dira eskemarik '%s'(e)ndik kargatu : %s\n"
 
-#: gio/gsettings-tool.c:790
+#: gio/gsettings-tool.c:802
 msgid "No schemas installed\n"
 msgstr "Ez dago eskemarik instalatuta\n"
 
-#: gio/gsettings-tool.c:869
+#: gio/gsettings-tool.c:881
 msgid "Empty schema name given\n"
 msgstr "Eskemaren izen hutsa eman da\n"
 
-#: gio/gsettings-tool.c:924
+#: gio/gsettings-tool.c:936
 #, c-format
 msgid "No such key “%s”\n"
 msgstr "Ez dago “%s” bezalako gakorik\n"
 
-#: gio/gsocket.c:413
+#: gio/gsocket.c:417
 msgid "Invalid socket, not initialized"
 msgstr "Baliogabeko socket-a, hasieratu gabe dago"
 
-#: gio/gsocket.c:420
+#: gio/gsocket.c:424
 #, c-format
 msgid "Invalid socket, initialization failed due to: %s"
 msgstr "Baliogabeko socket-a, hasieratzeak huts egin du: %s"
 
-#: gio/gsocket.c:428
+#: gio/gsocket.c:432
 msgid "Socket is already closed"
 msgstr "Socket-a jadanik itxita dago"
 
-#: gio/gsocket.c:443 gio/gsocket.c:3190 gio/gsocket.c:4420 gio/gsocket.c:4478
+#: gio/gsocket.c:447 gio/gsocket.c:3194 gio/gsocket.c:4427 gio/gsocket.c:4485
 msgid "Socket I/O timed out"
 msgstr "S/Iko socketaren denbora-muga gaindituta"
 
-#: gio/gsocket.c:578
+#: gio/gsocket.c:582
 #, c-format
 msgid "creating GSocket from fd: %s"
 msgstr "GSocket sortzen fd-tik: %s"
 
-#: gio/gsocket.c:607 gio/gsocket.c:671 gio/gsocket.c:678
+#: gio/gsocket.c:611 gio/gsocket.c:675 gio/gsocket.c:682
 #, c-format
 msgid "Unable to create socket: %s"
 msgstr "Ezin da socket-a sortu: %s"
 
-#: gio/gsocket.c:671
+#: gio/gsocket.c:675
 msgid "Unknown family was specified"
 msgstr "Familia ezezaguna zehaztu da"
 
-#: gio/gsocket.c:678
+#: gio/gsocket.c:682
 msgid "Unknown protocol was specified"
 msgstr "Protokolo ezezaguna zehaztu da"
 
-#: gio/gsocket.c:1169
+#: gio/gsocket.c:1173
 #, c-format
 msgid "Cannot use datagram operations on a non-datagram socket."
 msgstr "Ezin da datagramen eragiketarik erabili datagramak ez diren socket-etan."
 
-#: gio/gsocket.c:1186
+#: gio/gsocket.c:1190
 #, c-format
 msgid "Cannot use datagram operations on a socket with a timeout set."
 msgstr "Ezin da datagramen eragiketarik erabili socket-etan iraungitze-denborarik ezarri gabe."
 
-#: gio/gsocket.c:1993
+#: gio/gsocket.c:1997
 #, c-format
 msgid "could not get local address: %s"
 msgstr "ezin izan da lokaleko helbidea lortu: %s"
 
-#: gio/gsocket.c:2039
+#: gio/gsocket.c:2043
 #, c-format
 msgid "could not get remote address: %s"
 msgstr "ezin izan da urruneko helbidea lortu: %s"
 
-#: gio/gsocket.c:2105
+#: gio/gsocket.c:2109
 #, c-format
 msgid "could not listen: %s"
 msgstr "ezin izan da entzun: %s"
 
-#: gio/gsocket.c:2209
+#: gio/gsocket.c:2213
 #, c-format
 msgid "Error binding to address %s: %s"
 msgstr "Errorea %s helbidearekin lotzean: %s"
 
-#: gio/gsocket.c:2385 gio/gsocket.c:2422 gio/gsocket.c:2532 gio/gsocket.c:2557
-#: gio/gsocket.c:2620 gio/gsocket.c:2678 gio/gsocket.c:2696
+#: gio/gsocket.c:2389 gio/gsocket.c:2426 gio/gsocket.c:2536 gio/gsocket.c:2561
+#: gio/gsocket.c:2624 gio/gsocket.c:2682 gio/gsocket.c:2700
 #, c-format
 msgid "Error joining multicast group: %s"
 msgstr "Errorea multidifusioko taldean elkartzean: %s"
 
-#: gio/gsocket.c:2386 gio/gsocket.c:2423 gio/gsocket.c:2533 gio/gsocket.c:2558
-#: gio/gsocket.c:2621 gio/gsocket.c:2679 gio/gsocket.c:2697
+#: gio/gsocket.c:2390 gio/gsocket.c:2427 gio/gsocket.c:2537 gio/gsocket.c:2562
+#: gio/gsocket.c:2625 gio/gsocket.c:2683 gio/gsocket.c:2701
 #, c-format
 msgid "Error leaving multicast group: %s"
 msgstr "Errorea multidifusioko taldea uztean: %s"
 
-#: gio/gsocket.c:2387
+#: gio/gsocket.c:2391
 msgid "No support for source-specific multicast"
 msgstr "Iturburu zehatzeko multidifusiorik ez da onartzen"
 
-#: gio/gsocket.c:2534
+#: gio/gsocket.c:2538
 msgid "Unsupported socket family"
 msgstr "Onartzen ez den socket familia"
 
-#: gio/gsocket.c:2559
+#: gio/gsocket.c:2563
 msgid "source-specific not an IPv4 address"
 msgstr "Iturburu zehatzekoa ez IPv4 helbidea"
 
-#: gio/gsocket.c:2583
+#: gio/gsocket.c:2587
 #, c-format
 msgid "Interface name too long"
 msgstr "Interfaze-izena luzeegia da"
 
-#: gio/gsocket.c:2596 gio/gsocket.c:2646
+#: gio/gsocket.c:2600 gio/gsocket.c:2650
 #, c-format
 msgid "Interface not found: %s"
 msgstr "Interfazea ez da aurkitu: %s"
 
-#: gio/gsocket.c:2622
+#: gio/gsocket.c:2626
 msgid "No support for IPv4 source-specific multicast"
 msgstr "IPv4 iturburu zehatzeko multidifusiorik ez da onartzen"
 
-#: gio/gsocket.c:2680
+#: gio/gsocket.c:2684
 msgid "No support for IPv6 source-specific multicast"
 msgstr "IPv6 iturburu zehatzeko multidifusiorik ez da onartzen"
 
-#: gio/gsocket.c:2889
+#: gio/gsocket.c:2893
 #, c-format
 msgid "Error accepting connection: %s"
 msgstr "Errorea konexioa onartzean: %s"
 
-#: gio/gsocket.c:3015
+#: gio/gsocket.c:3019
 msgid "Connection in progress"
 msgstr "Konexioa lantzen"
 
-#: gio/gsocket.c:3066
+#: gio/gsocket.c:3070
 msgid "Unable to get pending error: "
 msgstr "Ezin da falta diren erroreak lortu: "
 
-#: gio/gsocket.c:3255
+#: gio/gsocket.c:3259
 #, c-format
 msgid "Error receiving data: %s"
 msgstr "Errorea datuak jasotzean: %s"
 
-#: gio/gsocket.c:3452
+#: gio/gsocket.c:3456
 #, c-format
 msgid "Error sending data: %s"
 msgstr "Errorea datuak bidaltzean: %s"
 
-#: gio/gsocket.c:3639
+#: gio/gsocket.c:3643
 #, c-format
 msgid "Unable to shutdown socket: %s"
 msgstr "Ezin da socket-a itzali: %s"
 
-#: gio/gsocket.c:3720
+#: gio/gsocket.c:3724
 #, c-format
 msgid "Error closing socket: %s"
 msgstr "Errorea socket-a ixtean: %s"
 
-#: gio/gsocket.c:4413
+#: gio/gsocket.c:4420
 #, c-format
 msgid "Waiting for socket condition: %s"
 msgstr "Socket-aren baldintzen zai: %s"
 
-#: gio/gsocket.c:4804 gio/gsocket.c:4820 gio/gsocket.c:4833
+#: gio/gsocket.c:4810 gio/gsocket.c:4826 gio/gsocket.c:4839
 #, c-format
 msgid "Unable to send message: %s"
 msgstr "Ezin izan da mezua bidali: %s"
 
-#: gio/gsocket.c:4805 gio/gsocket.c:4821 gio/gsocket.c:4834
+#: gio/gsocket.c:4811 gio/gsocket.c:4827 gio/gsocket.c:4840
 msgid "Message vectors too large"
 msgstr "Mezu-bektoreak luzeegiak dira"
 
-#: gio/gsocket.c:4850 gio/gsocket.c:4852 gio/gsocket.c:4999 gio/gsocket.c:5084
-#: gio/gsocket.c:5262 gio/gsocket.c:5302 gio/gsocket.c:5304
+#: gio/gsocket.c:4856 gio/gsocket.c:4858 gio/gsocket.c:5005 gio/gsocket.c:5090
+#: gio/gsocket.c:5268 gio/gsocket.c:5308 gio/gsocket.c:5310
 #, c-format
 msgid "Error sending message: %s"
 msgstr "Errorea mezua bidaltzean: %s"
 
-#: gio/gsocket.c:5026
+#: gio/gsocket.c:5032
 msgid "GSocketControlMessage not supported on Windows"
 msgstr "GSocketControlMessage ez da Windows sisteman onartzen"
 
-#: gio/gsocket.c:5495 gio/gsocket.c:5571 gio/gsocket.c:5797
+#: gio/gsocket.c:5505 gio/gsocket.c:5581 gio/gsocket.c:5807
 #, c-format
 msgid "Error receiving message: %s"
 msgstr "Errorea mezua jasotzean: %s"
 
-#: gio/gsocket.c:6070 gio/gsocket.c:6081 gio/gsocket.c:6127
+#: gio/gsocket.c:6090 gio/gsocket.c:6101 gio/gsocket.c:6164
 #, c-format
 msgid "Unable to read socket credentials: %s"
 msgstr "Ezin da socket-aren kredentzialik irakurri: %s"
 
-#: gio/gsocket.c:6136
+#: gio/gsocket.c:6173
 msgid "g_socket_get_credentials not implemented for this OS"
 msgstr "g_socket_get_credentials ez dago S.E. honetan inplementatuta"
 
@@ -3875,11 +3900,11 @@ msgstr "Ezin izan da %s(r)ekin konektatu: "
 msgid "Could not connect: "
 msgstr "Ezin izan da konektatu: "
 
-#: gio/gsocketclient.c:1162 gio/gsocketclient.c:1749
+#: gio/gsocketclient.c:1202 gio/gsocketclient.c:1793
 msgid "Proxying over a non-TCP connection is not supported."
 msgstr "TCP motakoak ez diren konexioen gainean proxya egitea ez dago onartuta."
 
-#: gio/gsocketclient.c:1194 gio/gsocketclient.c:1778
+#: gio/gsocketclient.c:1234 gio/gsocketclient.c:1822
 #, c-format
 msgid "Proxy protocol “%s” is not supported."
 msgstr "Proxy-aren “%s” protokoloa ez dago onartuta."
@@ -3977,6 +4002,16 @@ msgstr "SOCKSv5 proxyak ez du emandako helbide mota onartzen."
 msgid "Unknown SOCKSv5 proxy error."
 msgstr "SOCKSv5 proxyaren errore ezezaguna."
 
+#: gio/gtestdbus.c:612 glib/gspawn-win32.c:314
+#, c-format
+msgid "Failed to create pipe for communicating with child process (%s)"
+msgstr "Ezin izan da kanalizazioa sortu prozesu haurrarekin komunikatzeko (%s)"
+
+#: gio/gtestdbus.c:619
+#, c-format
+msgid "Pipes are not supported in this platform"
+msgstr "Plataforma honetan ez dira kanalizazioak onartzen"
+
 #: gio/gthemedicon.c:595
 #, c-format
 msgid "Can’t handle version %d of GThemedIcon encoding"
@@ -4008,27 +4043,31 @@ msgstr "Ezin da “%s” ebatzi aldi batean"
 msgid "Error resolving “%s”"
 msgstr "Errorea “%s” ebaztean"
 
-#: gio/gtlscertificate.c:419
+#: gio/gtlscertificate.c:478
 msgid "No PEM-encoded private key found"
 msgstr "Ez da PEMekin kodetutako ziurtagirik aurkitu"
 
-#: gio/gtlscertificate.c:429
+#: gio/gtlscertificate.c:488
 msgid "Cannot decrypt PEM-encoded private key"
 msgstr "Ezin da PEMekin kodetutako gako pribatua deszifratu"
 
-#: gio/gtlscertificate.c:440
+#: gio/gtlscertificate.c:499
 msgid "Could not parse PEM-encoded private key"
 msgstr "Ezin izan da PEMekin kodetutako gako pribatua analizatu"
 
-#: gio/gtlscertificate.c:467
+#: gio/gtlscertificate.c:526
 msgid "No PEM-encoded certificate found"
 msgstr "Ez da PEMekin kodetutako ziurtagirik aurkitu"
 
-#: gio/gtlscertificate.c:476
+#: gio/gtlscertificate.c:535
 msgid "Could not parse PEM-encoded certificate"
 msgstr "Ezin izan da PEMekin kodetutako ziurtagiririk analizatu"
 
-#: gio/gtlscertificate.c:832
+#: gio/gtlscertificate.c:796
+msgid "The current TLS backend does not support PKCS #12"
+msgstr "Uneko TLS motorrak ez du PKCS #12 onartzen"
+
+#: gio/gtlscertificate.c:1013
 msgid "This GTlsBackend does not support creating PKCS #11 certificates"
 msgstr "GTlsBackend honek ez du onartzen PKCS #11 ziurtagiriak sortzeak"
 
@@ -4050,53 +4089,61 @@ msgstr "Sartu diren hainbat pasahitz ez dira zuzenak, eta zure sarbidetza blokea
 msgid "The password entered is incorrect."
 msgstr "Sartutako pasahitza okerrekoa da."
 
-#: gio/gunixconnection.c:166 gio/gunixconnection.c:579
+#: gio/gunixconnection.c:125
+msgid "Sending FD is not supported"
+msgstr "FD bidaltzea ez dago onartuta"
+
+#: gio/gunixconnection.c:178 gio/gunixconnection.c:596
 #, c-format
 msgid "Expecting 1 control message, got %d"
 msgid_plural "Expecting 1 control message, got %d"
 msgstr[0] "Kontroleko mezu 1 espero zen, %d lortu da"
 msgstr[1] "Kontroleko mezu 1 espero zen, %d lortu da"
 
-#: gio/gunixconnection.c:182 gio/gunixconnection.c:591
+#: gio/gunixconnection.c:194 gio/gunixconnection.c:608
 msgid "Unexpected type of ancillary data"
 msgstr "Ustekabeko datu-laguntzaile mota"
 
-#: gio/gunixconnection.c:200
+#: gio/gunixconnection.c:212
 #, c-format
 msgid "Expecting one fd, but got %d\n"
 msgid_plural "Expecting one fd, but got %d\n"
 msgstr[0] "fd bat espero zen, baina %d lortu da\n"
 msgstr[1] "fd bat espero zen, baina %d lortu da\n"
 
-#: gio/gunixconnection.c:219
+#: gio/gunixconnection.c:231
 msgid "Received invalid fd"
 msgstr "Baliogabeko fd jasota"
 
-#: gio/gunixconnection.c:363
+#: gio/gunixconnection.c:238
+msgid "Receiving FD is not supported"
+msgstr "FD jasotzea ez dago onartuta"
+
+#: gio/gunixconnection.c:380
 msgid "Error sending credentials: "
 msgstr "Errorea kredentzialak bidaltzean: "
 
-#: gio/gunixconnection.c:520
+#: gio/gunixconnection.c:537
 #, c-format
 msgid "Error checking if SO_PASSCRED is enabled for socket: %s"
 msgstr "Errorea SO_PASSCRED gaituta dagoen begiratzean socket-arentzako: %s"
 
-#: gio/gunixconnection.c:536
+#: gio/gunixconnection.c:553
 #, c-format
 msgid "Error enabling SO_PASSCRED: %s"
 msgstr "Errorea SO_PASSCRED gaitzean: %s"
 
-#: gio/gunixconnection.c:565
+#: gio/gunixconnection.c:582
 msgid ""
 "Expecting to read a single byte for receiving credentials but read zero bytes"
 msgstr "Harrerako kredentzialentzako byte bakar bat irakurtzea espero zen, baina zero byte irakurri dira."
 
-#: gio/gunixconnection.c:605
+#: gio/gunixconnection.c:622
 #, c-format
 msgid "Not expecting control message, but got %d"
 msgstr "Ez zen kontroleko mezurik espero, baina %d lortu dira"
 
-#: gio/gunixconnection.c:630
+#: gio/gunixconnection.c:647
 #, c-format
 msgid "Error while disabling SO_PASSCRED: %s"
 msgstr "Errorea SO_PASSCRED desgaitzean: %s"
@@ -4112,7 +4159,7 @@ msgstr "Errorea fitxategiaren deskriptoretik irakurtzean: %s"
 msgid "Error closing file descriptor: %s"
 msgstr "Errorea fitxategiaren deskriptorea ixtean: %s"
 
-#: gio/gunixmounts.c:2785 gio/gunixmounts.c:2838
+#: gio/gunixmounts.c:2809 gio/gunixmounts.c:2862
 msgid "Filesystem root"
 msgstr "Fitxategi-sistemaren erroa"
 
@@ -4123,7 +4170,7 @@ msgstr "Fitxategi-sistemaren erroa"
 msgid "Error writing to file descriptor: %s"
 msgstr "Errorea fitxategiaren deskriptorean idaztean: %s"
 
-#: gio/gunixsocketaddress.c:244
+#: gio/gunixsocketaddress.c:251
 msgid "Abstract UNIX domain socket addresses not supported on this system"
 msgstr "UNIX-eko domeinuen socket helbide abstraktuak ez daude sistema honetan onartuta"
 
@@ -4274,8 +4321,8 @@ msgstr "Huts egin du “%s” exekuzioko lerroa “%s” URIarekin hedatzean"
 msgid "Unrepresentable character in conversion input"
 msgstr "Adierazi ezin den karakterea bihurketa-sarreran"
 
-#: glib/gconvert.c:495 glib/gutf8.c:871 glib/gutf8.c:1083 glib/gutf8.c:1220
-#: glib/gutf8.c:1324
+#: glib/gconvert.c:495 glib/gutf8.c:886 glib/gutf8.c:1099 glib/gutf8.c:1236
+#: glib/gutf8.c:1340
 msgid "Partial character sequence at end of input"
 msgstr "Karaktere-sekuentzia partziala sarreraren amaieran"
 
@@ -4740,79 +4787,79 @@ msgstr "PM"
 msgid "Error opening directory “%s”: %s"
 msgstr "Errorea “%s” direktorioa irekitzean: %s"
 
-#: glib/gfileutils.c:737 glib/gfileutils.c:829
+#: glib/gfileutils.c:733 glib/gfileutils.c:825
 #, c-format
 msgid "Could not allocate %lu byte to read file “%s”"
 msgid_plural "Could not allocate %lu bytes to read file “%s”"
 msgstr[0] "Ezin izan da byte %lu esleitu “%s” fitxategia irakurtzeko"
 msgstr[1] "Ezin izan dira %lu byte esleitu “%s” fitxategia irakurtzeko"
 
-#: glib/gfileutils.c:754
+#: glib/gfileutils.c:750
 #, c-format
 msgid "Error reading file “%s”: %s"
 msgstr "Errorea “%s” fitxategia irakurtzean: %s"
 
-#: glib/gfileutils.c:790
+#: glib/gfileutils.c:786
 #, c-format
 msgid "File “%s” is too large"
 msgstr "“%s” fitxategia handiegia da"
 
-#: glib/gfileutils.c:854
+#: glib/gfileutils.c:850
 #, c-format
 msgid "Failed to read from file “%s”: %s"
 msgstr "Ezin izan da “%s” fitxategitik irakurri: %s"
 
-#: glib/gfileutils.c:904 glib/gfileutils.c:979 glib/gfileutils.c:1468
+#: glib/gfileutils.c:900 glib/gfileutils.c:975 glib/gfileutils.c:1447
 #, c-format
 msgid "Failed to open file “%s”: %s"
 msgstr "Ezin izan da “%s” fitxategia ireki: %s"
 
-#: glib/gfileutils.c:917
+#: glib/gfileutils.c:913
 #, c-format
 msgid "Failed to get attributes of file “%s”: fstat() failed: %s"
 msgstr "Ezin izan dira “%s” fitxategiko atributuak lortu, fstat() funtzioak huts egin du: %s"
 
-#: glib/gfileutils.c:948
+#: glib/gfileutils.c:944
 #, c-format
 msgid "Failed to open file “%s”: fdopen() failed: %s"
 msgstr "Ezin izan da “%s” fitxategia ireki, fdopen() funtzioak huts egin du: %s"
 
-#: glib/gfileutils.c:1049
+#: glib/gfileutils.c:1045
 #, c-format
 msgid "Failed to rename file “%s” to “%s”: g_rename() failed: %s"
 msgstr "Ezin izan da “%s” fitxategia “%s” gisa berrizendatu, g_rename() funtzioak huts egin du: %s"
 
-#: glib/gfileutils.c:1175
+#: glib/gfileutils.c:1154
 #, c-format
 msgid "Failed to write file “%s”: write() failed: %s"
 msgstr "Huts egin du “%s” fitxategian idaztean: fwrite() funtzioak huts egin du: %s"
 
-#: glib/gfileutils.c:1196
+#: glib/gfileutils.c:1175
 #, c-format
 msgid "Failed to write file “%s”: fsync() failed: %s"
 msgstr "Huts egin du “%s” fitxategia idaztean: fsync() funtzioak huts egin du: %s"
 
-#: glib/gfileutils.c:1357 glib/gfileutils.c:1772
+#: glib/gfileutils.c:1336 glib/gfileutils.c:1751
 #, c-format
 msgid "Failed to create file “%s”: %s"
 msgstr "Ezin izan da “%s” fitxategia sortu: %s"
 
-#: glib/gfileutils.c:1402
+#: glib/gfileutils.c:1381
 #, c-format
 msgid "Existing file “%s” could not be removed: g_unlink() failed: %s"
 msgstr "“%s” fitxategia ezin izan da kendu, g_unlik() funtzioak huts egin du: %s"
 
-#: glib/gfileutils.c:1737
+#: glib/gfileutils.c:1716
 #, c-format
 msgid "Template “%s” invalid, should not contain a “%s”"
 msgstr "“%s” txantiloia baliogabea da, ez luke “%s” eduki behar"
 
-#: glib/gfileutils.c:1750
+#: glib/gfileutils.c:1729
 #, c-format
 msgid "Template “%s” doesn’t contain XXXXXX"
 msgstr "“%s” txantiloiak ez dauka: XXXXXX"
 
-#: glib/gfileutils.c:2310 glib/gfileutils.c:2339
+#: glib/gfileutils.c:2289 glib/gfileutils.c:2318
 #, c-format
 msgid "Failed to read the symbolic link “%s”: %s"
 msgstr "Ezin izan da “%s” esteka sinbolikorik irakurri: %s"
@@ -4838,101 +4885,101 @@ msgstr "Kanala karaktere partzial batean bukatzen da"
 msgid "Can’t do a raw read in g_io_channel_read_to_end"
 msgstr "Ezin dira datu gordinak irakurri “g_io_channel_read_to_end“-etik"
 
-#: glib/gkeyfile.c:790
+#: glib/gkeyfile.c:794
 msgid "Valid key file could not be found in search dirs"
 msgstr "Ezin izan da baliozko gakoa datuen direktorioan aurkitu"
 
-#: glib/gkeyfile.c:827
+#: glib/gkeyfile.c:831
 msgid "Not a regular file"
 msgstr "Ez da fitxategi arrunta"
 
-#: glib/gkeyfile.c:1282
+#: glib/gkeyfile.c:1289
 #, c-format
 msgid ""
 "Key file contains line “%s” which is not a key-value pair, group, or comment"
 msgstr "Gako-fitxategiak “%s” lerroa du, gako-balioa bikotea, taldea edo iruzkinik ez daukalarik"
 
 #
-#: glib/gkeyfile.c:1339
+#: glib/gkeyfile.c:1346
 #, c-format
 msgid "Invalid group name: %s"
 msgstr "Taldearen izen baliogabea: %s"
 
-#: glib/gkeyfile.c:1361
+#: glib/gkeyfile.c:1370
 msgid "Key file does not start with a group"
 msgstr "Gako-fitxategiak ez da talde batekin hasten"
 
 #
-#: glib/gkeyfile.c:1387
+#: glib/gkeyfile.c:1394
 #, c-format
-msgid "Invalid key name: %s"
-msgstr "Gakoaren izen baliogabea: %s"
+msgid "Invalid key name: %.*s"
+msgstr "Gakoaren izen baliogabea: %.*s"
 
-#: glib/gkeyfile.c:1414
+#: glib/gkeyfile.c:1422
 #, c-format
 msgid "Key file contains unsupported encoding “%s”"
 msgstr "Gako-fitxategiak onartzen ez den “%s” kodeketa du"
 
-#: glib/gkeyfile.c:1663 glib/gkeyfile.c:1836 glib/gkeyfile.c:3289
-#: glib/gkeyfile.c:3353 glib/gkeyfile.c:3483 glib/gkeyfile.c:3615
-#: glib/gkeyfile.c:3761 glib/gkeyfile.c:3996 glib/gkeyfile.c:4063
+#: glib/gkeyfile.c:1677 glib/gkeyfile.c:1850 glib/gkeyfile.c:3297
+#: glib/gkeyfile.c:3361 glib/gkeyfile.c:3491 glib/gkeyfile.c:3623
+#: glib/gkeyfile.c:3769 glib/gkeyfile.c:4004 glib/gkeyfile.c:4071
 #, c-format
 msgid "Key file does not have group “%s”"
 msgstr "Gako-fitxategiak ez dauka “%s” taldea"
 
-#: glib/gkeyfile.c:1791
+#: glib/gkeyfile.c:1805
 #, c-format
 msgid "Key file does not have key “%s” in group “%s”"
 msgstr "Gako-fitxategiak ez dauka “%s” gakoa (“%s” taldean)"
 
-#: glib/gkeyfile.c:1953 glib/gkeyfile.c:2069
+#: glib/gkeyfile.c:1967 glib/gkeyfile.c:2083
 #, c-format
 msgid "Key file contains key “%s” with value “%s” which is not UTF-8"
 msgstr "Gako-fitxategiak “%s” gakoa dauka (%s balioduna) baina ez da UTF-8"
 
-#: glib/gkeyfile.c:1973 glib/gkeyfile.c:2089 glib/gkeyfile.c:2531
+#: glib/gkeyfile.c:1987 glib/gkeyfile.c:2103 glib/gkeyfile.c:2542
 #, c-format
 msgid ""
 "Key file contains key “%s” which has a value that cannot be interpreted."
 msgstr "Gako-fitxategiak “%s” gakoa dauka, baina ezin den interpretatu balio bat dauka."
 
-#: glib/gkeyfile.c:2749 glib/gkeyfile.c:3118
+#: glib/gkeyfile.c:2757 glib/gkeyfile.c:3126
 #, c-format
 msgid ""
 "Key file contains key “%s” in group “%s” which has a value that cannot be "
 "interpreted."
 msgstr "Gako-fitxategiak “%s” gakoa dauka ('%s taldean), baina dagokion balioa ezin da interpretatu."
 
-#: glib/gkeyfile.c:2827 glib/gkeyfile.c:2904
+#: glib/gkeyfile.c:2835 glib/gkeyfile.c:2912
 #, c-format
 msgid "Key “%s” in group “%s” has value “%s” where %s was expected"
 msgstr "“%2$s” taldeko “%1$s” gakoaren balioa “%3$s” da, “%4$s” izan ordez."
 
-#: glib/gkeyfile.c:4306
+#: glib/gkeyfile.c:4324
 msgid "Key file contains escape character at end of line"
 msgstr "Gako-fitxategiak ihes-karakterea dauka lerro amaieran"
 
-#: glib/gkeyfile.c:4328
+#: glib/gkeyfile.c:4346
 #, c-format
 msgid "Key file contains invalid escape sequence “%s”"
 msgstr "Gako-fitxategiak “%s” ihes-sekuentzia baliogabea dauka"
 
-#: glib/gkeyfile.c:4472
+#: glib/gkeyfile.c:4491
 #, c-format
 msgid "Value “%s” cannot be interpreted as a number."
 msgstr "“%s” balioa ezin da zenbaki gisa interpretatu"
 
-#: glib/gkeyfile.c:4486
+#: glib/gkeyfile.c:4505
 #, c-format
 msgid "Integer value “%s” out of range"
 msgstr "“%s” osoko balioa barrutitik kanpo"
 
-#: glib/gkeyfile.c:4519
+#: glib/gkeyfile.c:4538
 #, c-format
 msgid "Value “%s” cannot be interpreted as a float number."
 msgstr "“%s” balioa ezin da zenbaki mugikor gisa interpretatu."
 
-#: glib/gkeyfile.c:4558
+#: glib/gkeyfile.c:4577
 #, c-format
 msgid "Value “%s” cannot be interpreted as a boolean."
 msgstr "“%s” balioa ezin da boolear gisa interpretatu"
@@ -5192,7 +5239,7 @@ msgstr "Errorea %s aukera analizatzean"
 msgid "Missing argument for %s"
 msgstr "%s(e)ko argumentua falta da"
 
-#: glib/goption.c:2185
+#: glib/goption.c:2184
 #, c-format
 msgid "Unknown option %s"
 msgstr "%s aukera ezezaguna"
@@ -5562,170 +5609,180 @@ msgstr "ihes-sekuentzi ezezaguna"
 msgid "Error while parsing replacement text “%s” at char %lu: %s"
 msgstr "Errorea ordezko “%s” testua analizatzean %lu karakterean: %s"
 
-#: glib/gshell.c:94
+#: glib/gshell.c:96
 msgid "Quoted text doesn’t begin with a quotation mark"
 msgstr "Komatxo arteko testua ez da komatxoekin hasten"
 
-#: glib/gshell.c:184
+#: glib/gshell.c:186
 msgid "Unmatched quotation mark in command line or other shell-quoted text"
 msgstr "Bat ez datozen komatxoak daude komando-lerroan edo shell-ak aipatutako beste testu batean"
 
-#: glib/gshell.c:580
+#: glib/gshell.c:592
 #, c-format
 msgid "Text ended just after a “\\” character. (The text was “%s”)"
 msgstr "Testua “\\“ karakterearen atzetik amaitu da (testua “%s” zen)"
 
-#: glib/gshell.c:587
+#: glib/gshell.c:599
 #, c-format
 msgid "Text ended before matching quote was found for %c. (The text was “%s”)"
 msgstr "Testua %c(r)en komatxoak aurkitu baino lehen amaitu da (testua “%s” zen)"
 
-#: glib/gshell.c:599
+#: glib/gshell.c:611
 msgid "Text was empty (or contained only whitespace)"
 msgstr "Testua hutsik dago (edo zuriuneak bakarrik ditu)"
 
-#: glib/gspawn.c:308
+#: glib/gspawn.c:310
 #, c-format
 msgid "Failed to read data from child process (%s)"
 msgstr "Ezin izan da daturik irakurri prozesu umetik (%s)"
 
-#: glib/gspawn.c:458
+#: glib/gspawn.c:462
 #, c-format
 msgid "Unexpected error in reading data from a child process (%s)"
 msgstr "Ustekabeko errorea datuak prozesu umetik irakurtzean (%s)"
 
-#: glib/gspawn.c:543
+#: glib/gspawn.c:547
 #, c-format
 msgid "Unexpected error in waitpid() (%s)"
 msgstr "Ustekabeko errorea waitpid()-en (%s)"
 
-#: glib/gspawn.c:1152 glib/gspawn-win32.c:1407
+#: glib/gspawn.c:1175 glib/gspawn-win32.c:1431
 #, c-format
 msgid "Child process exited with code %ld"
 msgstr "Prozesu haurra amaitu da %ld kodearekin"
 
-#: glib/gspawn.c:1160
+#: glib/gspawn.c:1183
 #, c-format
 msgid "Child process killed by signal %ld"
 msgstr "Prozesu haurra %ld seinaleak hilda"
 
-#: glib/gspawn.c:1167
+#: glib/gspawn.c:1190
 #, c-format
 msgid "Child process stopped by signal %ld"
 msgstr "Prozesu haurra %ld seinaleak geldituta"
 
-#: glib/gspawn.c:1174
+#: glib/gspawn.c:1197
 #, c-format
 msgid "Child process exited abnormally"
 msgstr "Prozesu haurra ustekabean amaituta"
 
-#: glib/gspawn.c:1793 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
+#: glib/gspawn.c:1890 glib/gspawn-win32.c:353 glib/gspawn-win32.c:361
 #, c-format
 msgid "Failed to read from child pipe (%s)"
 msgstr "Ezin izan da kanalizazio umetik irakurri (%s)"
 
-#: glib/gspawn.c:2095
+#: glib/gspawn.c:2253
 #, c-format
 msgid "Failed to spawn child process “%s” (%s)"
 msgstr "Ezin izan da “%s” prozesu haurra abiarazi (%s)"
 
-#: glib/gspawn.c:2212
+#: glib/gspawn.c:2370
 #, c-format
 msgid "Failed to fork (%s)"
 msgstr "Ezin da sardetu (%s)"
 
-#: glib/gspawn.c:2372 glib/gspawn-win32.c:381
+#: glib/gspawn.c:2530 glib/gspawn-win32.c:384
 #, c-format
 msgid "Failed to change to directory “%s” (%s)"
 msgstr "Ezin izan da “%s” direktoriora aldatu (%s)"
 
-#: glib/gspawn.c:2382
+#: glib/gspawn.c:2540
 #, c-format
 msgid "Failed to execute child process “%s” (%s)"
 msgstr "Ezin izan da “%s” prozesu haurra exekutatu (%s)"
 
-#: glib/gspawn.c:2392
+#: glib/gspawn.c:2550
+#, c-format
+msgid "Failed to open file to remap file descriptor (%s)"
+msgstr "Huts egin du fitxategia irekitzeak fitxategi-deskribatzailea birmapatzeko (%s)"
+
+#: glib/gspawn.c:2558
 #, c-format
-msgid "Failed to redirect output or input of child process (%s)"
-msgstr "Ezin izan da prozesu haurraren irteera edo sarrera birbideratu (%s)"
+msgid "Failed to duplicate file descriptor for child process (%s)"
+msgstr "Huts egin du prozesu umerako fitxategi-deskribatzailea bikoizteak (%s)"
 
-#: glib/gspawn.c:2401
+#: glib/gspawn.c:2567
 #, c-format
 msgid "Failed to fork child process (%s)"
 msgstr "Ezin izan da prozesu haurra sardetu (%s)"
 
-#: glib/gspawn.c:2409
+#: glib/gspawn.c:2575
+#, c-format
+msgid "Failed to close file descriptor for child process (%s)"
+msgstr "Huts egin du prozesu umerako fitxategi-deskribatzailea ixteak (%s)"
+
+#: glib/gspawn.c:2583
 #, c-format
 msgid "Unknown error executing child process “%s”"
 msgstr "Errore ezezaguna “%s” prozesu haurra exekutatzean"
 
-#: glib/gspawn.c:2433
+#: glib/gspawn.c:2607
 #, c-format
 msgid "Failed to read enough data from child pid pipe (%s)"
 msgstr "Ezin izan da nahikoa datu irakurri pid kanalizazio umetik (%s)"
 
-#: glib/gspawn-win32.c:294
+#: glib/gspawn-win32.c:297
 msgid "Failed to read data from child process"
 msgstr "Ezin izan da daturik irakurri prozesu umetik"
 
-#: glib/gspawn-win32.c:311
-#, c-format
-msgid "Failed to create pipe for communicating with child process (%s)"
-msgstr "Ezin izan da kanalizazioa sortu prozesu haurrarekin komunikatzeko (%s)"
-
-#: glib/gspawn-win32.c:387 glib/gspawn-win32.c:392 glib/gspawn-win32.c:511
+#: glib/gspawn-win32.c:390 glib/gspawn-win32.c:395 glib/gspawn-win32.c:521
 #, c-format
 msgid "Failed to execute child process (%s)"
 msgstr "Ezin izan da prozesu haurra exekutatu (%s)"
 
+#: glib/gspawn-win32.c:400
+#, c-format
+msgid "Failed to dup() in child process (%s)"
+msgstr "Huts egin du dup() komandoak prozesu haurrean (%s)"
+
 #
-#: glib/gspawn-win32.c:461
+#: glib/gspawn-win32.c:471
 #, c-format
 msgid "Invalid program name: %s"
 msgstr "Programaren izen baliogabea: %s"
 
-#: glib/gspawn-win32.c:471 glib/gspawn-win32.c:779
+#: glib/gspawn-win32.c:481 glib/gspawn-win32.c:800
 #, c-format
 msgid "Invalid string in argument vector at %d: %s"
 msgstr "Kate baliogabea %d(e)ko bektorearen argumentuan: %s"
 
-#: glib/gspawn-win32.c:482 glib/gspawn-win32.c:794
+#: glib/gspawn-win32.c:492 glib/gspawn-win32.c:816
 #, c-format
 msgid "Invalid string in environment: %s"
 msgstr "Kate baliogabea ingurunean: %s"
 
-#: glib/gspawn-win32.c:775
+#: glib/gspawn-win32.c:796
 #, c-format
 msgid "Invalid working directory: %s"
 msgstr "Laneko direktorio baliogabea: %s"
 
 #
-#: glib/gspawn-win32.c:837
+#: glib/gspawn-win32.c:861
 #, c-format
 msgid "Failed to execute helper program (%s)"
 msgstr "Ezin izan da laguntza-programa exekutatu (%s)"
 
-#: glib/gspawn-win32.c:1064
+#: glib/gspawn-win32.c:1089
 msgid ""
 "Unexpected error in g_io_channel_win32_poll() reading data from a child "
 "process"
 msgstr "Ustekabeko errorea gertatu da 'g_io_channel_win32_poll()'-en prozesu umetik datuak irakurtzean"
 
-#: glib/gstrfuncs.c:3338 glib/gstrfuncs.c:3440
+#: glib/gstrfuncs.c:3351 glib/gstrfuncs.c:3453
 msgid "Empty string is not a number"
 msgstr "Kate hutsa ez da zenbaki bat"
 
-#: glib/gstrfuncs.c:3362
+#: glib/gstrfuncs.c:3375
 #, c-format
 msgid "“%s” is not a signed number"
 msgstr "“%s” ez da zeinudun zenbaki bat"
 
-#: glib/gstrfuncs.c:3372 glib/gstrfuncs.c:3476
+#: glib/gstrfuncs.c:3385 glib/gstrfuncs.c:3489
 #, c-format
 msgid "Number “%s” is out of bounds [%s, %s]"
 msgstr "“%s” zenbakia barrutitik kanpo [%s, %s]"
 
-#: glib/gstrfuncs.c:3466
+#: glib/gstrfuncs.c:3479
 #, c-format
 msgid "“%s” is not an unsigned number"
 msgstr "“%s” ez da zeinurik gabeko zenbaki bat"
@@ -5778,183 +5835,183 @@ msgstr "‘%s’ URIa ez da URI absolutua"
 msgid "URI ‘%s’ has no host component"
 msgstr "‘%s’ URIak ez du ostalari-osagairik"
 
-#: glib/guri.c:1435
+#: glib/guri.c:1460
 msgid "URI is not absolute, and no base URI was provided"
 msgstr "URIa ez da absolutua eta ez da oinarrizko URIrik eman"
 
-#: glib/guri.c:2213
+#: glib/guri.c:2238
 msgid "Missing ‘=’ and parameter value"
 msgstr "‘=’ eta parametro-balioa falta dira"
 
-#: glib/gutf8.c:817
+#: glib/gutf8.c:832
 msgid "Failed to allocate memory"
 msgstr "Huts egin du memoria esleitzeak"
 
-#: glib/gutf8.c:950
+#: glib/gutf8.c:965
 msgid "Character out of range for UTF-8"
 msgstr "Karakterea UTF-8 barrutitik kanpo"
 
-#: glib/gutf8.c:1051 glib/gutf8.c:1060 glib/gutf8.c:1190 glib/gutf8.c:1199
-#: glib/gutf8.c:1338 glib/gutf8.c:1435
+#: glib/gutf8.c:1067 glib/gutf8.c:1076 glib/gutf8.c:1206 glib/gutf8.c:1215
+#: glib/gutf8.c:1354 glib/gutf8.c:1451
 msgid "Invalid sequence in conversion input"
 msgstr "Sekuentzia baliogabea bihurketa-sarreran"
 
-#: glib/gutf8.c:1349 glib/gutf8.c:1446
+#: glib/gutf8.c:1365 glib/gutf8.c:1462
 msgid "Character out of range for UTF-16"
 msgstr "Karakterea UTF-16 barrutitik kanpo"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2727
+#: glib/gutils.c:2849
 #, c-format
 msgid "%.1f kB"
 msgstr "%.1f kB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2729
+#: glib/gutils.c:2851
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2731
+#: glib/gutils.c:2853
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2733
+#: glib/gutils.c:2855
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2735
+#: glib/gutils.c:2857
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2737
+#: glib/gutils.c:2859
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2741
+#: glib/gutils.c:2863
 #, c-format
 msgid "%.1f KiB"
 msgstr "%.1f KiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2743
+#: glib/gutils.c:2865
 #, c-format
 msgid "%.1f MiB"
 msgstr "%.1f MiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2745
+#: glib/gutils.c:2867
 #, c-format
 msgid "%.1f GiB"
 msgstr "%.1f GiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2747
+#: glib/gutils.c:2869
 #, c-format
 msgid "%.1f TiB"
 msgstr "%.1f TiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2749
+#: glib/gutils.c:2871
 #, c-format
 msgid "%.1f PiB"
 msgstr "%.1f PiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2751
+#: glib/gutils.c:2873
 #, c-format
 msgid "%.1f EiB"
 msgstr "%.1f EiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2755
+#: glib/gutils.c:2877
 #, c-format
 msgid "%.1f kb"
 msgstr "%.1f kb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2757
+#: glib/gutils.c:2879
 #, c-format
 msgid "%.1f Mb"
 msgstr "%.1f Mb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2759
+#: glib/gutils.c:2881
 #, c-format
 msgid "%.1f Gb"
 msgstr "%.1f Gb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2761
+#: glib/gutils.c:2883
 #, c-format
 msgid "%.1f Tb"
 msgstr "%.1f Tb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2763
+#: glib/gutils.c:2885
 #, c-format
 msgid "%.1f Pb"
 msgstr "%.1f Pb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2765
+#: glib/gutils.c:2887
 #, c-format
 msgid "%.1f Eb"
 msgstr "%.1f Eb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2769
+#: glib/gutils.c:2891
 #, c-format
 msgid "%.1f Kib"
 msgstr "%.1f Kib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2771
+#: glib/gutils.c:2893
 #, c-format
 msgid "%.1f Mib"
 msgstr "%.1f Mib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2773
+#: glib/gutils.c:2895
 #, c-format
 msgid "%.1f Gib"
 msgstr "%.1f Gib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2775
+#: glib/gutils.c:2897
 #, c-format
 msgid "%.1f Tib"
 msgstr "%.1f Tib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2777
+#: glib/gutils.c:2899
 #, c-format
 msgid "%.1f Pib"
 msgstr "%.1f Pib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2779
+#: glib/gutils.c:2901
 #, c-format
 msgid "%.1f Eib"
 msgstr "%.1f Eib"
 
-#: glib/gutils.c:2813 glib/gutils.c:2930
+#: glib/gutils.c:2935 glib/gutils.c:3052
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
 msgstr[0] "byte %u"
 msgstr[1] "%u byte"
 
-#: glib/gutils.c:2817
+#: glib/gutils.c:2939
 #, c-format
 msgid "%u bit"
 msgid_plural "%u bits"
@@ -5962,7 +6019,7 @@ msgstr[0] "bit %u"
 msgstr[1] "%u bit"
 
 #. Translators: the %s in "%s bytes" will always be replaced by a number.
-#: glib/gutils.c:2884
+#: glib/gutils.c:3006
 #, c-format
 msgid "%s byte"
 msgid_plural "%s bytes"
@@ -5970,7 +6027,7 @@ msgstr[0] "byte %s"
 msgstr[1] "%s byte"
 
 #. Translators: the %s in "%s bits" will always be replaced by a number.
-#: glib/gutils.c:2889
+#: glib/gutils.c:3011
 #, c-format
 msgid "%s bit"
 msgid_plural "%s bits"
@@ -5982,32 +6039,32 @@ msgstr[1] "%s byte"
 #. * compatibility.  Users will not see this string unless a program is using this deprecated function.
 #. * Please translate as literally as possible.
 #.
-#: glib/gutils.c:2943
+#: glib/gutils.c:3065
 #, c-format
 msgid "%.1f KB"
 msgstr "%.1f KB"
 
-#: glib/gutils.c:2948
+#: glib/gutils.c:3070
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
-#: glib/gutils.c:2953
+#: glib/gutils.c:3075
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
-#: glib/gutils.c:2958
+#: glib/gutils.c:3080
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
-#: glib/gutils.c:2963
+#: glib/gutils.c:3085
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
-#: glib/gutils.c:2968
+#: glib/gutils.c:3090
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
index 7f52239..5ff5e42 100644 (file)
--- a/po/fa.po
+++ b/po/fa.po
 msgid ""
 msgstr ""
 "Project-Id-Version: glib HEAD\n"
-"Report-Msgid-Bugs-To: http://bugzilla.gnome.org/enter_bug.cgi?product=glib&keywords=I18N+L10N&component=general\n"
-"POT-Creation-Date: 2012-02-19 14:27+0000\n"
-"PO-Revision-Date: 2012-02-25 01:05+0330\n"
-"Last-Translator: Arash Mousavi <mousavi.arash@gmail.com>\n"
+"Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/glib/issues\n"
+"POT-Creation-Date: 2021-07-19 15:52+0000\n"
+"PO-Revision-Date: 2021-09-27 18:46+0330\n"
+"Last-Translator: eshagh <eshagh094@gmail.com>\n"
 "Language-Team: Persian <>\n"
 "Language: fa\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n!=1);\n"
+"X-Generator: Poedit 3.0\n"
 
-#: ../gio/gbufferedinputstream.c:411
-#: ../gio/gbufferedinputstream.c:492
-#: ../gio/ginputstream.c:185
-#: ../gio/ginputstream.c:317
-#: ../gio/ginputstream.c:556
-#: ../gio/ginputstream.c:680
-#: ../gio/goutputstream.c:203
-#: ../gio/goutputstream.c:753
+#: gio/gapplication.c:500
+#, fuzzy
+#| msgid "Application Options:"
+msgid "GApplication options"
+msgstr "گزینه‌های برنامه:"
+
+#: gio/gapplication.c:500
+#, fuzzy
+#| msgid "Application Options:"
+msgid "Show GApplication options"
+msgstr "گزینه‌های برنامه:"
+
+#: gio/gapplication.c:545
+msgid "Enter GApplication service mode (use from D-Bus service files)"
+msgstr ""
+
+#: gio/gapplication.c:557
+msgid "Override the application’s ID"
+msgstr ""
+
+#: gio/gapplication.c:569
+msgid "Replace the running instance"
+msgstr ""
+
+#: gio/gapplication-tool.c:45 gio/gapplication-tool.c:46 gio/gio-tool.c:227 gio/gresource-tool.c:494
+#: gio/gsettings-tool.c:572
+msgid "Print help"
+msgstr "چاپ راهنما"
+
+#: gio/gapplication-tool.c:47 gio/gresource-tool.c:495 gio/gresource-tool.c:563
+msgid "[COMMAND]"
+msgstr "[COMMAND]"
+
+#: gio/gapplication-tool.c:49 gio/gio-tool.c:228
+msgid "Print version"
+msgstr "چاپ نگارش"
+
+#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:578
+msgid "Print version information and exit"
+msgstr ""
+
+#: gio/gapplication-tool.c:53
+msgid "List applications"
+msgstr "سیاههٔ برنامه‌ها"
+
+#: gio/gapplication-tool.c:54
+msgid "List the installed D-Bus activatable applications (by .desktop files)"
+msgstr ""
+
+#: gio/gapplication-tool.c:57
+msgid "Launch an application"
+msgstr "راه‌اندازی یک برنامه"
+
+#: gio/gapplication-tool.c:58
+msgid "Launch the application (with optional files to open)"
+msgstr ""
+
+#: gio/gapplication-tool.c:59
+msgid "APPID [FILE…]"
+msgstr ""
+
+#: gio/gapplication-tool.c:61
+msgid "Activate an action"
+msgstr ""
+
+#: gio/gapplication-tool.c:62
+msgid "Invoke an action on the application"
+msgstr ""
+
+#: gio/gapplication-tool.c:63
+msgid "APPID ACTION [PARAMETER]"
+msgstr ""
+
+#: gio/gapplication-tool.c:65
+msgid "List available actions"
+msgstr ""
+
+#: gio/gapplication-tool.c:66
+msgid "List static actions for an application (from .desktop file)"
+msgstr ""
+
+#: gio/gapplication-tool.c:67 gio/gapplication-tool.c:73
+msgid "APPID"
+msgstr ""
+
+#: gio/gapplication-tool.c:72 gio/gapplication-tool.c:135 gio/gdbus-tool.c:106 gio/gio-tool.c:224
+msgid "COMMAND"
+msgstr "COMMAND"
+
+#: gio/gapplication-tool.c:72
+msgid "The command to print detailed help for"
+msgstr ""
+
+#: gio/gapplication-tool.c:73
+msgid "Application identifier in D-Bus format (eg: org.example.viewer)"
+msgstr ""
+
+#: gio/gapplication-tool.c:74 gio/glib-compile-resources.c:738 gio/glib-compile-resources.c:744
+#: gio/glib-compile-resources.c:772 gio/gresource-tool.c:501 gio/gresource-tool.c:567
+msgid "FILE"
+msgstr "FILE"
+
+#: gio/gapplication-tool.c:74
+msgid "Optional relative or absolute filenames, or URIs to open"
+msgstr ""
+
+#: gio/gapplication-tool.c:75
+msgid "ACTION"
+msgstr "ACTION"
+
+#: gio/gapplication-tool.c:75
+#, fuzzy
+#| msgid "Destination name to monitor"
+msgid "The action name to invoke"
+msgstr "نام مقصد جهت پایش"
+
+#: gio/gapplication-tool.c:76
+msgid "PARAMETER"
+msgstr ""
+
+#: gio/gapplication-tool.c:76
+msgid "Optional parameter to the action invocation, in GVariant format"
+msgstr ""
+
+#: gio/gapplication-tool.c:98 gio/gresource-tool.c:532 gio/gsettings-tool.c:664
+#, c-format
+msgid ""
+"Unknown command %s\n"
+"\n"
+msgstr ""
+"فرمان ناشناس %s\n"
+"\n"
+
+#: gio/gapplication-tool.c:103
+msgid "Usage:\n"
+msgstr "کارکرد:\n"
+
+#: gio/gapplication-tool.c:116 gio/gresource-tool.c:557 gio/gsettings-tool.c:699
+msgid "Arguments:\n"
+msgstr "متغییرها:\n"
+
+#: gio/gapplication-tool.c:135 gio/gio-tool.c:224
+msgid "[ARGS…]"
+msgstr ""
+
+#: gio/gapplication-tool.c:136
+#, c-format
+msgid "Commands:\n"
+msgstr "دستورات:\n"
+
+#. Translators: do not translate 'help', but please translate 'COMMAND'.
+#: gio/gapplication-tool.c:148
+#, c-format
+msgid ""
+"Use “%s help COMMAND” to get detailed help.\n"
+"\n"
+msgstr ""
+
+#: gio/gapplication-tool.c:167
+#, c-format
+msgid ""
+"%s command requires an application id to directly follow\n"
+"\n"
+msgstr ""
+
+#: gio/gapplication-tool.c:173
+#, c-format
+msgid "invalid application id: “%s”\n"
+msgstr ""
+
+#. Translators: %s is replaced with a command name like 'list-actions'
+#: gio/gapplication-tool.c:184
+#, c-format
+msgid ""
+"“%s” takes no arguments\n"
+"\n"
+msgstr ""
+
+#: gio/gapplication-tool.c:268
+#, fuzzy, c-format
+#| msgid "Could not connect to %s: "
+msgid "unable to connect to D-Bus: %s\n"
+msgstr "نمی‌توان به %s متصل شد:"
+
+#: gio/gapplication-tool.c:288
+#, fuzzy, c-format
+#| msgid "Error sending message: %s"
+msgid "error sending %s message to application: %s\n"
+msgstr "خطا در هنگام ارسال پیام: %s"
+
+#: gio/gapplication-tool.c:319
+msgid "action name must be given after application id\n"
+msgstr ""
+
+#: gio/gapplication-tool.c:327
+#, c-format
+msgid ""
+"invalid action name: “%s”\n"
+"action names must consist of only alphanumerics, “-” and “.”\n"
+msgstr ""
+
+#: gio/gapplication-tool.c:346
+#, fuzzy, c-format
+#| msgid "Error parsing parameter %d: %s\n"
+msgid "error parsing action parameter: %s\n"
+msgstr "خطا در تجزیه پارامتر %Id: %s\n"
+
+#: gio/gapplication-tool.c:358
+msgid "actions accept a maximum of one parameter\n"
+msgstr ""
+
+#: gio/gapplication-tool.c:413
+msgid "list-actions command takes only the application id"
+msgstr ""
+
+#: gio/gapplication-tool.c:423
+#, fuzzy, c-format
+#| msgid "Unable to find terminal required for application"
+msgid "unable to find desktop file for application %s\n"
+msgstr "نمی‌توان پایانه‌ی لازم برای این برنامه را پیدا کرد"
+
+#: gio/gapplication-tool.c:468
+#, fuzzy, c-format
+#| msgid ""
+#| "Unknown command %s\n"
+#| "\n"
+msgid ""
+"unrecognised command: %s\n"
+"\n"
+msgstr ""
+"فرمان ناشناس %s\n"
+"\n"
+
+#: gio/gbufferedinputstream.c:420 gio/gbufferedinputstream.c:498 gio/ginputstream.c:179
+#: gio/ginputstream.c:379 gio/ginputstream.c:648 gio/ginputstream.c:1050 gio/goutputstream.c:223
+#: gio/goutputstream.c:1049 gio/gpollableinputstream.c:205 gio/gpollableoutputstream.c:277
 #, c-format
 msgid "Too large count value passed to %s"
 msgstr "مقدار شمارش بسیار بزرگی به %s ارسال شده است"
 
-#: ../gio/gbufferedinputstream.c:882
-#: ../gio/ginputstream.c:888
-#: ../gio/giostream.c:292
-#: ../gio/goutputstream.c:1228
+#: gio/gbufferedinputstream.c:891 gio/gbufferedoutputstream.c:575 gio/gdataoutputstream.c:562
+#, fuzzy
+#| msgid "Splice not supported"
+msgid "Seek not supported on base stream"
+msgstr "اتصال پشتیبانی نمی‌شود"
+
+#: gio/gbufferedinputstream.c:938
+msgid "Cannot truncate GBufferedInputStream"
+msgstr ""
+
+#: gio/gbufferedinputstream.c:983 gio/ginputstream.c:1239 gio/giostream.c:300 gio/goutputstream.c:2198
 msgid "Stream is already closed"
 msgstr "جریان از قبل بسته شده است"
 
-#: ../gio/gcancellable.c:318
-#: ../gio/gdbusconnection.c:1834
-#: ../gio/gdbusconnection.c:1925
-#: ../gio/gdbusconnection.c:2099
-#: ../gio/gdbusprivate.c:1413
-#: ../gio/glocalfile.c:2133
-#: ../gio/gsimpleasyncresult.c:810
-#: ../gio/gsimpleasyncresult.c:836
+#: gio/gbufferedoutputstream.c:612 gio/gdataoutputstream.c:592
+#, fuzzy
+#| msgid "Trash not supported"
+msgid "Truncate not supported on base stream"
+msgstr "زباله پشتیبانی نمی‌شود"
+
+#: gio/gcancellable.c:319 gio/gdbusconnection.c:1872 gio/gdbusprivate.c:1416 gio/gsimpleasyncresult.c:871
+#: gio/gsimpleasyncresult.c:897
 #, c-format
 msgid "Operation was cancelled"
 msgstr "عملیات لغو شده"
 
-#: ../gio/gcharsetconverter.c:263
+#: gio/gcharsetconverter.c:260
 msgid "Invalid object, not initialized"
 msgstr "شیء نامعتبر، مقدار دهی اولیه نشد"
 
-#: ../gio/gcharsetconverter.c:284
-#: ../gio/gcharsetconverter.c:312
+#: gio/gcharsetconverter.c:281 gio/gcharsetconverter.c:309
 #, fuzzy
 msgid "Incomplete multibyte sequence in input"
 msgstr "دنبالهٔ بایتی نامعتبر در ورودی تبدیل"
 
-#: ../gio/gcharsetconverter.c:318
-#: ../gio/gcharsetconverter.c:327
+#: gio/gcharsetconverter.c:315 gio/gcharsetconverter.c:324
 msgid "Not enough space in destination"
 msgstr "فضا کافی در مقصد وجود ندارد"
 
-#: ../gio/gcharsetconverter.c:345
-#: ../gio/gdatainputstream.c:854
-#: ../gio/gdatainputstream.c:1294
-#: ../glib/gconvert.c:767
-#: ../glib/gconvert.c:1159
-#: ../glib/giochannel.c:1583
-#: ../glib/giochannel.c:1625
-#: ../glib/giochannel.c:2468
-#: ../glib/gutf8.c:841
-#: ../glib/gutf8.c:1292
+#: gio/gcharsetconverter.c:342 gio/gdatainputstream.c:848 gio/gdatainputstream.c:1266 glib/gconvert.c:449
+#: glib/gconvert.c:879 glib/giochannel.c:1573 glib/giochannel.c:1615 glib/giochannel.c:2470 glib/gutf8.c:875
+#: glib/gutf8.c:1328
 msgid "Invalid byte sequence in conversion input"
 msgstr "دنبالهٔ بایتی نامعتبر در ورودی تبدیل"
 
-#: ../gio/gcharsetconverter.c:350
-#: ../glib/gconvert.c:775
-#: ../glib/gconvert.c:1084
-#: ../glib/giochannel.c:1590
-#: ../glib/giochannel.c:2480
+#: gio/gcharsetconverter.c:347 glib/gconvert.c:457 glib/gconvert.c:793 glib/giochannel.c:1580
+#: glib/giochannel.c:2482
 #, c-format
 msgid "Error during conversion: %s"
 msgstr "خطا در حین تبدیل: %s"
 
-#: ../gio/gcharsetconverter.c:447
-#: ../gio/gsocket.c:953
+#: gio/gcharsetconverter.c:445 gio/gsocket.c:1143
 msgid "Cancellable initialization not supported"
 msgstr "مقداردهی‌های اولیه‌ی قابل لغو پشتیبانی نمی‌شود"
 
-#: ../gio/gcharsetconverter.c:458
-#: ../glib/gconvert.c:567
-#: ../glib/gconvert.c:645
-#: ../glib/giochannel.c:1411
-#, c-format
-msgid "Conversion from character set '%s' to '%s' is not supported"
+#: gio/gcharsetconverter.c:456 glib/gconvert.c:322 glib/giochannel.c:1401
+#, 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 "تبدیل از مجموعه‌نویسهٔ «%s» به «%s» پشتیبانی نمی‌شود"
 
-#: ../gio/gcharsetconverter.c:462
-#: ../glib/gconvert.c:571
-#: ../glib/gconvert.c:649
-#, c-format
-msgid "Could not open converter from '%s' to '%s'"
+#: gio/gcharsetconverter.c:460 glib/gconvert.c:326
+#, fuzzy, c-format
+#| msgid "Could not open converter from '%s' to '%s'"
+msgid "Could not open converter from “%s” to “%s”"
 msgstr "نمی‌توان مبدل «%s» به «%s» را باز کرد"
 
-#: ../gio/gcontenttype.c:180
+#: gio/gcontenttype.c:454
+#, c-format
+msgid "%s type"
+msgstr "نوع %s"
+
+#: gio/gcontenttype-win32.c:192
 msgid "Unknown type"
 msgstr "نوع نامعلوم"
 
-#: ../gio/gcontenttype.c:181
+#: gio/gcontenttype-win32.c:194
 #, c-format
 msgid "%s filetype"
 msgstr "نوع پرونده %s"
 
-#: ../gio/gcontenttype.c:680
-#, c-format
-msgid "%s type"
-msgstr "نوع %s"
+#: gio/gcredentials.c:323
+msgid "GCredentials contains invalid data"
+msgstr ""
 
-#: ../gio/gcredentials.c:273
-#: ../gio/gcredentials.c:495
+#: gio/gcredentials.c:383 gio/gcredentials.c:667
 msgid "GCredentials is not implemented on this OS"
 msgstr "بر روی این سیستم عامل GCredentials توسعه داده نشده است"
 
-#: ../gio/gcredentials.c:447
+#: gio/gcredentials.c:538 gio/gcredentials.c:556
 msgid "There is no GCredentials support for your platform"
 msgstr "پشتیبانی از GCredentials در پلتفرم شما وجود ندارد"
 
-#: ../gio/gdatainputstream.c:311
+#: gio/gcredentials.c:607
+#, fuzzy
+#| msgid "GCredentials is not implemented on this OS"
+msgid "GCredentials does not contain a process ID on this OS"
+msgstr "بر روی این سیستم عامل GCredentials توسعه داده نشده است"
+
+#: gio/gcredentials.c:661
+#, fuzzy
+#| msgid "GCredentials is not implemented on this OS"
+msgid "Credentials spoofing is not possible on this OS"
+msgstr "بر روی این سیستم عامل GCredentials توسعه داده نشده است"
+
+#: gio/gdatainputstream.c:304
 msgid "Unexpected early end-of-stream"
 msgstr ""
 
-#: ../gio/gdbusaddress.c:142
-#: ../gio/gdbusaddress.c:230
-#: ../gio/gdbusaddress.c:311
+#: gio/gdbusaddress.c:159 gio/gdbusaddress.c:233 gio/gdbusaddress.c:322
 #, c-format
-msgid "Unsupported key '%s' in address entry '%s'"
+msgid "Unsupported key “%s” in address entry “%s”"
 msgstr ""
 
-#: ../gio/gdbusaddress.c:169
+#: gio/gdbusaddress.c:172
 #, c-format
-msgid "Address '%s' is invalid (need exactly one of path, tmpdir or abstract keys)"
+msgid "Meaningless key/value pair combination in address entry “%s”"
 msgstr ""
 
-#: ../gio/gdbusaddress.c:182
+#: gio/gdbusaddress.c:181
 #, c-format
-msgid "Meaningless key/value pair combination in address entry '%s'"
+msgid "Address “%s” is invalid (need exactly one of path, dir, tmpdir, or abstract keys)"
 msgstr ""
 
-#: ../gio/gdbusaddress.c:245
-#: ../gio/gdbusaddress.c:326
+#: gio/gdbusaddress.c:248 gio/gdbusaddress.c:259 gio/gdbusaddress.c:274 gio/gdbusaddress.c:337
+#: gio/gdbusaddress.c:348
 #, c-format
-msgid "Error in address '%s' - the port attribute is malformed"
+msgid "Error in address “%s” — the “%s” attribute is malformed"
 msgstr ""
 
-#: ../gio/gdbusaddress.c:256
-#: ../gio/gdbusaddress.c:337
+#: gio/gdbusaddress.c:418 gio/gdbusaddress.c:682
 #, c-format
-msgid "Error in address '%s' - the family attribute is malformed"
+msgid "Unknown or unsupported transport “%s” for address “%s”"
 msgstr ""
 
-#: ../gio/gdbusaddress.c:446
+#: gio/gdbusaddress.c:462
 #, c-format
-msgid "Address element '%s', does not contain a colon (:)"
+msgid "Address element “%s” does not contain a colon (:)"
 msgstr ""
 
-#: ../gio/gdbusaddress.c:467
+#: gio/gdbusaddress.c:471
 #, c-format
-msgid "Key/Value pair %d, '%s', in address element '%s', does not contain an equal sign"
+msgid "Transport name in address element “%s” must not be empty"
 msgstr ""
 
-#: ../gio/gdbusaddress.c:481
+#: gio/gdbusaddress.c:492
 #, c-format
-msgid "Error unescaping key or value in Key/Value pair %d, '%s', in address element '%s'"
+msgid "Key/Value pair %d, “%s”, in address element “%s” does not contain an equal sign"
 msgstr ""
 
-#: ../gio/gdbusaddress.c:559
+#: gio/gdbusaddress.c:503
 #, c-format
-msgid "Error in address '%s' - the unix transport requires exactly one of the keys 'path' or 'abstract' to be set"
+msgid "Key/Value pair %d, “%s”, in address element “%s” must not have an empty key"
 msgstr ""
 
-#: ../gio/gdbusaddress.c:595
+#: gio/gdbusaddress.c:517
 #, c-format
-msgid "Error in address '%s' - the host attribute is missing or malformed"
+msgid "Error unescaping key or value in Key/Value pair %d, “%s”, in address element “%s”"
 msgstr ""
 
-#: ../gio/gdbusaddress.c:609
+#: gio/gdbusaddress.c:589
 #, c-format
-msgid "Error in address '%s' - the port attribute is missing or malformed"
+msgid ""
+"Error in address “%s” — the unix transport requires exactly one of the keys “path” or “abstract” to be set"
 msgstr ""
 
-#: ../gio/gdbusaddress.c:623
+#: gio/gdbusaddress.c:625
 #, c-format
-msgid "Error in address '%s' - the noncefile attribute is missing or malformed"
+msgid "Error in address “%s” — the host attribute is missing or malformed"
 msgstr ""
 
-#: ../gio/gdbusaddress.c:644
-msgid "Error auto-launching: "
-msgstr "خطا در اجرا خودکار:"
-
-#: ../gio/gdbusaddress.c:652
+#: gio/gdbusaddress.c:639
 #, c-format
-msgid "Unknown or unsupported transport '%s' for address '%s'"
+msgid "Error in address “%s” — the port attribute is missing or malformed"
 msgstr ""
 
-#: ../gio/gdbusaddress.c:688
+#: gio/gdbusaddress.c:653
 #, c-format
-msgid "Error opening nonce file '%s': %s"
+msgid "Error in address “%s” — the noncefile attribute is missing or malformed"
+msgstr ""
+
+#: gio/gdbusaddress.c:674
+msgid "Error auto-launching: "
+msgstr "خطا در راه‌اندازی خودکار: "
+
+#: gio/gdbusaddress.c:727
+#, fuzzy, c-format
+#| msgid "Error opening nonce file '%s': %s"
+msgid "Error opening nonce file “%s”: %s"
 msgstr "خطا در بازکردن پرونده فعلی «‎%s»‏: %s"
 
-#: ../gio/gdbusaddress.c:706
-#, c-format
-msgid "Error reading from nonce file '%s': %s"
+#: gio/gdbusaddress.c:746
+#, fuzzy, c-format
+#| msgid "Error reading from nonce file '%s': %s"
+msgid "Error reading from nonce file “%s”: %s"
 msgstr "خطا در خواندن از پروندهٔ فعلی «‎%s»‏: %s"
 
-#: ../gio/gdbusaddress.c:715
-#, c-format
-msgid "Error reading from nonce file '%s', expected 16 bytes, got %d"
+#: gio/gdbusaddress.c:755
+#, 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 "خطا در خواندن از پروندهٔ فعلی «‎%s»‏، انتظار ۱۶ بایت می‌رفت ولی %Id دریافت شد"
 
-#: ../gio/gdbusaddress.c:733
+#: gio/gdbusaddress.c:773
 #, fuzzy, c-format
-msgid "Error writing contents of nonce file '%s' to stream:"
+msgid "Error writing contents of nonce file “%s” to stream:"
 msgstr "خطا در خواندن پروندهٔ «‎%s»‏: %s"
 
-#: ../gio/gdbusaddress.c:951
+#: gio/gdbusaddress.c:988
 msgid "The given address is empty"
 msgstr "آدرس داده شده خالی است"
 
-#: ../gio/gdbusaddress.c:1020
-msgid "Cannot spawn a message bus without a machine-id: "
+#: gio/gdbusaddress.c:1101
+#, c-format
+msgid "Cannot spawn a message bus when setuid"
 msgstr ""
 
-#: ../gio/gdbusaddress.c:1057
-#, fuzzy, c-format
-msgid "Error spawning command line '%s': "
-msgstr "خطا در خواندن پروندهٔ «‎%s»‏: %s"
-
-#: ../gio/gdbusaddress.c:1068
-#, c-format
-msgid "Abnormal program termination spawning command line '%s': %s"
+#: gio/gdbusaddress.c:1108
+msgid "Cannot spawn a message bus without a machine-id: "
 msgstr ""
 
-#: ../gio/gdbusaddress.c:1082
+#: gio/gdbusaddress.c:1115
 #, c-format
-msgid "Command line '%s' exited with non-zero exit status %d: %s"
+msgid "Cannot autolaunch D-Bus without X11 $DISPLAY"
 msgstr ""
 
-#: ../gio/gdbusaddress.c:1155
+#: gio/gdbusaddress.c:1157
+#, fuzzy, c-format
+msgid "Error spawning command line “%s”: "
+msgstr "خطا در خواندن پروندهٔ «‎%s»‏: %s"
+
+#: gio/gdbusaddress.c:1226
 #, c-format
 msgid "Cannot determine session bus address (not implemented for this OS)"
 msgstr ""
 
-#: ../gio/gdbusaddress.c:1254
-#: ../gio/gdbusconnection.c:6688
+#: gio/gdbusaddress.c:1397 gio/gdbusconnection.c:7261
 #, 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”"
 msgstr ""
 
-#: ../gio/gdbusaddress.c:1263
-#: ../gio/gdbusconnection.c:6697
+#: gio/gdbusaddress.c:1406 gio/gdbusconnection.c:7270
 msgid "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment variable is not set"
 msgstr ""
 
-#: ../gio/gdbusaddress.c:1273
+#: gio/gdbusaddress.c:1416
 #, fuzzy, c-format
 msgid "Unknown bus type %d"
 msgstr "گزینهٔ نامعلوم %s"
 
-#: ../gio/gdbusauth.c:287
+#: gio/gdbusauth.c:294
 msgid "Unexpected lack of content trying to read a line"
 msgstr ""
 
-#: ../gio/gdbusauth.c:331
+#: gio/gdbusauth.c:338
 msgid "Unexpected lack of content trying to (safely) read a line"
 msgstr ""
 
-#: ../gio/gdbusauth.c:502
+#: gio/gdbusauth.c:482
 #, c-format
 msgid "Exhausted all available authentication mechanisms (tried: %s) (available: %s)"
 msgstr ""
 
-#: ../gio/gdbusauth.c:1158
+#: gio/gdbusauth.c:1171
+msgid "User IDs must be the same for peer and server"
+msgstr ""
+
+#: gio/gdbusauth.c:1183
 msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
 msgstr ""
 
-#: ../gio/gdbusauthmechanismsha1.c:266
-#, c-format
-msgid "Error when getting information for directory '%s': %s"
+#: gio/gdbusauthmechanismsha1.c:298
+#, fuzzy, c-format
+#| msgid "Error when getting information for directory '%s': %s"
+msgid "Error when getting information for directory “%s”: %s"
 msgstr "خطا در هنگام گرفتن اطلاعات برای شاخه «%s»: %s"
 
-#: ../gio/gdbusauthmechanismsha1.c:278
+#: gio/gdbusauthmechanismsha1.c:313
 #, 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"
 msgstr ""
 
-#: ../gio/gdbusauthmechanismsha1.c:299
-#, c-format
-msgid "Error creating directory '%s': %s"
+#: gio/gdbusauthmechanismsha1.c:346 gio/gdbusauthmechanismsha1.c:357
+#, fuzzy, c-format
+#| msgid "Error creating directory '%s': %s"
+msgid "Error creating directory “%s”: %s"
 msgstr "خطا در هنگام ساخت شاخه «%s»: %s"
 
-#: ../gio/gdbusauthmechanismsha1.c:382
-#, c-format
-msgid "Error opening keyring '%s' for reading: "
+#: gio/gdbusauthmechanismsha1.c:359 gio/gfile.c:1062 gio/gfile.c:1300 gio/gfile.c:1438 gio/gfile.c:1676
+#: gio/gfile.c:1731 gio/gfile.c:1789 gio/gfile.c:1873 gio/gfile.c:1930 gio/gfile.c:1994 gio/gfile.c:2049
+#: gio/gfile.c:3754 gio/gfile.c:3809 gio/gfile.c:4102 gio/gfile.c:4572 gio/gfile.c:4983 gio/gfile.c:5068
+#: gio/gfile.c:5158 gio/gfile.c:5255 gio/gfile.c:5342 gio/gfile.c:5443 gio/gfile.c:8153 gio/gfile.c:8243
+#: gio/gfile.c:8327 gio/win32/gwinhttpfile.c:453
+msgid "Operation not supported"
+msgstr "عملیات پشتیبانی نمی‌شود"
+
+#: gio/gdbusauthmechanismsha1.c:402
+#, fuzzy, c-format
+#| msgid "Error opening keyring '%s' for reading: "
+msgid "Error opening keyring “%s” for reading: "
 msgstr "خطا در هنگام باز کردن دسته‌کلید «%s» برای خواندن: "
 
-#: ../gio/gdbusauthmechanismsha1.c:406
-#: ../gio/gdbusauthmechanismsha1.c:718
+#: gio/gdbusauthmechanismsha1.c:425 gio/gdbusauthmechanismsha1.c:747
 #, 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 ""
 
-#: ../gio/gdbusauthmechanismsha1.c:420
-#: ../gio/gdbusauthmechanismsha1.c:732
+#: gio/gdbusauthmechanismsha1.c:439 gio/gdbusauthmechanismsha1.c:761
 #, 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"
 msgstr ""
 
-#: ../gio/gdbusauthmechanismsha1.c:435
-#: ../gio/gdbusauthmechanismsha1.c:746
+#: gio/gdbusauthmechanismsha1.c:453 gio/gdbusauthmechanismsha1.c:775
 #, 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"
 msgstr ""
 
-#: ../gio/gdbusauthmechanismsha1.c:459
+#: gio/gdbusauthmechanismsha1.c:477
 #, 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 ""
 
-#: ../gio/gdbusauthmechanismsha1.c:536
+#: gio/gdbusauthmechanismsha1.c:523
 #, fuzzy, c-format
-msgid "Error deleting stale lock file '%s': %s"
-msgstr "خطا در خواندن پروندهٔ «‎%s»‏: %s"
-
-#: ../gio/gdbusauthmechanismsha1.c:568
-#, c-format
-msgid "Error creating lock file '%s': %s"
+#| msgid "Error creating lock file '%s': %s"
+msgid "Error creating lock file “%s”: %s"
 msgstr "خطا در هنگام ساخت پرونده قفل «%s»: %s"
 
-#: ../gio/gdbusauthmechanismsha1.c:598
+#: gio/gdbusauthmechanismsha1.c:587
 #, fuzzy, c-format
-msgid "Error closing (unlinked) lock file '%s': %s"
+msgid "Error deleting stale lock file “%s”: %s"
 msgstr "خطا در خواندن پروندهٔ «‎%s»‏: %s"
 
-#: ../gio/gdbusauthmechanismsha1.c:608
-#, c-format
-msgid "Error unlinking lock file '%s': %s"
+#: gio/gdbusauthmechanismsha1.c:626
+#, fuzzy, c-format
+msgid "Error closing (unlinked) lock file “%s”: %s"
+msgstr "خطا در خواندن پروندهٔ «‎%s»‏: %s"
+
+#: gio/gdbusauthmechanismsha1.c:637
+#, fuzzy, c-format
+#| msgid "Error unlinking lock file '%s': %s"
+msgid "Error unlinking lock file “%s”: %s"
 msgstr "خطا در هنگام شکستن پیوند پرونده‌ی قفل «%s»: %s"
 
-#: ../gio/gdbusauthmechanismsha1.c:685
-#, c-format
-msgid "Error opening keyring '%s' for writing: "
+#: gio/gdbusauthmechanismsha1.c:714
+#, fuzzy, c-format
+#| msgid "Error opening keyring '%s' for writing: "
+msgid "Error opening keyring “%s” for writing: "
 msgstr "خطا در هنگام باز کردن دسته‌کلید «%s» برای نوشتن: "
 
-#: ../gio/gdbusauthmechanismsha1.c:882
+#: gio/gdbusauthmechanismsha1.c:908
 #, c-format
-msgid "(Additionally, releasing the lock for '%s' also failed: %s) "
+msgid "(Additionally, releasing the lock for “%s” also failed: %s) "
 msgstr ""
 
-#: ../gio/gdbusconnection.c:594
-#: ../gio/gdbusconnection.c:2402
+#: gio/gdbusconnection.c:603 gio/gdbusconnection.c:2417
 msgid "The connection is closed"
 msgstr "اتصال بسته شده است"
 
-#: ../gio/gdbusconnection.c:1879
+#: gio/gdbusconnection.c:1902
 msgid "Timeout was reached"
 msgstr ""
 
-#: ../gio/gdbusconnection.c:2524
+#: gio/gdbusconnection.c:2540
 msgid "Unsupported flags encountered when constructing a client-side connection"
 msgstr ""
 
-#: ../gio/gdbusconnection.c:4026
-#: ../gio/gdbusconnection.c:4342
-#, c-format
-msgid "No such interface 'org.freedesktop.DBus.Properties' on object at path %s"
-msgstr ""
-
-#: ../gio/gdbusconnection.c:4097
+#: gio/gdbusconnection.c:4189 gio/gdbusconnection.c:4536
 #, c-format
-msgid "Error setting property '%s': Expected type '%s' but got '%s'"
+msgid "No such interface “org.freedesktop.DBus.Properties” on object at path %s"
 msgstr ""
 
-#: ../gio/gdbusconnection.c:4192
-#, c-format
-msgid "No such property '%s'"
+#: gio/gdbusconnection.c:4331
+#, fuzzy, c-format
+#| msgid "No such property '%s'"
+msgid "No such property “%s”"
 msgstr "همچین خصیصه‌ای وجود ندارد «%s»"
 
-#: ../gio/gdbusconnection.c:4204
-#, c-format
-msgid "Property '%s' is not readable"
+#: gio/gdbusconnection.c:4343
+#, fuzzy, c-format
+#| msgid "Property '%s' is not readable"
+msgid "Property “%s” is not readable"
 msgstr "خصیصه‌ی «%s» خواندنی نیست"
 
-#: ../gio/gdbusconnection.c:4215
-#, c-format
-msgid "Property '%s' is not writable"
+#: gio/gdbusconnection.c:4354
+#, fuzzy, c-format
+#| msgid "Property '%s' is not writable"
+msgid "Property “%s” is not writable"
 msgstr "خصیصه‌ی «%s» قابل نوشتن نیست"
 
-#: ../gio/gdbusconnection.c:4285
-#: ../gio/gdbusconnection.c:6131
+#: gio/gdbusconnection.c:4374
 #, c-format
-msgid "No such interface '%s'"
+msgid "Error setting property “%s”: Expected type “%s” but got “%s”"
 msgstr ""
 
-#: ../gio/gdbusconnection.c:4469
-msgid "No such interface"
+#: gio/gdbusconnection.c:4479 gio/gdbusconnection.c:4687 gio/gdbusconnection.c:6689
+#, c-format
+msgid "No such interface “%s”"
 msgstr ""
 
-#: ../gio/gdbusconnection.c:4690
-#: ../gio/gdbusconnection.c:6637
+#: gio/gdbusconnection.c:4905 gio/gdbusconnection.c:7201
 #, c-format
-msgid "No such interface '%s' on object at path %s"
+msgid "No such interface “%s” on object at path %s"
 msgstr ""
 
-#: ../gio/gdbusconnection.c:4742
-#, c-format
-msgid "No such method '%s'"
+#: gio/gdbusconnection.c:5003
+#, fuzzy, c-format
+#| msgid "No such method '%s'"
+msgid "No such method “%s”"
 msgstr "همچین متدی وجود ندارد «%s»"
 
-#: ../gio/gdbusconnection.c:4773
-#, c-format
-msgid "Type of message, '%s', does not match expected type '%s'"
+#: gio/gdbusconnection.c:5034
+#, fuzzy, c-format
+#| msgid "Type of message, '%s', does not match expected type '%s'"
+msgid "Type of message, “%s”, does not match expected type “%s”"
 msgstr "نوع پیام، «%s»، با نوع مورد انتظار مطابقت ندارد «%s»"
 
-#: ../gio/gdbusconnection.c:4993
+#: gio/gdbusconnection.c:5237
 #, c-format
 msgid "An object is already exported for the interface %s at %s"
 msgstr "یک شیء از قبل برای واسط %s در %s صادر شده است"
 
-#: ../gio/gdbusconnection.c:5191
+#: gio/gdbusconnection.c:5463
+#, fuzzy, c-format
+#| msgid "Unable to create socket: %s"
+msgid "Unable to retrieve property %s.%s"
+msgstr "نمی‌توان سوکت را ساخت: %s"
+
+#: gio/gdbusconnection.c:5519
+#, fuzzy, c-format
+#| msgid "Unable to create socket: %s"
+msgid "Unable to set property %s.%s"
+msgstr "نمی‌توان سوکت را ساخت: %s"
+
+#: gio/gdbusconnection.c:5698
 #, c-format
-msgid "Method '%s' returned type '%s', but expected '%s'"
+msgid "Method “%s” returned type “%s”, but expected “%s”"
 msgstr ""
 
-#: ../gio/gdbusconnection.c:6242
+#: gio/gdbusconnection.c:6800
 #, c-format
-msgid "Method '%s' on interface '%s' with signature '%s' does not exist"
+msgid "Method “%s” on interface “%s” with signature “%s” does not exist"
 msgstr ""
 
-#: ../gio/gdbusconnection.c:6361
+#: gio/gdbusconnection.c:6921
 #, c-format
 msgid "A subtree is already exported for %s"
 msgstr ""
 
-#: ../gio/gdbusmessage.c:859
+#: gio/gdbusconnection.c:7209
+#, c-format
+msgid "Object does not exist at path “%s”"
+msgstr ""
+
+#: gio/gdbusmessage.c:1266
 msgid "type is INVALID"
 msgstr "نوع INVALID است"
 
-#: ../gio/gdbusmessage.c:870
+#: gio/gdbusmessage.c:1277
 msgid "METHOD_CALL message: PATH or MEMBER header field is missing"
 msgstr ""
 
-#: ../gio/gdbusmessage.c:881
+#: gio/gdbusmessage.c:1288
 msgid "METHOD_RETURN message: REPLY_SERIAL header field is missing"
 msgstr ""
 
-#: ../gio/gdbusmessage.c:893
+#: gio/gdbusmessage.c:1300
 msgid "ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing"
 msgstr ""
 
-#: ../gio/gdbusmessage.c:906
+#: gio/gdbusmessage.c:1313
 msgid "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing"
 msgstr ""
 
-#: ../gio/gdbusmessage.c:914
+#: gio/gdbusmessage.c:1321
 msgid "SIGNAL message: The PATH header field is using the reserved value /org/freedesktop/DBus/Local"
 msgstr ""
 
-#: ../gio/gdbusmessage.c:922
+#: gio/gdbusmessage.c:1329
 msgid "SIGNAL message: The INTERFACE header field is using the reserved value org.freedesktop.DBus.Local"
 msgstr ""
 
-#: ../gio/gdbusmessage.c:998
+#: gio/gdbusmessage.c:1377 gio/gdbusmessage.c:1437
 #, c-format
-msgid "Wanted to read %lu byte but got EOF"
-msgid_plural "Wanted to read %lu bytes but got EOF"
+msgid "Wanted to read %lu byte but only got %lu"
+msgid_plural "Wanted to read %lu bytes but only got %lu"
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../gio/gdbusmessage.c:1025
+#: gio/gdbusmessage.c:1391
 #, 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 NUL byte after the string “%s” but found byte %d"
 msgstr ""
 
-#: ../gio/gdbusmessage.c:1038
+#: gio/gdbusmessage.c:1410
 #, c-format
-msgid "Expected NUL byte after the string '%s' but found byte %d"
+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”"
 msgstr ""
 
-#: ../gio/gdbusmessage.c:1242
-#, c-format
-msgid "Parsed value '%s' is not a valid D-Bus object path"
+#: gio/gdbusmessage.c:1474 gio/gdbusmessage.c:1722 gio/gdbusmessage.c:1911
+msgid "Value nested too deeply"
 msgstr ""
 
-#: ../gio/gdbusmessage.c:1268
+#: gio/gdbusmessage.c:1620
+#, fuzzy, c-format
+#| msgid "Error: %s is not a valid object path\n"
+msgid "Parsed value “%s” is not a valid D-Bus object path"
+msgstr "خطا: %s یک مسیر شیء معتبر نیست\n"
+
+#: gio/gdbusmessage.c:1642
 #, 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 ""
 
-#: ../gio/gdbusmessage.c:1324
+#: gio/gdbusmessage.c:1689
 #, c-format
 msgid "Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB)."
 msgid_plural "Encountered array of length %u bytes. Maximum length is 2<<26 bytes (64 MiB)."
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../gio/gdbusmessage.c:1490
+#: gio/gdbusmessage.c:1709
+#, 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"
+msgstr ""
+
+#: gio/gdbusmessage.c:1895
 #, 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 ""
 
-#: ../gio/gdbusmessage.c:1517
+#: gio/gdbusmessage.c:1936
 #, 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"
 msgstr ""
 
-#: ../gio/gdbusmessage.c:1705
+#: gio/gdbusmessage.c:2121
 #, 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 0x%02x"
 msgstr ""
 
-#: ../gio/gdbusmessage.c:1719
+#: gio/gdbusmessage.c:2134
 #, c-format
 msgid "Invalid major protocol version. Expected 1 but found %d"
 msgstr ""
 
-#: ../gio/gdbusmessage.c:1776
+#: gio/gdbusmessage.c:2188 gio/gdbusmessage.c:2784
+msgid "Signature header found but is not of type signature"
+msgstr ""
+
+#: gio/gdbusmessage.c:2200
 #, 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 ""
 
-#: ../gio/gdbusmessage.c:1790
+#: gio/gdbusmessage.c:2215
 #, 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 ""
 
-#: ../gio/gdbusmessage.c:1821
+#: gio/gdbusmessage.c:2247
 #, 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"
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../gio/gdbusmessage.c:1831
+#: gio/gdbusmessage.c:2257
 msgid "Cannot deserialize message: "
 msgstr ""
 
-#: ../gio/gdbusmessage.c:2163
+#: gio/gdbusmessage.c:2601
 #, 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"
 msgstr ""
 
-#: ../gio/gdbusmessage.c:2304
+#: gio/gdbusmessage.c:2738
 #, c-format
-msgid "Message has %d file descriptors but the header field indicates %d file descriptors"
+msgid "Number of file descriptors in message (%d) differs from header field (%d)"
 msgstr ""
 
-#: ../gio/gdbusmessage.c:2312
+#: gio/gdbusmessage.c:2746
 msgid "Cannot serialize message: "
 msgstr ""
 
-#: ../gio/gdbusmessage.c:2356
+#: gio/gdbusmessage.c:2799
 #, 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 ""
 
-#: ../gio/gdbusmessage.c:2366
+#: gio/gdbusmessage.c:2809
 #, 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”"
 msgstr ""
 
-#: ../gio/gdbusmessage.c:2382
+#: gio/gdbusmessage.c:2825
 #, 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 ""
 
-#: ../gio/gdbusmessage.c:2939
-#, c-format
-msgid "Error return with body of type '%s'"
+#: gio/gdbusmessage.c:3380
+#, fuzzy, c-format
+#| msgid "Error return with body of type '%s'"
+msgid "Error return with body of type “%s”"
 msgstr "خطا در بازگردانی با بدنه‌ای از نوع «%s»"
 
-#: ../gio/gdbusmessage.c:2947
+#: gio/gdbusmessage.c:3388
 msgid "Error return with empty body"
 msgstr ""
 
-#: ../gio/gdbusprivate.c:2065
-msgid "Unable to load /var/lib/dbus/machine-id or /etc/machine-id: "
+#: gio/gdbusprivate.c:2246
+#, c-format
+msgid "(Type any character to close this window)\n"
+msgstr ""
+
+#: gio/gdbusprivate.c:2420
+#, c-format
+msgid "Session dbus not running, and autolaunch failed"
 msgstr ""
 
-#: ../gio/gdbusproxy.c:1624
+#: gio/gdbusprivate.c:2443
+#, fuzzy, c-format
+#| msgid "Unable to trash file: %s"
+msgid "Unable to get Hardware profile: %s"
+msgstr "نمی‌توان پرونده را به زباله‌دان فرستاد: %s"
+
+#. Translators: Both placeholders are file paths
+#: gio/gdbusprivate.c:2494
+#, fuzzy, c-format
+#| msgid "Unable to create trash dir %s: %s"
+msgid "Unable to load %s or %s: "
+msgstr "نمی‌توان شاخه زباله‌دان %s را ساخت: %s"
+
+#: gio/gdbusproxy.c:1569
 #, c-format
 msgid "Error calling StartServiceByName for %s: "
 msgstr ""
 
-#: ../gio/gdbusproxy.c:1645
+#: gio/gdbusproxy.c:1592
 #, c-format
 msgid "Unexpected reply %d from StartServiceByName(\"%s\") method"
 msgstr ""
 
-#: ../gio/gdbusproxy.c:2726
-#: ../gio/gdbusproxy.c:2860
-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"
+#: gio/gdbusproxy.c:2699 gio/gdbusproxy.c:2834
+#, c-format
+msgid ""
+"Cannot invoke method; proxy is for the well-known name %s without an owner, and proxy was constructed "
+"with the G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START flag"
 msgstr ""
 
-#: ../gio/gdbusserver.c:708
+#: gio/gdbusserver.c:767
 #, fuzzy
-msgid "Abstract name space not supported"
+msgid "Abstract namespace not supported"
 msgstr "پیوندهای نمادی پشتیبانی نمی‌شوند"
 
-#: ../gio/gdbusserver.c:795
+#: gio/gdbusserver.c:860
 msgid "Cannot specify nonce file when creating a server"
 msgstr ""
 
-#: ../gio/gdbusserver.c:872
+#: gio/gdbusserver.c:942
 #, fuzzy, c-format
-msgid "Error writing nonce file at '%s': %s"
+msgid "Error writing nonce file at “%s”: %s"
 msgstr "خطا در خواندن پروندهٔ «‎%s»‏: %s"
 
-#: ../gio/gdbusserver.c:1038
+#: gio/gdbusserver.c:1117
 #, 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 ""
 
-#: ../gio/gdbusserver.c:1078
+#: gio/gdbusserver.c:1157
 #, c-format
-msgid "Cannot listen on unsupported transport '%s'"
+msgid "Cannot listen on unsupported transport “%s”"
 msgstr ""
 
-#: ../gio/gdbus-tool.c:88
-msgid "COMMAND"
-msgstr "COMMAND"
-
-#: ../gio/gdbus-tool.c:93
+#: gio/gdbus-tool.c:111
 #, c-format
 msgid ""
 "Commands:\n"
@@ -643,523 +947,599 @@ 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 ""
 
-#: ../gio/gdbus-tool.c:162
-#: ../gio/gdbus-tool.c:218
-#: ../gio/gdbus-tool.c:290
-#: ../gio/gdbus-tool.c:314
-#: ../gio/gdbus-tool.c:691
-#: ../gio/gdbus-tool.c:1010
-#: ../gio/gdbus-tool.c:1443
+#: gio/gdbus-tool.c:201 gio/gdbus-tool.c:273 gio/gdbus-tool.c:345 gio/gdbus-tool.c:369 gio/gdbus-tool.c:859
+#: gio/gdbus-tool.c:1236 gio/gdbus-tool.c:1724
 #, c-format
 msgid "Error: %s\n"
 msgstr "خطا: %s\n"
 
-#: ../gio/gdbus-tool.c:173
-#: ../gio/gdbus-tool.c:231
-#: ../gio/gdbus-tool.c:1459
+#: gio/gdbus-tool.c:212 gio/gdbus-tool.c:286 gio/gdbus-tool.c:1740
 #, fuzzy, c-format
 msgid "Error parsing introspection XML: %s\n"
 msgstr "خطا در تجزیهٔ گزینهٔ %s"
 
-#: ../gio/gdbus-tool.c:348
+#: gio/gdbus-tool.c:250
+#, fuzzy, c-format
+#| msgid "Error: %s is not a valid member name\n"
+msgid "Error: %s is not a valid name\n"
+msgstr "خطا: %s یک نام عضو معتبر نیست\n"
+
+#: gio/gdbus-tool.c:255 gio/gdbus-tool.c:745 gio/gdbus-tool.c:1060 gio/gdbus-tool.c:1890
+#: gio/gdbus-tool.c:2130
+#, c-format
+msgid "Error: %s is not a valid object path\n"
+msgstr "خطا: %s یک مسیر شیء معتبر نیست\n"
+
+#: gio/gdbus-tool.c:403
 msgid "Connect to the system bus"
 msgstr ""
 
-#: ../gio/gdbus-tool.c:349
+#: gio/gdbus-tool.c:404
 msgid "Connect to the session bus"
 msgstr ""
 
-#: ../gio/gdbus-tool.c:350
+#: gio/gdbus-tool.c:405
 msgid "Connect to given D-Bus address"
 msgstr ""
 
-#: ../gio/gdbus-tool.c:360
+#: gio/gdbus-tool.c:415
 msgid "Connection Endpoint Options:"
 msgstr ""
 
-#: ../gio/gdbus-tool.c:361
+#: gio/gdbus-tool.c:416
 msgid "Options specifying the connection endpoint"
 msgstr ""
 
-#: ../gio/gdbus-tool.c:383
+#: gio/gdbus-tool.c:439
 #, c-format
 msgid "No connection endpoint specified"
 msgstr ""
 
-#: ../gio/gdbus-tool.c:393
+#: gio/gdbus-tool.c:449
 #, c-format
 msgid "Multiple connection endpoints specified"
 msgstr ""
 
-#: ../gio/gdbus-tool.c:463
+#: gio/gdbus-tool.c:522
 #, 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"
 msgstr ""
 
-#: ../gio/gdbus-tool.c:472
+#: gio/gdbus-tool.c:531
 #, 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"
 msgstr ""
 
-#: ../gio/gdbus-tool.c:534
+#: gio/gdbus-tool.c:593
 msgid "Optional destination for signal (unique name)"
 msgstr ""
 
-#: ../gio/gdbus-tool.c:535
+#: gio/gdbus-tool.c:594
 msgid "Object path to emit signal on"
 msgstr ""
 
-#: ../gio/gdbus-tool.c:536
+#: gio/gdbus-tool.c:595
 msgid "Signal and interface name"
 msgstr ""
 
-#: ../gio/gdbus-tool.c:568
+#: gio/gdbus-tool.c:628
 msgid "Emit a signal."
 msgstr ""
 
-#: ../gio/gdbus-tool.c:602
-#: ../gio/gdbus-tool.c:822
-#: ../gio/gdbus-tool.c:1549
-#: ../gio/gdbus-tool.c:1781
+#: gio/gdbus-tool.c:683 gio/gdbus-tool.c:997 gio/gdbus-tool.c:1827 gio/gdbus-tool.c:2059
+#: gio/gdbus-tool.c:2279
 #, c-format
 msgid "Error connecting: %s\n"
 msgstr "خطا در هنگام اتصال: %s\n"
 
-#: ../gio/gdbus-tool.c:614
-#, c-format
-msgid "Error: object path not specified.\n"
-msgstr "خطا: مسیر شیء مشخص نشده است.\n"
+#: gio/gdbus-tool.c:703
+#, fuzzy, c-format
+msgid "Error: %s is not a valid unique bus name.\n"
+msgstr "نویسهٔ «%s» داخل نام نهادها مجاز نیست"
 
-#: ../gio/gdbus-tool.c:619
-#: ../gio/gdbus-tool.c:883
-#: ../gio/gdbus-tool.c:1607
-#: ../gio/gdbus-tool.c:1840
-#, c-format
-msgid "Error: %s is not a valid object path\n"
-msgstr "خطا: %s یک مسیر شیء معتبر نیست\n"
+#: gio/gdbus-tool.c:722 gio/gdbus-tool.c:1040 gio/gdbus-tool.c:1870
+msgid "Error: Object path is not specified\n"
+msgstr "خطا: مسیر شیء مشخص نشده است\n"
 
-#: ../gio/gdbus-tool.c:625
-#, c-format
-msgid "Error: signal not specified.\n"
-msgstr ""
+#: gio/gdbus-tool.c:765
+#, fuzzy
+#| msgid "Error: Method name is not specified\n"
+msgid "Error: Signal name is not specified\n"
+msgstr "خطا: نام متد مشخص نشده است\n"
+
+#: gio/gdbus-tool.c:779
+#, fuzzy, c-format
+#| msgid "Error: Method name '%s' is invalid\n"
+msgid "Error: Signal name “%s” is invalid\n"
+msgstr "خطا: نام متد «%s» نامعتبر است\n"
 
-#: ../gio/gdbus-tool.c:634
+#: gio/gdbus-tool.c:791
 #, c-format
 msgid "Error: %s is not a valid interface name\n"
 msgstr "خطا: %s یم نام واسط معتبر نیست\n"
 
-#: ../gio/gdbus-tool.c:640
+#: gio/gdbus-tool.c:797
 #, c-format
 msgid "Error: %s is not a valid member name\n"
 msgstr "خطا: %s یک نام عضو معتبر نیست\n"
 
-#: ../gio/gdbus-tool.c:646
-#, fuzzy, c-format
-msgid "Error: %s is not a valid unique bus name.\n"
-msgstr "نویسهٔ «%s» داخل نام نهادها مجاز نیست"
-
-#: ../gio/gdbus-tool.c:669
-#: ../gio/gdbus-tool.c:982
+#. Use the original non-"parse-me-harder" error
+#: gio/gdbus-tool.c:834 gio/gdbus-tool.c:1172
 #, c-format
 msgid "Error parsing parameter %d: %s\n"
 msgstr "خطا در تجزیه پارامتر %Id: %s\n"
 
-#: ../gio/gdbus-tool.c:698
+#: gio/gdbus-tool.c:866
 #, fuzzy, c-format
 msgid "Error flushing connection: %s\n"
 msgstr "خطا در حین تبدیل: %s"
 
-#: ../gio/gdbus-tool.c:725
+#: gio/gdbus-tool.c:893
 msgid "Destination name to invoke method on"
 msgstr ""
 
-#: ../gio/gdbus-tool.c:726
+#: gio/gdbus-tool.c:894
 msgid "Object path to invoke method on"
 msgstr ""
 
-#: ../gio/gdbus-tool.c:727
+#: gio/gdbus-tool.c:895
 msgid "Method and interface name"
 msgstr "نام متد و واسط"
 
-#: ../gio/gdbus-tool.c:728
+#: gio/gdbus-tool.c:896
 msgid "Timeout in seconds"
 msgstr ""
 
-#: ../gio/gdbus-tool.c:767
+#: gio/gdbus-tool.c:942
 msgid "Invoke a method on a remote object."
 msgstr ""
 
-#: ../gio/gdbus-tool.c:842
-#: ../gio/gdbus-tool.c:1568
-#: ../gio/gdbus-tool.c:1800
-#, c-format
+#: gio/gdbus-tool.c:1014 gio/gdbus-tool.c:1844 gio/gdbus-tool.c:2084
 msgid "Error: Destination is not specified\n"
 msgstr "خطا: مقصد مشخص نشده است\n"
 
-#: ../gio/gdbus-tool.c:863
-#: ../gio/gdbus-tool.c:1587
-#, c-format
-msgid "Error: Object path is not specified\n"
-msgstr "خطا: مسیر شیء مشخص نشده است\n"
+#: gio/gdbus-tool.c:1025 gio/gdbus-tool.c:1861 gio/gdbus-tool.c:2095
+#, fuzzy, c-format
+#| msgid "Error: %s is not a valid member name\n"
+msgid "Error: %s is not a valid bus name\n"
+msgstr "خطا: %s یک نام عضو معتبر نیست\n"
 
-#: ../gio/gdbus-tool.c:898
-#, c-format
+#: gio/gdbus-tool.c:1075
 msgid "Error: Method name is not specified\n"
 msgstr "خطا: نام متد مشخص نشده است\n"
 
-#: ../gio/gdbus-tool.c:909
-#, c-format
-msgid "Error: Method name '%s' is invalid\n"
+#: gio/gdbus-tool.c:1086
+#, fuzzy, c-format
+#| msgid "Error: Method name '%s' is invalid\n"
+msgid "Error: Method name “%s” is invalid\n"
 msgstr "خطا: نام متد «%s» نامعتبر است\n"
 
-#: ../gio/gdbus-tool.c:974
-#, c-format
-msgid "Error parsing parameter %d of type '%s': %s\n"
+#: gio/gdbus-tool.c:1164
+#, fuzzy, c-format
+#| msgid "Error parsing parameter %d of type '%s': %s\n"
+msgid "Error parsing parameter %d of type “%s”: %s\n"
 msgstr "خطا در هنگام تجزیه پارامتر %Id از نوع «%s»: %s\n"
 
-#: ../gio/gdbus-tool.c:1406
+#: gio/gdbus-tool.c:1190
+#, fuzzy, c-format
+msgid "Error adding handle %d: %s\n"
+msgstr "خطا در خواندن پروندهٔ «‎%s»‏: %s"
+
+#: gio/gdbus-tool.c:1686
 msgid "Destination name to introspect"
 msgstr ""
 
-#: ../gio/gdbus-tool.c:1407
+#: gio/gdbus-tool.c:1687
 msgid "Object path to introspect"
 msgstr ""
 
-#: ../gio/gdbus-tool.c:1408
+#: gio/gdbus-tool.c:1688
 msgid "Print XML"
 msgstr "چاپ XML"
 
-#: ../gio/gdbus-tool.c:1409
+#: gio/gdbus-tool.c:1689
 msgid "Introspect children"
 msgstr ""
 
-#: ../gio/gdbus-tool.c:1410
+#: gio/gdbus-tool.c:1690
 msgid "Only print properties"
 msgstr "تنها ترجیحات را چاپ کن"
 
-#: ../gio/gdbus-tool.c:1501
+#: gio/gdbus-tool.c:1779
 msgid "Introspect a remote object."
 msgstr ""
 
-#: ../gio/gdbus-tool.c:1699
+#: gio/gdbus-tool.c:1985
 msgid "Destination name to monitor"
 msgstr "نام مقصد جهت پایش"
 
-#: ../gio/gdbus-tool.c:1700
+#: gio/gdbus-tool.c:1986
 msgid "Object path to monitor"
 msgstr "مسیر شیء جهت پایش"
 
-#: ../gio/gdbus-tool.c:1733
+#: gio/gdbus-tool.c:2011
 msgid "Monitor a remote object."
 msgstr "پایش یک شیء دوردست."
 
-#: ../gio/gdesktopappinfo.c:575
-#: ../gio/gwin32appinfo.c:221
+#: gio/gdbus-tool.c:2069
+msgid "Error: can’t monitor a non-message-bus connection\n"
+msgstr ""
+
+#: gio/gdbus-tool.c:2193
+msgid "Service to activate before waiting for the other one (well-known name)"
+msgstr ""
+
+#: gio/gdbus-tool.c:2196
+msgid "Timeout to wait for before exiting with an error (seconds); 0 for no timeout (default)"
+msgstr ""
+
+#: gio/gdbus-tool.c:2244
+msgid "[OPTION…] BUS-NAME"
+msgstr ""
+
+#: gio/gdbus-tool.c:2245
+msgid "Wait for a bus name to appear."
+msgstr ""
+
+#: gio/gdbus-tool.c:2321
+#, fuzzy
+#| msgid "Error: object path not specified.\n"
+msgid "Error: A service to activate for must be specified.\n"
+msgstr "خطا: مسیر شیء مشخص نشده است.\n"
+
+#: gio/gdbus-tool.c:2326
+#, fuzzy
+#| msgid "Error: object path not specified.\n"
+msgid "Error: A service to wait for must be specified.\n"
+msgstr "خطا: مسیر شیء مشخص نشده است.\n"
+
+#: gio/gdbus-tool.c:2331
+msgid "Error: Too many arguments.\n"
+msgstr ""
+
+#: gio/gdbus-tool.c:2339 gio/gdbus-tool.c:2346
+#, fuzzy, c-format
+msgid "Error: %s is not a valid well-known bus name.\n"
+msgstr "نویسهٔ «%s» داخل نام نهادها مجاز نیست"
+
+#: gio/gdesktopappinfo.c:2106 gio/gdesktopappinfo.c:4932
 msgid "Unnamed"
 msgstr "بدون‌نام"
 
-#: ../gio/gdesktopappinfo.c:988
-msgid "Desktop file didn't specify Exec field"
+#: gio/gdesktopappinfo.c:2516
+msgid "Desktop file didnt specify Exec field"
 msgstr ""
 
-#: ../gio/gdesktopappinfo.c:1276
+#: gio/gdesktopappinfo.c:2801
 msgid "Unable to find terminal required for application"
 msgstr "نمی‌توان پایانه‌ی لازم برای این برنامه را پیدا کرد"
 
-#: ../gio/gdesktopappinfo.c:1563
+#: gio/gdesktopappinfo.c:3452
 #, c-format
-msgid "Can't create user application configuration folder %s: %s"
+msgid "Cant create user application configuration folder %s: %s"
 msgstr ""
 
-#: ../gio/gdesktopappinfo.c:1567
+#: gio/gdesktopappinfo.c:3456
 #, c-format
-msgid "Can't create user MIME configuration folder %s: %s"
+msgid "Cant create user MIME configuration folder %s: %s"
 msgstr ""
 
-#: ../gio/gdesktopappinfo.c:1807
-#: ../gio/gdesktopappinfo.c:1831
+#: gio/gdesktopappinfo.c:3698 gio/gdesktopappinfo.c:3722
 msgid "Application information lacks an identifier"
 msgstr ""
 
-#: ../gio/gdesktopappinfo.c:2055
-#, c-format
-msgid "Can't create user desktop file %s"
-msgstr ""
+#: gio/gdesktopappinfo.c:3958
+#, fuzzy, c-format
+#| msgid "Failed to create temp file: %s"
+msgid "Can’t create user desktop file %s"
+msgstr "ساخت پرونده موقت شکست خورد: %s"
 
-#: ../gio/gdesktopappinfo.c:2171
+#: gio/gdesktopappinfo.c:4094
 #, c-format
 msgid "Custom definition for %s"
 msgstr ""
 
-#: ../gio/gdrive.c:363
-msgid "drive doesn't implement eject"
-msgstr ""
+#: gio/gdrive.c:417
+#, fuzzy
+#| msgid "volume doesn't implement eject"
+msgid "drive doesn’t implement eject"
+msgstr "جلد قابلیت eject ندارد"
 
 #. Translators: This is an error
 #. * message for drive objects that
 #. * don't implement any of eject or eject_with_operation.
-#: ../gio/gdrive.c:444
-msgid "drive doesn't implement eject or eject_with_operation"
-msgstr ""
+#: gio/gdrive.c:495
+#, fuzzy
+#| msgid "volume doesn't implement eject or eject_with_operation"
+msgid "drive doesn’t implement eject or eject_with_operation"
+msgstr "جلد قابلیت eject یا eject_with_operation را ندارد"
 
-#: ../gio/gdrive.c:521
-msgid "drive doesn't implement polling for media"
+#: gio/gdrive.c:571
+msgid "drive doesnt implement polling for media"
 msgstr ""
 
-#: ../gio/gdrive.c:728
-msgid "drive doesn't implement start"
-msgstr ""
+#: gio/gdrive.c:778
+#, fuzzy
+#| msgid "volume doesn't implement eject"
+msgid "drive doesn’t implement start"
+msgstr "جلد قابلیت eject ندارد"
+
+#: gio/gdrive.c:880
+#, fuzzy
+#| msgid "volume doesn't implement eject"
+msgid "drive doesn’t implement stop"
+msgstr "جلد قابلیت eject ندارد"
 
-#: ../gio/gdrive.c:831
-msgid "drive doesn't implement stop"
+#: gio/gdtlsconnection.c:1153 gio/gtlsconnection.c:920
+msgid "TLS backend does not implement TLS binding retrieval"
 msgstr ""
 
-#: ../gio/gdummytlsbackend.c:168
-#: ../gio/gdummytlsbackend.c:288
-#: ../gio/gdummytlsbackend.c:378
+#: gio/gdummytlsbackend.c:195 gio/gdummytlsbackend.c:321 gio/gdummytlsbackend.c:513
 msgid "TLS support is not available"
 msgstr ""
 
-#: ../gio/gemblem.c:324
-#, c-format
-msgid "Can't handle version %d of GEmblem encoding"
+#: gio/gdummytlsbackend.c:423
+msgid "DTLS support is not available"
 msgstr ""
 
-#: ../gio/gemblem.c:334
+#: gio/gemblem.c:323
+#, fuzzy, c-format
+#| msgid "Can't handle version %d of GThemedIcon encoding"
+msgid "Can’t handle version %d of GEmblem encoding"
+msgstr "نمی‌توان با رمزنگاری نسخه %Id GThemedIcon را کار کرد"
+
+#: gio/gemblem.c:333
 #, c-format
 msgid "Malformed number of tokens (%d) in GEmblem encoding"
 msgstr ""
 
-#: ../gio/gemblemedicon.c:367
-#, c-format
-msgid "Can't handle version %d of GEmblemedIcon encoding"
-msgstr ""
+#: gio/gemblemedicon.c:362
+#, fuzzy, c-format
+#| msgid "Can't handle version %d of GThemedIcon encoding"
+msgid "Can’t handle version %d of GEmblemedIcon encoding"
+msgstr "نمی‌توان با رمزنگاری نسخه %Id GThemedIcon را کار کرد"
 
-#: ../gio/gemblemedicon.c:377
+#: gio/gemblemedicon.c:372
 #, c-format
 msgid "Malformed number of tokens (%d) in GEmblemedIcon encoding"
 msgstr ""
 
-#: ../gio/gemblemedicon.c:400
+#: gio/gemblemedicon.c:395
 msgid "Expected a GEmblem for GEmblemedIcon"
 msgstr ""
 
-#: ../gio/gfile.c:874
-#: ../gio/gfile.c:1105
-#: ../gio/gfile.c:1240
-#: ../gio/gfile.c:1477
-#: ../gio/gfile.c:1531
-#: ../gio/gfile.c:1588
-#: ../gio/gfile.c:1671
-#: ../gio/gfile.c:1726
-#: ../gio/gfile.c:1786
-#: ../gio/gfile.c:1840
-#: ../gio/gfile.c:3312
-#: ../gio/gfile.c:3366
-#: ../gio/gfile.c:3500
-#: ../gio/gfile.c:3541
-#: ../gio/gfile.c:3871
-#: ../gio/gfile.c:4273
-#: ../gio/gfile.c:4359
-#: ../gio/gfile.c:4448
-#: ../gio/gfile.c:4546
-#: ../gio/gfile.c:4633
-#: ../gio/gfile.c:4727
-#: ../gio/gfile.c:5048
-#: ../gio/gfile.c:5315
-#: ../gio/gfile.c:5380
-#: ../gio/gfile.c:7008
-#: ../gio/gfile.c:7098
-#: ../gio/gfile.c:7184
-#: ../gio/win32/gwinhttpfile.c:439
-msgid "Operation not supported"
-msgstr "عملیات پشتیبانی نمی‌شود"
-
-#. 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.
-#. Translators: This is an error message when trying to find
-#. * the enclosing (user visible) mount of a file, but none
-#. * exists.
-#: ../gio/gfile.c:1361
-#: ../gio/glocalfile.c:1070
-#: ../gio/glocalfile.c:1081
-#: ../gio/glocalfile.c:1094
+#. Translators: This is an error message when
+#. * trying to find the enclosing (user visible)
+#. * mount of a file, but none exists.
+#.
+#: gio/gfile.c:1561
 msgid "Containing mount does not exist"
 msgstr ""
 
-#: ../gio/gfile.c:2414
-#: ../gio/glocalfile.c:2289
-msgid "Can't copy over directory"
+#: gio/gfile.c:2608 gio/glocalfile.c:2477
+#, fuzzy
+#| msgid "Can't copy over directory"
+msgid "Can’t copy over directory"
 msgstr "نمی‌توان بر روی شاخه رونوشت کرد"
 
-#: ../gio/gfile.c:2475
-msgid "Can't copy directory over directory"
+#: gio/gfile.c:2668
+#, fuzzy
+#| msgid "Can't copy directory over directory"
+msgid "Can’t copy directory over directory"
 msgstr "نمي‌توان شاخه را بر روی شاخه رونوشت کرد"
 
-#: ../gio/gfile.c:2483
-#: ../gio/glocalfile.c:2298
+#: gio/gfile.c:2676
 msgid "Target file exists"
 msgstr "پرونده مقصد وجود دارد"
 
-#: ../gio/gfile.c:2501
-msgid "Can't recursively copy directory"
+#: gio/gfile.c:2695
+#, fuzzy
+#| msgid "Can't recursively copy directory"
+msgid "Can’t recursively copy directory"
 msgstr "نمی‌توان بطور پی‌درپی شاخه را رونوشت کرد"
 
-#: ../gio/gfile.c:2761
+#: gio/gfile.c:2996
 msgid "Splice not supported"
 msgstr "اتصال پشتیبانی نمی‌شود"
 
-#: ../gio/gfile.c:2765
+#: gio/gfile.c:3000
 #, c-format
 msgid "Error splicing file: %s"
 msgstr "خطا در هنگام اتصال پرونده: %s"
 
-#: ../gio/gfile.c:2912
-msgid "Can't copy special file"
+#: gio/gfile.c:3152
+msgid "Copy (reflink/clone) between mounts is not supported"
+msgstr ""
+
+#: gio/gfile.c:3156
+msgid "Copy (reflink/clone) is not supported or invalid"
+msgstr ""
+
+#: gio/gfile.c:3161
+msgid "Copy (reflink/clone) is not supported or didn’t work"
+msgstr ""
+
+#: gio/gfile.c:3226
+#, fuzzy
+#| msgid "Can't copy special file"
+msgid "Can’t copy special file"
 msgstr "نمی‌توان پرونده خاص را رونوشت کرد"
 
-#: ../gio/gfile.c:3490
+#: gio/gfile.c:4035
 msgid "Invalid symlink value given"
 msgstr ""
 
-#: ../gio/gfile.c:3584
+#: gio/gfile.c:4045 glib/gfileutils.c:2354
+msgid "Symbolic links not supported"
+msgstr "پیوندهای نمادی پشتیبانی نمی‌شوند"
+
+#: gio/gfile.c:4213
 msgid "Trash not supported"
 msgstr "زباله پشتیبانی نمی‌شود"
 
-#: ../gio/gfile.c:3633
-#, c-format
-msgid "File names cannot contain '%c'"
+#: gio/gfile.c:4325
+#, fuzzy, c-format
+#| msgid "File names cannot contain '%c'"
+msgid "File names cannot contain “%c”"
 msgstr "نام پرونده نمی‌تواند حاوی «%c» باشد"
 
-#: ../gio/gfile.c:6067
-#: ../gio/gvolume.c:332
-msgid "volume doesn't implement mount"
-msgstr ""
+#: gio/gfile.c:6806 gio/gvolume.c:364
+#, fuzzy
+#| msgid "volume doesn't implement eject"
+msgid "volume doesn’t implement mount"
+msgstr "جلد قابلیت eject ندارد"
 
-#: ../gio/gfile.c:6178
+#: gio/gfile.c:6920 gio/gfile.c:6968
 msgid "No application is registered as handling this file"
 msgstr "هیچ برنامه‌ای برای مار با این پرونده ثبت نشده است"
 
-#: ../gio/gfileenumerator.c:205
+#: gio/gfileenumerator.c:212
 msgid "Enumerator is closed"
 msgstr ""
 
-#: ../gio/gfileenumerator.c:212
-#: ../gio/gfileenumerator.c:271
-#: ../gio/gfileenumerator.c:371
-#: ../gio/gfileenumerator.c:480
+#: gio/gfileenumerator.c:219 gio/gfileenumerator.c:278 gio/gfileenumerator.c:377 gio/gfileenumerator.c:476
 msgid "File enumerator has outstanding operation"
 msgstr ""
 
-#: ../gio/gfileenumerator.c:361
-#: ../gio/gfileenumerator.c:470
+#: gio/gfileenumerator.c:368 gio/gfileenumerator.c:467
 msgid "File enumerator is already closed"
 msgstr ""
 
-#: ../gio/gfileicon.c:237
-#, c-format
-msgid "Can't handle version %d of GFileIcon encoding"
-msgstr ""
+#: gio/gfileicon.c:250
+#, fuzzy, c-format
+#| msgid "Can't handle version %d of GThemedIcon encoding"
+msgid "Can’t handle version %d of GFileIcon encoding"
+msgstr "نمی‌توان با رمزنگاری نسخه %Id GThemedIcon را کار کرد"
 
-#: ../gio/gfileicon.c:247
+#: gio/gfileicon.c:260
 msgid "Malformed input data for GFileIcon"
 msgstr ""
 
-#: ../gio/gfileinputstream.c:154
-#: ../gio/gfileinputstream.c:420
-#: ../gio/gfileiostream.c:170
-#: ../gio/gfileoutputstream.c:169
-#: ../gio/gfileoutputstream.c:523
-msgid "Stream doesn't support query_info"
+#: 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"
 msgstr ""
 
-#: ../gio/gfileinputstream.c:335
-#: ../gio/gfileiostream.c:387
-#: ../gio/gfileoutputstream.c:381
+#: gio/gfileinputstream.c:325 gio/gfileiostream.c:379 gio/gfileoutputstream.c:371
 msgid "Seek not supported on stream"
 msgstr ""
 
-#: ../gio/gfileinputstream.c:379
+#: gio/gfileinputstream.c:369
 msgid "Truncate not allowed on input stream"
 msgstr ""
 
-#: ../gio/gfileiostream.c:463
-#: ../gio/gfileoutputstream.c:457
+#: gio/gfileiostream.c:455 gio/gfileoutputstream.c:447
 msgid "Truncate not supported on stream"
 msgstr ""
 
-#: ../gio/gicon.c:284
+#: gio/ghttpproxy.c:91 gio/gresolver.c:443 gio/gresolver.c:596 glib/gconvert.c:1825
+msgid "Invalid hostname"
+msgstr "نام میزبان نامعتبر"
+
+#: gio/ghttpproxy.c:143
+msgid "Bad HTTP proxy reply"
+msgstr ""
+
+#: gio/ghttpproxy.c:159
+#, fuzzy
+#| msgid "The connection is closed"
+msgid "HTTP proxy connection not allowed"
+msgstr "اتصال بسته شده است"
+
+#: gio/ghttpproxy.c:164
+msgid "HTTP proxy authentication failed"
+msgstr ""
+
+#: gio/ghttpproxy.c:167
+msgid "HTTP proxy authentication required"
+msgstr ""
+
+#: gio/ghttpproxy.c:171
+#, fuzzy, c-format
+#| msgid "The connection is closed"
+msgid "HTTP proxy connection failed: %i"
+msgstr "اتصال بسته شده است"
+
+#: gio/ghttpproxy.c:266
+msgid "HTTP proxy response too big"
+msgstr ""
+
+#: gio/ghttpproxy.c:283
+msgid "HTTP proxy server closed connection unexpectedly."
+msgstr ""
+
+#: gio/gicon.c:298
 #, c-format
 msgid "Wrong number of tokens (%d)"
 msgstr ""
 
-#: ../gio/gicon.c:304
+#: gio/gicon.c:318
 #, c-format
 msgid "No type for class name %s"
 msgstr ""
 
-#: ../gio/gicon.c:314
+#: gio/gicon.c:328
 #, c-format
 msgid "Type %s does not implement the GIcon interface"
 msgstr ""
 
-#: ../gio/gicon.c:325
+#: gio/gicon.c:339
 #, c-format
 msgid "Type %s is not classed"
 msgstr ""
 
-#: ../gio/gicon.c:339
+#: gio/gicon.c:353
 #, c-format
 msgid "Malformed version number: %s"
 msgstr ""
 
-#: ../gio/gicon.c:353
+#: gio/gicon.c:367
 #, c-format
 msgid "Type %s does not implement from_tokens() on the GIcon interface"
 msgstr ""
 
-#: ../gio/gicon.c:430
-msgid "Can't handle the supplied version the icon encoding"
-msgstr ""
+#: gio/gicon.c:469
+#, fuzzy
+#| msgid "Can't handle version %d of GThemedIcon encoding"
+msgid "Can’t handle the supplied version of the icon encoding"
+msgstr "نمی‌توان با رمزنگاری نسخه %Id GThemedIcon را کار کرد"
 
-#: ../gio/ginetaddressmask.c:184
+#: gio/ginetaddressmask.c:182
 msgid "No address specified"
 msgstr "هیچ آدرسی مشخص نشده است"
 
-#: ../gio/ginetaddressmask.c:192
+#: gio/ginetaddressmask.c:190
 #, c-format
 msgid "Length %u is too long for address"
 msgstr ""
 
-#: ../gio/ginetaddressmask.c:225
+#: gio/ginetaddressmask.c:223
 msgid "Address has bits set beyond prefix length"
 msgstr ""
 
-#: ../gio/ginetaddressmask.c:304
+#: gio/ginetaddressmask.c:300
 #, fuzzy, c-format
-msgid "Could not parse '%s' as IP address mask"
+msgid "Could not parse “%s” as IP address mask"
 msgstr "نمی‌توان آدرس محلی را دریافت کرد: %s"
 
-#: ../gio/ginetsocketaddress.c:206
-#: ../gio/ginetsocketaddress.c:223
-#: ../gio/gunixsocketaddress.c:221
+#: gio/ginetsocketaddress.c:203 gio/ginetsocketaddress.c:220 gio/gnativesocketaddress.c:109
+#: gio/gunixsocketaddress.c:221
 msgid "Not enough space for socket address"
 msgstr ""
 
-#: ../gio/ginetsocketaddress.c:238
+#: gio/ginetsocketaddress.c:235
 msgid "Unsupported socket address"
 msgstr ""
 
-#: ../gio/ginputstream.c:194
-msgid "Input stream doesn't implement read"
-msgstr ""
+#: gio/ginputstream.c:188
+#, fuzzy
+msgid "Input stream doesn’t implement read"
+msgstr "جلد قابلیت eject ندارد"
 
 #. Translators: This is an error you get if there is already an
 #. * operation running against this stream when you try to start
@@ -1167,872 +1547,1897 @@ msgstr ""
 #. 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:898
-#: ../gio/giostream.c:302
-#: ../gio/goutputstream.c:1238
+#: gio/ginputstream.c:1249 gio/giostream.c:310 gio/goutputstream.c:2208
 msgid "Stream has outstanding operation"
 msgstr ""
 
-#: ../gio/glib-compile-resources.c:144
-#: ../gio/glib-compile-schemas.c:1449
-#, c-format
-msgid "Element <%s> not allowed inside <%s>"
-msgstr ""
-
-#: ../gio/glib-compile-resources.c:148
-#: ../gio/glib-compile-schemas.c:1453
-#, c-format
-msgid "Element <%s> not allowed at toplevel"
-msgstr ""
+#: gio/gio-tool.c:160
+msgid "Copy with file"
+msgstr "رونوشت همراه پرونده"
 
-#: ../gio/glib-compile-resources.c:235
-#, c-format
-msgid "File %s appears multiple times in the resource"
+#: gio/gio-tool.c:164
+msgid "Keep with file when moved"
 msgstr ""
 
-#: ../gio/glib-compile-resources.c:248
-#, c-format
-msgid "Failed to locate '%s' in any source directory"
+#: gio/gio-tool.c:205
+msgid "“version” takes no arguments"
 msgstr ""
 
-#: ../gio/glib-compile-resources.c:259
-#, fuzzy, c-format
-msgid "Failed to locate '%s' in current directory"
-msgstr "تغییر به شاخهٔ «%s» شکست خورد (%s)"
+#: gio/gio-tool.c:207 gio/gio-tool.c:223 glib/goption.c:869
+msgid "Usage:"
+msgstr "روش استفاده:"
 
-#: ../gio/glib-compile-resources.c:287
-#, fuzzy, c-format
-msgid "Unknown proprocessing options \"%s\""
-msgstr "گزینهٔ نامعلوم %s"
+#: gio/gio-tool.c:210
+msgid "Print version information and exit."
+msgstr ""
 
-#: ../gio/glib-compile-resources.c:305
-#: ../gio/glib-compile-resources.c:363
-#, c-format
-msgid "Failed to create temp file: %s"
-msgstr "ساخت پرونده موقت شکست خورد: %s"
+#: gio/gio-tool.c:226
+msgid "Commands:"
+msgstr "دستورات:"
 
-#: ../gio/glib-compile-resources.c:335
-msgid "Error processing input file with xmllint"
+#: gio/gio-tool.c:229
+msgid "Concatenate files to standard output"
 msgstr ""
 
-#: ../gio/glib-compile-resources.c:390
-msgid "Error processing input file with to-pixdata"
+#: gio/gio-tool.c:230
+msgid "Copy one or more files"
 msgstr ""
 
-#: ../gio/glib-compile-resources.c:403
-#, c-format
-msgid "Error reading file %s: %s"
-msgstr "خطا در خواندن پرونده %s: %s"
+#: gio/gio-tool.c:231
+msgid "Show information about locations"
+msgstr ""
 
-#: ../gio/glib-compile-resources.c:423
-#, c-format
-msgid "Error compressing file %s"
-msgstr "خطا در هنگام فشرده‌سازی پرونده %s"
+#: gio/gio-tool.c:232
+msgid "Launch an application from a desktop file"
+msgstr ""
 
-#: ../gio/glib-compile-resources.c:487
-#: ../gio/glib-compile-schemas.c:1561
-#, c-format
-msgid "text may not appear inside <%s>"
+#: gio/gio-tool.c:233
+msgid "List the contents of locations"
 msgstr ""
 
-#: ../gio/glib-compile-resources.c:610
-msgid "name of the output file"
-msgstr "نام پرونده خروجی"
+#: gio/gio-tool.c:234
+msgid "Get or set the handler for a mimetype"
+msgstr ""
 
-#: ../gio/glib-compile-resources.c:610
-#: ../gio/glib-compile-resources.c:643
-msgid "FILE"
-msgstr "FILE"
+#: gio/gio-tool.c:235
+#, fuzzy
+#| msgid "Can't open directory"
+msgid "Create directories"
+msgstr "نمی‌توان شاخه را باز کرد"
 
-#: ../gio/glib-compile-resources.c:611
-msgid "The directories where files are to be read from (default to current directory)"
+#: gio/gio-tool.c:236
+msgid "Monitor files and directories for changes"
 msgstr ""
 
-#: ../gio/glib-compile-resources.c:611
-#: ../gio/glib-compile-schemas.c:1989
-#: ../gio/glib-compile-schemas.c:2019
-msgid "DIRECTORY"
-msgstr "DIRECTORY"
-
-#: ../gio/glib-compile-resources.c:612
-msgid "Generate output in the format selected for by the target filename extension"
+#: gio/gio-tool.c:237
+msgid "Mount or unmount the locations"
 msgstr ""
 
-#: ../gio/glib-compile-resources.c:613
-msgid "Generate source header"
+#: gio/gio-tool.c:238
+msgid "Move one or more files"
 msgstr ""
 
-#: ../gio/glib-compile-resources.c:614
-msgid "Generate sourcecode used to link in the resource file into your code"
+#: gio/gio-tool.c:239
+msgid "Open files with the default application"
 msgstr ""
 
-#: ../gio/glib-compile-resources.c:615
-msgid "Generate dependency list"
+#: gio/gio-tool.c:240
+msgid "Rename a file"
+msgstr "تغییر نام یک پرونده"
+
+#: gio/gio-tool.c:241
+msgid "Delete one or more files"
+msgstr "حذف یک یا چند پرونده"
+
+#: gio/gio-tool.c:242
+msgid "Read from standard input and save"
 msgstr ""
 
-#: ../gio/glib-compile-resources.c:616
-msgid "Don't automatically create and register resource"
+#: gio/gio-tool.c:243
+msgid "Set a file attribute"
 msgstr ""
 
-#: ../gio/glib-compile-resources.c:617
-msgid "C identifier name used for the generated source code"
+#: gio/gio-tool.c:244
+msgid "Move files or directories to the trash"
 msgstr ""
 
-#: ../gio/glib-compile-resources.c:646
-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."
+#: gio/gio-tool.c:245
+msgid "Lists the contents of locations in a tree"
 msgstr ""
 
-#: ../gio/glib-compile-resources.c:662
+#: gio/gio-tool.c:247
 #, c-format
-msgid "You should give exactly one file name\n"
+msgid "Use %s to get detailed help.\n"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:774
-msgid "empty names are not permitted"
-msgstr "نام‌های خالی مجاز نیستند"
+#: gio/gio-tool-cat.c:87
+#, fuzzy
+#| msgid "Error writing to file: %s"
+msgid "Error writing to stdout"
+msgstr "خطا در هنگام نوشتن در پرونده: %s"
 
-#: ../gio/glib-compile-schemas.c:784
-#, c-format
-msgid "invalid name '%s': names must begin with a lowercase letter"
-msgstr ""
+#. Translators: commandline placeholder
+#: gio/gio-tool-cat.c:133 gio/gio-tool-info.c:340 gio/gio-tool-list.c:172 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:204 gio/gio-tool-mount.c:1199 gio/gio-tool-open.c:70 gio/gio-tool-remove.c:48
+#: gio/gio-tool-rename.c:45 gio/gio-tool-set.c:89 gio/gio-tool-trash.c:220 gio/gio-tool-tree.c:239
+#, fuzzy
+#| msgid "SECTION"
+msgid "LOCATION"
+msgstr "SECTION"
 
-#: ../gio/glib-compile-schemas.c:796
-#, c-format
-msgid "invalid name '%s': invalid character '%c'; only lowercase letters, numbers and dash ('-') are permitted."
+#: gio/gio-tool-cat.c:138
+msgid "Concatenate files and print to standard output."
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:805
-#, c-format
-msgid "invalid name '%s': two successive dashes ('--') are not permitted."
+#: gio/gio-tool-cat.c:140
+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/glib-compile-schemas.c:814
-#, c-format
-msgid "invalid name '%s': the last character may not be a dash ('-')."
+#: gio/gio-tool-cat.c:162 gio/gio-tool-info.c:371 gio/gio-tool-mkdir.c:76 gio/gio-tool-monitor.c:229
+#: gio/gio-tool-mount.c:1250 gio/gio-tool-open.c:96 gio/gio-tool-remove.c:72 gio/gio-tool-trash.c:303
+msgid "No locations given"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:822
-#, c-format
-msgid "invalid name '%s': maximum length is 1024"
-msgstr ""
+#: gio/gio-tool-copy.c:43 gio/gio-tool-move.c:38
+#, fuzzy
+#| msgid "Target file is a directory"
+msgid "No target directory"
+msgstr "پرونده هدف یک شاخه است"
 
-#: ../gio/glib-compile-schemas.c:891
-#, c-format
-msgid "<child name='%s'> already specified"
-msgstr ""
+#: gio/gio-tool-copy.c:44 gio/gio-tool-move.c:39
+msgid "Show progress"
+msgstr "نمایش پیشرفت"
 
-#: ../gio/glib-compile-schemas.c:917
-msgid "cannot add keys to a 'list-of' schema"
+#: gio/gio-tool-copy.c:45 gio/gio-tool-move.c:40
+msgid "Prompt before overwrite"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:928
-#, c-format
-msgid "<key name='%s'> already specified"
+#: gio/gio-tool-copy.c:46
+msgid "Preserve all attributes"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:946
-#, c-format
-msgid "<key name='%s'> shadows <key name='%s'> in <schema id='%s'>; use <override> to modify value"
-msgstr ""
+#: gio/gio-tool-copy.c:47 gio/gio-tool-move.c:41 gio/gio-tool-save.c:49
+#, fuzzy
+#| msgid "Backup file creation failed"
+msgid "Backup existing destination files"
+msgstr "ساخت پرونده پشتیبان شکست خورد"
 
-#: ../gio/glib-compile-schemas.c:957
-#, c-format
-msgid "exactly one of 'type', 'enum' or 'flags' must be specified as an attribute to <key>"
+#: gio/gio-tool-copy.c:48
+msgid "Never follow symbolic links"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:976
-#, c-format
-msgid "<%s id='%s'> not (yet) defined."
+#: gio/gio-tool-copy.c:49
+msgid "Use default permissions for the destination"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:991
+#: gio/gio-tool-copy.c:74 gio/gio-tool-move.c:67
 #, c-format
-msgid "invalid GVariant type string '%s'"
+msgid "Transferred %s out of %s (%s/s)"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1021
-msgid "<override> given but schema isn't extending anything"
+#. Translators: commandline placeholder
+#: gio/gio-tool-copy.c:100 gio/gio-tool-move.c:94
+msgid "SOURCE"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1034
-#, c-format
-msgid "no <key name='%s'> to override"
+#. Translators: commandline placeholder
+#: gio/gio-tool-copy.c:100 gio/gio-tool-move.c:94 gio/gio-tool-save.c:160
+msgid "DESTINATION"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1042
-#, c-format
-msgid "<override name='%s'> already specified"
+#: gio/gio-tool-copy.c:105
+msgid "Copy one or more files from SOURCE to DESTINATION."
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1113
-#, c-format
-msgid "<schema id='%s'> already specified"
+#: gio/gio-tool-copy.c:107
+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 ""
 
-#: ../gio/glib-compile-schemas.c:1125
+#: gio/gio-tool-copy.c:149
+#, fuzzy, c-format
+#| msgid "Destination name to monitor"
+msgid "Destination %s is not a directory"
+msgstr "نام مقصد جهت پایش"
+
+#: gio/gio-tool-copy.c:196 gio/gio-tool-move.c:186
 #, c-format
-msgid "<schema id='%s'> extends not yet existing schema '%s'"
+msgid "%s: overwrite “%s”? "
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1141
-#, c-format
-msgid "<schema id='%s'> is list of not yet existing schema '%s'"
+#: gio/gio-tool-info.c:37
+msgid "List writable attributes"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1149
-#, c-format
-msgid "Can not be a list of a schema with a path"
-msgstr "نمی‌توان با یک مسیر فهرست یک شِما بود"
+#: gio/gio-tool-info.c:38
+#, fuzzy
+#| msgid "Error getting filesystem info: %s"
+msgid "Get file system info"
+msgstr "خطا در دریافت اطلاعات سیستم‌پرونده‌: %s"
 
-#: ../gio/glib-compile-schemas.c:1159
-#, c-format
-msgid "Can not extend a schema with a path"
+#: gio/gio-tool-info.c:39 gio/gio-tool-list.c:36
+msgid "The attributes to get"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1169
-#, c-format
-msgid "<schema id='%s'> is a list, extending <schema id='%s'> which is not a list"
+#: gio/gio-tool-info.c:39 gio/gio-tool-list.c:36
+msgid "ATTRIBUTES"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1179
-#, c-format
-msgid "<schema id='%s' list-of='%s'> extends <schema id='%s' list-of='%s'> but '%s' does not extend '%s'"
+#: gio/gio-tool-info.c:40 gio/gio-tool-list.c:39 gio/gio-tool-set.c:34
+msgid "Don’t follow symbolic links"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1196
-#, c-format
-msgid "a path, if given, must begin and end with a slash"
-msgstr "یک مسیر، اگر داده شود، باید با یک خط مورب شروع و خاتمه یابد"
+#: gio/gio-tool-info.c:78
+msgid "attributes:\n"
+msgstr "مشخصه‌ها:\n"
 
-#: ../gio/glib-compile-schemas.c:1203
-#, c-format
-msgid "the path of a list must end with ':/'"
-msgstr "مسیر یک فهرست باید با «:/» خاتمه پیدا کند"
+#. Translators: This is a noun and represents and attribute of a file
+#: gio/gio-tool-info.c:134
+#, fuzzy, c-format
+msgid "display name: %s\n"
+msgstr "نام نمایش: %s\n"
 
-#: ../gio/glib-compile-schemas.c:1229
-#, c-format
-msgid "<%s id='%s'> already specified"
-msgstr "<%s id='%s'> از قبل مشخص شده است"
+#. Translators: This is a noun and represents and attribute of a file
+#: gio/gio-tool-info.c:139
+#, fuzzy, c-format
+msgid "edit name: %s\n"
+msgstr "نام ویرایش: %s\n"
 
-#. Translators: Do not translate "--strict".
-#: ../gio/glib-compile-schemas.c:1747
-#: ../gio/glib-compile-schemas.c:1818
-#: ../gio/glib-compile-schemas.c:1894
+#: gio/gio-tool-info.c:145
 #, c-format
-msgid "--strict was specified; exiting.\n"
-msgstr ""
+msgid "name: %s\n"
+msgstr "نام: %s\n"
 
-#: ../gio/glib-compile-schemas.c:1755
+#: gio/gio-tool-info.c:152
 #, c-format
-msgid "This entire file has been ignored.\n"
-msgstr "تمام پرونده نادیده گرفته شده است.\n"
+msgid "type: %s\n"
+msgstr "گونه: %s\n"
 
-#: ../gio/glib-compile-schemas.c:1814
-#, c-format
-msgid "Ignoring this file.\n"
-msgstr "نادیده گرفتن این پرونده.\n"
+#: gio/gio-tool-info.c:158
+msgid "size: "
+msgstr "اندازه: "
 
-#: ../gio/glib-compile-schemas.c:1854
-#, c-format
-msgid "No such key '%s' in schema '%s' as specified in override file '%s'"
-msgstr ""
+#: gio/gio-tool-info.c:163
+msgid "hidden\n"
+msgstr "مخفی\n"
 
-#: ../gio/glib-compile-schemas.c:1860
-#: ../gio/glib-compile-schemas.c:1918
-#: ../gio/glib-compile-schemas.c:1946
-#, c-format
-msgid "; ignoring override for this key.\n"
-msgstr ""
+#: gio/gio-tool-info.c:166
+#, fuzzy, c-format
+#| msgid "Error: %s\n"
+msgid "uri: %s\n"
+msgstr "خطا: %s\n"
 
-#: ../gio/glib-compile-schemas.c:1864
-#: ../gio/glib-compile-schemas.c:1922
-#: ../gio/glib-compile-schemas.c:1950
+#: gio/gio-tool-info.c:172
 #, c-format
-msgid " and --strict was specified; exiting.\n"
+msgid "local path: %s\n"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1880
+#: gio/gio-tool-info.c:205
 #, c-format
-msgid "error parsing key '%s' in schema '%s' as specified in override file '%s': %s.  "
+msgid "unix mount: %s%s %s %s %s\n"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1890
-#, c-format
-msgid "Ignoring override for this key.\n"
+#: gio/gio-tool-info.c:286
+msgid "Settable attributes:\n"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1908
-#, c-format
-msgid "override for key '%s' in schema '%s' in override file '%s' is out of the range given in the schema"
+#: gio/gio-tool-info.c:310
+msgid "Writable attribute namespaces:\n"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1936
-#, c-format
-msgid "override for key '%s' in schema '%s' in override file '%s' is not in the list of valid choices"
+#: gio/gio-tool-info.c:345
+msgid "Show information about locations."
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1989
-msgid "where to store the gschemas.compiled file"
+#: gio/gio-tool-info.c:347
+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 ""
 
-#: ../gio/glib-compile-schemas.c:1990
-msgid "Abort on any errors in schemas"
-msgstr "قطع کردن با رخدادِ هر نوع خطا در شِماها"
+#. Translators: commandline placeholder
+#: gio/gio-tool-launch.c:54
+msgid "DESKTOP-FILE [FILE-ARG …]"
+msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1991
-msgid "Do not write the gschema.compiled file"
-msgstr "بر روی پرونده‌ی gschema.compiled ننویس"
+#: gio/gio-tool-launch.c:57
+msgid "Launch an application from a desktop file, passing optional filename arguments to it."
+msgstr ""
 
-#: ../gio/glib-compile-schemas.c:1992
-msgid "Do not enforce key name restrictions"
+#: gio/gio-tool-launch.c:77
+msgid "No desktop file given"
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:2022
-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."
+#: gio/gio-tool-launch.c:85
+#, fuzzy
+#| msgid "There is no GCredentials support for your platform"
+msgid "The launch command is not currently supported on this platform"
+msgstr "پشتیبانی از GCredentials در پلتفرم شما وجود ندارد"
+
+#: gio/gio-tool-launch.c:98
+#, fuzzy, c-format
+#| msgid "Unable to create trash dir %s: %s"
+msgid "Unable to load ‘%s‘: %s"
+msgstr "نمی‌توان شاخه زباله‌دان %s را ساخت: %s"
+
+#: gio/gio-tool-launch.c:107
+#, c-format
+msgid "Unable to load application information for ‘%s‘"
+msgstr ""
+
+#: gio/gio-tool-launch.c:119
+#, fuzzy, c-format
+#| msgid "Error launching application: %s"
+msgid "Unable to launch application ‘%s’: %s"
+msgstr "خطا در راه‌اندازی برنامه: %s"
+
+#: gio/gio-tool-list.c:37 gio/gio-tool-tree.c:32
+msgid "Show hidden files"
+msgstr ""
+
+#: gio/gio-tool-list.c:38
+msgid "Use a long listing format"
+msgstr ""
+
+#: gio/gio-tool-list.c:40
+msgid "Print display names"
+msgstr ""
+
+#: gio/gio-tool-list.c:41
+msgid "Print full URIs"
+msgstr ""
+
+#: gio/gio-tool-list.c:177
+msgid "List the contents of the locations."
+msgstr ""
+
+#: gio/gio-tool-list.c:179
+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 ""
+
+#. Translators: commandline placeholder
+#: gio/gio-tool-mime.c:71
+msgid "MIMETYPE"
+msgstr ""
+
+#: gio/gio-tool-mime.c:71
+msgid "HANDLER"
+msgstr ""
+
+#: gio/gio-tool-mime.c:76
+msgid "Get or set the handler for a mimetype."
+msgstr ""
+
+#: 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 ""
+
+#: gio/gio-tool-mime.c:100
+msgid "Must specify a single mimetype, and maybe a handler"
+msgstr ""
+
+#: gio/gio-tool-mime.c:116
+#, c-format
+msgid "No default applications for “%s”\n"
+msgstr ""
+
+#: gio/gio-tool-mime.c:122
+#, c-format
+msgid "Default application for “%s”: %s\n"
+msgstr ""
+
+#: gio/gio-tool-mime.c:127
+msgid "Registered applications:\n"
+msgstr ""
+
+#: gio/gio-tool-mime.c:129
+#, fuzzy
+#| msgid "Can't find application"
+msgid "No registered applications\n"
+msgstr "نمی‌توان برنامه را پیدا کرد"
+
+#: gio/gio-tool-mime.c:140
+msgid "Recommended applications:\n"
+msgstr ""
+
+#: gio/gio-tool-mime.c:142
+#, fuzzy
+#| msgid "Can't find application"
+msgid "No recommended applications\n"
+msgstr "نمی‌توان برنامه را پیدا کرد"
+
+#: gio/gio-tool-mime.c:162
+#, fuzzy, c-format
+#| msgid "Failed to read from file '%s': %s"
+msgid "Failed to load info for handler “%s”"
+msgstr "خواندن از پروندهٔ «‎%s» شکست خورد: %s"
+
+#: gio/gio-tool-mime.c:168
+#, c-format
+msgid "Failed to set “%s” as the default handler for “%s”: %s\n"
+msgstr ""
+
+#: gio/gio-tool-mkdir.c:31
+#, fuzzy
+#| msgid "Can't open directory"
+msgid "Create parent directories"
+msgstr "نمی‌توان شاخه را باز کرد"
+
+#: gio/gio-tool-mkdir.c:52
+#, fuzzy
+#| msgid "Can't open directory"
+msgid "Create directories."
+msgstr "نمی‌توان شاخه را باز کرد"
+
+#: 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 ""
+
+#: gio/gio-tool-monitor.c:37
+msgid "Monitor a directory (default: depends on type)"
+msgstr ""
+
+#: gio/gio-tool-monitor.c:39
+msgid "Monitor a file (default: depends on type)"
+msgstr ""
+
+#: gio/gio-tool-monitor.c:41
+msgid "Monitor a file directly (notices changes made via hardlinks)"
+msgstr ""
+
+#: gio/gio-tool-monitor.c:43
+msgid "Monitors a file directly, but doesn’t report changes"
+msgstr ""
+
+#: gio/gio-tool-monitor.c:45
+msgid "Report moves and renames as simple deleted/created events"
+msgstr ""
+
+#: gio/gio-tool-monitor.c:47
+msgid "Watch for mount events"
+msgstr ""
+
+#: gio/gio-tool-monitor.c:209
+msgid "Monitor files or directories for changes."
+msgstr ""
+
+#: gio/gio-tool-mount.c:63
+msgid "Mount as mountable"
+msgstr ""
+
+#: gio/gio-tool-mount.c:64
+msgid "Mount volume with device file, or other identifier"
+msgstr ""
+
+#: gio/gio-tool-mount.c:64
+msgid "ID"
+msgstr "شناسه"
+
+#: gio/gio-tool-mount.c:65
+msgid "Unmount"
+msgstr "پیاده کردن"
+
+#: gio/gio-tool-mount.c:66
+msgid "Eject"
+msgstr "بیرون دادن"
+
+#: gio/gio-tool-mount.c:67
+msgid "Stop drive with device file"
+msgstr ""
+
+#: gio/gio-tool-mount.c:67
+msgid "DEVICE"
+msgstr ""
+
+#: gio/gio-tool-mount.c:68
+msgid "Unmount all mounts with the given scheme"
+msgstr ""
+
+#: gio/gio-tool-mount.c:68
+msgid "SCHEME"
+msgstr ""
+
+#: gio/gio-tool-mount.c:69
+msgid "Ignore outstanding file operations when unmounting or ejecting"
+msgstr ""
+
+#: gio/gio-tool-mount.c:70
+msgid "Use an anonymous user when authenticating"
+msgstr ""
+
+#. Translator: List here is a verb as in 'List all mounts'
+#: gio/gio-tool-mount.c:72
+msgid "List"
+msgstr "سیاهه"
+
+#: gio/gio-tool-mount.c:73
+msgid "Monitor events"
+msgstr ""
+
+#: gio/gio-tool-mount.c:74
+#, fuzzy
+#| msgid "Show help options"
+msgid "Show extra information"
+msgstr "نمایش گزینه‌های راهنما"
+
+#: gio/gio-tool-mount.c:75
+msgid "The numeric PIM when unlocking a VeraCrypt volume"
+msgstr ""
+
+#: gio/gio-tool-mount.c:75
+#, fuzzy
+#| msgctxt "GDateTime"
+#| msgid "PM"
+msgid "PIM"
+msgstr "ب‌ظ"
+
+#: gio/gio-tool-mount.c:76
+msgid "Mount a TCRYPT hidden volume"
+msgstr ""
+
+#: gio/gio-tool-mount.c:77
+msgid "Mount a TCRYPT system volume"
+msgstr ""
+
+#: gio/gio-tool-mount.c:265 gio/gio-tool-mount.c:297
+msgid "Anonymous access denied"
+msgstr ""
+
+#: gio/gio-tool-mount.c:522
+msgid "No drive for device file"
+msgstr ""
+
+#: gio/gio-tool-mount.c:1014
+msgid "No volume for given ID"
+msgstr ""
+
+#: gio/gio-tool-mount.c:1203
+msgid "Mount or unmount the locations."
+msgstr ""
+
+#: gio/gio-tool-move.c:42
+msgid "Don’t use copy and delete fallback"
+msgstr ""
+
+#: gio/gio-tool-move.c:99
+msgid "Move one or more files from SOURCE to DEST."
+msgstr ""
+
+#: 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 ""
+
+#: gio/gio-tool-move.c:143
+#, fuzzy, c-format
+#| msgid "Target file is a directory"
+msgid "Target %s is not a directory"
+msgstr "پرونده هدف یک شاخه است"
+
+#: gio/gio-tool-open.c:75
+msgid ""
+"Open files with the default application that\n"
+"is registered to handle files of this type."
+msgstr ""
+
+#: gio/gio-tool-remove.c:31 gio/gio-tool-trash.c:33
+msgid "Ignore nonexistent files, never prompt"
+msgstr ""
+
+#: gio/gio-tool-remove.c:52
+msgid "Delete the given files."
+msgstr ""
+
+#: gio/gio-tool-rename.c:45
+msgid "NAME"
+msgstr ""
+
+#: gio/gio-tool-rename.c:50
+msgid "Rename a file."
+msgstr ""
+
+#: gio/gio-tool-rename.c:70
+#, fuzzy
+#| msgid "Missing argument for %s"
+msgid "Missing argument"
+msgstr "‏%s یک آرگومان کم دارد"
+
+#: gio/gio-tool-rename.c:76 gio/gio-tool-save.c:190 gio/gio-tool-set.c:137
+msgid "Too many arguments"
+msgstr ""
+
+#: gio/gio-tool-rename.c:95
+#, c-format
+msgid "Rename successful. New uri: %s\n"
+msgstr ""
+
+#: gio/gio-tool-save.c:50
+msgid "Only create if not existing"
+msgstr ""
+
+#: gio/gio-tool-save.c:51
+msgid "Append to end of file"
+msgstr ""
+
+#: gio/gio-tool-save.c:52
+msgid "When creating, restrict access to the current user"
+msgstr ""
+
+#: gio/gio-tool-save.c:53
+msgid "When replacing, replace as if the destination did not exist"
+msgstr ""
+
+#. 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 ""
+
+#. 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 ""
+
+#: gio/gio-tool-save.c:57
+msgid "ETAG"
+msgstr ""
+
+#: gio/gio-tool-save.c:113
+#, fuzzy
+msgid "Error reading from standard input"
+msgstr "خطا در خواندن پروندهٔ «‎%s»‏: %s"
+
+#. Translators: The "etag" is a token allowing to verify whether a file has been modified
+#: gio/gio-tool-save.c:139
+msgid "Etag not available\n"
+msgstr ""
+
+#: gio/gio-tool-save.c:163
+msgid "Read from standard input and save to DEST."
+msgstr ""
+
+#: gio/gio-tool-save.c:183
+msgid "No destination given"
+msgstr ""
+
+#: gio/gio-tool-set.c:33
+msgid "Type of the attribute"
+msgstr ""
+
+#: gio/gio-tool-set.c:33
+msgid "TYPE"
+msgstr ""
+
+#: gio/gio-tool-set.c:89
+msgid "ATTRIBUTE"
+msgstr ""
+
+#: gio/gio-tool-set.c:89
+msgid "VALUE"
+msgstr ""
+
+#: gio/gio-tool-set.c:93
+msgid "Set a file attribute of LOCATION."
+msgstr ""
+
+#: gio/gio-tool-set.c:113
+#, fuzzy
+#| msgid "Error: Destination is not specified\n"
+msgid "Location not specified"
+msgstr "خطا: مقصد مشخص نشده است\n"
+
+#: gio/gio-tool-set.c:120
+msgid "Attribute not specified"
+msgstr ""
+
+#: gio/gio-tool-set.c:130
+#, fuzzy
+#| msgid "No address specified"
+msgid "Value not specified"
+msgstr "هیچ آدرسی مشخص نشده است"
+
+#: gio/gio-tool-set.c:180
+#, fuzzy, c-format
+#| msgid "Invalid attribute type (string expected)"
+msgid "Invalid attribute type “%s”"
+msgstr "نوع مشخصه نامعتبر است (رشته مورد انتظار بود)"
+
+#: gio/gio-tool-trash.c:34
+msgid "Empty the trash"
+msgstr ""
+
+#: gio/gio-tool-trash.c:35
+msgid "List files in the trash with their original locations"
+msgstr ""
+
+#: gio/gio-tool-trash.c:36
+msgid "Restore a file from trash to its original location (possibly recreating the directory)"
+msgstr ""
+
+#: gio/gio-tool-trash.c:106
+#, fuzzy
+#| msgid "Unable to find terminal required for application"
+msgid "Unable to find original path"
+msgstr "نمی‌توان پایانه‌ی لازم برای این برنامه را پیدا کرد"
+
+#: gio/gio-tool-trash.c:123
+#, fuzzy
+#| msgid "Unable to create socket: %s"
+msgid "Unable to recreate original location: "
+msgstr "نمی‌توان سوکت را ساخت: %s"
+
+#: gio/gio-tool-trash.c:136
+msgid "Unable to move file to its original location: "
+msgstr ""
+
+#: gio/gio-tool-trash.c:225
+msgid "Move/Restore files or directories to the trash."
+msgstr ""
+
+#: gio/gio-tool-trash.c:227
+msgid ""
+"Note: for --restore switch, if the original location of the trashed file \n"
+"already exists, it will not be overwritten unless --force is set."
+msgstr ""
+
+#: gio/gio-tool-trash.c:258
+msgid "Location given doesn't start with trash:///"
+msgstr ""
+
+#: gio/gio-tool-tree.c:33
+msgid "Follow symbolic links, mounts and shortcuts"
+msgstr ""
+
+#: gio/gio-tool-tree.c:244
+msgid "List contents of directories in a tree-like format."
+msgstr ""
+
+#: gio/glib-compile-resources.c:140 gio/glib-compile-schemas.c:1514
+#, c-format
+msgid "Element <%s> not allowed inside <%s>"
+msgstr ""
+
+#: gio/glib-compile-resources.c:144
+#, c-format
+msgid "Element <%s> not allowed at toplevel"
+msgstr ""
+
+#: gio/glib-compile-resources.c:234
+#, c-format
+msgid "File %s appears multiple times in the resource"
+msgstr ""
+
+#: gio/glib-compile-resources.c:245
+#, fuzzy, c-format
+msgid "Failed to locate “%s” in any source directory"
+msgstr "تغییر به شاخهٔ «%s» شکست خورد (%s)"
+
+#: gio/glib-compile-resources.c:256
+#, fuzzy, c-format
+msgid "Failed to locate “%s” in current directory"
+msgstr "تغییر به شاخهٔ «%s» شکست خورد (%s)"
+
+#: gio/glib-compile-resources.c:290
+#, fuzzy, c-format
+msgid "Unknown processing option “%s”"
+msgstr "گزینهٔ نامعلوم %s"
+
+#. Translators: the first %s is a gresource XML attribute,
+#. * the second %s is an environment variable, and the third
+#. * %s is a command line tool
+#.
+#: gio/glib-compile-resources.c:310 gio/glib-compile-resources.c:367 gio/glib-compile-resources.c:424
+#, c-format
+msgid "%s preprocessing requested, but %s is not set, and %s is not in PATH"
+msgstr ""
+
+#: gio/glib-compile-resources.c:457
+#, c-format
+msgid "Error reading file %s: %s"
+msgstr "خطا در خواندن پرونده %s: %s"
+
+#: gio/glib-compile-resources.c:477
+#, c-format
+msgid "Error compressing file %s"
+msgstr "خطا در هنگام فشرده‌سازی پرونده %s"
+
+#: gio/glib-compile-resources.c:541
+#, c-format
+msgid "text may not appear inside <%s>"
+msgstr ""
+
+#: gio/glib-compile-resources.c:737 gio/glib-compile-schemas.c:2172
+msgid "Show program version and exit"
+msgstr ""
+
+#: gio/glib-compile-resources.c:738
+#, fuzzy
+#| msgid "name of the output file"
+msgid "Name of the output file"
+msgstr "نام پرونده خروجی"
+
+#: gio/glib-compile-resources.c:739
+msgid "The directories to load files referenced in FILE from (default: current directory)"
+msgstr ""
+
+#: gio/glib-compile-resources.c:739 gio/glib-compile-schemas.c:2173 gio/glib-compile-schemas.c:2202
+msgid "DIRECTORY"
+msgstr "DIRECTORY"
+
+#: gio/glib-compile-resources.c:740
+msgid "Generate output in the format selected for by the target filename extension"
+msgstr ""
+
+#: gio/glib-compile-resources.c:741
+msgid "Generate source header"
+msgstr ""
+
+#: gio/glib-compile-resources.c:742
+msgid "Generate source code used to link in the resource file into your code"
+msgstr ""
+
+#: gio/glib-compile-resources.c:743
+msgid "Generate dependency list"
+msgstr ""
+
+#: gio/glib-compile-resources.c:744
+msgid "Name of the dependency file to generate"
+msgstr ""
+
+#: gio/glib-compile-resources.c:745
+msgid "Include phony targets in the generated dependency file"
+msgstr ""
+
+#: gio/glib-compile-resources.c:746
+msgid "Don’t automatically create and register resource"
+msgstr ""
+
+#: gio/glib-compile-resources.c:747
+msgid "Don’t export functions; declare them G_GNUC_INTERNAL"
+msgstr ""
+
+#: gio/glib-compile-resources.c:748
+msgid "Don’t embed resource data in the C file; assume it's linked externally instead"
+msgstr ""
+
+#: gio/glib-compile-resources.c:749
+msgid "C identifier name used for the generated source code"
+msgstr ""
+
+#: gio/glib-compile-resources.c:775
+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 ""
+
+#: gio/glib-compile-resources.c:797
+msgid "You should give exactly one file name\n"
+msgstr ""
+
+#: gio/glib-compile-schemas.c:92
+#, c-format
+msgid "nick must be a minimum of 2 characters"
+msgstr ""
+
+#: gio/glib-compile-schemas.c:103
+#, fuzzy, c-format
+#| msgid "Invalid filename %s"
+msgid "Invalid numeric value"
+msgstr "نام‌پرونده نامعتبر: %s"
+
+#: gio/glib-compile-schemas.c:111
+#, fuzzy, c-format
+#| msgid "<%s id='%s'> already specified"
+msgid "<value nick='%s'/> already specified"
+msgstr "<%s id='%s'> از قبل مشخص شده است"
+
+#: gio/glib-compile-schemas.c:119
+#, fuzzy, c-format
+#| msgid "<%s id='%s'> already specified"
+msgid "value='%s' already specified"
+msgstr "<%s id='%s'> از قبل مشخص شده است"
+
+#: gio/glib-compile-schemas.c:133
+#, c-format
+msgid "flags values must have at most 1 bit set"
+msgstr ""
+
+#: gio/glib-compile-schemas.c:158
+#, c-format
+msgid "<%s> must contain at least one <value>"
+msgstr ""
+
+#: gio/glib-compile-schemas.c:314
+#, c-format
+msgid "<%s> is not contained in the specified range"
+msgstr ""
+
+#: gio/glib-compile-schemas.c:326
+#, c-format
+msgid "<%s> is not a valid member of the specified enumerated type"
+msgstr ""
+
+#: gio/glib-compile-schemas.c:332
+#, c-format
+msgid "<%s> contains string not in the specified flags type"
+msgstr ""
+
+#: gio/glib-compile-schemas.c:338
+#, c-format
+msgid "<%s> contains a string not in <choices>"
+msgstr ""
+
+#: gio/glib-compile-schemas.c:372
+msgid "<range/> already specified for this key"
+msgstr ""
+
+#: gio/glib-compile-schemas.c:390
+#, c-format
+msgid "<range> not allowed for keys of type “%s”"
+msgstr ""
+
+#: gio/glib-compile-schemas.c:407
+#, c-format
+msgid "<range> specified minimum is greater than maximum"
+msgstr ""
+
+#: gio/glib-compile-schemas.c:432
+#, c-format
+msgid "unsupported l10n category: %s"
+msgstr ""
+
+#: gio/glib-compile-schemas.c:440
+msgid "l10n requested, but no gettext domain given"
+msgstr ""
+
+#: gio/glib-compile-schemas.c:452
+msgid "translation context given for value without l10n enabled"
+msgstr ""
+
+#: gio/glib-compile-schemas.c:474
+#, c-format
+msgid "Failed to parse <default> value of type “%s”: "
+msgstr ""
+
+#: gio/glib-compile-schemas.c:491
+msgid "<choices> cannot be specified for keys tagged as having an enumerated type"
+msgstr ""
+
+#: gio/glib-compile-schemas.c:500
+#, fuzzy
+#| msgid "<%s id='%s'> already specified"
+msgid "<choices> already specified for this key"
+msgstr "<%s id='%s'> از قبل مشخص شده است"
+
+#: gio/glib-compile-schemas.c:512
+#, c-format
+msgid "<choices> not allowed for keys of type “%s”"
+msgstr ""
+
+#: gio/glib-compile-schemas.c:528
+#, c-format
+msgid "<choice value='%s'/> already given"
+msgstr ""
+
+#: gio/glib-compile-schemas.c:543
+#, c-format
+msgid "<choices> must contain at least one <choice>"
+msgstr ""
+
+#: gio/glib-compile-schemas.c:557
+#, fuzzy
+#| msgid "<%s id='%s'> already specified"
+msgid "<aliases> already specified for this key"
+msgstr "<%s id='%s'> از قبل مشخص شده است"
+
+#: gio/glib-compile-schemas.c:561
+msgid "<aliases> can only be specified for keys with enumerated or flags types or after <choices>"
+msgstr ""
+
+#: gio/glib-compile-schemas.c:580
+#, c-format
+msgid "<alias value='%s'/> given when “%s” is already a member of the enumerated type"
+msgstr ""
+
+#: gio/glib-compile-schemas.c:586
+#, c-format
+msgid "<alias value='%s'/> given when <choice value='%s'/> was already given"
+msgstr ""
+
+#: gio/glib-compile-schemas.c:594
+#, fuzzy, c-format
+#| msgid "<%s id='%s'> already specified"
+msgid "<alias value='%s'/> already specified"
+msgstr "<%s id='%s'> از قبل مشخص شده است"
+
+#: gio/glib-compile-schemas.c:604
+#, c-format
+msgid "alias target “%s” is not in enumerated type"
+msgstr ""
+
+#: gio/glib-compile-schemas.c:605
+#, c-format
+msgid "alias target “%s” is not in <choices>"
+msgstr ""
+
+#: gio/glib-compile-schemas.c:620
+#, c-format
+msgid "<aliases> must contain at least one <alias>"
+msgstr ""
+
+#: gio/glib-compile-schemas.c:797
+#, fuzzy
+#| msgid "empty names are not permitted"
+msgid "Empty names are not permitted"
+msgstr "نام‌های خالی مجاز نیستند"
+
+#: gio/glib-compile-schemas.c:807
+#, c-format
+msgid "Invalid name “%s”: names must begin with a lowercase letter"
+msgstr ""
+
+#: gio/glib-compile-schemas.c:819
+#, c-format
+msgid ""
+"Invalid name “%s”: invalid character “%c”; only lowercase letters, numbers and hyphen (“-”) are permitted"
+msgstr ""
+
+#: gio/glib-compile-schemas.c:828
+#, c-format
+msgid "Invalid name “%s”: two successive hyphens (“--”) are not permitted"
+msgstr ""
+
+#: gio/glib-compile-schemas.c:837
+#, c-format
+msgid "Invalid name “%s”: the last character may not be a hyphen (“-”)"
+msgstr ""
+
+#: gio/glib-compile-schemas.c:845
+#, c-format
+msgid "Invalid name “%s”: maximum length is 1024"
+msgstr ""
+
+#: gio/glib-compile-schemas.c:917
+#, c-format
+msgid "<child name='%s'> already specified"
+msgstr ""
+
+#: gio/glib-compile-schemas.c:943
+msgid "Cannot add keys to a “list-of” schema"
+msgstr ""
+
+#: gio/glib-compile-schemas.c:954
+#, c-format
+msgid "<key name='%s'> already specified"
+msgstr ""
+
+#: gio/glib-compile-schemas.c:972
+#, 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:983
+#, c-format
+msgid "Exactly one of “type”, “enum” or “flags” must be specified as an attribute to <key>"
+msgstr ""
+
+#: gio/glib-compile-schemas.c:1002
+#, c-format
+msgid "<%s id='%s'> not (yet) defined."
+msgstr ""
+
+#: gio/glib-compile-schemas.c:1017
+#, fuzzy, c-format
+#| msgid "Invalid attribute type (string expected)"
+msgid "Invalid GVariant type string “%s”"
+msgstr "نوع مشخصه نامعتبر است (رشته مورد انتظار بود)"
+
+#: gio/glib-compile-schemas.c:1047
+msgid "<override> given but schema isn’t extending anything"
+msgstr ""
+
+#: gio/glib-compile-schemas.c:1060
+#, c-format
+msgid "No <key name='%s'> to override"
+msgstr ""
+
+#: gio/glib-compile-schemas.c:1068
+#, c-format
+msgid "<override name='%s'> already specified"
+msgstr ""
+
+#: gio/glib-compile-schemas.c:1141
+#, c-format
+msgid "<schema id='%s'> already specified"
+msgstr ""
+
+#: gio/glib-compile-schemas.c:1153
+#, c-format
+msgid "<schema id='%s'> extends not yet existing schema “%s”"
+msgstr ""
+
+#: gio/glib-compile-schemas.c:1169
+#, c-format
+msgid "<schema id='%s'> is list of not yet existing schema “%s”"
+msgstr ""
+
+#: gio/glib-compile-schemas.c:1177
+#, 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 "نمی‌توان با یک مسیر فهرست یک شِما بود"
+
+#: gio/glib-compile-schemas.c:1187
+#, fuzzy, c-format
+#| msgid "Can not be a list of a schema with a path"
+msgid "Cannot extend a schema with a path"
+msgstr "نمی‌توان با یک مسیر فهرست یک شِما بود"
+
+#: gio/glib-compile-schemas.c:1197
+#, c-format
+msgid "<schema id='%s'> is a list, extending <schema id='%s'> which is not a list"
+msgstr ""
+
+#: gio/glib-compile-schemas.c:1207
+#, c-format
+msgid "<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:1224
+#, 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 "یک مسیر، اگر داده شود، باید با یک خط مورب شروع و خاتمه یابد"
+
+#: gio/glib-compile-schemas.c:1231
+#, fuzzy, c-format
+#| msgid "the path of a list must end with ':/'"
+msgid "The path of a list must end with “:/”"
+msgstr "مسیر یک فهرست باید با «:/» خاتمه پیدا کند"
+
+#: gio/glib-compile-schemas.c:1240
+#, c-format
+msgid ""
+"Warning: Schema “%s” has path “%s”.  Paths starting with “/apps/”, “/desktop/” or “/system/” are "
+"deprecated."
+msgstr ""
+
+#: gio/glib-compile-schemas.c:1270
+#, c-format
+msgid "<%s id='%s'> already specified"
+msgstr "<%s id='%s'> از قبل مشخص شده است"
+
+#: gio/glib-compile-schemas.c:1420 gio/glib-compile-schemas.c:1436
+#, c-format
+msgid "Only one <%s> element allowed inside <%s>"
+msgstr ""
+
+#: gio/glib-compile-schemas.c:1518
+#, c-format
+msgid "Element <%s> not allowed at the top level"
+msgstr ""
+
+#: gio/glib-compile-schemas.c:1536
+msgid "Element <default> is required in <key>"
+msgstr ""
+
+#: gio/glib-compile-schemas.c:1626
+#, c-format
+msgid "Text may not appear inside <%s>"
+msgstr ""
+
+#: gio/glib-compile-schemas.c:1694
+#, c-format
+msgid "Warning: undefined reference to <schema id='%s'/>"
+msgstr ""
+
+#. Translators: Do not translate "--strict".
+#: gio/glib-compile-schemas.c:1833 gio/glib-compile-schemas.c:1912
+msgid "--strict was specified; exiting."
+msgstr ""
+
+#: gio/glib-compile-schemas.c:1845
+#, fuzzy
+#| msgid "This entire file has been ignored.\n"
+msgid "This entire file has been ignored."
+msgstr "تمام پرونده نادیده گرفته شده است.\n"
+
+#: gio/glib-compile-schemas.c:1908
+#, fuzzy
+#| msgid "Ignoring this file.\n"
+msgid "Ignoring this file."
+msgstr "نادیده گرفتن این پرونده.\n"
+
+#: gio/glib-compile-schemas.c:1963
+#, c-format
+msgid "No such key “%s” in schema “%s” as specified in override file “%s”; ignoring override for this key."
+msgstr ""
+
+#: gio/glib-compile-schemas.c:1971
+#, c-format
+msgid ""
+"No such key “%s” in schema “%s” as specified in override file “%s” and --strict was specified; exiting."
 msgstr ""
 
-#: ../gio/glib-compile-schemas.c:2038
+#: gio/glib-compile-schemas.c:1993
 #, c-format
-msgid "You should give exactly one directory name\n"
-msgstr "شما باید دقیقا نام یک دایرکتوری را بدهید\n"
+msgid ""
+"Cannot provide per-desktop overrides for localized key “%s” in schema “%s” (override file “%s”); ignoring "
+"override for this key."
+msgstr ""
 
-#: ../gio/glib-compile-schemas.c:2077
+#: gio/glib-compile-schemas.c:2002
 #, c-format
-msgid "No schema files found: "
-msgstr "هیچ پرونده شماای پیدا نشد:"
+msgid ""
+"Cannot provide per-desktop overrides for localized key “%s” in schema “%s” (override file “%s”) and --"
+"strict was specified; exiting."
+msgstr ""
 
-#: ../gio/glib-compile-schemas.c:2080
+#: gio/glib-compile-schemas.c:2026
 #, c-format
-msgid "doing nothing.\n"
-msgstr "هیچ‌کاری انجام نمی‌شود.\n"
+msgid ""
+"Error parsing key “%s” in schema “%s” as specified in override file “%s”: %s. Ignoring override for this "
+"key."
+msgstr ""
 
-#: ../gio/glib-compile-schemas.c:2083
+#: gio/glib-compile-schemas.c:2038
 #, c-format
-msgid "removed existing output file.\n"
-msgstr "پرونده خروجی فعلی حذف شد.\n"
+msgid ""
+"Error parsing key “%s” in schema “%s” as specified in override file “%s”: %s. --strict was specified; "
+"exiting."
+msgstr ""
+
+#: gio/glib-compile-schemas.c:2065
+#, c-format
+msgid ""
+"Override for key “%s” in schema “%s” in override file “%s” is outside the range given in the schema; "
+"ignoring override for this key."
+msgstr ""
 
-#: ../gio/glocaldirectorymonitor.c:287
-msgid "Unable to find default local directory monitor type"
+#: gio/glib-compile-schemas.c:2075
+#, c-format
+msgid ""
+"Override for key “%s” in schema “%s” in override file “%s” is outside the range given in the schema and --"
+"strict was specified; exiting."
 msgstr ""
 
-#: ../gio/glocalfile.c:571
-#: ../gio/win32/gwinhttpfile.c:422
+#: gio/glib-compile-schemas.c:2101
 #, c-format
-msgid "Invalid filename %s"
-msgstr "نام‌پرونده نامعتبر: %s"
+msgid ""
+"Override for key “%s” in schema “%s” in override file “%s” is not in the list of valid choices; ignoring "
+"override for this key."
+msgstr ""
+
+#: gio/glib-compile-schemas.c:2111
+#, c-format
+msgid ""
+"Override for key “%s” in schema “%s” in override file “%s” is not in the list of valid choices and --"
+"strict was specified; exiting."
+msgstr ""
+
+#: gio/glib-compile-schemas.c:2173
+#, fuzzy
+#| msgid "Do not write the gschema.compiled file"
+msgid "Where to store the gschemas.compiled file"
+msgstr "بر روی پرونده‌ی gschema.compiled ننویس"
+
+#: gio/glib-compile-schemas.c:2174
+msgid "Abort on any errors in schemas"
+msgstr "قطع کردن با رخدادِ هر نوع خطا در شِماها"
+
+#: gio/glib-compile-schemas.c:2175
+msgid "Do not write the gschema.compiled file"
+msgstr "بر روی پرونده‌ی gschema.compiled ننویس"
+
+#: gio/glib-compile-schemas.c:2176
+msgid "Do not enforce key name restrictions"
+msgstr ""
+
+#: gio/glib-compile-schemas.c:2205
+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:2226
+#, fuzzy
+#| msgid "You should give exactly one directory name\n"
+msgid "You should give exactly one directory name"
+msgstr "شما باید دقیقا نام یک دایرکتوری را بدهید\n"
+
+#: gio/glib-compile-schemas.c:2269
+#, fuzzy
+#| msgid "No schema files found: "
+msgid "No schema files found: doing nothing."
+msgstr "هیچ پرونده شماای پیدا نشد:"
 
-#: ../gio/glocalfile.c:948
+#: gio/glib-compile-schemas.c:2271
+#, fuzzy
+#| msgid "removed existing output file.\n"
+msgid "No schema files found: removed existing output file."
+msgstr "پرونده خروجی فعلی حذف شد.\n"
+
+#: gio/glocalfile.c:549 gio/win32/gwinhttpfile.c:436
 #, c-format
-msgid "Error getting filesystem info: %s"
+msgid "Invalid filename %s"
+msgstr "نام پرونده نامعتبر: %s"
+
+#: gio/glocalfile.c:982
+#, fuzzy, c-format
+#| msgid "Error getting filesystem info: %s"
+msgid "Error getting filesystem info for %s: %s"
 msgstr "خطا در دریافت اطلاعات سیستم‌پرونده‌: %s"
 
-#: ../gio/glocalfile.c:1116
-msgid "Can't rename root directory"
+#. Translators: This is an error message when trying to find
+#. * the enclosing (user visible) mount of a file, but none
+#. * exists.
+#.
+#: gio/glocalfile.c:1123
+#, c-format
+msgid "Containing mount for file %s not found"
+msgstr ""
+
+#: gio/glocalfile.c:1146
+#, fuzzy
+#| msgid "Can't rename root directory"
+msgid "Can’t rename root directory"
 msgstr "نمی‌توان شاخه ریشه را نام‌گذاری مجدد کرد"
 
-#: ../gio/glocalfile.c:1136
-#: ../gio/glocalfile.c:1162
-#, c-format
-msgid "Error renaming file: %s"
-msgstr "خطا Ø¯Ø± ØªØºÛ\8cÛ\8cر Ù\86اÙ\85 Ù¾Ø±Ù\88Ù\86دÙ\87: %s"
+#: gio/glocalfile.c:1164 gio/glocalfile.c:1187
+#, fuzzy, c-format
+#| msgid "Error reading file %s: %s"
+msgid "Error renaming file %s: %s"
+msgstr "خطا Ø¯Ø± Ø®Ù\88اÙ\86دÙ\86 Ù¾Ø±Ù\88Ù\86دÙ\87 %s: %s"
 
-#: ../gio/glocalfile.c:1145
-msgid "Can't rename file, filename already exists"
+#: gio/glocalfile.c:1171
+#, fuzzy
+#| msgid "Can't rename file, filename already exists"
+msgid "Can’t rename file, filename already exists"
 msgstr "نمی‌توان پرونده را مجددا نام‌گذاری کرد، نام پرونده از قبل وجود دارد"
 
-#: ../gio/glocalfile.c:1158
-#: ../gio/glocalfile.c:2162
-#: ../gio/glocalfile.c:2191
-#: ../gio/glocalfile.c:2351
-#: ../gio/glocalfileoutputstream.c:581
-#: ../gio/glocalfileoutputstream.c:634
-#: ../gio/glocalfileoutputstream.c:679
-#: ../gio/glocalfileoutputstream.c:1167
+#: gio/glocalfile.c:1184 gio/glocalfile.c:2371 gio/glocalfile.c:2399 gio/glocalfile.c:2538
+#: gio/glocalfileoutputstream.c:656
 msgid "Invalid filename"
 msgstr "نام پرونده نامعتبر"
 
-#: ../gio/glocalfile.c:1325
-#: ../gio/glocalfile.c:1349
-msgid "Can't open directory"
-msgstr "نمی‌توان شاخه را باز کرد"
-
-#: ../gio/glocalfile.c:1333
-#, c-format
-msgid "Error opening file: %s"
-msgstr "خطا در هنگام باز کردن پرونده: %s"
+#: gio/glocalfile.c:1352 gio/glocalfile.c:1363
+#, fuzzy, c-format
+#| msgid "Error opening file '%s': %s"
+msgid "Error opening file %s: %s"
+msgstr "خطا در هنگام باز کردن پرونده «%s»: %s"
 
-#: ../gio/glocalfile.c:1474
-#, c-format
-msgid "Error removing file: %s"
+#: gio/glocalfile.c:1488
+#, fuzzy, c-format
+#| msgid "Error removing file: %s"
+msgid "Error removing file %s: %s"
 msgstr "خطا در حذف پرونده: %s"
 
-#: ../gio/glocalfile.c:1841
-#, c-format
-msgid "Error trashing file: %s"
+#: gio/glocalfile.c:1982 gio/glocalfile.c:1993
+#, fuzzy, c-format
+#| msgid "Error trashing file: %s"
+msgid "Error trashing file %s: %s"
 msgstr "خطا در انتقال پرونده به زباله‌دان: %s"
 
-#: ../gio/glocalfile.c:1864
-#, c-format
-msgid "Unable to create trash dir %s: %s"
+#: gio/glocalfile.c:2031
+#, fuzzy, c-format
+#| msgid "Unable to create trash dir %s: %s"
+msgid "Unable to create trash directory %s: %s"
 msgstr "نمی‌توان شاخه زباله‌دان %s را ساخت: %s"
 
-#: ../gio/glocalfile.c:1885
-msgid "Unable to find toplevel directory for trash"
-msgstr ""
+#: gio/glocalfile.c:2052
+#, fuzzy, c-format
+#| msgid "Failed to change to directory '%s' (%s)"
+msgid "Unable to find toplevel directory to trash %s"
+msgstr "تغییر به شاخهٔ «%s» شکست خورد (%s)"
 
-#: ../gio/glocalfile.c:1964
-#: ../gio/glocalfile.c:1984
-msgid "Unable to find or create trash directory"
+#: gio/glocalfile.c:2060
+#, c-format
+msgid "Trashing on system internal mounts is not supported"
 msgstr ""
 
-#: ../gio/glocalfile.c:2018
-#, c-format
-msgid "Unable to create trashing info file: %s"
+#: gio/glocalfile.c:2146 gio/glocalfile.c:2174
+#, fuzzy, c-format
+#| msgid "Unable to create trash dir %s: %s"
+msgid "Unable to find or create trash directory %s to trash %s"
+msgstr "نمی‌توان شاخه زباله‌دان %s را ساخت: %s"
+
+#: gio/glocalfile.c:2220
+#, fuzzy, c-format
+#| msgid "Unable to create trashing info file: %s"
+msgid "Unable to create trashing info file for %s: %s"
 msgstr "نمی‌توان پرونده اطلاعات زباله‌دان را ایجاد کرد: %s"
 
-#: ../gio/glocalfile.c:2047
-#: ../gio/glocalfile.c:2052
-#: ../gio/glocalfile.c:2132
-#: ../gio/glocalfile.c:2139
-#, c-format
-msgid "Unable to trash file: %s"
+#: gio/glocalfile.c:2282
+#, fuzzy, c-format
+#| msgid "Unable to trash file: %s"
+msgid "Unable to trash file %s across filesystem boundaries"
 msgstr "نمی‌توان پرونده را به زباله‌دان فرستاد: %s"
 
-#: ../gio/glocalfile.c:2140
-#: ../glib/gregex.c:213
-msgid "internal error"
-msgstr "خطا داخلی"
+#: gio/glocalfile.c:2286 gio/glocalfile.c:2342
+#, fuzzy, c-format
+#| msgid "Unable to trash file: %s"
+msgid "Unable to trash file %s: %s"
+msgstr "نمی‌توان پرونده را به زباله‌دان فرستاد: %s"
 
-#: ../gio/glocalfile.c:2166
-#, c-format
-msgid "Error creating directory: %s"
-msgstr "خطا در هنگام ساخت شاخه: %s"
+#: gio/glocalfile.c:2348
+#, fuzzy, c-format
+#| msgid "Unable to trash file: %s"
+msgid "Unable to trash file %s"
+msgstr "نمی‌توان پرونده را به زباله‌دان فرستاد: %s"
+
+#: gio/glocalfile.c:2374
+#, fuzzy, c-format
+#| msgid "Error creating directory '%s': %s"
+msgid "Error creating directory %s: %s"
+msgstr "خطا در هنگام ساخت شاخه «%s»: %s"
 
-#: ../gio/glocalfile.c:2195
+#: gio/glocalfile.c:2403
 #, c-format
 msgid "Filesystem does not support symbolic links"
-msgstr "سیستم‌پرونده‌های از پیوندهای نمادین پشتیبانی نمی‌کند"
+msgstr "سیستم‌پرونده از پیوندهای نمادین پشتیبانی نمی‌کند"
 
-#: ../gio/glocalfile.c:2199
-#, c-format
-msgid "Error making symbolic link: %s"
+#: gio/glocalfile.c:2406
+#, fuzzy, c-format
+#| msgid "Error making symbolic link: %s"
+msgid "Error making symbolic link %s: %s"
 msgstr "خطا در در هنگام ساخت پیوند نمادین: %s"
 
-#: ../gio/glocalfile.c:2261
-#: ../gio/glocalfile.c:2355
-#, c-format
-msgid "Error moving file: %s"
+#: gio/glocalfile.c:2449 gio/glocalfile.c:2484 gio/glocalfile.c:2541
+#, fuzzy, c-format
+#| msgid "Error moving file: %s"
+msgid "Error moving file %s: %s"
 msgstr "خطا در هنگام جابجایی پرونده: %s"
 
-#: ../gio/glocalfile.c:2284
-msgid "Can't move directory over directory"
-msgstr ""
+#: gio/glocalfile.c:2472
+#, fuzzy
+#| msgid "Can't copy directory over directory"
+msgid "Can’t move directory over directory"
+msgstr "نمي‌توان شاخه را بر روی شاخه رونوشت کرد"
 
-#: ../gio/glocalfile.c:2311
-#: ../gio/glocalfileoutputstream.c:965
-#: ../gio/glocalfileoutputstream.c:979
-#: ../gio/glocalfileoutputstream.c:994
-#: ../gio/glocalfileoutputstream.c:1010
-#: ../gio/glocalfileoutputstream.c:1024
+#: gio/glocalfile.c:2498 gio/glocalfileoutputstream.c:1108 gio/glocalfileoutputstream.c:1122
+#: gio/glocalfileoutputstream.c:1137 gio/glocalfileoutputstream.c:1154 gio/glocalfileoutputstream.c:1168
 msgid "Backup file creation failed"
 msgstr "ساخت پرونده پشتیبان شکست خورد"
 
-#: ../gio/glocalfile.c:2330
+#: gio/glocalfile.c:2517
 #, c-format
 msgid "Error removing target file: %s"
 msgstr "خطا در هنگام حذف پرونده هدف: %s"
 
-#: ../gio/glocalfile.c:2344
+#: gio/glocalfile.c:2531
 msgid "Move between mounts not supported"
 msgstr ""
 
-#: ../gio/glocalfileinfo.c:719
+#: gio/glocalfile.c:2705
+#, fuzzy, c-format
+#| msgid "could not get remote address: %s"
+msgid "Could not determine the disk usage of %s: %s"
+msgstr "نمی‌توان آدرس دوردست را دریافت کرد: %s"
+
+#: gio/glocalfileinfo.c:767
+#, fuzzy
 msgid "Attribute value must be non-NULL"
 msgstr "مقدار مشخصه نباید non-NULL باشد"
 
-#: ../gio/glocalfileinfo.c:726
+#: gio/glocalfileinfo.c:774
 msgid "Invalid attribute type (string expected)"
 msgstr "نوع مشخصه نامعتبر است (رشته مورد انتظار بود)"
 
-#: ../gio/glocalfileinfo.c:733
+#: gio/glocalfileinfo.c:781
 #, fuzzy
 msgid "Invalid extended attribute name"
 msgstr "نوشتار به‌طور غیرمنتظره‌ای داخل نام یک مشخصه به‌پایان رسید"
 
-#: ../gio/glocalfileinfo.c:773
+#: gio/glocalfileinfo.c:821
 #, fuzzy, c-format
-msgid "Error setting extended attribute '%s': %s"
+msgid "Error setting extended attribute “%s”: %s"
 msgstr "خطا در باز کردن شاخهٔ «‎%s»‏: %s"
 
-#: ../gio/glocalfileinfo.c:1426
+#: gio/glocalfileinfo.c:1709 gio/win32/gwinhttpfile.c:191
 msgid " (invalid encoding)"
 msgstr " (کدگذاری نامعتبر)"
 
-#: ../gio/glocalfileinfo.c:1527
-#: ../gio/glocalfileoutputstream.c:843
+#: gio/glocalfileinfo.c:1868 gio/glocalfileoutputstream.c:943 gio/glocalfileoutputstream.c:995
 #, fuzzy, c-format
-msgid "Error when getting information for file '%s': %s"
+msgid "Error when getting information for file “%s”: %s"
 msgstr "خطا در بازکردن پرونده فعلی «‎%s»‏: %s"
 
-#: ../gio/glocalfileinfo.c:1779
+#: gio/glocalfileinfo.c:2134
 #, fuzzy, c-format
 msgid "Error when getting information for file descriptor: %s"
 msgstr "خطا در هنگام تنظیم توصیف‌گر پرونده: %s"
 
-#: ../gio/glocalfileinfo.c:1824
+#: gio/glocalfileinfo.c:2179
 msgid "Invalid attribute type (uint32 expected)"
 msgstr "نوع مشخصه نامعتبر (uint32 مورد انتظار بود)"
 
-#: ../gio/glocalfileinfo.c:1842
+#: gio/glocalfileinfo.c:2197
 msgid "Invalid attribute type (uint64 expected)"
 msgstr "نوع مشخصه نامعتبر بود (uint64 مورد انتظار بود)"
 
-#: ../gio/glocalfileinfo.c:1861
-#: ../gio/glocalfileinfo.c:1880
+#: gio/glocalfileinfo.c:2216 gio/glocalfileinfo.c:2235
 msgid "Invalid attribute type (byte string expected)"
 msgstr "نوع مشخصه نامعتبر (رشته بایتی مورد انتظار بود)"
 
-#: ../gio/glocalfileinfo.c:1915
+#: gio/glocalfileinfo.c:2282
 msgid "Cannot set permissions on symlinks"
 msgstr "نمی‌توان اجازه‌های روی پیوند نمادین را تنظیم کرد"
 
-#: ../gio/glocalfileinfo.c:1931
+#: gio/glocalfileinfo.c:2298
 #, c-format
 msgid "Error setting permissions: %s"
 msgstr "خطا در هنگام تنظیم اجازه‌ها: %s"
 
-#: ../gio/glocalfileinfo.c:1982
+#: gio/glocalfileinfo.c:2349
 #, c-format
 msgid "Error setting owner: %s"
 msgstr "خطا در هنگام تنظیم مالک: %s"
 
-#: ../gio/glocalfileinfo.c:2005
+#: gio/glocalfileinfo.c:2372
 msgid "symlink must be non-NULL"
 msgstr ""
 
-#: ../gio/glocalfileinfo.c:2015
-#: ../gio/glocalfileinfo.c:2034
-#: ../gio/glocalfileinfo.c:2045
+#: gio/glocalfileinfo.c:2382 gio/glocalfileinfo.c:2401 gio/glocalfileinfo.c:2412
 #, c-format
 msgid "Error setting symlink: %s"
 msgstr "خطا در تنظیم پیوند نمادین: %s"
 
-#: ../gio/glocalfileinfo.c:2024
+#: gio/glocalfileinfo.c:2391
 msgid "Error setting symlink: file is not a symlink"
 msgstr ""
 
-#: ../gio/glocalfileinfo.c:2150
+#: gio/glocalfileinfo.c:2463
+#, c-format
+msgid "Extra nanoseconds %d for UNIX timestamp %lld are negative"
+msgstr ""
+
+#: gio/glocalfileinfo.c:2472
+#, c-format
+msgid "Extra nanoseconds %d for UNIX timestamp %lld reach 1 second"
+msgstr ""
+
+#: gio/glocalfileinfo.c:2482
+#, c-format
+msgid "UNIX timestamp %lld does not fit into 64 bits"
+msgstr ""
+
+#: gio/glocalfileinfo.c:2493
+#, c-format
+msgid "UNIX timestamp %lld is outside of the range supported by Windows"
+msgstr ""
+
+#: gio/glocalfileinfo.c:2570
+#, c-format
+msgid "File name “%s” cannot be converted to UTF-16"
+msgstr ""
+
+#: gio/glocalfileinfo.c:2589
+#, c-format
+msgid "File “%s” cannot be opened: Windows Error %lu"
+msgstr ""
+
+#: gio/glocalfileinfo.c:2602
+#, fuzzy, c-format
+#| msgid "Error setting modification or access time: %s"
+msgid "Error setting modification or access time for file “%s”: %lu"
+msgstr "خطا در هنگام تنظیم کردن زمان دسترسی یا تغییر: %s"
+
+#: gio/glocalfileinfo.c:2703
 #, c-format
 msgid "Error setting modification or access time: %s"
 msgstr "خطا در هنگام تنظیم کردن زمان دسترسی یا تغییر: %s"
 
-#: ../gio/glocalfileinfo.c:2173
+#: gio/glocalfileinfo.c:2726
 msgid "SELinux context must be non-NULL"
 msgstr ""
 
-#: ../gio/glocalfileinfo.c:2188
+#: gio/glocalfileinfo.c:2733
+msgid "SELinux is not enabled on this system"
+msgstr "سیستم SELinux بر روی این سیستم فعال نشده است"
+
+#: gio/glocalfileinfo.c:2743
 #, c-format
 msgid "Error setting SELinux context: %s"
 msgstr "خطا در تنظیم مفاد SELinux: %s"
 
-#: ../gio/glocalfileinfo.c:2195
-msgid "SELinux is not enabled on this system"
-msgstr "سیستم SELinux بر روی این سیستم فعال نشده است"
-
-#: ../gio/glocalfileinfo.c:2287
+#: gio/glocalfileinfo.c:2836
 #, c-format
 msgid "Setting attribute %s not supported"
 msgstr "تنظیم کردن مشخصه %s پشتیبانی نمی‌شود"
 
-#: ../gio/glocalfileinputstream.c:185
-#: ../gio/glocalfileoutputstream.c:732
+#: gio/glocalfileinputstream.c:163 gio/glocalfileoutputstream.c:801
 #, c-format
 msgid "Error reading from file: %s"
 msgstr "خطا در هنگام خواندن از پرونده: %s"
 
-#: ../gio/glocalfileinputstream.c:216
-#: ../gio/glocalfileinputstream.c:228
-#: ../gio/glocalfileinputstream.c:340
-#: ../gio/glocalfileoutputstream.c:470
-#: ../gio/glocalfileoutputstream.c:1042
-#, c-format
-msgid "Error seeking in file: %s"
-msgstr "خطا در هنگام جستجو در پرونده: %s"
-
-#: ../gio/glocalfileinputstream.c:261
-#: ../gio/glocalfileoutputstream.c:256
-#: ../gio/glocalfileoutputstream.c:351
+#: gio/glocalfileinputstream.c:194 gio/glocalfileoutputstream.c:353 gio/glocalfileoutputstream.c:447
 #, c-format
 msgid "Error closing file: %s"
 msgstr "خطا در هنگام بستن پرونده: %s"
 
-#: ../gio/glocalfilemonitor.c:212
+#: gio/glocalfileinputstream.c:272 gio/glocalfileoutputstream.c:563 gio/glocalfileoutputstream.c:1186
+#, c-format
+msgid "Error seeking in file: %s"
+msgstr "خطا در هنگام جستجو در پرونده: %s"
+
+#: gio/glocalfilemonitor.c:866
 msgid "Unable to find default local file monitor type"
 msgstr ""
 
-#: ../gio/glocalfileoutputstream.c:202
-#: ../gio/glocalfileoutputstream.c:235
-#: ../gio/glocalfileoutputstream.c:753
+#: gio/glocalfileoutputstream.c:220 gio/glocalfileoutputstream.c:298 gio/glocalfileoutputstream.c:334
+#: gio/glocalfileoutputstream.c:822
 #, c-format
 msgid "Error writing to file: %s"
 msgstr "خطا در هنگام نوشتن در پرونده: %s"
 
-#: ../gio/glocalfileoutputstream.c:283
+#: gio/glocalfileoutputstream.c:380
 #, c-format
 msgid "Error removing old backup link: %s"
 msgstr "خطا در هنگام حذف کردن پیوند پشتیبانی قدیمی: %s"
 
-#: ../gio/glocalfileoutputstream.c:297
-#: ../gio/glocalfileoutputstream.c:310
+#: gio/glocalfileoutputstream.c:394 gio/glocalfileoutputstream.c:407
 #, c-format
 msgid "Error creating backup copy: %s"
 msgstr "خطا در هنگام رونشت از پشتیبان: %s"
 
-#: ../gio/glocalfileoutputstream.c:328
+#: gio/glocalfileoutputstream.c:425
 #, c-format
 msgid "Error renaming temporary file: %s"
 msgstr "خطا خطا در تغییر نام پرونده موقت: %s"
 
-#: ../gio/glocalfileoutputstream.c:516
-#: ../gio/glocalfileoutputstream.c:1093
+#: gio/glocalfileoutputstream.c:609 gio/glocalfileoutputstream.c:1237
 #, c-format
 msgid "Error truncating file: %s"
 msgstr "خطا در هنگام کوتاه کردن پرونده: %s"
 
-#: ../gio/glocalfileoutputstream.c:587
-#: ../gio/glocalfileoutputstream.c:640
-#: ../gio/glocalfileoutputstream.c:685
-#: ../gio/glocalfileoutputstream.c:825
-#: ../gio/glocalfileoutputstream.c:1074
-#: ../gio/glocalfileoutputstream.c:1173
-#, c-format
-msgid "Error opening file '%s': %s"
+#: gio/glocalfileoutputstream.c:662 gio/glocalfileoutputstream.c:907 gio/glocalfileoutputstream.c:1218
+#: gio/gsubprocess.c:226
+#, fuzzy, c-format
+#| msgid "Error opening file '%s': %s"
+msgid "Error opening file “%s”: %s"
 msgstr "خطا در هنگام باز کردن پرونده «%s»: %s"
 
-#: ../gio/glocalfileoutputstream.c:856
+#: gio/glocalfileoutputstream.c:957
 msgid "Target file is a directory"
 msgstr "پرونده هدف یک شاخه است"
 
-#: ../gio/glocalfileoutputstream.c:861
+#: gio/glocalfileoutputstream.c:971
 msgid "Target file is not a regular file"
 msgstr "پرونده هدف یک پرونده معمولی نیست"
 
-#: ../gio/glocalfileoutputstream.c:873
+#: gio/glocalfileoutputstream.c:1013
 msgid "The file was externally modified"
 msgstr "پرونده از خارج تغییر کرده است"
 
-#: ../gio/glocalfileoutputstream.c:1058
+#: gio/glocalfileoutputstream.c:1202
 #, c-format
 msgid "Error removing old file: %s"
 msgstr "خطا در هنگام حذف پرونده قدیمی: %s"
 
-#: ../gio/gmemoryinputstream.c:492
-#: ../gio/gmemoryoutputstream.c:750
+#: gio/gmemoryinputstream.c:474 gio/gmemoryoutputstream.c:772
 msgid "Invalid GSeekType supplied"
 msgstr ""
 
-#: ../gio/gmemoryinputstream.c:502
+#: gio/gmemoryinputstream.c:484
 msgid "Invalid seek request"
 msgstr "درخواست جستجو نامعتبر"
 
-#: ../gio/gmemoryinputstream.c:526
+#: gio/gmemoryinputstream.c:508
 msgid "Cannot truncate GMemoryInputStream"
 msgstr ""
 
-#: ../gio/gmemoryoutputstream.c:496
+#: gio/gmemoryoutputstream.c:567
 msgid "Memory output stream not resizable"
 msgstr ""
 
-#: ../gio/gmemoryoutputstream.c:512
+#: gio/gmemoryoutputstream.c:583
 msgid "Failed to resize memory output stream"
 msgstr ""
 
-#: ../gio/gmemoryoutputstream.c:600
+#: gio/gmemoryoutputstream.c:673
 msgid "Amount of memory required to process the write is larger than available address space"
 msgstr ""
 
-#: ../gio/gmemoryoutputstream.c:760
+#: gio/gmemoryoutputstream.c:782
 msgid "Requested seek before the beginning of the stream"
 msgstr ""
 
-#: ../gio/gmemoryoutputstream.c:769
+#: gio/gmemoryoutputstream.c:797
 msgid "Requested seek beyond the end of the stream"
 msgstr ""
 
 #. Translators: This is an error
 #. * message for mount objects that
 #. * don't implement unmount.
-#: ../gio/gmount.c:363
-msgid "mount doesn't implement \"unmount\""
-msgstr ""
+#: gio/gmount.c:399
+#, fuzzy
+#| msgid "volume doesn't implement eject"
+msgid "mount doesn’t implement “unmount”"
+msgstr "جلد قابلیت eject ندارد"
 
 #. Translators: This is an error
 #. * message for mount objects that
 #. * don't implement eject.
-#: ../gio/gmount.c:442
-msgid "mount doesn't implement \"eject\""
-msgstr ""
+#: gio/gmount.c:475
+#, fuzzy
+#| msgid "volume doesn't implement eject"
+msgid "mount doesn’t implement “eject”"
+msgstr "جلد قابلیت eject ندارد"
 
 #. Translators: This is an error
 #. * message for mount objects that
 #. * don't implement any of unmount or unmount_with_operation.
-#: ../gio/gmount.c:523
-msgid "mount doesn't implement \"unmount\" or \"unmount_with_operation\""
-msgstr ""
+#: gio/gmount.c:553
+#, fuzzy
+#| msgid "volume doesn't implement eject or eject_with_operation"
+msgid "mount doesn’t implement “unmount” or “unmount_with_operation”"
+msgstr "جلد قابلیت eject یا eject_with_operation را ندارد"
 
 #. Translators: This is an error
 #. * message for mount objects that
 #. * don't implement any of eject or eject_with_operation.
-#: ../gio/gmount.c:611
-msgid "mount doesn't implement \"eject\" or \"eject_with_operation\""
-msgstr ""
+#: gio/gmount.c:638
+#, fuzzy
+#| msgid "volume doesn't implement eject or eject_with_operation"
+msgid "mount doesn’t implement “eject” or “eject_with_operation”"
+msgstr "جلد قابلیت eject یا eject_with_operation را ندارد"
 
 #. Translators: This is an error
 #. * message for mount objects that
 #. * don't implement remount.
-#: ../gio/gmount.c:701
-msgid "mount doesn't implement \"remount\""
-msgstr ""
+#: gio/gmount.c:726
+#, fuzzy
+#| msgid "volume doesn't implement eject"
+msgid "mount doesn’t implement “remount”"
+msgstr "جلد قابلیت eject ندارد"
 
 #. Translators: This is an error
 #. * message for mount objects that
 #. * don't implement content type guessing.
-#: ../gio/gmount.c:785
-msgid "mount doesn't implement content type guessing"
+#: gio/gmount.c:808
+msgid "mount doesnt implement content type guessing"
 msgstr ""
 
 #. Translators: This is an error
 #. * message for mount objects that
 #. * don't implement content type guessing.
-#: ../gio/gmount.c:874
-msgid "mount doesn't implement synchronous content type guessing"
+#: gio/gmount.c:895
+msgid "mount doesnt implement synchronous content type guessing"
 msgstr ""
 
-#: ../gio/gnetworkaddress.c:322
+#: gio/gnetworkaddress.c:415
 #, c-format
-msgid "Hostname '%s' contains '[' but not ']'"
+msgid "Hostname “%s” contains “[” but not “]”"
 msgstr ""
 
-#: ../gio/gnetworkmonitorbase.c:178
+#: gio/gnetworkmonitorbase.c:219 gio/gnetworkmonitorbase.c:323
 msgid "Network unreachable"
 msgstr "شبکه غیرقابل دسترس است"
 
-#: ../gio/gnetworkmonitorbase.c:218
+#: gio/gnetworkmonitorbase.c:257 gio/gnetworkmonitorbase.c:287
 msgid "Host unreachable"
 msgstr "میزبان غیرقابل دسترسی است"
 
-#: ../gio/gnetworkmonitornetlink.c:97
-#: ../gio/gnetworkmonitornetlink.c:109
-#: ../gio/gnetworkmonitornetlink.c:120
+#: gio/gnetworkmonitornetlink.c:99 gio/gnetworkmonitornetlink.c:111 gio/gnetworkmonitornetlink.c:130
 #, c-format
 msgid "Could not create network monitor: %s"
 msgstr "نمی‌توان پایشگر شبکه را ساخت: %s"
 
-#: ../gio/gnetworkmonitornetlink.c:129
+#: gio/gnetworkmonitornetlink.c:120
 msgid "Could not create network monitor: "
-msgstr "نمی‌توان پایشگر شبکه را ساخت:"
+msgstr "نمی‌توان پایشگر شبکه را ساخت: "
 
-#: ../gio/gnetworkmonitornetlink.c:177
+#: gio/gnetworkmonitornetlink.c:183
 #, fuzzy
 msgid "Could not get network status: "
 msgstr "نمی‌توان آدرس دوردست را دریافت کرد: %s"
 
-#: ../gio/goutputstream.c:212
-#: ../gio/goutputstream.c:417
-msgid "Output stream doesn't implement write"
+#: gio/gnetworkmonitornm.c:348
+#, c-format
+msgid "NetworkManager not running"
 msgstr ""
 
-#: ../gio/goutputstream.c:378
-#: ../gio/goutputstream.c:876
-msgid "Source stream is already closed"
-msgstr "جریان منبع از قبل بسته شده است"
-
-#: ../gio/gresolver.c:764
+#: gio/gnetworkmonitornm.c:359
 #, c-format
-msgid "Error resolving '%s': %s"
-msgstr "خطا در هنگام برطرف‌سازی «%s»: %s"
+msgid "NetworkManager version too old"
+msgstr ""
 
-#: ../gio/gresolver.c:814
-#, c-format
-msgid "Error reverse-resolving '%s': %s"
-msgstr "خطا Ø¯Ø± Ù\87Ù\86گاÙ\85 Ø¨Ø±Ø·Ø±Ù\81â\80\8cسازÛ\8c Ù\85عکÙ\88س Â«%s»: %s"
+#: gio/goutputstream.c:232 gio/goutputstream.c:775
+#, fuzzy
+msgid "Output stream doesn’t implement write"
+msgstr "جÙ\84د Ù\82ابÙ\84Û\8cت eject Ù\86دارد"
 
-#: ../gio/gresolver.c:849
-#: ../gio/gresolver.c:928
+#: gio/goutputstream.c:472 gio/goutputstream.c:1533
 #, c-format
-msgid "No service record for '%s'"
+msgid "Sum of vectors passed to %s too large"
 msgstr ""
 
-#: ../gio/gresolver.c:854
-#: ../gio/gresolver.c:933
+#: gio/goutputstream.c:736 gio/goutputstream.c:1761
+msgid "Source stream is already closed"
+msgstr "جریان منبع از قبل بسته شده است"
+
+#: gio/gresolver.c:386 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
+#, fuzzy, c-format
+#| msgid "Error resolving '%s': %s"
+msgid "Error resolving “%s”: %s"
+msgstr "خطا در هنگام برطرف‌سازی «%s»: %s"
+
+#. Translators: The placeholder is for a function name.
+#: gio/gresolver.c:455 gio/gresolver.c:615
 #, c-format
-msgid "Temporarily unable to resolve '%s'"
+msgid "%s not implemented"
 msgstr ""
 
-#: ../gio/gresolver.c:859
-#: ../gio/gresolver.c:938
-#, c-format
-msgid "Error resolving '%s'"
-msgstr "خطا در هنگام برطرف‌سازی «%s»"
+#: gio/gresolver.c:984 gio/gresolver.c:1036
+#, fuzzy
+#| msgid "Invalid filename"
+msgid "Invalid domain"
+msgstr "نام پرونده نامعتبر"
 
-#: ../gio/gresource.c:294
-#: ../gio/gresource.c:539
-#: ../gio/gresource.c:556
-#: ../gio/gresource.c:679
-#: ../gio/gresource.c:748
-#: ../gio/gresource.c:809
-#: ../gio/gresource.c:889
-#: ../gio/gresourcefile.c:452
-#: ../gio/gresourcefile.c:552
-#: ../gio/gresourcefile.c:654
+#: gio/gresource.c:681 gio/gresource.c:943 gio/gresource.c:983 gio/gresource.c:1107 gio/gresource.c:1179
+#: gio/gresource.c:1253 gio/gresource.c:1334 gio/gresourcefile.c:476 gio/gresourcefile.c:599
+#: gio/gresourcefile.c:736
 #, c-format
-msgid "The resource at '%s' does not exist"
+msgid "The resource at “%s” does not exist"
 msgstr ""
 
-#: ../gio/gresource.c:456
+#: gio/gresource.c:848
 #, c-format
-msgid "The resource at '%s' failed to decompress"
+msgid "The resource at “%s” failed to decompress"
 msgstr ""
 
-#: ../gio/gresourcefile.c:650
+#: gio/gresourcefile.c:732
 #, c-format
-msgid "The resource at '%s' is not a directory"
+msgid "The resource at “%s” is not a directory"
 msgstr ""
 
-#: ../gio/gresourcefile.c:858
+#: gio/gresourcefile.c:940
 #, fuzzy
-msgid "Input stream doesn't implement seek"
+msgid "Input stream doesnt implement seek"
 msgstr "جلد قابلیت eject ندارد"
 
-#: ../gio/gresource-tool.c:470
-#: ../gio/gsettings-tool.c:530
-msgid "Print help"
-msgstr "چاپ راهنما"
-
-#: ../gio/gresource-tool.c:476
+#: gio/gresource-tool.c:500
 msgid "List sections containing resources in an elf FILE"
 msgstr ""
 
-#: ../gio/gresource-tool.c:482
+#: gio/gresource-tool.c:506
 msgid ""
 "List resources\n"
 "If SECTION is given, only list resources in this section\n"
 "If PATH is given, only list matching resources"
 msgstr ""
 
-#: ../gio/gresource-tool.c:486
-#: ../gio/gresource-tool.c:496
-#: ../gio/gresource-tool.c:503
+#: gio/gresource-tool.c:509 gio/gresource-tool.c:519
+msgid "FILE [PATH]"
+msgstr ""
+
+#: gio/gresource-tool.c:510 gio/gresource-tool.c:520 gio/gresource-tool.c:527
 msgid "SECTION"
 msgstr "SECTION"
 
-#: ../gio/gresource-tool.c:491
+#: gio/gresource-tool.c:515
 msgid ""
 "List resources with details\n"
 "If SECTION is given, only list resources in this section\n"
@@ -2040,24 +3445,18 @@ msgid ""
 "Details include the section, size and compression"
 msgstr ""
 
-#: ../gio/gresource-tool.c:501
+#: gio/gresource-tool.c:525
 msgid "Extract a resource file to stdout"
 msgstr ""
 
-#: ../gio/gresource-tool.c:508
-#: ../gio/gsettings-tool.c:610
-#, c-format
-msgid ""
-"Unknown command %s\n"
-"\n"
-msgstr ""
-"فرمان ناشناس %s\n"
-"\n"
+#: gio/gresource-tool.c:526
+msgid "FILE PATH"
+msgstr "FILE PATH"
 
-#: ../gio/gresource-tool.c:516
+#: gio/gresource-tool.c:540
 msgid ""
 "Usage:\n"
-"  gresource [--section SECTION] COMMAND [ARGS...]\n"
+"  gresource [--section SECTION] COMMAND [ARGS]\n"
 "\n"
 "Commands:\n"
 "  help                      Show this information\n"
@@ -2066,11 +3465,11 @@ 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 ""
 
-#: ../gio/gresource-tool.c:530
+#: gio/gresource-tool.c:554
 #, c-format
 msgid ""
 "Usage:\n"
@@ -2080,166 +3479,167 @@ msgid ""
 "\n"
 msgstr ""
 
-#: ../gio/gresource-tool.c:533
-#: ../gio/gsettings-tool.c:643
-msgid "Arguments:\n"
-msgstr "متغییرها:\n"
-
-#: ../gio/gresource-tool.c:537
+#: gio/gresource-tool.c:561
 msgid "  SECTION   An (optional) elf section name\n"
 msgstr ""
 
-#: ../gio/gresource-tool.c:541
-#: ../gio/gsettings-tool.c:650
+#: gio/gresource-tool.c:565 gio/gsettings-tool.c:706
 msgid "  COMMAND   The (optional) command to explain\n"
 msgstr ""
 
-#: ../gio/gresource-tool.c:547
+#: gio/gresource-tool.c:571
 msgid "  FILE      An elf file (a binary or a shared library)\n"
 msgstr ""
 
-#: ../gio/gresource-tool.c:550
+#: gio/gresource-tool.c:574
 msgid ""
 "  FILE      An elf file (a binary or a shared library)\n"
 "            or a compiled resource file\n"
 msgstr ""
 
-#: ../gio/gresource-tool.c:556
+#: gio/gresource-tool.c:578
+msgid "[PATH]"
+msgstr "[PATH]"
+
+#: gio/gresource-tool.c:580
 msgid "  PATH      An (optional) resource path (may be partial)\n"
 msgstr ""
 
-#: ../gio/gresource-tool.c:559
+#: gio/gresource-tool.c:581
+msgid "PATH"
+msgstr ""
+
+#: gio/gresource-tool.c:583
 msgid "  PATH      A resource path\n"
 msgstr ""
 
-#: ../gio/gsettings-tool.c:53
-#: ../gio/gsettings-tool.c:74
-#, c-format
-msgid "No such schema '%s'\n"
+#: gio/gsettings-tool.c:49 gio/gsettings-tool.c:70 gio/gsettings-tool.c:911
+#, fuzzy, c-format
+#| msgid "No such schema '%s'\n"
+msgid "No such schema “%s”\n"
 msgstr "همجین شِمایی وجود ندارد «%s»\n"
 
-#: ../gio/gsettings-tool.c:59
-#, c-format
-msgid "Schema '%s' is not relocatable (path must not be specified)\n"
+#: gio/gsettings-tool.c:55
+#, fuzzy, c-format
+#| msgid "Schema '%s' is not relocatable (path must not be specified)\n"
+msgid "Schema “%s” is not relocatable (path must not be specified)\n"
 msgstr "شِما «%s» قابل جابه‌جایی نیست (مسیر نباید مشخص شود)\n"
 
-#: ../gio/gsettings-tool.c:80
-#, c-format
-msgid "Schema '%s' is relocatable (path must be specified)\n"
+#: gio/gsettings-tool.c:76
+#, fuzzy, c-format
+#| msgid "Schema '%s' is relocatable (path must be specified)\n"
+msgid "Schema “%s” is relocatable (path must be specified)\n"
 msgstr "شِما «%s» قابل جابه‌جایی نیست (مسیر باید مشخص شود)\n"
 
-#: ../gio/gsettings-tool.c:94
-#, c-format
+#: gio/gsettings-tool.c:90
 msgid "Empty path given.\n"
 msgstr "مسیر خالی داده شده است.\n"
 
-#: ../gio/gsettings-tool.c:100
-#, c-format
+#: gio/gsettings-tool.c:96
 msgid "Path must begin with a slash (/)\n"
 msgstr "مسیر با یک خط مورب (/) باید آغاز شود\n"
 
-#: ../gio/gsettings-tool.c:106
-#, c-format
+#: gio/gsettings-tool.c:102
 msgid "Path must end with a slash (/)\n"
 msgstr "مسیر با یک خط مورب (/) باید پایان یابد\n"
 
-#: ../gio/gsettings-tool.c:112
-#, c-format
+#: gio/gsettings-tool.c:108
 msgid "Path must not contain two adjacent slashes (//)\n"
 msgstr ""
 
-#: ../gio/gsettings-tool.c:133
-#, c-format
-msgid "No such key '%s'\n"
-msgstr "همچین کلیدی وجود ندارد «%s»\n"
-
-#: ../gio/gsettings-tool.c:503
-#, c-format
+#: gio/gsettings-tool.c:541
 msgid "The provided value is outside of the valid range\n"
 msgstr "مقدار فراهم شده خارج از محدود مجاز است\n"
 
-#: ../gio/gsettings-tool.c:536
+#: gio/gsettings-tool.c:548
+#, fuzzy
+#| msgid "Property '%s' is not writable"
+msgid "The key is not writable\n"
+msgstr "خصیصه‌ی «%s» قابل نوشتن نیست"
+
+#: gio/gsettings-tool.c:584
 msgid "List the installed (non-relocatable) schemas"
 msgstr ""
 
-#: ../gio/gsettings-tool.c:542
+#: gio/gsettings-tool.c:590
 msgid "List the installed relocatable schemas"
 msgstr ""
 
-#: ../gio/gsettings-tool.c:548
+#: gio/gsettings-tool.c:596
 msgid "List the keys in SCHEMA"
 msgstr "لیست کلیدها درون SCHEMA"
 
-#: ../gio/gsettings-tool.c:549
-#: ../gio/gsettings-tool.c:555
-#: ../gio/gsettings-tool.c:592
+#: gio/gsettings-tool.c:597 gio/gsettings-tool.c:603 gio/gsettings-tool.c:646
 msgid "SCHEMA[:PATH]"
 msgstr "SCHEMA[:PATH]"
 
-#: ../gio/gsettings-tool.c:554
+#: gio/gsettings-tool.c:602
 msgid "List the children of SCHEMA"
 msgstr "فهرست کردن فرزندان SCHEMA"
 
-#: ../gio/gsettings-tool.c:560
+#: gio/gsettings-tool.c:608
 msgid ""
 "List keys and values, recursively\n"
 "If no SCHEMA is given, list all keys\n"
 msgstr ""
 
-#: ../gio/gsettings-tool.c:562
+#: gio/gsettings-tool.c:610
 msgid "[SCHEMA[:PATH]]"
 msgstr "[SCHEMA[:PATH]]"
 
-#: ../gio/gsettings-tool.c:567
+#: gio/gsettings-tool.c:615
 msgid "Get the value of KEY"
 msgstr "گرفتن مقدار KEY"
 
-#: ../gio/gsettings-tool.c:568
-#: ../gio/gsettings-tool.c:574
-#: ../gio/gsettings-tool.c:586
-#: ../gio/gsettings-tool.c:598
+#: gio/gsettings-tool.c:616 gio/gsettings-tool.c:622 gio/gsettings-tool.c:628 gio/gsettings-tool.c:640
+#: gio/gsettings-tool.c:652
 msgid "SCHEMA[:PATH] KEY"
 msgstr "SCHEMA[:PATH] KEY"
 
-#: ../gio/gsettings-tool.c:573
+#: gio/gsettings-tool.c:621
 msgid "Query the range of valid values for KEY"
 msgstr ""
 
-#: ../gio/gsettings-tool.c:579
+#: gio/gsettings-tool.c:627
+msgid "Query the description for KEY"
+msgstr ""
+
+#: gio/gsettings-tool.c:633
 msgid "Set the value of KEY to VALUE"
 msgstr "تنظیم مقدار KEY به VALUE"
 
-#: ../gio/gsettings-tool.c:580
+#: gio/gsettings-tool.c:634
 msgid "SCHEMA[:PATH] KEY VALUE"
 msgstr "SCHEMA[:PATH] KEY VALUE"
 
-#: ../gio/gsettings-tool.c:585
+#: gio/gsettings-tool.c:639
 msgid "Reset KEY to its default value"
 msgstr "تنظیم مجدد KEY به مقدار پیش‌فرض"
 
-#: ../gio/gsettings-tool.c:591
+#: gio/gsettings-tool.c:645
 msgid "Reset all keys in SCHEMA to their defaults"
 msgstr "تنظیم مجدد تمام کلیدها در SCHEMA به مقدار پیش‌فرض"
 
-#: ../gio/gsettings-tool.c:597
+#: gio/gsettings-tool.c:651
 msgid "Check if KEY is writable"
 msgstr "بررسی اینکه KEY قابل نوشتن است"
 
-#: ../gio/gsettings-tool.c:603
+#: gio/gsettings-tool.c:657
 msgid ""
 "Monitor KEY for changes.\n"
 "If no KEY is specified, monitor all keys in SCHEMA.\n"
 "Use ^C to stop monitoring.\n"
 msgstr ""
 
-#: ../gio/gsettings-tool.c:606
+#: gio/gsettings-tool.c:660
 msgid "SCHEMA[:PATH] [KEY]"
 msgstr "SCHEMA[:PATH] [KEY]"
 
-#: ../gio/gsettings-tool.c:618
+#: gio/gsettings-tool.c:672
 msgid ""
 "Usage:\n"
-"  gsettings [--schemadir SCHEMADIR] COMMAND [ARGS...]\n"
+"  gsettings --version\n"
+"  gsettings [--schemadir SCHEMADIR] COMMAND [ARGS…]\n"
 "\n"
 "Commands:\n"
 "  help                      Show this information\n"
@@ -2249,6 +3649,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"
@@ -2256,11 +3657,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 ""
 
-#: ../gio/gsettings-tool.c:640
+#: gio/gsettings-tool.c:696
 #, c-format
 msgid ""
 "Usage:\n"
@@ -2270,1941 +3671,2551 @@ msgid ""
 "\n"
 msgstr ""
 
-#: ../gio/gsettings-tool.c:646
+#: gio/gsettings-tool.c:702
 msgid "  SCHEMADIR A directory to search for additional schemas\n"
 msgstr ""
 
-#: ../gio/gsettings-tool.c:654
+#: gio/gsettings-tool.c:710
 msgid ""
 "  SCHEMA    The name of the schema\n"
 "  PATH      The path, for relocatable schemas\n"
 msgstr ""
 
-#: ../gio/gsettings-tool.c:659
+#: gio/gsettings-tool.c:715
 msgid "  KEY       The (optional) key within the schema\n"
 msgstr ""
 
-#: ../gio/gsettings-tool.c:663
+#: gio/gsettings-tool.c:719
 msgid "  KEY       The key within the schema\n"
 msgstr ""
 
-#: ../gio/gsettings-tool.c:667
+#: gio/gsettings-tool.c:723
 msgid "  VALUE     The value to set\n"
 msgstr ""
 
-#: ../gio/gsettings-tool.c:788
-#, c-format
+#: gio/gsettings-tool.c:778
+#, fuzzy, c-format
+#| msgid "Could not open converter from '%s' to '%s'"
+msgid "Could not load schemas from %s: %s\n"
+msgstr "نمی‌توان مبدل «%s» به «%s» را باز کرد"
+
+#: gio/gsettings-tool.c:790
+#, fuzzy
+#| msgid "No schema files found: "
+msgid "No schemas installed\n"
+msgstr "هیچ پرونده شماای پیدا نشد:"
+
+#: gio/gsettings-tool.c:869
 msgid "Empty schema name given\n"
 msgstr ""
 
-#: ../gio/gsocket.c:282
+#: gio/gsettings-tool.c:924
+#, fuzzy, c-format
+#| msgid "No such key '%s'\n"
+msgid "No such key “%s”\n"
+msgstr "همچین کلیدی وجود ندارد «%s»\n"
+
+#: gio/gsocket.c:413
 msgid "Invalid socket, not initialized"
 msgstr ""
 
-#: ../gio/gsocket.c:289
+#: gio/gsocket.c:420
 #, c-format
 msgid "Invalid socket, initialization failed due to: %s"
 msgstr ""
 
-#: ../gio/gsocket.c:297
+#: gio/gsocket.c:428
 msgid "Socket is already closed"
 msgstr "سوکت از قبل بسته شده است"
 
-#: ../gio/gsocket.c:305
-#: ../gio/gsocket.c:3467
-#: ../gio/gsocket.c:3511
+#: gio/gsocket.c:443 gio/gsocket.c:3190 gio/gsocket.c:4420 gio/gsocket.c:4478
 msgid "Socket I/O timed out"
 msgstr ""
 
-#: ../gio/gsocket.c:471
+#: gio/gsocket.c:578
 #, c-format
 msgid "creating GSocket from fd: %s"
 msgstr "درحال ساخت GSocket از طریق fd: %s"
 
-#: ../gio/gsocket.c:505
-#: ../gio/gsocket.c:521
+#: gio/gsocket.c:607 gio/gsocket.c:671 gio/gsocket.c:678
 #, c-format
 msgid "Unable to create socket: %s"
 msgstr "نمی‌توان سوکت را ساخت: %s"
 
-#: ../gio/gsocket.c:505
+#: gio/gsocket.c:671
+#, fuzzy
+#| msgid "Unknown protocol was specified"
+msgid "Unknown family was specified"
+msgstr "پروتکل ناشناسی مشخص شده است"
+
+#: gio/gsocket.c:678
 msgid "Unknown protocol was specified"
 msgstr "پروتکل ناشناسی مشخص شده است"
 
-#: ../gio/gsocket.c:1712
+#: gio/gsocket.c:1169
+#, c-format
+msgid "Cannot use datagram operations on a non-datagram socket."
+msgstr ""
+
+#: gio/gsocket.c:1186
+#, c-format
+msgid "Cannot use datagram operations on a socket with a timeout set."
+msgstr ""
+
+#: gio/gsocket.c:1993
 #, c-format
 msgid "could not get local address: %s"
 msgstr "نمی‌توان آدرس محلی را دریافت کرد: %s"
 
-#: ../gio/gsocket.c:1755
+#: gio/gsocket.c:2039
 #, c-format
 msgid "could not get remote address: %s"
 msgstr "نمی‌توان آدرس دوردست را دریافت کرد: %s"
 
-#: ../gio/gsocket.c:1816
+#: gio/gsocket.c:2105
 #, c-format
 msgid "could not listen: %s"
 msgstr ""
 
-#: ../gio/gsocket.c:1890
+#: gio/gsocket.c:2209
 #, fuzzy, c-format
-msgid "Error binding to address: %s"
+msgid "Error binding to address %s: %s"
 msgstr "خطا در خواندن پروندهٔ «‎%s»‏: %s"
 
-#: ../gio/gsocket.c:1943
-#: ../gio/gsocket.c:1979
+#: gio/gsocket.c:2385 gio/gsocket.c:2422 gio/gsocket.c:2532 gio/gsocket.c:2557 gio/gsocket.c:2620
+#: gio/gsocket.c:2678 gio/gsocket.c:2696
 #, fuzzy, c-format
 msgid "Error joining multicast group: %s"
 msgstr "خطا در راه‌اندازی برنامه: %s"
 
-#: ../gio/gsocket.c:1944
-#: ../gio/gsocket.c:1980
-#, fuzzy, c-format
-msgid "Error leaving multicast group: %s"
-msgstr "خطا در راه‌اندازی برنامه: %s"
+#: gio/gsocket.c:2386 gio/gsocket.c:2423 gio/gsocket.c:2533 gio/gsocket.c:2558 gio/gsocket.c:2621
+#: gio/gsocket.c:2679 gio/gsocket.c:2697
+#, fuzzy, c-format
+msgid "Error leaving multicast group: %s"
+msgstr "خطا در راه‌اندازی برنامه: %s"
+
+#: gio/gsocket.c:2387
+msgid "No support for source-specific multicast"
+msgstr ""
+
+#: gio/gsocket.c:2534
+msgid "Unsupported socket family"
+msgstr ""
+
+#: gio/gsocket.c:2559
+msgid "source-specific not an IPv4 address"
+msgstr ""
+
+#: gio/gsocket.c:2583
+#, c-format
+msgid "Interface name too long"
+msgstr ""
+
+#: gio/gsocket.c:2596 gio/gsocket.c:2646
+#, c-format
+msgid "Interface not found: %s"
+msgstr ""
+
+#: gio/gsocket.c:2622
+msgid "No support for IPv4 source-specific multicast"
+msgstr ""
 
-#: ../gio/gsocket.c:1945
-msgid "No support for source-specific multicast"
+#: gio/gsocket.c:2680
+msgid "No support for IPv6 source-specific multicast"
 msgstr ""
 
-#: ../gio/gsocket.c:2164
+#: gio/gsocket.c:2889
 #, c-format
 msgid "Error accepting connection: %s"
 msgstr "خطا در هنگام پذیرفتن اتصال: %s"
 
-#: ../gio/gsocket.c:2285
+#: gio/gsocket.c:3015
 msgid "Connection in progress"
 msgstr "اتصال در حال پیشروی است"
 
-#: ../gio/gsocket.c:2337
-#: ../gio/gsocket.c:4253
-#, c-format
-msgid "Unable to get pending error: %s"
+#: gio/gsocket.c:3066
+#, fuzzy
+#| msgid "Unable to get pending error: %s"
+msgid "Unable to get pending error: "
 msgstr "ناتوان در دریافت خطای درانتظار: %s"
 
-#: ../gio/gsocket.c:2507
+#: gio/gsocket.c:3255
 #, c-format
 msgid "Error receiving data: %s"
 msgstr "خطا در دریافت داده: %s"
 
-#: ../gio/gsocket.c:2685
+#: gio/gsocket.c:3452
 #, c-format
 msgid "Error sending data: %s"
 msgstr "خطا در ارسال داده: %s"
 
-#: ../gio/gsocket.c:2799
+#: gio/gsocket.c:3639
 #, c-format
 msgid "Unable to shutdown socket: %s"
 msgstr "نمی‌توان سوکت را خاموش کرد: %s"
 
-#: ../gio/gsocket.c:2878
+#: gio/gsocket.c:3720
 #, c-format
 msgid "Error closing socket: %s"
 msgstr "خط در هنگام بستن سوکت: %s"
 
-#: ../gio/gsocket.c:3460
+#: gio/gsocket.c:4413
 #, c-format
 msgid "Waiting for socket condition: %s"
 msgstr "در حال انتظار برای وضعیت سوکت: %s"
 
-#: ../gio/gsocket.c:3727
-#: ../gio/gsocket.c:3808
+#: gio/gsocket.c:4804 gio/gsocket.c:4820 gio/gsocket.c:4833
+#, fuzzy, c-format
+#| msgid "Error sending message: %s"
+msgid "Unable to send message: %s"
+msgstr "خطا در هنگام ارسال پیام: %s"
+
+#: gio/gsocket.c:4805 gio/gsocket.c:4821 gio/gsocket.c:4834
+#, fuzzy
+#| msgid "regular expression too large"
+msgid "Message vectors too large"
+msgstr "عبارت باقاعده بسیار بلند است"
+
+#: gio/gsocket.c:4850 gio/gsocket.c:4852 gio/gsocket.c:4999 gio/gsocket.c:5084 gio/gsocket.c:5262
+#: gio/gsocket.c:5302 gio/gsocket.c:5304
 #, c-format
 msgid "Error sending message: %s"
 msgstr "خطا در هنگام ارسال پیام: %s"
 
-#: ../gio/gsocket.c:3752
-msgid "GSocketControlMessage not supported on windows"
-msgstr ""
+#: gio/gsocket.c:5026
+#, fuzzy
+#| msgid "association changes not supported on win32"
+msgid "GSocketControlMessage not supported on Windows"
+msgstr "تغییر ارتباط در win32 پشتیبانی نمی‌شود"
 
-#: ../gio/gsocket.c:4032
-#: ../gio/gsocket.c:4168
+#: gio/gsocket.c:5495 gio/gsocket.c:5571 gio/gsocket.c:5797
 #, c-format
 msgid "Error receiving message: %s"
 msgstr "خطا در هنگام دریافت پیام: %s"
 
-#: ../gio/gsocket.c:4272
+#: gio/gsocket.c:6070 gio/gsocket.c:6081 gio/gsocket.c:6127
+#, fuzzy, c-format
+#| msgid "Unable to create socket: %s"
+msgid "Unable to read socket credentials: %s"
+msgstr "نمی‌توان سوکت را ساخت: %s"
+
+#: gio/gsocket.c:6136
 msgid "g_socket_get_credentials not implemented for this OS"
 msgstr ""
 
-#: ../gio/gsocketclient.c:174
+#: gio/gsocketclient.c:191
 #, c-format
 msgid "Could not connect to proxy server %s: "
 msgstr ""
 
-#: ../gio/gsocketclient.c:188
+#: gio/gsocketclient.c:205
 #, c-format
 msgid "Could not connect to %s: "
-msgstr "نمی‌توان به %s متصل شد:"
+msgstr "نمی‌توان به %s متصل شد: "
 
-#: ../gio/gsocketclient.c:190
+#: gio/gsocketclient.c:207
 msgid "Could not connect: "
 msgstr ""
 
-#: ../gio/gsocketclient.c:976
-#: ../gio/gsocketclient.c:1547
-msgid "Unknown error on connect"
-msgstr "خطا ناشناخته در اتصال"
-
-#: ../gio/gsocketclient.c:1029
-#: ../gio/gsocketclient.c:1486
-msgid "Trying to proxy over non-TCP connection is not supported."
-msgstr ""
+#: gio/gsocketclient.c:1162 gio/gsocketclient.c:1749
+#, fuzzy
+#| msgid "Proxy protocol '%s' is not supported."
+msgid "Proxying over a non-TCP connection is not supported."
+msgstr "پروتکل پیشکار «%s» پیشتیبانی نمی‌شود."
 
-#: ../gio/gsocketclient.c:1055
-#: ../gio/gsocketclient.c:1507
-#, c-format
-msgid "Proxy protocol '%s' is not supported."
+#: gio/gsocketclient.c:1194 gio/gsocketclient.c:1778
+#, fuzzy, c-format
+#| msgid "Proxy protocol '%s' is not supported."
+msgid "Proxy protocol “%s” is not supported."
 msgstr "پروتکل پیشکار «%s» پیشتیبانی نمی‌شود."
 
-#: ../gio/gsocketlistener.c:191
+#: gio/gsocketlistener.c:230
 msgid "Listener is already closed"
 msgstr "شنونده از قبل بسته شده است"
 
-#: ../gio/gsocketlistener.c:232
+#: gio/gsocketlistener.c:276
 msgid "Added socket is closed"
 msgstr "سوکت اضافه شده بسته است"
 
-#: ../gio/gsocks4aproxy.c:121
-#, c-format
-msgid "SOCKSv4 does not support IPv6 address '%s'"
+#: gio/gsocks4aproxy.c:118
+#, fuzzy, c-format
+#| msgid "SOCKSv4 does not support IPv6 address '%s'"
+msgid "SOCKSv4 does not support IPv6 address “%s”"
 msgstr "پیشکار SOCKSv4 از آدرس IPv6 «%s» پشتیبانی نمی‌کند"
 
-#: ../gio/gsocks4aproxy.c:139
+#: gio/gsocks4aproxy.c:136
 msgid "Username is too long for SOCKSv4 protocol"
 msgstr "نام‌کاربری برای پروتکل SOCKSv4 بسیار بلند است"
 
-#: ../gio/gsocks4aproxy.c:156
-#, c-format
-msgid "Hostname '%s' is too long for SOCKSv4 protocol"
+#: gio/gsocks4aproxy.c:153
+#, fuzzy, c-format
+#| msgid "Hostname '%s' is too long for SOCKSv4 protocol"
+msgid "Hostname “%s” is too long for SOCKSv4 protocol"
 msgstr "نام میزبان «%s» برای پروتکل SOCKSv4 بسیار بلند است"
 
-#: ../gio/gsocks4aproxy.c:182
+#: gio/gsocks4aproxy.c:179
 msgid "The server is not a SOCKSv4 proxy server."
 msgstr "این کارگزار، یک کارگزار پیشکار SOCKSv4 نیست."
 
-#: ../gio/gsocks4aproxy.c:189
+#: gio/gsocks4aproxy.c:186
 msgid "Connection through SOCKSv4 server was rejected"
 msgstr ""
 
-#: ../gio/gsocks5proxy.c:155
-#: ../gio/gsocks5proxy.c:326
-#: ../gio/gsocks5proxy.c:336
+#: gio/gsocks5proxy.c:153 gio/gsocks5proxy.c:338 gio/gsocks5proxy.c:348
 msgid "The server is not a SOCKSv5 proxy server."
 msgstr ""
 
-#: ../gio/gsocks5proxy.c:169
+#: gio/gsocks5proxy.c:167 gio/gsocks5proxy.c:184
 msgid "The SOCKSv5 proxy requires authentication."
 msgstr "پیشکار SOCKSv5 به تصدیق هویت نیاز دارد."
 
-#: ../gio/gsocks5proxy.c:179
+#: gio/gsocks5proxy.c:191
 msgid "The SOCKSv5 proxy requires an authentication method that is not supported by GLib."
 msgstr "پیشکار SOCKSv5 به نوعی از تصدیق هویت نیاز دارد که در GLib پشتیبانی نمی‌شود."
 
-#: ../gio/gsocks5proxy.c:208
+#: gio/gsocks5proxy.c:220
 msgid "Username or password is too long for SOCKSv5 protocol."
 msgstr "نام‌کاربری یا گذرواژه برای پروتکل SOCKSv5 بسیار بزرگ است."
 
-#: ../gio/gsocks5proxy.c:238
+#: gio/gsocks5proxy.c:250
 msgid "SOCKSv5 authentication failed due to wrong username or password."
 msgstr "تصدیق هویت SOCKSv5 با توجه به اشتباه بودن گذرواژه و نام‌کاربری شکست خورد."
 
-#: ../gio/gsocks5proxy.c:288
-#, c-format
-msgid "Hostname '%s' is too long for SOCKSv5 protocol"
+#: gio/gsocks5proxy.c:300
+#, fuzzy, c-format
+#| msgid "Hostname '%s' is too long for SOCKSv5 protocol"
+msgid "Hostname “%s” is too long for SOCKSv5 protocol"
 msgstr "نام میزبان «%s» برای پروتکل SOCKSv5 بسیار بزرگ است"
 
-#: ../gio/gsocks5proxy.c:350
+#: gio/gsocks5proxy.c:362
 msgid "The SOCKSv5 proxy server uses unknown address type."
 msgstr "کارگزار پیشکار SOCKSv5 از نوعی آدرس ناشناخته استفاده می‌کند."
 
-#: ../gio/gsocks5proxy.c:357
+#: gio/gsocks5proxy.c:369
 msgid "Internal SOCKSv5 proxy server error."
 msgstr "خطای داخلی کارگزار پیشکار SOCKSv5."
 
-#: ../gio/gsocks5proxy.c:363
+#: gio/gsocks5proxy.c:375
 msgid "SOCKSv5 connection not allowed by ruleset."
 msgstr ""
 
-#: ../gio/gsocks5proxy.c:370
+#: gio/gsocks5proxy.c:382
 msgid "Host unreachable through SOCKSv5 server."
 msgstr "میزبان از طریق کارگزار SOCKSv5 در دسترس نیست."
 
-#: ../gio/gsocks5proxy.c:376
+#: gio/gsocks5proxy.c:388
 msgid "Network unreachable through SOCKSv5 proxy."
 msgstr "شبکه از طریق پیشکار SOCKSv5 غیرقابل دسترس است."
 
-#: ../gio/gsocks5proxy.c:382
+#: gio/gsocks5proxy.c:394
 msgid "Connection refused through SOCKSv5 proxy."
 msgstr "اتصال از طریق پیشکار SOCKSv5 رد شد."
 
-#: ../gio/gsocks5proxy.c:388
-msgid "SOCKSv5 proxy does not support 'connect' command."
+#: gio/gsocks5proxy.c:400
+#, fuzzy
+#| msgid "SOCKSv5 proxy does not support 'connect' command."
+msgid "SOCKSv5 proxy does not support “connect” command."
 msgstr "پیشکار SOCKSv5 از فرمان «connect» پشتیبانی نمی‌کند."
 
-#: ../gio/gsocks5proxy.c:394
+#: gio/gsocks5proxy.c:406
 msgid "SOCKSv5 proxy does not support provided address type."
 msgstr "پیشکار SOCKSv5 از نوع آدرس ارائه شده پشتیبانی نمی‌کند."
 
-#: ../gio/gsocks5proxy.c:400
+#: gio/gsocks5proxy.c:412
 msgid "Unknown SOCKSv5 proxy error."
 msgstr "خطا ناشناس پیشکار نسخه ۵ SOCKS."
 
-#: ../gio/gthemedicon.c:498
-#, c-format
-msgid "Can't handle version %d of GThemedIcon encoding"
+#: gio/gthemedicon.c:595
+#, fuzzy, c-format
+#| msgid "Can't handle version %d of GThemedIcon encoding"
+msgid "Can’t handle version %d of GThemedIcon encoding"
 msgstr "نمی‌توان با رمزنگاری نسخه %Id GThemedIcon را کار کرد"
 
-#: ../gio/gtlscertificate.c:249
-#, fuzzy
-msgid "Cannot decrypt PEM-encoded private key"
-msgstr "نمی‌توان کلید خصوصی رمزنگاری شده PEM را تجزیه کرد"
+#: gio/gthreadedresolver.c:152
+msgid "No valid addresses were found"
+msgstr ""
+
+#: gio/gthreadedresolver.c:337
+#, fuzzy, c-format
+#| msgid "Error reverse-resolving '%s': %s"
+msgid "Error reverse-resolving “%s”: %s"
+msgstr "خطا در هنگام برطرف‌سازی معکوس «%s»: %s"
+
+#: gio/gthreadedresolver.c:676 gio/gthreadedresolver.c:755 gio/gthreadedresolver.c:853
+#: gio/gthreadedresolver.c:903
+#, c-format
+msgid "No DNS record of the requested type for “%s”"
+msgstr ""
+
+#: gio/gthreadedresolver.c:681 gio/gthreadedresolver.c:858
+#, c-format
+msgid "Temporarily unable to resolve “%s”"
+msgstr ""
+
+#: gio/gthreadedresolver.c:686 gio/gthreadedresolver.c:863 gio/gthreadedresolver.c:973
+#, fuzzy, c-format
+#| msgid "Error resolving '%s'"
+msgid "Error resolving “%s”"
+msgstr "خطا در هنگام برطرف‌سازی «%s»"
 
-#: ../gio/gtlscertificate.c:254
+#: gio/gtlscertificate.c:419
 msgid "No PEM-encoded private key found"
 msgstr "هیچ کلید خصوصی رمز‌نگاری شده PEM پیدا نشد"
 
-#: ../gio/gtlscertificate.c:264
+#: gio/gtlscertificate.c:429
+#, fuzzy
+msgid "Cannot decrypt PEM-encoded private key"
+msgstr "نمی‌توان کلید خصوصی رمزنگاری شده PEM را تجزیه کرد"
+
+#: gio/gtlscertificate.c:440
 msgid "Could not parse PEM-encoded private key"
 msgstr "نمی‌توان کلید خصوصی رمزنگاری شده PEM را تجزیه کرد"
 
-#: ../gio/gtlscertificate.c:289
+#: gio/gtlscertificate.c:467
 msgid "No PEM-encoded certificate found"
 msgstr "هیچ گواهینامه رمزنگاری شده PEM پیدا نشد"
 
-#: ../gio/gtlscertificate.c:298
+#: gio/gtlscertificate.c:476
 msgid "Could not parse PEM-encoded certificate"
 msgstr "نمی‌توان گواهینامه رمزنگاری شده PEM را پیدا کرد"
 
-#: ../gio/gtlspassword.c:114
+#: gio/gtlscertificate.c:832
+msgid "This GTlsBackend does not support creating PKCS #11 certificates"
+msgstr ""
+
+#: gio/gtlspassword.c:111
 msgid "This is the last chance to enter the password correctly before your access is locked out."
 msgstr "این آخرین شانس برای وارد کردن گذرواژه بطور صحیح قبل از قفل شدن دسترسی شما است."
 
-#: ../gio/gtlspassword.c:116
-msgid "Several password entered have been incorrect, and your access will be locked out after further failures."
+#. 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 passwords entered have been incorrect, and your access will be locked out after further failures."
 msgstr "تعدادی از گذرواژهای وارد شده نادرست بوده‌اند، و دسترسی شما بعد از اشتباهات بعدی بسته خواهد شد."
 
-#: ../gio/gtlspassword.c:118
+#: gio/gtlspassword.c:117
 msgid "The password entered is incorrect."
 msgstr "گذرواژه وارد شده نادرست است."
 
-#: ../gio/gunixconnection.c:164
-#: ../gio/gunixconnection.c:580
-#, c-format
+#: gio/gunixconnection.c:166 gio/gunixconnection.c:579
+#, fuzzy, c-format
+#| msgid "Expecting 1 control message, got %d"
 msgid "Expecting 1 control message, got %d"
-msgstr "انتظار ۱ پیام کنترلی می‌رفت، %Id مورد دریافت شد"
+msgid_plural "Expecting 1 control message, got %d"
+msgstr[0] "انتظار ۱ پیام کنترلی می‌رفت، %Id مورد دریافت شد"
+msgstr[1] "انتظار ۱ پیام کنترلی می‌رفت، %Id مورد دریافت شد"
 
-#: ../gio/gunixconnection.c:177
-#: ../gio/gunixconnection.c:590
+#: gio/gunixconnection.c:182 gio/gunixconnection.c:591
 msgid "Unexpected type of ancillary data"
 msgstr "نوع داده کمکی غیرمنتظره"
 
-#: ../gio/gunixconnection.c:195
-#, c-format
+#: gio/gunixconnection.c:200
+#, fuzzy, c-format
+#| msgid "Expecting one fd, but got %d\n"
 msgid "Expecting one fd, but got %d\n"
-msgstr "انتظار یک fd می‌رفت، اما %Id مورد دریافت شد\n"
+msgid_plural "Expecting one fd, but got %d\n"
+msgstr[0] "انتظار یک fd می‌رفت، اما %Id مورد دریافت شد\n"
+msgstr[1] "انتظار یک fd می‌رفت، اما %Id مورد دریافت شد\n"
 
-#: ../gio/gunixconnection.c:211
+#: gio/gunixconnection.c:219
 msgid "Received invalid fd"
 msgstr "یک fd نامعتبر دریافت شد"
 
-#: ../gio/gunixconnection.c:347
+#: gio/gunixconnection.c:363
 msgid "Error sending credentials: "
 msgstr "خطا در زمان ارسال گواهینامه: "
 
-#: ../gio/gunixconnection.c:511
+#: gio/gunixconnection.c:520
 #, c-format
 msgid "Error checking if SO_PASSCRED is enabled for socket: %s"
 msgstr "خطا در هنگام بررسی اینکه آیا SO_PASSCRED f برای سوکت فعال است یا خیر: %s"
 
-#: ../gio/gunixconnection.c:520
-#, c-format
-msgid "Unexpected option length while checking if SO_PASSCRED is enabled for socket. Expected %d bytes, got %d"
-msgstr ""
-
-#: ../gio/gunixconnection.c:537
+#: gio/gunixconnection.c:536
 #, c-format
 msgid "Error enabling SO_PASSCRED: %s"
 msgstr "خطا در هنگام فعال کردن SO_PASSCRED: %s"
 
-#: ../gio/gunixconnection.c:568
+#: gio/gunixconnection.c:565
 msgid "Expecting to read a single byte for receiving credentials but read zero bytes"
 msgstr "انتظار خواندن یک بایت برای دریافت گواهینامه می‌رفت اما صفر بایت خوانده شد"
 
-#: ../gio/gunixconnection.c:604
+#: gio/gunixconnection.c:605
 #, c-format
 msgid "Not expecting control message, but got %d"
 msgstr "انتظار پیام کنترلی نمی‌رفت، اما %Id دریافت شد"
 
-#: ../gio/gunixconnection.c:630
+#: gio/gunixconnection.c:630
 #, c-format
 msgid "Error while disabling SO_PASSCRED: %s"
 msgstr "خطا در هنگام غیرفعال‌سازی SO_PASSCRED: %s"
 
-#: ../gio/gunixinputstream.c:392
-#: ../gio/gunixinputstream.c:413
-#: ../gio/gunixinputstream.c:492
+#: gio/gunixinputstream.c:357 gio/gunixinputstream.c:378
 #, fuzzy, c-format
 msgid "Error reading from file descriptor: %s"
 msgstr "خطا در هنگام تنظیم توصیف‌گر پرونده: %s"
 
-#: ../gio/gunixinputstream.c:447
-#: ../gio/gunixinputstream.c:642
-#: ../gio/gunixoutputstream.c:433
-#: ../gio/gunixoutputstream.c:597
+#: gio/gunixinputstream.c:411 gio/gunixoutputstream.c:520 gio/gwin32inputstream.c:217
+#: gio/gwin32outputstream.c:204
 #, fuzzy, c-format
 msgid "Error closing file descriptor: %s"
 msgstr "خطا در هنگام تنظیم توصیف‌گر پرونده: %s"
 
-#: ../gio/gunixmounts.c:1983
-#: ../gio/gunixmounts.c:2020
+#: gio/gunixmounts.c:2785 gio/gunixmounts.c:2838
 msgid "Filesystem root"
 msgstr "ریشه سیستم‌پرونده‌ها"
 
-#: ../gio/gunixoutputstream.c:378
-#: ../gio/gunixoutputstream.c:399
-#: ../gio/gunixoutputstream.c:478
+#: gio/gunixoutputstream.c:357 gio/gunixoutputstream.c:377 gio/gunixoutputstream.c:464
+#: gio/gunixoutputstream.c:484 gio/gunixoutputstream.c:630
 #, fuzzy, c-format
 msgid "Error writing to file descriptor: %s"
 msgstr "خطا در هنگام تنظیم توصیف‌گر پرونده: %s"
 
-#: ../gio/gunixsocketaddress.c:244
-msgid "Abstract unix domain socket addresses not supported on this system"
+#: gio/gunixsocketaddress.c:244
+msgid "Abstract UNIX domain socket addresses not supported on this system"
 msgstr ""
 
-#: ../gio/gvolume.c:408
-msgid "volume doesn't implement eject"
+#: gio/gvolume.c:438
+#, fuzzy
+#| msgid "volume doesn't implement eject"
+msgid "volume doesn’t implement eject"
 msgstr "جلد قابلیت eject ندارد"
 
 #. Translators: This is an error
 #. * message for volume objects that
 #. * don't implement any of eject or eject_with_operation.
-#: ../gio/gvolume.c:488
-msgid "volume doesn't implement eject or eject_with_operation"
+#: gio/gvolume.c:515
+#, fuzzy
+#| msgid "volume doesn't implement eject or eject_with_operation"
+msgid "volume doesn’t implement eject or eject_with_operation"
 msgstr "جلد قابلیت eject یا eject_with_operation را ندارد"
 
-#: ../gio/gwin32appinfo.c:276
-msgid "Can't find application"
-msgstr "نمی‌توان برنامه را پیدا کرد"
-
-#: ../gio/gwin32appinfo.c:308
-#, c-format
-msgid "Error launching application: %s"
-msgstr "خطا در راه‌اندازی برنامه: %s"
-
-#: ../gio/gwin32appinfo.c:344
-msgid "URIs not supported"
-msgstr "آدرس‌ها پشتیبانی نمی‌شود"
-
-#: ../gio/gwin32appinfo.c:366
-msgid "association changes not supported on win32"
-msgstr "تغییر ارتباط در win32 پشتیبانی نمی‌شود"
-
-#: ../gio/gwin32appinfo.c:378
-msgid "Association creation not supported on win32"
-msgstr "ساخت ارتباط بر روی win32 پشتیبانی نمی‌شود"
-
-#: ../gio/gwin32inputstream.c:318
+#: gio/gwin32inputstream.c:185
 #, fuzzy, c-format
 msgid "Error reading from handle: %s"
 msgstr "خطا در خواندن پروندهٔ «‎%s»‏: %s"
 
-#: ../gio/gwin32inputstream.c:348
-#: ../gio/gwin32outputstream.c:348
+#: gio/gwin32inputstream.c:232 gio/gwin32outputstream.c:219
 #, fuzzy, c-format
 msgid "Error closing handle: %s"
 msgstr "خطا در خواندن پروندهٔ «‎%s»‏: %s"
 
-#: ../gio/gwin32outputstream.c:318
+#: gio/gwin32outputstream.c:172
 #, fuzzy, c-format
 msgid "Error writing to handle: %s"
 msgstr "خطا در خواندن پروندهٔ «‎%s»‏: %s"
 
-#: ../gio/gzlibcompressor.c:396
-#: ../gio/gzlibdecompressor.c:349
+#: gio/gzlibcompressor.c:394 gio/gzlibdecompressor.c:347
 msgid "Not enough memory"
 msgstr "حافظه کافی موجود نیست"
 
-#: ../gio/gzlibcompressor.c:403
-#: ../gio/gzlibdecompressor.c:356
+#: gio/gzlibcompressor.c:401 gio/gzlibdecompressor.c:354
 #, c-format
 msgid "Internal error: %s"
 msgstr "خطا داخلی: %s"
 
-#: ../gio/gzlibcompressor.c:416
-#: ../gio/gzlibdecompressor.c:370
+#: gio/gzlibcompressor.c:414 gio/gzlibdecompressor.c:368
 msgid "Need more input"
 msgstr "ورودی بیشتر لازم است"
 
-#: ../gio/gzlibdecompressor.c:342
+#: gio/gzlibdecompressor.c:340
 msgid "Invalid compressed data"
 msgstr "داده فشرده شده نامعتبر"
 
-#: ../glib/gbookmarkfile.c:760
-#, c-format
-msgid "Unexpected attribute '%s' for element '%s'"
+#: gio/tests/gdbus-daemon.c:18
+msgid "Address to listen on"
+msgstr ""
+
+#: gio/tests/gdbus-daemon.c:19
+msgid "Ignored, for compat with GTestDbus"
+msgstr ""
+
+#: gio/tests/gdbus-daemon.c:20
+msgid "Print address"
+msgstr "چاپ آدرس"
+
+#: gio/tests/gdbus-daemon.c:21
+msgid "Print address in shell mode"
+msgstr ""
+
+#: gio/tests/gdbus-daemon.c:28
+msgid "Run a dbus service"
+msgstr ""
+
+#: gio/tests/gdbus-daemon.c:42
+msgid "Wrong args\n"
+msgstr ""
+
+#: glib/gbookmarkfile.c:777
+#, fuzzy, c-format
+#| msgid "Unexpected attribute '%s' for element '%s'"
+msgid "Unexpected attribute “%s” for element “%s”"
 msgstr "مشخصهٔ غیرمنتظرهٔ «%s» برای عنصر «%s»"
 
-#: ../glib/gbookmarkfile.c:771
-#: ../glib/gbookmarkfile.c:842
-#: ../glib/gbookmarkfile.c:852
-#: ../glib/gbookmarkfile.c:959
-#, c-format
-msgid "Attribute '%s' of element '%s' not found"
+#: glib/gbookmarkfile.c:788 glib/gbookmarkfile.c:868 glib/gbookmarkfile.c:878 glib/gbookmarkfile.c:991
+#, fuzzy, c-format
+#| msgid "Attribute '%s' of element '%s' not found"
+msgid "Attribute “%s” of element “%s” not found"
 msgstr "مشخصهٔ «%s» برای عنصر «%s» پیدا نشد"
 
-#: ../glib/gbookmarkfile.c:1129
-#: ../glib/gbookmarkfile.c:1194
-#: ../glib/gbookmarkfile.c:1258
-#: ../glib/gbookmarkfile.c:1268
-#, c-format
-msgid "Unexpected tag '%s', tag '%s' expected"
+#: glib/gbookmarkfile.c:1200 glib/gbookmarkfile.c:1265 glib/gbookmarkfile.c:1329 glib/gbookmarkfile.c:1339
+#, fuzzy, c-format
+#| msgid "Unexpected tag '%s', tag '%s' expected"
+msgid "Unexpected tag “%s”, tag “%s” expected"
 msgstr "برچسب غیرمنتظرهٔ «%s»، برچسب «%s» انتظار می‌رفت"
 
-#: ../glib/gbookmarkfile.c:1154
-#: ../glib/gbookmarkfile.c:1168
-#: ../glib/gbookmarkfile.c:1236
-#: ../glib/gbookmarkfile.c:1288
-#, c-format
-msgid "Unexpected tag '%s' inside '%s'"
+#: glib/gbookmarkfile.c:1225 glib/gbookmarkfile.c:1239 glib/gbookmarkfile.c:1307 glib/gbookmarkfile.c:1353
+#, fuzzy, c-format
+#| msgid "Unexpected tag '%s' inside '%s'"
+msgid "Unexpected tag “%s” inside “%s”"
 msgstr "برچسب غیرمنتظرهٔ «%s» داخل «%s»"
 
-#: ../glib/gbookmarkfile.c:1806
+#: glib/gbookmarkfile.c:1633
+#, c-format
+msgid "Invalid date/time ‘%s’ in bookmark file"
+msgstr ""
+
+#: glib/gbookmarkfile.c:1836
 msgid "No valid bookmark file found in data dirs"
 msgstr "پروندهٔ چوب‌الف معتبری در شاخه‌های داده پیدا نمی‌شود"
 
-#: ../glib/gbookmarkfile.c:2007
-#, c-format
-msgid "A bookmark for URI '%s' already exists"
+#: glib/gbookmarkfile.c:2037
+#, fuzzy, c-format
+#| msgid "A bookmark for URI '%s' already exists"
+msgid "A bookmark for URI “%s” already exists"
 msgstr "چوب‌الفی برای نشانی «‎%s» از قبل موجود است"
 
-#: ../glib/gbookmarkfile.c:2053
-#: ../glib/gbookmarkfile.c:2211
-#: ../glib/gbookmarkfile.c:2296
-#: ../glib/gbookmarkfile.c:2376
-#: ../glib/gbookmarkfile.c:2461
-#: ../glib/gbookmarkfile.c:2544
-#: ../glib/gbookmarkfile.c:2622
-#: ../glib/gbookmarkfile.c:2701
-#: ../glib/gbookmarkfile.c:2743
-#: ../glib/gbookmarkfile.c:2840
-#: ../glib/gbookmarkfile.c:2960
-#: ../glib/gbookmarkfile.c:3150
-#: ../glib/gbookmarkfile.c:3226
-#: ../glib/gbookmarkfile.c:3391
-#: ../glib/gbookmarkfile.c:3480
-#: ../glib/gbookmarkfile.c:3570
-#: ../glib/gbookmarkfile.c:3698
-#, c-format
-msgid "No bookmark found for URI '%s'"
+#: glib/gbookmarkfile.c:2086 glib/gbookmarkfile.c:2244 glib/gbookmarkfile.c:2329 glib/gbookmarkfile.c:2409
+#: glib/gbookmarkfile.c:2494 glib/gbookmarkfile.c:2628 glib/gbookmarkfile.c:2761 glib/gbookmarkfile.c:2896
+#: glib/gbookmarkfile.c:2938 glib/gbookmarkfile.c:3035 glib/gbookmarkfile.c:3156 glib/gbookmarkfile.c:3350
+#: glib/gbookmarkfile.c:3491 glib/gbookmarkfile.c:3710 glib/gbookmarkfile.c:3799 glib/gbookmarkfile.c:3888
+#: glib/gbookmarkfile.c:4007
+#, fuzzy, c-format
+#| msgid "No bookmark found for URI '%s'"
+msgid "No bookmark found for URI “%s”"
 msgstr "چوب‌الفی برای نشانی «‎%s» پیدا نشد"
 
-#: ../glib/gbookmarkfile.c:2385
-#, c-format
-msgid "No MIME type defined in the bookmark for URI '%s'"
+#: glib/gbookmarkfile.c:2418
+#, 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 "هیچ نوع MIME در چوب‌الف برای نشانی «‎%s» تعریف نشده است"
 
-#: ../glib/gbookmarkfile.c:2470
-#, c-format
-msgid "No private flag has been defined in bookmark for URI '%s'"
+#: glib/gbookmarkfile.c:2503
+#, 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 "پرچم خصوصی‌ای برای چوب‌الف برای نشانی «%s» تعریف نشده است"
 
-#: ../glib/gbookmarkfile.c:2849
-#, c-format
-msgid "No groups set in bookmark for URI '%s'"
+#: glib/gbookmarkfile.c:3044
+#, fuzzy, c-format
+#| msgid "No groups set in bookmark for URI '%s'"
+msgid "No groups set in bookmark for URI “%s”"
 msgstr "گروهی در چوب‌الف برای نشانی «‎%s» تعیین نشده است"
 
-#: ../glib/gbookmarkfile.c:3244
-#: ../glib/gbookmarkfile.c:3401
-#, c-format
-msgid "No application with name '%s' registered a bookmark for '%s'"
+#: glib/gbookmarkfile.c:3512 glib/gbookmarkfile.c:3720
+#, 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 "برنامه‌ای با نام «%s» چوب‌الفی برای «‎%s» ثبت نکرده است"
 
-#: ../glib/gbookmarkfile.c:3424
+#: glib/gbookmarkfile.c:3743
 #, fuzzy, c-format
-msgid "Failed to expand exec line '%s' with URI '%s'"
+msgid "Failed to expand exec line “%s” with URI “%s”"
 msgstr "خواندن پیوند نمادی «‎%s» شکست خورد: %s"
 
-#: ../glib/gconvert.c:806
-#: ../glib/gutf8.c:837
-#: ../glib/gutf8.c:1047
-#: ../glib/gutf8.c:1184
-#: ../glib/gutf8.c:1288
+#: glib/gconvert.c:468
+#, fuzzy
+#| msgid "Invalid sequence in conversion input"
+msgid "Unrepresentable character in conversion input"
+msgstr "دنبالهٔ نامعتبر در ورودی تبدیل"
+
+#: glib/gconvert.c:495 glib/gutf8.c:871 glib/gutf8.c:1083 glib/gutf8.c:1220 glib/gutf8.c:1324
 msgid "Partial character sequence at end of input"
 msgstr "دنباله نویسهٔ ناتمام در انتهای ورودی"
 
-#: ../glib/gconvert.c:1056
-#, c-format
-msgid "Cannot convert fallback '%s' to codeset '%s'"
+#: glib/gconvert.c:764
+#, fuzzy, c-format
+#| msgid "Cannot convert fallback '%s' to codeset '%s'"
+msgid "Cannot convert fallback “%s” to codeset “%s”"
 msgstr "نمی‌توان عقب‌نشینی «%s» را به مجموعه کد «%s» تبدیل کرد"
 
-#: ../glib/gconvert.c:1873
-#, c-format
-msgid "The URI '%s' is not an absolute URI using the \"file\" scheme"
+#: glib/gconvert.c:936
+#, fuzzy
+#| msgid "Invalid byte sequence in conversion input"
+msgid "Embedded NUL byte in conversion input"
+msgstr "دنبالهٔ بایتی نامعتبر در ورودی تبدیل"
+
+#: glib/gconvert.c:957
+#, fuzzy
+#| msgid "Invalid byte sequence in conversion input"
+msgid "Embedded NUL byte in conversion output"
+msgstr "دنبالهٔ بایتی نامعتبر در ورودی تبدیل"
+
+#: glib/gconvert.c:1688
+#, fuzzy, c-format
+#| msgid "The URI '%s' is not an absolute URI using the \"file\" scheme"
+msgid "The URI “%s” is not an absolute URI using the “file” scheme"
 msgstr "نشانی «‎%s» یک نشانی اینترنتی مطلق با شِمای «پرونده» نیست"
 
-#: ../glib/gconvert.c:1883
-#, c-format
-msgid "The local file URI '%s' may not include a '#'"
+#: glib/gconvert.c:1698
+#, fuzzy, c-format
+#| msgid "The local file URI '%s' may not include a '#'"
+msgid "The local file URI “%s” may not include a “#”"
 msgstr "نشانی پروندهٔ محلی «‎%s» نمی‌تواند «#» داشته باشد"
 
-#: ../glib/gconvert.c:1900
-#, c-format
-msgid "The URI '%s' is invalid"
+#: glib/gconvert.c:1715
+#, fuzzy, c-format
+#| msgid "The URI '%s' is invalid"
+msgid "The URI “%s” is invalid"
 msgstr "نشانی اینترنتی «%s» نامعتبر است"
 
-#: ../glib/gconvert.c:1912
-#, c-format
-msgid "The hostname of the URI '%s' is invalid"
+#: glib/gconvert.c:1727
+#, fuzzy, c-format
+#| msgid "The hostname of the URI '%s' is invalid"
+msgid "The hostname of the URI “%s” is invalid"
 msgstr "نام میزبان نشانی اینترنتی «‎%s» نامعتبر است"
 
-#: ../glib/gconvert.c:1928
-#, c-format
-msgid "The URI '%s' contains invalidly escaped characters"
+#: glib/gconvert.c:1743
+#, fuzzy, c-format
+#| msgid "The URI '%s' contains invalidly escaped characters"
+msgid "The URI “%s” contains invalidly escaped characters"
 msgstr "نشانی اینترنتی «‎%s» نویسه‌های گریختهٔ نامعتبر دارد"
 
-#: ../glib/gconvert.c:2023
-#, c-format
-msgid "The pathname '%s' is not an absolute path"
+#: glib/gconvert.c:1815
+#, fuzzy, c-format
+#| msgid "The pathname '%s' is not an absolute path"
+msgid "The pathname “%s” is not an absolute path"
 msgstr "نام مسیر «‎%s» یک مسیر مطلق نیست"
 
-#: ../glib/gconvert.c:2033
-msgid "Invalid hostname"
-msgstr "نام میزبان نامعتبر"
-
-#. Translators: 'before midday' indicator
-#: ../glib/gdatetime.c:205
-msgctxt "GDateTime"
-msgid "AM"
-msgstr "ق‌ظ"
-
-#. Translators: 'after midday' indicator
-#: ../glib/gdatetime.c:207
-msgctxt "GDateTime"
-msgid "PM"
-msgstr "ب‌ظ"
-
+# استفاده از نویسه‌های U+2266 و U+2269 برای ایزوله‌کردن زمان، تا به درستی نمایش داده شود.
 #. Translators: this is the preferred format for expressing the date and the time
-#: ../glib/gdatetime.c:210
+#: glib/gdatetime.c:226
 msgctxt "GDateTime"
 msgid "%a %b %e %H:%M:%S %Y"
-msgstr "‫%A %Oe %B %Oy، %OH:%OM:%OS‬"
+msgstr "%A %Oe %B %Oy، ⁦%OH:%OM:%OS⁩"
 
+# استفاده از نویسه‌های U+2266 و U+2269 برای ایزوله‌کردن تاریخ، تا به درستی نمایش داده شود.
 #. Translators: this is the preferred format for expressing the date
-#: ../glib/gdatetime.c:213
+#: glib/gdatetime.c:229
 msgctxt "GDateTime"
 msgid "%m/%d/%y"
-msgstr "%Oy/%Om/%Od"
+msgstr "⁩%Oy/%Om/%Od⁩"
 
+# استفاده از نویسه‌های U+2266 و U+2269 برای ایزوله‌کردن زمان، تا به درستی نمایش داده شود.
 #. Translators: this is the preferred format for expressing the time
-#: ../glib/gdatetime.c:216
+#: glib/gdatetime.c:232
 msgctxt "GDateTime"
 msgid "%H:%M:%S"
-msgstr "%OH:%OM:%OS"
+msgstr "⁦%OH:%OM:%OS⁩"
 
+# استفاده از نویسه‌های U+2266 و U+2269 برای ایزوله‌کردن زمان، تا به درستی نمایش داده شود.
 #. Translators: this is the preferred format for expressing 12 hour time
-#: ../glib/gdatetime.c:219
+#: glib/gdatetime.c:235
 msgctxt "GDateTime"
 msgid "%I:%M:%S %p"
-msgstr "%OI:%OM:%OS %p"
-
-#: ../glib/gdatetime.c:232
+msgstr "⁦%OI:%OM:%OS⁩ %p"
+
+#. Translators: Some languages (Baltic, Slavic, Greek, and some more)
+#. * need different grammatical forms of month names depending on whether
+#. * they are standalone or in a complete date context, with the day
+#. * number.  Some other languages may prefer starting with uppercase when
+#. * they are standalone and with lowercase when they are in a complete
+#. * date context.  Here are full month names in a form appropriate when
+#. * they are used standalone.  If your system is Linux with the glibc
+#. * version 2.27 (released Feb 1, 2018) or newer or if it is from the BSD
+#. * family (which includes OS X) then you can refer to the date command
+#. * line utility and see what the command `date +%OB' produces.  Also in
+#. * the latest Linux the command `locale alt_mon' in your native locale
+#. * produces a complete list of month names almost ready to copy and
+#. * paste here.  Note that in most of the languages (western European,
+#. * non-European) there is no difference between the standalone and
+#. * complete date form.
+#.
+#: glib/gdatetime.c:274
 msgctxt "full month name"
 msgid "January"
 msgstr "ژانویه"
 
-#: ../glib/gdatetime.c:234
+#: glib/gdatetime.c:276
 msgctxt "full month name"
 msgid "February"
 msgstr "فوریه"
 
-#: ../glib/gdatetime.c:236
+#: glib/gdatetime.c:278
 msgctxt "full month name"
 msgid "March"
 msgstr "مارس"
 
-#: ../glib/gdatetime.c:238
+#: glib/gdatetime.c:280
 msgctxt "full month name"
 msgid "April"
 msgstr "آوریل"
 
-#: ../glib/gdatetime.c:240
+#: glib/gdatetime.c:282
 msgctxt "full month name"
 msgid "May"
 msgstr "مه"
 
-#: ../glib/gdatetime.c:242
+#: glib/gdatetime.c:284
 msgctxt "full month name"
 msgid "June"
 msgstr "ژوئن"
 
-#: ../glib/gdatetime.c:244
+#: glib/gdatetime.c:286
 msgctxt "full month name"
 msgid "July"
 msgstr "ژوئیه"
 
-#: ../glib/gdatetime.c:246
+#: glib/gdatetime.c:288
 msgctxt "full month name"
 msgid "August"
 msgstr "آگوست"
 
-#: ../glib/gdatetime.c:248
+#: glib/gdatetime.c:290
 msgctxt "full month name"
 msgid "September"
 msgstr "سپتامبر"
 
-#: ../glib/gdatetime.c:250
+#: glib/gdatetime.c:292
 msgctxt "full month name"
 msgid "October"
 msgstr "اکتبر"
 
-#: ../glib/gdatetime.c:252
+#: glib/gdatetime.c:294
 msgctxt "full month name"
 msgid "November"
 msgstr "نوامبر"
 
-#: ../glib/gdatetime.c:254
+#: glib/gdatetime.c:296
 msgctxt "full month name"
 msgid "December"
 msgstr "دسامبر"
 
-#: ../glib/gdatetime.c:269
+#. Translators: Some languages need different grammatical forms of
+#. * month names depending on whether they are standalone or in a complete
+#. * date context, with the day number.  Some may prefer starting with
+#. * uppercase when they are standalone and with lowercase when they are
+#. * in a full date context.  However, as these names are abbreviated
+#. * the grammatical difference is visible probably only in Belarusian
+#. * and Russian.  In other languages there is no difference between
+#. * the standalone and complete date form when they are abbreviated.
+#. * If your system is Linux with the glibc version 2.27 (released
+#. * Feb 1, 2018) or newer then you can refer to the date command line
+#. * utility and see what the command `date +%Ob' produces.  Also in
+#. * the latest Linux the command `locale ab_alt_mon' in your native
+#. * locale produces a complete list of month names almost ready to copy
+#. * and paste here.  Note that this feature is not yet supported by any
+#. * other platform.  Here are abbreviated month names in a form
+#. * appropriate when they are used standalone.
+#.
+#: glib/gdatetime.c:328
 msgctxt "abbreviated month name"
 msgid "Jan"
 msgstr "ژانویه"
 
-#: ../glib/gdatetime.c:271
+#: glib/gdatetime.c:330
 msgctxt "abbreviated month name"
 msgid "Feb"
 msgstr "فوریه"
 
-#: ../glib/gdatetime.c:273
+#: glib/gdatetime.c:332
 msgctxt "abbreviated month name"
 msgid "Mar"
 msgstr "مارس"
 
-#: ../glib/gdatetime.c:275
+#: glib/gdatetime.c:334
 msgctxt "abbreviated month name"
 msgid "Apr"
 msgstr "آوریل"
 
-#: ../glib/gdatetime.c:277
+#: glib/gdatetime.c:336
 msgctxt "abbreviated month name"
 msgid "May"
 msgstr "مه"
 
-#: ../glib/gdatetime.c:279
+#: glib/gdatetime.c:338
 msgctxt "abbreviated month name"
 msgid "Jun"
 msgstr "ژوئن"
 
-#: ../glib/gdatetime.c:281
+#: glib/gdatetime.c:340
 msgctxt "abbreviated month name"
 msgid "Jul"
 msgstr "ژوئیه"
 
-#: ../glib/gdatetime.c:283
+#: glib/gdatetime.c:342
 msgctxt "abbreviated month name"
 msgid "Aug"
 msgstr "آگوست"
 
-#: ../glib/gdatetime.c:285
+#: glib/gdatetime.c:344
 msgctxt "abbreviated month name"
 msgid "Sep"
 msgstr "سپتامبر"
 
-#: ../glib/gdatetime.c:287
+#: glib/gdatetime.c:346
 msgctxt "abbreviated month name"
 msgid "Oct"
 msgstr "اکتبر"
 
-#: ../glib/gdatetime.c:289
+#: glib/gdatetime.c:348
 msgctxt "abbreviated month name"
 msgid "Nov"
 msgstr "نوامبر"
 
-#: ../glib/gdatetime.c:291
+#: glib/gdatetime.c:350
 msgctxt "abbreviated month name"
 msgid "Dec"
 msgstr "دسامبر"
 
-#: ../glib/gdatetime.c:306
+#: glib/gdatetime.c:365
 msgctxt "full weekday name"
 msgid "Monday"
 msgstr "دوشنبه"
 
-#: ../glib/gdatetime.c:308
+#: glib/gdatetime.c:367
 msgctxt "full weekday name"
 msgid "Tuesday"
 msgstr "سه‌شنبه"
 
-#: ../glib/gdatetime.c:310
+#: glib/gdatetime.c:369
 msgctxt "full weekday name"
 msgid "Wednesday"
 msgstr "چهارشنبه"
 
-#: ../glib/gdatetime.c:312
+#: glib/gdatetime.c:371
 msgctxt "full weekday name"
 msgid "Thursday"
 msgstr "پنجشنبه"
 
-#: ../glib/gdatetime.c:314
+#: glib/gdatetime.c:373
 msgctxt "full weekday name"
 msgid "Friday"
 msgstr "جمعه"
 
-#: ../glib/gdatetime.c:316
+#: glib/gdatetime.c:375
 msgctxt "full weekday name"
 msgid "Saturday"
 msgstr "شنبه"
 
-#: ../glib/gdatetime.c:318
+#: glib/gdatetime.c:377
 msgctxt "full weekday name"
 msgid "Sunday"
 msgstr "یکشنبه"
 
-#: ../glib/gdatetime.c:333
+#: glib/gdatetime.c:392
 msgctxt "abbreviated weekday name"
 msgid "Mon"
 msgstr "دوشنبه"
 
-#: ../glib/gdatetime.c:335
+#: glib/gdatetime.c:394
 msgctxt "abbreviated weekday name"
 msgid "Tue"
 msgstr "سه‌شنبه"
 
-#: ../glib/gdatetime.c:337
-msgctxt "abbreviated weekday name"
-msgid "Wed"
-msgstr "چهارشنبه"
+#: glib/gdatetime.c:396
+msgctxt "abbreviated weekday name"
+msgid "Wed"
+msgstr "چهارشنبه"
+
+#: glib/gdatetime.c:398
+msgctxt "abbreviated weekday name"
+msgid "Thu"
+msgstr "پنجشنبه"
+
+#: glib/gdatetime.c:400
+msgctxt "abbreviated weekday name"
+msgid "Fri"
+msgstr "جمعه"
+
+#: glib/gdatetime.c:402
+msgctxt "abbreviated weekday name"
+msgid "Sat"
+msgstr "شنبه"
+
+#: glib/gdatetime.c:404
+msgctxt "abbreviated weekday name"
+msgid "Sun"
+msgstr "یکشنبه"
+
+#. Translators: Some languages need different grammatical forms of
+#. * month names depending on whether they are standalone or in a full
+#. * date context, with the day number.  Some may prefer starting with
+#. * uppercase when they are standalone and with lowercase when they are
+#. * in a full date context.  Here are full month names in a form
+#. * appropriate when they are used in a full date context, with the
+#. * day number.  If your system is Linux with the glibc version 2.27
+#. * (released Feb 1, 2018) or newer or if it is from the BSD family
+#. * (which includes OS X) then you can refer to the date command line
+#. * utility and see what the command `date +%B' produces.  Also in
+#. * the latest Linux the command `locale mon' in your native locale
+#. * produces a complete list of month names almost ready to copy and
+#. * paste here.  In older Linux systems due to a bug the result is
+#. * incorrect in some languages.  Note that in most of the languages
+#. * (western European, non-European) there is no difference between the
+#. * standalone and complete date form.
+#.
+#: glib/gdatetime.c:468
+msgctxt "full month name with day"
+msgid "January"
+msgstr "ژانویه"
+
+#: glib/gdatetime.c:470
+msgctxt "full month name with day"
+msgid "February"
+msgstr "فوریه"
+
+#: glib/gdatetime.c:472
+msgctxt "full month name with day"
+msgid "March"
+msgstr "مارس"
+
+#: glib/gdatetime.c:474
+msgctxt "full month name with day"
+msgid "April"
+msgstr "آوریل"
+
+#: glib/gdatetime.c:476
+msgctxt "full month name with day"
+msgid "May"
+msgstr "مه"
+
+#: glib/gdatetime.c:478
+msgctxt "full month name with day"
+msgid "June"
+msgstr "ژوئن"
+
+#: glib/gdatetime.c:480
+msgctxt "full month name with day"
+msgid "July"
+msgstr "ژوئیه"
+
+#: glib/gdatetime.c:482
+msgctxt "full month name with day"
+msgid "August"
+msgstr "آگوست"
+
+#: glib/gdatetime.c:484
+msgctxt "full month name with day"
+msgid "September"
+msgstr "سپتامبر"
+
+#: glib/gdatetime.c:486
+msgctxt "full month name with day"
+msgid "October"
+msgstr "اکتبر"
+
+#: glib/gdatetime.c:488
+msgctxt "full month name with day"
+msgid "November"
+msgstr "نوامبر"
+
+#: glib/gdatetime.c:490
+msgctxt "full month name with day"
+msgid "December"
+msgstr "دسامبر"
+
+#. Translators: Some languages need different grammatical forms of
+#. * month names depending on whether they are standalone or in a full
+#. * date context, with the day number.  Some may prefer starting with
+#. * uppercase when they are standalone and with lowercase when they are
+#. * in a full date context.  Here are abbreviated month names in a form
+#. * appropriate when they are used in a full date context, with the
+#. * day number.  However, as these names are abbreviated the grammatical
+#. * difference is visible probably only in Belarusian and Russian.
+#. * In other languages there is no difference between the standalone
+#. * and complete date form when they are abbreviated.  If your system
+#. * is Linux with the glibc version 2.27 (released Feb 1, 2018) or newer
+#. * then you can refer to the date command line utility and see what the
+#. * command `date +%b' produces.  Also in the latest Linux the command
+#. * `locale abmon' in your native locale produces a complete list of
+#. * month names almost ready to copy and paste here.  In other systems
+#. * due to a bug the result is incorrect in some languages.
+#.
+#: glib/gdatetime.c:555
+msgctxt "abbreviated month name with day"
+msgid "Jan"
+msgstr "ژانویه"
+
+#: glib/gdatetime.c:557
+msgctxt "abbreviated month name with day"
+msgid "Feb"
+msgstr "فوریه"
+
+#: glib/gdatetime.c:559
+msgctxt "abbreviated month name with day"
+msgid "Mar"
+msgstr "مارس"
+
+#: glib/gdatetime.c:561
+msgctxt "abbreviated month name with day"
+msgid "Apr"
+msgstr "آوریل"
+
+#: glib/gdatetime.c:563
+msgctxt "abbreviated month name with day"
+msgid "May"
+msgstr "مه"
+
+#: glib/gdatetime.c:565
+msgctxt "abbreviated month name with day"
+msgid "Jun"
+msgstr "ژوئن"
+
+#: glib/gdatetime.c:567
+msgctxt "abbreviated month name with day"
+msgid "Jul"
+msgstr "ژوئیه"
+
+#: glib/gdatetime.c:569
+msgctxt "abbreviated month name with day"
+msgid "Aug"
+msgstr "آگوست"
+
+#: glib/gdatetime.c:571
+msgctxt "abbreviated month name with day"
+msgid "Sep"
+msgstr "سپتامبر"
+
+#: glib/gdatetime.c:573
+msgctxt "abbreviated month name with day"
+msgid "Oct"
+msgstr "اکتبر"
 
-#: ../glib/gdatetime.c:339
-msgctxt "abbreviated weekday name"
-msgid "Thu"
-msgstr "Ù¾Ù\86جشÙ\86بÙ\87"
+#: glib/gdatetime.c:575
+msgctxt "abbreviated month name with day"
+msgid "Nov"
+msgstr "Ù\86Ù\88اÙ\85بر"
 
-#: ../glib/gdatetime.c:341
-msgctxt "abbreviated weekday name"
-msgid "Fri"
-msgstr "جÙ\85عÙ\87"
+#: glib/gdatetime.c:577
+msgctxt "abbreviated month name with day"
+msgid "Dec"
+msgstr "دساÙ\85بر"
 
-#: ../glib/gdatetime.c:343
-msgctxt "abbreviated weekday name"
-msgid "Sat"
-msgstr "شنبه"
+#. Translators: 'before midday' indicator
+#: glib/gdatetime.c:594
+msgctxt "GDateTime"
+msgid "AM"
+msgstr "ق‌ظ"
 
-#: ../glib/gdatetime.c:345
-msgctxt "abbreviated weekday name"
-msgid "Sun"
-msgstr "یکشنبه"
+#. Translators: 'after midday' indicator
+#: glib/gdatetime.c:597
+msgctxt "GDateTime"
+msgid "PM"
+msgstr "ب‌ظ"
 
-#: ../glib/gdir.c:121
-#: ../glib/gdir.c:144
-#, c-format
-msgid "Error opening directory '%s': %s"
+#: glib/gdir.c:156
+#, fuzzy, c-format
+#| msgid "Error opening directory '%s': %s"
+msgid "Error opening directory “%s”: %s"
 msgstr "خطا در باز کردن شاخهٔ «‎%s»‏: %s"
 
-#: ../glib/gfileutils.c:675
-#: ../glib/gfileutils.c:763
-#, c-format
-msgid "Could not allocate %lu bytes to read file \"%s\""
-msgstr "نمی‌توان %Ilu بایت برای خواندن پروندهٔ «‎%s» تخصیص داد"
+#: glib/gfileutils.c:737 glib/gfileutils.c:829
+#, fuzzy, c-format
+#| msgid "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] "نمی‌توان %Ilu بایت برای خواندن پروندهٔ «‎%s» تخصیص داد"
+msgstr[1] "نمی‌توان %Ilu بایت برای خواندن پروندهٔ «‎%s» تخصیص داد"
 
-#: ../glib/gfileutils.c:690
-#, c-format
-msgid "Error reading file '%s': %s"
-msgstr "خطا در خواندن پروندهٔ «‎%s»‏: %s"
+#: glib/gfileutils.c:754
+#, fuzzy, c-format
+#| msgid "Error reading file %s: %s"
+msgid "Error reading file “%s”: %s"
+msgstr "خطا در خواندن پرونده %s: %s"
 
-#: ../glib/gfileutils.c:704
+#: glib/gfileutils.c:790
 #, c-format
-msgid "File \"%s\" is too large"
-msgstr "پرونده «%s» بسیار بزرگ است"
+msgid "File “%s” is too large"
+msgstr "پروندهٔ «%s» بسیار بزرگ است"
 
-#: ../glib/gfileutils.c:787
-#, c-format
-msgid "Failed to read from file '%s': %s"
+#: glib/gfileutils.c:854
+#, fuzzy, c-format
+#| msgid "Failed to read from file '%s': %s"
+msgid "Failed to read from file “%s”: %s"
 msgstr "خواندن از پروندهٔ «‎%s» شکست خورد: %s"
 
-#: ../glib/gfileutils.c:838
-#: ../glib/gfileutils.c:925
-#, c-format
-msgid "Failed to open file '%s': %s"
+#: glib/gfileutils.c:904 glib/gfileutils.c:979 glib/gfileutils.c:1468
+#, fuzzy, c-format
+#| msgid "Failed to open file '%s': %s"
+msgid "Failed to open file “%s”: %s"
 msgstr "باز کردن پروندهٔ «‎%s» شکست خورد: %s"
 
-#: ../glib/gfileutils.c:855
-#, c-format
-msgid "Failed to get attributes of file '%s': fstat() failed: %s"
+#: glib/gfileutils.c:917
+#, fuzzy, 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 "گرفتن مشخصه‌های پروندهٔ «‎%s» شکست خورد: fstat()‎ شکست خورد: %s"
 
-#: ../glib/gfileutils.c:889
-#, c-format
-msgid "Failed to open file '%s': fdopen() failed: %s"
+#: glib/gfileutils.c:948
+#, fuzzy, c-format
+#| msgid "Failed to open file '%s': fdopen() failed: %s"
+msgid "Failed to open file “%s”: fdopen() failed: %s"
 msgstr "باز کردن پروندهٔ «‎%s» شکست خورد: fdopen()‎ شکست خورد: %s"
 
-#: ../glib/gfileutils.c:997
-#, c-format
-msgid "Failed to rename file '%s' to '%s': g_rename() failed: %s"
+#: glib/gfileutils.c:1049
+#, fuzzy, 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 "تغییر دادن نام پروندهٔ «‎%s» به «‎%s» شکست خورد: g_rename()‎ شکست خورد: %s"
 
-#: ../glib/gfileutils.c:1039
-#: ../glib/gfileutils.c:1584
-#, c-format
-msgid "Failed to create file '%s': %s"
-msgstr "ایجاد پروندهٔ «‎%s» شکست خورد: %s"
-
-#: ../glib/gfileutils.c:1053
-#, c-format
-msgid "Failed to open file '%s' for writing: fdopen() failed: %s"
-msgstr "باز کردن پروندهٔ «‎%s» برای نوشتن شکست خورد: fdopen()‎ شکست خورد: %s"
-
-#: ../glib/gfileutils.c:1078
-#, c-format
-msgid "Failed to write file '%s': fwrite() failed: %s"
+#: glib/gfileutils.c:1175
+#, fuzzy, c-format
+#| msgid "Failed to write file '%s': fwrite() failed: %s"
+msgid "Failed to write file “%s”: write() failed: %s"
 msgstr "نوشتن پروندهٔ «‎%s» شکست خورد: fdwrite()‎ شکست خورد: %s"
 
-#: ../glib/gfileutils.c:1097
-#, c-format
-msgid "Failed to write file '%s': fflush() failed: %s"
-msgstr "نوشتن پروندهٔ «‎%s» شکست خورد: fflush()‎ شکست خورد: %s"
-
-#: ../glib/gfileutils.c:1141
-#, c-format
-msgid "Failed to write file '%s': fsync() failed: %s"
+#: glib/gfileutils.c:1196
+#, fuzzy, c-format
+#| msgid "Failed to write file '%s': fsync() failed: %s"
+msgid "Failed to write file “%s”: fsync() failed: %s"
 msgstr "نوشتن پروندهٔ «‎%s» شکست خورد: fsync()‎ شکست خورد: %s"
 
-#: ../glib/gfileutils.c:1165
-#, c-format
-msgid "Failed to close file '%s': fclose() failed: %s"
-msgstr "بستن پروندهٔ «‎%s» شکست خورد: fclose()‎ شکست خورد: %s"
+#: glib/gfileutils.c:1357 glib/gfileutils.c:1772
+#, fuzzy, c-format
+#| msgid "Failed to create file '%s': %s"
+msgid "Failed to create file “%s”: %s"
+msgstr "ایجاد پروندهٔ «‎%s» شکست خورد: %s"
 
-#: ../glib/gfileutils.c:1287
-#, c-format
-msgid "Existing file '%s' could not be removed: g_unlink() failed: %s"
+#: glib/gfileutils.c:1402
+#, fuzzy, 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 "نمی‌توان پروندهٔ موجود «‎%s» را جذف کرد: g_unlink() شکست خورد: %s"
 
-#: ../glib/gfileutils.c:1547
-#, c-format
-msgid "Template '%s' invalid, should not contain a '%s'"
+#: glib/gfileutils.c:1737
+#, fuzzy, c-format
+#| msgid "Template '%s' invalid, should not contain a '%s'"
+msgid "Template “%s” invalid, should not contain a “%s”"
 msgstr "قالب «%s» نامعتبر است، نباید «%s» داشته باشد"
 
-#: ../glib/gfileutils.c:1560
-#, c-format
-msgid "Template '%s' doesn't contain XXXXXX"
+#: glib/gfileutils.c:1750
+#, fuzzy, c-format
+#| msgid "Template '%s' doesn't contain XXXXXX"
+msgid "Template “%s” doesn’t contain XXXXXX"
 msgstr "قالب «%s» حاوی XXXXXX نیست"
 
-#: ../glib/gfileutils.c:2088
-#, c-format
-msgid "Failed to read the symbolic link '%s': %s"
+#: glib/gfileutils.c:2310 glib/gfileutils.c:2339
+#, fuzzy, c-format
+#| msgid "Failed to read the symbolic link '%s': %s"
+msgid "Failed to read the symbolic link “%s”: %s"
 msgstr "خواندن پیوند نمادی «‎%s» شکست خورد: %s"
 
-#: ../glib/gfileutils.c:2109
-msgid "Symbolic links not supported"
-msgstr "پیوندهای نمادی پشتیبانی نمی‌شوند"
-
-#: ../glib/giochannel.c:1415
-#, c-format
-msgid "Could not open converter from '%s' to '%s': %s"
+#: glib/giochannel.c:1405
+#, fuzzy, c-format
+#| msgid "Could not open converter from '%s' to '%s': %s"
+msgid "Could not open converter from “%s” to “%s”: %s"
 msgstr "نمی‌توان مبدل «%s» به «%s» را باز کرد: %s"
 
-#: ../glib/giochannel.c:1760
-msgid "Can't do a raw read in g_io_channel_read_line_string"
+#: glib/giochannel.c:1758
+#, fuzzy
+#| msgid "Can't do a raw read in g_io_channel_read_line_string"
+msgid "Can’t do a raw read in g_io_channel_read_line_string"
 msgstr "نمی‌توان در g_io_channel_read_line_string خوانش خام انجام داد"
 
-#: ../glib/giochannel.c:1807
-#: ../glib/giochannel.c:2064
-#: ../glib/giochannel.c:2151
+#: glib/giochannel.c:1805 glib/giochannel.c:2063 glib/giochannel.c:2150
 msgid "Leftover unconverted data in read buffer"
 msgstr "دادهٔ تبدیل‌نشده در میان‌گیر خواندن باقی مانده است"
 
-#: ../glib/giochannel.c:1888
-#: ../glib/giochannel.c:1965
+#: glib/giochannel.c:1886 glib/giochannel.c:1963
 msgid "Channel terminates in a partial character"
 msgstr "کانال با یک نویسهٔ ناتمام پایان می‌یابد"
 
-#: ../glib/giochannel.c:1951
-msgid "Can't do a raw read in g_io_channel_read_to_end"
+#: glib/giochannel.c:1949
+#, fuzzy
+#| msgid "Can't do a raw read in g_io_channel_read_to_end"
+msgid "Can’t do a raw read in g_io_channel_read_to_end"
 msgstr "نمی‌توان در g_io_channel_read_to_end خوانش خام انجام داد"
 
-#: ../glib/gkeyfile.c:726
+#: glib/gkeyfile.c:790
 msgid "Valid key file could not be found in search dirs"
 msgstr "پروندهٔ کلید معتبر در شاخه‌های جست‌وجو یافت نمی‌شود"
 
-#: ../glib/gkeyfile.c:762
+#: glib/gkeyfile.c:827
 msgid "Not a regular file"
 msgstr "پرونده متعارف نیست"
 
-#: ../glib/gkeyfile.c:1162
-#, c-format
-msgid "Key file contains line '%s' which is not a key-value pair, group, or comment"
+#: glib/gkeyfile.c:1282
+#, fuzzy, c-format
+#| msgid "Key file contains line '%s' which is not a key-value pair, group, or comment"
+msgid "Key file contains line “%s” which is not a key-value pair, group, or comment"
 msgstr "پرونده کلید حاوی خط «%s» است که جفت کلید‐مقدار، گروه یا توضیح  نیست"
 
-#: ../glib/gkeyfile.c:1222
+#: glib/gkeyfile.c:1339
 #, c-format
 msgid "Invalid group name: %s"
 msgstr "نام گروه نامعتبر: %s"
 
-#: ../glib/gkeyfile.c:1244
+#: glib/gkeyfile.c:1361
 msgid "Key file does not start with a group"
 msgstr "پروندهٔ کلید با یک گروه آغاز نمی‌شود"
 
-#: ../glib/gkeyfile.c:1270
+#: glib/gkeyfile.c:1387
 #, c-format
 msgid "Invalid key name: %s"
 msgstr "نام کلید نامعتبر: %s"
 
-#: ../glib/gkeyfile.c:1297
-#, c-format
-msgid "Key file contains unsupported encoding '%s'"
+#: glib/gkeyfile.c:1414
+#, fuzzy, c-format
+#| msgid "Key file contains unsupported encoding '%s'"
+msgid "Key file contains unsupported encoding “%s”"
 msgstr "پروندهٔ کلید حاوی کدگذاری پشتیبانی نشدهٔ «%s» است"
 
-#: ../glib/gkeyfile.c:1541
-#: ../glib/gkeyfile.c:1703
-#: ../glib/gkeyfile.c:3081
-#: ../glib/gkeyfile.c:3147
-#: ../glib/gkeyfile.c:3273
-#: ../glib/gkeyfile.c:3406
-#: ../glib/gkeyfile.c:3548
-#: ../glib/gkeyfile.c:3778
-#: ../glib/gkeyfile.c:3846
-#, c-format
-msgid "Key file does not have group '%s'"
+#: glib/gkeyfile.c:1663 glib/gkeyfile.c:1836 glib/gkeyfile.c:3289 glib/gkeyfile.c:3353 glib/gkeyfile.c:3483
+#: glib/gkeyfile.c:3615 glib/gkeyfile.c:3761 glib/gkeyfile.c:3996 glib/gkeyfile.c:4063
+#, fuzzy, c-format
+#| msgid "Key file does not have group '%s'"
+msgid "Key file does not have group “%s”"
 msgstr "پروندهٔ کلید گروه «%s» را ندارد"
 
-#: ../glib/gkeyfile.c:1715
-#, c-format
-msgid "Key file does not have key '%s'"
-msgstr "پروندهٔ کلید، کلید «%s» را ندارد"
+#: glib/gkeyfile.c:1791
+#, fuzzy, c-format
+#| msgid "Key file does not have key '%s' in group '%s'"
+msgid "Key file does not have key “%s” in group “%s”"
+msgstr "پروندهٔ کلید، کلید «%s» در گروه «%s» را ندارد"
 
-#: ../glib/gkeyfile.c:1822
-#: ../glib/gkeyfile.c:1938
-#, c-format
-msgid "Key file contains key '%s' with value '%s' which is not UTF-8"
+#: glib/gkeyfile.c:1953 glib/gkeyfile.c:2069
+#, fuzzy, 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 "پروندهٔ کلید حاوی کلید «%s» با مقدار «%s» است که UTF-8 نیست"
 
-#: ../glib/gkeyfile.c:1842
-#: ../glib/gkeyfile.c:1958
-#: ../glib/gkeyfile.c:2327
-#, c-format
-msgid "Key file contains key '%s' which has a value that cannot be interpreted."
+#: glib/gkeyfile.c:1973 glib/gkeyfile.c:2089 glib/gkeyfile.c:2531
+#, fuzzy, c-format
+#| msgid "Key file contains key '%s' which has a value that cannot be interpreted."
+msgid "Key file contains key “%s” which has a value that cannot be interpreted."
 msgstr "پروندهٔ کلید حاوی کلید «%s» است که دارای مقداری است که قابل تفسیر نیست."
 
-#: ../glib/gkeyfile.c:2544
-#: ../glib/gkeyfile.c:2910
+#: glib/gkeyfile.c:2749 glib/gkeyfile.c:3118
 #, fuzzy, c-format
-msgid "Key file contains key '%s' in group '%s' which has a value that cannot be interpreted."
+msgid "Key file contains key “%s” in group “%s” which has a value that cannot be interpreted."
 msgstr "پروندهٔ کلید حاوی کلید «%s» در گروه «%s» است که مقداری دارد که قابل تفسیر نیست"
 
-#: ../glib/gkeyfile.c:2622
-#: ../glib/gkeyfile.c:2698
+#: glib/gkeyfile.c:2827 glib/gkeyfile.c:2904
 #, fuzzy, 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 "پروندهٔ کلید حاوی کلید «%s» در گروه «%s» است که مقداری دارد که قابل تفسیر نیست"
 
-#: ../glib/gkeyfile.c:3096
-#: ../glib/gkeyfile.c:3288
-#: ../glib/gkeyfile.c:3857
-#, c-format
-msgid "Key file does not have key '%s' in group '%s'"
-msgstr "پروندهٔ کلید، کلید «%s» در گروه «%s» را ندارد"
-
-#: ../glib/gkeyfile.c:4089
+#: glib/gkeyfile.c:4306
 msgid "Key file contains escape character at end of line"
 msgstr "پرونده کلید شامل نویسهٔ گریز در انتهای خط است"
 
-#: ../glib/gkeyfile.c:4111
-#, c-format
-msgid "Key file contains invalid escape sequence '%s'"
+#: glib/gkeyfile.c:4328
+#, fuzzy, c-format
+#| msgid "Key file contains invalid escape sequence '%s'"
+msgid "Key file contains invalid escape sequence “%s”"
 msgstr "پروندهٔ کلید حاوی دنبالهٔ گریز نامعتبر «%s» است"
 
-#: ../glib/gkeyfile.c:4253
-#, c-format
-msgid "Value '%s' cannot be interpreted as a number."
+#: glib/gkeyfile.c:4472
+#, fuzzy, c-format
+#| msgid "Value '%s' cannot be interpreted as a number."
+msgid "Value “%s” cannot be interpreted as a number."
 msgstr "مقدار «%s» را نمی‌توان به عدد تفسیر کرد"
 
-#: ../glib/gkeyfile.c:4267
-#, c-format
-msgid "Integer value '%s' out of range"
+#: glib/gkeyfile.c:4486
+#, fuzzy, c-format
+#| msgid "Integer value '%s' out of range"
+msgid "Integer value “%s” out of range"
 msgstr "مقدار صحیح «%s» خارج از محدوده است"
 
-#: ../glib/gkeyfile.c:4300
-#, c-format
-msgid "Value '%s' cannot be interpreted as a float number."
+#: glib/gkeyfile.c:4519
+#, fuzzy, c-format
+#| msgid "Value '%s' cannot be interpreted as a float number."
+msgid "Value “%s” cannot be interpreted as a float number."
 msgstr "مقدار «%s» را نمی‌توان به عدد اعشاری تفسیر کرد"
 
-#: ../glib/gkeyfile.c:4324
-#, c-format
-msgid "Value '%s' cannot be interpreted as a boolean."
+#: glib/gkeyfile.c:4558
+#, fuzzy, c-format
+#| msgid "Value '%s' cannot be interpreted as a boolean."
+msgid "Value “%s” cannot be interpreted as a boolean."
 msgstr "مقدار «%s» را نمی‌توان به مقدار بولی تفسیر کرد"
 
-#: ../glib/gmappedfile.c:128
+#: glib/gmappedfile.c:129
 #, fuzzy, 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 "گرفتن مشخصه‌های پروندهٔ «‎%s» شکست خورد: fstat()‎ شکست خورد: %s"
 
-#: ../glib/gmappedfile.c:194
+#: glib/gmappedfile.c:195
 #, fuzzy, c-format
 msgid "Failed to map %s%s%s%s: mmap() failed: %s"
 msgstr "تهیهٔ نقشه از پروندهٔ «‎%s» شکست خورد: mmap()‎ شکست خورد: %s"
 
-#: ../glib/gmappedfile.c:260
-#, c-format
-msgid "Failed to open file '%s': open() failed: %s"
+#: glib/gmappedfile.c:262
+#, fuzzy, c-format
+#| msgid "Failed to open file '%s': open() failed: %s"
+msgid "Failed to open file “%s”: open() failed: %s"
 msgstr "باز کردن پروندهٔ «‎%s» شکست خورد: open()‎ شکست خورد: %s"
 
-#: ../glib/gmarkup.c:356
-#: ../glib/gmarkup.c:397
+#: glib/gmarkup.c:398 glib/gmarkup.c:440
 #, c-format
 msgid "Error on line %d char %d: "
 msgstr "خطا در سطر %Id نویسهٔ %Id:‏ "
 
-#: ../glib/gmarkup.c:419
-#: ../glib/gmarkup.c:502
-#, c-format
-msgid "Invalid UTF-8 encoded text in name - not valid '%s'"
+#: glib/gmarkup.c:462 glib/gmarkup.c:545
+#, fuzzy, c-format
+#| msgid "Invalid UTF-8 encoded text in name - not valid '%s'"
+msgid "Invalid UTF-8 encoded text in name — not valid “%s”"
 msgstr "متن کدگذاری‌شدهٔ UTF-8 نامعتبر در نام - «%s» معتبر نیست"
 
-#: ../glib/gmarkup.c:430
-#, c-format
-msgid "'%s' is not a valid name "
+#: glib/gmarkup.c:473
+#, fuzzy, c-format
+#| msgid "'%s' is not a valid name "
+msgid "“%s” is not a valid name"
 msgstr "نام «%s» معتبر نیست"
 
-#: ../glib/gmarkup.c:446
-#, c-format
-msgid "'%s' is not a valid name: '%c' "
+#: glib/gmarkup.c:489
+#, fuzzy, c-format
+#| msgid "'%s' is not a valid name: '%c' "
+msgid "“%s” is not a valid name: “%c”"
 msgstr "نام «%s» معتبر نیست: «%c»"
 
-#: ../glib/gmarkup.c:555
+#: glib/gmarkup.c:613
 #, c-format
 msgid "Error on line %d: %s"
 msgstr "خطا در سطر %Id:‏ %s"
 
-#: ../glib/gmarkup.c:639
-#, c-format
-msgid "Failed to parse '%-.*s', which should have been a digit inside a character reference (&#234; for example) - perhaps the digit is too large"
-msgstr "تجزیهٔ «‎%-.*s»، که باید رقمی داخل یک ارجاع نویسه‌ای (مثل ‎&#234;‎) می‌بود شکست خورد - شاید رقم خیلی بزرگ است"
+#: glib/gmarkup.c:690
+#, fuzzy, c-format
+#| msgid ""
+#| "Failed to parse '%-.*s', which should have been a digit inside a character reference (&#234; for "
+#| "example) - perhaps the digit is too large"
+msgid ""
+"Failed to parse “%-.*s”, which should have been a digit inside a character reference (&#234; for example) "
+"— perhaps the digit is too large"
+msgstr ""
+"تجزیهٔ «‎%-.*s»، که باید رقمی داخل یک ارجاع نویسه‌ای (مثل ‎&#234;‎) می‌بود شکست خورد - شاید رقم خیلی بزرگ است"
 
-#: ../glib/gmarkup.c:651
-msgid "Character reference did not end with a semicolon; most likely you used an ampersand character without intending to start an entity - escape ampersand as &amp;"
-msgstr "ارجاع نویسه‌ای با نقطه‌ویرگول تمام نشده است؛ به احتمال زیاد بدون این که بخواهید نهادی را آغاز کنید از نویسهٔ & استفاده کرده‌اید - برای نوشتن علامت & از ‎&amp;‎ استفاده کنید"
+#: glib/gmarkup.c:702
+#, fuzzy
+#| msgid ""
+#| "Character reference did not end with a semicolon; most likely you used an ampersand character without "
+#| "intending to start an entity - escape ampersand as &amp;"
+msgid ""
+"Character reference did not end with a semicolon; most likely you used an ampersand character without "
+"intending to start an entity — escape ampersand as &amp;"
+msgstr ""
+"ارجاع نویسه‌ای با نقطه‌ویرگول تمام نشده است؛ به احتمال زیاد بدون این که بخواهید نهادی را آغاز کنید از نویسهٔ "
+"& استفاده کرده‌اید - برای نوشتن علامت & از ‎&amp;‎ استفاده کنید"
 
-#: ../glib/gmarkup.c:677
-#, c-format
-msgid "Character reference '%-.*s' does not encode a permitted character"
+#: glib/gmarkup.c:728
+#, fuzzy, c-format
+#| msgid "Character reference '%-.*s' does not encode a permitted character"
+msgid "Character reference “%-.*s” does not encode a permitted character"
 msgstr "ارجاع نویسه‌ای «‎%-.*s» به نویسهٔ مجاز اشاره نمی‌کند"
 
-#: ../glib/gmarkup.c:715
-msgid "Empty entity '&;' seen; valid entities are: &amp; &quot; &lt; &gt; &apos;"
+#: glib/gmarkup.c:766
+#, fuzzy
+#| msgid "Empty entity '&;' seen; valid entities are: &amp; &quot; &lt; &gt; &apos;"
+msgid "Empty entity “&;” seen; valid entities are: &amp; &quot; &lt; &gt; &apos;"
 msgstr "نهاد خالی «‎&;‎» مشاهده شد؛ نهادهای معتبر عبارتند از: ‎&amp; &quot; &lt; &gt; &apos;‎"
 
-#: ../glib/gmarkup.c:723
-#, c-format
-msgid "Entity name '%-.*s' is not known"
+#: glib/gmarkup.c:774
+#, fuzzy, c-format
+#| msgid "Entity name '%-.*s' is not known"
+msgid "Entity name “%-.*s” is not known"
 msgstr "نام نهاد «%-.*s» شناخته شده نیست"
 
-#: ../glib/gmarkup.c:728
-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;"
-msgstr "نهاد با یک نقطه‌ویرگول لاتین تمام نشده است؛ به احتمال زیاد بدون این که بخواهید نهادی را آغاز کنید از نویسهٔ & استفاده کرده‌اید - برای نوشتن علامت & از ‎&amp;‎ استفاده کنید"
+#: glib/gmarkup.c:779
+#, fuzzy
+#| 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;"
+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;"
+msgstr ""
+"نهاد با یک نقطه‌ویرگول لاتین تمام نشده است؛ به احتمال زیاد بدون این که بخواهید نهادی را آغاز کنید از نویسهٔ "
+"& استفاده کرده‌اید - برای نوشتن علامت & از ‎&amp;‎ استفاده کنید"
 
-#: ../glib/gmarkup.c:1076
+#: glib/gmarkup.c:1193
 msgid "Document must begin with an element (e.g. <book>)"
 msgstr "نوشتار باید با یک عنصر (مثلاً <book>) شروع شود"
 
-#: ../glib/gmarkup.c:1116
-#, c-format
-msgid "'%s' is not a valid character following a '<' character; it may not begin an element name"
+#: glib/gmarkup.c:1233
+#, fuzzy, c-format
+#| msgid "'%s' is not a valid character following a '<' character; it may not begin an element name"
+msgid "“%s” is not a valid character following a “<” character; it may not begin an element name"
 msgstr "‏«%s» پس از یک نویسهٔ '‎<‎' نویسهٔ مجازی نیست؛ نمی‌شود ابتدای نام یک عنصر باشد"
 
-#: ../glib/gmarkup.c:1184
-#, c-format
-msgid "Odd character '%s', expected a '>' character to end the empty-element tag '%s'"
+#: glib/gmarkup.c:1276
+#, fuzzy, c-format
+#| msgid "Odd character '%s', expected a '>' character to end the empty-element tag '%s'"
+msgid "Odd character “%s”, expected a “>” character to end the empty-element tag “%s”"
 msgstr "نویسهٔ غیرعادی «%s»، برای پایان دادن به برچسب عنصر خالی «%s» انتظار یک نویسهٔ «‎>‎» می‌رفت"
 
-#: ../glib/gmarkup.c:1268
+#: glib/gmarkup.c:1346
 #, c-format
-msgid "Odd character '%s', expected a '=' after attribute name '%s' of element '%s'"
+msgid "Too many attributes in element “%s”"
+msgstr ""
+
+#: glib/gmarkup.c:1366
+#, fuzzy, c-format
+#| msgid "Odd character '%s', expected a '=' after attribute name '%s' of element '%s'"
+msgid "Odd character “%s”, expected a “=” after attribute name “%s” of element “%s”"
 msgstr "نویسهٔ غیرعادی «%s»، بعد از نام مشخصهٔ «%s» عنصر «%s» انتظار یک نویسهٔ «=» می‌رفت"
 
-#: ../glib/gmarkup.c:1309
-#, c-format
-msgid "Odd character '%s', expected a '>' or '/' character to end the start tag of element '%s', or optionally an attribute; perhaps you used an invalid character in an attribute name"
-msgstr "نویسهٔ غیرعادی «%s»، برای پایان دادن به برچسب شروع عنصر «%s»، همین‌طور یک مشخصه، انتظار یک نویسهٔ «‎>‎» یا «/» می‌رفت؛ شاید از یک نویسهٔ نامعتبر در نام مشخصه‌ای استفاده کرده باشید"
+#: glib/gmarkup.c:1408
+#, fuzzy, c-format
+#| msgid ""
+#| "Odd character '%s', expected a '>' or '/' character to end the start tag of element '%s', or "
+#| "optionally an attribute; perhaps you used an invalid character in an attribute name"
+msgid ""
+"Odd character “%s”, expected a “>” or “/” character to end the start tag of element “%s”, or optionally "
+"an attribute; perhaps you used an invalid character in an attribute name"
+msgstr ""
+"نویسهٔ غیرعادی «%s»، برای پایان دادن به برچسب شروع عنصر «%s»، همین‌طور یک مشخصه، انتظار یک نویسهٔ «‎>‎» یا «/» "
+"می‌رفت؛ شاید از یک نویسهٔ نامعتبر در نام مشخصه‌ای استفاده کرده باشید"
 
-#: ../glib/gmarkup.c:1353
-#, c-format
-msgid "Odd character '%s', expected an open quote mark after the equals sign when giving value for attribute '%s' of element '%s'"
-msgstr "نویسهٔ غیرعادی «%s»، هنگام مقدار دادن به مشخصهٔ «%s» از عنصر «%s» پس از علامت تساوی انتظار یک علامت نقل قول باز می‌رفت"
+#: glib/gmarkup.c:1453
+#, fuzzy, c-format
+#| msgid ""
+#| "Odd character '%s', expected an open quote mark after the equals sign when giving value for attribute "
+#| "'%s' of element '%s'"
+msgid ""
+"Odd character “%s”, expected an open quote mark after the equals sign when giving value for attribute "
+"“%s” of element “%s”"
+msgstr ""
+"نویسهٔ غیرعادی «%s»، هنگام مقدار دادن به مشخصهٔ «%s» از عنصر «%s» پس از علامت تساوی انتظار یک علامت نقل قول "
+"باز می‌رفت"
 
-#: ../glib/gmarkup.c:1486
-#, c-format
-msgid "'%s' is not a valid character following the characters '</'; '%s' may not begin an element name"
+#: glib/gmarkup.c:1587
+#, fuzzy, c-format
+#| msgid "'%s' is not a valid character following the characters '</'; '%s' may not begin an element name"
+msgid "“%s” is not a valid character following the characters “</”; “%s” may not begin an element name"
 msgstr "‏«%s» بعد از نویسه‌های «‎</‎» نویسهٔ معتبری نیست؛ «%s» نمی‌تواند ابتدای نام عناصر قرار بگیرد"
 
-#: ../glib/gmarkup.c:1522
-#, c-format
-msgid "'%s' is not a valid character following the close element name '%s'; the allowed character is '>'"
+#: glib/gmarkup.c:1625
+#, fuzzy, c-format
+#| msgid "'%s' is not a valid character following the close element name '%s'; the allowed character is '>'"
+msgid "“%s” is not a valid character following the close element name “%s”; the allowed character is “>”"
 msgstr "‏«%s» نویسهٔ معتبری برای بستن نام عنصر «%s» نیست؛ نویسهٔ مجاز «‎>» است"
 
-#: ../glib/gmarkup.c:1533
-#, c-format
-msgid "Element '%s' was closed, no element is currently open"
+#: glib/gmarkup.c:1637
+#, fuzzy, c-format
+#| msgid "Element '%s' was closed, no element is currently open"
+msgid "Element “%s” was closed, no element is currently open"
 msgstr "عنصر «%s» بسته بود، در حال حاضر هیچ عنصری باز نیست"
 
-#: ../glib/gmarkup.c:1542
-#, c-format
-msgid "Element '%s' was closed, but the currently open element is '%s'"
+#: glib/gmarkup.c:1646
+#, fuzzy, c-format
+#| msgid "Element '%s' was closed, but the currently open element is '%s'"
+msgid "Element “%s” was closed, but the currently open element is “%s”"
 msgstr "عنصر «%s» بسته بود، ولی عنصری که در حال حاضر باز است «%s» است"
 
-#: ../glib/gmarkup.c:1710
+#: glib/gmarkup.c:1799
 msgid "Document was empty or contained only whitespace"
 msgstr "نوشتار خالی است یا فقط فاصلهٔ خالی دارد"
 
-#: ../glib/gmarkup.c:1724
-msgid "Document ended unexpectedly just after an open angle bracket '<'"
+#: glib/gmarkup.c:1813
+#, fuzzy
+#| msgid "Document ended unexpectedly just after an open angle bracket '<'"
+msgid "Document ended unexpectedly just after an open angle bracket “<”"
 msgstr "نوشتار به‌طور غیرمنتظره‌ای درست بعد از یک علامت کوچکتر '‎<‎' پایان یافت"
 
-#: ../glib/gmarkup.c:1732
-#: ../glib/gmarkup.c:1777
-#, c-format
-msgid "Document ended unexpectedly with elements still open - '%s' was the last element opened"
+#: glib/gmarkup.c:1821 glib/gmarkup.c:1866
+#, fuzzy, c-format
+#| msgid "Document ended unexpectedly with elements still open - '%s' was the last element opened"
+msgid "Document ended unexpectedly with elements still open — “%s” was the last element opened"
 msgstr "نوشتار وقتی که هنوز عناصری باز بودند به‌طور غیرمنتظره‌ای پایان یافت ‐ آخرین عنصر باز شده «%s» بود"
 
-#: ../glib/gmarkup.c:1740
+#: glib/gmarkup.c:1829
 #, c-format
 msgid "Document ended unexpectedly, expected to see a close angle bracket ending the tag <%s/>"
 msgstr "نوشتار به‌طور غیرمنتظره‌ای پایان یافت، یک علامت بزرگتر برای بستن برچسب ‎<%s/>‎ انتظار می‌رفت"
 
-#: ../glib/gmarkup.c:1746
+#: glib/gmarkup.c:1835
 msgid "Document ended unexpectedly inside an element name"
 msgstr "نوشتار به‌طور غیرمنتظره‌ای داخل نام یک عنصر به‌پایان رسید"
 
-#: ../glib/gmarkup.c:1752
+#: glib/gmarkup.c:1841
 msgid "Document ended unexpectedly inside an attribute name"
 msgstr "نوشتار به‌طور غیرمنتظره‌ای داخل نام یک مشخصه به‌پایان رسید"
 
-#: ../glib/gmarkup.c:1757
+#: glib/gmarkup.c:1846
 msgid "Document ended unexpectedly inside an element-opening tag."
 msgstr "نوشتار به‌طور غیرمنتظره‌ای داخل یک برچسب عنصربازکن پایان یافت."
 
-#: ../glib/gmarkup.c:1763
+#: glib/gmarkup.c:1852
 msgid "Document ended unexpectedly after the equals sign following an attribute name; no attribute value"
-msgstr "نوشتار به‌طور غیرمنتظره‌ای بعد از علامت تساوی‌ای که پس از نام مشخصه‌ای آمده بود تمام شد؛ بدون مقدار برای مشخصه"
+msgstr ""
+"نوشتار به‌طور غیرمنتظره‌ای بعد از علامت تساوی‌ای که پس از نام مشخصه‌ای آمده بود تمام شد؛ بدون مقدار برای مشخصه"
 
-#: ../glib/gmarkup.c:1770
+#: glib/gmarkup.c:1859
 msgid "Document ended unexpectedly while inside an attribute value"
 msgstr "نوشتار به‌طور غیرمنتظره‌ای داخل مقدار یک مشخصه به‌پایان رسید"
 
-#: ../glib/gmarkup.c:1786
-#, c-format
-msgid "Document ended unexpectedly inside the close tag for element '%s'"
+#: glib/gmarkup.c:1876
+#, fuzzy, c-format
+#| msgid "Document ended unexpectedly inside the close tag for element '%s'"
+msgid "Document ended unexpectedly inside the close tag for element “%s”"
+msgstr "نوشتار به‌طور غیرمنتظره‌ای داخل برچسب بستن عنصر «%s» پایان یافت"
+
+#: glib/gmarkup.c:1880
+#, fuzzy
+#| msgid "Document ended unexpectedly inside the close tag for element '%s'"
+msgid "Document ended unexpectedly inside the close tag for an unopened element"
 msgstr "نوشتار به‌طور غیرمنتظره‌ای داخل برچسب بستن عنصر «%s» پایان یافت"
 
-#: ../glib/gmarkup.c:1792
+#: glib/gmarkup.c:1886
 msgid "Document ended unexpectedly inside a comment or processing instruction"
 msgstr "نوشتار به‌طور غیرمنتظره‌ای داخل یک توضیح یا دستورالعمل پردازشی پایان یافت"
 
-#: ../glib/goption.c:766
-msgid "Usage:"
-msgstr "روش استفاده:"
-
-#: ../glib/goption.c:766
-msgid "[OPTION...]"
+#: glib/goption.c:873
+#, fuzzy
+#| msgid "[OPTION...]"
+msgid "[OPTION…]"
 msgstr "[گزینه...]"
 
-#: ../glib/goption.c:872
+#: glib/goption.c:989
 msgid "Help Options:"
 msgstr "گزینه‌های راهنما:"
 
-#: ../glib/goption.c:873
+#: glib/goption.c:990
 msgid "Show help options"
 msgstr "نمایش گزینه‌های راهنما"
 
-#: ../glib/goption.c:879
+#: glib/goption.c:996
 msgid "Show all help options"
 msgstr "نمایش همهٔ گزینه‌های راهنما"
 
-#: ../glib/goption.c:941
+#: glib/goption.c:1059
 msgid "Application Options:"
 msgstr "گزینه‌های برنامه:"
 
-#: ../glib/goption.c:1003
-#: ../glib/goption.c:1073
-#, c-format
-msgid "Cannot parse integer value '%s' for %s"
+#: glib/goption.c:1061
+#, fuzzy
+#| msgid "Help Options:"
+msgid "Options:"
+msgstr "گزینه‌های راهنما:"
+
+#: glib/goption.c:1125 glib/goption.c:1195
+#, fuzzy, c-format
+#| msgid "Cannot parse integer value '%s' for %s"
+msgid "Cannot parse integer value “%s” for %s"
 msgstr "نمی‌توان مقدار صحیح «%s» برای %s را تجزیه کرد"
 
-#: ../glib/goption.c:1013
-#: ../glib/goption.c:1081
-#, c-format
-msgid "Integer value '%s' for %s out of range"
+#: glib/goption.c:1135 glib/goption.c:1203
+#, fuzzy, c-format
+#| msgid "Integer value '%s' for %s out of range"
+msgid "Integer value “%s” for %s out of range"
 msgstr "مقدار صحیح «%s» خارج از محدودهٔ %s است"
 
-#: ../glib/goption.c:1038
-#, c-format
-msgid "Cannot parse double value '%s' for %s"
+#: glib/goption.c:1160
+#, fuzzy, c-format
+#| msgid "Cannot parse double value '%s' for %s"
+msgid "Cannot parse double value “%s” for %s"
 msgstr "نمی‌توان مقدار صحیح با دقت مضاعف «%s» برای %s را تجزیه کرد"
 
-#: ../glib/goption.c:1046
-#, c-format
-msgid "Double value '%s' for %s out of range"
+#: glib/goption.c:1168
+#, fuzzy, c-format
+#| msgid "Double value '%s' for %s out of range"
+msgid "Double value “%s” for %s out of range"
 msgstr "مقدار صحیح با دقت مضاعف «%s» خارج از محدودهٔ %s است"
 
-#: ../glib/goption.c:1309
-#: ../glib/goption.c:1388
+#: glib/goption.c:1460 glib/goption.c:1539
 #, c-format
 msgid "Error parsing option %s"
 msgstr "خطا در تجزیهٔ گزینهٔ %s"
 
-#: ../glib/goption.c:1419
-#: ../glib/goption.c:1532
+#: glib/goption.c:1561 glib/goption.c:1674
 #, c-format
 msgid "Missing argument for %s"
 msgstr "‏%s یک آرگومان کم دارد"
 
-#: ../glib/goption.c:1985
+#: glib/goption.c:2185
 #, c-format
 msgid "Unknown option %s"
 msgstr "گزینهٔ نامعلوم %s"
 
-#: ../glib/gregex.c:190
+#: glib/gregex.c:255
 msgid "corrupted object"
 msgstr "شیء ناقص"
 
-#: ../glib/gregex.c:192
+#: glib/gregex.c:257
 msgid "internal error or corrupted object"
 msgstr "خطا داخلی یا شیء ناقص"
 
-#: ../glib/gregex.c:194
+#: glib/gregex.c:259
 msgid "out of memory"
 msgstr "حافظه کم است"
 
-#: ../glib/gregex.c:199
+#: glib/gregex.c:264
 msgid "backtracking limit reached"
 msgstr "محدودیت backtracking فرارسید"
 
-#: ../glib/gregex.c:211
-#: ../glib/gregex.c:219
+#: glib/gregex.c:276 glib/gregex.c:284
 msgid "the pattern contains items not supported for partial matching"
 msgstr "الگو حاوی مواردی است که برای مطابقت جزئی مناسب نیست"
 
-#: ../glib/gregex.c:221
+#: glib/gregex.c:278
+msgid "internal error"
+msgstr "خطا داخلی"
+
+#: glib/gregex.c:286
 msgid "back references as conditions are not supported for partial matching"
 msgstr ""
 
-#: ../glib/gregex.c:230
+#: glib/gregex.c:295
 msgid "recursion limit reached"
 msgstr "محدودیت تکرار فرارسید"
 
-#: ../glib/gregex.c:232
-msgid "workspace limit for empty substrings reached"
-msgstr ""
-
-#: ../glib/gregex.c:234
+#: glib/gregex.c:297
 msgid "invalid combination of newline flags"
 msgstr "ترکیب نادرست پرچم‌های خط جدید"
 
-#: ../glib/gregex.c:236
+#: glib/gregex.c:299
+#, fuzzy
 msgid "bad offset"
 msgstr "افست نادرست"
 
-#: ../glib/gregex.c:238
+#: glib/gregex.c:301
 msgid "short utf8"
 msgstr "utf8 کوتاه"
 
-#: ../glib/gregex.c:242
+#: glib/gregex.c:303
+msgid "recursion loop"
+msgstr ""
+
+#: glib/gregex.c:307
 msgid "unknown error"
 msgstr "خطا نادرست"
 
-#: ../glib/gregex.c:262
+#: glib/gregex.c:327
 msgid "\\ at end of pattern"
 msgstr "\\ در پایان الگو"
 
-#: ../glib/gregex.c:265
+#: glib/gregex.c:330
 msgid "\\c at end of pattern"
 msgstr "\\c در پایان الگو"
 
-#: ../glib/gregex.c:268
-msgid "unrecognized character follows \\"
+#: glib/gregex.c:333
+#, fuzzy
+#| msgid "unrecognized character follows \\"
+msgid "unrecognized character following \\"
 msgstr "نویسه ناشناخته پس از \\"
 
-#: ../glib/gregex.c:275
-msgid "case-changing escapes (\\l, \\L, \\u, \\U) are not allowed here"
-msgstr ""
-
-#: ../glib/gregex.c:278
+#: glib/gregex.c:336
 msgid "numbers out of order in {} quantifier"
 msgstr "اعداد بدون ترتیل در کمیت‌سنج {}"
 
-#: ../glib/gregex.c:281
+#: glib/gregex.c:339
 msgid "number too big in {} quantifier"
 msgstr "اعداد در  کمیت‌سنج {} بسیار بزرگ هستند"
 
-#: ../glib/gregex.c:284
+#: glib/gregex.c:342
 #, fuzzy
 msgid "missing terminating ] for character class"
 msgstr "کانال با یک نویسهٔ ناتمام پایان می‌یابد"
 
-#: ../glib/gregex.c:287
+#: glib/gregex.c:345
 #, fuzzy
 msgid "invalid escape sequence in character class"
 msgstr "دنبالهٔ بایتی نامعتبر در ورودی تبدیل"
 
-#: ../glib/gregex.c:290
+#: glib/gregex.c:348
 msgid "range out of order in character class"
 msgstr "محدوده در کلاس نویسه بدون ترتیب است"
 
-#: ../glib/gregex.c:293
+#: glib/gregex.c:351
 msgid "nothing to repeat"
 msgstr "چیزی برای تکرار نیست"
 
-#: ../glib/gregex.c:296
-msgid "unrecognized character after (?"
-msgstr "نویسه ناشناس بعد از (?"
-
-#: ../glib/gregex.c:300
-msgid "unrecognized character after (?<"
-msgstr "نویسه ناشناس بعد از (?<"
+#: glib/gregex.c:355
+msgid "unexpected repeat"
+msgstr "تکرار غیرمنتظره"
 
-#: ../glib/gregex.c:304
-msgid "unrecognized character after (?P"
-msgstr "نویسه ناشناس بعد از (?P"
+#: glib/gregex.c:358
+#, fuzzy
+#| msgid "unrecognized character after (?"
+msgid "unrecognized character after (? or (?-"
+msgstr "نویسه ناشناس بعد از (?"
 
-#: ../glib/gregex.c:307
+#: glib/gregex.c:361
 msgid "POSIX named classes are supported only within a class"
 msgstr ""
 
-#: ../glib/gregex.c:310
+#: glib/gregex.c:364
 msgid "missing terminating )"
 msgstr ""
 
-#: ../glib/gregex.c:314
-msgid ") without opening ("
-msgstr ""
-
-#. translators: '(?R' and '(?[+-]digits' are both meant as (groups of)
-#. * sequences here, '(?-54' would be an example for the second group.
-#.
-#: ../glib/gregex.c:321
-msgid "(?R or (?[+-]digits must be followed by )"
-msgstr ""
-
-#: ../glib/gregex.c:324
+#: glib/gregex.c:367
 msgid "reference to non-existent subpattern"
 msgstr ""
 
-#: ../glib/gregex.c:327
+#: glib/gregex.c:370
 msgid "missing ) after comment"
 msgstr ""
 
-#: ../glib/gregex.c:330
-msgid "regular expression too large"
+#: glib/gregex.c:373
+#, fuzzy
+#| msgid "regular expression too large"
+msgid "regular expression is too large"
 msgstr "عبارت باقاعده بسیار بلند است"
 
-#: ../glib/gregex.c:333
+#: glib/gregex.c:376
 msgid "failed to get memory"
 msgstr "گرفتن حافظه شکست خورد"
 
-#: ../glib/gregex.c:336
+#: glib/gregex.c:380
+msgid ") without opening ("
+msgstr ""
+
+#: glib/gregex.c:384
+msgid "code overflow"
+msgstr ""
+
+#: glib/gregex.c:388
+msgid "unrecognized character after (?<"
+msgstr "نویسه ناشناس بعد از (?<"
+
+#: glib/gregex.c:391
 msgid "lookbehind assertion is not fixed length"
 msgstr ""
 
-#: ../glib/gregex.c:339
+#: glib/gregex.c:394
 msgid "malformed number or name after (?("
 msgstr ""
 
-#: ../glib/gregex.c:342
+#: glib/gregex.c:397
 msgid "conditional group contains more than two branches"
 msgstr ""
 
-#: ../glib/gregex.c:345
+#: glib/gregex.c:400
 msgid "assertion expected after (?("
 msgstr ""
 
-#: ../glib/gregex.c:348
+#. translators: '(?R' and '(?[+-]digits' are both meant as (groups of)
+#. * sequences here, '(?-54' would be an example for the second group.
+#.
+#: glib/gregex.c:407
+msgid "(?R or (?[+-]digits must be followed by )"
+msgstr ""
+
+#: glib/gregex.c:410
 msgid "unknown POSIX class name"
 msgstr "نام کلاس POSIX ناشناخته"
 
-#: ../glib/gregex.c:351
+#: glib/gregex.c:413
 #, fuzzy
 msgid "POSIX collating elements are not supported"
 msgstr "پیوندهای نمادی پشتیبانی نمی‌شوند"
 
-#: ../glib/gregex.c:354
+#: glib/gregex.c:416
 msgid "character value in \\x{...} sequence is too large"
 msgstr ""
 
-#: ../glib/gregex.c:357
+#: glib/gregex.c:419
 msgid "invalid condition (?(0)"
 msgstr ""
 
-#: ../glib/gregex.c:360
+#: glib/gregex.c:422
 msgid "\\C not allowed in lookbehind assertion"
 msgstr ""
 
-#: ../glib/gregex.c:363
+#: glib/gregex.c:429
+msgid "escapes \\L, \\l, \\N{name}, \\U, and \\u are not supported"
+msgstr ""
+
+#: glib/gregex.c:432
 msgid "recursive call could loop indefinitely"
 msgstr ""
 
-#: ../glib/gregex.c:366
+#: glib/gregex.c:436
+msgid "unrecognized character after (?P"
+msgstr "نویسه ناشناس بعد از (?P"
+
+#: glib/gregex.c:439
 msgid "missing terminator in subpattern name"
 msgstr ""
 
-#: ../glib/gregex.c:369
+#: glib/gregex.c:442
 msgid "two named subpatterns have the same name"
 msgstr ""
 
-#: ../glib/gregex.c:372
+#: glib/gregex.c:445
 msgid "malformed \\P or \\p sequence"
 msgstr ""
 
-#: ../glib/gregex.c:375
+#: glib/gregex.c:448
 msgid "unknown property name after \\P or \\p"
 msgstr "خصیصه‌ی ناشناس پس از \\P یا \\p"
 
-#: ../glib/gregex.c:378
-msgid "subpattern name is too long (maximum 32 characters)"
+#: glib/gregex.c:451
+msgid "subpattern name is too long (maximum 32 characters)"
+msgstr ""
+
+#: glib/gregex.c:454
+msgid "too many named subpatterns (maximum 10,000)"
+msgstr ""
+
+#: glib/gregex.c:457
+msgid "octal value is greater than \\377"
+msgstr ""
+
+#: glib/gregex.c:461
+msgid "overran compiling workspace"
+msgstr ""
+
+#: glib/gregex.c:465
+msgid "previously-checked referenced subpattern not found"
+msgstr ""
+
+#: glib/gregex.c:468
+msgid "DEFINE group contains more than one branch"
+msgstr ""
+
+#: glib/gregex.c:471
+msgid "inconsistent NEWLINE options"
+msgstr ""
+
+#: glib/gregex.c:474
+msgid "\\g is not followed by a braced, angle-bracketed, or quoted name or number, or by a plain number"
+msgstr ""
+
+#: glib/gregex.c:478
+msgid "a numbered reference must not be zero"
+msgstr ""
+
+#: glib/gregex.c:481
+msgid "an argument is not allowed for (*ACCEPT), (*FAIL), or (*COMMIT)"
+msgstr ""
+
+#: glib/gregex.c:484
+msgid "(*VERB) not recognized"
+msgstr ""
+
+#: glib/gregex.c:487
+msgid "number is too big"
 msgstr ""
 
-#: ../glib/gregex.c:381
-msgid "too many named subpatterns (maximum 10,000)"
+#: glib/gregex.c:490
+msgid "missing subpattern name after (?&"
 msgstr ""
 
-#: ../glib/gregex.c:384
-msgid "octal value is greater than \\377"
+#: glib/gregex.c:493
+#, fuzzy
+#| msgid "digit expected"
+msgid "digit expected after (?+"
+msgstr "انتظار رقم می‌رفت"
+
+#: glib/gregex.c:496
+msgid "] is an invalid data character in JavaScript compatibility mode"
 msgstr ""
 
-#: ../glib/gregex.c:387
-msgid "DEFINE group contains more than one branch"
+#: glib/gregex.c:499
+msgid "different names for subpatterns of the same number are not allowed"
 msgstr ""
 
-#: ../glib/gregex.c:390
-msgid "repeating a DEFINE group is not allowed"
+#: glib/gregex.c:502
+msgid "(*MARK) must have an argument"
 msgstr ""
 
-#: ../glib/gregex.c:393
-msgid "inconsistent NEWLINE options"
+#: glib/gregex.c:505
+msgid "\\c must be followed by an ASCII character"
 msgstr ""
 
-#: ../glib/gregex.c:396
-msgid "\\g is not followed by a braced name or an optionally braced non-zero number"
+#: glib/gregex.c:508
+msgid "\\k is not followed by a braced, angle-bracketed, or quoted name"
 msgstr ""
 
-#: ../glib/gregex.c:401
-msgid "unexpected repeat"
-msgstr "تکرار غیرمنتظره"
+#: glib/gregex.c:511
+#, fuzzy
+#| msgid "URIs not supported"
+msgid "\\N is not supported in a class"
+msgstr "آدرس‌ها پشتیبانی نمی‌شود"
 
-#: ../glib/gregex.c:405
-msgid "code overflow"
+#: glib/gregex.c:514
+msgid "too many forward references"
 msgstr ""
 
-#: ../glib/gregex.c:409
-msgid "overran compiling workspace"
+#: glib/gregex.c:517
+msgid "name is too long in (*MARK), (*PRUNE), (*SKIP), or (*THEN)"
 msgstr ""
 
-#: ../glib/gregex.c:413
-msgid "previously-checked referenced subpattern not found"
+#: glib/gregex.c:520
+msgid "character value in \\u.... sequence is too large"
 msgstr ""
 
-#: ../glib/gregex.c:631
-#: ../glib/gregex.c:1753
+#: glib/gregex.c:743 glib/gregex.c:1988
 #, c-format
 msgid "Error while matching regular expression %s: %s"
 msgstr "خطا در هنگام منطبق کردن عبارت باقاعده %s: %s"
 
-#: ../glib/gregex.c:1206
+#: glib/gregex.c:1321
 msgid "PCRE library is compiled without UTF8 support"
 msgstr "کتابخانه PCRE بدون پشتیبانی از UTF8 کامپایل شده است"
 
-#: ../glib/gregex.c:1215
+#: glib/gregex.c:1325
 msgid "PCRE library is compiled without UTF8 properties support"
 msgstr "کتابخانه PCRE بدون پشتیبانی از گزینه‌های UTF8 کامپایل شده است"
 
-#: ../glib/gregex.c:1271
-#, c-format
-msgid "Error while compiling regular expression %s at char %d: %s"
-msgstr "خطا در هنگام کامپایل عبارت با قاعده %s در نویسه %Id: %s"
+#: glib/gregex.c:1333
+#, fuzzy
+#| msgid "PCRE library is compiled without UTF8 properties support"
+msgid "PCRE library is compiled with incompatible options"
+msgstr "کتابخانه PCRE بدون پشتیبانی از گزینه‌های UTF8 کامپایل شده است"
 
-#: ../glib/gregex.c:1307
+#: glib/gregex.c:1362
 #, c-format
 msgid "Error while optimizing regular expression %s: %s"
 msgstr "خطا در هنگام بهینه کردن عبارت باقاعده %s: %s"
 
-#: ../glib/gregex.c:2182
-msgid "hexadecimal digit or '}' expected"
+#: glib/gregex.c:1442
+#, c-format
+msgid "Error while compiling regular expression %s at char %d: %s"
+msgstr "خطا در هنگام کامپایل عبارت با قاعده %s در نویسه %Id: %s"
+
+#: glib/gregex.c:2427
+#, fuzzy
+#| msgid "hexadecimal digit or '}' expected"
+msgid "hexadecimal digit or “}” expected"
 msgstr "رقم هگزادسیمال یا «}» مورد انتظار بود"
 
-#: ../glib/gregex.c:2198
+#: glib/gregex.c:2443
 msgid "hexadecimal digit expected"
 msgstr "رقم هگزادسیمال مورد انتظار بود"
 
-#: ../glib/gregex.c:2238
-msgid "missing '<' in symbolic reference"
-msgstr ""
+#: glib/gregex.c:2483
+#, fuzzy
+#| msgid "unfinished symbolic reference"
+msgid "missing “<” in symbolic reference"
+msgstr "ارجاع نمادین ناتمام"
 
-#: ../glib/gregex.c:2247
+#: glib/gregex.c:2492
 msgid "unfinished symbolic reference"
 msgstr "ارجاع نمادین ناتمام"
 
-#: ../glib/gregex.c:2254
+#: glib/gregex.c:2499
 msgid "zero-length symbolic reference"
 msgstr ""
 
-#: ../glib/gregex.c:2265
+#: glib/gregex.c:2510
 msgid "digit expected"
 msgstr "انتظار رقم می‌رفت"
 
-#: ../glib/gregex.c:2283
+#: glib/gregex.c:2528
 msgid "illegal symbolic reference"
 msgstr "ارجاع نمادین غیرقانونی"
 
-#: ../glib/gregex.c:2345
-msgid "stray final '\\'"
+#: glib/gregex.c:2591
+#, fuzzy
+#| msgid "stray final '\\'"
+msgid "stray final “\\”"
 msgstr "«\\» پایانی سرگردان"
 
-#: ../glib/gregex.c:2349
+#: glib/gregex.c:2595
 msgid "unknown escape sequence"
 msgstr ""
 
-#: ../glib/gregex.c:2359
-#, c-format
-msgid "Error while parsing replacement text \"%s\" at char %lu: %s"
+#: glib/gregex.c:2605
+#, fuzzy, c-format
+#| msgid "Error while parsing replacement text \"%s\" at char %lu: %s"
+msgid "Error while parsing replacement text “%s” at char %lu: %s"
 msgstr "خطا در هنگام تجزیه کردن متن جایگزین «%s» در نویسه %lu: %s"
 
-#: ../glib/gshell.c:91
-msgid "Quoted text doesn't begin with a quotation mark"
+#: glib/gshell.c:94
+#, fuzzy
+#| msgid "Quoted text doesn't begin with a quotation mark"
+msgid "Quoted text doesn’t begin with a quotation mark"
 msgstr "متن نقل شده با علامت نقل قول شروع نمی‌شود"
 
-#: ../glib/gshell.c:181
+#: glib/gshell.c:184
 msgid "Unmatched quotation mark in command line or other shell-quoted text"
 msgstr "علامت نقل قول تکی در سطر دستور یا متون داخل پوستهٔ دیگر"
 
-#: ../glib/gshell.c:559
-#, c-format
-msgid "Text ended just after a '\\' character. (The text was '%s')"
+#: glib/gshell.c:580
+#, fuzzy, c-format
+#| msgid "Text ended just after a '\\' character. (The text was '%s')"
+msgid "Text ended just after a “\\” character. (The text was “%s”)"
 msgstr "متن دقیقاً پس از یک نویسهٔ «\\» پایان یافت. (متن عبارت بود از «%s»)"
 
-#: ../glib/gshell.c:566
-#, c-format
-msgid "Text ended before matching quote was found for %c. (The text was '%s')"
+#: glib/gshell.c:587
+#, fuzzy, 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 "متن پیش از آن که علامت نقل قول متناظر برای %c پیدا شود پایان یافت. (متن عبارت بود از «%s»)"
 
-#: ../glib/gshell.c:578
+#: glib/gshell.c:599
 msgid "Text was empty (or contained only whitespace)"
 msgstr "متن خالی بود (یا فقط فاصلهٔ خالی داشت)"
 
-#: ../glib/gspawn.c:208
+#: glib/gspawn.c:308
 #, c-format
 msgid "Failed to read data from child process (%s)"
 msgstr "خواندن داده‌ها از فراروند فرزند شکست خورد (%s)"
 
-#: ../glib/gspawn.c:348
-#, c-format
-msgid "Unexpected error in select() reading data from a child process (%s)"
+#: glib/gspawn.c:458
+#, fuzzy, c-format
+#| msgid "Unexpected error in select() reading data from a child process (%s)"
+msgid "Unexpected error in reading data from a child process (%s)"
 msgstr "خطای غیرمنتظره در select()‎ هنگام خواندن داده‌ها از یک فراروند فرزند (%s)"
 
-#: ../glib/gspawn.c:433
+#: glib/gspawn.c:543
 #, c-format
 msgid "Unexpected error in waitpid() (%s)"
 msgstr "خطای غیرمنتظره در waitpid()‎ ‏(%s)"
 
-#: ../glib/gspawn.c:1174
-#: ../glib/gspawn-win32.c:338
-#: ../glib/gspawn-win32.c:346
+#: glib/gspawn.c:1152 glib/gspawn-win32.c:1407
+#, c-format
+msgid "Child process exited with code %ld"
+msgstr ""
+
+#: glib/gspawn.c:1160
+#, c-format
+msgid "Child process killed by signal %ld"
+msgstr ""
+
+#: glib/gspawn.c:1167
+#, c-format
+msgid "Child process stopped by signal %ld"
+msgstr ""
+
+#: glib/gspawn.c:1174
+#, c-format
+msgid "Child process exited abnormally"
+msgstr ""
+
+#: glib/gspawn.c:1793 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
 #, c-format
 msgid "Failed to read from child pipe (%s)"
 msgstr "خواندن از لولهٔ فرزند شکست خورد (%s)"
 
-#: ../glib/gspawn.c:1241
+#: glib/gspawn.c:2095
+#, fuzzy, c-format
+#| msgid "Failed to fork child process (%s)"
+msgid "Failed to spawn child process “%s” (%s)"
+msgstr "انشعاب فراروند فرزند شکست خورد (%s)"
+
+#: glib/gspawn.c:2212
 #, c-format
 msgid "Failed to fork (%s)"
 msgstr "انشعاب شکست خورد (%s)"
 
-#: ../glib/gspawn.c:1387
-#: ../glib/gspawn-win32.c:369
-#, c-format
-msgid "Failed to change to directory '%s' (%s)"
+#: glib/gspawn.c:2372 glib/gspawn-win32.c:381
+#, fuzzy, c-format
+#| msgid "Failed to change to directory '%s' (%s)"
+msgid "Failed to change to directory “%s” (%s)"
 msgstr "تغییر به شاخهٔ «%s» شکست خورد (%s)"
 
-#: ../glib/gspawn.c:1397
-#, c-format
-msgid "Failed to execute child process \"%s\" (%s)"
+#: glib/gspawn.c:2382
+#, fuzzy, c-format
+#| msgid "Failed to execute child process \"%s\" (%s)"
+msgid "Failed to execute child process “%s” (%s)"
 msgstr "اجرای فراروند فرزند «%s» شکست خورد (%s)"
 
-#: ../glib/gspawn.c:1407
+#: glib/gspawn.c:2392
 #, c-format
 msgid "Failed to redirect output or input of child process (%s)"
 msgstr "تغییر مسیر خروجی یا ورودی فراروند فرزند شکست خورد (%s)"
 
-#: ../glib/gspawn.c:1416
+#: glib/gspawn.c:2401
 #, c-format
 msgid "Failed to fork child process (%s)"
 msgstr "انشعاب فراروند فرزند شکست خورد (%s)"
 
-#: ../glib/gspawn.c:1424
-#, c-format
-msgid "Unknown error executing child process \"%s\""
+#: glib/gspawn.c:2409
+#, fuzzy, c-format
+#| msgid "Unknown error executing child process \"%s\""
+msgid "Unknown error executing child process “%s”"
 msgstr "خطای ناشناخته هنگام اجرای فراروند فرزند «%s»"
 
-#: ../glib/gspawn.c:1448
+#: glib/gspawn.c:2433
 #, c-format
 msgid "Failed to read enough data from child pid pipe (%s)"
 msgstr "خواندن دادهٔ کافی از لولهٔ pid فرزند شکست خورد (%s)"
 
-#: ../glib/gspawn.c:1521
-#: ../glib/gspawn-win32.c:299
+#: glib/gspawn-win32.c:294
+msgid "Failed to read data from child process"
+msgstr "خواندن داده‌ها از فراروند فرزند شکست خورد"
+
+#: glib/gspawn-win32.c:311
 #, c-format
 msgid "Failed to create pipe for communicating with child process (%s)"
 msgstr "ایجاد لوله برای ارتباط با فراروند فرزند شکست خورد (%s)"
 
-#: ../glib/gspawn-win32.c:282
-msgid "Failed to read data from child process"
-msgstr "خواندن داده‌ها از فراروند فرزند شکست خورد"
-
-#: ../glib/gspawn-win32.c:375
-#: ../glib/gspawn-win32.c:494
+#: glib/gspawn-win32.c:387 glib/gspawn-win32.c:392 glib/gspawn-win32.c:511
 #, c-format
 msgid "Failed to execute child process (%s)"
 msgstr "اجرای فراروند فرزند شکست خورد (%s)"
 
-#: ../glib/gspawn-win32.c:444
+#: glib/gspawn-win32.c:461
 #, c-format
 msgid "Invalid program name: %s"
 msgstr "نام برنامهٔ نامعتبر: %s"
 
-#: ../glib/gspawn-win32.c:454
-#: ../glib/gspawn-win32.c:722
-#: ../glib/gspawn-win32.c:1278
+#: glib/gspawn-win32.c:471 glib/gspawn-win32.c:779
 #, c-format
 msgid "Invalid string in argument vector at %d: %s"
 msgstr "رشتهٔ نامعتبر در بردار آرگومان درآیهٔ %Id: %s"
 
-#: ../glib/gspawn-win32.c:465
-#: ../glib/gspawn-win32.c:737
-#: ../glib/gspawn-win32.c:1311
+#: glib/gspawn-win32.c:482 glib/gspawn-win32.c:794
 #, c-format
 msgid "Invalid string in environment: %s"
 msgstr "رشتهٔ نامعتبر در محیط: %s"
 
-#: ../glib/gspawn-win32.c:718
-#: ../glib/gspawn-win32.c:1259
+#: glib/gspawn-win32.c:775
 #, c-format
 msgid "Invalid working directory: %s"
 msgstr "شاخهٔ کاری نامعتبر‏: %s"
 
-#: ../glib/gspawn-win32.c:783
+#: glib/gspawn-win32.c:837
 #, c-format
 msgid "Failed to execute helper program (%s)"
 msgstr "اجرای برنامهٔ راهنما  (‎%s) شکست خورد"
 
-#: ../glib/gspawn-win32.c:997
+#: glib/gspawn-win32.c:1064
 msgid "Unexpected error in g_io_channel_win32_poll() reading data from a child process"
 msgstr "خطای غیرمنتظره در g_io_channel_win32_poll()‎ هنگام خواندن داده‌ها از یک فراروند فرزند"
 
-#: ../glib/gutf8.c:915
+#: glib/gstrfuncs.c:3338 glib/gstrfuncs.c:3440
+msgid "Empty string is not a number"
+msgstr ""
+
+#: glib/gstrfuncs.c:3362
+#, fuzzy, c-format
+#| msgid "'%s' is not a valid name "
+msgid "“%s” is not a signed number"
+msgstr "نام «%s» معتبر نیست"
+
+#: glib/gstrfuncs.c:3372 glib/gstrfuncs.c:3476
+#, c-format
+msgid "Number “%s” is out of bounds [%s, %s]"
+msgstr ""
+
+#: glib/gstrfuncs.c:3466
+#, fuzzy, c-format
+#| msgid "'%s' is not a valid name "
+msgid "“%s” is not an unsigned number"
+msgstr "نام «%s» معتبر نیست"
+
+#: glib/guri.c:315
+#, fuzzy, no-c-format
+#| msgid " (invalid encoding)"
+msgid "Invalid %-encoding in URI"
+msgstr " (کدگذاری نامعتبر)"
+
+#: glib/guri.c:332
+msgid "Illegal character in URI"
+msgstr ""
+
+#: glib/guri.c:366
+msgid "Non-UTF-8 characters in URI"
+msgstr ""
+
+#: glib/guri.c:546
+#, c-format
+msgid "Invalid IPv6 address ‘%.*s’ in URI"
+msgstr ""
+
+#: glib/guri.c:601
+#, c-format
+msgid "Illegal encoded IP address ‘%.*s’ in URI"
+msgstr ""
+
+#: glib/guri.c:613
+#, c-format
+msgid "Illegal internationalized hostname ‘%.*s’ in URI"
+msgstr ""
+
+#: glib/guri.c:645 glib/guri.c:657
+#, c-format
+msgid "Could not parse port ‘%.*s’ in URI"
+msgstr ""
+
+#: glib/guri.c:664
+#, c-format
+msgid "Port ‘%.*s’ in URI is out of range"
+msgstr ""
+
+#: glib/guri.c:1224 glib/guri.c:1288
+#, fuzzy, c-format
+#| msgid "The URI '%s' is not an absolute URI using the \"file\" scheme"
+msgid "URI ‘%s’ is not an absolute URI"
+msgstr "نشانی «‎%s» یک نشانی اینترنتی مطلق با شِمای «پرونده» نیست"
+
+#: glib/guri.c:1230
+#, c-format
+msgid "URI ‘%s’ has no host component"
+msgstr ""
+
+#: glib/guri.c:1435
+msgid "URI is not absolute, and no base URI was provided"
+msgstr ""
+
+#: glib/guri.c:2213
+msgid "Missing ‘=’ and parameter value"
+msgstr ""
+
+#: glib/gutf8.c:817
+#, fuzzy
+#| msgid "failed to get memory"
+msgid "Failed to allocate memory"
+msgstr "گرفتن حافظه شکست خورد"
+
+#: glib/gutf8.c:950
 msgid "Character out of range for UTF-8"
 msgstr "نویسهٔ خارج از محدوده برای UTF-8"
 
-#: ../glib/gutf8.c:1015
-#: ../glib/gutf8.c:1024
-#: ../glib/gutf8.c:1154
-#: ../glib/gutf8.c:1163
-#: ../glib/gutf8.c:1302
-#: ../glib/gutf8.c:1398
+#: glib/gutf8.c:1051 glib/gutf8.c:1060 glib/gutf8.c:1190 glib/gutf8.c:1199 glib/gutf8.c:1338
+#: glib/gutf8.c:1435
 msgid "Invalid sequence in conversion input"
 msgstr "دنبالهٔ نامعتبر در ورودی تبدیل"
 
-#: ../glib/gutf8.c:1313
-#: ../glib/gutf8.c:1409
+#: glib/gutf8.c:1349 glib/gutf8.c:1446
 msgid "Character out of range for UTF-16"
 msgstr "نویسهٔ خارج از محدوده برای UTF-16"
 
-#: ../glib/gutils.c:2166
-#: ../glib/gutils.c:2193
-#: ../glib/gutils.c:2297
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2727
 #, c-format
-msgid "%u byte"
-msgid_plural "%u bytes"
-msgstr[0] "%Iu بایت"
-msgstr[1] "%Iu بایت"
+msgid "%.1f kB"
+msgstr "%I.1f کیلوبایت"
 
-#: ../glib/gutils.c:2172
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2729
 #, c-format
-msgid "%.1f KiB"
-msgstr "%I.1f KiB"
+msgid "%.1f MB"
+msgstr "%I.1f مگابایت"
 
-#: ../glib/gutils.c:2174
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2731
 #, c-format
-msgid "%.1f MiB"
-msgstr "%I.1f MiB"
+msgid "%.1f GB"
+msgstr "%I.1f گیگابایت"
 
-#: ../glib/gutils.c:2177
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2733
 #, c-format
-msgid "%.1f GiB"
-msgstr "%I.1f GiB"
+msgid "%.1f TB"
+msgstr "%I.1f ترابایت"
 
-#: ../glib/gutils.c:2180
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2735
 #, c-format
-msgid "%.1f TiB"
-msgstr "%I.1f TiB"
+msgid "%.1f PB"
+msgstr "%I.1f پتابایت"
 
-#: ../glib/gutils.c:2183
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2737
 #, c-format
-msgid "%.1f PiB"
-msgstr "%I.1f PiB"
+msgid "%.1f EB"
+msgstr "%I.1f اگزابایت"
 
-#: ../glib/gutils.c:2186
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2741
 #, c-format
-msgid "%.1f EiB"
-msgstr "%I.1f EiB"
+msgid "%.1f KiB"
+msgstr "%I.1f کیبی‌بایت"
 
-#: ../glib/gutils.c:2199
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2743
 #, c-format
-msgid "%.1f kB"
-msgstr "%I.1f کیلوبایت"
+msgid "%.1f MiB"
+msgstr "%I.1f مبی‌بایت"
 
-#: ../glib/gutils.c:2202
-#: ../glib/gutils.c:2310
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2745
 #, c-format
-msgid "%.1f MB"
-msgstr "%I.1f مگابایت"
+msgid "%.1f GiB"
+msgstr "%I.1f گیبی‌بایت"
 
-#: ../glib/gutils.c:2205
-#: ../glib/gutils.c:2315
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2747
 #, c-format
-msgid "%.1f GB"
-msgstr "%I.1f گیگابایت"
+msgid "%.1f TiB"
+msgstr "%I.1f تبی‌بایت"
 
-#: ../glib/gutils.c:2207
-#: ../glib/gutils.c:2320
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2749
 #, c-format
-msgid "%.1f TB"
-msgstr "%I.1f تترابایت"
+msgid "%.1f PiB"
+msgstr "%I.1f پبی‌بایت"
 
-#: ../glib/gutils.c:2210
-#: ../glib/gutils.c:2325
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2751
 #, c-format
-msgid "%.1f PB"
-msgstr "%I.1f پتابایت"
+msgid "%.1f EiB"
+msgstr "%I.1f اگزبی‌بایت"
 
-#: ../glib/gutils.c:2213
-#: ../glib/gutils.c:2330
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2755
 #, c-format
-msgid "%.1f EB"
-msgstr "%I.1f اگزابایت"
+msgid "%.1f kb"
+msgstr "%I.1f کیلوبیت"
 
-#. Translators: the %s in "%s bytes" will always be replaced by a number.
-#: ../glib/gutils.c:2250
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2757
 #, c-format
-msgid "%s byte"
-msgid_plural "%s bytes"
-msgstr[0] "%s بایت"
-msgstr[1] "%s بایت"
+msgid "%.1f Mb"
+msgstr "%I.1f مگابیت"
 
-#: ../glib/gutils.c:2305
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2759
 #, c-format
-msgid "%.1f KB"
-msgstr "%I.1f Ú©Û\8cÙ\84Ù\88بایت"
+msgid "%.1f Gb"
+msgstr "%I.1f Ú¯Û\8cگابیت"
 
-msgctxt "full month name with day"
-msgid "January"
-msgstr "ژانویه"
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2761
+#, c-format
+msgid "%.1f Tb"
+msgstr "%I.1f ترابیت"
 
-msgctxt "full month name with day"
-msgid "February"
-msgstr "فوریه"
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2763
+#, c-format
+msgid "%.1f Pb"
+msgstr "%I.1f پتابیت"
 
-msgctxt "full month name with day"
-msgid "March"
-msgstr "مارس"
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2765
+#, c-format
+msgid "%.1f Eb"
+msgstr "%I.1f اگزابیت"
 
-msgctxt "full month name with day"
-msgid "April"
-msgstr "آوریل"
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2769
+#, c-format
+msgid "%.1f Kib"
+msgstr "%I.1f کیبی‌بیت"
 
-msgctxt "full month name with day"
-msgid "May"
-msgstr "مه"
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2771
+#, c-format
+msgid "%.1f Mib"
+msgstr "%I.1f مبی‌بیت"
 
-msgctxt "full month name with day"
-msgid "June"
-msgstr "ژوئن"
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2773
+#, c-format
+msgid "%.1f Gib"
+msgstr "%I.1f گیبی‌بیت"
 
-msgctxt "full month name with day"
-msgid "July"
-msgstr "ژوئیه"
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2775
+#, c-format
+msgid "%.1f Tib"
+msgstr "%I.1f تبی‌بیت"
 
-msgctxt "full month name with day"
-msgid "August"
-msgstr "آگوست"
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2777
+#, c-format
+msgid "%.1f Pib"
+msgstr "%I.1f پبی‌بیت"
 
-msgctxt "full month name with day"
-msgid "September"
-msgstr "سپتامبر"
+#. Translators: Keep the no-break space between %.1f and the unit symbol
+#: glib/gutils.c:2779
+#, c-format
+msgid "%.1f Eib"
+msgstr "%I.1f اگزبی‌بیت"
 
-msgctxt "full month name with day"
-msgid "October"
-msgstr "اکتبر"
+#: glib/gutils.c:2813 glib/gutils.c:2930
+#, c-format
+msgid "%u byte"
+msgid_plural "%u bytes"
+msgstr[0] "%Iu بایت"
+msgstr[1] "%Iu بایت"
 
-msgctxt "full month name with day"
-msgid "November"
-msgstr "نوامبر"
+#: glib/gutils.c:2817
+#, c-format
+msgid "%u bit"
+msgid_plural "%u bits"
+msgstr[0] "%Iu بیت"
+msgstr[1] "%Iu بیت"
 
-msgctxt "full month name with day"
-msgid "December"
-msgstr "دسامبر"
+#. Translators: the %s in "%s bytes" will always be replaced by a number.
+#: glib/gutils.c:2884
+#, c-format
+msgid "%s byte"
+msgid_plural "%s bytes"
+msgstr[0] "%s بایت"
+msgstr[1] "%s بایت"
 
-msgctxt "abbreviated month name with day"
-msgid "Jan"
-msgstr "ژانویه"
+#. Translators: the %s in "%s bits" will always be replaced by a number.
+#: glib/gutils.c:2889
+#, c-format
+msgid "%s bit"
+msgid_plural "%s bits"
+msgstr[0] "%s بیت"
+msgstr[1] "%s بیت"
 
-msgctxt "abbreviated month name with day"
-msgid "Feb"
-msgstr "فوریه"
+#. Translators: this is from the deprecated function g_format_size_for_display() which uses 'KB' to
+#. * mean 1024 bytes.  I am aware that 'KB' is not correct, but it has been preserved for reasons of
+#. * compatibility.  Users will not see this string unless a program is using this deprecated function.
+#. * Please translate as literally as possible.
+#.
+#: glib/gutils.c:2943
+#, c-format
+msgid "%.1f KB"
+msgstr "%I.1f کیلوبایت"
 
-msgctxt "abbreviated month name with day"
-msgid "Mar"
-msgstr "مارس"
+#: glib/gutils.c:2948
+#, c-format
+msgid "%.1f MB"
+msgstr "%I.1f مگابایت"
 
-msgctxt "abbreviated month name with day"
-msgid "Apr"
-msgstr "آوریل"
+#: glib/gutils.c:2953
+#, c-format
+msgid "%.1f GB"
+msgstr "%I.1f گیگابایت"
 
-msgctxt "abbreviated month name with day"
-msgid "May"
-msgstr "مه"
+#: glib/gutils.c:2958
+#, c-format
+msgid "%.1f TB"
+msgstr "%I.1f ترابایت"
 
-msgctxt "abbreviated month name with day"
-msgid "Jun"
-msgstr "ژوئن"
+#: glib/gutils.c:2963
+#, c-format
+msgid "%.1f PB"
+msgstr "%I.1f پتابایت"
 
-msgctxt "abbreviated month name with day"
-msgid "Jul"
-msgstr "ژوئیه"
+#: glib/gutils.c:2968
+#, c-format
+msgid "%.1f EB"
+msgstr "%I.1f اگزابایت"
 
-msgctxt "abbreviated month name with day"
-msgid "Aug"
-msgstr "آگوست"
+#~ msgid "doing nothing.\n"
+#~ msgstr "هیچ‌کاری انجام نمی‌شود.\n"
 
-msgctxt "abbreviated month name with day"
-msgid "Sep"
-msgstr "سپتامبر"
+#~ msgid "Error renaming file: %s"
+#~ msgstr "خطا در تغییر نام پرونده: %s"
 
-msgctxt "abbreviated month name with day"
-msgid "Oct"
-msgstr "اکتبر"
+#~ msgid "Error opening file: %s"
+#~ msgstr "خطا در هنگام باز کردن پرونده: %s"
 
-msgctxt "abbreviated month name with day"
-msgid "Nov"
-msgstr "نوامبر"
+#~ msgid "Error creating directory: %s"
+#~ msgstr "خطا در هنگام ساخت شاخه: %s"
 
-msgctxt "abbreviated month name with day"
-msgid "Dec"
-msgstr "دسامبر"
+#~ msgid "Unknown error on connect"
+#~ msgstr "خطا ناشناخته در اتصال"
+
+#~ msgid "Association creation not supported on win32"
+#~ msgstr "ساخت ارتباط بر روی win32 پشتیبانی نمی‌شود"
+
+#~ msgid "Error reading file '%s': %s"
+#~ msgstr "خطا در خواندن پروندهٔ «‎%s»‏: %s"
+
+#~ msgid "Failed to open file '%s' for writing: fdopen() failed: %s"
+#~ msgstr "باز کردن پروندهٔ «‎%s» برای نوشتن شکست خورد: fdopen()‎ شکست خورد: %s"
+
+#~ msgid "Failed to write file '%s': fflush() failed: %s"
+#~ msgstr "نوشتن پروندهٔ «‎%s» شکست خورد: fflush()‎ شکست خورد: %s"
+
+#~ msgid "Failed to close file '%s': fclose() failed: %s"
+#~ msgstr "بستن پروندهٔ «‎%s» شکست خورد: fclose()‎ شکست خورد: %s"
+
+#~ msgid "Key file does not have key '%s'"
+#~ msgstr "پروندهٔ کلید، کلید «%s» را ندارد"
 
 #~ msgid "File is empty"
 #~ msgstr "پرونده خالی است"
 
-#~ msgid ""
-#~ "Key file contains key '%s' which has value that cannot be interpreted."
+#~ msgid "Key file contains key '%s' which has value that cannot be interpreted."
 #~ msgstr "پروندهٔ کلید حاوی کلید «%s» است که مقداری دارد که قابل تفسیر نیست."
 
 #, fuzzy
@@ -4231,12 +6242,11 @@ msgstr "دسامبر"
 #~ msgstr "دنبالهٔ نامعتبر در ورودی تبدیل"
 
 #~ msgid ""
-#~ "Character '%s' is not valid at the start of an entity name; the & "
-#~ "character begins an entity; if this ampersand isn't supposed to be an "
-#~ "entity, escape it as &amp;"
+#~ "Character '%s' is not valid at the start of an entity name; the & character begins an entity; if this "
+#~ "ampersand isn't supposed to be an entity, escape it as &amp;"
 #~ msgstr ""
-#~ "نویسهٔ «%s» در ابتدای نام نهادها مجاز نیست؛ نویسهٔ & نهاد را آغاز می‌کند؛ "
-#~ "اگر Ø§Û\8cÙ\86 Ø¹Ù\84اÙ\85ت & Ù\82رار Ù\86Û\8cست Ù\86Ù\87اد Ø´Ù\88دØ\8c Ø¨Ù\87â\80\8cجاÛ\8c Ø¢Ù\86 Ø§Ø² â\80\8e&amp;â\80\8e Ø§Ø³ØªÙ\81ادÙ\87 Ú©Ù\86Û\8cد"
+#~ "نویسهٔ «%s» در ابتدای نام نهادها مجاز نیست؛ نویسهٔ & نهاد را آغاز می‌کند؛ اگر این علامت & قرار نیست نهاد "
+#~ "شود، به‌جای آن از ‎&amp;‎ استفاده کنید"
 
 #~ msgid "Empty character reference; should include a digit such as &#454;"
 #~ msgstr "ارجاع نویسه‌ای خالی؛ باید یک رقم داشته باشد، مثل ‎&#454;‎"
index f97ba8a..d7b5f55 100644 (file)
--- a/po/fr.po
+++ b/po/fr.po
@@ -19,8 +19,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: glib master\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/glib/issues\n"
-"POT-Creation-Date: 2022-01-26 14:31+0000\n"
-"PO-Revision-Date: 2022-01-27 11:38+0100\n"
+"POT-Creation-Date: 2022-05-18 14:09+0000\n"
+"PO-Revision-Date: 2022-05-21 23:04+0200\n"
 "Last-Translator: Charles Monzat <charles.monzat@free.fr>\n"
 "Language-Team: GNOME French Team <gnomefr@traduc.org>\n"
 "Language: fr\n"
@@ -30,6 +30,17 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
 "X-Generator: Gtranslator 40.0\n"
 
+#: gio/gappinfo.c:333
+msgid "Setting default applications not supported yet"
+msgstr ""
+"La définition des applications par défaut n’est pas encore prise en charge"
+
+#: gio/gappinfo.c:366
+msgid "Setting application as last used for type not supported yet"
+msgstr ""
+"La définition de l’application comme étant la dernière utilisée pour le type "
+"n’est pas encore prise en charge"
+
 #: gio/gapplication.c:500
 msgid "GApplication options"
 msgstr "Options GApplication"
@@ -53,7 +64,7 @@ msgid "Replace the running instance"
 msgstr "Remplacer l’instance en cours"
 
 #: gio/gapplication-tool.c:45 gio/gapplication-tool.c:46 gio/gio-tool.c:227
-#: gio/gresource-tool.c:494 gio/gsettings-tool.c:572
+#: gio/gresource-tool.c:494 gio/gsettings-tool.c:584
 msgid "Print help"
 msgstr "Afficher l’aide"
 
@@ -65,7 +76,7 @@ msgstr "[COMMANDE]"
 msgid "Print version"
 msgstr "Afficher la version"
 
-#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:578
+#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:590
 msgid "Print version information and exit"
 msgstr "Afficher les informations de version et quitter"
 
@@ -130,8 +141,8 @@ msgstr "La commande pour laquelle l’aide détaillée doit être affichée"
 msgid "Application identifier in D-Bus format (eg: org.example.viewer)"
 msgstr "Identifiant d’application au format D-Bus (ex. : org.example.viewer)"
 
-#: gio/gapplication-tool.c:74 gio/glib-compile-resources.c:738
-#: gio/glib-compile-resources.c:744 gio/glib-compile-resources.c:772
+#: gio/gapplication-tool.c:74 gio/glib-compile-resources.c:820
+#: gio/glib-compile-resources.c:826 gio/glib-compile-resources.c:855
 #: gio/gresource-tool.c:501 gio/gresource-tool.c:567
 msgid "FILE"
 msgstr "FICHIER"
@@ -156,7 +167,7 @@ msgstr "PARAMÈTRE"
 msgid "Optional parameter to the action invocation, in GVariant format"
 msgstr "Paramètre facultatif pour l’invocation de l’action, au format GVariant"
 
-#: gio/gapplication-tool.c:98 gio/gresource-tool.c:532 gio/gsettings-tool.c:664
+#: gio/gapplication-tool.c:98 gio/gresource-tool.c:532 gio/gsettings-tool.c:676
 #, c-format
 msgid ""
 "Unknown command %s\n"
@@ -170,7 +181,7 @@ msgid "Usage:\n"
 msgstr "Utilisation :\n"
 
 #: gio/gapplication-tool.c:116 gio/gresource-tool.c:557
-#: gio/gsettings-tool.c:699
+#: gio/gsettings-tool.c:711
 msgid "Arguments:\n"
 msgstr "Paramètres :\n"
 
@@ -294,7 +305,7 @@ msgstr "Le flux est déjà fermé"
 msgid "Truncate not supported on base stream"
 msgstr "La troncature n’est pas prise en charge sur le flux de base"
 
-#: gio/gcancellable.c:319 gio/gdbusconnection.c:1873 gio/gdbusprivate.c:1416
+#: gio/gcancellable.c:319 gio/gdbusconnection.c:1857 gio/gdbusprivate.c:1418
 #: gio/gsimpleasyncresult.c:871 gio/gsimpleasyncresult.c:897
 #, c-format
 msgid "Operation was cancelled"
@@ -315,7 +326,7 @@ msgstr "Espace insuffisant dans la destination"
 #: gio/gcharsetconverter.c:342 gio/gdatainputstream.c:848
 #: gio/gdatainputstream.c:1266 glib/gconvert.c:449 glib/gconvert.c:879
 #: glib/giochannel.c:1573 glib/giochannel.c:1615 glib/giochannel.c:2470
-#: glib/gutf8.c:875 glib/gutf8.c:1328
+#: glib/gutf8.c:890 glib/gutf8.c:1344
 msgid "Invalid byte sequence in conversion input"
 msgstr "Séquence d’octets incorrecte en entrée du convertisseur"
 
@@ -325,7 +336,7 @@ msgstr "Séquence d’octets incorrecte en entrée du convertisseur"
 msgid "Error during conversion: %s"
 msgstr "Erreur lors de la conversion : %s"
 
-#: gio/gcharsetconverter.c:445 gio/gsocket.c:1143
+#: gio/gcharsetconverter.c:445 gio/gsocket.c:1147
 msgid "Cancellable initialization not supported"
 msgstr "Initialisation annulable non prise en charge"
 
@@ -341,39 +352,39 @@ msgstr ""
 msgid "Could not open converter from “%s” to “%s”"
 msgstr "Impossible d’ouvrir le convertisseur de « %s » vers « %s »"
 
-#: gio/gcontenttype.c:454
+#: gio/gcontenttype.c:470
 #, c-format
 msgid "%s type"
 msgstr "Type %s"
 
-#: gio/gcontenttype-win32.c:192
+#: gio/gcontenttype-win32.c:196
 msgid "Unknown type"
 msgstr "Type inconnu"
 
-#: gio/gcontenttype-win32.c:194
+#: gio/gcontenttype-win32.c:198
 #, c-format
 msgid "%s filetype"
 msgstr "Type de fichier %s"
 
-#: gio/gcredentials.c:323
+#: gio/gcredentials.c:335
 msgid "GCredentials contains invalid data"
 msgstr "GCredentials contient des données non valables"
 
-#: gio/gcredentials.c:383 gio/gcredentials.c:667
+#: gio/gcredentials.c:395 gio/gcredentials.c:686
 msgid "GCredentials is not implemented on this OS"
 msgstr "GCredentials n’est pas implémenté sur ce système d’exploitation"
 
-#: gio/gcredentials.c:538 gio/gcredentials.c:556
+#: gio/gcredentials.c:550 gio/gcredentials.c:568
 msgid "There is no GCredentials support for your platform"
 msgstr "Il n’y a pas de prise en charge de GCredentials pour votre plate-forme"
 
-#: gio/gcredentials.c:607
+#: gio/gcredentials.c:626
 msgid "GCredentials does not contain a process ID on this OS"
 msgstr ""
 "GCredentials ne contient pas d’identifiant de processus sur ce système "
 "d’exploitation"
 
-#: gio/gcredentials.c:661
+#: gio/gcredentials.c:680
 msgid "Credentials spoofing is not possible on this OS"
 msgstr ""
 "L’usurpation d’identité n’est pas possible sur ce système d’exploitation"
@@ -382,18 +393,18 @@ msgstr ""
 msgid "Unexpected early end-of-stream"
 msgstr "Fin précoce de flux inattendue"
 
-#: gio/gdbusaddress.c:159 gio/gdbusaddress.c:233 gio/gdbusaddress.c:322
+#: gio/gdbusaddress.c:162 gio/gdbusaddress.c:236 gio/gdbusaddress.c:325
 #, c-format
 msgid "Unsupported key “%s” in address entry “%s”"
 msgstr "Clé « %s » non prise en charge dans l’élément d’adresse « %s »"
 
-#: gio/gdbusaddress.c:172
+#: gio/gdbusaddress.c:175
 #, c-format
 msgid "Meaningless key/value pair combination in address entry “%s”"
 msgstr ""
 "Combinaison clé/valeur sans signification dans l’élément d’adresse « %s »"
 
-#: gio/gdbusaddress.c:181
+#: gio/gdbusaddress.c:184
 #, c-format
 msgid ""
 "Address “%s” is invalid (need exactly one of path, dir, tmpdir, or abstract "
@@ -402,30 +413,30 @@ msgstr ""
 "L’adresse « %s » n’est pas valide (nécessite exactement une des clés de "
 "« path », « dir », « tmpdir » ou « abstract »)"
 
-#: gio/gdbusaddress.c:248 gio/gdbusaddress.c:259 gio/gdbusaddress.c:274
-#: gio/gdbusaddress.c:337 gio/gdbusaddress.c:348
+#: gio/gdbusaddress.c:251 gio/gdbusaddress.c:262 gio/gdbusaddress.c:277
+#: gio/gdbusaddress.c:340 gio/gdbusaddress.c:351
 #, c-format
 msgid "Error in address “%s” — the “%s” attribute is malformed"
 msgstr "Erreur dans l’adresse « %s » — l’attribut « %s » est mal formé"
 
-#: gio/gdbusaddress.c:418 gio/gdbusaddress.c:682
+#: gio/gdbusaddress.c:421 gio/gdbusaddress.c:680
 #, c-format
 msgid "Unknown or unsupported transport “%s” for address “%s”"
 msgstr "Transport « %s » inconnu ou non pris en charge pour l’adresse « %s »"
 
-#: gio/gdbusaddress.c:462
+#: gio/gdbusaddress.c:465
 #, c-format
 msgid "Address element “%s” does not contain a colon (:)"
 msgstr ""
 "L’élément d’adresse « %s » ne comporte pas de caractère deux-points (:)"
 
-#: gio/gdbusaddress.c:471
+#: gio/gdbusaddress.c:474
 #, c-format
 msgid "Transport name in address element “%s” must not be empty"
 msgstr ""
 "Le nom de transport dans l’élément d’adresse « %s » ne doit pas être vide"
 
-#: gio/gdbusaddress.c:492
+#: gio/gdbusaddress.c:495
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” does not contain an equal "
@@ -434,7 +445,7 @@ msgstr ""
 "Le couple clé/valeur %d, « %s », dans l’élément d’adresse « %s » ne comporte "
 "pas de signe égal"
 
-#: gio/gdbusaddress.c:503
+#: gio/gdbusaddress.c:506
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” must not have an empty key"
@@ -442,7 +453,7 @@ msgstr ""
 "Le couple clé/valeur %d, « %s », dans l’élément d’adresse « %s » ne doit pas "
 "avoir une clé vide"
 
-#: gio/gdbusaddress.c:517
+#: gio/gdbusaddress.c:520
 #, c-format
 msgid ""
 "Error unescaping key or value in Key/Value pair %d, “%s”, in address element "
@@ -451,7 +462,7 @@ msgstr ""
 "Erreur lors du décodage de la clé ou de la valeur dans le couple clé/valeur "
 "%d, « %s », dans l’élément d’adresse « %s »"
 
-#: gio/gdbusaddress.c:589
+#: gio/gdbusaddress.c:588
 #, c-format
 msgid ""
 "Error in address “%s” — the unix transport requires exactly one of the keys "
@@ -460,89 +471,89 @@ msgstr ""
 "Erreur dans l’adresse « %s » — le transport Unix requiert que soit "
 "exactement définie une des clés « path » ou « abstract »"
 
-#: gio/gdbusaddress.c:625
+#: gio/gdbusaddress.c:623
 #, c-format
 msgid "Error in address “%s” — the host attribute is missing or malformed"
 msgstr ""
 "Erreur dans l’adresse « %s » — l’attribut de l’hôte est manquant ou mal formé"
 
-#: gio/gdbusaddress.c:639
+#: gio/gdbusaddress.c:637
 #, c-format
 msgid "Error in address “%s” — the port attribute is missing or malformed"
 msgstr ""
 "Erreur dans l’adresse « %s » — l’attribut du port est manquant ou mal formé"
 
-#: gio/gdbusaddress.c:653
+#: gio/gdbusaddress.c:651
 #, c-format
 msgid "Error in address “%s” — the noncefile attribute is missing or malformed"
 msgstr ""
 "Erreur dans l’adresse « %s » — l’attribut du fichier à dénomination unique "
 "est manquant ou mal formé"
 
-#: gio/gdbusaddress.c:674
+#: gio/gdbusaddress.c:672
 msgid "Error auto-launching: "
 msgstr "Erreur de lancement automatique :"
 
-#: gio/gdbusaddress.c:727
+#: gio/gdbusaddress.c:725
 #, c-format
 msgid "Error opening nonce file “%s”: %s"
 msgstr ""
 "Erreur lors de l’ouverture du fichier à dénomination unique « %s » : %s"
 
-#: gio/gdbusaddress.c:746
+#: gio/gdbusaddress.c:744
 #, c-format
 msgid "Error reading from nonce file “%s”: %s"
 msgstr "Erreur de lecture du fichier à dénomination unique « %s » : %s"
 
-#: gio/gdbusaddress.c:755
+#: gio/gdbusaddress.c:753
 #, c-format
 msgid "Error reading from nonce file “%s”, expected 16 bytes, got %d"
 msgstr ""
 "Erreur de lecture du fichier à dénomination unique « %s », 16 octets "
 "attendus, %d reçus"
 
-#: gio/gdbusaddress.c:773
+#: gio/gdbusaddress.c:771
 #, c-format
 msgid "Error writing contents of nonce file “%s” to stream:"
 msgstr ""
 "Erreur d’écriture du contenu du fichier à numérotation unique « %s » sur le "
 "flux :"
 
-#: gio/gdbusaddress.c:988
+#: gio/gdbusaddress.c:986
 msgid "The given address is empty"
 msgstr "L’adresse indiquée est vide"
 
-#: gio/gdbusaddress.c:1101
+#: gio/gdbusaddress.c:1099
 #, c-format
-msgid "Cannot spawn a message bus when setuid"
+msgid "Cannot spawn a message bus when AT_SECURE is set"
 msgstr ""
-"Impossible de générer dynamiquement un bus messages quand le drapeau setuid "
-"est mis"
+"Impossible de générer dynamiquement un bus messages quand AT_SECURE est "
+"défini"
 
-#: gio/gdbusaddress.c:1108
+#: gio/gdbusaddress.c:1106
 msgid "Cannot spawn a message bus without a machine-id: "
 msgstr ""
 "Impossible de générer dynamiquement un bus messages sans identifiant "
 "machine : "
 
-#: gio/gdbusaddress.c:1115
+#: gio/gdbusaddress.c:1113
 #, c-format
 msgid "Cannot autolaunch D-Bus without X11 $DISPLAY"
 msgstr "Impossible de lancer automatiquement D-Bus sans $DISPLAY X11"
 
-#: gio/gdbusaddress.c:1157
+#: gio/gdbusaddress.c:1155
 #, c-format
 msgid "Error spawning command line “%s”: "
 msgstr "Erreur lors de la génération de la ligne de commande « %s » : "
 
-#: gio/gdbusaddress.c:1226
+#: gio/gdbusaddress.c:1224
 #, c-format
 msgid "Cannot determine session bus address (not implemented for this OS)"
 msgstr ""
 "Impossible de déterminer l’adresse du bus de session (non pris en charge "
 "pour ce système d’exploitation)"
 
-#: gio/gdbusaddress.c:1375 gio/gdbusconnection.c:7334
+#: gio/gdbusaddress.c:1373 gio/gdbusconnection.c:7318
 #, c-format
 msgid ""
 "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
@@ -551,7 +562,7 @@ msgstr ""
 "Impossible de déterminer l’adresse du bus à partir de la variable "
 "d’environnement DBUS_STARTER_BUS_TYPE — valeur inconnue « %s »"
 
-#: gio/gdbusaddress.c:1384 gio/gdbusconnection.c:7343
+#: gio/gdbusaddress.c:1382 gio/gdbusconnection.c:7327
 msgid ""
 "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
 "variable is not set"
@@ -559,7 +570,7 @@ msgstr ""
 "Impossible de déterminer l’adresse du bus étant donné que la variable "
 "d’environnement DBUS_STARTER_BUS_TYPE n’est pas définie"
 
-#: gio/gdbusaddress.c:1394
+#: gio/gdbusaddress.c:1392
 #, c-format
 msgid "Unknown bus type %d"
 msgstr "Type de bus %d inconnu"
@@ -592,13 +603,13 @@ msgstr ""
 msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
 msgstr "Annulé via GDBusAuthObserver::authorize-authenticated-peer"
 
-#: gio/gdbusauthmechanismsha1.c:298
+#: gio/gdbusauthmechanismsha1.c:300
 #, c-format
 msgid "Error when getting information for directory “%s”: %s"
 msgstr ""
 "Erreur lors de la récupération d’information sur le répertoire « %s » : %s"
 
-#: gio/gdbusauthmechanismsha1.c:313
+#: gio/gdbusauthmechanismsha1.c:315
 #, c-format
 msgid ""
 "Permissions on directory “%s” are malformed. Expected mode 0700, got 0%o"
@@ -606,34 +617,34 @@ msgstr ""
 "Les droits d’accès au répertoire « %s » sont mal formés. Mode 0700 attendu, "
 "0%o obtenu"
 
-#: gio/gdbusauthmechanismsha1.c:346 gio/gdbusauthmechanismsha1.c:357
+#: gio/gdbusauthmechanismsha1.c:348 gio/gdbusauthmechanismsha1.c:359
 #, c-format
 msgid "Error creating directory “%s”: %s"
 msgstr "Erreur lors de la création du répertoire « %s » : %s"
 
-#: gio/gdbusauthmechanismsha1.c:359 gio/gfile.c:1062 gio/gfile.c:1300
-#: gio/gfile.c:1438 gio/gfile.c:1676 gio/gfile.c:1731 gio/gfile.c:1789
-#: gio/gfile.c:1873 gio/gfile.c:1930 gio/gfile.c:1994 gio/gfile.c:2049
-#: gio/gfile.c:3754 gio/gfile.c:3809 gio/gfile.c:4102 gio/gfile.c:4572
-#: gio/gfile.c:4983 gio/gfile.c:5068 gio/gfile.c:5158 gio/gfile.c:5255
-#: gio/gfile.c:5342 gio/gfile.c:5443 gio/gfile.c:8153 gio/gfile.c:8243
-#: gio/gfile.c:8327 gio/win32/gwinhttpfile.c:453
+#: gio/gdbusauthmechanismsha1.c:361 gio/gfile.c:1080 gio/gfile.c:1318
+#: gio/gfile.c:1456 gio/gfile.c:1694 gio/gfile.c:1749 gio/gfile.c:1807
+#: gio/gfile.c:1891 gio/gfile.c:1948 gio/gfile.c:2012 gio/gfile.c:2067
+#: gio/gfile.c:3772 gio/gfile.c:3912 gio/gfile.c:4205 gio/gfile.c:4675
+#: gio/gfile.c:5086 gio/gfile.c:5171 gio/gfile.c:5261 gio/gfile.c:5358
+#: gio/gfile.c:5445 gio/gfile.c:5546 gio/gfile.c:8375 gio/gfile.c:8465
+#: gio/gfile.c:8549 gio/win32/gwinhttpfile.c:453
 msgid "Operation not supported"
 msgstr "Opération non prise en charge"
 
-#: gio/gdbusauthmechanismsha1.c:402
+#: gio/gdbusauthmechanismsha1.c:404
 #, c-format
 msgid "Error opening keyring “%s” for reading: "
 msgstr "Erreur lors de l’ouverture du trousseau de clés « %s » en lecture : "
 
-#: gio/gdbusauthmechanismsha1.c:425 gio/gdbusauthmechanismsha1.c:747
+#: gio/gdbusauthmechanismsha1.c:427 gio/gdbusauthmechanismsha1.c:769
 #, c-format
 msgid "Line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr ""
 "La ligne %d du trousseau de clés de « %s » avec le contenu « %s » est mal "
 "formée"
 
-#: gio/gdbusauthmechanismsha1.c:439 gio/gdbusauthmechanismsha1.c:761
+#: gio/gdbusauthmechanismsha1.c:441 gio/gdbusauthmechanismsha1.c:783
 #, c-format
 msgid ""
 "First token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -641,7 +652,7 @@ msgstr ""
 "Le premier jeton de la ligne %d du trousseau de clés de « %s » avec le "
 "contenu « %s » est mal formé"
 
-#: gio/gdbusauthmechanismsha1.c:453 gio/gdbusauthmechanismsha1.c:775
+#: gio/gdbusauthmechanismsha1.c:455 gio/gdbusauthmechanismsha1.c:797
 #, c-format
 msgid ""
 "Second token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -649,60 +660,60 @@ msgstr ""
 "Le deuxième jeton de la ligne %d du trousseau de clés de « %s » avec le "
 "contenu « %s » est mal formé"
 
-#: gio/gdbusauthmechanismsha1.c:477
+#: gio/gdbusauthmechanismsha1.c:479
 #, c-format
 msgid "Didn’t find cookie with id %d in the keyring at “%s”"
 msgstr ""
 "Impossible de trouver un cookie avec l’identifiant %d dans le trousseau de "
 "clés de « %s »"
 
-#: gio/gdbusauthmechanismsha1.c:523
+#: gio/gdbusauthmechanismsha1.c:536
 #, c-format
 msgid "Error creating lock file “%s”: %s"
 msgstr "Erreur lors de la création du fichier verrou « %s » : %s"
 
-#: gio/gdbusauthmechanismsha1.c:587
+#: gio/gdbusauthmechanismsha1.c:609
 #, c-format
 msgid "Error deleting stale lock file “%s”: %s"
 msgstr "Erreur lors de la destruction de l’ancien fichier verrou « %s » : %s"
 
-#: gio/gdbusauthmechanismsha1.c:626
+#: gio/gdbusauthmechanismsha1.c:648
 #, c-format
 msgid "Error closing (unlinked) lock file “%s”: %s"
 msgstr "Erreur lors de la fermeture du fichier verrou (non lié) « %s » : %s"
 
-#: gio/gdbusauthmechanismsha1.c:637
+#: gio/gdbusauthmechanismsha1.c:659
 #, c-format
 msgid "Error unlinking lock file “%s”: %s"
 msgstr ""
 "Erreur lors de la suppression du lien avec le fichier verrou « %s » : %s"
 
-#: gio/gdbusauthmechanismsha1.c:714
+#: gio/gdbusauthmechanismsha1.c:736
 #, c-format
 msgid "Error opening keyring “%s” for writing: "
 msgstr "Erreur lors de l’ouverture du trousseau de clés « %s » en écriture : "
 
-#: gio/gdbusauthmechanismsha1.c:908
+#: gio/gdbusauthmechanismsha1.c:930
 #, c-format
 msgid "(Additionally, releasing the lock for “%s” also failed: %s) "
 msgstr "(en outre, le relèvement du verrou pour « %s » a aussi échoué : %s) "
 
-#: gio/gdbusconnection.c:604 gio/gdbusconnection.c:2418
+#: gio/gdbusconnection.c:588 gio/gdbusconnection.c:2402
 msgid "The connection is closed"
 msgstr "La connexion est fermée"
 
-#: gio/gdbusconnection.c:1903
+#: gio/gdbusconnection.c:1887
 msgid "Timeout was reached"
 msgstr "Le délai d’attente est dépassé"
 
-#: gio/gdbusconnection.c:2541
+#: gio/gdbusconnection.c:2525
 msgid ""
 "Unsupported flags encountered when constructing a client-side connection"
 msgstr ""
 "Marqueurs non pris en charge rencontrés lors de la construction d’une "
 "connexion côté client"
 
-#: gio/gdbusconnection.c:4269 gio/gdbusconnection.c:4623
+#: gio/gdbusconnection.c:4253 gio/gdbusconnection.c:4607
 #, c-format
 msgid ""
 "No such interface “org.freedesktop.DBus.Properties” on object at path %s"
@@ -710,107 +721,107 @@ msgstr ""
 "Pas d’interface « org.freedesktop.DBus.Properties » pour l’objet à "
 "l’emplacement %s"
 
-#: gio/gdbusconnection.c:4414
+#: gio/gdbusconnection.c:4398
 #, c-format
 msgid "No such property “%s”"
 msgstr "La propriété « %s » n’existe pas"
 
-#: gio/gdbusconnection.c:4426
+#: gio/gdbusconnection.c:4410
 #, c-format
 msgid "Property “%s” is not readable"
 msgstr "La propriété « %s » ne peut pas être lue"
 
-#: gio/gdbusconnection.c:4437
+#: gio/gdbusconnection.c:4421
 #, c-format
 msgid "Property “%s” is not writable"
 msgstr "La propriété « %s » ne peut pas être écrite"
 
-#: gio/gdbusconnection.c:4457
+#: gio/gdbusconnection.c:4441
 #, c-format
 msgid "Error setting property “%s”: Expected type “%s” but got “%s”"
 msgstr ""
 "Erreur lors de la définition de la propriété « %s » : type attendu « %s », "
 "« %s » obtenu"
 
-#: gio/gdbusconnection.c:4562 gio/gdbusconnection.c:4777
-#: gio/gdbusconnection.c:6760
+#: gio/gdbusconnection.c:4546 gio/gdbusconnection.c:4761
+#: gio/gdbusconnection.c:6744
 #, c-format
 msgid "No such interface “%s”"
 msgstr "L’interface « %s » n’existe pas"
 
-#: gio/gdbusconnection.c:4999 gio/gdbusconnection.c:7274
+#: gio/gdbusconnection.c:4983 gio/gdbusconnection.c:7258
 #, c-format
 msgid "No such interface “%s” on object at path %s"
 msgstr "L’interface « %s » n’existe pas pour l’objet à l’emplacement %s"
 
-#: gio/gdbusconnection.c:5100
+#: gio/gdbusconnection.c:5084
 #, c-format
 msgid "No such method “%s”"
 msgstr "La méthode « %s » n’existe pas"
 
-#: gio/gdbusconnection.c:5131
+#: gio/gdbusconnection.c:5115
 #, c-format
 msgid "Type of message, “%s”, does not match expected type “%s”"
 msgstr "Le type du message, « %s », ne correspond pas au type attendu « %s »"
 
-#: gio/gdbusconnection.c:5334
+#: gio/gdbusconnection.c:5318
 #, c-format
 msgid "An object is already exported for the interface %s at %s"
 msgstr "Un objet est déjà exporté pour l’interface « %s » en « %s »"
 
-#: gio/gdbusconnection.c:5561
+#: gio/gdbusconnection.c:5545
 #, c-format
 msgid "Unable to retrieve property %s.%s"
 msgstr "Impossible d’obtenir la propriété %s.%s"
 
-#: gio/gdbusconnection.c:5617
+#: gio/gdbusconnection.c:5601
 #, c-format
 msgid "Unable to set property %s.%s"
 msgstr "Impossible de définir la propriété %s.%s"
 
-#: gio/gdbusconnection.c:5796
+#: gio/gdbusconnection.c:5780
 #, c-format
 msgid "Method “%s” returned type “%s”, but expected “%s”"
 msgstr "La méthode « %s » a renvoyé le type « %s », mais « %s » était attendu"
 
-#: gio/gdbusconnection.c:6872
+#: gio/gdbusconnection.c:6856
 #, c-format
 msgid "Method “%s” on interface “%s” with signature “%s” does not exist"
 msgstr ""
 "La méthode « %s » sur l’interface « %s » avec la signature « %s » n’existe "
 "pas"
 
-#: gio/gdbusconnection.c:6993
+#: gio/gdbusconnection.c:6977
 #, c-format
 msgid "A subtree is already exported for %s"
 msgstr "Une sous-arborescence est déjà exportée pour « %s »"
 
-#: gio/gdbusconnection.c:7282
+#: gio/gdbusconnection.c:7266
 #, c-format
 msgid "Object does not exist at path “%s”"
 msgstr "L’objet n’existe pas à l’emplacement « %s »"
 
-#: gio/gdbusmessage.c:1311
+#: gio/gdbusmessage.c:1301
 msgid "type is INVALID"
 msgstr "le type est « INVALID »"
 
-#: gio/gdbusmessage.c:1322
+#: gio/gdbusmessage.c:1312
 msgid "METHOD_CALL message: PATH or MEMBER header field is missing"
 msgstr "Message de METHOD_CALL : champ d’en-tête PATH ou MEMBER manquant"
 
-#: gio/gdbusmessage.c:1333
+#: gio/gdbusmessage.c:1323
 msgid "METHOD_RETURN message: REPLY_SERIAL header field is missing"
 msgstr "Message de METHOD_RETURN : champ d’en-tête REPLY_SERIAL manquant"
 
-#: gio/gdbusmessage.c:1345
+#: gio/gdbusmessage.c:1335
 msgid "ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing"
 msgstr "Message d’ERREUR : champ d’en-tête REPLY_SERIAL ou ERROR_NAME manquant"
 
-#: gio/gdbusmessage.c:1358
+#: gio/gdbusmessage.c:1348
 msgid "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing"
 msgstr "Message de SIGNAL : champ d’en-tête PATH, INTERFACE ou MEMBER manquant"
 
-#: gio/gdbusmessage.c:1366
+#: gio/gdbusmessage.c:1356
 msgid ""
 "SIGNAL message: The PATH header field is using the reserved value /org/"
 "freedesktop/DBus/Local"
@@ -818,7 +829,7 @@ msgstr ""
 "Message de SIGNAL : le champ d’en-tête PATH utilise la valeur réservée /org/"
 "freedesktop/DBus/Local"
 
-#: gio/gdbusmessage.c:1374
+#: gio/gdbusmessage.c:1364
 msgid ""
 "SIGNAL message: The INTERFACE header field is using the reserved value org."
 "freedesktop.DBus.Local"
@@ -826,21 +837,21 @@ msgstr ""
 "Message de SIGNAL : le champ d’en-tête INTERFACE utilise la valeur réservée "
 "org.freedesktop.DBus.Local"
 
-#: gio/gdbusmessage.c:1422 gio/gdbusmessage.c:1482
+#: gio/gdbusmessage.c:1412 gio/gdbusmessage.c:1472
 #, c-format
 msgid "Wanted to read %lu byte but only got %lu"
 msgid_plural "Wanted to read %lu bytes but only got %lu"
 msgstr[0] "Lecture de %lu octet demandée, mais seulement %lu reçu(s)"
 msgstr[1] "Lecture de %lu octets demandée, mais seulement %lu reçu(s)"
 
-#: gio/gdbusmessage.c:1436
+#: gio/gdbusmessage.c:1426
 #, c-format
 msgid "Expected NUL byte after the string “%s” but found byte %d"
 msgstr ""
 "Octet 00 (NUL) attendu à la fin de la chaîne « %s » mais un octet %d a été "
 "trouvé"
 
-#: gio/gdbusmessage.c:1455
+#: gio/gdbusmessage.c:1445
 #, c-format
 msgid ""
 "Expected valid UTF-8 string but found invalid bytes at byte offset %d "
@@ -850,23 +861,23 @@ msgstr ""
 "rencontrés à la position %d (longueur de la chaîne : %d octets). La chaîne "
 "UTF-8 valide jusqu’à cet endroit est « %s »"
 
-#: gio/gdbusmessage.c:1519 gio/gdbusmessage.c:1795 gio/gdbusmessage.c:2006
+#: gio/gdbusmessage.c:1509 gio/gdbusmessage.c:1785 gio/gdbusmessage.c:1996
 msgid "Value nested too deeply"
 msgstr "Valeur imbriquée trop profondément"
 
-#: gio/gdbusmessage.c:1687
+#: gio/gdbusmessage.c:1677
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus object path"
 msgstr ""
 "La valeur analysée « %s » n’est pas un chemin vers un objet D-Bus valide"
 
-#: gio/gdbusmessage.c:1711
+#: gio/gdbusmessage.c:1701
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature"
 msgstr "La valeur analysée « %s » n’est pas une signature D-Bus valide"
 
 # 2<<26  donne 128 Mo, 2^26 donne 64 Mo, 1<<26 donne 64 Mo
-#: gio/gdbusmessage.c:1762
+#: gio/gdbusmessage.c:1752
 #, c-format
 msgid ""
 "Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB)."
@@ -879,7 +890,7 @@ msgstr[1] ""
 "Un tableau de %u octets de long a été trouvé. La longueur maximale est de "
 "2<<26 octets (64 Mo)."
 
-#: gio/gdbusmessage.c:1782
+#: gio/gdbusmessage.c:1772
 #, c-format
 msgid ""
 "Encountered array of type “a%c”, expected to have a length a multiple of %u "
@@ -888,18 +899,18 @@ msgstr ""
 "Un tableau de type « a%c » a été trouvé, avec une longueur attendue multiple "
 "de %u octets, mais la longueur réelle est de %u octets"
 
-#: gio/gdbusmessage.c:1936 gio/gdbusmessage.c:2655
+#: gio/gdbusmessage.c:1926 gio/gdbusmessage.c:2645
 msgid "Empty structures (tuples) are not allowed in D-Bus"
 msgstr "Les structures vides (tuples) ne sont pas autorisées dans D-Bus"
 
-#: gio/gdbusmessage.c:1990
+#: gio/gdbusmessage.c:1980
 #, c-format
 msgid "Parsed value “%s” for variant is not a valid D-Bus signature"
 msgstr ""
 "La valeur « %s » analysée en tant que variant n’est pas une signature valide "
 "de D-Bus"
 
-#: gio/gdbusmessage.c:2031
+#: gio/gdbusmessage.c:2021
 #, c-format
 msgid ""
 "Error deserializing GVariant with type string “%s” from the D-Bus wire format"
@@ -907,39 +918,39 @@ msgstr ""
 "Erreur en désérialisant le GVariant en chaîne de type « %s » à partir du "
 "format de transmission D-Bus"
 
-#: gio/gdbusmessage.c:2216
+#: gio/gdbusmessage.c:2206
 #, c-format
 msgid ""
 "Invalid endianness value. Expected 0x6c (“l”) or 0x42 (“B”) but found value "
 "0x%02x"
 msgstr ""
-"Valeur de boutisme non valide. 0x6c (« l ») ou 0x42 (« B ») attendus, mais 0x"
-"%02x trouvé"
+"Valeur de boutisme non valide. 0x6c (« l ») ou 0x42 (« B ») attendus, mais "
+"0x%02x trouvé"
 
-#: gio/gdbusmessage.c:2235
+#: gio/gdbusmessage.c:2225
 #, c-format
 msgid "Invalid major protocol version. Expected 1 but found %d"
 msgstr "Version majeure du protocole non valide. 1 attendu, %d trouvé"
 
-#: gio/gdbusmessage.c:2293 gio/gdbusmessage.c:2891
+#: gio/gdbusmessage.c:2283 gio/gdbusmessage.c:2881
 msgid "Signature header found but is not of type signature"
 msgstr "En-tête de signature trouvé mais n’est pas de type signature"
 
-#: gio/gdbusmessage.c:2305
+#: gio/gdbusmessage.c:2295
 #, c-format
 msgid "Signature header with signature “%s” found but message body is empty"
 msgstr ""
 "En-tête de signature trouvé avec la signature « %s », mais le corps du "
 "message est vide"
 
-#: gio/gdbusmessage.c:2320
+#: gio/gdbusmessage.c:2310
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature (for body)"
 msgstr ""
 "La valeur analysée « %s » n’est pas une signature valide de D-Bus (pour le "
 "corps)"
 
-#: gio/gdbusmessage.c:2352
+#: gio/gdbusmessage.c:2342
 #, 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"
@@ -950,11 +961,11 @@ msgstr[1] ""
 "Pas de signature d’en-tête dans le message, mais le corps du message est de "
 "%u octets"
 
-#: gio/gdbusmessage.c:2362
+#: gio/gdbusmessage.c:2352
 msgid "Cannot deserialize message: "
 msgstr "Impossible de désérialiser le message : "
 
-#: gio/gdbusmessage.c:2708
+#: gio/gdbusmessage.c:2698
 #, c-format
 msgid ""
 "Error serializing GVariant with type string “%s” to the D-Bus wire format"
@@ -962,7 +973,7 @@ msgstr ""
 "Erreur en sérialisant le GVariant en chaîne de type « %s » dans le format de "
 "transmission D-Bus"
 
-#: gio/gdbusmessage.c:2845
+#: gio/gdbusmessage.c:2835
 #, c-format
 msgid ""
 "Number of file descriptors in message (%d) differs from header field (%d)"
@@ -970,18 +981,18 @@ msgstr ""
 "Le nombre de descripteurs de fichiers dans le message (%d) diffère de celui "
 "du champ d’en-tête (%d)"
 
-#: gio/gdbusmessage.c:2853
+#: gio/gdbusmessage.c:2843
 msgid "Cannot serialize message: "
 msgstr "Impossible de sérialiser le message : "
 
-#: gio/gdbusmessage.c:2906
+#: gio/gdbusmessage.c:2896
 #, c-format
 msgid "Message body has signature “%s” but there is no signature header"
 msgstr ""
 "Le corps du message a la signature « %s », mais il n’y a pas d’en-tête de "
 "signature"
 
-#: gio/gdbusmessage.c:2916
+#: gio/gdbusmessage.c:2906
 #, c-format
 msgid ""
 "Message body has type signature “%s” but signature in the header field is "
@@ -990,57 +1001,57 @@ msgstr ""
 "Le corps du message a une signature de type « %s », mais celle dans le champ "
 "d’en-tête est « %s »"
 
-#: gio/gdbusmessage.c:2932
+#: gio/gdbusmessage.c:2922
 #, c-format
 msgid "Message body is empty but signature in the header field is “(%s)”"
 msgstr ""
 "Le corps du message est vide mais sa signature dans le champ d’en-tête est "
 "« (%s) »"
 
-#: gio/gdbusmessage.c:3487
+#: gio/gdbusmessage.c:3477
 #, c-format
 msgid "Error return with body of type “%s”"
 msgstr "Retour d’erreur avec un corps de type « %s »"
 
-#: gio/gdbusmessage.c:3495
+#: gio/gdbusmessage.c:3485
 msgid "Error return with empty body"
 msgstr "Retour d’erreur avec un corps vide"
 
-#: gio/gdbusprivate.c:2246
+#: gio/gdbusprivate.c:2185
 #, c-format
 msgid "(Type any character to close this window)\n"
 msgstr "(saisissez n’importe quel caractère pour fermer cette fenêtre)\n"
 
-#: gio/gdbusprivate.c:2420
+#: gio/gdbusprivate.c:2371
 #, c-format
 msgid "Session dbus not running, and autolaunch failed"
 msgstr ""
 "La session dbus n’est pas lancée et autolaunch (le lancement automatique) a "
 "échoué"
 
-#: gio/gdbusprivate.c:2443
+#: gio/gdbusprivate.c:2394
 #, c-format
 msgid "Unable to get Hardware profile: %s"
 msgstr "Impossible d’obtenir le profil matériel : %s"
 
 #. Translators: Both placeholders are file paths
-#: gio/gdbusprivate.c:2494
+#: gio/gdbusprivate.c:2445
 #, c-format
 msgid "Unable to load %s or %s: "
 msgstr "Impossible de charger %s ou %s : "
 
-#: gio/gdbusproxy.c:1569
+#: gio/gdbusproxy.c:1573
 #, c-format
 msgid "Error calling StartServiceByName for %s: "
 msgstr "Erreur lors de l’appel de StartServiceByName pour %s : "
 
 # Guillemets anglais laissés volontairement
-#: gio/gdbusproxy.c:1592
+#: gio/gdbusproxy.c:1596
 #, c-format
 msgid "Unexpected reply %d from StartServiceByName(\"%s\") method"
 msgstr "Réponse %d inattendue de la méthode StartServiceByName(\"%s\")"
 
-#: gio/gdbusproxy.c:2699 gio/gdbusproxy.c:2834
+#: gio/gdbusproxy.c:2707 gio/gdbusproxy.c:2842
 #, c-format
 msgid ""
 "Cannot invoke method; proxy is for the well-known name %s without an owner, "
@@ -1099,60 +1110,60 @@ msgstr ""
 "\n"
 "Utiliser « %s COMMANDE --help » pour obtenir une aide sur chaque commande.\n"
 
-#: gio/gdbus-tool.c:201 gio/gdbus-tool.c:273 gio/gdbus-tool.c:345
-#: gio/gdbus-tool.c:369 gio/gdbus-tool.c:859 gio/gdbus-tool.c:1236
-#: gio/gdbus-tool.c:1724
+#: gio/gdbus-tool.c:202 gio/gdbus-tool.c:274 gio/gdbus-tool.c:346
+#: gio/gdbus-tool.c:370 gio/gdbus-tool.c:860 gio/gdbus-tool.c:1245
+#: gio/gdbus-tool.c:1733
 #, c-format
 msgid "Error: %s\n"
 msgstr "Erreur : %s\n"
 
-#: gio/gdbus-tool.c:212 gio/gdbus-tool.c:286 gio/gdbus-tool.c:1740
+#: gio/gdbus-tool.c:213 gio/gdbus-tool.c:287 gio/gdbus-tool.c:1749
 #, c-format
 msgid "Error parsing introspection XML: %s\n"
 msgstr "Erreur lors de l’analyse du XML d’introspection : %s\n"
 
-#: gio/gdbus-tool.c:250
+#: gio/gdbus-tool.c:251
 #, c-format
 msgid "Error: %s is not a valid name\n"
 msgstr "Erreur : %s n’est pas un nom valide\n"
 
-#: gio/gdbus-tool.c:255 gio/gdbus-tool.c:745 gio/gdbus-tool.c:1060
-#: gio/gdbus-tool.c:1890 gio/gdbus-tool.c:2130
+#: gio/gdbus-tool.c:256 gio/gdbus-tool.c:746 gio/gdbus-tool.c:1064
+#: gio/gdbus-tool.c:1899 gio/gdbus-tool.c:2139
 #, c-format
 msgid "Error: %s is not a valid object path\n"
 msgstr "Erreur : « %s » n’est pas un chemin d’objet valide\n"
 
-#: gio/gdbus-tool.c:403
+#: gio/gdbus-tool.c:404
 msgid "Connect to the system bus"
 msgstr "Connexion au bus système"
 
-#: gio/gdbus-tool.c:404
+#: gio/gdbus-tool.c:405
 msgid "Connect to the session bus"
 msgstr "Connexion au bus de session"
 
-#: gio/gdbus-tool.c:405
+#: gio/gdbus-tool.c:406
 msgid "Connect to given D-Bus address"
 msgstr "Connexion à l’adresse D-Bus donnée"
 
-#: gio/gdbus-tool.c:415
+#: gio/gdbus-tool.c:416
 msgid "Connection Endpoint Options:"
 msgstr "Options de connexion au point terminal :"
 
-#: gio/gdbus-tool.c:416
+#: gio/gdbus-tool.c:417
 msgid "Options specifying the connection endpoint"
 msgstr "Options définissant la connexion au point terminal"
 
-#: gio/gdbus-tool.c:439
+#: gio/gdbus-tool.c:440
 #, c-format
 msgid "No connection endpoint specified"
 msgstr "Aucun point terminal de connexion défini"
 
-#: gio/gdbus-tool.c:449
+#: gio/gdbus-tool.c:450
 #, c-format
 msgid "Multiple connection endpoints specified"
 msgstr "Plusieurs points terminaux de connexion définis"
 
-#: gio/gdbus-tool.c:522
+#: gio/gdbus-tool.c:523
 #, c-format
 msgid ""
 "Warning: According to introspection data, interface “%s” does not exist\n"
@@ -1160,7 +1171,7 @@ msgstr ""
 "Avertissement : selon les données de l’examen interne, l’interface « %s » "
 "n’existe pas\n"
 
-#: gio/gdbus-tool.c:531
+#: gio/gdbus-tool.c:532
 #, c-format
 msgid ""
 "Warning: According to introspection data, method “%s” does not exist on "
@@ -1169,163 +1180,167 @@ msgstr ""
 "Avertissement : selon les données de l’examen interne, la méthode « %s » "
 "n’existe pas sur l’interface « %s »\n"
 
-#: gio/gdbus-tool.c:593
+#: gio/gdbus-tool.c:594
 msgid "Optional destination for signal (unique name)"
 msgstr "Destination facultative pour le signal (nom unique)"
 
-#: gio/gdbus-tool.c:594
+#: gio/gdbus-tool.c:595
 msgid "Object path to emit signal on"
 msgstr "Chemin de l’objet sur lequel émettre le signal"
 
-#: gio/gdbus-tool.c:595
+#: gio/gdbus-tool.c:596
 msgid "Signal and interface name"
 msgstr "Noms de signal et d’interface"
 
-#: gio/gdbus-tool.c:628
+#: gio/gdbus-tool.c:629
 msgid "Emit a signal."
 msgstr "Émet un signal."
 
-#: gio/gdbus-tool.c:683 gio/gdbus-tool.c:997 gio/gdbus-tool.c:1827
-#: gio/gdbus-tool.c:2059 gio/gdbus-tool.c:2279
+#: gio/gdbus-tool.c:684 gio/gdbus-tool.c:1001 gio/gdbus-tool.c:1836
+#: gio/gdbus-tool.c:2068 gio/gdbus-tool.c:2288
 #, c-format
 msgid "Error connecting: %s\n"
 msgstr "Erreur de connexion : %s\n"
 
-#: gio/gdbus-tool.c:703
+#: gio/gdbus-tool.c:704
 #, c-format
 msgid "Error: %s is not a valid unique bus name.\n"
 msgstr "Erreur : %s n’est pas un nom unique de bus valide.\n"
 
-#: gio/gdbus-tool.c:722 gio/gdbus-tool.c:1040 gio/gdbus-tool.c:1870
+#: gio/gdbus-tool.c:723 gio/gdbus-tool.c:1044 gio/gdbus-tool.c:1879
 msgid "Error: Object path is not specified\n"
 msgstr "Erreur : le chemin pour l’objet n’est pas précisé\n"
 
-#: gio/gdbus-tool.c:765
+#: gio/gdbus-tool.c:766
 msgid "Error: Signal name is not specified\n"
 msgstr "Erreur : le nom du signal n’est pas défini\n"
 
 # c-format
-#: gio/gdbus-tool.c:779
+#: gio/gdbus-tool.c:780
 #, c-format
 msgid "Error: Signal name “%s” is invalid\n"
 msgstr "Erreur : le nom de signal « %s » n’est pas valide\n"
 
-#: gio/gdbus-tool.c:791
+#: gio/gdbus-tool.c:792
 #, c-format
 msgid "Error: %s is not a valid interface name\n"
 msgstr "Erreur : %s n’est pas un nom d’interface valide\n"
 
-#: gio/gdbus-tool.c:797
+#: gio/gdbus-tool.c:798
 #, c-format
 msgid "Error: %s is not a valid member name\n"
 msgstr "Erreur : %s n’est pas un nom de membre valide\n"
 
 #. Use the original non-"parse-me-harder" error
-#: gio/gdbus-tool.c:834 gio/gdbus-tool.c:1172
+#: gio/gdbus-tool.c:835 gio/gdbus-tool.c:1176
 #, c-format
 msgid "Error parsing parameter %d: %s\n"
 msgstr "Erreur lors de l’analyse du paramètre %d : %s\n"
 
-#: gio/gdbus-tool.c:866
+#: gio/gdbus-tool.c:867
 #, c-format
 msgid "Error flushing connection: %s\n"
 msgstr "Erreur de purge de la connexion : %s\n"
 
-#: gio/gdbus-tool.c:893
+#: gio/gdbus-tool.c:895
 msgid "Destination name to invoke method on"
 msgstr "Nom de la destination sur laquelle appeler une méthode"
 
-#: gio/gdbus-tool.c:894
+#: gio/gdbus-tool.c:896
 msgid "Object path to invoke method on"
 msgstr "Chemin de l’objet sur lequel appeler une méthode"
 
-#: gio/gdbus-tool.c:895
+#: gio/gdbus-tool.c:897
 msgid "Method and interface name"
 msgstr "Noms de méthode et d’interface"
 
-#: gio/gdbus-tool.c:896
+#: gio/gdbus-tool.c:898
 msgid "Timeout in seconds"
 msgstr "Délai d’attente en secondes"
 
-#: gio/gdbus-tool.c:942
+#: gio/gdbus-tool.c:899
+msgid "Allow interactive authorization"
+msgstr "Permettre l’autorisation interactive"
+
+#: gio/gdbus-tool.c:946
 msgid "Invoke a method on a remote object."
 msgstr "Appeler une méthode sur un objet distant."
 
-#: gio/gdbus-tool.c:1014 gio/gdbus-tool.c:1844 gio/gdbus-tool.c:2084
+#: gio/gdbus-tool.c:1018 gio/gdbus-tool.c:1853 gio/gdbus-tool.c:2093
 msgid "Error: Destination is not specified\n"
 msgstr "Erreur : la destination n’est pas précisée\n"
 
-#: gio/gdbus-tool.c:1025 gio/gdbus-tool.c:1861 gio/gdbus-tool.c:2095
+#: gio/gdbus-tool.c:1029 gio/gdbus-tool.c:1870 gio/gdbus-tool.c:2104
 #, c-format
 msgid "Error: %s is not a valid bus name\n"
 msgstr "Erreur : %s n’est pas un nom de bus valide\n"
 
-#: gio/gdbus-tool.c:1075
+#: gio/gdbus-tool.c:1079
 msgid "Error: Method name is not specified\n"
 msgstr "Erreur : le nom de la méthode n’est pas défini\n"
 
-#: gio/gdbus-tool.c:1086
+#: gio/gdbus-tool.c:1090
 #, c-format
 msgid "Error: Method name “%s” is invalid\n"
 msgstr "Erreur : le nom de méthode « %s » n’est pas valide\n"
 
-#: gio/gdbus-tool.c:1164
+#: gio/gdbus-tool.c:1168
 #, c-format
 msgid "Error parsing parameter %d of type “%s”: %s\n"
 msgstr "Erreur d’analyse du paramètre %d de type « %s » : %s\n"
 
-#: gio/gdbus-tool.c:1190
+#: gio/gdbus-tool.c:1194
 #, c-format
 msgid "Error adding handle %d: %s\n"
 msgstr "Erreur d’ajout de l’identificateur %d : %s\n"
 
-#: gio/gdbus-tool.c:1686
+#: gio/gdbus-tool.c:1695
 msgid "Destination name to introspect"
 msgstr "Nom de la destination à examiner en interne"
 
-#: gio/gdbus-tool.c:1687
+#: gio/gdbus-tool.c:1696
 msgid "Object path to introspect"
 msgstr "Chemin de l’objet à examiner en interne"
 
-#: gio/gdbus-tool.c:1688
+#: gio/gdbus-tool.c:1697
 msgid "Print XML"
 msgstr "Imprimer le XML"
 
-#: gio/gdbus-tool.c:1689
+#: gio/gdbus-tool.c:1698
 msgid "Introspect children"
 msgstr "Examiner en interne les enfants"
 
-#: gio/gdbus-tool.c:1690
+#: gio/gdbus-tool.c:1699
 msgid "Only print properties"
 msgstr "N’afficher que les propriétés"
 
-#: gio/gdbus-tool.c:1779
+#: gio/gdbus-tool.c:1788
 msgid "Introspect a remote object."
 msgstr "Examiner en interne un objet distant."
 
-#: gio/gdbus-tool.c:1985
+#: gio/gdbus-tool.c:1994
 msgid "Destination name to monitor"
 msgstr "Nom de la destination à surveiller"
 
-#: gio/gdbus-tool.c:1986
+#: gio/gdbus-tool.c:1995
 msgid "Object path to monitor"
 msgstr "Chemin de l’objet à surveiller"
 
-#: gio/gdbus-tool.c:2011
+#: gio/gdbus-tool.c:2020
 msgid "Monitor a remote object."
 msgstr "Surveiller un objet distant."
 
-#: gio/gdbus-tool.c:2069
+#: gio/gdbus-tool.c:2078
 msgid "Error: can’t monitor a non-message-bus connection\n"
 msgstr ""
 "Erreur : impossible de surveiller une connexion qui n’est pas un bus de "
 "messages\n"
 
-#: gio/gdbus-tool.c:2193
+#: gio/gdbus-tool.c:2202
 msgid "Service to activate before waiting for the other one (well-known name)"
 msgstr "Service à activer avant d’attendre l’autre (nom bien connu)"
 
-#: gio/gdbus-tool.c:2196
+#: gio/gdbus-tool.c:2205
 msgid ""
 "Timeout to wait for before exiting with an error (seconds); 0 for no timeout "
 "(default)"
@@ -1333,67 +1348,72 @@ msgstr ""
 "Délai d’attente avant de quitter avec une erreur (secondes) ; 0 pour aucun "
 "délai (par défaut)"
 
-#: gio/gdbus-tool.c:2244
+#: gio/gdbus-tool.c:2253
 msgid "[OPTION…] BUS-NAME"
 msgstr "[OPTION…] NOM-DE-BUS"
 
-#: gio/gdbus-tool.c:2245
+#: gio/gdbus-tool.c:2254
 msgid "Wait for a bus name to appear."
 msgstr "Attend l’apparition d’un nom de bus."
 
-#: gio/gdbus-tool.c:2321
+#: gio/gdbus-tool.c:2330
 msgid "Error: A service to activate for must be specified.\n"
 msgstr "Erreur : un service à activer doit être indiqué.\n"
 
-#: gio/gdbus-tool.c:2326
+#: gio/gdbus-tool.c:2335
 msgid "Error: A service to wait for must be specified.\n"
 msgstr "Erreur : un service à attendre doit être indiqué.\n"
 
-#: gio/gdbus-tool.c:2331
+#: gio/gdbus-tool.c:2340
 msgid "Error: Too many arguments.\n"
 msgstr "Erreur : trop de paramètres.\n"
 
-#: gio/gdbus-tool.c:2339 gio/gdbus-tool.c:2346
+#: gio/gdbus-tool.c:2348 gio/gdbus-tool.c:2355
 #, c-format
 msgid "Error: %s is not a valid well-known bus name.\n"
 msgstr "Erreur : %s n’est pas un nom de bus bien connu valide\n"
 
-#: gio/gdesktopappinfo.c:2106 gio/gdesktopappinfo.c:4935
+#: gio/gdebugcontrollerdbus.c:358
+#, c-format
+msgid "Not authorized to change debug settings"
+msgstr "Non autorisé à modifier les paramètres de débogage"
+
+#: gio/gdesktopappinfo.c:2178 gio/gdesktopappinfo.c:5105
 msgid "Unnamed"
 msgstr "Sans nom"
 
 # Un fichier Desktop n’est pas forcément sur le bureau...
-#: gio/gdesktopappinfo.c:2516
+#: gio/gdesktopappinfo.c:2588
 msgid "Desktop file didn’t specify Exec field"
 msgstr "Le fichier .desktop n’a pas précisé son champ Exec"
 
-#: gio/gdesktopappinfo.c:2804
+#: gio/gdesktopappinfo.c:2896
 msgid "Unable to find terminal required for application"
 msgstr "Impossible de trouver le terminal requis par l’application"
 
-#: gio/gdesktopappinfo.c:3455
+#: gio/gdesktopappinfo.c:3625
 #, c-format
 msgid "Can’t create user application configuration folder %s: %s"
 msgstr ""
 "Impossible de créer le dossier de configuration utilisateur d’application "
 "%s : %s"
 
-#: gio/gdesktopappinfo.c:3459
+#: gio/gdesktopappinfo.c:3629
 #, c-format
 msgid "Can’t create user MIME configuration folder %s: %s"
 msgstr ""
 "Impossible de créer le dossier de configuration utilisateur MIME %s : %s"
 
-#: gio/gdesktopappinfo.c:3701 gio/gdesktopappinfo.c:3725
+#: gio/gdesktopappinfo.c:3871 gio/gdesktopappinfo.c:3895
 msgid "Application information lacks an identifier"
 msgstr "Les informations de l’application ne comportent pas d’identifiant"
 
-#: gio/gdesktopappinfo.c:3961
+#: gio/gdesktopappinfo.c:4131
 #, c-format
 msgid "Can’t create user desktop file %s"
 msgstr "Impossible de créer le fichier .desktop utilisateur %s"
 
-#: gio/gdesktopappinfo.c:4097
+#: gio/gdesktopappinfo.c:4267
 #, c-format
 msgid "Custom definition for %s"
 msgstr "Définition personnalisée pour %s"
@@ -1423,7 +1443,7 @@ msgstr "le lecteur n’implémente pas le démarrage (« start »)"
 msgid "drive doesn’t implement stop"
 msgstr "le lecteur n’implémente pas l’arrêt (« stop »)"
 
-#: gio/gdtlsconnection.c:1153 gio/gtlsconnection.c:920
+#: gio/gdtlsconnection.c:1186 gio/gtlsconnection.c:955
 msgid "TLS backend does not implement TLS binding retrieval"
 msgstr ""
 "Le moteur TLS n’implémente pas la récupération du couplage TLS (« TLS "
@@ -1466,76 +1486,76 @@ msgstr "Un GEmblem est attendu pour le GEmblemedIcon"
 #. * trying to find the enclosing (user visible)
 #. * mount of a file, but none exists.
 #.
-#: gio/gfile.c:1561
+#: gio/gfile.c:1579
 msgid "Containing mount does not exist"
 msgstr "Le point de montage conteneur n’existe pas"
 
-#: gio/gfile.c:2608 gio/glocalfile.c:2486
+#: gio/gfile.c:2626 gio/glocalfile.c:2486
 msgid "Can’t copy over directory"
 msgstr "Impossible d’écraser un répertoire"
 
-#: gio/gfile.c:2668
+#: gio/gfile.c:2686
 msgid "Can’t copy directory over directory"
 msgstr "Impossible d’écraser un répertoire par un autre répertoire"
 
-#: gio/gfile.c:2676
+#: gio/gfile.c:2694
 msgid "Target file exists"
 msgstr "Le fichier cible existe"
 
-#: gio/gfile.c:2695
+#: gio/gfile.c:2713
 msgid "Can’t recursively copy directory"
 msgstr "Impossible de copier récursivement un répertoire"
 
 # http://en.wikipedia.org/wiki/Splice_(system_call)
-#: gio/gfile.c:2996
+#: gio/gfile.c:3014
 msgid "Splice not supported"
 msgstr "L’opération « splice » n’est pas prise en charge"
 
-#: gio/gfile.c:3000
+#: gio/gfile.c:3018
 #, c-format
 msgid "Error splicing file: %s"
 msgstr "Erreur lors de l’opération de « splicing » sur le fichier : %s"
 
-#: gio/gfile.c:3152
+#: gio/gfile.c:3170
 msgid "Copy (reflink/clone) between mounts is not supported"
 msgstr ""
 "La copie (reflink/clone) entre points de montage n’est pas prise en charge"
 
-#: gio/gfile.c:3156
+#: gio/gfile.c:3174
 msgid "Copy (reflink/clone) is not supported or invalid"
 msgstr "La copie (reflink/clone) n’est pas prise en charge ou n’est pas valide"
 
-#: gio/gfile.c:3161
+#: gio/gfile.c:3179
 msgid "Copy (reflink/clone) is not supported or didn’t work"
 msgstr ""
 "La copie (reflink/clone) n’est pas prise en charge ou n’a pas fonctionné"
 
-#: gio/gfile.c:3226
+#: gio/gfile.c:3244
 msgid "Can’t copy special file"
 msgstr "Impossible de copier le fichier spécial"
 
-#: gio/gfile.c:4035
+#: gio/gfile.c:4138
 msgid "Invalid symlink value given"
 msgstr "Valeur de lien symbolique donnée non valide"
 
-#: gio/gfile.c:4045 glib/gfileutils.c:2333
+#: gio/gfile.c:4148 glib/gfileutils.c:2333
 msgid "Symbolic links not supported"
 msgstr "Liens symboliques non pris en charge"
 
-#: gio/gfile.c:4213
+#: gio/gfile.c:4316
 msgid "Trash not supported"
 msgstr "La corbeille n’est pas prise en charge"
 
-#: gio/gfile.c:4325
+#: gio/gfile.c:4428
 #, c-format
 msgid "File names cannot contain “%c”"
 msgstr "Les noms de fichiers ne peuvent comporter de « %c »"
 
-#: gio/gfile.c:6806 gio/gvolume.c:364
+#: gio/gfile.c:7028 gio/gvolume.c:364
 msgid "volume doesn’t implement mount"
 msgstr "le volume n’implémente pas le montage"
 
-#: gio/gfile.c:6920 gio/gfile.c:6968
+#: gio/gfile.c:7142 gio/gfile.c:7190
 msgid "No application is registered as handling this file"
 msgstr "Aucune application n’est enregistrée pour gérer ce fichier"
 
@@ -1580,7 +1600,7 @@ msgstr "La troncature n’est pas autorisée sur un flux d’entrée"
 msgid "Truncate not supported on stream"
 msgstr "La troncature n’est pas prise en charge sur le flux"
 
-#: gio/ghttpproxy.c:91 gio/gresolver.c:443 gio/gresolver.c:596
+#: gio/ghttpproxy.c:91 gio/gresolver.c:458 gio/gresolver.c:611
 #: glib/gconvert.c:1825
 msgid "Invalid hostname"
 msgstr "Nom d’hôte non valide"
@@ -1669,7 +1689,7 @@ msgid "Could not parse “%s” as IP address mask"
 msgstr "Impossible d’analyser « %s » comme masque d’adresse IP"
 
 #: gio/ginetsocketaddress.c:203 gio/ginetsocketaddress.c:220
-#: gio/gnativesocketaddress.c:109 gio/gunixsocketaddress.c:221
+#: gio/gnativesocketaddress.c:109 gio/gunixsocketaddress.c:228
 msgid "Not enough space for socket address"
 msgstr "Espace insuffisant pour une adresse de connecteur réseau"
 
@@ -1797,7 +1817,7 @@ msgstr "Erreur lors de l’écriture vers stdout"
 #: 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:204 gio/gio-tool-mount.c:1199 gio/gio-tool-open.c:70
-#: gio/gio-tool-remove.c:48 gio/gio-tool-rename.c:45 gio/gio-tool-set.c:89
+#: gio/gio-tool-remove.c:48 gio/gio-tool-rename.c:45 gio/gio-tool-set.c:91
 #: gio/gio-tool-trash.c:220 gio/gio-tool-tree.c:239
 msgid "LOCATION"
 msgstr "EMPLACEMENT"
@@ -2037,7 +2057,7 @@ msgstr "Afficher les noms d’affichage"
 
 #: gio/gio-tool-list.c:41
 msgid "Print full URIs"
-msgstr "Afficher les URI complets"
+msgstr "Afficher les URI complètes"
 
 #: gio/gio-tool-list.c:177
 msgid "List the contents of the locations."
@@ -2313,14 +2333,14 @@ msgstr "Renommer un fichier."
 msgid "Missing argument"
 msgstr "Paramètre manquant"
 
-#: gio/gio-tool-rename.c:76 gio/gio-tool-save.c:190 gio/gio-tool-set.c:137
+#: gio/gio-tool-rename.c:76 gio/gio-tool-save.c:190 gio/gio-tool-set.c:139
 msgid "Too many arguments"
 msgstr "Trop de paramètres"
 
 #: gio/gio-tool-rename.c:95
 #, c-format
 msgid "Rename successful. New uri: %s\n"
-msgstr "Le renommage a réussi. Nouvel uri : %s\n"
+msgstr "Le renommage a réussi. Nouvelle uri : %s\n"
 
 #: gio/gio-tool-save.c:50
 msgid "Only create if not existing"
@@ -2378,31 +2398,31 @@ msgstr "Type de l’attribut"
 msgid "TYPE"
 msgstr "TYPE"
 
-#: gio/gio-tool-set.c:89
+#: gio/gio-tool-set.c:91
 msgid "ATTRIBUTE"
 msgstr "ATTRIBUT"
 
-#: gio/gio-tool-set.c:89
+#: gio/gio-tool-set.c:91
 msgid "VALUE"
 msgstr "VALEUR"
 
-#: gio/gio-tool-set.c:93
+#: gio/gio-tool-set.c:95
 msgid "Set a file attribute of LOCATION."
 msgstr "Définir un attribut de fichier de l’EMPLACEMENT."
 
-#: gio/gio-tool-set.c:113
+#: gio/gio-tool-set.c:115
 msgid "Location not specified"
 msgstr "Emplacement non indiqué"
 
-#: gio/gio-tool-set.c:120
+#: gio/gio-tool-set.c:122
 msgid "Attribute not specified"
 msgstr "Attribut non indiqué"
 
-#: gio/gio-tool-set.c:130
+#: gio/gio-tool-set.c:132
 msgid "Value not specified"
 msgstr "Valeur non indiquée"
 
-#: gio/gio-tool-set.c:180
+#: gio/gio-tool-set.c:182
 #, c-format
 msgid "Invalid attribute type “%s”"
 msgstr "Type d’attribut « %s » non valide"
@@ -2520,15 +2540,15 @@ msgstr "Erreur à la compression du fichier %s"
 msgid "text may not appear inside <%s>"
 msgstr "<%s> ne peut pas contenir du texte"
 
-#: gio/glib-compile-resources.c:737 gio/glib-compile-schemas.c:2172
+#: gio/glib-compile-resources.c:819 gio/glib-compile-schemas.c:2172
 msgid "Show program version and exit"
 msgstr "Affiche la version du programme et quitte"
 
-#: gio/glib-compile-resources.c:738
+#: gio/glib-compile-resources.c:820
 msgid "Name of the output file"
 msgstr "Nom du fichier de sortie"
 
-#: gio/glib-compile-resources.c:739
+#: gio/glib-compile-resources.c:821
 msgid ""
 "The directories to load files referenced in FILE from (default: current "
 "directory)"
@@ -2536,49 +2556,49 @@ msgstr ""
 "Les répertoires à partir desquels charger les fichiers référencés dans "
 "FICHIER (par défaut le répertoire actuel)"
 
-#: gio/glib-compile-resources.c:739 gio/glib-compile-schemas.c:2173
+#: gio/glib-compile-resources.c:821 gio/glib-compile-schemas.c:2173
 #: gio/glib-compile-schemas.c:2202
 msgid "DIRECTORY"
 msgstr "RÉPERTOIRE"
 
-#: gio/glib-compile-resources.c:740
+#: gio/glib-compile-resources.c:822
 msgid ""
 "Generate output in the format selected for by the target filename extension"
 msgstr ""
 "Générer la sortie dans le format sélectionné par l’extension du nom de "
 "fichier cible"
 
-#: gio/glib-compile-resources.c:741
+#: gio/glib-compile-resources.c:823
 msgid "Generate source header"
 msgstr "Générer l’en-tête de la source"
 
-#: gio/glib-compile-resources.c:742
+#: gio/glib-compile-resources.c:824
 msgid "Generate source code used to link in the resource file into your code"
 msgstr ""
 "Générer le code source utilisé pour lier vers le fichier ressource dans "
 "votre code"
 
-#: gio/glib-compile-resources.c:743
+#: gio/glib-compile-resources.c:825
 msgid "Generate dependency list"
 msgstr "Générer la liste des dépendances"
 
-#: gio/glib-compile-resources.c:744
+#: gio/glib-compile-resources.c:826
 msgid "Name of the dependency file to generate"
 msgstr "Nom du fichier de dépendances à générer"
 
-#: gio/glib-compile-resources.c:745
+#: gio/glib-compile-resources.c:827
 msgid "Include phony targets in the generated dependency file"
 msgstr "Inclure les cibles « phony » dans le fichier de dépendances généré"
 
-#: gio/glib-compile-resources.c:746
+#: gio/glib-compile-resources.c:828
 msgid "Don’t automatically create and register resource"
 msgstr "Ne pas créer et enregistrer automatiquement la ressource"
 
-#: gio/glib-compile-resources.c:747
+#: gio/glib-compile-resources.c:829
 msgid "Don’t export functions; declare them G_GNUC_INTERNAL"
 msgstr "Ne pas exporter les fonctions ; les déclarer G_GNUC_INTERNAL"
 
-#: gio/glib-compile-resources.c:748
+#: gio/glib-compile-resources.c:830
 msgid ""
 "Don’t embed resource data in the C file; assume it's linked externally "
 "instead"
@@ -2586,11 +2606,15 @@ msgstr ""
 "Ne pas inclure les données de ressources dans le fichier C ; on suppose "
 "plutôt qu’elles sont liées de façon externe"
 
-#: gio/glib-compile-resources.c:749
+#: gio/glib-compile-resources.c:831
 msgid "C identifier name used for the generated source code"
 msgstr "Nom d’identifiant C utilisé pour le code source généré"
 
-#: gio/glib-compile-resources.c:775
+#: gio/glib-compile-resources.c:832
+msgid "The target C compiler (default: the CC environment variable)"
+msgstr "Le compilateur C cible (par défaut : la variable d’environnement CC)"
+
+#: gio/glib-compile-resources.c:858
 msgid ""
 "Compile a resource specification into a resource file.\n"
 "Resource specification files have the extension .gresource.xml,\n"
@@ -2601,7 +2625,7 @@ msgstr ""
 "xml\n"
 "et le fichier de ressource possède l’extension .gresource."
 
-#: gio/glib-compile-resources.c:797
+#: gio/glib-compile-resources.c:880
 msgid "You should give exactly one file name\n"
 msgstr "Vous devez indiquer un et un seul nom de fichier\n"
 
@@ -3423,13 +3447,13 @@ msgstr "Erreur lors de la création de la copie de sauvegarde : %s"
 msgid "Error renaming temporary file: %s"
 msgstr "Erreur lors du renommage du fichier temporaire : %s"
 
-#: gio/glocalfileoutputstream.c:609 gio/glocalfileoutputstream.c:1237
+#: gio/glocalfileoutputstream.c:609 gio/glocalfileoutputstream.c:1239
 #, c-format
 msgid "Error truncating file: %s"
 msgstr "Erreur lors de la troncature du fichier : %s"
 
 #: gio/glocalfileoutputstream.c:662 gio/glocalfileoutputstream.c:907
-#: gio/glocalfileoutputstream.c:1218 gio/gsubprocess.c:226
+#: gio/glocalfileoutputstream.c:1220 gio/gsubprocess.c:229
 #, c-format
 msgid "Error opening file “%s”: %s"
 msgstr "Erreur lors de l’ouverture du fichier « %s » : %s"
@@ -3451,7 +3475,7 @@ msgstr "Le fichier a été modifié extérieurement"
 msgid "Error removing old file: %s"
 msgstr "Erreur à la suppression de l’ancien fichier : %s"
 
-#: gio/gmemoryinputstream.c:474 gio/gmemoryoutputstream.c:772
+#: gio/gmemoryinputstream.c:474 gio/gmemoryoutputstream.c:762
 msgid "Invalid GSeekType supplied"
 msgstr "Le type GSeekType fourni n’est pas valide"
 
@@ -3463,15 +3487,15 @@ msgstr "Requête « seek » non valide"
 msgid "Cannot truncate GMemoryInputStream"
 msgstr "Impossible de tronquer GMemoryInputStream"
 
-#: gio/gmemoryoutputstream.c:567
+#: gio/gmemoryoutputstream.c:568
 msgid "Memory output stream not resizable"
 msgstr "Le flux de sortie mémoire n’est pas redimensionnable"
 
-#: gio/gmemoryoutputstream.c:583
+#: gio/gmemoryoutputstream.c:584
 msgid "Failed to resize memory output stream"
 msgstr "Le redimensionnement du flux de sortie mémoire a échoué"
 
-#: gio/gmemoryoutputstream.c:673
+#: gio/gmemoryoutputstream.c:663
 msgid ""
 "Amount of memory required to process the write is larger than available "
 "address space"
@@ -3479,11 +3503,11 @@ msgstr ""
 "La quantité de mémoire nécessaire pour effectuer l’écriture est plus grande "
 "que l’espace d’adressage disponible"
 
-#: gio/gmemoryoutputstream.c:782
+#: gio/gmemoryoutputstream.c:772
 msgid "Requested seek before the beginning of the stream"
 msgstr "Positionnement demandé avant le début du flux"
 
-#: gio/gmemoryoutputstream.c:797
+#: gio/gmemoryoutputstream.c:787
 msgid "Requested seek beyond the end of the stream"
 msgstr "Positionnement demandé après la fin du flux"
 
@@ -3589,18 +3613,22 @@ msgstr "Somme des vecteurs passés à %s trop grande"
 msgid "Source stream is already closed"
 msgstr "Le flux source est déjà fermé"
 
-#: gio/gresolver.c:386 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
+#. Translators: the first placeholder is a domain name, the
+#. * second is an error message
+#: gio/gresolver.c:401 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
+#: gio/gthreadedresolver.c:780 gio/gthreadedresolver.c:804
+#: gio/gthreadedresolver.c:829 gio/gthreadedresolver.c:844
 #, c-format
 msgid "Error resolving “%s”: %s"
 msgstr "Erreur de résolution de « %s » : %s"
 
 #. Translators: The placeholder is for a function name.
-#: gio/gresolver.c:455 gio/gresolver.c:615
+#: gio/gresolver.c:470 gio/gresolver.c:630
 #, c-format
 msgid "%s not implemented"
 msgstr "%s non implémentée"
 
-#: gio/gresolver.c:984 gio/gresolver.c:1036
+#: gio/gresolver.c:999 gio/gresolver.c:1051
 msgid "Invalid domain"
 msgstr "Domaine non valide"
 
@@ -3715,7 +3743,7 @@ msgstr ""
 msgid "  SECTION   An (optional) elf section name\n"
 msgstr "  SECTION   Un nom de section elf (facultatif)\n"
 
-#: gio/gresource-tool.c:565 gio/gsettings-tool.c:706
+#: gio/gresource-tool.c:565 gio/gsettings-tool.c:718
 msgid "  COMMAND   The (optional) command to explain\n"
 msgstr "  COMMANDE   La commande (facultative) à expliquer\n"
 
@@ -3749,7 +3777,7 @@ msgstr "CHEMIN"
 msgid "  PATH      A resource path\n"
 msgstr "  CHEMIN      Un chemin de ressource\n"
 
-#: gio/gsettings-tool.c:49 gio/gsettings-tool.c:70 gio/gsettings-tool.c:911
+#: gio/gsettings-tool.c:49 gio/gsettings-tool.c:70 gio/gsettings-tool.c:923
 #, c-format
 msgid "No such schema “%s”\n"
 msgstr "Le schéma « %s » n’existe pas\n"
@@ -3782,35 +3810,35 @@ msgstr "Un chemin doit se terminer par une barre oblique (/)\n"
 msgid "Path must not contain two adjacent slashes (//)\n"
 msgstr "Un chemin ne doit pas contenir deux barres obliques à la suite (//)\n"
 
-#: gio/gsettings-tool.c:541
+#: gio/gsettings-tool.c:553
 msgid "The provided value is outside of the valid range\n"
 msgstr "La valeur donnée est en dehors du domaine de validité\n"
 
-#: gio/gsettings-tool.c:548
+#: gio/gsettings-tool.c:560
 msgid "The key is not writable\n"
 msgstr "La clé ne peut pas être écrite\n"
 
-#: gio/gsettings-tool.c:584
+#: gio/gsettings-tool.c:596
 msgid "List the installed (non-relocatable) schemas"
 msgstr "Lister les schémas (non-réadressables) installés"
 
-#: gio/gsettings-tool.c:590
+#: gio/gsettings-tool.c:602
 msgid "List the installed relocatable schemas"
 msgstr "Lister les schémas réadressables installés"
 
-#: gio/gsettings-tool.c:596
+#: gio/gsettings-tool.c:608
 msgid "List the keys in SCHEMA"
 msgstr "Lister les clés du SCHÉMA"
 
-#: gio/gsettings-tool.c:597 gio/gsettings-tool.c:603 gio/gsettings-tool.c:646
+#: gio/gsettings-tool.c:609 gio/gsettings-tool.c:615 gio/gsettings-tool.c:658
 msgid "SCHEMA[:PATH]"
 msgstr "SCHÉMA[:CHEMIN]"
 
-#: gio/gsettings-tool.c:602
+#: gio/gsettings-tool.c:614
 msgid "List the children of SCHEMA"
 msgstr "Lister les enfants du SCHÉMA"
 
-#: gio/gsettings-tool.c:608
+#: gio/gsettings-tool.c:620
 msgid ""
 "List keys and values, recursively\n"
 "If no SCHEMA is given, list all keys\n"
@@ -3818,48 +3846,48 @@ msgstr ""
 "Lister les clés et les valeurs récursivement\n"
 "Si aucun SCHÉMA n’est indiqué, lister toutes les clés\n"
 
-#: gio/gsettings-tool.c:610
+#: gio/gsettings-tool.c:622
 msgid "[SCHEMA[:PATH]]"
 msgstr "[SCHÉMA[:CHEMIN]]"
 
-#: gio/gsettings-tool.c:615
+#: gio/gsettings-tool.c:627
 msgid "Get the value of KEY"
 msgstr "Obtenir la valeur de KEY"
 
-#: gio/gsettings-tool.c:616 gio/gsettings-tool.c:622 gio/gsettings-tool.c:628
-#: gio/gsettings-tool.c:640 gio/gsettings-tool.c:652
+#: gio/gsettings-tool.c:628 gio/gsettings-tool.c:634 gio/gsettings-tool.c:640
+#: gio/gsettings-tool.c:652 gio/gsettings-tool.c:664
 msgid "SCHEMA[:PATH] KEY"
 msgstr "SCHÉMA[:CHEMIN] CLÉ"
 
-#: gio/gsettings-tool.c:621
+#: gio/gsettings-tool.c:633
 msgid "Query the range of valid values for KEY"
 msgstr "Demander la plage de validité des valeurs de la CLÉ"
 
-#: gio/gsettings-tool.c:627
+#: gio/gsettings-tool.c:639
 msgid "Query the description for KEY"
 msgstr "Demander la description pour la CLÉ"
 
-#: gio/gsettings-tool.c:633
+#: gio/gsettings-tool.c:645
 msgid "Set the value of KEY to VALUE"
 msgstr "Définir la valeur de CLÉ à VALEUR"
 
-#: gio/gsettings-tool.c:634
+#: gio/gsettings-tool.c:646
 msgid "SCHEMA[:PATH] KEY VALUE"
 msgstr "SCHÉMA[:CHEMIN] CLÉ VALEUR"
 
-#: gio/gsettings-tool.c:639
+#: gio/gsettings-tool.c:651
 msgid "Reset KEY to its default value"
 msgstr "Rétablir CLÉ à sa valeur par défaut"
 
-#: gio/gsettings-tool.c:645
+#: gio/gsettings-tool.c:657
 msgid "Reset all keys in SCHEMA to their defaults"
 msgstr "Réinitialiser toutes les clés de SCHÉMA à leurs valeurs par défaut"
 
-#: gio/gsettings-tool.c:651
+#: gio/gsettings-tool.c:663
 msgid "Check if KEY is writable"
 msgstr "Tester si CLÉ est inscriptible"
 
-#: gio/gsettings-tool.c:657
+#: gio/gsettings-tool.c:669
 msgid ""
 "Monitor KEY for changes.\n"
 "If no KEY is specified, monitor all keys in SCHEMA.\n"
@@ -3869,11 +3897,11 @@ msgstr ""
 "Si CLÉ n’est pas défini, contrôle toutes les clés dans SCHÉMA.\n"
 "Presser ^C pour mettre fin au contrôle.\n"
 
-#: gio/gsettings-tool.c:660
+#: gio/gsettings-tool.c:672
 msgid "SCHEMA[:PATH] [KEY]"
 msgstr "SCHÉMA[:CHEMIN] [CLÉ]"
 
-#: gio/gsettings-tool.c:672
+#: gio/gsettings-tool.c:684
 msgid ""
 "Usage:\n"
 "  gsettings --version\n"
@@ -3922,7 +3950,7 @@ msgstr ""
 "Saisissez « gsettings help COMMANDE » pour une aide détaillée.\n"
 "\n"
 
-#: gio/gsettings-tool.c:696
+#: gio/gsettings-tool.c:708
 #, c-format
 msgid ""
 "Usage:\n"
@@ -3937,12 +3965,12 @@ msgstr ""
 "%s\n"
 "\n"
 
-#: gio/gsettings-tool.c:702
+#: gio/gsettings-tool.c:714
 msgid "  SCHEMADIR A directory to search for additional schemas\n"
 msgstr ""
 "  RÉPERTOIRE2SCHÉMA Un répertoire de recherche de schémas supplémentaires\n"
 
-#: gio/gsettings-tool.c:710
+#: gio/gsettings-tool.c:722
 msgid ""
 "  SCHEMA    The name of the schema\n"
 "  PATH      The path, for relocatable schemas\n"
@@ -3950,215 +3978,215 @@ msgstr ""
 "  SCHÉMA      Le nom du schéma\n"
 "  CHEMIN      Le chemin, pour les schémas réadressables\n"
 
-#: gio/gsettings-tool.c:715
+#: gio/gsettings-tool.c:727
 msgid "  KEY       The (optional) key within the schema\n"
 msgstr "  CLÉ       La clé (optionnelle) dans le schéma\n"
 
-#: gio/gsettings-tool.c:719
+#: gio/gsettings-tool.c:731
 msgid "  KEY       The key within the schema\n"
 msgstr "  CLÉ       La clé dans le schéma\n"
 
-#: gio/gsettings-tool.c:723
+#: gio/gsettings-tool.c:735
 msgid "  VALUE     The value to set\n"
 msgstr "  VALEUR    La valeur à définir\n"
 
-#: gio/gsettings-tool.c:778
+#: gio/gsettings-tool.c:790
 #, c-format
 msgid "Could not load schemas from %s: %s\n"
 msgstr "Impossible de charger les schémas depuis %s : %s\n"
 
-#: gio/gsettings-tool.c:790
+#: gio/gsettings-tool.c:802
 msgid "No schemas installed\n"
 msgstr "Aucun schéma installé\n"
 
-#: gio/gsettings-tool.c:869
+#: gio/gsettings-tool.c:881
 msgid "Empty schema name given\n"
 msgstr "Nom de schéma fourni vide\n"
 
-#: gio/gsettings-tool.c:924
+#: gio/gsettings-tool.c:936
 #, c-format
 msgid "No such key “%s”\n"
 msgstr "La clé « %s » n’existe pas\n"
 
-#: gio/gsocket.c:413
+#: gio/gsocket.c:417
 msgid "Invalid socket, not initialized"
 msgstr "Connecteur non valide, non initialisé"
 
-#: gio/gsocket.c:420
+#: gio/gsocket.c:424
 #, c-format
 msgid "Invalid socket, initialization failed due to: %s"
 msgstr "Connecteur non valide, l’initialisation a échoué en raison de : %s"
 
-#: gio/gsocket.c:428
+#: gio/gsocket.c:432
 msgid "Socket is already closed"
 msgstr "Le connecteur est déjà fermé"
 
-#: gio/gsocket.c:443 gio/gsocket.c:3190 gio/gsocket.c:4420 gio/gsocket.c:4478
+#: gio/gsocket.c:447 gio/gsocket.c:3194 gio/gsocket.c:4427 gio/gsocket.c:4485
 msgid "Socket I/O timed out"
 msgstr "Entrées/sorties hors délai sur le connecteur"
 
-#: gio/gsocket.c:578
+#: gio/gsocket.c:582
 #, c-format
 msgid "creating GSocket from fd: %s"
 msgstr "création de GSocket à partir du descripteur de fichier : %s"
 
-#: gio/gsocket.c:607 gio/gsocket.c:671 gio/gsocket.c:678
+#: gio/gsocket.c:611 gio/gsocket.c:675 gio/gsocket.c:682
 #, c-format
 msgid "Unable to create socket: %s"
 msgstr "Impossible de créer le connecteur : %s"
 
-#: gio/gsocket.c:671
+#: gio/gsocket.c:675
 msgid "Unknown family was specified"
 msgstr "Indication d’une famille inconnue"
 
-#: gio/gsocket.c:678
+#: gio/gsocket.c:682
 msgid "Unknown protocol was specified"
 msgstr "Indication d’un protocole inconnu"
 
-#: gio/gsocket.c:1169
+#: gio/gsocket.c:1173
 #, c-format
 msgid "Cannot use datagram operations on a non-datagram socket."
 msgstr ""
 "Impossible d’utiliser des opérations datagramme sur un connecteur non "
 "datagramme."
 
-#: gio/gsocket.c:1186
+#: gio/gsocket.c:1190
 #, c-format
 msgid "Cannot use datagram operations on a socket with a timeout set."
 msgstr ""
 "Impossible d’utiliser des opérations datagramme sur un connecteur doté d’un "
 "délai d’expiration."
 
-#: gio/gsocket.c:1993
+#: gio/gsocket.c:1997
 #, c-format
 msgid "could not get local address: %s"
 msgstr "impossible d’obtenir l’adresse locale : %s"
 
-#: gio/gsocket.c:2039
+#: gio/gsocket.c:2043
 #, c-format
 msgid "could not get remote address: %s"
 msgstr "impossible d’obtenir l’adresse distante : %s"
 
-#: gio/gsocket.c:2105
+#: gio/gsocket.c:2109
 #, c-format
 msgid "could not listen: %s"
 msgstr "impossible d’écouter : %s"
 
-#: gio/gsocket.c:2209
+#: gio/gsocket.c:2213
 #, c-format
 msgid "Error binding to address %s: %s"
 msgstr "Erreur lors de la liaison à l’adresse %s : %s"
 
-#: gio/gsocket.c:2385 gio/gsocket.c:2422 gio/gsocket.c:2532 gio/gsocket.c:2557
-#: gio/gsocket.c:2620 gio/gsocket.c:2678 gio/gsocket.c:2696
+#: gio/gsocket.c:2389 gio/gsocket.c:2426 gio/gsocket.c:2536 gio/gsocket.c:2561
+#: gio/gsocket.c:2624 gio/gsocket.c:2682 gio/gsocket.c:2700
 #, c-format
 msgid "Error joining multicast group: %s"
 msgstr "Erreur lors de la connexion au groupe multicast : %s"
 
-#: gio/gsocket.c:2386 gio/gsocket.c:2423 gio/gsocket.c:2533 gio/gsocket.c:2558
-#: gio/gsocket.c:2621 gio/gsocket.c:2679 gio/gsocket.c:2697
+#: gio/gsocket.c:2390 gio/gsocket.c:2427 gio/gsocket.c:2537 gio/gsocket.c:2562
+#: gio/gsocket.c:2625 gio/gsocket.c:2683 gio/gsocket.c:2701
 #, c-format
 msgid "Error leaving multicast group: %s"
 msgstr "Erreur lors de la déconnexion du groupe multicast : %s"
 
-#: gio/gsocket.c:2387
+#: gio/gsocket.c:2391
 msgid "No support for source-specific multicast"
 msgstr "Aucune prise en charge pour le multicast spécifique à la source"
 
-#: gio/gsocket.c:2534
+#: gio/gsocket.c:2538
 msgid "Unsupported socket family"
 msgstr "Famille de connecteur réseau non prise en charge"
 
-#: gio/gsocket.c:2559
+#: gio/gsocket.c:2563
 msgid "source-specific not an IPv4 address"
 msgstr "source-specific n’est pas une adresse IPv4"
 
-#: gio/gsocket.c:2583
+#: gio/gsocket.c:2587
 #, c-format
 msgid "Interface name too long"
 msgstr "Nom d’interface trop long"
 
-#: gio/gsocket.c:2596 gio/gsocket.c:2646
+#: gio/gsocket.c:2600 gio/gsocket.c:2650
 #, c-format
 msgid "Interface not found: %s"
 msgstr "Interface introuvable : %s"
 
-#: gio/gsocket.c:2622
+#: gio/gsocket.c:2626
 msgid "No support for IPv4 source-specific multicast"
 msgstr "Aucune prise en charge pour le multicast IPv4 spécifique à la source"
 
-#: gio/gsocket.c:2680
+#: gio/gsocket.c:2684
 msgid "No support for IPv6 source-specific multicast"
 msgstr "Aucune prise en charge pour le multicast IPv6 spécifique à la source"
 
-#: gio/gsocket.c:2889
+#: gio/gsocket.c:2893
 #, c-format
 msgid "Error accepting connection: %s"
 msgstr "Erreur d’acceptation de la connexion : %s"
 
-#: gio/gsocket.c:3015
+#: gio/gsocket.c:3019
 msgid "Connection in progress"
 msgstr "Connexion en cours"
 
-#: gio/gsocket.c:3066
+#: gio/gsocket.c:3070
 msgid "Unable to get pending error: "
 msgstr "Impossible d’obtenir l’erreur actuelle : "
 
-#: gio/gsocket.c:3255
+#: gio/gsocket.c:3259
 #, c-format
 msgid "Error receiving data: %s"
 msgstr "Erreur lors de la réception des données : %s"
 
-#: gio/gsocket.c:3452
+#: gio/gsocket.c:3456
 #, c-format
 msgid "Error sending data: %s"
 msgstr "Erreur lors de l’envoi des données : %s"
 
-#: gio/gsocket.c:3639
+#: gio/gsocket.c:3643
 #, c-format
 msgid "Unable to shutdown socket: %s"
 msgstr "Impossible de fermer le connecteur : %s"
 
-#: gio/gsocket.c:3720
+#: gio/gsocket.c:3724
 #, c-format
 msgid "Error closing socket: %s"
 msgstr "Erreur lors de la fermeture du connecteur : %s"
 
-#: gio/gsocket.c:4413
+#: gio/gsocket.c:4420
 #, c-format
 msgid "Waiting for socket condition: %s"
 msgstr "En attente de l’état du connecteur : %s"
 
-#: gio/gsocket.c:4804 gio/gsocket.c:4820 gio/gsocket.c:4833
+#: gio/gsocket.c:4810 gio/gsocket.c:4826 gio/gsocket.c:4839
 #, c-format
 msgid "Unable to send message: %s"
 msgstr "Impossible d’envoyer le message : %s"
 
-#: gio/gsocket.c:4805 gio/gsocket.c:4821 gio/gsocket.c:4834
+#: gio/gsocket.c:4811 gio/gsocket.c:4827 gio/gsocket.c:4840
 msgid "Message vectors too large"
 msgstr "Vecteurs de messages trop grands"
 
-#: gio/gsocket.c:4850 gio/gsocket.c:4852 gio/gsocket.c:4999 gio/gsocket.c:5084
-#: gio/gsocket.c:5262 gio/gsocket.c:5302 gio/gsocket.c:5304
+#: gio/gsocket.c:4856 gio/gsocket.c:4858 gio/gsocket.c:5005 gio/gsocket.c:5090
+#: gio/gsocket.c:5268 gio/gsocket.c:5308 gio/gsocket.c:5310
 #, c-format
 msgid "Error sending message: %s"
 msgstr "Erreur d’envoi de message : %s"
 
-#: gio/gsocket.c:5026
+#: gio/gsocket.c:5032
 msgid "GSocketControlMessage not supported on Windows"
 msgstr "GSocketControlMessage n’est pas pris en charge par Windows"
 
-#: gio/gsocket.c:5495 gio/gsocket.c:5571 gio/gsocket.c:5797
+#: gio/gsocket.c:5505 gio/gsocket.c:5581 gio/gsocket.c:5807
 #, c-format
 msgid "Error receiving message: %s"
 msgstr "Erreur lors de la réception du message : %s"
 
-#: gio/gsocket.c:6070 gio/gsocket.c:6081 gio/gsocket.c:6127
+#: gio/gsocket.c:6090 gio/gsocket.c:6101 gio/gsocket.c:6164
 #, c-format
 msgid "Unable to read socket credentials: %s"
 msgstr "Impossible de lire les données d’authentification du connecteur : %s"
 
-#: gio/gsocket.c:6136
+#: gio/gsocket.c:6173
 msgid "g_socket_get_credentials not implemented for this OS"
 msgstr ""
 "g_socket_get_credentials n’est pas implémenté sur ce système d’exploitation"
@@ -4177,12 +4205,12 @@ msgstr "Impossible de se connecter à %s : "
 msgid "Could not connect: "
 msgstr "Impossible de se connecter : "
 
-#: gio/gsocketclient.c:1162 gio/gsocketclient.c:1749
+#: gio/gsocketclient.c:1202 gio/gsocketclient.c:1793
 msgid "Proxying over a non-TCP connection is not supported."
 msgstr ""
 "L’usage d’un proxy n’est pas pris en charge dans une connexion non-TCP."
 
-#: gio/gsocketclient.c:1194 gio/gsocketclient.c:1778
+#: gio/gsocketclient.c:1234 gio/gsocketclient.c:1822
 #, c-format
 msgid "Proxy protocol “%s” is not supported."
 msgstr "Le protocole du proxy « %s » n’est pas pris en charge."
@@ -4289,7 +4317,7 @@ msgstr ""
 msgid "Unknown SOCKSv5 proxy error."
 msgstr "Erreur inconnue du serveur mandataire SOCKSv5."
 
-#: gio/gtestdbus.c:612 glib/gspawn-win32.c:311
+#: gio/gtestdbus.c:612 glib/gspawn-win32.c:314
 #, c-format
 msgid "Failed to create pipe for communicating with child process (%s)"
 msgstr ""
@@ -4314,44 +4342,68 @@ msgstr "Aucune adresse valide n’a été trouvée"
 msgid "Error reverse-resolving “%s”: %s"
 msgstr "Erreur de résolution inverse de « %s » : %s"
 
-#: gio/gthreadedresolver.c:676 gio/gthreadedresolver.c:755
-#: gio/gthreadedresolver.c:853 gio/gthreadedresolver.c:903
+#. Translators: the placeholder is a DNS record type, such as ‘MX’ or ‘SRV’
+#: gio/gthreadedresolver.c:550 gio/gthreadedresolver.c:572
+#: gio/gthreadedresolver.c:610 gio/gthreadedresolver.c:657
+#: gio/gthreadedresolver.c:686 gio/gthreadedresolver.c:698
+#, c-format
+msgid "Error parsing DNS %s record: malformed DNS packet"
+msgstr ""
+"Erreur lors de l’analyse de l’enregistrement DNS %s : paquet DNS mal formé"
+
+#: gio/gthreadedresolver.c:756 gio/gthreadedresolver.c:893
+#: gio/gthreadedresolver.c:991 gio/gthreadedresolver.c:1041
 #, c-format
 msgid "No DNS record of the requested type for “%s”"
 msgstr "Aucun enregistrement DNS du type demandé pour « %s »"
 
-#: gio/gthreadedresolver.c:681 gio/gthreadedresolver.c:858
+#: gio/gthreadedresolver.c:761 gio/gthreadedresolver.c:996
 #, c-format
 msgid "Temporarily unable to resolve “%s”"
 msgstr "Impossible temporairement de résoudre « %s »"
 
-#: gio/gthreadedresolver.c:686 gio/gthreadedresolver.c:863
-#: gio/gthreadedresolver.c:973
+#: gio/gthreadedresolver.c:766 gio/gthreadedresolver.c:1001
+#: gio/gthreadedresolver.c:1111
 #, c-format
 msgid "Error resolving “%s”"
 msgstr "Erreur de résolution de « %s »"
 
-#: gio/gtlscertificate.c:431
+#: gio/gthreadedresolver.c:780 gio/gthreadedresolver.c:804
+#: gio/gthreadedresolver.c:829 gio/gthreadedresolver.c:844
+msgid "Malformed DNS packet"
+msgstr "Paquet DNS mal formé"
+
+#: gio/gthreadedresolver.c:886
+#, c-format
+#| msgid "Failed to read from file “%s”: %s"
+msgid "Failed to parse DNS response for “%s”: "
+msgstr "Échec de l’analyse de la réponse DNS pour « %s » : "
+
+#: gio/gtlscertificate.c:478
 msgid "No PEM-encoded private key found"
 msgstr "Aucune clé privée codée PEM trouvée"
 
-#: gio/gtlscertificate.c:441
+#: gio/gtlscertificate.c:488
 msgid "Cannot decrypt PEM-encoded private key"
 msgstr "Impossible de déchiffrer la clé privée codée-PEM"
 
-#: gio/gtlscertificate.c:452
+#: gio/gtlscertificate.c:499
 msgid "Could not parse PEM-encoded private key"
 msgstr "Impossible d’analyser la clé privée codée-PEM"
 
-#: gio/gtlscertificate.c:479
+#: gio/gtlscertificate.c:526
 msgid "No PEM-encoded certificate found"
 msgstr "Aucun certificat codé-PEM trouvé"
 
-#: gio/gtlscertificate.c:488
+#: gio/gtlscertificate.c:535
 msgid "Could not parse PEM-encoded certificate"
 msgstr "Impossible d’analyser le certificat codé-PEM"
 
-#: gio/gtlscertificate.c:844
+#: gio/gtlscertificate.c:796
+msgid "The current TLS backend does not support PKCS #12"
+msgstr "Le moteur TLS actuel ne prend pas en charge PKCS #12"
+
+#: gio/gtlscertificate.c:1013
 msgid "This GTlsBackend does not support creating PKCS #11 certificates"
 msgstr ""
 "Ce GTlsBackend ne prend pas en charge la création de certificats PKCS #11"
@@ -4378,57 +4430,65 @@ msgstr ""
 msgid "The password entered is incorrect."
 msgstr "Le mot de passe saisi est incorrect."
 
-#: gio/gunixconnection.c:166 gio/gunixconnection.c:579
+#: gio/gunixconnection.c:125
+msgid "Sending FD is not supported"
+msgstr "L’envoi de descripteur de fichier n’est pas pris en charge"
+
+#: gio/gunixconnection.c:178 gio/gunixconnection.c:596
 #, c-format
 msgid "Expecting 1 control message, got %d"
 msgid_plural "Expecting 1 control message, got %d"
 msgstr[0] "1 message de contrôle attendu, %d reçu"
 msgstr[1] "1 message de contrôle attendu, %d reçus"
 
-#: gio/gunixconnection.c:182 gio/gunixconnection.c:591
+#: gio/gunixconnection.c:194 gio/gunixconnection.c:608
 msgid "Unexpected type of ancillary data"
 msgstr "Type de données auxiliaires inattendu"
 
-#: gio/gunixconnection.c:200
+#: gio/gunixconnection.c:212
 #, c-format
 msgid "Expecting one fd, but got %d\n"
 msgid_plural "Expecting one fd, but got %d\n"
 msgstr[0] "Un descripteur de fichier attendu, %d obtenu\n"
 msgstr[1] "Un descripteur de fichier attendu, %d obtenus\n"
 
-#: gio/gunixconnection.c:219
+#: gio/gunixconnection.c:231
 msgid "Received invalid fd"
 msgstr "Le descripteur de fichier reçu n’est pas valide"
 
-#: gio/gunixconnection.c:363
+#: gio/gunixconnection.c:238
+msgid "Receiving FD is not supported"
+msgstr "La réception de descripteur de fichier n’est pas prise en charge"
+
+#: gio/gunixconnection.c:380
 msgid "Error sending credentials: "
 msgstr "Erreur lors de l’envoi de l’identification : "
 
-#: gio/gunixconnection.c:520
+#: gio/gunixconnection.c:537
 #, c-format
 msgid "Error checking if SO_PASSCRED is enabled for socket: %s"
 msgstr ""
 "Erreur lors de la vérification de l’activation de SO_PASSCRED pour le "
 "connecteur : %s"
 
-#: gio/gunixconnection.c:536
+#: gio/gunixconnection.c:553
 #, c-format
 msgid "Error enabling SO_PASSCRED: %s"
 msgstr "Erreur lors de l’activation de SO_PASSCRED : %s"
 
-#: gio/gunixconnection.c:565
+#: gio/gunixconnection.c:582
 msgid ""
 "Expecting to read a single byte for receiving credentials but read zero bytes"
 msgstr ""
 "Lecture d’un unique octet attendue à la réception de l’identification, mais "
 "aucun octet lu"
 
-#: gio/gunixconnection.c:605
+#: gio/gunixconnection.c:622
 #, c-format
 msgid "Not expecting control message, but got %d"
 msgstr "Pas de message de contrôle attendu, %d reçu(s)"
 
-#: gio/gunixconnection.c:630
+#: gio/gunixconnection.c:647
 #, c-format
 msgid "Error while disabling SO_PASSCRED: %s"
 msgstr "Erreur lors de la désactivation de SO_PASSCRED : %s"
@@ -4444,7 +4504,7 @@ msgstr "Erreur de lecture à partir du descripteur de fichier : %s"
 msgid "Error closing file descriptor: %s"
 msgstr "Erreur de fermeture du descripteur de fichier : %s"
 
-#: gio/gunixmounts.c:2785 gio/gunixmounts.c:2838
+#: gio/gunixmounts.c:2809 gio/gunixmounts.c:2862
 msgid "Filesystem root"
 msgstr "Racine du système de fichiers"
 
@@ -4455,7 +4515,7 @@ msgstr "Racine du système de fichiers"
 msgid "Error writing to file descriptor: %s"
 msgstr "Erreur d’écriture vers le descripteur de fichier : %s"
 
-#: gio/gunixsocketaddress.c:244
+#: gio/gunixsocketaddress.c:251
 msgid "Abstract UNIX domain socket addresses not supported on this system"
 msgstr ""
 "Les adresses abstraites de connecteur réseau de domaine UNIX ne sont pas "
@@ -4579,7 +4639,7 @@ msgstr "Un signet pour l’URI « %s » existe déjà"
 #: glib/gbookmarkfile.c:4007
 #, c-format
 msgid "No bookmark found for URI “%s”"
-msgstr "Aucun signet trouvé pour l’URI « %s »"
+msgstr "Aucun signet trouvé pour l’URI « %s »"
 
 #: glib/gbookmarkfile.c:2418
 #, c-format
@@ -4611,8 +4671,8 @@ msgstr ""
 msgid "Unrepresentable character in conversion input"
 msgstr "Caractère non affichable dans l’entrée du convertisseur"
 
-#: glib/gconvert.c:495 glib/gutf8.c:871 glib/gutf8.c:1083 glib/gutf8.c:1220
-#: glib/gutf8.c:1324
+#: glib/gconvert.c:495 glib/gutf8.c:886 glib/gutf8.c:1099 glib/gutf8.c:1236
+#: glib/gutf8.c:1340
 msgid "Partial character sequence at end of input"
 msgstr "Séquence de caractères incomplète en fin d’entrée"
 
@@ -4634,7 +4694,7 @@ msgstr "Octet nul imbriqué dans la sortie du convertisseur"
 #: glib/gconvert.c:1688
 #, c-format
 msgid "The URI “%s” is not an absolute URI using the “file” scheme"
-msgstr "L’URI « %s » n’est pas un URI absolu utilisant le protocole « file »"
+msgstr "L’URI « %s » n’est pas une URI absolue utilisant le protocole « file »"
 
 #: glib/gconvert.c:1698
 #, c-format
@@ -5184,17 +5244,17 @@ msgstr "La canal se termine avec un caractère partiel"
 msgid "Can’t do a raw read in g_io_channel_read_to_end"
 msgstr "Lecture de données brutes impossible dans g_io_channel_read_to_end"
 
-#: glib/gkeyfile.c:791
+#: glib/gkeyfile.c:794
 msgid "Valid key file could not be found in search dirs"
 msgstr ""
 "Impossible de trouver un fichier de clés valide dans les répertoires de "
 "recherche"
 
-#: glib/gkeyfile.c:828
+#: glib/gkeyfile.c:831
 msgid "Not a regular file"
 msgstr "N’est pas un fichier standard"
 
-#: glib/gkeyfile.c:1283
+#: glib/gkeyfile.c:1289
 #, c-format
 msgid ""
 "Key file contains line “%s” which is not a key-value pair, group, or comment"
@@ -5202,46 +5262,46 @@ msgstr ""
 "Le fichier de clés contient la ligne « %s » qui n’est ni une paire de "
 "valeurs de clé, ni un groupe, ni un commentaire"
 
-#: glib/gkeyfile.c:1340
+#: glib/gkeyfile.c:1346
 #, c-format
 msgid "Invalid group name: %s"
 msgstr "Nom de groupe non valide : %s"
 
-#: glib/gkeyfile.c:1362
+#: glib/gkeyfile.c:1370
 msgid "Key file does not start with a group"
 msgstr "Le fichier de clés ne débute pas par un groupe"
 
-#: glib/gkeyfile.c:1388
+#: glib/gkeyfile.c:1394
 #, c-format
-msgid "Invalid key name: %s"
-msgstr "Nom de clé non valide : %s"
+msgid "Invalid key name: %.*s"
+msgstr "Nom de clé non valide : %.*s"
 
-#: glib/gkeyfile.c:1415
+#: glib/gkeyfile.c:1422
 #, c-format
 msgid "Key file contains unsupported encoding “%s”"
 msgstr ""
 "Le fichier de clés contient un codage de caractères non pris en charge « %s »"
 
-#: glib/gkeyfile.c:1664 glib/gkeyfile.c:1837 glib/gkeyfile.c:3287
-#: glib/gkeyfile.c:3351 glib/gkeyfile.c:3481 glib/gkeyfile.c:3613
-#: glib/gkeyfile.c:3759 glib/gkeyfile.c:3994 glib/gkeyfile.c:4061
+#: glib/gkeyfile.c:1677 glib/gkeyfile.c:1850 glib/gkeyfile.c:3297
+#: glib/gkeyfile.c:3361 glib/gkeyfile.c:3491 glib/gkeyfile.c:3623
+#: glib/gkeyfile.c:3769 glib/gkeyfile.c:4004 glib/gkeyfile.c:4071
 #, c-format
 msgid "Key file does not have group “%s”"
 msgstr "Le fichier de clés n’a pas de groupe « %s »"
 
-#: glib/gkeyfile.c:1792
+#: glib/gkeyfile.c:1805
 #, c-format
 msgid "Key file does not have key “%s” in group “%s”"
 msgstr "Le fichier de clés ne contient pas de clé « %s » dans le groupe « %s »"
 
-#: glib/gkeyfile.c:1954 glib/gkeyfile.c:2070
+#: glib/gkeyfile.c:1967 glib/gkeyfile.c:2083
 #, c-format
 msgid "Key file contains key “%s” with value “%s” which is not UTF-8"
 msgstr ""
 "Le fichier de clés contient la clé « %s » avec la valeur « %s » qui n’est "
 "pas codé en UTF-8"
 
-#: glib/gkeyfile.c:1974 glib/gkeyfile.c:2090 glib/gkeyfile.c:2529
+#: glib/gkeyfile.c:1987 glib/gkeyfile.c:2103 glib/gkeyfile.c:2542
 #, c-format
 msgid ""
 "Key file contains key “%s” which has a value that cannot be interpreted."
@@ -5249,7 +5309,7 @@ msgstr ""
 "Le fichier de clés contient la clé « %s » dont une valeur est impossible à "
 "interpréter."
 
-#: glib/gkeyfile.c:2747 glib/gkeyfile.c:3116
+#: glib/gkeyfile.c:2757 glib/gkeyfile.c:3126
 #, c-format
 msgid ""
 "Key file contains key “%s” in group “%s” which has a value that cannot be "
@@ -5258,41 +5318,41 @@ msgstr ""
 "Le fichier de clés contient la clé « %s » dans le groupe « %s » qui a une "
 "valeur impossible à interpréter."
 
-#: glib/gkeyfile.c:2825 glib/gkeyfile.c:2902
+#: glib/gkeyfile.c:2835 glib/gkeyfile.c:2912
 #, c-format
 msgid "Key “%s” in group “%s” has value “%s” where %s was expected"
 msgstr ""
 "La clé « %s » dans le groupe « %s » a une valeur « %s » alors que %s était "
 "attendu"
 
-#: glib/gkeyfile.c:4304
+#: glib/gkeyfile.c:4324
 msgid "Key file contains escape character at end of line"
 msgstr "Le fichier de clés contient un caractère d’échappement en fin de ligne"
 
-#: glib/gkeyfile.c:4326
+#: glib/gkeyfile.c:4346
 #, c-format
 msgid "Key file contains invalid escape sequence “%s”"
 msgstr ""
 "Le fichier de clés contient une séquence d’échappement non valide « %s »"
 
-#: glib/gkeyfile.c:4470
+#: glib/gkeyfile.c:4491
 #, c-format
 msgid "Value “%s” cannot be interpreted as a number."
 msgstr "La valeur « %s » ne peut pas être interprétée comme un nombre."
 
-#: glib/gkeyfile.c:4484
+#: glib/gkeyfile.c:4505
 #, c-format
 msgid "Integer value “%s” out of range"
 msgstr "La valeur entière « %s » est hors plage"
 
-#: glib/gkeyfile.c:4517
+#: glib/gkeyfile.c:4538
 #, c-format
 msgid "Value “%s” cannot be interpreted as a float number."
 msgstr ""
 "La valeur « %s » ne peut pas être interprétée comme un nombre à virgule "
 "flottante."
 
-#: glib/gkeyfile.c:4556
+#: glib/gkeyfile.c:4577
 #, c-format
 msgid "Value “%s” cannot be interpreted as a boolean."
 msgstr "La valeur « %s » ne peut pas être interprétée comme un booléen."
@@ -5604,7 +5664,7 @@ msgstr "Erreur lors de l’analyse de l’option %s"
 msgid "Missing argument for %s"
 msgstr "Paramètre manquant pour %s"
 
-#: glib/goption.c:2185
+#: glib/goption.c:2184
 #, c-format
 msgid "Unknown option %s"
 msgstr "Option inconnue %s"
@@ -6025,127 +6085,137 @@ msgstr "Le texte était vide (ou ne contenait que des espaces)"
 msgid "Failed to read data from child process (%s)"
 msgstr "La lecture des données depuis le processus fils a échoué (%s)"
 
-#: glib/gspawn.c:461
+#: glib/gspawn.c:462
 #, c-format
 msgid "Unexpected error in reading data from a child process (%s)"
 msgstr ""
 "Erreur inattendue lors de la lecture de données depuis un processus fils (%s)"
 
-#: glib/gspawn.c:546
+#: glib/gspawn.c:547
 #, c-format
 msgid "Unexpected error in waitpid() (%s)"
 msgstr "Erreur inattendue dans waitpid() (%s)"
 
-#: glib/gspawn.c:1166 glib/gspawn-win32.c:1407
+#: glib/gspawn.c:1175 glib/gspawn-win32.c:1438
 #, c-format
 msgid "Child process exited with code %ld"
 msgstr "Le processus fils s’est terminé avec le code %ld"
 
-#: glib/gspawn.c:1174
+#: glib/gspawn.c:1183
 #, c-format
 msgid "Child process killed by signal %ld"
 msgstr "Le processus fils a été tué par le signal %ld"
 
-#: glib/gspawn.c:1181
+#: glib/gspawn.c:1190
 #, c-format
 msgid "Child process stopped by signal %ld"
 msgstr "Le processus fils a été arrêté par le signal %ld"
 
-#: glib/gspawn.c:1188
+#: glib/gspawn.c:1197
 #, c-format
 msgid "Child process exited abnormally"
 msgstr "Le processus fils s’est terminé anormalement"
 
-#: glib/gspawn.c:1864 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
+#: glib/gspawn.c:1890 glib/gspawn-win32.c:353 glib/gspawn-win32.c:361
 #, c-format
 msgid "Failed to read from child pipe (%s)"
 msgstr "La lecture depuis un tube fils a échoué (%s)"
 
-#: glib/gspawn.c:2166
+#: glib/gspawn.c:2253
 #, c-format
 msgid "Failed to spawn child process “%s” (%s)"
 msgstr "L’exécution du processus fils « %s » a échoué (%s)"
 
-#: glib/gspawn.c:2283
+#: glib/gspawn.c:2370
 #, c-format
 msgid "Failed to fork (%s)"
 msgstr "Le clonage a échoué (%s)"
 
-#: glib/gspawn.c:2443 glib/gspawn-win32.c:381
+#: glib/gspawn.c:2530 glib/gspawn-win32.c:384
 #, c-format
 msgid "Failed to change to directory “%s” (%s)"
 msgstr "Le changement de répertoire « %s » a échoué (%s)"
 
-#: glib/gspawn.c:2453
+#: glib/gspawn.c:2540
 #, c-format
 msgid "Failed to execute child process “%s” (%s)"
 msgstr "L’exécution du processus fils « %s » a échoué (%s)"
 
-#: glib/gspawn.c:2463
+#: glib/gspawn.c:2550
+#, c-format
+msgid "Failed to open file to remap file descriptor (%s)"
+msgstr ""
+"L’ouverture du fichier pour réallouer le descripteur de fichier a échoué (%s)"
+
+#: glib/gspawn.c:2558
 #, c-format
-msgid "Failed to redirect output or input of child process (%s)"
+msgid "Failed to duplicate file descriptor for child process (%s)"
 msgstr ""
-"La redirection de la sortie ou de l’entrée du processus fils a échoué (%s)"
+"La duplication du descripteur de fichier pour le processus fils a échoué (%s)"
 
-#: glib/gspawn.c:2472
+#: glib/gspawn.c:2567
 #, c-format
 msgid "Failed to fork child process (%s)"
 msgstr "Le clonage du processus fils a échoué (%s)"
 
-#: glib/gspawn.c:2480
+#: glib/gspawn.c:2575
 #, c-format
-#| msgid "Failed to read data from child process (%s)"
 msgid "Failed to close file descriptor for child process (%s)"
 msgstr ""
 "La fermeture du descripteur de fichier pour le processus fils a échoué (%s)"
 
-#: glib/gspawn.c:2488
+#: glib/gspawn.c:2583
 #, c-format
 msgid "Unknown error executing child process “%s”"
 msgstr "Erreur inconnue à l’exécution du processus fils « %s »"
 
-#: glib/gspawn.c:2512
+#: glib/gspawn.c:2607
 #, c-format
 msgid "Failed to read enough data from child pid pipe (%s)"
 msgstr ""
 "Impossible de lire suffisamment de données depuis le tube du processus fils "
 "de pid (%s)"
 
-#: glib/gspawn-win32.c:294
+#: glib/gspawn-win32.c:297
 msgid "Failed to read data from child process"
 msgstr "La lecture des données depuis le processus fils a échoué"
 
-#: glib/gspawn-win32.c:387 glib/gspawn-win32.c:392 glib/gspawn-win32.c:511
+#: glib/gspawn-win32.c:390 glib/gspawn-win32.c:395 glib/gspawn-win32.c:521
 #, c-format
 msgid "Failed to execute child process (%s)"
 msgstr "L’exécution du processus fils a échoué (%s)"
 
-#: glib/gspawn-win32.c:461
+#: glib/gspawn-win32.c:400
+#, c-format
+msgid "Failed to dup() in child process (%s)"
+msgstr "L’appel à dup() dans le processus fils a échoué (%s)"
+
+#: glib/gspawn-win32.c:471
 #, c-format
 msgid "Invalid program name: %s"
 msgstr "Nom de programme non valide : %s"
 
-#: glib/gspawn-win32.c:471 glib/gspawn-win32.c:779
+#: glib/gspawn-win32.c:481 glib/gspawn-win32.c:807
 #, c-format
 msgid "Invalid string in argument vector at %d: %s"
 msgstr "Chaîne non valide dans le vecteur de paramètre à %d : %s"
 
-#: glib/gspawn-win32.c:482 glib/gspawn-win32.c:794
+#: glib/gspawn-win32.c:492 glib/gspawn-win32.c:823
 #, c-format
 msgid "Invalid string in environment: %s"
 msgstr "Chaîne non valide dans l’environnement : %s"
 
-#: glib/gspawn-win32.c:775
+#: glib/gspawn-win32.c:803
 #, c-format
 msgid "Invalid working directory: %s"
 msgstr "Répertoire de travail non valide : %s"
 
-#: glib/gspawn-win32.c:837
+#: glib/gspawn-win32.c:868
 #, c-format
 msgid "Failed to execute helper program (%s)"
 msgstr "L’exécution du programme d’aide a échoué (%s)"
 
-#: glib/gspawn-win32.c:1064
+#: glib/gspawn-win32.c:1096
 msgid ""
 "Unexpected error in g_io_channel_win32_poll() reading data from a child "
 "process"
@@ -6153,21 +6223,21 @@ msgstr ""
 "Erreur inattendue dans g_io_channel_win32_poll() lors de la lecture des "
 "données depuis un processus fils"
 
-#: glib/gstrfuncs.c:3345 glib/gstrfuncs.c:3447
+#: glib/gstrfuncs.c:3351 glib/gstrfuncs.c:3453
 msgid "Empty string is not a number"
 msgstr "Une chaîne vide n’est pas un nombre"
 
-#: glib/gstrfuncs.c:3369
+#: glib/gstrfuncs.c:3375
 #, c-format
 msgid "“%s” is not a signed number"
 msgstr "« %s » n’est pas un nom valide"
 
-#: glib/gstrfuncs.c:3379 glib/gstrfuncs.c:3483
+#: glib/gstrfuncs.c:3385 glib/gstrfuncs.c:3489
 #, c-format
 msgid "Number “%s” is out of bounds [%s, %s]"
 msgstr "Le nombre « %s » est hors limites [%s, %s]"
 
-#: glib/gstrfuncs.c:3473
+#: glib/gstrfuncs.c:3479
 #, c-format
 msgid "“%s” is not an unsigned number"
 msgstr "« %s » n’est pas un nombre non signé"
@@ -6228,175 +6298,175 @@ msgstr "L’URI n’est pas absolue, et aucune URI de base n’a été fournie"
 msgid "Missing ‘=’ and parameter value"
 msgstr "Caractère « = » et paramètre manquants"
 
-#: glib/gutf8.c:817
+#: glib/gutf8.c:832
 msgid "Failed to allocate memory"
 msgstr "Impossible d’allouer de la mémoire"
 
-#: glib/gutf8.c:950
+#: glib/gutf8.c:965
 msgid "Character out of range for UTF-8"
 msgstr "Caractère hors plage pour UTF-8"
 
-#: glib/gutf8.c:1051 glib/gutf8.c:1060 glib/gutf8.c:1190 glib/gutf8.c:1199
-#: glib/gutf8.c:1338 glib/gutf8.c:1435
+#: glib/gutf8.c:1067 glib/gutf8.c:1076 glib/gutf8.c:1206 glib/gutf8.c:1215
+#: glib/gutf8.c:1354 glib/gutf8.c:1451
 msgid "Invalid sequence in conversion input"
 msgstr "Séquence non valide dans l’entrée du convertisseur"
 
-#: glib/gutf8.c:1349 glib/gutf8.c:1446
+#: glib/gutf8.c:1365 glib/gutf8.c:1462
 msgid "Character out of range for UTF-16"
 msgstr "Caractère hors plage pour UTF-16"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2770
+#: glib/gutils.c:2849
 #, c-format
 msgid "%.1f kB"
 msgstr "%.1f ko"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2772
+#: glib/gutils.c:2851
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f Mo"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2774
+#: glib/gutils.c:2853
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f Go"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2776
+#: glib/gutils.c:2855
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f To"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2778
+#: glib/gutils.c:2857
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f Po"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2780
+#: glib/gutils.c:2859
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f Eo"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2784
+#: glib/gutils.c:2863
 #, c-format
 msgid "%.1f KiB"
 msgstr "%.1f Kio"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2786
+#: glib/gutils.c:2865
 #, c-format
 msgid "%.1f MiB"
 msgstr "%.1f Mio"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2788
+#: glib/gutils.c:2867
 #, c-format
 msgid "%.1f GiB"
 msgstr "%.1f Gio"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2790
+#: glib/gutils.c:2869
 #, c-format
 msgid "%.1f TiB"
 msgstr "%.1f Tio"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2792
+#: glib/gutils.c:2871
 #, c-format
 msgid "%.1f PiB"
 msgstr "%.1f Pio"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2794
+#: glib/gutils.c:2873
 #, c-format
 msgid "%.1f EiB"
 msgstr "%.1f Eio"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2798
+#: glib/gutils.c:2877
 #, c-format
 msgid "%.1f kb"
 msgstr "%.1f kb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2800
+#: glib/gutils.c:2879
 #, c-format
 msgid "%.1f Mb"
 msgstr "%.1f Mb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2802
+#: glib/gutils.c:2881
 #, c-format
 msgid "%.1f Gb"
 msgstr "%.1f Gb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2804
+#: glib/gutils.c:2883
 #, c-format
 msgid "%.1f Tb"
 msgstr "%.1f Tb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2806
+#: glib/gutils.c:2885
 #, c-format
 msgid "%.1f Pb"
 msgstr "%.1f Pb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2808
+#: glib/gutils.c:2887
 #, c-format
 msgid "%.1f Eb"
 msgstr "%.1f Eb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2812
+#: glib/gutils.c:2891
 #, c-format
 msgid "%.1f Kib"
 msgstr "%.1f Kib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2814
+#: glib/gutils.c:2893
 #, c-format
 msgid "%.1f Mib"
 msgstr "%.1f Mib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2816
+#: glib/gutils.c:2895
 #, c-format
 msgid "%.1f Gib"
 msgstr "%.1f Gib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2818
+#: glib/gutils.c:2897
 #, c-format
 msgid "%.1f Tib"
 msgstr "%.1f Tib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2820
+#: glib/gutils.c:2899
 #, c-format
 msgid "%.1f Pib"
 msgstr "%.1f Pib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2822
+#: glib/gutils.c:2901
 #, c-format
 msgid "%.1f Eib"
 msgstr "%.1f Eib"
 
-#: glib/gutils.c:2856 glib/gutils.c:2973
+#: glib/gutils.c:2935 glib/gutils.c:3052
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
 msgstr[0] "%u octet"
 msgstr[1] "%u octets"
 
-#: glib/gutils.c:2860
+#: glib/gutils.c:2939
 #, c-format
 msgid "%u bit"
 msgid_plural "%u bits"
@@ -6404,7 +6474,7 @@ msgstr[0] "%u bit"
 msgstr[1] "%u bits"
 
 #. Translators: the %s in "%s bytes" will always be replaced by a number.
-#: glib/gutils.c:2927
+#: glib/gutils.c:3006
 #, c-format
 msgid "%s byte"
 msgid_plural "%s bytes"
@@ -6412,7 +6482,7 @@ msgstr[0] "%s octet"
 msgstr[1] "%s octets"
 
 #. Translators: the %s in "%s bits" will always be replaced by a number.
-#: glib/gutils.c:2932
+#: glib/gutils.c:3011
 #, c-format
 msgid "%s bit"
 msgid_plural "%s bits"
@@ -6424,36 +6494,40 @@ msgstr[1] "%s bits"
 #. * compatibility.  Users will not see this string unless a program is using this deprecated function.
 #. * Please translate as literally as possible.
 #.
-#: glib/gutils.c:2986
+#: glib/gutils.c:3065
 #, c-format
 msgid "%.1f KB"
 msgstr "%.1f Ko"
 
-#: glib/gutils.c:2991
+#: glib/gutils.c:3070
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f Mo"
 
-#: glib/gutils.c:2996
+#: glib/gutils.c:3075
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f Go"
 
-#: glib/gutils.c:3001
+#: glib/gutils.c:3080
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f To"
 
-#: glib/gutils.c:3006
+#: glib/gutils.c:3085
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f Po"
 
-#: glib/gutils.c:3011
+#: glib/gutils.c:3090
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f Eo"
 
+#~ msgid "Failed to redirect output or input of child process (%s)"
+#~ msgstr ""
+#~ "La redirection de la sortie ou de l’entrée du processus fils a échoué (%s)"
+
 #~ msgid "Unknown error on connect"
 #~ msgstr "Erreur inconnue à la connexion"
 
index 9566877..6a17610 100644 (file)
--- a/po/fur.po
+++ b/po/fur.po
@@ -7,16 +7,29 @@ msgid ""
 msgstr ""
 "Project-Id-Version: glib master\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/glib/issues\n"
-"POT-Creation-Date: 2021-01-12 18:10+0000\n"
-"PO-Revision-Date: 2021-01-17 16:07+0100\n"
+"POT-Creation-Date: 2022-03-07 18:49+0000\n"
+"PO-Revision-Date: 2022-03-08 05:00+0000\n"
 "Last-Translator: Fabio Tomat <f.t.public@gmail.com>\n"
-"Language-Team: Friulian <fur@li.org>\n"
+"Language-Team: Friulian <f.t.public@gmail.com>\n"
 "Language: fur\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
-"X-Generator: Poedit 2.4.2\n"
+"X-Editor: HaiPO 1.0 Release\n"
+"X-Generator: Poedit 3.0\n"
+
+#: gio/gappinfo.c:333
+msgid "Setting default applications not supported yet"
+msgstr ""
+"No je ancjemò supuartade la pussibilitât di stabilî lis aplicazions "
+"predefinidis"
+
+#: gio/gappinfo.c:366
+msgid "Setting application as last used for type not supported yet"
+msgstr ""
+"No je ancjemò supuartade la pussibilitât di stabilî la aplicazion come chê "
+"ultime doprade pal gjenar."
 
 #: gio/gapplication.c:500
 msgid "GApplication options"
@@ -40,11 +53,12 @@ msgid "Replace the running instance"
 msgstr "Sostituìs la istance in esecuzion"
 
 #: gio/gapplication-tool.c:45 gio/gapplication-tool.c:46 gio/gio-tool.c:227
-#: gio/gresource-tool.c:493 gio/gsettings-tool.c:567
+#: gio/gresource-tool.c:494 gio/gsettings-tool.c:584
 msgid "Print help"
 msgstr "Stampe jutori"
 
-#: gio/gapplication-tool.c:47 gio/gresource-tool.c:494 gio/gresource-tool.c:562
+#: gio/gapplication-tool.c:47 gio/gresource-tool.c:495
+#: gio/gresource-tool.c:563
 msgid "[COMMAND]"
 msgstr "[COMANT]"
 
@@ -52,97 +66,98 @@ msgstr "[COMANT]"
 msgid "Print version"
 msgstr "Stampe version"
 
-#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:573
+#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:590
 msgid "Print version information and exit"
 msgstr "Stampe informazions su la version e jes"
 
-#: gio/gapplication-tool.c:52
+#: gio/gapplication-tool.c:53
 msgid "List applications"
 msgstr "Liste aplicazions"
 
-#: gio/gapplication-tool.c:53
+#: gio/gapplication-tool.c:54
 msgid "List the installed D-Bus activatable applications (by .desktop files)"
 msgstr ""
-"Liste lis aplicazion instaladis che si puedin ativâ di D-Bus (par file ."
-"desktop)"
+"Liste lis aplicazion instaladis che si puedin ativâ di D-Bus (par file "
+".desktop)"
 
-#: gio/gapplication-tool.c:55
+#: gio/gapplication-tool.c:57
 msgid "Launch an application"
 msgstr "Invie une aplicazion"
 
-#: gio/gapplication-tool.c:56
+#: gio/gapplication-tool.c:58
 msgid "Launch the application (with optional files to open)"
 msgstr "Invie la aplicazion (cun file opzionâi di vierzi)"
 
-#: gio/gapplication-tool.c:57
+#: gio/gapplication-tool.c:59
 msgid "APPID [FILE…]"
 msgstr "APPID [FILE…]"
 
-#: gio/gapplication-tool.c:59
+#: gio/gapplication-tool.c:61
 msgid "Activate an action"
 msgstr "Ative une azion"
 
-#: gio/gapplication-tool.c:60
+#: gio/gapplication-tool.c:62
 msgid "Invoke an action on the application"
 msgstr "Invoche une azion su la aplicazion"
 
-#: gio/gapplication-tool.c:61
+#: gio/gapplication-tool.c:63
 msgid "APPID ACTION [PARAMETER]"
 msgstr "APPID AZION [PARAMETRI]"
 
-#: gio/gapplication-tool.c:63
+#: gio/gapplication-tool.c:65
 msgid "List available actions"
 msgstr "Liste azions disponibilis"
 
-#: gio/gapplication-tool.c:64
+#: gio/gapplication-tool.c:66
 msgid "List static actions for an application (from .desktop file)"
 msgstr "Liste lis azions statichis par une aplicazion (dal file .desktop)"
 
-#: gio/gapplication-tool.c:65 gio/gapplication-tool.c:71
+#: gio/gapplication-tool.c:67 gio/gapplication-tool.c:73
 msgid "APPID"
 msgstr "APPID"
 
-#: gio/gapplication-tool.c:70 gio/gapplication-tool.c:133 gio/gdbus-tool.c:106
+#: gio/gapplication-tool.c:72 gio/gapplication-tool.c:135 gio/gdbus-tool.c:106
 #: gio/gio-tool.c:224
 msgid "COMMAND"
 msgstr "COMANT"
 
-#: gio/gapplication-tool.c:70
+#: gio/gapplication-tool.c:72
 msgid "The command to print detailed help for"
 msgstr "Il comant che di chel stampâ il jutori detaiât"
 
-#: gio/gapplication-tool.c:71
+#: gio/gapplication-tool.c:73
 msgid "Application identifier in D-Bus format (eg: org.example.viewer)"
 msgstr ""
 "Identificadôr aplicazion tal formât D-Bus (p.e. org.esempli.visualizadôr)"
 
-#: gio/gapplication-tool.c:72 gio/glib-compile-resources.c:738
-#: gio/glib-compile-resources.c:744 gio/glib-compile-resources.c:772
-#: gio/gresource-tool.c:500 gio/gresource-tool.c:566
+#: gio/gapplication-tool.c:74 gio/glib-compile-resources.c:820
+#: gio/glib-compile-resources.c:826 gio/glib-compile-resources.c:855
+#: gio/gresource-tool.c:501 gio/gresource-tool.c:567
 msgid "FILE"
 msgstr "FILE"
 
-#: gio/gapplication-tool.c:72
+#: gio/gapplication-tool.c:74
 msgid "Optional relative or absolute filenames, or URIs to open"
 msgstr "Nons di file assolûts o relatîfs opzionâi opûr URI di vierzi"
 
-#: gio/gapplication-tool.c:73
+#: gio/gapplication-tool.c:75
 msgid "ACTION"
 msgstr "AZION"
 
-#: gio/gapplication-tool.c:73
+#: gio/gapplication-tool.c:75
 msgid "The action name to invoke"
 msgstr "La azion di invocâ"
 
-#: gio/gapplication-tool.c:74
+#: gio/gapplication-tool.c:76
 msgid "PARAMETER"
 msgstr "PARAMETRI"
 
-#: gio/gapplication-tool.c:74
+#: gio/gapplication-tool.c:76
 msgid "Optional parameter to the action invocation, in GVariant format"
 msgstr "Parametri opzionâl pe invocazion de azion, in formât GVariant"
 
-#: gio/gapplication-tool.c:96 gio/gresource-tool.c:531 gio/gsettings-tool.c:659
+#: gio/gapplication-tool.c:98 gio/gresource-tool.c:532
+#: gio/gsettings-tool.c:676
 #, c-format
 msgid ""
 "Unknown command %s\n"
@@ -151,26 +166,26 @@ msgstr ""
 "Comant no cognossût %s\n"
 "\n"
 
-#: gio/gapplication-tool.c:101
+#: gio/gapplication-tool.c:103
 msgid "Usage:\n"
 msgstr "Ûs:\n"
 
-#: gio/gapplication-tool.c:114 gio/gresource-tool.c:556
-#: gio/gsettings-tool.c:694
+#: gio/gapplication-tool.c:116 gio/gresource-tool.c:557
+#: gio/gsettings-tool.c:711
 msgid "Arguments:\n"
 msgstr "Argoments:\n"
 
-#: gio/gapplication-tool.c:133 gio/gio-tool.c:224
+#: gio/gapplication-tool.c:135 gio/gio-tool.c:224
 msgid "[ARGS…]"
 msgstr "[ARGS…]"
 
-#: gio/gapplication-tool.c:134
+#: gio/gapplication-tool.c:136
 #, c-format
 msgid "Commands:\n"
 msgstr "Comants:\n"
 
 #. Translators: do not translate 'help', but please translate 'COMMAND'.
-#: gio/gapplication-tool.c:146
+#: gio/gapplication-tool.c:148
 #, c-format
 msgid ""
 "Use “%s help COMMAND” to get detailed help.\n"
@@ -179,7 +194,7 @@ msgstr ""
 "Dopre “%s help COMANT” par vê un jutori detaiât.\n"
 "\n"
 
-#: gio/gapplication-tool.c:165
+#: gio/gapplication-tool.c:167
 #, c-format
 msgid ""
 "%s command requires an application id to directly follow\n"
@@ -188,13 +203,13 @@ msgstr ""
 "Il comant %s al domande un id di aplicazion di seguî in maniere direte\n"
 "\n"
 
-#: gio/gapplication-tool.c:171
+#: gio/gapplication-tool.c:173
 #, c-format
 msgid "invalid application id: “%s”\n"
 msgstr "id aplicazion no valit: “%s”\n"
 
 #. Translators: %s is replaced with a command name like 'list-actions'
-#: gio/gapplication-tool.c:182
+#: gio/gapplication-tool.c:184
 #, c-format
 msgid ""
 "“%s” takes no arguments\n"
@@ -203,21 +218,21 @@ msgstr ""
 "“%s” no si spiete nissun argoment\n"
 "\n"
 
-#: gio/gapplication-tool.c:266
+#: gio/gapplication-tool.c:268
 #, c-format
 msgid "unable to connect to D-Bus: %s\n"
 msgstr "impussibil conetisi al D-Bus: %s\n"
 
-#: gio/gapplication-tool.c:286
+#: gio/gapplication-tool.c:288
 #, c-format
 msgid "error sending %s message to application: %s\n"
 msgstr "erôr tal inviâ il messaç %s ae aplicazion: %s\n"
 
-#: gio/gapplication-tool.c:317
+#: gio/gapplication-tool.c:319
 msgid "action name must be given after application id\n"
 msgstr "si scugne furnî il non de azion dopo il id de aplicazion\n"
 
-#: gio/gapplication-tool.c:325
+#: gio/gapplication-tool.c:327
 #, c-format
 msgid ""
 "invalid action name: “%s”\n"
@@ -226,25 +241,25 @@ msgstr ""
 "non azion no valit: “%s”\n"
 "i nons des azions a scugnin consisti nome di alfanumerics, “-” e “.”\n"
 
-#: gio/gapplication-tool.c:344
+#: gio/gapplication-tool.c:346
 #, c-format
 msgid "error parsing action parameter: %s\n"
 msgstr "erôr tal analizâ il parametri de azion: %s\n"
 
-#: gio/gapplication-tool.c:356
+#: gio/gapplication-tool.c:358
 msgid "actions accept a maximum of one parameter\n"
 msgstr "lis azions a acetin un massim di un parametri\n"
 
-#: gio/gapplication-tool.c:411
+#: gio/gapplication-tool.c:413
 msgid "list-actions command takes only the application id"
 msgstr "il comant list-actions al vûl dome il id de aplicazion"
 
-#: gio/gapplication-tool.c:421
+#: gio/gapplication-tool.c:423
 #, c-format
 msgid "unable to find desktop file for application %s\n"
 msgstr "impussibil cjatâ il file scritori pe aplicazion %s\n"
 
-#: gio/gapplication-tool.c:466
+#: gio/gapplication-tool.c:468
 #, c-format
 msgid ""
 "unrecognised command: %s\n"
@@ -254,8 +269,8 @@ msgstr ""
 "\n"
 
 #: gio/gbufferedinputstream.c:420 gio/gbufferedinputstream.c:498
-#: gio/ginputstream.c:179 gio/ginputstream.c:379 gio/ginputstream.c:617
-#: gio/ginputstream.c:1019 gio/goutputstream.c:223 gio/goutputstream.c:1049
+#: gio/ginputstream.c:179 gio/ginputstream.c:379 gio/ginputstream.c:648
+#: gio/ginputstream.c:1050 gio/goutputstream.c:223 gio/goutputstream.c:1049
 #: gio/gpollableinputstream.c:205 gio/gpollableoutputstream.c:277
 #, c-format
 msgid "Too large count value passed to %s"
@@ -266,11 +281,11 @@ msgstr "Valôr di conte passât a %s masse grant"
 msgid "Seek not supported on base stream"
 msgstr "Ricercje no supuartade sul flus di base"
 
-#: gio/gbufferedinputstream.c:937
+#: gio/gbufferedinputstream.c:938
 msgid "Cannot truncate GBufferedInputStream"
 msgstr "Impussibil cjonçâ GBufferedInputStream"
 
-#: gio/gbufferedinputstream.c:982 gio/ginputstream.c:1208 gio/giostream.c:300
+#: gio/gbufferedinputstream.c:983 gio/ginputstream.c:1239 gio/giostream.c:300
 #: gio/goutputstream.c:2198
 msgid "Stream is already closed"
 msgstr "Il flus al è za sierât"
@@ -279,7 +294,7 @@ msgstr "Il flus al è za sierât"
 msgid "Truncate not supported on base stream"
 msgstr "Cjonçâ no supuartât sul flus di base"
 
-#: gio/gcancellable.c:319 gio/gdbusconnection.c:1864 gio/gdbusprivate.c:1416
+#: gio/gcancellable.c:319 gio/gdbusconnection.c:1873 gio/gdbusprivate.c:1418
 #: gio/gsimpleasyncresult.c:871 gio/gsimpleasyncresult.c:897
 #, c-format
 msgid "Operation was cancelled"
@@ -298,33 +313,33 @@ msgid "Not enough space in destination"
 msgstr "No vonde spazi te destinazion"
 
 #: gio/gcharsetconverter.c:342 gio/gdatainputstream.c:848
-#: gio/gdatainputstream.c:1261 glib/gconvert.c:448 glib/gconvert.c:878
-#: glib/giochannel.c:1564 glib/giochannel.c:1606 glib/giochannel.c:2461
-#: glib/gutf8.c:875 glib/gutf8.c:1328
+#: gio/gdatainputstream.c:1266 glib/gconvert.c:449 glib/gconvert.c:879
+#: glib/giochannel.c:1573 glib/giochannel.c:1615 glib/giochannel.c:2470
+#: glib/gutf8.c:890 glib/gutf8.c:1344
 msgid "Invalid byte sequence in conversion input"
 msgstr "Secuence byte no valide tal input di conversion"
 
-#: gio/gcharsetconverter.c:347 glib/gconvert.c:456 glib/gconvert.c:792
-#: glib/giochannel.c:1571 glib/giochannel.c:2473
+#: gio/gcharsetconverter.c:347 glib/gconvert.c:457 glib/gconvert.c:793
+#: glib/giochannel.c:1580 glib/giochannel.c:2482
 #, c-format
 msgid "Error during conversion: %s"
 msgstr "Erôr dilunc la conversion: %s"
 
-#: gio/gcharsetconverter.c:445 gio/gsocket.c:1143
+#: gio/gcharsetconverter.c:445 gio/gsocket.c:1147
 msgid "Cancellable initialization not supported"
 msgstr "Inizializazion anulabile no supuartade"
 
-#: gio/gcharsetconverter.c:456 glib/gconvert.c:321 glib/giochannel.c:1392
+#: gio/gcharsetconverter.c:456 glib/gconvert.c:322 glib/giochannel.c:1401
 #, c-format
 msgid "Conversion from character set “%s” to “%s” is not supported"
 msgstr "Conversion de cumbinazion di caratars “%s” a “%s” no je supuartade"
 
-#: gio/gcharsetconverter.c:460 glib/gconvert.c:325
+#: gio/gcharsetconverter.c:460 glib/gconvert.c:326
 #, c-format
 msgid "Could not open converter from “%s” to “%s”"
 msgstr "Impussibil vierzi il convertidôr di “%s” a “%s”"
 
-#: gio/gcontenttype.c:452
+#: gio/gcontenttype.c:470
 #, c-format
 msgid "%s type"
 msgstr "gjenar %s"
@@ -338,23 +353,23 @@ msgstr "Gjenar no cognossût"
 msgid "%s filetype"
 msgstr "gjenar di file %s"
 
-#: gio/gcredentials.c:323
+#: gio/gcredentials.c:335
 msgid "GCredentials contains invalid data"
 msgstr "GCredentials al conten dâts no valits"
 
-#: gio/gcredentials.c:383 gio/gcredentials.c:667
+#: gio/gcredentials.c:395 gio/gcredentials.c:686
 msgid "GCredentials is not implemented on this OS"
 msgstr "GCredentials nol è implementât in chest SO"
 
-#: gio/gcredentials.c:538 gio/gcredentials.c:556
+#: gio/gcredentials.c:550 gio/gcredentials.c:568
 msgid "There is no GCredentials support for your platform"
 msgstr "Nol esist il supuart par GCredentials pe tô plateforme"
 
-#: gio/gcredentials.c:607
+#: gio/gcredentials.c:626
 msgid "GCredentials does not contain a process ID on this OS"
 msgstr "GCredentials nol conten un ID  di procès su chest SO"
 
-#: gio/gcredentials.c:661
+#: gio/gcredentials.c:680
 msgid "Credentials spoofing is not possible on this OS"
 msgstr "Imbroi des credenziâls (spoofing) nol è pussibil su chest SO"
 
@@ -362,18 +377,18 @@ msgstr "Imbroi des credenziâls (spoofing) nol è pussibil su chest SO"
 msgid "Unexpected early end-of-stream"
 msgstr "Fin-dal-flus premadûr inspietât"
 
-#: gio/gdbusaddress.c:159 gio/gdbusaddress.c:233 gio/gdbusaddress.c:322
+#: gio/gdbusaddress.c:162 gio/gdbusaddress.c:236 gio/gdbusaddress.c:325
 #, c-format
 msgid "Unsupported key “%s” in address entry “%s”"
 msgstr "Clâf “%s” no supuartade inte vôs di direzion “%s”"
 
-#: gio/gdbusaddress.c:172
+#: gio/gdbusaddress.c:175
 #, c-format
 msgid "Meaningless key/value pair combination in address entry “%s”"
 msgstr ""
 "Cumbinazion de cubie clâf/valôr cence significât inte vôs di direzion “%s”"
 
-#: gio/gdbusaddress.c:181
+#: gio/gdbusaddress.c:184
 #, c-format
 msgid ""
 "Address “%s” is invalid (need exactly one of path, dir, tmpdir, or abstract "
@@ -382,30 +397,29 @@ msgstr ""
 "Direzion “%s” no valide (e covente juste un tra une clâf astrate, tmpdir, "
 "dir o percors)"
 
-#: gio/gdbusaddress.c:248 gio/gdbusaddress.c:259 gio/gdbusaddress.c:274
-#: gio/gdbusaddress.c:337 gio/gdbusaddress.c:348
-#, fuzzy, c-format
-#| msgid "Error in address “%s” — the port attribute is malformed"
+#: gio/gdbusaddress.c:251 gio/gdbusaddress.c:262 gio/gdbusaddress.c:277
+#: gio/gdbusaddress.c:340 gio/gdbusaddress.c:351
+#, c-format
 msgid "Error in address “%s” — the “%s” attribute is malformed"
-msgstr "Erôr inte direzion “%s” — l'atribût puarte al è malformât"
+msgstr "Erôr te direzion “%s” — l'atribût “%s” al è malformât"
 
-#: gio/gdbusaddress.c:418 gio/gdbusaddress.c:682
+#: gio/gdbusaddress.c:421 gio/gdbusaddress.c:680
 #, c-format
 msgid "Unknown or unsupported transport “%s” for address “%s”"
 msgstr "Traspuart “%s” no cognossût o no supuartât pe direzion “%s”"
 
-#: gio/gdbusaddress.c:462
+#: gio/gdbusaddress.c:465
 #, c-format
 msgid "Address element “%s” does not contain a colon (:)"
 msgstr "L'element direzion “%s” nol conten un doi ponts (:)"
 
-#: gio/gdbusaddress.c:471
+#: gio/gdbusaddress.c:474
 #, c-format
 msgid "Transport name in address element “%s” must not be empty"
 msgstr ""
 "Il non dal traspuart intal element de direzion “%s” nol à di jessi vueit"
 
-#: gio/gdbusaddress.c:492
+#: gio/gdbusaddress.c:495
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” does not contain an equal "
@@ -414,22 +428,22 @@ msgstr ""
 "Cubie clâf/valôr %d, “%s”, intal element direzion “%s” no conten un segn "
 "uguâl"
 
-#: gio/gdbusaddress.c:503
+#: gio/gdbusaddress.c:506
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” must not have an empty key"
 msgstr ""
-"Cubie clâf/valôr %d, “%s”, intal element direzion “%s” nol à di contignî une "
-"clâf vueide"
+"Cubie clâf/valôr %d, “%s”, intal element direzion “%s” nol à di contignî une"
+" clâf vueide"
 
-#: gio/gdbusaddress.c:517
+#: gio/gdbusaddress.c:520
 #, c-format
 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 ""
 
-#: gio/gdbusaddress.c:589
+#: gio/gdbusaddress.c:588
 #, c-format
 msgid ""
 "Error in address “%s” — the unix transport requires exactly one of the keys "
@@ -438,91 +452,92 @@ msgstr ""
 "Erôr inte direzion “%s” — il traspuart unix al domande di stabilî juste une "
 "des clâfs tra “path” o “abstract”"
 
-#: gio/gdbusaddress.c:625
+#: gio/gdbusaddress.c:623
 #, c-format
 msgid "Error in address “%s” — the host attribute is missing or malformed"
 msgstr "Erôr inte direzion “%s” — l'atribût host al mancje o al è malformât"
 
-#: gio/gdbusaddress.c:639
+#: gio/gdbusaddress.c:637
 #, c-format
 msgid "Error in address “%s” — the port attribute is missing or malformed"
 msgstr "Erôr inte direzion “%s” — l'atribût puarte al mancje o al è malformât"
 
-#: gio/gdbusaddress.c:653
+#: gio/gdbusaddress.c:651
 #, 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 ""
 "Erôr te direzion “%s” — al mancje, o al è malformât, l'atribût dal file dal "
 "numar doprât une sole volte"
 
-#: gio/gdbusaddress.c:674
+#: gio/gdbusaddress.c:672
 msgid "Error auto-launching: "
 msgstr "Erôr tal inviâ in automatic: "
 
-#: gio/gdbusaddress.c:727
+#: gio/gdbusaddress.c:725
 #, c-format
 msgid "Error opening nonce file “%s”: %s"
 msgstr "Erôr tal vierzi il file dal numar doprât une sole volte “%s”: %s"
 
-#: gio/gdbusaddress.c:746
+#: gio/gdbusaddress.c:744
 #, c-format
 msgid "Error reading from nonce file “%s”: %s"
 msgstr "Erôr tal lei dal file dal numar doprât une sole volte “%s”: %s"
 
-#: gio/gdbusaddress.c:755
+#: gio/gdbusaddress.c:753
 #, c-format
 msgid "Error reading from nonce file “%s”, expected 16 bytes, got %d"
 msgstr ""
 "Erôr tal lei dal file dal numar doprât une sole volte “%s”, si spietavin 16 "
 "byte, si à vût %d"
 
-#: gio/gdbusaddress.c:773
+#: gio/gdbusaddress.c:771
 #, c-format
 msgid "Error writing contents of nonce file “%s” to stream:"
 msgstr ""
 "Erôr tal scrivi sul flus i contignûts dal file dal numar doprât une sole "
 "volte “%s”:"
 
-#: gio/gdbusaddress.c:988
+#: gio/gdbusaddress.c:986
 msgid "The given address is empty"
 msgstr "La direzion furnide e je vueide"
 
-#: gio/gdbusaddress.c:1101
+#: gio/gdbusaddress.c:1099
 #, c-format
-msgid "Cannot spawn a message bus when setuid"
+msgid "Cannot spawn a message bus when AT_SECURE is set"
 msgstr ""
 
-#: gio/gdbusaddress.c:1108
+#: gio/gdbusaddress.c:1106
 msgid "Cannot spawn a message bus without a machine-id: "
 msgstr ""
 
-#: gio/gdbusaddress.c:1115
+#: gio/gdbusaddress.c:1113
 #, c-format
 msgid "Cannot autolaunch D-Bus without X11 $DISPLAY"
 msgstr "Impussibil inviâ in automatic D-Bus cence $DISPLAY X11"
 
-#: gio/gdbusaddress.c:1157
+#: gio/gdbusaddress.c:1155
 #, c-format
 msgid "Error spawning command line “%s”: "
 msgstr ""
 
-#: gio/gdbusaddress.c:1226
+#: gio/gdbusaddress.c:1224
 #, c-format
 msgid "Cannot determine session bus address (not implemented for this OS)"
 msgstr ""
 "Impussibil determinâ la direzion dal bus di session (no implementade par "
 "chest SO)"
 
-#: gio/gdbusaddress.c:1367 gio/gdbusconnection.c:7224
+#: gio/gdbusaddress.c:1373 gio/gdbusconnection.c:7334
 #, c-format
 msgid ""
-"Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
-"— unknown value “%s”"
+"Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable"
+" — unknown value “%s”"
 msgstr ""
 "Impussibil determinâ la direzion dal bus de variabile di ambient "
 "DBUS_STARTER_BUS_TYPE — valôr “%s” no cognossût"
 
-#: gio/gdbusaddress.c:1376 gio/gdbusconnection.c:7233
+#: gio/gdbusaddress.c:1382 gio/gdbusconnection.c:7343
 msgid ""
 "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
 "variable is not set"
@@ -530,7 +545,7 @@ msgstr ""
 "Impussibil determinâ la direzion dal bus parcè che la variabile di ambient "
 "DBUS_STARTER_BUS_TYPE no je stabilide"
 
-#: gio/gdbusaddress.c:1386
+#: gio/gdbusaddress.c:1392
 #, c-format
 msgid "Unknown bus type %d"
 msgstr "Gjenar di bus %d no cognossût"
@@ -546,21 +561,26 @@ msgstr "Mancjance di contignût inspietade cirint di lei (in sigurece) une rie"
 #: gio/gdbusauth.c:482
 #, c-format
 msgid ""
-"Exhausted all available authentication mechanisms (tried: %s) (available: %s)"
+"Exhausted all available authentication mechanisms (tried: %s) (available: "
+"%s)"
 msgstr ""
 "Esaurîts ducj i mecanisims di autenticazion disponibii (provâts: %s) "
 "(disponibii: %s)"
 
-#: gio/gdbusauth.c:1167
+#: gio/gdbusauth.c:1171
+msgid "User IDs must be the same for peer and server"
+msgstr ""
+
+#: gio/gdbusauth.c:1183
 msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
 msgstr "Anulât vie GDBusAuthObserver::authorize-authenticated-peer"
 
-#: gio/gdbusauthmechanismsha1.c:298
+#: gio/gdbusauthmechanismsha1.c:300
 #, c-format
 msgid "Error when getting information for directory “%s”: %s"
 msgstr "Erôr tal vê informazions pe cartele “%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:313
+#: gio/gdbusauthmechanismsha1.c:315
 #, c-format
 msgid ""
 "Permissions on directory “%s” are malformed. Expected mode 0700, got 0%o"
@@ -568,32 +588,32 @@ msgstr ""
 "I permès su pe cartele “%s” no son valits. Si spietave modalitât 0700, vût "
 "0%o"
 
-#: gio/gdbusauthmechanismsha1.c:346 gio/gdbusauthmechanismsha1.c:357
+#: gio/gdbusauthmechanismsha1.c:348 gio/gdbusauthmechanismsha1.c:359
 #, c-format
 msgid "Error creating directory “%s”: %s"
 msgstr "Erôr tal creâ la cartele “%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:359 gio/gfile.c:1048 gio/gfile.c:1286
-#: gio/gfile.c:1424 gio/gfile.c:1662 gio/gfile.c:1717 gio/gfile.c:1775
-#: gio/gfile.c:1859 gio/gfile.c:1916 gio/gfile.c:1980 gio/gfile.c:2035
-#: gio/gfile.c:3749 gio/gfile.c:3804 gio/gfile.c:4097 gio/gfile.c:4567
-#: gio/gfile.c:4978 gio/gfile.c:5063 gio/gfile.c:5153 gio/gfile.c:5250
-#: gio/gfile.c:5337 gio/gfile.c:5438 gio/gfile.c:8148 gio/gfile.c:8238
-#: gio/gfile.c:8322 gio/win32/gwinhttpfile.c:453
+#: gio/gdbusauthmechanismsha1.c:361 gio/gfile.c:1080 gio/gfile.c:1318
+#: gio/gfile.c:1456 gio/gfile.c:1694 gio/gfile.c:1749 gio/gfile.c:1807
+#: gio/gfile.c:1891 gio/gfile.c:1948 gio/gfile.c:2012 gio/gfile.c:2067
+#: gio/gfile.c:3772 gio/gfile.c:3912 gio/gfile.c:4205 gio/gfile.c:4675
+#: gio/gfile.c:5086 gio/gfile.c:5171 gio/gfile.c:5261 gio/gfile.c:5358
+#: gio/gfile.c:5445 gio/gfile.c:5546 gio/gfile.c:8375 gio/gfile.c:8465
+#: gio/gfile.c:8549 gio/win32/gwinhttpfile.c:453
 msgid "Operation not supported"
 msgstr "Operazion no supuartade"
 
-#: gio/gdbusauthmechanismsha1.c:402
+#: gio/gdbusauthmechanismsha1.c:404
 #, c-format
 msgid "Error opening keyring “%s” for reading: "
 msgstr "Erôr tal lei il puarteclâfs “%s” pe leture: "
 
-#: gio/gdbusauthmechanismsha1.c:425 gio/gdbusauthmechanismsha1.c:747
+#: gio/gdbusauthmechanismsha1.c:427 gio/gdbusauthmechanismsha1.c:769
 #, c-format
 msgid "Line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr "La rie %d dal puarteclâfs su “%s” cun contignût “%s” e je malformade"
 
-#: gio/gdbusauthmechanismsha1.c:439 gio/gdbusauthmechanismsha1.c:761
+#: gio/gdbusauthmechanismsha1.c:441 gio/gdbusauthmechanismsha1.c:783
 #, c-format
 msgid ""
 "First token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -601,65 +621,66 @@ msgstr ""
 "Il prin token de rie %d dal puarteclâfs su “%s” cul contignût “%s” al è "
 "malformât"
 
-#: gio/gdbusauthmechanismsha1.c:453 gio/gdbusauthmechanismsha1.c:775
+#: gio/gdbusauthmechanismsha1.c:455 gio/gdbusauthmechanismsha1.c:797
 #, c-format
 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 ""
 "Il secont token de rie %d dal puarteclâfs su “%s” cul contignût “%s” al è "
 "malformât"
 
-#: gio/gdbusauthmechanismsha1.c:477
+#: gio/gdbusauthmechanismsha1.c:479
 #, c-format
 msgid "Didn’t find cookie with id %d in the keyring at “%s”"
 msgstr "No si à cjatât il cookie cul id %d intal puarteclâfs su “%s”"
 
-#: gio/gdbusauthmechanismsha1.c:523
+#: gio/gdbusauthmechanismsha1.c:536
 #, c-format
 msgid "Error creating lock file “%s”: %s"
 msgstr "Erôr tal creâ il file di bloc “%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:587
+#: gio/gdbusauthmechanismsha1.c:609
 #, c-format
 msgid "Error deleting stale lock file “%s”: %s"
 msgstr "Erôr tal eliminâ il file di bloc passât “%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:626
+#: gio/gdbusauthmechanismsha1.c:648
 #, c-format
 msgid "Error closing (unlinked) lock file “%s”: %s"
 msgstr "Erôr tal sierâ il file di bloc (cence colegament) “%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:637
+#: gio/gdbusauthmechanismsha1.c:659
 #, c-format
 msgid "Error unlinking lock file “%s”: %s"
 msgstr "Erôr tal discolegâ il file di bloc “%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:714
+#: gio/gdbusauthmechanismsha1.c:736
 #, c-format
 msgid "Error opening keyring “%s” for writing: "
 msgstr "Erôr tal vierzi il puarteclâfs “%s” pe scriture: "
 
-#: gio/gdbusauthmechanismsha1.c:908
+#: gio/gdbusauthmechanismsha1.c:930
 #, c-format
 msgid "(Additionally, releasing the lock for “%s” also failed: %s) "
 msgstr "(In plui no si è rivâts ancje a molâ il bloc par “%s”: %s) "
 
-#: gio/gdbusconnection.c:595 gio/gdbusconnection.c:2397
+#: gio/gdbusconnection.c:604 gio/gdbusconnection.c:2418
 msgid "The connection is closed"
 msgstr "La conession e je sierade"
 
-#: gio/gdbusconnection.c:1894
+#: gio/gdbusconnection.c:1903
 msgid "Timeout was reached"
 msgstr "Si à passât il timp massim"
 
-#: gio/gdbusconnection.c:2519
+#: gio/gdbusconnection.c:2541
 msgid ""
 "Unsupported flags encountered when constructing a client-side connection"
 msgstr ""
 "Si à intivât opzions no supuartadis cuant che si costruive une conession de "
 "bande dal client"
 
-#: gio/gdbusconnection.c:4170 gio/gdbusconnection.c:4517
+#: gio/gdbusconnection.c:4269 gio/gdbusconnection.c:4623
 #, c-format
 msgid ""
 "No such interface “org.freedesktop.DBus.Properties” on object at path %s"
@@ -667,160 +688,167 @@ msgstr ""
 "Interface “org.freedesktop.DBus.Properties” inesistente sul ogjet tal "
 "percors %s"
 
-#: gio/gdbusconnection.c:4312
+#: gio/gdbusconnection.c:4414
 #, c-format
 msgid "No such property “%s”"
 msgstr "Proprietât “%s” inesistente"
 
-#: gio/gdbusconnection.c:4324
+#: gio/gdbusconnection.c:4426
 #, c-format
 msgid "Property “%s” is not readable"
 msgstr "No si pues lei la proprietât “%s”"
 
-#: gio/gdbusconnection.c:4335
+#: gio/gdbusconnection.c:4437
 #, c-format
 msgid "Property “%s” is not writable"
 msgstr "No si pues scrivi la proprietât “%s”"
 
-#: gio/gdbusconnection.c:4355
+#: gio/gdbusconnection.c:4457
 #, c-format
 msgid "Error setting property “%s”: Expected type “%s” but got “%s”"
 msgstr ""
 "Erôr tal configurâ la proprietât “%s”: si spietave il gjenar “%s” ma si à "
 "vût “%s”"
 
-#: gio/gdbusconnection.c:4460 gio/gdbusconnection.c:4668
-#: gio/gdbusconnection.c:6664
+#: gio/gdbusconnection.c:4562 gio/gdbusconnection.c:4777
+#: gio/gdbusconnection.c:6760
 #, c-format
 msgid "No such interface “%s”"
 msgstr "Interface “%s” inesistente"
 
-#: gio/gdbusconnection.c:4886 gio/gdbusconnection.c:7173
+#: gio/gdbusconnection.c:4999 gio/gdbusconnection.c:7274
 #, c-format
 msgid "No such interface “%s” on object at path %s"
 msgstr "Interface “%s” inesistente sul ogjet tal percors %s"
 
-#: gio/gdbusconnection.c:4984
+#: gio/gdbusconnection.c:5100
 #, c-format
 msgid "No such method “%s”"
 msgstr "Metodi “%s” inesistent"
 
-#: gio/gdbusconnection.c:5015
+#: gio/gdbusconnection.c:5131
 #, c-format
 msgid "Type of message, “%s”, does not match expected type “%s”"
 msgstr "Il gjenar di messaç “%s”, nol corispuint al gjenar spietât “%s”"
 
-#: gio/gdbusconnection.c:5213
+#: gio/gdbusconnection.c:5334
 #, c-format
 msgid "An object is already exported for the interface %s at %s"
 msgstr "Un ogjet al è za espuartât pe interface %s su %s"
 
-#: gio/gdbusconnection.c:5439
+#: gio/gdbusconnection.c:5561
 #, c-format
 msgid "Unable to retrieve property %s.%s"
 msgstr "Impussibil recuperâ la proprietât %s.%s"
 
-#: gio/gdbusconnection.c:5495
+#: gio/gdbusconnection.c:5617
 #, c-format
 msgid "Unable to set property %s.%s"
 msgstr "Impussibil stabilî la proprietât %s.%s"
 
-#: gio/gdbusconnection.c:5673
+#: gio/gdbusconnection.c:5796
 #, c-format
 msgid "Method “%s” returned type “%s”, but expected “%s”"
 msgstr "Il metodi “%s” al à tornât il gjenar “%s”, ma si spietave “%s”"
 
-#: gio/gdbusconnection.c:6775
+#: gio/gdbusconnection.c:6872
 #, c-format
 msgid "Method “%s” on interface “%s” with signature “%s” does not exist"
 msgstr "Il metodi “%s” su pe interface “%s” cun firme “%s” nol esist"
 
-#: gio/gdbusconnection.c:6896
+#: gio/gdbusconnection.c:6993
 #, c-format
 msgid "A subtree is already exported for %s"
 msgstr "Un sot-arbul al è za espuartât par %s"
 
-#: gio/gdbusmessage.c:1266
+#: gio/gdbusconnection.c:7282
+#, c-format
+msgid "Object does not exist at path “%s”"
+msgstr ""
+
+#: gio/gdbusmessage.c:1301
 msgid "type is INVALID"
 msgstr "il gjenar al è NO VALIT"
 
-#: gio/gdbusmessage.c:1277
+#: gio/gdbusmessage.c:1312
 msgid "METHOD_CALL message: PATH or MEMBER header field is missing"
 msgstr "Messaç METHOD_CALL: il cjamp di intestazion PATH o MEMBER al mancje"
 
-#: gio/gdbusmessage.c:1288
+#: gio/gdbusmessage.c:1323
 msgid "METHOD_RETURN message: REPLY_SERIAL header field is missing"
 msgstr "Messaç METHOD_RETURN: il cjamp di intestazion REPLY_SERIAL al mancje"
 
-#: gio/gdbusmessage.c:1300
+#: gio/gdbusmessage.c:1335
 msgid "ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing"
 msgstr ""
 "Messaç di ERÔR: il cjamp di intestazion REPLY_SERIAL o ERROR_NAME al mancje"
 
-#: gio/gdbusmessage.c:1313
+#: gio/gdbusmessage.c:1348
 msgid "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing"
 msgstr ""
 "Messaç SIGNAL: il cjamp di intestazion PATH, INTERFACE o MEMBER al mancje"
 
-#: gio/gdbusmessage.c:1321
+#: gio/gdbusmessage.c:1356
 msgid ""
-"SIGNAL message: The PATH header field is using the reserved value /org/"
-"freedesktop/DBus/Local"
+"SIGNAL message: The PATH header field is using the reserved value "
+"/org/freedesktop/DBus/Local"
 msgstr ""
-"Messaç SIGNAL: il cjamp di intestazion PATH al sta doprant il valôr "
-"riservât /org/freedesktop/DBus/Local"
+"Messaç SIGNAL: il cjamp di intestazion PATH al sta doprant il valôr riservât"
+" /org/freedesktop/DBus/Local"
 
-#: gio/gdbusmessage.c:1329
+#: gio/gdbusmessage.c:1364
 msgid ""
-"SIGNAL message: The INTERFACE header field is using the reserved value org."
-"freedesktop.DBus.Local"
+"SIGNAL message: The INTERFACE header field is using the reserved value "
+"org.freedesktop.DBus.Local"
 msgstr ""
 "Messaç SIGNAL: il cjamp di intestazion INTERFACE al sta doprant il valôr "
 "riservât org.freedesktop.DBus.Local"
 
-#: gio/gdbusmessage.c:1377 gio/gdbusmessage.c:1437
+#: gio/gdbusmessage.c:1412 gio/gdbusmessage.c:1472
 #, c-format
 msgid "Wanted to read %lu byte but only got %lu"
 msgid_plural "Wanted to read %lu bytes but only got %lu"
 msgstr[0] "Si voleve lei %lu byte, ma si à vût dome %lu"
 msgstr[1] "Si voleve lei %lu byte, ma si à vût dome %lu"
 
-#: gio/gdbusmessage.c:1391
+#: gio/gdbusmessage.c:1426
 #, c-format
 msgid "Expected NUL byte after the string “%s” but found byte %d"
 msgstr ""
 "Si spietave un byte NUL dopo de stringhe “%s” ma si à cjatât il byte %d"
 
-#: gio/gdbusmessage.c:1410
+#: gio/gdbusmessage.c:1445
 #, 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”"
+"(length of string is %d). The valid UTF-8 string up until that point was "
+"“%s”"
 msgstr ""
 "Si spietave une stringhe UTF-8 valide ma si à cjatât byte no valits al byte "
 "offset %d (la lungjece de stringhe e je %d). La stringhe UTF-8 valide fin "
 "chel pont e jere “%s”"
 
-#: gio/gdbusmessage.c:1474 gio/gdbusmessage.c:1722 gio/gdbusmessage.c:1911
+#: gio/gdbusmessage.c:1509 gio/gdbusmessage.c:1785 gio/gdbusmessage.c:1996
 msgid "Value nested too deeply"
 msgstr "Valôr nidificât masse in profonditât"
 
-#: gio/gdbusmessage.c:1620
+#: gio/gdbusmessage.c:1677
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus object path"
 msgstr "Il valôr “%s” analizât nol è un percors di ogjet D-Bus valit"
 
-#: gio/gdbusmessage.c:1642
+#: gio/gdbusmessage.c:1701
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature"
 msgstr "Il valôr “%s” analizât no je une firme D-Bus valide"
 
-#: gio/gdbusmessage.c:1689
+#: gio/gdbusmessage.c:1752
 #, c-format
 msgid ""
 "Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB)."
 msgid_plural ""
-"Encountered array of length %u bytes. Maximum length is 2<<26 bytes (64 MiB)."
+"Encountered array of length %u bytes. Maximum length is 2<<26 bytes (64 "
+"MiB)."
 msgstr[0] ""
 "Si à intivât un array lunc %u byte. La lungjece massime e je 2<<26 byte (64 "
 "MiB)."
@@ -828,7 +856,7 @@ msgstr[1] ""
 "Si à intivât un array lunc %u byte. La lungjece massime e je 2<<26 byte (64 "
 "MiB)."
 
-#: gio/gdbusmessage.c:1709
+#: gio/gdbusmessage.c:1772
 #, c-format
 msgid ""
 "Encountered array of type “a%c”, expected to have a length a multiple of %u "
@@ -837,49 +865,55 @@ msgstr ""
 "Si à intivât un array di gjenar “a%c”, si veve di vê une lungjece multiple "
 "di %u byte, ma si à cjatât che e jere di %u byte"
 
-#: gio/gdbusmessage.c:1895
+#: gio/gdbusmessage.c:1926 gio/gdbusmessage.c:2645
+msgid "Empty structures (tuples) are not allowed in D-Bus"
+msgstr ""
+
+#: gio/gdbusmessage.c:1980
 #, c-format
 msgid "Parsed value “%s” for variant is not a valid D-Bus signature"
 msgstr "Il valôr “%s” analizât pal variant no je une firme D-Bus valide"
 
-#: gio/gdbusmessage.c:1936
+#: gio/gdbusmessage.c:2021
 #, c-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 ""
 "Erôr tal deserializâ GVariant cu la stringhe di gjenar “%s” dal formât fîl "
 "di D-Bus"
 
-#: gio/gdbusmessage.c:2121
+#: gio/gdbusmessage.c:2206
 #, c-format
 msgid ""
 "Invalid endianness value. Expected 0x6c (“l”) or 0x42 (“B”) but found value "
 "0x%02x"
 msgstr ""
-"Valôr di endian no valit. Si spietave 0x6c (“l”) o 0x42 (“B”) ma si à cjatât "
-"il valôr 0x%02x"
+"Valôr di endian no valit. Si spietave 0x6c (“l”) o 0x42 (“B”) ma si à cjatât"
+" il valôr 0x%02x"
 
-#: gio/gdbusmessage.c:2134
+#: gio/gdbusmessage.c:2225
 #, c-format
 msgid "Invalid major protocol version. Expected 1 but found %d"
 msgstr "Version maiôr dal protocol no valide. Si spietave 1 ma si à cjatât %d"
 
-#: gio/gdbusmessage.c:2188 gio/gdbusmessage.c:2784
+#: gio/gdbusmessage.c:2283 gio/gdbusmessage.c:2881
 msgid "Signature header found but is not of type signature"
 msgstr "Cjatade intestazion di firme ma no je di gjenar firme"
 
-#: gio/gdbusmessage.c:2200
+#: gio/gdbusmessage.c:2295
 #, c-format
 msgid "Signature header with signature “%s” found but message body is empty"
 msgstr ""
-"Cjatade intestazion di firme cun firme “%s” ma il cuarp dal messaç al è vueit"
+"Cjatade intestazion di firme cun firme “%s” ma il cuarp dal messaç al è "
+"vueit"
 
-#: gio/gdbusmessage.c:2215
+#: gio/gdbusmessage.c:2310
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature (for body)"
 msgstr "Il valôr “%s” analizât no je une firme D-Bus valide (pal cuarp)"
 
-#: gio/gdbusmessage.c:2247
+#: gio/gdbusmessage.c:2342
 #, 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"
@@ -890,19 +924,19 @@ msgstr[1] ""
 "Nissune intestazion di firme tal messaç, ma il cuarp dal messaç al è di %u "
 "byte"
 
-#: gio/gdbusmessage.c:2257
+#: gio/gdbusmessage.c:2352
 msgid "Cannot deserialize message: "
 msgstr "Impussibil deserializâ il messaç: "
 
-#: gio/gdbusmessage.c:2601
+#: gio/gdbusmessage.c:2698
 #, c-format
 msgid ""
 "Error serializing GVariant with type string “%s” to the D-Bus wire format"
 msgstr ""
-"Erôr tal serializâ GVariant cu la stringhe di gjenar “%s” al formât fîl di D-"
-"Bus"
+"Erôr tal serializâ GVariant cu la stringhe di gjenar “%s” al formât fîl di "
+"D-Bus"
 
-#: gio/gdbusmessage.c:2738
+#: gio/gdbusmessage.c:2835
 #, c-format
 msgid ""
 "Number of file descriptors in message (%d) differs from header field (%d)"
@@ -910,16 +944,16 @@ msgstr ""
 "Il numar dai descritôrs di file tal messaç (%d) al è diviers dal cjamp di "
 "intestazion (%d)"
 
-#: gio/gdbusmessage.c:2746
+#: gio/gdbusmessage.c:2843
 msgid "Cannot serialize message: "
 msgstr "Impussibil serializâ il messaç: "
 
-#: gio/gdbusmessage.c:2799
+#: gio/gdbusmessage.c:2896
 #, c-format
 msgid "Message body has signature “%s” but there is no signature header"
 msgstr "Il cuarp dal messaç al à firme “%s” ma no je la intestazion de firme"
 
-#: gio/gdbusmessage.c:2809
+#: gio/gdbusmessage.c:2906
 #, c-format
 msgid ""
 "Message body has type signature “%s” but signature in the header field is "
@@ -928,82 +962,84 @@ msgstr ""
 "Il cuarp dal messaç al à une firme di gjenar “%s”, ma la firme tal cjamp de "
 "intestazion e je “%s”"
 
-#: gio/gdbusmessage.c:2825
+#: gio/gdbusmessage.c:2922
 #, c-format
 msgid "Message body is empty but signature in the header field is “(%s)”"
 msgstr ""
 "Il cuarp dal messaç al è vueit ma la firme tal cjamp de intestazion e je "
 "“(%s)”"
 
-#: gio/gdbusmessage.c:3378
+#: gio/gdbusmessage.c:3477
 #, c-format
 msgid "Error return with body of type “%s”"
 msgstr ""
 
-#: gio/gdbusmessage.c:3386
+#: gio/gdbusmessage.c:3485
 msgid "Error return with empty body"
 msgstr ""
 
-#: gio/gdbusprivate.c:2246
+#: gio/gdbusprivate.c:2185
 #, c-format
 msgid "(Type any character to close this window)\n"
 msgstr "(Scrîf cualsisei caratar par sierâ chest barcon)\n"
 
-#: gio/gdbusprivate.c:2420
+#: gio/gdbusprivate.c:2371
 #, c-format
 msgid "Session dbus not running, and autolaunch failed"
 msgstr "Session dbus no je in esecuzion e l'inviament automatic al è falît"
 
-#: gio/gdbusprivate.c:2443
+#: gio/gdbusprivate.c:2394
 #, c-format
 msgid "Unable to get Hardware profile: %s"
 msgstr "Impussibil otignî il profîl Hardware: %s"
 
-#: gio/gdbusprivate.c:2488
-msgid "Unable to load /var/lib/dbus/machine-id or /etc/machine-id: "
-msgstr "Impussibil cjariâ /var/lib/dbus/machine-id o /etc/machine-id: "
+#. Translators: Both placeholders are file paths
+#: gio/gdbusprivate.c:2445
+#, c-format
+msgid "Unable to load %s or %s: "
+msgstr "Impussibil cjariâ %s o %s: "
 
-#: gio/gdbusproxy.c:1562
+#: gio/gdbusproxy.c:1573
 #, c-format
 msgid "Error calling StartServiceByName for %s: "
 msgstr "Erôr tal clamâ StartServiceByName par %s: "
 
-#: gio/gdbusproxy.c:1585
+#: gio/gdbusproxy.c:1596
 #, c-format
 msgid "Unexpected reply %d from StartServiceByName(\"%s\") method"
 msgstr "Rispueste %d inspietade dal metodi StartServiceByName(\"%s\")"
 
-#: gio/gdbusproxy.c:2688 gio/gdbusproxy.c:2823
+#: gio/gdbusproxy.c:2707 gio/gdbusproxy.c:2842
 #, c-format
 msgid ""
 "Cannot invoke method; proxy is for the well-known name %s without an owner, "
 "and proxy was constructed with the G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START flag"
 msgstr ""
-"Impussibil invocâ il metodi; il proxy al è pal non ben-cognossût %s cence un "
+"Impussibil invocâ il metodi; il proxy al è pal no ben-cognossût %s cence un "
 "proprietari e il proxy al jere costruît cu la opzion "
-"G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START "
+"G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START"
 
-#: gio/gdbusserver.c:755
+#: gio/gdbusserver.c:767
 msgid "Abstract namespace not supported"
 msgstr "Spazi di non astrat no supuartât"
 
-#: gio/gdbusserver.c:848
+#: gio/gdbusserver.c:860
 msgid "Cannot specify nonce file when creating a server"
 msgstr ""
 "Impussibil specificâ il file dal numar doprât une sole volte cuant che si "
 "creave un servidôr"
 
-#: gio/gdbusserver.c:930
+#: gio/gdbusserver.c:942
 #, c-format
 msgid "Error writing nonce file at “%s”: %s"
 msgstr "Erôr tal scrivi il file dal numar doprât une sole volte su “%s”: %s"
 
-#: gio/gdbusserver.c:1103
+#: gio/gdbusserver.c:1117
 #, c-format
 msgid "The string “%s” is not a valid D-Bus GUID"
 msgstr "La stringhe “%s” no je un valit GUID D-Bus"
 
-#: gio/gdbusserver.c:1143
+#: gio/gdbusserver.c:1157
 #, c-format
 msgid "Cannot listen on unsupported transport “%s”"
 msgstr "Impussibil scoltâ o traspuart “%s” no supuartât"
@@ -1031,299 +1067,304 @@ msgstr ""
 "\n"
 "Dopre “%s COMANT --help” par vê jutori su ogni comant.\n"
 
-#: gio/gdbus-tool.c:201 gio/gdbus-tool.c:268 gio/gdbus-tool.c:340
-#: gio/gdbus-tool.c:364 gio/gdbus-tool.c:854 gio/gdbus-tool.c:1231
-#: gio/gdbus-tool.c:1719
+#: gio/gdbus-tool.c:202 gio/gdbus-tool.c:274 gio/gdbus-tool.c:346
+#: gio/gdbus-tool.c:370 gio/gdbus-tool.c:860 gio/gdbus-tool.c:1245
+#: gio/gdbus-tool.c:1733
 #, c-format
 msgid "Error: %s\n"
 msgstr "Erôr: %s\n"
 
-#: gio/gdbus-tool.c:212 gio/gdbus-tool.c:281 gio/gdbus-tool.c:1735
+#: gio/gdbus-tool.c:213 gio/gdbus-tool.c:287 gio/gdbus-tool.c:1749
 #, c-format
 msgid "Error parsing introspection XML: %s\n"
 msgstr "Erôr tal analizâ XML di introspezion: %s\n"
 
-#: gio/gdbus-tool.c:250
+#: gio/gdbus-tool.c:251
 #, c-format
 msgid "Error: %s is not a valid name\n"
 msgstr "Erôr: %s nol è un non valit\n"
 
-#: gio/gdbus-tool.c:398
+#: gio/gdbus-tool.c:256 gio/gdbus-tool.c:746 gio/gdbus-tool.c:1064
+#: gio/gdbus-tool.c:1899 gio/gdbus-tool.c:2139
+#, c-format
+msgid "Error: %s is not a valid object path\n"
+msgstr "Erôr: %s nol è un percors ogjet valit\n"
+
+#: gio/gdbus-tool.c:404
 msgid "Connect to the system bus"
 msgstr "Conet al bus di sisteme"
 
-#: gio/gdbus-tool.c:399
+#: gio/gdbus-tool.c:405
 msgid "Connect to the session bus"
 msgstr "Conet al bus di session"
 
-#: gio/gdbus-tool.c:400
+#: gio/gdbus-tool.c:406
 msgid "Connect to given D-Bus address"
 msgstr "Conet ae direzion D-Bus furnide"
 
-#: gio/gdbus-tool.c:410
+#: gio/gdbus-tool.c:416
 msgid "Connection Endpoint Options:"
 msgstr "Opzions dal pont finâl de conession:"
 
-#: gio/gdbus-tool.c:411
+#: gio/gdbus-tool.c:417
 msgid "Options specifying the connection endpoint"
 msgstr "Opzions che a specifichin il pont finâl (endpoint) de conession"
 
-#: gio/gdbus-tool.c:434
+#: gio/gdbus-tool.c:440
 #, c-format
 msgid "No connection endpoint specified"
 msgstr "Nissun pont finâl (endpoint) di conession specificât"
 
-#: gio/gdbus-tool.c:444
+#: gio/gdbus-tool.c:450
 #, c-format
 msgid "Multiple connection endpoints specified"
 msgstr "Plui ponts finâi (endpoint) di conession specificâts"
 
-#: gio/gdbus-tool.c:517
+#: gio/gdbus-tool.c:523
 #, c-format
 msgid ""
 "Warning: According to introspection data, interface “%s” does not exist\n"
 msgstr ""
-"Avertiment: In acuardi cui dâts di introspezion, la interface “%s” no esist\n"
+"Avertiment: In acuardi cui dâts di introspezion, la interface “%s” no "
+"esist\n"
 
-#: gio/gdbus-tool.c:526
+#: gio/gdbus-tool.c:532
 #, c-format
 msgid ""
 "Warning: According to introspection data, method “%s” does not exist on "
 "interface “%s”\n"
 msgstr ""
-"Avertiment: In acuardi cui dâts di introspezion, il metodi “%s” nol esist su "
-"pe interface “%s”\n"
+"Avertiment: In acuardi cui dâts di introspezion, il metodi “%s” nol esist su"
+" pe interface “%s”\n"
 
-#: gio/gdbus-tool.c:588
+#: gio/gdbus-tool.c:594
 msgid "Optional destination for signal (unique name)"
 msgstr "Destinazion opzionâl pal segnâl (non univoc)"
 
-#: gio/gdbus-tool.c:589
+#: gio/gdbus-tool.c:595
 msgid "Object path to emit signal on"
 msgstr "Percors ogjet dulà emeti il segnâl"
 
-#: gio/gdbus-tool.c:590
+#: gio/gdbus-tool.c:596
 msgid "Signal and interface name"
 msgstr "Segnâl e non interface"
 
-#: gio/gdbus-tool.c:623
+#: gio/gdbus-tool.c:629
 msgid "Emit a signal."
 msgstr "Emet un segnâl."
 
-#: gio/gdbus-tool.c:678 gio/gdbus-tool.c:992 gio/gdbus-tool.c:1822
-#: gio/gdbus-tool.c:2054 gio/gdbus-tool.c:2274
+#: gio/gdbus-tool.c:684 gio/gdbus-tool.c:1001 gio/gdbus-tool.c:1836
+#: gio/gdbus-tool.c:2068 gio/gdbus-tool.c:2288
 #, c-format
 msgid "Error connecting: %s\n"
 msgstr "Erôr tal coneti: %s\n"
 
-#: gio/gdbus-tool.c:698
+#: gio/gdbus-tool.c:704
 #, c-format
 msgid "Error: %s is not a valid unique bus name.\n"
 msgstr "Erôr: %s nol è un non bus univoc valit.\n"
 
-#: gio/gdbus-tool.c:717 gio/gdbus-tool.c:1035 gio/gdbus-tool.c:1865
+#: gio/gdbus-tool.c:723 gio/gdbus-tool.c:1044 gio/gdbus-tool.c:1879
 msgid "Error: Object path is not specified\n"
 msgstr "Erôr: il percors ogjet nol è specificât\n"
 
-#: gio/gdbus-tool.c:740 gio/gdbus-tool.c:1055 gio/gdbus-tool.c:1885
-#: gio/gdbus-tool.c:2125
-#, c-format
-msgid "Error: %s is not a valid object path\n"
-msgstr "Erôr: %s nol è un percors ogjet valit\n"
-
-#: gio/gdbus-tool.c:760
+#: gio/gdbus-tool.c:766
 msgid "Error: Signal name is not specified\n"
 msgstr "Erôr: il non dal segnâl nol è specificât\n"
 
-#: gio/gdbus-tool.c:774
+#: gio/gdbus-tool.c:780
 #, c-format
 msgid "Error: Signal name “%s” is invalid\n"
 msgstr "Erôr: il non segnâl “%s” nol è valit\n"
 
-#: gio/gdbus-tool.c:786
+#: gio/gdbus-tool.c:792
 #, c-format
 msgid "Error: %s is not a valid interface name\n"
 msgstr "Erôr: %s nol è un non interface valit\n"
 
-#: gio/gdbus-tool.c:792
+#: gio/gdbus-tool.c:798
 #, c-format
 msgid "Error: %s is not a valid member name\n"
 msgstr "Erôr: %s nol è un non membri valit\n"
 
 #. Use the original non-"parse-me-harder" error
-#: gio/gdbus-tool.c:829 gio/gdbus-tool.c:1167
+#: gio/gdbus-tool.c:835 gio/gdbus-tool.c:1176
 #, c-format
 msgid "Error parsing parameter %d: %s\n"
 msgstr "Erôr tal analizâ il parametri %d: %s\n"
 
-#: gio/gdbus-tool.c:861
+#: gio/gdbus-tool.c:867
 #, c-format
 msgid "Error flushing connection: %s\n"
 msgstr "Erôr tal resentâ la conession: %s\n"
 
-#: gio/gdbus-tool.c:888
+#: gio/gdbus-tool.c:895
 msgid "Destination name to invoke method on"
 msgstr "Il non di destinazion de invocazion dal metodi"
 
-#: gio/gdbus-tool.c:889
+#: gio/gdbus-tool.c:896
 msgid "Object path to invoke method on"
 msgstr "Percors dal ogjet de invocazion dal metodi"
 
-#: gio/gdbus-tool.c:890
+#: gio/gdbus-tool.c:897
 msgid "Method and interface name"
 msgstr "Metodi e non interface"
 
-#: gio/gdbus-tool.c:891
+#: gio/gdbus-tool.c:898
 msgid "Timeout in seconds"
 msgstr "Timp massim in seconts"
 
-#: gio/gdbus-tool.c:937
+#: gio/gdbus-tool.c:899
+msgid "Allow interactive authorization"
+msgstr "Permet autorizazion interative"
+
+#: gio/gdbus-tool.c:946
 msgid "Invoke a method on a remote object."
 msgstr "Invoche un metodi suntun ogjet lontan."
 
-#: gio/gdbus-tool.c:1009 gio/gdbus-tool.c:1839 gio/gdbus-tool.c:2079
+#: gio/gdbus-tool.c:1018 gio/gdbus-tool.c:1853 gio/gdbus-tool.c:2093
 msgid "Error: Destination is not specified\n"
 msgstr "Erôr: Destinazion no specificade\n"
 
-#: gio/gdbus-tool.c:1020 gio/gdbus-tool.c:1856 gio/gdbus-tool.c:2090
+#: gio/gdbus-tool.c:1029 gio/gdbus-tool.c:1870 gio/gdbus-tool.c:2104
 #, c-format
 msgid "Error: %s is not a valid bus name\n"
 msgstr "Erôr: %s nol è un non bus valit\n"
 
-#: gio/gdbus-tool.c:1070
+#: gio/gdbus-tool.c:1079
 msgid "Error: Method name is not specified\n"
 msgstr "Erôr: il non dal metodi nol è specificât\n"
 
-#: gio/gdbus-tool.c:1081
+#: gio/gdbus-tool.c:1090
 #, c-format
 msgid "Error: Method name “%s” is invalid\n"
 msgstr "Erôr: il non dal metodi “%s” nol è valit\n"
 
-#: gio/gdbus-tool.c:1159
+#: gio/gdbus-tool.c:1168
 #, c-format
 msgid "Error parsing parameter %d of type “%s”: %s\n"
 msgstr "Erôr tal analizâ il parametri %d di gjenar “%s”: %s\n"
 
-#: gio/gdbus-tool.c:1185
-#, fuzzy, c-format
-#| msgid "Error reading file %s: %s"
+#: gio/gdbus-tool.c:1194
+#, c-format
 msgid "Error adding handle %d: %s\n"
-msgstr "Erôr tal lei il file %s: %s"
+msgstr "Erôr tal zontâ il gjestôr %d: %s\n"
 
-#: gio/gdbus-tool.c:1681
+#: gio/gdbus-tool.c:1695
 msgid "Destination name to introspect"
 msgstr "Non di destinazion de introspezion"
 
-#: gio/gdbus-tool.c:1682
+#: gio/gdbus-tool.c:1696
 msgid "Object path to introspect"
 msgstr "Percors dal ogjet de introspezion"
 
-#: gio/gdbus-tool.c:1683
+#: gio/gdbus-tool.c:1697
 msgid "Print XML"
 msgstr "Stampe XML"
 
-#: gio/gdbus-tool.c:1684
+#: gio/gdbus-tool.c:1698
 msgid "Introspect children"
 msgstr "Auto-esamine i fîs"
 
-#: gio/gdbus-tool.c:1685
+#: gio/gdbus-tool.c:1699
 msgid "Only print properties"
 msgstr "Dome stampe proprietâts"
 
-#: gio/gdbus-tool.c:1774
+#: gio/gdbus-tool.c:1788
 msgid "Introspect a remote object."
 msgstr "Auto-esamine un ogjet lontan."
 
-#: gio/gdbus-tool.c:1980
+#: gio/gdbus-tool.c:1994
 msgid "Destination name to monitor"
 msgstr "Non di destinazion di monitorâ"
 
-#: gio/gdbus-tool.c:1981
+#: gio/gdbus-tool.c:1995
 msgid "Object path to monitor"
 msgstr "Percors dal ogjet di monitorâ"
 
-#: gio/gdbus-tool.c:2006
+#: gio/gdbus-tool.c:2020
 msgid "Monitor a remote object."
 msgstr "Monitore un ogjet lontan."
 
-#: gio/gdbus-tool.c:2064
+#: gio/gdbus-tool.c:2078
 msgid "Error: can’t monitor a non-message-bus connection\n"
 msgstr "Erôr: impussibil monitorâ une conession non-message-bus\n"
 
-#: gio/gdbus-tool.c:2188
+#: gio/gdbus-tool.c:2202
 msgid "Service to activate before waiting for the other one (well-known name)"
 msgstr "Servizi di ativâ prime di spietâ par chel altri (non ben-cognossût)"
 
-#: gio/gdbus-tool.c:2191
+#: gio/gdbus-tool.c:2205
 msgid ""
-"Timeout to wait for before exiting with an error (seconds); 0 for no timeout "
-"(default)"
+"Timeout to wait for before exiting with an error (seconds); 0 for no timeout"
+" (default)"
 msgstr ""
 "Timp di spietâ prime di jessi cuntun erôr (seconts); 0 par no vê scjadince "
 "(predefinît)"
 
-#: gio/gdbus-tool.c:2239
+#: gio/gdbus-tool.c:2253
 msgid "[OPTION…] BUS-NAME"
 msgstr "[OPZION…] NON-BUS"
 
-#: gio/gdbus-tool.c:2240
+#: gio/gdbus-tool.c:2254
 msgid "Wait for a bus name to appear."
 msgstr "Spiete che al vegni fûr un non di bus."
 
-# mah, nonsense
-#: gio/gdbus-tool.c:2316
-#, fuzzy
+#: gio/gdbus-tool.c:2330
 msgid "Error: A service to activate for must be specified.\n"
-msgstr "Erôr: si scugne specificâ un servizi che par chel ativâ.\n"
+msgstr "Erôr: si scugne specificâ un servizi che si à di ativâ.\n"
 
-# mah, nonsense
-#: gio/gdbus-tool.c:2321
-#, fuzzy
+#: gio/gdbus-tool.c:2335
 msgid "Error: A service to wait for must be specified.\n"
-msgstr "Erôr: si scugne specificâ un servizi che par chel spietâ.\n"
+msgstr "Erôr: si scugne specificâ un servizi che si à di spietâ.\n"
 
-#: gio/gdbus-tool.c:2326
+#: gio/gdbus-tool.c:2340
 msgid "Error: Too many arguments.\n"
 msgstr "Erôr: masse argoments.\n"
 
-#: gio/gdbus-tool.c:2334 gio/gdbus-tool.c:2341
+#: gio/gdbus-tool.c:2348 gio/gdbus-tool.c:2355
 #, c-format
 msgid "Error: %s is not a valid well-known bus name.\n"
 msgstr "Erôr: %s nol è un non di bus ben-cognossût valit\n"
 
-#: gio/gdesktopappinfo.c:2106 gio/gdesktopappinfo.c:4926
+#: gio/gdebugcontrollerdbus.c:358
+#, c-format
+msgid "Not authorized to change debug settings"
+msgstr ""
+
+#: gio/gdesktopappinfo.c:2178 gio/gdesktopappinfo.c:5105
 msgid "Unnamed"
 msgstr "Cence non"
 
-#: gio/gdesktopappinfo.c:2516
+#: gio/gdesktopappinfo.c:2588
 msgid "Desktop file didn’t specify Exec field"
 msgstr "Il file .desktop nol specifiche il cjamp Exec"
 
-#: gio/gdesktopappinfo.c:2796
+#: gio/gdesktopappinfo.c:2896
 msgid "Unable to find terminal required for application"
 msgstr "Impussibil cjatâ il terminâl necessari pe aplicazion"
 
-#: gio/gdesktopappinfo.c:3447
+#: gio/gdesktopappinfo.c:3625
 #, c-format
 msgid "Can’t create user application configuration folder %s: %s"
 msgstr ""
 "Impussibil creâ la cartele dal utent pe configurazion de aplicazion %s: %s"
 
-#: gio/gdesktopappinfo.c:3451
+#: gio/gdesktopappinfo.c:3629
 #, c-format
 msgid "Can’t create user MIME configuration folder %s: %s"
 msgstr "Impussibil creâ la cartele dal utent pe configurazion MIME %s: %s"
 
-#: gio/gdesktopappinfo.c:3693 gio/gdesktopappinfo.c:3717
+#: gio/gdesktopappinfo.c:3871 gio/gdesktopappinfo.c:3895
 msgid "Application information lacks an identifier"
 msgstr "La informazion de aplicazion e mancje di un identificadôr"
 
-#: gio/gdesktopappinfo.c:3953
+#: gio/gdesktopappinfo.c:4131
 #, c-format
 msgid "Can’t create user desktop file %s"
 msgstr "Impussibil creâ il file .desktop %s dal utent"
 
-#: gio/gdesktopappinfo.c:4089
+#: gio/gdesktopappinfo.c:4267
 #, c-format
 msgid "Custom definition for %s"
 msgstr "Definizion personalizade par %s"
@@ -1351,7 +1392,7 @@ msgstr "la unitât no implemente la azion start"
 msgid "drive doesn’t implement stop"
 msgstr "la unitât no implemente la azion stop"
 
-#: gio/gdtlsconnection.c:1120 gio/gtlsconnection.c:921
+#: gio/gdtlsconnection.c:1186 gio/gtlsconnection.c:955
 msgid "TLS backend does not implement TLS binding retrieval"
 msgstr ""
 
@@ -1391,74 +1432,73 @@ msgstr "Si spietave un GEmblem par GEmblemedIcon"
 #. Translators: This is an error message when
 #. * trying to find the enclosing (user visible)
 #. * mount of a file, but none exists.
-#.
-#: gio/gfile.c:1547
+#: gio/gfile.c:1579
 msgid "Containing mount does not exist"
 msgstr "Il montaç contignût nol esist"
 
-#: gio/gfile.c:2594 gio/glocalfile.c:2472
+#: gio/gfile.c:2626 gio/glocalfile.c:2486
 msgid "Can’t copy over directory"
 msgstr "Impussibil copiâ sore de cartele"
 
-#: gio/gfile.c:2654
+#: gio/gfile.c:2686
 msgid "Can’t copy directory over directory"
 msgstr "Impussibil copiâ la cartele sore de cartele"
 
-#: gio/gfile.c:2662
+#: gio/gfile.c:2694
 msgid "Target file exists"
 msgstr "Il file di destinazion al esist"
 
-#: gio/gfile.c:2681
+#: gio/gfile.c:2713
 msgid "Can’t recursively copy directory"
 msgstr "Impussibil copiâ in maniere ricorsive la cartele"
 
-#: gio/gfile.c:2982
+#: gio/gfile.c:3014
 msgid "Splice not supported"
 msgstr ""
 
-#: gio/gfile.c:2986 gio/gfile.c:3031
+#: gio/gfile.c:3018
 #, c-format
 msgid "Error splicing file: %s"
 msgstr ""
 
-#: gio/gfile.c:3147
+#: gio/gfile.c:3170
 msgid "Copy (reflink/clone) between mounts is not supported"
 msgstr "La copie (reflink/clone) tra i montaçs no je supuartade"
 
-#: gio/gfile.c:3151
+#: gio/gfile.c:3174
 msgid "Copy (reflink/clone) is not supported or invalid"
 msgstr "La copie (reflink/clone) no je supuartade o no je valide"
 
-#: gio/gfile.c:3156
+#: gio/gfile.c:3179
 msgid "Copy (reflink/clone) is not supported or didn’t work"
 msgstr "La copie (reflink/clone) no je supuartade o no à funzionât"
 
-#: gio/gfile.c:3221
+#: gio/gfile.c:3244
 msgid "Can’t copy special file"
 msgstr "Impussibil copiâ il file speciâl"
 
-#: gio/gfile.c:4030
+#: gio/gfile.c:4138
 msgid "Invalid symlink value given"
 msgstr "Furnît valôr di colegament simbolic no valit"
 
-#: gio/gfile.c:4040 glib/gfileutils.c:2362
+#: gio/gfile.c:4148 glib/gfileutils.c:2333
 msgid "Symbolic links not supported"
 msgstr "Colegaments simbolics no supuartâts"
 
-#: gio/gfile.c:4208
+#: gio/gfile.c:4316
 msgid "Trash not supported"
 msgstr "Scovacere no supuartade"
 
-#: gio/gfile.c:4320
+#: gio/gfile.c:4428
 #, c-format
 msgid "File names cannot contain “%c”"
 msgstr "I nons dai file no puedin contignî “%c”"
 
-#: gio/gfile.c:6801 gio/gvolume.c:364
+#: gio/gfile.c:7028 gio/gvolume.c:364
 msgid "volume doesn’t implement mount"
 msgstr "il volum nol implemente la azion mount"
 
-#: gio/gfile.c:6915 gio/gfile.c:6963
+#: gio/gfile.c:7142 gio/gfile.c:7190
 msgid "No application is registered as handling this file"
 msgstr "No je regjistrade nissune aplicazion par gjestî chest file"
 
@@ -1503,8 +1543,8 @@ msgstr "Cjonçâ no permetût sul flus di jentrade"
 msgid "Truncate not supported on stream"
 msgstr "Cjonçâ no supuartât sul flus"
 
-#: gio/ghttpproxy.c:91 gio/gresolver.c:443 gio/gresolver.c:596
-#: glib/gconvert.c:1778
+#: gio/ghttpproxy.c:91 gio/gresolver.c:458 gio/gresolver.c:611
+#: glib/gconvert.c:1825
 msgid "Invalid hostname"
 msgstr "Non dal host no valit"
 
@@ -1529,9 +1569,14 @@ msgstr "Domandade autenticazion proxy HTTP"
 msgid "HTTP proxy connection failed: %i"
 msgstr "Conession proxy HTTP falide: %i"
 
-#: gio/ghttpproxy.c:269
+#: gio/ghttpproxy.c:266
+msgid "HTTP proxy response too big"
+msgstr "Rispueste masse grande dal proxy HTTP"
+
+#: gio/ghttpproxy.c:283
 msgid "HTTP proxy server closed connection unexpectedly."
-msgstr "Il servidôr proxy HTTP al à sierât la conession in maniere inspietade."
+msgstr ""
+"Il servidôr proxy HTTP al à sierât la conession in maniere inspietade."
 
 #: gio/gicon.c:298
 #, c-format
@@ -1586,7 +1631,7 @@ msgid "Could not parse “%s” as IP address mask"
 msgstr "Impussibil analizâ “%s” come mascare de direzion IP"
 
 #: gio/ginetsocketaddress.c:203 gio/ginetsocketaddress.c:220
-#: gio/gnativesocketaddress.c:109 gio/gunixsocketaddress.c:220
+#: gio/gnativesocketaddress.c:109 gio/gunixsocketaddress.c:228
 msgid "Not enough space for socket address"
 msgstr "No vonde spazi pe direzion dal socket"
 
@@ -1604,7 +1649,7 @@ msgstr "Il flus di jentrade nol implemente la leture"
 #. 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:1218 gio/giostream.c:310 gio/goutputstream.c:2208
+#: gio/ginputstream.c:1249 gio/giostream.c:310 gio/goutputstream.c:2208
 msgid "Stream has outstanding operation"
 msgstr "Il flus al à une operazion ecezionâl"
 
@@ -1645,10 +1690,8 @@ msgid "Show information about locations"
 msgstr "Mostre informazions su lis posizions"
 
 #: gio/gio-tool.c:232
-#, fuzzy
-#| msgid "List static actions for an application (from .desktop file)"
 msgid "Launch an application from a desktop file"
-msgstr "Liste lis azions statichis par une aplicazion (dal file .desktop)"
+msgstr "Invie une aplicazion di un file “desktop”"
 
 #: gio/gio-tool.c:233
 msgid "List the contents of locations"
@@ -1715,7 +1758,7 @@ msgstr "Erôr tal scrivi su stdout"
 #: gio/gio-tool-cat.c:133 gio/gio-tool-info.c:340 gio/gio-tool-list.c:172
 #: 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:1199 gio/gio-tool-open.c:70
+#: gio/gio-tool-monitor.c:204 gio/gio-tool-mount.c:1199 gio/gio-tool-open.c:70
 #: gio/gio-tool-remove.c:48 gio/gio-tool-rename.c:45 gio/gio-tool-set.c:89
 #: gio/gio-tool-trash.c:220 gio/gio-tool-tree.c:239
 msgid "LOCATION"
@@ -1737,7 +1780,7 @@ msgstr ""
 "alc come smb://servidôr/risorse/file.txt tant che posizion."
 
 #: gio/gio-tool-cat.c:162 gio/gio-tool-info.c:371 gio/gio-tool-mkdir.c:76
-#: gio/gio-tool-monitor.c:228 gio/gio-tool-mount.c:1250 gio/gio-tool-open.c:96
+#: gio/gio-tool-monitor.c:229 gio/gio-tool-mount.c:1250 gio/gio-tool-open.c:96
 #: gio/gio-tool-remove.c:72 gio/gio-tool-trash.c:303
 msgid "No locations given"
 msgstr "Nissune posizion furnide"
@@ -1918,34 +1961,28 @@ msgstr ""
 "files opzionâi."
 
 #: gio/gio-tool-launch.c:77
-#, fuzzy
-#| msgid "No destination given"
 msgid "No desktop file given"
-msgstr "Nissune destinazion furnide"
+msgstr "Nissun file “desktop” furnît"
 
 #: gio/gio-tool-launch.c:85
-#, fuzzy
-#| msgid "There is no GCredentials support for your platform"
 msgid "The launch command is not currently supported on this platform"
-msgstr "Nol esist il supuart par GCredentials pe tô plateforme"
+msgstr ""
+"Il comant di inviament in chest moment nol è supuart su cheste plateforme"
 
 #: gio/gio-tool-launch.c:98
-#, fuzzy, c-format
-#| msgid "Failed to open file “%s”: %s"
+#, c-format
 msgid "Unable to load ‘%s‘: %s"
-msgstr "No si è rivâts a vierzi il file “%s”: %s"
+msgstr "Impussibil cjariâ “%s”: %s"
 
 #: gio/gio-tool-launch.c:107
-#, fuzzy, c-format
-#| msgid "Failed to load info for handler “%s”"
+#, c-format
 msgid "Unable to load application information for ‘%s‘"
-msgstr "No si è rivâts a cjariâ lis informazion pal gjestôr “%s”"
+msgstr "Impussibil cjariâ lis informazions de aplicazion par “%s”"
 
 #: gio/gio-tool-launch.c:119
-#, fuzzy, c-format
-#| msgid "Default application for “%s”: %s\n"
+#, c-format
 msgid "Unable to launch application ‘%s’: %s"
-msgstr "Aplicazion predefinide par “%s”: %s\n"
+msgstr "Impussibil cjariâ la aplicazion ‘%s’: %s"
 
 #: gio/gio-tool-list.c:37 gio/gio-tool-tree.c:32
 msgid "Show hidden files"
@@ -1956,10 +1993,8 @@ msgid "Use a long listing format"
 msgstr "Dopre un formât di liste prolìs"
 
 #: gio/gio-tool-list.c:40
-#, fuzzy
-#| msgid "display name: %s\n"
 msgid "Print display names"
-msgstr "non di mostrâ: %s\n"
+msgstr "Stampe nons dai visôrs"
 
 #: gio/gio-tool-list.c:41
 msgid "Print full URIs"
@@ -2000,10 +2035,8 @@ msgid ""
 "for the mimetype. If a handler is given, it is set as the default\n"
 "handler for the mimetype."
 msgstr ""
-"Se nissun gjestôr al è furnît, al liste lis aplicazions regjistradis e "
-"conseadis\n"
-"par un gjenar di mime. Se un gjestôr al ven furnît, chel al ven stabilît "
-"come gjestôr\n"
+"Se nissun gjestôr al è furnît, al liste lis aplicazions regjistradis e conseadis\n"
+"par un gjenar di mime. Se un gjestôr al ven furnît, chel al ven stabilît come gjestôr\n"
 "predefinît pal gjenar mime."
 
 #: gio/gio-tool-mime.c:100
@@ -2075,8 +2108,8 @@ msgstr "Ten di voli un file (predefinît: al dipent dal gjenar)"
 #: gio/gio-tool-monitor.c:41
 msgid "Monitor a file directly (notices changes made via hardlinks)"
 msgstr ""
-"Ten di voli un file in maniere direte (si vise des modifichis fatis par mieç "
-"di colegaments permanents)"
+"Ten di voli un file in maniere direte (si vise des modifichis fatis par mieç"
+" di colegaments permanents)"
 
 #: gio/gio-tool-monitor.c:43
 msgid "Monitors a file directly, but doesn’t report changes"
@@ -2091,7 +2124,7 @@ msgstr ""
 msgid "Watch for mount events"
 msgstr "Ten di voli i events di montaç"
 
-#: gio/gio-tool-monitor.c:208
+#: gio/gio-tool-monitor.c:209
 msgid "Monitor files or directories for changes."
 msgstr "Monitore i file o lis cartelis pes modifichis."
 
@@ -2134,7 +2167,8 @@ msgstr "SCHEME"
 #: gio/gio-tool-mount.c:69
 msgid "Ignore outstanding file operations when unmounting or ejecting"
 msgstr ""
-"Ignore lis operazions ecezionâls sui file cuant che si dismonte o si pare fûr"
+"Ignore lis operazions ecezionâls sui file cuant che si dismonte o si pare "
+"fûr"
 
 #: gio/gio-tool-mount.c:70
 msgid "Use an anonymous user when authenticating"
@@ -2201,7 +2235,7 @@ msgid ""
 msgstr ""
 "gio move al è simil ae utilitât mv tradizionâl, ma e dopre lis\n"
 "posizions GIO al puest dai file locâi: par esempli tu puedis doprâ\n"
-"alc come smb://servidôr/risorse/file.txt tant che posizion."
+"alc come smb://servidôr/risorse/file.txt tant che posizion"
 
 #: gio/gio-tool-move.c:143
 #, c-format
@@ -2261,12 +2295,14 @@ msgstr "Cuant che si cree, limite l'acès al utent atuâl"
 msgid "When replacing, replace as if the destination did not exist"
 msgstr "Cuant che si sostituìs, sostituìs come che la destinazion no esisti"
 
-#. Translators: The "etag" is a token allowing to verify whether a file has been modified
+#. 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 "Stampe gnûf etag ae fin"
 
-#. Translators: The "etag" is a token allowing to verify whether a file has been modified
+#. 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 "Il etag dal file che si sta par sorescrivi"
@@ -2279,7 +2315,8 @@ msgstr "ETAG"
 msgid "Error reading from standard input"
 msgstr "Erôr tal lei dal standard input"
 
-#. Translators: The "etag" is a token allowing to verify whether a file has been modified
+#. Translators: The "etag" is a token allowing to verify whether a file has
+#. been modified
 #: gio/gio-tool-save.c:139
 msgid "Etag not available\n"
 msgstr "Etag no disponibil\n"
@@ -2334,10 +2371,8 @@ msgid "Empty the trash"
 msgstr "Disvuede la scovacere"
 
 #: gio/gio-tool-trash.c:35
-#, fuzzy
-#| msgid "List the contents of the locations."
 msgid "List files in the trash with their original locations"
-msgstr "Liste i contignûts des posizions."
+msgstr "Liste i files te scovacere cu lis lôr posizions origjinâls"
 
 #: gio/gio-tool-trash.c:36
 msgid ""
@@ -2348,28 +2383,20 @@ msgstr ""
 "tornant a creâ la cartele)"
 
 #: gio/gio-tool-trash.c:106
-#, fuzzy
-#| msgid "Unable to find terminal required for application"
 msgid "Unable to find original path"
-msgstr "Impussibil cjatâ il terminâl necessari pe aplicazion"
+msgstr "Impussibil cjatâ il percors origjinâl"
 
 #: gio/gio-tool-trash.c:123
-#, fuzzy
-#| msgid "Unable to create trash dir %s: %s"
 msgid "Unable to recreate original location: "
-msgstr "Impussibil creâ la cartele scovacere %s: %s"
+msgstr "Impussibil tornâ a creâ la posizion origjinâl:"
 
 #: gio/gio-tool-trash.c:136
-#, fuzzy
-#| msgid "unable to find desktop file for application %s\n"
 msgid "Unable to move file to its original location: "
-msgstr "impussibil cjatâ il file scritori pe aplicazion %s\n"
+msgstr "Impussibil spostâ il file te sô posizion origjinâl:"
 
 #: gio/gio-tool-trash.c:225
-#, fuzzy
-#| msgid "Move files or directories to the trash."
 msgid "Move/Restore files or directories to the trash."
-msgstr "Sposte i file o lis cartelis te scovacere."
+msgstr "Sposte/Ripristine i files o lis cartelis te scovacere."
 
 #: gio/gio-tool-trash.c:227
 msgid ""
@@ -2422,7 +2449,6 @@ msgstr "Opzion di elaborazion “%s” no cognossude"
 #. Translators: the first %s is a gresource XML attribute,
 #. * the second %s is an environment variable, and the third
 #. * %s is a command line tool
-#.
 #: gio/glib-compile-resources.c:310 gio/glib-compile-resources.c:367
 #: gio/glib-compile-resources.c:424
 #, c-format
@@ -2445,61 +2471,63 @@ msgstr "Erôr tal comprimi il file %s"
 msgid "text may not appear inside <%s>"
 msgstr "il test al podarès no aparî dentri di <%s>"
 
-#: gio/glib-compile-resources.c:737 gio/glib-compile-schemas.c:2172
+#: gio/glib-compile-resources.c:819 gio/glib-compile-schemas.c:2172
 msgid "Show program version and exit"
 msgstr "Mostre la version dal program e jes"
 
-#: gio/glib-compile-resources.c:738
+#: gio/glib-compile-resources.c:820
 msgid "Name of the output file"
 msgstr "Non dal file di jessude"
 
-#: gio/glib-compile-resources.c:739
+#: gio/glib-compile-resources.c:821
 msgid ""
 "The directories to load files referenced in FILE from (default: current "
 "directory)"
 msgstr ""
 
-#: gio/glib-compile-resources.c:739 gio/glib-compile-schemas.c:2173
+#: gio/glib-compile-resources.c:821 gio/glib-compile-schemas.c:2173
 #: gio/glib-compile-schemas.c:2202
 msgid "DIRECTORY"
 msgstr "CARTELE"
 
-#: gio/glib-compile-resources.c:740
+#: gio/glib-compile-resources.c:822
 msgid ""
 "Generate output in the format selected for by the target filename extension"
 msgstr ""
 "Gjenere la jessude intal formât selezionât pe estension dal non di file di "
 "destinazion"
 
-#: gio/glib-compile-resources.c:741
+#: gio/glib-compile-resources.c:823
 msgid "Generate source header"
 msgstr "Gjenere intestazion sorzint"
 
-#: gio/glib-compile-resources.c:742
+#: gio/glib-compile-resources.c:824
 msgid "Generate source code used to link in the resource file into your code"
 msgstr ""
+"Gjenere il codiç sorzint doprât par colegâ il file des risorsis dentri dal "
+"to codiç"
 
-#: gio/glib-compile-resources.c:743
+#: gio/glib-compile-resources.c:825
 msgid "Generate dependency list"
 msgstr "Gjenere la liste des dipendencis"
 
-#: gio/glib-compile-resources.c:744
+#: gio/glib-compile-resources.c:826
 msgid "Name of the dependency file to generate"
 msgstr "Non dal file des dipendencis di gjenerâ"
 
-#: gio/glib-compile-resources.c:745
+#: gio/glib-compile-resources.c:827
 msgid "Include phony targets in the generated dependency file"
-msgstr ""
+msgstr "Inclût lis destinazions falsis tal file des dipendencis gjenerât"
 
-#: gio/glib-compile-resources.c:746
+#: gio/glib-compile-resources.c:828
 msgid "Don’t automatically create and register resource"
 msgstr "No sta creâ in automatic e regjistrâ la risorse"
 
-#: gio/glib-compile-resources.c:747
+#: gio/glib-compile-resources.c:829
 msgid "Don’t export functions; declare them G_GNUC_INTERNAL"
 msgstr "No sta espuartâ lis funzions; declarilis G_GNUC_INTERNAL"
 
-#: gio/glib-compile-resources.c:748
+#: gio/glib-compile-resources.c:830
 msgid ""
 "Don’t embed resource data in the C file; assume it's linked externally "
 "instead"
@@ -2507,11 +2535,15 @@ msgstr ""
 "No sta incorporâ i dâts de risorse intal file C; assum invezit che al sedi "
 "colegât par difûr"
 
-#: gio/glib-compile-resources.c:749
+#: gio/glib-compile-resources.c:831
 msgid "C identifier name used for the generated source code"
 msgstr "Non identificadôr di C doprât pal codiç sorzint gjenerât"
 
-#: gio/glib-compile-resources.c:775
+#: gio/glib-compile-resources.c:832
+msgid "The target C compiler (default: the CC environment variable)"
+msgstr ""
+
+#: gio/glib-compile-resources.c:858
 msgid ""
 "Compile a resource specification into a resource file.\n"
 "Resource specification files have the extension .gresource.xml,\n"
@@ -2521,7 +2553,7 @@ msgstr ""
 "I file de specifiche di risorse a àn la estension .gresource.xml\n"
 "e i file de risorse a àn la estension clamade .gresource."
 
-#: gio/glib-compile-resources.c:797
+#: gio/glib-compile-resources.c:880
 msgid "You should give exactly one file name\n"
 msgstr "Si scugne dâ juste un non di file\n"
 
@@ -2568,7 +2600,8 @@ msgstr "<%s> nol è un membri valit dal gjenar enumerât specificât"
 #: gio/glib-compile-schemas.c:332
 #, c-format
 msgid "<%s> contains string not in the specified flags type"
-msgstr "<%s> al conten stringhis che no son tal gjenar di opzions specificadis"
+msgstr ""
+"<%s> al conten stringhis che no son tal gjenar di opzions specificadis"
 
 #: gio/glib-compile-schemas.c:338
 #, c-format
@@ -2677,12 +2710,12 @@ msgstr ""
 
 #: gio/glib-compile-schemas.c:797
 msgid "Empty names are not permitted"
-msgstr ""
+msgstr "No son ametûts nons vueits"
 
 #: gio/glib-compile-schemas.c:807
 #, c-format
 msgid "Invalid name “%s”: names must begin with a lowercase letter"
-msgstr ""
+msgstr "Non “%s” no valit: i nons a scugnin scomençâ cuntune letare minuscule"
 
 #: gio/glib-compile-schemas.c:819
 #, c-format
@@ -2690,21 +2723,23 @@ msgid ""
 "Invalid name “%s”: invalid character “%c”; only lowercase letters, numbers "
 "and hyphen (“-”) are permitted"
 msgstr ""
+"Non “%s” no valit: caratar “%c” no valit; a son permetûts dome letaris "
+"minusculis, numars e il tratut (“-”)"
 
 #: gio/glib-compile-schemas.c:828
 #, c-format
 msgid "Invalid name “%s”: two successive hyphens (“--”) are not permitted"
-msgstr ""
+msgstr "Non “%s” no valit: no son ametûts doi tratuts sucessivis (“--”)"
 
 #: gio/glib-compile-schemas.c:837
 #, c-format
 msgid "Invalid name “%s”: the last character may not be a hyphen (“-”)"
-msgstr ""
+msgstr "Non “%s” no valit: l'ultin caratar nol pues jessi un tratut (“-”)"
 
 #: gio/glib-compile-schemas.c:845
 #, c-format
 msgid "Invalid name “%s”: maximum length is 1024"
-msgstr ""
+msgstr "Non “%s” no valit: la lungjece massime e je 1024"
 
 #: gio/glib-compile-schemas.c:917
 #, c-format
@@ -2737,7 +2772,7 @@ msgstr ""
 #: gio/glib-compile-schemas.c:1002
 #, c-format
 msgid "<%s id='%s'> not (yet) defined."
-msgstr ""
+msgstr "<%s id='%s'> no (ancjemò) definît."
 
 #: gio/glib-compile-schemas.c:1017
 #, c-format
@@ -2792,25 +2827,25 @@ msgstr ""
 #: gio/glib-compile-schemas.c:1207
 #, 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:1224
 #, c-format
 msgid "A path, if given, must begin and end with a slash"
-msgstr ""
+msgstr "Un percors, se indicât, al scugne scomençâ e finî cuntune sbare"
 
 #: gio/glib-compile-schemas.c:1231
 #, c-format
 msgid "The path of a list must end with “:/”"
-msgstr ""
+msgstr "Il percors di une liste al scugne finî cun “:/”"
 
 #: gio/glib-compile-schemas.c:1240
 #, c-format
 msgid ""
-"Warning: Schema “%s” has path “%s”.  Paths starting with “/apps/”, “/"
-"desktop/” or “/system/” are deprecated."
+"Warning: Schema “%s” has path “%s”.  Paths starting with “/apps/”, "
+"“/desktop/” or “/system/” are deprecated."
 msgstr ""
 
 #: gio/glib-compile-schemas.c:1270
@@ -2858,29 +2893,29 @@ msgstr "Si ignore chest file."
 #: gio/glib-compile-schemas.c:1963
 #, c-format
 msgid ""
-"No such key “%s” in schema “%s” as specified in override file “%s”; ignoring "
-"override for this key."
+"No such key “%s” in schema “%s” as specified in override file “%s”; ignoring"
+" override for this key."
 msgstr ""
 
 #: gio/glib-compile-schemas.c:1971
 #, c-format
 msgid ""
-"No such key “%s” in schema “%s” as specified in override file “%s” and --"
-"strict was specified; exiting."
+"No such key “%s” in schema “%s” as specified in override file “%s” and "
+"--strict was specified; exiting."
 msgstr ""
 
 #: gio/glib-compile-schemas.c:1993
 #, c-format
 msgid ""
-"Cannot provide per-desktop overrides for localized key “%s” in schema "
-"“%s” (override file “%s”); ignoring override for this key."
+"Cannot provide per-desktop overrides for localized key “%s” in schema “%s” "
+"(override file “%s”); ignoring override for this key."
 msgstr ""
 
 #: gio/glib-compile-schemas.c:2002
 #, c-format
 msgid ""
-"Cannot provide per-desktop overrides for localized key “%s” in schema "
-"“%s” (override file “%s”) and --strict was specified; exiting."
+"Cannot provide per-desktop overrides for localized key “%s” in schema “%s” "
+"(override file “%s”) and --strict was specified; exiting."
 msgstr ""
 
 #: gio/glib-compile-schemas.c:2026
@@ -2927,19 +2962,19 @@ msgstr ""
 
 #: gio/glib-compile-schemas.c:2173
 msgid "Where to store the gschemas.compiled file"
-msgstr ""
+msgstr "Dulà archiviâ il file gschemas.compiled"
 
 #: gio/glib-compile-schemas.c:2174
 msgid "Abort on any errors in schemas"
-msgstr ""
+msgstr "Interomp su cualsisei erôr tai schemis"
 
 #: gio/glib-compile-schemas.c:2175
 msgid "Do not write the gschema.compiled file"
-msgstr ""
+msgstr "No sta scrivi il file gschema.compiled"
 
 #: gio/glib-compile-schemas.c:2176
 msgid "Do not enforce key name restrictions"
-msgstr ""
+msgstr "No sta sfuarçâ lis restrizions dai nons des clâfs"
 
 #: gio/glib-compile-schemas.c:2205
 msgid ""
@@ -2947,6 +2982,9 @@ msgid ""
 "Schema files are required to have the extension .gschema.xml,\n"
 "and the cache file is called gschemas.compiled."
 msgstr ""
+"Compile ducj i file scheme di GSettings intune cache di schemis.\n"
+"I files di scheme a scugnin vê la estension .gschema.xml,\n"
+"e il file cache al ven clamât gschemas.compiled."
 
 #: gio/glib-compile-schemas.c:2226
 msgid "You should give exactly one directory name"
@@ -2965,139 +3003,138 @@ msgstr "Nissun file di scheme cjatât: file di jessude esistent gjavât."
 msgid "Invalid filename %s"
 msgstr "Non file %s no valit"
 
-#: gio/glocalfile.c:980
+#: gio/glocalfile.c:982
 #, c-format
 msgid "Error getting filesystem info for %s: %s"
-msgstr ""
+msgstr "Erôr tal otignî lis informazion dal filesystem par %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:1121
+#: gio/glocalfile.c:1123
 #, c-format
 msgid "Containing mount for file %s not found"
-msgstr ""
+msgstr "Il montaç che al conten il file %s nol è stât cjatât"
 
-#: gio/glocalfile.c:1144
+#: gio/glocalfile.c:1146
 msgid "Can’t rename root directory"
-msgstr ""
+msgstr "Impussibil cambiâ il non de cartele lidrîs"
 
-#: gio/glocalfile.c:1162 gio/glocalfile.c:1185
+#: gio/glocalfile.c:1164 gio/glocalfile.c:1187
 #, c-format
 msgid "Error renaming file %s: %s"
-msgstr ""
+msgstr "Erôr tal cambiâ non al file %s: %s"
 
-#: gio/glocalfile.c:1169
+#: gio/glocalfile.c:1171
 msgid "Can’t rename file, filename already exists"
 msgstr "Impussibil cambiâ non al file, il non dal file al esist za"
 
-#: gio/glocalfile.c:1182 gio/glocalfile.c:2366 gio/glocalfile.c:2394
-#: gio/glocalfile.c:2533 gio/glocalfileoutputstream.c:650
+#: gio/glocalfile.c:1184 gio/glocalfile.c:2380 gio/glocalfile.c:2408
+#: gio/glocalfile.c:2547 gio/glocalfileoutputstream.c:656
 msgid "Invalid filename"
 msgstr "Non file no valit"
 
-#: gio/glocalfile.c:1350 gio/glocalfile.c:1361
+#: gio/glocalfile.c:1352 gio/glocalfile.c:1363
 #, c-format
 msgid "Error opening file %s: %s"
 msgstr "Erôr tal vierzi il file %s: %s"
 
-#: gio/glocalfile.c:1486
+#: gio/glocalfile.c:1488
 #, c-format
 msgid "Error removing file %s: %s"
 msgstr "Erôr tal gjavâ il file %s: %s"
 
-#: gio/glocalfile.c:1980 gio/glocalfile.c:1991
+#: gio/glocalfile.c:1982 gio/glocalfile.c:1993 gio/glocalfile.c:2020
 #, c-format
 msgid "Error trashing file %s: %s"
 msgstr "Erôr tal butâ te scovacere il file %s: %s"
 
-#: gio/glocalfile.c:2029
-#, fuzzy, c-format
-#| msgid "Unable to create trash dir %s: %s"
+#: gio/glocalfile.c:2040
+#, c-format
 msgid "Unable to create trash directory %s: %s"
 msgstr "Impussibil creâ la cartele scovacere %s: %s"
 
-#: gio/glocalfile.c:2050
+#: gio/glocalfile.c:2061
 #, c-format
 msgid "Unable to find toplevel directory to trash %s"
 msgstr ""
+"Impussibil cjatâ la cartele di nivel superiôr par butâ tes scovacis %s"
 
-#: gio/glocalfile.c:2058
-#, fuzzy, c-format
-#| msgid "Copy (reflink/clone) between mounts is not supported"
+#: gio/glocalfile.c:2069
+#, c-format
 msgid "Trashing on system internal mounts is not supported"
-msgstr "La copie (reflink/clone) tra i montaçs no je supuartade"
+msgstr "Nol è supuartât il butâ te scovacere su montaçs internis dal sisteme"
 
-#: gio/glocalfile.c:2141 gio/glocalfile.c:2169
-#, fuzzy, c-format
-#| msgid "Unable to create trash dir %s: %s"
+#: gio/glocalfile.c:2155 gio/glocalfile.c:2183
+#, c-format
 msgid "Unable to find or create trash directory %s to trash %s"
-msgstr "Impussibil creâ la cartele scovacere %s: %s"
+msgstr "Impussibil cjatâ o creâ la cartele %s te scovacere %s"
 
-#: gio/glocalfile.c:2215
+#: gio/glocalfile.c:2229
 #, c-format
 msgid "Unable to create trashing info file for %s: %s"
 msgstr ""
+"Impussibil creâ il file des informazions de butade tes scovacis par %s: %s"
 
-#: gio/glocalfile.c:2277
+#: gio/glocalfile.c:2291
 #, c-format
 msgid "Unable to trash file %s across filesystem boundaries"
 msgstr ""
+"Impussibil butâ tes scovacis il file %s jenfri i limits dal filesystem"
 
-#: gio/glocalfile.c:2281 gio/glocalfile.c:2337
+#: gio/glocalfile.c:2295 gio/glocalfile.c:2351
 #, c-format
 msgid "Unable to trash file %s: %s"
-msgstr ""
+msgstr "Impussibil butâ te scovacere il file %s: %s"
 
-#: gio/glocalfile.c:2343
+#: gio/glocalfile.c:2357
 #, c-format
 msgid "Unable to trash file %s"
-msgstr ""
+msgstr "Impussibil butâ te scovacere il file %s"
 
-#: gio/glocalfile.c:2369
+#: gio/glocalfile.c:2383
 #, c-format
 msgid "Error creating directory %s: %s"
 msgstr "Erôr tal creâ la cartele %s: %s"
 
-#: gio/glocalfile.c:2398
+#: gio/glocalfile.c:2412
 #, c-format
 msgid "Filesystem does not support symbolic links"
 msgstr "Il filesystem nol supuarte i colegaments simbolics"
 
-#: gio/glocalfile.c:2401
+#: gio/glocalfile.c:2415
 #, c-format
 msgid "Error making symbolic link %s: %s"
-msgstr ""
+msgstr "Erôr tal creâ il colegament simbolic %s: %s"
 
-#: gio/glocalfile.c:2444 gio/glocalfile.c:2479 gio/glocalfile.c:2536
+#: gio/glocalfile.c:2458 gio/glocalfile.c:2493 gio/glocalfile.c:2550
 #, c-format
 msgid "Error moving file %s: %s"
 msgstr "Erôr tal spostâ il file %s: %s"
 
-#: gio/glocalfile.c:2467
+#: gio/glocalfile.c:2481
 msgid "Can’t move directory over directory"
 msgstr "Impussibil spostâ la cartele sore de cartele"
 
-#: gio/glocalfile.c:2493 gio/glocalfileoutputstream.c:1039
-#: gio/glocalfileoutputstream.c:1053 gio/glocalfileoutputstream.c:1068
-#: gio/glocalfileoutputstream.c:1085 gio/glocalfileoutputstream.c:1099
+#: gio/glocalfile.c:2507 gio/glocalfileoutputstream.c:1108
+#: gio/glocalfileoutputstream.c:1122 gio/glocalfileoutputstream.c:1137
+#: gio/glocalfileoutputstream.c:1154 gio/glocalfileoutputstream.c:1168
 msgid "Backup file creation failed"
 msgstr "Creazion dal file di backup falide"
 
-#: gio/glocalfile.c:2512
+#: gio/glocalfile.c:2526
 #, c-format
 msgid "Error removing target file: %s"
 msgstr "Erôr tal gjavâ il file di destinazion: %s"
 
-#: gio/glocalfile.c:2526
+#: gio/glocalfile.c:2540
 msgid "Move between mounts not supported"
-msgstr ""
+msgstr "Spostament tra montaçs no supuartât"
 
-#: gio/glocalfile.c:2700
+#: gio/glocalfile.c:2714
 #, c-format
 msgid "Could not determine the disk usage of %s: %s"
-msgstr ""
+msgstr "Impussibil determinâ la utilizazion dal disc di %s: %s"
 
 #: gio/glocalfileinfo.c:767
 msgid "Attribute value must be non-NULL"
@@ -3120,15 +3157,16 @@ msgstr ""
 msgid " (invalid encoding)"
 msgstr " (codifiche no valide)"
 
-#: gio/glocalfileinfo.c:1868 gio/glocalfileoutputstream.c:915
+#: gio/glocalfileinfo.c:1868 gio/glocalfileoutputstream.c:943
+#: gio/glocalfileoutputstream.c:995
 #, c-format
 msgid "Error when getting information for file “%s”: %s"
-msgstr ""
+msgstr "Erôr dilunc il recupar des informazions pal file “%s”: %s"
 
 #: gio/glocalfileinfo.c:2134
 #, c-format
 msgid "Error when getting information for file descriptor: %s"
-msgstr ""
+msgstr "Erôr dilunc il recupar des informazions pal descritôr dal file: %s"
 
 #: gio/glocalfileinfo.c:2179
 msgid "Invalid attribute type (uint32 expected)"
@@ -3144,17 +3182,17 @@ msgstr "Gjenar di atribût no valit (si spietave une stringhe di byte)"
 
 #: gio/glocalfileinfo.c:2282
 msgid "Cannot set permissions on symlinks"
-msgstr ""
+msgstr "Impussibil stabilî i permès sui colegaments simbolics"
 
 #: gio/glocalfileinfo.c:2298
 #, c-format
 msgid "Error setting permissions: %s"
-msgstr ""
+msgstr "Erôr tal stabilî i permès: %s"
 
 #: gio/glocalfileinfo.c:2349
 #, c-format
 msgid "Error setting owner: %s"
-msgstr ""
+msgstr "Erôr tal stabilî il proprietari: %s"
 
 #: gio/glocalfileinfo.c:2372
 msgid "symlink must be non-NULL"
@@ -3164,11 +3202,13 @@ msgstr ""
 #: gio/glocalfileinfo.c:2412
 #, c-format
 msgid "Error setting symlink: %s"
-msgstr ""
+msgstr "Erôr tal stabilî il colegament simbolic: %s"
 
 #: gio/glocalfileinfo.c:2391
 msgid "Error setting symlink: file is not a symlink"
 msgstr ""
+"Erôr tal stabilî il colegament simbolic: il file nol è un colegament "
+"simbolic"
 
 #: gio/glocalfileinfo.c:2463
 #, c-format
@@ -3183,124 +3223,123 @@ msgstr ""
 #: gio/glocalfileinfo.c:2482
 #, c-format
 msgid "UNIX timestamp %lld does not fit into 64 bits"
-msgstr ""
+msgstr "La marche temporâl di UNIX %lld no sta tai 64 bits"
 
 #: gio/glocalfileinfo.c:2493
 #, c-format
 msgid "UNIX timestamp %lld is outside of the range supported by Windows"
 msgstr ""
+"La marche temporâl di UNIX %lld e sta fûr dal interval supuartât di Windows"
 
-#: gio/glocalfileinfo.c:2557
+#: gio/glocalfileinfo.c:2570
 #, c-format
 msgid "File name “%s” cannot be converted to UTF-16"
-msgstr ""
+msgstr "Nol è pussibil convertî a UTF-16 il non dal file “%s”"
 
-#: gio/glocalfileinfo.c:2576
+#: gio/glocalfileinfo.c:2589
 #, c-format
 msgid "File “%s” cannot be opened: Windows Error %lu"
-msgstr ""
+msgstr "Nol è pussibil vierzi il file “%s”: erôr di Windows %lu"
 
-#: gio/glocalfileinfo.c:2589
-#, fuzzy, c-format
-#| msgid "Error when getting information for directory “%s”: %s"
+#: gio/glocalfileinfo.c:2602
+#, c-format
 msgid "Error setting modification or access time for file “%s”: %lu"
-msgstr "Erôr tal vê informazions pe cartele “%s”: %s"
+msgstr "Erôr tal stabilî la ore di modifiche o di acès pal file “%s”: %lu"
 
-#: gio/glocalfileinfo.c:2690
+#: gio/glocalfileinfo.c:2703
 #, c-format
 msgid "Error setting modification or access time: %s"
-msgstr ""
+msgstr "Erôr tal stabilî la ore di modifiche o acès: %s"
 
-#: gio/glocalfileinfo.c:2713
+#: gio/glocalfileinfo.c:2726
 msgid "SELinux context must be non-NULL"
 msgstr "Il contest SELinux al scugne jessi diviers di NULL"
 
-#: gio/glocalfileinfo.c:2720
+#: gio/glocalfileinfo.c:2733
 msgid "SELinux is not enabled on this system"
 msgstr "SELinux nol è abilitât su chest sisteme"
 
-#: gio/glocalfileinfo.c:2730
+#: gio/glocalfileinfo.c:2743
 #, c-format
 msgid "Error setting SELinux context: %s"
-msgstr ""
+msgstr "Erôr tal stabilî il contest SELinux: %s"
 
-#: gio/glocalfileinfo.c:2823
+#: gio/glocalfileinfo.c:2836
 #, c-format
 msgid "Setting attribute %s not supported"
-msgstr ""
+msgstr "La configurazion dal atribût %s no je supuartade"
 
-#: gio/glocalfileinputstream.c:168 gio/glocalfileoutputstream.c:795
+#: gio/glocalfileinputstream.c:163 gio/glocalfileoutputstream.c:801
 #, c-format
 msgid "Error reading from file: %s"
 msgstr "Erôr tal lei dal file: %s"
 
-#: gio/glocalfileinputstream.c:199 gio/glocalfileinputstream.c:211
-#: gio/glocalfileinputstream.c:225 gio/glocalfileinputstream.c:333
-#: gio/glocalfileoutputstream.c:557 gio/glocalfileoutputstream.c:1117
-#, c-format
-msgid "Error seeking in file: %s"
-msgstr "Erôr tal cirî tal file: %s"
-
-#: gio/glocalfileinputstream.c:255 gio/glocalfileoutputstream.c:347
-#: gio/glocalfileoutputstream.c:441
+#: gio/glocalfileinputstream.c:194 gio/glocalfileoutputstream.c:353
+#: gio/glocalfileoutputstream.c:447
 #, c-format
 msgid "Error closing file: %s"
 msgstr "Erôr tal sierâ il file: %s"
 
-#: gio/glocalfilemonitor.c:865
+#: gio/glocalfileinputstream.c:272 gio/glocalfileoutputstream.c:563
+#: gio/glocalfileoutputstream.c:1186
+#, c-format
+msgid "Error seeking in file: %s"
+msgstr "Erôr tal cirî tal file: %s"
+
+#: gio/glocalfilemonitor.c:866
 msgid "Unable to find default local file monitor type"
 msgstr ""
 
-#: gio/glocalfileoutputstream.c:214 gio/glocalfileoutputstream.c:292
-#: gio/glocalfileoutputstream.c:328 gio/glocalfileoutputstream.c:816
+#: gio/glocalfileoutputstream.c:220 gio/glocalfileoutputstream.c:298
+#: gio/glocalfileoutputstream.c:334 gio/glocalfileoutputstream.c:822
 #, c-format
 msgid "Error writing to file: %s"
 msgstr "Erôr tal scrivi sul file: %s"
 
-#: gio/glocalfileoutputstream.c:374
+#: gio/glocalfileoutputstream.c:380
 #, c-format
 msgid "Error removing old backup link: %s"
-msgstr ""
+msgstr "Erôr tal gjavâ il colegament dal backup vecjo: %s"
 
-#: gio/glocalfileoutputstream.c:388 gio/glocalfileoutputstream.c:401
+#: gio/glocalfileoutputstream.c:394 gio/glocalfileoutputstream.c:407
 #, c-format
 msgid "Error creating backup copy: %s"
 msgstr "Erôr tal creâ une copie di backup: %s"
 
-#: gio/glocalfileoutputstream.c:419
+#: gio/glocalfileoutputstream.c:425
 #, c-format
 msgid "Error renaming temporary file: %s"
 msgstr "Erôr tal cambiâ non al file temporani: %s"
 
-#: gio/glocalfileoutputstream.c:603 gio/glocalfileoutputstream.c:1168
+#: gio/glocalfileoutputstream.c:609 gio/glocalfileoutputstream.c:1237
 #, c-format
 msgid "Error truncating file: %s"
 msgstr "Erôr tal cjonçâ il file: %s"
 
-#: gio/glocalfileoutputstream.c:656 gio/glocalfileoutputstream.c:894
-#: gio/glocalfileoutputstream.c:1149 gio/gsubprocess.c:380
+#: gio/glocalfileoutputstream.c:662 gio/glocalfileoutputstream.c:907
+#: gio/glocalfileoutputstream.c:1218 gio/gsubprocess.c:229
 #, c-format
 msgid "Error opening file “%s”: %s"
 msgstr "Erôr tal vierzi il file “%s”: %s"
 
-#: gio/glocalfileoutputstream.c:928
+#: gio/glocalfileoutputstream.c:957
 msgid "Target file is a directory"
 msgstr "Il file di destinazion al è une cartele"
 
-#: gio/glocalfileoutputstream.c:933
+#: gio/glocalfileoutputstream.c:971
 msgid "Target file is not a regular file"
 msgstr "Il file di destinazion nol è un file regolâr"
 
-#: gio/glocalfileoutputstream.c:945
+#: gio/glocalfileoutputstream.c:1013
 msgid "The file was externally modified"
 msgstr "Il file al è stât modificât di difûr di chi"
 
-#: gio/glocalfileoutputstream.c:1133
+#: gio/glocalfileoutputstream.c:1202
 #, c-format
 msgid "Error removing old file: %s"
 msgstr "Erôr tal gjavâ il file vecjo: %s"
 
-#: gio/gmemoryinputstream.c:474 gio/gmemoryoutputstream.c:772
+#: gio/gmemoryinputstream.c:474 gio/gmemoryoutputstream.c:762
 msgid "Invalid GSeekType supplied"
 msgstr "Furnît GSeekType no valit"
 
@@ -3312,41 +3351,43 @@ msgstr "Richieste di ricercje no valide"
 msgid "Cannot truncate GMemoryInputStream"
 msgstr "Impussibil cjonçâ GMemoryInputStream"
 
-#: gio/gmemoryoutputstream.c:567
+#: gio/gmemoryoutputstream.c:568
 msgid "Memory output stream not resizable"
-msgstr ""
+msgstr "Nol è pussibil ridimensionâ il flus di jessude de memorie"
 
-#: gio/gmemoryoutputstream.c:583
+#: gio/gmemoryoutputstream.c:584
 msgid "Failed to resize memory output stream"
 msgstr "No si è rivâts a ridimensionâ il flus di jessude de memorie"
 
-#: gio/gmemoryoutputstream.c:673
+#: gio/gmemoryoutputstream.c:663
 msgid ""
 "Amount of memory required to process the write is larger than available "
 "address space"
 msgstr ""
+"La cuantitât de memorie necessarie par elaborâ la scriture e je plui grande "
+"dal spazi di indreçament disponibil"
 
-#: gio/gmemoryoutputstream.c:782
+#: gio/gmemoryoutputstream.c:772
 msgid "Requested seek before the beginning of the stream"
-msgstr ""
+msgstr "Domandât posizionament prime dal inizi dal flus"
 
-#: gio/gmemoryoutputstream.c:797
+#: gio/gmemoryoutputstream.c:787
 msgid "Requested seek beyond the end of the stream"
-msgstr ""
+msgstr "Domandât posizionament plui in là de fin dal flus"
 
 #. Translators: This is an error
 #. * message for mount objects that
 #. * don't implement unmount.
 #: gio/gmount.c:399
 msgid "mount doesn’t implement “unmount”"
-msgstr ""
+msgstr "il montaç nol implemente la azion par dismontâ “unmount”"
 
 #. Translators: This is an error
 #. * message for mount objects that
 #. * don't implement eject.
 #: gio/gmount.c:475
 msgid "mount doesn’t implement “eject”"
-msgstr ""
+msgstr "il montaç nol implemente la azion par parâ fûr “eject”"
 
 #. Translators: This is an error
 #. * message for mount objects that
@@ -3410,12 +3451,12 @@ msgstr ""
 msgid "Could not get network status: "
 msgstr "Impussibil otignî il stât de rêt: "
 
-#: gio/gnetworkmonitornm.c:348
+#: gio/gnetworkmonitornm.c:311
 #, c-format
 msgid "NetworkManager not running"
 msgstr "NetworkManager nol è in esecuzion"
 
-#: gio/gnetworkmonitornm.c:359
+#: gio/gnetworkmonitornm.c:322
 #, c-format
 msgid "NetworkManager version too old"
 msgstr "Version di NetworkManager masse vecje"
@@ -3433,18 +3474,18 @@ msgstr ""
 msgid "Source stream is already closed"
 msgstr "Il flus sorzint al è za sierât"
 
-#: gio/gresolver.c:386 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
+#: gio/gresolver.c:401 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
 #, c-format
 msgid "Error resolving “%s”: %s"
 msgstr "Erôr tal risolvi “%s”: %s"
 
 #. Translators: The placeholder is for a function name.
-#: gio/gresolver.c:455 gio/gresolver.c:615
+#: gio/gresolver.c:470 gio/gresolver.c:630
 #, c-format
 msgid "%s not implemented"
 msgstr ""
 
-#: gio/gresolver.c:984 gio/gresolver.c:1036
+#: gio/gresolver.c:999 gio/gresolver.c:1051
 msgid "Invalid domain"
 msgstr "Domini no valit"
 
@@ -3470,26 +3511,26 @@ msgstr "La risorse lì di “%s” no je une cartele"
 msgid "Input stream doesn’t implement seek"
 msgstr ""
 
-#: gio/gresource-tool.c:499
+#: gio/gresource-tool.c:500
 msgid "List sections containing resources in an elf FILE"
 msgstr ""
 
-#: gio/gresource-tool.c:505
+#: gio/gresource-tool.c:506
 msgid ""
 "List resources\n"
 "If SECTION is given, only list resources in this section\n"
 "If PATH is given, only list matching resources"
 msgstr ""
 
-#: gio/gresource-tool.c:508 gio/gresource-tool.c:518
+#: gio/gresource-tool.c:509 gio/gresource-tool.c:519
 msgid "FILE [PATH]"
 msgstr "FILE [PERCORS]"
 
-#: gio/gresource-tool.c:509 gio/gresource-tool.c:519 gio/gresource-tool.c:526
+#: gio/gresource-tool.c:510 gio/gresource-tool.c:520 gio/gresource-tool.c:527
 msgid "SECTION"
 msgstr "SEZION"
 
-#: gio/gresource-tool.c:514
+#: gio/gresource-tool.c:515
 msgid ""
 "List resources with details\n"
 "If SECTION is given, only list resources in this section\n"
@@ -3497,15 +3538,15 @@ msgid ""
 "Details include the section, size and compression"
 msgstr ""
 
-#: gio/gresource-tool.c:524
+#: gio/gresource-tool.c:525
 msgid "Extract a resource file to stdout"
 msgstr ""
 
-#: gio/gresource-tool.c:525
+#: gio/gresource-tool.c:526
 msgid "FILE PATH"
 msgstr "PERCORS FILE"
 
-#: gio/gresource-tool.c:539
+#: gio/gresource-tool.c:540
 msgid ""
 "Usage:\n"
 "  gresource [--section SECTION] COMMAND [ARGS…]\n"
@@ -3521,7 +3562,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: gio/gresource-tool.c:553
+#: gio/gresource-tool.c:554
 #, c-format
 msgid ""
 "Usage:\n"
@@ -3531,41 +3572,41 @@ msgid ""
 "\n"
 msgstr ""
 
-#: gio/gresource-tool.c:560
+#: gio/gresource-tool.c:561
 msgid "  SECTION   An (optional) elf section name\n"
 msgstr ""
 
-#: gio/gresource-tool.c:564 gio/gsettings-tool.c:701
+#: gio/gresource-tool.c:565 gio/gsettings-tool.c:718
 msgid "  COMMAND   The (optional) command to explain\n"
 msgstr ""
 
-#: gio/gresource-tool.c:570
+#: gio/gresource-tool.c:571
 msgid "  FILE      An elf file (a binary or a shared library)\n"
 msgstr ""
 
-#: gio/gresource-tool.c:573
+#: gio/gresource-tool.c:574
 msgid ""
 "  FILE      An elf file (a binary or a shared library)\n"
 "            or a compiled resource file\n"
 msgstr ""
 
-#: gio/gresource-tool.c:577
+#: gio/gresource-tool.c:578
 msgid "[PATH]"
 msgstr ""
 
-#: gio/gresource-tool.c:579
+#: gio/gresource-tool.c:580
 msgid "  PATH      An (optional) resource path (may be partial)\n"
 msgstr ""
 
-#: gio/gresource-tool.c:580
+#: gio/gresource-tool.c:581
 msgid "PATH"
 msgstr ""
 
-#: gio/gresource-tool.c:582
+#: gio/gresource-tool.c:583
 msgid "  PATH      A resource path\n"
 msgstr ""
 
-#: gio/gsettings-tool.c:49 gio/gsettings-tool.c:70 gio/gsettings-tool.c:906
+#: gio/gsettings-tool.c:49 gio/gsettings-tool.c:70 gio/gsettings-tool.c:923
 #, c-format
 msgid "No such schema “%s”\n"
 msgstr ""
@@ -3596,93 +3637,93 @@ msgstr ""
 msgid "Path must not contain two adjacent slashes (//)\n"
 msgstr ""
 
-#: gio/gsettings-tool.c:536
+#: gio/gsettings-tool.c:553
 msgid "The provided value is outside of the valid range\n"
 msgstr ""
 
-#: gio/gsettings-tool.c:543
+#: gio/gsettings-tool.c:560
 msgid "The key is not writable\n"
 msgstr ""
 
-#: gio/gsettings-tool.c:579
+#: gio/gsettings-tool.c:596
 msgid "List the installed (non-relocatable) schemas"
 msgstr ""
 
-#: gio/gsettings-tool.c:585
+#: gio/gsettings-tool.c:602
 msgid "List the installed relocatable schemas"
 msgstr ""
 
-#: gio/gsettings-tool.c:591
+#: gio/gsettings-tool.c:608
 msgid "List the keys in SCHEMA"
 msgstr ""
 
-#: gio/gsettings-tool.c:592 gio/gsettings-tool.c:598 gio/gsettings-tool.c:641
+#: gio/gsettings-tool.c:609 gio/gsettings-tool.c:615 gio/gsettings-tool.c:658
 msgid "SCHEMA[:PATH]"
 msgstr "SCHEME[:PERCORS]"
 
-#: gio/gsettings-tool.c:597
+#: gio/gsettings-tool.c:614
 msgid "List the children of SCHEMA"
 msgstr ""
 
-#: gio/gsettings-tool.c:603
+#: gio/gsettings-tool.c:620
 msgid ""
 "List keys and values, recursively\n"
 "If no SCHEMA is given, list all keys\n"
 msgstr ""
 
-#: gio/gsettings-tool.c:605
+#: gio/gsettings-tool.c:622
 msgid "[SCHEMA[:PATH]]"
 msgstr "[SCHEME[:PERCORS]]"
 
-#: gio/gsettings-tool.c:610
+#: gio/gsettings-tool.c:627
 msgid "Get the value of KEY"
 msgstr ""
 
-#: gio/gsettings-tool.c:611 gio/gsettings-tool.c:617 gio/gsettings-tool.c:623
-#: gio/gsettings-tool.c:635 gio/gsettings-tool.c:647
+#: gio/gsettings-tool.c:628 gio/gsettings-tool.c:634 gio/gsettings-tool.c:640
+#: gio/gsettings-tool.c:652 gio/gsettings-tool.c:664
 msgid "SCHEMA[:PATH] KEY"
 msgstr "SCHEME[:PERCORS] CLÂF"
 
-#: gio/gsettings-tool.c:616
+#: gio/gsettings-tool.c:633
 msgid "Query the range of valid values for KEY"
 msgstr ""
 
-#: gio/gsettings-tool.c:622
+#: gio/gsettings-tool.c:639
 msgid "Query the description for KEY"
 msgstr ""
 
-#: gio/gsettings-tool.c:628
+#: gio/gsettings-tool.c:645
 msgid "Set the value of KEY to VALUE"
 msgstr ""
 
-#: gio/gsettings-tool.c:629
+#: gio/gsettings-tool.c:646
 msgid "SCHEMA[:PATH] KEY VALUE"
 msgstr "SCHEME[:PERCORS] CLÂF VALÔR"
 
-#: gio/gsettings-tool.c:634
+#: gio/gsettings-tool.c:651
 msgid "Reset KEY to its default value"
 msgstr ""
 
-#: gio/gsettings-tool.c:640
+#: gio/gsettings-tool.c:657
 msgid "Reset all keys in SCHEMA to their defaults"
 msgstr ""
 
-#: gio/gsettings-tool.c:646
+#: gio/gsettings-tool.c:663
 msgid "Check if KEY is writable"
 msgstr ""
 
-#: gio/gsettings-tool.c:652
+#: gio/gsettings-tool.c:669
 msgid ""
 "Monitor KEY for changes.\n"
 "If no KEY is specified, monitor all keys in SCHEMA.\n"
 "Use ^C to stop monitoring.\n"
 msgstr ""
 
-#: gio/gsettings-tool.c:655
+#: gio/gsettings-tool.c:672
 msgid "SCHEMA[:PATH] [KEY]"
 msgstr "SCHEME[:PERCORS] [CLÂF]"
 
-#: gio/gsettings-tool.c:667
+#: gio/gsettings-tool.c:684
 msgid ""
 "Usage:\n"
 "  gsettings --version\n"
@@ -3708,7 +3749,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: gio/gsettings-tool.c:691
+#: gio/gsettings-tool.c:708
 #, c-format
 msgid ""
 "Usage:\n"
@@ -3718,223 +3759,221 @@ msgid ""
 "\n"
 msgstr ""
 
-#: gio/gsettings-tool.c:697
+#: gio/gsettings-tool.c:714
 msgid "  SCHEMADIR A directory to search for additional schemas\n"
 msgstr ""
 
-#: gio/gsettings-tool.c:705
+#: gio/gsettings-tool.c:722
 msgid ""
 "  SCHEMA    The name of the schema\n"
 "  PATH      The path, for relocatable schemas\n"
 msgstr ""
 
-#: gio/gsettings-tool.c:710
+#: gio/gsettings-tool.c:727
 msgid "  KEY       The (optional) key within the schema\n"
 msgstr ""
 
-#: gio/gsettings-tool.c:714
+#: gio/gsettings-tool.c:731
 msgid "  KEY       The key within the schema\n"
 msgstr ""
 
-#: gio/gsettings-tool.c:718
+#: gio/gsettings-tool.c:735
 msgid "  VALUE     The value to set\n"
 msgstr ""
 
-#: gio/gsettings-tool.c:773
+#: gio/gsettings-tool.c:790
 #, c-format
 msgid "Could not load schemas from %s: %s\n"
 msgstr ""
 
-#: gio/gsettings-tool.c:785
+#: gio/gsettings-tool.c:802
 msgid "No schemas installed\n"
 msgstr "Nissun scheme instalât\n"
 
-#: gio/gsettings-tool.c:864
+#: gio/gsettings-tool.c:881
 msgid "Empty schema name given\n"
 msgstr "Furnît non di scheme vueit\n"
 
-#: gio/gsettings-tool.c:919
+#: gio/gsettings-tool.c:936
 #, c-format
 msgid "No such key “%s”\n"
 msgstr "Clâf “%s” inesistente\n"
 
-#: gio/gsocket.c:413
+#: gio/gsocket.c:417
 msgid "Invalid socket, not initialized"
 msgstr ""
 
-#: gio/gsocket.c:420
+#: gio/gsocket.c:424
 #, c-format
 msgid "Invalid socket, initialization failed due to: %s"
 msgstr ""
 
-#: gio/gsocket.c:428
+#: gio/gsocket.c:432
 msgid "Socket is already closed"
 msgstr "Il socket al è za sierât"
 
-#: gio/gsocket.c:443 gio/gsocket.c:3190 gio/gsocket.c:4420 gio/gsocket.c:4478
+#: gio/gsocket.c:447 gio/gsocket.c:3194 gio/gsocket.c:4427 gio/gsocket.c:4485
 msgid "Socket I/O timed out"
 msgstr "I/O dal socket scjadût"
 
-#: gio/gsocket.c:578
+#: gio/gsocket.c:582
 #, c-format
 msgid "creating GSocket from fd: %s"
 msgstr ""
 
-#: gio/gsocket.c:607 gio/gsocket.c:671 gio/gsocket.c:678
+#: gio/gsocket.c:611 gio/gsocket.c:675 gio/gsocket.c:682
 #, c-format
 msgid "Unable to create socket: %s"
 msgstr ""
 
-#: gio/gsocket.c:671
+#: gio/gsocket.c:675
 msgid "Unknown family was specified"
 msgstr "E je stade specificade une famee no cognossude"
 
-#: gio/gsocket.c:678
+#: gio/gsocket.c:682
 msgid "Unknown protocol was specified"
 msgstr "Al è stât specificât un protocol no cognossût"
 
-#: gio/gsocket.c:1169
+#: gio/gsocket.c:1173
 #, c-format
 msgid "Cannot use datagram operations on a non-datagram socket."
 msgstr ""
 
-#: gio/gsocket.c:1186
+#: gio/gsocket.c:1190
 #, c-format
 msgid "Cannot use datagram operations on a socket with a timeout set."
 msgstr ""
 
-#: gio/gsocket.c:1993
+#: gio/gsocket.c:1997
 #, c-format
 msgid "could not get local address: %s"
 msgstr ""
 
-#: gio/gsocket.c:2039
+#: gio/gsocket.c:2043
 #, c-format
 msgid "could not get remote address: %s"
 msgstr ""
 
-#: gio/gsocket.c:2105
+#: gio/gsocket.c:2109
 #, c-format
 msgid "could not listen: %s"
 msgstr "impussibil scoltâ: %s"
 
-#: gio/gsocket.c:2209
-#, fuzzy, c-format
-#| msgid "Error sending data: %s"
+#: gio/gsocket.c:2213
+#, c-format
 msgid "Error binding to address %s: %s"
-msgstr "Erôr tal inviâ dâts: %s"
+msgstr "Erôr tal leâ ae direzion %s: %s"
 
-#: gio/gsocket.c:2385 gio/gsocket.c:2422 gio/gsocket.c:2532 gio/gsocket.c:2557
-#: gio/gsocket.c:2620 gio/gsocket.c:2678 gio/gsocket.c:2696
+#: gio/gsocket.c:2389 gio/gsocket.c:2426 gio/gsocket.c:2536 gio/gsocket.c:2561
+#: gio/gsocket.c:2624 gio/gsocket.c:2682 gio/gsocket.c:2700
 #, c-format
 msgid "Error joining multicast group: %s"
 msgstr ""
 
-#: gio/gsocket.c:2386 gio/gsocket.c:2423 gio/gsocket.c:2533 gio/gsocket.c:2558
-#: gio/gsocket.c:2621 gio/gsocket.c:2679 gio/gsocket.c:2697
+#: gio/gsocket.c:2390 gio/gsocket.c:2427 gio/gsocket.c:2537 gio/gsocket.c:2562
+#: gio/gsocket.c:2625 gio/gsocket.c:2683 gio/gsocket.c:2701
 #, c-format
 msgid "Error leaving multicast group: %s"
 msgstr ""
 
-#: gio/gsocket.c:2387
+#: gio/gsocket.c:2391
 msgid "No support for source-specific multicast"
 msgstr ""
 
-#: gio/gsocket.c:2534
+#: gio/gsocket.c:2538
 msgid "Unsupported socket family"
 msgstr "Famee dal socket no supuartade"
 
-#: gio/gsocket.c:2559
+#: gio/gsocket.c:2563
 msgid "source-specific not an IPv4 address"
 msgstr ""
 
-#: gio/gsocket.c:2583
+#: gio/gsocket.c:2587
 #, c-format
 msgid "Interface name too long"
 msgstr "Non interface masse lunc"
 
-#: gio/gsocket.c:2596 gio/gsocket.c:2646
+#: gio/gsocket.c:2600 gio/gsocket.c:2650
 #, c-format
 msgid "Interface not found: %s"
 msgstr "Interface no cjatade: %s"
 
-#: gio/gsocket.c:2622
+#: gio/gsocket.c:2626
 msgid "No support for IPv4 source-specific multicast"
 msgstr ""
 
-#: gio/gsocket.c:2680
+#: gio/gsocket.c:2684
 msgid "No support for IPv6 source-specific multicast"
 msgstr ""
 
-#: gio/gsocket.c:2889
+#: gio/gsocket.c:2893
 #, c-format
 msgid "Error accepting connection: %s"
 msgstr "Erôr tal acetâ la conession: %s"
 
-#: gio/gsocket.c:3015
+#: gio/gsocket.c:3019
 msgid "Connection in progress"
 msgstr "Conession in vore"
 
-#: gio/gsocket.c:3066
+#: gio/gsocket.c:3070
 msgid "Unable to get pending error: "
 msgstr ""
 
-#: gio/gsocket.c:3255
+#: gio/gsocket.c:3259
 #, c-format
 msgid "Error receiving data: %s"
 msgstr "Erôr tal ricevi dâts: %s"
 
-#: gio/gsocket.c:3452
+#: gio/gsocket.c:3456
 #, c-format
 msgid "Error sending data: %s"
 msgstr "Erôr tal inviâ dâts: %s"
 
-#: gio/gsocket.c:3639
+#: gio/gsocket.c:3643
 #, c-format
 msgid "Unable to shutdown socket: %s"
 msgstr "Impussibil distudâ il socket: %s"
 
-#: gio/gsocket.c:3720
+#: gio/gsocket.c:3724
 #, c-format
 msgid "Error closing socket: %s"
 msgstr "Erôr tal sierâ il socket: %s"
 
-#: gio/gsocket.c:4413
+#: gio/gsocket.c:4420
 #, c-format
 msgid "Waiting for socket condition: %s"
 msgstr ""
 
-#: gio/gsocket.c:4793 gio/gsocket.c:4805
-#, fuzzy, c-format
-#| msgid "Error sending message: %s"
+#: gio/gsocket.c:4810 gio/gsocket.c:4826 gio/gsocket.c:4839
+#, c-format
 msgid "Unable to send message: %s"
-msgstr "Erôr tal inviâ il messaç: %s"
+msgstr "Impussibil inviâ il messaç: %s"
 
-#: gio/gsocket.c:4794 gio/gsocket.c:4806
+#: gio/gsocket.c:4811 gio/gsocket.c:4827 gio/gsocket.c:4840
 msgid "Message vectors too large"
 msgstr ""
 
-#: gio/gsocket.c:4822 gio/gsocket.c:4824 gio/gsocket.c:4971 gio/gsocket.c:5056
-#: gio/gsocket.c:5234 gio/gsocket.c:5274 gio/gsocket.c:5276
+#: gio/gsocket.c:4856 gio/gsocket.c:4858 gio/gsocket.c:5005 gio/gsocket.c:5090
+#: gio/gsocket.c:5268 gio/gsocket.c:5308 gio/gsocket.c:5310
 #, c-format
 msgid "Error sending message: %s"
 msgstr "Erôr tal inviâ il messaç: %s"
 
-#: gio/gsocket.c:4998
+#: gio/gsocket.c:5032
 msgid "GSocketControlMessage not supported on Windows"
 msgstr ""
 
-#: gio/gsocket.c:5467 gio/gsocket.c:5540 gio/gsocket.c:5766
+#: gio/gsocket.c:5505 gio/gsocket.c:5581 gio/gsocket.c:5807
 #, c-format
 msgid "Error receiving message: %s"
 msgstr "Erôr tal ricevi il messaç: %s"
 
-#: gio/gsocket.c:6039 gio/gsocket.c:6050 gio/gsocket.c:6096
+#: gio/gsocket.c:6090 gio/gsocket.c:6101 gio/gsocket.c:6164
 #, c-format
 msgid "Unable to read socket credentials: %s"
 msgstr ""
 
-#: gio/gsocket.c:6105
+#: gio/gsocket.c:6173
 msgid "g_socket_get_credentials not implemented for this OS"
 msgstr ""
 
@@ -3952,11 +3991,11 @@ msgstr "Impussibil conetisi a %s: "
 msgid "Could not connect: "
 msgstr "Impussibil conetisi: "
 
-#: gio/gsocketclient.c:1162 gio/gsocketclient.c:1749
+#: gio/gsocketclient.c:1202 gio/gsocketclient.c:1793
 msgid "Proxying over a non-TCP connection is not supported."
 msgstr ""
 
-#: gio/gsocketclient.c:1194 gio/gsocketclient.c:1778
+#: gio/gsocketclient.c:1234 gio/gsocketclient.c:1822
 #, c-format
 msgid "Proxy protocol “%s” is not supported."
 msgstr ""
@@ -4001,8 +4040,8 @@ msgstr ""
 
 #: gio/gsocks5proxy.c:191
 msgid ""
-"The SOCKSv5 proxy requires an authentication method that is not supported by "
-"GLib."
+"The SOCKSv5 proxy requires an authentication method that is not supported by"
+" GLib."
 msgstr ""
 
 #: gio/gsocks5proxy.c:220
@@ -4054,6 +4093,16 @@ msgstr ""
 msgid "Unknown SOCKSv5 proxy error."
 msgstr ""
 
+#: gio/gtestdbus.c:612 glib/gspawn-win32.c:314
+#, c-format
+msgid "Failed to create pipe for communicating with child process (%s)"
+msgstr "No si è rivâts a creâ il condot par comunicâ cul procès fi (%s)"
+
+#: gio/gtestdbus.c:619
+#, c-format
+msgid "Pipes are not supported in this platform"
+msgstr "I condots no son supuartâts in cheste plateforme"
+
 #: gio/gthemedicon.c:595
 #, c-format
 msgid "Can’t handle version %d of GThemedIcon encoding"
@@ -4085,27 +4134,31 @@ msgstr ""
 msgid "Error resolving “%s”"
 msgstr ""
 
-#: gio/gtlscertificate.c:298
+#: gio/gtlscertificate.c:478
 msgid "No PEM-encoded private key found"
 msgstr ""
 
-#: gio/gtlscertificate.c:308
+#: gio/gtlscertificate.c:488
 msgid "Cannot decrypt PEM-encoded private key"
 msgstr ""
 
-#: gio/gtlscertificate.c:319
+#: gio/gtlscertificate.c:499
 msgid "Could not parse PEM-encoded private key"
 msgstr ""
 
-#: gio/gtlscertificate.c:346
+#: gio/gtlscertificate.c:526
 msgid "No PEM-encoded certificate found"
 msgstr ""
 
-#: gio/gtlscertificate.c:355
+#: gio/gtlscertificate.c:535
 msgid "Could not parse PEM-encoded certificate"
 msgstr ""
 
-#: gio/gtlscertificate.c:710
+#: gio/gtlscertificate.c:796
+msgid "The current TLS backend does not support PKCS #12"
+msgstr ""
+
+#: gio/gtlscertificate.c:1013
 msgid "This GTlsBackend does not support creating PKCS #11 certificates"
 msgstr ""
 
@@ -4127,80 +4180,89 @@ msgstr ""
 msgid "The password entered is incorrect."
 msgstr ""
 
-#: gio/gunixconnection.c:166 gio/gunixconnection.c:579
+#: gio/gunixconnection.c:125
+msgid "Sending FD is not supported"
+msgstr "L'inviâ FD nol è supuartât"
+
+#: gio/gunixconnection.c:178 gio/gunixconnection.c:596
 #, 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:591
+#: gio/gunixconnection.c:194 gio/gunixconnection.c:608
 msgid "Unexpected type of ancillary data"
 msgstr ""
 
-#: gio/gunixconnection.c:200
+#: gio/gunixconnection.c:212
 #, c-format
 msgid "Expecting one fd, but got %d\n"
 msgid_plural "Expecting one fd, but got %d\n"
 msgstr[0] ""
 msgstr[1] ""
 
-#: gio/gunixconnection.c:219
+#: gio/gunixconnection.c:231
 msgid "Received invalid fd"
 msgstr ""
 
-#: gio/gunixconnection.c:363
+#: gio/gunixconnection.c:238
+msgid "Receiving FD is not supported"
+msgstr "La ricezion di FD no je supuartade"
+
+#: gio/gunixconnection.c:380
 msgid "Error sending credentials: "
 msgstr ""
 
-#: gio/gunixconnection.c:520
+#: gio/gunixconnection.c:537
 #, c-format
 msgid "Error checking if SO_PASSCRED is enabled for socket: %s"
 msgstr ""
 
-#: gio/gunixconnection.c:536
+#: gio/gunixconnection.c:553
 #, c-format
 msgid "Error enabling SO_PASSCRED: %s"
 msgstr ""
 
-#: gio/gunixconnection.c:565
+#: gio/gunixconnection.c:582
 msgid ""
-"Expecting to read a single byte for receiving credentials but read zero bytes"
+"Expecting to read a single byte for receiving credentials but read zero "
+"bytes"
 msgstr ""
 
-#: gio/gunixconnection.c:605
+#: gio/gunixconnection.c:622
 #, c-format
 msgid "Not expecting control message, but got %d"
 msgstr ""
 
-#: gio/gunixconnection.c:630
+#: gio/gunixconnection.c:647
 #, c-format
 msgid "Error while disabling SO_PASSCRED: %s"
 msgstr ""
 
-#: gio/gunixinputstream.c:362 gio/gunixinputstream.c:383
+#: gio/gunixinputstream.c:357 gio/gunixinputstream.c:378
 #, c-format
 msgid "Error reading from file descriptor: %s"
 msgstr ""
 
-#: gio/gunixinputstream.c:416 gio/gunixoutputstream.c:525
+#: gio/gunixinputstream.c:411 gio/gunixoutputstream.c:520
 #: gio/gwin32inputstream.c:217 gio/gwin32outputstream.c:204
 #, c-format
 msgid "Error closing file descriptor: %s"
 msgstr ""
 
-#: gio/gunixmounts.c:2755 gio/gunixmounts.c:2808
+#: gio/gunixmounts.c:2809 gio/gunixmounts.c:2862
 msgid "Filesystem root"
 msgstr "Lidrîs dal filesystem"
 
-#: gio/gunixoutputstream.c:362 gio/gunixoutputstream.c:382
-#: gio/gunixoutputstream.c:469 gio/gunixoutputstream.c:489
-#: gio/gunixoutputstream.c:635
+#: gio/gunixoutputstream.c:357 gio/gunixoutputstream.c:377
+#: gio/gunixoutputstream.c:464 gio/gunixoutputstream.c:484
+#: gio/gunixoutputstream.c:630
 #, c-format
 msgid "Error writing to file descriptor: %s"
 msgstr ""
 
-#: gio/gunixsocketaddress.c:243
+#: gio/gunixsocketaddress.c:251
 msgid "Abstract UNIX domain socket addresses not supported on this system"
 msgstr ""
 
@@ -4271,138 +4333,135 @@ msgstr ""
 msgid "Wrong args\n"
 msgstr ""
 
-#: glib/gbookmarkfile.c:768
+#: glib/gbookmarkfile.c:777
 #, c-format
 msgid "Unexpected attribute “%s” for element “%s”"
 msgstr ""
 
-#: glib/gbookmarkfile.c:779 glib/gbookmarkfile.c:859 glib/gbookmarkfile.c:869
-#: glib/gbookmarkfile.c:982
+#: glib/gbookmarkfile.c:788 glib/gbookmarkfile.c:868 glib/gbookmarkfile.c:878
+#: glib/gbookmarkfile.c:991
 #, c-format
 msgid "Attribute “%s” of element “%s” not found"
 msgstr ""
 
-#: glib/gbookmarkfile.c:1191 glib/gbookmarkfile.c:1256
-#: glib/gbookmarkfile.c:1320 glib/gbookmarkfile.c:1330
+#: glib/gbookmarkfile.c:1200 glib/gbookmarkfile.c:1265
+#: glib/gbookmarkfile.c:1329 glib/gbookmarkfile.c:1339
 #, c-format
 msgid "Unexpected tag “%s”, tag “%s” expected"
 msgstr ""
 
-#: glib/gbookmarkfile.c:1216 glib/gbookmarkfile.c:1230
-#: glib/gbookmarkfile.c:1298 glib/gbookmarkfile.c:1344
+#: glib/gbookmarkfile.c:1225 glib/gbookmarkfile.c:1239
+#: glib/gbookmarkfile.c:1307 glib/gbookmarkfile.c:1353
 #, c-format
 msgid "Unexpected tag “%s” inside “%s”"
 msgstr ""
 
-#: glib/gbookmarkfile.c:1624
+#: glib/gbookmarkfile.c:1633
 #, c-format
 msgid "Invalid date/time ‘%s’ in bookmark file"
 msgstr ""
 
-#: glib/gbookmarkfile.c:1827
+#: glib/gbookmarkfile.c:1836
 msgid "No valid bookmark file found in data dirs"
 msgstr ""
 
-#: glib/gbookmarkfile.c:2028
+#: glib/gbookmarkfile.c:2037
 #, c-format
 msgid "A bookmark for URI “%s” already exists"
 msgstr ""
 
-#: glib/gbookmarkfile.c:2077 glib/gbookmarkfile.c:2235
-#: glib/gbookmarkfile.c:2320 glib/gbookmarkfile.c:2400
-#: glib/gbookmarkfile.c:2485 glib/gbookmarkfile.c:2619
-#: glib/gbookmarkfile.c:2752 glib/gbookmarkfile.c:2887
-#: glib/gbookmarkfile.c:2929 glib/gbookmarkfile.c:3026
-#: glib/gbookmarkfile.c:3147 glib/gbookmarkfile.c:3341
-#: glib/gbookmarkfile.c:3482 glib/gbookmarkfile.c:3701
-#: glib/gbookmarkfile.c:3790 glib/gbookmarkfile.c:3879
-#: glib/gbookmarkfile.c:3998
+#: glib/gbookmarkfile.c:2086 glib/gbookmarkfile.c:2244
+#: glib/gbookmarkfile.c:2329 glib/gbookmarkfile.c:2409
+#: glib/gbookmarkfile.c:2494 glib/gbookmarkfile.c:2628
+#: glib/gbookmarkfile.c:2761 glib/gbookmarkfile.c:2896
+#: glib/gbookmarkfile.c:2938 glib/gbookmarkfile.c:3035
+#: glib/gbookmarkfile.c:3156 glib/gbookmarkfile.c:3350
+#: glib/gbookmarkfile.c:3491 glib/gbookmarkfile.c:3710
+#: glib/gbookmarkfile.c:3799 glib/gbookmarkfile.c:3888
+#: glib/gbookmarkfile.c:4007
 #, c-format
 msgid "No bookmark found for URI “%s”"
 msgstr ""
 
-#: glib/gbookmarkfile.c:2409
+#: glib/gbookmarkfile.c:2418
 #, c-format
 msgid "No MIME type defined in the bookmark for URI “%s”"
 msgstr ""
 
-#: glib/gbookmarkfile.c:2494
+#: glib/gbookmarkfile.c:2503
 #, c-format
 msgid "No private flag has been defined in bookmark for URI “%s”"
 msgstr ""
 
-#: glib/gbookmarkfile.c:3035
+#: glib/gbookmarkfile.c:3044
 #, c-format
 msgid "No groups set in bookmark for URI “%s”"
 msgstr ""
 
-#: glib/gbookmarkfile.c:3503 glib/gbookmarkfile.c:3711
+#: glib/gbookmarkfile.c:3512 glib/gbookmarkfile.c:3720
 #, c-format
 msgid "No application with name “%s” registered a bookmark for “%s”"
 msgstr ""
 
-#: glib/gbookmarkfile.c:3734
+#: glib/gbookmarkfile.c:3743
 #, c-format
 msgid "Failed to expand exec line “%s” with URI “%s”"
 msgstr ""
 
-#: glib/gconvert.c:467
+#: glib/gconvert.c:468
 msgid "Unrepresentable character in conversion input"
 msgstr "Caratar che no si pues rapresentâ tal input di conversion"
 
-#: glib/gconvert.c:494 glib/gutf8.c:871 glib/gutf8.c:1083 glib/gutf8.c:1220
-#: glib/gutf8.c:1324
+#: glib/gconvert.c:495 glib/gutf8.c:886 glib/gutf8.c:1099 glib/gutf8.c:1236
+#: glib/gutf8.c:1340
 msgid "Partial character sequence at end of input"
 msgstr ""
 
-#: glib/gconvert.c:763
+#: glib/gconvert.c:764
 #, c-format
 msgid "Cannot convert fallback “%s” to codeset “%s”"
 msgstr ""
 
-#: glib/gconvert.c:935
-#, fuzzy
-#| msgid "Invalid byte sequence in conversion input"
+#: glib/gconvert.c:936
 msgid "Embedded NUL byte in conversion input"
-msgstr "Secuence byte no valide tal input di conversion"
+msgstr "Byte NUL incorporât tal input di conversion"
 
-#: glib/gconvert.c:956
-#, fuzzy
-#| msgid "Invalid byte sequence in conversion input"
+#: glib/gconvert.c:957
 msgid "Embedded NUL byte in conversion output"
-msgstr "Secuence byte no valide tal input di conversion"
+msgstr "Byte NUL incorporât tal output di conversion"
 
-#: glib/gconvert.c:1641
+#: glib/gconvert.c:1688
 #, c-format
 msgid "The URI “%s” is not an absolute URI using the “file” scheme"
 msgstr ""
 
-#: glib/gconvert.c:1651
+#: glib/gconvert.c:1698
 #, c-format
 msgid "The local file URI “%s” may not include a “#”"
 msgstr ""
 
-#: glib/gconvert.c:1668
+#: glib/gconvert.c:1715
 #, c-format
 msgid "The URI “%s” is invalid"
 msgstr ""
 
-#: glib/gconvert.c:1680
+#: glib/gconvert.c:1727
 #, c-format
 msgid "The hostname of the URI “%s” is invalid"
 msgstr ""
 
-#: glib/gconvert.c:1696
+#: glib/gconvert.c:1743
 #, c-format
 msgid "The URI “%s” contains invalidly escaped characters"
 msgstr ""
 
-#: glib/gconvert.c:1768
+#: glib/gconvert.c:1815
 #, c-format
 msgid "The pathname “%s” is not an absolute path"
 msgstr ""
 
-#. Translators: this is the preferred format for expressing the date and the time
+#. Translators: this is the preferred format for expressing the date and the
+#. time
 #: glib/gdatetime.c:226
 msgctxt "GDateTime"
 msgid "%a %b %e %H:%M:%S %Y"
@@ -4441,7 +4500,6 @@ msgstr "%I:%M:%S %p"
 #. * paste here.  Note that in most of the languages (western European,
 #. * non-European) there is no difference between the standalone and
 #. * complete date form.
-#.
 #: glib/gdatetime.c:274
 msgctxt "full month name"
 msgid "January"
@@ -4518,7 +4576,6 @@ msgstr "Dicembar"
 #. * and paste here.  Note that this feature is not yet supported by any
 #. * other platform.  Here are abbreviated month names in a form
 #. * appropriate when they are used standalone.
-#.
 #: glib/gdatetime.c:328
 msgctxt "abbreviated month name"
 msgid "Jan"
@@ -4665,7 +4722,6 @@ msgstr "Dom"
 #. * incorrect in some languages.  Note that in most of the languages
 #. * (western European, non-European) there is no difference between the
 #. * standalone and complete date form.
-#.
 #: glib/gdatetime.c:468
 msgctxt "full month name with day"
 msgid "January"
@@ -4742,7 +4798,6 @@ msgstr "Dicembar"
 #. * `locale abmon' in your native locale produces a complete list of
 #. * month names almost ready to copy and paste here.  In other systems
 #. * due to a bug the result is incorrect in some languages.
-#.
 #: glib/gdatetime.c:555
 msgctxt "abbreviated month name with day"
 msgid "Jan"
@@ -4815,202 +4870,202 @@ msgctxt "GDateTime"
 msgid "PM"
 msgstr "PM"
 
-#: glib/gdir.c:154
+#: glib/gdir.c:156
 #, c-format
 msgid "Error opening directory “%s”: %s"
 msgstr ""
 
-#: glib/gfileutils.c:737 glib/gfileutils.c:829
+#: glib/gfileutils.c:733 glib/gfileutils.c:825
 #, c-format
 msgid "Could not allocate %lu byte to read file “%s”"
 msgid_plural "Could not allocate %lu bytes to read file “%s”"
 msgstr[0] ""
 msgstr[1] ""
 
-#: glib/gfileutils.c:754
+#: glib/gfileutils.c:750
 #, c-format
 msgid "Error reading file “%s”: %s"
 msgstr "Erôr tal lei il file “%s”: %s"
 
-#: glib/gfileutils.c:790
+#: glib/gfileutils.c:786
 #, c-format
 msgid "File “%s” is too large"
 msgstr "Il file “%s” al è masse larc"
 
-#: glib/gfileutils.c:854
+#: glib/gfileutils.c:850
 #, c-format
 msgid "Failed to read from file “%s”: %s"
 msgstr ""
 
-#: glib/gfileutils.c:904 glib/gfileutils.c:979 glib/gfileutils.c:1476
+#: glib/gfileutils.c:900 glib/gfileutils.c:975 glib/gfileutils.c:1447
 #, c-format
 msgid "Failed to open file “%s”: %s"
 msgstr "No si è rivâts a vierzi il file “%s”: %s"
 
-#: glib/gfileutils.c:917
+#: glib/gfileutils.c:913
 #, c-format
 msgid "Failed to get attributes of file “%s”: fstat() failed: %s"
 msgstr ""
 
-#: glib/gfileutils.c:948
+#: glib/gfileutils.c:944
 #, c-format
 msgid "Failed to open file “%s”: fdopen() failed: %s"
 msgstr ""
 
-#: glib/gfileutils.c:1049
+#: glib/gfileutils.c:1045
 #, c-format
 msgid "Failed to rename file “%s” to “%s”: g_rename() failed: %s"
 msgstr ""
 
-#: glib/gfileutils.c:1175
+#: glib/gfileutils.c:1154
 #, c-format
 msgid "Failed to write file “%s”: write() failed: %s"
 msgstr ""
 
-#: glib/gfileutils.c:1196
+#: glib/gfileutils.c:1175
 #, c-format
 msgid "Failed to write file “%s”: fsync() failed: %s"
 msgstr ""
 
-#: glib/gfileutils.c:1365 glib/gfileutils.c:1780
+#: glib/gfileutils.c:1336 glib/gfileutils.c:1751
 #, c-format
 msgid "Failed to create file “%s”: %s"
 msgstr ""
 
-#: glib/gfileutils.c:1410
+#: glib/gfileutils.c:1381
 #, c-format
 msgid "Existing file “%s” could not be removed: g_unlink() failed: %s"
 msgstr ""
 
-#: glib/gfileutils.c:1745
+#: glib/gfileutils.c:1716
 #, c-format
 msgid "Template “%s” invalid, should not contain a “%s”"
 msgstr ""
 
-#: glib/gfileutils.c:1758
+#: glib/gfileutils.c:1729
 #, c-format
 msgid "Template “%s” doesn’t contain XXXXXX"
 msgstr ""
 
-#: glib/gfileutils.c:2318 glib/gfileutils.c:2347
+#: glib/gfileutils.c:2289 glib/gfileutils.c:2318
 #, c-format
 msgid "Failed to read the symbolic link “%s”: %s"
 msgstr ""
 
-#: glib/giochannel.c:1396
+#: glib/giochannel.c:1405
 #, c-format
 msgid "Could not open converter from “%s” to “%s”: %s"
 msgstr ""
 
-#: glib/giochannel.c:1749
+#: glib/giochannel.c:1758
 msgid "Can’t do a raw read in g_io_channel_read_line_string"
 msgstr ""
 
-#: glib/giochannel.c:1796 glib/giochannel.c:2054 glib/giochannel.c:2141
+#: glib/giochannel.c:1805 glib/giochannel.c:2063 glib/giochannel.c:2150
 msgid "Leftover unconverted data in read buffer"
 msgstr ""
 
-#: glib/giochannel.c:1877 glib/giochannel.c:1954
+#: glib/giochannel.c:1886 glib/giochannel.c:1963
 msgid "Channel terminates in a partial character"
 msgstr ""
 
-#: glib/giochannel.c:1940
+#: glib/giochannel.c:1949
 msgid "Can’t do a raw read in g_io_channel_read_to_end"
 msgstr ""
 
-#: glib/gkeyfile.c:789
+#: glib/gkeyfile.c:794
 msgid "Valid key file could not be found in search dirs"
 msgstr ""
 
-#: glib/gkeyfile.c:826
+#: glib/gkeyfile.c:831
 msgid "Not a regular file"
 msgstr "Nol è un file regolâr"
 
-#: glib/gkeyfile.c:1281
+#: glib/gkeyfile.c:1289
 #, c-format
 msgid ""
 "Key file contains line “%s” which is not a key-value pair, group, or comment"
 msgstr ""
 
-#: glib/gkeyfile.c:1338
+#: glib/gkeyfile.c:1346
 #, c-format
 msgid "Invalid group name: %s"
 msgstr ""
 
-#: glib/gkeyfile.c:1360
+#: glib/gkeyfile.c:1370
 msgid "Key file does not start with a group"
 msgstr ""
 
-#: glib/gkeyfile.c:1386
+#: glib/gkeyfile.c:1394
 #, c-format
-msgid "Invalid key name: %s"
-msgstr ""
+msgid "Invalid key name: %.*s"
+msgstr "Non de clâf no valit: %.*s"
 
-#: glib/gkeyfile.c:1413
+#: glib/gkeyfile.c:1422
 #, c-format
 msgid "Key file contains unsupported encoding “%s”"
 msgstr ""
 
-#: glib/gkeyfile.c:1662 glib/gkeyfile.c:1835 glib/gkeyfile.c:3288
-#: glib/gkeyfile.c:3352 glib/gkeyfile.c:3482 glib/gkeyfile.c:3614
-#: glib/gkeyfile.c:3760 glib/gkeyfile.c:3995 glib/gkeyfile.c:4062
+#: glib/gkeyfile.c:1677 glib/gkeyfile.c:1850 glib/gkeyfile.c:3297
+#: glib/gkeyfile.c:3361 glib/gkeyfile.c:3491 glib/gkeyfile.c:3623
+#: glib/gkeyfile.c:3769 glib/gkeyfile.c:4004 glib/gkeyfile.c:4071
 #, c-format
 msgid "Key file does not have group “%s”"
 msgstr ""
 
-#: glib/gkeyfile.c:1790
+#: glib/gkeyfile.c:1805
 #, c-format
 msgid "Key file does not have key “%s” in group “%s”"
 msgstr ""
 
-#: glib/gkeyfile.c:1952 glib/gkeyfile.c:2068
+#: glib/gkeyfile.c:1967 glib/gkeyfile.c:2083
 #, c-format
 msgid "Key file contains key “%s” with value “%s” which is not UTF-8"
 msgstr ""
 
-#: glib/gkeyfile.c:1972 glib/gkeyfile.c:2088 glib/gkeyfile.c:2530
+#: glib/gkeyfile.c:1987 glib/gkeyfile.c:2103 glib/gkeyfile.c:2542
 #, c-format
 msgid ""
 "Key file contains key “%s” which has a value that cannot be interpreted."
 msgstr ""
 
-#: glib/gkeyfile.c:2748 glib/gkeyfile.c:3117
+#: glib/gkeyfile.c:2757 glib/gkeyfile.c:3126
 #, c-format
 msgid ""
 "Key file contains key “%s” in group “%s” which has a value that cannot be "
 "interpreted."
 msgstr ""
 
-#: glib/gkeyfile.c:2826 glib/gkeyfile.c:2903
+#: glib/gkeyfile.c:2835 glib/gkeyfile.c:2912
 #, c-format
 msgid "Key “%s” in group “%s” has value “%s” where %s was expected"
 msgstr ""
 
-#: glib/gkeyfile.c:4305
+#: glib/gkeyfile.c:4324
 msgid "Key file contains escape character at end of line"
 msgstr ""
 
-#: glib/gkeyfile.c:4327
+#: glib/gkeyfile.c:4346
 #, c-format
 msgid "Key file contains invalid escape sequence “%s”"
 msgstr ""
 
-#: glib/gkeyfile.c:4471
+#: glib/gkeyfile.c:4491
 #, c-format
 msgid "Value “%s” cannot be interpreted as a number."
 msgstr ""
 
-#: glib/gkeyfile.c:4485
+#: glib/gkeyfile.c:4505
 #, c-format
 msgid "Integer value “%s” out of range"
 msgstr ""
 
-#: glib/gkeyfile.c:4518
+#: glib/gkeyfile.c:4538
 #, c-format
 msgid "Value “%s” cannot be interpreted as a float number."
 msgstr ""
 
-#: glib/gkeyfile.c:4557
+#: glib/gkeyfile.c:4577
 #, c-format
 msgid "Value “%s” cannot be interpreted as a boolean."
 msgstr ""
@@ -5097,8 +5152,8 @@ msgstr ""
 #: glib/gmarkup.c:1233
 #, c-format
 msgid ""
-"“%s” is not a valid character following a “<” character; it may not begin an "
-"element name"
+"“%s” is not a valid character following a “<” character; it may not begin an"
+" element name"
 msgstr ""
 
 #: glib/gmarkup.c:1276
@@ -5109,10 +5164,9 @@ msgid ""
 msgstr ""
 
 #: glib/gmarkup.c:1346
-#, fuzzy, c-format
-#| msgid "Invalid attribute type “%s”"
+#, c-format
 msgid "Too many attributes in element “%s”"
-msgstr "Gjenar di atribût “%s” no valit"
+msgstr "Masse atribûts tal element “%s”"
 
 #: glib/gmarkup.c:1366
 #, c-format
@@ -5266,556 +5320,564 @@ msgstr ""
 msgid "Error parsing option %s"
 msgstr ""
 
-#: glib/goption.c:1570 glib/goption.c:1683
+#: glib/goption.c:1561 glib/goption.c:1674
 #, c-format
 msgid "Missing argument for %s"
 msgstr ""
 
-#: glib/goption.c:2194
+#: glib/goption.c:2184
 #, c-format
 msgid "Unknown option %s"
 msgstr "Opzion %s no cognossude"
 
-#: glib/gregex.c:257
+#: glib/gregex.c:255
 msgid "corrupted object"
 msgstr "ogjet ruvinât"
 
-#: glib/gregex.c:259
+#: glib/gregex.c:257
 msgid "internal error or corrupted object"
 msgstr "erôr interni o ogjet ruvinât"
 
-#: glib/gregex.c:261
+#: glib/gregex.c:259
 msgid "out of memory"
 msgstr "memorie finide"
 
-#: glib/gregex.c:266
+#: glib/gregex.c:264
 msgid "backtracking limit reached"
 msgstr ""
 
-#: glib/gregex.c:278 glib/gregex.c:286
+#: glib/gregex.c:276 glib/gregex.c:284
 msgid "the pattern contains items not supported for partial matching"
 msgstr ""
 
-#: glib/gregex.c:280
+#: glib/gregex.c:278
 msgid "internal error"
 msgstr "erôr interni"
 
-#: glib/gregex.c:288
+#: glib/gregex.c:286
 msgid "back references as conditions are not supported for partial matching"
 msgstr ""
 
-#: glib/gregex.c:297
+#: glib/gregex.c:295
 msgid "recursion limit reached"
 msgstr ""
 
-#: glib/gregex.c:299
+#: glib/gregex.c:297
 msgid "invalid combination of newline flags"
 msgstr ""
 
-#: glib/gregex.c:301
+#: glib/gregex.c:299
 msgid "bad offset"
 msgstr ""
 
-#: glib/gregex.c:303
+#: glib/gregex.c:301
 msgid "short utf8"
 msgstr ""
 
-#: glib/gregex.c:305
+#: glib/gregex.c:303
 msgid "recursion loop"
 msgstr ""
 
-#: glib/gregex.c:309
+#: glib/gregex.c:307
 msgid "unknown error"
 msgstr "erôr no cognossût"
 
-#: glib/gregex.c:329
+#: glib/gregex.c:327
 msgid "\\ at end of pattern"
 msgstr ""
 
-#: glib/gregex.c:332
+#: glib/gregex.c:330
 msgid "\\c at end of pattern"
 msgstr ""
 
-#: glib/gregex.c:335
+#: glib/gregex.c:333
 msgid "unrecognized character following \\"
 msgstr ""
 
-#: glib/gregex.c:338
+#: glib/gregex.c:336
 msgid "numbers out of order in {} quantifier"
 msgstr ""
 
-#: glib/gregex.c:341
+#: glib/gregex.c:339
 msgid "number too big in {} quantifier"
 msgstr ""
 
-#: glib/gregex.c:344
+#: glib/gregex.c:342
 msgid "missing terminating ] for character class"
 msgstr ""
 
-#: glib/gregex.c:347
+#: glib/gregex.c:345
 msgid "invalid escape sequence in character class"
 msgstr ""
 
-#: glib/gregex.c:350
+#: glib/gregex.c:348
 msgid "range out of order in character class"
 msgstr ""
 
-#: glib/gregex.c:353
+#: glib/gregex.c:351
 msgid "nothing to repeat"
 msgstr "nuie di ce ripeti"
 
-#: glib/gregex.c:357
+#: glib/gregex.c:355
 msgid "unexpected repeat"
 msgstr ""
 
-#: glib/gregex.c:360
+#: glib/gregex.c:358
 msgid "unrecognized character after (? or (?-"
 msgstr ""
 
-#: glib/gregex.c:363
+#: glib/gregex.c:361
 msgid "POSIX named classes are supported only within a class"
 msgstr ""
 
-#: glib/gregex.c:366
+#: glib/gregex.c:364
 msgid "missing terminating )"
 msgstr ""
 
-#: glib/gregex.c:369
+#: glib/gregex.c:367
 msgid "reference to non-existent subpattern"
 msgstr ""
 
-#: glib/gregex.c:372
+#: glib/gregex.c:370
 msgid "missing ) after comment"
 msgstr ""
 
-#: glib/gregex.c:375
+#: glib/gregex.c:373
 msgid "regular expression is too large"
 msgstr "la espression regolâr e je masse largje"
 
-#: glib/gregex.c:378
+#: glib/gregex.c:376
 msgid "failed to get memory"
 msgstr ""
 
-#: glib/gregex.c:382
+#: glib/gregex.c:380
 msgid ") without opening ("
 msgstr ""
 
-#: glib/gregex.c:386
+#: glib/gregex.c:384
 msgid "code overflow"
 msgstr ""
 
-#: glib/gregex.c:390
+#: glib/gregex.c:388
 msgid "unrecognized character after (?<"
 msgstr "caratar no ricognossût dopo (?<"
 
-#: glib/gregex.c:393
+#: glib/gregex.c:391
 msgid "lookbehind assertion is not fixed length"
 msgstr ""
 
-#: glib/gregex.c:396
+#: glib/gregex.c:394
 msgid "malformed number or name after (?("
 msgstr "non o numar malformât dopo (?("
 
-#: glib/gregex.c:399
+#: glib/gregex.c:397
 msgid "conditional group contains more than two branches"
 msgstr ""
 
-#: glib/gregex.c:402
+#: glib/gregex.c:400
 msgid "assertion expected after (?("
 msgstr ""
 
 #. translators: '(?R' and '(?[+-]digits' are both meant as (groups of)
 #. * sequences here, '(?-54' would be an example for the second group.
-#.
-#: glib/gregex.c:409
+#: glib/gregex.c:407
 msgid "(?R or (?[+-]digits must be followed by )"
 msgstr ""
 
-#: glib/gregex.c:412
+#: glib/gregex.c:410
 msgid "unknown POSIX class name"
 msgstr "non di classe POSIX no cognossût"
 
-#: glib/gregex.c:415
+#: glib/gregex.c:413
 msgid "POSIX collating elements are not supported"
 msgstr ""
 
-#: glib/gregex.c:418
+#: glib/gregex.c:416
 msgid "character value in \\x{...} sequence is too large"
 msgstr ""
 
-#: glib/gregex.c:421
+#: glib/gregex.c:419
 msgid "invalid condition (?(0)"
 msgstr "condizion no valide (?(0)"
 
-#: glib/gregex.c:424
+#: glib/gregex.c:422
 msgid "\\C not allowed in lookbehind assertion"
 msgstr ""
 
-#: glib/gregex.c:431
+#: glib/gregex.c:429
 msgid "escapes \\L, \\l, \\N{name}, \\U, and \\u are not supported"
 msgstr ""
 
-#: glib/gregex.c:434
+#: glib/gregex.c:432
 msgid "recursive call could loop indefinitely"
 msgstr ""
 
-#: glib/gregex.c:438
+#: glib/gregex.c:436
 msgid "unrecognized character after (?P"
 msgstr "caratar no ricognossût dopo (?P"
 
-#: glib/gregex.c:441
+#: glib/gregex.c:439
 msgid "missing terminator in subpattern name"
 msgstr ""
 
-#: glib/gregex.c:444
+#: glib/gregex.c:442
 msgid "two named subpatterns have the same name"
 msgstr ""
 
-#: glib/gregex.c:447
+#: glib/gregex.c:445
 msgid "malformed \\P or \\p sequence"
 msgstr "secuence \\P o \\p malformade"
 
-#: glib/gregex.c:450
+#: glib/gregex.c:448
 msgid "unknown property name after \\P or \\p"
 msgstr ""
 
-#: glib/gregex.c:453
+#: glib/gregex.c:451
 msgid "subpattern name is too long (maximum 32 characters)"
 msgstr ""
 
-#: glib/gregex.c:456
+#: glib/gregex.c:454
 msgid "too many named subpatterns (maximum 10,000)"
 msgstr ""
 
-#: glib/gregex.c:459
+#: glib/gregex.c:457
 msgid "octal value is greater than \\377"
 msgstr "il valôr otâl al è plui grant di \\377"
 
-#: glib/gregex.c:463
+#: glib/gregex.c:461
 msgid "overran compiling workspace"
 msgstr ""
 
-#: glib/gregex.c:467
+#: glib/gregex.c:465
 msgid "previously-checked referenced subpattern not found"
 msgstr ""
 
-#: glib/gregex.c:470
+#: glib/gregex.c:468
 msgid "DEFINE group contains more than one branch"
 msgstr ""
 
-#: glib/gregex.c:473
+#: glib/gregex.c:471
 msgid "inconsistent NEWLINE options"
 msgstr ""
 
-#: glib/gregex.c:476
+#: glib/gregex.c:474
 msgid ""
 "\\g is not followed by a braced, angle-bracketed, or quoted name or number, "
 "or by a plain number"
 msgstr ""
 
-#: glib/gregex.c:480
+#: glib/gregex.c:478
 msgid "a numbered reference must not be zero"
 msgstr "un riferiment numerât nol pues jessi zero"
 
-#: glib/gregex.c:483
+#: glib/gregex.c:481
 msgid "an argument is not allowed for (*ACCEPT), (*FAIL), or (*COMMIT)"
 msgstr ""
 
-#: glib/gregex.c:486
+#: glib/gregex.c:484
 msgid "(*VERB) not recognized"
 msgstr ""
 
-#: glib/gregex.c:489
+#: glib/gregex.c:487
 msgid "number is too big"
 msgstr "il numar al è masse grant"
 
-#: glib/gregex.c:492
+#: glib/gregex.c:490
 msgid "missing subpattern name after (?&"
 msgstr ""
 
-#: glib/gregex.c:495
+#: glib/gregex.c:493
 msgid "digit expected after (?+"
 msgstr ""
 
-#: glib/gregex.c:498
+#: glib/gregex.c:496
 msgid "] is an invalid data character in JavaScript compatibility mode"
 msgstr ""
 
-#: glib/gregex.c:501
+#: glib/gregex.c:499
 msgid "different names for subpatterns of the same number are not allowed"
 msgstr ""
 
-#: glib/gregex.c:504
+#: glib/gregex.c:502
 msgid "(*MARK) must have an argument"
 msgstr ""
 
-#: glib/gregex.c:507
+#: glib/gregex.c:505
 msgid "\\c must be followed by an ASCII character"
 msgstr ""
 
-#: glib/gregex.c:510
+#: glib/gregex.c:508
 msgid "\\k is not followed by a braced, angle-bracketed, or quoted name"
 msgstr ""
 
-#: glib/gregex.c:513
+#: glib/gregex.c:511
 msgid "\\N is not supported in a class"
 msgstr "\\N nol è supuartât intune classe"
 
-#: glib/gregex.c:516
+#: glib/gregex.c:514
 msgid "too many forward references"
 msgstr "masse riferiments intal indenant"
 
-#: glib/gregex.c:519
+#: glib/gregex.c:517
 msgid "name is too long in (*MARK), (*PRUNE), (*SKIP), or (*THEN)"
 msgstr "non masse lunc in (*MARK), (*PRUNE), (*SKIP), or (*THEN)"
 
-#: glib/gregex.c:522
+#: glib/gregex.c:520
 msgid "character value in \\u.... sequence is too large"
 msgstr "valôr dal caratar inte secuence \\u.... al è masse grant"
 
-#: glib/gregex.c:745 glib/gregex.c:1983
+#: glib/gregex.c:743 glib/gregex.c:1988
 #, c-format
 msgid "Error while matching regular expression %s: %s"
 msgstr ""
 
-#: glib/gregex.c:1316
+#: glib/gregex.c:1321
 msgid "PCRE library is compiled without UTF8 support"
 msgstr ""
 
-#: glib/gregex.c:1320
+#: glib/gregex.c:1325
 msgid "PCRE library is compiled without UTF8 properties support"
 msgstr ""
 
-#: glib/gregex.c:1328
+#: glib/gregex.c:1333
 msgid "PCRE library is compiled with incompatible options"
 msgstr ""
 
-#: glib/gregex.c:1357
+#: glib/gregex.c:1362
 #, c-format
 msgid "Error while optimizing regular expression %s: %s"
 msgstr "Erôr intal otimizâ la espression regolâr %s: %s"
 
-#: glib/gregex.c:1437
+#: glib/gregex.c:1442
 #, c-format
 msgid "Error while compiling regular expression %s at char %d: %s"
 msgstr "Erôr intal compilâ la espression regolâr %s al caratar %d: %s"
 
-#: glib/gregex.c:2419
+#: glib/gregex.c:2427
 msgid "hexadecimal digit or “}” expected"
 msgstr ""
 
-#: glib/gregex.c:2435
+#: glib/gregex.c:2443
 msgid "hexadecimal digit expected"
 msgstr ""
 
-#: glib/gregex.c:2475
+#: glib/gregex.c:2483
 msgid "missing “<” in symbolic reference"
 msgstr "al mancje “%” intal riferiment simbolic"
 
-#: glib/gregex.c:2484
+#: glib/gregex.c:2492
 msgid "unfinished symbolic reference"
 msgstr "riferiment simbolic no finît"
 
-#: glib/gregex.c:2491
+#: glib/gregex.c:2499
 msgid "zero-length symbolic reference"
 msgstr "riferiment simbolic di lungjece zero"
 
-#: glib/gregex.c:2502
+#: glib/gregex.c:2510
 msgid "digit expected"
 msgstr ""
 
-#: glib/gregex.c:2520
+#: glib/gregex.c:2528
 msgid "illegal symbolic reference"
 msgstr "riferiment simbolic ilegâl"
 
-#: glib/gregex.c:2583
+#: glib/gregex.c:2591
 msgid "stray final “\\”"
 msgstr ""
 
-#: glib/gregex.c:2587
+#: glib/gregex.c:2595
 msgid "unknown escape sequence"
 msgstr "secuence di escape no cognossude"
 
-#: glib/gregex.c:2597
+#: glib/gregex.c:2605
 #, c-format
 msgid "Error while parsing replacement text “%s” at char %lu: %s"
 msgstr "Erôr tal analizâ il test di sostituzion “%s” al caratar %lu: %s"
 
-#: glib/gshell.c:94
+#: glib/gshell.c:96
 msgid "Quoted text doesn’t begin with a quotation mark"
 msgstr "Il test citât nol tache cuntun segn di citazion"
 
-#: glib/gshell.c:184
+#: glib/gshell.c:186
 msgid "Unmatched quotation mark in command line or other shell-quoted text"
 msgstr ""
 "Segn di citazion no cubiât inte rie di comant o altri test citât de shell"
 
-#: glib/gshell.c:580
+#: glib/gshell.c:592
 #, c-format
 msgid "Text ended just after a “\\” character. (The text was “%s”)"
 msgstr "Il test al è finît juste dopo un caratar “/”. (Il test al jere “%s”)"
 
-#: glib/gshell.c:587
+#: glib/gshell.c:599
 #, c-format
 msgid "Text ended before matching quote was found for %c. (The text was “%s”)"
 msgstr ""
 "Test finît prime di cjatâ la citazion corispondent par %c. (Il test al jere "
 "“%s”)"
 
-#: glib/gshell.c:599
+#: glib/gshell.c:611
 msgid "Text was empty (or contained only whitespace)"
 msgstr "Il test al jere vueit (o al contignive dome spazis vueits)"
 
-#: glib/gspawn.c:323
+#: glib/gspawn.c:310
 #, c-format
 msgid "Failed to read data from child process (%s)"
 msgstr "No si è rivâts a lei dâts dal procès fi (%s)"
 
-#: glib/gspawn.c:468
-#, fuzzy, c-format
-#| msgid "Unexpected error in select() reading data from a child process (%s)"
+#: glib/gspawn.c:462
+#, c-format
 msgid "Unexpected error in reading data from a child process (%s)"
-msgstr "Erôr inspietât in select() leint i dâts dal procès fi (%s)"
+msgstr "Erôr inspietât tai dâts di leture di un procès fi (%s)"
 
-#: glib/gspawn.c:553
+#: glib/gspawn.c:547
 #, c-format
 msgid "Unexpected error in waitpid() (%s)"
 msgstr "Erôr inspietât in waitpid() (%s)"
 
-#: glib/gspawn.c:1061 glib/gspawn-win32.c:1329
+#: glib/gspawn.c:1175 glib/gspawn-win32.c:1438
 #, c-format
 msgid "Child process exited with code %ld"
 msgstr "Procès fi jessût cul codiç %ld"
 
-#: glib/gspawn.c:1069
+#: glib/gspawn.c:1183
 #, c-format
 msgid "Child process killed by signal %ld"
 msgstr "Procès fi copât dal segnâl %ld"
 
-#: glib/gspawn.c:1076
+#: glib/gspawn.c:1190
 #, c-format
 msgid "Child process stopped by signal %ld"
 msgstr "Procès fi fermât dal segnâl %ld"
 
-#: glib/gspawn.c:1083
+#: glib/gspawn.c:1197
 #, c-format
 msgid "Child process exited abnormally"
 msgstr "Il procès fi al è jessût in maniere anormâl"
 
-#: glib/gspawn.c:1548 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
+#: glib/gspawn.c:1890 glib/gspawn-win32.c:353 glib/gspawn-win32.c:361
 #, c-format
 msgid "Failed to read from child pipe (%s)"
 msgstr "No si è rivâts a lei dal condot dal fi (%s)"
 
-#: glib/gspawn.c:1804
+#: glib/gspawn.c:2253
 #, c-format
 msgid "Failed to spawn child process “%s” (%s)"
 msgstr "No si è rivâts a creâ il procès fi “%s” (%s)"
 
-#: glib/gspawn.c:1887
+#: glib/gspawn.c:2370
 #, c-format
 msgid "Failed to fork (%s)"
 msgstr "No si è rivâts a inglovâ (%s)"
 
-#: glib/gspawn.c:2042 glib/gspawn-win32.c:381
+#: glib/gspawn.c:2530 glib/gspawn-win32.c:384
 #, c-format
 msgid "Failed to change to directory “%s” (%s)"
 msgstr "No si è rivâts a lâ ae cartele “%s” (%s)"
 
-#: glib/gspawn.c:2052
+#: glib/gspawn.c:2540
 #, c-format
 msgid "Failed to execute child process “%s” (%s)"
 msgstr "No si è rivâts a eseguî il procès fi “%s” (%s)"
 
-#: glib/gspawn.c:2062
+#: glib/gspawn.c:2550
+#, c-format
+msgid "Failed to open file to remap file descriptor (%s)"
+msgstr "Impussibil vierzi il file par tornâ a mapâ il descritôr dal file (%s)"
+
+#: glib/gspawn.c:2558
 #, c-format
-msgid "Failed to redirect output or input of child process (%s)"
-msgstr "No si è rivâts a indreçâ la jessude o la jentrade dal procès fi (%s)"
+msgid "Failed to duplicate file descriptor for child process (%s)"
+msgstr "Impussibil duplicâ il descritôr dal file pal procès fi (%s)"
 
-#: glib/gspawn.c:2071
+#: glib/gspawn.c:2567
 #, c-format
 msgid "Failed to fork child process (%s)"
 msgstr "No si è rivâts a inglovâ il procès fi (%s)"
 
-#: glib/gspawn.c:2079
+#: glib/gspawn.c:2575
+#, c-format
+msgid "Failed to close file descriptor for child process (%s)"
+msgstr "Impussibil sierâ il descritôr dal file pal procès fi (%s)"
+
+#: glib/gspawn.c:2583
 #, c-format
 msgid "Unknown error executing child process “%s”"
 msgstr "Erôr no cognossût tal eseguî il procès fi “%s”"
 
-#: glib/gspawn.c:2103
+#: glib/gspawn.c:2607
 #, c-format
 msgid "Failed to read enough data from child pid pipe (%s)"
 msgstr "No si è rivâts a lei vonde dâts dal condot dal pid dal fi (%s)"
 
-#: glib/gspawn-win32.c:294
+#: glib/gspawn-win32.c:297
 msgid "Failed to read data from child process"
 msgstr "No si è rivâts a lei dâts dal procès fi"
 
-#: glib/gspawn-win32.c:311
-#, c-format
-msgid "Failed to create pipe for communicating with child process (%s)"
-msgstr "No si è rivâts a creâ il condot par comunicâ cul procès fi (%s)"
-
-#: glib/gspawn-win32.c:387 glib/gspawn-win32.c:392 glib/gspawn-win32.c:511
+#: glib/gspawn-win32.c:390 glib/gspawn-win32.c:395 glib/gspawn-win32.c:521
 #, c-format
 msgid "Failed to execute child process (%s)"
 msgstr "No si è rivâts a eseguî il procès fi (%s)"
 
-#: glib/gspawn-win32.c:461
+#: glib/gspawn-win32.c:400
+#, c-format
+msgid "Failed to dup() in child process (%s)"
+msgstr "Impussibil fâ il dup() tal procès fi (%s)"
+
+#: glib/gspawn-win32.c:471
 #, c-format
 msgid "Invalid program name: %s"
 msgstr "Non dal program no valit: %s"
 
-#: glib/gspawn-win32.c:471 glib/gspawn-win32.c:725
+#: glib/gspawn-win32.c:481 glib/gspawn-win32.c:807
 #, c-format
 msgid "Invalid string in argument vector at %d: %s"
 msgstr "Stringhe no valide intal vetôr dal argoment su %d: %s"
 
-#: glib/gspawn-win32.c:482 glib/gspawn-win32.c:740
+#: glib/gspawn-win32.c:492 glib/gspawn-win32.c:823
 #, c-format
 msgid "Invalid string in environment: %s"
 msgstr "Stringhe no valide intal ambient: %s"
 
-#: glib/gspawn-win32.c:721
+#: glib/gspawn-win32.c:803
 #, c-format
 msgid "Invalid working directory: %s"
 msgstr "Cartele di lavôr no valide: %s"
 
-#: glib/gspawn-win32.c:783
+#: glib/gspawn-win32.c:868
 #, c-format
 msgid "Failed to execute helper program (%s)"
 msgstr "No si è rivâts a eseguî il program judant (%s)"
 
-#: glib/gspawn-win32.c:1056
+#: glib/gspawn-win32.c:1096
 msgid ""
 "Unexpected error in g_io_channel_win32_poll() reading data from a child "
 "process"
-msgstr "Erôr inspietât in g_io_channel_win32_poll() leint dâts di un procès fi"
+msgstr ""
+"Erôr inspietât in g_io_channel_win32_poll() leint dâts di un procès fi"
 
-#: glib/gstrfuncs.c:3303 glib/gstrfuncs.c:3405
+#: glib/gstrfuncs.c:3351 glib/gstrfuncs.c:3453
 msgid "Empty string is not a number"
 msgstr "La stringhe vueide no je un numar"
 
-#: glib/gstrfuncs.c:3327
+#: glib/gstrfuncs.c:3375
 #, c-format
 msgid "“%s” is not a signed number"
 msgstr "“%s” nol è un numar cun segn"
 
-#: glib/gstrfuncs.c:3337 glib/gstrfuncs.c:3441
+#: glib/gstrfuncs.c:3385 glib/gstrfuncs.c:3489
 #, c-format
 msgid "Number “%s” is out of bounds [%s, %s]"
 msgstr "Il numar “%s” al è fûr dai limits [%s, %s]"
 
-#: glib/gstrfuncs.c:3431
+#: glib/gstrfuncs.c:3479
 #, c-format
 msgid "“%s” is not an unsigned number"
 msgstr "“%s” nol è un numar cence segn"
 
 #: glib/guri.c:315
-#, fuzzy, no-c-format
-#| msgid " (invalid encoding)"
+#, no-c-format
 msgid "Invalid %-encoding in URI"
-msgstr " (codifiche no valide)"
+msgstr "%-encoding no valit tal URI"
 
 #: glib/guri.c:332
 msgid "Illegal character in URI"
@@ -5836,16 +5898,14 @@ msgid "Illegal encoded IP address ‘%.*s’ in URI"
 msgstr ""
 
 #: glib/guri.c:613
-#, fuzzy, c-format
-#| msgid "Could not parse “%s” as IP address mask"
+#, c-format
 msgid "Illegal internationalized hostname ‘%.*s’ in URI"
-msgstr "Impussibil analizâ “%s” come mascare de direzion IP"
+msgstr "Non ilegjitim dal host internazionalizât ‘%.*s’ tal URI"
 
 #: glib/guri.c:645 glib/guri.c:657
-#, fuzzy, c-format
-#| msgid "Could not parse “%s” as IP address mask"
+#, c-format
 msgid "Could not parse port ‘%.*s’ in URI"
-msgstr "Impussibil analizâ “%s” come mascare de direzion IP"
+msgstr "Impussibil analizâ la puarte ‘%.*s’ tal URI"
 
 #: glib/guri.c:664
 #, c-format
@@ -5853,193 +5913,192 @@ msgid "Port ‘%.*s’ in URI is out of range"
 msgstr ""
 
 #: glib/guri.c:1224 glib/guri.c:1288
-#, fuzzy, c-format
-#| msgid "“%s” is not a valid name"
+#, c-format
 msgid "URI ‘%s’ is not an absolute URI"
-msgstr "“%s” nol è un non valit"
+msgstr "L'URI ‘%s’ nol è un URI assolût"
 
 #: glib/guri.c:1230
 #, c-format
 msgid "URI ‘%s’ has no host component"
 msgstr ""
 
-#: glib/guri.c:1435
+#: glib/guri.c:1460
 msgid "URI is not absolute, and no base URI was provided"
 msgstr ""
 
-#: glib/guri.c:2209
+#: glib/guri.c:2238
 msgid "Missing ‘=’ and parameter value"
 msgstr ""
 
-#: glib/gutf8.c:817
+#: glib/gutf8.c:832
 msgid "Failed to allocate memory"
 msgstr "No si è rivâts a assegnâ la memorie"
 
-#: glib/gutf8.c:950
+#: glib/gutf8.c:965
 msgid "Character out of range for UTF-8"
 msgstr "Caratar fûr dal limit par UTF-8"
 
-#: glib/gutf8.c:1051 glib/gutf8.c:1060 glib/gutf8.c:1190 glib/gutf8.c:1199
-#: glib/gutf8.c:1338 glib/gutf8.c:1435
+#: glib/gutf8.c:1067 glib/gutf8.c:1076 glib/gutf8.c:1206 glib/gutf8.c:1215
+#: glib/gutf8.c:1354 glib/gutf8.c:1451
 msgid "Invalid sequence in conversion input"
 msgstr "Secuence no valide intal input di conversion"
 
-#: glib/gutf8.c:1349 glib/gutf8.c:1446
+#: glib/gutf8.c:1365 glib/gutf8.c:1462
 msgid "Character out of range for UTF-16"
 msgstr "Caratar fûr dal limit par UTF-16"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2747
+#: glib/gutils.c:2849
 #, c-format
 msgid "%.1f kB"
 msgstr "%.1f kB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2749
+#: glib/gutils.c:2851
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2751
+#: glib/gutils.c:2853
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2753
+#: glib/gutils.c:2855
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2755
+#: glib/gutils.c:2857
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2757
+#: glib/gutils.c:2859
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2761
+#: glib/gutils.c:2863
 #, c-format
 msgid "%.1f KiB"
 msgstr "%.1f KiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2763
+#: glib/gutils.c:2865
 #, c-format
 msgid "%.1f MiB"
 msgstr "%.1f MiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2765
+#: glib/gutils.c:2867
 #, c-format
 msgid "%.1f GiB"
 msgstr "%.1f GiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2767
+#: glib/gutils.c:2869
 #, c-format
 msgid "%.1f TiB"
 msgstr "%.1f TiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2769
+#: glib/gutils.c:2871
 #, c-format
 msgid "%.1f PiB"
 msgstr "%.1f PiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2771
+#: glib/gutils.c:2873
 #, c-format
 msgid "%.1f EiB"
 msgstr "%.1f EiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2775
+#: glib/gutils.c:2877
 #, c-format
 msgid "%.1f kb"
 msgstr "%.1f kb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2777
+#: glib/gutils.c:2879
 #, c-format
 msgid "%.1f Mb"
 msgstr "%.1f Mb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2779
+#: glib/gutils.c:2881
 #, c-format
 msgid "%.1f Gb"
 msgstr "%.1f Gb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2781
+#: glib/gutils.c:2883
 #, c-format
 msgid "%.1f Tb"
 msgstr "%.1f Tb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2783
+#: glib/gutils.c:2885
 #, c-format
 msgid "%.1f Pb"
 msgstr "%.1f Pb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2785
+#: glib/gutils.c:2887
 #, c-format
 msgid "%.1f Eb"
 msgstr "%.1f Eb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2789
+#: glib/gutils.c:2891
 #, c-format
 msgid "%.1f Kib"
 msgstr "%.1f Kib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2791
+#: glib/gutils.c:2893
 #, c-format
 msgid "%.1f Mib"
 msgstr "%.1f Mib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2793
+#: glib/gutils.c:2895
 #, c-format
 msgid "%.1f Gib"
 msgstr "%.1f Gib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2795
+#: glib/gutils.c:2897
 #, c-format
 msgid "%.1f Tib"
 msgstr "%.1f Tib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2797
+#: glib/gutils.c:2899
 #, c-format
 msgid "%.1f Pib"
 msgstr "%.1f Pib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2799
+#: glib/gutils.c:2901
 #, c-format
 msgid "%.1f Eib"
 msgstr "%.1f Eib"
 
-#: glib/gutils.c:2833 glib/gutils.c:2950
+#: glib/gutils.c:2935 glib/gutils.c:3052
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
 msgstr[0] "%u byte"
 msgstr[1] "%u byte"
 
-#: glib/gutils.c:2837
+#: glib/gutils.c:2939
 #, c-format
 msgid "%u bit"
 msgid_plural "%u bits"
@@ -6047,7 +6106,7 @@ msgstr[0] "%u bit"
 msgstr[1] "%u bit"
 
 #. Translators: the %s in "%s bytes" will always be replaced by a number.
-#: glib/gutils.c:2904
+#: glib/gutils.c:3006
 #, c-format
 msgid "%s byte"
 msgid_plural "%s bytes"
@@ -6055,48 +6114,53 @@ msgstr[0] "%s byte"
 msgstr[1] "%s byte"
 
 #. Translators: the %s in "%s bits" will always be replaced by a number.
-#: glib/gutils.c:2909
+#: glib/gutils.c:3011
 #, c-format
 msgid "%s bit"
 msgid_plural "%s bits"
 msgstr[0] "%s bit"
 msgstr[1] "%s bit"
 
-#. Translators: this is from the deprecated function g_format_size_for_display() which uses 'KB' to
-#. * mean 1024 bytes.  I am aware that 'KB' is not correct, but it has been preserved for reasons of
-#. * compatibility.  Users will not see this string unless a program is using this deprecated function.
+#. Translators: this is from the deprecated function
+#. g_format_size_for_display() which uses 'KB' to
+#. * mean 1024 bytes.  I am aware that 'KB' is not correct, but it has been
+#. preserved for reasons of
+#. * compatibility.  Users will not see this string unless a program is using
+#. this deprecated function.
 #. * Please translate as literally as possible.
-#.
-#: glib/gutils.c:2963
+#: glib/gutils.c:3065
 #, c-format
 msgid "%.1f KB"
 msgstr "%.1f KB"
 
-#: glib/gutils.c:2968
+#: glib/gutils.c:3070
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
-#: glib/gutils.c:2973
+#: glib/gutils.c:3075
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
-#: glib/gutils.c:2978
+#: glib/gutils.c:3080
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
-#: glib/gutils.c:2983
+#: glib/gutils.c:3085
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
-#: glib/gutils.c:2988
+#: glib/gutils.c:3090
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
+#~ msgid "Unable to load /var/lib/dbus/machine-id or /etc/machine-id: "
+#~ msgstr "Impussibil cjariâ /var/lib/dbus/machine-id o /etc/machine-id: "
+
 #~ msgid "Unknown error on connect"
 #~ msgstr "Erôr no cognossût tal coneti"
 
@@ -6110,8 +6174,8 @@ msgstr "%.1f EB"
 #~ msgstr "no si fâs nuie.\n"
 
 #~ msgid ""
-#~ "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment "
-#~ "variable - unknown value '%s'"
+#~ "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable"
+#~ " - unknown value '%s'"
 #~ msgstr ""
 #~ "Impussibil determinâ la direzion dal bus de variabile di ambient "
 #~ "DBUS_STARTER_BUS_TYPE — valôr '%s' no cognossût"
@@ -6119,18 +6183,14 @@ msgstr "%.1f EB"
 #~ msgid "[ARGS...]"
 #~ msgstr "[ARGS...]"
 
-#~ msgid "Failed to create temp file: %s"
-#~ msgstr "No si è rivâts a creâ il file temp: %s"
-
 #~ msgid "Error: object path not specified.\n"
 #~ msgstr "Erôr: percors ogjet no specificât.\n"
 
 #~ msgid "Error: signal not specified.\n"
 #~ msgstr "Erôr: segnâl no specificât.\n"
 
-#, fuzzy
 #~ msgid "Error: signal must be the fully-qualified name.\n"
-#~ msgstr "Erôr: il segnâl al scugne jessi il non cualificât-in-plen.\n"
+#~ msgstr "Erôr: il segnâl al scugne jessi il non cualificât ad implen.\n"
 
 #~ msgid "No files to open"
 #~ msgstr "Nissun file di vierzi"
index 16c3211..4228c59 100644 (file)
--- a/po/gl.po
+++ b/po/gl.po
 # Mancomún - Centro de Referencia e Servizos de Software Libre <g11n@mancomun.org>, 2009.
 # Suso Baleato <suso.baleato@xunta.es>,2009.
 # Antón Méixome <meixome@mancomun.org>, 2009.
-# Fran Diéguez <frandieguez@gnome.org>, 2009, 2010, 2011, 2012.
 # Leandro Regueiro <leandro.regueiro@gmail.com>, 2012.
-# Fran Dieguez <frandieguez@gnome.org>, 2012-2021.
+# Fran Diéguez <frandieguez@gnome.org>, 2009-2022.
+# Fran Dieguez <frandieguez@gnome.org>, 2012-2022.
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: glib.master\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/glib/issues\n"
-"POT-Creation-Date: 2021-07-19 15:52+0000\n"
-"PO-Revision-Date: 2021-08-25 07:58+0200\n"
+"POT-Creation-Date: 2022-04-18 17:24+0000\n"
+"PO-Revision-Date: 2022-04-19 08:02+0200\n"
 "Last-Translator: Fran Dieguez <frandieguez@gnome.org>\n"
 "Language-Team: Galician <Proxecto Trasno <proxecto@trasno.gal>>\n"
 "Language: gl\n"
@@ -31,10 +31,19 @@ msgstr ""
 "X-Project-Style: gnome\n"
 "X-DL-Team: gl\n"
 "X-DL-Module: glib\n"
-"X-DL-Branch: main\n"
+"X-DL-Branch: glib-2-72\n"
 "X-DL-Domain: po\n"
 "X-DL-State: Translating\n"
 
+#: gio/gappinfo.c:333
+msgid "Setting default applications not supported yet"
+msgstr "Estabelecer as aplicacións predeterminadas non se soporta aínda"
+
+#: gio/gappinfo.c:366
+msgid "Setting application as last used for type not supported yet"
+msgstr ""
+"Establecer aplicación como última usada para o tipo non se soporta aínda"
+
 #: gio/gapplication.c:500
 msgid "GApplication options"
 msgstr "Opcións de GApplication"
@@ -58,7 +67,7 @@ msgid "Replace the running instance"
 msgstr "Substituír a instancia en execución"
 
 #: gio/gapplication-tool.c:45 gio/gapplication-tool.c:46 gio/gio-tool.c:227
-#: gio/gresource-tool.c:494 gio/gsettings-tool.c:572
+#: gio/gresource-tool.c:494 gio/gsettings-tool.c:584
 msgid "Print help"
 msgstr "Imprimir axuda"
 
@@ -70,7 +79,7 @@ msgstr "[ORDE]"
 msgid "Print version"
 msgstr "Mostrar versión"
 
-#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:578
+#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:590
 msgid "Print version information and exit"
 msgstr "Mostrar información da versión e saír"
 
@@ -134,8 +143,8 @@ msgid "Application identifier in D-Bus format (eg: org.example.viewer)"
 msgstr ""
 "Identificador de aplicacións en formato D-Bus (p.ex.: org.exemplo.visor)"
 
-#: gio/gapplication-tool.c:74 gio/glib-compile-resources.c:738
-#: gio/glib-compile-resources.c:744 gio/glib-compile-resources.c:772
+#: gio/gapplication-tool.c:74 gio/glib-compile-resources.c:820
+#: gio/glib-compile-resources.c:826 gio/glib-compile-resources.c:855
 #: gio/gresource-tool.c:501 gio/gresource-tool.c:567
 msgid "FILE"
 msgstr "FICHEIRO"
@@ -160,7 +169,7 @@ msgstr "PARÁMETRO"
 msgid "Optional parameter to the action invocation, in GVariant format"
 msgstr "Parámetro opcional para a invocación da acción, en formato GVariant"
 
-#: gio/gapplication-tool.c:98 gio/gresource-tool.c:532 gio/gsettings-tool.c:664
+#: gio/gapplication-tool.c:98 gio/gresource-tool.c:532 gio/gsettings-tool.c:676
 #, c-format
 msgid ""
 "Unknown command %s\n"
@@ -174,7 +183,7 @@ msgid "Usage:\n"
 msgstr "Uso:\n"
 
 #: gio/gapplication-tool.c:116 gio/gresource-tool.c:557
-#: gio/gsettings-tool.c:699
+#: gio/gsettings-tool.c:711
 msgid "Arguments:\n"
 msgstr "Argumentos:\n"
 
@@ -297,7 +306,7 @@ msgstr "O fluxo xa se pechou"
 msgid "Truncate not supported on base stream"
 msgstr "Non se permite truncar no fluxo base"
 
-#: gio/gcancellable.c:319 gio/gdbusconnection.c:1872 gio/gdbusprivate.c:1416
+#: gio/gcancellable.c:319 gio/gdbusconnection.c:1857 gio/gdbusprivate.c:1418
 #: gio/gsimpleasyncresult.c:871 gio/gsimpleasyncresult.c:897
 #, c-format
 msgid "Operation was cancelled"
@@ -318,7 +327,7 @@ msgstr "Non hai espazo abondo para o enderezo do socket"
 #: gio/gcharsetconverter.c:342 gio/gdatainputstream.c:848
 #: gio/gdatainputstream.c:1266 glib/gconvert.c:449 glib/gconvert.c:879
 #: glib/giochannel.c:1573 glib/giochannel.c:1615 glib/giochannel.c:2470
-#: glib/gutf8.c:875 glib/gutf8.c:1328
+#: glib/gutf8.c:890 glib/gutf8.c:1344
 msgid "Invalid byte sequence in conversion input"
 msgstr "A secuencia de bytes non é válida na entrada da conversión"
 
@@ -328,7 +337,7 @@ msgstr "A secuencia de bytes non é válida na entrada da conversión"
 msgid "Error during conversion: %s"
 msgstr "Produciuse un erro durante a conversión: %s"
 
-#: gio/gcharsetconverter.c:445 gio/gsocket.c:1143
+#: gio/gcharsetconverter.c:445 gio/gsocket.c:1147
 msgid "Cancellable initialization not supported"
 msgstr "Non se permite a inicialización cancelábel"
 
@@ -342,37 +351,37 @@ msgstr "Non se admite a conversión do conxunto de caracteres «%s» a «%s»"
 msgid "Could not open converter from “%s” to “%s”"
 msgstr "Non foi posíbel abrir o conversor de «%s» a «%s»"
 
-#: gio/gcontenttype.c:454
+#: gio/gcontenttype.c:470
 #, c-format
 msgid "%s type"
 msgstr "tipo %s"
 
-#: gio/gcontenttype-win32.c:192
+#: gio/gcontenttype-win32.c:196
 msgid "Unknown type"
 msgstr "Tipo descoñecido"
 
-#: gio/gcontenttype-win32.c:194
+#: gio/gcontenttype-win32.c:198
 #, c-format
 msgid "%s filetype"
 msgstr "tipo de ficheiro %s"
 
-#: gio/gcredentials.c:323
+#: gio/gcredentials.c:335
 msgid "GCredentials contains invalid data"
 msgstr "GCredentials contén datos non válidos"
 
-#: gio/gcredentials.c:383 gio/gcredentials.c:667
+#: gio/gcredentials.c:395 gio/gcredentials.c:686
 msgid "GCredentials is not implemented on this OS"
 msgstr "GCredentials non está implementado neste SO"
 
-#: gio/gcredentials.c:538 gio/gcredentials.c:556
+#: gio/gcredentials.c:550 gio/gcredentials.c:568
 msgid "There is no GCredentials support for your platform"
 msgstr "A súa plataforma non ten compatibilidade con GCredentials"
 
-#: gio/gcredentials.c:607
+#: gio/gcredentials.c:626
 msgid "GCredentials does not contain a process ID on this OS"
 msgstr "GCredentials non contén un ID de proceso para este SO"
 
-#: gio/gcredentials.c:661
+#: gio/gcredentials.c:680
 msgid "Credentials spoofing is not possible on this OS"
 msgstr "Non é posíbel burlar as credenciais neste SO"
 
@@ -380,17 +389,17 @@ msgstr "Non é posíbel burlar as credenciais neste SO"
 msgid "Unexpected early end-of-stream"
 msgstr "Final de fluxo inesperadamente prematuro"
 
-#: gio/gdbusaddress.c:159 gio/gdbusaddress.c:233 gio/gdbusaddress.c:322
+#: gio/gdbusaddress.c:162 gio/gdbusaddress.c:236 gio/gdbusaddress.c:325
 #, c-format
 msgid "Unsupported key “%s” in address entry “%s”"
 msgstr "Clave «%s» non admitida na entrada do enderezo «%s»"
 
-#: gio/gdbusaddress.c:172
+#: gio/gdbusaddress.c:175
 #, c-format
 msgid "Meaningless key/value pair combination in address entry “%s”"
 msgstr "Combinación de par clave/valor sen sentido na entrada do enderezo «%s»"
 
-#: gio/gdbusaddress.c:181
+#: gio/gdbusaddress.c:184
 #, c-format
 msgid ""
 "Address “%s” is invalid (need exactly one of path, dir, tmpdir, or abstract "
@@ -399,29 +408,29 @@ msgstr ""
 "O enderezo «%s» non é válido (necesítase exactamente unha ruta, directorio, "
 "directorio temporal ou claves abstractas)"
 
-#: gio/gdbusaddress.c:248 gio/gdbusaddress.c:259 gio/gdbusaddress.c:274
-#: gio/gdbusaddress.c:337 gio/gdbusaddress.c:348
+#: gio/gdbusaddress.c:251 gio/gdbusaddress.c:262 gio/gdbusaddress.c:277
+#: gio/gdbusaddress.c:340 gio/gdbusaddress.c:351
 #, c-format
 msgid "Error in address “%s” — the “%s” attribute is malformed"
 msgstr "Erro no enderezo «%s» — o atributo «%s» está mal formado"
 
-#: gio/gdbusaddress.c:418 gio/gdbusaddress.c:682
+#: gio/gdbusaddress.c:421 gio/gdbusaddress.c:680
 #, c-format
 msgid "Unknown or unsupported transport “%s” for address “%s”"
 msgstr "Transporte «%s» descoñecido ou non compatíbel para o enderezo «%s»"
 
-#: gio/gdbusaddress.c:462
+#: gio/gdbusaddress.c:465
 #, c-format
 msgid "Address element “%s” does not contain a colon (:)"
 msgstr "O elemento do enderezo «%s» non contén un carácter dous puntos (:)"
 
-#: gio/gdbusaddress.c:471
+#: gio/gdbusaddress.c:474
 #, c-format
 msgid "Transport name in address element “%s” must not be empty"
 msgstr ""
 "O nome de transporte do elemento de enderezo «%s» non pode estar baleiro"
 
-#: gio/gdbusaddress.c:492
+#: gio/gdbusaddress.c:495
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” does not contain an equal "
@@ -430,7 +439,7 @@ msgstr ""
 "O par clave/valor %d, «%s» no elemento do enderezo «%s» non contén un signo "
 "de igual"
 
-#: gio/gdbusaddress.c:503
+#: gio/gdbusaddress.c:506
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” must not have an empty key"
@@ -438,7 +447,7 @@ msgstr ""
 "O par clave/valor %d, «%s» no elemento do enderezo «%s» non debe ter unha "
 "chave baleira"
 
-#: gio/gdbusaddress.c:517
+#: gio/gdbusaddress.c:520
 #, c-format
 msgid ""
 "Error unescaping key or value in Key/Value pair %d, “%s”, in address element "
@@ -447,7 +456,7 @@ msgstr ""
 "Produciuse un erro ao desescapar a clave ou o valor no par clave/valor %d, "
 "«%s», no elemento de enderezo «%s»"
 
-#: gio/gdbusaddress.c:589
+#: gio/gdbusaddress.c:588
 #, c-format
 msgid ""
 "Error in address “%s” — the unix transport requires exactly one of the keys "
@@ -456,83 +465,85 @@ msgstr ""
 "Erro no enderezo «%s» — o transporte unix require que se estabeleza "
 "exactamente unha das claves «path» ou «abstract»"
 
-#: gio/gdbusaddress.c:625
+#: gio/gdbusaddress.c:623
 #, c-format
 msgid "Error in address “%s” — the host attribute is missing or malformed"
 msgstr "Erro no enderezo «%s» — falta o atributo do equipo ou está mal formado"
 
-#: gio/gdbusaddress.c:639
+#: gio/gdbusaddress.c:637
 #, c-format
 msgid "Error in address “%s” — the port attribute is missing or malformed"
 msgstr "Erro no enderezo «%s» — falta o atributo do porto ou está mal formado"
 
-#: gio/gdbusaddress.c:653
+#: gio/gdbusaddress.c:651
 #, c-format
 msgid "Error in address “%s” — the noncefile attribute is missing or malformed"
 msgstr ""
 "Erro no enderezo «%s» — falta o atributo do ficheiro de uso de unha vez ou "
 "está mal formado"
 
-#: gio/gdbusaddress.c:674
+#: gio/gdbusaddress.c:672
 msgid "Error auto-launching: "
 msgstr "Produciuse un erro ao autoiniciar: "
 
-#: gio/gdbusaddress.c:727
+#: gio/gdbusaddress.c:725
 #, c-format
 msgid "Error opening nonce file “%s”: %s"
 msgstr "Produciuse un erro ao abrir o ficheiro de uso de unha vez «%s»: %s"
 
-#: gio/gdbusaddress.c:746
+#: gio/gdbusaddress.c:744
 #, c-format
 msgid "Error reading from nonce file “%s”: %s"
 msgstr "Produciuse un erro ao ler o ficheiro de uso de unha vez «%s»: %s"
 
-#: gio/gdbusaddress.c:755
+#: gio/gdbusaddress.c:753
 #, c-format
 msgid "Error reading from nonce file “%s”, expected 16 bytes, got %d"
 msgstr ""
 "Produciuse un erro ao ler o ficheiro de uso de unha vez «%s»:, esperábanse "
 "16 bytes, obtivéronse %d"
 
-#: gio/gdbusaddress.c:773
+#: gio/gdbusaddress.c:771
 #, c-format
 msgid "Error writing contents of nonce file “%s” to stream:"
 msgstr ""
 "Produciuse un erro ao gravar os contidos do ficheiro de uso de unha vez «%s» "
 "ao fluxo:"
 
-#: gio/gdbusaddress.c:988
+#: gio/gdbusaddress.c:986
 msgid "The given address is empty"
 msgstr "O enderezo fornecido está baleiro"
 
-#: gio/gdbusaddress.c:1101
+#: gio/gdbusaddress.c:1099
 #, c-format
-msgid "Cannot spawn a message bus when setuid"
-msgstr "Non é posíbel iniciar («spawn») unha bus de mensaxe sen setuid"
+msgid "Cannot spawn a message bus when AT_SECURE is set"
+msgstr ""
+"Non é posíbel iniciar («spawn») unha bus de mensaxe cando AT_SECURE está "
+"estabelecido"
 
-#: gio/gdbusaddress.c:1108
+#: gio/gdbusaddress.c:1106
 msgid "Cannot spawn a message bus without a machine-id: "
 msgstr ""
 "Non é posíbel iniciar («spawn») unha mensaxe ao bus sen un ID de máquina: "
 
-#: gio/gdbusaddress.c:1115
+#: gio/gdbusaddress.c:1113
 #, c-format
 msgid "Cannot autolaunch D-Bus without X11 $DISPLAY"
 msgstr "Non é posíbel autoiniciar D-Bus sen un $DISPLAY X11"
 
-#: gio/gdbusaddress.c:1157
+#: gio/gdbusaddress.c:1155
 #, c-format
 msgid "Error spawning command line “%s”: "
 msgstr "Produciuse un erro ao iniciar («spawn») a orde «%s»: "
 
-#: gio/gdbusaddress.c:1226
+#: gio/gdbusaddress.c:1224
 #, c-format
 msgid "Cannot determine session bus address (not implemented for this OS)"
 msgstr ""
 "Non é posíbel determinar o enderezo do bus de sesión (non está implementado "
 "para este SO)"
 
-#: gio/gdbusaddress.c:1397 gio/gdbusconnection.c:7261
+#: gio/gdbusaddress.c:1373 gio/gdbusconnection.c:7318
 #, c-format
 msgid ""
 "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
@@ -541,7 +552,7 @@ msgstr ""
 "Non é posíbel determinar o enderezo do bus desde a variábel de ambiente "
 "DBUS_STARTER_BUS_TYPE - valor descoñecido «%s»"
 
-#: gio/gdbusaddress.c:1406 gio/gdbusconnection.c:7270
+#: gio/gdbusaddress.c:1382 gio/gdbusconnection.c:7327
 msgid ""
 "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
 "variable is not set"
@@ -549,7 +560,7 @@ msgstr ""
 "Non é posíbel determinar o enderezo do bus xa que a variábel de ambiente "
 "DBUS_STARTER_BUS_TYPE non está estabelecida"
 
-#: gio/gdbusaddress.c:1416
+#: gio/gdbusaddress.c:1392
 #, c-format
 msgid "Unknown bus type %d"
 msgstr "Tipo de bus %d descoñecido"
@@ -578,12 +589,12 @@ msgstr "Os IDs de usuario deben ser os mesmos para o par e o servidor"
 msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
 msgstr "Cancelando mediante GDBusAuthObserver::authorize-authenticated-peer"
 
-#: gio/gdbusauthmechanismsha1.c:298
+#: gio/gdbusauthmechanismsha1.c:300
 #, c-format
 msgid "Error when getting information for directory “%s”: %s"
 msgstr "Produciuse un erro ao obter a información do directorio «%s»: %s"
 
-#: gio/gdbusauthmechanismsha1.c:313
+#: gio/gdbusauthmechanismsha1.c:315
 #, c-format
 msgid ""
 "Permissions on directory “%s” are malformed. Expected mode 0700, got 0%o"
@@ -591,32 +602,32 @@ msgstr ""
 "Os permisos no directorio «%s» están malformados. Esperábase o modo 0700 e "
 "obtívose 0%o"
 
-#: gio/gdbusauthmechanismsha1.c:346 gio/gdbusauthmechanismsha1.c:357
+#: gio/gdbusauthmechanismsha1.c:348 gio/gdbusauthmechanismsha1.c:359
 #, c-format
 msgid "Error creating directory “%s”: %s"
 msgstr "Produciuse un erro ao crear o directorio %s: %s"
 
-#: gio/gdbusauthmechanismsha1.c:359 gio/gfile.c:1062 gio/gfile.c:1300
-#: gio/gfile.c:1438 gio/gfile.c:1676 gio/gfile.c:1731 gio/gfile.c:1789
-#: gio/gfile.c:1873 gio/gfile.c:1930 gio/gfile.c:1994 gio/gfile.c:2049
-#: gio/gfile.c:3754 gio/gfile.c:3809 gio/gfile.c:4102 gio/gfile.c:4572
-#: gio/gfile.c:4983 gio/gfile.c:5068 gio/gfile.c:5158 gio/gfile.c:5255
-#: gio/gfile.c:5342 gio/gfile.c:5443 gio/gfile.c:8153 gio/gfile.c:8243
-#: gio/gfile.c:8327 gio/win32/gwinhttpfile.c:453
+#: gio/gdbusauthmechanismsha1.c:361 gio/gfile.c:1080 gio/gfile.c:1318
+#: gio/gfile.c:1456 gio/gfile.c:1694 gio/gfile.c:1749 gio/gfile.c:1807
+#: gio/gfile.c:1891 gio/gfile.c:1948 gio/gfile.c:2012 gio/gfile.c:2067
+#: gio/gfile.c:3772 gio/gfile.c:3912 gio/gfile.c:4205 gio/gfile.c:4675
+#: gio/gfile.c:5086 gio/gfile.c:5171 gio/gfile.c:5261 gio/gfile.c:5358
+#: gio/gfile.c:5445 gio/gfile.c:5546 gio/gfile.c:8375 gio/gfile.c:8465
+#: gio/gfile.c:8549 gio/win32/gwinhttpfile.c:453
 msgid "Operation not supported"
 msgstr "Operación non permitida"
 
-#: gio/gdbusauthmechanismsha1.c:402
+#: gio/gdbusauthmechanismsha1.c:404
 #, c-format
 msgid "Error opening keyring “%s” for reading: "
 msgstr "Produciuse un erro ao abrir o anel de chaves «%s» para a súa lectura: "
 
-#: gio/gdbusauthmechanismsha1.c:425 gio/gdbusauthmechanismsha1.c:747
+#: gio/gdbusauthmechanismsha1.c:427 gio/gdbusauthmechanismsha1.c:769
 #, c-format
 msgid "Line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr "A liña %d do anel de chaves en «%s» con contido «%s» está malformada"
 
-#: gio/gdbusauthmechanismsha1.c:439 gio/gdbusauthmechanismsha1.c:761
+#: gio/gdbusauthmechanismsha1.c:441 gio/gdbusauthmechanismsha1.c:783
 #, c-format
 msgid ""
 "First token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -624,7 +635,7 @@ msgstr ""
 "O primeiro token da liña %d no anel de chaves en «%s» co contido «%s» está "
 "malformado"
 
-#: gio/gdbusauthmechanismsha1.c:453 gio/gdbusauthmechanismsha1.c:775
+#: gio/gdbusauthmechanismsha1.c:455 gio/gdbusauthmechanismsha1.c:797
 #, c-format
 msgid ""
 "Second token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -632,56 +643,56 @@ msgstr ""
 "O segundo token da liña %d no anel de chaves en «%s» co contido «%s» está "
 "malformado"
 
-#: gio/gdbusauthmechanismsha1.c:477
+#: gio/gdbusauthmechanismsha1.c:479
 #, c-format
 msgid "Didn’t find cookie with id %d in the keyring at “%s”"
 msgstr "Non foi posíbel atopar a cookie co id %d no anel de chave en «%s»"
 
-#: gio/gdbusauthmechanismsha1.c:523
+#: gio/gdbusauthmechanismsha1.c:536
 #, c-format
 msgid "Error creating lock file “%s”: %s"
 msgstr "Produciuse un erro ao crear o ficheiro de bloqueo «%s»: %s"
 
-#: gio/gdbusauthmechanismsha1.c:587
+#: gio/gdbusauthmechanismsha1.c:609
 #, c-format
 msgid "Error deleting stale lock file “%s”: %s"
 msgstr "Produciuse un erro ao eliminar o ficheiro de bloqueo antigo «%s»: %s"
 
-#: gio/gdbusauthmechanismsha1.c:626
+#: gio/gdbusauthmechanismsha1.c:648
 #, c-format
 msgid "Error closing (unlinked) lock file “%s”: %s"
 msgstr "Produciuse un erro ao pechar o ficheiro de bloqueo «%s»: %s"
 
-#: gio/gdbusauthmechanismsha1.c:637
+#: gio/gdbusauthmechanismsha1.c:659
 #, c-format
 msgid "Error unlinking lock file “%s”: %s"
 msgstr "Produciuse un erro ao abrir o ficheiro de bloqueo «%s»: %s"
 
-#: gio/gdbusauthmechanismsha1.c:714
+#: gio/gdbusauthmechanismsha1.c:736
 #, c-format
 msgid "Error opening keyring “%s” for writing: "
 msgstr "Produciuse un erro ao abrir o anel de chaves «%s» para escribir: "
 
-#: gio/gdbusauthmechanismsha1.c:908
+#: gio/gdbusauthmechanismsha1.c:930
 #, c-format
 msgid "(Additionally, releasing the lock for “%s” also failed: %s) "
 msgstr "(Ademais, a liberación do bloqueo para «%s» tamén fallou: %s) "
 
-#: gio/gdbusconnection.c:603 gio/gdbusconnection.c:2417
+#: gio/gdbusconnection.c:588 gio/gdbusconnection.c:2402
 msgid "The connection is closed"
 msgstr "A conexión está pechado"
 
-#: gio/gdbusconnection.c:1902
+#: gio/gdbusconnection.c:1887
 msgid "Timeout was reached"
 msgstr "Tempo de espera máximo alcanzado"
 
-#: gio/gdbusconnection.c:2540
+#: gio/gdbusconnection.c:2525
 msgid ""
 "Unsupported flags encountered when constructing a client-side connection"
 msgstr ""
 "Atopáronse opcións non compatíbeis ao construír a conexión da parte cliente"
 
-#: gio/gdbusconnection.c:4189 gio/gdbusconnection.c:4536
+#: gio/gdbusconnection.c:4253 gio/gdbusconnection.c:4607
 #, c-format
 msgid ""
 "No such interface “org.freedesktop.DBus.Properties” on object at path %s"
@@ -689,106 +700,105 @@ msgstr ""
 "Non existe a interface «org.freedesktop.DBus.Properties» no obxecto coa ruta "
 "%s"
 
-#: gio/gdbusconnection.c:4331
+#: gio/gdbusconnection.c:4398
 #, c-format
 msgid "No such property “%s”"
 msgstr "Non existe a propiedade «%s»"
 
-#: gio/gdbusconnection.c:4343
+#: gio/gdbusconnection.c:4410
 #, c-format
 msgid "Property “%s” is not readable"
 msgstr "Non é posíbel escribir a propiedade «%s»"
 
-#: gio/gdbusconnection.c:4354
+#: gio/gdbusconnection.c:4421
 #, c-format
 msgid "Property “%s” is not writable"
 msgstr "Non é posíbel escribir a propiedade «%s»"
 
-#: gio/gdbusconnection.c:4374
+#: gio/gdbusconnection.c:4441
 #, c-format
 msgid "Error setting property “%s”: Expected type “%s” but got “%s”"
 msgstr ""
 "Produciuse un erro ao estabelecer a propiedade «%s»: Esperábase o tipo «%s» "
 "pero obtívose «%s»"
 
-#: gio/gdbusconnection.c:4479 gio/gdbusconnection.c:4687
-#: gio/gdbusconnection.c:6689
+#: gio/gdbusconnection.c:4546 gio/gdbusconnection.c:4761
+#: gio/gdbusconnection.c:6744
 #, c-format
 msgid "No such interface “%s”"
 msgstr "Non existe a interface «%s»"
 
-#: gio/gdbusconnection.c:4905 gio/gdbusconnection.c:7201
+#: gio/gdbusconnection.c:4983 gio/gdbusconnection.c:7258
 #, c-format
 msgid "No such interface “%s” on object at path %s"
 msgstr "Non existe a interface «%s» no obxecto coa ruta %s"
 
-#: gio/gdbusconnection.c:5003
+#: gio/gdbusconnection.c:5084
 #, c-format
 msgid "No such method “%s”"
 msgstr "Non existe a clave «%s»"
 
-#: gio/gdbusconnection.c:5034
+#: gio/gdbusconnection.c:5115
 #, c-format
 msgid "Type of message, “%s”, does not match expected type “%s”"
 msgstr "O tipo da mensaxe, «%s», non coincide co tipo «%s» esperado"
 
-#: gio/gdbusconnection.c:5237
+#: gio/gdbusconnection.c:5318
 #, c-format
 msgid "An object is already exported for the interface %s at %s"
 msgstr "Xa hai un obxecto exportado para a interface %s en %s"
 
-#: gio/gdbusconnection.c:5463
+#: gio/gdbusconnection.c:5545
 #, c-format
 msgid "Unable to retrieve property %s.%s"
 msgstr "Non é posíbel obter a propiedade %s.%s"
 
-#: gio/gdbusconnection.c:5519
+#: gio/gdbusconnection.c:5601
 #, c-format
 msgid "Unable to set property %s.%s"
 msgstr "Non é posíbel estabelecer a propiedade %s.%s"
 
-#: gio/gdbusconnection.c:5698
+#: gio/gdbusconnection.c:5780
 #, c-format
 msgid "Method “%s” returned type “%s”, but expected “%s”"
 msgstr "O método «%s» devolveu un tipo «%s» máis esperábase «%s»"
 
-#: gio/gdbusconnection.c:6800
+#: gio/gdbusconnection.c:6856
 #, c-format
 msgid "Method “%s” on interface “%s” with signature “%s” does not exist"
 msgstr "O método «%s» na interface «%s» coa sinatura «%s» non existe"
 
-#: gio/gdbusconnection.c:6921
+#: gio/gdbusconnection.c:6977
 #, c-format
 msgid "A subtree is already exported for %s"
 msgstr "Xa se exportou un subárbore para %s"
 
-#: gio/gdbusconnection.c:7209
+#: gio/gdbusconnection.c:7266
 #, c-format
-#| msgid "Key file does not have group “%s”"
 msgid "Object does not exist at path “%s”"
 msgstr "O obxecto non existe na ruta «%s»"
 
-#: gio/gdbusmessage.c:1266
+#: gio/gdbusmessage.c:1301
 msgid "type is INVALID"
 msgstr "o tipo é INVALID"
 
-#: gio/gdbusmessage.c:1277
+#: gio/gdbusmessage.c:1312
 msgid "METHOD_CALL message: PATH or MEMBER header field is missing"
 msgstr "Mensaxe METHOD_CALL: falta o campo da cabeceira PATH ou MEMBER"
 
-#: gio/gdbusmessage.c:1288
+#: gio/gdbusmessage.c:1323
 msgid "METHOD_RETURN message: REPLY_SERIAL header field is missing"
 msgstr "Mensaxe METHOD_RETURN: falta o campo da cabeceira REPLY_SERIAL"
 
-#: gio/gdbusmessage.c:1300
+#: gio/gdbusmessage.c:1335
 msgid "ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing"
 msgstr "Mensaxe ERROR: falta o campo da cabeceira REPLY_SERIAL ou ERROR_NAME"
 
-#: gio/gdbusmessage.c:1313
+#: gio/gdbusmessage.c:1348
 msgid "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing"
 msgstr "Mensaxe SIGNAL: falta o campo da cabeceira PATH, INTERFACE ou MEMBER"
 
-#: gio/gdbusmessage.c:1321
+#: gio/gdbusmessage.c:1356
 msgid ""
 "SIGNAL message: The PATH header field is using the reserved value /org/"
 "freedesktop/DBus/Local"
@@ -796,7 +806,7 @@ msgstr ""
 "Mensaxe SIGNAL: o campo da cabeceira PATH está usando un valor reservado /"
 "org/freedesktop/DBus/Local"
 
-#: gio/gdbusmessage.c:1329
+#: gio/gdbusmessage.c:1364
 msgid ""
 "SIGNAL message: The INTERFACE header field is using the reserved value org."
 "freedesktop.DBus.Local"
@@ -804,19 +814,19 @@ msgstr ""
 "Mensaxe SIGNAL: O campo da cabeceira INTERFACE está usando un valor "
 "reservado org.freedesktop.DBus.Local"
 
-#: gio/gdbusmessage.c:1377 gio/gdbusmessage.c:1437
+#: gio/gdbusmessage.c:1412 gio/gdbusmessage.c:1472
 #, c-format
 msgid "Wanted to read %lu byte but only got %lu"
 msgid_plural "Wanted to read %lu bytes but only got %lu"
 msgstr[0] "Quíxose ler %lu byte pero obtívose un %lu"
 msgstr[1] "Quixéronse ler %lu bytes pero obtívose un %lu"
 
-#: gio/gdbusmessage.c:1391
+#: gio/gdbusmessage.c:1426
 #, c-format
 msgid "Expected NUL byte after the string “%s” but found byte %d"
 msgstr "Esperábase un byte NUL despois da cadea «%s» pero atopouse o byte %d"
 
-#: gio/gdbusmessage.c:1410
+#: gio/gdbusmessage.c:1445
 #, c-format
 msgid ""
 "Expected valid UTF-8 string but found invalid bytes at byte offset %d "
@@ -826,21 +836,21 @@ msgstr ""
 "byte desvío %d (a lonxitude da cadea é %d). A cadea UTF-8 correcta até ese "
 "punto foi «%s»"
 
-#: gio/gdbusmessage.c:1474 gio/gdbusmessage.c:1722 gio/gdbusmessage.c:1911
+#: gio/gdbusmessage.c:1509 gio/gdbusmessage.c:1785 gio/gdbusmessage.c:1996
 msgid "Value nested too deeply"
 msgstr "Valor aniñado demasiado profundo"
 
-#: gio/gdbusmessage.c:1620
+#: gio/gdbusmessage.c:1677
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus object path"
 msgstr "O valor analizado «%s» non é unha ruta de obxecto D-Bus correcta"
 
-#: gio/gdbusmessage.c:1642
+#: gio/gdbusmessage.c:1701
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature"
 msgstr "O valor analizado «%s» non é unha sinatura D-Bus correcta"
 
-#: gio/gdbusmessage.c:1689
+#: gio/gdbusmessage.c:1752
 #, c-format
 msgid ""
 "Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB)."
@@ -853,7 +863,7 @@ msgstr[1] ""
 "Atopouse unha matriz cunha lonxitude de %u bytes. A lonxitude máxima é 2<<26 "
 "bytes (64 MiB)."
 
-#: gio/gdbusmessage.c:1709
+#: gio/gdbusmessage.c:1772
 #, c-format
 msgid ""
 "Encountered array of type “a%c”, expected to have a length a multiple of %u "
@@ -862,13 +872,17 @@ msgstr ""
 "Atopouse unha matriz de tipo «a%c», agardábase ter unha de lonxitude de "
 "varios %u bytes, aínda que se atopou unha de %u bytes"
 
-#: gio/gdbusmessage.c:1895
+#: gio/gdbusmessage.c:1926 gio/gdbusmessage.c:2645
+msgid "Empty structures (tuples) are not allowed in D-Bus"
+msgstr "Non se permiten as estruturas baleiras (tuplas) en D-Bus"
+
+#: gio/gdbusmessage.c:1980
 #, c-format
 msgid "Parsed value “%s” for variant is not a valid D-Bus signature"
 msgstr ""
 "O valor «%s» analizado para a variante non é unha sinatura de D-Bus correcta"
 
-#: gio/gdbusmessage.c:1936
+#: gio/gdbusmessage.c:2021
 #, c-format
 msgid ""
 "Error deserializing GVariant with type string “%s” from the D-Bus wire format"
@@ -876,7 +890,7 @@ msgstr ""
 "Produciuse un erro ao deserializar o GVariant co tipo cadea «%s» desde o "
 "formato ligado D-Bus"
 
-#: gio/gdbusmessage.c:2121
+#: gio/gdbusmessage.c:2206
 #, c-format
 msgid ""
 "Invalid endianness value. Expected 0x6c (“l”) or 0x42 (“B”) but found value "
@@ -885,30 +899,30 @@ msgstr ""
 "Valor de «endianness» non válido. Esperábase 0x6c («|») ou 0x42 («B») pero "
 "atopouse 0x%02x"
 
-#: gio/gdbusmessage.c:2134
+#: gio/gdbusmessage.c:2225
 #, c-format
 msgid "Invalid major protocol version. Expected 1 but found %d"
 msgstr ""
 "A versión maior do protocolo non é válida. Esperábase 1 pero atopouse a %d"
 
-#: gio/gdbusmessage.c:2188 gio/gdbusmessage.c:2784
+#: gio/gdbusmessage.c:2283 gio/gdbusmessage.c:2881
 msgid "Signature header found but is not of type signature"
 msgstr "Atopouse a cabeceira da sinatura pero non é do tipo sinatura"
 
-#: gio/gdbusmessage.c:2200
+#: gio/gdbusmessage.c:2295
 #, c-format
 msgid "Signature header with signature “%s” found but message body is empty"
 msgstr ""
 "Atopouse a cabeceira de sinatura coa sinatura «%s» máis o corpo da mensaxe "
 "está baleiro"
 
-#: gio/gdbusmessage.c:2215
+#: gio/gdbusmessage.c:2310
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature (for body)"
 msgstr ""
 "O valor analizado «%s» non é unha sinatura D-Bus correcta (para o corpo)"
 
-#: gio/gdbusmessage.c:2247
+#: gio/gdbusmessage.c:2342
 #, 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"
@@ -919,11 +933,11 @@ msgstr[1] ""
 "Non hai unha cabeceira da sinatura na mensaxe pero o corpo da mensaxe ten %u "
 "bytes"
 
-#: gio/gdbusmessage.c:2257
+#: gio/gdbusmessage.c:2352
 msgid "Cannot deserialize message: "
 msgstr "Non foi posíbel deserializar a mensaxe: "
 
-#: gio/gdbusmessage.c:2601
+#: gio/gdbusmessage.c:2698
 #, c-format
 msgid ""
 "Error serializing GVariant with type string “%s” to the D-Bus wire format"
@@ -931,7 +945,7 @@ msgstr ""
 "Produciuse un erro ao serializar o GVariant co tipo cadea «%s» desde o "
 "formato ligado D-Bus"
 
-#: gio/gdbusmessage.c:2738
+#: gio/gdbusmessage.c:2835
 #, c-format
 msgid ""
 "Number of file descriptors in message (%d) differs from header field (%d)"
@@ -939,18 +953,18 @@ msgstr ""
 "O número de descritores de ficheiro no mensaxe (%d) difire do campo "
 "cabeceira (%d)"
 
-#: gio/gdbusmessage.c:2746
+#: gio/gdbusmessage.c:2843
 msgid "Cannot serialize message: "
 msgstr "Non foi posíbel serializar a mensaxe: "
 
-#: gio/gdbusmessage.c:2799
+#: gio/gdbusmessage.c:2896
 #, c-format
 msgid "Message body has signature “%s” but there is no signature header"
 msgstr ""
 "O corpo da mensaxe ten a sinatura «%s» máis non está presente a cabeceira de "
 "sinatura"
 
-#: gio/gdbusmessage.c:2809
+#: gio/gdbusmessage.c:2906
 #, c-format
 msgid ""
 "Message body has type signature “%s” but signature in the header field is "
@@ -959,54 +973,54 @@ msgstr ""
 "O corpo da mensaxe ten a sinatura de tipo «%s» pero a sinatura no campo da "
 "cabeceira é «%s»"
 
-#: gio/gdbusmessage.c:2825
+#: gio/gdbusmessage.c:2922
 #, c-format
 msgid "Message body is empty but signature in the header field is “(%s)”"
 msgstr ""
 "O corpo da mensaxe está baleiro máis a sinatura do campo da cabeceira é "
 "«(%s)»"
 
-#: gio/gdbusmessage.c:3380
+#: gio/gdbusmessage.c:3477
 #, c-format
 msgid "Error return with body of type “%s”"
 msgstr "Produciuse un erro ao devolver co corpo de tipo «%s»"
 
-#: gio/gdbusmessage.c:3388
+#: gio/gdbusmessage.c:3485
 msgid "Error return with empty body"
 msgstr "Produciuse un erro ao devolver co corpo baleiro"
 
-#: gio/gdbusprivate.c:2246
+#: gio/gdbusprivate.c:2185
 #, c-format
 msgid "(Type any character to close this window)\n"
 msgstr "(Prema calquera carácter para pechar esta xanela)\n"
 
-#: gio/gdbusprivate.c:2420
+#: gio/gdbusprivate.c:2371
 #, c-format
 msgid "Session dbus not running, and autolaunch failed"
 msgstr "O DBus de sesión non está executándose e o autoiniciado fallou"
 
-#: gio/gdbusprivate.c:2443
+#: gio/gdbusprivate.c:2394
 #, c-format
 msgid "Unable to get Hardware profile: %s"
 msgstr "Non é posíbel obter o perfil de hardware: %s"
 
 #. Translators: Both placeholders are file paths
-#: gio/gdbusprivate.c:2494
+#: gio/gdbusprivate.c:2445
 #, c-format
 msgid "Unable to load %s or %s: "
 msgstr "Non foi posíbel cargar %s ou %s: "
 
-#: gio/gdbusproxy.c:1569
+#: gio/gdbusproxy.c:1573
 #, c-format
 msgid "Error calling StartServiceByName for %s: "
 msgstr "Produciuse un erro ao chamar a StartServiceByName para %s: "
 
-#: gio/gdbusproxy.c:1592
+#: gio/gdbusproxy.c:1596
 #, c-format
 msgid "Unexpected reply %d from StartServiceByName(\"%s\") method"
 msgstr "Resposta %d non esperada desde o método StartServiceByName(«%s»)"
 
-#: gio/gdbusproxy.c:2699 gio/gdbusproxy.c:2834
+#: gio/gdbusproxy.c:2707 gio/gdbusproxy.c:2842
 #, c-format
 msgid ""
 "Cannot invoke method; proxy is for the well-known name %s without an owner, "
@@ -1063,66 +1077,66 @@ msgstr ""
 "\n"
 "Use '%s ORDE --help' para obter axuda sobre cada orde.\n"
 
-#: gio/gdbus-tool.c:201 gio/gdbus-tool.c:273 gio/gdbus-tool.c:345
-#: gio/gdbus-tool.c:369 gio/gdbus-tool.c:859 gio/gdbus-tool.c:1236
-#: gio/gdbus-tool.c:1724
+#: gio/gdbus-tool.c:202 gio/gdbus-tool.c:274 gio/gdbus-tool.c:346
+#: gio/gdbus-tool.c:370 gio/gdbus-tool.c:860 gio/gdbus-tool.c:1245
+#: gio/gdbus-tool.c:1733
 #, c-format
 msgid "Error: %s\n"
 msgstr "Erro: %s\n"
 
-#: gio/gdbus-tool.c:212 gio/gdbus-tool.c:286 gio/gdbus-tool.c:1740
+#: gio/gdbus-tool.c:213 gio/gdbus-tool.c:287 gio/gdbus-tool.c:1749
 #, c-format
 msgid "Error parsing introspection XML: %s\n"
 msgstr "Produciuse un erro ao analizar o XML de introspección: %s\n"
 
-#: gio/gdbus-tool.c:250
+#: gio/gdbus-tool.c:251
 #, c-format
 msgid "Error: %s is not a valid name\n"
 msgstr "Erro: %s non é un nome válido\n"
 
-#: gio/gdbus-tool.c:255 gio/gdbus-tool.c:745 gio/gdbus-tool.c:1060
-#: gio/gdbus-tool.c:1890 gio/gdbus-tool.c:2130
+#: gio/gdbus-tool.c:256 gio/gdbus-tool.c:746 gio/gdbus-tool.c:1064
+#: gio/gdbus-tool.c:1899 gio/gdbus-tool.c:2139
 #, c-format
 msgid "Error: %s is not a valid object path\n"
 msgstr "Erro: %s non é unha ruta a un obxecto correcta\n"
 
-#: gio/gdbus-tool.c:403
+#: gio/gdbus-tool.c:404
 msgid "Connect to the system bus"
 msgstr "Conectar ao bus do sistema"
 
-#: gio/gdbus-tool.c:404
+#: gio/gdbus-tool.c:405
 msgid "Connect to the session bus"
 msgstr "Conectar ao bus de sesión"
 
-#: gio/gdbus-tool.c:405
+#: gio/gdbus-tool.c:406
 msgid "Connect to given D-Bus address"
 msgstr "Conectar a un enderezo D-Bus fornecido"
 
-#: gio/gdbus-tool.c:415
+#: gio/gdbus-tool.c:416
 msgid "Connection Endpoint Options:"
 msgstr "Opcións da conexión do extremo:"
 
-#: gio/gdbus-tool.c:416
+#: gio/gdbus-tool.c:417
 msgid "Options specifying the connection endpoint"
 msgstr "Opción para especificar a conexión do extremo"
 
-#: gio/gdbus-tool.c:439
+#: gio/gdbus-tool.c:440
 #, c-format
 msgid "No connection endpoint specified"
 msgstr "Non se especificou o punto final da conexión"
 
-#: gio/gdbus-tool.c:449
+#: gio/gdbus-tool.c:450
 #, c-format
 msgid "Multiple connection endpoints specified"
 msgstr "Especificáronse varios puntos finais da conexión"
 
-#: gio/gdbus-tool.c:522
+#: gio/gdbus-tool.c:523
 #, c-format
 msgid ""
 "Warning: According to introspection data, interface “%s” does not exist\n"
 msgstr "Aviso: segundo os datos de introspección a interface «%s» non existe\n"
 
-#: gio/gdbus-tool.c:531
+#: gio/gdbus-tool.c:532
 #, c-format
 msgid ""
 "Warning: According to introspection data, method “%s” does not exist on "
@@ -1131,160 +1145,164 @@ msgstr ""
 "Aviso: segundo os datos de introspección o método «%s» non existe na "
 "interface «%s»\n"
 
-#: gio/gdbus-tool.c:593
+#: gio/gdbus-tool.c:594
 msgid "Optional destination for signal (unique name)"
 msgstr "Destino opcional para o sinal (nome único)"
 
-#: gio/gdbus-tool.c:594
+#: gio/gdbus-tool.c:595
 msgid "Object path to emit signal on"
 msgstr "Ruta do obxecto sobre o que emitir o sinal"
 
-#: gio/gdbus-tool.c:595
+#: gio/gdbus-tool.c:596
 msgid "Signal and interface name"
 msgstr "Nomes da interface e sinal"
 
-#: gio/gdbus-tool.c:628
+#: gio/gdbus-tool.c:629
 msgid "Emit a signal."
 msgstr "Emitir un sinal."
 
-#: gio/gdbus-tool.c:683 gio/gdbus-tool.c:997 gio/gdbus-tool.c:1827
-#: gio/gdbus-tool.c:2059 gio/gdbus-tool.c:2279
+#: gio/gdbus-tool.c:684 gio/gdbus-tool.c:1001 gio/gdbus-tool.c:1836
+#: gio/gdbus-tool.c:2068 gio/gdbus-tool.c:2288
 #, c-format
 msgid "Error connecting: %s\n"
 msgstr "Produciuse un erro ao conectar: %s\n"
 
-#: gio/gdbus-tool.c:703
+#: gio/gdbus-tool.c:704
 #, c-format
 msgid "Error: %s is not a valid unique bus name.\n"
 msgstr "Erro: %s non é un nome de bus único correcto.\n"
 
-#: gio/gdbus-tool.c:722 gio/gdbus-tool.c:1040 gio/gdbus-tool.c:1870
+#: gio/gdbus-tool.c:723 gio/gdbus-tool.c:1044 gio/gdbus-tool.c:1879
 msgid "Error: Object path is not specified\n"
 msgstr "Erro: non se especificou unha ruta de obxecto\n"
 
-#: gio/gdbus-tool.c:765
+#: gio/gdbus-tool.c:766
 msgid "Error: Signal name is not specified\n"
 msgstr "Erro: non se especificou o nome do sinal\n"
 
-#: gio/gdbus-tool.c:779
+#: gio/gdbus-tool.c:780
 #, c-format
 msgid "Error: Signal name “%s” is invalid\n"
 msgstr "Erro: o nome do sinal «%s» non é válido\n"
 
-#: gio/gdbus-tool.c:791
+#: gio/gdbus-tool.c:792
 #, c-format
 msgid "Error: %s is not a valid interface name\n"
 msgstr "Erro: %s non é un nome de interface correcto\n"
 
-#: gio/gdbus-tool.c:797
+#: gio/gdbus-tool.c:798
 #, c-format
 msgid "Error: %s is not a valid member name\n"
 msgstr "Erro: %s non é un nome de membro correcto\n"
 
 #. Use the original non-"parse-me-harder" error
-#: gio/gdbus-tool.c:834 gio/gdbus-tool.c:1172
+#: gio/gdbus-tool.c:835 gio/gdbus-tool.c:1176
 #, c-format
 msgid "Error parsing parameter %d: %s\n"
 msgstr "Produciuse un erro ao analizar a opción %d: %s\n"
 
-#: gio/gdbus-tool.c:866
+#: gio/gdbus-tool.c:867
 #, c-format
 msgid "Error flushing connection: %s\n"
 msgstr "Produciuse un erro ao limpar a conexión: %s\n"
 
-#: gio/gdbus-tool.c:893
+#: gio/gdbus-tool.c:895
 msgid "Destination name to invoke method on"
 msgstr "Nome do destino onde invocar o método"
 
-#: gio/gdbus-tool.c:894
+#: gio/gdbus-tool.c:896
 msgid "Object path to invoke method on"
 msgstr "Ruta ao obxecto onde invocar o método"
 
-#: gio/gdbus-tool.c:895
+#: gio/gdbus-tool.c:897
 msgid "Method and interface name"
 msgstr "Método e nome da interface"
 
-#: gio/gdbus-tool.c:896
+#: gio/gdbus-tool.c:898
 msgid "Timeout in seconds"
 msgstr "Tempo de expiración en segundos"
 
-#: gio/gdbus-tool.c:942
+#: gio/gdbus-tool.c:899
+msgid "Allow interactive authorization"
+msgstr "Permitir autorización interactiva"
+
+#: gio/gdbus-tool.c:946
 msgid "Invoke a method on a remote object."
 msgstr "Invocar un método nun obxecto remoto."
 
-#: gio/gdbus-tool.c:1014 gio/gdbus-tool.c:1844 gio/gdbus-tool.c:2084
+#: gio/gdbus-tool.c:1018 gio/gdbus-tool.c:1853 gio/gdbus-tool.c:2093
 msgid "Error: Destination is not specified\n"
 msgstr "Erro: non se especificou un destino\n"
 
-#: gio/gdbus-tool.c:1025 gio/gdbus-tool.c:1861 gio/gdbus-tool.c:2095
+#: gio/gdbus-tool.c:1029 gio/gdbus-tool.c:1870 gio/gdbus-tool.c:2104
 #, c-format
 msgid "Error: %s is not a valid bus name\n"
 msgstr "Erro: %s non é un nome de bus válido\n"
 
-#: gio/gdbus-tool.c:1075
+#: gio/gdbus-tool.c:1079
 msgid "Error: Method name is not specified\n"
 msgstr "Erro: non se especificou o nome do método\n"
 
-#: gio/gdbus-tool.c:1086
+#: gio/gdbus-tool.c:1090
 #, c-format
 msgid "Error: Method name “%s” is invalid\n"
 msgstr "Erro: o nome do método «%s» non é válido\n"
 
-#: gio/gdbus-tool.c:1164
+#: gio/gdbus-tool.c:1168
 #, c-format
 msgid "Error parsing parameter %d of type “%s”: %s\n"
 msgstr "Produciuse un erro ao analizar o parámetro %d do tipo «%s»: %s\n"
 
-#: gio/gdbus-tool.c:1190
+#: gio/gdbus-tool.c:1194
 #, c-format
 msgid "Error adding handle %d: %s\n"
 msgstr "Produciuse un erro ao engadir o manexador %d: %s\n"
 
-#: gio/gdbus-tool.c:1686
+#: gio/gdbus-tool.c:1695
 msgid "Destination name to introspect"
 msgstr "Nome de destino a introspeccionar"
 
-#: gio/gdbus-tool.c:1687
+#: gio/gdbus-tool.c:1696
 msgid "Object path to introspect"
 msgstr "Ruta do obxecto a introspeccionar"
 
-#: gio/gdbus-tool.c:1688
+#: gio/gdbus-tool.c:1697
 msgid "Print XML"
 msgstr "Imprimir XML"
 
-#: gio/gdbus-tool.c:1689
+#: gio/gdbus-tool.c:1698
 msgid "Introspect children"
 msgstr "Introspeccionar fillo"
 
-#: gio/gdbus-tool.c:1690
+#: gio/gdbus-tool.c:1699
 msgid "Only print properties"
 msgstr "Só mostrar propiedades"
 
-#: gio/gdbus-tool.c:1779
+#: gio/gdbus-tool.c:1788
 msgid "Introspect a remote object."
 msgstr "Introspecciona un obxecto remoto."
 
-#: gio/gdbus-tool.c:1985
+#: gio/gdbus-tool.c:1994
 msgid "Destination name to monitor"
 msgstr "Nome de destino a monitorizar"
 
-#: gio/gdbus-tool.c:1986
+#: gio/gdbus-tool.c:1995
 msgid "Object path to monitor"
 msgstr "Ruta do obxecto a monitorizar"
 
-#: gio/gdbus-tool.c:2011
+#: gio/gdbus-tool.c:2020
 msgid "Monitor a remote object."
 msgstr "Monitoriza un obxecto remoto."
 
-#: gio/gdbus-tool.c:2069
+#: gio/gdbus-tool.c:2078
 msgid "Error: can’t monitor a non-message-bus connection\n"
 msgstr "Erro: non é posíbel monitorizar unha conexión non-message-bus\n"
 
-#: gio/gdbus-tool.c:2193
+#: gio/gdbus-tool.c:2202
 msgid "Service to activate before waiting for the other one (well-known name)"
 msgstr "Servizo a activar antes de agardar polo outro (nome coñecido)"
 
-#: gio/gdbus-tool.c:2196
+#: gio/gdbus-tool.c:2205
 msgid ""
 "Timeout to wait for before exiting with an error (seconds); 0 for no timeout "
 "(default)"
@@ -1292,66 +1310,71 @@ msgstr ""
 "Tempo de espera máximo a agardar antes de saír con un erro (segundos); 0 "
 "para non ter tempo de espera (valor por omisión)"
 
-#: gio/gdbus-tool.c:2244
+#: gio/gdbus-tool.c:2253
 msgid "[OPTION…] BUS-NAME"
 msgstr "[OPCIÓN…] NOME-BUS"
 
-#: gio/gdbus-tool.c:2245
+#: gio/gdbus-tool.c:2254
 msgid "Wait for a bus name to appear."
 msgstr "Agardar que apareza un nome de bus."
 
-#: gio/gdbus-tool.c:2321
+#: gio/gdbus-tool.c:2330
 msgid "Error: A service to activate for must be specified.\n"
 msgstr "Erro: Debe especificar un servizo a activar.\n"
 
-#: gio/gdbus-tool.c:2326
+#: gio/gdbus-tool.c:2335
 msgid "Error: A service to wait for must be specified.\n"
 msgstr "Erro: Debe especificar un servizo a agardar.\n"
 
-#: gio/gdbus-tool.c:2331
+#: gio/gdbus-tool.c:2340
 msgid "Error: Too many arguments.\n"
 msgstr "Erro: Demasiados argumentos.\n"
 
-#: gio/gdbus-tool.c:2339 gio/gdbus-tool.c:2346
+#: gio/gdbus-tool.c:2348 gio/gdbus-tool.c:2355
 #, c-format
 msgid "Error: %s is not a valid well-known bus name.\n"
 msgstr "Erro: %s non é un nome de bus válido e coñecido.\n"
 
-#: gio/gdesktopappinfo.c:2106 gio/gdesktopappinfo.c:4932
+#: gio/gdebugcontrollerdbus.c:358
+#, c-format
+msgid "Not authorized to change debug settings"
+msgstr "Non está autorizado para cambiar as preferencias de depuración"
+
+#: gio/gdesktopappinfo.c:2178 gio/gdesktopappinfo.c:5105
 msgid "Unnamed"
 msgstr "Sen nome"
 
-#: gio/gdesktopappinfo.c:2516
+#: gio/gdesktopappinfo.c:2588
 msgid "Desktop file didn’t specify Exec field"
 msgstr "O ficheiro de escritorio non especificou o campo Exec"
 
-#: gio/gdesktopappinfo.c:2801
+#: gio/gdesktopappinfo.c:2896
 msgid "Unable to find terminal required for application"
 msgstr "Non é posíbel atopar o terminal requirido pola aplicación"
 
-#: gio/gdesktopappinfo.c:3452
+#: gio/gdesktopappinfo.c:3625
 #, c-format
 msgid "Can’t create user application configuration folder %s: %s"
 msgstr ""
 "Non é posíbel crear o directorio de configuración da aplicación de usuario "
 "%s: %s"
 
-#: gio/gdesktopappinfo.c:3456
+#: gio/gdesktopappinfo.c:3629
 #, c-format
 msgid "Can’t create user MIME configuration folder %s: %s"
 msgstr ""
 "Non é posíbel crear o directorio de configuración MIME %s do usuario: %s"
 
-#: gio/gdesktopappinfo.c:3698 gio/gdesktopappinfo.c:3722
+#: gio/gdesktopappinfo.c:3871 gio/gdesktopappinfo.c:3895
 msgid "Application information lacks an identifier"
 msgstr "A información da aplicación carece dun identificador"
 
-#: gio/gdesktopappinfo.c:3958
+#: gio/gdesktopappinfo.c:4131
 #, c-format
 msgid "Can’t create user desktop file %s"
 msgstr "Non é posíbel crear o ficheiro de escritorio %s do usuario"
 
-#: gio/gdesktopappinfo.c:4094
+#: gio/gdesktopappinfo.c:4267
 #, c-format
 msgid "Custom definition for %s"
 msgstr "Definición personalizada para %s"
@@ -1379,7 +1402,7 @@ msgstr "a unidade non implementa o inicio"
 msgid "drive doesn’t implement stop"
 msgstr "a unidade non implementa a detención"
 
-#: gio/gdtlsconnection.c:1153 gio/gtlsconnection.c:920
+#: gio/gdtlsconnection.c:1186 gio/gtlsconnection.c:955
 msgid "TLS backend does not implement TLS binding retrieval"
 msgstr "A infraestrutura de TLS non implementa a obtención da ligazón TLS"
 
@@ -1423,73 +1446,73 @@ msgstr "Esperábase un GEmblem para o GEmblemedIcon"
 #. * trying to find the enclosing (user visible)
 #. * mount of a file, but none exists.
 #.
-#: gio/gfile.c:1561
+#: gio/gfile.c:1579
 msgid "Containing mount does not exist"
 msgstr "O punto de montaxe contido non existe"
 
-#: gio/gfile.c:2608 gio/glocalfile.c:2477
+#: gio/gfile.c:2626 gio/glocalfile.c:2486
 msgid "Can’t copy over directory"
 msgstr "Non é posíbel copiar sobre o directorio"
 
-#: gio/gfile.c:2668
+#: gio/gfile.c:2686
 msgid "Can’t copy directory over directory"
 msgstr "Non é posíbel copiar un directorio sobre o directorio"
 
-#: gio/gfile.c:2676
+#: gio/gfile.c:2694
 msgid "Target file exists"
 msgstr "O ficheiro de destino xa existe"
 
-#: gio/gfile.c:2695
+#: gio/gfile.c:2713
 msgid "Can’t recursively copy directory"
 msgstr "Non é posíbel copiar o directorio recursivamente"
 
-#: gio/gfile.c:2996
+#: gio/gfile.c:3014
 msgid "Splice not supported"
 msgstr "Non se admite a unión"
 
-#: gio/gfile.c:3000
+#: gio/gfile.c:3018
 #, c-format
 msgid "Error splicing file: %s"
 msgstr "Produciuse un erro ao empalmar o ficheiro: %s"
 
-#: gio/gfile.c:3152
+#: gio/gfile.c:3170
 msgid "Copy (reflink/clone) between mounts is not supported"
 msgstr "Copiar (reflink/clonar) entre montaxes non é compatíbel"
 
-#: gio/gfile.c:3156
+#: gio/gfile.c:3174
 msgid "Copy (reflink/clone) is not supported or invalid"
 msgstr "Copiar (reflink/clone) non é compatíbel ou non é válido"
 
-#: gio/gfile.c:3161
+#: gio/gfile.c:3179
 msgid "Copy (reflink/clone) is not supported or didn’t work"
 msgstr "Copiar (reflink/clone) non é compatíbel ou non funciona"
 
-#: gio/gfile.c:3226
+#: gio/gfile.c:3244
 msgid "Can’t copy special file"
 msgstr "Non é posíbel copiar o ficheiro especial"
 
-#: gio/gfile.c:4035
+#: gio/gfile.c:4138
 msgid "Invalid symlink value given"
 msgstr "O valor da ligazón simbólica dada non é válido"
 
-#: gio/gfile.c:4045 glib/gfileutils.c:2354
+#: gio/gfile.c:4148 glib/gfileutils.c:2333
 msgid "Symbolic links not supported"
 msgstr "As ligazóns simbólicas non se admiten"
 
-#: gio/gfile.c:4213
+#: gio/gfile.c:4316
 msgid "Trash not supported"
 msgstr "O Lixo non é compatíbel"
 
-#: gio/gfile.c:4325
+#: gio/gfile.c:4428
 #, c-format
 msgid "File names cannot contain “%c”"
 msgstr "Os nomes de ficheiro non poden conter «%c»"
 
-#: gio/gfile.c:6806 gio/gvolume.c:364
+#: gio/gfile.c:7028 gio/gvolume.c:364
 msgid "volume doesn’t implement mount"
 msgstr "o volume non implementa o montado"
 
-#: gio/gfile.c:6920 gio/gfile.c:6968
+#: gio/gfile.c:7142 gio/gfile.c:7190
 msgid "No application is registered as handling this file"
 msgstr "Non hai ningunha aplicación rexistrado para manexar este ficheiro"
 
@@ -1534,7 +1557,7 @@ msgstr "Non se permite truncar no fluxo de entrada"
 msgid "Truncate not supported on stream"
 msgstr "Non se permite truncar no fluxo"
 
-#: gio/ghttpproxy.c:91 gio/gresolver.c:443 gio/gresolver.c:596
+#: gio/ghttpproxy.c:91 gio/gresolver.c:458 gio/gresolver.c:611
 #: glib/gconvert.c:1825
 msgid "Invalid hostname"
 msgstr "O nome do host non é válido"
@@ -1621,7 +1644,7 @@ msgid "Could not parse “%s” as IP address mask"
 msgstr "Non foi posíbel analizar «%s» como unha máscara dun enderezo IP"
 
 #: gio/ginetsocketaddress.c:203 gio/ginetsocketaddress.c:220
-#: gio/gnativesocketaddress.c:109 gio/gunixsocketaddress.c:221
+#: gio/gnativesocketaddress.c:109 gio/gunixsocketaddress.c:228
 msgid "Not enough space for socket address"
 msgstr "Non hai espazo abondo para o enderezo do socket"
 
@@ -2466,15 +2489,15 @@ msgstr "Produciuse un erro ao comprimir o ficheiro: %s"
 msgid "text may not appear inside <%s>"
 msgstr "o texto non debe aparecer dentro de <%s>"
 
-#: gio/glib-compile-resources.c:737 gio/glib-compile-schemas.c:2172
+#: gio/glib-compile-resources.c:819 gio/glib-compile-schemas.c:2172
 msgid "Show program version and exit"
 msgstr "Mostrar a versión do programa e saír"
 
-#: gio/glib-compile-resources.c:738
+#: gio/glib-compile-resources.c:820
 msgid "Name of the output file"
 msgstr "Nome do ficheiro de saída"
 
-#: gio/glib-compile-resources.c:739
+#: gio/glib-compile-resources.c:821
 msgid ""
 "The directories to load files referenced in FILE from (default: current "
 "directory)"
@@ -2482,48 +2505,48 @@ msgstr ""
 "Os directorios dos que ler ficheiros referenciados en FILE (por omisión: o "
 "directorio actual)"
 
-#: gio/glib-compile-resources.c:739 gio/glib-compile-schemas.c:2173
+#: gio/glib-compile-resources.c:821 gio/glib-compile-schemas.c:2173
 #: gio/glib-compile-schemas.c:2202
 msgid "DIRECTORY"
 msgstr "DIRECTORIO"
 
-#: gio/glib-compile-resources.c:740
+#: gio/glib-compile-resources.c:822
 msgid ""
 "Generate output in the format selected for by the target filename extension"
 msgstr ""
 "Xerar saída no formato seleccionado pola extensión do nome do ficheiro "
 "obxectivo"
 
-#: gio/glib-compile-resources.c:741
+#: gio/glib-compile-resources.c:823
 msgid "Generate source header"
 msgstr "Xerar unha cabeceira de orixe"
 
-#: gio/glib-compile-resources.c:742
+#: gio/glib-compile-resources.c:824
 msgid "Generate source code used to link in the resource file into your code"
 msgstr ""
 "Xera o código fonte usado para ligar o ficheiro do recurso no seu código"
 
-#: gio/glib-compile-resources.c:743
+#: gio/glib-compile-resources.c:825
 msgid "Generate dependency list"
 msgstr "Xerar lista de dependencias"
 
-#: gio/glib-compile-resources.c:744
+#: gio/glib-compile-resources.c:826
 msgid "Name of the dependency file to generate"
 msgstr "Nome do ficheiro de dependencia a xerar"
 
-#: gio/glib-compile-resources.c:745
+#: gio/glib-compile-resources.c:827
 msgid "Include phony targets in the generated dependency file"
 msgstr "Inclúe obxectivos phony no ficheiro de dependencias xerado"
 
-#: gio/glib-compile-resources.c:746
+#: gio/glib-compile-resources.c:828
 msgid "Don’t automatically create and register resource"
 msgstr "Non crear e rexistrar o recurso automaticamente"
 
-#: gio/glib-compile-resources.c:747
+#: gio/glib-compile-resources.c:829
 msgid "Don’t export functions; declare them G_GNUC_INTERNAL"
 msgstr "Non exporte as funcións; decláreas en G_GNUC_INTERNAL"
 
-#: gio/glib-compile-resources.c:748
+#: gio/glib-compile-resources.c:830
 msgid ""
 "Don’t embed resource data in the C file; assume it's linked externally "
 "instead"
@@ -2531,11 +2554,16 @@ msgstr ""
 "Non incrustar os datos do recurso no ficheiro C; asúmese que é ligado "
 "externamente no lugar"
 
-#: gio/glib-compile-resources.c:749
+#: gio/glib-compile-resources.c:831
 msgid "C identifier name used for the generated source code"
 msgstr "O nome de identificador C usado para xerar o código fonte"
 
-#: gio/glib-compile-resources.c:775
+#: gio/glib-compile-resources.c:832
+msgid "The target C compiler (default: the CC environment variable)"
+msgstr ""
+"O compilador de C obxectivo (predetermiando: a variábel de ambiente CC)"
+
+#: gio/glib-compile-resources.c:858
 msgid ""
 "Compile a resource specification into a resource file.\n"
 "Resource specification files have the extension .gresource.xml,\n"
@@ -2546,7 +2574,7 @@ msgstr ""
 "xml,\n"
 "e o ficheiro do recurso ten a extensión .gresource."
 
-#: gio/glib-compile-resources.c:797
+#: gio/glib-compile-resources.c:880
 msgid "You should give exactly one file name\n"
 msgstr "Debería fornecer exactamente un nome de ficheiro\n"
 
@@ -3066,8 +3094,8 @@ msgstr "Produciuse un erro ao renomear o ficheiro %s: %s"
 msgid "Can’t rename file, filename already exists"
 msgstr "Non é posíbel renomear o ficheiro, o ficheiro xa existe"
 
-#: gio/glocalfile.c:1184 gio/glocalfile.c:2371 gio/glocalfile.c:2399
-#: gio/glocalfile.c:2538 gio/glocalfileoutputstream.c:656
+#: gio/glocalfile.c:1184 gio/glocalfile.c:2380 gio/glocalfile.c:2408
+#: gio/glocalfile.c:2547 gio/glocalfileoutputstream.c:656
 msgid "Invalid filename"
 msgstr "O nome do ficheiro non é válido"
 
@@ -3081,94 +3109,94 @@ msgstr "Produciuse un erro ao abrir o ficheiro %s: %s"
 msgid "Error removing file %s: %s"
 msgstr "Produciuse un erro ao eliminar o ficheiro %s: %s"
 
-#: gio/glocalfile.c:1982 gio/glocalfile.c:1993
+#: gio/glocalfile.c:1982 gio/glocalfile.c:1993 gio/glocalfile.c:2020
 #, c-format
 msgid "Error trashing file %s: %s"
 msgstr "Produciuse un erro ao mover ao lixo o ficheiro %s: %s"
 
-#: gio/glocalfile.c:2031
+#: gio/glocalfile.c:2040
 #, c-format
 msgid "Unable to create trash directory %s: %s"
 msgstr "Non é posíbel crear o directorio do lixo %s: %s"
 
-#: gio/glocalfile.c:2052
+#: gio/glocalfile.c:2061
 #, c-format
 msgid "Unable to find toplevel directory to trash %s"
 msgstr ""
 "Non é posíbel atopar o directorio de nivel superior para mover ao lixo %s"
 
-#: gio/glocalfile.c:2060
+#: gio/glocalfile.c:2069
 #, c-format
 msgid "Trashing on system internal mounts is not supported"
 msgstr "Enviar ao lixo en montaxes internos do sistema non se admite"
 
-#: gio/glocalfile.c:2146 gio/glocalfile.c:2174
+#: gio/glocalfile.c:2155 gio/glocalfile.c:2183
 #, c-format
 msgid "Unable to find or create trash directory %s to trash %s"
 msgstr "Non é posíbel atopar ou crear o directorio do lixo para %s ao lixo %s"
 
-#: gio/glocalfile.c:2220
+#: gio/glocalfile.c:2229
 #, c-format
 msgid "Unable to create trashing info file for %s: %s"
 msgstr "Non é posíbel crear a información de lixo para o ficheiro %s: %s"
 
-#: gio/glocalfile.c:2282
+#: gio/glocalfile.c:2291
 #, c-format
 msgid "Unable to trash file %s across filesystem boundaries"
 msgstr ""
 "Non é posíbel mover ao lixo o ficheiro %s a través dos límites do sistema de "
 "ficheiros"
 
-#: gio/glocalfile.c:2286 gio/glocalfile.c:2342
+#: gio/glocalfile.c:2295 gio/glocalfile.c:2351
 #, c-format
 msgid "Unable to trash file %s: %s"
 msgstr "Non é posíbel mover ao lixo o ficheiro %s:  %s"
 
-#: gio/glocalfile.c:2348
+#: gio/glocalfile.c:2357
 #, c-format
 msgid "Unable to trash file %s"
 msgstr "Non é posíbel mover ao lixo o ficheiro %s"
 
-#: gio/glocalfile.c:2374
+#: gio/glocalfile.c:2383
 #, c-format
 msgid "Error creating directory %s: %s"
 msgstr "Produciuse un erro ao crear o directorio %s: %s"
 
-#: gio/glocalfile.c:2403
+#: gio/glocalfile.c:2412
 #, c-format
 msgid "Filesystem does not support symbolic links"
 msgstr "O sistema de ficheiros non é compatíbel coas ligazóns simbólicas"
 
-#: gio/glocalfile.c:2406
+#: gio/glocalfile.c:2415
 #, c-format
 msgid "Error making symbolic link %s: %s"
 msgstr "Produciuse un erro ao crear a ligazón simbólica %s: %s"
 
-#: gio/glocalfile.c:2449 gio/glocalfile.c:2484 gio/glocalfile.c:2541
+#: gio/glocalfile.c:2458 gio/glocalfile.c:2493 gio/glocalfile.c:2550
 #, c-format
 msgid "Error moving file %s: %s"
 msgstr "Produciuse un erro ao mover o ficheiro %s: %s"
 
-#: gio/glocalfile.c:2472
+#: gio/glocalfile.c:2481
 msgid "Can’t move directory over directory"
 msgstr "Non é posíbel mover o directorio sobre un directorio"
 
-#: gio/glocalfile.c:2498 gio/glocalfileoutputstream.c:1108
+#: gio/glocalfile.c:2507 gio/glocalfileoutputstream.c:1108
 #: gio/glocalfileoutputstream.c:1122 gio/glocalfileoutputstream.c:1137
 #: gio/glocalfileoutputstream.c:1154 gio/glocalfileoutputstream.c:1168
 msgid "Backup file creation failed"
 msgstr "Fallou a creación do ficheiro de seguranza"
 
-#: gio/glocalfile.c:2517
+#: gio/glocalfile.c:2526
 #, c-format
 msgid "Error removing target file: %s"
 msgstr "Produciuse un erro ao retirar o ficheiro obxectivo: %s"
 
-#: gio/glocalfile.c:2531
+#: gio/glocalfile.c:2540
 msgid "Move between mounts not supported"
 msgstr "Non se permite mover entre puntos de montaxe"
 
-#: gio/glocalfile.c:2705
+#: gio/glocalfile.c:2714
 #, c-format
 msgid "Could not determine the disk usage of %s: %s"
 msgstr "Non foi posíbel determinar o uso de disco de %s: %s"
@@ -3355,13 +3383,13 @@ msgstr "Produciuse un erro ao crear a copia de seguranza: %s"
 msgid "Error renaming temporary file: %s"
 msgstr "Produciuse un erro ao renomear o ficheiro temporal: %s"
 
-#: gio/glocalfileoutputstream.c:609 gio/glocalfileoutputstream.c:1237
+#: gio/glocalfileoutputstream.c:609 gio/glocalfileoutputstream.c:1239
 #, c-format
 msgid "Error truncating file: %s"
 msgstr "Produciuse un erro ao truncar o ficheiro: %s"
 
 #: gio/glocalfileoutputstream.c:662 gio/glocalfileoutputstream.c:907
-#: gio/glocalfileoutputstream.c:1218 gio/gsubprocess.c:226
+#: gio/glocalfileoutputstream.c:1220 gio/gsubprocess.c:229
 #, c-format
 msgid "Error opening file “%s”: %s"
 msgstr "Produciuse un erro ao abrir o ficheiro %s: %s"
@@ -3383,7 +3411,7 @@ msgstr "O ficheiro foi modificado externamente"
 msgid "Error removing old file: %s"
 msgstr "Produciuse un erro ao retirar o ficheiro antigo: %s"
 
-#: gio/gmemoryinputstream.c:474 gio/gmemoryoutputstream.c:772
+#: gio/gmemoryinputstream.c:474 gio/gmemoryoutputstream.c:762
 msgid "Invalid GSeekType supplied"
 msgstr "Proporcionouse un GSeekType non válido"
 
@@ -3395,15 +3423,15 @@ msgstr "Petición de busca non válida"
 msgid "Cannot truncate GMemoryInputStream"
 msgstr "Non é posíbel truncar GMemoryInputStream"
 
-#: gio/gmemoryoutputstream.c:567
+#: gio/gmemoryoutputstream.c:568
 msgid "Memory output stream not resizable"
 msgstr "O fluxo de saída da memoria non é redimensionábel"
 
-#: gio/gmemoryoutputstream.c:583
+#: gio/gmemoryoutputstream.c:584
 msgid "Failed to resize memory output stream"
 msgstr "Produciuse un erro ao redimensionar o fluxo de saída da memoria"
 
-#: gio/gmemoryoutputstream.c:673
+#: gio/gmemoryoutputstream.c:663
 msgid ""
 "Amount of memory required to process the write is larger than available "
 "address space"
@@ -3411,11 +3439,11 @@ msgstr ""
 "A cantidade de memoria requirida para procesar a escrita é máis grande que o "
 "espazo de enderezos dispoñíbel"
 
-#: gio/gmemoryoutputstream.c:782
+#: gio/gmemoryoutputstream.c:772
 msgid "Requested seek before the beginning of the stream"
 msgstr "Solicitouse unha busca antes do inicio do fluxo"
 
-#: gio/gmemoryoutputstream.c:797
+#: gio/gmemoryoutputstream.c:787
 msgid "Requested seek beyond the end of the stream"
 msgstr "Solicitouse unha busca máis aló do final do fluxo"
 
@@ -3495,12 +3523,12 @@ msgstr "Non foi posíbel crear un monitor de rede: "
 msgid "Could not get network status: "
 msgstr "Non foi posíbel obter o estado da rede: "
 
-#: gio/gnetworkmonitornm.c:348
+#: gio/gnetworkmonitornm.c:311
 #, c-format
 msgid "NetworkManager not running"
 msgstr "NetworkManager non está executándose"
 
-#: gio/gnetworkmonitornm.c:359
+#: gio/gnetworkmonitornm.c:322
 #, c-format
 msgid "NetworkManager version too old"
 msgstr "A versión NetworkManager é demasiado antiga"
@@ -3518,18 +3546,22 @@ msgstr "A suma de vectores pasados a %s é demasiado longa"
 msgid "Source stream is already closed"
 msgstr "O fluxo de orixe xa está pechado"
 
-#: gio/gresolver.c:386 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
+#. Translators: the first placeholder is a domain name, the
+#. * second is an error message
+#: gio/gresolver.c:401 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
+#: gio/gthreadedresolver.c:780 gio/gthreadedresolver.c:804
+#: gio/gthreadedresolver.c:829 gio/gthreadedresolver.c:844
 #, c-format
 msgid "Error resolving “%s”: %s"
 msgstr "Produciuse un erro ao resolver «%s»: %s"
 
 #. Translators: The placeholder is for a function name.
-#: gio/gresolver.c:455 gio/gresolver.c:615
+#: gio/gresolver.c:470 gio/gresolver.c:630
 #, c-format
 msgid "%s not implemented"
 msgstr "%s non implementado"
 
-#: gio/gresolver.c:984 gio/gresolver.c:1036
+#: gio/gresolver.c:999 gio/gresolver.c:1051
 msgid "Invalid domain"
 msgstr "Dominio non válido"
 
@@ -3644,7 +3676,7 @@ msgstr ""
 msgid "  SECTION   An (optional) elf section name\n"
 msgstr "  SECCIÓN   Un nome de sección elf (opcional)\n"
 
-#: gio/gresource-tool.c:565 gio/gsettings-tool.c:706
+#: gio/gresource-tool.c:565 gio/gsettings-tool.c:718
 msgid "  COMMAND   The (optional) command to explain\n"
 msgstr "  ORDE   A orde que explicar (opcional)\n"
 
@@ -3677,7 +3709,7 @@ msgstr "CAMIÑO"
 msgid "  PATH      A resource path\n"
 msgstr "  RUTA      Unha ruta dun recurso\n"
 
-#: gio/gsettings-tool.c:49 gio/gsettings-tool.c:70 gio/gsettings-tool.c:911
+#: gio/gsettings-tool.c:49 gio/gsettings-tool.c:70 gio/gsettings-tool.c:923
 #, c-format
 msgid "No such schema “%s”\n"
 msgstr "Non existe o esquema «%s»\n"
@@ -3708,35 +3740,35 @@ msgstr "A ruta debe rematar cunha barra (/)\n"
 msgid "Path must not contain two adjacent slashes (//)\n"
 msgstr "A ruta non debe conter dúas barras adxacentes (//)\n"
 
-#: gio/gsettings-tool.c:541
+#: gio/gsettings-tool.c:553
 msgid "The provided value is outside of the valid range\n"
 msgstr "O valor fornecido está fora do intervalo válido\n"
 
-#: gio/gsettings-tool.c:548
+#: gio/gsettings-tool.c:560
 msgid "The key is not writable\n"
 msgstr "Esta chave non é escribíbel\n"
 
-#: gio/gsettings-tool.c:584
+#: gio/gsettings-tool.c:596
 msgid "List the installed (non-relocatable) schemas"
 msgstr "Lista dos esquemas instalados (non reposicionábeis)"
 
-#: gio/gsettings-tool.c:590
+#: gio/gsettings-tool.c:602
 msgid "List the installed relocatable schemas"
 msgstr "Lista dos esquemas instalados reposicionábeis"
 
-#: gio/gsettings-tool.c:596
+#: gio/gsettings-tool.c:608
 msgid "List the keys in SCHEMA"
 msgstr "Lista das claves de ESQUEMA"
 
-#: gio/gsettings-tool.c:597 gio/gsettings-tool.c:603 gio/gsettings-tool.c:646
+#: gio/gsettings-tool.c:609 gio/gsettings-tool.c:615 gio/gsettings-tool.c:658
 msgid "SCHEMA[:PATH]"
 msgstr "ESQUEMA[:RUTA]"
 
-#: gio/gsettings-tool.c:602
+#: gio/gsettings-tool.c:614
 msgid "List the children of SCHEMA"
 msgstr "Lista dos fillos do SCHEMA"
 
-#: gio/gsettings-tool.c:608
+#: gio/gsettings-tool.c:620
 msgid ""
 "List keys and values, recursively\n"
 "If no SCHEMA is given, list all keys\n"
@@ -3744,49 +3776,49 @@ msgstr ""
 "Lista as clave e valores, recursivamente\n"
 "Se non se fornece un ESQUEMA, lista todas as claves\n"
 
-#: gio/gsettings-tool.c:610
+#: gio/gsettings-tool.c:622
 msgid "[SCHEMA[:PATH]]"
 msgstr "[ESQUEMA[:RUTA]]"
 
-#: gio/gsettings-tool.c:615
+#: gio/gsettings-tool.c:627
 msgid "Get the value of KEY"
 msgstr "Obtén o valor de CLAVE"
 
-#: gio/gsettings-tool.c:616 gio/gsettings-tool.c:622 gio/gsettings-tool.c:628
-#: gio/gsettings-tool.c:640 gio/gsettings-tool.c:652
+#: gio/gsettings-tool.c:628 gio/gsettings-tool.c:634 gio/gsettings-tool.c:640
+#: gio/gsettings-tool.c:652 gio/gsettings-tool.c:664
 msgid "SCHEMA[:PATH] KEY"
 msgstr "ESQUEMA[:RUTA] CLAVE"
 
-#: gio/gsettings-tool.c:621
+#: gio/gsettings-tool.c:633
 msgid "Query the range of valid values for KEY"
 msgstr "Consulta o intervalo de valores válidos de CLAVE"
 
-#: gio/gsettings-tool.c:627
+#: gio/gsettings-tool.c:639
 msgid "Query the description for KEY"
 msgstr "Consulta a descrición para a CLAVE"
 
-#: gio/gsettings-tool.c:633
+#: gio/gsettings-tool.c:645
 msgid "Set the value of KEY to VALUE"
 msgstr "Estabelece o valor de CLAVE a VALOR"
 
-#: gio/gsettings-tool.c:634
+#: gio/gsettings-tool.c:646
 msgid "SCHEMA[:PATH] KEY VALUE"
 msgstr "ESQUEMA[:RUTA] CLAVE VALOR"
 
-#: gio/gsettings-tool.c:639
+#: gio/gsettings-tool.c:651
 msgid "Reset KEY to its default value"
 msgstr "Estabelece a CLAVE ao seu valor predeterminado"
 
-#: gio/gsettings-tool.c:645
+#: gio/gsettings-tool.c:657
 msgid "Reset all keys in SCHEMA to their defaults"
 msgstr ""
 "Restabelecer todas as claves nun ESQUEMA aos seus valores predeterminados"
 
-#: gio/gsettings-tool.c:651
+#: gio/gsettings-tool.c:663
 msgid "Check if KEY is writable"
 msgstr "Comproba se a CLAVE é escribíbel"
 
-#: gio/gsettings-tool.c:657
+#: gio/gsettings-tool.c:669
 msgid ""
 "Monitor KEY for changes.\n"
 "If no KEY is specified, monitor all keys in SCHEMA.\n"
@@ -3796,11 +3828,11 @@ msgstr ""
 "Se non se especifica a CLAVE, monitoriza todos os cambios en ESQUEMA.\n"
 "Use ^C para deter a monitorización.\n"
 
-#: gio/gsettings-tool.c:660
+#: gio/gsettings-tool.c:672
 msgid "SCHEMA[:PATH] [KEY]"
 msgstr "ESQUEMA[:RUTA] [CLAVE]"
 
-#: gio/gsettings-tool.c:672
+#: gio/gsettings-tool.c:684
 msgid ""
 "Usage:\n"
 "  gsettings --version\n"
@@ -3849,7 +3881,7 @@ msgstr ""
 "Use 'gsettings help ORDE' para obter máis axuda.\n"
 "\n"
 
-#: gio/gsettings-tool.c:696
+#: gio/gsettings-tool.c:708
 #, c-format
 msgid ""
 "Usage:\n"
@@ -3864,11 +3896,11 @@ msgstr ""
 "%s\n"
 "\n"
 
-#: gio/gsettings-tool.c:702
+#: gio/gsettings-tool.c:714
 msgid "  SCHEMADIR A directory to search for additional schemas\n"
 msgstr "  CARTAFOL_ESQUEMA: un directorio para buscar esquemas adicionais\n"
 
-#: gio/gsettings-tool.c:710
+#: gio/gsettings-tool.c:722
 msgid ""
 "  SCHEMA    The name of the schema\n"
 "  PATH      The path, for relocatable schemas\n"
@@ -3876,215 +3908,215 @@ msgstr ""
 "  SCHEMA    O nome do esquema\n"
 "  KEY       A ruta, para os esquemas reposicionábeis\n"
 
-#: gio/gsettings-tool.c:715
+#: gio/gsettings-tool.c:727
 msgid "  KEY       The (optional) key within the schema\n"
 msgstr "  KEY       A clave (opcional) no esquema\n"
 
-#: gio/gsettings-tool.c:719
+#: gio/gsettings-tool.c:731
 msgid "  KEY       The key within the schema\n"
 msgstr "  KEY       A clave nun esquema\n"
 
-#: gio/gsettings-tool.c:723
+#: gio/gsettings-tool.c:735
 msgid "  VALUE     The value to set\n"
 msgstr "  VALUE     O valor a estabelecer\n"
 
-#: gio/gsettings-tool.c:778
+#: gio/gsettings-tool.c:790
 #, c-format
 msgid "Could not load schemas from %s: %s\n"
 msgstr "Non foi posíbel cargar os esquemas desde %s a %s\n"
 
-#: gio/gsettings-tool.c:790
+#: gio/gsettings-tool.c:802
 msgid "No schemas installed\n"
 msgstr "Non hai esquemas instalados\n"
 
-#: gio/gsettings-tool.c:869
+#: gio/gsettings-tool.c:881
 msgid "Empty schema name given\n"
 msgstr "Forneceuse un nome de esquema baleiro\n"
 
-#: gio/gsettings-tool.c:924
+#: gio/gsettings-tool.c:936
 #, c-format
 msgid "No such key “%s”\n"
 msgstr "Non existe a clave «%s»\n"
 
-#: gio/gsocket.c:413
+#: gio/gsocket.c:417
 msgid "Invalid socket, not initialized"
 msgstr "O socket non é válido, non se inicializou"
 
-#: gio/gsocket.c:420
+#: gio/gsocket.c:424
 #, c-format
 msgid "Invalid socket, initialization failed due to: %s"
 msgstr "O socket non é válido, a inicialización fallou debido a: %s"
 
-#: gio/gsocket.c:428
+#: gio/gsocket.c:432
 msgid "Socket is already closed"
 msgstr "O fluxo de orixe xa está pechado"
 
-#: gio/gsocket.c:443 gio/gsocket.c:3190 gio/gsocket.c:4420 gio/gsocket.c:4478
+#: gio/gsocket.c:447 gio/gsocket.c:3194 gio/gsocket.c:4427 gio/gsocket.c:4485
 msgid "Socket I/O timed out"
 msgstr "Tempo de espera do Socket de E/S superado"
 
-#: gio/gsocket.c:578
+#: gio/gsocket.c:582
 #, c-format
 msgid "creating GSocket from fd: %s"
 msgstr "creando o GSocket a partir de fd: %s"
 
-#: gio/gsocket.c:607 gio/gsocket.c:671 gio/gsocket.c:678
+#: gio/gsocket.c:611 gio/gsocket.c:675 gio/gsocket.c:682
 #, c-format
 msgid "Unable to create socket: %s"
 msgstr "Non é posíbel crear o socket: %s"
 
-#: gio/gsocket.c:671
+#: gio/gsocket.c:675
 msgid "Unknown family was specified"
 msgstr "Especificouse unha familia descoñecida"
 
-#: gio/gsocket.c:678
+#: gio/gsocket.c:682
 msgid "Unknown protocol was specified"
 msgstr "Especificouse un protocolo descoñecido"
 
-#: gio/gsocket.c:1169
+#: gio/gsocket.c:1173
 #, c-format
 msgid "Cannot use datagram operations on a non-datagram socket."
 msgstr ""
 "Non é posíbel usar as operacións de datagramas nun socket que non é de "
 "datagramas."
 
-#: gio/gsocket.c:1186
+#: gio/gsocket.c:1190
 #, c-format
 msgid "Cannot use datagram operations on a socket with a timeout set."
 msgstr ""
 "Non é posíbel usar operacións de datagramas nun socket con un tempo de "
 "espera máximo estabelecido."
 
-#: gio/gsocket.c:1993
+#: gio/gsocket.c:1997
 #, c-format
 msgid "could not get local address: %s"
 msgstr "non foi posíbel obter un enderezo local: %s"
 
-#: gio/gsocket.c:2039
+#: gio/gsocket.c:2043
 #, c-format
 msgid "could not get remote address: %s"
 msgstr "non foi posíbel obter un enderezo remoto: %s"
 
-#: gio/gsocket.c:2105
+#: gio/gsocket.c:2109
 #, c-format
 msgid "could not listen: %s"
 msgstr "non foi posíbel escoitar: %s"
 
-#: gio/gsocket.c:2209
+#: gio/gsocket.c:2213
 #, c-format
 msgid "Error binding to address %s: %s"
 msgstr "Produciuse un erro ao ligar co enderezo %s: %s"
 
-#: gio/gsocket.c:2385 gio/gsocket.c:2422 gio/gsocket.c:2532 gio/gsocket.c:2557
-#: gio/gsocket.c:2620 gio/gsocket.c:2678 gio/gsocket.c:2696
+#: gio/gsocket.c:2389 gio/gsocket.c:2426 gio/gsocket.c:2536 gio/gsocket.c:2561
+#: gio/gsocket.c:2624 gio/gsocket.c:2682 gio/gsocket.c:2700
 #, c-format
 msgid "Error joining multicast group: %s"
 msgstr "Produciuse un erro ao unirse ao grupo multicast: %s"
 
-#: gio/gsocket.c:2386 gio/gsocket.c:2423 gio/gsocket.c:2533 gio/gsocket.c:2558
-#: gio/gsocket.c:2621 gio/gsocket.c:2679 gio/gsocket.c:2697
+#: gio/gsocket.c:2390 gio/gsocket.c:2427 gio/gsocket.c:2537 gio/gsocket.c:2562
+#: gio/gsocket.c:2625 gio/gsocket.c:2683 gio/gsocket.c:2701
 #, c-format
 msgid "Error leaving multicast group: %s"
 msgstr "Produciuse un erro ao deixar o grupo multicast: %s"
 
-#: gio/gsocket.c:2387
+#: gio/gsocket.c:2391
 msgid "No support for source-specific multicast"
 msgstr "Non se admite o multicast específico da fonte"
 
-#: gio/gsocket.c:2534
+#: gio/gsocket.c:2538
 msgid "Unsupported socket family"
 msgstr "Familia de socket non admitida"
 
-#: gio/gsocket.c:2559
+#: gio/gsocket.c:2563
 msgid "source-specific not an IPv4 address"
 msgstr "o source-specific non é un enderezo IPv4"
 
-#: gio/gsocket.c:2583
+#: gio/gsocket.c:2587
 #, c-format
 msgid "Interface name too long"
 msgstr "Nome da interface demasiado larga"
 
-#: gio/gsocket.c:2596 gio/gsocket.c:2646
+#: gio/gsocket.c:2600 gio/gsocket.c:2650
 #, c-format
 msgid "Interface not found: %s"
 msgstr "Interface non atopada: %s"
 
-#: gio/gsocket.c:2622
+#: gio/gsocket.c:2626
 msgid "No support for IPv4 source-specific multicast"
 msgstr "Non se admite o multicast IPv4 específico da fonte"
 
-#: gio/gsocket.c:2680
+#: gio/gsocket.c:2684
 msgid "No support for IPv6 source-specific multicast"
 msgstr "Non se admite o multicast IPv6 específico da fonte"
 
-#: gio/gsocket.c:2889
+#: gio/gsocket.c:2893
 #, c-format
 msgid "Error accepting connection: %s"
 msgstr "Produciuse un erro ao aceptar a conexión: %s"
 
-#: gio/gsocket.c:3015
+#: gio/gsocket.c:3019
 msgid "Connection in progress"
 msgstr "Conexión en marcha"
 
-#: gio/gsocket.c:3066
+#: gio/gsocket.c:3070
 msgid "Unable to get pending error: "
 msgstr "Non é posíbel obter o erro pendente: "
 
-#: gio/gsocket.c:3255
+#: gio/gsocket.c:3259
 #, c-format
 msgid "Error receiving data: %s"
 msgstr "Produciuse un erro ao recibir datos: %s"
 
-#: gio/gsocket.c:3452
+#: gio/gsocket.c:3456
 #, c-format
 msgid "Error sending data: %s"
 msgstr "Produciuse un erro ao enviar datos: %s"
 
-#: gio/gsocket.c:3639
+#: gio/gsocket.c:3643
 #, c-format
 msgid "Unable to shutdown socket: %s"
 msgstr "Non é posíbel desconectar o socket: %s"
 
-#: gio/gsocket.c:3720
+#: gio/gsocket.c:3724
 #, c-format
 msgid "Error closing socket: %s"
 msgstr "Produciuse un erro ao pechar o socket: %s"
 
-#: gio/gsocket.c:4413
+#: gio/gsocket.c:4420
 #, c-format
 msgid "Waiting for socket condition: %s"
 msgstr "Agardando pola situación do socket: %s"
 
-#: gio/gsocket.c:4804 gio/gsocket.c:4820 gio/gsocket.c:4833
+#: gio/gsocket.c:4810 gio/gsocket.c:4826 gio/gsocket.c:4839
 #, c-format
 msgid "Unable to send message: %s"
 msgstr "Non foi posíbel enviar a mensaxe: %s"
 
-#: gio/gsocket.c:4805 gio/gsocket.c:4821 gio/gsocket.c:4834
+#: gio/gsocket.c:4811 gio/gsocket.c:4827 gio/gsocket.c:4840
 msgid "Message vectors too large"
 msgstr "Os vectores de mensaxes son moi largos"
 
-#: gio/gsocket.c:4850 gio/gsocket.c:4852 gio/gsocket.c:4999 gio/gsocket.c:5084
-#: gio/gsocket.c:5262 gio/gsocket.c:5302 gio/gsocket.c:5304
+#: gio/gsocket.c:4856 gio/gsocket.c:4858 gio/gsocket.c:5005 gio/gsocket.c:5090
+#: gio/gsocket.c:5268 gio/gsocket.c:5308 gio/gsocket.c:5310
 #, c-format
 msgid "Error sending message: %s"
 msgstr "Produciuse un erro ao enviar a mensaxe: %s"
 
-#: gio/gsocket.c:5026
+#: gio/gsocket.c:5032
 msgid "GSocketControlMessage not supported on Windows"
 msgstr "O GSocketControlMessage non está permitido en Windows"
 
-#: gio/gsocket.c:5495 gio/gsocket.c:5571 gio/gsocket.c:5797
+#: gio/gsocket.c:5505 gio/gsocket.c:5581 gio/gsocket.c:5807
 #, c-format
 msgid "Error receiving message: %s"
 msgstr "Produciuse un erro ao recibir a mensaxe: %s"
 
-#: gio/gsocket.c:6070 gio/gsocket.c:6081 gio/gsocket.c:6127
+#: gio/gsocket.c:6090 gio/gsocket.c:6101 gio/gsocket.c:6164
 #, c-format
 msgid "Unable to read socket credentials: %s"
 msgstr "Non é posíbel ler as credenciais do socket: %s"
 
-#: gio/gsocket.c:6136
+#: gio/gsocket.c:6173
 msgid "g_socket_get_credentials not implemented for this OS"
 msgstr ""
 "g_socket_get_credentials non está implementado para este sistema operativo"
@@ -4103,12 +4135,12 @@ msgstr "Non foi posíbel conectar a %s: "
 msgid "Could not connect: "
 msgstr "Non foi posíbel conectar: "
 
-#: gio/gsocketclient.c:1162 gio/gsocketclient.c:1749
+#: gio/gsocketclient.c:1202 gio/gsocketclient.c:1793
 msgid "Proxying over a non-TCP connection is not supported."
 msgstr ""
 "Non se permite a conexión ao proxy mediante unha conexión que non sexa TCP."
 
-#: gio/gsocketclient.c:1194 gio/gsocketclient.c:1778
+#: gio/gsocketclient.c:1234 gio/gsocketclient.c:1822
 #, c-format
 msgid "Proxy protocol “%s” is not supported."
 msgstr "Non é posíbel usar o proxy co protocolo «%s»."
@@ -4211,6 +4243,18 @@ msgstr "O proxy SOCKSv5 non é compatíbel co tipo de enderezo fornecido."
 msgid "Unknown SOCKSv5 proxy error."
 msgstr "Erro no proxy SOCKSv5 descoñecido."
 
+#: gio/gtestdbus.c:612 glib/gspawn-win32.c:314
+#, c-format
+msgid "Failed to create pipe for communicating with child process (%s)"
+msgstr ""
+"Produciuse un erro ao crear a canalización para comunicarse co proceso fillo "
+"(%s)"
+
+#: gio/gtestdbus.c:619
+#, c-format
+msgid "Pipes are not supported in this platform"
+msgstr "As tuberías non están soportadas nesta plataforma"
+
 #: gio/gthemedicon.c:595
 #, c-format
 msgid "Can’t handle version %d of GThemedIcon encoding"
@@ -4225,44 +4269,68 @@ msgstr "Non se atopou ningún enderezo válido"
 msgid "Error reverse-resolving “%s”: %s"
 msgstr "Produciuse un erro ao resolver inversamente «%s»: %s"
 
-#: gio/gthreadedresolver.c:676 gio/gthreadedresolver.c:755
-#: gio/gthreadedresolver.c:853 gio/gthreadedresolver.c:903
+#. Translators: the placeholder is a DNS record type, such as ‘MX’ or ‘SRV’
+#: gio/gthreadedresolver.c:550 gio/gthreadedresolver.c:572
+#: gio/gthreadedresolver.c:610 gio/gthreadedresolver.c:657
+#: gio/gthreadedresolver.c:686 gio/gthreadedresolver.c:698
+#, c-format
+msgid "Error parsing DNS %s record: malformed DNS packet"
+msgstr ""
+"Produciuse un erro ao analizar o rexistro DNS %s: paquete DNS mal formado"
+
+#: gio/gthreadedresolver.c:756 gio/gthreadedresolver.c:893
+#: gio/gthreadedresolver.c:991 gio/gthreadedresolver.c:1041
 #, c-format
 msgid "No DNS record of the requested type for “%s”"
 msgstr "Non hai un rexistro de DNS do tipo solicitado para «%s»"
 
-#: gio/gthreadedresolver.c:681 gio/gthreadedresolver.c:858
+#: gio/gthreadedresolver.c:761 gio/gthreadedresolver.c:996
 #, c-format
 msgid "Temporarily unable to resolve “%s”"
 msgstr "Non é posíbel resolver temporalmente «%s»"
 
-#: gio/gthreadedresolver.c:686 gio/gthreadedresolver.c:863
-#: gio/gthreadedresolver.c:973
+#: gio/gthreadedresolver.c:766 gio/gthreadedresolver.c:1001
+#: gio/gthreadedresolver.c:1111
 #, c-format
 msgid "Error resolving “%s”"
 msgstr "Produciuse un erro ao resolver «%s»"
 
-#: gio/gtlscertificate.c:419
+#: gio/gthreadedresolver.c:780 gio/gthreadedresolver.c:804
+#: gio/gthreadedresolver.c:829 gio/gthreadedresolver.c:844
+msgid "Malformed DNS packet"
+msgstr "Paquete DNS mal formado"
+
+#: gio/gthreadedresolver.c:886
+#, c-format
+#| msgid "Failed to read from file “%s”: %s"
+msgid "Failed to parse DNS response for “%s”: "
+msgstr "Produciuse un erro ao analizar a resposta DNS para «%s»: "
+
+#: gio/gtlscertificate.c:478
 msgid "No PEM-encoded private key found"
 msgstr "Non se atopou ningún certificado PEM codificado"
 
-#: gio/gtlscertificate.c:429
+#: gio/gtlscertificate.c:488
 msgid "Cannot decrypt PEM-encoded private key"
 msgstr "Non foi posíbel descifrar a chave privada codificada con PEM"
 
-#: gio/gtlscertificate.c:440
+#: gio/gtlscertificate.c:499
 msgid "Could not parse PEM-encoded private key"
 msgstr "Non foi posíbel analizar a chave privada PEM codificada"
 
-#: gio/gtlscertificate.c:467
+#: gio/gtlscertificate.c:526
 msgid "No PEM-encoded certificate found"
 msgstr "Non se atopou ningún certificado PEM codificado"
 
-#: gio/gtlscertificate.c:476
+#: gio/gtlscertificate.c:535
 msgid "Could not parse PEM-encoded certificate"
 msgstr "Non foi posíbel analizar o certificado PEM codificado"
 
-#: gio/gtlscertificate.c:832
+#: gio/gtlscertificate.c:796
+msgid "The current TLS backend does not support PKCS #12"
+msgstr "O backend TLS actual non é admite PKCS #12"
+
+#: gio/gtlscertificate.c:1013
 msgid "This GTlsBackend does not support creating PKCS #11 certificates"
 msgstr "Este GTlsBackend non admite a creación de certificados PKCS #11"
 
@@ -4288,56 +4356,64 @@ msgstr ""
 msgid "The password entered is incorrect."
 msgstr "O contrasinal introducido é incorrecto."
 
-#: gio/gunixconnection.c:166 gio/gunixconnection.c:579
+#: gio/gunixconnection.c:125
+msgid "Sending FD is not supported"
+msgstr "Non se permite enviar o FD"
+
+#: gio/gunixconnection.c:178 gio/gunixconnection.c:596
 #, c-format
 msgid "Expecting 1 control message, got %d"
 msgid_plural "Expecting 1 control message, got %d"
 msgstr[0] "Esperando 1 mensaxe de control, obtívose %d"
 msgstr[1] "Esperando 1 mensaxe de control, obtivéronse %d"
 
-#: gio/gunixconnection.c:182 gio/gunixconnection.c:591
+#: gio/gunixconnection.c:194 gio/gunixconnection.c:608
 msgid "Unexpected type of ancillary data"
 msgstr "Tipo de datos subsidiarios inesperados"
 
-#: gio/gunixconnection.c:200
+#: gio/gunixconnection.c:212
 #, c-format
 msgid "Expecting one fd, but got %d\n"
 msgid_plural "Expecting one fd, but got %d\n"
 msgstr[0] "Esperando un descritor de ficheiro (fd), pero obtívose %d\n"
 msgstr[1] "Esperando un descritor de ficheiro (fd), pero obtivéronse %d\n"
 
-#: gio/gunixconnection.c:219
+#: gio/gunixconnection.c:231
 msgid "Received invalid fd"
 msgstr "Recibiuse un descritor de ficheiro (fd) incorrecto"
 
-#: gio/gunixconnection.c:363
+#: gio/gunixconnection.c:238
+msgid "Receiving FD is not supported"
+msgstr "Non se permite a recepción de FD"
+
+#: gio/gunixconnection.c:380
 msgid "Error sending credentials: "
 msgstr "Produciuse un erro ao enviar as credenciais: "
 
-#: gio/gunixconnection.c:520
+#: gio/gunixconnection.c:537
 #, c-format
 msgid "Error checking if SO_PASSCRED is enabled for socket: %s"
 msgstr ""
 "Produciuse un erro ao comprobar se SO_PASSCRED está activado para o socket: "
 "%s"
 
-#: gio/gunixconnection.c:536
+#: gio/gunixconnection.c:553
 #, c-format
 msgid "Error enabling SO_PASSCRED: %s"
 msgstr "Produciuse un erro ao activar SO_PASSCRED: %s"
 
-#: gio/gunixconnection.c:565
+#: gio/gunixconnection.c:582
 msgid ""
 "Expecting to read a single byte for receiving credentials but read zero bytes"
 msgstr ""
 "Esperábase ler un só byte para recibir as credenciais pero léronse creo bytes"
 
-#: gio/gunixconnection.c:605
+#: gio/gunixconnection.c:622
 #, c-format
 msgid "Not expecting control message, but got %d"
 msgstr "Non se esperaba unha mensaxe de control, pero obtívose %d"
 
-#: gio/gunixconnection.c:630
+#: gio/gunixconnection.c:647
 #, c-format
 msgid "Error while disabling SO_PASSCRED: %s"
 msgstr "Produciuse un erro ao desactivar SO_PASSCRED: %s"
@@ -4353,7 +4429,7 @@ msgstr "Produciuse un erro ao ler do descritor do ficheiro: %s"
 msgid "Error closing file descriptor: %s"
 msgstr "Produciuse un erro ao pechar o descritor do ficheiro: %s"
 
-#: gio/gunixmounts.c:2785 gio/gunixmounts.c:2838
+#: gio/gunixmounts.c:2809 gio/gunixmounts.c:2862
 msgid "Filesystem root"
 msgstr "Raíz do sistema de ficheiros"
 
@@ -4364,7 +4440,7 @@ msgstr "Raíz do sistema de ficheiros"
 msgid "Error writing to file descriptor: %s"
 msgstr "Produciuse un erro ao escribir no descritor do ficheiro: %s"
 
-#: gio/gunixsocketaddress.c:244
+#: gio/gunixsocketaddress.c:251
 msgid "Abstract UNIX domain socket addresses not supported on this system"
 msgstr ""
 "Neste sistema non se permiten enderezos de socket de dominios UNIX abstractos"
@@ -4517,8 +4593,8 @@ msgstr "Produciuse un erro ao expandir a liña executábel «%s» co URI «%s»"
 msgid "Unrepresentable character in conversion input"
 msgstr "Carácter non representábel na entrada da conversión"
 
-#: glib/gconvert.c:495 glib/gutf8.c:871 glib/gutf8.c:1083 glib/gutf8.c:1220
-#: glib/gutf8.c:1324
+#: glib/gconvert.c:495 glib/gutf8.c:886 glib/gutf8.c:1099 glib/gutf8.c:1236
+#: glib/gutf8.c:1340
 msgid "Partial character sequence at end of input"
 msgstr "Hai unha secuencia de carácter parcial ao final da entrada"
 
@@ -4985,83 +5061,83 @@ msgstr "PM"
 msgid "Error opening directory “%s”: %s"
 msgstr "Produciuse un erro ao abrir o directorio «%s»: %s"
 
-#: glib/gfileutils.c:737 glib/gfileutils.c:829
+#: glib/gfileutils.c:733 glib/gfileutils.c:825
 #, c-format
 msgid "Could not allocate %lu byte to read file “%s”"
 msgid_plural "Could not allocate %lu bytes to read file “%s”"
 msgstr[0] "Non foi posíbel asignar %lu byte para ler o ficheiro «%s»"
 msgstr[1] "Non foi posíbel asignar %lu bytes para ler o ficheiro «%s»"
 
-#: glib/gfileutils.c:754
+#: glib/gfileutils.c:750
 #, c-format
 msgid "Error reading file “%s”: %s"
 msgstr "Produciuse un erro ao ler o ficheiro «%s»: %s"
 
-#: glib/gfileutils.c:790
+#: glib/gfileutils.c:786
 #, c-format
 msgid "File “%s” is too large"
 msgstr "O ficheiro «%s» é demasiado grande"
 
-#: glib/gfileutils.c:854
+#: glib/gfileutils.c:850
 #, c-format
 msgid "Failed to read from file “%s”: %s"
 msgstr "Produciuse un erro ao ler desde o ficheiro «%s»: %s"
 
-#: glib/gfileutils.c:904 glib/gfileutils.c:979 glib/gfileutils.c:1468
+#: glib/gfileutils.c:900 glib/gfileutils.c:975 glib/gfileutils.c:1447
 #, c-format
 msgid "Failed to open file “%s”: %s"
 msgstr "Produciuse un erro ao abrir o ficheiro «%s»: %s"
 
-#: glib/gfileutils.c:917
+#: glib/gfileutils.c:913
 #, c-format
 msgid "Failed to get attributes of file “%s”: fstat() failed: %s"
 msgstr ""
 "Produciuse un erro ao obter os atributos do ficheiro «%s»: fstat() fallou: %s"
 
-#: glib/gfileutils.c:948
+#: glib/gfileutils.c:944
 #, c-format
 msgid "Failed to open file “%s”: fdopen() failed: %s"
 msgstr "Produciuse un erro ao abrir o ficheiro «%s»: fdopen() fallou: %s"
 
-#: glib/gfileutils.c:1049
+#: glib/gfileutils.c:1045
 #, c-format
 msgid "Failed to rename file “%s” to “%s”: g_rename() failed: %s"
 msgstr ""
 "Produciuse un erro ao renomear o ficheiro «%s» como «%s»: g_rename() fallou: "
 "%s"
 
-#: glib/gfileutils.c:1175
+#: glib/gfileutils.c:1154
 #, c-format
 msgid "Failed to write file “%s”: write() failed: %s"
 msgstr "Produciuse un erro ao escribir o ficheiro «%s»: write() fallou: %s"
 
-#: glib/gfileutils.c:1196
+#: glib/gfileutils.c:1175
 #, c-format
 msgid "Failed to write file “%s”: fsync() failed: %s"
 msgstr "Produciuse un erro ao escribir o ficheiro «%s»: fsync() fallou: %s"
 
-#: glib/gfileutils.c:1357 glib/gfileutils.c:1772
+#: glib/gfileutils.c:1336 glib/gfileutils.c:1751
 #, c-format
 msgid "Failed to create file “%s”: %s"
 msgstr "Produciuse un erro ao crear o ficheiro «%s»: %s"
 
-#: glib/gfileutils.c:1402
+#: glib/gfileutils.c:1381
 #, c-format
 msgid "Existing file “%s” could not be removed: g_unlink() failed: %s"
 msgstr ""
 "Non foi posíbel retirar o ficheiro existente «%s»: g_unlink() fallou: %s"
 
-#: glib/gfileutils.c:1737
+#: glib/gfileutils.c:1716
 #, c-format
 msgid "Template “%s” invalid, should not contain a “%s”"
 msgstr "O modelo «%s» non é válido, non debería conter «%s»"
 
-#: glib/gfileutils.c:1750
+#: glib/gfileutils.c:1729
 #, c-format
 msgid "Template “%s” doesn’t contain XXXXXX"
 msgstr "O modelo «%s» non contén XXXXXX"
 
-#: glib/gfileutils.c:2310 glib/gfileutils.c:2339
+#: glib/gfileutils.c:2289 glib/gfileutils.c:2318
 #, c-format
 msgid "Failed to read the symbolic link “%s”: %s"
 msgstr "Produciuse un erro ao ler a ligazón simbólica «%s»: %s"
@@ -5088,16 +5164,16 @@ msgstr "O canal termina nun carácter parcial"
 msgid "Can’t do a raw read in g_io_channel_read_to_end"
 msgstr "Non é posíbel facer unha lectura en bruto en g_io_channel_read_to_end"
 
-#: glib/gkeyfile.c:790
+#: glib/gkeyfile.c:794
 msgid "Valid key file could not be found in search dirs"
 msgstr ""
 "Non é posíbel atopar un ficheiro de clave correcto nos directorios de busca"
 
-#: glib/gkeyfile.c:827
+#: glib/gkeyfile.c:831
 msgid "Not a regular file"
 msgstr "Non é un ficheiro normal"
 
-#: glib/gkeyfile.c:1282
+#: glib/gkeyfile.c:1289
 #, c-format
 msgid ""
 "Key file contains line “%s” which is not a key-value pair, group, or comment"
@@ -5105,43 +5181,43 @@ msgstr ""
 "O ficheiro clave contén a liña «%s» que non é un par valor-clave, grupo ou "
 "comentario"
 
-#: glib/gkeyfile.c:1339
+#: glib/gkeyfile.c:1346
 #, c-format
 msgid "Invalid group name: %s"
 msgstr "Nome de grupo non válido: %s"
 
-#: glib/gkeyfile.c:1361
+#: glib/gkeyfile.c:1370
 msgid "Key file does not start with a group"
 msgstr "O ficheiro clave non comeza cun grupo"
 
-#: glib/gkeyfile.c:1387
+#: glib/gkeyfile.c:1394
 #, c-format
-msgid "Invalid key name: %s"
-msgstr "Nome de clave non válido: %s"
+msgid "Invalid key name: %.*s"
+msgstr "Nome de chave non válido: %.*s"
 
-#: glib/gkeyfile.c:1414
+#: glib/gkeyfile.c:1422
 #, c-format
 msgid "Key file contains unsupported encoding “%s”"
 msgstr "O ficheiro clave contén unha codificación non permitida «%s»"
 
-#: glib/gkeyfile.c:1663 glib/gkeyfile.c:1836 glib/gkeyfile.c:3289
-#: glib/gkeyfile.c:3353 glib/gkeyfile.c:3483 glib/gkeyfile.c:3615
-#: glib/gkeyfile.c:3761 glib/gkeyfile.c:3996 glib/gkeyfile.c:4063
+#: glib/gkeyfile.c:1677 glib/gkeyfile.c:1850 glib/gkeyfile.c:3297
+#: glib/gkeyfile.c:3361 glib/gkeyfile.c:3491 glib/gkeyfile.c:3623
+#: glib/gkeyfile.c:3769 glib/gkeyfile.c:4004 glib/gkeyfile.c:4071
 #, c-format
 msgid "Key file does not have group “%s”"
 msgstr "O ficheiro clave non ten un grupo «%s»"
 
-#: glib/gkeyfile.c:1791
+#: glib/gkeyfile.c:1805
 #, c-format
 msgid "Key file does not have key “%s” in group “%s”"
 msgstr "O ficheiro clave non ten a clave «%s» no grupo «%s»"
 
-#: glib/gkeyfile.c:1953 glib/gkeyfile.c:2069
+#: glib/gkeyfile.c:1967 glib/gkeyfile.c:2083
 #, c-format
 msgid "Key file contains key “%s” with value “%s” which is not UTF-8"
 msgstr "O ficheiro clave contén a clave «%s» co valor «%s» que non é UTF-8"
 
-#: glib/gkeyfile.c:1973 glib/gkeyfile.c:2089 glib/gkeyfile.c:2531
+#: glib/gkeyfile.c:1987 glib/gkeyfile.c:2103 glib/gkeyfile.c:2542
 #, c-format
 msgid ""
 "Key file contains key “%s” which has a value that cannot be interpreted."
@@ -5149,7 +5225,7 @@ msgstr ""
 "O ficheiro clave contén a clave «%s» que ten un valor que non é posíbel "
 "interpretar."
 
-#: glib/gkeyfile.c:2749 glib/gkeyfile.c:3118
+#: glib/gkeyfile.c:2757 glib/gkeyfile.c:3126
 #, c-format
 msgid ""
 "Key file contains key “%s” in group “%s” which has a value that cannot be "
@@ -5158,36 +5234,36 @@ msgstr ""
 "O ficheiro clave contén a clave «%s» no grupo «%s» que ten un valor que non "
 "é posíbel interpretar."
 
-#: glib/gkeyfile.c:2827 glib/gkeyfile.c:2904
+#: glib/gkeyfile.c:2835 glib/gkeyfile.c:2912
 #, c-format
 msgid "Key “%s” in group “%s” has value “%s” where %s was expected"
 msgstr "A clave «%s» do grupo «%s» ten o valor «%s», pero agardábase %s"
 
-#: glib/gkeyfile.c:4306
+#: glib/gkeyfile.c:4324
 msgid "Key file contains escape character at end of line"
 msgstr "O ficheiro clave contén un carácter de escape ao final da liña"
 
-#: glib/gkeyfile.c:4328
+#: glib/gkeyfile.c:4346
 #, c-format
 msgid "Key file contains invalid escape sequence “%s”"
 msgstr "O ficheiro clave contén a secuencia de escape non válida «%s»"
 
-#: glib/gkeyfile.c:4472
+#: glib/gkeyfile.c:4491
 #, c-format
 msgid "Value “%s” cannot be interpreted as a number."
 msgstr "Non é posíbel interpretar o valor «%s» como un número."
 
-#: glib/gkeyfile.c:4486
+#: glib/gkeyfile.c:4505
 #, c-format
 msgid "Integer value “%s” out of range"
 msgstr "O valor enteiro «%s» está fóra do intervalo"
 
-#: glib/gkeyfile.c:4519
+#: glib/gkeyfile.c:4538
 #, c-format
 msgid "Value “%s” cannot be interpreted as a float number."
 msgstr "Non é posíbel interpretar o valor «%s» como un número flotante."
 
-#: glib/gkeyfile.c:4558
+#: glib/gkeyfile.c:4577
 #, c-format
 msgid "Value “%s” cannot be interpreted as a boolean."
 msgstr "Non é posíbel interpretar o valor «%s» como un booleano."
@@ -5488,7 +5564,7 @@ msgstr "Produciuse un erro ao analizar a opción %s"
 msgid "Missing argument for %s"
 msgstr "Argumento que falta para %s"
 
-#: glib/goption.c:2185
+#: glib/goption.c:2184
 #, c-format
 msgid "Unknown option %s"
 msgstr "Opción %s descoñecida"
@@ -5870,155 +5946,168 @@ msgstr ""
 "Produciuse un erro ao analizar o texto de substitución «%s» no carácter %lu: "
 "%s"
 
-#: glib/gshell.c:94
+#: glib/gshell.c:96
 msgid "Quoted text doesn’t begin with a quotation mark"
 msgstr "O texto citado non comeza con comiñas"
 
-#: glib/gshell.c:184
+#: glib/gshell.c:186
 msgid "Unmatched quotation mark in command line or other shell-quoted text"
 msgstr ""
 "Comiñas non pechadas na liña de ordes ou noutro texto citado nun intérprete "
 "de ordes"
 
-#: glib/gshell.c:580
+#: glib/gshell.c:592
 #, c-format
 msgid "Text ended just after a “\\” character. (The text was “%s”)"
 msgstr "O texto rematou despois dun carácter «\\». (O texto era «%s»)"
 
-#: glib/gshell.c:587
+#: glib/gshell.c:599
 #, c-format
 msgid "Text ended before matching quote was found for %c. (The text was “%s”)"
 msgstr ""
 "O texto rematou antes de atopar a comiña final para %c. (O texto era «%s»)"
 
-#: glib/gshell.c:599
+#: glib/gshell.c:611
 msgid "Text was empty (or contained only whitespace)"
 msgstr "O texto estaba baleiro (ou só contiña espazos en branco)"
 
-#: glib/gspawn.c:308
+#: glib/gspawn.c:310
 #, c-format
 msgid "Failed to read data from child process (%s)"
 msgstr "Produciuse un erro ao ler datos desde un proceso fillo (%s)"
 
-#: glib/gspawn.c:458
+#: glib/gspawn.c:462
 #, c-format
 msgid "Unexpected error in reading data from a child process (%s)"
 msgstr "Produciuse un erro ao ler os datos dun proceso fillo (%s)"
 
-#: glib/gspawn.c:543
+#: glib/gspawn.c:547
 #, c-format
 msgid "Unexpected error in waitpid() (%s)"
 msgstr "Erro inesperado en waitpid() (%s)"
 
-#: glib/gspawn.c:1152 glib/gspawn-win32.c:1407
+#: glib/gspawn.c:1175 glib/gspawn-win32.c:1438
 #, c-format
 msgid "Child process exited with code %ld"
 msgstr "O proceso fillo rematou co código %ld"
 
-#: glib/gspawn.c:1160
+#: glib/gspawn.c:1183
 #, c-format
 msgid "Child process killed by signal %ld"
 msgstr "O proceso fillo rematou polo sinal %ld"
 
-#: glib/gspawn.c:1167
+#: glib/gspawn.c:1190
 #, c-format
 msgid "Child process stopped by signal %ld"
 msgstr "O proceso fillo detívose polo sinal %ld"
 
-#: glib/gspawn.c:1174
+#: glib/gspawn.c:1197
 #, c-format
 msgid "Child process exited abnormally"
 msgstr "O proceso fillo rematou de forma anormal"
 
-#: glib/gspawn.c:1793 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
+#: glib/gspawn.c:1890 glib/gspawn-win32.c:353 glib/gspawn-win32.c:361
 #, c-format
 msgid "Failed to read from child pipe (%s)"
 msgstr "Produciuse un erro ao ler desde a canalización filla (%s)"
 
-#: glib/gspawn.c:2095
+#: glib/gspawn.c:2253
 #, c-format
 msgid "Failed to spawn child process “%s” (%s)"
 msgstr "Produciuse un erro ao executar o proceso fillo «%s» (%s)"
 
-#: glib/gspawn.c:2212
+#: glib/gspawn.c:2370
 #, c-format
 msgid "Failed to fork (%s)"
 msgstr "Produciuse un erro ao facer fork (%s)"
 
-#: glib/gspawn.c:2372 glib/gspawn-win32.c:381
+#: glib/gspawn.c:2530 glib/gspawn-win32.c:384
 #, c-format
 msgid "Failed to change to directory “%s” (%s)"
 msgstr "Produciuse un erro ao cambiar ao directorio «%s» (%s)"
 
-#: glib/gspawn.c:2382
+#: glib/gspawn.c:2540
 #, c-format
 msgid "Failed to execute child process “%s” (%s)"
 msgstr "Produciuse un erro ao executar o proceso fillo «%s» (%s)"
 
-#: glib/gspawn.c:2392
+#: glib/gspawn.c:2550
 #, c-format
-msgid "Failed to redirect output or input of child process (%s)"
+msgid "Failed to open file to remap file descriptor (%s)"
 msgstr ""
-"Produciuse un erro ao redireccionar a saída ou entrada do proceso fillo (%s)"
+"Produciuse un erro ao abrir o ficheiro para remapear o descritor de ficheiro "
+"(%s)"
 
-#: glib/gspawn.c:2401
+#: glib/gspawn.c:2558
+#, c-format
+msgid "Failed to duplicate file descriptor for child process (%s)"
+msgstr ""
+"Produciuse un erro ao duplicar o descritor de ficheiro para o proceso fillo "
+"(%s)"
+
+#: glib/gspawn.c:2567
 #, c-format
 msgid "Failed to fork child process (%s)"
 msgstr "Produciuse un erro ao facer fork ao proceso fillo (%s)"
 
-#: glib/gspawn.c:2409
+#: glib/gspawn.c:2575
+#, c-format
+msgid "Failed to close file descriptor for child process (%s)"
+msgstr ""
+"Produciuse un erro ao pechar o descritor de ficheiro para o proceso fillo "
+"(%s)"
+
+#: glib/gspawn.c:2583
 #, c-format
 msgid "Unknown error executing child process “%s”"
 msgstr "Produciuse un erro descoñecido ao executar o proceso fillo «%s»"
 
-#: glib/gspawn.c:2433
+#: glib/gspawn.c:2607
 #, c-format
 msgid "Failed to read enough data from child pid pipe (%s)"
 msgstr ""
 "Fallo de lectura de suficientes datos desde a canalización filla co PID (%s)"
 
-#: glib/gspawn-win32.c:294
+#: glib/gspawn-win32.c:297
 msgid "Failed to read data from child process"
 msgstr "Produciuse un erro ao ler datos desde un proceso fillo"
 
-#: glib/gspawn-win32.c:311
-#, c-format
-msgid "Failed to create pipe for communicating with child process (%s)"
-msgstr ""
-"Produciuse un erro ao crear a canalización para comunicarse co proceso fillo "
-"(%s)"
-
-#: glib/gspawn-win32.c:387 glib/gspawn-win32.c:392 glib/gspawn-win32.c:511
+#: glib/gspawn-win32.c:390 glib/gspawn-win32.c:395 glib/gspawn-win32.c:521
 #, c-format
 msgid "Failed to execute child process (%s)"
 msgstr "Produciuse un erro ao executar o proceso fillo (%s)"
 
-#: glib/gspawn-win32.c:461
+#: glib/gspawn-win32.c:400
+#, c-format
+msgid "Failed to dup() in child process (%s)"
+msgstr "Produciuse un erro ao facer dup() no proceso fillo (%s)"
+
+#: glib/gspawn-win32.c:471
 #, c-format
 msgid "Invalid program name: %s"
 msgstr "Nome de programa non válido: %s"
 
-#: glib/gspawn-win32.c:471 glib/gspawn-win32.c:779
+#: glib/gspawn-win32.c:481 glib/gspawn-win32.c:807
 #, c-format
 msgid "Invalid string in argument vector at %d: %s"
 msgstr "Cadea non válida no vector de argumento en %d: %s"
 
-#: glib/gspawn-win32.c:482 glib/gspawn-win32.c:794
+#: glib/gspawn-win32.c:492 glib/gspawn-win32.c:823
 #, c-format
 msgid "Invalid string in environment: %s"
 msgstr "Cadea non válida no ambiente: %s"
 
-#: glib/gspawn-win32.c:775
+#: glib/gspawn-win32.c:803
 #, c-format
 msgid "Invalid working directory: %s"
 msgstr "Directorio de traballo non válido: %s"
 
-#: glib/gspawn-win32.c:837
+#: glib/gspawn-win32.c:868
 #, c-format
 msgid "Failed to execute helper program (%s)"
 msgstr "Produciuse un erro ao executar o programa asistente (%s)"
 
-#: glib/gspawn-win32.c:1064
+#: glib/gspawn-win32.c:1096
 msgid ""
 "Unexpected error in g_io_channel_win32_poll() reading data from a child "
 "process"
@@ -6026,21 +6115,21 @@ msgstr ""
 "Erro inesperado en g_io_channel_win32_poll() ao ler datos desde un proceso "
 "fillo"
 
-#: glib/gstrfuncs.c:3338 glib/gstrfuncs.c:3440
+#: glib/gstrfuncs.c:3351 glib/gstrfuncs.c:3453
 msgid "Empty string is not a number"
 msgstr "A cadea baleira non é un número"
 
-#: glib/gstrfuncs.c:3362
+#: glib/gstrfuncs.c:3375
 #, c-format
 msgid "“%s” is not a signed number"
 msgstr "«%s» non é un número con signo"
 
-#: glib/gstrfuncs.c:3372 glib/gstrfuncs.c:3476
+#: glib/gstrfuncs.c:3385 glib/gstrfuncs.c:3489
 #, c-format
 msgid "Number “%s” is out of bounds [%s, %s]"
 msgstr "O número «%s» está fóra de rango [%s, %s]"
 
-#: glib/gstrfuncs.c:3466
+#: glib/gstrfuncs.c:3479
 #, c-format
 msgid "“%s” is not an unsigned number"
 msgstr "«%s» non é un número sen signo"
@@ -6093,183 +6182,183 @@ msgstr "A URI «%s» non é unha URI absoluta"
 msgid "URI ‘%s’ has no host component"
 msgstr "A URI «%s» non ten o compoñente de equipo"
 
-#: glib/guri.c:1435
+#: glib/guri.c:1460
 msgid "URI is not absolute, and no base URI was provided"
 msgstr "A URI non é absoluta, e non se forneceu unha URI base"
 
-#: glib/guri.c:2213
+#: glib/guri.c:2238
 msgid "Missing ‘=’ and parameter value"
 msgstr "Falta «=» e o valor de parámetro"
 
-#: glib/gutf8.c:817
+#: glib/gutf8.c:832
 msgid "Failed to allocate memory"
 msgstr "Produciuse un erro ao reservar memoria"
 
-#: glib/gutf8.c:950
+#: glib/gutf8.c:965
 msgid "Character out of range for UTF-8"
 msgstr "Carácter fóra do intervalo para UTF-8"
 
-#: glib/gutf8.c:1051 glib/gutf8.c:1060 glib/gutf8.c:1190 glib/gutf8.c:1199
-#: glib/gutf8.c:1338 glib/gutf8.c:1435
+#: glib/gutf8.c:1067 glib/gutf8.c:1076 glib/gutf8.c:1206 glib/gutf8.c:1215
+#: glib/gutf8.c:1354 glib/gutf8.c:1451
 msgid "Invalid sequence in conversion input"
 msgstr "Secuencia non válida na entrada da conversión"
 
-#: glib/gutf8.c:1349 glib/gutf8.c:1446
+#: glib/gutf8.c:1365 glib/gutf8.c:1462
 msgid "Character out of range for UTF-16"
 msgstr "Carácter fóra de intervalo para UTF-16"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2727
+#: glib/gutils.c:2849
 #, c-format
 msgid "%.1f kB"
 msgstr "%.1f kB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2729
+#: glib/gutils.c:2851
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2731
+#: glib/gutils.c:2853
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2733
+#: glib/gutils.c:2855
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2735
+#: glib/gutils.c:2857
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2737
+#: glib/gutils.c:2859
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2741
+#: glib/gutils.c:2863
 #, c-format
 msgid "%.1f KiB"
 msgstr "%.1f KiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2743
+#: glib/gutils.c:2865
 #, c-format
 msgid "%.1f MiB"
 msgstr "%.1f MiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2745
+#: glib/gutils.c:2867
 #, c-format
 msgid "%.1f GiB"
 msgstr "%.1f GiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2747
+#: glib/gutils.c:2869
 #, c-format
 msgid "%.1f TiB"
 msgstr "%.1f TiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2749
+#: glib/gutils.c:2871
 #, c-format
 msgid "%.1f PiB"
 msgstr "%.1f PiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2751
+#: glib/gutils.c:2873
 #, c-format
 msgid "%.1f EiB"
 msgstr "%.1f EiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2755
+#: glib/gutils.c:2877
 #, c-format
 msgid "%.1f kb"
 msgstr "%.1f kb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2757
+#: glib/gutils.c:2879
 #, c-format
 msgid "%.1f Mb"
 msgstr "%.1f Mb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2759
+#: glib/gutils.c:2881
 #, c-format
 msgid "%.1f Gb"
 msgstr "%.1f Gb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2761
+#: glib/gutils.c:2883
 #, c-format
 msgid "%.1f Tb"
 msgstr "%.1f Tb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2763
+#: glib/gutils.c:2885
 #, c-format
 msgid "%.1f Pb"
 msgstr "%.1f Pb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2765
+#: glib/gutils.c:2887
 #, c-format
 msgid "%.1f Eb"
 msgstr "%.1f Eb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2769
+#: glib/gutils.c:2891
 #, c-format
 msgid "%.1f Kib"
 msgstr "%.1f Kib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2771
+#: glib/gutils.c:2893
 #, c-format
 msgid "%.1f Mib"
 msgstr "%.1f Mib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2773
+#: glib/gutils.c:2895
 #, c-format
 msgid "%.1f Gib"
 msgstr "%.1f Gib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2775
+#: glib/gutils.c:2897
 #, c-format
 msgid "%.1f Tib"
 msgstr "%.1f Tib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2777
+#: glib/gutils.c:2899
 #, c-format
 msgid "%.1f Pib"
 msgstr "%.1f Pib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2779
+#: glib/gutils.c:2901
 #, c-format
 msgid "%.1f Eib"
 msgstr "%.1f Eib"
 
-#: glib/gutils.c:2813 glib/gutils.c:2930
+#: glib/gutils.c:2935 glib/gutils.c:3052
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
 msgstr[0] "%u byte"
 msgstr[1] "%u bytes"
 
-#: glib/gutils.c:2817
+#: glib/gutils.c:2939
 #, c-format
 msgid "%u bit"
 msgid_plural "%u bits"
@@ -6277,7 +6366,7 @@ msgstr[0] "%u bit"
 msgstr[1] "%u bit"
 
 #. Translators: the %s in "%s bytes" will always be replaced by a number.
-#: glib/gutils.c:2884
+#: glib/gutils.c:3006
 #, c-format
 msgid "%s byte"
 msgid_plural "%s bytes"
@@ -6285,7 +6374,7 @@ msgstr[0] "%s byte"
 msgstr[1] "%s bytes"
 
 #. Translators: the %s in "%s bits" will always be replaced by a number.
-#: glib/gutils.c:2889
+#: glib/gutils.c:3011
 #, c-format
 msgid "%s bit"
 msgid_plural "%s bits"
@@ -6297,32 +6386,32 @@ msgstr[1] "%s bit"
 #. * compatibility.  Users will not see this string unless a program is using this deprecated function.
 #. * Please translate as literally as possible.
 #.
-#: glib/gutils.c:2943
+#: glib/gutils.c:3065
 #, c-format
 msgid "%.1f KB"
 msgstr "%.1f KB"
 
-#: glib/gutils.c:2948
+#: glib/gutils.c:3070
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
-#: glib/gutils.c:2953
+#: glib/gutils.c:3075
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
-#: glib/gutils.c:2958
+#: glib/gutils.c:3080
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
-#: glib/gutils.c:2963
+#: glib/gutils.c:3085
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
-#: glib/gutils.c:2968
+#: glib/gutils.c:3090
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
index e61d231..2870125 100644 (file)
--- a/po/he.po
+++ b/po/he.po
@@ -8,23 +8,31 @@
 # Gil 'Dolfin' Osher <dolfin@rpg.org.il>, 2002.
 # Gil Osher <dolfin@rpg.org.il>, 2004.
 # Yaron Shahrabani <sh.yaron@gmail.com>, 2010.
-# Yosef Or Boczko <yoseforb@gmail.com>, 2014-2020.
+# Yosef Or Boczko <yoseforb@gmail.com>, 2014-2022.
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: glib.HEAD.he\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/glib/issues\n"
-"POT-Creation-Date: 2021-08-07 05:37+0000\n"
-"PO-Revision-Date: 2021-08-07 19:08+0300\n"
-"Last-Translator: Yaron Shahrabani <sh.yaron@gmail.com>\n"
-"Language-Team: Hebrew <yoseforb@gmail.com>\n"
+"POT-Creation-Date: 2022-03-07 09:24+0000\n"
+"PO-Revision-Date: 2022-03-07 20:46+0200\n"
+"Last-Translator: Yosef Or Boczko <yoseforb@gmail.com>\n"
+"Language-Team: Hebrew <GNOME Hebrew Translation Project>\n"
 "Language: he\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==1 ? 0 : n==2 ? 1 : n>10 && n%10==0 ? "
-"2 : 3);\n"
-"X-Generator: Poedit 3.0\n"
+"2 : 3)\n"
+"X-Generator: Gtranslator 40.0\n"
+
+#: gio/gappinfo.c:333
+msgid "Setting default applications not supported yet"
+msgstr "Setting default applications not supported yet"
+
+#: gio/gappinfo.c:366
+msgid "Setting application as last used for type not supported yet"
+msgstr "Setting application as last used for type not supported yet"
 
 #: gio/gapplication.c:500
 msgid "GApplication options"
@@ -47,7 +55,7 @@ msgid "Replace the running instance"
 msgstr "Replace the running instance"
 
 #: gio/gapplication-tool.c:45 gio/gapplication-tool.c:46 gio/gio-tool.c:227
-#: gio/gresource-tool.c:494 gio/gsettings-tool.c:572
+#: gio/gresource-tool.c:494 gio/gsettings-tool.c:584
 msgid "Print help"
 msgstr "Print help"
 
@@ -59,7 +67,7 @@ msgstr "[COMMAND]"
 msgid "Print version"
 msgstr "Print version"
 
-#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:578
+#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:590
 msgid "Print version information and exit"
 msgstr "Print version information and exit"
 
@@ -120,8 +128,8 @@ msgstr "The command to print detailed help for"
 msgid "Application identifier in D-Bus format (eg: org.example.viewer)"
 msgstr "Application identifier in D-Bus format (eg: org.example.viewer)"
 
-#: gio/gapplication-tool.c:74 gio/glib-compile-resources.c:738
-#: gio/glib-compile-resources.c:744 gio/glib-compile-resources.c:772
+#: gio/gapplication-tool.c:74 gio/glib-compile-resources.c:820
+#: gio/glib-compile-resources.c:826 gio/glib-compile-resources.c:855
 #: gio/gresource-tool.c:501 gio/gresource-tool.c:567
 msgid "FILE"
 msgstr "FILE"
@@ -146,7 +154,7 @@ msgstr "PARAMETER"
 msgid "Optional parameter to the action invocation, in GVariant format"
 msgstr "Optional parameter to the action invocation, in GVariant format"
 
-#: gio/gapplication-tool.c:98 gio/gresource-tool.c:532 gio/gsettings-tool.c:664
+#: gio/gapplication-tool.c:98 gio/gresource-tool.c:532 gio/gsettings-tool.c:676
 #, c-format
 msgid ""
 "Unknown command %s\n"
@@ -160,7 +168,7 @@ msgid "Usage:\n"
 msgstr "Usage:\n"
 
 #: gio/gapplication-tool.c:116 gio/gresource-tool.c:557
-#: gio/gsettings-tool.c:699
+#: gio/gsettings-tool.c:711
 msgid "Arguments:\n"
 msgstr "Arguments:\n"
 
@@ -283,7 +291,7 @@ msgstr "Stream is already closed"
 msgid "Truncate not supported on base stream"
 msgstr "Truncate not supported on base stream"
 
-#: gio/gcancellable.c:319 gio/gdbusconnection.c:1872 gio/gdbusprivate.c:1416
+#: gio/gcancellable.c:319 gio/gdbusconnection.c:1873 gio/gdbusprivate.c:1418
 #: gio/gsimpleasyncresult.c:871 gio/gsimpleasyncresult.c:897
 #, c-format
 msgid "Operation was cancelled"
@@ -304,7 +312,7 @@ msgstr "Not enough space in destination"
 #: gio/gcharsetconverter.c:342 gio/gdatainputstream.c:848
 #: gio/gdatainputstream.c:1266 glib/gconvert.c:449 glib/gconvert.c:879
 #: glib/giochannel.c:1573 glib/giochannel.c:1615 glib/giochannel.c:2470
-#: glib/gutf8.c:875 glib/gutf8.c:1328
+#: glib/gutf8.c:890 glib/gutf8.c:1344
 msgid "Invalid byte sequence in conversion input"
 msgstr "Invalid byte sequence in conversion input"
 
@@ -314,7 +322,7 @@ msgstr "Invalid byte sequence in conversion input"
 msgid "Error during conversion: %s"
 msgstr "Error during conversion: %s"
 
-#: gio/gcharsetconverter.c:445 gio/gsocket.c:1143
+#: gio/gcharsetconverter.c:445 gio/gsocket.c:1147
 msgid "Cancellable initialization not supported"
 msgstr "Cancellable initialization not supported"
 
@@ -330,7 +338,7 @@ msgstr "Conversion from character set “%s” to “%s” is not supported"
 msgid "Could not open converter from “%s” to “%s”"
 msgstr "Could not open converter from “%s” to “%s”"
 
-#: gio/gcontenttype.c:454
+#: gio/gcontenttype.c:470
 #, c-format
 msgid "%s type"
 msgstr "%s type"
@@ -344,23 +352,23 @@ msgstr "Unknown type"
 msgid "%s filetype"
 msgstr "%s filetype"
 
-#: gio/gcredentials.c:323
+#: gio/gcredentials.c:335
 msgid "GCredentials contains invalid data"
 msgstr "GCredentials contains invalid data"
 
-#: gio/gcredentials.c:383 gio/gcredentials.c:667
+#: gio/gcredentials.c:395 gio/gcredentials.c:686
 msgid "GCredentials is not implemented on this OS"
 msgstr "GCredentials is not implemented on this OS"
 
-#: gio/gcredentials.c:538 gio/gcredentials.c:556
+#: gio/gcredentials.c:550 gio/gcredentials.c:568
 msgid "There is no GCredentials support for your platform"
 msgstr "There is no GCredentials support for your platform"
 
-#: gio/gcredentials.c:607
+#: gio/gcredentials.c:626
 msgid "GCredentials does not contain a process ID on this OS"
 msgstr "GCredentials does not contain a process ID on this OS"
 
-#: gio/gcredentials.c:661
+#: gio/gcredentials.c:680
 msgid "Credentials spoofing is not possible on this OS"
 msgstr "Credentials spoofing is not possible on this OS"
 
@@ -368,17 +376,17 @@ msgstr "Credentials spoofing is not possible on this OS"
 msgid "Unexpected early end-of-stream"
 msgstr "Unexpected early end-of-stream"
 
-#: gio/gdbusaddress.c:159 gio/gdbusaddress.c:233 gio/gdbusaddress.c:322
+#: gio/gdbusaddress.c:162 gio/gdbusaddress.c:236 gio/gdbusaddress.c:325
 #, c-format
 msgid "Unsupported key “%s” in address entry “%s”"
 msgstr "Unsupported key “%s” in address entry “%s”"
 
-#: gio/gdbusaddress.c:172
+#: gio/gdbusaddress.c:175
 #, c-format
 msgid "Meaningless key/value pair combination in address entry “%s”"
 msgstr "Meaningless key/value pair combination in address entry “%s”"
 
-#: gio/gdbusaddress.c:181
+#: gio/gdbusaddress.c:184
 #, c-format
 msgid ""
 "Address “%s” is invalid (need exactly one of path, dir, tmpdir, or abstract "
@@ -387,28 +395,28 @@ msgstr ""
 "Address “%s” is invalid (need exactly one of path, dir, tmpdir, or abstract "
 "keys)"
 
-#: gio/gdbusaddress.c:248 gio/gdbusaddress.c:259 gio/gdbusaddress.c:274
-#: gio/gdbusaddress.c:337 gio/gdbusaddress.c:348
+#: gio/gdbusaddress.c:251 gio/gdbusaddress.c:262 gio/gdbusaddress.c:277
+#: gio/gdbusaddress.c:340 gio/gdbusaddress.c:351
 #, c-format
 msgid "Error in address “%s” — the “%s” attribute is malformed"
 msgstr "Error in address “%s” — the “%s” attribute is malformed"
 
-#: gio/gdbusaddress.c:418 gio/gdbusaddress.c:682
+#: gio/gdbusaddress.c:421 gio/gdbusaddress.c:680
 #, c-format
 msgid "Unknown or unsupported transport “%s” for address “%s”"
 msgstr "Unknown or unsupported transport “%s” for address “%s”"
 
-#: gio/gdbusaddress.c:462
+#: gio/gdbusaddress.c:465
 #, c-format
 msgid "Address element “%s” does not contain a colon (:)"
 msgstr "Address element “%s” does not contain a colon (:)"
 
-#: gio/gdbusaddress.c:471
+#: gio/gdbusaddress.c:474
 #, c-format
 msgid "Transport name in address element “%s” must not be empty"
 msgstr "Transport name in address element “%s” must not be empty"
 
-#: gio/gdbusaddress.c:492
+#: gio/gdbusaddress.c:495
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” does not contain an equal "
@@ -417,14 +425,14 @@ msgstr ""
 "Key/Value pair %d, “%s”, in address element “%s” does not contain an equal "
 "sign"
 
-#: gio/gdbusaddress.c:503
+#: gio/gdbusaddress.c:506
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” must not have an empty key"
 msgstr ""
 "Key/Value pair %d, “%s”, in address element “%s” must not have an empty key"
 
-#: gio/gdbusaddress.c:517
+#: gio/gdbusaddress.c:520
 #, c-format
 msgid ""
 "Error unescaping key or value in Key/Value pair %d, “%s”, in address element "
@@ -433,7 +441,7 @@ msgstr ""
 "Error unescaping key or value in Key/Value pair %d, “%s”, in address element "
 "“%s”"
 
-#: gio/gdbusaddress.c:589
+#: gio/gdbusaddress.c:588
 #, c-format
 msgid ""
 "Error in address “%s” — the unix transport requires exactly one of the keys "
@@ -442,75 +450,75 @@ msgstr ""
 "Error in address “%s” — the unix transport requires exactly one of the keys "
 "“path” or “abstract” to be set"
 
-#: gio/gdbusaddress.c:625
+#: gio/gdbusaddress.c:623
 #, c-format
 msgid "Error in address “%s” — the host attribute is missing or malformed"
 msgstr "Error in address “%s” — the host attribute is missing or malformed"
 
-#: gio/gdbusaddress.c:639
+#: gio/gdbusaddress.c:637
 #, c-format
 msgid "Error in address “%s” — the port attribute is missing or malformed"
 msgstr "Error in address “%s” — the port attribute is missing or malformed"
 
-#: gio/gdbusaddress.c:653
+#: gio/gdbusaddress.c:651
 #, c-format
 msgid "Error in address “%s” — the noncefile attribute is missing or malformed"
 msgstr ""
 "Error in address “%s” — the noncefile attribute is missing or malformed"
 
-#: gio/gdbusaddress.c:674
+#: gio/gdbusaddress.c:672
 msgid "Error auto-launching: "
 msgstr "Error auto-launching: "
 
-#: gio/gdbusaddress.c:727
+#: gio/gdbusaddress.c:725
 #, c-format
 msgid "Error opening nonce file “%s”: %s"
 msgstr "Error opening nonce file “%s”: %s"
 
-#: gio/gdbusaddress.c:746
+#: gio/gdbusaddress.c:744
 #, c-format
 msgid "Error reading from nonce file “%s”: %s"
 msgstr "Error reading from nonce file “%s”: %s"
 
-#: gio/gdbusaddress.c:755
+#: gio/gdbusaddress.c:753
 #, c-format
 msgid "Error reading from nonce file “%s”, expected 16 bytes, got %d"
 msgstr "Error reading from nonce file “%s”, expected 16 bytes, got %d"
 
-#: gio/gdbusaddress.c:773
+#: gio/gdbusaddress.c:771
 #, c-format
 msgid "Error writing contents of nonce file “%s” to stream:"
 msgstr "Error writing contents of nonce file “%s” to stream:"
 
-#: gio/gdbusaddress.c:988
+#: gio/gdbusaddress.c:986
 msgid "The given address is empty"
 msgstr "The given address is empty"
 
-#: gio/gdbusaddress.c:1101
+#: gio/gdbusaddress.c:1099
 #, c-format
-msgid "Cannot spawn a message bus when setuid"
-msgstr "Cannot spawn a message bus when setuid"
+msgid "Cannot spawn a message bus when AT_SECURE is set"
+msgstr "לא ניתן לפצל אפיק הודעה כש־AT_SECURE מוגדר"
 
-#: gio/gdbusaddress.c:1108
+#: gio/gdbusaddress.c:1106
 msgid "Cannot spawn a message bus without a machine-id: "
 msgstr "Cannot spawn a message bus without a machine-id: "
 
-#: gio/gdbusaddress.c:1115
+#: gio/gdbusaddress.c:1113
 #, c-format
 msgid "Cannot autolaunch D-Bus without X11 $DISPLAY"
 msgstr "Cannot autolaunch D-Bus without X11 $DISPLAY"
 
-#: gio/gdbusaddress.c:1157
+#: gio/gdbusaddress.c:1155
 #, c-format
 msgid "Error spawning command line “%s”: "
 msgstr "Error spawning command line “%s”: "
 
-#: gio/gdbusaddress.c:1226
+#: gio/gdbusaddress.c:1224
 #, c-format
 msgid "Cannot determine session bus address (not implemented for this OS)"
 msgstr "Cannot determine session bus address (not implemented for this OS)"
 
-#: gio/gdbusaddress.c:1397 gio/gdbusconnection.c:7261
+#: gio/gdbusaddress.c:1373 gio/gdbusconnection.c:7334
 #, c-format
 msgid ""
 "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
@@ -519,7 +527,7 @@ msgstr ""
 "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
 "— unknown value “%s”"
 
-#: gio/gdbusaddress.c:1406 gio/gdbusconnection.c:7270
+#: gio/gdbusaddress.c:1382 gio/gdbusconnection.c:7343
 msgid ""
 "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
 "variable is not set"
@@ -527,7 +535,7 @@ msgstr ""
 "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
 "variable is not set"
 
-#: gio/gdbusaddress.c:1416
+#: gio/gdbusaddress.c:1392
 #, c-format
 msgid "Unknown bus type %d"
 msgstr "Unknown bus type %d"
@@ -555,211 +563,210 @@ msgstr "User IDs must be the same for peer and server"
 msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
 msgstr "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
 
-#: gio/gdbusauthmechanismsha1.c:298
+#: gio/gdbusauthmechanismsha1.c:300
 #, c-format
 msgid "Error when getting information for directory “%s”: %s"
 msgstr "Error when getting information for directory “%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:313
+#: gio/gdbusauthmechanismsha1.c:315
 #, c-format
 msgid ""
 "Permissions on directory “%s” are malformed. Expected mode 0700, got 0%o"
 msgstr ""
 "Permissions on directory “%s” are malformed. Expected mode 0700, got 0%o"
 
-#: gio/gdbusauthmechanismsha1.c:346 gio/gdbusauthmechanismsha1.c:357
+#: gio/gdbusauthmechanismsha1.c:348 gio/gdbusauthmechanismsha1.c:359
 #, c-format
 msgid "Error creating directory “%s”: %s"
 msgstr "Error creating directory “%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:359 gio/gfile.c:1062 gio/gfile.c:1300
-#: gio/gfile.c:1438 gio/gfile.c:1676 gio/gfile.c:1731 gio/gfile.c:1789
-#: gio/gfile.c:1873 gio/gfile.c:1930 gio/gfile.c:1994 gio/gfile.c:2049
-#: gio/gfile.c:3754 gio/gfile.c:3809 gio/gfile.c:4102 gio/gfile.c:4572
-#: gio/gfile.c:4983 gio/gfile.c:5068 gio/gfile.c:5158 gio/gfile.c:5255
-#: gio/gfile.c:5342 gio/gfile.c:5443 gio/gfile.c:8153 gio/gfile.c:8243
-#: gio/gfile.c:8327 gio/win32/gwinhttpfile.c:453
+#: gio/gdbusauthmechanismsha1.c:361 gio/gfile.c:1080 gio/gfile.c:1318
+#: gio/gfile.c:1456 gio/gfile.c:1694 gio/gfile.c:1749 gio/gfile.c:1807
+#: gio/gfile.c:1891 gio/gfile.c:1948 gio/gfile.c:2012 gio/gfile.c:2067
+#: gio/gfile.c:3772 gio/gfile.c:3912 gio/gfile.c:4205 gio/gfile.c:4675
+#: gio/gfile.c:5086 gio/gfile.c:5171 gio/gfile.c:5261 gio/gfile.c:5358
+#: gio/gfile.c:5445 gio/gfile.c:5546 gio/gfile.c:8375 gio/gfile.c:8465
+#: gio/gfile.c:8549 gio/win32/gwinhttpfile.c:453
 msgid "Operation not supported"
 msgstr "Operation not supported"
 
-#: gio/gdbusauthmechanismsha1.c:402
+#: gio/gdbusauthmechanismsha1.c:404
 #, c-format
 msgid "Error opening keyring “%s” for reading: "
 msgstr "Error opening keyring “%s” for reading: "
 
-#: gio/gdbusauthmechanismsha1.c:425 gio/gdbusauthmechanismsha1.c:747
+#: gio/gdbusauthmechanismsha1.c:427 gio/gdbusauthmechanismsha1.c:769
 #, c-format
 msgid "Line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr "Line %d of the keyring at “%s” with content “%s” is malformed"
 
-#: gio/gdbusauthmechanismsha1.c:439 gio/gdbusauthmechanismsha1.c:761
+#: gio/gdbusauthmechanismsha1.c:441 gio/gdbusauthmechanismsha1.c:783
 #, c-format
 msgid ""
 "First token of line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr ""
 "First token of line %d of the keyring at “%s” with content “%s” is malformed"
 
-#: gio/gdbusauthmechanismsha1.c:453 gio/gdbusauthmechanismsha1.c:775
+#: gio/gdbusauthmechanismsha1.c:455 gio/gdbusauthmechanismsha1.c:797
 #, c-format
 msgid ""
 "Second token of line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr ""
 "Second token of line %d of the keyring at “%s” with content “%s” is malformed"
 
-#: gio/gdbusauthmechanismsha1.c:477
+#: gio/gdbusauthmechanismsha1.c:479
 #, c-format
 msgid "Didn’t find cookie with id %d in the keyring at “%s”"
 msgstr "Didn’t find cookie with id %d in the keyring at “%s”"
 
-#: gio/gdbusauthmechanismsha1.c:523
+#: gio/gdbusauthmechanismsha1.c:536
 #, c-format
 msgid "Error creating lock file “%s”: %s"
 msgstr "Error creating lock file “%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:587
+#: gio/gdbusauthmechanismsha1.c:609
 #, c-format
 msgid "Error deleting stale lock file “%s”: %s"
 msgstr "Error deleting stale lock file “%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:626
+#: gio/gdbusauthmechanismsha1.c:648
 #, c-format
 msgid "Error closing (unlinked) lock file “%s”: %s"
 msgstr "Error closing (unlinked) lock file “%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:637
+#: gio/gdbusauthmechanismsha1.c:659
 #, c-format
 msgid "Error unlinking lock file “%s”: %s"
 msgstr "Error unlinking lock file “%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:714
+#: gio/gdbusauthmechanismsha1.c:736
 #, c-format
 msgid "Error opening keyring “%s” for writing: "
 msgstr "Error opening keyring “%s” for writing: "
 
-#: gio/gdbusauthmechanismsha1.c:908
+#: gio/gdbusauthmechanismsha1.c:930
 #, c-format
 msgid "(Additionally, releasing the lock for “%s” also failed: %s) "
 msgstr "(Additionally, releasing the lock for “%s” also failed: %s) "
 
-#: gio/gdbusconnection.c:603 gio/gdbusconnection.c:2417
+#: gio/gdbusconnection.c:604 gio/gdbusconnection.c:2418
 msgid "The connection is closed"
 msgstr "The connection is closed"
 
-#: gio/gdbusconnection.c:1902
+#: gio/gdbusconnection.c:1903
 msgid "Timeout was reached"
 msgstr "Timeout was reached"
 
-#: gio/gdbusconnection.c:2540
+#: gio/gdbusconnection.c:2541
 msgid ""
 "Unsupported flags encountered when constructing a client-side connection"
 msgstr ""
 "Unsupported flags encountered when constructing a client-side connection"
 
-#: gio/gdbusconnection.c:4189 gio/gdbusconnection.c:4536
+#: gio/gdbusconnection.c:4269 gio/gdbusconnection.c:4623
 #, c-format
 msgid ""
 "No such interface “org.freedesktop.DBus.Properties” on object at path %s"
 msgstr ""
 "No such interface “org.freedesktop.DBus.Properties” on object at path %s"
 
-#: gio/gdbusconnection.c:4331
+#: gio/gdbusconnection.c:4414
 #, c-format
 msgid "No such property “%s”"
 msgstr "No such property “%s”"
 
-#: gio/gdbusconnection.c:4343
+#: gio/gdbusconnection.c:4426
 #, c-format
 msgid "Property “%s” is not readable"
 msgstr "Property “%s” is not readable"
 
-#: gio/gdbusconnection.c:4354
+#: gio/gdbusconnection.c:4437
 #, c-format
 msgid "Property “%s” is not writable"
 msgstr "Property “%s” is not writable"
 
-#: gio/gdbusconnection.c:4374
+#: gio/gdbusconnection.c:4457
 #, c-format
 msgid "Error setting property “%s”: Expected type “%s” but got “%s”"
 msgstr "Error setting property “%s”: Expected type “%s” but got “%s”"
 
-#: gio/gdbusconnection.c:4479 gio/gdbusconnection.c:4687
-#: gio/gdbusconnection.c:6689
+#: gio/gdbusconnection.c:4562 gio/gdbusconnection.c:4777
+#: gio/gdbusconnection.c:6760
 #, c-format
 msgid "No such interface “%s”"
 msgstr "No such interface “%s”"
 
-#: gio/gdbusconnection.c:4905 gio/gdbusconnection.c:7201
+#: gio/gdbusconnection.c:4999 gio/gdbusconnection.c:7274
 #, c-format
 msgid "No such interface “%s” on object at path %s"
 msgstr "No such interface “%s” on object at path %s"
 
-#: gio/gdbusconnection.c:5003
+#: gio/gdbusconnection.c:5100
 #, c-format
 msgid "No such method “%s”"
 msgstr "No such method “%s”"
 
-#: gio/gdbusconnection.c:5034
+#: gio/gdbusconnection.c:5131
 #, c-format
 msgid "Type of message, “%s”, does not match expected type “%s”"
 msgstr "Type of message, “%s”, does not match expected type “%s”"
 
-#: gio/gdbusconnection.c:5237
+#: gio/gdbusconnection.c:5334
 #, c-format
 msgid "An object is already exported for the interface %s at %s"
 msgstr "An object is already exported for the interface %s at %s"
 
-#: gio/gdbusconnection.c:5463
+#: gio/gdbusconnection.c:5561
 #, c-format
 msgid "Unable to retrieve property %s.%s"
 msgstr "Unable to retrieve property %s.%s"
 
-#: gio/gdbusconnection.c:5519
+#: gio/gdbusconnection.c:5617
 #, c-format
 msgid "Unable to set property %s.%s"
 msgstr "Unable to set property %s.%s"
 
-#: gio/gdbusconnection.c:5698
+#: gio/gdbusconnection.c:5796
 #, c-format
 msgid "Method “%s” returned type “%s”, but expected “%s”"
 msgstr "Method “%s” returned type “%s”, but expected “%s”"
 
-#: gio/gdbusconnection.c:6800
+#: gio/gdbusconnection.c:6872
 #, c-format
 msgid "Method “%s” on interface “%s” with signature “%s” does not exist"
 msgstr "Method “%s” on interface “%s” with signature “%s” does not exist"
 
-#: gio/gdbusconnection.c:6921
+#: gio/gdbusconnection.c:6993
 #, c-format
 msgid "A subtree is already exported for %s"
 msgstr "A subtree is already exported for %s"
 
-#: gio/gdbusconnection.c:7209
+#: gio/gdbusconnection.c:7282
 #, c-format
-#| msgid "Key file does not have group “%s”"
 msgid "Object does not exist at path “%s”"
 msgstr "Object does not exist at path “%s”"
 
-#: gio/gdbusmessage.c:1266
+#: gio/gdbusmessage.c:1301
 msgid "type is INVALID"
 msgstr "type is INVALID"
 
-#: gio/gdbusmessage.c:1277
+#: gio/gdbusmessage.c:1312
 msgid "METHOD_CALL message: PATH or MEMBER header field is missing"
 msgstr "METHOD_CALL message: PATH or MEMBER header field is missing"
 
-#: gio/gdbusmessage.c:1288
+#: gio/gdbusmessage.c:1323
 msgid "METHOD_RETURN message: REPLY_SERIAL header field is missing"
 msgstr "METHOD_RETURN message: REPLY_SERIAL header field is missing"
 
-#: gio/gdbusmessage.c:1300
+#: gio/gdbusmessage.c:1335
 msgid "ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing"
 msgstr "ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing"
 
-#: gio/gdbusmessage.c:1313
+#: gio/gdbusmessage.c:1348
 msgid "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing"
 msgstr "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing"
 
-#: gio/gdbusmessage.c:1321
+#: gio/gdbusmessage.c:1356
 msgid ""
 "SIGNAL message: The PATH header field is using the reserved value /org/"
 "freedesktop/DBus/Local"
@@ -767,7 +774,7 @@ msgstr ""
 "SIGNAL message: The PATH header field is using the reserved value /org/"
 "freedesktop/DBus/Local"
 
-#: gio/gdbusmessage.c:1329
+#: gio/gdbusmessage.c:1364
 msgid ""
 "SIGNAL message: The INTERFACE header field is using the reserved value org."
 "freedesktop.DBus.Local"
@@ -775,7 +782,7 @@ msgstr ""
 "SIGNAL message: The INTERFACE header field is using the reserved value org."
 "freedesktop.DBus.Local"
 
-#: gio/gdbusmessage.c:1377 gio/gdbusmessage.c:1437
+#: gio/gdbusmessage.c:1412 gio/gdbusmessage.c:1472
 #, c-format
 msgid "Wanted to read %lu byte but only got %lu"
 msgid_plural "Wanted to read %lu bytes but only got %lu"
@@ -784,12 +791,12 @@ msgstr[1] "‫Wanted to read %lu bytes but only got %lu"
 msgstr[2] "‫Wanted to read %lu bytes but only got %lu"
 msgstr[3] "‫Wanted to read %lu bytes but only got %lu"
 
-#: gio/gdbusmessage.c:1391
+#: gio/gdbusmessage.c:1426
 #, c-format
 msgid "Expected NUL byte after the string “%s” but found byte %d"
 msgstr "Expected NUL byte after the string “%s” but found byte %d"
 
-#: gio/gdbusmessage.c:1410
+#: gio/gdbusmessage.c:1445
 #, c-format
 msgid ""
 "Expected valid UTF-8 string but found invalid bytes at byte offset %d "
@@ -798,21 +805,21 @@ msgstr ""
 "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”"
 
-#: gio/gdbusmessage.c:1474 gio/gdbusmessage.c:1722 gio/gdbusmessage.c:1911
+#: gio/gdbusmessage.c:1509 gio/gdbusmessage.c:1785 gio/gdbusmessage.c:1996
 msgid "Value nested too deeply"
 msgstr "Value nested too deeply"
 
-#: gio/gdbusmessage.c:1620
+#: gio/gdbusmessage.c:1677
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus object path"
 msgstr "Parsed value “%s” is not a valid D-Bus object path"
 
-#: gio/gdbusmessage.c:1642
+#: gio/gdbusmessage.c:1701
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature"
 msgstr "Parsed value “%s” is not a valid D-Bus signature"
 
-#: gio/gdbusmessage.c:1689
+#: gio/gdbusmessage.c:1752
 #, c-format
 msgid ""
 "Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB)."
@@ -827,7 +834,7 @@ msgstr[2] ""
 msgstr[3] ""
 "Encountered array of length %u bytes. Maximum length is 2<<26 bytes (64 MiB)."
 
-#: gio/gdbusmessage.c:1709
+#: gio/gdbusmessage.c:1772
 #, c-format
 msgid ""
 "Encountered array of type “a%c”, expected to have a length a multiple of %u "
@@ -836,19 +843,23 @@ msgstr ""
 "Encountered array of type “a%c”, expected to have a length a multiple of %u "
 "bytes, but found to be %u bytes in length"
 
-#: gio/gdbusmessage.c:1895
+#: gio/gdbusmessage.c:1926 gio/gdbusmessage.c:2645
+msgid "Empty structures (tuples) are not allowed in D-Bus"
+msgstr "Empty structures (tuples) are not allowed in D-Bus"
+
+#: gio/gdbusmessage.c:1980
 #, c-format
 msgid "Parsed value “%s” for variant is not a valid D-Bus signature"
 msgstr "Parsed value “%s” for variant is not a valid D-Bus signature"
 
-#: gio/gdbusmessage.c:1936
+#: gio/gdbusmessage.c:2021
 #, c-format
 msgid ""
 "Error deserializing GVariant with type string “%s” from the D-Bus wire format"
 msgstr ""
 "Error deserializing GVariant with type string “%s” from the D-Bus wire format"
 
-#: gio/gdbusmessage.c:2121
+#: gio/gdbusmessage.c:2206
 #, c-format
 msgid ""
 "Invalid endianness value. Expected 0x6c (“l”) or 0x42 (“B”) but found value "
@@ -857,26 +868,26 @@ msgstr ""
 "Invalid endianness value. Expected 0x6c (“l”) or 0x42 (“B”) but found value "
 "0x%02x"
 
-#: gio/gdbusmessage.c:2134
+#: gio/gdbusmessage.c:2225
 #, c-format
 msgid "Invalid major protocol version. Expected 1 but found %d"
 msgstr "Invalid major protocol version. Expected 1 but found %d"
 
-#: gio/gdbusmessage.c:2188 gio/gdbusmessage.c:2784
+#: gio/gdbusmessage.c:2283 gio/gdbusmessage.c:2881
 msgid "Signature header found but is not of type signature"
 msgstr "Signature header found but is not of type signature"
 
-#: gio/gdbusmessage.c:2200
+#: gio/gdbusmessage.c:2295
 #, c-format
 msgid "Signature header with signature “%s” found but message body is empty"
 msgstr "Signature header with signature “%s” found but message body is empty"
 
-#: gio/gdbusmessage.c:2215
+#: gio/gdbusmessage.c:2310
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature (for body)"
 msgstr "Parsed value “%s” is not a valid D-Bus signature (for body)"
 
-#: gio/gdbusmessage.c:2247
+#: gio/gdbusmessage.c:2342
 #, 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"
@@ -885,34 +896,34 @@ msgstr[1] "‫No signature header in message but the message body is %u bytes"
 msgstr[2] "‫No signature header in message but the message body is %u byte"
 msgstr[3] "‫No signature header in message but the message body is %u byte"
 
-#: gio/gdbusmessage.c:2257
+#: gio/gdbusmessage.c:2352
 msgid "Cannot deserialize message: "
 msgstr "Cannot deserialize message: "
 
-#: gio/gdbusmessage.c:2601
+#: gio/gdbusmessage.c:2698
 #, c-format
 msgid ""
 "Error serializing GVariant with type string “%s” to the D-Bus wire format"
 msgstr ""
 "Error serializing GVariant with type string “%s” to the D-Bus wire format"
 
-#: gio/gdbusmessage.c:2738
+#: gio/gdbusmessage.c:2835
 #, c-format
 msgid ""
 "Number of file descriptors in message (%d) differs from header field (%d)"
 msgstr ""
 "Number of file descriptors in message (%d) differs from header field (%d)"
 
-#: gio/gdbusmessage.c:2746
+#: gio/gdbusmessage.c:2843
 msgid "Cannot serialize message: "
 msgstr "Cannot serialize message: "
 
-#: gio/gdbusmessage.c:2799
+#: gio/gdbusmessage.c:2896
 #, c-format
 msgid "Message body has signature “%s” but there is no signature header"
 msgstr "Message body has signature “%s” but there is no signature header"
 
-#: gio/gdbusmessage.c:2809
+#: gio/gdbusmessage.c:2906
 #, c-format
 msgid ""
 "Message body has type signature “%s” but signature in the header field is "
@@ -921,52 +932,52 @@ msgstr ""
 "Message body has type signature “%s” but signature in the header field is "
 "“%s”"
 
-#: gio/gdbusmessage.c:2825
+#: gio/gdbusmessage.c:2922
 #, c-format
 msgid "Message body is empty but signature in the header field is “(%s)”"
 msgstr "Message body is empty but signature in the header field is “(%s)”"
 
-#: gio/gdbusmessage.c:3380
+#: gio/gdbusmessage.c:3477
 #, c-format
 msgid "Error return with body of type “%s”"
 msgstr "Error return with body of type “%s”"
 
-#: gio/gdbusmessage.c:3388
+#: gio/gdbusmessage.c:3485
 msgid "Error return with empty body"
 msgstr "Error return with empty body"
 
-#: gio/gdbusprivate.c:2246
+#: gio/gdbusprivate.c:2185
 #, c-format
 msgid "(Type any character to close this window)\n"
 msgstr "(Type any character to close this window)\n"
 
-#: gio/gdbusprivate.c:2420
+#: gio/gdbusprivate.c:2371
 #, c-format
 msgid "Session dbus not running, and autolaunch failed"
 msgstr "Session dbus not running, and autolaunch failed"
 
-#: gio/gdbusprivate.c:2443
+#: gio/gdbusprivate.c:2394
 #, c-format
 msgid "Unable to get Hardware profile: %s"
 msgstr "Unable to get Hardware profile: %s"
 
 #. Translators: Both placeholders are file paths
-#: gio/gdbusprivate.c:2494
+#: gio/gdbusprivate.c:2445
 #, c-format
 msgid "Unable to load %s or %s: "
 msgstr "Unable to load %s or %s: "
 
-#: gio/gdbusproxy.c:1569
+#: gio/gdbusproxy.c:1573
 #, c-format
 msgid "Error calling StartServiceByName for %s: "
 msgstr "Error calling StartServiceByName for %s: "
 
-#: gio/gdbusproxy.c:1592
+#: gio/gdbusproxy.c:1596
 #, c-format
 msgid "Unexpected reply %d from StartServiceByName(\"%s\") method"
 msgstr "Unexpected reply %d from StartServiceByName(\"%s\") method"
 
-#: gio/gdbusproxy.c:2699 gio/gdbusproxy.c:2834
+#: gio/gdbusproxy.c:2707 gio/gdbusproxy.c:2842
 #, c-format
 msgid ""
 "Cannot invoke method; proxy is for the well-known name %s without an owner, "
@@ -1021,67 +1032,67 @@ msgstr ""
 "\n"
 "Use “%s COMMAND --help” to get help on each command.\n"
 
-#: gio/gdbus-tool.c:201 gio/gdbus-tool.c:273 gio/gdbus-tool.c:345
-#: gio/gdbus-tool.c:369 gio/gdbus-tool.c:859 gio/gdbus-tool.c:1236
-#: gio/gdbus-tool.c:1724
+#: gio/gdbus-tool.c:202 gio/gdbus-tool.c:274 gio/gdbus-tool.c:346
+#: gio/gdbus-tool.c:370 gio/gdbus-tool.c:860 gio/gdbus-tool.c:1245
+#: gio/gdbus-tool.c:1733
 #, c-format
 msgid "Error: %s\n"
 msgstr "Error: %s\n"
 
-#: gio/gdbus-tool.c:212 gio/gdbus-tool.c:286 gio/gdbus-tool.c:1740
+#: gio/gdbus-tool.c:213 gio/gdbus-tool.c:287 gio/gdbus-tool.c:1749
 #, c-format
 msgid "Error parsing introspection XML: %s\n"
 msgstr "Error parsing introspection XML: %s\n"
 
-#: gio/gdbus-tool.c:250
+#: gio/gdbus-tool.c:251
 #, c-format
 msgid "Error: %s is not a valid name\n"
 msgstr "Error: %s is not a valid name\n"
 
-#: gio/gdbus-tool.c:255 gio/gdbus-tool.c:745 gio/gdbus-tool.c:1060
-#: gio/gdbus-tool.c:1890 gio/gdbus-tool.c:2130
+#: gio/gdbus-tool.c:256 gio/gdbus-tool.c:746 gio/gdbus-tool.c:1064
+#: gio/gdbus-tool.c:1899 gio/gdbus-tool.c:2139
 #, c-format
 msgid "Error: %s is not a valid object path\n"
 msgstr "Error: %s is not a valid object path\n"
 
-#: gio/gdbus-tool.c:403
+#: gio/gdbus-tool.c:404
 msgid "Connect to the system bus"
 msgstr "Connect to the system bus"
 
-#: gio/gdbus-tool.c:404
+#: gio/gdbus-tool.c:405
 msgid "Connect to the session bus"
 msgstr "Connect to the session bus"
 
-#: gio/gdbus-tool.c:405
+#: gio/gdbus-tool.c:406
 msgid "Connect to given D-Bus address"
 msgstr "Connect to given D-Bus address"
 
-#: gio/gdbus-tool.c:415
+#: gio/gdbus-tool.c:416
 msgid "Connection Endpoint Options:"
 msgstr "Connection Endpoint Options:"
 
-#: gio/gdbus-tool.c:416
+#: gio/gdbus-tool.c:417
 msgid "Options specifying the connection endpoint"
 msgstr "Options specifying the connection endpoint"
 
-#: gio/gdbus-tool.c:439
+#: gio/gdbus-tool.c:440
 #, c-format
 msgid "No connection endpoint specified"
 msgstr "No connection endpoint specified"
 
-#: gio/gdbus-tool.c:449
+#: gio/gdbus-tool.c:450
 #, c-format
 msgid "Multiple connection endpoints specified"
 msgstr "Multiple connection endpoints specified"
 
-#: gio/gdbus-tool.c:522
+#: gio/gdbus-tool.c:523
 #, c-format
 msgid ""
 "Warning: According to introspection data, interface “%s” does not exist\n"
 msgstr ""
 "Warning: According to introspection data, interface “%s” does not exist\n"
 
-#: gio/gdbus-tool.c:531
+#: gio/gdbus-tool.c:532
 #, c-format
 msgid ""
 "Warning: According to introspection data, method “%s” does not exist on "
@@ -1090,160 +1101,164 @@ msgstr ""
 "Warning: According to introspection data, method “%s” does not exist on "
 "interface “%s”\n"
 
-#: gio/gdbus-tool.c:593
+#: gio/gdbus-tool.c:594
 msgid "Optional destination for signal (unique name)"
 msgstr "Optional destination for signal (unique name)"
 
-#: gio/gdbus-tool.c:594
+#: gio/gdbus-tool.c:595
 msgid "Object path to emit signal on"
 msgstr "Object path to emit signal on"
 
-#: gio/gdbus-tool.c:595
+#: gio/gdbus-tool.c:596
 msgid "Signal and interface name"
 msgstr "Signal and interface name"
 
-#: gio/gdbus-tool.c:628
+#: gio/gdbus-tool.c:629
 msgid "Emit a signal."
 msgstr "Emit a signal."
 
-#: gio/gdbus-tool.c:683 gio/gdbus-tool.c:997 gio/gdbus-tool.c:1827
-#: gio/gdbus-tool.c:2059 gio/gdbus-tool.c:2279
+#: gio/gdbus-tool.c:684 gio/gdbus-tool.c:1001 gio/gdbus-tool.c:1836
+#: gio/gdbus-tool.c:2068 gio/gdbus-tool.c:2288
 #, c-format
 msgid "Error connecting: %s\n"
 msgstr "Error connecting: %s\n"
 
-#: gio/gdbus-tool.c:703
+#: gio/gdbus-tool.c:704
 #, c-format
 msgid "Error: %s is not a valid unique bus name.\n"
 msgstr "Error: %s is not a valid unique bus name.\n"
 
-#: gio/gdbus-tool.c:722 gio/gdbus-tool.c:1040 gio/gdbus-tool.c:1870
+#: gio/gdbus-tool.c:723 gio/gdbus-tool.c:1044 gio/gdbus-tool.c:1879
 msgid "Error: Object path is not specified\n"
 msgstr "Error: Object path is not specified\n"
 
-#: gio/gdbus-tool.c:765
+#: gio/gdbus-tool.c:766
 msgid "Error: Signal name is not specified\n"
 msgstr "Error: Signal name is not specified\n"
 
-#: gio/gdbus-tool.c:779
+#: gio/gdbus-tool.c:780
 #, c-format
 msgid "Error: Signal name “%s” is invalid\n"
 msgstr "Error: Signal name “%s” is invalid\n"
 
-#: gio/gdbus-tool.c:791
+#: gio/gdbus-tool.c:792
 #, c-format
 msgid "Error: %s is not a valid interface name\n"
 msgstr "Error: %s is not a valid interface name\n"
 
-#: gio/gdbus-tool.c:797
+#: gio/gdbus-tool.c:798
 #, c-format
 msgid "Error: %s is not a valid member name\n"
 msgstr "Error: %s is not a valid member name\n"
 
 #. Use the original non-"parse-me-harder" error
-#: gio/gdbus-tool.c:834 gio/gdbus-tool.c:1172
+#: gio/gdbus-tool.c:835 gio/gdbus-tool.c:1176
 #, c-format
 msgid "Error parsing parameter %d: %s\n"
 msgstr "Error parsing parameter %d: %s\n"
 
-#: gio/gdbus-tool.c:866
+#: gio/gdbus-tool.c:867
 #, c-format
 msgid "Error flushing connection: %s\n"
 msgstr "Error flushing connection: %s\n"
 
-#: gio/gdbus-tool.c:893
+#: gio/gdbus-tool.c:895
 msgid "Destination name to invoke method on"
 msgstr "Destination name to invoke method on"
 
-#: gio/gdbus-tool.c:894
+#: gio/gdbus-tool.c:896
 msgid "Object path to invoke method on"
 msgstr "Object path to invoke method on"
 
-#: gio/gdbus-tool.c:895
+#: gio/gdbus-tool.c:897
 msgid "Method and interface name"
 msgstr "Method and interface name"
 
-#: gio/gdbus-tool.c:896
+#: gio/gdbus-tool.c:898
 msgid "Timeout in seconds"
 msgstr "Timeout in seconds"
 
-#: gio/gdbus-tool.c:942
+#: gio/gdbus-tool.c:899
+msgid "Allow interactive authorization"
+msgstr "Allow interactive authorization"
+
+#: gio/gdbus-tool.c:946
 msgid "Invoke a method on a remote object."
 msgstr "Invoke a method on a remote object."
 
-#: gio/gdbus-tool.c:1014 gio/gdbus-tool.c:1844 gio/gdbus-tool.c:2084
+#: gio/gdbus-tool.c:1018 gio/gdbus-tool.c:1853 gio/gdbus-tool.c:2093
 msgid "Error: Destination is not specified\n"
 msgstr "Error: Destination is not specified\n"
 
-#: gio/gdbus-tool.c:1025 gio/gdbus-tool.c:1861 gio/gdbus-tool.c:2095
+#: gio/gdbus-tool.c:1029 gio/gdbus-tool.c:1870 gio/gdbus-tool.c:2104
 #, c-format
 msgid "Error: %s is not a valid bus name\n"
 msgstr "Error: %s is not a valid bus name\n"
 
-#: gio/gdbus-tool.c:1075
+#: gio/gdbus-tool.c:1079
 msgid "Error: Method name is not specified\n"
 msgstr "Error: Method name is not specified\n"
 
-#: gio/gdbus-tool.c:1086
+#: gio/gdbus-tool.c:1090
 #, c-format
 msgid "Error: Method name “%s” is invalid\n"
 msgstr "Error: Method name “%s” is invalid\n"
 
-#: gio/gdbus-tool.c:1164
+#: gio/gdbus-tool.c:1168
 #, c-format
 msgid "Error parsing parameter %d of type “%s”: %s\n"
 msgstr "Error parsing parameter %d of type “%s”: %s\n"
 
-#: gio/gdbus-tool.c:1190
+#: gio/gdbus-tool.c:1194
 #, c-format
 msgid "Error adding handle %d: %s\n"
 msgstr "Error adding handle %d: %s\n"
 
-#: gio/gdbus-tool.c:1686
+#: gio/gdbus-tool.c:1695
 msgid "Destination name to introspect"
 msgstr "Destination name to introspect"
 
-#: gio/gdbus-tool.c:1687
+#: gio/gdbus-tool.c:1696
 msgid "Object path to introspect"
 msgstr "Object path to introspect"
 
-#: gio/gdbus-tool.c:1688
+#: gio/gdbus-tool.c:1697
 msgid "Print XML"
 msgstr "Print XML"
 
-#: gio/gdbus-tool.c:1689
+#: gio/gdbus-tool.c:1698
 msgid "Introspect children"
 msgstr "Introspect children"
 
-#: gio/gdbus-tool.c:1690
+#: gio/gdbus-tool.c:1699
 msgid "Only print properties"
 msgstr "Only print properties"
 
-#: gio/gdbus-tool.c:1779
+#: gio/gdbus-tool.c:1788
 msgid "Introspect a remote object."
 msgstr "Introspect a remote object."
 
-#: gio/gdbus-tool.c:1985
+#: gio/gdbus-tool.c:1994
 msgid "Destination name to monitor"
 msgstr "Destination name to monitor"
 
-#: gio/gdbus-tool.c:1986
+#: gio/gdbus-tool.c:1995
 msgid "Object path to monitor"
 msgstr "Object path to monitor"
 
-#: gio/gdbus-tool.c:2011
+#: gio/gdbus-tool.c:2020
 msgid "Monitor a remote object."
 msgstr "Monitor a remote object."
 
-#: gio/gdbus-tool.c:2069
+#: gio/gdbus-tool.c:2078
 msgid "Error: can’t monitor a non-message-bus connection\n"
 msgstr "Error: can’t monitor a non-message-bus connection\n"
 
-#: gio/gdbus-tool.c:2193
+#: gio/gdbus-tool.c:2202
 msgid "Service to activate before waiting for the other one (well-known name)"
 msgstr "Service to activate before waiting for the other one (well-known name)"
 
-#: gio/gdbus-tool.c:2196
+#: gio/gdbus-tool.c:2205
 msgid ""
 "Timeout to wait for before exiting with an error (seconds); 0 for no timeout "
 "(default)"
@@ -1251,63 +1266,68 @@ msgstr ""
 "Timeout to wait for before exiting with an error (seconds); 0 for no timeout "
 "(default)"
 
-#: gio/gdbus-tool.c:2244
+#: gio/gdbus-tool.c:2253
 msgid "[OPTION…] BUS-NAME"
 msgstr "[OPTION…] BUS-NAME"
 
-#: gio/gdbus-tool.c:2245
+#: gio/gdbus-tool.c:2254
 msgid "Wait for a bus name to appear."
 msgstr "Wait for a bus name to appear."
 
-#: gio/gdbus-tool.c:2321
+#: gio/gdbus-tool.c:2330
 msgid "Error: A service to activate for must be specified.\n"
 msgstr "Error: A service to activate for must be specified.\n"
 
-#: gio/gdbus-tool.c:2326
+#: gio/gdbus-tool.c:2335
 msgid "Error: A service to wait for must be specified.\n"
 msgstr "Error: A service to wait for must be specified.\n"
 
-#: gio/gdbus-tool.c:2331
+#: gio/gdbus-tool.c:2340
 msgid "Error: Too many arguments.\n"
 msgstr "Error: Too many arguments.\n"
 
-#: gio/gdbus-tool.c:2339 gio/gdbus-tool.c:2346
+#: gio/gdbus-tool.c:2348 gio/gdbus-tool.c:2355
 #, c-format
 msgid "Error: %s is not a valid well-known bus name.\n"
 msgstr "Error: %s is not a valid well-known bus name.\n"
 
-#: gio/gdesktopappinfo.c:2106 gio/gdesktopappinfo.c:4932
+#: gio/gdebugcontrollerdbus.c:358
+#, c-format
+msgid "Not authorized to change debug settings"
+msgstr "Not authorized to change debug settings"
+
+#: gio/gdesktopappinfo.c:2178 gio/gdesktopappinfo.c:5105
 msgid "Unnamed"
 msgstr "Unnamed"
 
-#: gio/gdesktopappinfo.c:2516
+#: gio/gdesktopappinfo.c:2588
 msgid "Desktop file didn’t specify Exec field"
 msgstr "Desktop file didn’t specify Exec field"
 
-#: gio/gdesktopappinfo.c:2801
+#: gio/gdesktopappinfo.c:2896
 msgid "Unable to find terminal required for application"
 msgstr "Unable to find terminal required for application"
 
-#: gio/gdesktopappinfo.c:3452
+#: gio/gdesktopappinfo.c:3625
 #, c-format
 msgid "Can’t create user application configuration folder %s: %s"
 msgstr "Can’t create user application configuration folder %s: %s"
 
-#: gio/gdesktopappinfo.c:3456
+#: gio/gdesktopappinfo.c:3629
 #, c-format
 msgid "Can’t create user MIME configuration folder %s: %s"
 msgstr "Can’t create user MIME configuration folder %s: %s"
 
-#: gio/gdesktopappinfo.c:3698 gio/gdesktopappinfo.c:3722
+#: gio/gdesktopappinfo.c:3871 gio/gdesktopappinfo.c:3895
 msgid "Application information lacks an identifier"
 msgstr "Application information lacks an identifier"
 
-#: gio/gdesktopappinfo.c:3958
+#: gio/gdesktopappinfo.c:4131
 #, c-format
 msgid "Can’t create user desktop file %s"
 msgstr "Can’t create user desktop file %s"
 
-#: gio/gdesktopappinfo.c:4094
+#: gio/gdesktopappinfo.c:4267
 #, c-format
 msgid "Custom definition for %s"
 msgstr "Custom definition for %s"
@@ -1335,7 +1355,7 @@ msgstr "drive doesn’t implement start"
 msgid "drive doesn’t implement stop"
 msgstr "drive doesn’t implement stop"
 
-#: gio/gdtlsconnection.c:1153 gio/gtlsconnection.c:920
+#: gio/gdtlsconnection.c:1186 gio/gtlsconnection.c:955
 msgid "TLS backend does not implement TLS binding retrieval"
 msgstr "TLS backend does not implement TLS binding retrieval"
 
@@ -1376,73 +1396,73 @@ msgstr "Expected a GEmblem for GEmblemedIcon"
 #. * trying to find the enclosing (user visible)
 #. * mount of a file, but none exists.
 #.
-#: gio/gfile.c:1561
+#: gio/gfile.c:1579
 msgid "Containing mount does not exist"
 msgstr "Containing mount does not exist"
 
-#: gio/gfile.c:2608 gio/glocalfile.c:2477
+#: gio/gfile.c:2626 gio/glocalfile.c:2486
 msgid "Can’t copy over directory"
 msgstr "Can’t copy over directory"
 
-#: gio/gfile.c:2668
+#: gio/gfile.c:2686
 msgid "Can’t copy directory over directory"
 msgstr "Can’t copy directory over directory"
 
-#: gio/gfile.c:2676
+#: gio/gfile.c:2694
 msgid "Target file exists"
 msgstr "Target file exists"
 
-#: gio/gfile.c:2695
+#: gio/gfile.c:2713
 msgid "Can’t recursively copy directory"
 msgstr "Can’t recursively copy directory"
 
-#: gio/gfile.c:2996
+#: gio/gfile.c:3014
 msgid "Splice not supported"
 msgstr "Symbolic links not supported"
 
-#: gio/gfile.c:3000
+#: gio/gfile.c:3018
 #, c-format
 msgid "Error splicing file: %s"
 msgstr "Error opening file: %s"
 
-#: gio/gfile.c:3152
+#: gio/gfile.c:3170
 msgid "Copy (reflink/clone) between mounts is not supported"
 msgstr "Copy (reflink/clone) between mounts is not supported"
 
-#: gio/gfile.c:3156
+#: gio/gfile.c:3174
 msgid "Copy (reflink/clone) is not supported or invalid"
 msgstr "Copy (reflink/clone) is not supported or invalid"
 
-#: gio/gfile.c:3161
+#: gio/gfile.c:3179
 msgid "Copy (reflink/clone) is not supported or didn’t work"
 msgstr "Copy (reflink/clone) is not supported or didn’t work"
 
-#: gio/gfile.c:3226
+#: gio/gfile.c:3244
 msgid "Can’t copy special file"
 msgstr "Can’t copy special file"
 
-#: gio/gfile.c:4035
+#: gio/gfile.c:4138
 msgid "Invalid symlink value given"
 msgstr "Invalid symlink value given"
 
-#: gio/gfile.c:4045 glib/gfileutils.c:2355
+#: gio/gfile.c:4148 glib/gfileutils.c:2333
 msgid "Symbolic links not supported"
 msgstr "Symbolic links not supported"
 
-#: gio/gfile.c:4213
+#: gio/gfile.c:4316
 msgid "Trash not supported"
 msgstr "Trash not supported"
 
-#: gio/gfile.c:4325
+#: gio/gfile.c:4428
 #, c-format
 msgid "File names cannot contain “%c”"
 msgstr "File names cannot contain “%c”"
 
-#: gio/gfile.c:6806 gio/gvolume.c:364
+#: gio/gfile.c:7028 gio/gvolume.c:364
 msgid "volume doesn’t implement mount"
 msgstr "volume doesn’t implement mount"
 
-#: gio/gfile.c:6920 gio/gfile.c:6968
+#: gio/gfile.c:7142 gio/gfile.c:7190
 msgid "No application is registered as handling this file"
 msgstr "No application is registered as handling this file"
 
@@ -1487,7 +1507,7 @@ msgstr "Truncate not allowed on input stream"
 msgid "Truncate not supported on stream"
 msgstr "Truncate not supported on stream"
 
-#: gio/ghttpproxy.c:91 gio/gresolver.c:443 gio/gresolver.c:596
+#: gio/ghttpproxy.c:91 gio/gresolver.c:458 gio/gresolver.c:611
 #: glib/gconvert.c:1825
 msgid "Invalid hostname"
 msgstr "Invalid hostname"
@@ -1574,7 +1594,7 @@ msgid "Could not parse “%s” as IP address mask"
 msgstr "Could not parse “%s” as IP address mask"
 
 #: gio/ginetsocketaddress.c:203 gio/ginetsocketaddress.c:220
-#: gio/gnativesocketaddress.c:109 gio/gunixsocketaddress.c:221
+#: gio/gnativesocketaddress.c:109 gio/gunixsocketaddress.c:228
 msgid "Not enough space for socket address"
 msgstr "Not enough space for socket address"
 
@@ -2406,15 +2426,15 @@ msgstr "Error compressing file %s"
 msgid "text may not appear inside <%s>"
 msgstr "text may not appear inside <%s>"
 
-#: gio/glib-compile-resources.c:737 gio/glib-compile-schemas.c:2172
+#: gio/glib-compile-resources.c:819 gio/glib-compile-schemas.c:2172
 msgid "Show program version and exit"
 msgstr "Show program version and exit"
 
-#: gio/glib-compile-resources.c:738
+#: gio/glib-compile-resources.c:820
 msgid "Name of the output file"
 msgstr "Name of the output file"
 
-#: gio/glib-compile-resources.c:739
+#: gio/glib-compile-resources.c:821
 msgid ""
 "The directories to load files referenced in FILE from (default: current "
 "directory)"
@@ -2422,46 +2442,46 @@ msgstr ""
 "The directories to load files referenced in FILE from (default: current "
 "directory)"
 
-#: gio/glib-compile-resources.c:739 gio/glib-compile-schemas.c:2173
+#: gio/glib-compile-resources.c:821 gio/glib-compile-schemas.c:2173
 #: gio/glib-compile-schemas.c:2202
 msgid "DIRECTORY"
 msgstr "DIRECTORY"
 
-#: gio/glib-compile-resources.c:740
+#: gio/glib-compile-resources.c:822
 msgid ""
 "Generate output in the format selected for by the target filename extension"
 msgstr ""
 "Generate output in the format selected for by the target filename extension"
 
-#: gio/glib-compile-resources.c:741
+#: gio/glib-compile-resources.c:823
 msgid "Generate source header"
 msgstr "Generate source header"
 
-#: gio/glib-compile-resources.c:742
+#: gio/glib-compile-resources.c:824
 msgid "Generate source code used to link in the resource file into your code"
 msgstr "Generate source code used to link in the resource file into your code"
 
-#: gio/glib-compile-resources.c:743
+#: gio/glib-compile-resources.c:825
 msgid "Generate dependency list"
 msgstr "Generate dependency list"
 
-#: gio/glib-compile-resources.c:744
+#: gio/glib-compile-resources.c:826
 msgid "Name of the dependency file to generate"
 msgstr "Name of the dependency file to generate"
 
-#: gio/glib-compile-resources.c:745
+#: gio/glib-compile-resources.c:827
 msgid "Include phony targets in the generated dependency file"
 msgstr "Include phony targets in the generated dependency file"
 
-#: gio/glib-compile-resources.c:746
+#: gio/glib-compile-resources.c:828
 msgid "Don’t automatically create and register resource"
 msgstr "Don’t automatically create and register resource"
 
-#: gio/glib-compile-resources.c:747
+#: gio/glib-compile-resources.c:829
 msgid "Don’t export functions; declare them G_GNUC_INTERNAL"
 msgstr "Don’t export functions; declare them G_GNUC_INTERNAL"
 
-#: gio/glib-compile-resources.c:748
+#: gio/glib-compile-resources.c:830
 msgid ""
 "Don’t embed resource data in the C file; assume it's linked externally "
 "instead"
@@ -2469,11 +2489,15 @@ msgstr ""
 "Don’t embed resource data in the C file; assume it's linked externally "
 "instead"
 
-#: gio/glib-compile-resources.c:749
+#: gio/glib-compile-resources.c:831
 msgid "C identifier name used for the generated source code"
 msgstr "C identifier name used for the generated source code"
 
-#: gio/glib-compile-resources.c:775
+#: gio/glib-compile-resources.c:832
+msgid "The target C compiler (default: the CC environment variable)"
+msgstr "The target C compiler (default: the CC environment variable)"
+
+#: gio/glib-compile-resources.c:858
 msgid ""
 "Compile a resource specification into a resource file.\n"
 "Resource specification files have the extension .gresource.xml,\n"
@@ -2483,7 +2507,7 @@ msgstr ""
 "Resource specification files have the extension .gresource.xml,\n"
 "and the resource file have the extension called .gresource."
 
-#: gio/glib-compile-resources.c:797
+#: gio/glib-compile-resources.c:880
 msgid "You should give exactly one file name\n"
 msgstr "You should give exactly one file name\n"
 
@@ -2991,8 +3015,8 @@ msgstr "Error renaming file %s: %s"
 msgid "Can’t rename file, filename already exists"
 msgstr "Can’t rename file, filename already exists"
 
-#: gio/glocalfile.c:1184 gio/glocalfile.c:2371 gio/glocalfile.c:2399
-#: gio/glocalfile.c:2538 gio/glocalfileoutputstream.c:656
+#: gio/glocalfile.c:1184 gio/glocalfile.c:2380 gio/glocalfile.c:2408
+#: gio/glocalfile.c:2547 gio/glocalfileoutputstream.c:656
 msgid "Invalid filename"
 msgstr "Invalid filename"
 
@@ -3006,91 +3030,91 @@ msgstr "Error opening file %s: %s"
 msgid "Error removing file %s: %s"
 msgstr "Error removing file %s: %s"
 
-#: gio/glocalfile.c:1982 gio/glocalfile.c:1993
+#: gio/glocalfile.c:1982 gio/glocalfile.c:1993 gio/glocalfile.c:2020
 #, c-format
 msgid "Error trashing file %s: %s"
 msgstr "Error trashing file %s: %s"
 
-#: gio/glocalfile.c:2031
+#: gio/glocalfile.c:2040
 #, c-format
 msgid "Unable to create trash directory %s: %s"
 msgstr "Unable to create trash directory %s: %s"
 
-#: gio/glocalfile.c:2052
+#: gio/glocalfile.c:2061
 #, c-format
 msgid "Unable to find toplevel directory to trash %s"
 msgstr "Unable to find toplevel directory to trash %s"
 
-#: gio/glocalfile.c:2060
+#: gio/glocalfile.c:2069
 #, c-format
 msgid "Trashing on system internal mounts is not supported"
 msgstr "Trashing on system internal mounts is not supported"
 
-#: gio/glocalfile.c:2146 gio/glocalfile.c:2174
+#: gio/glocalfile.c:2155 gio/glocalfile.c:2183
 #, c-format
 msgid "Unable to find or create trash directory %s to trash %s"
 msgstr "Unable to find or create trash directory %s to trash %s"
 
-#: gio/glocalfile.c:2220
+#: gio/glocalfile.c:2229
 #, c-format
 msgid "Unable to create trashing info file for %s: %s"
 msgstr "Unable to create trashing info file for %s: %s"
 
-#: gio/glocalfile.c:2282
+#: gio/glocalfile.c:2291
 #, c-format
 msgid "Unable to trash file %s across filesystem boundaries"
 msgstr "Unable to trash file %s across filesystem boundaries"
 
-#: gio/glocalfile.c:2286 gio/glocalfile.c:2342
+#: gio/glocalfile.c:2295 gio/glocalfile.c:2351
 #, c-format
 msgid "Unable to trash file %s: %s"
 msgstr "Unable to trash file %s: %s"
 
-#: gio/glocalfile.c:2348
+#: gio/glocalfile.c:2357
 #, c-format
 msgid "Unable to trash file %s"
 msgstr "Unable to trash file %s"
 
-#: gio/glocalfile.c:2374
+#: gio/glocalfile.c:2383
 #, c-format
 msgid "Error creating directory %s: %s"
 msgstr "Error creating directory %s: %s"
 
-#: gio/glocalfile.c:2403
+#: gio/glocalfile.c:2412
 #, c-format
 msgid "Filesystem does not support symbolic links"
 msgstr "Filesystem does not support symbolic links"
 
-#: gio/glocalfile.c:2406
+#: gio/glocalfile.c:2415
 #, c-format
 msgid "Error making symbolic link %s: %s"
 msgstr "Error making symbolic link %s: %s"
 
-#: gio/glocalfile.c:2449 gio/glocalfile.c:2484 gio/glocalfile.c:2541
+#: gio/glocalfile.c:2458 gio/glocalfile.c:2493 gio/glocalfile.c:2550
 #, c-format
 msgid "Error moving file %s: %s"
 msgstr "Error moving file %s: %s"
 
-#: gio/glocalfile.c:2472
+#: gio/glocalfile.c:2481
 msgid "Can’t move directory over directory"
 msgstr "Can’t move directory over directory"
 
-#: gio/glocalfile.c:2498 gio/glocalfileoutputstream.c:1108
+#: gio/glocalfile.c:2507 gio/glocalfileoutputstream.c:1108
 #: gio/glocalfileoutputstream.c:1122 gio/glocalfileoutputstream.c:1137
 #: gio/glocalfileoutputstream.c:1154 gio/glocalfileoutputstream.c:1168
 msgid "Backup file creation failed"
 msgstr "Backup file creation failed"
 
-#: gio/glocalfile.c:2517
+#: gio/glocalfile.c:2526
 #, c-format
 msgid "Error removing target file: %s"
 msgstr "Error removing target file: %s"
 
-#: gio/glocalfile.c:2531
+#: gio/glocalfile.c:2540
 msgid "Move between mounts not supported"
 msgstr "Move between mounts not supported"
 
-#: gio/glocalfile.c:2705
+#: gio/glocalfile.c:2714
 #, c-format
 msgid "Could not determine the disk usage of %s: %s"
 msgstr "Could not determine the disk usage of %s: %s"
@@ -3274,7 +3298,7 @@ msgid "Error truncating file: %s"
 msgstr "Error truncating file: %s"
 
 #: gio/glocalfileoutputstream.c:662 gio/glocalfileoutputstream.c:907
-#: gio/glocalfileoutputstream.c:1218 gio/gsubprocess.c:226
+#: gio/glocalfileoutputstream.c:1218 gio/gsubprocess.c:229
 #, c-format
 msgid "Error opening file “%s”: %s"
 msgstr "Error opening file “%s”: %s"
@@ -3296,7 +3320,7 @@ msgstr "The file was externally modified"
 msgid "Error removing old file: %s"
 msgstr "Error removing old file: %s"
 
-#: gio/gmemoryinputstream.c:474 gio/gmemoryoutputstream.c:772
+#: gio/gmemoryinputstream.c:474 gio/gmemoryoutputstream.c:762
 msgid "Invalid GSeekType supplied"
 msgstr "Invalid GSeekType supplied"
 
@@ -3308,15 +3332,15 @@ msgstr "Invalid seek request"
 msgid "Cannot truncate GMemoryInputStream"
 msgstr "Cannot truncate GMemoryInputStream"
 
-#: gio/gmemoryoutputstream.c:567
+#: gio/gmemoryoutputstream.c:568
 msgid "Memory output stream not resizable"
 msgstr "Memory output stream not resizable"
 
-#: gio/gmemoryoutputstream.c:583
+#: gio/gmemoryoutputstream.c:584
 msgid "Failed to resize memory output stream"
 msgstr "Failed to resize memory output stream"
 
-#: gio/gmemoryoutputstream.c:673
+#: gio/gmemoryoutputstream.c:663
 msgid ""
 "Amount of memory required to process the write is larger than available "
 "address space"
@@ -3324,11 +3348,11 @@ msgstr ""
 "Amount of memory required to process the write is larger than available "
 "address space"
 
-#: gio/gmemoryoutputstream.c:782
+#: gio/gmemoryoutputstream.c:772
 msgid "Requested seek before the beginning of the stream"
 msgstr "Requested seek before the beginning of the stream"
 
-#: gio/gmemoryoutputstream.c:797
+#: gio/gmemoryoutputstream.c:787
 msgid "Requested seek beyond the end of the stream"
 msgstr "Requested seek beyond the end of the stream"
 
@@ -3408,12 +3432,12 @@ msgstr "Could not create network monitor: "
 msgid "Could not get network status: "
 msgstr "Could not get network status: "
 
-#: gio/gnetworkmonitornm.c:348
+#: gio/gnetworkmonitornm.c:311
 #, c-format
 msgid "NetworkManager not running"
 msgstr "NetworkManager not running"
 
-#: gio/gnetworkmonitornm.c:359
+#: gio/gnetworkmonitornm.c:322
 #, c-format
 msgid "NetworkManager version too old"
 msgstr "NetworkManager version too old"
@@ -3431,18 +3455,18 @@ msgstr "Sum of vectors passed to %s too large"
 msgid "Source stream is already closed"
 msgstr "Source stream is already closed"
 
-#: gio/gresolver.c:386 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
+#: gio/gresolver.c:401 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
 #, c-format
 msgid "Error resolving “%s”: %s"
 msgstr "Error resolving “%s”: %s"
 
 #. Translators: The placeholder is for a function name.
-#: gio/gresolver.c:455 gio/gresolver.c:615
+#: gio/gresolver.c:470 gio/gresolver.c:630
 #, c-format
 msgid "%s not implemented"
 msgstr "%s not implemented"
 
-#: gio/gresolver.c:984 gio/gresolver.c:1036
+#: gio/gresolver.c:999 gio/gresolver.c:1051
 msgid "Invalid domain"
 msgstr "Invalid domain"
 
@@ -3557,7 +3581,7 @@ msgstr ""
 msgid "  SECTION   An (optional) elf section name\n"
 msgstr "  SECTION   An (optional) elf section name\n"
 
-#: gio/gresource-tool.c:565 gio/gsettings-tool.c:706
+#: gio/gresource-tool.c:565 gio/gsettings-tool.c:718
 msgid "  COMMAND   The (optional) command to explain\n"
 msgstr "  COMMAND   The (optional) command to explain\n"
 
@@ -3589,7 +3613,7 @@ msgstr "PATH"
 msgid "  PATH      A resource path\n"
 msgstr "  PATH      A resource path\n"
 
-#: gio/gsettings-tool.c:49 gio/gsettings-tool.c:70 gio/gsettings-tool.c:911
+#: gio/gsettings-tool.c:49 gio/gsettings-tool.c:70 gio/gsettings-tool.c:923
 #, c-format
 msgid "No such schema “%s”\n"
 msgstr "No such schema “%s”\n"
@@ -3620,35 +3644,35 @@ msgstr "Path must end with a slash (/)\n"
 msgid "Path must not contain two adjacent slashes (//)\n"
 msgstr "Path must not contain two adjacent slashes (//)\n"
 
-#: gio/gsettings-tool.c:541
+#: gio/gsettings-tool.c:553
 msgid "The provided value is outside of the valid range\n"
 msgstr "The provided value is outside of the valid range\n"
 
-#: gio/gsettings-tool.c:548
+#: gio/gsettings-tool.c:560
 msgid "The key is not writable\n"
 msgstr "The key is not writable\n"
 
-#: gio/gsettings-tool.c:584
+#: gio/gsettings-tool.c:596
 msgid "List the installed (non-relocatable) schemas"
 msgstr "List the installed (non-relocatable) schemas"
 
-#: gio/gsettings-tool.c:590
+#: gio/gsettings-tool.c:602
 msgid "List the installed relocatable schemas"
 msgstr "List the installed relocatable schemas"
 
-#: gio/gsettings-tool.c:596
+#: gio/gsettings-tool.c:608
 msgid "List the keys in SCHEMA"
 msgstr "List the keys in SCHEMA"
 
-#: gio/gsettings-tool.c:597 gio/gsettings-tool.c:603 gio/gsettings-tool.c:646
+#: gio/gsettings-tool.c:609 gio/gsettings-tool.c:615 gio/gsettings-tool.c:658
 msgid "SCHEMA[:PATH]"
 msgstr "SCHEMA[:PATH]"
 
-#: gio/gsettings-tool.c:602
+#: gio/gsettings-tool.c:614
 msgid "List the children of SCHEMA"
 msgstr "List the children of SCHEMA"
 
-#: gio/gsettings-tool.c:608
+#: gio/gsettings-tool.c:620
 msgid ""
 "List keys and values, recursively\n"
 "If no SCHEMA is given, list all keys\n"
@@ -3656,48 +3680,48 @@ msgstr ""
 "List keys and values, recursively\n"
 "If no SCHEMA is given, list all keys\n"
 
-#: gio/gsettings-tool.c:610
+#: gio/gsettings-tool.c:622
 msgid "[SCHEMA[:PATH]]"
 msgstr "[SCHEMA[:PATH]]"
 
-#: gio/gsettings-tool.c:615
+#: gio/gsettings-tool.c:627
 msgid "Get the value of KEY"
 msgstr "Get the value of KEY"
 
-#: gio/gsettings-tool.c:616 gio/gsettings-tool.c:622 gio/gsettings-tool.c:628
-#: gio/gsettings-tool.c:640 gio/gsettings-tool.c:652
+#: gio/gsettings-tool.c:628 gio/gsettings-tool.c:634 gio/gsettings-tool.c:640
+#: gio/gsettings-tool.c:652 gio/gsettings-tool.c:664
 msgid "SCHEMA[:PATH] KEY"
 msgstr "SCHEMA[:PATH] KEY"
 
-#: gio/gsettings-tool.c:621
+#: gio/gsettings-tool.c:633
 msgid "Query the range of valid values for KEY"
 msgstr "Query the range of valid values for KEY"
 
-#: gio/gsettings-tool.c:627
+#: gio/gsettings-tool.c:639
 msgid "Query the description for KEY"
 msgstr "Query the description for KEY"
 
-#: gio/gsettings-tool.c:633
+#: gio/gsettings-tool.c:645
 msgid "Set the value of KEY to VALUE"
 msgstr "Set the value of KEY to VALUE"
 
-#: gio/gsettings-tool.c:634
+#: gio/gsettings-tool.c:646
 msgid "SCHEMA[:PATH] KEY VALUE"
 msgstr "SCHEMA[:PATH] KEY VALUE"
 
-#: gio/gsettings-tool.c:639
+#: gio/gsettings-tool.c:651
 msgid "Reset KEY to its default value"
 msgstr "Reset KEY to its default value"
 
-#: gio/gsettings-tool.c:645
+#: gio/gsettings-tool.c:657
 msgid "Reset all keys in SCHEMA to their defaults"
 msgstr "Reset all keys in SCHEMA to their defaults"
 
-#: gio/gsettings-tool.c:651
+#: gio/gsettings-tool.c:663
 msgid "Check if KEY is writable"
 msgstr "Check if KEY is writable"
 
-#: gio/gsettings-tool.c:657
+#: gio/gsettings-tool.c:669
 msgid ""
 "Monitor KEY for changes.\n"
 "If no KEY is specified, monitor all keys in SCHEMA.\n"
@@ -3707,11 +3731,11 @@ msgstr ""
 "If no KEY is specified, monitor all keys in SCHEMA.\n"
 "Use ^C to stop monitoring.\n"
 
-#: gio/gsettings-tool.c:660
+#: gio/gsettings-tool.c:672
 msgid "SCHEMA[:PATH] [KEY]"
 msgstr "SCHEMA[:PATH] [KEY]"
 
-#: gio/gsettings-tool.c:672
+#: gio/gsettings-tool.c:684
 msgid ""
 "Usage:\n"
 "  gsettings --version\n"
@@ -3759,7 +3783,7 @@ msgstr ""
 "Use “gsettings help COMMAND” to get detailed help.\n"
 "\n"
 
-#: gio/gsettings-tool.c:696
+#: gio/gsettings-tool.c:708
 #, c-format
 msgid ""
 "Usage:\n"
@@ -3774,11 +3798,11 @@ msgstr ""
 "%s\n"
 "\n"
 
-#: gio/gsettings-tool.c:702
+#: gio/gsettings-tool.c:714
 msgid "  SCHEMADIR A directory to search for additional schemas\n"
 msgstr "  SCHEMADIR A directory to search for additional schemas\n"
 
-#: gio/gsettings-tool.c:710
+#: gio/gsettings-tool.c:722
 msgid ""
 "  SCHEMA    The name of the schema\n"
 "  PATH      The path, for relocatable schemas\n"
@@ -3786,211 +3810,211 @@ msgstr ""
 "  SCHEMA    The name of the schema\n"
 "  PATH      The path, for relocatable schemas\n"
 
-#: gio/gsettings-tool.c:715
+#: gio/gsettings-tool.c:727
 msgid "  KEY       The (optional) key within the schema\n"
 msgstr "  KEY       The (optional) key within the schema\n"
 
-#: gio/gsettings-tool.c:719
+#: gio/gsettings-tool.c:731
 msgid "  KEY       The key within the schema\n"
 msgstr "  KEY       The key within the schema\n"
 
-#: gio/gsettings-tool.c:723
+#: gio/gsettings-tool.c:735
 msgid "  VALUE     The value to set\n"
 msgstr "  VALUE     The value to set\n"
 
-#: gio/gsettings-tool.c:778
+#: gio/gsettings-tool.c:790
 #, c-format
 msgid "Could not load schemas from %s: %s\n"
 msgstr "Could not load schemas from %s: %s\n"
 
-#: gio/gsettings-tool.c:790
+#: gio/gsettings-tool.c:802
 msgid "No schemas installed\n"
 msgstr "No schemas installed\n"
 
-#: gio/gsettings-tool.c:869
+#: gio/gsettings-tool.c:881
 msgid "Empty schema name given\n"
 msgstr "Empty schema name given\n"
 
-#: gio/gsettings-tool.c:924
+#: gio/gsettings-tool.c:936
 #, c-format
 msgid "No such key “%s”\n"
 msgstr "No such key “%s”\n"
 
-#: gio/gsocket.c:413
+#: gio/gsocket.c:417
 msgid "Invalid socket, not initialized"
 msgstr "Invalid socket, not initialized"
 
-#: gio/gsocket.c:420
+#: gio/gsocket.c:424
 #, c-format
 msgid "Invalid socket, initialization failed due to: %s"
 msgstr "Invalid socket, initialization failed due to: %s"
 
-#: gio/gsocket.c:428
+#: gio/gsocket.c:432
 msgid "Socket is already closed"
 msgstr "Socket is already closed"
 
-#: gio/gsocket.c:443 gio/gsocket.c:3190 gio/gsocket.c:4420 gio/gsocket.c:4478
+#: gio/gsocket.c:447 gio/gsocket.c:3194 gio/gsocket.c:4427 gio/gsocket.c:4485
 msgid "Socket I/O timed out"
 msgstr "Socket I/O timed out"
 
-#: gio/gsocket.c:578
+#: gio/gsocket.c:582
 #, c-format
 msgid "creating GSocket from fd: %s"
 msgstr "creating GSocket from fd: %s"
 
-#: gio/gsocket.c:607 gio/gsocket.c:671 gio/gsocket.c:678
+#: gio/gsocket.c:611 gio/gsocket.c:675 gio/gsocket.c:682
 #, c-format
 msgid "Unable to create socket: %s"
 msgstr "Unable to create socket: %s"
 
-#: gio/gsocket.c:671
+#: gio/gsocket.c:675
 msgid "Unknown family was specified"
 msgstr "Unknown family was specified"
 
-#: gio/gsocket.c:678
+#: gio/gsocket.c:682
 msgid "Unknown protocol was specified"
 msgstr "Unknown protocol was specified"
 
-#: gio/gsocket.c:1169
+#: gio/gsocket.c:1173
 #, c-format
 msgid "Cannot use datagram operations on a non-datagram socket."
 msgstr "Cannot use datagram operations on a non-datagram socket."
 
-#: gio/gsocket.c:1186
+#: gio/gsocket.c:1190
 #, c-format
 msgid "Cannot use datagram operations on a socket with a timeout set."
 msgstr "Cannot use datagram operations on a socket with a timeout set."
 
-#: gio/gsocket.c:1993
+#: gio/gsocket.c:1997
 #, c-format
 msgid "could not get local address: %s"
 msgstr "could not get local address: %s"
 
-#: gio/gsocket.c:2039
+#: gio/gsocket.c:2043
 #, c-format
 msgid "could not get remote address: %s"
 msgstr "could not get remote address: %s"
 
-#: gio/gsocket.c:2105
+#: gio/gsocket.c:2109
 #, c-format
 msgid "could not listen: %s"
 msgstr "could not listen: %s"
 
-#: gio/gsocket.c:2209
+#: gio/gsocket.c:2213
 #, c-format
 msgid "Error binding to address %s: %s"
 msgstr "Error binding to address %s: %s"
 
-#: gio/gsocket.c:2385 gio/gsocket.c:2422 gio/gsocket.c:2532 gio/gsocket.c:2557
-#: gio/gsocket.c:2620 gio/gsocket.c:2678 gio/gsocket.c:2696
+#: gio/gsocket.c:2389 gio/gsocket.c:2426 gio/gsocket.c:2536 gio/gsocket.c:2561
+#: gio/gsocket.c:2624 gio/gsocket.c:2682 gio/gsocket.c:2700
 #, c-format
 msgid "Error joining multicast group: %s"
 msgstr "Error joining multicast group: %s"
 
-#: gio/gsocket.c:2386 gio/gsocket.c:2423 gio/gsocket.c:2533 gio/gsocket.c:2558
-#: gio/gsocket.c:2621 gio/gsocket.c:2679 gio/gsocket.c:2697
+#: gio/gsocket.c:2390 gio/gsocket.c:2427 gio/gsocket.c:2537 gio/gsocket.c:2562
+#: gio/gsocket.c:2625 gio/gsocket.c:2683 gio/gsocket.c:2701
 #, c-format
 msgid "Error leaving multicast group: %s"
 msgstr "Error leaving multicast group: %s"
 
-#: gio/gsocket.c:2387
+#: gio/gsocket.c:2391
 msgid "No support for source-specific multicast"
 msgstr "No support for source-specific multicast"
 
-#: gio/gsocket.c:2534
+#: gio/gsocket.c:2538
 msgid "Unsupported socket family"
 msgstr "Unsupported socket family"
 
-#: gio/gsocket.c:2559
+#: gio/gsocket.c:2563
 msgid "source-specific not an IPv4 address"
 msgstr "source-specific not an IPv4 address"
 
-#: gio/gsocket.c:2583
+#: gio/gsocket.c:2587
 #, c-format
 msgid "Interface name too long"
 msgstr "Interface name too long"
 
-#: gio/gsocket.c:2596 gio/gsocket.c:2646
+#: gio/gsocket.c:2600 gio/gsocket.c:2650
 #, c-format
 msgid "Interface not found: %s"
 msgstr "Interface not found: %s"
 
-#: gio/gsocket.c:2622
+#: gio/gsocket.c:2626
 msgid "No support for IPv4 source-specific multicast"
 msgstr "No support for IPv4 source-specific multicast"
 
-#: gio/gsocket.c:2680
+#: gio/gsocket.c:2684
 msgid "No support for IPv6 source-specific multicast"
 msgstr "No support for IPv6 source-specific multicast"
 
-#: gio/gsocket.c:2889
+#: gio/gsocket.c:2893
 #, c-format
 msgid "Error accepting connection: %s"
 msgstr "Error accepting connection: %s"
 
-#: gio/gsocket.c:3015
+#: gio/gsocket.c:3019
 msgid "Connection in progress"
 msgstr "Connection in progress"
 
-#: gio/gsocket.c:3066
+#: gio/gsocket.c:3070
 msgid "Unable to get pending error: "
 msgstr "Unable to get pending error: "
 
-#: gio/gsocket.c:3255
+#: gio/gsocket.c:3259
 #, c-format
 msgid "Error receiving data: %s"
 msgstr "Error receiving data: %s"
 
-#: gio/gsocket.c:3452
+#: gio/gsocket.c:3456
 #, c-format
 msgid "Error sending data: %s"
 msgstr "Error sending data: %s"
 
-#: gio/gsocket.c:3639
+#: gio/gsocket.c:3643
 #, c-format
 msgid "Unable to shutdown socket: %s"
 msgstr "Unable to shutdown socket: %s"
 
-#: gio/gsocket.c:3720
+#: gio/gsocket.c:3724
 #, c-format
 msgid "Error closing socket: %s"
 msgstr "Error closing socket: %s"
 
-#: gio/gsocket.c:4413
+#: gio/gsocket.c:4420
 #, c-format
 msgid "Waiting for socket condition: %s"
 msgstr "Waiting for socket condition: %s"
 
-#: gio/gsocket.c:4804 gio/gsocket.c:4820 gio/gsocket.c:4833
+#: gio/gsocket.c:4810 gio/gsocket.c:4826 gio/gsocket.c:4839
 #, c-format
 msgid "Unable to send message: %s"
 msgstr "Unable to send message: %s"
 
-#: gio/gsocket.c:4805 gio/gsocket.c:4821 gio/gsocket.c:4834
+#: gio/gsocket.c:4811 gio/gsocket.c:4827 gio/gsocket.c:4840
 msgid "Message vectors too large"
 msgstr "Message vectors too large"
 
-#: gio/gsocket.c:4850 gio/gsocket.c:4852 gio/gsocket.c:4999 gio/gsocket.c:5084
-#: gio/gsocket.c:5262 gio/gsocket.c:5302 gio/gsocket.c:5304
+#: gio/gsocket.c:4856 gio/gsocket.c:4858 gio/gsocket.c:5005 gio/gsocket.c:5090
+#: gio/gsocket.c:5268 gio/gsocket.c:5308 gio/gsocket.c:5310
 #, c-format
 msgid "Error sending message: %s"
 msgstr "Error sending message: %s"
 
-#: gio/gsocket.c:5026
+#: gio/gsocket.c:5032
 msgid "GSocketControlMessage not supported on Windows"
 msgstr "GSocketControlMessage not supported on Windows"
 
-#: gio/gsocket.c:5495 gio/gsocket.c:5571 gio/gsocket.c:5797
+#: gio/gsocket.c:5505 gio/gsocket.c:5581 gio/gsocket.c:5807
 #, c-format
 msgid "Error receiving message: %s"
 msgstr "Error receiving message: %s"
 
-#: gio/gsocket.c:6070 gio/gsocket.c:6081 gio/gsocket.c:6127
+#: gio/gsocket.c:6090 gio/gsocket.c:6101 gio/gsocket.c:6164
 #, c-format
 msgid "Unable to read socket credentials: %s"
 msgstr "Unable to read socket credentials: %s"
 
-#: gio/gsocket.c:6136
+#: gio/gsocket.c:6173
 msgid "g_socket_get_credentials not implemented for this OS"
 msgstr "g_socket_get_credentials not implemented for this OS"
 
@@ -4008,11 +4032,11 @@ msgstr "Could not connect to %s: "
 msgid "Could not connect: "
 msgstr "Could not connect: "
 
-#: gio/gsocketclient.c:1162 gio/gsocketclient.c:1749
+#: gio/gsocketclient.c:1202 gio/gsocketclient.c:1793
 msgid "Proxying over a non-TCP connection is not supported."
 msgstr "Proxying over a non-TCP connection is not supported."
 
-#: gio/gsocketclient.c:1194 gio/gsocketclient.c:1778
+#: gio/gsocketclient.c:1234 gio/gsocketclient.c:1822
 #, c-format
 msgid "Proxy protocol “%s” is not supported."
 msgstr "Proxy protocol “%s” is not supported."
@@ -4112,6 +4136,16 @@ msgstr "SOCKSv5 proxy does not support provided address type."
 msgid "Unknown SOCKSv5 proxy error."
 msgstr "Unknown SOCKSv5 proxy error."
 
+#: gio/gtestdbus.c:612 glib/gspawn-win32.c:314
+#, c-format
+msgid "Failed to create pipe for communicating with child process (%s)"
+msgstr "Failed to create pipe for communicating with child process (%s)"
+
+#: gio/gtestdbus.c:619
+#, c-format
+msgid "Pipes are not supported in this platform"
+msgstr "Pipes are not supported in this platform"
+
 #: gio/gthemedicon.c:595
 #, c-format
 msgid "Can’t handle version %d of GThemedIcon encoding"
@@ -4143,27 +4177,31 @@ msgstr "Temporarily unable to resolve “%s”"
 msgid "Error resolving “%s”"
 msgstr "Error resolving “%s”"
 
-#: gio/gtlscertificate.c:431
+#: gio/gtlscertificate.c:478
 msgid "No PEM-encoded private key found"
 msgstr "No PEM-encoded private key found"
 
-#: gio/gtlscertificate.c:441
+#: gio/gtlscertificate.c:488
 msgid "Cannot decrypt PEM-encoded private key"
 msgstr "Cannot decrypt PEM-encoded private key"
 
-#: gio/gtlscertificate.c:452
+#: gio/gtlscertificate.c:499
 msgid "Could not parse PEM-encoded private key"
 msgstr "Could not parse PEM-encoded private key"
 
-#: gio/gtlscertificate.c:479
+#: gio/gtlscertificate.c:526
 msgid "No PEM-encoded certificate found"
 msgstr "No PEM-encoded certificate found"
 
-#: gio/gtlscertificate.c:488
+#: gio/gtlscertificate.c:535
 msgid "Could not parse PEM-encoded certificate"
 msgstr "Could not parse PEM-encoded certificate"
 
-#: gio/gtlscertificate.c:844
+#: gio/gtlscertificate.c:796
+msgid "The current TLS backend does not support PKCS #12"
+msgstr "The current TLS backend does not support PKCS #12"
+
+#: gio/gtlscertificate.c:1013
 msgid "This GTlsBackend does not support creating PKCS #11 certificates"
 msgstr "This GTlsBackend does not support creating PKCS #11 certificates"
 
@@ -4189,7 +4227,12 @@ msgstr ""
 msgid "The password entered is incorrect."
 msgstr "The password entered is incorrect."
 
-#: gio/gunixconnection.c:166 gio/gunixconnection.c:579
+#: gio/gunixconnection.c:125
+#| msgid "Setting attribute %s not supported"
+msgid "Sending FD is not supported"
+msgstr "Sending FD is not supported"
+
+#: gio/gunixconnection.c:178 gio/gunixconnection.c:596
 #, c-format
 msgid "Expecting 1 control message, got %d"
 msgid_plural "Expecting 1 control message, got %d"
@@ -4198,11 +4241,11 @@ msgstr[1] "‫Expecting 1 control message, got %d"
 msgstr[2] "‫Expecting 1 control message, got %d"
 msgstr[3] "‫Expecting 1 control message, got %d"
 
-#: gio/gunixconnection.c:182 gio/gunixconnection.c:591
+#: gio/gunixconnection.c:194 gio/gunixconnection.c:608
 msgid "Unexpected type of ancillary data"
 msgstr "Unexpected type of ancillary data"
 
-#: gio/gunixconnection.c:200
+#: gio/gunixconnection.c:212
 #, c-format
 msgid "Expecting one fd, but got %d\n"
 msgid_plural "Expecting one fd, but got %d\n"
@@ -4219,36 +4262,41 @@ msgstr[3] ""
 "‫Expecting one fd, but got %d\n"
 "‬\n"
 
-#: gio/gunixconnection.c:219
+#: gio/gunixconnection.c:231
 msgid "Received invalid fd"
 msgstr "Received invalid fd"
 
-#: gio/gunixconnection.c:363
+#: gio/gunixconnection.c:238
+#| msgid "Setting attribute %s not supported"
+msgid "Receiving FD is not supported"
+msgstr "Receiving FD is not supported"
+
+#: gio/gunixconnection.c:380
 msgid "Error sending credentials: "
 msgstr "Error sending credentials: "
 
-#: gio/gunixconnection.c:520
+#: gio/gunixconnection.c:537
 #, c-format
 msgid "Error checking if SO_PASSCRED is enabled for socket: %s"
 msgstr "Error checking if SO_PASSCRED is enabled for socket: %s"
 
-#: gio/gunixconnection.c:536
+#: gio/gunixconnection.c:553
 #, c-format
 msgid "Error enabling SO_PASSCRED: %s"
 msgstr "Error enabling SO_PASSCRED: %s"
 
-#: gio/gunixconnection.c:565
+#: gio/gunixconnection.c:582
 msgid ""
 "Expecting to read a single byte for receiving credentials but read zero bytes"
 msgstr ""
 "Expecting to read a single byte for receiving credentials but read zero bytes"
 
-#: gio/gunixconnection.c:605
+#: gio/gunixconnection.c:622
 #, c-format
 msgid "Not expecting control message, but got %d"
 msgstr "Not expecting control message, but got %d"
 
-#: gio/gunixconnection.c:630
+#: gio/gunixconnection.c:647
 #, c-format
 msgid "Error while disabling SO_PASSCRED: %s"
 msgstr "Error while disabling SO_PASSCRED: %s"
@@ -4264,7 +4312,7 @@ msgstr "Error reading from file descriptor: %s"
 msgid "Error closing file descriptor: %s"
 msgstr "Error closing file descriptor: %s"
 
-#: gio/gunixmounts.c:2785 gio/gunixmounts.c:2838
+#: gio/gunixmounts.c:2809 gio/gunixmounts.c:2862
 msgid "Filesystem root"
 msgstr "Filesystem root"
 
@@ -4275,7 +4323,7 @@ msgstr "Filesystem root"
 msgid "Error writing to file descriptor: %s"
 msgstr "Error writing to file descriptor: %s"
 
-#: gio/gunixsocketaddress.c:244
+#: gio/gunixsocketaddress.c:251
 msgid "Abstract UNIX domain socket addresses not supported on this system"
 msgstr "Abstract UNIX domain socket addresses not supported on this system"
 
@@ -4425,8 +4473,8 @@ msgstr "Failed to expand exec line “%s” with URI “%s”"
 msgid "Unrepresentable character in conversion input"
 msgstr "Unrepresentable character in conversion input"
 
-#: glib/gconvert.c:495 glib/gutf8.c:871 glib/gutf8.c:1083 glib/gutf8.c:1220
-#: glib/gutf8.c:1324
+#: glib/gconvert.c:495 glib/gutf8.c:886 glib/gutf8.c:1099 glib/gutf8.c:1236
+#: glib/gutf8.c:1340
 msgid "Partial character sequence at end of input"
 msgstr "Partial character sequence at end of input"
 
@@ -4891,7 +4939,7 @@ msgstr "PM"
 msgid "Error opening directory “%s”: %s"
 msgstr "Error opening directory “%s”: %s"
 
-#: glib/gfileutils.c:738 glib/gfileutils.c:830
+#: glib/gfileutils.c:733 glib/gfileutils.c:825
 #, c-format
 msgid "Could not allocate %lu byte to read file “%s”"
 msgid_plural "Could not allocate %lu bytes to read file “%s”"
@@ -4900,72 +4948,72 @@ msgstr[1] "‫Could not allocate %lu bytes to read file “%s”"
 msgstr[2] "‫Could not allocate %lu bytes to read file “%s”"
 msgstr[3] "‫Could not allocate %lu bytes to read file “%s”"
 
-#: glib/gfileutils.c:755
+#: glib/gfileutils.c:750
 #, c-format
 msgid "Error reading file “%s”: %s"
 msgstr "Error reading file “%s”: %s"
 
-#: glib/gfileutils.c:791
+#: glib/gfileutils.c:786
 #, c-format
 msgid "File “%s” is too large"
 msgstr "File “%s” is too large"
 
-#: glib/gfileutils.c:855
+#: glib/gfileutils.c:850
 #, c-format
 msgid "Failed to read from file “%s”: %s"
 msgstr "Failed to read from file “%s”: %s"
 
-#: glib/gfileutils.c:905 glib/gfileutils.c:980 glib/gfileutils.c:1469
+#: glib/gfileutils.c:900 glib/gfileutils.c:975 glib/gfileutils.c:1447
 #, c-format
 msgid "Failed to open file “%s”: %s"
 msgstr "Failed to open file “%s”: %s"
 
-#: glib/gfileutils.c:918
+#: glib/gfileutils.c:913
 #, c-format
 msgid "Failed to get attributes of file “%s”: fstat() failed: %s"
 msgstr "Failed to get attributes of file “%s”: fstat() failed: %s"
 
-#: glib/gfileutils.c:949
+#: glib/gfileutils.c:944
 #, c-format
 msgid "Failed to open file “%s”: fdopen() failed: %s"
 msgstr "Failed to open file “%s”: fdopen() failed: %s"
 
-#: glib/gfileutils.c:1050
+#: glib/gfileutils.c:1045
 #, c-format
 msgid "Failed to rename file “%s” to “%s”: g_rename() failed: %s"
 msgstr "Failed to rename file “%s” to “%s”: g_rename() failed: %s"
 
-#: glib/gfileutils.c:1176
+#: glib/gfileutils.c:1154
 #, c-format
 msgid "Failed to write file “%s”: write() failed: %s"
 msgstr "Failed to write file “%s”: write() failed: %s"
 
-#: glib/gfileutils.c:1197
+#: glib/gfileutils.c:1175
 #, c-format
 msgid "Failed to write file “%s”: fsync() failed: %s"
 msgstr "Failed to write file “%s”: fsync() failed: %s"
 
-#: glib/gfileutils.c:1358 glib/gfileutils.c:1773
+#: glib/gfileutils.c:1336 glib/gfileutils.c:1751
 #, c-format
 msgid "Failed to create file “%s”: %s"
 msgstr "Failed to create file “%s”: %s"
 
-#: glib/gfileutils.c:1403
+#: glib/gfileutils.c:1381
 #, c-format
 msgid "Existing file “%s” could not be removed: g_unlink() failed: %s"
 msgstr "Existing file “%s” could not be removed: g_unlink() failed: %s"
 
-#: glib/gfileutils.c:1738
+#: glib/gfileutils.c:1716
 #, c-format
 msgid "Template “%s” invalid, should not contain a “%s”"
 msgstr "Template “%s” invalid, should not contain a “%s”"
 
-#: glib/gfileutils.c:1751
+#: glib/gfileutils.c:1729
 #, c-format
 msgid "Template “%s” doesn’t contain XXXXXX"
 msgstr "Template “%s” doesn’t contain XXXXXX"
 
-#: glib/gfileutils.c:2311 glib/gfileutils.c:2340
+#: glib/gfileutils.c:2289 glib/gfileutils.c:2318
 #, c-format
 msgid "Failed to read the symbolic link “%s”: %s"
 msgstr "Failed to read the symbolic link “%s”: %s"
@@ -4991,65 +5039,65 @@ msgstr "Channel terminates in a partial character"
 msgid "Can’t do a raw read in g_io_channel_read_to_end"
 msgstr "Can’t do a raw read in g_io_channel_read_to_end"
 
-#: glib/gkeyfile.c:791
+#: glib/gkeyfile.c:794
 msgid "Valid key file could not be found in search dirs"
 msgstr "Valid key file could not be found in search dirs"
 
-#: glib/gkeyfile.c:828
+#: glib/gkeyfile.c:831
 msgid "Not a regular file"
 msgstr "Not a regular file"
 
-#: glib/gkeyfile.c:1283
+#: glib/gkeyfile.c:1289
 #, c-format
 msgid ""
 "Key file contains line “%s” which is not a key-value pair, group, or comment"
 msgstr ""
 "Key file contains line “%s” which is not a key-value pair, group, or comment"
 
-#: glib/gkeyfile.c:1340
+#: glib/gkeyfile.c:1346
 #, c-format
 msgid "Invalid group name: %s"
 msgstr "Invalid group name: %s"
 
-#: glib/gkeyfile.c:1362
+#: glib/gkeyfile.c:1370
 msgid "Key file does not start with a group"
 msgstr "Key file does not start with a group"
 
-#: glib/gkeyfile.c:1388
+#: glib/gkeyfile.c:1394
 #, c-format
-msgid "Invalid key name: %s"
-msgstr "Invalid key name: %s"
+msgid "Invalid key name: %.*s"
+msgstr "שם המפתח שגוי: %.*s"
 
-#: glib/gkeyfile.c:1415
+#: glib/gkeyfile.c:1422
 #, c-format
 msgid "Key file contains unsupported encoding “%s”"
 msgstr "Key file contains unsupported encoding “%s”"
 
-#: glib/gkeyfile.c:1664 glib/gkeyfile.c:1837 glib/gkeyfile.c:3290
-#: glib/gkeyfile.c:3354 glib/gkeyfile.c:3484 glib/gkeyfile.c:3616
-#: glib/gkeyfile.c:3762 glib/gkeyfile.c:3997 glib/gkeyfile.c:4064
+#: glib/gkeyfile.c:1677 glib/gkeyfile.c:1850 glib/gkeyfile.c:3297
+#: glib/gkeyfile.c:3361 glib/gkeyfile.c:3491 glib/gkeyfile.c:3623
+#: glib/gkeyfile.c:3769 glib/gkeyfile.c:4004 glib/gkeyfile.c:4071
 #, c-format
 msgid "Key file does not have group “%s”"
 msgstr "Key file does not have group “%s”"
 
-#: glib/gkeyfile.c:1792
+#: glib/gkeyfile.c:1805
 #, c-format
 msgid "Key file does not have key “%s” in group “%s”"
 msgstr "Key file does not have key “%s” in group “%s”"
 
-#: glib/gkeyfile.c:1954 glib/gkeyfile.c:2070
+#: glib/gkeyfile.c:1967 glib/gkeyfile.c:2083
 #, c-format
 msgid "Key file contains key “%s” with value “%s” which is not UTF-8"
 msgstr "Key file contains key “%s” with value “%s” which is not UTF-8"
 
-#: glib/gkeyfile.c:1974 glib/gkeyfile.c:2090 glib/gkeyfile.c:2532
+#: glib/gkeyfile.c:1987 glib/gkeyfile.c:2103 glib/gkeyfile.c:2542
 #, c-format
 msgid ""
 "Key file contains key “%s” which has a value that cannot be interpreted."
 msgstr ""
 "Key file contains key “%s” which has a value that cannot be interpreted."
 
-#: glib/gkeyfile.c:2750 glib/gkeyfile.c:3119
+#: glib/gkeyfile.c:2757 glib/gkeyfile.c:3126
 #, c-format
 msgid ""
 "Key file contains key “%s” in group “%s” which has a value that cannot be "
@@ -5058,36 +5106,36 @@ msgstr ""
 "Key file contains key “%s” in group “%s” which has a value that cannot be "
 "interpreted."
 
-#: glib/gkeyfile.c:2828 glib/gkeyfile.c:2905
+#: glib/gkeyfile.c:2835 glib/gkeyfile.c:2912
 #, c-format
 msgid "Key “%s” in group “%s” has value “%s” where %s was expected"
 msgstr "Key “%s” in group “%s” has value “%s” where %s was expected"
 
-#: glib/gkeyfile.c:4307
+#: glib/gkeyfile.c:4324
 msgid "Key file contains escape character at end of line"
 msgstr "Key file contains escape character at end of line"
 
-#: glib/gkeyfile.c:4329
+#: glib/gkeyfile.c:4346
 #, c-format
 msgid "Key file contains invalid escape sequence “%s”"
 msgstr "Key file contains invalid escape sequence “%s”"
 
-#: glib/gkeyfile.c:4473
+#: glib/gkeyfile.c:4491
 #, c-format
 msgid "Value “%s” cannot be interpreted as a number."
 msgstr "Value “%s” cannot be interpreted as a number."
 
-#: glib/gkeyfile.c:4487
+#: glib/gkeyfile.c:4505
 #, c-format
 msgid "Integer value “%s” out of range"
 msgstr "Integer value “%s” out of range"
 
-#: glib/gkeyfile.c:4520
+#: glib/gkeyfile.c:4538
 #, c-format
 msgid "Value “%s” cannot be interpreted as a float number."
 msgstr "Value “%s” cannot be interpreted as a float number."
 
-#: glib/gkeyfile.c:4559
+#: glib/gkeyfile.c:4577
 #, c-format
 msgid "Value “%s” cannot be interpreted as a boolean."
 msgstr "Value “%s” cannot be interpreted as a boolean."
@@ -5377,7 +5425,7 @@ msgstr "Error parsing option %s"
 msgid "Missing argument for %s"
 msgstr "Missing·argument·for·%s"
 
-#: glib/goption.c:2185
+#: glib/goption.c:2184
 #, c-format
 msgid "Unknown option %s"
 msgstr "Unknown option %s"
@@ -5776,121 +5824,132 @@ msgstr "Text was empty (or contained only whitespace)"
 msgid "Failed to read data from child process (%s)"
 msgstr "Failed to read data from child process (%s)"
 
-#: glib/gspawn.c:461
+#: glib/gspawn.c:462
 #, c-format
 msgid "Unexpected error in reading data from a child process (%s)"
 msgstr "Unexpected error in reading data from a child process (%s)"
 
-#: glib/gspawn.c:546
+#: glib/gspawn.c:547
 #, c-format
 msgid "Unexpected error in waitpid() (%s)"
 msgstr "Unexpected error in waitpid() (%s)"
 
-#: glib/gspawn.c:1166 glib/gspawn-win32.c:1407
+#: glib/gspawn.c:1175 glib/gspawn-win32.c:1438
 #, c-format
 msgid "Child process exited with code %ld"
 msgstr "Child process exited with code %ld"
 
-#: glib/gspawn.c:1174
+#: glib/gspawn.c:1183
 #, c-format
 msgid "Child process killed by signal %ld"
 msgstr "Child process killed by signal %ld"
 
-#: glib/gspawn.c:1181
+#: glib/gspawn.c:1190
 #, c-format
 msgid "Child process stopped by signal %ld"
 msgstr "Child process stopped by signal %ld"
 
-#: glib/gspawn.c:1188
+#: glib/gspawn.c:1197
 #, c-format
 msgid "Child process exited abnormally"
 msgstr "Child process exited abnormally"
 
-#: glib/gspawn.c:1855 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
+#: glib/gspawn.c:1890 glib/gspawn-win32.c:353 glib/gspawn-win32.c:361
 #, c-format
 msgid "Failed to read from child pipe (%s)"
 msgstr "Failed to read from child pipe (%s)"
 
-#: glib/gspawn.c:2157
+#: glib/gspawn.c:2253
 #, c-format
 msgid "Failed to spawn child process “%s” (%s)"
 msgstr "Failed to spawn child process “%s” (%s)"
 
-#: glib/gspawn.c:2274
+#: glib/gspawn.c:2370
 #, c-format
 msgid "Failed to fork (%s)"
 msgstr "Failed to fork (%s)"
 
-#: glib/gspawn.c:2434 glib/gspawn-win32.c:381
+#: glib/gspawn.c:2530 glib/gspawn-win32.c:384
 #, c-format
 msgid "Failed to change to directory “%s” (%s)"
 msgstr "Failed to change to directory “%s” (%s)"
 
-#: glib/gspawn.c:2444
+#: glib/gspawn.c:2540
 #, c-format
 msgid "Failed to execute child process “%s” (%s)"
 msgstr "Failed to execute child process “%s” (%s)"
 
-#: glib/gspawn.c:2454
+#: glib/gspawn.c:2550
+#, c-format
+msgid "Failed to open file to remap file descriptor (%s)"
+msgstr "Failed to open file to remap file descriptor (%s)"
+
+#: glib/gspawn.c:2558
 #, c-format
-msgid "Failed to redirect output or input of child process (%s)"
-msgstr "Failed to redirect output or input of child process (%s)"
+msgid "Failed to duplicate file descriptor for child process (%s)"
+msgstr "Failed to duplicate file descriptor for child process (%s)"
 
-#: glib/gspawn.c:2463
+#: glib/gspawn.c:2567
 #, c-format
 msgid "Failed to fork child process (%s)"
 msgstr "Failed to fork child process (%s)"
 
-#: glib/gspawn.c:2471
+#: glib/gspawn.c:2575
+#, c-format
+msgid "Failed to close file descriptor for child process (%s)"
+msgstr "Failed to close file descriptor for child process (%s)"
+
+#: glib/gspawn.c:2583
 #, c-format
 msgid "Unknown error executing child process “%s”"
 msgstr "Unknown error executing child process “%s”"
 
-#: glib/gspawn.c:2495
+#: glib/gspawn.c:2607
 #, c-format
 msgid "Failed to read enough data from child pid pipe (%s)"
 msgstr "Failed to read enough data from child pid pipe (%s)"
 
-#: glib/gspawn-win32.c:294
+#: glib/gspawn-win32.c:297
 msgid "Failed to read data from child process"
 msgstr "Failed to read data from child process"
 
-#: glib/gspawn-win32.c:311
-#, c-format
-msgid "Failed to create pipe for communicating with child process (%s)"
-msgstr "Failed to create pipe for communicating with child process (%s)"
-
-#: glib/gspawn-win32.c:387 glib/gspawn-win32.c:392 glib/gspawn-win32.c:511
+#: glib/gspawn-win32.c:390 glib/gspawn-win32.c:395 glib/gspawn-win32.c:521
 #, c-format
 msgid "Failed to execute child process (%s)"
 msgstr "Failed to execute child process (%s)"
 
-#: glib/gspawn-win32.c:461
+#: glib/gspawn-win32.c:400
+#, c-format
+#| msgid "Failed to fork child process (%s)"
+msgid "Failed to dup() in child process (%s)"
+msgstr "Failed to dup() in child process (%s)"
+
+#: glib/gspawn-win32.c:471
 #, c-format
 msgid "Invalid program name: %s"
 msgstr "Invalid program name: %s"
 
-#: glib/gspawn-win32.c:471 glib/gspawn-win32.c:779
+#: glib/gspawn-win32.c:481 glib/gspawn-win32.c:807
 #, c-format
 msgid "Invalid string in argument vector at %d: %s"
 msgstr "Invalid string in argument vector at %d: %s"
 
-#: glib/gspawn-win32.c:482 glib/gspawn-win32.c:794
+#: glib/gspawn-win32.c:492 glib/gspawn-win32.c:823
 #, c-format
 msgid "Invalid string in environment: %s"
 msgstr "Invalid string in environment: %s"
 
-#: glib/gspawn-win32.c:775
+#: glib/gspawn-win32.c:803
 #, c-format
 msgid "Invalid working directory: %s"
 msgstr "Invalid working directory: %s"
 
-#: glib/gspawn-win32.c:837
+#: glib/gspawn-win32.c:868
 #, c-format
 msgid "Failed to execute helper program (%s)"
 msgstr "Failed to execute helper program (%s)"
 
-#: glib/gspawn-win32.c:1064
+#: glib/gspawn-win32.c:1096
 msgid ""
 "Unexpected error in g_io_channel_win32_poll() reading data from a child "
 "process"
@@ -5898,21 +5957,21 @@ msgstr ""
 "Unexpected error in g_io_channel_win32_poll() reading data from a child "
 "process"
 
-#: glib/gstrfuncs.c:3345 glib/gstrfuncs.c:3447
+#: glib/gstrfuncs.c:3351 glib/gstrfuncs.c:3453
 msgid "Empty string is not a number"
 msgstr "Empty string is not a number"
 
-#: glib/gstrfuncs.c:3369
+#: glib/gstrfuncs.c:3375
 #, c-format
 msgid "“%s” is not a signed number"
 msgstr "“%s” is not a signed number"
 
-#: glib/gstrfuncs.c:3379 glib/gstrfuncs.c:3483
+#: glib/gstrfuncs.c:3385 glib/gstrfuncs.c:3489
 #, c-format
 msgid "Number “%s” is out of bounds [%s, %s]"
 msgstr "Number “%s” is out of bounds [%s, %s]"
 
-#: glib/gstrfuncs.c:3473
+#: glib/gstrfuncs.c:3479
 #, c-format
 msgid "“%s” is not an unsigned number"
 msgstr "“%s” is not an unsigned number"
@@ -5965,176 +6024,176 @@ msgstr "URI ‘%s’ is not an absolute URI"
 msgid "URI ‘%s’ has no host component"
 msgstr "URI ‘%s’ has no host component"
 
-#: glib/guri.c:1435
+#: glib/guri.c:1460
 msgid "URI is not absolute, and no base URI was provided"
 msgstr "URI is not absolute, and no base URI was provided"
 
-#: glib/guri.c:2213
+#: glib/guri.c:2238
 msgid "Missing ‘=’ and parameter value"
-msgstr "Missing ‘=’ and parameter value"
+msgstr "חסרים ‚=’ וערך משתנה"
 
-#: glib/gutf8.c:817
+#: glib/gutf8.c:832
 msgid "Failed to allocate memory"
-msgstr "Failed to allocate memory"
+msgstr "הקצאת זיכרון נכשלה"
 
-#: glib/gutf8.c:950
+#: glib/gutf8.c:965
 msgid "Character out of range for UTF-8"
-msgstr "Character out of range for UTF-8"
+msgstr "התו מחוץ לטווח עבור UTF-8"
 
-#: glib/gutf8.c:1051 glib/gutf8.c:1060 glib/gutf8.c:1190 glib/gutf8.c:1199
-#: glib/gutf8.c:1338 glib/gutf8.c:1435
+#: glib/gutf8.c:1067 glib/gutf8.c:1076 glib/gutf8.c:1206 glib/gutf8.c:1215
+#: glib/gutf8.c:1354 glib/gutf8.c:1451
 msgid "Invalid sequence in conversion input"
-msgstr "Invalid sequence in conversion input"
+msgstr "רצף שגוי בקלט ההמרה"
 
-#: glib/gutf8.c:1349 glib/gutf8.c:1446
+#: glib/gutf8.c:1365 glib/gutf8.c:1462
 msgid "Character out of range for UTF-16"
-msgstr "Character out of range for UTF-16"
+msgstr "התו מחוץ לטווח עבור UTF-16"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2727
+#: glib/gutils.c:2849
 #, c-format
 msgid "%.1f kB"
 msgstr "%.1f ק״ב"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2729
+#: glib/gutils.c:2851
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f מ״ב"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2731
+#: glib/gutils.c:2853
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f ג״ב"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2733
+#: glib/gutils.c:2855
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f ט״ב"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2735
+#: glib/gutils.c:2857
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f פ״ב"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2737
+#: glib/gutils.c:2859
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f א״ב"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2741
+#: glib/gutils.c:2863
 #, c-format
 msgid "%.1f KiB"
 msgstr "%.1f קי״ב"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2743
+#: glib/gutils.c:2865
 #, c-format
 msgid "%.1f MiB"
 msgstr "%.1f מבי״ב"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2745
+#: glib/gutils.c:2867
 #, c-format
 msgid "%.1f GiB"
 msgstr "%.1f גיב״ב"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2747
+#: glib/gutils.c:2869
 #, c-format
 msgid "%.1f TiB"
 msgstr "%.1f טבי״ב"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2749
+#: glib/gutils.c:2871
 #, c-format
 msgid "%.1f PiB"
 msgstr "%.1f פבי״ב"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2751
+#: glib/gutils.c:2873
 #, c-format
 msgid "%.1f EiB"
 msgstr "%.1f אק״ב"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2755
+#: glib/gutils.c:2877
 #, c-format
 msgid "%.1f kb"
 msgstr "%.1f ק״ב"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2757
+#: glib/gutils.c:2879
 #, c-format
 msgid "%.1f Mb"
 msgstr "%.1f מ״ב"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2759
+#: glib/gutils.c:2881
 #, c-format
 msgid "%.1f Gb"
 msgstr "%.1f ג״ב"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2761
+#: glib/gutils.c:2883
 #, c-format
 msgid "%.1f Tb"
 msgstr "%.1f ט״ב"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2763
+#: glib/gutils.c:2885
 #, c-format
 msgid "%.1f Pb"
 msgstr "%.1f פ״ב"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2765
+#: glib/gutils.c:2887
 #, c-format
 msgid "%.1f Eb"
 msgstr "%.1f א״ב"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2769
+#: glib/gutils.c:2891
 #, c-format
 msgid "%.1f Kib"
 msgstr "%.1f ק״ב"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2771
+#: glib/gutils.c:2893
 #, c-format
 msgid "%.1f Mib"
 msgstr "%.1f מ״ב"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2773
+#: glib/gutils.c:2895
 #, c-format
 msgid "%.1f Gib"
 msgstr "%.1f ג״ב"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2775
+#: glib/gutils.c:2897
 #, c-format
 msgid "%.1f Tib"
 msgstr "%.1f ט״ב"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2777
+#: glib/gutils.c:2899
 #, c-format
 msgid "%.1f Pib"
 msgstr "%.1f פ״ב"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2779
+#: glib/gutils.c:2901
 #, c-format
 msgid "%.1f Eib"
 msgstr "%.1f א״ב"
 
-#: glib/gutils.c:2813 glib/gutils.c:2930
+#: glib/gutils.c:2935 glib/gutils.c:3052
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
@@ -6143,7 +6202,7 @@ msgstr[1] "שני בתים"
 msgstr[2] "‫%u בתים"
 msgstr[3] "‫%u בתים"
 
-#: glib/gutils.c:2817
+#: glib/gutils.c:2939
 #, c-format
 msgid "%u bit"
 msgid_plural "%u bits"
@@ -6153,7 +6212,7 @@ msgstr[2] "‫%u סיביות"
 msgstr[3] "‫%u סיביות"
 
 #. Translators: the %s in "%s bytes" will always be replaced by a number.
-#: glib/gutils.c:2884
+#: glib/gutils.c:3006
 #, c-format
 msgid "%s byte"
 msgid_plural "%s bytes"
@@ -6163,7 +6222,7 @@ msgstr[2] "‫%s בתים"
 msgstr[3] "‫%s בתים"
 
 #. Translators: the %s in "%s bits" will always be replaced by a number.
-#: glib/gutils.c:2889
+#: glib/gutils.c:3011
 #, c-format
 msgid "%s bit"
 msgid_plural "%s bits"
@@ -6177,32 +6236,32 @@ msgstr[3] "‫%s סיביות"
 #. * compatibility.  Users will not see this string unless a program is using this deprecated function.
 #. * Please translate as literally as possible.
 #.
-#: glib/gutils.c:2943
+#: glib/gutils.c:3065
 #, c-format
 msgid "%.1f KB"
 msgstr "%.1f ק״ב"
 
-#: glib/gutils.c:2948
+#: glib/gutils.c:3070
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f מ״ב"
 
-#: glib/gutils.c:2953
+#: glib/gutils.c:3075
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f ג״ב"
 
-#: glib/gutils.c:2958
+#: glib/gutils.c:3080
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f ט״ב"
 
-#: glib/gutils.c:2963
+#: glib/gutils.c:3085
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f פ״ב"
 
-#: glib/gutils.c:2968
+#: glib/gutils.c:3090
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f א״ב"
index 440193b..42c66ef 100644 (file)
--- a/po/hr.po
+++ b/po/hr.po
@@ -5,8 +5,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: glib 0\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/glib/issues\n"
-"POT-Creation-Date: 2021-10-25 19:38+0000\n"
-"PO-Revision-Date: 2021-10-25 21:46+0200\n"
+"POT-Creation-Date: 2022-04-19 06:05+0000\n"
+"PO-Revision-Date: 2022-04-20 19:44+0200\n"
 "Last-Translator: gogo <trebelnik2@gmail.com>\n"
 "Language-Team: Croatian <lokalizacija@linux.hr>\n"
 "Language: hr\n"
@@ -15,9 +15,18 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
 "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
-"X-Launchpad-Export-Date: 2021-10-25 19:28+0000\n"
+"X-Launchpad-Export-Date: 2021-10-27 14:24+0000\n"
 "X-Generator: Poedit 2.3\n"
 
+#: gio/gappinfo.c:333
+msgid "Setting default applications not supported yet"
+msgstr "Postavljanje zadanih aplikacija još nije podržano"
+
+#: gio/gappinfo.c:366
+msgid "Setting application as last used for type not supported yet"
+msgstr ""
+"Postavljanje aplikacije kao posljednju korištenu za vrstu još nije podržano"
+
 #: gio/gapplication.c:500
 msgid "GApplication options"
 msgstr "Mogućnosti GAplikacije"
@@ -39,7 +48,7 @@ msgid "Replace the running instance"
 msgstr "Zamijeni pokrenuti primjerak"
 
 #: gio/gapplication-tool.c:45 gio/gapplication-tool.c:46 gio/gio-tool.c:227
-#: gio/gresource-tool.c:494 gio/gsettings-tool.c:572
+#: gio/gresource-tool.c:494 gio/gsettings-tool.c:584
 msgid "Print help"
 msgstr "Prikaži pomoć"
 
@@ -51,7 +60,7 @@ msgstr "[NAREDBA]"
 msgid "Print version"
 msgstr "Prikaži inačicu"
 
-#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:578
+#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:590
 msgid "Print version information and exit"
 msgstr "Prikaži informaciju inačice i izađi"
 
@@ -95,7 +104,7 @@ msgstr "Prikaži dostupne radnje"
 
 #: gio/gapplication-tool.c:66
 msgid "List static actions for an application (from .desktop file)"
-msgstr "Prikazuje nepromjenjive radnje za aplikaciju (iz .desktop datoteke)"
+msgstr "Prikaži nepromjenjive radnje za aplikaciju (iz .desktop datoteke)"
 
 #: gio/gapplication-tool.c:67 gio/gapplication-tool.c:73
 msgid "APPID"
@@ -114,8 +123,8 @@ msgstr "Naredba za prikaz opširnije pomoći za"
 msgid "Application identifier in D-Bus format (eg: org.example.viewer)"
 msgstr "Identifikator aplikacije u D-Bus formatu (npr: org.primjer.preglednik)"
 
-#: gio/gapplication-tool.c:74 gio/glib-compile-resources.c:738
-#: gio/glib-compile-resources.c:744 gio/glib-compile-resources.c:772
+#: gio/gapplication-tool.c:74 gio/glib-compile-resources.c:820
+#: gio/glib-compile-resources.c:826 gio/glib-compile-resources.c:855
 #: gio/gresource-tool.c:501 gio/gresource-tool.c:567
 msgid "FILE"
 msgstr "DATOTEKA"
@@ -141,7 +150,7 @@ msgstr "PARAMETAR"
 msgid "Optional parameter to the action invocation, in GVariant format"
 msgstr "Neobavezni parametri za pokretanje radnje u GVariant formatu"
 
-#: gio/gapplication-tool.c:98 gio/gresource-tool.c:532 gio/gsettings-tool.c:664
+#: gio/gapplication-tool.c:98 gio/gresource-tool.c:532 gio/gsettings-tool.c:676
 #, c-format
 msgid ""
 "Unknown command %s\n"
@@ -155,7 +164,7 @@ msgid "Usage:\n"
 msgstr "Upotreba:\n"
 
 #: gio/gapplication-tool.c:116 gio/gresource-tool.c:557
-#: gio/gsettings-tool.c:699
+#: gio/gsettings-tool.c:711
 msgid "Arguments:\n"
 msgstr "Argumenti:\n"
 
@@ -241,7 +250,8 @@ msgstr "list-actions naredba prihvaća samo id aplikacije"
 #: gio/gapplication-tool.c:423
 #, c-format
 msgid "unable to find desktop file for application %s\n"
-msgstr "nemoguće pronalazak datoteke radne površine za aplikaciju %s\n"
+msgstr ""
+"nemoguće pronalazak datoteke radne površine (.desktop) za aplikaciju %s\n"
 
 #: gio/gapplication-tool.c:468
 #, c-format
@@ -278,7 +288,7 @@ msgstr "Strujanje je već zatvoreno"
 msgid "Truncate not supported on base stream"
 msgstr "Skraćivanje nije podržano na osnovnom strujanju"
 
-#: gio/gcancellable.c:319 gio/gdbusconnection.c:1872 gio/gdbusprivate.c:1416
+#: gio/gcancellable.c:319 gio/gdbusconnection.c:1857 gio/gdbusprivate.c:1418
 #: gio/gsimpleasyncresult.c:871 gio/gsimpleasyncresult.c:897
 #, c-format
 msgid "Operation was cancelled"
@@ -299,7 +309,7 @@ msgstr "Nedovoljno prostora u odredištu"
 #: gio/gcharsetconverter.c:342 gio/gdatainputstream.c:848
 #: gio/gdatainputstream.c:1266 glib/gconvert.c:449 glib/gconvert.c:879
 #: glib/giochannel.c:1573 glib/giochannel.c:1615 glib/giochannel.c:2470
-#: glib/gutf8.c:875 glib/gutf8.c:1329
+#: glib/gutf8.c:890 glib/gutf8.c:1344
 msgid "Invalid byte sequence in conversion input"
 msgstr "Neispravan niz bajta na ulazu pretvorbe"
 
@@ -309,7 +319,7 @@ msgstr "Neispravan niz bajta na ulazu pretvorbe"
 msgid "Error during conversion: %s"
 msgstr "Greška tijekom pretvorbe: %s"
 
-#: gio/gcharsetconverter.c:445 gio/gsocket.c:1143
+#: gio/gcharsetconverter.c:445 gio/gsocket.c:1147
 msgid "Cancellable initialization not supported"
 msgstr "Prekidanje pokretanja nije podržano"
 
@@ -323,55 +333,55 @@ msgstr "Pretvaranje iz znakovnog skupa “%s” u “%s” nije podržano"
 msgid "Could not open converter from “%s” to “%s”"
 msgstr "Nemoguće je otvoriti pretvornik iz “%s” u “%s”"
 
-#: gio/gcontenttype.c:454
+#: gio/gcontenttype.c:470
 #, c-format
 msgid "%s type"
 msgstr "%s vrsta"
 
-#: gio/gcontenttype-win32.c:192
+#: gio/gcontenttype-win32.c:196
 msgid "Unknown type"
 msgstr "Nepoznata vrsta"
 
-#: gio/gcontenttype-win32.c:194
+#: gio/gcontenttype-win32.c:198
 #, c-format
 msgid "%s filetype"
 msgstr "%s vrsta datoteke"
 
-#: gio/gcredentials.c:323
+#: gio/gcredentials.c:335
 msgid "GCredentials contains invalid data"
 msgstr "GVjerodajnice sadrže nevaljane podatke"
 
-#: gio/gcredentials.c:383 gio/gcredentials.c:667
+#: gio/gcredentials.c:395 gio/gcredentials.c:686
 msgid "GCredentials is not implemented on this OS"
 msgstr "GVjerodajnice nisu implementirane na ovom OS-u"
 
-#: gio/gcredentials.c:538 gio/gcredentials.c:556
+#: gio/gcredentials.c:550 gio/gcredentials.c:568
 msgid "There is no GCredentials support for your platform"
 msgstr "Nema podrške GVjerodajnica za vašu platformu"
 
-#: gio/gcredentials.c:607
+#: gio/gcredentials.c:626
 msgid "GCredentials does not contain a process ID on this OS"
 msgstr "GVjerodajnice ne sadrže ID procesa na ovom OS-u"
 
-#: gio/gcredentials.c:661
+#: gio/gcredentials.c:680
 msgid "Credentials spoofing is not possible on this OS"
 msgstr "Podvala vjerodajnica nije moguća na ovom OS-u"
 
 #: gio/gdatainputstream.c:304
 msgid "Unexpected early end-of-stream"
-msgstr "Neočekivani prerani kraj strujanja"
+msgstr "Neočekivani prerani završetak strujanja"
 
-#: gio/gdbusaddress.c:159 gio/gdbusaddress.c:233 gio/gdbusaddress.c:322
+#: gio/gdbusaddress.c:162 gio/gdbusaddress.c:236 gio/gdbusaddress.c:325
 #, c-format
 msgid "Unsupported key “%s” in address entry “%s”"
 msgstr "Nepodržani ključ “%s” u unosu adrese “%s”"
 
-#: gio/gdbusaddress.c:172
+#: gio/gdbusaddress.c:175
 #, c-format
 msgid "Meaningless key/value pair combination in address entry “%s”"
 msgstr "Besmislena kombinacija para ključa/vrijednosti u unosu adrese “%s”"
 
-#: gio/gdbusaddress.c:181
+#: gio/gdbusaddress.c:184
 #, c-format
 msgid ""
 "Address “%s” is invalid (need exactly one of path, dir, tmpdir, or abstract "
@@ -380,28 +390,28 @@ msgstr ""
 "Adresa “%s” je nevaljana (potrebna je točno jedna putanja, dir, privremeni "
 "dir ili apstraktni ključ)"
 
-#: gio/gdbusaddress.c:248 gio/gdbusaddress.c:259 gio/gdbusaddress.c:274
-#: gio/gdbusaddress.c:337 gio/gdbusaddress.c:348
+#: gio/gdbusaddress.c:251 gio/gdbusaddress.c:262 gio/gdbusaddress.c:277
+#: gio/gdbusaddress.c:340 gio/gdbusaddress.c:351
 #, c-format
 msgid "Error in address “%s” — the “%s” attribute is malformed"
 msgstr "Greška u adresi “%s” — “%s” svojstvo je oštećeno"
 
-#: gio/gdbusaddress.c:418 gio/gdbusaddress.c:682
+#: gio/gdbusaddress.c:421 gio/gdbusaddress.c:680
 #, c-format
 msgid "Unknown or unsupported transport “%s” for address “%s”"
 msgstr "Nepoznati ili nepodržani prijenos “%s” za adresu “%s”"
 
-#: gio/gdbusaddress.c:462
+#: gio/gdbusaddress.c:465
 #, c-format
 msgid "Address element “%s” does not contain a colon (:)"
 msgstr "Element adrese “%s” ne sadrži dvotočku (:)"
 
-#: gio/gdbusaddress.c:471
+#: gio/gdbusaddress.c:474
 #, c-format
 msgid "Transport name in address element “%s” must not be empty"
 msgstr "Naziv prijenosa u elementu adrese “%s” ne može biti prazan"
 
-#: gio/gdbusaddress.c:492
+#: gio/gdbusaddress.c:495
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” does not contain an equal "
@@ -410,7 +420,7 @@ msgstr ""
 "Par ključa/vrijednosti %d, “%s”, u elementu adrese “%s” ne sadrže znak "
 "jednakosti"
 
-#: gio/gdbusaddress.c:503
+#: gio/gdbusaddress.c:506
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” must not have an empty key"
@@ -418,7 +428,7 @@ msgstr ""
 "Par ključa/vrijednosti %d, “%s”, u elementu adrese “%s” ne mogu sadržavati "
 "prazan ključ"
 
-#: gio/gdbusaddress.c:517
+#: gio/gdbusaddress.c:520
 #, c-format
 msgid ""
 "Error unescaping key or value in Key/Value pair %d, “%s”, in address element "
@@ -427,88 +437,88 @@ msgstr ""
 "Greška neizbjegavanja ključa ili vrijednosti u paru ključa/vrijednosti %d, "
 "“%s”, u elementu adrese “%s”"
 
-#: gio/gdbusaddress.c:589
+#: gio/gdbusaddress.c:588
 #, c-format
 msgid ""
 "Error in address “%s” — the unix transport requires exactly one of the keys "
 "“path” or “abstract” to be set"
 msgstr ""
 "Greška u adresi “%s” — unix prijenos zahtijeva točno postavljeno jedno "
-"ključevo “putanju” ili “apstraktan” svojstvo"
+"ključevo “path” ili “abstract” svojstvo"
 
-#: gio/gdbusaddress.c:625
+#: gio/gdbusaddress.c:623
 #, c-format
 msgid "Error in address “%s” — the host attribute is missing or malformed"
 msgstr "Greška u adresi “%s” — svojstvo poslužitelja nedostaje ili je oštećeno"
 
-#: gio/gdbusaddress.c:639
+#: gio/gdbusaddress.c:637
 #, c-format
 msgid "Error in address “%s” — the port attribute is missing or malformed"
 msgstr "Greška u adresi “%s” — svojstvo ulaza nedostaje ili je oštećeno"
 
-#: gio/gdbusaddress.c:653
+#: gio/gdbusaddress.c:651
 #, c-format
 msgid "Error in address “%s” — the noncefile attribute is missing or malformed"
 msgstr ""
 "Greška u adresi “%s” — svojstvo jednokratne datoteke nedostaje ili je "
 "oštećeno"
 
-#: gio/gdbusaddress.c:674
+#: gio/gdbusaddress.c:672
 msgid "Error auto-launching: "
 msgstr "Greška automatskog pokretanja: "
 
-#: gio/gdbusaddress.c:727
+#: gio/gdbusaddress.c:725
 #, c-format
 msgid "Error opening nonce file “%s”: %s"
 msgstr "Greška otvaranja jednokratne datoteke “%s”: %s"
 
-#: gio/gdbusaddress.c:746
+#: gio/gdbusaddress.c:744
 #, c-format
 msgid "Error reading from nonce file “%s”: %s"
 msgstr "Greška čitanja iz jednokratne datoteke “%s”: %s"
 
-#: gio/gdbusaddress.c:755
+#: gio/gdbusaddress.c:753
 #, c-format
 msgid "Error reading from nonce file “%s”, expected 16 bytes, got %d"
 msgstr ""
 "Greška čitanja iz jednokratne datoteke “%s”, očekivano je 16 bajta, dobiveno "
 "je %d"
 
-#: gio/gdbusaddress.c:773
+#: gio/gdbusaddress.c:771
 #, c-format
 msgid "Error writing contents of nonce file “%s” to stream:"
 msgstr "Greška zapisivanja sadržaja jednokratne datoteke “%s” u strujanje:"
 
-#: gio/gdbusaddress.c:988
+#: gio/gdbusaddress.c:986
 msgid "The given address is empty"
 msgstr "Navedena adresa je prazna"
 
-#: gio/gdbusaddress.c:1101
+#: gio/gdbusaddress.c:1099
 #, c-format
-msgid "Cannot spawn a message bus when setuid"
-msgstr "Nemoguće pokretanje sabirnice poruke pri uid podešavanju"
+msgid "Cannot spawn a message bus when AT_SECURE is set"
+msgstr "Nemoguće pokretanje sabirnice poruke kada je AT_SECURE postavljen"
 
-#: gio/gdbusaddress.c:1108
+#: gio/gdbusaddress.c:1106
 msgid "Cannot spawn a message bus without a machine-id: "
 msgstr "Nemoguće pokretanje sabirnice poruke bez id-računala: "
 
-#: gio/gdbusaddress.c:1115
+#: gio/gdbusaddress.c:1113
 #, c-format
 msgid "Cannot autolaunch D-Bus without X11 $DISPLAY"
 msgstr "Nemoguće automatsko pokretanje bez X11 $DISPLAY"
 
-#: gio/gdbusaddress.c:1157
+#: gio/gdbusaddress.c:1155
 #, c-format
 msgid "Error spawning command line “%s”: "
 msgstr "Greška pokretanja naredbenog redka “%s”: "
 
-#: gio/gdbusaddress.c:1226
+#: gio/gdbusaddress.c:1224
 #, c-format
 msgid "Cannot determine session bus address (not implemented for this OS)"
 msgstr ""
 "Nemoguće otkrivanje adrese sabirnice sesije (nije implementirano za ovaj OS)"
 
-#: gio/gdbusaddress.c:1375 gio/gdbusconnection.c:7261
+#: gio/gdbusaddress.c:1373 gio/gdbusconnection.c:7318
 #, c-format
 msgid ""
 "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
@@ -517,7 +527,7 @@ msgstr ""
 "Nemoguće otkrivanje adrese sabirnice iz DBUS_STARTER_BUS_TYPE varijable "
 "okruženja — nepoznata vrijednost “%s”"
 
-#: gio/gdbusaddress.c:1384 gio/gdbusconnection.c:7270
+#: gio/gdbusaddress.c:1382 gio/gdbusconnection.c:7327
 msgid ""
 "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
 "variable is not set"
@@ -525,7 +535,7 @@ msgstr ""
 "Nemoguće otkrivanje adrese sabirnice zato jer DBUS_STARTER_BUS_TYPE "
 "varijabla okruženja nije postavljena"
 
-#: gio/gdbusaddress.c:1394
+#: gio/gdbusaddress.c:1392
 #, c-format
 msgid "Unknown bus type %d"
 msgstr "Nepoznata vrsta sabirnice %d"
@@ -553,212 +563,213 @@ msgstr "Korisnički ID mora biti isti za točku ili poslužitelj"
 msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
 msgstr "Poništeno putem GDBusAuthObserver::authorize-authenticated-peer"
 
-#: gio/gdbusauthmechanismsha1.c:298
+#: gio/gdbusauthmechanismsha1.c:300
 #, c-format
 msgid "Error when getting information for directory “%s”: %s"
 msgstr "Greška dobivanja informacija za direktorij “%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:313
+#: gio/gdbusauthmechanismsha1.c:315
 #, c-format
 msgid ""
 "Permissions on directory “%s” are malformed. Expected mode 0700, got 0%o"
 msgstr ""
-"Dozvole na direktoriju “%s” su oštećene. Očekivano dozvole 0700, dobivene 0%o"
+"Dozvole na direktoriju “%s” su oštećene. Očekivana dozvola 0700, dobivena je "
+"0%o"
 
-#: gio/gdbusauthmechanismsha1.c:346 gio/gdbusauthmechanismsha1.c:357
+#: gio/gdbusauthmechanismsha1.c:348 gio/gdbusauthmechanismsha1.c:359
 #, c-format
 msgid "Error creating directory “%s”: %s"
 msgstr "Greška stvaranja direktorija “%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:359 gio/gfile.c:1068 gio/gfile.c:1306
-#: gio/gfile.c:1444 gio/gfile.c:1682 gio/gfile.c:1737 gio/gfile.c:1795
-#: gio/gfile.c:1879 gio/gfile.c:1936 gio/gfile.c:2000 gio/gfile.c:2055
-#: gio/gfile.c:3760 gio/gfile.c:3815 gio/gfile.c:4108 gio/gfile.c:4578
-#: gio/gfile.c:4989 gio/gfile.c:5074 gio/gfile.c:5164 gio/gfile.c:5261
-#: gio/gfile.c:5348 gio/gfile.c:5449 gio/gfile.c:8159 gio/gfile.c:8249
-#: gio/gfile.c:8333 gio/win32/gwinhttpfile.c:453
+#: gio/gdbusauthmechanismsha1.c:361 gio/gfile.c:1080 gio/gfile.c:1318
+#: gio/gfile.c:1456 gio/gfile.c:1694 gio/gfile.c:1749 gio/gfile.c:1807
+#: gio/gfile.c:1891 gio/gfile.c:1948 gio/gfile.c:2012 gio/gfile.c:2067
+#: gio/gfile.c:3772 gio/gfile.c:3912 gio/gfile.c:4205 gio/gfile.c:4675
+#: gio/gfile.c:5086 gio/gfile.c:5171 gio/gfile.c:5261 gio/gfile.c:5358
+#: gio/gfile.c:5445 gio/gfile.c:5546 gio/gfile.c:8375 gio/gfile.c:8465
+#: gio/gfile.c:8549 gio/win32/gwinhttpfile.c:453
 msgid "Operation not supported"
 msgstr "Radnja nije podržana"
 
-#: gio/gdbusauthmechanismsha1.c:402
+#: gio/gdbusauthmechanismsha1.c:404
 #, c-format
 msgid "Error opening keyring “%s” for reading: "
 msgstr "Greška otvaranja skupa ključeva “%s” za čitanje: "
 
-#: gio/gdbusauthmechanismsha1.c:425 gio/gdbusauthmechanismsha1.c:747
+#: gio/gdbusauthmechanismsha1.c:427 gio/gdbusauthmechanismsha1.c:769
 #, c-format
 msgid "Line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr "Redak %d skupa ključeva na “%s” sa sadržajem “%s” je oštećen"
 
-#: gio/gdbusauthmechanismsha1.c:439 gio/gdbusauthmechanismsha1.c:761
+#: gio/gdbusauthmechanismsha1.c:441 gio/gdbusauthmechanismsha1.c:783
 #, c-format
 msgid ""
 "First token of line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr ""
 "Prvi token redka %d skupa ključeva na “%s” sa sadržajem “%s” je oštećen"
 
-#: gio/gdbusauthmechanismsha1.c:453 gio/gdbusauthmechanismsha1.c:775
+#: gio/gdbusauthmechanismsha1.c:455 gio/gdbusauthmechanismsha1.c:797
 #, c-format
 msgid ""
 "Second token of line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr ""
 "Drugi token redka %d skupa ključeva na “%s” sa sadržajem “%s” je oštećen"
 
-#: gio/gdbusauthmechanismsha1.c:477
+#: gio/gdbusauthmechanismsha1.c:479
 #, c-format
 msgid "Didn’t find cookie with id %d in the keyring at “%s”"
 msgstr "Nije pronađen kolačić s ID %d u skupu ključeva na “%s”"
 
-#: gio/gdbusauthmechanismsha1.c:523
+#: gio/gdbusauthmechanismsha1.c:536
 #, c-format
 msgid "Error creating lock file “%s”: %s"
 msgstr "Greška stvaranja datoteke zaključavanja “%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:587
+#: gio/gdbusauthmechanismsha1.c:609
 #, c-format
 msgid "Error deleting stale lock file “%s”: %s"
 msgstr "Greška brisanja zaostale datoteke zaključavanja “%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:626
+#: gio/gdbusauthmechanismsha1.c:648
 #, c-format
 msgid "Error closing (unlinked) lock file “%s”: %s"
 msgstr "Greška zatvaranja (nepovezane) datoteke zaključavanja “%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:637
+#: gio/gdbusauthmechanismsha1.c:659
 #, c-format
 msgid "Error unlinking lock file “%s”: %s"
 msgstr "Greška uklanjanja poveznice datoteke zaključavanja “%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:714
+#: gio/gdbusauthmechanismsha1.c:736
 #, c-format
 msgid "Error opening keyring “%s” for writing: "
 msgstr "Greška otvaranja skupa ključeva “%s” za zapisivanje: "
 
-#: gio/gdbusauthmechanismsha1.c:908
+#: gio/gdbusauthmechanismsha1.c:930
 #, c-format
 msgid "(Additionally, releasing the lock for “%s” also failed: %s) "
 msgstr "(Dodatno, oslobađanje zaključavanja za “%s” je isto neuspjelo: %s) "
 
-#: gio/gdbusconnection.c:603 gio/gdbusconnection.c:2417
+#: gio/gdbusconnection.c:588 gio/gdbusconnection.c:2402
 msgid "The connection is closed"
 msgstr "Povezivanje je zatvoreno"
 
-#: gio/gdbusconnection.c:1902
+#: gio/gdbusconnection.c:1887
 msgid "Timeout was reached"
 msgstr "Vrijeme isteka dostignuto"
 
-#: gio/gdbusconnection.c:2540
+#: gio/gdbusconnection.c:2525
 msgid ""
 "Unsupported flags encountered when constructing a client-side connection"
 msgstr ""
 "Nepodržane oznake pronađene pri izgradnje povezivanja od strane klijenta"
 
-#: gio/gdbusconnection.c:4189 gio/gdbusconnection.c:4536
+#: gio/gdbusconnection.c:4253 gio/gdbusconnection.c:4607
 #, c-format
 msgid ""
 "No such interface “org.freedesktop.DBus.Properties” on object at path %s"
 msgstr ""
 "Nema takvog sučelja “org.freedesktop.DBus.Properties” na putanji objekta %s"
 
-#: gio/gdbusconnection.c:4331
+#: gio/gdbusconnection.c:4398
 #, c-format
 msgid "No such property “%s”"
 msgstr "Nema takvog svojstva “%s”"
 
-#: gio/gdbusconnection.c:4343
+#: gio/gdbusconnection.c:4410
 #, c-format
 msgid "Property “%s” is not readable"
 msgstr "Svojstvo “%s” nije čitljivo"
 
-#: gio/gdbusconnection.c:4354
+#: gio/gdbusconnection.c:4421
 #, c-format
 msgid "Property “%s” is not writable"
 msgstr "Svojstvo “%s” nije zapisivo"
 
-#: gio/gdbusconnection.c:4374
+#: gio/gdbusconnection.c:4441
 #, c-format
 msgid "Error setting property “%s”: Expected type “%s” but got “%s”"
 msgstr ""
 "Greška postavljanja svojstva “%s”: Očekivana je vrsta “%s” ali je dobivena "
 "“%s”"
 
-#: gio/gdbusconnection.c:4479 gio/gdbusconnection.c:4687
-#: gio/gdbusconnection.c:6689
+#: gio/gdbusconnection.c:4546 gio/gdbusconnection.c:4761
+#: gio/gdbusconnection.c:6744
 #, c-format
 msgid "No such interface “%s”"
 msgstr "Nema takvog sučelja “%s”"
 
-#: gio/gdbusconnection.c:4905 gio/gdbusconnection.c:7201
+#: gio/gdbusconnection.c:4983 gio/gdbusconnection.c:7258
 #, c-format
 msgid "No such interface “%s” on object at path %s"
 msgstr "Nema takvog sučelja “%s” na putanji objekta %s"
 
-#: gio/gdbusconnection.c:5003
+#: gio/gdbusconnection.c:5084
 #, c-format
 msgid "No such method “%s”"
 msgstr "Nema takvog načina “%s”"
 
-#: gio/gdbusconnection.c:5034
+#: gio/gdbusconnection.c:5115
 #, c-format
 msgid "Type of message, “%s”, does not match expected type “%s”"
 msgstr "Vrsta poruke, “%s”, ne podudara se s očekivanom vrstom “%s”"
 
-#: gio/gdbusconnection.c:5237
+#: gio/gdbusconnection.c:5318
 #, c-format
 msgid "An object is already exported for the interface %s at %s"
 msgstr "Objekt je već izvezen za sučelje %s na %s"
 
-#: gio/gdbusconnection.c:5463
+#: gio/gdbusconnection.c:5545
 #, c-format
 msgid "Unable to retrieve property %s.%s"
 msgstr "Nemoguće dobivanju svojstva %s.%s"
 
-#: gio/gdbusconnection.c:5519
+#: gio/gdbusconnection.c:5601
 #, c-format
 msgid "Unable to set property %s.%s"
 msgstr "Nemoguće postavljanje svojstva %s.%s"
 
-#: gio/gdbusconnection.c:5698
+#: gio/gdbusconnection.c:5780
 #, c-format
 msgid "Method “%s” returned type “%s”, but expected “%s”"
 msgstr "Način “%s” je vratio vrstu “%s”, ali je očekivano “%s”"
 
-#: gio/gdbusconnection.c:6800
+#: gio/gdbusconnection.c:6856
 #, c-format
 msgid "Method “%s” on interface “%s” with signature “%s” does not exist"
 msgstr "Način “%s” na sučelju “%s” s potpisom “%s” ne posoji"
 
-#: gio/gdbusconnection.c:6921
+#: gio/gdbusconnection.c:6977
 #, c-format
 msgid "A subtree is already exported for %s"
 msgstr "Podstablo je već izvezeno za %s"
 
-#: gio/gdbusconnection.c:7209
+#: gio/gdbusconnection.c:7266
 #, c-format
 msgid "Object does not exist at path “%s”"
 msgstr "Objekt ne postoji na putanji “%s”"
 
-#: gio/gdbusmessage.c:1266
+#: gio/gdbusmessage.c:1301
 msgid "type is INVALID"
 msgstr "vrsta je NEVALJANA"
 
-#: gio/gdbusmessage.c:1277
+#: gio/gdbusmessage.c:1312
 msgid "METHOD_CALL message: PATH or MEMBER header field is missing"
 msgstr "METHOD_CALL poruka: PATH ili MEMBER polja zaglavlja nedostaju"
 
-#: gio/gdbusmessage.c:1288
+#: gio/gdbusmessage.c:1323
 msgid "METHOD_RETURN message: REPLY_SERIAL header field is missing"
 msgstr "METHOD_RETURN poruka: REPLY_SERIAL polja zaglavlja nedostaju"
 
-#: gio/gdbusmessage.c:1300
+#: gio/gdbusmessage.c:1335
 msgid "ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing"
 msgstr "ERROR poruka: REPLY_SERIAL ili ERROR_NAME polja zaglavlja nedostaju"
 
-#: gio/gdbusmessage.c:1313
+#: gio/gdbusmessage.c:1348
 msgid "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing"
 msgstr "SIGNAL poruka: PATH, INTERFACE ili MEMBER polja zaglavlja nedostaju"
 
-#: gio/gdbusmessage.c:1321
+#: gio/gdbusmessage.c:1356
 msgid ""
 "SIGNAL message: The PATH header field is using the reserved value /org/"
 "freedesktop/DBus/Local"
@@ -766,7 +777,7 @@ msgstr ""
 "SIGNAL poruka: PATH polje zaglavlja koristi rezerviranu vrijednost /org/"
 "freedesktop/DBus/Local"
 
-#: gio/gdbusmessage.c:1329
+#: gio/gdbusmessage.c:1364
 msgid ""
 "SIGNAL message: The INTERFACE header field is using the reserved value org."
 "freedesktop.DBus.Local"
@@ -774,7 +785,7 @@ msgstr ""
 "SIGNAL poruka: INTERFACE polje zaglavlja koristi rezerviranu vrijednost org."
 "freedesktop.DBus.Local"
 
-#: gio/gdbusmessage.c:1377 gio/gdbusmessage.c:1437
+#: gio/gdbusmessage.c:1412 gio/gdbusmessage.c:1472
 #, c-format
 msgid "Wanted to read %lu byte but only got %lu"
 msgid_plural "Wanted to read %lu bytes but only got %lu"
@@ -782,12 +793,12 @@ msgstr[0] "Pokušaj čitanja %lu bajta, ali je dobiven samo %lu"
 msgstr[1] "Pokušaj čitanja %lu bajta, ali je dobiven samo %lu"
 msgstr[2] "Pokušaj čitanja %lu bajta, ali je dobiven samo %lu"
 
-#: gio/gdbusmessage.c:1391
+#: gio/gdbusmessage.c:1426
 #, c-format
 msgid "Expected NUL byte after the string “%s” but found byte %d"
 msgstr "Očekivan je nula bajt nakon izraza “%s”, ali je pronađen bajt %d"
 
-#: gio/gdbusmessage.c:1410
+#: gio/gdbusmessage.c:1445
 #, c-format
 msgid ""
 "Expected valid UTF-8 string but found invalid bytes at byte offset %d "
@@ -796,21 +807,21 @@ msgstr ""
 "Očekivan je valjani UTF-8 niz ali su pronađeni nevaljani bajti u pomaku "
 "bajta %d (duljina niza je %d). Valjani UTF-8 niz do te točke je bio “%s”"
 
-#: gio/gdbusmessage.c:1474 gio/gdbusmessage.c:1722 gio/gdbusmessage.c:1911
+#: gio/gdbusmessage.c:1509 gio/gdbusmessage.c:1785 gio/gdbusmessage.c:1996
 msgid "Value nested too deeply"
 msgstr "Vrijednost je ugniježđena preduboko"
 
-#: gio/gdbusmessage.c:1620
+#: gio/gdbusmessage.c:1677
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus object path"
 msgstr "Obrađena vrijednost “%s” nije valjana D-Bus putanja objekta"
 
-#: gio/gdbusmessage.c:1642
+#: gio/gdbusmessage.c:1701
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature"
 msgstr "Obrađena vrijednost “%s” nije valjani D-Bus potpis"
 
-#: gio/gdbusmessage.c:1689
+#: gio/gdbusmessage.c:1752
 #, c-format
 msgid ""
 "Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB)."
@@ -823,7 +834,7 @@ msgstr[1] ""
 msgstr[2] ""
 "Pronađen je niz duljine %u bajta. Najveća duljina je is 2<<26 bajta (64 MiB)."
 
-#: gio/gdbusmessage.c:1709
+#: gio/gdbusmessage.c:1772
 #, c-format
 msgid ""
 "Encountered array of type “a%c”, expected to have a length a multiple of %u "
@@ -832,12 +843,16 @@ msgstr ""
 "Pronađen je niz vrste “a%c”, očekivano je da ima duljinu umnoška od %u "
 "bajta, ali je pronađeno da je duljina %u bajta"
 
-#: gio/gdbusmessage.c:1895
+#: gio/gdbusmessage.c:1926 gio/gdbusmessage.c:2645
+msgid "Empty structures (tuples) are not allowed in D-Bus"
+msgstr "Prazne strukture (tuples) nisu dopuštene u D-Bus-u"
+
+#: gio/gdbusmessage.c:1980
 #, c-format
 msgid "Parsed value “%s” for variant is not a valid D-Bus signature"
 msgstr "Obrađena vrijednost “%s” za varijantu nije valjan D-Bus potpis"
 
-#: gio/gdbusmessage.c:1936
+#: gio/gdbusmessage.c:2021
 #, c-format
 msgid ""
 "Error deserializing GVariant with type string “%s” from the D-Bus wire format"
@@ -845,7 +860,7 @@ msgstr ""
 "Greška pri deserijalizaciji GVariante s nizom vrste \"% s\" iz D-Bus formata "
 "provodnika"
 
-#: gio/gdbusmessage.c:2121
+#: gio/gdbusmessage.c:2206
 #, c-format
 msgid ""
 "Invalid endianness value. Expected 0x6c (“l”) or 0x42 (“B”) but found value "
@@ -854,28 +869,28 @@ msgstr ""
 "Nevaljana endian vrijednost. Očekivana je 0x6c (“l”) ili 0x42 (“B”) ali je "
 "pronađena vrijednost 0x%02x"
 
-#: gio/gdbusmessage.c:2134
+#: gio/gdbusmessage.c:2225
 #, c-format
 msgid "Invalid major protocol version. Expected 1 but found %d"
 msgstr ""
 "Nevaljana inačica glavnog protokola. Očekivana je 1 ali je pronađena %d"
 
-#: gio/gdbusmessage.c:2188 gio/gdbusmessage.c:2784
+#: gio/gdbusmessage.c:2283 gio/gdbusmessage.c:2881
 msgid "Signature header found but is not of type signature"
 msgstr "Zaglavlje potpisa je pronađeno ali nije prikladna vrsta potpisa"
 
-#: gio/gdbusmessage.c:2200
+#: gio/gdbusmessage.c:2295
 #, c-format
 msgid "Signature header with signature “%s” found but message body is empty"
 msgstr ""
 "Zaglavlje potpisa s potpisom “%s” je pronađeno ali tijelo poruke je prazno"
 
-#: gio/gdbusmessage.c:2215
+#: gio/gdbusmessage.c:2310
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature (for body)"
 msgstr "Obrađena vrijednost “%s” nije valjan D-Bus potpis (za tijelo)"
 
-#: gio/gdbusmessage.c:2247
+#: gio/gdbusmessage.c:2342
 #, 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"
@@ -883,34 +898,34 @@ msgstr[0] "Nema zaglavlja potpisa u poruci ali tijelo poruke je %u bajt"
 msgstr[1] "Nema zaglavlja potpisa u poruci ali tijelo poruke je %u bajta"
 msgstr[2] "Nema zaglavlja potpisa u poruci ali tijelo poruke je %u bajta"
 
-#: gio/gdbusmessage.c:2257
+#: gio/gdbusmessage.c:2352
 msgid "Cannot deserialize message: "
 msgstr "Nemoguća deserijalizacija poruke: "
 
-#: gio/gdbusmessage.c:2601
+#: gio/gdbusmessage.c:2698
 #, c-format
 msgid ""
 "Error serializing GVariant with type string “%s” to the D-Bus wire format"
 msgstr ""
 "Greška serijalizacije GVariante s nizom vrste “%s” u D-Bus formata provodnika"
 
-#: gio/gdbusmessage.c:2738
+#: gio/gdbusmessage.c:2835
 #, c-format
 msgid ""
 "Number of file descriptors in message (%d) differs from header field (%d)"
 msgstr ""
 "Broj opisnika datoteke u poruci (%d) razlikuje se od polja zaglavlja (%d)"
 
-#: gio/gdbusmessage.c:2746
+#: gio/gdbusmessage.c:2843
 msgid "Cannot serialize message: "
 msgstr "Nemoguća serijalizacija poruke: "
 
-#: gio/gdbusmessage.c:2799
+#: gio/gdbusmessage.c:2896
 #, c-format
 msgid "Message body has signature “%s” but there is no signature header"
 msgstr "Tijelo poruke ima potpis “%s”, ali ne sadrži zaglavlje potpisa"
 
-#: gio/gdbusmessage.c:2809
+#: gio/gdbusmessage.c:2906
 #, c-format
 msgid ""
 "Message body has type signature “%s” but signature in the header field is "
@@ -918,52 +933,52 @@ msgid ""
 msgstr ""
 "Tijelo poruke ima vrstu potpisa “%s”, ali potpis u polju zaglavlja je “%s”"
 
-#: gio/gdbusmessage.c:2825
+#: gio/gdbusmessage.c:2922
 #, c-format
 msgid "Message body is empty but signature in the header field is “(%s)”"
 msgstr "Tijelo poruke je prazno, ali potpis u polju zaglavlja je “(%s)”"
 
-#: gio/gdbusmessage.c:3380
+#: gio/gdbusmessage.c:3477
 #, c-format
 msgid "Error return with body of type “%s”"
 msgstr "Vraćena je greška s tijelom vrste “%s”"
 
-#: gio/gdbusmessage.c:3388
+#: gio/gdbusmessage.c:3485
 msgid "Error return with empty body"
 msgstr "Vraćena je greška s praznim tijelom"
 
-#: gio/gdbusprivate.c:2246
+#: gio/gdbusprivate.c:2185
 #, c-format
 msgid "(Type any character to close this window)\n"
 msgstr "(Upišite bilo kakav znak za zatvaranje ovog prozora)\n"
 
-#: gio/gdbusprivate.c:2420
+#: gio/gdbusprivate.c:2371
 #, c-format
 msgid "Session dbus not running, and autolaunch failed"
 msgstr "Dbus sesije nije pokrenut, automatsko pokretanje neuspjelo"
 
-#: gio/gdbusprivate.c:2443
+#: gio/gdbusprivate.c:2394
 #, c-format
 msgid "Unable to get Hardware profile: %s"
 msgstr "Neuspjelo dobivanje profila hardvera: %s"
 
 #. Translators: Both placeholders are file paths
-#: gio/gdbusprivate.c:2494
+#: gio/gdbusprivate.c:2445
 #, c-format
 msgid "Unable to load %s or %s: "
 msgstr "Nemoguće učitavanje %s ili %s: "
 
-#: gio/gdbusproxy.c:1569
+#: gio/gdbusproxy.c:1573
 #, c-format
 msgid "Error calling StartServiceByName for %s: "
 msgstr "Greška poziva StartServiceByName za %s: "
 
-#: gio/gdbusproxy.c:1592
+#: gio/gdbusproxy.c:1596
 #, c-format
 msgid "Unexpected reply %d from StartServiceByName(\"%s\") method"
 msgstr "Neočekivan odgovor %d od StartServiceByName(\"%s\") načina"
 
-#: gio/gdbusproxy.c:2699 gio/gdbusproxy.c:2834
+#: gio/gdbusproxy.c:2707 gio/gdbusproxy.c:2842
 #, c-format
 msgid ""
 "Cannot invoke method; proxy is for the well-known name %s without an owner, "
@@ -1018,66 +1033,66 @@ msgstr ""
 "\n"
 "Koristite “%s NAREDBA --help” za dobivanje pomoći pojedine naredbe.\n"
 
-#: gio/gdbus-tool.c:201 gio/gdbus-tool.c:273 gio/gdbus-tool.c:345
-#: gio/gdbus-tool.c:369 gio/gdbus-tool.c:859 gio/gdbus-tool.c:1236
-#: gio/gdbus-tool.c:1724
+#: gio/gdbus-tool.c:202 gio/gdbus-tool.c:274 gio/gdbus-tool.c:346
+#: gio/gdbus-tool.c:370 gio/gdbus-tool.c:860 gio/gdbus-tool.c:1245
+#: gio/gdbus-tool.c:1733
 #, c-format
 msgid "Error: %s\n"
 msgstr "Greška: %s\n"
 
-#: gio/gdbus-tool.c:212 gio/gdbus-tool.c:286 gio/gdbus-tool.c:1740
+#: gio/gdbus-tool.c:213 gio/gdbus-tool.c:287 gio/gdbus-tool.c:1749
 #, c-format
 msgid "Error parsing introspection XML: %s\n"
 msgstr "Greška preispitivanja XML-a: %s\n"
 
-#: gio/gdbus-tool.c:250
+#: gio/gdbus-tool.c:251
 #, c-format
 msgid "Error: %s is not a valid name\n"
 msgstr "Greška: %s nije valjani naziv\n"
 
-#: gio/gdbus-tool.c:255 gio/gdbus-tool.c:745 gio/gdbus-tool.c:1060
-#: gio/gdbus-tool.c:1890 gio/gdbus-tool.c:2130
+#: gio/gdbus-tool.c:256 gio/gdbus-tool.c:746 gio/gdbus-tool.c:1064
+#: gio/gdbus-tool.c:1899 gio/gdbus-tool.c:2139
 #, c-format
 msgid "Error: %s is not a valid object path\n"
 msgstr "Greška: %s nije valjana putanja objekta\n"
 
-#: gio/gdbus-tool.c:403
+#: gio/gdbus-tool.c:404
 msgid "Connect to the system bus"
 msgstr "Povezivanje sa sabirnicom sustava"
 
-#: gio/gdbus-tool.c:404
+#: gio/gdbus-tool.c:405
 msgid "Connect to the session bus"
 msgstr "Povezivanje sa sabirnicom sesije"
 
-#: gio/gdbus-tool.c:405
+#: gio/gdbus-tool.c:406
 msgid "Connect to given D-Bus address"
 msgstr "Povezivanje sa zadanom D-Bus adresom"
 
-#: gio/gdbus-tool.c:415
+#: gio/gdbus-tool.c:416
 msgid "Connection Endpoint Options:"
 msgstr "Mogućnosti krajnje točke povezivanja:"
 
-#: gio/gdbus-tool.c:416
+#: gio/gdbus-tool.c:417
 msgid "Options specifying the connection endpoint"
 msgstr "Mogućnosti koje određuju krajnje točke povezivanja"
 
-#: gio/gdbus-tool.c:439
+#: gio/gdbus-tool.c:440
 #, c-format
 msgid "No connection endpoint specified"
 msgstr "Krajnja točka povezivanja nije određena"
 
-#: gio/gdbus-tool.c:449
+#: gio/gdbus-tool.c:450
 #, c-format
 msgid "Multiple connection endpoints specified"
 msgstr "Više krajnjih točka povezivanja je određeno"
 
-#: gio/gdbus-tool.c:522
+#: gio/gdbus-tool.c:523
 #, c-format
 msgid ""
 "Warning: According to introspection data, interface “%s” does not exist\n"
 msgstr "Upozorenje: Prema podacima preispitivanja, sučelje “%s” ne postoji\n"
 
-#: gio/gdbus-tool.c:531
+#: gio/gdbus-tool.c:532
 #, c-format
 msgid ""
 "Warning: According to introspection data, method “%s” does not exist on "
@@ -1086,161 +1101,165 @@ msgstr ""
 "Upozorenje: Prema podacima preispitivanja, način “%s” ne postoji na sučelju "
 "“%s”\n"
 
-#: gio/gdbus-tool.c:593
+#: gio/gdbus-tool.c:594
 msgid "Optional destination for signal (unique name)"
 msgstr "Dodatno odredište za signal (jedinstveni naziv)"
 
-#: gio/gdbus-tool.c:594
+#: gio/gdbus-tool.c:595
 msgid "Object path to emit signal on"
 msgstr "Putanja objekta na koje se emitira signal"
 
-#: gio/gdbus-tool.c:595
+#: gio/gdbus-tool.c:596
 msgid "Signal and interface name"
 msgstr "Naziv signala i sučelja"
 
-#: gio/gdbus-tool.c:628
+#: gio/gdbus-tool.c:629
 msgid "Emit a signal."
 msgstr "Emitiraj signal."
 
-#: gio/gdbus-tool.c:683 gio/gdbus-tool.c:997 gio/gdbus-tool.c:1827
-#: gio/gdbus-tool.c:2059 gio/gdbus-tool.c:2279
+#: gio/gdbus-tool.c:684 gio/gdbus-tool.c:1001 gio/gdbus-tool.c:1836
+#: gio/gdbus-tool.c:2068 gio/gdbus-tool.c:2288
 #, c-format
 msgid "Error connecting: %s\n"
 msgstr "Greška povezivanja: %s\n"
 
-#: gio/gdbus-tool.c:703
+#: gio/gdbus-tool.c:704
 #, c-format
 msgid "Error: %s is not a valid unique bus name.\n"
 msgstr "Greška: %s nije valjan jedinstven naziv sabirnice.\n"
 
-#: gio/gdbus-tool.c:722 gio/gdbus-tool.c:1040 gio/gdbus-tool.c:1870
+#: gio/gdbus-tool.c:723 gio/gdbus-tool.c:1044 gio/gdbus-tool.c:1879
 msgid "Error: Object path is not specified\n"
 msgstr "Greška: Putanja objekta nije navedena\n"
 
-#: gio/gdbus-tool.c:765
+#: gio/gdbus-tool.c:766
 msgid "Error: Signal name is not specified\n"
 msgstr "Greška: Naziv signala nije naveden\n"
 
-#: gio/gdbus-tool.c:779
+#: gio/gdbus-tool.c:780
 #, c-format
 msgid "Error: Signal name “%s” is invalid\n"
 msgstr "Greška: Naziv signala “%s” nije valjan\n"
 
-#: gio/gdbus-tool.c:791
+#: gio/gdbus-tool.c:792
 #, c-format
 msgid "Error: %s is not a valid interface name\n"
 msgstr "Greška: %s nije valjani naziv sučelja\n"
 
-#: gio/gdbus-tool.c:797
+#: gio/gdbus-tool.c:798
 #, c-format
 msgid "Error: %s is not a valid member name\n"
 msgstr "Greška: %s nije valjani naziv člana\n"
 
 #. Use the original non-"parse-me-harder" error
-#: gio/gdbus-tool.c:834 gio/gdbus-tool.c:1172
+#: gio/gdbus-tool.c:835 gio/gdbus-tool.c:1176
 #, c-format
 msgid "Error parsing parameter %d: %s\n"
 msgstr "Greška obrade parametra %d: %s\n"
 
-#: gio/gdbus-tool.c:866
+#: gio/gdbus-tool.c:867
 #, c-format
 msgid "Error flushing connection: %s\n"
 msgstr "Greška pražnjenja povezivanja: %s\n"
 
-#: gio/gdbus-tool.c:893
+#: gio/gdbus-tool.c:895
 msgid "Destination name to invoke method on"
 msgstr "Naziv odredišta za poziv načina"
 
-#: gio/gdbus-tool.c:894
+#: gio/gdbus-tool.c:896
 msgid "Object path to invoke method on"
 msgstr "Putanja objekta za poziv načina"
 
-#: gio/gdbus-tool.c:895
+#: gio/gdbus-tool.c:897
 msgid "Method and interface name"
 msgstr "Naziv načina i sučelja"
 
-#: gio/gdbus-tool.c:896
+#: gio/gdbus-tool.c:898
 msgid "Timeout in seconds"
 msgstr "Vrijeme čekanja u sekundama"
 
-#: gio/gdbus-tool.c:942
+#: gio/gdbus-tool.c:899
+msgid "Allow interactive authorization"
+msgstr "Dopusti interaktivnu ovjeru"
+
+#: gio/gdbus-tool.c:946
 msgid "Invoke a method on a remote object."
 msgstr "Pozovi način na udaljenom objektu."
 
-#: gio/gdbus-tool.c:1014 gio/gdbus-tool.c:1844 gio/gdbus-tool.c:2084
+#: gio/gdbus-tool.c:1018 gio/gdbus-tool.c:1853 gio/gdbus-tool.c:2093
 msgid "Error: Destination is not specified\n"
 msgstr "Greška: Odredište nije navedeno\n"
 
-#: gio/gdbus-tool.c:1025 gio/gdbus-tool.c:1861 gio/gdbus-tool.c:2095
+#: gio/gdbus-tool.c:1029 gio/gdbus-tool.c:1870 gio/gdbus-tool.c:2104
 #, c-format
 msgid "Error: %s is not a valid bus name\n"
 msgstr "Greška: %s nije valjan naziv sabirnice\n"
 
-#: gio/gdbus-tool.c:1075
+#: gio/gdbus-tool.c:1079
 msgid "Error: Method name is not specified\n"
 msgstr "Greška: Naziv načina nije naveden\n"
 
-#: gio/gdbus-tool.c:1086
+#: gio/gdbus-tool.c:1090
 #, c-format
 msgid "Error: Method name “%s” is invalid\n"
 msgstr "Greška: Naziv načina “%s” je nevaljan\n"
 
-#: gio/gdbus-tool.c:1164
+#: gio/gdbus-tool.c:1168
 #, c-format
 msgid "Error parsing parameter %d of type “%s”: %s\n"
 msgstr "Greška obrade parametra %d vrste “%s”: %s\n"
 
-#: gio/gdbus-tool.c:1190
+#: gio/gdbus-tool.c:1194
 #, c-format
 msgid "Error adding handle %d: %s\n"
 msgstr "Greška dodavanja rukovanja %d: %s\n"
 
-#: gio/gdbus-tool.c:1686
+#: gio/gdbus-tool.c:1695
 msgid "Destination name to introspect"
 msgstr "Naziv odredišta za preispitivanje"
 
-#: gio/gdbus-tool.c:1687
+#: gio/gdbus-tool.c:1696
 msgid "Object path to introspect"
 msgstr "Putanja objekta za preispitivanje"
 
-#: gio/gdbus-tool.c:1688
+#: gio/gdbus-tool.c:1697
 msgid "Print XML"
 msgstr "Prikaži XML"
 
-#: gio/gdbus-tool.c:1689
+#: gio/gdbus-tool.c:1698
 msgid "Introspect children"
 msgstr "Preispitivanje podsadržaja"
 
-#: gio/gdbus-tool.c:1690
+#: gio/gdbus-tool.c:1699
 msgid "Only print properties"
 msgstr "Samo prikaži svojstva"
 
-#: gio/gdbus-tool.c:1779
+#: gio/gdbus-tool.c:1788
 msgid "Introspect a remote object."
 msgstr "Preispitivanje udaljenog objekta."
 
-#: gio/gdbus-tool.c:1985
+#: gio/gdbus-tool.c:1994
 msgid "Destination name to monitor"
 msgstr "Naziv odredišta za nadgledanje"
 
-#: gio/gdbus-tool.c:1986
+#: gio/gdbus-tool.c:1995
 msgid "Object path to monitor"
 msgstr "Putanja objekta za nadgledanje"
 
-#: gio/gdbus-tool.c:2011
+#: gio/gdbus-tool.c:2020
 msgid "Monitor a remote object."
 msgstr "Nadgledaj udaljeni objekt."
 
-#: gio/gdbus-tool.c:2069
+#: gio/gdbus-tool.c:2078
 msgid "Error: can’t monitor a non-message-bus connection\n"
 msgstr ""
 "Greška: nemoguće nadgledanje povezivanja sabirnice koja nije za poruke\n"
 
-#: gio/gdbus-tool.c:2193
+#: gio/gdbus-tool.c:2202
 msgid "Service to activate before waiting for the other one (well-known name)"
 msgstr "Usluga za aktiviranje prije čekanja druge usluge (dobro poznat naziv)"
 
-#: gio/gdbus-tool.c:2196
+#: gio/gdbus-tool.c:2205
 msgid ""
 "Timeout to wait for before exiting with an error (seconds); 0 for no timeout "
 "(default)"
@@ -1248,63 +1267,68 @@ msgstr ""
 "Vrijeme čekanja prije zatvaranja s greškom (sekunde), O za vrijeme čekanja "
 "(zadano)"
 
-#: gio/gdbus-tool.c:2244
+#: gio/gdbus-tool.c:2253
 msgid "[OPTION…] BUS-NAME"
 msgstr "[MOGUĆNOST...] NAZIV-SABIRNICE"
 
-#: gio/gdbus-tool.c:2245
+#: gio/gdbus-tool.c:2254
 msgid "Wait for a bus name to appear."
 msgstr "Čekaj pojavljivanje naziva sabirnice."
 
-#: gio/gdbus-tool.c:2321
+#: gio/gdbus-tool.c:2330
 msgid "Error: A service to activate for must be specified.\n"
 msgstr "Greška: Usluga za aktiviranje mora biti navedena.\n"
 
-#: gio/gdbus-tool.c:2326
+#: gio/gdbus-tool.c:2335
 msgid "Error: A service to wait for must be specified.\n"
 msgstr "Greška: Usluga koja se čeka mora biti navedena.\n"
 
-#: gio/gdbus-tool.c:2331
+#: gio/gdbus-tool.c:2340
 msgid "Error: Too many arguments.\n"
 msgstr "Greška: previše argumenata.\n"
 
-#: gio/gdbus-tool.c:2339 gio/gdbus-tool.c:2346
+#: gio/gdbus-tool.c:2348 gio/gdbus-tool.c:2355
 #, c-format
 msgid "Error: %s is not a valid well-known bus name.\n"
 msgstr "Greška: %s nije valjan dobro poznat naziv sabirnice\n"
 
-#: gio/gdesktopappinfo.c:2106 gio/gdesktopappinfo.c:5031
+#: gio/gdebugcontrollerdbus.c:358
+#, c-format
+msgid "Not authorized to change debug settings"
+msgstr "Niste ovlašteni za promjenu postavki otklanjanja grešaka"
+
+#: gio/gdesktopappinfo.c:2178 gio/gdesktopappinfo.c:5105
 msgid "Unnamed"
 msgstr "Neimenovano"
 
-#: gio/gdesktopappinfo.c:2516
+#: gio/gdesktopappinfo.c:2588
 msgid "Desktop file didn’t specify Exec field"
-msgstr "Datoteka radne površine nema navedeno Exec polje"
+msgstr "Datoteka radne površine (.desktop) nema navedeno Exec polje"
 
-#: gio/gdesktopappinfo.c:2824
+#: gio/gdesktopappinfo.c:2896
 msgid "Unable to find terminal required for application"
 msgstr "Nemoguć pronalazak potrebnog terminala za aplikaciju"
 
-#: gio/gdesktopappinfo.c:3551
+#: gio/gdesktopappinfo.c:3625
 #, c-format
 msgid "Can’t create user application configuration folder %s: %s"
 msgstr "Nemoguće stvaranje mape podešavanja aplikacije korisnika %s: %s"
 
-#: gio/gdesktopappinfo.c:3555
+#: gio/gdesktopappinfo.c:3629
 #, c-format
 msgid "Can’t create user MIME configuration folder %s: %s"
 msgstr "Nemoguće stvaranje mape MIME podešavanja korisnika %s: %s"
 
-#: gio/gdesktopappinfo.c:3797 gio/gdesktopappinfo.c:3821
+#: gio/gdesktopappinfo.c:3871 gio/gdesktopappinfo.c:3895
 msgid "Application information lacks an identifier"
 msgstr "Informacijama aplikacije nedostaje identifikator"
 
-#: gio/gdesktopappinfo.c:4057
+#: gio/gdesktopappinfo.c:4131
 #, c-format
 msgid "Can’t create user desktop file %s"
-msgstr "Nemoguće stvaranje datoteke radne površine korisnika %s"
+msgstr "Nemoguće stvaranje datoteke radne površine (.desktop) korisnika %s"
 
-#: gio/gdesktopappinfo.c:4193
+#: gio/gdesktopappinfo.c:4267
 #, c-format
 msgid "Custom definition for %s"
 msgstr "Prilagođena definicija za %s"
@@ -1332,7 +1356,7 @@ msgstr "uređaj nema implementirano pokretanje"
 msgid "drive doesn’t implement stop"
 msgstr "uređaj nema implementirano zaustavljanje"
 
-#: gio/gdtlsconnection.c:1153 gio/gtlsconnection.c:920
+#: gio/gdtlsconnection.c:1186 gio/gtlsconnection.c:955
 msgid "TLS backend does not implement TLS binding retrieval"
 msgstr "TLS pozadinski program nema implementirano primanje TLS povezivanja"
 
@@ -1373,75 +1397,75 @@ msgstr "Očekivani GEmblem za GEmblemedIcon"
 #. * trying to find the enclosing (user visible)
 #. * mount of a file, but none exists.
 #.
-#: gio/gfile.c:1567
+#: gio/gfile.c:1579
 msgid "Containing mount does not exist"
 msgstr "Sadržano montiranje ne postoji"
 
-#: gio/gfile.c:2614 gio/glocalfile.c:2486
+#: gio/gfile.c:2626 gio/glocalfile.c:2486
 msgid "Can’t copy over directory"
 msgstr "Nemoguće kopiranje preko direktorija"
 
-#: gio/gfile.c:2674
+#: gio/gfile.c:2686
 msgid "Can’t copy directory over directory"
 msgstr "Nemoguće kopiranje direktorija preko direktorija"
 
-#: gio/gfile.c:2682
+#: gio/gfile.c:2694
 msgid "Target file exists"
 msgstr "Odredišna datoteka već postoji"
 
-#: gio/gfile.c:2701
+#: gio/gfile.c:2713
 msgid "Can’t recursively copy directory"
 msgstr "Nemoguće rekruzivno kopiranje direktorija"
 
-#: gio/gfile.c:3002
+#: gio/gfile.c:3014
 msgid "Splice not supported"
 msgstr "Spajanje nije podržano"
 
-#: gio/gfile.c:3006
+#: gio/gfile.c:3018
 #, c-format
 msgid "Error splicing file: %s"
 msgstr "Greška spajanja datoteke: %s"
 
-#: gio/gfile.c:3158
+#: gio/gfile.c:3170
 msgid "Copy (reflink/clone) between mounts is not supported"
 msgstr ""
 "Kopiranje (referentne poveznice/kloniranje) između montiranja nije podržano"
 
-#: gio/gfile.c:3162
+#: gio/gfile.c:3174
 msgid "Copy (reflink/clone) is not supported or invalid"
 msgstr ""
 "Kopiranje (referentne poveznice/kloniranje) nije podržano ili je nevaljano"
 
-#: gio/gfile.c:3167
+#: gio/gfile.c:3179
 msgid "Copy (reflink/clone) is not supported or didn’t work"
 msgstr "Kopiranje (referentne poveznice/kloniranje) nije podržano ili ne radi"
 
-#: gio/gfile.c:3232
+#: gio/gfile.c:3244
 msgid "Can’t copy special file"
 msgstr "Nemoguće kopiranje posebne datoteke"
 
-#: gio/gfile.c:4041
+#: gio/gfile.c:4138
 msgid "Invalid symlink value given"
 msgstr "Zadana je nevaljana vrijednost simboličke poveznice"
 
-#: gio/gfile.c:4051 glib/gfileutils.c:2355
+#: gio/gfile.c:4148 glib/gfileutils.c:2333
 msgid "Symbolic links not supported"
 msgstr "Simboličke poveznice nisu podržane"
 
-#: gio/gfile.c:4219
+#: gio/gfile.c:4316
 msgid "Trash not supported"
 msgstr "Smeće nije podržano"
 
-#: gio/gfile.c:4331
+#: gio/gfile.c:4428
 #, c-format
 msgid "File names cannot contain “%c”"
 msgstr "Nazivi datoteka ne mogu sadržavati “%c”"
 
-#: gio/gfile.c:6812 gio/gvolume.c:364
+#: gio/gfile.c:7028 gio/gvolume.c:364
 msgid "volume doesn’t implement mount"
 msgstr "uređaj nema implementirano montiranje"
 
-#: gio/gfile.c:6926 gio/gfile.c:6974
+#: gio/gfile.c:7142 gio/gfile.c:7190
 msgid "No application is registered as handling this file"
 msgstr "Nema registriranih aplikacija za rukovanje ovom datotekom"
 
@@ -1486,7 +1510,7 @@ msgstr "Skračivanje nije dopušteno na ulaznom strujanju"
 msgid "Truncate not supported on stream"
 msgstr "Skračivanje nije podržano na strujanju"
 
-#: gio/ghttpproxy.c:91 gio/gresolver.c:443 gio/gresolver.c:596
+#: gio/ghttpproxy.c:91 gio/gresolver.c:458 gio/gresolver.c:611
 #: glib/gconvert.c:1825
 msgid "Invalid hostname"
 msgstr "Neispravan naziv računala"
@@ -1501,7 +1525,7 @@ msgstr "HTTP proxy povezivanje nije dopušteno"
 
 #: gio/ghttpproxy.c:164
 msgid "HTTP proxy authentication failed"
-msgstr "HTTP proxy ovjera neuspjela"
+msgstr "HTTP proxy ovjera je neuspjela"
 
 #: gio/ghttpproxy.c:167
 msgid "HTTP proxy authentication required"
@@ -1510,7 +1534,7 @@ msgstr "HTTP proxy ovjera je potrebna"
 #: gio/ghttpproxy.c:171
 #, c-format
 msgid "HTTP proxy connection failed: %i"
-msgstr "HTTP proxy povezivanje neuspjelo: %i"
+msgstr "HTTP proxy povezivanje je neuspjelo: %i"
 
 #: gio/ghttpproxy.c:266
 msgid "HTTP proxy response too big"
@@ -1573,7 +1597,7 @@ msgid "Could not parse “%s” as IP address mask"
 msgstr "Nemoguća obrada “%s” kao IP adresne maske"
 
 #: gio/ginetsocketaddress.c:203 gio/ginetsocketaddress.c:220
-#: gio/gnativesocketaddress.c:109 gio/gunixsocketaddress.c:221
+#: gio/gnativesocketaddress.c:109 gio/gunixsocketaddress.c:228
 msgid "Not enough space for socket address"
 msgstr "Nedovoljno prostora za priključnicu adrese"
 
@@ -1605,7 +1629,7 @@ msgstr "Zadrži s datotekom kada je premještena"
 
 #: gio/gio-tool.c:205
 msgid "“version” takes no arguments"
-msgstr "“version” ne sadrži argumente"
+msgstr "“version” ne prihvaća argumente"
 
 #: gio/gio-tool.c:207 gio/gio-tool.c:223 glib/goption.c:869
 msgid "Usage:"
@@ -1633,7 +1657,7 @@ msgstr "Prikaži informacije o lokacijama"
 
 #: gio/gio-tool.c:232
 msgid "Launch an application from a desktop file"
-msgstr "Pokreni aplikaciju s desktop datotekom"
+msgstr "Pokreni aplikaciju s datotekom radne površine (.desktop)"
 
 #: gio/gio-tool.c:233
 msgid "List the contents of locations"
@@ -1899,12 +1923,12 @@ msgid ""
 "Launch an application from a desktop file, passing optional filename "
 "arguments to it."
 msgstr ""
-"Pokreni datoteku s desktop datoteke, prosljeđujući joj neobavezni naziv "
-"datoteke."
+"Pokreni aplikaciju s datotekom radne površine (.desktop), prosljeđujući joj "
+"neobavezni naziv datoteke."
 
 #: gio/gio-tool-launch.c:77
 msgid "No desktop file given"
-msgstr "Nema zadane desktop datoteke"
+msgstr "Nema zadane datoteke radne površine (.desktop)"
 
 #: gio/gio-tool-launch.c:85
 msgid "The launch command is not currently supported on this platform"
@@ -2355,7 +2379,7 @@ msgstr "Slijedi simboličke poveznice, montiranja i prečace"
 
 #: gio/gio-tool-tree.c:244
 msgid "List contents of directories in a tree-like format."
-msgstr "Prikaži sadržaj direktorija u stablo formatu."
+msgstr "Prikaži sadržaj direktorija u obliku stabla."
 
 #: gio/glib-compile-resources.c:140 gio/glib-compile-schemas.c:1514
 #, c-format
@@ -2412,15 +2436,15 @@ msgstr "Greška sažimanja datoteke %s"
 msgid "text may not appear inside <%s>"
 msgstr "tekst se možda neće pojaviti unutar <%s>"
 
-#: gio/glib-compile-resources.c:737 gio/glib-compile-schemas.c:2172
+#: gio/glib-compile-resources.c:819 gio/glib-compile-schemas.c:2172
 msgid "Show program version and exit"
 msgstr "Prikaži inačicu programa i izađi"
 
-#: gio/glib-compile-resources.c:738
+#: gio/glib-compile-resources.c:820
 msgid "Name of the output file"
 msgstr "Naziv izlazne datoteke"
 
-#: gio/glib-compile-resources.c:739
+#: gio/glib-compile-resources.c:821
 msgid ""
 "The directories to load files referenced in FILE from (default: current "
 "directory)"
@@ -2428,47 +2452,47 @@ msgstr ""
 "Direktoriji za učitavanje datoteka navedenih u DATOTECI (zadano: trenutni "
 "direktorij)"
 
-#: gio/glib-compile-resources.c:739 gio/glib-compile-schemas.c:2173
+#: gio/glib-compile-resources.c:821 gio/glib-compile-schemas.c:2173
 #: gio/glib-compile-schemas.c:2202
 msgid "DIRECTORY"
 msgstr "DIREKTORIJ"
 
-#: gio/glib-compile-resources.c:740
+#: gio/glib-compile-resources.c:822
 msgid ""
 "Generate output in the format selected for by the target filename extension"
 msgstr ""
 "Stvori izlaz u formatu odabranom od strane proširenja odredišta naziva "
 "datoteke"
 
-#: gio/glib-compile-resources.c:741
+#: gio/glib-compile-resources.c:823
 msgid "Generate source header"
 msgstr "Stvori zaglavlje izvora"
 
-#: gio/glib-compile-resources.c:742
+#: gio/glib-compile-resources.c:824
 msgid "Generate source code used to link in the resource file into your code"
 msgstr "Stvori izvorni kôd korišten za povezivanje datoteke resursa u vaš kôd"
 
-#: gio/glib-compile-resources.c:743
+#: gio/glib-compile-resources.c:825
 msgid "Generate dependency list"
 msgstr "Stvori popis zavisnosti"
 
-#: gio/glib-compile-resources.c:744
+#: gio/glib-compile-resources.c:826
 msgid "Name of the dependency file to generate"
 msgstr "Naziv datoteke zavisnosti za stvaranje"
 
-#: gio/glib-compile-resources.c:745
+#: gio/glib-compile-resources.c:827
 msgid "Include phony targets in the generated dependency file"
 msgstr "Uključi lažna odredišta u stvorenu datoteku zavisnosti"
 
-#: gio/glib-compile-resources.c:746
+#: gio/glib-compile-resources.c:828
 msgid "Don’t automatically create and register resource"
 msgstr "Nemoj automatski stvoriti i registrirati resurs"
 
-#: gio/glib-compile-resources.c:747
+#: gio/glib-compile-resources.c:829
 msgid "Don’t export functions; declare them G_GNUC_INTERNAL"
 msgstr "Ne izvažaj funkcije; proglasi ih G_GNUC_INTERNAL"
 
-#: gio/glib-compile-resources.c:748
+#: gio/glib-compile-resources.c:830
 msgid ""
 "Don’t embed resource data in the C file; assume it's linked externally "
 "instead"
@@ -2476,11 +2500,15 @@ msgstr ""
 "Ne ugrađuj podatak resursa u C datoteku; pretpostavi da je umjesto povezana "
 "izvana"
 
-#: gio/glib-compile-resources.c:749
+#: gio/glib-compile-resources.c:831
 msgid "C identifier name used for the generated source code"
 msgstr "Naziv C identifikatora korišten za stvoreni izvorni kôd"
 
-#: gio/glib-compile-resources.c:775
+#: gio/glib-compile-resources.c:832
+msgid "The target C compiler (default: the CC environment variable)"
+msgstr "Ciljani C kompilator (zadana: CC varijabla okruženja)"
+
+#: gio/glib-compile-resources.c:858
 msgid ""
 "Compile a resource specification into a resource file.\n"
 "Resource specification files have the extension .gresource.xml,\n"
@@ -2491,7 +2519,7 @@ msgstr ""
 "datoteke .gresource.xml, i datoteka resursa ima\n"
 "nastavak vrste datoteke .gresource."
 
-#: gio/glib-compile-resources.c:797
+#: gio/glib-compile-resources.c:880
 msgid "You should give exactly one file name\n"
 msgstr "Trebali bi zadati najmanje jedan naziv datoteke\n"
 
@@ -2508,12 +2536,12 @@ msgstr "Nevaljana brojčana vrijednost"
 #: gio/glib-compile-schemas.c:111
 #, c-format
 msgid "<value nick='%s'/> already specified"
-msgstr "<vrijednost nadimka='%s'/> je već navedena"
+msgstr "<value nick='%s'/> je već naveden"
 
 #: gio/glib-compile-schemas.c:119
 #, c-format
 msgid "value='%s' already specified"
-msgstr "vrijednost='%s' je već navedena"
+msgstr "value='%s' je već naveden"
 
 #: gio/glib-compile-schemas.c:133
 #, c-format
@@ -2523,7 +2551,7 @@ msgstr "vrijednosti oznaka moraju imati najviše postavljen 1 bit"
 #: gio/glib-compile-schemas.c:158
 #, c-format
 msgid "<%s> must contain at least one <value>"
-msgstr "<%s> mora sadržavati najmanje jednu <vrijednost>"
+msgstr "<%s> mora sadržavati najmanje jedan <value>"
 
 #: gio/glib-compile-schemas.c:314
 #, c-format
@@ -2543,21 +2571,21 @@ msgstr "<%s> sadrži niz koji nije u navedenoj vrsti oznake"
 #: gio/glib-compile-schemas.c:338
 #, c-format
 msgid "<%s> contains a string not in <choices>"
-msgstr "<%s> sadrži niz koji nije u <odabiru>"
+msgstr "<%s> sadrži niz koji nije u <choices>"
 
 #: gio/glib-compile-schemas.c:372
 msgid "<range/> already specified for this key"
-msgstr "<raspon/> je već određen za ovaj ključ"
+msgstr "<range/> je već određen za ovaj ključ"
 
 #: gio/glib-compile-schemas.c:390
 #, c-format
 msgid "<range> not allowed for keys of type “%s”"
-msgstr "<raspon> nije dopušten za ključeve ove vrste “%s”"
+msgstr "<range> nije dopušten za ključeve ove vrste “%s”"
 
 #: gio/glib-compile-schemas.c:407
 #, c-format
 msgid "<range> specified minimum is greater than maximum"
-msgstr "<raspon> određeni minimum je veći od maksimuma"
+msgstr "<range> određeni minimum je veći od maksimuma"
 
 #: gio/glib-compile-schemas.c:432
 #, c-format
@@ -2575,77 +2603,76 @@ msgstr "sadržaj prijevoda zadan za vrijednosti bez l10n je omogućen"
 #: gio/glib-compile-schemas.c:474
 #, c-format
 msgid "Failed to parse <default> value of type “%s”: "
-msgstr "Nemoguća obrada <zadane> vrijednosti vrste “%s”: "
+msgstr "Nemoguća obrada <default> vrijednosti vrste “%s”: "
 
 #: gio/glib-compile-schemas.c:491
 msgid ""
 "<choices> cannot be specified for keys tagged as having an enumerated type"
 msgstr ""
-"<odabiri> ne mogu biti određeni za ključeve označene da imaju nabrojanu vrstu"
+"<choices> ne može biti određen za ključeve označene da imaju popisanu vrstu"
 
 #: gio/glib-compile-schemas.c:500
 msgid "<choices> already specified for this key"
-msgstr "<odabiri> su već određeni za ovaj ključ"
+msgstr "<choices> je već određen za ovaj ključ"
 
 #: gio/glib-compile-schemas.c:512
 #, c-format
 msgid "<choices> not allowed for keys of type “%s”"
-msgstr "<odabiri> nisu dopušten za ključ vrste “%s”"
+msgstr "<choices> nije dopušten za ključ vrste “%s”"
 
 #: gio/glib-compile-schemas.c:528
 #, c-format
 msgid "<choice value='%s'/> already given"
-msgstr "<vrijednost odabira='%s'/> je već zadana"
+msgstr "<choice value='%s'/> je već zadan"
 
 #: gio/glib-compile-schemas.c:543
 #, c-format
 msgid "<choices> must contain at least one <choice>"
-msgstr "<odabiri> moraju sadržavati najmanje jedan <odabir>"
+msgstr "<choices> mora sadržavati najmanje jedan <choice>"
 
 #: gio/glib-compile-schemas.c:557
 msgid "<aliases> already specified for this key"
-msgstr "<aliasi> su već određeni za ovaj ključ"
+msgstr "<aliases> je već određen za ovaj ključ"
 
 #: gio/glib-compile-schemas.c:561
 msgid ""
 "<aliases> can only be specified for keys with enumerated or flags types or "
 "after <choices>"
 msgstr ""
-"<aliasi> mogu biti određeni za nabrojanim ključevima ili vrstama oznake ili "
-"nakon <odabira>"
+"<aliases> može biti određen za ključeve s popisanim ili označenim vrstama "
+"ili nakon <choices>"
 
 #: gio/glib-compile-schemas.c:580
 #, c-format
 msgid ""
 "<alias value='%s'/> given when “%s” is already a member of the enumerated "
 "type"
-msgstr "<vrijednost aliasa='%s'/> zadana kada je “%s” već član nabrojane vrste"
+msgstr "<alias value='%s'/> je zadan kada je “%s” već član popisane vrste"
 
 #: gio/glib-compile-schemas.c:586
 #, c-format
 msgid "<alias value='%s'/> given when <choice value='%s'/> was already given"
-msgstr ""
-"<alias vrijednost='%s'/> zadana kada je <vrijednost odabira='%s'/> već zadana"
+msgstr "<alias value='%s'/> je zadan kada je <choice value='%s'/> već zadan"
 
 #: gio/glib-compile-schemas.c:594
 #, c-format
 msgid "<alias value='%s'/> already specified"
-msgstr "<alias vrijednost='%s'/> je već određena"
+msgstr "<alias value='%s'/> je već određen"
 
 #: gio/glib-compile-schemas.c:604
 #, c-format
 msgid "alias target “%s” is not in enumerated type"
-msgstr "alias odredište “%s” nije nabrojane vrste"
+msgstr "alias odredište “%s” nije popisana vrste"
 
 #: gio/glib-compile-schemas.c:605
 #, c-format
 msgid "alias target “%s” is not in <choices>"
-msgstr "alias odredište “%s” nije <odabir>"
+msgstr "alias odredište “%s” nije <choices>"
 
 #: gio/glib-compile-schemas.c:620
 #, c-format
 msgid "<aliases> must contain at least one <alias>"
-msgstr "<aliasi> moraju sadržavati najmanje jedan <alias>"
+msgstr "<aliases> mora sadržavati najmanje jedan <alias>"
 
 #: gio/glib-compile-schemas.c:797
 msgid "Empty names are not permitted"
@@ -2683,16 +2710,16 @@ msgstr "Nevaljani naziv “%s”: najveća duljina je 1024"
 #: gio/glib-compile-schemas.c:917
 #, c-format
 msgid "<child name='%s'> already specified"
-msgstr "<sadržani naziv='%s'> je već određen"
+msgstr "<child name='%s'> je već određen"
 
 #: gio/glib-compile-schemas.c:943
 msgid "Cannot add keys to a “list-of” schema"
-msgstr "Nemoguće dodavanje ključeva u “popis” shema"
+msgstr "Nemoguće dodavanje ključeva u “list-off” shemu"
 
 #: gio/glib-compile-schemas.c:954
 #, c-format
 msgid "<key name='%s'> already specified"
-msgstr "<naziv ključa='%s'> je već određen"
+msgstr "<key name='%s'> je već određen"
 
 #: gio/glib-compile-schemas.c:972
 #, c-format
@@ -2700,8 +2727,8 @@ msgid ""
 "<key name='%s'> shadows <key name='%s'> in <schema id='%s'>; use <override> "
 "to modify value"
 msgstr ""
-"<naziv ključa='%s'> shadows <naziv ključa='%s'> u <id sheme='%s'>; koristi "
-"<zaobilaženje> za promjenu vrijednosti"
+"<key name='%s'> shadows <key name='%s'> u <schema id='%s'>; koristi "
+"<override> za promjenu vrijednosti"
 
 #: gio/glib-compile-schemas.c:983
 #, c-format
@@ -2709,8 +2736,8 @@ msgid ""
 "Exactly one of “type”, “enum” or “flags” must be specified as an attribute "
 "to <key>"
 msgstr ""
-"Točno jedan od “vrste”, “nabrajanja” ili “oznake” mora biti određen kao "
-"svojstvo <ključa>"
+"Točno jedan od “type”, “enum” ili “flags” mora biti određen kao svojstvo "
+"<key>"
 
 #: gio/glib-compile-schemas.c:1002
 #, c-format
@@ -2724,32 +2751,32 @@ msgstr "Nevaljana GVariant vrsta niza “%s”"
 
 #: gio/glib-compile-schemas.c:1047
 msgid "<override> given but schema isn’t extending anything"
-msgstr "<zaobilaženje> je zadano ali shema ništa ne proširuje"
+msgstr "<override> je zadan ali shema ništa ne proširuje"
 
 #: gio/glib-compile-schemas.c:1060
 #, c-format
 msgid "No <key name='%s'> to override"
-msgstr "Nema <naziva ključa='%s'> za zaobilaženje"
+msgstr "Nema <key name='%s'> za zaobilaženje"
 
 #: gio/glib-compile-schemas.c:1068
 #, c-format
 msgid "<override name='%s'> already specified"
-msgstr "<naziv zaobilaženja='%s'> je već određen"
+msgstr "<override name='%s'> je već određen"
 
 #: gio/glib-compile-schemas.c:1141
 #, c-format
 msgid "<schema id='%s'> already specified"
-msgstr "<id sheme='%s'> je već određen"
+msgstr "<schema id='%s'> je već određen"
 
 #: gio/glib-compile-schemas.c:1153
 #, c-format
 msgid "<schema id='%s'> extends not yet existing schema “%s”"
-msgstr "<id sheme='%s'> proširenje još ne proširuje postojeću shemu “%s”"
+msgstr "<schema id='%s'> još ne proširuje postojeću shemu “%s”"
 
 #: gio/glib-compile-schemas.c:1169
 #, c-format
 msgid "<schema id='%s'> is list of not yet existing schema “%s”"
-msgstr "<id sheme='%s'> je popis još nepostojeće sheme “%s”"
+msgstr "<schema id='%s'> je popis još nepostojeće sheme “%s”"
 
 #: gio/glib-compile-schemas.c:1177
 #, c-format
@@ -2765,7 +2792,7 @@ msgstr "Ne može proširiti shemu s putanjom"
 #, c-format
 msgid ""
 "<schema id='%s'> is a list, extending <schema id='%s'> which is not a list"
-msgstr "<id sheme='%s'> je popis, proširuje se <id sheme='%s'> koji nije popis"
+msgstr "<schema id='%s'> je popis, proširuje <schema id='%s'> koji nije popis"
 
 #: gio/glib-compile-schemas.c:1207
 #, c-format
@@ -2773,8 +2800,8 @@ msgid ""
 "<schema id='%s' list-of='%s'> extends <schema id='%s' list-of='%s'> but “%s” "
 "does not extend “%s”"
 msgstr ""
-"<id sheme='%s' popis ='%s'> proširuje <id sheme='%s' popis='%s'> ali “%s” ne "
-"proširuje “%s”"
+"<schema id='%s' list-of='%s'> proširuje <schema id='%s' list-of='%s'> ali "
+"“%s” ne proširuje “%s”"
 
 #: gio/glib-compile-schemas.c:1224
 #, c-format
@@ -2812,7 +2839,7 @@ msgstr "Element <%s> nije dopušten na najvišoj razini"
 
 #: gio/glib-compile-schemas.c:1536
 msgid "Element <default> is required in <key>"
-msgstr "Element <zadan> je potreban u <ključu>"
+msgstr "Element <default> je potreban u <key>"
 
 #: gio/glib-compile-schemas.c:1626
 #, c-format
@@ -2822,7 +2849,7 @@ msgstr "Tekst se možda neće pojaviti unutar <%s>"
 #: gio/glib-compile-schemas.c:1694
 #, c-format
 msgid "Warning: undefined reference to <schema id='%s'/>"
-msgstr "Upozorenje: neodređena napomena na <id sheme='%s'/>"
+msgstr "Upozorenje: neodređena napomena u <schema id='%s'/>"
 
 #. Translators: Do not translate "--strict".
 #: gio/glib-compile-schemas.c:1833 gio/glib-compile-schemas.c:1912
@@ -3280,13 +3307,13 @@ msgstr "Greška stvaranja kopije sigurnosnog kopiranja: %s"
 msgid "Error renaming temporary file: %s"
 msgstr "Greška preimenovanja privremene datoteke: %s"
 
-#: gio/glocalfileoutputstream.c:609 gio/glocalfileoutputstream.c:1237
+#: gio/glocalfileoutputstream.c:609 gio/glocalfileoutputstream.c:1239
 #, c-format
 msgid "Error truncating file: %s"
 msgstr "Greška skraćivanja datoteke: %s"
 
 #: gio/glocalfileoutputstream.c:662 gio/glocalfileoutputstream.c:907
-#: gio/glocalfileoutputstream.c:1218 gio/gsubprocess.c:226
+#: gio/glocalfileoutputstream.c:1220 gio/gsubprocess.c:229
 #, c-format
 msgid "Error opening file “%s”: %s"
 msgstr "Greška otvaranja datoteke “%s”: %s"
@@ -3308,7 +3335,7 @@ msgstr "Datoteka je promijenjena izvana"
 msgid "Error removing old file: %s"
 msgstr "Greška uklanjanja stare datoteke: %s"
 
-#: gio/gmemoryinputstream.c:474 gio/gmemoryoutputstream.c:772
+#: gio/gmemoryinputstream.c:474 gio/gmemoryoutputstream.c:762
 msgid "Invalid GSeekType supplied"
 msgstr "Nevaljana GSeekType je pružana"
 
@@ -3320,15 +3347,15 @@ msgstr "Neispravan zahtjev premotavanja"
 msgid "Cannot truncate GMemoryInputStream"
 msgstr "Nemoguće je skratiti GMemoryInputStream"
 
-#: gio/gmemoryoutputstream.c:567
+#: gio/gmemoryoutputstream.c:568
 msgid "Memory output stream not resizable"
 msgstr "Memoriji izlaznog strujanja ne može se mijenjati veličina"
 
-#: gio/gmemoryoutputstream.c:583
+#: gio/gmemoryoutputstream.c:584
 msgid "Failed to resize memory output stream"
 msgstr "Nemoguća promjena veličine memorije izlaznog strujanja"
 
-#: gio/gmemoryoutputstream.c:673
+#: gio/gmemoryoutputstream.c:663
 msgid ""
 "Amount of memory required to process the write is larger than available "
 "address space"
@@ -3336,11 +3363,11 @@ msgstr ""
 "Količina memorije potrebna za obradu zapisa većeg od dostupnog adresiranog "
 "prostora"
 
-#: gio/gmemoryoutputstream.c:782
+#: gio/gmemoryoutputstream.c:772
 msgid "Requested seek before the beginning of the stream"
 msgstr "Zatraženo premotavanje prije početka strujanja"
 
-#: gio/gmemoryoutputstream.c:797
+#: gio/gmemoryoutputstream.c:787
 msgid "Requested seek beyond the end of the stream"
 msgstr "Zatraženo premotavanje izvan završetka strujanja"
 
@@ -3349,36 +3376,35 @@ msgstr "Zatraženo premotavanje izvan završetka strujanja"
 #. * don't implement unmount.
 #: gio/gmount.c:399
 msgid "mount doesn’t implement “unmount”"
-msgstr "montiranje nema implementirano “odmontiravanje”"
+msgstr "montiranje nema implementirano “unmount”"
 
 #. Translators: This is an error
 #. * message for mount objects that
 #. * don't implement eject.
 #: gio/gmount.c:475
 msgid "mount doesn’t implement “eject”"
-msgstr "montiranje nema implementirano “izbacivanje”"
+msgstr "montiranje nema implementirano “eject”"
 
 #. Translators: This is an error
 #. * message for mount objects that
 #. * don't implement any of unmount or unmount_with_operation.
 #: gio/gmount.c:553
 msgid "mount doesn’t implement “unmount” or “unmount_with_operation”"
-msgstr ""
-"montiranje nema implementirano “odmontiravanje” ili “odmotiraj_s_radnjom”"
+msgstr "montiranje nema implementirano “unmount” ili “unmount_with_operation”"
 
 #. Translators: This is an error
 #. * message for mount objects that
 #. * don't implement any of eject or eject_with_operation.
 #: gio/gmount.c:638
 msgid "mount doesn’t implement “eject” or “eject_with_operation”"
-msgstr "montiranje nema implementirano “izbacivanje” ili “izbaci_s_radnjom”"
+msgstr "montiranje nema implementirano “eject” ili “eject_with_operation”"
 
 #. Translators: This is an error
 #. * message for mount objects that
 #. * don't implement remount.
 #: gio/gmount.c:726
 msgid "mount doesn’t implement “remount”"
-msgstr "montiranje nema implementirano “ponovno montiranje”"
+msgstr "montiranje nema implementirano “remount”"
 
 #. Translators: This is an error
 #. * message for mount objects that
@@ -3397,7 +3423,7 @@ msgstr "montiranje nema implementirano sinkrono pogađanje vrste sadržaja"
 #: gio/gnetworkaddress.c:415
 #, c-format
 msgid "Hostname “%s” contains “[” but not “]”"
-msgstr "Naziv računala “%s” sadrži “[” ali ne “]”"
+msgstr "Naziv računala “%s” sadrži “[” ali ne “]”"
 
 #: gio/gnetworkmonitorbase.c:219 gio/gnetworkmonitorbase.c:323
 msgid "Network unreachable"
@@ -3444,18 +3470,22 @@ msgstr "Zbroj vektora proslijeđenih u %s je prevelik"
 msgid "Source stream is already closed"
 msgstr "Izvor strujanja je već zatvoren"
 
-#: gio/gresolver.c:386 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
+#. Translators: the first placeholder is a domain name, the
+#. * second is an error message
+#: gio/gresolver.c:401 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
+#: gio/gthreadedresolver.c:780 gio/gthreadedresolver.c:804
+#: gio/gthreadedresolver.c:829 gio/gthreadedresolver.c:844
 #, c-format
 msgid "Error resolving “%s”: %s"
 msgstr "Greška razrješavanja “%s”: %s"
 
 #. Translators: The placeholder is for a function name.
-#: gio/gresolver.c:455 gio/gresolver.c:615
+#: gio/gresolver.c:470 gio/gresolver.c:630
 #, c-format
 msgid "%s not implemented"
 msgstr "%s nije impelmentiran"
 
-#: gio/gresolver.c:984 gio/gresolver.c:1036
+#: gio/gresolver.c:999 gio/gresolver.c:1051
 msgid "Invalid domain"
 msgstr "Neispravna domena"
 
@@ -3570,7 +3600,7 @@ msgstr ""
 msgid "  SECTION   An (optional) elf section name\n"
 msgstr "  ODJELJAK   (Neobavezni) elf naziv odjeljka\n"
 
-#: gio/gresource-tool.c:565 gio/gsettings-tool.c:706
+#: gio/gresource-tool.c:565 gio/gsettings-tool.c:718
 msgid "  COMMAND   The (optional) command to explain\n"
 msgstr "  Naredba   (Neobavezna) naredba objašnjenja\n"
 
@@ -3602,7 +3632,7 @@ msgstr "PUTANJA"
 msgid "  PATH      A resource path\n"
 msgstr "  PUTANJA      Putanja resursa\n"
 
-#: gio/gsettings-tool.c:49 gio/gsettings-tool.c:70 gio/gsettings-tool.c:911
+#: gio/gsettings-tool.c:49 gio/gsettings-tool.c:70 gio/gsettings-tool.c:923
 #, c-format
 msgid "No such schema “%s”\n"
 msgstr "Nema takve sheme “%s”\n"
@@ -3633,35 +3663,35 @@ msgstr "Putanja mora završavati s kosom crtom (/)\n"
 msgid "Path must not contain two adjacent slashes (//)\n"
 msgstr "Putanja ne smije sadržavati dvije uzastopne kose crte (//)\n"
 
-#: gio/gsettings-tool.c:541
+#: gio/gsettings-tool.c:553
 msgid "The provided value is outside of the valid range\n"
-msgstr "Pružene vrijednosti su izvan valjanog raspona\n"
+msgstr "Navedene vrijednosti su izvan valjanog raspona\n"
 
-#: gio/gsettings-tool.c:548
+#: gio/gsettings-tool.c:560
 msgid "The key is not writable\n"
 msgstr "Ključ nije zapisiv\n"
 
-#: gio/gsettings-tool.c:584
+#: gio/gsettings-tool.c:596
 msgid "List the installed (non-relocatable) schemas"
 msgstr "Prikaži instalirane (nepremjestive) sheme"
 
-#: gio/gsettings-tool.c:590
+#: gio/gsettings-tool.c:602
 msgid "List the installed relocatable schemas"
 msgstr "Prikaži instalirane premjestive sheme"
 
-#: gio/gsettings-tool.c:596
+#: gio/gsettings-tool.c:608
 msgid "List the keys in SCHEMA"
 msgstr "Prikaži ključeve U SHEMI"
 
-#: gio/gsettings-tool.c:597 gio/gsettings-tool.c:603 gio/gsettings-tool.c:646
+#: gio/gsettings-tool.c:609 gio/gsettings-tool.c:615 gio/gsettings-tool.c:658
 msgid "SCHEMA[:PATH]"
 msgstr "SHEMA[:PUTANJA]"
 
-#: gio/gsettings-tool.c:602
+#: gio/gsettings-tool.c:614
 msgid "List the children of SCHEMA"
 msgstr "Prikaži podsadržaj SHEME"
 
-#: gio/gsettings-tool.c:608
+#: gio/gsettings-tool.c:620
 msgid ""
 "List keys and values, recursively\n"
 "If no SCHEMA is given, list all keys\n"
@@ -3669,48 +3699,48 @@ msgstr ""
 "Prikaži ključeve i vrijednosti, rekruzivno\n"
 "Ako nema zadane SHEME, prikaži sve ključeve\n"
 
-#: gio/gsettings-tool.c:610
+#: gio/gsettings-tool.c:622
 msgid "[SCHEMA[:PATH]]"
 msgstr "[SHEMA[:PUTANJA]]"
 
-#: gio/gsettings-tool.c:615
+#: gio/gsettings-tool.c:627
 msgid "Get the value of KEY"
 msgstr "Nabavi vrijednost KLJUČA"
 
-#: gio/gsettings-tool.c:616 gio/gsettings-tool.c:622 gio/gsettings-tool.c:628
-#: gio/gsettings-tool.c:640 gio/gsettings-tool.c:652
+#: gio/gsettings-tool.c:628 gio/gsettings-tool.c:634 gio/gsettings-tool.c:640
+#: gio/gsettings-tool.c:652 gio/gsettings-tool.c:664
 msgid "SCHEMA[:PATH] KEY"
 msgstr "SHEMA[:PUTANJA] KLJUČ"
 
-#: gio/gsettings-tool.c:621
+#: gio/gsettings-tool.c:633
 msgid "Query the range of valid values for KEY"
 msgstr "Upitaj za raspon valjanih vrijednosti KLJUČA"
 
-#: gio/gsettings-tool.c:627
+#: gio/gsettings-tool.c:639
 msgid "Query the description for KEY"
 msgstr "Upitaj za opis KLJUČA"
 
-#: gio/gsettings-tool.c:633
+#: gio/gsettings-tool.c:645
 msgid "Set the value of KEY to VALUE"
 msgstr "Postavi vrijednost KLJUČA u VRIJEDNOST"
 
-#: gio/gsettings-tool.c:634
+#: gio/gsettings-tool.c:646
 msgid "SCHEMA[:PATH] KEY VALUE"
 msgstr "SHEMA[:PUTANJA] VRIJEDNOST KLJUČA"
 
-#: gio/gsettings-tool.c:639
+#: gio/gsettings-tool.c:651
 msgid "Reset KEY to its default value"
 msgstr "Vrati KLJUČ na njegovu zadanu vrijednost"
 
-#: gio/gsettings-tool.c:645
+#: gio/gsettings-tool.c:657
 msgid "Reset all keys in SCHEMA to their defaults"
 msgstr "Vrati sve ključeve u SHEMI na njihove zadane vrijednosti"
 
-#: gio/gsettings-tool.c:651
+#: gio/gsettings-tool.c:663
 msgid "Check if KEY is writable"
 msgstr "Provjeri je li KLJUČ zapisiv"
 
-#: gio/gsettings-tool.c:657
+#: gio/gsettings-tool.c:669
 msgid ""
 "Monitor KEY for changes.\n"
 "If no KEY is specified, monitor all keys in SCHEMA.\n"
@@ -3720,11 +3750,11 @@ msgstr ""
 "Ako KLJUČ nije naveden, nadgledaj sve ključeve u SHEMI.\n"
 "Koristite ^C za zaustavljanje nadgledanja.\n"
 
-#: gio/gsettings-tool.c:660
+#: gio/gsettings-tool.c:672
 msgid "SCHEMA[:PATH] [KEY]"
 msgstr "SHEMA[:PUTANJA] [KLJUČ]"
 
-#: gio/gsettings-tool.c:672
+#: gio/gsettings-tool.c:684
 msgid ""
 "Usage:\n"
 "  gsettings --version\n"
@@ -3772,7 +3802,7 @@ msgstr ""
 "Koristite “gsettings help NAREDBA” za opširniju pomoć.\n"
 "\n"
 
-#: gio/gsettings-tool.c:696
+#: gio/gsettings-tool.c:708
 #, c-format
 msgid ""
 "Usage:\n"
@@ -3787,11 +3817,11 @@ msgstr ""
 "%s\n"
 "\n"
 
-#: gio/gsettings-tool.c:702
+#: gio/gsettings-tool.c:714
 msgid "  SCHEMADIR A directory to search for additional schemas\n"
 msgstr "  DIREKTORIJ SHEME Direktorij za pretragu dodatnih shema\n"
 
-#: gio/gsettings-tool.c:710
+#: gio/gsettings-tool.c:722
 msgid ""
 "  SCHEMA    The name of the schema\n"
 "  PATH      The path, for relocatable schemas\n"
@@ -3799,213 +3829,213 @@ msgstr ""
 "  SHEMA    Naziv sheme\n"
 "  PUTANJA      Putanja, za premjestive sheme\n"
 
-#: gio/gsettings-tool.c:715
+#: gio/gsettings-tool.c:727
 msgid "  KEY       The (optional) key within the schema\n"
 msgstr "  KLJUČ       (Neobavezno) ključ sadržan unutar sheme\n"
 
-#: gio/gsettings-tool.c:719
+#: gio/gsettings-tool.c:731
 msgid "  KEY       The key within the schema\n"
 msgstr "  KLJUČ       Ključ sadržan unutar sheme\n"
 
-#: gio/gsettings-tool.c:723
+#: gio/gsettings-tool.c:735
 msgid "  VALUE     The value to set\n"
 msgstr "  VRIJEDNOST     Vrijednost za postaviti\n"
 
-#: gio/gsettings-tool.c:778
+#: gio/gsettings-tool.c:790
 #, c-format
 msgid "Could not load schemas from %s: %s\n"
 msgstr "Nemoguće učitavanje sheme iz %s: %s\n"
 
-#: gio/gsettings-tool.c:790
+#: gio/gsettings-tool.c:802
 msgid "No schemas installed\n"
 msgstr "Nema instaliranih shema\n"
 
-#: gio/gsettings-tool.c:869
+#: gio/gsettings-tool.c:881
 msgid "Empty schema name given\n"
 msgstr "Zadan je prazan naziv sheme\n"
 
-#: gio/gsettings-tool.c:924
+#: gio/gsettings-tool.c:936
 #, c-format
 msgid "No such key “%s”\n"
 msgstr "Nema takvog ključa “%s”\n"
 
-#: gio/gsocket.c:413
+#: gio/gsocket.c:417
 msgid "Invalid socket, not initialized"
 msgstr "Nevaljana priključnica, nije pokrenuto"
 
-#: gio/gsocket.c:420
+#: gio/gsocket.c:424
 #, c-format
 msgid "Invalid socket, initialization failed due to: %s"
 msgstr "Nevaljana priključnica, neuspjelo pokretanje zbog: %s"
 
-#: gio/gsocket.c:428
+#: gio/gsocket.c:432
 msgid "Socket is already closed"
 msgstr "Priključnica je već zatvorena"
 
-#: gio/gsocket.c:443 gio/gsocket.c:3190 gio/gsocket.c:4420 gio/gsocket.c:4478
+#: gio/gsocket.c:447 gio/gsocket.c:3194 gio/gsocket.c:4427 gio/gsocket.c:4485
 msgid "Socket I/O timed out"
 msgstr "Istek vremena U/I priključnice"
 
-#: gio/gsocket.c:578
+#: gio/gsocket.c:582
 #, c-format
 msgid "creating GSocket from fd: %s"
 msgstr "stvaranje GSocketa iz fd: %s"
 
-#: gio/gsocket.c:607 gio/gsocket.c:671 gio/gsocket.c:678
+#: gio/gsocket.c:611 gio/gsocket.c:675 gio/gsocket.c:682
 #, c-format
 msgid "Unable to create socket: %s"
 msgstr "Nemoguće stvaranje priključnice: %s"
 
-#: gio/gsocket.c:671
+#: gio/gsocket.c:675
 msgid "Unknown family was specified"
 msgstr "Navedena je nepoznata obitelj"
 
-#: gio/gsocket.c:678
+#: gio/gsocket.c:682
 msgid "Unknown protocol was specified"
 msgstr "Naveden je nepoznat protokol"
 
-#: gio/gsocket.c:1169
+#: gio/gsocket.c:1173
 #, c-format
 msgid "Cannot use datagram operations on a non-datagram socket."
 msgstr "Nemoguće korištenje datagram radnji na ne-datagram priključnici."
 
-#: gio/gsocket.c:1186
+#: gio/gsocket.c:1190
 #, c-format
 msgid "Cannot use datagram operations on a socket with a timeout set."
 msgstr ""
 "Nemoguće korištenje datagram radnji na priključnici s postavljenim istekom "
 "vremena."
 
-#: gio/gsocket.c:1993
+#: gio/gsocket.c:1997
 #, c-format
 msgid "could not get local address: %s"
 msgstr "nemoguće dobivanje lokalne adrese: %s"
 
-#: gio/gsocket.c:2039
+#: gio/gsocket.c:2043
 #, c-format
 msgid "could not get remote address: %s"
 msgstr "nemoguće dobivanje udaljene adrese: %s"
 
-#: gio/gsocket.c:2105
+#: gio/gsocket.c:2109
 #, c-format
 msgid "could not listen: %s"
 msgstr "nemoguće osluškivanje: %s"
 
-#: gio/gsocket.c:2209
+#: gio/gsocket.c:2213
 #, c-format
 msgid "Error binding to address %s: %s"
 msgstr "Greška povezivanja s adresom %s: %s"
 
-#: gio/gsocket.c:2385 gio/gsocket.c:2422 gio/gsocket.c:2532 gio/gsocket.c:2557
-#: gio/gsocket.c:2620 gio/gsocket.c:2678 gio/gsocket.c:2696
+#: gio/gsocket.c:2389 gio/gsocket.c:2426 gio/gsocket.c:2536 gio/gsocket.c:2561
+#: gio/gsocket.c:2624 gio/gsocket.c:2682 gio/gsocket.c:2700
 #, c-format
 msgid "Error joining multicast group: %s"
 msgstr "Greška pridruživanja multicast grupi: %s"
 
-#: gio/gsocket.c:2386 gio/gsocket.c:2423 gio/gsocket.c:2533 gio/gsocket.c:2558
-#: gio/gsocket.c:2621 gio/gsocket.c:2679 gio/gsocket.c:2697
+#: gio/gsocket.c:2390 gio/gsocket.c:2427 gio/gsocket.c:2537 gio/gsocket.c:2562
+#: gio/gsocket.c:2625 gio/gsocket.c:2683 gio/gsocket.c:2701
 #, c-format
 msgid "Error leaving multicast group: %s"
 msgstr "Greška napuštanja multicast grupe: %s"
 
-#: gio/gsocket.c:2387
+#: gio/gsocket.c:2391
 msgid "No support for source-specific multicast"
 msgstr "Nema podrške za izvorom-određeni multicast"
 
-#: gio/gsocket.c:2534
+#: gio/gsocket.c:2538
 msgid "Unsupported socket family"
 msgstr "Nepodržana obitelj priključnice"
 
-#: gio/gsocket.c:2559
+#: gio/gsocket.c:2563
 msgid "source-specific not an IPv4 address"
 msgstr "izvorom-određeno nije IPv4 adresa"
 
-#: gio/gsocket.c:2583
+#: gio/gsocket.c:2587
 #, c-format
 msgid "Interface name too long"
 msgstr "Naziv sučelja je predugačak"
 
-#: gio/gsocket.c:2596 gio/gsocket.c:2646
+#: gio/gsocket.c:2600 gio/gsocket.c:2650
 #, c-format
 msgid "Interface not found: %s"
 msgstr "Sučelje nije pronađeno: %s"
 
-#: gio/gsocket.c:2622
+#: gio/gsocket.c:2626
 msgid "No support for IPv4 source-specific multicast"
 msgstr "Nema podrške za IPv4 izvorom-određeni multicast"
 
-#: gio/gsocket.c:2680
+#: gio/gsocket.c:2684
 msgid "No support for IPv6 source-specific multicast"
 msgstr "Nema podrške za IPv6 izvorom-određeni multicast"
 
-#: gio/gsocket.c:2889
+#: gio/gsocket.c:2893
 #, c-format
 msgid "Error accepting connection: %s"
 msgstr "Greška prihvaćanja povezivanja: %s"
 
-#: gio/gsocket.c:3015
+#: gio/gsocket.c:3019
 msgid "Connection in progress"
 msgstr "Povezivanje u tijeku"
 
-#: gio/gsocket.c:3066
+#: gio/gsocket.c:3070
 msgid "Unable to get pending error: "
 msgstr "Nemoguće dobivanje greške čekanja: "
 
-#: gio/gsocket.c:3255
+#: gio/gsocket.c:3259
 #, c-format
 msgid "Error receiving data: %s"
 msgstr "Greška primanja podataka: %s"
 
-#: gio/gsocket.c:3452
+#: gio/gsocket.c:3456
 #, c-format
 msgid "Error sending data: %s"
 msgstr "Greška slanja podataka: %s"
 
-#: gio/gsocket.c:3639
+#: gio/gsocket.c:3643
 #, c-format
 msgid "Unable to shutdown socket: %s"
 msgstr "Nemoguće isključivanje priključnice: %s"
 
-#: gio/gsocket.c:3720
+#: gio/gsocket.c:3724
 #, c-format
 msgid "Error closing socket: %s"
 msgstr "Greška zatvaranja priključnice: %s"
 
-#: gio/gsocket.c:4413
+#: gio/gsocket.c:4420
 #, c-format
 msgid "Waiting for socket condition: %s"
 msgstr "Čekanje stanja priključnice: %s"
 
-#: gio/gsocket.c:4804 gio/gsocket.c:4820 gio/gsocket.c:4833
+#: gio/gsocket.c:4810 gio/gsocket.c:4826 gio/gsocket.c:4839
 #, c-format
 msgid "Unable to send message: %s"
 msgstr "Nemoguće slanje poruke: %s"
 
-#: gio/gsocket.c:4805 gio/gsocket.c:4821 gio/gsocket.c:4834
+#: gio/gsocket.c:4811 gio/gsocket.c:4827 gio/gsocket.c:4840
 msgid "Message vectors too large"
 msgstr "Vektori poruke su preveliki"
 
-#: gio/gsocket.c:4850 gio/gsocket.c:4852 gio/gsocket.c:4999 gio/gsocket.c:5084
-#: gio/gsocket.c:5262 gio/gsocket.c:5302 gio/gsocket.c:5304
+#: gio/gsocket.c:4856 gio/gsocket.c:4858 gio/gsocket.c:5005 gio/gsocket.c:5090
+#: gio/gsocket.c:5268 gio/gsocket.c:5308 gio/gsocket.c:5310
 #, c-format
 msgid "Error sending message: %s"
 msgstr "Greška slanja poruke: %s"
 
-#: gio/gsocket.c:5026
+#: gio/gsocket.c:5032
 msgid "GSocketControlMessage not supported on Windows"
 msgstr "GSocketControlMessage nije podržano na Windowsima"
 
-#: gio/gsocket.c:5499 gio/gsocket.c:5575 gio/gsocket.c:5801
+#: gio/gsocket.c:5505 gio/gsocket.c:5581 gio/gsocket.c:5807
 #, c-format
 msgid "Error receiving message: %s"
 msgstr "Greška primanja poruke: %s"
 
-#: gio/gsocket.c:6074 gio/gsocket.c:6085 gio/gsocket.c:6131
+#: gio/gsocket.c:6090 gio/gsocket.c:6101 gio/gsocket.c:6164
 #, c-format
 msgid "Unable to read socket credentials: %s"
 msgstr "Nemoguće čitanje vjerodajnice priključnice: %s"
 
-#: gio/gsocket.c:6140
+#: gio/gsocket.c:6173
 msgid "g_socket_get_credentials not implemented for this OS"
 msgstr "g_socket_get_credentials nije implemetirano za ovaj OS"
 
@@ -4023,11 +4053,11 @@ msgstr "Nemoguće povezivanje sa %s: "
 msgid "Could not connect: "
 msgstr "Nemoguće povezivanje: "
 
-#: gio/gsocketclient.c:1162 gio/gsocketclient.c:1749
+#: gio/gsocketclient.c:1202 gio/gsocketclient.c:1793
 msgid "Proxying over a non-TCP connection is not supported."
 msgstr "Proxyiranje putem ne-TCP povezivanja nije podržano."
 
-#: gio/gsocketclient.c:1194 gio/gsocketclient.c:1778
+#: gio/gsocketclient.c:1234 gio/gsocketclient.c:1822
 #, c-format
 msgid "Proxy protocol “%s” is not supported."
 msgstr "Proxy protokol “%s” još nije podržan."
@@ -4126,6 +4156,17 @@ msgstr "SOCKSv5 proxy ne podržava navedenu vrstu adrese."
 msgid "Unknown SOCKSv5 proxy error."
 msgstr "Nepoznata SOCKSv5 proxy greška."
 
+#: gio/gtestdbus.c:612 glib/gspawn-win32.c:314
+#, c-format
+msgid "Failed to create pipe for communicating with child process (%s)"
+msgstr ""
+"Neuspjelo stvaranje slivnika za komunikaciju s podređenim procesom (%s)"
+
+#: gio/gtestdbus.c:619
+#, c-format
+msgid "Pipes are not supported in this platform"
+msgstr "Slivnici nisu podržani na ovoj platformi"
+
 #: gio/gthemedicon.c:595
 #, c-format
 msgid "Can’t handle version %d of GThemedIcon encoding"
@@ -4140,44 +4181,66 @@ msgstr "Nema pronađenih valjanih adresa"
 msgid "Error reverse-resolving “%s”: %s"
 msgstr "Greška obrnutog razrješavanja “%s”: %s"
 
-#: gio/gthreadedresolver.c:676 gio/gthreadedresolver.c:755
-#: gio/gthreadedresolver.c:853 gio/gthreadedresolver.c:903
+#. Translators: the placeholder is a DNS record type, such as ‘MX’ or ‘SRV’
+#: gio/gthreadedresolver.c:550 gio/gthreadedresolver.c:572
+#: gio/gthreadedresolver.c:610 gio/gthreadedresolver.c:657
+#: gio/gthreadedresolver.c:686 gio/gthreadedresolver.c:698
+#, c-format
+msgid "Error parsing DNS %s record: malformed DNS packet"
+msgstr "Greška obrade DNS %s zapisa: oštećen DNS paket"
+
+#: gio/gthreadedresolver.c:756 gio/gthreadedresolver.c:893
+#: gio/gthreadedresolver.c:991 gio/gthreadedresolver.c:1041
 #, c-format
 msgid "No DNS record of the requested type for “%s”"
 msgstr "Nema DNS zapisa zahtijevane vrste za “%s”"
 
-#: gio/gthreadedresolver.c:681 gio/gthreadedresolver.c:858
+#: gio/gthreadedresolver.c:761 gio/gthreadedresolver.c:996
 #, c-format
 msgid "Temporarily unable to resolve “%s”"
 msgstr "Privremeno nedostupno za razrješavanje “%s”"
 
-#: gio/gthreadedresolver.c:686 gio/gthreadedresolver.c:863
-#: gio/gthreadedresolver.c:973
+#: gio/gthreadedresolver.c:766 gio/gthreadedresolver.c:1001
+#: gio/gthreadedresolver.c:1111
 #, c-format
 msgid "Error resolving “%s”"
 msgstr "Greška razrješavanja “%s”"
 
-#: gio/gtlscertificate.c:431
+#: gio/gthreadedresolver.c:780 gio/gthreadedresolver.c:804
+#: gio/gthreadedresolver.c:829 gio/gthreadedresolver.c:844
+msgid "Malformed DNS packet"
+msgstr "Oštećen DNS paket"
+
+#: gio/gthreadedresolver.c:886
+#, c-format
+msgid "Failed to parse DNS response for “%s”: "
+msgstr "Neuspjela obrada DNS odgovora za “%s”: "
+
+#: gio/gtlscertificate.c:478
 msgid "No PEM-encoded private key found"
 msgstr "Nema pronađenog PEM-kôdiranog privatnog ključa"
 
-#: gio/gtlscertificate.c:441
+#: gio/gtlscertificate.c:488
 msgid "Cannot decrypt PEM-encoded private key"
 msgstr "Nemoguće dešifriranje PEM-kôdiranog privatnog ključa"
 
-#: gio/gtlscertificate.c:452
+#: gio/gtlscertificate.c:499
 msgid "Could not parse PEM-encoded private key"
 msgstr "Nemoguća obrada PEM-kôdiranog privatnog ključa"
 
-#: gio/gtlscertificate.c:479
+#: gio/gtlscertificate.c:526
 msgid "No PEM-encoded certificate found"
 msgstr "Nema pronađene PEM-kôdirane vjerodajnice"
 
-#: gio/gtlscertificate.c:488
+#: gio/gtlscertificate.c:535
 msgid "Could not parse PEM-encoded certificate"
 msgstr "Nemoguća obrada PEM-kôdirane vjerodajnice"
 
-#: gio/gtlscertificate.c:844
+#: gio/gtlscertificate.c:796
+msgid "The current TLS backend does not support PKCS #12"
+msgstr "Trenutni TLS pozadinski program ne podržava PKCS #12"
+
+#: gio/gtlscertificate.c:1013
 msgid "This GTlsBackend does not support creating PKCS #11 certificates"
 msgstr "GTlsBackend ne podržava stvaranje PKCS #11 vjerodajnica"
 
@@ -4203,7 +4266,11 @@ msgstr ""
 msgid "The password entered is incorrect."
 msgstr "Upisana lozinka je neispravna."
 
-#: gio/gunixconnection.c:166 gio/gunixconnection.c:579
+#: gio/gunixconnection.c:125
+msgid "Sending FD is not supported"
+msgstr "FD slanje nije podržano"
+
+#: gio/gunixconnection.c:178 gio/gunixconnection.c:596
 #, c-format
 msgid "Expecting 1 control message, got %d"
 msgid_plural "Expecting 1 control message, got %d"
@@ -4211,11 +4278,11 @@ msgstr[0] "Očekivana je 1 kontrolna poruka, dobivena je %d"
 msgstr[1] "Očekivana je 1 kontrolna poruka, dobivene su %d"
 msgstr[2] "Očekivana je 1 kontrolna poruka, dobiveno je %d"
 
-#: gio/gunixconnection.c:182 gio/gunixconnection.c:591
+#: gio/gunixconnection.c:194 gio/gunixconnection.c:608
 msgid "Unexpected type of ancillary data"
 msgstr "Neočekivana vrsta pomoćnih podataka"
 
-#: gio/gunixconnection.c:200
+#: gio/gunixconnection.c:212
 #, c-format
 msgid "Expecting one fd, but got %d\n"
 msgid_plural "Expecting one fd, but got %d\n"
@@ -4223,37 +4290,41 @@ msgstr[0] "Očekivan je jedan fd, ali dobiven je %d\n"
 msgstr[1] "Očekivan je jedan fd, ali dobivena su %d\n"
 msgstr[2] "Očekivan je jedan fd, ali dobiveno je %d\n"
 
-#: gio/gunixconnection.c:219
+#: gio/gunixconnection.c:231
 msgid "Received invalid fd"
 msgstr "Primljen je nevaljani fd"
 
-#: gio/gunixconnection.c:363
+#: gio/gunixconnection.c:238
+msgid "Receiving FD is not supported"
+msgstr "FD primanje nije podržano"
+
+#: gio/gunixconnection.c:380
 msgid "Error sending credentials: "
 msgstr "Greška slanja vjerodajnica: "
 
-#: gio/gunixconnection.c:520
+#: gio/gunixconnection.c:537
 #, c-format
 msgid "Error checking if SO_PASSCRED is enabled for socket: %s"
 msgstr "Greška provjere je li SO_PASSCRED omogućen za priključnicu: %s"
 
-#: gio/gunixconnection.c:536
+#: gio/gunixconnection.c:553
 #, c-format
 msgid "Error enabling SO_PASSCRED: %s"
 msgstr "Greška omgućavanja SO_PASSCRED: %s"
 
-#: gio/gunixconnection.c:565
+#: gio/gunixconnection.c:582
 msgid ""
 "Expecting to read a single byte for receiving credentials but read zero bytes"
 msgstr ""
 "Očekivano čitanje je jedan bajt primljenih vjerodajnica ali očitano je nula "
 "bajta"
 
-#: gio/gunixconnection.c:605
+#: gio/gunixconnection.c:622
 #, c-format
 msgid "Not expecting control message, but got %d"
 msgstr "Ne očekuje se kontrolna poruka, ali dobivena je %d"
 
-#: gio/gunixconnection.c:630
+#: gio/gunixconnection.c:647
 #, c-format
 msgid "Error while disabling SO_PASSCRED: %s"
 msgstr "Greška onemogućavanja SO_PASSCRED: %s"
@@ -4269,7 +4340,7 @@ msgstr "Greška čitanja iz opisnika datoteke: %s"
 msgid "Error closing file descriptor: %s"
 msgstr "Greška zatvaranja opisnika datoteke: %s"
 
-#: gio/gunixmounts.c:2782 gio/gunixmounts.c:2835
+#: gio/gunixmounts.c:2809 gio/gunixmounts.c:2862
 msgid "Filesystem root"
 msgstr "Korijenski datotečni sustav"
 
@@ -4280,7 +4351,7 @@ msgstr "Korijenski datotečni sustav"
 msgid "Error writing to file descriptor: %s"
 msgstr "Greška zapisivanja u opisnik datoteke: %s"
 
-#: gio/gunixsocketaddress.c:244
+#: gio/gunixsocketaddress.c:251
 msgid "Abstract UNIX domain socket addresses not supported on this system"
 msgstr "Sažeta UNIX domena priključnice adrese nije podržana na ovom sustavu"
 
@@ -4430,8 +4501,8 @@ msgstr "Neuspjelo proširivanje redka izvršavanja “%s” sa URI-jem “%s”"
 msgid "Unrepresentable character in conversion input"
 msgstr "Nereprezentativni znak u ulazu pretvorbe"
 
-#: glib/gconvert.c:495 glib/gutf8.c:871 glib/gutf8.c:1084 glib/gutf8.c:1221
-#: glib/gutf8.c:1325
+#: glib/gconvert.c:495 glib/gutf8.c:886 glib/gutf8.c:1099 glib/gutf8.c:1236
+#: glib/gutf8.c:1340
 msgid "Partial character sequence at end of input"
 msgstr "Nedovršeni niz znakova na kraju ulaza"
 
@@ -4745,62 +4816,62 @@ msgstr "Ned"
 #: glib/gdatetime.c:468
 msgctxt "full month name with day"
 msgid "January"
-msgstr "siječnja"
+msgstr "siječanj"
 
 #: glib/gdatetime.c:470
 msgctxt "full month name with day"
 msgid "February"
-msgstr "veljače"
+msgstr "veljača"
 
 #: glib/gdatetime.c:472
 msgctxt "full month name with day"
 msgid "March"
-msgstr "ožujka"
+msgstr "ožujak"
 
 #: glib/gdatetime.c:474
 msgctxt "full month name with day"
 msgid "April"
-msgstr "travnja"
+msgstr "travanj"
 
 #: glib/gdatetime.c:476
 msgctxt "full month name with day"
 msgid "May"
-msgstr "svibnja"
+msgstr "svibanj"
 
 #: glib/gdatetime.c:478
 msgctxt "full month name with day"
 msgid "June"
-msgstr "lipnja"
+msgstr "lipanj"
 
 #: glib/gdatetime.c:480
 msgctxt "full month name with day"
 msgid "July"
-msgstr "srpnja"
+msgstr "srpanj"
 
 #: glib/gdatetime.c:482
 msgctxt "full month name with day"
 msgid "August"
-msgstr "kolovoza"
+msgstr "kolovoz"
 
 #: glib/gdatetime.c:484
 msgctxt "full month name with day"
 msgid "September"
-msgstr "rujna"
+msgstr "rujan"
 
 #: glib/gdatetime.c:486
 msgctxt "full month name with day"
 msgid "October"
-msgstr "listopada"
+msgstr "listopad"
 
 #: glib/gdatetime.c:488
 msgctxt "full month name with day"
 msgid "November"
-msgstr "studenoga"
+msgstr "studeni"
 
 #: glib/gdatetime.c:490
 msgctxt "full month name with day"
 msgid "December"
-msgstr "prosinca"
+msgstr "prosinac"
 
 #. Translators: Some languages need different grammatical forms of
 #. * month names depending on whether they are standalone or in a full
@@ -4896,7 +4967,7 @@ msgstr "PM"
 msgid "Error opening directory “%s”: %s"
 msgstr "Greška otvaranja direktorija “%s”: %s"
 
-#: glib/gfileutils.c:738 glib/gfileutils.c:830
+#: glib/gfileutils.c:733 glib/gfileutils.c:825
 #, c-format
 msgid "Could not allocate %lu byte to read file “%s”"
 msgid_plural "Could not allocate %lu bytes to read file “%s”"
@@ -4904,72 +4975,72 @@ msgstr[0] "Nemoguće dodjeljivanje %lu bajta u datoteku čitanja “%s”"
 msgstr[1] "Nemoguće dodjeljivanje %lu bajta u datoteku čitanja “%s”"
 msgstr[2] "Nemoguće dodjeljivanje %lu bajta u datoteku čitanja “%s”"
 
-#: glib/gfileutils.c:755
+#: glib/gfileutils.c:750
 #, c-format
 msgid "Error reading file “%s”: %s"
 msgstr "Greška čitanja datoteke “%s”: %s"
 
-#: glib/gfileutils.c:791
+#: glib/gfileutils.c:786
 #, c-format
 msgid "File “%s” is too large"
 msgstr "Datoteka “%s” je prevelika"
 
-#: glib/gfileutils.c:855
+#: glib/gfileutils.c:850
 #, c-format
 msgid "Failed to read from file “%s”: %s"
 msgstr "Neuspjelo čitanje iz datoteke “%s”: %s"
 
-#: glib/gfileutils.c:905 glib/gfileutils.c:980 glib/gfileutils.c:1469
+#: glib/gfileutils.c:900 glib/gfileutils.c:975 glib/gfileutils.c:1447
 #, c-format
 msgid "Failed to open file “%s”: %s"
 msgstr "Nemoguće otvaranje datoteke “%s“: %s"
 
-#: glib/gfileutils.c:918
+#: glib/gfileutils.c:913
 #, c-format
 msgid "Failed to get attributes of file “%s”: fstat() failed: %s"
 msgstr "Neuspjelo dobivanje svojstva datoteke “%s”: fstat() neuspio: %s"
 
-#: glib/gfileutils.c:949
+#: glib/gfileutils.c:944
 #, c-format
 msgid "Failed to open file “%s”: fdopen() failed: %s"
 msgstr "Neuspjelo otvaranje datoteke “%s”: fdopen() neuspio: %s"
 
-#: glib/gfileutils.c:1050
+#: glib/gfileutils.c:1045
 #, c-format
 msgid "Failed to rename file “%s” to “%s”: g_rename() failed: %s"
 msgstr "Neuspjelo preimenovanje datoteke “%s” u “%s”: g_rename() neuspio: %s"
 
-#: glib/gfileutils.c:1176
+#: glib/gfileutils.c:1154
 #, c-format
 msgid "Failed to write file “%s”: write() failed: %s"
 msgstr "Neuspjelo zapisivanje datoteke “%s”: write() neuspio: %s"
 
-#: glib/gfileutils.c:1197
+#: glib/gfileutils.c:1175
 #, c-format
 msgid "Failed to write file “%s”: fsync() failed: %s"
 msgstr "Neuspjelo zapisivanje datoteke “%s”: fsync() neuspio: %s"
 
-#: glib/gfileutils.c:1358 glib/gfileutils.c:1773
+#: glib/gfileutils.c:1336 glib/gfileutils.c:1751
 #, c-format
 msgid "Failed to create file “%s”: %s"
 msgstr "Neuspjelo stvaranje datoteke \"%s\": %s"
 
-#: glib/gfileutils.c:1403
+#: glib/gfileutils.c:1381
 #, c-format
 msgid "Existing file “%s” could not be removed: g_unlink() failed: %s"
 msgstr "Postojeća datoteka “%s” se ne može ukloniti: g_unlink() neuspio: %s"
 
-#: glib/gfileutils.c:1738
+#: glib/gfileutils.c:1716
 #, c-format
 msgid "Template “%s” invalid, should not contain a “%s”"
 msgstr "Predložak “%s” je nevaljan, ne smije sadržavati “%s”"
 
-#: glib/gfileutils.c:1751
+#: glib/gfileutils.c:1729
 #, c-format
 msgid "Template “%s” doesn’t contain XXXXXX"
 msgstr "Predložak “%s” ne sadrži XXXXXX"
 
-#: glib/gfileutils.c:2311 glib/gfileutils.c:2340
+#: glib/gfileutils.c:2289 glib/gfileutils.c:2318
 #, c-format
 msgid "Failed to read the symbolic link “%s”: %s"
 msgstr "Neuspjelo čitanje simboličke poveznice “%s”: %s"
@@ -4995,15 +5066,15 @@ msgstr "Kanal završava sa nedovršenim znakom"
 msgid "Can’t do a raw read in g_io_channel_read_to_end"
 msgstr "Neuspjelo neobrađeno čitanje u g_io_channel_read_to_end"
 
-#: glib/gkeyfile.c:791
+#: glib/gkeyfile.c:794
 msgid "Valid key file could not be found in search dirs"
 msgstr "Valjana datoteka ključa se ne može pronaći u direktorijima pretrage"
 
-#: glib/gkeyfile.c:828
+#: glib/gkeyfile.c:831
 msgid "Not a regular file"
 msgstr "Nije uobičajena datoteka"
 
-#: glib/gkeyfile.c:1283
+#: glib/gkeyfile.c:1289
 #, c-format
 msgid ""
 "Key file contains line “%s” which is not a key-value pair, group, or comment"
@@ -5011,43 +5082,43 @@ msgstr ""
 "Datoteka ključa sadrži redak “%s” koji nije par ključ-vrijednost, grupa ili "
 "komentar"
 
-#: glib/gkeyfile.c:1340
+#: glib/gkeyfile.c:1346
 #, c-format
 msgid "Invalid group name: %s"
 msgstr "Nevaljani naziv grupe: %s"
 
-#: glib/gkeyfile.c:1362
+#: glib/gkeyfile.c:1370
 msgid "Key file does not start with a group"
 msgstr "Datoteka ključa ne započinje s grupom"
 
-#: glib/gkeyfile.c:1388
+#: glib/gkeyfile.c:1394
 #, c-format
-msgid "Invalid key name: %s"
-msgstr "Nevaljani naziv ključa: %s"
+msgid "Invalid key name: %.*s"
+msgstr "Nevaljani naziv ključa: %.*s"
 
-#: glib/gkeyfile.c:1415
+#: glib/gkeyfile.c:1422
 #, c-format
 msgid "Key file contains unsupported encoding “%s”"
 msgstr "Datoteka ključa sadrži nepodržano kôdiranje “%s”"
 
-#: glib/gkeyfile.c:1664 glib/gkeyfile.c:1837 glib/gkeyfile.c:3287
-#: glib/gkeyfile.c:3351 glib/gkeyfile.c:3481 glib/gkeyfile.c:3613
-#: glib/gkeyfile.c:3759 glib/gkeyfile.c:3994 glib/gkeyfile.c:4061
+#: glib/gkeyfile.c:1677 glib/gkeyfile.c:1850 glib/gkeyfile.c:3297
+#: glib/gkeyfile.c:3361 glib/gkeyfile.c:3491 glib/gkeyfile.c:3623
+#: glib/gkeyfile.c:3769 glib/gkeyfile.c:4004 glib/gkeyfile.c:4071
 #, c-format
 msgid "Key file does not have group “%s”"
 msgstr "Datoteka ključa nema grupe “%s”"
 
-#: glib/gkeyfile.c:1792
+#: glib/gkeyfile.c:1805
 #, c-format
 msgid "Key file does not have key “%s” in group “%s”"
 msgstr "Datoteka ključa nema ključ “%s” u grupi “%s”"
 
-#: glib/gkeyfile.c:1954 glib/gkeyfile.c:2070
+#: glib/gkeyfile.c:1967 glib/gkeyfile.c:2083
 #, c-format
 msgid "Key file contains key “%s” with value “%s” which is not UTF-8"
 msgstr "Datoteka ključa sadrži ključ “%s” s vrijednošću “%s” koja nije UTF-8"
 
-#: glib/gkeyfile.c:1974 glib/gkeyfile.c:2090 glib/gkeyfile.c:2529
+#: glib/gkeyfile.c:1987 glib/gkeyfile.c:2103 glib/gkeyfile.c:2542
 #, c-format
 msgid ""
 "Key file contains key “%s” which has a value that cannot be interpreted."
@@ -5055,7 +5126,7 @@ msgstr ""
 "Datoteka ključa sadrži ključ “%s” s vrijednošću koja se ne može "
 "interperetirati."
 
-#: glib/gkeyfile.c:2747 glib/gkeyfile.c:3116
+#: glib/gkeyfile.c:2757 glib/gkeyfile.c:3126
 #, c-format
 msgid ""
 "Key file contains key “%s” in group “%s” which has a value that cannot be "
@@ -5064,36 +5135,36 @@ msgstr ""
 "Datoteka ključa sadrži ključ “%s” u grupi “%s” s vrijednošću koja se ne može "
 "interperetirati."
 
-#: glib/gkeyfile.c:2825 glib/gkeyfile.c:2902
+#: glib/gkeyfile.c:2835 glib/gkeyfile.c:2912
 #, c-format
 msgid "Key “%s” in group “%s” has value “%s” where %s was expected"
 msgstr "Ključ “%s” u grupi “%s” ima vrijednost “%s” gdje je %s očekivan"
 
-#: glib/gkeyfile.c:4304
+#: glib/gkeyfile.c:4324
 msgid "Key file contains escape character at end of line"
 msgstr "Datoteka ključa sadrži escape znak na kraju redka"
 
-#: glib/gkeyfile.c:4326
+#: glib/gkeyfile.c:4346
 #, c-format
 msgid "Key file contains invalid escape sequence “%s”"
 msgstr "Datoteka ključa sadrži nevaljani escape niz “%s”"
 
-#: glib/gkeyfile.c:4470
+#: glib/gkeyfile.c:4491
 #, c-format
 msgid "Value “%s” cannot be interpreted as a number."
 msgstr "Vrijednost “%s” se ne može tumačiti kao broj."
 
-#: glib/gkeyfile.c:4484
+#: glib/gkeyfile.c:4505
 #, c-format
 msgid "Integer value “%s” out of range"
 msgstr "Cjelobrojna vrijednost \"%s\" je izvan raspona"
 
-#: glib/gkeyfile.c:4517
+#: glib/gkeyfile.c:4538
 #, c-format
 msgid "Value “%s” cannot be interpreted as a float number."
 msgstr "Vrijednost \"%s\" ne može se tumačiti kao decimalni broj."
 
-#: glib/gkeyfile.c:4556
+#: glib/gkeyfile.c:4577
 #, c-format
 msgid "Value “%s” cannot be interpreted as a boolean."
 msgstr "Vrijednost \"%s\" ne može se tumačiti kao bool varijable."
@@ -5313,15 +5384,13 @@ msgstr "Dokument je neočekivano završio unutar vrijednosti svojstva"
 #: glib/gmarkup.c:1876
 #, c-format
 msgid "Document ended unexpectedly inside the close tag for element “%s”"
-msgstr ""
-"Dokument je neočekivano završio unutar oznake zatvaranja za element “%s”"
+msgstr "Dokument je neočekivano završio unutar završne oznake za element “%s”"
 
 #: glib/gmarkup.c:1880
 msgid ""
 "Document ended unexpectedly inside the close tag for an unopened element"
 msgstr ""
-"Dokument je neočekivano završio unutar oznake zatvaranja za neotvoreni "
-"element"
+"Dokument je neočekivano završio unutar završne oznake za neotvoreni element"
 
 #: glib/gmarkup.c:1886
 msgid "Document ended unexpectedly inside a comment or processing instruction"
@@ -5381,7 +5450,7 @@ msgstr "Greška obrade mogućnosti %s"
 msgid "Missing argument for %s"
 msgstr "Nedostaje parametar za %s"
 
-#: glib/goption.c:2185
+#: glib/goption.c:2184
 #, c-format
 msgid "Unknown option %s"
 msgstr "Nepoznata mogućnost %s"
@@ -5782,123 +5851,133 @@ msgstr "Tekst je bio prazan (ili je sadržavao samo razmake)"
 msgid "Failed to read data from child process (%s)"
 msgstr "Neuspjelo čitanje podataka iz podređenog procesa (%s)"
 
-#: glib/gspawn.c:461
+#: glib/gspawn.c:462
 #, c-format
 msgid "Unexpected error in reading data from a child process (%s)"
 msgstr "Neočekivana greška u čitanju podataka podređenog procesa (%s)"
 
-#: glib/gspawn.c:546
+#: glib/gspawn.c:547
 #, c-format
 msgid "Unexpected error in waitpid() (%s)"
 msgstr "Neočekivana greška u waitpid() (%s)"
 
-#: glib/gspawn.c:1166 glib/gspawn-win32.c:1407
+#: glib/gspawn.c:1175 glib/gspawn-win32.c:1438
 #, c-format
 msgid "Child process exited with code %ld"
 msgstr "Podređeni proces se zatvorio s kôdom  %ld"
 
-#: glib/gspawn.c:1174
+#: glib/gspawn.c:1183
 #, c-format
 msgid "Child process killed by signal %ld"
 msgstr "Podređeni proces je ubio signal  %ld"
 
-#: glib/gspawn.c:1181
+#: glib/gspawn.c:1190
 #, c-format
 msgid "Child process stopped by signal %ld"
 msgstr "Podređeni proces je zaustavio signal  %ld"
 
-#: glib/gspawn.c:1188
+#: glib/gspawn.c:1197
 #, c-format
 msgid "Child process exited abnormally"
 msgstr "Podređeni proces se zatvorio abnormalno"
 
-#: glib/gspawn.c:1855 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
+#: glib/gspawn.c:1890 glib/gspawn-win32.c:353 glib/gspawn-win32.c:361
 #, c-format
 msgid "Failed to read from child pipe (%s)"
 msgstr "Neuspjelo čitanje iz podređenog slivnika (%s)"
 
-#: glib/gspawn.c:2157
+#: glib/gspawn.c:2253
 #, c-format
 msgid "Failed to spawn child process “%s” (%s)"
 msgstr "Neuspjelo pokretanje podređenog procesa “%s” (%s)"
 
-#: glib/gspawn.c:2274
+#: glib/gspawn.c:2370
 #, c-format
 msgid "Failed to fork (%s)"
 msgstr "Neuspjelo grananje (%s)"
 
-#: glib/gspawn.c:2434 glib/gspawn-win32.c:381
+#: glib/gspawn.c:2530 glib/gspawn-win32.c:384
 #, c-format
 msgid "Failed to change to directory “%s” (%s)"
 msgstr "Neuspjela promjena direktorija “%s” (%s)"
 
-#: glib/gspawn.c:2444
+#: glib/gspawn.c:2540
 #, c-format
 msgid "Failed to execute child process “%s” (%s)"
 msgstr "Neuspjelo pokretanje podređenog procesa “%s” (%s)"
 
-#: glib/gspawn.c:2454
+#: glib/gspawn.c:2550
 #, c-format
-msgid "Failed to redirect output or input of child process (%s)"
-msgstr "Neuspjelo preusmjeravanje izlaza ili ulaza podređenog procesa (%s)"
+msgid "Failed to open file to remap file descriptor (%s)"
+msgstr ""
+"Neuspjelo otvaranje datoteke za ponovno mapiranje opisnika datoteke (%s)"
+
+#: glib/gspawn.c:2558
+#, c-format
+msgid "Failed to duplicate file descriptor for child process (%s)"
+msgstr "Neuspjelo udvostručavanje opisnika datoteke za podređeni proces (%s)"
 
-#: glib/gspawn.c:2463
+#: glib/gspawn.c:2567
 #, c-format
 msgid "Failed to fork child process (%s)"
 msgstr "Neuspjelo grananje podređenog procesa (%s)"
 
-#: glib/gspawn.c:2471
+#: glib/gspawn.c:2575
+#, c-format
+msgid "Failed to close file descriptor for child process (%s)"
+msgstr "Neuspjelo zatvaranje opisnika datoteke za podređeni proces (%s)"
+
+#: glib/gspawn.c:2583
 #, c-format
 msgid "Unknown error executing child process “%s”"
 msgstr "Nepoznata greška pokretanja podređenog procesa “%s”"
 
-#: glib/gspawn.c:2495
+#: glib/gspawn.c:2607
 #, c-format
 msgid "Failed to read enough data from child pid pipe (%s)"
 msgstr ""
 "Neuspjelo čitanje dovoljno podataka iz id procesa podređenog slivnika (%s)"
 
-#: glib/gspawn-win32.c:294
+#: glib/gspawn-win32.c:297
 msgid "Failed to read data from child process"
 msgstr "Neuspjelo čitanje podataka iz podređenog procesa"
 
-#: glib/gspawn-win32.c:311
-#, c-format
-msgid "Failed to create pipe for communicating with child process (%s)"
-msgstr ""
-"Neuspjelo stvaranje slivnika za komunikaciju s podređenim procesom (%s)"
-
-#: glib/gspawn-win32.c:387 glib/gspawn-win32.c:392 glib/gspawn-win32.c:511
+#: glib/gspawn-win32.c:390 glib/gspawn-win32.c:395 glib/gspawn-win32.c:521
 #, c-format
 msgid "Failed to execute child process (%s)"
 msgstr "Neuspjelo pokretanje podređenog procesa (%s)"
 
-#: glib/gspawn-win32.c:461
+#: glib/gspawn-win32.c:400
+#, c-format
+msgid "Failed to dup() in child process (%s)"
+msgstr "Neuspio dup() u podređenom procesu (%s)"
+
+#: glib/gspawn-win32.c:471
 #, c-format
 msgid "Invalid program name: %s"
 msgstr "Nevaljani naziv programa: %s"
 
-#: glib/gspawn-win32.c:471 glib/gspawn-win32.c:779
+#: glib/gspawn-win32.c:481 glib/gspawn-win32.c:807
 #, c-format
 msgid "Invalid string in argument vector at %d: %s"
 msgstr "Nevaljan niz znakova u vektoru argumenta na %d: %s"
 
-#: glib/gspawn-win32.c:482 glib/gspawn-win32.c:794
+#: glib/gspawn-win32.c:492 glib/gspawn-win32.c:823
 #, c-format
 msgid "Invalid string in environment: %s"
 msgstr "Nevaljan niz znakova u okružju: %s"
 
-#: glib/gspawn-win32.c:775
+#: glib/gspawn-win32.c:803
 #, c-format
 msgid "Invalid working directory: %s"
 msgstr "Nevaljan radni direktorij: %s"
 
-#: glib/gspawn-win32.c:837
+#: glib/gspawn-win32.c:868
 #, c-format
 msgid "Failed to execute helper program (%s)"
 msgstr "Neuspjelo pokretanje programa pomoći (%s)"
 
-#: glib/gspawn-win32.c:1064
+#: glib/gspawn-win32.c:1096
 msgid ""
 "Unexpected error in g_io_channel_win32_poll() reading data from a child "
 "process"
@@ -5906,21 +5985,21 @@ msgstr ""
 "Neočekivana greška u g_io_channel_win32_poll() čitanju podataka podređenog "
 "procesa"
 
-#: glib/gstrfuncs.c:3345 glib/gstrfuncs.c:3447
+#: glib/gstrfuncs.c:3351 glib/gstrfuncs.c:3453
 msgid "Empty string is not a number"
 msgstr "Prazan niz znakova nije broj"
 
-#: glib/gstrfuncs.c:3369
+#: glib/gstrfuncs.c:3375
 #, c-format
 msgid "“%s” is not a signed number"
 msgstr "“%s” nije potpisani broj"
 
-#: glib/gstrfuncs.c:3379 glib/gstrfuncs.c:3483
+#: glib/gstrfuncs.c:3385 glib/gstrfuncs.c:3489
 #, c-format
 msgid "Number “%s” is out of bounds [%s, %s]"
 msgstr "Broj “%s” je izvan granica [%s, %s]"
 
-#: glib/gstrfuncs.c:3473
+#: glib/gstrfuncs.c:3479
 #, c-format
 msgid "“%s” is not an unsigned number"
 msgstr "“%s” nije nepotpisani broj"
@@ -5973,176 +6052,176 @@ msgstr "URI '%s' nije apsolutni URI"
 msgid "URI ‘%s’ has no host component"
 msgstr "URI ‘%s’ nema komponentu poslužitelja"
 
-#: glib/guri.c:1435
+#: glib/guri.c:1460
 msgid "URI is not absolute, and no base URI was provided"
 msgstr "URI nije apsolutan, i nema navednog osnovnog URI-ja"
 
-#: glib/guri.c:2213
+#: glib/guri.c:2238
 msgid "Missing ‘=’ and parameter value"
 msgstr "Nedostaje ‘=’ i vrijednost parametra"
 
-#: glib/gutf8.c:817
+#: glib/gutf8.c:832
 msgid "Failed to allocate memory"
 msgstr "Neuspjela preraspodjela memorije"
 
-#: glib/gutf8.c:950
+#: glib/gutf8.c:965
 msgid "Character out of range for UTF-8"
 msgstr "Znak je izvan raspona za UTF-8"
 
-#: glib/gutf8.c:1052 glib/gutf8.c:1061 glib/gutf8.c:1191 glib/gutf8.c:1200
-#: glib/gutf8.c:1339 glib/gutf8.c:1436
+#: glib/gutf8.c:1067 glib/gutf8.c:1076 glib/gutf8.c:1206 glib/gutf8.c:1215
+#: glib/gutf8.c:1354 glib/gutf8.c:1451
 msgid "Invalid sequence in conversion input"
 msgstr "Neispravan niz u ulazu pretvorbe"
 
-#: glib/gutf8.c:1350 glib/gutf8.c:1447
+#: glib/gutf8.c:1365 glib/gutf8.c:1462
 msgid "Character out of range for UTF-16"
 msgstr "Znak je izvan raspona za UTF-16"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2739
+#: glib/gutils.c:2849
 #, c-format
 msgid "%.1f kB"
 msgstr "%.1f kB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2741
+#: glib/gutils.c:2851
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2743
+#: glib/gutils.c:2853
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2745
+#: glib/gutils.c:2855
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2747
+#: glib/gutils.c:2857
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2749
+#: glib/gutils.c:2859
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2753
+#: glib/gutils.c:2863
 #, c-format
 msgid "%.1f KiB"
 msgstr "%.1f KiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2755
+#: glib/gutils.c:2865
 #, c-format
 msgid "%.1f MiB"
 msgstr "%.1f MiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2757
+#: glib/gutils.c:2867
 #, c-format
 msgid "%.1f GiB"
 msgstr "%.1f GiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2759
+#: glib/gutils.c:2869
 #, c-format
 msgid "%.1f TiB"
 msgstr "%.1f TiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2761
+#: glib/gutils.c:2871
 #, c-format
 msgid "%.1f PiB"
 msgstr "%.1f PiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2763
+#: glib/gutils.c:2873
 #, c-format
 msgid "%.1f EiB"
 msgstr "%.1f EiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2767
+#: glib/gutils.c:2877
 #, c-format
 msgid "%.1f kb"
 msgstr "%.1f kb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2769
+#: glib/gutils.c:2879
 #, c-format
 msgid "%.1f Mb"
 msgstr "%.1f Mb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2771
+#: glib/gutils.c:2881
 #, c-format
 msgid "%.1f Gb"
 msgstr "%.1f Gb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2773
+#: glib/gutils.c:2883
 #, c-format
 msgid "%.1f Tb"
 msgstr "%.1f Tb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2775
+#: glib/gutils.c:2885
 #, c-format
 msgid "%.1f Pb"
 msgstr "%.1f Pb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2777
+#: glib/gutils.c:2887
 #, c-format
 msgid "%.1f Eb"
 msgstr "%.1f Eb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2781
+#: glib/gutils.c:2891
 #, c-format
 msgid "%.1f Kib"
 msgstr "%.1f Kib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2783
+#: glib/gutils.c:2893
 #, c-format
 msgid "%.1f Mib"
 msgstr "%.1f Mib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2785
+#: glib/gutils.c:2895
 #, c-format
 msgid "%.1f Gib"
 msgstr "%.1f Gib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2787
+#: glib/gutils.c:2897
 #, c-format
 msgid "%.1f Tib"
 msgstr "%.1f Tib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2789
+#: glib/gutils.c:2899
 #, c-format
 msgid "%.1f Pib"
 msgstr "%.1f Pib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2791
+#: glib/gutils.c:2901
 #, c-format
 msgid "%.1f Eib"
 msgstr "%.1f Eib"
 
-#: glib/gutils.c:2825 glib/gutils.c:2942
+#: glib/gutils.c:2935 glib/gutils.c:3052
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
@@ -6150,7 +6229,7 @@ msgstr[0] "%u bajt"
 msgstr[1] "%u bajta"
 msgstr[2] "%u bajtova"
 
-#: glib/gutils.c:2829
+#: glib/gutils.c:2939
 #, c-format
 msgid "%u bit"
 msgid_plural "%u bits"
@@ -6159,7 +6238,7 @@ msgstr[1] "%u bita"
 msgstr[2] "%u bitova"
 
 #. Translators: the %s in "%s bytes" will always be replaced by a number.
-#: glib/gutils.c:2896
+#: glib/gutils.c:3006
 #, c-format
 msgid "%s byte"
 msgid_plural "%s bytes"
@@ -6168,7 +6247,7 @@ msgstr[1] "%s bajta"
 msgstr[2] "%s bajtova"
 
 #. Translators: the %s in "%s bits" will always be replaced by a number.
-#: glib/gutils.c:2901
+#: glib/gutils.c:3011
 #, c-format
 msgid "%s bit"
 msgid_plural "%s bits"
@@ -6181,32 +6260,32 @@ msgstr[2] "%s bitova"
 #. * compatibility.  Users will not see this string unless a program is using this deprecated function.
 #. * Please translate as literally as possible.
 #.
-#: glib/gutils.c:2955
+#: glib/gutils.c:3065
 #, c-format
 msgid "%.1f KB"
 msgstr "%.1f KB"
 
-#: glib/gutils.c:2960
+#: glib/gutils.c:3070
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
-#: glib/gutils.c:2965
+#: glib/gutils.c:3075
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
-#: glib/gutils.c:2970
+#: glib/gutils.c:3080
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
-#: glib/gutils.c:2975
+#: glib/gutils.c:3085
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
-#: glib/gutils.c:2980
+#: glib/gutils.c:3090
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
index 1475365..78d4504 100644 (file)
--- a/po/hu.po
+++ b/po/hu.po
@@ -10,8 +10,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: glib master\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/glib/issues\n"
-"POT-Creation-Date: 2022-02-01 17:05+0000\n"
-"PO-Revision-Date: 2022-03-10 20:43+0100\n"
+"POT-Creation-Date: 2022-02-14 13:48+0000\n"
+"PO-Revision-Date: 2022-03-10 20:41+0100\n"
 "Last-Translator: Balázs Úr <ur.balazs at fsf dot hu>\n"
 "Language-Team: Hungarian <gnome-hu-list at gnome dot org>\n"
 "Language: hu\n"
@@ -21,30 +21,42 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 "X-Generator: Lokalize 19.12.3\n"
 
-#: gio/gapplication.c:500
+#: gio/gappinfo.c:333
+#| msgid "Setting attribute %s not supported"
+msgid "Setting default applications not supported yet"
+msgstr "Az alapértelmezett alkalmazások beállítása még nem támogatott"
+
+#: gio/gappinfo.c:366
+#| msgid "Setting attribute %s not supported"
+msgid "Setting application as last used for type not supported yet"
+msgstr ""
+"Az alkalmazás legutóbb használtként beállítása egy adott típushoz még nem "
+"támogatott"
+
+#: gio/gapplication.c:497
 msgid "GApplication options"
 msgstr "GApplication kapcsolói"
 
-#: gio/gapplication.c:500
+#: gio/gapplication.c:497
 msgid "Show GApplication options"
 msgstr "A GApplication kapcsolóinak megjelenítése"
 
-#: gio/gapplication.c:545
+#: gio/gapplication.c:542
 msgid "Enter GApplication service mode (use from D-Bus service files)"
 msgstr ""
 "Belépés GApplication szolgáltatásmódba (használja D-Bus "
 "szolgáltatásfájlokból)"
 
-#: gio/gapplication.c:557
+#: gio/gapplication.c:554
 msgid "Override the application’s ID"
 msgstr "Alkalmazások azonosítójának felülbírálása"
 
-#: gio/gapplication.c:569
+#: gio/gapplication.c:566
 msgid "Replace the running instance"
 msgstr "A futó példány cseréje"
 
 #: gio/gapplication-tool.c:45 gio/gapplication-tool.c:46 gio/gio-tool.c:227
-#: gio/gresource-tool.c:494 gio/gsettings-tool.c:572
+#: gio/gresource-tool.c:494 gio/gsettings-tool.c:584
 msgid "Print help"
 msgstr "Súgó kiírása"
 
@@ -56,7 +68,7 @@ msgstr "[PARANCS]"
 msgid "Print version"
 msgstr "Verzió kiírása"
 
-#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:578
+#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:590
 msgid "Print version information and exit"
 msgstr "Verzióinformációk kiírása és kilépés"
 
@@ -119,8 +131,8 @@ msgstr "Részletes súgó kiírása ezen parancshoz"
 msgid "Application identifier in D-Bus format (eg: org.example.viewer)"
 msgstr "Alkalmazásazonosító D-Bus formátumban (például: org.example.viewer)"
 
-#: gio/gapplication-tool.c:74 gio/glib-compile-resources.c:738
-#: gio/glib-compile-resources.c:744 gio/glib-compile-resources.c:772
+#: gio/gapplication-tool.c:74 gio/glib-compile-resources.c:820
+#: gio/glib-compile-resources.c:826 gio/glib-compile-resources.c:855
 #: gio/gresource-tool.c:501 gio/gresource-tool.c:567
 msgid "FILE"
 msgstr "FÁJL"
@@ -145,7 +157,7 @@ msgstr "PARAMÉTER"
 msgid "Optional parameter to the action invocation, in GVariant format"
 msgstr "A művelethívás elhagyható paramétere GVariant formátumban"
 
-#: gio/gapplication-tool.c:98 gio/gresource-tool.c:532 gio/gsettings-tool.c:664
+#: gio/gapplication-tool.c:98 gio/gresource-tool.c:532 gio/gsettings-tool.c:676
 #, c-format
 msgid ""
 "Unknown command %s\n"
@@ -159,7 +171,7 @@ msgid "Usage:\n"
 msgstr "Használat:\n"
 
 #: gio/gapplication-tool.c:116 gio/gresource-tool.c:557
-#: gio/gsettings-tool.c:699
+#: gio/gsettings-tool.c:711
 msgid "Arguments:\n"
 msgstr "Argumentumok:\n"
 
@@ -283,7 +295,7 @@ msgstr "Az adatfolyam már le van zárva"
 msgid "Truncate not supported on base stream"
 msgstr "Az alap adatfolyam csonkítása nem engedélyezett"
 
-#: gio/gcancellable.c:319 gio/gdbusconnection.c:1873 gio/gdbusprivate.c:1416
+#: gio/gcancellable.c:319 gio/gdbusconnection.c:1873 gio/gdbusprivate.c:1418
 #: gio/gsimpleasyncresult.c:871 gio/gsimpleasyncresult.c:897
 #, c-format
 msgid "Operation was cancelled"
@@ -304,7 +316,7 @@ msgstr "Nincs elég hely a célon"
 #: gio/gcharsetconverter.c:342 gio/gdatainputstream.c:848
 #: gio/gdatainputstream.c:1266 glib/gconvert.c:449 glib/gconvert.c:879
 #: glib/giochannel.c:1573 glib/giochannel.c:1615 glib/giochannel.c:2470
-#: glib/gutf8.c:875 glib/gutf8.c:1328
+#: glib/gutf8.c:890 glib/gutf8.c:1344
 msgid "Invalid byte sequence in conversion input"
 msgstr "Érvénytelen bájtsorrend az átalakítás bemenetében"
 
@@ -314,7 +326,7 @@ msgstr "Érvénytelen bájtsorrend az átalakítás bemenetében"
 msgid "Error during conversion: %s"
 msgstr "Hiba az átalakításkor: %s"
 
-#: gio/gcharsetconverter.c:445 gio/gsocket.c:1143
+#: gio/gcharsetconverter.c:445 gio/gsocket.c:1147
 msgid "Cancellable initialization not supported"
 msgstr "A megszakítható előkészítés nem támogatott"
 
@@ -330,7 +342,7 @@ msgstr ""
 "A(z) „%s” karakterkészletről „%s” karakterkészletre átalakító nem nyitható "
 "meg"
 
-#: gio/gcontenttype.c:454
+#: gio/gcontenttype.c:470
 #, c-format
 msgid "%s type"
 msgstr "%s típus"
@@ -344,23 +356,23 @@ msgstr "Ismeretlen típus"
 msgid "%s filetype"
 msgstr "%s fájltípus"
 
-#: gio/gcredentials.c:323
+#: gio/gcredentials.c:335
 msgid "GCredentials contains invalid data"
 msgstr "A GCredentials érvénytelen adatot tartalmaz"
 
-#: gio/gcredentials.c:383 gio/gcredentials.c:667
+#: gio/gcredentials.c:395 gio/gcredentials.c:686
 msgid "GCredentials is not implemented on this OS"
 msgstr "A GCredentials nincs megvalósítva ezen a rendszeren"
 
-#: gio/gcredentials.c:538 gio/gcredentials.c:556
+#: gio/gcredentials.c:550 gio/gcredentials.c:568
 msgid "There is no GCredentials support for your platform"
 msgstr "A platformhoz nincs GCredentials támogatás"
 
-#: gio/gcredentials.c:607
+#: gio/gcredentials.c:626
 msgid "GCredentials does not contain a process ID on this OS"
 msgstr "A GCredentials nem tartalmaz folyamatazonosítót ezen a rendszeren"
 
-#: gio/gcredentials.c:661
+#: gio/gcredentials.c:680
 msgid "Credentials spoofing is not possible on this OS"
 msgstr "A hitelesítési adatok hamisítása nincs megvalósítva ezen a rendszeren"
 
@@ -368,17 +380,17 @@ msgstr "A hitelesítési adatok hamisítása nincs megvalósítva ezen a rendsze
 msgid "Unexpected early end-of-stream"
 msgstr "Váratlan korai adatfolyam vége"
 
-#: gio/gdbusaddress.c:159 gio/gdbusaddress.c:233 gio/gdbusaddress.c:322
+#: gio/gdbusaddress.c:162 gio/gdbusaddress.c:236 gio/gdbusaddress.c:325
 #, c-format
 msgid "Unsupported key “%s” in address entry “%s”"
 msgstr "Nem támogatott „%s” kulcs a(z) „%s” címbejegyzésben"
 
-#: gio/gdbusaddress.c:172
+#: gio/gdbusaddress.c:175
 #, c-format
 msgid "Meaningless key/value pair combination in address entry “%s”"
 msgstr "Értelmetlen kulcs-érték pár kombináció a(z) „%s” címbejegyzésben"
 
-#: gio/gdbusaddress.c:181
+#: gio/gdbusaddress.c:184
 #, c-format
 msgid ""
 "Address “%s” is invalid (need exactly one of path, dir, tmpdir, or abstract "
@@ -387,28 +399,28 @@ msgstr ""
 "A(z) „%s” cím érvénytelen (csak az útvonal, könyvtár, tmp könyvtár vagy "
 "absztrakt kulcsok egyike lehet)"
 
-#: gio/gdbusaddress.c:248 gio/gdbusaddress.c:259 gio/gdbusaddress.c:274
-#: gio/gdbusaddress.c:337 gio/gdbusaddress.c:348
+#: gio/gdbusaddress.c:251 gio/gdbusaddress.c:262 gio/gdbusaddress.c:277
+#: gio/gdbusaddress.c:340 gio/gdbusaddress.c:351
 #, c-format
 msgid "Error in address “%s” — the “%s” attribute is malformed"
 msgstr "Hiba a(z) „%s” címben – a(z) „%s” attribútum rosszul formázott"
 
-#: gio/gdbusaddress.c:418 gio/gdbusaddress.c:682
+#: gio/gdbusaddress.c:421 gio/gdbusaddress.c:680
 #, c-format
 msgid "Unknown or unsupported transport “%s” for address “%s”"
 msgstr "Ismeretlen vagy nem támogatott szállítás („%s”) a címhez („%s”)"
 
-#: gio/gdbusaddress.c:462
+#: gio/gdbusaddress.c:465
 #, c-format
 msgid "Address element “%s” does not contain a colon (:)"
 msgstr "A(z) „%s” címelem nem tartalmaz kettőspontot (:)"
 
-#: gio/gdbusaddress.c:471
+#: gio/gdbusaddress.c:474
 #, c-format
 msgid "Transport name in address element “%s” must not be empty"
 msgstr "Az átvitel neve a(z) „%s” címelemben nem lehet üres"
 
-#: gio/gdbusaddress.c:492
+#: gio/gdbusaddress.c:495
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” does not contain an equal "
@@ -416,14 +428,14 @@ msgid ""
 msgstr ""
 "%d. kulcs-érték pár: „%s” a(z) „%s” címelemben nem tartalmaz egyenlőségjelet"
 
-#: gio/gdbusaddress.c:503
+#: gio/gdbusaddress.c:506
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” must not have an empty key"
 msgstr ""
 "%d. kulcs-érték pár: „%s” a(z) „%s” címelemben nem tartalmazhat üres kulcsot"
 
-#: gio/gdbusaddress.c:517
+#: gio/gdbusaddress.c:520
 #, c-format
 msgid ""
 "Error unescaping key or value in Key/Value pair %d, “%s”, in address element "
@@ -432,7 +444,7 @@ msgstr ""
 "Hiba a(z) „%3$s” címelemben található a(z) %1$d. kulcs-érték párban lévő "
 "„%2$s” kulcs vagy érték értelmezésekor"
 
-#: gio/gdbusaddress.c:589
+#: gio/gdbusaddress.c:588
 #, c-format
 msgid ""
 "Error in address “%s” — the unix transport requires exactly one of the keys "
@@ -441,81 +453,82 @@ msgstr ""
 "Hiba a(z) „%s” címben – a unix szállítás a „path” vagy „abstract” kulcsok "
 "pontosan egyikének jelenlétét igényli"
 
-#: gio/gdbusaddress.c:625
+#: gio/gdbusaddress.c:623
 #, c-format
 msgid "Error in address “%s” — the host attribute is missing or malformed"
 msgstr ""
 "Hiba a(z) „%s” címben – a host attribútum hiányzik vagy rosszul formázott"
 
-#: gio/gdbusaddress.c:639
+#: gio/gdbusaddress.c:637
 #, c-format
 msgid "Error in address “%s” — the port attribute is missing or malformed"
 msgstr ""
 "Hiba a(z) „%s” címben – a port attribútum hiányzik vagy rosszul formázott"
 
-#: gio/gdbusaddress.c:653
+#: gio/gdbusaddress.c:651
 #, c-format
 msgid "Error in address “%s” — the noncefile attribute is missing or malformed"
 msgstr ""
 "Hiba a(z) „%s” címben – a noncefile attribútum hiányzik vagy rosszul "
 "formázott"
 
-#: gio/gdbusaddress.c:674
+#: gio/gdbusaddress.c:672
 msgid "Error auto-launching: "
 msgstr "Hiba az automatikus indításkor: "
 
-#: gio/gdbusaddress.c:727
+#: gio/gdbusaddress.c:725
 #, c-format
 msgid "Error opening nonce file “%s”: %s"
 msgstr "Hiba a(z) „%s” ideiglenes fájl megnyitásakor: %s"
 
-#: gio/gdbusaddress.c:746
+#: gio/gdbusaddress.c:744
 #, c-format
 msgid "Error reading from nonce file “%s”: %s"
 msgstr "Hiba a(z) „%s” ideiglenes fájl olvasásakor: %s"
 
-#: gio/gdbusaddress.c:755
+#: gio/gdbusaddress.c:753
 #, c-format
 msgid "Error reading from nonce file “%s”, expected 16 bytes, got %d"
 msgstr ""
 "Hiba a(z) „%s” ideiglenes fájl olvasásakor, a várt 16 bájt helyett %d "
 "érkezett"
 
-#: gio/gdbusaddress.c:773
+#: gio/gdbusaddress.c:771
 #, c-format
 msgid "Error writing contents of nonce file “%s” to stream:"
 msgstr "Hiba az ideiglenes fájl („%s”) tartalmának írásakor az adatfolyamba:"
 
-#: gio/gdbusaddress.c:988
+#: gio/gdbusaddress.c:986
 msgid "The given address is empty"
 msgstr "A megadott cím üres"
 
-#: gio/gdbusaddress.c:1101
+#: gio/gdbusaddress.c:1099
 #, c-format
-msgid "Cannot spawn a message bus when setuid"
-msgstr "Nem indítható üzenetbusz setuid módban"
+#| msgid "Cannot spawn a message bus when setuid"
+msgid "Cannot spawn a message bus when AT_SECURE is set"
+msgstr "Nem indítható üzenetbusz, ha az AT_SECURE be van állítva"
 
-#: gio/gdbusaddress.c:1108
+#: gio/gdbusaddress.c:1106
 msgid "Cannot spawn a message bus without a machine-id: "
 msgstr "Nem indítható üzenetbusz gépazonosító nélkül: "
 
-#: gio/gdbusaddress.c:1115
+#: gio/gdbusaddress.c:1113
 #, c-format
 msgid "Cannot autolaunch D-Bus without X11 $DISPLAY"
 msgstr "Nem indítható automatikusan a D-Bus X11 $DISPLAY nélkül"
 
-#: gio/gdbusaddress.c:1157
+#: gio/gdbusaddress.c:1155
 #, c-format
 msgid "Error spawning command line “%s”: "
 msgstr "Hiba a(z) „%s” parancssor indításakor: "
 
-#: gio/gdbusaddress.c:1226
+#: gio/gdbusaddress.c:1224
 #, c-format
 msgid "Cannot determine session bus address (not implemented for this OS)"
 msgstr ""
 "Nem határozható meg a munkamenetbusz címe (nincs megvalósítva erre az OS-re)"
 
-#: gio/gdbusaddress.c:1375 gio/gdbusconnection.c:7334
+#: gio/gdbusaddress.c:1373 gio/gdbusconnection.c:7334
 #, c-format
 msgid ""
 "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
@@ -524,7 +537,7 @@ msgstr ""
 "Nem határozható meg a busz címe a DBUS_STARTER_BUS_TYPE környezeti "
 "változóból – ismeretlen „%s” érték"
 
-#: gio/gdbusaddress.c:1384 gio/gdbusconnection.c:7343
+#: gio/gdbusaddress.c:1382 gio/gdbusconnection.c:7343
 msgid ""
 "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
 "variable is not set"
@@ -532,7 +545,7 @@ msgstr ""
 "Nem határozható meg a busz címe, mivel a DBUS_STARTER_BUS_TYPE környezeti "
 "változó nincs beállítva"
 
-#: gio/gdbusaddress.c:1394
+#: gio/gdbusaddress.c:1392
 #, c-format
 msgid "Unknown bus type %d"
 msgstr "Ismeretlen busztípus: %d"
@@ -564,12 +577,12 @@ msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
 msgstr ""
 "Megszakítva a GDBusAuthObserver::authorize-authenticated-peer használatával"
 
-#: gio/gdbusauthmechanismsha1.c:298
+#: gio/gdbusauthmechanismsha1.c:299
 #, c-format
 msgid "Error when getting information for directory “%s”: %s"
 msgstr "Hiba a(z) „%s” könyvtár információinak lekérésekor: %s"
 
-#: gio/gdbusauthmechanismsha1.c:313
+#: gio/gdbusauthmechanismsha1.c:314
 #, c-format
 msgid ""
 "Permissions on directory “%s” are malformed. Expected mode 0700, got 0%o"
@@ -577,32 +590,32 @@ msgstr ""
 "A(z) „%s” könyvtár jogosultságai rosszul formázottak. A várt 0700 mód "
 "helyett 0%o érkezett."
 
-#: gio/gdbusauthmechanismsha1.c:346 gio/gdbusauthmechanismsha1.c:357
+#: gio/gdbusauthmechanismsha1.c:347 gio/gdbusauthmechanismsha1.c:358
 #, c-format
 msgid "Error creating directory “%s”: %s"
 msgstr "Hiba a(z) %s könyvtár létrehozásakor: %s"
 
-#: gio/gdbusauthmechanismsha1.c:359 gio/gfile.c:1062 gio/gfile.c:1300
-#: gio/gfile.c:1438 gio/gfile.c:1676 gio/gfile.c:1731 gio/gfile.c:1789
-#: gio/gfile.c:1873 gio/gfile.c:1930 gio/gfile.c:1994 gio/gfile.c:2049
-#: gio/gfile.c:3754 gio/gfile.c:3809 gio/gfile.c:4102 gio/gfile.c:4572
-#: gio/gfile.c:4983 gio/gfile.c:5068 gio/gfile.c:5158 gio/gfile.c:5255
-#: gio/gfile.c:5342 gio/gfile.c:5443 gio/gfile.c:8153 gio/gfile.c:8243
-#: gio/gfile.c:8327 gio/win32/gwinhttpfile.c:453
+#: gio/gdbusauthmechanismsha1.c:360 gio/gfile.c:1080 gio/gfile.c:1318
+#: gio/gfile.c:1456 gio/gfile.c:1694 gio/gfile.c:1749 gio/gfile.c:1807
+#: gio/gfile.c:1891 gio/gfile.c:1948 gio/gfile.c:2012 gio/gfile.c:2067
+#: gio/gfile.c:3772 gio/gfile.c:3912 gio/gfile.c:4205 gio/gfile.c:4675
+#: gio/gfile.c:5086 gio/gfile.c:5171 gio/gfile.c:5261 gio/gfile.c:5358
+#: gio/gfile.c:5445 gio/gfile.c:5546 gio/gfile.c:8375 gio/gfile.c:8465
+#: gio/gfile.c:8549 gio/win32/gwinhttpfile.c:453
 msgid "Operation not supported"
 msgstr "A művelet nem támogatott"
 
-#: gio/gdbusauthmechanismsha1.c:402
+#: gio/gdbusauthmechanismsha1.c:403
 #, c-format
 msgid "Error opening keyring “%s” for reading: "
 msgstr "Hiba a(z) „%s” kulcstartó megnyitásakor olvasásra: "
 
-#: gio/gdbusauthmechanismsha1.c:425 gio/gdbusauthmechanismsha1.c:747
+#: gio/gdbusauthmechanismsha1.c:426 gio/gdbusauthmechanismsha1.c:748
 #, c-format
 msgid "Line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr "A(z) „%2$s” kulcstartó „%3$s” tartalmú „%1$d”. sora rosszul formázott"
 
-#: gio/gdbusauthmechanismsha1.c:439 gio/gdbusauthmechanismsha1.c:761
+#: gio/gdbusauthmechanismsha1.c:440 gio/gdbusauthmechanismsha1.c:762
 #, c-format
 msgid ""
 "First token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -610,7 +623,7 @@ msgstr ""
 "A(z) „%2$s” kulcstartó „%3$s” tartalmú „%1$d”. sorának első egysége rosszul "
 "formázott"
 
-#: gio/gdbusauthmechanismsha1.c:453 gio/gdbusauthmechanismsha1.c:775
+#: gio/gdbusauthmechanismsha1.c:454 gio/gdbusauthmechanismsha1.c:776
 #, c-format
 msgid ""
 "Second token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -618,37 +631,37 @@ msgstr ""
 "A(z) „%2$s” kulcstartó „%3$s” tartalmú „%1$d”. sorának második egysége "
 "rosszul formázott"
 
-#: gio/gdbusauthmechanismsha1.c:477
+#: gio/gdbusauthmechanismsha1.c:478
 #, c-format
 msgid "Didn’t find cookie with id %d in the keyring at “%s”"
 msgstr "Nem található %d azonosítójú süti a kulcstartóban itt: „%s ”"
 
-#: gio/gdbusauthmechanismsha1.c:523
+#: gio/gdbusauthmechanismsha1.c:524
 #, c-format
 msgid "Error creating lock file “%s”: %s"
 msgstr "Hiba a(z) „%s” zárolási fájl létrehozásakor: %s"
 
-#: gio/gdbusauthmechanismsha1.c:587
+#: gio/gdbusauthmechanismsha1.c:588
 #, c-format
 msgid "Error deleting stale lock file “%s”: %s"
 msgstr "Hiba az elavult „%s” zárolásfájl törlésekor: %s"
 
-#: gio/gdbusauthmechanismsha1.c:626
+#: gio/gdbusauthmechanismsha1.c:627
 #, c-format
 msgid "Error closing (unlinked) lock file “%s”: %s"
 msgstr "Hiba a (törölt) „%s” zárolási fájl lezárásakor: %s"
 
-#: gio/gdbusauthmechanismsha1.c:637
+#: gio/gdbusauthmechanismsha1.c:638
 #, c-format
 msgid "Error unlinking lock file “%s”: %s"
 msgstr "Hiba a(z) „%s” zárolási fájl törlésekor: %s"
 
-#: gio/gdbusauthmechanismsha1.c:714
+#: gio/gdbusauthmechanismsha1.c:715
 #, c-format
 msgid "Error opening keyring “%s” for writing: "
 msgstr "Hiba a(z) „%s” kulcstartó írásra való megnyitásakor: "
 
-#: gio/gdbusauthmechanismsha1.c:908
+#: gio/gdbusauthmechanismsha1.c:909
 #, c-format
 msgid "(Additionally, releasing the lock for “%s” also failed: %s) "
 msgstr "(Ezen kívül a(z) „%s” zárolásának feloldása is meghiúsult: %s) "
@@ -753,27 +766,27 @@ msgstr "Egy részfa már exportálva van a következőhöz: %s"
 msgid "Object does not exist at path “%s”"
 msgstr "Az objektum nem létezik a(z) „%s” útvonalon"
 
-#: gio/gdbusmessage.c:1311
+#: gio/gdbusmessage.c:1301
 msgid "type is INVALID"
 msgstr "a típus érvénytelen"
 
-#: gio/gdbusmessage.c:1322
+#: gio/gdbusmessage.c:1312
 msgid "METHOD_CALL message: PATH or MEMBER header field is missing"
 msgstr "METHOD_CALL üzenet: a PATH vagy MEMBER fejlécmező hiányzik"
 
-#: gio/gdbusmessage.c:1333
+#: gio/gdbusmessage.c:1323
 msgid "METHOD_RETURN message: REPLY_SERIAL header field is missing"
 msgstr "METHOD_RETURN üzenet: a REPLY_SERIAL fejlécmező hiányzik"
 
-#: gio/gdbusmessage.c:1345
+#: gio/gdbusmessage.c:1335
 msgid "ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing"
 msgstr "ERROR üzenet: a REPLY_SERIAL vagy ERROR_NAME fejlécmező hiányzik"
 
-#: gio/gdbusmessage.c:1358
+#: gio/gdbusmessage.c:1348
 msgid "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing"
 msgstr "SIGNAL üzenet: a PATH, INTERFACE vagy MEMBER fejlécmező hiányzik"
 
-#: gio/gdbusmessage.c:1366
+#: gio/gdbusmessage.c:1356
 msgid ""
 "SIGNAL message: The PATH header field is using the reserved value /org/"
 "freedesktop/DBus/Local"
@@ -781,7 +794,7 @@ msgstr ""
 "SIGNAL üzenet: a PATH fejlécmező a fenntartott /org/freedesktop/DBus/Local "
 "értéket használja"
 
-#: gio/gdbusmessage.c:1374
+#: gio/gdbusmessage.c:1364
 msgid ""
 "SIGNAL message: The INTERFACE header field is using the reserved value org."
 "freedesktop.DBus.Local"
@@ -789,19 +802,19 @@ msgstr ""
 "SIGNAL üzenet: az INTERFACE fejlécmező a fenntartott value org.freedesktop."
 "DBus.Local értéket használja"
 
-#: gio/gdbusmessage.c:1422 gio/gdbusmessage.c:1482
+#: gio/gdbusmessage.c:1412 gio/gdbusmessage.c:1472
 #, c-format
 msgid "Wanted to read %lu byte but only got %lu"
 msgid_plural "Wanted to read %lu bytes but only got %lu"
 msgstr[0] "Az olvasandó %lu bájt helyett csak %lu érkezett"
 msgstr[1] "Az olvasandó %lu bájt helyett csak %lu érkezett"
 
-#: gio/gdbusmessage.c:1436
+#: gio/gdbusmessage.c:1426
 #, c-format
 msgid "Expected NUL byte after the string “%s” but found byte %d"
 msgstr "A(z) „%s” karakterlánc után várt NULL bájt helyett %d bájt található"
 
-#: gio/gdbusmessage.c:1455
+#: gio/gdbusmessage.c:1445
 #, c-format
 msgid ""
 "Expected valid UTF-8 string but found invalid bytes at byte offset %d "
@@ -811,21 +824,21 @@ msgstr ""
 "a(z) %d bájteltolásnál (a karakterlánc hossza: %d). Az érvényes UTF-8 "
 "karakterlánc az adott pontig: „%s”"
 
-#: gio/gdbusmessage.c:1519 gio/gdbusmessage.c:1795 gio/gdbusmessage.c:2006
+#: gio/gdbusmessage.c:1509 gio/gdbusmessage.c:1785 gio/gdbusmessage.c:1996
 msgid "Value nested too deeply"
 msgstr "Az érték túl mélyen van egymásba ágyazva"
 
-#: gio/gdbusmessage.c:1687
+#: gio/gdbusmessage.c:1677
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus object path"
 msgstr "A feldolgozott „%s” érték nem érvényes D-Bus objektumútvonal"
 
-#: gio/gdbusmessage.c:1711
+#: gio/gdbusmessage.c:1701
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature"
 msgstr "A feldolgozott „%s” érték nem érvényes D-Bus aláírás"
 
-#: gio/gdbusmessage.c:1762
+#: gio/gdbusmessage.c:1752
 #, c-format
 msgid ""
 "Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB)."
@@ -836,7 +849,7 @@ msgstr[0] ""
 msgstr[1] ""
 "%u bájt hosszú tömb található. A maximális hossz 2<<26 bájt (64 MiB)."
 
-#: gio/gdbusmessage.c:1782
+#: gio/gdbusmessage.c:1772
 #, c-format
 msgid ""
 "Encountered array of type “a%c”, expected to have a length a multiple of %u "
@@ -845,23 +858,23 @@ msgstr ""
 "Egy „a%c” típusú tömb található, az elvárt hossz a(z) %u bájt többszöröse, "
 "de %u bájt hosszú található"
 
-#: gio/gdbusmessage.c:1936 gio/gdbusmessage.c:2655
+#: gio/gdbusmessage.c:1926 gio/gdbusmessage.c:2645
 msgid "Empty structures (tuples) are not allowed in D-Bus"
 msgstr "Üres szerkezetek (rekordok) nem engedélyezettek a D-Buson"
 
-#: gio/gdbusmessage.c:1990
+#: gio/gdbusmessage.c:1980
 #, c-format
 msgid "Parsed value “%s” for variant is not a valid D-Bus signature"
 msgstr "A változat feldolgozott „%s” értéke nem érvényes D-Bus aláírás"
 
-#: gio/gdbusmessage.c:2031
+#: gio/gdbusmessage.c:2021
 #, c-format
 msgid ""
 "Error deserializing GVariant with type string “%s” from the D-Bus wire format"
 msgstr ""
 "Hiba a(z) „%s” típusú GVariant visszafejtésekor a D-Bus átviteli formátumból"
 
-#: gio/gdbusmessage.c:2216
+#: gio/gdbusmessage.c:2206
 #, c-format
 msgid ""
 "Invalid endianness value. Expected 0x6c (“l”) or 0x42 (“B”) but found value "
@@ -870,60 +883,60 @@ msgstr ""
 "Érvénytelen bájtsorrend-érték. A várt  0x6c („l”) vagy 0x42 („B”) helyett 0x"
 "%02x érték található"
 
-#: gio/gdbusmessage.c:2235
+#: gio/gdbusmessage.c:2225
 #, c-format
 msgid "Invalid major protocol version. Expected 1 but found %d"
 msgstr "Érvénytelen fő protokollverzió. A várt 1 helyett %d található"
 
-#: gio/gdbusmessage.c:2293 gio/gdbusmessage.c:2891
+#: gio/gdbusmessage.c:2283 gio/gdbusmessage.c:2881
 msgid "Signature header found but is not of type signature"
 msgstr "Aláírásfejléc található, de nem aláírás típusú"
 
-#: gio/gdbusmessage.c:2305
+#: gio/gdbusmessage.c:2295
 #, c-format
 msgid "Signature header with signature “%s” found but message body is empty"
 msgstr "Aláírásfejléc található „%s” aláírással, de az üzenettörzs üres"
 
-#: gio/gdbusmessage.c:2320
+#: gio/gdbusmessage.c:2310
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature (for body)"
 msgstr "A feldolgozott „%s” érték nem érvényes D-Bus aláírás (a törzshöz)"
 
-#: gio/gdbusmessage.c:2352
+#: gio/gdbusmessage.c:2342
 #, 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"
 msgstr[0] "Nincs aláírásfejléc az üzenetben, de az üzenettörzs %u bájt"
 msgstr[1] "Nincs aláírásfejléc az üzenetben, de az üzenettörzs %u bájt"
 
-#: gio/gdbusmessage.c:2362
+#: gio/gdbusmessage.c:2352
 msgid "Cannot deserialize message: "
 msgstr "Nem fejthető sorba az üzenet: "
 
-#: gio/gdbusmessage.c:2708
+#: gio/gdbusmessage.c:2698
 #, c-format
 msgid ""
 "Error serializing GVariant with type string “%s” to the D-Bus wire format"
 msgstr ""
 "Hiba a(z) „%s” típusú GVariant sorbafejtésekor a D-Bus átviteli formátumba"
 
-#: gio/gdbusmessage.c:2845
+#: gio/gdbusmessage.c:2835
 #, c-format
 msgid ""
 "Number of file descriptors in message (%d) differs from header field (%d)"
 msgstr ""
 "Az üzenetben található fájlleírók száma (%d) eltér a fejléc mezőtől (%d)"
 
-#: gio/gdbusmessage.c:2853
+#: gio/gdbusmessage.c:2843
 msgid "Cannot serialize message: "
 msgstr "Az üzenet nem fejthető sorba: "
 
-#: gio/gdbusmessage.c:2906
+#: gio/gdbusmessage.c:2896
 #, c-format
 msgid "Message body has signature “%s” but there is no signature header"
 msgstr "Az üzenettörzs „%s” aláírással rendelkezik, de nincs aláírásfejléc"
 
-#: gio/gdbusmessage.c:2916
+#: gio/gdbusmessage.c:2906
 #, c-format
 msgid ""
 "Message body has type signature “%s” but signature in the header field is "
@@ -932,52 +945,52 @@ msgstr ""
 "Az üzenettörzs „%s” típusaláírással rendelkezik, de az aláírásfejlécben lévő "
 "aláírás: „%s”"
 
-#: gio/gdbusmessage.c:2932
+#: gio/gdbusmessage.c:2922
 #, c-format
 msgid "Message body is empty but signature in the header field is “(%s)”"
 msgstr "Az üzenettörzs üres, de az aláírásfejlécben lévő aláírás: „%s”"
 
-#: gio/gdbusmessage.c:3487
+#: gio/gdbusmessage.c:3477
 #, c-format
 msgid "Error return with body of type “%s”"
 msgstr "Hiba került visszaadásra a(z) „%s” típusú törzzsel"
 
-#: gio/gdbusmessage.c:3495
+#: gio/gdbusmessage.c:3485
 msgid "Error return with empty body"
 msgstr "Hiba került visszaadásra az üres törzzsel"
 
-#: gio/gdbusprivate.c:2246
+#: gio/gdbusprivate.c:2185
 #, c-format
 msgid "(Type any character to close this window)\n"
 msgstr "(Az ablak bezárásához nyomjon le egy gombot)\n"
 
-#: gio/gdbusprivate.c:2420
+#: gio/gdbusprivate.c:2371
 #, c-format
 msgid "Session dbus not running, and autolaunch failed"
 msgstr "A munkamenet D-Bus nem fut, és az automatikus indítás sikertelen"
 
-#: gio/gdbusprivate.c:2443
+#: gio/gdbusprivate.c:2394
 #, c-format
 msgid "Unable to get Hardware profile: %s"
 msgstr "Nem kérhető le hardverprofil: %s"
 
 #. Translators: Both placeholders are file paths
-#: gio/gdbusprivate.c:2494
+#: gio/gdbusprivate.c:2445
 #, c-format
 msgid "Unable to load %s or %s: "
 msgstr "A(z) %s vagy a(z) %s nem tölthető be: "
 
-#: gio/gdbusproxy.c:1569
+#: gio/gdbusproxy.c:1573
 #, c-format
 msgid "Error calling StartServiceByName for %s: "
 msgstr "Hiba a StartServiceByName hívásakor ehhez: %s: "
 
-#: gio/gdbusproxy.c:1592
+#: gio/gdbusproxy.c:1596
 #, c-format
 msgid "Unexpected reply %d from StartServiceByName(\"%s\") method"
 msgstr "Váratlan válasz (%d) a StartServiceByName(\"%s\") metódustól"
 
-#: gio/gdbusproxy.c:2699 gio/gdbusproxy.c:2834
+#: gio/gdbusproxy.c:2707 gio/gdbusproxy.c:2842
 #, c-format
 msgid ""
 "Cannot invoke method; proxy is for the well-known name %s without an owner, "
@@ -1032,13 +1045,13 @@ msgstr ""
 "Az egyes parancsok súgója a „%s PARANCS --help” kiadásával érhető el.\n"
 
 #: gio/gdbus-tool.c:201 gio/gdbus-tool.c:273 gio/gdbus-tool.c:345
-#: gio/gdbus-tool.c:369 gio/gdbus-tool.c:859 gio/gdbus-tool.c:1236
-#: gio/gdbus-tool.c:1724
+#: gio/gdbus-tool.c:369 gio/gdbus-tool.c:859 gio/gdbus-tool.c:1244
+#: gio/gdbus-tool.c:1732
 #, c-format
 msgid "Error: %s\n"
 msgstr "Hiba: %s\n"
 
-#: gio/gdbus-tool.c:212 gio/gdbus-tool.c:286 gio/gdbus-tool.c:1740
+#: gio/gdbus-tool.c:212 gio/gdbus-tool.c:286 gio/gdbus-tool.c:1748
 #, c-format
 msgid "Error parsing introspection XML: %s\n"
 msgstr "Hiba a betekintési XML feldolgozásakor: %s\n"
@@ -1048,8 +1061,8 @@ msgstr "Hiba a betekintési XML feldolgozásakor: %s\n"
 msgid "Error: %s is not a valid name\n"
 msgstr "Hiba: a(z) %s nem érvényes név\n"
 
-#: gio/gdbus-tool.c:255 gio/gdbus-tool.c:745 gio/gdbus-tool.c:1060
-#: gio/gdbus-tool.c:1890 gio/gdbus-tool.c:2130
+#: gio/gdbus-tool.c:255 gio/gdbus-tool.c:745 gio/gdbus-tool.c:1063
+#: gio/gdbus-tool.c:1898 gio/gdbus-tool.c:2138
 #, c-format
 msgid "Error: %s is not a valid object path\n"
 msgstr "Hiba: a(z) %s nem érvényes objektumútvonal\n"
@@ -1117,8 +1130,8 @@ msgstr "Szignál és interfész neve"
 msgid "Emit a signal."
 msgstr "Szignál kibocsátása."
 
-#: gio/gdbus-tool.c:683 gio/gdbus-tool.c:997 gio/gdbus-tool.c:1827
-#: gio/gdbus-tool.c:2059 gio/gdbus-tool.c:2279
+#: gio/gdbus-tool.c:683 gio/gdbus-tool.c:1000 gio/gdbus-tool.c:1835
+#: gio/gdbus-tool.c:2067 gio/gdbus-tool.c:2287
 #, c-format
 msgid "Error connecting: %s\n"
 msgstr "Hiba a csatlakozáskor: %s\n"
@@ -1128,7 +1141,7 @@ msgstr "Hiba a csatlakozáskor: %s\n"
 msgid "Error: %s is not a valid unique bus name.\n"
 msgstr "Hiba: a(z) %s nem érvényes egyedi busznév.\n"
 
-#: gio/gdbus-tool.c:722 gio/gdbus-tool.c:1040 gio/gdbus-tool.c:1870
+#: gio/gdbus-tool.c:722 gio/gdbus-tool.c:1043 gio/gdbus-tool.c:1878
 msgid "Error: Object path is not specified\n"
 msgstr "Hiba: az objektumútvonal nincs megadva\n"
 
@@ -1152,7 +1165,7 @@ msgid "Error: %s is not a valid member name\n"
 msgstr "Hiba: a(z) %s nem érvényes tagnév\n"
 
 #. Use the original non-"parse-me-harder" error
-#: gio/gdbus-tool.c:834 gio/gdbus-tool.c:1172
+#: gio/gdbus-tool.c:834 gio/gdbus-tool.c:1175
 #, c-format
 msgid "Error parsing parameter %d: %s\n"
 msgstr "Hiba a(z) %d. paraméter feldolgozásakor: %s\n"
@@ -1162,99 +1175,104 @@ msgstr "Hiba a(z) %d. paraméter feldolgozásakor: %s\n"
 msgid "Error flushing connection: %s\n"
 msgstr "Hiba a kapcsolat kiürítésekor: %s\n"
 
-#: gio/gdbus-tool.c:893
+#: gio/gdbus-tool.c:894
 msgid "Destination name to invoke method on"
 msgstr "A cél neve a metódushíváshoz"
 
-#: gio/gdbus-tool.c:894
+#: gio/gdbus-tool.c:895
 msgid "Object path to invoke method on"
 msgstr "Objektum útvonala a metódushíváshoz"
 
-#: gio/gdbus-tool.c:895
+#: gio/gdbus-tool.c:896
 msgid "Method and interface name"
 msgstr "Metódus és interfész neve"
 
-#: gio/gdbus-tool.c:896
+#: gio/gdbus-tool.c:897
 msgid "Timeout in seconds"
 msgstr "Időkorlát másodpercben"
 
-#: gio/gdbus-tool.c:942
+#: gio/gdbus-tool.c:898
+#| msgid "Show information about locations"
+msgid "Allow interactive authorization"
+msgstr "Interaktív engedélyezés bekapcsolása"
+
+#: gio/gdbus-tool.c:945
 msgid "Invoke a method on a remote object."
 msgstr "Metódus hívása távoli objektumon."
 
-#: gio/gdbus-tool.c:1014 gio/gdbus-tool.c:1844 gio/gdbus-tool.c:2084
+#: gio/gdbus-tool.c:1017 gio/gdbus-tool.c:1852 gio/gdbus-tool.c:2092
 msgid "Error: Destination is not specified\n"
 msgstr "Hiba: a cél nincs megadva\n"
 
-#: gio/gdbus-tool.c:1025 gio/gdbus-tool.c:1861 gio/gdbus-tool.c:2095
+#: gio/gdbus-tool.c:1028 gio/gdbus-tool.c:1869 gio/gdbus-tool.c:2103
 #, c-format
 msgid "Error: %s is not a valid bus name\n"
 msgstr "Hiba: a(z) %s nem érvényes busznév\n"
 
-#: gio/gdbus-tool.c:1075
+#: gio/gdbus-tool.c:1078
 msgid "Error: Method name is not specified\n"
 msgstr "Hiba: a metódusnév nincs megadva\n"
 
-#: gio/gdbus-tool.c:1086
+#: gio/gdbus-tool.c:1089
 #, c-format
 msgid "Error: Method name “%s” is invalid\n"
 msgstr "Hiba: a metódusnév („%s”) érvénytelen\n"
 
-#: gio/gdbus-tool.c:1164
+#: gio/gdbus-tool.c:1167
 #, c-format
 msgid "Error parsing parameter %d of type “%s”: %s\n"
 msgstr "Hiba a(z) „%2$s” típusú %1$d. paraméter feldolgozásakor: %3$s\n"
 
-#: gio/gdbus-tool.c:1190
+#: gio/gdbus-tool.c:1193
 #, c-format
 msgid "Error adding handle %d: %s\n"
 msgstr "Hiba a(z) „%d” leíró hozzáadásakor: %s\n"
 
-#: gio/gdbus-tool.c:1686
+#: gio/gdbus-tool.c:1694
 msgid "Destination name to introspect"
 msgstr "A cél neve a betekintéshez"
 
-#: gio/gdbus-tool.c:1687
+#: gio/gdbus-tool.c:1695
 msgid "Object path to introspect"
 msgstr "Az objektumútvonal a betekintéshez"
 
-#: gio/gdbus-tool.c:1688
+#: gio/gdbus-tool.c:1696
 msgid "Print XML"
 msgstr "XML kiírása"
 
-#: gio/gdbus-tool.c:1689
+#: gio/gdbus-tool.c:1697
 msgid "Introspect children"
 msgstr "Betekintés gyermekekbe"
 
-#: gio/gdbus-tool.c:1690
+#: gio/gdbus-tool.c:1698
 msgid "Only print properties"
 msgstr "Csak a tulajdonságok kiírása"
 
-#: gio/gdbus-tool.c:1779
+#: gio/gdbus-tool.c:1787
 msgid "Introspect a remote object."
 msgstr "Betekintés távoli objektumba."
 
-#: gio/gdbus-tool.c:1985
+#: gio/gdbus-tool.c:1993
 msgid "Destination name to monitor"
 msgstr "Megfigyelendő cél neve"
 
-#: gio/gdbus-tool.c:1986
+#: gio/gdbus-tool.c:1994
 msgid "Object path to monitor"
 msgstr "Megfigyelendő objektumútvonal"
 
-#: gio/gdbus-tool.c:2011
+#: gio/gdbus-tool.c:2019
 msgid "Monitor a remote object."
 msgstr "Távoli objektum megfigyelése."
 
-#: gio/gdbus-tool.c:2069
+#: gio/gdbus-tool.c:2077
 msgid "Error: can’t monitor a non-message-bus connection\n"
 msgstr "Hiba: nem figyelhető meg a nem üzenetbusz kapcsolat\n"
 
-#: gio/gdbus-tool.c:2193
+#: gio/gdbus-tool.c:2201
 msgid "Service to activate before waiting for the other one (well-known name)"
 msgstr "Az aktiválandó szolgáltatás, mielőtt a másikra várna (ismert név)"
 
-#: gio/gdbus-tool.c:2196
+#: gio/gdbus-tool.c:2204
 msgid ""
 "Timeout to wait for before exiting with an error (seconds); 0 for no timeout "
 "(default)"
@@ -1262,64 +1280,69 @@ msgstr ""
 "Az időtúllépés, mielőtt hibával kilépne (másodpercben); 0, ha nincs "
 "időtúllépés (alapértelmezett)"
 
-#: gio/gdbus-tool.c:2244
+#: gio/gdbus-tool.c:2252
 msgid "[OPTION…] BUS-NAME"
 msgstr "[KAPCSOLÓ…] BUSZNÉV"
 
-#: gio/gdbus-tool.c:2245
+#: gio/gdbus-tool.c:2253
 msgid "Wait for a bus name to appear."
 msgstr "Várakozás egy busznévre."
 
-#: gio/gdbus-tool.c:2321
+#: gio/gdbus-tool.c:2329
 msgid "Error: A service to activate for must be specified.\n"
 msgstr "Hiba: az objektumútvonal nincs megadva.\n"
 
-#: gio/gdbus-tool.c:2326
+#: gio/gdbus-tool.c:2334
 msgid "Error: A service to wait for must be specified.\n"
 msgstr "Hiba: az objektumútvonal nincs megadva.\n"
 
-#: gio/gdbus-tool.c:2331
+#: gio/gdbus-tool.c:2339
 msgid "Error: Too many arguments.\n"
 msgstr "Hiba: Túl sok argumentum.\n"
 
-#: gio/gdbus-tool.c:2339 gio/gdbus-tool.c:2346
+#: gio/gdbus-tool.c:2347 gio/gdbus-tool.c:2354
 #, c-format
 msgid "Error: %s is not a valid well-known bus name.\n"
 msgstr "Hiba: a(z) %s nem érvényes busznév\n"
 
-#: gio/gdesktopappinfo.c:2106 gio/gdesktopappinfo.c:4935
+#: gio/gdebugcontrollerdbus.c:203
+#, c-format
+msgid "Not authorized to change debug settings"
+msgstr "Nincs felhatalmazva a hibakeresési beállítások megváltoztatására"
+
+#: gio/gdesktopappinfo.c:2174 gio/gdesktopappinfo.c:5099
 msgid "Unnamed"
 msgstr "Névtelen"
 
-#: gio/gdesktopappinfo.c:2516
+#: gio/gdesktopappinfo.c:2584
 msgid "Desktop file didn’t specify Exec field"
 msgstr "A desktop fájl nem adta meg az Exec mezőt"
 
-#: gio/gdesktopappinfo.c:2804
+#: gio/gdesktopappinfo.c:2892
 msgid "Unable to find terminal required for application"
 msgstr "Nem található az alkalmazáshoz szükséges terminál"
 
-#: gio/gdesktopappinfo.c:3455
+#: gio/gdesktopappinfo.c:3619
 #, c-format
 msgid "Can’t create user application configuration folder %s: %s"
 msgstr ""
 "Nem hozható létre a(z) %s felhasználói alkalmazáskonfigurációs mappa: %s"
 
-#: gio/gdesktopappinfo.c:3459
+#: gio/gdesktopappinfo.c:3623
 #, c-format
 msgid "Can’t create user MIME configuration folder %s: %s"
 msgstr "Nem hozható létre a(z) %s felhasználói MIME konfigurációs mappa: %s"
 
-#: gio/gdesktopappinfo.c:3701 gio/gdesktopappinfo.c:3725
+#: gio/gdesktopappinfo.c:3865 gio/gdesktopappinfo.c:3889
 msgid "Application information lacks an identifier"
 msgstr "Az alkalmazásinformációkból hiányzik az azonosító"
 
-#: gio/gdesktopappinfo.c:3961
+#: gio/gdesktopappinfo.c:4125
 #, c-format
 msgid "Can’t create user desktop file %s"
 msgstr "Nem hozható létre a felhasználói desktop fájl (%s)"
 
-#: gio/gdesktopappinfo.c:4097
+#: gio/gdesktopappinfo.c:4261
 #, c-format
 msgid "Custom definition for %s"
 msgstr "%s egyéni meghatározása"
@@ -1348,7 +1371,7 @@ msgstr "a meghajtó nem valósítja meg a indítást"
 msgid "drive doesn’t implement stop"
 msgstr "a meghajtó nem valósítja meg a leállítást"
 
-#: gio/gdtlsconnection.c:1153 gio/gtlsconnection.c:920
+#: gio/gdtlsconnection.c:1186 gio/gtlsconnection.c:955
 msgid "TLS backend does not implement TLS binding retrieval"
 msgstr "A TLS háttérszolgáltatás nem valósítja meg a TLS kötéslekérdezést"
 
@@ -1389,73 +1412,73 @@ msgstr "Egy GEmblem kellene a GEmblemedIconhoz"
 #. * trying to find the enclosing (user visible)
 #. * mount of a file, but none exists.
 #.
-#: gio/gfile.c:1561
+#: gio/gfile.c:1579
 msgid "Containing mount does not exist"
 msgstr "A tartalmazó csatolás nem létezik"
 
-#: gio/gfile.c:2608 gio/glocalfile.c:2486
+#: gio/gfile.c:2626 gio/glocalfile.c:2486
 msgid "Can’t copy over directory"
 msgstr "Nem lehet a könyvtárra másolni"
 
-#: gio/gfile.c:2668
+#: gio/gfile.c:2686
 msgid "Can’t copy directory over directory"
 msgstr "A könyvtár nem másolható könyvtárba"
 
-#: gio/gfile.c:2676
+#: gio/gfile.c:2694
 msgid "Target file exists"
 msgstr "A célfájl létezik"
 
-#: gio/gfile.c:2695
+#: gio/gfile.c:2713
 msgid "Can’t recursively copy directory"
 msgstr "A könyvtár nem másolható rekurzívan"
 
-#: gio/gfile.c:2996
+#: gio/gfile.c:3014
 msgid "Splice not supported"
 msgstr "A fájlillesztés nem támogatott"
 
-#: gio/gfile.c:3000
+#: gio/gfile.c:3018
 #, c-format
 msgid "Error splicing file: %s"
 msgstr "Hiba a fájl illesztésekor: %s"
 
-#: gio/gfile.c:3152
+#: gio/gfile.c:3170
 msgid "Copy (reflink/clone) between mounts is not supported"
 msgstr "A csatolások közti másolás (reflink/clone) nem támogatott"
 
-#: gio/gfile.c:3156
+#: gio/gfile.c:3174
 msgid "Copy (reflink/clone) is not supported or invalid"
 msgstr "A másolás (reflink/clone) nem támogatott vagy érvénytelen"
 
-#: gio/gfile.c:3161
+#: gio/gfile.c:3179
 msgid "Copy (reflink/clone) is not supported or didn’t work"
 msgstr "A másolás (reflink/clone) nem támogatott vagy nem működött"
 
-#: gio/gfile.c:3226
+#: gio/gfile.c:3244
 msgid "Can’t copy special file"
 msgstr "A speciális fájl nem másolható"
 
-#: gio/gfile.c:4035
+#: gio/gfile.c:4138
 msgid "Invalid symlink value given"
 msgstr "Érvénytelen szimbolikus link érték került megadásra"
 
-#: gio/gfile.c:4045 glib/gfileutils.c:2333
+#: gio/gfile.c:4148 glib/gfileutils.c:2333
 msgid "Symbolic links not supported"
 msgstr "A szimbolikus linkek használata nem támogatott"
 
-#: gio/gfile.c:4213
+#: gio/gfile.c:4316
 msgid "Trash not supported"
 msgstr "A Kuka nem támogatott"
 
-#: gio/gfile.c:4325
+#: gio/gfile.c:4428
 #, c-format
 msgid "File names cannot contain “%c”"
 msgstr "A fájlnevek nem tartalmazhatnak „%c” karaktert"
 
-#: gio/gfile.c:6806 gio/gvolume.c:364
+#: gio/gfile.c:7028 gio/gvolume.c:364
 msgid "volume doesn’t implement mount"
 msgstr "a kötet nem valósítja meg a csatolást"
 
-#: gio/gfile.c:6920 gio/gfile.c:6968
+#: gio/gfile.c:7142 gio/gfile.c:7190
 msgid "No application is registered as handling this file"
 msgstr "Nincs alkalmazás regisztrálva a fájl kezeléséhez"
 
@@ -1500,7 +1523,7 @@ msgstr "A bemeneti adatfolyam csonkítása nem engedélyezett"
 msgid "Truncate not supported on stream"
 msgstr "Az adatfolyam csonkítása nem engedélyezett"
 
-#: gio/ghttpproxy.c:91 gio/gresolver.c:443 gio/gresolver.c:596
+#: gio/ghttpproxy.c:91 gio/gresolver.c:458 gio/gresolver.c:611
 #: glib/gconvert.c:1825
 msgid "Invalid hostname"
 msgstr "Érvénytelen gépnév"
@@ -1588,7 +1611,7 @@ msgid "Could not parse “%s” as IP address mask"
 msgstr "Nem dolgozható fel a(z) „%s” IP-cím maszkként"
 
 #: gio/ginetsocketaddress.c:203 gio/ginetsocketaddress.c:220
-#: gio/gnativesocketaddress.c:109 gio/gunixsocketaddress.c:221
+#: gio/gnativesocketaddress.c:109 gio/gunixsocketaddress.c:228
 msgid "Not enough space for socket address"
 msgstr "Nincs elég hely a foglalat címének"
 
@@ -2428,15 +2451,15 @@ msgstr "Hiba a fájl tömörítésekor: %s"
 msgid "text may not appear inside <%s>"
 msgstr "nem jelenhet meg szöveg ezen belül: <%s>"
 
-#: gio/glib-compile-resources.c:737 gio/glib-compile-schemas.c:2172
+#: gio/glib-compile-resources.c:819 gio/glib-compile-schemas.c:2172
 msgid "Show program version and exit"
 msgstr "A programverzió megjelenítése és kilépés"
 
-#: gio/glib-compile-resources.c:738
+#: gio/glib-compile-resources.c:820
 msgid "Name of the output file"
 msgstr "A kimeneti fájl neve"
 
-#: gio/glib-compile-resources.c:739
+#: gio/glib-compile-resources.c:821
 msgid ""
 "The directories to load files referenced in FILE from (default: current "
 "directory)"
@@ -2444,46 +2467,46 @@ msgstr ""
 "A FILE-ban megadott fájlok olvasása ebből a könyvtárból (alapértelmezett: "
 "aktuális könyvtár)"
 
-#: gio/glib-compile-resources.c:739 gio/glib-compile-schemas.c:2173
+#: gio/glib-compile-resources.c:821 gio/glib-compile-schemas.c:2173
 #: gio/glib-compile-schemas.c:2202
 msgid "DIRECTORY"
 msgstr "KÖNYVTÁR"
 
-#: gio/glib-compile-resources.c:740
+#: gio/glib-compile-resources.c:822
 msgid ""
 "Generate output in the format selected for by the target filename extension"
 msgstr ""
 "Kimenet előállítása a célfájl kiterjesztése által kiválasztott formátumban"
 
-#: gio/glib-compile-resources.c:741
+#: gio/glib-compile-resources.c:823
 msgid "Generate source header"
 msgstr "Forrásfejléc előállítása"
 
-#: gio/glib-compile-resources.c:742
+#: gio/glib-compile-resources.c:824
 msgid "Generate source code used to link in the resource file into your code"
 msgstr "Az erőforrásfájl kódba linkelésére használt forráskód előállítása"
 
-#: gio/glib-compile-resources.c:743
+#: gio/glib-compile-resources.c:825
 msgid "Generate dependency list"
 msgstr "Függőséglista előállítása"
 
-#: gio/glib-compile-resources.c:744
+#: gio/glib-compile-resources.c:826
 msgid "Name of the dependency file to generate"
 msgstr "Az előállítandó függőségfájl neve"
 
-#: gio/glib-compile-resources.c:745
+#: gio/glib-compile-resources.c:827
 msgid "Include phony targets in the generated dependency file"
 msgstr "A „phony” célok bevétele a generált függőségi fájlba"
 
-#: gio/glib-compile-resources.c:746
+#: gio/glib-compile-resources.c:828
 msgid "Don’t automatically create and register resource"
 msgstr "Ne hozza létre és ne regisztrálja automatikusan az erőforrást"
 
-#: gio/glib-compile-resources.c:747
+#: gio/glib-compile-resources.c:829
 msgid "Don’t export functions; declare them G_GNUC_INTERNAL"
 msgstr "Ne exportáljon függvényeket; deklarálja azokat G_GNUC_INTERNAL-ként"
 
-#: gio/glib-compile-resources.c:748
+#: gio/glib-compile-resources.c:830
 msgid ""
 "Don’t embed resource data in the C file; assume it's linked externally "
 "instead"
@@ -2491,11 +2514,15 @@ msgstr ""
 "Ne ágyazzon be erőforrásadatokat a C fájlba, tekintse inkább úgy, hogy "
 "külsőleg hivatkozott"
 
-#: gio/glib-compile-resources.c:749
+#: gio/glib-compile-resources.c:831
 msgid "C identifier name used for the generated source code"
 msgstr "Az előállított forráskódhoz használt C azonosító neve"
 
-#: gio/glib-compile-resources.c:775
+#: gio/glib-compile-resources.c:832
+msgid "The target C compiler (default: the CC environment variable)"
+msgstr "A cél C fordító (alapértelmezett: a CC környezeti változó)"
+
+#: gio/glib-compile-resources.c:858
 msgid ""
 "Compile a resource specification into a resource file.\n"
 "Resource specification files have the extension .gresource.xml,\n"
@@ -2505,7 +2532,7 @@ msgstr ""
 "Az erőforrás-specifikációs fájlok kiterjesztése .gresource.xml,\n"
 "az erőforrásfájl kiterjesztése pedig .gresource."
 
-#: gio/glib-compile-resources.c:797
+#: gio/glib-compile-resources.c:880
 msgid "You should give exactly one file name\n"
 msgstr "Pontosan egy fájlnevet kell megadnia\n"
 
@@ -3310,7 +3337,7 @@ msgid "Error truncating file: %s"
 msgstr "Hiba a fájl csonkításakor: %s"
 
 #: gio/glocalfileoutputstream.c:662 gio/glocalfileoutputstream.c:907
-#: gio/glocalfileoutputstream.c:1218 gio/gsubprocess.c:226
+#: gio/glocalfileoutputstream.c:1218 gio/gsubprocess.c:229
 #, c-format
 msgid "Error opening file “%s”: %s"
 msgstr "Hiba a(z) %s fájl megnyitásakor: %s"
@@ -3332,7 +3359,7 @@ msgstr "A fájlt külső program módosította"
 msgid "Error removing old file: %s"
 msgstr "Hiba a régi fájl eltávolításakor: %s"
 
-#: gio/gmemoryinputstream.c:474 gio/gmemoryoutputstream.c:772
+#: gio/gmemoryinputstream.c:474 gio/gmemoryoutputstream.c:762
 msgid "Invalid GSeekType supplied"
 msgstr "A megadott GSeekType nem támogatott"
 
@@ -3344,15 +3371,15 @@ msgstr "Érvénytelen keresési kérés"
 msgid "Cannot truncate GMemoryInputStream"
 msgstr "A GMemoryInputStream nem csonkítható"
 
-#: gio/gmemoryoutputstream.c:567
+#: gio/gmemoryoutputstream.c:568
 msgid "Memory output stream not resizable"
 msgstr "A memóriakimeneti adatfolyam nem méretezhető át"
 
-#: gio/gmemoryoutputstream.c:583
+#: gio/gmemoryoutputstream.c:584
 msgid "Failed to resize memory output stream"
 msgstr "A memóriakimeneti adatfolyam átméretezése meghiúsult"
 
-#: gio/gmemoryoutputstream.c:673
+#: gio/gmemoryoutputstream.c:663
 msgid ""
 "Amount of memory required to process the write is larger than available "
 "address space"
@@ -3360,11 +3387,11 @@ msgstr ""
 "Az írás feldolgozásához szükséges memória mérete nagyobb, mint az elérhető "
 "címtér"
 
-#: gio/gmemoryoutputstream.c:782
+#: gio/gmemoryoutputstream.c:772
 msgid "Requested seek before the beginning of the stream"
 msgstr "Pozicionálási kérés az adatfolyam eleje elé"
 
-#: gio/gmemoryoutputstream.c:797
+#: gio/gmemoryoutputstream.c:787
 msgid "Requested seek beyond the end of the stream"
 msgstr "Pozicionálási kérés az adatfolyam vége mögé"
 
@@ -3471,18 +3498,18 @@ msgstr "A(z) %s részére átadott vektorok összege túl nagy"
 msgid "Source stream is already closed"
 msgstr "A forrás adatfolyam már le van zárva"
 
-#: gio/gresolver.c:386 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
+#: gio/gresolver.c:401 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
 #, c-format
 msgid "Error resolving “%s”: %s"
 msgstr "Hiba a(z) „%s” feloldásakor: %s"
 
 #. Translators: The placeholder is for a function name.
-#: gio/gresolver.c:455 gio/gresolver.c:615
+#: gio/gresolver.c:470 gio/gresolver.c:630
 #, c-format
 msgid "%s not implemented"
 msgstr "A(z) %s nincs megvalósítva"
 
-#: gio/gresolver.c:984 gio/gresolver.c:1036
+#: gio/gresolver.c:999 gio/gresolver.c:1051
 msgid "Invalid domain"
 msgstr "Érvénytelen tartomány"
 
@@ -3600,7 +3627,7 @@ msgstr ""
 msgid "  SECTION   An (optional) elf section name\n"
 msgstr "  SZAKASZ   Egy elhagyható elf szakasznév\n"
 
-#: gio/gresource-tool.c:565 gio/gsettings-tool.c:706
+#: gio/gresource-tool.c:565 gio/gsettings-tool.c:718
 msgid "  COMMAND   The (optional) command to explain\n"
 msgstr "  PARANCS   A megmagyarázandó (elhagyható) parancs\n"
 
@@ -3633,7 +3660,7 @@ msgstr "ÚTVONAL"
 msgid "  PATH      A resource path\n"
 msgstr "  ÚTVONAL   Egy erőforrás-útvonal\n"
 
-#: gio/gsettings-tool.c:49 gio/gsettings-tool.c:70 gio/gsettings-tool.c:911
+#: gio/gsettings-tool.c:49 gio/gsettings-tool.c:70 gio/gsettings-tool.c:923
 #, c-format
 msgid "No such schema “%s”\n"
 msgstr "Nincs „%s” séma\n"
@@ -3664,35 +3691,35 @@ msgstr "Az útvonalnak osztásjellel (/) kell végződnie\n"
 msgid "Path must not contain two adjacent slashes (//)\n"
 msgstr "Az útvonal nem tartalmazhat két szomszédos osztásjelet (//)\n"
 
-#: gio/gsettings-tool.c:541
+#: gio/gsettings-tool.c:553
 msgid "The provided value is outside of the valid range\n"
 msgstr "A megadott érték kívül esik az érvényes tartományon\n"
 
-#: gio/gsettings-tool.c:548
+#: gio/gsettings-tool.c:560
 msgid "The key is not writable\n"
 msgstr "A kulcs nem írható\n"
 
-#: gio/gsettings-tool.c:584
+#: gio/gsettings-tool.c:596
 msgid "List the installed (non-relocatable) schemas"
 msgstr "A telepített (át nem helyezhető) sémák felsorolása"
 
-#: gio/gsettings-tool.c:590
+#: gio/gsettings-tool.c:602
 msgid "List the installed relocatable schemas"
 msgstr "A telepített áthelyezhető sémák felsorolása"
 
-#: gio/gsettings-tool.c:596
+#: gio/gsettings-tool.c:608
 msgid "List the keys in SCHEMA"
 msgstr "A SÉMA kulcsainak felsorolása"
 
-#: gio/gsettings-tool.c:597 gio/gsettings-tool.c:603 gio/gsettings-tool.c:646
+#: gio/gsettings-tool.c:609 gio/gsettings-tool.c:615 gio/gsettings-tool.c:658
 msgid "SCHEMA[:PATH]"
 msgstr "SÉMA[:ÚTVONAL]"
 
-#: gio/gsettings-tool.c:602
+#: gio/gsettings-tool.c:614
 msgid "List the children of SCHEMA"
 msgstr "A SÉMA gyermekeinek felsorolása"
 
-#: gio/gsettings-tool.c:608
+#: gio/gsettings-tool.c:620
 msgid ""
 "List keys and values, recursively\n"
 "If no SCHEMA is given, list all keys\n"
@@ -3700,48 +3727,48 @@ msgstr ""
 "Kulcsok és értékek rekurzív felsorolása\n"
 "Ha nincs megadva SÉMA, az összes kulcs felsorolása\n"
 
-#: gio/gsettings-tool.c:610
+#: gio/gsettings-tool.c:622
 msgid "[SCHEMA[:PATH]]"
 msgstr "[SÉMA[:ÚTVONAL]]"
 
-#: gio/gsettings-tool.c:615
+#: gio/gsettings-tool.c:627
 msgid "Get the value of KEY"
 msgstr "A KULCS értékének lekérése"
 
-#: gio/gsettings-tool.c:616 gio/gsettings-tool.c:622 gio/gsettings-tool.c:628
-#: gio/gsettings-tool.c:640 gio/gsettings-tool.c:652
+#: gio/gsettings-tool.c:628 gio/gsettings-tool.c:634 gio/gsettings-tool.c:640
+#: gio/gsettings-tool.c:652 gio/gsettings-tool.c:664
 msgid "SCHEMA[:PATH] KEY"
 msgstr "SÉMA[:ÚTVONAL] KULCS"
 
-#: gio/gsettings-tool.c:621
+#: gio/gsettings-tool.c:633
 msgid "Query the range of valid values for KEY"
 msgstr "A KULCS érvényes értékei tartományának lekérése"
 
-#: gio/gsettings-tool.c:627
+#: gio/gsettings-tool.c:639
 msgid "Query the description for KEY"
 msgstr "A KULCS leírásának lekérése"
 
-#: gio/gsettings-tool.c:633
+#: gio/gsettings-tool.c:645
 msgid "Set the value of KEY to VALUE"
 msgstr "A KULCS értékének beállítása az ÉRTÉKRE"
 
-#: gio/gsettings-tool.c:634
+#: gio/gsettings-tool.c:646
 msgid "SCHEMA[:PATH] KEY VALUE"
 msgstr "SÉMA[:ÚTVONAL] KULCS ÉRTÉK"
 
-#: gio/gsettings-tool.c:639
+#: gio/gsettings-tool.c:651
 msgid "Reset KEY to its default value"
 msgstr "A KULCS visszaállítása az alapértékére"
 
-#: gio/gsettings-tool.c:645
+#: gio/gsettings-tool.c:657
 msgid "Reset all keys in SCHEMA to their defaults"
 msgstr "A SÉMA minden kulcsának visszaállítása az alapértékekre"
 
-#: gio/gsettings-tool.c:651
+#: gio/gsettings-tool.c:663
 msgid "Check if KEY is writable"
 msgstr "A KULCS írhatóságának ellenőrzése"
 
-#: gio/gsettings-tool.c:657
+#: gio/gsettings-tool.c:669
 msgid ""
 "Monitor KEY for changes.\n"
 "If no KEY is specified, monitor all keys in SCHEMA.\n"
@@ -3751,11 +3778,11 @@ msgstr ""
 "Ha nincs megadva KULCS, akkor a SÉMA összes kulcsának figyelése.\n"
 "A figyelés befejezéséhez nyomja meg a ^C kombinációt.\n"
 
-#: gio/gsettings-tool.c:660
+#: gio/gsettings-tool.c:672
 msgid "SCHEMA[:PATH] [KEY]"
 msgstr "SÉMA[:ÚTVONAL] [KULCS]"
 
-#: gio/gsettings-tool.c:672
+#: gio/gsettings-tool.c:684
 msgid ""
 "Usage:\n"
 "  gsettings --version\n"
@@ -3804,7 +3831,7 @@ msgstr ""
 "Részletes segítségért adja ki a „gsettings help PARANCS” parancsot.\n"
 "\n"
 
-#: gio/gsettings-tool.c:696
+#: gio/gsettings-tool.c:708
 #, c-format
 msgid ""
 "Usage:\n"
@@ -3819,11 +3846,11 @@ msgstr ""
 "%s\n"
 "\n"
 
-#: gio/gsettings-tool.c:702
+#: gio/gsettings-tool.c:714
 msgid "  SCHEMADIR A directory to search for additional schemas\n"
 msgstr "  SÉMAKVT    További sémák keresése ebben a könyvtárban\n"
 
-#: gio/gsettings-tool.c:710
+#: gio/gsettings-tool.c:722
 msgid ""
 "  SCHEMA    The name of the schema\n"
 "  PATH      The path, for relocatable schemas\n"
@@ -3831,213 +3858,213 @@ msgstr ""
 "  SÉMA      A séma neve\n"
 "  ÚTVONAL   Az áthelyezhető sémák útvonala\n"
 
-#: gio/gsettings-tool.c:715
+#: gio/gsettings-tool.c:727
 msgid "  KEY       The (optional) key within the schema\n"
 msgstr "  KULCS     A sémán belüli (elhagyható) kulcs\n"
 
-#: gio/gsettings-tool.c:719
+#: gio/gsettings-tool.c:731
 msgid "  KEY       The key within the schema\n"
 msgstr "  KULCS     A sémán belüli kulcs\n"
 
-#: gio/gsettings-tool.c:723
+#: gio/gsettings-tool.c:735
 msgid "  VALUE     The value to set\n"
 msgstr "  ÉRTÉK     A beállítandó érték\n"
 
-#: gio/gsettings-tool.c:778
+#: gio/gsettings-tool.c:790
 #, c-format
 msgid "Could not load schemas from %s: %s\n"
 msgstr "Nem lehet sémákat betölteni ebből: %s: %s\n"
 
-#: gio/gsettings-tool.c:790
+#: gio/gsettings-tool.c:802
 msgid "No schemas installed\n"
 msgstr "Nincsenek telepítve sémák\n"
 
-#: gio/gsettings-tool.c:869
+#: gio/gsettings-tool.c:881
 msgid "Empty schema name given\n"
 msgstr "Üres sémanevet adott meg\n"
 
-#: gio/gsettings-tool.c:924
+#: gio/gsettings-tool.c:936
 #, c-format
 msgid "No such key “%s”\n"
 msgstr "Nincs „%s” kulcs\n"
 
-#: gio/gsocket.c:413
+#: gio/gsocket.c:417
 msgid "Invalid socket, not initialized"
 msgstr "Érvénytelen foglalat, nincs előkészítve"
 
-#: gio/gsocket.c:420
+#: gio/gsocket.c:424
 #, c-format
 msgid "Invalid socket, initialization failed due to: %s"
 msgstr "Érvénytelen foglalat, az előkészítés meghiúsulásának oka: %s"
 
-#: gio/gsocket.c:428
+#: gio/gsocket.c:432
 msgid "Socket is already closed"
 msgstr "A foglalat már le van zárva"
 
-#: gio/gsocket.c:443 gio/gsocket.c:3190 gio/gsocket.c:4420 gio/gsocket.c:4478
+#: gio/gsocket.c:447 gio/gsocket.c:3194 gio/gsocket.c:4427 gio/gsocket.c:4485
 msgid "Socket I/O timed out"
 msgstr "A foglalat I/O túllépte az időkorlátot"
 
-#: gio/gsocket.c:578
+#: gio/gsocket.c:582
 #, c-format
 msgid "creating GSocket from fd: %s"
 msgstr "GSocket létrehozása fájlleíróból: %s"
 
-#: gio/gsocket.c:607 gio/gsocket.c:671 gio/gsocket.c:678
+#: gio/gsocket.c:611 gio/gsocket.c:675 gio/gsocket.c:682
 #, c-format
 msgid "Unable to create socket: %s"
 msgstr "Nem sikerült létrehozni foglalatot: %s"
 
-#: gio/gsocket.c:671
+#: gio/gsocket.c:675
 msgid "Unknown family was specified"
 msgstr "Ismeretlen családot adtak meg"
 
-#: gio/gsocket.c:678
+#: gio/gsocket.c:682
 msgid "Unknown protocol was specified"
 msgstr "Ismeretlen protokollt adtak meg"
 
-#: gio/gsocket.c:1169
+#: gio/gsocket.c:1173
 #, c-format
 msgid "Cannot use datagram operations on a non-datagram socket."
 msgstr "A datagram műveletek nem használhatóak nem-datagram foglalaton."
 
-#: gio/gsocket.c:1186
+#: gio/gsocket.c:1190
 #, c-format
 msgid "Cannot use datagram operations on a socket with a timeout set."
 msgstr ""
 "A datagram műveletek nem használhatóak olyan foglalaton, amelyre időtúllépés "
 "van beállítva."
 
-#: gio/gsocket.c:1993
+#: gio/gsocket.c:1997
 #, c-format
 msgid "could not get local address: %s"
 msgstr "nem kérhető le a helyi cím: %s"
 
-#: gio/gsocket.c:2039
+#: gio/gsocket.c:2043
 #, c-format
 msgid "could not get remote address: %s"
 msgstr "nem kérhető le a távoli cím: %s"
 
-#: gio/gsocket.c:2105
+#: gio/gsocket.c:2109
 #, c-format
 msgid "could not listen: %s"
 msgstr "nem lehet figyelni: %s"
 
-#: gio/gsocket.c:2209
+#: gio/gsocket.c:2213
 #, c-format
 msgid "Error binding to address %s: %s"
 msgstr "Hiba a(z) %s címhez csatlakozáskor: %s"
 
-#: gio/gsocket.c:2385 gio/gsocket.c:2422 gio/gsocket.c:2532 gio/gsocket.c:2557
-#: gio/gsocket.c:2620 gio/gsocket.c:2678 gio/gsocket.c:2696
+#: gio/gsocket.c:2389 gio/gsocket.c:2426 gio/gsocket.c:2536 gio/gsocket.c:2561
+#: gio/gsocket.c:2624 gio/gsocket.c:2682 gio/gsocket.c:2700
 #, c-format
 msgid "Error joining multicast group: %s"
 msgstr "Hiba a multicast csoporthoz csatlakozáskor: %s"
 
-#: gio/gsocket.c:2386 gio/gsocket.c:2423 gio/gsocket.c:2533 gio/gsocket.c:2558
-#: gio/gsocket.c:2621 gio/gsocket.c:2679 gio/gsocket.c:2697
+#: gio/gsocket.c:2390 gio/gsocket.c:2427 gio/gsocket.c:2537 gio/gsocket.c:2562
+#: gio/gsocket.c:2625 gio/gsocket.c:2683 gio/gsocket.c:2701
 #, c-format
 msgid "Error leaving multicast group: %s"
 msgstr "Hiba a multicast csoport elhagyásakor: %s"
 
-#: gio/gsocket.c:2387
+#: gio/gsocket.c:2391
 msgid "No support for source-specific multicast"
 msgstr "A forrásspecifikus multicast nem támogatott"
 
-#: gio/gsocket.c:2534
+#: gio/gsocket.c:2538
 msgid "Unsupported socket family"
 msgstr "Nem támogatott foglalatcsalád"
 
-#: gio/gsocket.c:2559
+#: gio/gsocket.c:2563
 msgid "source-specific not an IPv4 address"
 msgstr "A forrásspecifikus nem egy IPv4-cím"
 
-#: gio/gsocket.c:2583
+#: gio/gsocket.c:2587
 #, c-format
 msgid "Interface name too long"
 msgstr "Az interfésznév túl hosszú"
 
-#: gio/gsocket.c:2596 gio/gsocket.c:2646
+#: gio/gsocket.c:2600 gio/gsocket.c:2650
 #, c-format
 msgid "Interface not found: %s"
 msgstr "Interfész nem található: %s"
 
-#: gio/gsocket.c:2622
+#: gio/gsocket.c:2626
 msgid "No support for IPv4 source-specific multicast"
 msgstr "Az IPv4 forrásspecifikus multicast nem támogatott"
 
-#: gio/gsocket.c:2680
+#: gio/gsocket.c:2684
 msgid "No support for IPv6 source-specific multicast"
 msgstr "Az IPv6 forrásspecifikus multicast nem támogatott"
 
-#: gio/gsocket.c:2889
+#: gio/gsocket.c:2893
 #, c-format
 msgid "Error accepting connection: %s"
 msgstr "Hiba a kapcsolat elfogadásakor: %s"
 
-#: gio/gsocket.c:3015
+#: gio/gsocket.c:3019
 msgid "Connection in progress"
 msgstr "Csatlakozás folyamatban"
 
-#: gio/gsocket.c:3066
+#: gio/gsocket.c:3070
 msgid "Unable to get pending error: "
 msgstr "Nem lehet lekérni a függőben lévő hibát: "
 
-#: gio/gsocket.c:3255
+#: gio/gsocket.c:3259
 #, c-format
 msgid "Error receiving data: %s"
 msgstr "Hiba az adatok fogadásakor: %s"
 
-#: gio/gsocket.c:3452
+#: gio/gsocket.c:3456
 #, c-format
 msgid "Error sending data: %s"
 msgstr "Hiba az adatok küldésekor: %s"
 
-#: gio/gsocket.c:3639
+#: gio/gsocket.c:3643
 #, c-format
 msgid "Unable to shutdown socket: %s"
 msgstr "Nem sikerült leállítani a foglalatot: %s"
 
-#: gio/gsocket.c:3720
+#: gio/gsocket.c:3724
 #, c-format
 msgid "Error closing socket: %s"
 msgstr "Hiba a foglalat lezárásakor: %s"
 
-#: gio/gsocket.c:4413
+#: gio/gsocket.c:4420
 #, c-format
 msgid "Waiting for socket condition: %s"
 msgstr "Várakozás a foglalat állapotára: %s"
 
-#: gio/gsocket.c:4804 gio/gsocket.c:4820 gio/gsocket.c:4833
+#: gio/gsocket.c:4810 gio/gsocket.c:4826 gio/gsocket.c:4839
 #, c-format
 msgid "Unable to send message: %s"
 msgstr "Nem sikerült elküldeni az üzenetet: %s"
 
-#: gio/gsocket.c:4805 gio/gsocket.c:4821 gio/gsocket.c:4834
+#: gio/gsocket.c:4811 gio/gsocket.c:4827 gio/gsocket.c:4840
 msgid "Message vectors too large"
 msgstr "Az üzenetvektorok túl nagyok"
 
-#: gio/gsocket.c:4850 gio/gsocket.c:4852 gio/gsocket.c:4999 gio/gsocket.c:5084
-#: gio/gsocket.c:5262 gio/gsocket.c:5302 gio/gsocket.c:5304
+#: gio/gsocket.c:4856 gio/gsocket.c:4858 gio/gsocket.c:5005 gio/gsocket.c:5090
+#: gio/gsocket.c:5268 gio/gsocket.c:5308 gio/gsocket.c:5310
 #, c-format
 msgid "Error sending message: %s"
 msgstr "Hiba az üzenet küldésekor: %s"
 
-#: gio/gsocket.c:5026
+#: gio/gsocket.c:5032
 msgid "GSocketControlMessage not supported on Windows"
 msgstr "A GSocketControlMessage nem támogatott Windowson"
 
-#: gio/gsocket.c:5495 gio/gsocket.c:5571 gio/gsocket.c:5797
+#: gio/gsocket.c:5505 gio/gsocket.c:5581 gio/gsocket.c:5807
 #, c-format
 msgid "Error receiving message: %s"
 msgstr "Hiba az üzenet fájl eltávolítása fogadásakor: %s"
 
-#: gio/gsocket.c:6070 gio/gsocket.c:6081 gio/gsocket.c:6127
+#: gio/gsocket.c:6090 gio/gsocket.c:6101 gio/gsocket.c:6164
 #, c-format
 msgid "Unable to read socket credentials: %s"
 msgstr "Nem sikerült olvasni a foglalat hitelesítési adatait: %s"
 
-#: gio/gsocket.c:6136
+#: gio/gsocket.c:6173
 msgid "g_socket_get_credentials not implemented for this OS"
 msgstr "a g_socket_get_credentials nincs megvalósítva erre az OS-re"
 
@@ -4055,11 +4082,11 @@ msgstr "Nem sikerült kapcsolódni a következőhöz: %s: "
 msgid "Could not connect: "
 msgstr "Nem sikerült kapcsolódni: "
 
-#: gio/gsocketclient.c:1162 gio/gsocketclient.c:1749
+#: gio/gsocketclient.c:1202 gio/gsocketclient.c:1793
 msgid "Proxying over a non-TCP connection is not supported."
 msgstr "A proxyzás nem TCP kapcsolaton keresztül nem támogatott."
 
-#: gio/gsocketclient.c:1194 gio/gsocketclient.c:1778
+#: gio/gsocketclient.c:1234 gio/gsocketclient.c:1822
 #, c-format
 msgid "Proxy protocol “%s” is not supported."
 msgstr "A proxyprotokoll („%s”) nem támogatott."
@@ -4158,7 +4185,7 @@ msgstr "A SOCKSv5 proxy nem támogatja a megadott címtípust."
 msgid "Unknown SOCKSv5 proxy error."
 msgstr "Ismeretlen SOCKSv5 proxy hiba."
 
-#: gio/gtestdbus.c:612 glib/gspawn-win32.c:311
+#: gio/gtestdbus.c:612 glib/gspawn-win32.c:314
 #, c-format
 msgid "Failed to create pipe for communicating with child process (%s)"
 msgstr ""
@@ -4202,27 +4229,32 @@ msgstr "Ideiglenesen nem oldható fel: „%s”"
 msgid "Error resolving “%s”"
 msgstr "Hiba a(z) „%s” feloldásakor"
 
-#: gio/gtlscertificate.c:431
+#: gio/gtlscertificate.c:478
 msgid "No PEM-encoded private key found"
 msgstr "Nem található PEM-kódolású személyes kulcs"
 
-#: gio/gtlscertificate.c:441
+#: gio/gtlscertificate.c:488
 msgid "Cannot decrypt PEM-encoded private key"
 msgstr "Nem fejthető vissza a PEM-kódolású személyes kulcs"
 
-#: gio/gtlscertificate.c:452
+#: gio/gtlscertificate.c:499
 msgid "Could not parse PEM-encoded private key"
 msgstr "Nem dolgozható fel a PEM-kódolású személyes kulcs"
 
-#: gio/gtlscertificate.c:479
+#: gio/gtlscertificate.c:526
 msgid "No PEM-encoded certificate found"
 msgstr "Nem található PEM-kódolású tanúsítvány"
 
-#: gio/gtlscertificate.c:488
+#: gio/gtlscertificate.c:535
 msgid "Could not parse PEM-encoded certificate"
 msgstr "Nem dolgozható fel a PEM-kódolású tanúsítvány"
 
-#: gio/gtlscertificate.c:844
+#: gio/gtlscertificate.c:796
+#| msgid "This GTlsBackend does not support creating PKCS #11 certificates"
+msgid "The current TLS backend does not support PKCS #12"
+msgstr "A jelenlegi TLS háttérprogram nem támogatja a PKCS #12 tanúsítványokat"
+
+#: gio/gtlscertificate.c:1013
 msgid "This GTlsBackend does not support creating PKCS #11 certificates"
 msgstr "Ez a GTlsBackend nem támogatja a PKCS #11 tanúsítványok létrehozását"
 
@@ -4248,56 +4280,66 @@ msgstr ""
 msgid "The password entered is incorrect."
 msgstr "A megadott jelszó helytelen."
 
-#: gio/gunixconnection.c:166 gio/gunixconnection.c:579
+#: gio/gunixconnection.c:125
+#| msgid "Setting attribute %s not supported"
+msgid "Sending FD is not supported"
+msgstr "Az FL küldése nem támogatott"
+
+#: gio/gunixconnection.c:178 gio/gunixconnection.c:596
 #, c-format
 msgid "Expecting 1 control message, got %d"
 msgid_plural "Expecting 1 control message, got %d"
 msgstr[0] "A várt 1 vezérlőüzenet helyett %d érkezett"
 msgstr[1] "A várt 1 vezérlőüzenet helyett %d érkezett"
 
-#: gio/gunixconnection.c:182 gio/gunixconnection.c:591
+#: gio/gunixconnection.c:194 gio/gunixconnection.c:608
 msgid "Unexpected type of ancillary data"
 msgstr "Váratlan típusú kiegészítő adatok"
 
-#: gio/gunixconnection.c:200
+#: gio/gunixconnection.c:212
 #, c-format
 msgid "Expecting one fd, but got %d\n"
 msgid_plural "Expecting one fd, but got %d\n"
 msgstr[0] "A várt egy fájlleíró helyett %d érkezett\n"
 msgstr[1] "A várt egy fájlleíró helyett %d érkezett\n"
 
-#: gio/gunixconnection.c:219
+#: gio/gunixconnection.c:231
 msgid "Received invalid fd"
 msgstr "Érvénytelen fájlleíró érkezett"
 
-#: gio/gunixconnection.c:363
+#: gio/gunixconnection.c:238
+#| msgid "Setting attribute %s not supported"
+msgid "Receiving FD is not supported"
+msgstr "Az FL fogadása nem támogatott"
+
+#: gio/gunixconnection.c:380
 msgid "Error sending credentials: "
 msgstr "Hiba a hitelesítési adatok küldésekor: "
 
-#: gio/gunixconnection.c:520
+#: gio/gunixconnection.c:537
 #, c-format
 msgid "Error checking if SO_PASSCRED is enabled for socket: %s"
 msgstr ""
 "Hiba a SO_PASSCRED engedélyezettségének ellenőrzésekor a foglalathoz: %s"
 
-#: gio/gunixconnection.c:536
+#: gio/gunixconnection.c:553
 #, c-format
 msgid "Error enabling SO_PASSCRED: %s"
 msgstr "Hiba a SO_PASSCRED engedélyezésekor: %s"
 
-#: gio/gunixconnection.c:565
+#: gio/gunixconnection.c:582
 msgid ""
 "Expecting to read a single byte for receiving credentials but read zero bytes"
 msgstr ""
 "A hitelesítési adatok fogadásához várt egyetlen bájt helyett nulla bájt lett "
 "beolvasva"
 
-#: gio/gunixconnection.c:605
+#: gio/gunixconnection.c:622
 #, c-format
 msgid "Not expecting control message, but got %d"
 msgstr "A program nem várt vezérlőüzenetet, de %d érkezett"
 
-#: gio/gunixconnection.c:630
+#: gio/gunixconnection.c:647
 #, c-format
 msgid "Error while disabling SO_PASSCRED: %s"
 msgstr "Hiba a SO_PASSCRED letiltásakor: %s"
@@ -4313,7 +4355,7 @@ msgstr "Hiba a fájlleíróból olvasáskor: %s"
 msgid "Error closing file descriptor: %s"
 msgstr "Hiba a fájlleíró lezárásakor: %s"
 
-#: gio/gunixmounts.c:2785 gio/gunixmounts.c:2838
+#: gio/gunixmounts.c:2782 gio/gunixmounts.c:2835
 msgid "Filesystem root"
 msgstr "Fájlrendszer gyökere"
 
@@ -4324,7 +4366,7 @@ msgstr "Fájlrendszer gyökere"
 msgid "Error writing to file descriptor: %s"
 msgstr "Hiba a fájlleíróba íráskor: %s"
 
-#: gio/gunixsocketaddress.c:244
+#: gio/gunixsocketaddress.c:251
 msgid "Abstract UNIX domain socket addresses not supported on this system"
 msgstr ""
 "Az absztrakt UNIX tartományfoglalat-címek nem támogatottak ezen a rendszeren"
@@ -4479,8 +4521,8 @@ msgstr ""
 msgid "Unrepresentable character in conversion input"
 msgstr "Nem ábrázolható karakter az átalakítási bemenetben"
 
-#: glib/gconvert.c:495 glib/gutf8.c:871 glib/gutf8.c:1083 glib/gutf8.c:1220
-#: glib/gutf8.c:1324
+#: glib/gconvert.c:495 glib/gutf8.c:886 glib/gutf8.c:1099 glib/gutf8.c:1236
+#: glib/gutf8.c:1340
 msgid "Partial character sequence at end of input"
 msgstr "Részleges karaktersorozat a bemenet végén"
 
@@ -5048,15 +5090,15 @@ msgstr "A csatorna töredék karakterrel ér véget"
 msgid "Can’t do a raw read in g_io_channel_read_to_end"
 msgstr "Nem lehet nyers (raw) olvasást végezni a g_io_channel_read_to_end-ben"
 
-#: glib/gkeyfile.c:791
+#: glib/gkeyfile.c:794
 msgid "Valid key file could not be found in search dirs"
 msgstr "A keresési könyvtárakban nem található érvényes kulcsfájl"
 
-#: glib/gkeyfile.c:828
+#: glib/gkeyfile.c:831
 msgid "Not a regular file"
 msgstr "Nem szabályos fájl"
 
-#: glib/gkeyfile.c:1283
+#: glib/gkeyfile.c:1289
 #, c-format
 msgid ""
 "Key file contains line “%s” which is not a key-value pair, group, or comment"
@@ -5064,52 +5106,53 @@ msgstr ""
 "A kulcsfájl tartalmazza a(z) „%s” sort, amelyik nem egy kulcs-érték pár, "
 "csoport, vagy megjegyzés"
 
-#: glib/gkeyfile.c:1340
+#: glib/gkeyfile.c:1346
 #, c-format
 msgid "Invalid group name: %s"
 msgstr "Érvénytelen csoportnév: %s"
 
-#: glib/gkeyfile.c:1362
+#: glib/gkeyfile.c:1370
 msgid "Key file does not start with a group"
 msgstr "A kulcsfájl nem csoporttal kezdődik"
 
-#: glib/gkeyfile.c:1388
+#: glib/gkeyfile.c:1394
 #, c-format
-msgid "Invalid key name: %s"
-msgstr "Érvénytelen kulcsnév: %s"
+#| msgid "Invalid key name: %s"
+msgid "Invalid key name: %.*s"
+msgstr "Érvénytelen kulcsnév: %.*s"
 
-#: glib/gkeyfile.c:1415
+#: glib/gkeyfile.c:1422
 #, c-format
 msgid "Key file contains unsupported encoding “%s”"
 msgstr "A kulcsfájl a nem támogatott „%s” kódolást tartalmazza"
 
-#: glib/gkeyfile.c:1664 glib/gkeyfile.c:1837 glib/gkeyfile.c:3287
-#: glib/gkeyfile.c:3351 glib/gkeyfile.c:3481 glib/gkeyfile.c:3613
-#: glib/gkeyfile.c:3759 glib/gkeyfile.c:3994 glib/gkeyfile.c:4061
+#: glib/gkeyfile.c:1677 glib/gkeyfile.c:1850 glib/gkeyfile.c:3297
+#: glib/gkeyfile.c:3361 glib/gkeyfile.c:3491 glib/gkeyfile.c:3623
+#: glib/gkeyfile.c:3769 glib/gkeyfile.c:4004 glib/gkeyfile.c:4071
 #, c-format
 msgid "Key file does not have group “%s”"
 msgstr "A kulcsfájlból hiányzik a(z) „%s” csoport"
 
-#: glib/gkeyfile.c:1792
+#: glib/gkeyfile.c:1805
 #, c-format
 msgid "Key file does not have key “%s” in group “%s”"
 msgstr "A kulcsfájl nem tartalmazza a(z) „%s” kulcsot a(z) „%s” csoportban."
 
-#: glib/gkeyfile.c:1954 glib/gkeyfile.c:2070
+#: glib/gkeyfile.c:1967 glib/gkeyfile.c:2083
 #, c-format
 msgid "Key file contains key “%s” with value “%s” which is not UTF-8"
 msgstr ""
 "A kulcsfájl tartalmazza a(z) „%s” kulcsot „%s” értékkel, amelyik azonban nem "
 "UTF-8"
 
-#: glib/gkeyfile.c:1974 glib/gkeyfile.c:2090 glib/gkeyfile.c:2529
+#: glib/gkeyfile.c:1987 glib/gkeyfile.c:2103 glib/gkeyfile.c:2542
 #, c-format
 msgid ""
 "Key file contains key “%s” which has a value that cannot be interpreted."
 msgstr ""
 "A kulcsfájl tartalmazza a(z) „%s” kulcsot, amelynek értéke nem értelmezhető."
 
-#: glib/gkeyfile.c:2747 glib/gkeyfile.c:3116
+#: glib/gkeyfile.c:2757 glib/gkeyfile.c:3126
 #, c-format
 msgid ""
 "Key file contains key “%s” in group “%s” which has a value that cannot be "
@@ -5118,38 +5161,38 @@ msgstr ""
 "A kulcsfájl tartalmazza a(z) „%s” kulcsot a(z) „%s” csoportban, amelynek "
 "értéke nem értelmezhető."
 
-#: glib/gkeyfile.c:2825 glib/gkeyfile.c:2902
+#: glib/gkeyfile.c:2835 glib/gkeyfile.c:2912
 #, c-format
 msgid "Key “%s” in group “%s” has value “%s” where %s was expected"
 msgstr ""
 "A(z) „%s” kulcs a(z) „%s” csoportban „%s” értékkel rendelkezik a várt %s "
 "helyett"
 
-#: glib/gkeyfile.c:4304
+#: glib/gkeyfile.c:4324
 msgid "Key file contains escape character at end of line"
 msgstr "A kulcsfájl escape sorozattal megadott karaktert tartalmaz a sor végén"
 
-#: glib/gkeyfile.c:4326
+#: glib/gkeyfile.c:4346
 #, c-format
 msgid "Key file contains invalid escape sequence “%s”"
 msgstr "A kulcsfájl érvénytelen escape sorozatot tartalmaz („%s”)"
 
-#: glib/gkeyfile.c:4470
+#: glib/gkeyfile.c:4491
 #, c-format
 msgid "Value “%s” cannot be interpreted as a number."
 msgstr "A(z) „%s” érték nem értelmezhető számként."
 
-#: glib/gkeyfile.c:4484
+#: glib/gkeyfile.c:4505
 #, c-format
 msgid "Integer value “%s” out of range"
 msgstr "A(z) „%s” egész érték a tartományon kívülre esik"
 
-#: glib/gkeyfile.c:4517
+#: glib/gkeyfile.c:4538
 #, c-format
 msgid "Value “%s” cannot be interpreted as a float number."
 msgstr "A(z) „%s” érték nem értelmezhető lebegőpontos számként."
 
-#: glib/gkeyfile.c:4556
+#: glib/gkeyfile.c:4577
 #, c-format
 msgid "Value “%s” cannot be interpreted as a boolean."
 msgstr "A(z) „%s” érték nem értelmezhető logikai értékként."
@@ -5445,7 +5488,7 @@ msgstr "Hiba a kapcsoló feldolgozásakor: %s"
 msgid "Missing argument for %s"
 msgstr "Hiányzó paraméter a következőhöz: %s"
 
-#: glib/goption.c:2185
+#: glib/goption.c:2184
 #, c-format
 msgid "Unknown option %s"
 msgstr "Ismeretlen kapcsoló: %s"
@@ -5866,112 +5909,125 @@ msgstr "Váratlan hiba egy gyermekfolyamatból történő adatolvasás közben (
 msgid "Unexpected error in waitpid() (%s)"
 msgstr "Váratlan hiba a waitpid()-ben (%s)"
 
-#: glib/gspawn.c:1166 glib/gspawn-win32.c:1407
+#: glib/gspawn.c:1168 glib/gspawn-win32.c:1426
 #, c-format
 msgid "Child process exited with code %ld"
 msgstr "A gyermekfolyamat a következő kóddal lépett ki: %ld"
 
-#: glib/gspawn.c:1174
+#: glib/gspawn.c:1176
 #, c-format
 msgid "Child process killed by signal %ld"
 msgstr "A gyermekfolyamat kilőve %ld szignállal"
 
-#: glib/gspawn.c:1181
+#: glib/gspawn.c:1183
 #, c-format
 msgid "Child process stopped by signal %ld"
 msgstr "A gyermekfolyamat megállítva %ld szignállal"
 
-#: glib/gspawn.c:1188
+#: glib/gspawn.c:1190
 #, c-format
 msgid "Child process exited abnormally"
 msgstr "A gyermekfolyamat abnormálisan lépett ki"
 
-#: glib/gspawn.c:1864 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
+#: glib/gspawn.c:1881 glib/gspawn-win32.c:353 glib/gspawn-win32.c:361
 #, c-format
 msgid "Failed to read from child pipe (%s)"
 msgstr "Nem sikerült olvasni a gyermek csővezetékből (%s)"
 
-#: glib/gspawn.c:2166
+#: glib/gspawn.c:2241
 #, c-format
 msgid "Failed to spawn child process “%s” (%s)"
 msgstr "Nem sikerült a(z) „%s” gyermekfolyamat végrehajtása (%s)"
 
-#: glib/gspawn.c:2283
+#: glib/gspawn.c:2358
 #, c-format
 msgid "Failed to fork (%s)"
 msgstr "Nem sikerült folyamatot indítani (%s)"
 
-#: glib/gspawn.c:2443 glib/gspawn-win32.c:381
+#: glib/gspawn.c:2518 glib/gspawn-win32.c:384
 #, c-format
 msgid "Failed to change to directory “%s” (%s)"
 msgstr "Nem sikerült átváltani a(z) „%s” könyvtárra (%s)"
 
-#: glib/gspawn.c:2453
+#: glib/gspawn.c:2528
 #, c-format
 msgid "Failed to execute child process “%s” (%s)"
 msgstr "Nem sikerült a gyermekfolyamat („%s”) végrehajtása (%s)"
 
-#: glib/gspawn.c:2463
+#: glib/gspawn.c:2538
+#, c-format
+#| msgid "Failed to open file “%s”: open() failed: %s"
+msgid "Failed to open file to remap file descriptor (%s)"
+msgstr "Nem sikerült megnyitni a fájlt a fájlleíró ismételt leképezéséhez (%s)"
+
+#: glib/gspawn.c:2546
 #, c-format
-msgid "Failed to redirect output or input of child process (%s)"
-msgstr "Nem sikerült a gyermekfolyamat ki- vagy bemenetének átirányítása (%s)"
+#| msgid "Failed to redirect output or input of child process (%s)"
+msgid "Failed to duplicate file descriptor for child process (%s)"
+msgstr "Nem sikerült kettőzni a gyermekfolyamat fájlleíróját (%s)"
 
-#: glib/gspawn.c:2472
+#: glib/gspawn.c:2555
 #, c-format
 msgid "Failed to fork child process (%s)"
 msgstr "Nem sikerült a gyermekfolyamat elindítása (%s)"
 
-#: glib/gspawn.c:2480
+#: glib/gspawn.c:2563
 #, c-format
 #| msgid "Failed to read data from child process (%s)"
 msgid "Failed to close file descriptor for child process (%s)"
 msgstr "Nem sikerült lezárni a gyermekfolyamat fájlleíróját (%s)"
 
-#: glib/gspawn.c:2488
+#: glib/gspawn.c:2571
 #, c-format
 msgid "Unknown error executing child process “%s”"
 msgstr "Ismeretlen hiba a gyermekfolyamat („%s”) végrehajtásakor"
 
-#: glib/gspawn.c:2512
+#: glib/gspawn.c:2595
 #, c-format
 msgid "Failed to read enough data from child pid pipe (%s)"
 msgstr "Nem sikerült elég adatot kiolvasni a gyermek pid csővezetékből (%s)"
 
-#: glib/gspawn-win32.c:294
+#: glib/gspawn-win32.c:297
 msgid "Failed to read data from child process"
 msgstr "Nem sikerült adatokat kiolvasni a gyermekfolyamatból"
 
-#: glib/gspawn-win32.c:387 glib/gspawn-win32.c:392 glib/gspawn-win32.c:511
+#: glib/gspawn-win32.c:390 glib/gspawn-win32.c:395 glib/gspawn-win32.c:519
 #, c-format
 msgid "Failed to execute child process (%s)"
 msgstr "Nem sikerült végrehajtani a gyermekfolyamatot (%s)"
 
-#: glib/gspawn-win32.c:461
+#: glib/gspawn-win32.c:400
+#, c-format
+#| msgid "Failed to fork child process (%s)"
+msgid "Failed to dup() in child process (%s)"
+msgstr "Nem sikerült a dup() hívás a gyermekfolyamatban (%s)"
+
+#: glib/gspawn-win32.c:469
 #, c-format
 msgid "Invalid program name: %s"
 msgstr "Érvénytelen programnév: %s"
 
-#: glib/gspawn-win32.c:471 glib/gspawn-win32.c:779
+#: glib/gspawn-win32.c:479 glib/gspawn-win32.c:797
 #, c-format
 msgid "Invalid string in argument vector at %d: %s"
 msgstr "Érvénytelen karaktersorozat a paraméterben a következő helyen: %d: %s"
 
-#: glib/gspawn-win32.c:482 glib/gspawn-win32.c:794
+#: glib/gspawn-win32.c:490 glib/gspawn-win32.c:813
 #, c-format
 msgid "Invalid string in environment: %s"
 msgstr "Érvénytelen karaktersorozat a környezetben: %s"
 
-#: glib/gspawn-win32.c:775
+#: glib/gspawn-win32.c:793
 #, c-format
 msgid "Invalid working directory: %s"
 msgstr "Érvénytelen munkakönyvtár: %s"
 
-#: glib/gspawn-win32.c:837
+#: glib/gspawn-win32.c:858
 #, c-format
 msgid "Failed to execute helper program (%s)"
 msgstr "Nem sikerült végrehajtani a segítő programot (%s)"
 
-#: glib/gspawn-win32.c:1064
+#: glib/gspawn-win32.c:1086
 msgid ""
 "Unexpected error in g_io_channel_win32_poll() reading data from a child "
 "process"
@@ -5979,21 +6035,21 @@ msgstr ""
 "Váratlan hiba, miközben a g_io_channel_win32_poll() adatokat olvasott egy "
 "gyermekfolyamatból"
 
-#: glib/gstrfuncs.c:3345 glib/gstrfuncs.c:3447
+#: glib/gstrfuncs.c:3351 glib/gstrfuncs.c:3453
 msgid "Empty string is not a number"
 msgstr "Az üres karakterlánc nem szám"
 
-#: glib/gstrfuncs.c:3369
+#: glib/gstrfuncs.c:3375
 #, c-format
 msgid "“%s” is not a signed number"
 msgstr "„%s” nem érvényes név"
 
-#: glib/gstrfuncs.c:3379 glib/gstrfuncs.c:3483
+#: glib/gstrfuncs.c:3385 glib/gstrfuncs.c:3489
 #, c-format
 msgid "Number “%s” is out of bounds [%s, %s]"
 msgstr "A(z) „%s” a(z) [%s, %s]  intervallumon kívül esik."
 
-#: glib/gstrfuncs.c:3473
+#: glib/gstrfuncs.c:3479
 #, c-format
 msgid "“%s” is not an unsigned number"
 msgstr "„%s” nem érvényes név"
@@ -6054,175 +6110,175 @@ msgstr "Az URI nem abszolút, és alap URI nem lett megadva"
 msgid "Missing ‘=’ and parameter value"
 msgstr "Hiányzó „=” és paraméterérték"
 
-#: glib/gutf8.c:817
+#: glib/gutf8.c:832
 msgid "Failed to allocate memory"
 msgstr "Nem sikerült memóriát lefoglalni"
 
-#: glib/gutf8.c:950
+#: glib/gutf8.c:965
 msgid "Character out of range for UTF-8"
 msgstr "A karakter az UTF-8 tartományon kívülre esik"
 
-#: glib/gutf8.c:1051 glib/gutf8.c:1060 glib/gutf8.c:1190 glib/gutf8.c:1199
-#: glib/gutf8.c:1338 glib/gutf8.c:1435
+#: glib/gutf8.c:1067 glib/gutf8.c:1076 glib/gutf8.c:1206 glib/gutf8.c:1215
+#: glib/gutf8.c:1354 glib/gutf8.c:1451
 msgid "Invalid sequence in conversion input"
 msgstr "Érvénytelen sorozat az átalakítási bemenetben"
 
-#: glib/gutf8.c:1349 glib/gutf8.c:1446
+#: glib/gutf8.c:1365 glib/gutf8.c:1462
 msgid "Character out of range for UTF-16"
 msgstr "A karakter az UTF-16 tartományon kívülre esik"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2770
+#: glib/gutils.c:2849
 #, c-format
 msgid "%.1f kB"
 msgstr "%.1f kB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2772
+#: glib/gutils.c:2851
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2774
+#: glib/gutils.c:2853
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2776
+#: glib/gutils.c:2855
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2778
+#: glib/gutils.c:2857
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2780
+#: glib/gutils.c:2859
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2784
+#: glib/gutils.c:2863
 #, c-format
 msgid "%.1f KiB"
 msgstr "%.1f KiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2786
+#: glib/gutils.c:2865
 #, c-format
 msgid "%.1f MiB"
 msgstr "%.1f MiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2788
+#: glib/gutils.c:2867
 #, c-format
 msgid "%.1f GiB"
 msgstr "%.1f GiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2790
+#: glib/gutils.c:2869
 #, c-format
 msgid "%.1f TiB"
 msgstr "%.1f TiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2792
+#: glib/gutils.c:2871
 #, c-format
 msgid "%.1f PiB"
 msgstr "%.1f PiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2794
+#: glib/gutils.c:2873
 #, c-format
 msgid "%.1f EiB"
 msgstr "%.1f EiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2798
+#: glib/gutils.c:2877
 #, c-format
 msgid "%.1f kb"
 msgstr "%.1f kb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2800
+#: glib/gutils.c:2879
 #, c-format
 msgid "%.1f Mb"
 msgstr "%.1f Mb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2802
+#: glib/gutils.c:2881
 #, c-format
 msgid "%.1f Gb"
 msgstr "%.1f Gb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2804
+#: glib/gutils.c:2883
 #, c-format
 msgid "%.1f Tb"
 msgstr "%.1f Tb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2806
+#: glib/gutils.c:2885
 #, c-format
 msgid "%.1f Pb"
 msgstr "%.1f Pb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2808
+#: glib/gutils.c:2887
 #, c-format
 msgid "%.1f Eb"
 msgstr "%.1f Eb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2812
+#: glib/gutils.c:2891
 #, c-format
 msgid "%.1f Kib"
 msgstr "%.1f Kib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2814
+#: glib/gutils.c:2893
 #, c-format
 msgid "%.1f Mib"
 msgstr "%.1f Mib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2816
+#: glib/gutils.c:2895
 #, c-format
 msgid "%.1f Gib"
 msgstr "%.1f Gib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2818
+#: glib/gutils.c:2897
 #, c-format
 msgid "%.1f Tib"
 msgstr "%.1f Tib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2820
+#: glib/gutils.c:2899
 #, c-format
 msgid "%.1f Pib"
 msgstr "%.1f Pib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2822
+#: glib/gutils.c:2901
 #, c-format
 msgid "%.1f Eib"
 msgstr "%.1f Eib"
 
-#: glib/gutils.c:2856 glib/gutils.c:2973
+#: glib/gutils.c:2935 glib/gutils.c:3052
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
 msgstr[0] "%u bájt"
 msgstr[1] "%u bájt"
 
-#: glib/gutils.c:2860
+#: glib/gutils.c:2939
 #, c-format
 msgid "%u bit"
 msgid_plural "%u bits"
@@ -6230,7 +6286,7 @@ msgstr[0] "%u bit"
 msgstr[1] "%u bit"
 
 #. Translators: the %s in "%s bytes" will always be replaced by a number.
-#: glib/gutils.c:2927
+#: glib/gutils.c:3006
 #, c-format
 msgid "%s byte"
 msgid_plural "%s bytes"
@@ -6238,7 +6294,7 @@ msgstr[0] "%s bájt"
 msgstr[1] "%s bájt"
 
 #. Translators: the %s in "%s bits" will always be replaced by a number.
-#: glib/gutils.c:2932
+#: glib/gutils.c:3011
 #, c-format
 msgid "%s bit"
 msgid_plural "%s bits"
@@ -6250,32 +6306,32 @@ msgstr[1] "%s bit"
 #. * compatibility.  Users will not see this string unless a program is using this deprecated function.
 #. * Please translate as literally as possible.
 #.
-#: glib/gutils.c:2986
+#: glib/gutils.c:3065
 #, c-format
 msgid "%.1f KB"
 msgstr "%.1f KB"
 
-#: glib/gutils.c:2991
+#: glib/gutils.c:3070
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
-#: glib/gutils.c:2996
+#: glib/gutils.c:3075
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
-#: glib/gutils.c:3001
+#: glib/gutils.c:3080
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
-#: glib/gutils.c:3006
+#: glib/gutils.c:3085
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
-#: glib/gutils.c:3011
+#: glib/gutils.c:3090
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
index c0711ab..e50baae 100644 (file)
--- a/po/id.po
+++ b/po/id.po
@@ -4,14 +4,14 @@
 #
 # Mohammad DAMT <mdamt@bisnisweb.com>, 2005.
 # Dirgita <dirgitadevina@yahoo.co.id>, 2010, 2012.
-# Andika Triwidada <andika@gmail.com>, 2010-2013, 2015, 2018, 2021.
+# Andika Triwidada <andika@gmail.com>, 2010-2013, 2015, 2018.
 # Kukuh Syafaat <kukuhsyafaat@gnome.org>, 2017-2022.
 msgid ""
 msgstr ""
-"Project-Id-Version: glib glib-2-70\n"
+"Project-Id-Version: glib main\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/glib/issues\n"
-"POT-Creation-Date: 2022-02-09 19:50+0000\n"
-"PO-Revision-Date: 2022-02-10 10:09+0700\n"
+"POT-Creation-Date: 2022-04-09 15:36+0000\n"
+"PO-Revision-Date: 2022-04-11 16:07+0700\n"
 "Last-Translator: Kukuh Syafaat <kukuhsyafaat@gnome.org>\n"
 "Language-Team: Indonesian <gnome@i15n.org>\n"
 "Language: id\n"
@@ -19,7 +19,16 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Poedit 3.0\n"
+"X-Generator: Poedit 3.0.1\n"
+
+#: gio/gappinfo.c:333
+msgid "Setting default applications not supported yet"
+msgstr "Menata aplikasi baku belum didukung"
+
+#: gio/gappinfo.c:366
+msgid "Setting application as last used for type not supported yet"
+msgstr ""
+"Menata aplikasi sebagai yang terakhir digunakan untuk tipe belum didukung"
 
 #: gio/gapplication.c:500
 msgid "GApplication options"
@@ -42,7 +51,7 @@ msgid "Replace the running instance"
 msgstr "Ganti instance yang berjalan"
 
 #: gio/gapplication-tool.c:45 gio/gapplication-tool.c:46 gio/gio-tool.c:227
-#: gio/gresource-tool.c:494 gio/gsettings-tool.c:572
+#: gio/gresource-tool.c:494 gio/gsettings-tool.c:584
 msgid "Print help"
 msgstr "Cetak bantuan"
 
@@ -54,7 +63,7 @@ msgstr "[PERINTAH]"
 msgid "Print version"
 msgstr "Cetak versi"
 
-#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:578
+#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:590
 msgid "Print version information and exit"
 msgstr "Cetak informasi versi dan keluar"
 
@@ -117,8 +126,8 @@ msgstr "Perintah yang ingin dicetak bantuan terrincinya"
 msgid "Application identifier in D-Bus format (eg: org.example.viewer)"
 msgstr "Identifier aplikasi dalam format D-Bus (mis: org.example.viewer)"
 
-#: gio/gapplication-tool.c:74 gio/glib-compile-resources.c:738
-#: gio/glib-compile-resources.c:744 gio/glib-compile-resources.c:772
+#: gio/gapplication-tool.c:74 gio/glib-compile-resources.c:820
+#: gio/glib-compile-resources.c:826 gio/glib-compile-resources.c:855
 #: gio/gresource-tool.c:501 gio/gresource-tool.c:567
 msgid "FILE"
 msgstr "BERKAS"
@@ -143,7 +152,7 @@ msgstr "PARAMETER"
 msgid "Optional parameter to the action invocation, in GVariant format"
 msgstr "Parameter opsional untuk pemanggilan aksi, dalam format GVariant"
 
-#: gio/gapplication-tool.c:98 gio/gresource-tool.c:532 gio/gsettings-tool.c:664
+#: gio/gapplication-tool.c:98 gio/gresource-tool.c:532 gio/gsettings-tool.c:676
 #, c-format
 msgid ""
 "Unknown command %s\n"
@@ -157,7 +166,7 @@ msgid "Usage:\n"
 msgstr "Cara pakai:\n"
 
 #: gio/gapplication-tool.c:116 gio/gresource-tool.c:557
-#: gio/gsettings-tool.c:699
+#: gio/gsettings-tool.c:711
 msgid "Arguments:\n"
 msgstr "Argumen:\n"
 
@@ -280,7 +289,7 @@ msgstr "Stream telah ditutup"
 msgid "Truncate not supported on base stream"
 msgstr "Pemenggalan tak didukung pada stream basis"
 
-#: gio/gcancellable.c:319 gio/gdbusconnection.c:1873 gio/gdbusprivate.c:1416
+#: gio/gcancellable.c:319 gio/gdbusconnection.c:1857 gio/gdbusprivate.c:1418
 #: gio/gsimpleasyncresult.c:871 gio/gsimpleasyncresult.c:897
 #, c-format
 msgid "Operation was cancelled"
@@ -301,7 +310,7 @@ msgstr "Tak cukup ruang di tujuan"
 #: gio/gcharsetconverter.c:342 gio/gdatainputstream.c:848
 #: gio/gdatainputstream.c:1266 glib/gconvert.c:449 glib/gconvert.c:879
 #: glib/giochannel.c:1573 glib/giochannel.c:1615 glib/giochannel.c:2470
-#: glib/gutf8.c:875 glib/gutf8.c:1328
+#: glib/gutf8.c:890 glib/gutf8.c:1344
 msgid "Invalid byte sequence in conversion input"
 msgstr "Rangkaian bita dalam input konversi tidak benar"
 
@@ -311,7 +320,7 @@ msgstr "Rangkaian bita dalam input konversi tidak benar"
 msgid "Error during conversion: %s"
 msgstr "Galat ketika konversi: %s"
 
-#: gio/gcharsetconverter.c:445 gio/gsocket.c:1143
+#: gio/gcharsetconverter.c:445 gio/gsocket.c:1147
 msgid "Cancellable initialization not supported"
 msgstr "Inisialisasi yang dapat dibatalkan tak didukung"
 
@@ -325,37 +334,37 @@ msgstr "Konversi dari gugus karakter \"%s\" ke \"%s\" tak didukung"
 msgid "Could not open converter from “%s” to “%s”"
 msgstr "Tak bisa membuka pengubah dari \"%s\" ke \"%s\""
 
-#: gio/gcontenttype.c:454
+#: gio/gcontenttype.c:470
 #, c-format
 msgid "%s type"
 msgstr "tipe %s"
 
-#: gio/gcontenttype-win32.c:192
+#: gio/gcontenttype-win32.c:196
 msgid "Unknown type"
 msgstr "Tipe tak dikenal"
 
-#: gio/gcontenttype-win32.c:194
+#: gio/gcontenttype-win32.c:198
 #, c-format
 msgid "%s filetype"
 msgstr "tipe berkas %s"
 
-#: gio/gcredentials.c:323
+#: gio/gcredentials.c:335
 msgid "GCredentials contains invalid data"
 msgstr "GCredentials berisi data yang tidak valid"
 
-#: gio/gcredentials.c:383 gio/gcredentials.c:667
+#: gio/gcredentials.c:395 gio/gcredentials.c:686
 msgid "GCredentials is not implemented on this OS"
 msgstr "GCredentials tak diimplementasikan di OS ini"
 
-#: gio/gcredentials.c:538 gio/gcredentials.c:556
+#: gio/gcredentials.c:550 gio/gcredentials.c:568
 msgid "There is no GCredentials support for your platform"
 msgstr "Tidak ada dukungan GCredentials bagi platform Anda"
 
-#: gio/gcredentials.c:607
+#: gio/gcredentials.c:626
 msgid "GCredentials does not contain a process ID on this OS"
 msgstr "GCredentials tak memuat suatu ID proses di OS ini"
 
-#: gio/gcredentials.c:661
+#: gio/gcredentials.c:680
 msgid "Credentials spoofing is not possible on this OS"
 msgstr "Pemalsuan kredensial tak diimplementasikan di OS ini"
 
@@ -363,17 +372,17 @@ msgstr "Pemalsuan kredensial tak diimplementasikan di OS ini"
 msgid "Unexpected early end-of-stream"
 msgstr "Akhir stream terlalu dini, tak diharapkan"
 
-#: gio/gdbusaddress.c:159 gio/gdbusaddress.c:233 gio/gdbusaddress.c:322
+#: gio/gdbusaddress.c:162 gio/gdbusaddress.c:236 gio/gdbusaddress.c:325
 #, c-format
 msgid "Unsupported key “%s” in address entry “%s”"
 msgstr "Kunci \"%s\" tak didukung pada entri alamat \"%s\""
 
-#: gio/gdbusaddress.c:172
+#: gio/gdbusaddress.c:175
 #, c-format
 msgid "Meaningless key/value pair combination in address entry “%s”"
 msgstr "Kombinasi pasangan kunci/nilai tanpa arti di entri alamat \"%s\""
 
-#: gio/gdbusaddress.c:181
+#: gio/gdbusaddress.c:184
 #, c-format
 msgid ""
 "Address “%s” is invalid (need exactly one of path, dir, tmpdir, or abstract "
@@ -382,28 +391,28 @@ msgstr ""
 "Alamat \"%s\" tak valid (perlu hanya salah satu dari path, dir, tmpdir, atau "
 "kunci abstrak)"
 
-#: gio/gdbusaddress.c:248 gio/gdbusaddress.c:259 gio/gdbusaddress.c:274
-#: gio/gdbusaddress.c:337 gio/gdbusaddress.c:348
+#: gio/gdbusaddress.c:251 gio/gdbusaddress.c:262 gio/gdbusaddress.c:277
+#: gio/gdbusaddress.c:340 gio/gdbusaddress.c:351
 #, c-format
 msgid "Error in address “%s” — the “%s” attribute is malformed"
 msgstr "Galat dalam alamat \"%s\" — atribut \"%s\" salah bentuk"
 
-#: gio/gdbusaddress.c:418 gio/gdbusaddress.c:682
+#: gio/gdbusaddress.c:421 gio/gdbusaddress.c:680
 #, c-format
 msgid "Unknown or unsupported transport “%s” for address “%s”"
 msgstr "Transport \"%s\" tak dikenal atau tak didukung bagi alamat \"%s\""
 
-#: gio/gdbusaddress.c:462
+#: gio/gdbusaddress.c:465
 #, c-format
 msgid "Address element “%s” does not contain a colon (:)"
 msgstr "Elemen alamat \"%s\" tak memuat titik dua (:)"
 
-#: gio/gdbusaddress.c:471
+#: gio/gdbusaddress.c:474
 #, c-format
 msgid "Transport name in address element “%s” must not be empty"
 msgstr "Nama transport dalam elemen alamat “%s” tidak boleh kosong"
 
-#: gio/gdbusaddress.c:492
+#: gio/gdbusaddress.c:495
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” does not contain an equal "
@@ -412,7 +421,7 @@ msgstr ""
 "Pasangan kunci/nilai %d, \"%s\", dalam elemen alamat \"%s\" tak memuat tanda "
 "sama dengan"
 
-#: gio/gdbusaddress.c:503
+#: gio/gdbusaddress.c:506
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” must not have an empty key"
@@ -420,7 +429,7 @@ msgstr ""
 "Pasangan kunci/nilai %d, \"%s\", dalam elemen alamat \"%s\" tak boleh "
 "memiliki kunci kosong"
 
-#: gio/gdbusaddress.c:517
+#: gio/gdbusaddress.c:520
 #, c-format
 msgid ""
 "Error unescaping key or value in Key/Value pair %d, “%s”, in address element "
@@ -429,7 +438,7 @@ msgstr ""
 "Galat saat membongkar kunci atau nilai dalam pasangan Key/Value %d, \"%s\", "
 "dalam elemen alamat \"%s\""
 
-#: gio/gdbusaddress.c:589
+#: gio/gdbusaddress.c:588
 #, c-format
 msgid ""
 "Error in address “%s” — the unix transport requires exactly one of the keys "
@@ -438,74 +447,74 @@ msgstr ""
 "Galat dalam alamat \"%s\" — transport unix memerlukan hanya satu dari kunci "
 "\"path\" atau \"abstract\" untuk ditata"
 
-#: gio/gdbusaddress.c:625
+#: gio/gdbusaddress.c:623
 #, c-format
 msgid "Error in address “%s” — the host attribute is missing or malformed"
 msgstr "Galat dalam alamat \"%s\" — atribut host kurang atau salah bentuk"
 
-#: gio/gdbusaddress.c:639
+#: gio/gdbusaddress.c:637
 #, c-format
 msgid "Error in address “%s” — the port attribute is missing or malformed"
 msgstr "Galat dalam alamat \"%s\" — atribut portt kurang atau salah bentuk"
 
-#: gio/gdbusaddress.c:653
+#: gio/gdbusaddress.c:651
 #, c-format
 msgid "Error in address “%s” — the noncefile attribute is missing or malformed"
 msgstr "Galat di alamat \"%s\" — atribut berkas nonce kurang atau salah bentuk"
 
-#: gio/gdbusaddress.c:674
+#: gio/gdbusaddress.c:672
 msgid "Error auto-launching: "
 msgstr "Galat saat meluncurkan otomatis: "
 
-#: gio/gdbusaddress.c:727
+#: gio/gdbusaddress.c:725
 #, c-format
 msgid "Error opening nonce file “%s”: %s"
 msgstr "Galat saat membuka berkas nonce \"%s\": %s"
 
-#: gio/gdbusaddress.c:746
+#: gio/gdbusaddress.c:744
 #, c-format
 msgid "Error reading from nonce file “%s”: %s"
 msgstr "Galat saat membaca berkas nonce \"%s\": %s"
 
-#: gio/gdbusaddress.c:755
+#: gio/gdbusaddress.c:753
 #, c-format
 msgid "Error reading from nonce file “%s”, expected 16 bytes, got %d"
 msgstr "Galat saat membaca berkas nonce \"%s\", berharap 16 bita, mendapat %d"
 
-#: gio/gdbusaddress.c:773
+#: gio/gdbusaddress.c:771
 #, c-format
 msgid "Error writing contents of nonce file “%s” to stream:"
 msgstr "Galat saat menulis isi dari berkas nonce \"%s\" ke stream:"
 
-#: gio/gdbusaddress.c:988
+#: gio/gdbusaddress.c:986
 msgid "The given address is empty"
 msgstr "Tidak ada alamat yang diberikan"
 
-#: gio/gdbusaddress.c:1101
+#: gio/gdbusaddress.c:1099
 #, c-format
-msgid "Cannot spawn a message bus when setuid"
-msgstr "Tak bisa spawn suatu bus pesan ketika setuid"
+msgid "Cannot spawn a message bus when AT_SECURE is set"
+msgstr "Tak bisa spawn suatu bus pesan ketika AT_SECURE ditata"
 
-#: gio/gdbusaddress.c:1108
+#: gio/gdbusaddress.c:1106
 msgid "Cannot spawn a message bus without a machine-id: "
 msgstr "Tak bisa spawn suatu bus pesan tanpa id-mesin: "
 
-#: gio/gdbusaddress.c:1115
+#: gio/gdbusaddress.c:1113
 #, c-format
 msgid "Cannot autolaunch D-Bus without X11 $DISPLAY"
 msgstr "Tak bisa meluncurkan mandiri D-Bus tanpa $DISPLAY X11"
 
-#: gio/gdbusaddress.c:1157
+#: gio/gdbusaddress.c:1155
 #, c-format
 msgid "Error spawning command line “%s”: "
 msgstr "Galat saat spawn baris perintah \"%s\": "
 
-#: gio/gdbusaddress.c:1226
+#: gio/gdbusaddress.c:1224
 #, c-format
 msgid "Cannot determine session bus address (not implemented for this OS)"
 msgstr "Tak bisa menentukan alamat bus sesi (tidak diimplementasi bagi OS ini)"
 
-#: gio/gdbusaddress.c:1375 gio/gdbusconnection.c:7334
+#: gio/gdbusaddress.c:1373 gio/gdbusconnection.c:7318
 #, c-format
 msgid ""
 "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
@@ -514,7 +523,7 @@ msgstr ""
 "Tak bisa menentukan alamat bus dari variabel lingkungan "
 "DBUS_STARTER_BUS_TYPE — nilai tak dikenal \"%s\""
 
-#: gio/gdbusaddress.c:1384 gio/gdbusconnection.c:7343
+#: gio/gdbusaddress.c:1382 gio/gdbusconnection.c:7327
 msgid ""
 "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
 "variable is not set"
@@ -522,7 +531,7 @@ msgstr ""
 "Tak bisa menentukan alamat bus karena variabel lingkungan "
 "DBUS_STARTER_BUS_TYPE tak diisi"
 
-#: gio/gdbusaddress.c:1394
+#: gio/gdbusaddress.c:1392
 #, c-format
 msgid "Unknown bus type %d"
 msgstr "Tipe bus %d tak dikenal"
@@ -552,44 +561,44 @@ msgstr "ID Pengguna harus sama untuk rakan (peer) dan peladen"
 msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
 msgstr "Dibatalkan melalui GDBusAuthObserver::authorize-authenticated-peer"
 
-#: gio/gdbusauthmechanismsha1.c:298
+#: gio/gdbusauthmechanismsha1.c:300
 #, c-format
 msgid "Error when getting information for directory “%s”: %s"
 msgstr "Galat ketika mengambil informasi untuk direktori \"%s\": %s"
 
-#: gio/gdbusauthmechanismsha1.c:313
+#: gio/gdbusauthmechanismsha1.c:315
 #, c-format
 msgid ""
 "Permissions on directory “%s” are malformed. Expected mode 0700, got 0%o"
 msgstr ""
 "Izin pada direktori \"%s\" salah bentuk. Diharapkan mode 0700, diperoleh 0%o"
 
-#: gio/gdbusauthmechanismsha1.c:346 gio/gdbusauthmechanismsha1.c:357
+#: gio/gdbusauthmechanismsha1.c:348 gio/gdbusauthmechanismsha1.c:359
 #, c-format
 msgid "Error creating directory “%s”: %s"
 msgstr "Galat saat membuat direktori \"%s\": %s"
 
-#: gio/gdbusauthmechanismsha1.c:359 gio/gfile.c:1062 gio/gfile.c:1300
-#: gio/gfile.c:1438 gio/gfile.c:1676 gio/gfile.c:1731 gio/gfile.c:1789
-#: gio/gfile.c:1873 gio/gfile.c:1930 gio/gfile.c:1994 gio/gfile.c:2049
-#: gio/gfile.c:3754 gio/gfile.c:3809 gio/gfile.c:4102 gio/gfile.c:4572
-#: gio/gfile.c:4983 gio/gfile.c:5068 gio/gfile.c:5158 gio/gfile.c:5255
-#: gio/gfile.c:5342 gio/gfile.c:5443 gio/gfile.c:8153 gio/gfile.c:8243
-#: gio/gfile.c:8327 gio/win32/gwinhttpfile.c:453
+#: gio/gdbusauthmechanismsha1.c:361 gio/gfile.c:1080 gio/gfile.c:1318
+#: gio/gfile.c:1456 gio/gfile.c:1694 gio/gfile.c:1749 gio/gfile.c:1807
+#: gio/gfile.c:1891 gio/gfile.c:1948 gio/gfile.c:2012 gio/gfile.c:2067
+#: gio/gfile.c:3772 gio/gfile.c:3912 gio/gfile.c:4205 gio/gfile.c:4675
+#: gio/gfile.c:5086 gio/gfile.c:5171 gio/gfile.c:5261 gio/gfile.c:5358
+#: gio/gfile.c:5445 gio/gfile.c:5546 gio/gfile.c:8375 gio/gfile.c:8465
+#: gio/gfile.c:8549 gio/win32/gwinhttpfile.c:453
 msgid "Operation not supported"
 msgstr "Operasi tak didukung"
 
-#: gio/gdbusauthmechanismsha1.c:402
+#: gio/gdbusauthmechanismsha1.c:404
 #, c-format
 msgid "Error opening keyring “%s” for reading: "
 msgstr "Galat saat membuka ring kunci \"%s\" untuk dibaca: "
 
-#: gio/gdbusauthmechanismsha1.c:425 gio/gdbusauthmechanismsha1.c:747
+#: gio/gdbusauthmechanismsha1.c:427 gio/gdbusauthmechanismsha1.c:769
 #, c-format
 msgid "Line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr "Baris %d dari ring kunci pada \"%s\" dengan isi \"%s\" salah bentuk"
 
-#: gio/gdbusauthmechanismsha1.c:439 gio/gdbusauthmechanismsha1.c:761
+#: gio/gdbusauthmechanismsha1.c:441 gio/gdbusauthmechanismsha1.c:783
 #, c-format
 msgid ""
 "First token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -597,7 +606,7 @@ msgstr ""
 "Token pertama dari baris %d dari ring kunci pada \"%s\" dengan isi \"%s\" "
 "salah bentuk"
 
-#: gio/gdbusauthmechanismsha1.c:453 gio/gdbusauthmechanismsha1.c:775
+#: gio/gdbusauthmechanismsha1.c:455 gio/gdbusauthmechanismsha1.c:797
 #, c-format
 msgid ""
 "Second token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -605,56 +614,56 @@ msgstr ""
 "Token kedua dari baris %d dari ring kunci pada \"%s\" dengan isi \"%s\" "
 "salah bentuk"
 
-#: gio/gdbusauthmechanismsha1.c:477
+#: gio/gdbusauthmechanismsha1.c:479
 #, c-format
 msgid "Didn’t find cookie with id %d in the keyring at “%s”"
 msgstr "Tak menemukan cookie dengan id %d dalam gantungan kunci pada \"%s\""
 
-#: gio/gdbusauthmechanismsha1.c:523
+#: gio/gdbusauthmechanismsha1.c:536
 #, c-format
 msgid "Error creating lock file “%s”: %s"
 msgstr "Galat saat membuat berkas kunci \"%s\": %s"
 
-#: gio/gdbusauthmechanismsha1.c:587
+#: gio/gdbusauthmechanismsha1.c:609
 #, c-format
 msgid "Error deleting stale lock file “%s”: %s"
 msgstr "Galat saat menghapus berkas kunci yang basi \"%s\": %s"
 
-#: gio/gdbusauthmechanismsha1.c:626
+#: gio/gdbusauthmechanismsha1.c:648
 #, c-format
 msgid "Error closing (unlinked) lock file “%s”: %s"
 msgstr "Galat saat menutup berkas kunci (tak terkait) \"%s\": %s"
 
-#: gio/gdbusauthmechanismsha1.c:637
+#: gio/gdbusauthmechanismsha1.c:659
 #, c-format
 msgid "Error unlinking lock file “%s”: %s"
 msgstr "Galat saat membuka kait berkas kunci \"%s\": %s"
 
-#: gio/gdbusauthmechanismsha1.c:714
+#: gio/gdbusauthmechanismsha1.c:736
 #, c-format
 msgid "Error opening keyring “%s” for writing: "
 msgstr "Galat saat membuka gantungan kunci \"%s\" untuk ditulisi: "
 
-#: gio/gdbusauthmechanismsha1.c:908
+#: gio/gdbusauthmechanismsha1.c:930
 #, c-format
 msgid "(Additionally, releasing the lock for “%s” also failed: %s) "
 msgstr "(Selain itu, melepas kunci bagi \"%s\" juga gagal: %s) "
 
-#: gio/gdbusconnection.c:604 gio/gdbusconnection.c:2418
+#: gio/gdbusconnection.c:588 gio/gdbusconnection.c:2402
 msgid "The connection is closed"
 msgstr "Sambungan tertutup"
 
-#: gio/gdbusconnection.c:1903
+#: gio/gdbusconnection.c:1887
 msgid "Timeout was reached"
 msgstr "Kehabisan waktu"
 
-#: gio/gdbusconnection.c:2541
+#: gio/gdbusconnection.c:2525
 msgid ""
 "Unsupported flags encountered when constructing a client-side connection"
 msgstr ""
 "Ditemui tanda yang tak didukung ketika membangun sambungan di sisi klien"
 
-#: gio/gdbusconnection.c:4269 gio/gdbusconnection.c:4623
+#: gio/gdbusconnection.c:4253 gio/gdbusconnection.c:4607
 #, c-format
 msgid ""
 "No such interface “org.freedesktop.DBus.Properties” on object at path %s"
@@ -662,106 +671,106 @@ msgstr ""
 "Tidak ada antarmuka \"org.freedesktop.DBus.Properties\" pada objek pada path "
 "%s"
 
-#: gio/gdbusconnection.c:4414
+#: gio/gdbusconnection.c:4398
 #, c-format
 msgid "No such property “%s”"
 msgstr "Tak ada properti \"%s\""
 
-#: gio/gdbusconnection.c:4426
+#: gio/gdbusconnection.c:4410
 #, c-format
 msgid "Property “%s” is not readable"
 msgstr "Properti \"%s\" tidak dapat dibaca"
 
-#: gio/gdbusconnection.c:4437
+#: gio/gdbusconnection.c:4421
 #, c-format
 msgid "Property “%s” is not writable"
 msgstr "Properti \"%s\" tidak dapat ditulisi"
 
-#: gio/gdbusconnection.c:4457
+#: gio/gdbusconnection.c:4441
 #, c-format
 msgid "Error setting property “%s”: Expected type “%s” but got “%s”"
 msgstr ""
 "Galat menata properti \"%s\": Tipe yang diharapkan \"%s\" tapi diperoleh \"%s"
 "\""
 
-#: gio/gdbusconnection.c:4562 gio/gdbusconnection.c:4777
-#: gio/gdbusconnection.c:6760
+#: gio/gdbusconnection.c:4546 gio/gdbusconnection.c:4761
+#: gio/gdbusconnection.c:6744
 #, c-format
 msgid "No such interface “%s”"
 msgstr "Tak ada antarmuka \"%s\""
 
-#: gio/gdbusconnection.c:4999 gio/gdbusconnection.c:7274
+#: gio/gdbusconnection.c:4983 gio/gdbusconnection.c:7258
 #, c-format
 msgid "No such interface “%s” on object at path %s"
 msgstr "Tak ada antarmuka \"%s\" pada objek di lokasi %s"
 
-#: gio/gdbusconnection.c:5100
+#: gio/gdbusconnection.c:5084
 #, c-format
 msgid "No such method “%s”"
 msgstr "Tidak ada metode seperti \"%s\""
 
-#: gio/gdbusconnection.c:5131
+#: gio/gdbusconnection.c:5115
 #, c-format
 msgid "Type of message, “%s”, does not match expected type “%s”"
 msgstr "Tipe pesan \"%s\" tak cocok dengan tipe yang diharapkan \"%s\""
 
-#: gio/gdbusconnection.c:5334
+#: gio/gdbusconnection.c:5318
 #, c-format
 msgid "An object is already exported for the interface %s at %s"
 msgstr "Suatu objek telah diekspor bagi antar muka %s pada %s"
 
-#: gio/gdbusconnection.c:5561
+#: gio/gdbusconnection.c:5545
 #, c-format
 msgid "Unable to retrieve property %s.%s"
 msgstr "Tak bisa mengambil properti %s.%s"
 
-#: gio/gdbusconnection.c:5617
+#: gio/gdbusconnection.c:5601
 #, c-format
 msgid "Unable to set property %s.%s"
 msgstr "Tak bisa menata properti %s.%s"
 
-#: gio/gdbusconnection.c:5796
+#: gio/gdbusconnection.c:5780
 #, c-format
 msgid "Method “%s” returned type “%s”, but expected “%s”"
 msgstr "Metode \"%s\" mengembalikan tipe \"%s\", tapi yang diharapkan \"%s\""
 
-#: gio/gdbusconnection.c:6872
+#: gio/gdbusconnection.c:6856
 #, c-format
 msgid "Method “%s” on interface “%s” with signature “%s” does not exist"
 msgstr ""
 "Metode \"%s\" pada antar muka \"%s\" dengan tanda tangan \"%s\"' tak ada"
 
-#: gio/gdbusconnection.c:6993
+#: gio/gdbusconnection.c:6977
 #, c-format
 msgid "A subtree is already exported for %s"
 msgstr "Subtree telah diekspor bagi %s"
 
-#: gio/gdbusconnection.c:7282
+#: gio/gdbusconnection.c:7266
 #, c-format
 msgid "Object does not exist at path “%s”"
 msgstr "Objek tidak ada di path \"%s\""
 
-#: gio/gdbusmessage.c:1311
+#: gio/gdbusmessage.c:1301
 msgid "type is INVALID"
 msgstr "jenisnya INVALID"
 
-#: gio/gdbusmessage.c:1322
+#: gio/gdbusmessage.c:1312
 msgid "METHOD_CALL message: PATH or MEMBER header field is missing"
 msgstr "Pesan METHOD_CALL: ruas header PATH atau MEMBER hilang"
 
-#: gio/gdbusmessage.c:1333
+#: gio/gdbusmessage.c:1323
 msgid "METHOD_RETURN message: REPLY_SERIAL header field is missing"
 msgstr "Pesan METHOD_RETURN: ruas header REPLY_SERIAL hilang"
 
-#: gio/gdbusmessage.c:1345
+#: gio/gdbusmessage.c:1335
 msgid "ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing"
 msgstr "Pesan ERROR: ruas header REPLY_SERIAL atau ERRORN_NAME hilang"
 
-#: gio/gdbusmessage.c:1358
+#: gio/gdbusmessage.c:1348
 msgid "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing"
 msgstr "Pesan SIGNAL: ruas header PATH, INTERFACE, atau MEMBER hilang"
 
-#: gio/gdbusmessage.c:1366
+#: gio/gdbusmessage.c:1356
 msgid ""
 "SIGNAL message: The PATH header field is using the reserved value /org/"
 "freedesktop/DBus/Local"
@@ -769,7 +778,7 @@ msgstr ""
 "Pesan SIGNAL: ruas header PATH memakai nilai khusus /org/freedesktop/DBus/"
 "Local"
 
-#: gio/gdbusmessage.c:1374
+#: gio/gdbusmessage.c:1364
 msgid ""
 "SIGNAL message: The INTERFACE header field is using the reserved value org."
 "freedesktop.DBus.Local"
@@ -777,18 +786,18 @@ msgstr ""
 "Pesan SIGNAL: ruas header INTERFACE memakai nilai khusus org.freedesktop."
 "DBus.Local"
 
-#: gio/gdbusmessage.c:1422 gio/gdbusmessage.c:1482
+#: gio/gdbusmessage.c:1412 gio/gdbusmessage.c:1472
 #, c-format
 msgid "Wanted to read %lu byte but only got %lu"
 msgid_plural "Wanted to read %lu bytes but only got %lu"
 msgstr[0] "Ingin membaca %lu bita tapi hanya memperoleh %lu"
 
-#: gio/gdbusmessage.c:1436
+#: gio/gdbusmessage.c:1426
 #, c-format
 msgid "Expected NUL byte after the string “%s” but found byte %d"
 msgstr "Mengharapkan bita NUL setelah string \"%s\" tapi menemui bita %d"
 
-#: gio/gdbusmessage.c:1455
+#: gio/gdbusmessage.c:1445
 #, c-format
 msgid ""
 "Expected valid UTF-8 string but found invalid bytes at byte offset %d "
@@ -798,21 +807,21 @@ msgstr ""
 "%d (panjang string adalah %d). String UTF-8 yang valid sampai titik itu "
 "adalah \"%s\""
 
-#: gio/gdbusmessage.c:1519 gio/gdbusmessage.c:1795 gio/gdbusmessage.c:2006
+#: gio/gdbusmessage.c:1509 gio/gdbusmessage.c:1785 gio/gdbusmessage.c:1996
 msgid "Value nested too deeply"
 msgstr "Nilai bersarang terlalu dalam"
 
-#: gio/gdbusmessage.c:1687
+#: gio/gdbusmessage.c:1677
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus object path"
 msgstr "Nilai terurai \"%s\" bukan lokasi objek D-Bus yang valid"
 
-#: gio/gdbusmessage.c:1711
+#: gio/gdbusmessage.c:1701
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature"
 msgstr "Nilai terurai \"%s\" bukan tanda tangan D-Bus yang valid"
 
-#: gio/gdbusmessage.c:1762
+#: gio/gdbusmessage.c:1752
 #, c-format
 msgid ""
 "Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB)."
@@ -822,7 +831,7 @@ msgstr[0] ""
 "Menjumpai larik dengan panjang %u bita. Panjang maksimal adalah 2<<26 bita "
 "(64 MiB)."
 
-#: gio/gdbusmessage.c:1782
+#: gio/gdbusmessage.c:1772
 #, c-format
 msgid ""
 "Encountered array of type “a%c”, expected to have a length a multiple of %u "
@@ -831,16 +840,16 @@ msgstr ""
 "Menemui larik bertipe \"a%c\", mengharapkan punya panjang kelipatan %u bita, "
 "tapi menemui panjang %u bita"
 
-#: gio/gdbusmessage.c:1936 gio/gdbusmessage.c:2655
+#: gio/gdbusmessage.c:1926 gio/gdbusmessage.c:2645
 msgid "Empty structures (tuples) are not allowed in D-Bus"
 msgstr "Struktur kosong (tuple) tidak diperbolehkan di D-Bus"
 
-#: gio/gdbusmessage.c:1990
+#: gio/gdbusmessage.c:1980
 #, c-format
 msgid "Parsed value “%s” for variant is not a valid D-Bus signature"
 msgstr "Nilai terurai \"%s\" bagi varian bukan tanda tangan D-Bus yang valid"
 
-#: gio/gdbusmessage.c:2031
+#: gio/gdbusmessage.c:2021
 #, c-format
 msgid ""
 "Error deserializing GVariant with type string “%s” from the D-Bus wire format"
@@ -848,7 +857,7 @@ msgstr ""
 "Galat saat deserialisasi GVariant dengan type string \"%s\" dari format "
 "kabel D-Bus"
 
-#: gio/gdbusmessage.c:2216
+#: gio/gdbusmessage.c:2206
 #, c-format
 msgid ""
 "Invalid endianness value. Expected 0x6c (“l”) or 0x42 (“B”) but found value "
@@ -857,28 +866,28 @@ msgstr ""
 "Nilai ke-endian-an tak valid. Berharap 0x6c (\"l\") atau (0x42) \"B\" tapi "
 "menemui 0x%02x"
 
-#: gio/gdbusmessage.c:2235
+#: gio/gdbusmessage.c:2225
 #, c-format
 msgid "Invalid major protocol version. Expected 1 but found %d"
 msgstr "Versi protokol mayor tak valid. Berharap 1 tapi menemui %d"
 
-#: gio/gdbusmessage.c:2293 gio/gdbusmessage.c:2891
+#: gio/gdbusmessage.c:2283 gio/gdbusmessage.c:2881
 msgid "Signature header found but is not of type signature"
 msgstr "Tajuk tanda tangan ditemukan tetapi bukan tipe tanda tangan"
 
-#: gio/gdbusmessage.c:2305
+#: gio/gdbusmessage.c:2295
 #, c-format
 msgid "Signature header with signature “%s” found but message body is empty"
 msgstr ""
 "Header tanda tangan dengan tanda tangan \"%s\" ditemukan tapi body pesan "
 "kosong"
 
-#: gio/gdbusmessage.c:2320
+#: gio/gdbusmessage.c:2310
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature (for body)"
 msgstr "Nilai terurai \"%s\" bukan tanda tangan D-Bus yang valid (bagi body)"
 
-#: gio/gdbusmessage.c:2352
+#: gio/gdbusmessage.c:2342
 #, 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"
@@ -886,11 +895,11 @@ msgstr[0] ""
 "Tidak terdapat tajuk tanda tangan pada pesan, tetapi panjang badan pesan "
 "adalah %u bita"
 
-#: gio/gdbusmessage.c:2362
+#: gio/gdbusmessage.c:2352
 msgid "Cannot deserialize message: "
 msgstr "Tak bisa men-deserialisasi pesan: "
 
-#: gio/gdbusmessage.c:2708
+#: gio/gdbusmessage.c:2698
 #, c-format
 msgid ""
 "Error serializing GVariant with type string “%s” to the D-Bus wire format"
@@ -898,23 +907,23 @@ msgstr ""
 "Kesalahan serialisasi GVariant dengan type string \"%s\" ke format kabel D-"
 "Bus"
 
-#: gio/gdbusmessage.c:2845
+#: gio/gdbusmessage.c:2835
 #, c-format
 msgid ""
 "Number of file descriptors in message (%d) differs from header field (%d)"
 msgstr ""
 "Jumlah deskriptor berkas dalam pesan (%d) berbeda dari field header (%d)"
 
-#: gio/gdbusmessage.c:2853
+#: gio/gdbusmessage.c:2843
 msgid "Cannot serialize message: "
 msgstr "Tak bisa men-serialisasi pesan: "
 
-#: gio/gdbusmessage.c:2906
+#: gio/gdbusmessage.c:2896
 #, c-format
 msgid "Message body has signature “%s” but there is no signature header"
 msgstr "Body pesan punya tanda tangan \"%s\" tapi tak ada header tanda tangan"
 
-#: gio/gdbusmessage.c:2916
+#: gio/gdbusmessage.c:2906
 #, c-format
 msgid ""
 "Message body has type signature “%s” but signature in the header field is "
@@ -923,52 +932,52 @@ msgstr ""
 "Tubuh pesan memiliki tanda tangan tipe \"%s\" tapi tanda tangan di ruas "
 "header adalah \"(%s)\""
 
-#: gio/gdbusmessage.c:2932
+#: gio/gdbusmessage.c:2922
 #, c-format
 msgid "Message body is empty but signature in the header field is “(%s)”"
 msgstr "Tubuh pesan kosong tapi tanda tangan pada ruas header adalah \"(%s)\""
 
-#: gio/gdbusmessage.c:3487
+#: gio/gdbusmessage.c:3477
 #, c-format
 msgid "Error return with body of type “%s”"
 msgstr "Galat balikan dengan tubuh bertipe \"%s\""
 
-#: gio/gdbusmessage.c:3495
+#: gio/gdbusmessage.c:3485
 msgid "Error return with empty body"
 msgstr "Galat balikan dengan body kosong"
 
-#: gio/gdbusprivate.c:2246
+#: gio/gdbusprivate.c:2185
 #, c-format
 msgid "(Type any character to close this window)\n"
 msgstr "(Ketikkan karakter apapun untuk menutup jendela ini)\n"
 
-#: gio/gdbusprivate.c:2420
+#: gio/gdbusprivate.c:2371
 #, c-format
 msgid "Session dbus not running, and autolaunch failed"
 msgstr "dbus sesi tak sedang berjalan, dan peluncuran-otomatis gagal"
 
-#: gio/gdbusprivate.c:2443
+#: gio/gdbusprivate.c:2394
 #, c-format
 msgid "Unable to get Hardware profile: %s"
 msgstr "Tak bisa mendapat profil perangkat keras: %s"
 
 #. Translators: Both placeholders are file paths
-#: gio/gdbusprivate.c:2494
+#: gio/gdbusprivate.c:2445
 #, c-format
 msgid "Unable to load %s or %s: "
 msgstr "Tak bisa memuat %s or %s: "
 
-#: gio/gdbusproxy.c:1569
+#: gio/gdbusproxy.c:1573
 #, c-format
 msgid "Error calling StartServiceByName for %s: "
 msgstr "Galat sewaktu memanggil StartServiceByName untuk %s: "
 
-#: gio/gdbusproxy.c:1592
+#: gio/gdbusproxy.c:1596
 #, c-format
 msgid "Unexpected reply %d from StartServiceByName(\"%s\") method"
 msgstr "Balasan tak diharapkan %d dari metode StartServiceByName(\"%s\")"
 
-#: gio/gdbusproxy.c:2699 gio/gdbusproxy.c:2834
+#: gio/gdbusproxy.c:2707 gio/gdbusproxy.c:2842
 #, c-format
 msgid ""
 "Cannot invoke method; proxy is for the well-known name %s without an owner, "
@@ -1024,66 +1033,66 @@ msgstr ""
 "Gunakan \"%s PERINTAH --help\" untuk memperoleh bantuan pada setiap "
 "perintah.\n"
 
-#: gio/gdbus-tool.c:201 gio/gdbus-tool.c:273 gio/gdbus-tool.c:345
-#: gio/gdbus-tool.c:369 gio/gdbus-tool.c:859 gio/gdbus-tool.c:1236
-#: gio/gdbus-tool.c:1724
+#: gio/gdbus-tool.c:202 gio/gdbus-tool.c:274 gio/gdbus-tool.c:346
+#: gio/gdbus-tool.c:370 gio/gdbus-tool.c:860 gio/gdbus-tool.c:1245
+#: gio/gdbus-tool.c:1733
 #, c-format
 msgid "Error: %s\n"
 msgstr "Galat: %s\n"
 
-#: gio/gdbus-tool.c:212 gio/gdbus-tool.c:286 gio/gdbus-tool.c:1740
+#: gio/gdbus-tool.c:213 gio/gdbus-tool.c:287 gio/gdbus-tool.c:1749
 #, c-format
 msgid "Error parsing introspection XML: %s\n"
 msgstr "Galat saat mengurai XML introspeksi: %s\n"
 
-#: gio/gdbus-tool.c:250
+#: gio/gdbus-tool.c:251
 #, c-format
 msgid "Error: %s is not a valid name\n"
 msgstr "Galat: %s bukan nama yang valid\n"
 
-#: gio/gdbus-tool.c:255 gio/gdbus-tool.c:745 gio/gdbus-tool.c:1060
-#: gio/gdbus-tool.c:1890 gio/gdbus-tool.c:2130
+#: gio/gdbus-tool.c:256 gio/gdbus-tool.c:746 gio/gdbus-tool.c:1064
+#: gio/gdbus-tool.c:1899 gio/gdbus-tool.c:2139
 #, c-format
 msgid "Error: %s is not a valid object path\n"
 msgstr "Galat: '%s' bukan suatu lokasi objek yang valid\n"
 
-#: gio/gdbus-tool.c:403
+#: gio/gdbus-tool.c:404
 msgid "Connect to the system bus"
 msgstr "Menyambung ke bus sistem"
 
-#: gio/gdbus-tool.c:404
+#: gio/gdbus-tool.c:405
 msgid "Connect to the session bus"
 msgstr "Menyambung ke bus sesi"
 
-#: gio/gdbus-tool.c:405
+#: gio/gdbus-tool.c:406
 msgid "Connect to given D-Bus address"
 msgstr "Menyambung ke alamat D-Bus yang diberikan"
 
-#: gio/gdbus-tool.c:415
+#: gio/gdbus-tool.c:416
 msgid "Connection Endpoint Options:"
 msgstr "Opsi Titik Ujung Sambungan:"
 
-#: gio/gdbus-tool.c:416
+#: gio/gdbus-tool.c:417
 msgid "Options specifying the connection endpoint"
 msgstr "Opsi yang menyatakan titik ujung sambungan"
 
-#: gio/gdbus-tool.c:439
+#: gio/gdbus-tool.c:440
 #, c-format
 msgid "No connection endpoint specified"
 msgstr "Titik ujung sambungan tak dinyatakan"
 
-#: gio/gdbus-tool.c:449
+#: gio/gdbus-tool.c:450
 #, c-format
 msgid "Multiple connection endpoints specified"
 msgstr "Telah dinyatakan titik ujung sambungan berganda"
 
-#: gio/gdbus-tool.c:522
+#: gio/gdbus-tool.c:523
 #, c-format
 msgid ""
 "Warning: According to introspection data, interface “%s” does not exist\n"
 msgstr "Peringatan: Menurut data introspeksi, antar muka \"%s\" tak ada\n"
 
-#: gio/gdbus-tool.c:531
+#: gio/gdbus-tool.c:532
 #, c-format
 msgid ""
 "Warning: According to introspection data, method “%s” does not exist on "
@@ -1092,162 +1101,166 @@ msgstr ""
 "Peringatan: Menurut data introspeksi, metode \"%s\" tak ada pada antar muka "
 "\"%s\"\n"
 
-#: gio/gdbus-tool.c:593
+#: gio/gdbus-tool.c:594
 msgid "Optional destination for signal (unique name)"
 msgstr "Tujuan opsional bagi sinyal (nama unik)"
 
-#: gio/gdbus-tool.c:594
+#: gio/gdbus-tool.c:595
 msgid "Object path to emit signal on"
 msgstr "Path objek untuk dipancari sinyal"
 
-#: gio/gdbus-tool.c:595
+#: gio/gdbus-tool.c:596
 msgid "Signal and interface name"
 msgstr "Nama antar muka dan sinyal"
 
-#: gio/gdbus-tool.c:628
+#: gio/gdbus-tool.c:629
 msgid "Emit a signal."
 msgstr "Pancarkan sinyal."
 
-#: gio/gdbus-tool.c:683 gio/gdbus-tool.c:997 gio/gdbus-tool.c:1827
-#: gio/gdbus-tool.c:2059 gio/gdbus-tool.c:2279
+#: gio/gdbus-tool.c:684 gio/gdbus-tool.c:1001 gio/gdbus-tool.c:1836
+#: gio/gdbus-tool.c:2068 gio/gdbus-tool.c:2288
 #, c-format
 msgid "Error connecting: %s\n"
 msgstr "Galat saat menyambung: %s\n"
 
-#: gio/gdbus-tool.c:703
+#: gio/gdbus-tool.c:704
 #, c-format
 msgid "Error: %s is not a valid unique bus name.\n"
 msgstr "Galat: '%s' bukan nama bus unik yang valid\n"
 
-#: gio/gdbus-tool.c:722 gio/gdbus-tool.c:1040 gio/gdbus-tool.c:1870
+#: gio/gdbus-tool.c:723 gio/gdbus-tool.c:1044 gio/gdbus-tool.c:1879
 msgid "Error: Object path is not specified\n"
 msgstr "Galat: Lokasi objek tak dinyatakan\n"
 
-#: gio/gdbus-tool.c:765
+#: gio/gdbus-tool.c:766
 msgid "Error: Signal name is not specified\n"
 msgstr "Galat: Nama sinyal tak dinyatakan\n"
 
-#: gio/gdbus-tool.c:779
+#: gio/gdbus-tool.c:780
 #, c-format
 msgid "Error: Signal name “%s” is invalid\n"
 msgstr "Galat: Nama sinyal \"%s\" tak valid\n"
 
-#: gio/gdbus-tool.c:791
+#: gio/gdbus-tool.c:792
 #, c-format
 msgid "Error: %s is not a valid interface name\n"
 msgstr "Galat: '%s' bukan nama antar muka yang valid\n"
 
-#: gio/gdbus-tool.c:797
+#: gio/gdbus-tool.c:798
 #, c-format
 msgid "Error: %s is not a valid member name\n"
 msgstr "Galat: '%s' bukan nama anggota yang valid\n"
 
 #. Use the original non-"parse-me-harder" error
-#: gio/gdbus-tool.c:834 gio/gdbus-tool.c:1172
+#: gio/gdbus-tool.c:835 gio/gdbus-tool.c:1176
 #, c-format
 msgid "Error parsing parameter %d: %s\n"
 msgstr "Galat saat mengurai parameter %d: %s\n"
 
-#: gio/gdbus-tool.c:866
+#: gio/gdbus-tool.c:867
 #, c-format
 msgid "Error flushing connection: %s\n"
 msgstr "Galat saat menggelontor sambungan: %s\n"
 
-#: gio/gdbus-tool.c:893
+#: gio/gdbus-tool.c:895
 msgid "Destination name to invoke method on"
 msgstr "Nama tujuan tempat menjalankan metode"
 
-#: gio/gdbus-tool.c:894
+#: gio/gdbus-tool.c:896
 msgid "Object path to invoke method on"
 msgstr "Lokasi objek tempat menjalankan metode"
 
-#: gio/gdbus-tool.c:895
+#: gio/gdbus-tool.c:897
 msgid "Method and interface name"
 msgstr "Nama metode dan antar muka"
 
-#: gio/gdbus-tool.c:896
+#: gio/gdbus-tool.c:898
 msgid "Timeout in seconds"
 msgstr "Tenggat waktu dalam detik"
 
-#: gio/gdbus-tool.c:942
+#: gio/gdbus-tool.c:899
+msgid "Allow interactive authorization"
+msgstr "Perbolehkan otorisasi interaktif"
+
+#: gio/gdbus-tool.c:946
 msgid "Invoke a method on a remote object."
 msgstr "Jalankan suatu metode pada suatu objek jauh."
 
-#: gio/gdbus-tool.c:1014 gio/gdbus-tool.c:1844 gio/gdbus-tool.c:2084
+#: gio/gdbus-tool.c:1018 gio/gdbus-tool.c:1853 gio/gdbus-tool.c:2093
 msgid "Error: Destination is not specified\n"
 msgstr "Galat: Tujuan tak dinyatakan\n"
 
-#: gio/gdbus-tool.c:1025 gio/gdbus-tool.c:1861 gio/gdbus-tool.c:2095
+#: gio/gdbus-tool.c:1029 gio/gdbus-tool.c:1870 gio/gdbus-tool.c:2104
 #, c-format
 msgid "Error: %s is not a valid bus name\n"
 msgstr "Galat: %s bukan nama bus yang valid\n"
 
-#: gio/gdbus-tool.c:1075
+#: gio/gdbus-tool.c:1079
 msgid "Error: Method name is not specified\n"
 msgstr "Galat: Nama metode tak dinyatakan\n"
 
-#: gio/gdbus-tool.c:1086
+#: gio/gdbus-tool.c:1090
 #, c-format
 msgid "Error: Method name “%s” is invalid\n"
 msgstr "Galat: Nama metode \"%s\" tak valid\n"
 
-#: gio/gdbus-tool.c:1164
+#: gio/gdbus-tool.c:1168
 #, c-format
 msgid "Error parsing parameter %d of type “%s”: %s\n"
 msgstr "Galat ketika mengurai parameter ke-%d bertipe \"%s\": %s\n"
 
-#: gio/gdbus-tool.c:1190
+#: gio/gdbus-tool.c:1194
 #, c-format
 msgid "Error adding handle %d: %s\n"
 msgstr "Galat saat menambahkan %d handle: %s\n"
 
-#: gio/gdbus-tool.c:1686
+#: gio/gdbus-tool.c:1695
 msgid "Destination name to introspect"
 msgstr "Nama tujuan untuk introspeksi"
 
-#: gio/gdbus-tool.c:1687
+#: gio/gdbus-tool.c:1696
 msgid "Object path to introspect"
 msgstr "Lokasi objek untuk introspeksi"
 
-#: gio/gdbus-tool.c:1688
+#: gio/gdbus-tool.c:1697
 msgid "Print XML"
 msgstr "Cetak XML"
 
-#: gio/gdbus-tool.c:1689
+#: gio/gdbus-tool.c:1698
 msgid "Introspect children"
 msgstr "Introspeksi anak"
 
-#: gio/gdbus-tool.c:1690
+#: gio/gdbus-tool.c:1699
 msgid "Only print properties"
 msgstr "Hanya cetak properti"
 
-#: gio/gdbus-tool.c:1779
+#: gio/gdbus-tool.c:1788
 msgid "Introspect a remote object."
 msgstr "Introspeksi suatu objek jauh."
 
-#: gio/gdbus-tool.c:1985
+#: gio/gdbus-tool.c:1994
 msgid "Destination name to monitor"
 msgstr "Nama tujuan untuk dipantau"
 
-#: gio/gdbus-tool.c:1986
+#: gio/gdbus-tool.c:1995
 msgid "Object path to monitor"
 msgstr "Lokasi objek untuk dipantau"
 
-#: gio/gdbus-tool.c:2011
+#: gio/gdbus-tool.c:2020
 msgid "Monitor a remote object."
 msgstr "Memantau suatu objek jauh."
 
-#: gio/gdbus-tool.c:2069
+#: gio/gdbus-tool.c:2078
 msgid "Error: can’t monitor a non-message-bus connection\n"
 msgstr "Galat: tidak dapat memonitor koneksi non bus pesan\n"
 
-#: gio/gdbus-tool.c:2193
+#: gio/gdbus-tool.c:2202
 msgid "Service to activate before waiting for the other one (well-known name)"
 msgstr ""
 "Layanan yang akan diaktifkan sebelum menunggu yang lain (nama yang dikenal "
 "baik)"
 
-#: gio/gdbus-tool.c:2196
+#: gio/gdbus-tool.c:2205
 msgid ""
 "Timeout to wait for before exiting with an error (seconds); 0 for no timeout "
 "(default)"
@@ -1255,64 +1268,69 @@ msgstr ""
 "Tenggat waktu menunggu sebelum keluar dengan suatu kesalahan (detik); 0 "
 "untuk tanpa tenggat (baku)"
 
-#: gio/gdbus-tool.c:2244
+#: gio/gdbus-tool.c:2253
 msgid "[OPTION…] BUS-NAME"
 msgstr "[OPSI…] NAMA-BUS"
 
-#: gio/gdbus-tool.c:2245
+#: gio/gdbus-tool.c:2254
 msgid "Wait for a bus name to appear."
 msgstr "Tunggu suatu nama bus muncul."
 
-#: gio/gdbus-tool.c:2321
+#: gio/gdbus-tool.c:2330
 msgid "Error: A service to activate for must be specified.\n"
 msgstr "Galat: Suatu layanan yang akan diaktifkan mesti dinyatakan\n"
 
-#: gio/gdbus-tool.c:2326
+#: gio/gdbus-tool.c:2335
 msgid "Error: A service to wait for must be specified.\n"
 msgstr "Galat: Suatu layanan yang mesti ditunggu harus dinyatakan\n"
 
-#: gio/gdbus-tool.c:2331
+#: gio/gdbus-tool.c:2340
 msgid "Error: Too many arguments.\n"
 msgstr "Galat: Terlalu banyak argumen.\n"
 
-#: gio/gdbus-tool.c:2339 gio/gdbus-tool.c:2346
+#: gio/gdbus-tool.c:2348 gio/gdbus-tool.c:2355
 #, c-format
 msgid "Error: %s is not a valid well-known bus name.\n"
 msgstr "Galat: %s bukan nama bus yang dikenal baik dan valid\n"
 
-#: gio/gdesktopappinfo.c:2106 gio/gdesktopappinfo.c:4935
+#: gio/gdebugcontrollerdbus.c:358
+#, c-format
+msgid "Not authorized to change debug settings"
+msgstr "Tidak berwenang untuk mengubah pengaturan awakutu"
+
+#: gio/gdesktopappinfo.c:2178 gio/gdesktopappinfo.c:5105
 msgid "Unnamed"
 msgstr "Tanpa nama"
 
-#: gio/gdesktopappinfo.c:2516
+#: gio/gdesktopappinfo.c:2588
 msgid "Desktop file didn’t specify Exec field"
 msgstr "Berkas desktop tak menyatakan ruas Exec"
 
-#: gio/gdesktopappinfo.c:2804
+#: gio/gdesktopappinfo.c:2896
 msgid "Unable to find terminal required for application"
 msgstr "Tak bisa temukan terminal yang diperlukan bagi aplikasi"
 
-#: gio/gdesktopappinfo.c:3455
+#: gio/gdesktopappinfo.c:3625
 #, c-format
 msgid "Can’t create user application configuration folder %s: %s"
 msgstr ""
 "Tak bisa membuat folder %s untuk konfigurasi aplikasi bagi pengguna: %s"
 
-#: gio/gdesktopappinfo.c:3459
+#: gio/gdesktopappinfo.c:3629
 #, c-format
 msgid "Can’t create user MIME configuration folder %s: %s"
 msgstr "Tak bisa membuat folder %s untuk konfigurasi MIME bagi pengguna: %s"
 
-#: gio/gdesktopappinfo.c:3701 gio/gdesktopappinfo.c:3725
+#: gio/gdesktopappinfo.c:3871 gio/gdesktopappinfo.c:3895
 msgid "Application information lacks an identifier"
 msgstr "Informasi aplikasi tak punya identifier"
 
-#: gio/gdesktopappinfo.c:3961
+#: gio/gdesktopappinfo.c:4131
 #, c-format
 msgid "Can’t create user desktop file %s"
 msgstr "Tak bisa membuat berkas desktop pengguna %s"
 
-#: gio/gdesktopappinfo.c:4097
+#: gio/gdesktopappinfo.c:4267
 #, c-format
 msgid "Custom definition for %s"
 msgstr "Definisi gubahan bagi %s"
@@ -1340,7 +1358,7 @@ msgstr "kandar tidak mengimplementasi start"
 msgid "drive doesn’t implement stop"
 msgstr "kandar tidak mengimplementasi stop"
 
-#: gio/gdtlsconnection.c:1153 gio/gtlsconnection.c:920
+#: gio/gdtlsconnection.c:1186 gio/gtlsconnection.c:955
 msgid "TLS backend does not implement TLS binding retrieval"
 msgstr "Backend TLS tidak menerapkan pengambilan pengikatan TLS"
 
@@ -1381,73 +1399,73 @@ msgstr "Berharap suatu GEmblem bagi GEmblemedIcon"
 #. * trying to find the enclosing (user visible)
 #. * mount of a file, but none exists.
 #.
-#: gio/gfile.c:1561
+#: gio/gfile.c:1579
 msgid "Containing mount does not exist"
 msgstr "Kait yang memuat tak ada"
 
-#: gio/gfile.c:2608 gio/glocalfile.c:2486
+#: gio/gfile.c:2626 gio/glocalfile.c:2486
 msgid "Can’t copy over directory"
 msgstr "Tak bisa menyalin direktori atas direktori"
 
-#: gio/gfile.c:2668
+#: gio/gfile.c:2686
 msgid "Can’t copy directory over directory"
 msgstr "Tak bisa menyalin direktori atas direktori"
 
-#: gio/gfile.c:2676
+#: gio/gfile.c:2694
 msgid "Target file exists"
 msgstr "Berkas tujuan telah ada"
 
-#: gio/gfile.c:2695
+#: gio/gfile.c:2713
 msgid "Can’t recursively copy directory"
 msgstr "Tak bisa menyalin direktori secara rekursif"
 
-#: gio/gfile.c:2996
+#: gio/gfile.c:3014
 msgid "Splice not supported"
 msgstr "Splice tidak didukung"
 
-#: gio/gfile.c:3000
+#: gio/gfile.c:3018
 #, c-format
 msgid "Error splicing file: %s"
 msgstr "Galat saat men-splice berkas: %s"
 
-#: gio/gfile.c:3152
+#: gio/gfile.c:3170
 msgid "Copy (reflink/clone) between mounts is not supported"
 msgstr "Menyalin (reflink/clone) antar kait tak didukung"
 
-#: gio/gfile.c:3156
+#: gio/gfile.c:3174
 msgid "Copy (reflink/clone) is not supported or invalid"
 msgstr "Menyalin (reflink/clone) tak didukung atau tak valid"
 
-#: gio/gfile.c:3161
+#: gio/gfile.c:3179
 msgid "Copy (reflink/clone) is not supported or didn’t work"
 msgstr "Menyalin (reflink/clone) tak didukung atau tak bekerja"
 
-#: gio/gfile.c:3226
+#: gio/gfile.c:3244
 msgid "Can’t copy special file"
 msgstr "Tak bisa menyalin berkas spesial"
 
-#: gio/gfile.c:4035
+#: gio/gfile.c:4138
 msgid "Invalid symlink value given"
 msgstr "Diberikan nilai link simbolik yang tak valid"
 
-#: gio/gfile.c:4045 glib/gfileutils.c:2333
+#: gio/gfile.c:4148 glib/gfileutils.c:2333
 msgid "Symbolic links not supported"
 msgstr "Taut simbolik tidak didukung"
 
-#: gio/gfile.c:4213
+#: gio/gfile.c:4316
 msgid "Trash not supported"
 msgstr "Tong sampah tak didukung"
 
-#: gio/gfile.c:4325
+#: gio/gfile.c:4428
 #, c-format
 msgid "File names cannot contain “%c”"
 msgstr "Nama berkas tak boleh mengandung \"%c\""
 
-#: gio/gfile.c:6806 gio/gvolume.c:364
+#: gio/gfile.c:7028 gio/gvolume.c:364
 msgid "volume doesn’t implement mount"
 msgstr "volume tak mengimplementasi pengaitan"
 
-#: gio/gfile.c:6920 gio/gfile.c:6968
+#: gio/gfile.c:7142 gio/gfile.c:7190
 msgid "No application is registered as handling this file"
 msgstr "Tak ada aplikasi terdaftar yang menangani berkas ini"
 
@@ -1492,7 +1510,7 @@ msgstr "Pemenggalan tak diijinkan pada stream masukan"
 msgid "Truncate not supported on stream"
 msgstr "Pemenggalan tak didukung pada stream"
 
-#: gio/ghttpproxy.c:91 gio/gresolver.c:443 gio/gresolver.c:596
+#: gio/ghttpproxy.c:91 gio/gresolver.c:458 gio/gresolver.c:611
 #: glib/gconvert.c:1825
 msgid "Invalid hostname"
 msgstr "Nama host salah"
@@ -1579,7 +1597,7 @@ msgid "Could not parse “%s” as IP address mask"
 msgstr "Tak bisa mengurai \"%s\" sebagai mask alamat IP"
 
 #: gio/ginetsocketaddress.c:203 gio/ginetsocketaddress.c:220
-#: gio/gnativesocketaddress.c:109 gio/gunixsocketaddress.c:221
+#: gio/gnativesocketaddress.c:109 gio/gunixsocketaddress.c:228
 msgid "Not enough space for socket address"
 msgstr "Tak cukup ruang bagi alamat soket"
 
@@ -2418,15 +2436,15 @@ msgstr "Galat saat memampatkan berkas %s"
 msgid "text may not appear inside <%s>"
 msgstr "teks tidak boleh muncul di dalam <%s>"
 
-#: gio/glib-compile-resources.c:737 gio/glib-compile-schemas.c:2172
+#: gio/glib-compile-resources.c:819 gio/glib-compile-schemas.c:2172
 msgid "Show program version and exit"
 msgstr "Tampilkan versi program dan keluar"
 
-#: gio/glib-compile-resources.c:738
+#: gio/glib-compile-resources.c:820
 msgid "Name of the output file"
 msgstr "Nama berkas keluaran"
 
-#: gio/glib-compile-resources.c:739
+#: gio/glib-compile-resources.c:821
 msgid ""
 "The directories to load files referenced in FILE from (default: current "
 "directory)"
@@ -2434,48 +2452,48 @@ msgstr ""
 "Direktori untuk memuat berkas yang direferensikan dalam FILE darinya "
 "(bawaan: direktori saat ini)"
 
-#: gio/glib-compile-resources.c:739 gio/glib-compile-schemas.c:2173
+#: gio/glib-compile-resources.c:821 gio/glib-compile-schemas.c:2173
 #: gio/glib-compile-schemas.c:2202
 msgid "DIRECTORY"
 msgstr "DIREKTORI"
 
-#: gio/glib-compile-resources.c:740
+#: gio/glib-compile-resources.c:822
 msgid ""
 "Generate output in the format selected for by the target filename extension"
 msgstr ""
 "Buat keluaran dalam format yang dipilih bagi ekstensi nama berkas target"
 
-#: gio/glib-compile-resources.c:741
+#: gio/glib-compile-resources.c:823
 msgid "Generate source header"
 msgstr "Buat tajuk sumber"
 
-#: gio/glib-compile-resources.c:742
+#: gio/glib-compile-resources.c:824
 msgid "Generate source code used to link in the resource file into your code"
 msgstr ""
 "Buat kode sumber yang dipakai untutk menaut berkas sumber daya ke dalam kode "
 "Anda"
 
-#: gio/glib-compile-resources.c:743
+#: gio/glib-compile-resources.c:825
 msgid "Generate dependency list"
 msgstr "Buat daftar kebergantungan"
 
-#: gio/glib-compile-resources.c:744
+#: gio/glib-compile-resources.c:826
 msgid "Name of the dependency file to generate"
 msgstr "Nama berkas kebergantungan yang akan dibuat"
 
-#: gio/glib-compile-resources.c:745
+#: gio/glib-compile-resources.c:827
 msgid "Include phony targets in the generated dependency file"
 msgstr "Sertakan target palsu pada berkas dependensi yang dihasilkan"
 
-#: gio/glib-compile-resources.c:746
+#: gio/glib-compile-resources.c:828
 msgid "Don’t automatically create and register resource"
 msgstr "Jangan buat dan daftarkan sumber daya secara otomatis"
 
-#: gio/glib-compile-resources.c:747
+#: gio/glib-compile-resources.c:829
 msgid "Don’t export functions; declare them G_GNUC_INTERNAL"
 msgstr "Jangan ekspor fungsi; deklarasikan mereka G_GNUC_INTERNAL"
 
-#: gio/glib-compile-resources.c:748
+#: gio/glib-compile-resources.c:830
 msgid ""
 "Don’t embed resource data in the C file; assume it's linked externally "
 "instead"
@@ -2483,11 +2501,15 @@ msgstr ""
 "Jangan menyematkan data sumber daya dalam berkas C; anggap itu terhubung "
 "secara eksternal sebagai gantinya"
 
-#: gio/glib-compile-resources.c:749
+#: gio/glib-compile-resources.c:831
 msgid "C identifier name used for the generated source code"
 msgstr "Nama identifier C yang dipakai bagi kode sumber yang dibuat"
 
-#: gio/glib-compile-resources.c:775
+#: gio/glib-compile-resources.c:832
+msgid "The target C compiler (default: the CC environment variable)"
+msgstr "Kompiler target C (bawaan: variabel lingkungan CC)"
+
+#: gio/glib-compile-resources.c:858
 msgid ""
 "Compile a resource specification into a resource file.\n"
 "Resource specification files have the extension .gresource.xml,\n"
@@ -2497,7 +2519,7 @@ msgstr ""
 "Berkas spesifikasi sumber daya memiliki ekstensi .gresource.xml,\n"
 "dan berkas sumber daya memiliki ekstensi bernama .gresource."
 
-#: gio/glib-compile-resources.c:797
+#: gio/glib-compile-resources.c:880
 msgid "You should give exactly one file name\n"
 msgstr "Anda mesti memberikan hanya satu nama berkas\n"
 
@@ -3292,13 +3314,13 @@ msgstr "Galat saat membuat salinan cadangan: %s"
 msgid "Error renaming temporary file: %s"
 msgstr "Galat saat mengubah nama berkas sementara: %s"
 
-#: gio/glocalfileoutputstream.c:609 gio/glocalfileoutputstream.c:1237
+#: gio/glocalfileoutputstream.c:609 gio/glocalfileoutputstream.c:1239
 #, c-format
 msgid "Error truncating file: %s"
 msgstr "Galat saat memenggal berkas: %s"
 
 #: gio/glocalfileoutputstream.c:662 gio/glocalfileoutputstream.c:907
-#: gio/glocalfileoutputstream.c:1218 gio/gsubprocess.c:226
+#: gio/glocalfileoutputstream.c:1220 gio/gsubprocess.c:229
 #, c-format
 msgid "Error opening file “%s”: %s"
 msgstr "Galat saat membuka berkas \"%s\": %s"
@@ -3320,7 +3342,7 @@ msgstr "Berkas telah diubah secara eksternal"
 msgid "Error removing old file: %s"
 msgstr "Galat saat menghapus berkas lama: %s"
 
-#: gio/gmemoryinputstream.c:474 gio/gmemoryoutputstream.c:772
+#: gio/gmemoryinputstream.c:474 gio/gmemoryoutputstream.c:762
 msgid "Invalid GSeekType supplied"
 msgstr "GSeekType yang tak valid diberikan"
 
@@ -3332,15 +3354,15 @@ msgstr "Permintaan seek yang tak valid"
 msgid "Cannot truncate GMemoryInputStream"
 msgstr "Tak bisa memenggal GMemoryInputStream"
 
-#: gio/gmemoryoutputstream.c:567
+#: gio/gmemoryoutputstream.c:568
 msgid "Memory output stream not resizable"
 msgstr "Memori stream keluaran tak bisa diubah ukuran"
 
-#: gio/gmemoryoutputstream.c:583
+#: gio/gmemoryoutputstream.c:584
 msgid "Failed to resize memory output stream"
 msgstr "Gagal mengubah ukuran memori stream keluaran"
 
-#: gio/gmemoryoutputstream.c:673
+#: gio/gmemoryoutputstream.c:663
 msgid ""
 "Amount of memory required to process the write is larger than available "
 "address space"
@@ -3348,11 +3370,11 @@ msgstr ""
 "Banyaknya memori yang diperlukan untuk memroses penulisan lebih besar "
 "daripada ruang tersedia"
 
-#: gio/gmemoryoutputstream.c:782
+#: gio/gmemoryoutputstream.c:772
 msgid "Requested seek before the beginning of the stream"
 msgstr "Seek yang diminta sebelum awal stream"
 
-#: gio/gmemoryoutputstream.c:797
+#: gio/gmemoryoutputstream.c:787
 msgid "Requested seek beyond the end of the stream"
 msgstr "Seek yang diminta setelah akhir stream"
 
@@ -3455,18 +3477,22 @@ msgstr "Jumlah vektor yang dilewatkan ke %s terlalu besar"
 msgid "Source stream is already closed"
 msgstr "Stream sumber telah ditutup"
 
-#: gio/gresolver.c:386 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
+#. Translators: the first placeholder is a domain name, the
+#. * second is an error message
+#: gio/gresolver.c:401 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
+#: gio/gthreadedresolver.c:780 gio/gthreadedresolver.c:804
+#: gio/gthreadedresolver.c:829 gio/gthreadedresolver.c:844
 #, c-format
 msgid "Error resolving “%s”: %s"
 msgstr "Galat saat mengurai \"%s\": %s"
 
 #. Translators: The placeholder is for a function name.
-#: gio/gresolver.c:455 gio/gresolver.c:615
+#: gio/gresolver.c:470 gio/gresolver.c:630
 #, c-format
 msgid "%s not implemented"
 msgstr "%s tidak diterapkan"
 
-#: gio/gresolver.c:984 gio/gresolver.c:1036
+#: gio/gresolver.c:999 gio/gresolver.c:1051
 msgid "Invalid domain"
 msgstr "Domain tidak valid"
 
@@ -3581,7 +3607,7 @@ msgstr ""
 msgid "  SECTION   An (optional) elf section name\n"
 msgstr "  SEKSI     Nama seksi elf (opsional)\n"
 
-#: gio/gresource-tool.c:565 gio/gsettings-tool.c:706
+#: gio/gresource-tool.c:565 gio/gsettings-tool.c:718
 msgid "  COMMAND   The (optional) command to explain\n"
 msgstr "  PERINTAH   Perintah (opsional) untuk dijelaskan\n"
 
@@ -3613,7 +3639,7 @@ msgstr "PATH"
 msgid "  PATH      A resource path\n"
 msgstr "  PATH      Path sumber daya\n"
 
-#: gio/gsettings-tool.c:49 gio/gsettings-tool.c:70 gio/gsettings-tool.c:911
+#: gio/gsettings-tool.c:49 gio/gsettings-tool.c:70 gio/gsettings-tool.c:923
 #, c-format
 msgid "No such schema “%s”\n"
 msgstr "Tidak ada skema \"%s\"\n"
@@ -3645,35 +3671,35 @@ msgstr "Path harus diakhiri dengan garis miring (/)\n"
 msgid "Path must not contain two adjacent slashes (//)\n"
 msgstr "Path tak boleh memuat dua slash berturutan (//)\n"
 
-#: gio/gsettings-tool.c:541
+#: gio/gsettings-tool.c:553
 msgid "The provided value is outside of the valid range\n"
 msgstr "Nilai yang diberikan diluar rentang yang valid\n"
 
-#: gio/gsettings-tool.c:548
+#: gio/gsettings-tool.c:560
 msgid "The key is not writable\n"
 msgstr "Kunci tidak dapat ditulisi\n"
 
-#: gio/gsettings-tool.c:584
+#: gio/gsettings-tool.c:596
 msgid "List the installed (non-relocatable) schemas"
 msgstr "Daftar skema (yang tak bisa dipindah) yang terpasang"
 
-#: gio/gsettings-tool.c:590
+#: gio/gsettings-tool.c:602
 msgid "List the installed relocatable schemas"
 msgstr "Daftar skema yang dapat dipindah yang terpasang"
 
-#: gio/gsettings-tool.c:596
+#: gio/gsettings-tool.c:608
 msgid "List the keys in SCHEMA"
 msgstr "Daftar kunci di SKEMA"
 
-#: gio/gsettings-tool.c:597 gio/gsettings-tool.c:603 gio/gsettings-tool.c:646
+#: gio/gsettings-tool.c:609 gio/gsettings-tool.c:615 gio/gsettings-tool.c:658
 msgid "SCHEMA[:PATH]"
 msgstr "SKEMA[:PATH]"
 
-#: gio/gsettings-tool.c:602
+#: gio/gsettings-tool.c:614
 msgid "List the children of SCHEMA"
 msgstr "Daftar anak dari SKEMA"
 
-#: gio/gsettings-tool.c:608
+#: gio/gsettings-tool.c:620
 msgid ""
 "List keys and values, recursively\n"
 "If no SCHEMA is given, list all keys\n"
@@ -3681,48 +3707,48 @@ msgstr ""
 "Daftar kunci dan nilai, secara rekursif\n"
 "Bila tak ada SKEMA diberikan, daftar semua kunci\n"
 
-#: gio/gsettings-tool.c:610
+#: gio/gsettings-tool.c:622
 msgid "[SCHEMA[:PATH]]"
 msgstr "[SKEMA[:PATH]]"
 
-#: gio/gsettings-tool.c:615
+#: gio/gsettings-tool.c:627
 msgid "Get the value of KEY"
 msgstr "Ambil nilai dari KUNCI"
 
-#: gio/gsettings-tool.c:616 gio/gsettings-tool.c:622 gio/gsettings-tool.c:628
-#: gio/gsettings-tool.c:640 gio/gsettings-tool.c:652
+#: gio/gsettings-tool.c:628 gio/gsettings-tool.c:634 gio/gsettings-tool.c:640
+#: gio/gsettings-tool.c:652 gio/gsettings-tool.c:664
 msgid "SCHEMA[:PATH] KEY"
 msgstr "SKEMA[:PATH] KUNCI"
 
-#: gio/gsettings-tool.c:621
+#: gio/gsettings-tool.c:633
 msgid "Query the range of valid values for KEY"
 msgstr "Kueri rentang nilai yang valid bagi KUNCI"
 
-#: gio/gsettings-tool.c:627
+#: gio/gsettings-tool.c:639
 msgid "Query the description for KEY"
 msgstr "Kueri deskripsi bagi KUNCI"
 
-#: gio/gsettings-tool.c:633
+#: gio/gsettings-tool.c:645
 msgid "Set the value of KEY to VALUE"
 msgstr "Menata nilai KUNCI ke NILAI"
 
-#: gio/gsettings-tool.c:634
+#: gio/gsettings-tool.c:646
 msgid "SCHEMA[:PATH] KEY VALUE"
 msgstr "SKEMA[:PATH] KUNCI NILAI"
 
-#: gio/gsettings-tool.c:639
+#: gio/gsettings-tool.c:651
 msgid "Reset KEY to its default value"
 msgstr "Menata KUNCI ke nilai bawaannya"
 
-#: gio/gsettings-tool.c:645
+#: gio/gsettings-tool.c:657
 msgid "Reset all keys in SCHEMA to their defaults"
 msgstr "Tata ulang semua kunci dalam SKEMA ke nilai baku"
 
-#: gio/gsettings-tool.c:651
+#: gio/gsettings-tool.c:663
 msgid "Check if KEY is writable"
 msgstr "Periksa apakah KUNCI dapat ditulisi"
 
-#: gio/gsettings-tool.c:657
+#: gio/gsettings-tool.c:669
 msgid ""
 "Monitor KEY for changes.\n"
 "If no KEY is specified, monitor all keys in SCHEMA.\n"
@@ -3732,11 +3758,11 @@ msgstr ""
 "Bila tak ada KUNCI yang dinyatakan, memantau semua kunci dalam SKEMA.\n"
 "Gunakan ^C untuk berhenti memantau.\n"
 
-#: gio/gsettings-tool.c:660
+#: gio/gsettings-tool.c:672
 msgid "SCHEMA[:PATH] [KEY]"
 msgstr "SKEMA[:PATH] [KUNCI]"
 
-#: gio/gsettings-tool.c:672
+#: gio/gsettings-tool.c:684
 msgid ""
 "Usage:\n"
 "  gsettings --version\n"
@@ -3783,7 +3809,7 @@ msgstr ""
 "Pakai 'gsettings help PERINTAH' untuk mendapat bantuan terrinci.\n"
 "\n"
 
-#: gio/gsettings-tool.c:696
+#: gio/gsettings-tool.c:708
 #, c-format
 msgid ""
 "Usage:\n"
@@ -3798,11 +3824,11 @@ msgstr ""
 "%s\n"
 "\n"
 
-#: gio/gsettings-tool.c:702
+#: gio/gsettings-tool.c:714
 msgid "  SCHEMADIR A directory to search for additional schemas\n"
 msgstr "  DIRSKEMA Adalah direktori tempat mencari skema tambahan\n"
 
-#: gio/gsettings-tool.c:710
+#: gio/gsettings-tool.c:722
 msgid ""
 "  SCHEMA    The name of the schema\n"
 "  PATH      The path, for relocatable schemas\n"
@@ -3810,213 +3836,213 @@ msgstr ""
 "  SKEMA     Nama skema\n"
 "  PATH      Path, bagi skema yang dapat dipindah\n"
 
-#: gio/gsettings-tool.c:715
+#: gio/gsettings-tool.c:727
 msgid "  KEY       The (optional) key within the schema\n"
 msgstr "  KUNCI     Kunci (opsional) dalam skema\n"
 
-#: gio/gsettings-tool.c:719
+#: gio/gsettings-tool.c:731
 msgid "  KEY       The key within the schema\n"
 msgstr "  KUNCI     Kunci dalam skema\n"
 
-#: gio/gsettings-tool.c:723
+#: gio/gsettings-tool.c:735
 msgid "  VALUE     The value to set\n"
 msgstr "  NILAI     Tatanan nilai\n"
 
-#: gio/gsettings-tool.c:778
+#: gio/gsettings-tool.c:790
 #, c-format
 msgid "Could not load schemas from %s: %s\n"
 msgstr "Tak bisa memuat skema dari %s: %s\n"
 
-#: gio/gsettings-tool.c:790
+#: gio/gsettings-tool.c:802
 msgid "No schemas installed\n"
 msgstr "Tidak ada skema yang terpasang\n"
 
-#: gio/gsettings-tool.c:869
+#: gio/gsettings-tool.c:881
 msgid "Empty schema name given\n"
 msgstr "Nama skema yang diberikan kosong\n"
 
-#: gio/gsettings-tool.c:924
+#: gio/gsettings-tool.c:936
 #, c-format
 msgid "No such key “%s”\n"
 msgstr "Tidak ada kunci seperti \"%s\"\n"
 
-#: gio/gsocket.c:413
+#: gio/gsocket.c:417
 msgid "Invalid socket, not initialized"
 msgstr "Soket tak valid, tak diinisialisasi"
 
-#: gio/gsocket.c:420
+#: gio/gsocket.c:424
 #, c-format
 msgid "Invalid socket, initialization failed due to: %s"
 msgstr "Soket tak valid, inisialisasi gagal karena: %s"
 
-#: gio/gsocket.c:428
+#: gio/gsocket.c:432
 msgid "Socket is already closed"
 msgstr "Soket telah ditutup"
 
-#: gio/gsocket.c:443 gio/gsocket.c:3190 gio/gsocket.c:4420 gio/gsocket.c:4478
+#: gio/gsocket.c:447 gio/gsocket.c:3194 gio/gsocket.c:4427 gio/gsocket.c:4485
 msgid "Socket I/O timed out"
 msgstr "I/O soket kehabisan waktu"
 
-#: gio/gsocket.c:578
+#: gio/gsocket.c:582
 #, c-format
 msgid "creating GSocket from fd: %s"
 msgstr "membuat GSocket dari fd: %s"
 
-#: gio/gsocket.c:607 gio/gsocket.c:671 gio/gsocket.c:678
+#: gio/gsocket.c:611 gio/gsocket.c:675 gio/gsocket.c:682
 #, c-format
 msgid "Unable to create socket: %s"
 msgstr "Tak bisa membuat soket: %s"
 
-#: gio/gsocket.c:671
+#: gio/gsocket.c:675
 msgid "Unknown family was specified"
 msgstr "Famili tak dikenal dinyatakan"
 
-#: gio/gsocket.c:678
+#: gio/gsocket.c:682
 msgid "Unknown protocol was specified"
 msgstr "Protokol tak dikenal dinyatakan"
 
-#: gio/gsocket.c:1169
+#: gio/gsocket.c:1173
 #, c-format
 msgid "Cannot use datagram operations on a non-datagram socket."
 msgstr "Tak bisa memakai operasi datagram pada suatu soket bukan datagram."
 
-#: gio/gsocket.c:1186
+#: gio/gsocket.c:1190
 #, c-format
 msgid "Cannot use datagram operations on a socket with a timeout set."
 msgstr ""
 "Tak bisa memakai operasi datagram pada suatu soket yang tenggang waktunya "
 "ditata."
 
-#: gio/gsocket.c:1993
+#: gio/gsocket.c:1997
 #, c-format
 msgid "could not get local address: %s"
 msgstr "tak bisa mendapat alamat lokal: %s"
 
-#: gio/gsocket.c:2039
+#: gio/gsocket.c:2043
 #, c-format
 msgid "could not get remote address: %s"
 msgstr "tak bisa mendapat alamat jauh: %s"
 
-#: gio/gsocket.c:2105
+#: gio/gsocket.c:2109
 #, c-format
 msgid "could not listen: %s"
 msgstr "tak bisa mendengarkan: %s"
 
-#: gio/gsocket.c:2209
+#: gio/gsocket.c:2213
 #, c-format
 msgid "Error binding to address %s: %s"
 msgstr "Galat saat mengikat ke alamat %s: %s"
 
-#: gio/gsocket.c:2385 gio/gsocket.c:2422 gio/gsocket.c:2532 gio/gsocket.c:2557
-#: gio/gsocket.c:2620 gio/gsocket.c:2678 gio/gsocket.c:2696
+#: gio/gsocket.c:2389 gio/gsocket.c:2426 gio/gsocket.c:2536 gio/gsocket.c:2561
+#: gio/gsocket.c:2624 gio/gsocket.c:2682 gio/gsocket.c:2700
 #, c-format
 msgid "Error joining multicast group: %s"
 msgstr "Galat saat bergabung dengan grup multicast: %s"
 
-#: gio/gsocket.c:2386 gio/gsocket.c:2423 gio/gsocket.c:2533 gio/gsocket.c:2558
-#: gio/gsocket.c:2621 gio/gsocket.c:2679 gio/gsocket.c:2697
+#: gio/gsocket.c:2390 gio/gsocket.c:2427 gio/gsocket.c:2537 gio/gsocket.c:2562
+#: gio/gsocket.c:2625 gio/gsocket.c:2683 gio/gsocket.c:2701
 #, c-format
 msgid "Error leaving multicast group: %s"
 msgstr "Galat saat meninggalkan grup multicast: %s"
 
-#: gio/gsocket.c:2387
+#: gio/gsocket.c:2391
 msgid "No support for source-specific multicast"
 msgstr "Tak ada dukungan bagi multicast spesifik sumber"
 
-#: gio/gsocket.c:2534
+#: gio/gsocket.c:2538
 msgid "Unsupported socket family"
 msgstr "Keluarga soket tak didukung"
 
-#: gio/gsocket.c:2559
+#: gio/gsocket.c:2563
 msgid "source-specific not an IPv4 address"
 msgstr "spesifik sumber bukan alamat IPv4"
 
-#: gio/gsocket.c:2583
+#: gio/gsocket.c:2587
 #, c-format
 msgid "Interface name too long"
 msgstr "Nama antarmuka terlalu panjang"
 
-#: gio/gsocket.c:2596 gio/gsocket.c:2646
+#: gio/gsocket.c:2600 gio/gsocket.c:2650
 #, c-format
 msgid "Interface not found: %s"
 msgstr "Antarmuka tidak ditemukan: %s"
 
-#: gio/gsocket.c:2622
+#: gio/gsocket.c:2626
 msgid "No support for IPv4 source-specific multicast"
 msgstr "Tak ada dukungan bagi multicast spesifik sumber IPV4"
 
-#: gio/gsocket.c:2680
+#: gio/gsocket.c:2684
 msgid "No support for IPv6 source-specific multicast"
 msgstr "Tak ada dukungan bagi multicast spesifik sumber IPV6"
 
-#: gio/gsocket.c:2889
+#: gio/gsocket.c:2893
 #, c-format
 msgid "Error accepting connection: %s"
 msgstr "Galat saat menerima sambungan: %s"
 
-#: gio/gsocket.c:3015
+#: gio/gsocket.c:3019
 msgid "Connection in progress"
 msgstr "Penyambungan tengah berlangsung"
 
-#: gio/gsocket.c:3066
+#: gio/gsocket.c:3070
 msgid "Unable to get pending error: "
 msgstr "Tak bisa mendapat kesalahan yang tertunda: "
 
-#: gio/gsocket.c:3255
+#: gio/gsocket.c:3259
 #, c-format
 msgid "Error receiving data: %s"
 msgstr "Galat saat menerima data: %s"
 
-#: gio/gsocket.c:3452
+#: gio/gsocket.c:3456
 #, c-format
 msgid "Error sending data: %s"
 msgstr "Galat saat mengirim data: %s"
 
-#: gio/gsocket.c:3639
+#: gio/gsocket.c:3643
 #, c-format
 msgid "Unable to shutdown socket: %s"
 msgstr "Tak bisa mematikan soket: %s"
 
-#: gio/gsocket.c:3720
+#: gio/gsocket.c:3724
 #, c-format
 msgid "Error closing socket: %s"
 msgstr "Galat saat menutup soket: %s"
 
-#: gio/gsocket.c:4413
+#: gio/gsocket.c:4420
 #, c-format
 msgid "Waiting for socket condition: %s"
 msgstr "Menunggu kondisi soket: %s"
 
-#: gio/gsocket.c:4804 gio/gsocket.c:4820 gio/gsocket.c:4833
+#: gio/gsocket.c:4810 gio/gsocket.c:4826 gio/gsocket.c:4839
 #, c-format
 msgid "Unable to send message: %s"
 msgstr "Tak bisa mengirim pesan: %s"
 
-#: gio/gsocket.c:4805 gio/gsocket.c:4821 gio/gsocket.c:4834
+#: gio/gsocket.c:4811 gio/gsocket.c:4827 gio/gsocket.c:4840
 msgid "Message vectors too large"
 msgstr "Vektor pesan terlalu besar"
 
-#: gio/gsocket.c:4850 gio/gsocket.c:4852 gio/gsocket.c:4999 gio/gsocket.c:5084
-#: gio/gsocket.c:5262 gio/gsocket.c:5302 gio/gsocket.c:5304
+#: gio/gsocket.c:4856 gio/gsocket.c:4858 gio/gsocket.c:5005 gio/gsocket.c:5090
+#: gio/gsocket.c:5268 gio/gsocket.c:5308 gio/gsocket.c:5310
 #, c-format
 msgid "Error sending message: %s"
 msgstr "Galat saat menerima pesan: %s"
 
-#: gio/gsocket.c:5026
+#: gio/gsocket.c:5032
 msgid "GSocketControlMessage not supported on Windows"
 msgstr "GSocketControlMessage tak didukung pada Windows"
 
-#: gio/gsocket.c:5495 gio/gsocket.c:5571 gio/gsocket.c:5797
+#: gio/gsocket.c:5505 gio/gsocket.c:5581 gio/gsocket.c:5807
 #, c-format
 msgid "Error receiving message: %s"
 msgstr "Galat saat menerima pesan: %s"
 
-#: gio/gsocket.c:6070 gio/gsocket.c:6081 gio/gsocket.c:6127
+#: gio/gsocket.c:6090 gio/gsocket.c:6101 gio/gsocket.c:6164
 #, c-format
 msgid "Unable to read socket credentials: %s"
 msgstr "Tak bisa membaca kredensial soket: %s"
 
-#: gio/gsocket.c:6136
+#: gio/gsocket.c:6173
 msgid "g_socket_get_credentials not implemented for this OS"
 msgstr "g_socket_get_credentials tidak diimplementasikan untuk OS ini"
 
@@ -4034,11 +4060,11 @@ msgstr "Tak bisa menyambung ke %s: "
 msgid "Could not connect: "
 msgstr "Tak bisa menyambung: "
 
-#: gio/gsocketclient.c:1162 gio/gsocketclient.c:1749
+#: gio/gsocketclient.c:1202 gio/gsocketclient.c:1793
 msgid "Proxying over a non-TCP connection is not supported."
 msgstr "Proksi melalui koneksi bukan TCP tidak didukung."
 
-#: gio/gsocketclient.c:1194 gio/gsocketclient.c:1778
+#: gio/gsocketclient.c:1234 gio/gsocketclient.c:1822
 #, c-format
 msgid "Proxy protocol “%s” is not supported."
 msgstr "Protokol proksi \"%s\" tidak didukung."
@@ -4136,11 +4162,11 @@ msgstr "Proksi SOCSKv5 tidak mendukung jenis alamat yang diberikan."
 msgid "Unknown SOCKSv5 proxy error."
 msgstr "Galat tak dikenal pada proksi SOCKSv5."
 
-#: gio/gtestdbus.c:612 glib/gspawn-win32.c:311
+#: gio/gtestdbus.c:612 glib/gspawn-win32.c:314
 #, c-format
 msgid "Failed to create pipe for communicating with child process (%s)"
 msgstr ""
-"Gagal saat membuat pipe untuk sarana  komunikasi dengan proses child (%s)"
+"Gagal saat membuat pipe untuk sarana komunikasi dengan proses anak (%s)"
 
 #: gio/gtestdbus.c:619
 #, c-format
@@ -4161,44 +4187,66 @@ msgstr "Tak ada alamat valid yang ditemukan"
 msgid "Error reverse-resolving “%s”: %s"
 msgstr "Galat saat mengurai balik \"%s\": %s"
 
-#: gio/gthreadedresolver.c:676 gio/gthreadedresolver.c:755
-#: gio/gthreadedresolver.c:853 gio/gthreadedresolver.c:903
+#. Translators: the placeholder is a DNS record type, such as ‘MX’ or ‘SRV’
+#: gio/gthreadedresolver.c:550 gio/gthreadedresolver.c:572
+#: gio/gthreadedresolver.c:610 gio/gthreadedresolver.c:657
+#: gio/gthreadedresolver.c:686 gio/gthreadedresolver.c:698
+#, c-format
+msgid "Error parsing DNS %s record: malformed DNS packet"
+msgstr "Galat saat mengurai record %s DNS: paket DNS salah bentuk"
+
+#: gio/gthreadedresolver.c:756 gio/gthreadedresolver.c:893
+#: gio/gthreadedresolver.c:991 gio/gthreadedresolver.c:1041
 #, c-format
 msgid "No DNS record of the requested type for “%s”"
 msgstr "Tidak ada record DNS dengan tipe yang diminta bagi \"%s\""
 
-#: gio/gthreadedresolver.c:681 gio/gthreadedresolver.c:858
+#: gio/gthreadedresolver.c:761 gio/gthreadedresolver.c:996
 #, c-format
 msgid "Temporarily unable to resolve “%s”"
 msgstr "Sementara tidak dapat mengurai \"%s\""
 
-#: gio/gthreadedresolver.c:686 gio/gthreadedresolver.c:863
-#: gio/gthreadedresolver.c:973
+#: gio/gthreadedresolver.c:766 gio/gthreadedresolver.c:1001
+#: gio/gthreadedresolver.c:1111
 #, c-format
 msgid "Error resolving “%s”"
 msgstr "Galat saat mengurai \"%s\""
 
-#: gio/gtlscertificate.c:431
+#: gio/gthreadedresolver.c:780 gio/gthreadedresolver.c:804
+#: gio/gthreadedresolver.c:829 gio/gthreadedresolver.c:844
+msgid "Malformed DNS packet"
+msgstr "Paket DNS salah bentuk"
+
+#: gio/gthreadedresolver.c:886
+#, c-format
+msgid "Failed to parse DNS response for “%s”: "
+msgstr "Gagal mengurai respon DNS untuk \"%s\": "
+
+#: gio/gtlscertificate.c:478
 msgid "No PEM-encoded private key found"
 msgstr "Tak ditemukan sertifikat terenkode-PEM"
 
-#: gio/gtlscertificate.c:441
+#: gio/gtlscertificate.c:488
 msgid "Cannot decrypt PEM-encoded private key"
 msgstr "Tak bisa mendekripsi kunci privat terenkode-PEM"
 
-#: gio/gtlscertificate.c:452
+#: gio/gtlscertificate.c:499
 msgid "Could not parse PEM-encoded private key"
 msgstr "Tak bisa mengurai kunci privat terenkode-PEM"
 
-#: gio/gtlscertificate.c:479
+#: gio/gtlscertificate.c:526
 msgid "No PEM-encoded certificate found"
 msgstr "Tak ditemukan sertifika terenkode-PEM"
 
-#: gio/gtlscertificate.c:488
+#: gio/gtlscertificate.c:535
 msgid "Could not parse PEM-encoded certificate"
 msgstr "Tak bisa mengurai sertifikat terenkode-PEM"
 
-#: gio/gtlscertificate.c:844
+#: gio/gtlscertificate.c:796
+msgid "The current TLS backend does not support PKCS #12"
+msgstr "Backend TLS saat ini tidak mendukung PKCS #12"
+
+#: gio/gtlscertificate.c:1013
 msgid "This GTlsBackend does not support creating PKCS #11 certificates"
 msgstr "GTlsBackend ini tidak mendukung pembuatan sertifikat PKCS #11"
 
@@ -4224,53 +4272,61 @@ msgstr ""
 msgid "The password entered is incorrect."
 msgstr "Sandi yang dimasukkan salah."
 
-#: gio/gunixconnection.c:166 gio/gunixconnection.c:579
+#: gio/gunixconnection.c:125
+msgid "Sending FD is not supported"
+msgstr "Mengirim FD tidak didukung"
+
+#: gio/gunixconnection.c:178 gio/gunixconnection.c:596
 #, c-format
 msgid "Expecting 1 control message, got %d"
 msgid_plural "Expecting 1 control message, got %d"
 msgstr[0] "Mengharapkan 1 pesan kendali, memperoleh %d"
 
-#: gio/gunixconnection.c:182 gio/gunixconnection.c:591
+#: gio/gunixconnection.c:194 gio/gunixconnection.c:608
 msgid "Unexpected type of ancillary data"
 msgstr "Tipe yang tak diharapkan dari data ancillary"
 
-#: gio/gunixconnection.c:200
+#: gio/gunixconnection.c:212
 #, c-format
 msgid "Expecting one fd, but got %d\n"
 msgid_plural "Expecting one fd, but got %d\n"
 msgstr[0] "Mengharapkan satu fd, tapi mendapat %d\n"
 
-#: gio/gunixconnection.c:219
+#: gio/gunixconnection.c:231
 msgid "Received invalid fd"
 msgstr "Menerima fd yang tak valid"
 
-#: gio/gunixconnection.c:363
+#: gio/gunixconnection.c:238
+msgid "Receiving FD is not supported"
+msgstr "Menerima FD tidak didukung"
+
+#: gio/gunixconnection.c:380
 msgid "Error sending credentials: "
 msgstr "Galat saat mengirim kredensial: "
 
-#: gio/gunixconnection.c:520
+#: gio/gunixconnection.c:537
 #, c-format
 msgid "Error checking if SO_PASSCRED is enabled for socket: %s"
 msgstr "Galat ketika memeriksa apakah SO_PASSCRED diaktifkan bagi soket: %s"
 
-#: gio/gunixconnection.c:536
+#: gio/gunixconnection.c:553
 #, c-format
 msgid "Error enabling SO_PASSCRED: %s"
 msgstr "Galat saat mengaktifkan SO_PASSCRED: %s"
 
-#: gio/gunixconnection.c:565
+#: gio/gunixconnection.c:582
 msgid ""
 "Expecting to read a single byte for receiving credentials but read zero bytes"
 msgstr ""
 "Berharap membaca bita tunggal untuk penerimaan kredensial tapi membaca nol "
 "bita"
 
-#: gio/gunixconnection.c:605
+#: gio/gunixconnection.c:622
 #, c-format
 msgid "Not expecting control message, but got %d"
 msgstr "Tak mengharapkan pesan kendali, tapi memperoleh %d"
 
-#: gio/gunixconnection.c:630
+#: gio/gunixconnection.c:647
 #, c-format
 msgid "Error while disabling SO_PASSCRED: %s"
 msgstr "Galat ketika mematikan SO_PASSCRED: %s"
@@ -4286,7 +4342,7 @@ msgstr "Galat saat membaca dari descriptor berkas: %s"
 msgid "Error closing file descriptor: %s"
 msgstr "Galat saat menutup descriptor berkas: %s"
 
-#: gio/gunixmounts.c:2785 gio/gunixmounts.c:2838
+#: gio/gunixmounts.c:2809 gio/gunixmounts.c:2862
 msgid "Filesystem root"
 msgstr "Akar sistem berkas"
 
@@ -4297,7 +4353,7 @@ msgstr "Akar sistem berkas"
 msgid "Error writing to file descriptor: %s"
 msgstr "Galat saat menulis ke descriptor berkas: %s"
 
-#: gio/gunixsocketaddress.c:244
+#: gio/gunixsocketaddress.c:251
 msgid "Abstract UNIX domain socket addresses not supported on this system"
 msgstr "Alamat soket domain UNIX abstrak tak didukung pada sistem ini"
 
@@ -4447,8 +4503,8 @@ msgstr "Gagal mengembangkan baris eksekusi \"%s\" dengan URI \"%s\""
 msgid "Unrepresentable character in conversion input"
 msgstr "Karakter yang tidak dapat diterima dalam masukan konversi"
 
-#: glib/gconvert.c:495 glib/gutf8.c:871 glib/gutf8.c:1083 glib/gutf8.c:1220
-#: glib/gutf8.c:1324
+#: glib/gconvert.c:495 glib/gutf8.c:886 glib/gutf8.c:1099 glib/gutf8.c:1236
+#: glib/gutf8.c:1340
 msgid "Partial character sequence at end of input"
 msgstr "Rangkaian karakter sebagian pada akhir input"
 
@@ -5011,15 +5067,15 @@ msgstr "Kanal terputus pada karakter sebagian"
 msgid "Can’t do a raw read in g_io_channel_read_to_end"
 msgstr "Tak bisa melakukan pembacaan mentah dalam g_io_channel_read_to_end"
 
-#: glib/gkeyfile.c:791
+#: glib/gkeyfile.c:794
 msgid "Valid key file could not be found in search dirs"
 msgstr "Berkas kunci yang valid tak ditemukan pada direktori yang dicari"
 
-#: glib/gkeyfile.c:828
+#: glib/gkeyfile.c:831
 msgid "Not a regular file"
 msgstr "Bukan berkas biasa"
 
-#: glib/gkeyfile.c:1283
+#: glib/gkeyfile.c:1289
 #, c-format
 msgid ""
 "Key file contains line “%s” which is not a key-value pair, group, or comment"
@@ -5027,51 +5083,51 @@ msgstr ""
 "Berkas kunci mengandung baris \"%s\" yang bukan suatu pasangan kunci-nilai, "
 "kelompok, atau komentar"
 
-#: glib/gkeyfile.c:1340
+#: glib/gkeyfile.c:1346
 #, c-format
 msgid "Invalid group name: %s"
 msgstr "Nama grup tak valid: %s"
 
-#: glib/gkeyfile.c:1362
+#: glib/gkeyfile.c:1370
 msgid "Key file does not start with a group"
 msgstr "Berkas kunci tidak mulai dengan sebuah kelompok"
 
-#: glib/gkeyfile.c:1388
+#: glib/gkeyfile.c:1394
 #, c-format
-msgid "Invalid key name: %s"
-msgstr "Nama kunci tak valid: %s"
+msgid "Invalid key name: %.*s"
+msgstr "Nama kunci tak valid: %.*s"
 
-#: glib/gkeyfile.c:1415
+#: glib/gkeyfile.c:1422
 #, c-format
 msgid "Key file contains unsupported encoding “%s”"
 msgstr "Berkas kunci mengandung enkoding \"%s\" yang tidak didukung"
 
-#: glib/gkeyfile.c:1664 glib/gkeyfile.c:1837 glib/gkeyfile.c:3287
-#: glib/gkeyfile.c:3351 glib/gkeyfile.c:3481 glib/gkeyfile.c:3613
-#: glib/gkeyfile.c:3759 glib/gkeyfile.c:3994 glib/gkeyfile.c:4061
+#: glib/gkeyfile.c:1677 glib/gkeyfile.c:1850 glib/gkeyfile.c:3297
+#: glib/gkeyfile.c:3361 glib/gkeyfile.c:3491 glib/gkeyfile.c:3623
+#: glib/gkeyfile.c:3769 glib/gkeyfile.c:4004 glib/gkeyfile.c:4071
 #, c-format
 msgid "Key file does not have group “%s”"
 msgstr "Berkas kunci tidak memiliki grup \"%s\""
 
-#: glib/gkeyfile.c:1792
+#: glib/gkeyfile.c:1805
 #, c-format
 msgid "Key file does not have key “%s” in group “%s”"
 msgstr "Berkas kunci tidak memiliki kunci \"%s\" dalam kelompok \"%s\""
 
-#: glib/gkeyfile.c:1954 glib/gkeyfile.c:2070
+#: glib/gkeyfile.c:1967 glib/gkeyfile.c:2083
 #, c-format
 msgid "Key file contains key “%s” with value “%s” which is not UTF-8"
 msgstr ""
 "Berkas kunci mengandung kunci \"%s\" dengan nilai \"%s\" yang bukan UTF-8"
 
-#: glib/gkeyfile.c:1974 glib/gkeyfile.c:2090 glib/gkeyfile.c:2529
+#: glib/gkeyfile.c:1987 glib/gkeyfile.c:2103 glib/gkeyfile.c:2542
 #, c-format
 msgid ""
 "Key file contains key “%s” which has a value that cannot be interpreted."
 msgstr ""
 "Berkas kunci mengandung kunci \"%s\" yang nilainya tidak dapat diterjemahkan."
 
-#: glib/gkeyfile.c:2747 glib/gkeyfile.c:3116
+#: glib/gkeyfile.c:2757 glib/gkeyfile.c:3126
 #, c-format
 msgid ""
 "Key file contains key “%s” in group “%s” which has a value that cannot be "
@@ -5080,36 +5136,36 @@ msgstr ""
 "Berkas kunci mengandung kunci \"%s\" dalam grup \"%s\" yang nilainya tidak "
 "dapat diterjemahkan."
 
-#: glib/gkeyfile.c:2825 glib/gkeyfile.c:2902
+#: glib/gkeyfile.c:2835 glib/gkeyfile.c:2912
 #, c-format
 msgid "Key “%s” in group “%s” has value “%s” where %s was expected"
 msgstr "Kunci \"%s\" dalam grup \"%s\" bernilai \"%s\" padahal diharapkan %s"
 
-#: glib/gkeyfile.c:4304
+#: glib/gkeyfile.c:4324
 msgid "Key file contains escape character at end of line"
 msgstr "Berkas kunci mengandung karakter escape pada akhir baris"
 
-#: glib/gkeyfile.c:4326
+#: glib/gkeyfile.c:4346
 #, c-format
 msgid "Key file contains invalid escape sequence “%s”"
 msgstr "Berkas kunci memuat urutan escape \"%s\" yang tidak valid"
 
-#: glib/gkeyfile.c:4470
+#: glib/gkeyfile.c:4491
 #, c-format
 msgid "Value “%s” cannot be interpreted as a number."
 msgstr "Nilai \"%s\" tidak bisa diterjemahkan sebagai sebuah bilangan."
 
-#: glib/gkeyfile.c:4484
+#: glib/gkeyfile.c:4505
 #, c-format
 msgid "Integer value “%s” out of range"
 msgstr "Nilai bilangan bulat \"%s\" di luar jangkauan"
 
-#: glib/gkeyfile.c:4517
+#: glib/gkeyfile.c:4538
 #, c-format
 msgid "Value “%s” cannot be interpreted as a float number."
 msgstr "Nilai \"%s\" tidak dapat diterjemahkan sebagai sebuah bilangan float."
 
-#: glib/gkeyfile.c:4556
+#: glib/gkeyfile.c:4577
 #, c-format
 msgid "Value “%s” cannot be interpreted as a boolean."
 msgstr "Nilai \"%s\" tidak dapat diterjemahkan sebagai sebuah boolean."
@@ -5406,7 +5462,7 @@ msgstr "Galat saat mengurai opsi %s"
 msgid "Missing argument for %s"
 msgstr "Argumen untuk %s tidak lengkap"
 
-#: glib/goption.c:2185
+#: glib/goption.c:2184
 #, c-format
 msgid "Unknown option %s"
 msgstr "Pilihan tidak diketahui %s"
@@ -5809,123 +5865,133 @@ msgstr "Teksnya kosong (atau hanya berisi whitespace)"
 #: glib/gspawn.c:310
 #, c-format
 msgid "Failed to read data from child process (%s)"
-msgstr "Gagal saat membaca data dari proses child (%s)"
+msgstr "Gagal saat membaca data dari proses anak (%s)"
 
-#: glib/gspawn.c:461
+#: glib/gspawn.c:462
 #, c-format
 msgid "Unexpected error in reading data from a child process (%s)"
 msgstr "Galat tak terduga dalam membaca data dari proses anak (%s)"
 
-#: glib/gspawn.c:546
+#: glib/gspawn.c:547
 #, c-format
 msgid "Unexpected error in waitpid() (%s)"
 msgstr "Terjadi galat pada fungsi waitpid() (%s)"
 
-#: glib/gspawn.c:1166 glib/gspawn-win32.c:1407
+#: glib/gspawn.c:1175 glib/gspawn-win32.c:1438
 #, c-format
 msgid "Child process exited with code %ld"
 msgstr "Proses anak keluar dengan kode %ld"
 
-#: glib/gspawn.c:1174
+#: glib/gspawn.c:1183
 #, c-format
 msgid "Child process killed by signal %ld"
 msgstr "Proses anak dimatikan oleh sinyal %ld"
 
-#: glib/gspawn.c:1181
+#: glib/gspawn.c:1190
 #, c-format
 msgid "Child process stopped by signal %ld"
 msgstr "Proses anak dihentikan oleh sinyal %ld"
 
-#: glib/gspawn.c:1188
+#: glib/gspawn.c:1197
 #, c-format
 msgid "Child process exited abnormally"
 msgstr "Proses anak keluar secara tak normal"
 
-#: glib/gspawn.c:1864 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
+#: glib/gspawn.c:1890 glib/gspawn-win32.c:353 glib/gspawn-win32.c:361
 #, c-format
 msgid "Failed to read from child pipe (%s)"
-msgstr "Gagal saat membaca dari pipe child (%s)"
+msgstr "Gagal saat membaca dari pipe anak (%s)"
 
-#: glib/gspawn.c:2166
+#: glib/gspawn.c:2253
 #, c-format
 msgid "Failed to spawn child process “%s” (%s)"
 msgstr "Gagal menelurkan proses anak \"%s\" (%s)"
 
-#: glib/gspawn.c:2283
+#: glib/gspawn.c:2370
 #, c-format
 msgid "Failed to fork (%s)"
 msgstr "Gagal saat fork (%s)"
 
-#: glib/gspawn.c:2443 glib/gspawn-win32.c:381
+#: glib/gspawn.c:2530 glib/gspawn-win32.c:384
 #, c-format
 msgid "Failed to change to directory “%s” (%s)"
 msgstr "Gagal pindah ke direktori \"%s\" (%s)"
 
-#: glib/gspawn.c:2453
+#: glib/gspawn.c:2540
 #, c-format
 msgid "Failed to execute child process “%s” (%s)"
 msgstr "Gagal menjalankan proses anak \"%s\" (%s)"
 
-#: glib/gspawn.c:2463
+#: glib/gspawn.c:2550
 #, c-format
-msgid "Failed to redirect output or input of child process (%s)"
-msgstr "Gagal mengarahkan output atau input pada proses child (%s)"
+msgid "Failed to open file to remap file descriptor (%s)"
+msgstr "Gagal membuka berkas untuk memetakan ulang deskriptor berkas (%s)"
 
-#: glib/gspawn.c:2472
+#: glib/gspawn.c:2558
+#, c-format
+msgid "Failed to duplicate file descriptor for child process (%s)"
+msgstr "Gagal menduplikasi deskriptor berkas untuk proses anak (%s)"
+
+#: glib/gspawn.c:2567
 #, c-format
 msgid "Failed to fork child process (%s)"
-msgstr "Gagal saat fork proses child (%s)"
+msgstr "Gagal saat fork proses anak (%s)"
 
-#: glib/gspawn.c:2480
+#: glib/gspawn.c:2575
 #, c-format
 msgid "Failed to close file descriptor for child process (%s)"
 msgstr "Gagal menutup deskriptor berkas untuk proses anak (%s)"
 
-#: glib/gspawn.c:2488
+#: glib/gspawn.c:2583
 #, c-format
 msgid "Unknown error executing child process “%s”"
 msgstr "Galat tak dikenal ketika menjalankan proses anak \"%s\""
 
-#: glib/gspawn.c:2512
+#: glib/gspawn.c:2607
 #, c-format
 msgid "Failed to read enough data from child pid pipe (%s)"
-msgstr "Gagal saat membaca data yang dibutuhkan dai pipe pid child (%s)"
+msgstr "Gagal saat membaca data yang dibutuhkan dai pipe pid anak (%s)"
 
-#: glib/gspawn-win32.c:294
+#: glib/gspawn-win32.c:297
 msgid "Failed to read data from child process"
-msgstr "Gagal untuk membaca data dari proses child"
+msgstr "Gagal untuk membaca data dari proses anak"
 
-#: glib/gspawn-win32.c:387 glib/gspawn-win32.c:392 glib/gspawn-win32.c:511
+#: glib/gspawn-win32.c:390 glib/gspawn-win32.c:395 glib/gspawn-win32.c:521
 #, c-format
 msgid "Failed to execute child process (%s)"
-msgstr "Gagal saat menjalankan proses child (%s)"
+msgstr "Gagal saat menjalankan proses anak (%s)"
+
+#: glib/gspawn-win32.c:400
+#, c-format
+msgid "Failed to dup() in child process (%s)"
+msgstr "Gagal dup() dalam proses anak (%s)"
 
-#: glib/gspawn-win32.c:461
+#: glib/gspawn-win32.c:471
 #, c-format
 msgid "Invalid program name: %s"
 msgstr "Nama program salah: %s"
 
-#: glib/gspawn-win32.c:471 glib/gspawn-win32.c:779
+#: glib/gspawn-win32.c:481 glib/gspawn-win32.c:807
 #, c-format
 msgid "Invalid string in argument vector at %d: %s"
 msgstr "String tidak benar pada vektor argumen pada %d: %s"
 
-#: glib/gspawn-win32.c:482 glib/gspawn-win32.c:794
+#: glib/gspawn-win32.c:492 glib/gspawn-win32.c:823
 #, c-format
 msgid "Invalid string in environment: %s"
 msgstr "String tidak benar pada variabel lingkungan: %s"
 
-#: glib/gspawn-win32.c:775
+#: glib/gspawn-win32.c:803
 #, c-format
 msgid "Invalid working directory: %s"
 msgstr "Direktori aktif salah: %s"
 
-#: glib/gspawn-win32.c:837
+#: glib/gspawn-win32.c:868
 #, c-format
 msgid "Failed to execute helper program (%s)"
 msgstr "Gagal saat menjalankan program bantuan (%s)"
 
-#: glib/gspawn-win32.c:1064
+#: glib/gspawn-win32.c:1096
 msgid ""
 "Unexpected error in g_io_channel_win32_poll() reading data from a child "
 "process"
@@ -5933,21 +5999,21 @@ msgstr ""
 "Terjadi galat pada g_io_channel_win32_poll() ketika membaca data dari anak "
 "proses"
 
-#: glib/gstrfuncs.c:3345 glib/gstrfuncs.c:3447
+#: glib/gstrfuncs.c:3351 glib/gstrfuncs.c:3453
 msgid "Empty string is not a number"
 msgstr "String kosong bukan angka"
 
-#: glib/gstrfuncs.c:3369
+#: glib/gstrfuncs.c:3375
 #, c-format
 msgid "“%s” is not a signed number"
 msgstr "\"%s\" bukan bilangan bertanda"
 
-#: glib/gstrfuncs.c:3379 glib/gstrfuncs.c:3483
+#: glib/gstrfuncs.c:3385 glib/gstrfuncs.c:3489
 #, c-format
 msgid "Number “%s” is out of bounds [%s, %s]"
 msgstr "Nomor \"%s\" berada di luar batas [%s, %s]"
 
-#: glib/gstrfuncs.c:3473
+#: glib/gstrfuncs.c:3479
 #, c-format
 msgid "“%s” is not an unsigned number"
 msgstr "\"%s\" bukan bilangan tak bertanda"
@@ -6008,188 +6074,188 @@ msgstr "URI tidak absolut, dan tidak ada dasar URI yang disediakan"
 msgid "Missing ‘=’ and parameter value"
 msgstr "'=' dan nilai parameter tidak ada"
 
-#: glib/gutf8.c:817
+#: glib/gutf8.c:832
 msgid "Failed to allocate memory"
 msgstr "Gagal mengalokasikan memori"
 
-#: glib/gutf8.c:950
+#: glib/gutf8.c:965
 msgid "Character out of range for UTF-8"
 msgstr "Karakter di luar jangkauan UTF-8"
 
-#: glib/gutf8.c:1051 glib/gutf8.c:1060 glib/gutf8.c:1190 glib/gutf8.c:1199
-#: glib/gutf8.c:1338 glib/gutf8.c:1435
+#: glib/gutf8.c:1067 glib/gutf8.c:1076 glib/gutf8.c:1206 glib/gutf8.c:1215
+#: glib/gutf8.c:1354 glib/gutf8.c:1451
 msgid "Invalid sequence in conversion input"
 msgstr "Rangkaian input konversi salah"
 
-#: glib/gutf8.c:1349 glib/gutf8.c:1446
+#: glib/gutf8.c:1365 glib/gutf8.c:1462
 msgid "Character out of range for UTF-16"
 msgstr "Karakter di luar jangkauan UTF-16"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2770
+#: glib/gutils.c:2849
 #, c-format
 msgid "%.1f kB"
 msgstr "%.1f kB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2772
+#: glib/gutils.c:2851
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2774
+#: glib/gutils.c:2853
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2776
+#: glib/gutils.c:2855
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2778
+#: glib/gutils.c:2857
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2780
+#: glib/gutils.c:2859
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2784
+#: glib/gutils.c:2863
 #, c-format
 msgid "%.1f KiB"
 msgstr "%.1f KiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2786
+#: glib/gutils.c:2865
 #, c-format
 msgid "%.1f MiB"
 msgstr "%.1f MiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2788
+#: glib/gutils.c:2867
 #, c-format
 msgid "%.1f GiB"
 msgstr "%.1f GiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2790
+#: glib/gutils.c:2869
 #, c-format
 msgid "%.1f TiB"
 msgstr "%.1f TiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2792
+#: glib/gutils.c:2871
 #, c-format
 msgid "%.1f PiB"
 msgstr "%.1f PiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2794
+#: glib/gutils.c:2873
 #, c-format
 msgid "%.1f EiB"
 msgstr "%.1f EiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2798
+#: glib/gutils.c:2877
 #, c-format
 msgid "%.1f kb"
 msgstr "%.1f kb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2800
+#: glib/gutils.c:2879
 #, c-format
 msgid "%.1f Mb"
 msgstr "%.1f Mb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2802
+#: glib/gutils.c:2881
 #, c-format
 msgid "%.1f Gb"
 msgstr "%.1f Gb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2804
+#: glib/gutils.c:2883
 #, c-format
 msgid "%.1f Tb"
 msgstr "%.1f Tb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2806
+#: glib/gutils.c:2885
 #, c-format
 msgid "%.1f Pb"
 msgstr "%.1f Pb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2808
+#: glib/gutils.c:2887
 #, c-format
 msgid "%.1f Eb"
 msgstr "%.1f Eb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2812
+#: glib/gutils.c:2891
 #, c-format
 msgid "%.1f Kib"
 msgstr "%.1f Kib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2814
+#: glib/gutils.c:2893
 #, c-format
 msgid "%.1f Mib"
 msgstr "%.1f Mib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2816
+#: glib/gutils.c:2895
 #, c-format
 msgid "%.1f Gib"
 msgstr "%.1f Gib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2818
+#: glib/gutils.c:2897
 #, c-format
 msgid "%.1f Tib"
 msgstr "%.1f Tib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2820
+#: glib/gutils.c:2899
 #, c-format
 msgid "%.1f Pib"
 msgstr "%.1f Pib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2822
+#: glib/gutils.c:2901
 #, c-format
 msgid "%.1f Eib"
 msgstr "%.1f Eib"
 
-#: glib/gutils.c:2856 glib/gutils.c:2973
+#: glib/gutils.c:2935 glib/gutils.c:3052
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
 msgstr[0] "%u bita"
 
-#: glib/gutils.c:2860
+#: glib/gutils.c:2939
 #, c-format
 msgid "%u bit"
 msgid_plural "%u bits"
 msgstr[0] "%u bita"
 
 #. Translators: the %s in "%s bytes" will always be replaced by a number.
-#: glib/gutils.c:2927
+#: glib/gutils.c:3006
 #, c-format
 msgid "%s byte"
 msgid_plural "%s bytes"
 msgstr[0] "%s bita"
 
 #. Translators: the %s in "%s bits" will always be replaced by a number.
-#: glib/gutils.c:2932
+#: glib/gutils.c:3011
 #, c-format
 msgid "%s bit"
 msgid_plural "%s bits"
@@ -6200,32 +6266,32 @@ msgstr[0] "%s bita"
 #. * compatibility.  Users will not see this string unless a program is using this deprecated function.
 #. * Please translate as literally as possible.
 #.
-#: glib/gutils.c:2986
+#: glib/gutils.c:3065
 #, c-format
 msgid "%.1f KB"
 msgstr "%.1f KB"
 
-#: glib/gutils.c:2991
+#: glib/gutils.c:3070
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
-#: glib/gutils.c:2996
+#: glib/gutils.c:3075
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
-#: glib/gutils.c:3001
+#: glib/gutils.c:3080
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
-#: glib/gutils.c:3006
+#: glib/gutils.c:3085
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
-#: glib/gutils.c:3011
+#: glib/gutils.c:3090
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
index 54c41fd..ec582fc 100644 (file)
--- a/po/it.po
+++ b/po/it.po
@@ -18,8 +18,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: glib\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/glib/issues\n"
-"POT-Creation-Date: 2022-01-22 16:30+0000\n"
-"PO-Revision-Date: 2022-01-23 15:06+0100\n"
+"POT-Creation-Date: 2022-03-22 15:19+0000\n"
+"PO-Revision-Date: 2022-03-22 17:13+0100\n"
 "Last-Translator: Milo Casagrande <milo@milo.name>\n"
 "Language-Team: Italian <tp@lists.linux.it>\n"
 "Language: it\n"
@@ -27,7 +27,18 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n!=1);\n"
-"X-Generator: Poedit 2.1.1\n"
+"X-Generator: Poedit 3.0.1\n"
+
+#: gio/gappinfo.c:333
+msgid "Setting default applications not supported yet"
+msgstr "L'impostazione di applicazioni predefinite non è ancora supportata"
+
+# %s è l'attributo
+#: gio/gappinfo.c:366
+msgid "Setting application as last used for type not supported yet"
+msgstr ""
+"L'impostazione dell'applicazione come ultima utilizzata per tipo non è "
+"ancora supportata"
 
 #: gio/gapplication.c:500
 msgid "GApplication options"
@@ -50,7 +61,7 @@ msgid "Replace the running instance"
 msgstr "Sostituisce l'istanza in esecuzione"
 
 #: gio/gapplication-tool.c:45 gio/gapplication-tool.c:46 gio/gio-tool.c:227
-#: gio/gresource-tool.c:494 gio/gsettings-tool.c:572
+#: gio/gresource-tool.c:494 gio/gsettings-tool.c:584
 msgid "Print help"
 msgstr "Stampa l'aiuto"
 
@@ -62,7 +73,7 @@ msgstr "[COMANDO]"
 msgid "Print version"
 msgstr "Stampa la versione"
 
-#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:578
+#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:590
 msgid "Print version information and exit"
 msgstr "Stampa informazioni di versione ed esce"
 
@@ -124,8 +135,8 @@ msgstr "Il comando di cui stampare istruzioni dettagliate"
 msgid "Application identifier in D-Bus format (eg: org.example.viewer)"
 msgstr "Identificatore dell'applicazione in formato D-Bus (org.example.viewer)"
 
-#: gio/gapplication-tool.c:74 gio/glib-compile-resources.c:738
-#: gio/glib-compile-resources.c:744 gio/glib-compile-resources.c:772
+#: gio/gapplication-tool.c:74 gio/glib-compile-resources.c:820
+#: gio/glib-compile-resources.c:826 gio/glib-compile-resources.c:855
 #: gio/gresource-tool.c:501 gio/gresource-tool.c:567
 msgid "FILE"
 msgstr "FILE"
@@ -151,7 +162,7 @@ msgstr "PARAMETERO"
 msgid "Optional parameter to the action invocation, in GVariant format"
 msgstr "Parametro opzioni per l'azione da invocare, in formato GVariant"
 
-#: gio/gapplication-tool.c:98 gio/gresource-tool.c:532 gio/gsettings-tool.c:664
+#: gio/gapplication-tool.c:98 gio/gresource-tool.c:532 gio/gsettings-tool.c:676
 #, c-format
 msgid ""
 "Unknown command %s\n"
@@ -165,7 +176,7 @@ msgid "Usage:\n"
 msgstr "Uso:\n"
 
 #: gio/gapplication-tool.c:116 gio/gresource-tool.c:557
-#: gio/gsettings-tool.c:699
+#: gio/gsettings-tool.c:711
 msgid "Arguments:\n"
 msgstr "Argomenti:\n"
 
@@ -290,7 +301,7 @@ msgstr "Lo stream è già chiuso"
 msgid "Truncate not supported on base stream"
 msgstr "Troncamento non supportato sullo stream di base"
 
-#: gio/gcancellable.c:319 gio/gdbusconnection.c:1873 gio/gdbusprivate.c:1416
+#: gio/gcancellable.c:319 gio/gdbusconnection.c:1857 gio/gdbusprivate.c:1418
 #: gio/gsimpleasyncresult.c:871 gio/gsimpleasyncresult.c:897
 #, c-format
 msgid "Operation was cancelled"
@@ -311,7 +322,7 @@ msgstr "Spazio non sufficiente nella destinazione"
 #: gio/gcharsetconverter.c:342 gio/gdatainputstream.c:848
 #: gio/gdatainputstream.c:1266 glib/gconvert.c:449 glib/gconvert.c:879
 #: glib/giochannel.c:1573 glib/giochannel.c:1615 glib/giochannel.c:2470
-#: glib/gutf8.c:875 glib/gutf8.c:1328
+#: glib/gutf8.c:890 glib/gutf8.c:1344
 msgid "Invalid byte sequence in conversion input"
 msgstr "Sequenza di byte non valida nell'ingresso per la conversione"
 
@@ -321,7 +332,7 @@ msgstr "Sequenza di byte non valida nell'ingresso per la conversione"
 msgid "Error during conversion: %s"
 msgstr "Errore durante la conversione: %s"
 
-#: gio/gcharsetconverter.c:445 gio/gsocket.c:1143
+#: gio/gcharsetconverter.c:445 gio/gsocket.c:1147
 msgid "Cancellable initialization not supported"
 msgstr "Inizializzazione annullabile non supportata"
 
@@ -335,37 +346,37 @@ msgstr "La conversione del set di caratteri da «%s» a «%s» non è supportata
 msgid "Could not open converter from “%s” to “%s”"
 msgstr "Impossibile aprire il convertitore da «%s» a «%s»"
 
-#: gio/gcontenttype.c:454
+#: gio/gcontenttype.c:470
 #, c-format
 msgid "%s type"
 msgstr "Tipo %s"
 
-#: gio/gcontenttype-win32.c:192
+#: gio/gcontenttype-win32.c:196
 msgid "Unknown type"
 msgstr "Tipo sconosciuto"
 
-#: gio/gcontenttype-win32.c:194
+#: gio/gcontenttype-win32.c:198
 #, c-format
 msgid "%s filetype"
 msgstr "Tipo di file %s"
 
-#: gio/gcredentials.c:323
+#: gio/gcredentials.c:335
 msgid "GCredentials contains invalid data"
 msgstr "GCredentials contiene data non validi"
 
-#: gio/gcredentials.c:383 gio/gcredentials.c:667
+#: gio/gcredentials.c:395 gio/gcredentials.c:686
 msgid "GCredentials is not implemented on this OS"
 msgstr "GCredentials non è implementato su questo SO"
 
-#: gio/gcredentials.c:538 gio/gcredentials.c:556
+#: gio/gcredentials.c:550 gio/gcredentials.c:568
 msgid "There is no GCredentials support for your platform"
 msgstr "Non c'è alcun supporto a GCredentials per la piattaforma in uso"
 
-#: gio/gcredentials.c:607
+#: gio/gcredentials.c:626
 msgid "GCredentials does not contain a process ID on this OS"
 msgstr "GCredentials non contiene un ID di processo su questo SO"
 
-#: gio/gcredentials.c:661
+#: gio/gcredentials.c:680
 msgid "Credentials spoofing is not possible on this OS"
 msgstr ""
 "La falsificazione delle identità non è consentita su questo sistema operativo"
@@ -374,19 +385,19 @@ msgstr ""
 msgid "Unexpected early end-of-stream"
 msgstr "End-of-stream prematuro inatteso"
 
-#: gio/gdbusaddress.c:159 gio/gdbusaddress.c:233 gio/gdbusaddress.c:322
+#: gio/gdbusaddress.c:162 gio/gdbusaddress.c:236 gio/gdbusaddress.c:325
 #, c-format
 msgid "Unsupported key “%s” in address entry “%s”"
 msgstr "La chiave «%s» non è valida nella voce indirizzo «%s»"
 
-#: gio/gdbusaddress.c:172
+#: gio/gdbusaddress.c:175
 #, c-format
 msgid "Meaningless key/value pair combination in address entry “%s”"
 msgstr ""
 "Combinazione coppia chiave/valore senza significato nella voce indirizzo «%s»"
 
 # Come chiarito in un messaggio seguente, path, tmpdir e abstract sono nomi chi chiavi (NdT)
-#: gio/gdbusaddress.c:181
+#: gio/gdbusaddress.c:184
 #, c-format
 msgid ""
 "Address “%s” is invalid (need exactly one of path, dir, tmpdir, or abstract "
@@ -395,29 +406,29 @@ msgstr ""
 "L'indirizzo «%s» non è valido (necessario esattamente una tra le chiavi "
 "path, tmpdir o abstract)"
 
-#: gio/gdbusaddress.c:248 gio/gdbusaddress.c:259 gio/gdbusaddress.c:274
-#: gio/gdbusaddress.c:337 gio/gdbusaddress.c:348
+#: gio/gdbusaddress.c:251 gio/gdbusaddress.c:262 gio/gdbusaddress.c:277
+#: gio/gdbusaddress.c:340 gio/gdbusaddress.c:351
 #, c-format
 msgid "Error in address “%s” — the “%s” attribute is malformed"
 msgstr "Errore nell'indirizzo «%s» — l'attributo «%s» non è valido"
 
-#: gio/gdbusaddress.c:418 gio/gdbusaddress.c:682
+#: gio/gdbusaddress.c:421 gio/gdbusaddress.c:680
 #, c-format
 msgid "Unknown or unsupported transport “%s” for address “%s”"
 msgstr "Trasporto «%s» sconosciuto o non supportato per l'indirizzo «%s»"
 
-#: gio/gdbusaddress.c:462
+#: gio/gdbusaddress.c:465
 #, c-format
 msgid "Address element “%s” does not contain a colon (:)"
 msgstr "L'elemento indirizzo «%s» non contiene due punti (:)"
 
-#: gio/gdbusaddress.c:471
+#: gio/gdbusaddress.c:474
 #, c-format
 msgid "Transport name in address element “%s” must not be empty"
 msgstr ""
 "Il nome del trasporto nell'elemento indirizzo «%s» non deve essere vuoto"
 
-#: gio/gdbusaddress.c:492
+#: gio/gdbusaddress.c:495
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” does not contain an equal "
@@ -426,7 +437,7 @@ msgstr ""
 "La coppia chiave/valore %d, «%s», nell'elemento indirizzo «%s», non contiene "
 "un segno di uguale"
 
-#: gio/gdbusaddress.c:503
+#: gio/gdbusaddress.c:506
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” must not have an empty key"
@@ -434,7 +445,7 @@ msgstr ""
 "La coppia chiave/valore %d, «%s», nell'elemento indirizzo «%s», non deve "
 "avere una chiave vuota"
 
-#: gio/gdbusaddress.c:517
+#: gio/gdbusaddress.c:520
 #, c-format
 msgid ""
 "Error unescaping key or value in Key/Value pair %d, “%s”, in address element "
@@ -443,7 +454,7 @@ msgstr ""
 "Errore nell'eseguire l'unescaping sulla chiave o sul valore nella coppia "
 "chiave/valore %d, «%s», nell'elemento di indirizzo «%s»"
 
-#: gio/gdbusaddress.c:589
+#: gio/gdbusaddress.c:588
 #, c-format
 msgid ""
 "Error in address “%s” — the unix transport requires exactly one of the keys "
@@ -452,81 +463,83 @@ msgstr ""
 "Errore nell'indirizzo «%s» — il trasporto unix richiede espressamente "
 "l'impostazione di una tra le chiavi «path» o «abstract»"
 
-#: gio/gdbusaddress.c:625
+#: gio/gdbusaddress.c:623
 #, c-format
 msgid "Error in address “%s” — the host attribute is missing or malformed"
 msgstr ""
 "Errore nell'indirizzo «%s» — manca l'attributo «host» oppure non è valido"
 
-#: gio/gdbusaddress.c:639
+#: gio/gdbusaddress.c:637
 #, c-format
 msgid "Error in address “%s” — the port attribute is missing or malformed"
 msgstr ""
 "Errore nell'indirizzo «%s» — manca l'attributo «port» oppure non è valido"
 
-#: gio/gdbusaddress.c:653
+#: gio/gdbusaddress.c:651
 #, c-format
 msgid "Error in address “%s” — the noncefile attribute is missing or malformed"
 msgstr ""
 "Errore nell'indirizzo «%s» — manca l'attributo «noncefile» oppure non è "
 "valido"
 
-#: gio/gdbusaddress.c:674
+#: gio/gdbusaddress.c:672
 msgid "Error auto-launching: "
 msgstr "Errore nell'avvio automatico: "
 
-#: gio/gdbusaddress.c:727
+#: gio/gdbusaddress.c:725
 #, c-format
 msgid "Error opening nonce file “%s”: %s"
 msgstr "Errore nell'aprire il file nonce «%s»: %s"
 
-#: gio/gdbusaddress.c:746
+#: gio/gdbusaddress.c:744
 #, c-format
 msgid "Error reading from nonce file “%s”: %s"
 msgstr "Errore nel leggere dal file nonce «%s»: %s"
 
-#: gio/gdbusaddress.c:755
+#: gio/gdbusaddress.c:753
 #, c-format
 msgid "Error reading from nonce file “%s”, expected 16 bytes, got %d"
 msgstr "Errore nel leggere dal file nonce «%s»: attesi 16 byte, ottenuti %d"
 
-#: gio/gdbusaddress.c:773
+#: gio/gdbusaddress.c:771
 #, c-format
 msgid "Error writing contents of nonce file “%s” to stream:"
 msgstr "Errore nello scrivere i contenuti del file nonce «%s» sullo stream:"
 
-#: gio/gdbusaddress.c:988
+#: gio/gdbusaddress.c:986
 msgid "The given address is empty"
 msgstr "L'indirizzo fornito è vuoto"
 
-#: gio/gdbusaddress.c:1101
+#: gio/gdbusaddress.c:1099
 #, c-format
-msgid "Cannot spawn a message bus when setuid"
-msgstr "Impossibile eseguire lo spawn di un bus di messaggi quando in setuid"
+msgid "Cannot spawn a message bus when AT_SECURE is set"
+msgstr ""
+"Impossibile eseguire lo spawn di un bus di messaggi quando AT_SECURE è "
+"impostato"
 
-#: gio/gdbusaddress.c:1108
+#: gio/gdbusaddress.c:1106
 msgid "Cannot spawn a message bus without a machine-id: "
 msgstr ""
 "Impossibile eseguire lo spawn di un bus di messaggi senza un machine-id: "
 
-#: gio/gdbusaddress.c:1115
+#: gio/gdbusaddress.c:1113
 #, c-format
 msgid "Cannot autolaunch D-Bus without X11 $DISPLAY"
 msgstr "Impossibile lanciare automaticamente D-Bus senza $DISPLAY X11"
 
-#: gio/gdbusaddress.c:1157
+#: gio/gdbusaddress.c:1155
 #, c-format
 msgid "Error spawning command line “%s”: "
 msgstr "Errore nell'eseguire lo spawn della riga di comando «%s»: "
 
-#: gio/gdbusaddress.c:1226
+#: gio/gdbusaddress.c:1224
 #, c-format
 msgid "Cannot determine session bus address (not implemented for this OS)"
 msgstr ""
 "Impossibile determinare l'indirizzo del bus di sessione (non implementato "
 "per questo S.O.)"
 
-#: gio/gdbusaddress.c:1375 gio/gdbusconnection.c:7334
+#: gio/gdbusaddress.c:1373 gio/gdbusconnection.c:7318
 #, c-format
 msgid ""
 "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
@@ -535,7 +548,7 @@ msgstr ""
 "Impossibile determinare l'indirizzo del bus dalla variabile d'ambiente "
 "DBUS_STARTER_BUS_TYPE — valore «%s» sconosciuto"
 
-#: gio/gdbusaddress.c:1384 gio/gdbusconnection.c:7343
+#: gio/gdbusaddress.c:1382 gio/gdbusconnection.c:7327
 msgid ""
 "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
 "variable is not set"
@@ -543,7 +556,7 @@ msgstr ""
 "Impossibile determinare l'indirizzo del bus poiché la variabile d'ambiente "
 "DBUS_STARTER_BUS_TYPE non è impostata"
 
-#: gio/gdbusaddress.c:1394
+#: gio/gdbusaddress.c:1392
 #, c-format
 msgid "Unknown bus type %d"
 msgstr "Tipo di bus %d sconosciuto"
@@ -574,12 +587,12 @@ msgstr "Gli ID utente devono essere gli stessi per nodo e server"
 msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
 msgstr "Annullato attraverso GDBusAuthObserver::authorize-authenticated-peer"
 
-#: gio/gdbusauthmechanismsha1.c:298
+#: gio/gdbusauthmechanismsha1.c:300
 #, c-format
 msgid "Error when getting information for directory “%s”: %s"
 msgstr "Errore nell'ottenere informazioni per la directory «%s»: %s"
 
-#: gio/gdbusauthmechanismsha1.c:313
+#: gio/gdbusauthmechanismsha1.c:315
 #, c-format
 msgid ""
 "Permissions on directory “%s” are malformed. Expected mode 0700, got 0%o"
@@ -587,32 +600,32 @@ msgstr ""
 "I permessi sulla directory «%s» non sono validi: attesa la modalità 0700, "
 "ottenuta 0%o"
 
-#: gio/gdbusauthmechanismsha1.c:346 gio/gdbusauthmechanismsha1.c:357
+#: gio/gdbusauthmechanismsha1.c:348 gio/gdbusauthmechanismsha1.c:359
 #, c-format
 msgid "Error creating directory “%s”: %s"
 msgstr "Errore nel creare la directory «%s»: %s"
 
-#: gio/gdbusauthmechanismsha1.c:359 gio/gfile.c:1062 gio/gfile.c:1300
-#: gio/gfile.c:1438 gio/gfile.c:1676 gio/gfile.c:1731 gio/gfile.c:1789
-#: gio/gfile.c:1873 gio/gfile.c:1930 gio/gfile.c:1994 gio/gfile.c:2049
-#: gio/gfile.c:3754 gio/gfile.c:3809 gio/gfile.c:4102 gio/gfile.c:4572
-#: gio/gfile.c:4983 gio/gfile.c:5068 gio/gfile.c:5158 gio/gfile.c:5255
-#: gio/gfile.c:5342 gio/gfile.c:5443 gio/gfile.c:8153 gio/gfile.c:8243
-#: gio/gfile.c:8327 gio/win32/gwinhttpfile.c:453
+#: gio/gdbusauthmechanismsha1.c:361 gio/gfile.c:1080 gio/gfile.c:1318
+#: gio/gfile.c:1456 gio/gfile.c:1694 gio/gfile.c:1749 gio/gfile.c:1807
+#: gio/gfile.c:1891 gio/gfile.c:1948 gio/gfile.c:2012 gio/gfile.c:2067
+#: gio/gfile.c:3772 gio/gfile.c:3912 gio/gfile.c:4205 gio/gfile.c:4675
+#: gio/gfile.c:5086 gio/gfile.c:5171 gio/gfile.c:5261 gio/gfile.c:5358
+#: gio/gfile.c:5445 gio/gfile.c:5546 gio/gfile.c:8375 gio/gfile.c:8465
+#: gio/gfile.c:8549 gio/win32/gwinhttpfile.c:453
 msgid "Operation not supported"
 msgstr "Operazione non supportata"
 
-#: gio/gdbusauthmechanismsha1.c:402
+#: gio/gdbusauthmechanismsha1.c:404
 #, c-format
 msgid "Error opening keyring “%s” for reading: "
 msgstr "Errore nell'aprire il portachiavi «%s» in lettura: "
 
-#: gio/gdbusauthmechanismsha1.c:425 gio/gdbusauthmechanismsha1.c:747
+#: gio/gdbusauthmechanismsha1.c:427 gio/gdbusauthmechanismsha1.c:769
 #, c-format
 msgid "Line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr "La riga %d del portachiavi su «%s» con contenuto «%s» non è corretta"
 
-#: gio/gdbusauthmechanismsha1.c:439 gio/gdbusauthmechanismsha1.c:761
+#: gio/gdbusauthmechanismsha1.c:441 gio/gdbusauthmechanismsha1.c:783
 #, c-format
 msgid ""
 "First token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -620,7 +633,7 @@ msgstr ""
 "Il primo token della riga %d del portachiavi su «%s» con contenuto «%s» non "
 "è corretto"
 
-#: gio/gdbusauthmechanismsha1.c:453 gio/gdbusauthmechanismsha1.c:775
+#: gio/gdbusauthmechanismsha1.c:455 gio/gdbusauthmechanismsha1.c:797
 #, c-format
 msgid ""
 "Second token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -628,60 +641,60 @@ msgstr ""
 "Il secondo token della riga %d del portachiavi su «%s» con contenuto «%s» "
 "non è corretto"
 
-#: gio/gdbusauthmechanismsha1.c:477
+#: gio/gdbusauthmechanismsha1.c:479
 #, c-format
 msgid "Didn’t find cookie with id %d in the keyring at “%s”"
 msgstr "Non è stato trovato il cookie con ID %d nel portachiavi su «%s»"
 
-#: gio/gdbusauthmechanismsha1.c:523
+#: gio/gdbusauthmechanismsha1.c:536
 #, c-format
 msgid "Error creating lock file “%s”: %s"
 msgstr "Errore nel creare il file di blocco «%s»: %s"
 
-#: gio/gdbusauthmechanismsha1.c:587
+#: gio/gdbusauthmechanismsha1.c:609
 #, c-format
 msgid "Error deleting stale lock file “%s”: %s"
 msgstr "Errore nell'eliminare il vecchio file di blocco «%s»: %s"
 
-#: gio/gdbusauthmechanismsha1.c:626
+#: gio/gdbusauthmechanismsha1.c:648
 #, c-format
 msgid "Error closing (unlinked) lock file “%s”: %s"
 msgstr "Errore nel chiudere il file di blocco «%s» (unlinked): %s"
 
-#: gio/gdbusauthmechanismsha1.c:637
+#: gio/gdbusauthmechanismsha1.c:659
 #, c-format
 msgid "Error unlinking lock file “%s”: %s"
 msgstr "Errore nell'eseguire l'unlink del file di blocco «%s»: %s"
 
-#: gio/gdbusauthmechanismsha1.c:714
+#: gio/gdbusauthmechanismsha1.c:736
 #, c-format
 msgid "Error opening keyring “%s” for writing: "
 msgstr "Errore nell'aprire il portachiavi «%s» in scrittura: "
 
-#: gio/gdbusauthmechanismsha1.c:908
+#: gio/gdbusauthmechanismsha1.c:930
 #, c-format
 msgid "(Additionally, releasing the lock for “%s” also failed: %s) "
 msgstr "(inoltre non è riuscito il rilascio del blocco per «%s»: %s) "
 
-#: gio/gdbusconnection.c:604 gio/gdbusconnection.c:2418
+#: gio/gdbusconnection.c:588 gio/gdbusconnection.c:2402
 msgid "The connection is closed"
 msgstr "La connessione è chiusa"
 
 # Sarebbe anche "il tempo è scaduto", ma non so
 # se la forma in cui l'hanno messo ha un particolare
 # senso, per cui la mantengo assieme a timeout
-#: gio/gdbusconnection.c:1903
+#: gio/gdbusconnection.c:1887
 msgid "Timeout was reached"
 msgstr "È stato raggiunto il timeout"
 
-#: gio/gdbusconnection.c:2541
+#: gio/gdbusconnection.c:2525
 msgid ""
 "Unsupported flags encountered when constructing a client-side connection"
 msgstr ""
 "Incontrate flag non supportate durante la costruzione di una connessione "
 "client-side"
 
-#: gio/gdbusconnection.c:4269 gio/gdbusconnection.c:4623
+#: gio/gdbusconnection.c:4253 gio/gdbusconnection.c:4607
 #, c-format
 msgid ""
 "No such interface “org.freedesktop.DBus.Properties” on object at path %s"
@@ -689,105 +702,105 @@ msgstr ""
 "Interfaccia «org.freedesktop.DBus.Properties» inesistente sull'oggetto nel "
 "percorso %s"
 
-#: gio/gdbusconnection.c:4414
+#: gio/gdbusconnection.c:4398
 #, c-format
 msgid "No such property “%s”"
 msgstr "Proprietà «%s» inesistente"
 
-#: gio/gdbusconnection.c:4426
+#: gio/gdbusconnection.c:4410
 #, c-format
 msgid "Property “%s” is not readable"
 msgstr "La proprietà «%s» non è leggibile"
 
-#: gio/gdbusconnection.c:4437
+#: gio/gdbusconnection.c:4421
 #, c-format
 msgid "Property “%s” is not writable"
 msgstr "La proprietà «%s» non è scrivibile"
 
-#: gio/gdbusconnection.c:4457
+#: gio/gdbusconnection.c:4441
 #, c-format
 msgid "Error setting property “%s”: Expected type “%s” but got “%s”"
 msgstr ""
 "Errore nell'impostare la proprietà «%s»: atteso il tipo «%s», ottenuto «%s»"
 
-#: gio/gdbusconnection.c:4562 gio/gdbusconnection.c:4777
-#: gio/gdbusconnection.c:6760
+#: gio/gdbusconnection.c:4546 gio/gdbusconnection.c:4761
+#: gio/gdbusconnection.c:6744
 #, c-format
 msgid "No such interface “%s”"
 msgstr "Interfaccia «%s» inesistente"
 
-#: gio/gdbusconnection.c:4999 gio/gdbusconnection.c:7274
+#: gio/gdbusconnection.c:4983 gio/gdbusconnection.c:7258
 #, c-format
 msgid "No such interface “%s” on object at path %s"
 msgstr "Interfaccia «%s» inesistente sull'oggetto nel percorso %s"
 
-#: gio/gdbusconnection.c:5100
+#: gio/gdbusconnection.c:5084
 #, c-format
 msgid "No such method “%s”"
 msgstr "Metodo «%s» inesistente"
 
-#: gio/gdbusconnection.c:5131
+#: gio/gdbusconnection.c:5115
 #, c-format
 msgid "Type of message, “%s”, does not match expected type “%s”"
 msgstr "Il tipo di messaggio «%s» non corrisponde al tipo atteso «%s»"
 
-#: gio/gdbusconnection.c:5334
+#: gio/gdbusconnection.c:5318
 #, c-format
 msgid "An object is already exported for the interface %s at %s"
 msgstr "Risulta già esportato un oggetto per l'interfaccia %s su %s"
 
-#: gio/gdbusconnection.c:5561
+#: gio/gdbusconnection.c:5545
 #, c-format
 msgid "Unable to retrieve property %s.%s"
 msgstr "Impossibile recuperare la proprietà %s.%s"
 
-#: gio/gdbusconnection.c:5617
+#: gio/gdbusconnection.c:5601
 #, c-format
 msgid "Unable to set property %s.%s"
 msgstr "Impossibile impostare la proprietà %s.%s"
 
-#: gio/gdbusconnection.c:5796
+#: gio/gdbusconnection.c:5780
 #, c-format
 msgid "Method “%s” returned type “%s”, but expected “%s”"
 msgstr "Il metodo «%s» ha restituito il tipo «%s», ma era atteso «%s»"
 
-#: gio/gdbusconnection.c:6872
+#: gio/gdbusconnection.c:6856
 #, c-format
 msgid "Method “%s” on interface “%s” with signature “%s” does not exist"
 msgstr "Il metodo «%s» sull'interfaccia «%s» con firma «%s» non esiste"
 
-#: gio/gdbusconnection.c:6993
+#: gio/gdbusconnection.c:6977
 #, c-format
 msgid "A subtree is already exported for %s"
 msgstr "Un sottoalbero per %s è già esportato"
 
-#: gio/gdbusconnection.c:7282
+#: gio/gdbusconnection.c:7266
 #, c-format
 msgid "Object does not exist at path “%s”"
 msgstr "L'oggetto non esiste nel percorso «%s»"
 
 # suppongo INVALID sia parola chiave
-#: gio/gdbusmessage.c:1311
+#: gio/gdbusmessage.c:1301
 msgid "type is INVALID"
 msgstr "il tipo è INVALID"
 
-#: gio/gdbusmessage.c:1322
+#: gio/gdbusmessage.c:1312
 msgid "METHOD_CALL message: PATH or MEMBER header field is missing"
 msgstr "messaggio METHOD_CALL: manca il campo header PATH o MEMBER"
 
-#: gio/gdbusmessage.c:1333
+#: gio/gdbusmessage.c:1323
 msgid "METHOD_RETURN message: REPLY_SERIAL header field is missing"
 msgstr "messaggio METHOD_RETURN: manca il campo header REPLY_SERIAL"
 
-#: gio/gdbusmessage.c:1345
+#: gio/gdbusmessage.c:1335
 msgid "ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing"
 msgstr "messaggio ERROR: manca il campo header REPLY_SERIAL o ERROR_NAME"
 
-#: gio/gdbusmessage.c:1358
+#: gio/gdbusmessage.c:1348
 msgid "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing"
 msgstr "messaggio SIGNAL: manca il campo header PATH, INTERFACE o MEMBER"
 
-#: gio/gdbusmessage.c:1366
+#: gio/gdbusmessage.c:1356
 msgid ""
 "SIGNAL message: The PATH header field is using the reserved value /org/"
 "freedesktop/DBus/Local"
@@ -795,7 +808,7 @@ msgstr ""
 "messaggio SIGNAL: il campo header PATH sta usando il valore riservato /org/"
 "freedestkop/DBus/Local"
 
-#: gio/gdbusmessage.c:1374
+#: gio/gdbusmessage.c:1364
 msgid ""
 "SIGNAL message: The INTERFACE header field is using the reserved value org."
 "freedesktop.DBus.Local"
@@ -803,7 +816,7 @@ msgstr ""
 "messaggio SIGNAL: il campo header INTERFACE sta usando il valore riservato "
 "org.freedestkop.DBus.Local"
 
-#: gio/gdbusmessage.c:1422 gio/gdbusmessage.c:1482
+#: gio/gdbusmessage.c:1412 gio/gdbusmessage.c:1472
 #, c-format
 msgid "Wanted to read %lu byte but only got %lu"
 msgid_plural "Wanted to read %lu bytes but only got %lu"
@@ -811,12 +824,12 @@ msgstr[0] "Si voleva leggere %lu byte, ma ne sono stati ottenuti %lu"
 msgstr[1] "Si volevano leggere %lu byte, ma ne sono stati ottenuti %lu"
 
 # FIXME? plurale?
-#: gio/gdbusmessage.c:1436
+#: gio/gdbusmessage.c:1426
 #, c-format
 msgid "Expected NUL byte after the string “%s” but found byte %d"
 msgstr "Atteso byte NUL dopo la stringa «%s», ma trovato %d byte"
 
-#: gio/gdbusmessage.c:1455
+#: gio/gdbusmessage.c:1445
 #, c-format
 msgid ""
 "Expected valid UTF-8 string but found invalid bytes at byte offset %d "
@@ -826,21 +839,21 @@ msgstr ""
 "(la lunghezza della stringa è %d). La stringa UTF-8 valida fino a quel punto "
 "era «%s»"
 
-#: gio/gdbusmessage.c:1519 gio/gdbusmessage.c:1795 gio/gdbusmessage.c:1986
+#: gio/gdbusmessage.c:1509 gio/gdbusmessage.c:1785 gio/gdbusmessage.c:1996
 msgid "Value nested too deeply"
 msgstr "Valori troppo annidati"
 
-#: gio/gdbusmessage.c:1687
+#: gio/gdbusmessage.c:1677
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus object path"
 msgstr "Il valore «%s» analizzato non è un percorso oggetto D-Bus valido"
 
-#: gio/gdbusmessage.c:1711
+#: gio/gdbusmessage.c:1701
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature"
 msgstr "Il valore «%s» analizzato non è una firma D-Bus valida"
 
-#: gio/gdbusmessage.c:1762
+#: gio/gdbusmessage.c:1752
 #, c-format
 msgid ""
 "Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB)."
@@ -853,7 +866,7 @@ msgstr[1] ""
 "Incontrato un array lungo %u byte. La lunghezza massima è 2<<26 byte (64 "
 "MiB)."
 
-#: gio/gdbusmessage.c:1782
+#: gio/gdbusmessage.c:1772
 #, c-format
 msgid ""
 "Encountered array of type “a%c”, expected to have a length a multiple of %u "
@@ -862,15 +875,19 @@ msgstr ""
 "Incontrato un array di tipo «a%c» la cui lunghezza attesa era di %u byte, ma "
 "la lunghezza reale era di %u byte"
 
+#: gio/gdbusmessage.c:1926 gio/gdbusmessage.c:2645
+msgid "Empty structures (tuples) are not allowed in D-Bus"
+msgstr "Le strutture vuote (tuple) non sono ammesse in D-Bus"
+
 # VARIANT è uno dei container type di D-Bus
 # anche signature sono cose specifiche del protocollo
-#: gio/gdbusmessage.c:1970
+#: gio/gdbusmessage.c:1980
 #, c-format
 msgid "Parsed value “%s” for variant is not a valid D-Bus signature"
 msgstr "Il valore «%s» analizzato per il variant non è una firma D-Bus valida"
 
 # eeeehh?????
-#: gio/gdbusmessage.c:2011
+#: gio/gdbusmessage.c:2021
 #, c-format
 msgid ""
 "Error deserializing GVariant with type string “%s” from the D-Bus wire format"
@@ -878,7 +895,7 @@ msgstr ""
 "Errore nel deserializzare il GVariant con la stringa di tipo «%s» dal "
 "formato wire D-Bus"
 
-#: gio/gdbusmessage.c:2196
+#: gio/gdbusmessage.c:2206
 #, c-format
 msgid ""
 "Invalid endianness value. Expected 0x6c (“l”) or 0x42 (“B”) but found value "
@@ -887,26 +904,26 @@ msgstr ""
 "Valore endianness non valido. Atteso 0x6c («l») o 0x42 («B»), trovato invece "
 "il valore 0x%02x"
 
-#: gio/gdbusmessage.c:2215
+#: gio/gdbusmessage.c:2225
 #, c-format
 msgid "Invalid major protocol version. Expected 1 but found %d"
 msgstr "Versione major del protocollo non valida. Atteso 1, ma trovato %d"
 
-#: gio/gdbusmessage.c:2273 gio/gdbusmessage.c:2862
+#: gio/gdbusmessage.c:2283 gio/gdbusmessage.c:2881
 msgid "Signature header found but is not of type signature"
 msgstr "Trovato header firma, ma non è di tipo firma"
 
-#: gio/gdbusmessage.c:2285
+#: gio/gdbusmessage.c:2295
 #, c-format
 msgid "Signature header with signature “%s” found but message body is empty"
 msgstr "Trovato header firma con firma «%s», ma il corpo del messaggio è vuoto"
 
-#: gio/gdbusmessage.c:2300
+#: gio/gdbusmessage.c:2310
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature (for body)"
 msgstr "Il valore «%s» analizzato non è una firma D-Bus valida (per il corpo)"
 
-#: gio/gdbusmessage.c:2332
+#: gio/gdbusmessage.c:2342
 #, 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"
@@ -915,11 +932,11 @@ msgstr[0] ""
 msgstr[1] ""
 "Nessun signature header nel messaggio, ma il corpo del messaggio è di %u byte"
 
-#: gio/gdbusmessage.c:2342
+#: gio/gdbusmessage.c:2352
 msgid "Cannot deserialize message: "
 msgstr "Impossibile deserializzare il messaggio: "
 
-#: gio/gdbusmessage.c:2679
+#: gio/gdbusmessage.c:2698
 #, c-format
 msgid ""
 "Error serializing GVariant with type string “%s” to the D-Bus wire format"
@@ -927,7 +944,7 @@ msgstr ""
 "Errore nel serializzare il GVariant con la stringa di tipo «%s» al formato "
 "wire D-Bus"
 
-#: gio/gdbusmessage.c:2816
+#: gio/gdbusmessage.c:2835
 #, c-format
 msgid ""
 "Number of file descriptors in message (%d) differs from header field (%d)"
@@ -935,17 +952,17 @@ msgstr ""
 "Il numero di descrittori file nel messaggio (%d) è diverso da quello del "
 "campo header (%d)"
 
-#: gio/gdbusmessage.c:2824
+#: gio/gdbusmessage.c:2843
 msgid "Cannot serialize message: "
 msgstr "Impossibile serializzare il messaggio: "
 
-#: gio/gdbusmessage.c:2877
+#: gio/gdbusmessage.c:2896
 #, c-format
 msgid "Message body has signature “%s” but there is no signature header"
 msgstr ""
 "Il corpo del messaggio presenta la firma «%s», ma non c'è alcun header firma"
 
-#: gio/gdbusmessage.c:2887
+#: gio/gdbusmessage.c:2906
 #, c-format
 msgid ""
 "Message body has type signature “%s” but signature in the header field is "
@@ -954,55 +971,55 @@ msgstr ""
 "Il corpo del messaggio presenta la firma «%s», ma la firma nel campo header "
 "è «%s»"
 
-#: gio/gdbusmessage.c:2903
+#: gio/gdbusmessage.c:2922
 #, c-format
 msgid "Message body is empty but signature in the header field is “(%s)”"
 msgstr "Il corpo del messaggio è vuoto, ma la firma nel campo header è «(%s)»"
 
 # non mi convincono "di ritorno" e "corpo"
 # ma altrove corpo non ci stava male
-#: gio/gdbusmessage.c:3458
+#: gio/gdbusmessage.c:3477
 #, c-format
 msgid "Error return with body of type “%s”"
 msgstr "Errore di ritorno con corpo di tipo «%s»"
 
 # come sopra
-#: gio/gdbusmessage.c:3466
+#: gio/gdbusmessage.c:3485
 msgid "Error return with empty body"
 msgstr "Errore di ritorno con corpo vuoto"
 
-#: gio/gdbusprivate.c:2246
+#: gio/gdbusprivate.c:2185
 #, c-format
 msgid "(Type any character to close this window)\n"
 msgstr "(digitare un carattere qualsiasi per chiudere questa finestra)\n"
 
-#: gio/gdbusprivate.c:2420
+#: gio/gdbusprivate.c:2371
 #, c-format
 msgid "Session dbus not running, and autolaunch failed"
 msgstr "dbus di sessione non in esecuzione e autolaunch non riuscito"
 
-#: gio/gdbusprivate.c:2443
+#: gio/gdbusprivate.c:2394
 #, c-format
 msgid "Unable to get Hardware profile: %s"
 msgstr "Impossibile ottenere profilo hardware: %s"
 
 #. Translators: Both placeholders are file paths
-#: gio/gdbusprivate.c:2494
+#: gio/gdbusprivate.c:2445
 #, c-format
 msgid "Unable to load %s or %s: "
 msgstr "impossibile caricare %s o %s: "
 
-#: gio/gdbusproxy.c:1569
+#: gio/gdbusproxy.c:1573
 #, c-format
 msgid "Error calling StartServiceByName for %s: "
 msgstr "Errore nel chiamare StartServiceByName per %s: "
 
-#: gio/gdbusproxy.c:1592
+#: gio/gdbusproxy.c:1596
 #, c-format
 msgid "Unexpected reply %d from StartServiceByName(\"%s\") method"
 msgstr "Risposta %d inattesa dal metodo StartServiceByName(\"%s\")"
 
-#: gio/gdbusproxy.c:2699 gio/gdbusproxy.c:2834
+#: gio/gdbusproxy.c:2707 gio/gdbusproxy.c:2842
 #, c-format
 msgid ""
 "Cannot invoke method; proxy is for the well-known name %s without an owner, "
@@ -1059,67 +1076,67 @@ msgstr ""
 "\n"
 "Usare «%s COMANDO --help» per informazioni su ciascun comando.\n"
 
-#: gio/gdbus-tool.c:201 gio/gdbus-tool.c:273 gio/gdbus-tool.c:345
-#: gio/gdbus-tool.c:369 gio/gdbus-tool.c:859 gio/gdbus-tool.c:1236
-#: gio/gdbus-tool.c:1724
+#: gio/gdbus-tool.c:202 gio/gdbus-tool.c:274 gio/gdbus-tool.c:346
+#: gio/gdbus-tool.c:370 gio/gdbus-tool.c:860 gio/gdbus-tool.c:1245
+#: gio/gdbus-tool.c:1733
 #, c-format
 msgid "Error: %s\n"
 msgstr "Errore: %s\n"
 
-#: gio/gdbus-tool.c:212 gio/gdbus-tool.c:286 gio/gdbus-tool.c:1740
+#: gio/gdbus-tool.c:213 gio/gdbus-tool.c:287 gio/gdbus-tool.c:1749
 #, c-format
 msgid "Error parsing introspection XML: %s\n"
 msgstr "Errore nell'analizzare XML introspection: %s\n"
 
-#: gio/gdbus-tool.c:250
+#: gio/gdbus-tool.c:251
 #, c-format
 msgid "Error: %s is not a valid name\n"
 msgstr "Errore: «%s» non è un nome valido\n"
 
-#: gio/gdbus-tool.c:255 gio/gdbus-tool.c:745 gio/gdbus-tool.c:1060
-#: gio/gdbus-tool.c:1890 gio/gdbus-tool.c:2130
+#: gio/gdbus-tool.c:256 gio/gdbus-tool.c:746 gio/gdbus-tool.c:1064
+#: gio/gdbus-tool.c:1899 gio/gdbus-tool.c:2139
 #, c-format
 msgid "Error: %s is not a valid object path\n"
 msgstr "Errore: «%s» non è un percorso di oggetto valido\n"
 
-#: gio/gdbus-tool.c:403
+#: gio/gdbus-tool.c:404
 msgid "Connect to the system bus"
 msgstr "Connette al bus di sistema"
 
-#: gio/gdbus-tool.c:404
+#: gio/gdbus-tool.c:405
 msgid "Connect to the session bus"
 msgstr "Connette al bus di sessione"
 
-#: gio/gdbus-tool.c:405
+#: gio/gdbus-tool.c:406
 msgid "Connect to given D-Bus address"
 msgstr "Connette all'indirizzo D-Bus fornito"
 
-#: gio/gdbus-tool.c:415
+#: gio/gdbus-tool.c:416
 msgid "Connection Endpoint Options:"
 msgstr "Opzioni endpoint connessione:"
 
-#: gio/gdbus-tool.c:416
+#: gio/gdbus-tool.c:417
 msgid "Options specifying the connection endpoint"
 msgstr "Opzioni per specificare gli endpoint di connessione"
 
-#: gio/gdbus-tool.c:439
+#: gio/gdbus-tool.c:440
 #, c-format
 msgid "No connection endpoint specified"
 msgstr "Nessun endpoint di connessione specificato"
 
-#: gio/gdbus-tool.c:449
+#: gio/gdbus-tool.c:450
 #, c-format
 msgid "Multiple connection endpoints specified"
 msgstr "Specificati endpoint di connessione multipli"
 
-#: gio/gdbus-tool.c:522
+#: gio/gdbus-tool.c:523
 #, c-format
 msgid ""
 "Warning: According to introspection data, interface “%s” does not exist\n"
 msgstr ""
 "Attenzione: secondo dati di introspezione, l'interfaccia «%s» non esiste\n"
 
-#: gio/gdbus-tool.c:531
+#: gio/gdbus-tool.c:532
 #, c-format
 msgid ""
 "Warning: According to introspection data, method “%s” does not exist on "
@@ -1128,163 +1145,167 @@ msgstr ""
 "Attenzione: secondi dati di introspezione, il metodo «%s» non esiste "
 "sull'interfaccia «%s»\n"
 
-#: gio/gdbus-tool.c:593
+#: gio/gdbus-tool.c:594
 msgid "Optional destination for signal (unique name)"
 msgstr "Destinazione opzionale per il segnale (nome univoco)"
 
-#: gio/gdbus-tool.c:594
+#: gio/gdbus-tool.c:595
 msgid "Object path to emit signal on"
 msgstr "Percorso oggetto su cui emettere il segnale"
 
-#: gio/gdbus-tool.c:595
+#: gio/gdbus-tool.c:596
 msgid "Signal and interface name"
 msgstr "Segnale e nome dell'interfaccia"
 
-#: gio/gdbus-tool.c:628
+#: gio/gdbus-tool.c:629
 msgid "Emit a signal."
 msgstr "Emette un segnale."
 
-#: gio/gdbus-tool.c:683 gio/gdbus-tool.c:997 gio/gdbus-tool.c:1827
-#: gio/gdbus-tool.c:2059 gio/gdbus-tool.c:2279
+#: gio/gdbus-tool.c:684 gio/gdbus-tool.c:1001 gio/gdbus-tool.c:1836
+#: gio/gdbus-tool.c:2068 gio/gdbus-tool.c:2288
 #, c-format
 msgid "Error connecting: %s\n"
 msgstr "Errore nel connettersi: %s\n"
 
-#: gio/gdbus-tool.c:703
+#: gio/gdbus-tool.c:704
 #, c-format
 msgid "Error: %s is not a valid unique bus name.\n"
 msgstr "Errore: «%s» non è un nome di bus univoco valido.\n"
 
-#: gio/gdbus-tool.c:722 gio/gdbus-tool.c:1040 gio/gdbus-tool.c:1870
+#: gio/gdbus-tool.c:723 gio/gdbus-tool.c:1044 gio/gdbus-tool.c:1879
 msgid "Error: Object path is not specified\n"
 msgstr "Errore: non è specificato il percorso dell'oggetto\n"
 
-#: gio/gdbus-tool.c:765
+#: gio/gdbus-tool.c:766
 msgid "Error: Signal name is not specified\n"
 msgstr "Errore: non è specificato il nome del segnale\n"
 
-#: gio/gdbus-tool.c:779
+#: gio/gdbus-tool.c:780
 #, c-format
 msgid "Error: Signal name “%s” is invalid\n"
 msgstr "Errore: il nome del segnale «%s» non è valido\n"
 
-#: gio/gdbus-tool.c:791
+#: gio/gdbus-tool.c:792
 #, c-format
 msgid "Error: %s is not a valid interface name\n"
 msgstr "Errore: «%s» non è un nome di interfaccia valido\n"
 
-#: gio/gdbus-tool.c:797
+#: gio/gdbus-tool.c:798
 #, c-format
 msgid "Error: %s is not a valid member name\n"
 msgstr "Errore: «%s» non è un nome di membro valido\n"
 
 #. Use the original non-"parse-me-harder" error
-#: gio/gdbus-tool.c:834 gio/gdbus-tool.c:1172
+#: gio/gdbus-tool.c:835 gio/gdbus-tool.c:1176
 #, c-format
 msgid "Error parsing parameter %d: %s\n"
 msgstr "Errore nell'analizzare il parametro %d: %s\n"
 
-#: gio/gdbus-tool.c:866
+#: gio/gdbus-tool.c:867
 #, c-format
 msgid "Error flushing connection: %s\n"
 msgstr "Errore nell'eseguire il flush della connessione: %s\n"
 
-#: gio/gdbus-tool.c:893
+#: gio/gdbus-tool.c:895
 msgid "Destination name to invoke method on"
 msgstr "Nome della destinazione su cui invocare il metodo"
 
-#: gio/gdbus-tool.c:894
+#: gio/gdbus-tool.c:896
 msgid "Object path to invoke method on"
 msgstr "Percorso dell'oggetto su cui invocare il metodo"
 
 # oppure "Nome del metodo e dell'interfaccia" ???
-#: gio/gdbus-tool.c:895
+#: gio/gdbus-tool.c:897
 msgid "Method and interface name"
 msgstr "Metodo e nome dell'interfaccia"
 
-#: gio/gdbus-tool.c:896
+#: gio/gdbus-tool.c:898
 msgid "Timeout in seconds"
 msgstr "Timeout in secondi"
 
-#: gio/gdbus-tool.c:942
+#: gio/gdbus-tool.c:899
+msgid "Allow interactive authorization"
+msgstr "Consenti autorizzazione interattiva"
+
+#: gio/gdbus-tool.c:946
 msgid "Invoke a method on a remote object."
 msgstr "Invoca un metodo su un oggetto remoto."
 
-#: gio/gdbus-tool.c:1014 gio/gdbus-tool.c:1844 gio/gdbus-tool.c:2084
+#: gio/gdbus-tool.c:1018 gio/gdbus-tool.c:1853 gio/gdbus-tool.c:2093
 msgid "Error: Destination is not specified\n"
 msgstr "Errore: non è specificata la destinazione\n"
 
-#: gio/gdbus-tool.c:1025 gio/gdbus-tool.c:1861 gio/gdbus-tool.c:2095
+#: gio/gdbus-tool.c:1029 gio/gdbus-tool.c:1870 gio/gdbus-tool.c:2104
 #, c-format
 msgid "Error: %s is not a valid bus name\n"
 msgstr "Errore: «%s» non è un nome di bus valido\n"
 
-#: gio/gdbus-tool.c:1075
+#: gio/gdbus-tool.c:1079
 msgid "Error: Method name is not specified\n"
 msgstr "Errore: non è specificato il nome del metodo\n"
 
-#: gio/gdbus-tool.c:1086
+#: gio/gdbus-tool.c:1090
 #, c-format
 msgid "Error: Method name “%s” is invalid\n"
 msgstr "Errore: il nome di metodo «%s» non è valido\n"
 
-#: gio/gdbus-tool.c:1164
+#: gio/gdbus-tool.c:1168
 #, c-format
 msgid "Error parsing parameter %d of type “%s”: %s\n"
 msgstr "Errore nell'analizzare il parametro %d di tipo «%s»: %s\n"
 
-#: gio/gdbus-tool.c:1190
+#: gio/gdbus-tool.c:1194
 #, c-format
 msgid "Error adding handle %d: %s\n"
 msgstr "Errore nell'aggiungere l'handle %d: %s\n"
 
 # predicato > sostantivo per introspezione, direi che funziona
-#: gio/gdbus-tool.c:1686
+#: gio/gdbus-tool.c:1695
 msgid "Destination name to introspect"
 msgstr "Nome destinazione per l'introspezione"
 
-#: gio/gdbus-tool.c:1687
+#: gio/gdbus-tool.c:1696
 msgid "Object path to introspect"
 msgstr "Percorso oggetto per l'introspezione"
 
-#: gio/gdbus-tool.c:1688
+#: gio/gdbus-tool.c:1697
 msgid "Print XML"
 msgstr "Stampa XML"
 
-#: gio/gdbus-tool.c:1689
+#: gio/gdbus-tool.c:1698
 msgid "Introspect children"
 msgstr "Figli introspezione"
 
-#: gio/gdbus-tool.c:1690
+#: gio/gdbus-tool.c:1699
 msgid "Only print properties"
 msgstr "Stampa solo le proprietà"
 
-#: gio/gdbus-tool.c:1779
+#: gio/gdbus-tool.c:1788
 msgid "Introspect a remote object."
 msgstr "Esegue l'introspezione su un oggetto remoto."
 
 # predicato > sostantivo per monitor, direi che funziona
-#: gio/gdbus-tool.c:1985
+#: gio/gdbus-tool.c:1994
 msgid "Destination name to monitor"
 msgstr "Nome destinazione per il monitoraggio"
 
-#: gio/gdbus-tool.c:1986
+#: gio/gdbus-tool.c:1995
 msgid "Object path to monitor"
 msgstr "Percorso oggetto per il monitoraggio"
 
-#: gio/gdbus-tool.c:2011
+#: gio/gdbus-tool.c:2020
 msgid "Monitor a remote object."
 msgstr "Esegue il monitoraggio su un oggetto remoto."
 
-#: gio/gdbus-tool.c:2069
+#: gio/gdbus-tool.c:2078
 msgid "Error: can’t monitor a non-message-bus connection\n"
 msgstr "Errore: impossibile monitorare una connessione non-message-bus\n"
 
-#: gio/gdbus-tool.c:2193
+#: gio/gdbus-tool.c:2202
 msgid "Service to activate before waiting for the other one (well-known name)"
 msgstr "Servizio da attivare prima di attendere l'altro (nome well-known)"
 
-#: gio/gdbus-tool.c:2196
+#: gio/gdbus-tool.c:2205
 msgid ""
 "Timeout to wait for before exiting with an error (seconds); 0 for no timeout "
 "(default)"
@@ -1292,49 +1313,54 @@ msgstr ""
 "Tempo da attendere prima di terminare con un errore (secondi); 0 per nessun "
 "tempo di attesa (predefinito)"
 
-#: gio/gdbus-tool.c:2244
+#: gio/gdbus-tool.c:2253
 msgid "[OPTION…] BUS-NAME"
 msgstr "[OPZIONE…] NOME-BUS"
 
-#: gio/gdbus-tool.c:2245
+#: gio/gdbus-tool.c:2254
 msgid "Wait for a bus name to appear."
 msgstr "Attende la comparsa del nome di un bus"
 
-#: gio/gdbus-tool.c:2321
+#: gio/gdbus-tool.c:2330
 msgid "Error: A service to activate for must be specified.\n"
 msgstr "Errore: è necessario specificare un servizio da attivare.\n"
 
-#: gio/gdbus-tool.c:2326
+#: gio/gdbus-tool.c:2335
 msgid "Error: A service to wait for must be specified.\n"
 msgstr ""
 "Errore: è necessario specificare un servizio da attendere.\n"
 "\n"
 
-#: gio/gdbus-tool.c:2331
+#: gio/gdbus-tool.c:2340
 msgid "Error: Too many arguments.\n"
 msgstr "Errore: troppi argomenti\n"
 
-#: gio/gdbus-tool.c:2339 gio/gdbus-tool.c:2346
+#: gio/gdbus-tool.c:2348 gio/gdbus-tool.c:2355
 #, c-format
 msgid "Error: %s is not a valid well-known bus name.\n"
 msgstr "Errore: %s non è un nome di bus well-known.\n"
 
+#: gio/gdebugcontrollerdbus.c:358
+#, c-format
+msgid "Not authorized to change debug settings"
+msgstr "Non autorizzato a modificare le impostazioni di debug"
+
 # NdT: nome di applicazione (quando manca)
-#: gio/gdesktopappinfo.c:2106 gio/gdesktopappinfo.c:4935
+#: gio/gdesktopappinfo.c:2178 gio/gdesktopappinfo.c:5105
 msgid "Unnamed"
 msgstr "Senza nome"
 
-#: gio/gdesktopappinfo.c:2516
+#: gio/gdesktopappinfo.c:2588
 msgid "Desktop file didn’t specify Exec field"
 msgstr "Il file .desktop non specifica il campo Exec"
 
-#: gio/gdesktopappinfo.c:2804
+#: gio/gdesktopappinfo.c:2896
 msgid "Unable to find terminal required for application"
 msgstr "Impossibile trovare il terminale richiesto per l'applicazione"
 
 # NdT il primo %s è il percorso alla cartella .local/share/application
 # messo tra parentesi per scelta stilistica...
-#: gio/gdesktopappinfo.c:3455
+#: gio/gdesktopappinfo.c:3625
 #, c-format
 msgid "Can’t create user application configuration folder %s: %s"
 msgstr ""
@@ -1342,21 +1368,21 @@ msgstr ""
 
 # NdT il primo %s è il percorso alla cartella .local/share/application
 # messo tra parentesi per scelta stilistica...
-#: gio/gdesktopappinfo.c:3459
+#: gio/gdesktopappinfo.c:3629
 #, c-format
 msgid "Can’t create user MIME configuration folder %s: %s"
 msgstr "Impossibile creare la cartella utente di configurazione MIME (%s): %s"
 
-#: gio/gdesktopappinfo.c:3701 gio/gdesktopappinfo.c:3725
+#: gio/gdesktopappinfo.c:3871 gio/gdesktopappinfo.c:3895
 msgid "Application information lacks an identifier"
 msgstr "Manca un identificatore nelle informazioni dell'applicazione"
 
-#: gio/gdesktopappinfo.c:3961
+#: gio/gdesktopappinfo.c:4131
 #, c-format
 msgid "Can’t create user desktop file %s"
 msgstr "Impossibile creare il file .desktop utente %s"
 
-#: gio/gdesktopappinfo.c:4097
+#: gio/gdesktopappinfo.c:4267
 #, c-format
 msgid "Custom definition for %s"
 msgstr "Definizione personalizzata per %s"
@@ -1384,7 +1410,7 @@ msgstr "l'unità non implementa l'azione start"
 msgid "drive doesn’t implement stop"
 msgstr "l'unità non implementa l'azione stop"
 
-#: gio/gdtlsconnection.c:1153 gio/gtlsconnection.c:920
+#: gio/gdtlsconnection.c:1186 gio/gtlsconnection.c:955
 msgid "TLS backend does not implement TLS binding retrieval"
 msgstr "il backend TLS non implementa il recupero del binding TLS"
 
@@ -1425,74 +1451,74 @@ msgstr "Atteso un GEmblem per GEmblemedIcon"
 #. * trying to find the enclosing (user visible)
 #. * mount of a file, but none exists.
 #.
-#: gio/gfile.c:1561
+#: gio/gfile.c:1579
 msgid "Containing mount does not exist"
 msgstr "L'oggetto mount contenuto non esiste"
 
-#: gio/gfile.c:2608 gio/glocalfile.c:2486
+#: gio/gfile.c:2626 gio/glocalfile.c:2486
 msgid "Can’t copy over directory"
 msgstr "Impossibile copiare sopra la directory"
 
-#: gio/gfile.c:2668
+#: gio/gfile.c:2686
 msgid "Can’t copy directory over directory"
 msgstr "Impossibile copiare la directory sopra la directory"
 
-#: gio/gfile.c:2676
+#: gio/gfile.c:2694
 msgid "Target file exists"
 msgstr "Il file destinazione esiste"
 
-#: gio/gfile.c:2695
+#: gio/gfile.c:2713
 msgid "Can’t recursively copy directory"
 msgstr "Impossibile copiare la directory ricorsivamente"
 
 # see man splice(2)  :)
-#: gio/gfile.c:2996
+#: gio/gfile.c:3014
 msgid "Splice not supported"
 msgstr "Splice non supportato"
 
-#: gio/gfile.c:3000
+#: gio/gfile.c:3018
 #, c-format
 msgid "Error splicing file: %s"
 msgstr "Errore nell'eseguire lo splice del file: %s"
 
-#: gio/gfile.c:3152
+#: gio/gfile.c:3170
 msgid "Copy (reflink/clone) between mounts is not supported"
 msgstr "Copia (reflink/clone) tra oggetti mount non supportata"
 
-#: gio/gfile.c:3156
+#: gio/gfile.c:3174
 msgid "Copy (reflink/clone) is not supported or invalid"
 msgstr "Copia (reflink/clone) non supportata o non valida"
 
-#: gio/gfile.c:3161
+#: gio/gfile.c:3179
 msgid "Copy (reflink/clone) is not supported or didn’t work"
 msgstr "Copia (reflink/clone) non supportata o non ha funzionato"
 
-#: gio/gfile.c:3226
+#: gio/gfile.c:3244
 msgid "Can’t copy special file"
 msgstr "Impossibile copiare il file speciale"
 
-#: gio/gfile.c:4035
+#: gio/gfile.c:4138
 msgid "Invalid symlink value given"
 msgstr "Fornito valore di collegamento simbolico non valido"
 
-#: gio/gfile.c:4045 glib/gfileutils.c:2333
+#: gio/gfile.c:4148 glib/gfileutils.c:2333
 msgid "Symbolic links not supported"
 msgstr "Collegamenti simbolici non supportati"
 
-#: gio/gfile.c:4213
+#: gio/gfile.c:4316
 msgid "Trash not supported"
 msgstr "Cestino non supportato"
 
-#: gio/gfile.c:4325
+#: gio/gfile.c:4428
 #, c-format
 msgid "File names cannot contain “%c”"
 msgstr "I nomi di file non possono contenere «%c»"
 
-#: gio/gfile.c:6806 gio/gvolume.c:364
+#: gio/gfile.c:7028 gio/gvolume.c:364
 msgid "volume doesn’t implement mount"
 msgstr "il volume non implementa l'azione mount"
 
-#: gio/gfile.c:6920 gio/gfile.c:6968
+#: gio/gfile.c:7142 gio/gfile.c:7190
 msgid "No application is registered as handling this file"
 msgstr "Non risulta registrata alcuna applicazione per gestire questo file"
 
@@ -1538,7 +1564,7 @@ msgstr "Troncamento non consentito sullo stream di input"
 msgid "Truncate not supported on stream"
 msgstr "Troncamento non supportato sullo stream"
 
-#: gio/ghttpproxy.c:91 gio/gresolver.c:443 gio/gresolver.c:596
+#: gio/ghttpproxy.c:91 gio/gresolver.c:458 gio/gresolver.c:611
 #: glib/gconvert.c:1825
 msgid "Invalid hostname"
 msgstr "Nome host non valido"
@@ -1627,7 +1653,7 @@ msgid "Could not parse “%s” as IP address mask"
 msgstr "Impossibile analizzare «%s» come maschera di indirizzo IP"
 
 #: gio/ginetsocketaddress.c:203 gio/ginetsocketaddress.c:220
-#: gio/gnativesocketaddress.c:109 gio/gunixsocketaddress.c:221
+#: gio/gnativesocketaddress.c:109 gio/gunixsocketaddress.c:228
 msgid "Not enough space for socket address"
 msgstr "Spazio non sufficiente per l'indirizzo del socket"
 
@@ -2471,15 +2497,15 @@ msgstr "Errore nel comprimere il file %s"
 msgid "text may not appear inside <%s>"
 msgstr "il testo non può apparire all'interno di <%s>"
 
-#: gio/glib-compile-resources.c:737 gio/glib-compile-schemas.c:2172
+#: gio/glib-compile-resources.c:819 gio/glib-compile-schemas.c:2172
 msgid "Show program version and exit"
 msgstr "Mostra la versione del programma ed esce"
 
-#: gio/glib-compile-resources.c:738
+#: gio/glib-compile-resources.c:820
 msgid "Name of the output file"
 msgstr "Nome del file di output"
 
-#: gio/glib-compile-resources.c:739
+#: gio/glib-compile-resources.c:821
 msgid ""
 "The directories to load files referenced in FILE from (default: current "
 "directory)"
@@ -2487,49 +2513,49 @@ msgstr ""
 "Le directory da cui caricare i file indicati in FILE (predefinito: directory "
 "corrente)"
 
-#: gio/glib-compile-resources.c:739 gio/glib-compile-schemas.c:2173
+#: gio/glib-compile-resources.c:821 gio/glib-compile-schemas.c:2173
 #: gio/glib-compile-schemas.c:2202
 msgid "DIRECTORY"
 msgstr "DIRECTORY"
 
-#: gio/glib-compile-resources.c:740
+#: gio/glib-compile-resources.c:822
 msgid ""
 "Generate output in the format selected for by the target filename extension"
 msgstr ""
 "Genera l'output nel formato selezionato in base all'estensione del nome di "
 "file della destinazione"
 
-#: gio/glib-compile-resources.c:741
+#: gio/glib-compile-resources.c:823
 msgid "Generate source header"
 msgstr "Genera header sorgente"
 
-#: gio/glib-compile-resources.c:742
+#: gio/glib-compile-resources.c:824
 msgid "Generate source code used to link in the resource file into your code"
 msgstr ""
 "Genera codice sorgente usato per collegare il file risorsa all'interno del "
 "codice"
 
-#: gio/glib-compile-resources.c:743
+#: gio/glib-compile-resources.c:825
 msgid "Generate dependency list"
 msgstr "Genera elenco delle dipendenze"
 
-#: gio/glib-compile-resources.c:744
+#: gio/glib-compile-resources.c:826
 msgid "Name of the dependency file to generate"
 msgstr "Nome del file dipendenza da generare"
 
-#: gio/glib-compile-resources.c:745
+#: gio/glib-compile-resources.c:827
 msgid "Include phony targets in the generated dependency file"
 msgstr "Include le destinazioni phony nel file delle dipendenze"
 
-#: gio/glib-compile-resources.c:746
+#: gio/glib-compile-resources.c:828
 msgid "Don’t automatically create and register resource"
 msgstr "Non crea e registra automaticamente la risorsa"
 
-#: gio/glib-compile-resources.c:747
+#: gio/glib-compile-resources.c:829
 msgid "Don’t export functions; declare them G_GNUC_INTERNAL"
 msgstr "Non esporta le funzioni, le dichiara G_GNUC_INTERNAL"
 
-#: gio/glib-compile-resources.c:748
+#: gio/glib-compile-resources.c:830
 msgid ""
 "Don’t embed resource data in the C file; assume it's linked externally "
 "instead"
@@ -2537,11 +2563,17 @@ msgstr ""
 "Non incorpora i dati delle risorse nel file C, assume sia collegato "
 "esternamente"
 
-#: gio/glib-compile-resources.c:749
+#: gio/glib-compile-resources.c:831
 msgid "C identifier name used for the generated source code"
 msgstr "Nome identificatore C usato per il codice sorgente generato"
 
-#: gio/glib-compile-resources.c:775
+#: gio/glib-compile-resources.c:832
+msgid "The target C compiler (default: the CC environment variable)"
+msgstr ""
+"Il compilatore C da usare (impostazione predefinita: la variabile di "
+"ambiente CC)"
+
+#: gio/glib-compile-resources.c:858
 msgid ""
 "Compile a resource specification into a resource file.\n"
 "Resource specification files have the extension .gresource.xml,\n"
@@ -2551,7 +2583,7 @@ msgstr ""
 "I file di specifica di risorsa hanno estensione .gresource.xml\n"
 "e i file risorsa hanno estensione .gresource."
 
-#: gio/glib-compile-resources.c:797
+#: gio/glib-compile-resources.c:880
 msgid "You should give exactly one file name\n"
 msgstr "È necessario indicare esattamente un nome di file\n"
 
@@ -3368,13 +3400,13 @@ msgstr "Errore nel creare la copia di backup: %s"
 msgid "Error renaming temporary file: %s"
 msgstr "Errore nel rinominare il file temporaneo: %s"
 
-#: gio/glocalfileoutputstream.c:609 gio/glocalfileoutputstream.c:1237
+#: gio/glocalfileoutputstream.c:609 gio/glocalfileoutputstream.c:1239
 #, c-format
 msgid "Error truncating file: %s"
 msgstr "Errore nel troncare il file: %s"
 
 #: gio/glocalfileoutputstream.c:662 gio/glocalfileoutputstream.c:907
-#: gio/glocalfileoutputstream.c:1218 gio/gsubprocess.c:226
+#: gio/glocalfileoutputstream.c:1220 gio/gsubprocess.c:229
 #, c-format
 msgid "Error opening file “%s”: %s"
 msgstr "Errore nell'aprire il file «%s»: %s"
@@ -3396,7 +3428,7 @@ msgstr "Il file è stato modificato dall'esterno"
 msgid "Error removing old file: %s"
 msgstr "Errore nel rimuovere il vecchio file: %s"
 
-#: gio/gmemoryinputstream.c:474 gio/gmemoryoutputstream.c:772
+#: gio/gmemoryinputstream.c:474 gio/gmemoryoutputstream.c:762
 msgid "Invalid GSeekType supplied"
 msgstr "Fornito GSeekType non valido"
 
@@ -3408,16 +3440,16 @@ msgstr "Richiesta di posizionamento non valida"
 msgid "Cannot truncate GMemoryInputStream"
 msgstr "Impossibile troncare GMemoryInputStream"
 
-#: gio/gmemoryoutputstream.c:567
+#: gio/gmemoryoutputstream.c:568
 msgid "Memory output stream not resizable"
 msgstr "Stream di output di memoria non ridimensionabile"
 
-#: gio/gmemoryoutputstream.c:583
+#: gio/gmemoryoutputstream.c:584
 msgid "Failed to resize memory output stream"
 msgstr "Ridimensionamento dello stream di output di memoria non riuscito"
 
 # spero sia write -> scrittura e non write -> write
-#: gio/gmemoryoutputstream.c:673
+#: gio/gmemoryoutputstream.c:663
 msgid ""
 "Amount of memory required to process the write is larger than available "
 "address space"
@@ -3425,11 +3457,11 @@ msgstr ""
 "La quantità di memoria necessaria per elaborare la scrittura è più grande "
 "dello spazio di indirizzamento disponibile"
 
-#: gio/gmemoryoutputstream.c:782
+#: gio/gmemoryoutputstream.c:772
 msgid "Requested seek before the beginning of the stream"
 msgstr "Richiesto posizionamento prima dell'inizio dello stream"
 
-#: gio/gmemoryoutputstream.c:797
+#: gio/gmemoryoutputstream.c:787
 msgid "Requested seek beyond the end of the stream"
 msgstr "Richiesto posizionamento oltre la fine dello stream"
 
@@ -3537,18 +3569,22 @@ msgstr "Somma dei vettori troppo grande passata a %s"
 msgid "Source stream is already closed"
 msgstr "Lo stream sorgente è già chiuso"
 
-#: gio/gresolver.c:386 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
+#. Translators: the first placeholder is a domain name, the
+#. * second is an error message
+#: gio/gresolver.c:401 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
+#: gio/gthreadedresolver.c:780 gio/gthreadedresolver.c:804
+#: gio/gthreadedresolver.c:829 gio/gthreadedresolver.c:844
 #, c-format
 msgid "Error resolving “%s”: %s"
 msgstr "Errore nel risolvere «%s»: %s"
 
 #. Translators: The placeholder is for a function name.
-#: gio/gresolver.c:455 gio/gresolver.c:615
+#: gio/gresolver.c:470 gio/gresolver.c:630
 #, c-format
 msgid "%s not implemented"
 msgstr "%s non è implementata"
 
-#: gio/gresolver.c:984 gio/gresolver.c:1036
+#: gio/gresolver.c:999 gio/gresolver.c:1051
 msgid "Invalid domain"
 msgstr "Dominio non valido"
 
@@ -3663,7 +3699,7 @@ msgstr ""
 msgid "  SECTION   An (optional) elf section name\n"
 msgstr "  SEZIONE   Un nome sezione elf (opzionale)\n"
 
-#: gio/gresource-tool.c:565 gio/gsettings-tool.c:706
+#: gio/gresource-tool.c:565 gio/gsettings-tool.c:718
 msgid "  COMMAND   The (optional) command to explain\n"
 msgstr ""
 "  COMANDO   Il comando (opzionale) da spiegare\n"
@@ -3697,7 +3733,7 @@ msgstr "PERCORSO"
 msgid "  PATH      A resource path\n"
 msgstr "  PERCORSO  Un percorso risorsa\n"
 
-#: gio/gsettings-tool.c:49 gio/gsettings-tool.c:70 gio/gsettings-tool.c:911
+#: gio/gsettings-tool.c:49 gio/gsettings-tool.c:70 gio/gsettings-tool.c:923
 #, c-format
 msgid "No such schema “%s”\n"
 msgstr "Schema «%s» inesistente\n"
@@ -3729,35 +3765,35 @@ msgstr "Il percorso deve terminare con uno slash (/)\n"
 msgid "Path must not contain two adjacent slashes (//)\n"
 msgstr "Il percorso non deve contenere due slash adiacenti (//)\n"
 
-#: gio/gsettings-tool.c:541
+#: gio/gsettings-tool.c:553
 msgid "The provided value is outside of the valid range\n"
 msgstr "Il valore fornito è fuori dell'intervallo valido\n"
 
-#: gio/gsettings-tool.c:548
+#: gio/gsettings-tool.c:560
 msgid "The key is not writable\n"
 msgstr "La chiave non è scrivibile\n"
 
-#: gio/gsettings-tool.c:584
+#: gio/gsettings-tool.c:596
 msgid "List the installed (non-relocatable) schemas"
 msgstr "Elenca gli schemi (non rilocabili) installati"
 
-#: gio/gsettings-tool.c:590
+#: gio/gsettings-tool.c:602
 msgid "List the installed relocatable schemas"
 msgstr "Elenca gli schemi rilocabili installati"
 
-#: gio/gsettings-tool.c:596
+#: gio/gsettings-tool.c:608
 msgid "List the keys in SCHEMA"
 msgstr "Elenca le chiavi in SCHEMA"
 
-#: gio/gsettings-tool.c:597 gio/gsettings-tool.c:603 gio/gsettings-tool.c:646
+#: gio/gsettings-tool.c:609 gio/gsettings-tool.c:615 gio/gsettings-tool.c:658
 msgid "SCHEMA[:PATH]"
 msgstr "SCHEMA[:PERCORSO]"
 
-#: gio/gsettings-tool.c:602
+#: gio/gsettings-tool.c:614
 msgid "List the children of SCHEMA"
 msgstr "Elenca i figli di SCHEMA"
 
-#: gio/gsettings-tool.c:608
+#: gio/gsettings-tool.c:620
 msgid ""
 "List keys and values, recursively\n"
 "If no SCHEMA is given, list all keys\n"
@@ -3765,48 +3801,48 @@ msgstr ""
 "Elenca chiavi e valori, ricorsivamente\n"
 "Se non è fornito alcuno SCHEMA elenca tutte le chiavi\n"
 
-#: gio/gsettings-tool.c:610
+#: gio/gsettings-tool.c:622
 msgid "[SCHEMA[:PATH]]"
 msgstr "[SCHEMA[:PERCORSO]]"
 
-#: gio/gsettings-tool.c:615
+#: gio/gsettings-tool.c:627
 msgid "Get the value of KEY"
 msgstr "Ottiene il valore di CHIAVE"
 
-#: gio/gsettings-tool.c:616 gio/gsettings-tool.c:622 gio/gsettings-tool.c:628
-#: gio/gsettings-tool.c:640 gio/gsettings-tool.c:652
+#: gio/gsettings-tool.c:628 gio/gsettings-tool.c:634 gio/gsettings-tool.c:640
+#: gio/gsettings-tool.c:652 gio/gsettings-tool.c:664
 msgid "SCHEMA[:PATH] KEY"
 msgstr "SCHEMA[:PERCORSO] CHIAVE"
 
-#: gio/gsettings-tool.c:621
+#: gio/gsettings-tool.c:633
 msgid "Query the range of valid values for KEY"
 msgstr "Interroga l'intervallo di valori ammessi per CHIAVE"
 
-#: gio/gsettings-tool.c:627
+#: gio/gsettings-tool.c:639
 msgid "Query the description for KEY"
 msgstr "Interroga la descrizione per CHIAVE"
 
-#: gio/gsettings-tool.c:633
+#: gio/gsettings-tool.c:645
 msgid "Set the value of KEY to VALUE"
 msgstr "Imposta il valore di CHIAVE a VALORE"
 
-#: gio/gsettings-tool.c:634
+#: gio/gsettings-tool.c:646
 msgid "SCHEMA[:PATH] KEY VALUE"
 msgstr "SCHEMA[:PERCORSO] CHIAVE VALORE"
 
-#: gio/gsettings-tool.c:639
+#: gio/gsettings-tool.c:651
 msgid "Reset KEY to its default value"
 msgstr "Azzera CHIAVE al suo valore predefinito"
 
-#: gio/gsettings-tool.c:645
+#: gio/gsettings-tool.c:657
 msgid "Reset all keys in SCHEMA to their defaults"
 msgstr "Azzera tutte le chiavi in SCHEMA ai rispettivi valori predefiniti"
 
-#: gio/gsettings-tool.c:651
+#: gio/gsettings-tool.c:663
 msgid "Check if KEY is writable"
 msgstr "Verifica se CHIAVE è scrivibile"
 
-#: gio/gsettings-tool.c:657
+#: gio/gsettings-tool.c:669
 msgid ""
 "Monitor KEY for changes.\n"
 "If no KEY is specified, monitor all keys in SCHEMA.\n"
@@ -3816,11 +3852,11 @@ msgstr ""
 "Se CHIAVE non è specificato, monitorizza tutte le chiavi in SCHEMA.\n"
 "Usare ^C per fermare il monitoraggio.\n"
 
-#: gio/gsettings-tool.c:660
+#: gio/gsettings-tool.c:672
 msgid "SCHEMA[:PATH] [KEY]"
 msgstr "SCHEMA[:PERCORSO] [CHIAVE]"
 
-#: gio/gsettings-tool.c:672
+#: gio/gsettings-tool.c:684
 msgid ""
 "Usage:\n"
 "  gsettings --version\n"
@@ -3867,7 +3903,7 @@ msgstr ""
 "\n"
 "Usare «gsettings help COMANDO» per ottenere un aiuto dettagliato.\n"
 
-#: gio/gsettings-tool.c:696
+#: gio/gsettings-tool.c:708
 #, c-format
 msgid ""
 "Usage:\n"
@@ -3882,11 +3918,11 @@ msgstr ""
 "%s\n"
 "\n"
 
-#: gio/gsettings-tool.c:702
+#: gio/gsettings-tool.c:714
 msgid "  SCHEMADIR A directory to search for additional schemas\n"
 msgstr "  DIR_SCHEMA  Una directory in cui cercare schemi aggiuntivi\n"
 
-#: gio/gsettings-tool.c:710
+#: gio/gsettings-tool.c:722
 msgid ""
 "  SCHEMA    The name of the schema\n"
 "  PATH      The path, for relocatable schemas\n"
@@ -3894,214 +3930,214 @@ msgstr ""
 "  SCHEMA    Il nome dello schema\n"
 "  PERCORSO  Il percorso, per gli schemi rilocabili\n"
 
-#: gio/gsettings-tool.c:715
+#: gio/gsettings-tool.c:727
 msgid "  KEY       The (optional) key within the schema\n"
 msgstr "  CHIAVE    La chiave (opzionale) all'interno dello schema\n"
 
-#: gio/gsettings-tool.c:719
+#: gio/gsettings-tool.c:731
 msgid "  KEY       The key within the schema\n"
 msgstr "  CHIAVE    La chiave all'interno dello schema\n"
 
-#: gio/gsettings-tool.c:723
+#: gio/gsettings-tool.c:735
 msgid "  VALUE     The value to set\n"
 msgstr "  VALORE    Il valore da impostare\n"
 
-#: gio/gsettings-tool.c:778
+#: gio/gsettings-tool.c:790
 #, c-format
 msgid "Could not load schemas from %s: %s\n"
 msgstr "Impossibile aprire i file schema da %s: %s\n"
 
-#: gio/gsettings-tool.c:790
+#: gio/gsettings-tool.c:802
 msgid "No schemas installed\n"
 msgstr "Nessun file schema installato\n"
 
-#: gio/gsettings-tool.c:869
+#: gio/gsettings-tool.c:881
 msgid "Empty schema name given\n"
 msgstr "Fornito un nome di schema vuoto\n"
 
-#: gio/gsettings-tool.c:924
+#: gio/gsettings-tool.c:936
 #, c-format
 msgid "No such key “%s”\n"
 msgstr "Chiave «%s» inesistente\n"
 
-#: gio/gsocket.c:413
+#: gio/gsocket.c:417
 msgid "Invalid socket, not initialized"
 msgstr "Socket non valido, non inizializzato"
 
-#: gio/gsocket.c:420
+#: gio/gsocket.c:424
 #, c-format
 msgid "Invalid socket, initialization failed due to: %s"
 msgstr "Socket non valido, inizializzazione non riuscita a causa di: %s"
 
-#: gio/gsocket.c:428
+#: gio/gsocket.c:432
 msgid "Socket is already closed"
 msgstr "Il socket è già chiuso"
 
-#: gio/gsocket.c:443 gio/gsocket.c:3190 gio/gsocket.c:4420 gio/gsocket.c:4478
+#: gio/gsocket.c:447 gio/gsocket.c:3194 gio/gsocket.c:4427 gio/gsocket.c:4485
 msgid "Socket I/O timed out"
 msgstr "I/O sul socket scaduto"
 
-#: gio/gsocket.c:578
+#: gio/gsocket.c:582
 #, c-format
 msgid "creating GSocket from fd: %s"
 msgstr "creazione di GSocket da FD: %s"
 
-#: gio/gsocket.c:607 gio/gsocket.c:671 gio/gsocket.c:678
+#: gio/gsocket.c:611 gio/gsocket.c:675 gio/gsocket.c:682
 #, c-format
 msgid "Unable to create socket: %s"
 msgstr "Impossibile creare il socket: %s"
 
-#: gio/gsocket.c:671
+#: gio/gsocket.c:675
 msgid "Unknown family was specified"
 msgstr "È stata specificata una famiglia sconosciuta"
 
-#: gio/gsocket.c:678
+#: gio/gsocket.c:682
 msgid "Unknown protocol was specified"
 msgstr "È stato specificato un protocollo sconosciuto"
 
-#: gio/gsocket.c:1169
+#: gio/gsocket.c:1173
 #, c-format
 msgid "Cannot use datagram operations on a non-datagram socket."
 msgstr "Impossibile utilizzare operazioni datagram su un socket non-datagram."
 
-#: gio/gsocket.c:1186
+#: gio/gsocket.c:1190
 #, c-format
 msgid "Cannot use datagram operations on a socket with a timeout set."
 msgstr ""
 "Impossibile utilizzare operazioni datagram su un socket con impostato un "
 "timeout."
 
-#: gio/gsocket.c:1993
+#: gio/gsocket.c:1997
 #, c-format
 msgid "could not get local address: %s"
 msgstr "impossibile ottenere l'indirizzo locale: %s"
 
-#: gio/gsocket.c:2039
+#: gio/gsocket.c:2043
 #, c-format
 msgid "could not get remote address: %s"
 msgstr "impossibile ottenere l'indirizzo remoto: %s"
 
-#: gio/gsocket.c:2105
+#: gio/gsocket.c:2109
 #, c-format
 msgid "could not listen: %s"
 msgstr "impossibile restare in ascolto: %s"
 
 # oppure "nell'eseguire il binding" ??
-#: gio/gsocket.c:2209
+#: gio/gsocket.c:2213
 #, c-format
 msgid "Error binding to address %s: %s"
 msgstr "Errore nell'eseguire il bind all'indirizzo %s: %s"
 
-#: gio/gsocket.c:2385 gio/gsocket.c:2422 gio/gsocket.c:2532 gio/gsocket.c:2557
-#: gio/gsocket.c:2620 gio/gsocket.c:2678 gio/gsocket.c:2696
+#: gio/gsocket.c:2389 gio/gsocket.c:2426 gio/gsocket.c:2536 gio/gsocket.c:2561
+#: gio/gsocket.c:2624 gio/gsocket.c:2682 gio/gsocket.c:2700
 #, c-format
 msgid "Error joining multicast group: %s"
 msgstr "Errore nel fare il join al gruppo multicast: %s"
 
-#: gio/gsocket.c:2386 gio/gsocket.c:2423 gio/gsocket.c:2533 gio/gsocket.c:2558
-#: gio/gsocket.c:2621 gio/gsocket.c:2679 gio/gsocket.c:2697
+#: gio/gsocket.c:2390 gio/gsocket.c:2427 gio/gsocket.c:2537 gio/gsocket.c:2562
+#: gio/gsocket.c:2625 gio/gsocket.c:2683 gio/gsocket.c:2701
 #, c-format
 msgid "Error leaving multicast group: %s"
 msgstr "Errore nel lasciare il gruppo multicast: %s"
 
-#: gio/gsocket.c:2387
+#: gio/gsocket.c:2391
 msgid "No support for source-specific multicast"
 msgstr "Nessun supporto per multicast source-specific"
 
-#: gio/gsocket.c:2534
+#: gio/gsocket.c:2538
 msgid "Unsupported socket family"
 msgstr "Famiglia socket non supportato"
 
-#: gio/gsocket.c:2559
+#: gio/gsocket.c:2563
 msgid "source-specific not an IPv4 address"
 msgstr "source-specific non è un indirizzo IPv4"
 
-#: gio/gsocket.c:2583
+#: gio/gsocket.c:2587
 #, c-format
 msgid "Interface name too long"
 msgstr "Nome interfaccia troppo lungo"
 
-#: gio/gsocket.c:2596 gio/gsocket.c:2646
+#: gio/gsocket.c:2600 gio/gsocket.c:2650
 #, c-format
 msgid "Interface not found: %s"
 msgstr "Interfaccia non trovata: %s"
 
-#: gio/gsocket.c:2622
+#: gio/gsocket.c:2626
 msgid "No support for IPv4 source-specific multicast"
 msgstr "Nessun supporto per multicast IPv4 source-specific"
 
-#: gio/gsocket.c:2680
+#: gio/gsocket.c:2684
 msgid "No support for IPv6 source-specific multicast"
 msgstr "Nessun supporto per multicast IPv6 source-specific"
 
-#: gio/gsocket.c:2889
+#: gio/gsocket.c:2893
 #, c-format
 msgid "Error accepting connection: %s"
 msgstr "Errore nell'accettare la connessione: %s"
 
-#: gio/gsocket.c:3015
+#: gio/gsocket.c:3019
 msgid "Connection in progress"
 msgstr "Connessione in corso"
 
-#: gio/gsocket.c:3066
+#: gio/gsocket.c:3070
 msgid "Unable to get pending error: "
 msgstr "Impossibile ottenere l'errore in sospeso: "
 
-#: gio/gsocket.c:3255
+#: gio/gsocket.c:3259
 #, c-format
 msgid "Error receiving data: %s"
 msgstr "Errore nel ricevere i dati: %s"
 
-#: gio/gsocket.c:3452
+#: gio/gsocket.c:3456
 #, c-format
 msgid "Error sending data: %s"
 msgstr "Errore nell'inviare i dati: %s"
 
-#: gio/gsocket.c:3639
+#: gio/gsocket.c:3643
 #, c-format
 msgid "Unable to shutdown socket: %s"
 msgstr "Impossibile arrestare il socket: %s"
 
-#: gio/gsocket.c:3720
+#: gio/gsocket.c:3724
 #, c-format
 msgid "Error closing socket: %s"
 msgstr "Errore nel chiudere il socket: %s"
 
-#: gio/gsocket.c:4413
+#: gio/gsocket.c:4420
 #, c-format
 msgid "Waiting for socket condition: %s"
 msgstr "In attesa della condizione del socket: %s"
 
-#: gio/gsocket.c:4804 gio/gsocket.c:4820 gio/gsocket.c:4833
+#: gio/gsocket.c:4810 gio/gsocket.c:4826 gio/gsocket.c:4839
 #, c-format
 msgid "Unable to send message: %s"
 msgstr "Impossibile inviare un messaggio: %s"
 
-#: gio/gsocket.c:4805 gio/gsocket.c:4821 gio/gsocket.c:4834
+#: gio/gsocket.c:4811 gio/gsocket.c:4827 gio/gsocket.c:4840
 msgid "Message vectors too large"
 msgstr "Vettori di messaggi troppo grandi"
 
-#: gio/gsocket.c:4850 gio/gsocket.c:4852 gio/gsocket.c:4999 gio/gsocket.c:5084
-#: gio/gsocket.c:5262 gio/gsocket.c:5302 gio/gsocket.c:5304
+#: gio/gsocket.c:4856 gio/gsocket.c:4858 gio/gsocket.c:5005 gio/gsocket.c:5090
+#: gio/gsocket.c:5268 gio/gsocket.c:5308 gio/gsocket.c:5310
 #, c-format
 msgid "Error sending message: %s"
 msgstr "Errore nell'inviare il messaggio: %s"
 
-#: gio/gsocket.c:5026
+#: gio/gsocket.c:5032
 msgid "GSocketControlMessage not supported on Windows"
 msgstr "GSocketControlMessage non supportato su Windows"
 
-#: gio/gsocket.c:5495 gio/gsocket.c:5571 gio/gsocket.c:5797
+#: gio/gsocket.c:5505 gio/gsocket.c:5581 gio/gsocket.c:5807
 #, c-format
 msgid "Error receiving message: %s"
 msgstr "Errore nel ricevere il messaggio: %s"
 
-#: gio/gsocket.c:6070 gio/gsocket.c:6081 gio/gsocket.c:6127
+#: gio/gsocket.c:6090 gio/gsocket.c:6101 gio/gsocket.c:6164
 #, c-format
 msgid "Unable to read socket credentials: %s"
 msgstr "Impossibile reggere le credenziali del socket: %s"
 
-#: gio/gsocket.c:6136
+#: gio/gsocket.c:6173
 msgid "g_socket_get_credentials not implemented for this OS"
 msgstr "g_socket_get_credentials non implementata per questo SO"
 
@@ -4120,11 +4156,11 @@ msgid "Could not connect: "
 msgstr "Impossibile connettersi: "
 
 # FIXME: il tentativo o la connessione?
-#: gio/gsocketclient.c:1162 gio/gsocketclient.c:1749
+#: gio/gsocketclient.c:1202 gio/gsocketclient.c:1793
 msgid "Proxying over a non-TCP connection is not supported."
 msgstr "L'esecuzione del proxy su una connessione non-TCP non è supportato."
 
-#: gio/gsocketclient.c:1194 gio/gsocketclient.c:1778
+#: gio/gsocketclient.c:1234 gio/gsocketclient.c:1822
 #, c-format
 msgid "Proxy protocol “%s” is not supported."
 msgstr "Il protocollo proxy «%s» non è supportato."
@@ -4228,7 +4264,7 @@ msgid "Unknown SOCKSv5 proxy error."
 msgstr "Errore sconosciuto del proxy SOCKSv5."
 
 # (%s) è in fondo perché risolto in g_strerror (gint)
-#: gio/gtestdbus.c:612 glib/gspawn-win32.c:311
+#: gio/gtestdbus.c:612 glib/gspawn-win32.c:314
 #, c-format
 msgid "Failed to create pipe for communicating with child process (%s)"
 msgstr ""
@@ -4253,44 +4289,66 @@ msgstr "Non è stato trovato alcun indirizzo valido"
 msgid "Error reverse-resolving “%s”: %s"
 msgstr "Errore nella risoluzione inversa di «%s»: %s"
 
-#: gio/gthreadedresolver.c:676 gio/gthreadedresolver.c:755
-#: gio/gthreadedresolver.c:853 gio/gthreadedresolver.c:903
+#. Translators: the placeholder is a DNS record type, such as ‘MX’ or ‘SRV’
+#: gio/gthreadedresolver.c:550 gio/gthreadedresolver.c:572
+#: gio/gthreadedresolver.c:610 gio/gthreadedresolver.c:657
+#: gio/gthreadedresolver.c:686 gio/gthreadedresolver.c:698
+#, c-format
+msgid "Error parsing DNS %s record: malformed DNS packet"
+msgstr "Errore nell'analizzare il record DNS %s: pacchetto DNS non valido"
+
+#: gio/gthreadedresolver.c:756 gio/gthreadedresolver.c:893
+#: gio/gthreadedresolver.c:991 gio/gthreadedresolver.c:1041
 #, c-format
 msgid "No DNS record of the requested type for “%s”"
 msgstr "Nessun record DNS del tipo richiesto per «%s»"
 
-#: gio/gthreadedresolver.c:681 gio/gthreadedresolver.c:858
+#: gio/gthreadedresolver.c:761 gio/gthreadedresolver.c:996
 #, c-format
 msgid "Temporarily unable to resolve “%s”"
 msgstr "Momentaneamente impossibile risolvere «%s»"
 
-#: gio/gthreadedresolver.c:686 gio/gthreadedresolver.c:863
-#: gio/gthreadedresolver.c:973
+#: gio/gthreadedresolver.c:766 gio/gthreadedresolver.c:1001
+#: gio/gthreadedresolver.c:1111
 #, c-format
 msgid "Error resolving “%s”"
 msgstr "Errore nel risolvere «%s»"
 
-#: gio/gtlscertificate.c:431
+#: gio/gthreadedresolver.c:780 gio/gthreadedresolver.c:804
+#: gio/gthreadedresolver.c:829 gio/gthreadedresolver.c:844
+msgid "Malformed DNS packet"
+msgstr "Pacchetto DNS non valido"
+
+#: gio/gthreadedresolver.c:886
+#, c-format
+msgid "Failed to parse DNS response for “%s”: "
+msgstr "Analisi della risposta DNS per «%s» non riuscita: "
+
+#: gio/gtlscertificate.c:478
 msgid "No PEM-encoded private key found"
 msgstr "Non è stato trovata alcuna chiave privata codificata con PEM"
 
-#: gio/gtlscertificate.c:441
+#: gio/gtlscertificate.c:488
 msgid "Cannot decrypt PEM-encoded private key"
 msgstr "Impossibile decifrare la chiave privata codificata con PEM"
 
-#: gio/gtlscertificate.c:452
+#: gio/gtlscertificate.c:499
 msgid "Could not parse PEM-encoded private key"
 msgstr "Impossibile analizzare la chiave privata codificata con PEM"
 
-#: gio/gtlscertificate.c:479
+#: gio/gtlscertificate.c:526
 msgid "No PEM-encoded certificate found"
 msgstr "Non è stato trovato alcun certificato codificato con PEM"
 
-#: gio/gtlscertificate.c:488
+#: gio/gtlscertificate.c:535
 msgid "Could not parse PEM-encoded certificate"
 msgstr "Impossibile analizzare il certificato codificato con PEM"
 
-#: gio/gtlscertificate.c:844
+#: gio/gtlscertificate.c:796
+msgid "The current TLS backend does not support PKCS #12"
+msgstr "L'attuale sistema TLS non supporta PKCS #12"
+
+#: gio/gtlscertificate.c:1013
 msgid "This GTlsBackend does not support creating PKCS #11 certificates"
 msgstr "Questo GTlsBackend non supporta la creazione di certificati PKCS #11"
 
@@ -4316,56 +4374,64 @@ msgstr ""
 msgid "The password entered is incorrect."
 msgstr "La password inserita non è corretta."
 
-#: gio/gunixconnection.c:166 gio/gunixconnection.c:579
+#: gio/gunixconnection.c:125
+msgid "Sending FD is not supported"
+msgstr "L'invio di FD non è supportato"
+
+#: gio/gunixconnection.c:178 gio/gunixconnection.c:596
 #, c-format
 msgid "Expecting 1 control message, got %d"
 msgid_plural "Expecting 1 control message, got %d"
 msgstr[0] "Atteso 1 messaggio di controllo, ottenuto %d"
 msgstr[1] "Atteso 1 messaggio di controllo, ottenuti %d"
 
-#: gio/gunixconnection.c:182 gio/gunixconnection.c:591
+#: gio/gunixconnection.c:194 gio/gunixconnection.c:608
 msgid "Unexpected type of ancillary data"
 msgstr "Tipo di dati ausiliari inatteso"
 
 # tolto il "but" per omogeneità con l'altro simile
-#: gio/gunixconnection.c:200
+#: gio/gunixconnection.c:212
 #, c-format
 msgid "Expecting one fd, but got %d\n"
 msgid_plural "Expecting one fd, but got %d\n"
 msgstr[0] "Atteso un FD, ottenuto %d\n"
 msgstr[1] "Atteso un FD, ottenuti %d\n"
 
-#: gio/gunixconnection.c:219
+#: gio/gunixconnection.c:231
 msgid "Received invalid fd"
 msgstr "Ricevuto FD non valido"
 
-#: gio/gunixconnection.c:363
+#: gio/gunixconnection.c:238
+msgid "Receiving FD is not supported"
+msgstr "La ricezione di FD non è supportata"
+
+#: gio/gunixconnection.c:380
 msgid "Error sending credentials: "
 msgstr "Errore nell'inviare le credenziali: "
 
-#: gio/gunixconnection.c:520
+#: gio/gunixconnection.c:537
 #, c-format
 msgid "Error checking if SO_PASSCRED is enabled for socket: %s"
 msgstr "Errore nel verificare se SO_PASSCRED è abilitato per il socket: %s"
 
-#: gio/gunixconnection.c:536
+#: gio/gunixconnection.c:553
 #, c-format
 msgid "Error enabling SO_PASSCRED: %s"
 msgstr "Errore nell'abilitare SO_PASSCRED: %s"
 
-#: gio/gunixconnection.c:565
+#: gio/gunixconnection.c:582
 msgid ""
 "Expecting to read a single byte for receiving credentials but read zero bytes"
 msgstr ""
 "Attesa la lettura di un singolo byte per la ricezione delle credenziali, ma "
 "sono stati letti zero byte"
 
-#: gio/gunixconnection.c:605
+#: gio/gunixconnection.c:622
 #, c-format
 msgid "Not expecting control message, but got %d"
 msgstr "Messaggio di controllo inatteso, ottenuti %d"
 
-#: gio/gunixconnection.c:630
+#: gio/gunixconnection.c:647
 #, c-format
 msgid "Error while disabling SO_PASSCRED: %s"
 msgstr "Errore durante la disabilitazione di SO_PASSCRED: %s"
@@ -4381,7 +4447,7 @@ msgstr "Errore nel leggere dal descrittore di file: %s"
 msgid "Error closing file descriptor: %s"
 msgstr "Errore nel chiudere il descrittore di file: %s"
 
-#: gio/gunixmounts.c:2785 gio/gunixmounts.c:2838
+#: gio/gunixmounts.c:2809 gio/gunixmounts.c:2862
 msgid "Filesystem root"
 msgstr "File system radice"
 
@@ -4394,7 +4460,7 @@ msgstr "Errore nello scrivere sul descrittore di file: %s"
 
 # a chi è riferito abstract??
 # a addresses o a domain?
-#: gio/gunixsocketaddress.c:244
+#: gio/gunixsocketaddress.c:251
 msgid "Abstract UNIX domain socket addresses not supported on this system"
 msgstr ""
 "Indirizzi di socket di dominio UNIX astratto non supportati su questo sistema"
@@ -4553,8 +4619,8 @@ msgstr "Espansione della riga exec «%s» con l'URI «%s» non riuscita"
 msgid "Unrepresentable character in conversion input"
 msgstr "Carattere non rappresentabile nell'ingresso per la conversione"
 
-#: glib/gconvert.c:495 glib/gutf8.c:871 glib/gutf8.c:1083 glib/gutf8.c:1220
-#: glib/gutf8.c:1324
+#: glib/gconvert.c:495 glib/gutf8.c:886 glib/gutf8.c:1099 glib/gutf8.c:1236
+#: glib/gutf8.c:1340
 msgid "Partial character sequence at end of input"
 msgstr "Sequenza di caratteri parziale al termine dei dati in ingresso"
 
@@ -5132,15 +5198,15 @@ msgstr "Impossibile eseguire una lettura grezza in g_io_channel_read_to_end"
 # key files sono, per glib, file di impostazioni in stile Windows INI
 #
 # Ad esempio i file .themes per i temi del desktop e delle icone.
-#: glib/gkeyfile.c:791
+#: glib/gkeyfile.c:794
 msgid "Valid key file could not be found in search dirs"
 msgstr "Impossibile trovare un file chiavi valido nelle directory di ricerca"
 
-#: glib/gkeyfile.c:828
+#: glib/gkeyfile.c:831
 msgid "Not a regular file"
 msgstr "Non è un file normale"
 
-#: glib/gkeyfile.c:1283
+#: glib/gkeyfile.c:1289
 #, c-format
 msgid ""
 "Key file contains line “%s” which is not a key-value pair, group, or comment"
@@ -5148,44 +5214,44 @@ msgstr ""
 "Il file chiavi contiene la riga «%s» che non è una coppia chiave/valore, un "
 "gruppo o un commento valido"
 
-#: glib/gkeyfile.c:1340
+#: glib/gkeyfile.c:1346
 #, c-format
 msgid "Invalid group name: %s"
 msgstr "Nome gruppo non valido: %s"
 
-#: glib/gkeyfile.c:1362
+#: glib/gkeyfile.c:1370
 msgid "Key file does not start with a group"
 msgstr "Il file chiavi non inizia con un gruppo"
 
-#: glib/gkeyfile.c:1388
+#: glib/gkeyfile.c:1394
 #, c-format
-msgid "Invalid key name: %s"
-msgstr "Nome chiave non valido: %s"
+msgid "Invalid key name: %.*s"
+msgstr "Nome chiave non valido: %.*s"
 
-#: glib/gkeyfile.c:1415
+#: glib/gkeyfile.c:1422
 #, c-format
 msgid "Key file contains unsupported encoding “%s”"
 msgstr "Il file chiavi contiene la codifica non supportata «%s»"
 
-#: glib/gkeyfile.c:1664 glib/gkeyfile.c:1837 glib/gkeyfile.c:3287
-#: glib/gkeyfile.c:3351 glib/gkeyfile.c:3481 glib/gkeyfile.c:3613
-#: glib/gkeyfile.c:3759 glib/gkeyfile.c:3994 glib/gkeyfile.c:4061
+#: glib/gkeyfile.c:1677 glib/gkeyfile.c:1850 glib/gkeyfile.c:3297
+#: glib/gkeyfile.c:3361 glib/gkeyfile.c:3491 glib/gkeyfile.c:3623
+#: glib/gkeyfile.c:3769 glib/gkeyfile.c:4004 glib/gkeyfile.c:4071
 #, c-format
 msgid "Key file does not have group “%s”"
 msgstr "Il file chiavi non presenta il gruppo «%s»"
 
-#: glib/gkeyfile.c:1792
+#: glib/gkeyfile.c:1805
 #, c-format
 msgid "Key file does not have key “%s” in group “%s”"
 msgstr "Il file chiavi non presenta alcuna chiave «%s» nel gruppo «%s»"
 
-#: glib/gkeyfile.c:1954 glib/gkeyfile.c:2070
+#: glib/gkeyfile.c:1967 glib/gkeyfile.c:2083
 #, c-format
 msgid "Key file contains key “%s” with value “%s” which is not UTF-8"
 msgstr ""
 "Il file chiavi contiene la chiave «%s» con il valore «%s» che non è UTF-8"
 
-#: glib/gkeyfile.c:1974 glib/gkeyfile.c:2090 glib/gkeyfile.c:2529
+#: glib/gkeyfile.c:1987 glib/gkeyfile.c:2103 glib/gkeyfile.c:2542
 #, c-format
 msgid ""
 "Key file contains key “%s” which has a value that cannot be interpreted."
@@ -5193,7 +5259,7 @@ msgstr ""
 "Il file chiavi contiene la chiave «%s» che presenta un valore che non può "
 "essere interpretato."
 
-#: glib/gkeyfile.c:2747 glib/gkeyfile.c:3116
+#: glib/gkeyfile.c:2757 glib/gkeyfile.c:3126
 #, c-format
 msgid ""
 "Key file contains key “%s” in group “%s” which has a value that cannot be "
@@ -5202,37 +5268,37 @@ msgstr ""
 "Il file chiavi contiene la chiave «%s» nel gruppo «%s» che presenta un "
 "valore che non può essere interpretato."
 
-#: glib/gkeyfile.c:2825 glib/gkeyfile.c:2902
+#: glib/gkeyfile.c:2835 glib/gkeyfile.c:2912
 #, c-format
 msgid "Key “%s” in group “%s” has value “%s” where %s was expected"
 msgstr ""
 "La chiave «%s» nel gruppo «%s» presenta il valore «%s» mentre era atteso %s"
 
-#: glib/gkeyfile.c:4304
+#: glib/gkeyfile.c:4324
 msgid "Key file contains escape character at end of line"
 msgstr "Il file chiavi contiene un carattere di escape alla fine della riga"
 
-#: glib/gkeyfile.c:4326
+#: glib/gkeyfile.c:4346
 #, c-format
 msgid "Key file contains invalid escape sequence “%s”"
 msgstr "Il file chiavi contiene la sequenza di escape non valida «%s»"
 
-#: glib/gkeyfile.c:4470
+#: glib/gkeyfile.c:4491
 #, c-format
 msgid "Value “%s” cannot be interpreted as a number."
 msgstr "Impossibile interpretare il valore «%s» come un numero."
 
-#: glib/gkeyfile.c:4484
+#: glib/gkeyfile.c:4505
 #, c-format
 msgid "Integer value “%s” out of range"
 msgstr "Il valore intero «%s» è fuori dall'intervallo"
 
-#: glib/gkeyfile.c:4517
+#: glib/gkeyfile.c:4538
 #, c-format
 msgid "Value “%s” cannot be interpreted as a float number."
 msgstr "Impossibile interpretare il valore «%s» come un numero float."
 
-#: glib/gkeyfile.c:4556
+#: glib/gkeyfile.c:4577
 #, c-format
 msgid "Value “%s” cannot be interpreted as a boolean."
 msgstr "Impossibile interpretare il valore «%s» come un booleano."
@@ -5543,7 +5609,7 @@ msgstr "Errore nell'analizzare l'opzione %s"
 msgid "Missing argument for %s"
 msgstr "Argomento mancante per %s"
 
-#: glib/goption.c:2185
+#: glib/goption.c:2184
 #, c-format
 msgid "Unknown option %s"
 msgstr "Opzione %s sconosciuta"
@@ -5971,134 +6037,146 @@ msgid "Failed to read data from child process (%s)"
 msgstr "Lettura dei dati dal processo figlio non riuscita (%s)"
 
 # (%s) è in fondo perché risolto in g_strerror (gint)
-#: glib/gspawn.c:461
+#: glib/gspawn.c:462
 #, c-format
 msgid "Unexpected error in reading data from a child process (%s)"
 msgstr "Errore inatteso nel leggere i dati da un processo figlio (%s)"
 
-#: glib/gspawn.c:546
+#: glib/gspawn.c:547
 #, c-format
 msgid "Unexpected error in waitpid() (%s)"
 msgstr "Errore inatteso in waitpid() (%s)"
 
-#: glib/gspawn.c:1166 glib/gspawn-win32.c:1407
+#: glib/gspawn.c:1175 glib/gspawn-win32.c:1438
 #, c-format
 msgid "Child process exited with code %ld"
 msgstr "Processo figlio uscito con codice %ld"
 
-#: glib/gspawn.c:1174
+#: glib/gspawn.c:1183
 #, c-format
 msgid "Child process killed by signal %ld"
 msgstr "Processo figlio ucciso dal segnale %ld"
 
-#: glib/gspawn.c:1181
+#: glib/gspawn.c:1190
 #, c-format
 msgid "Child process stopped by signal %ld"
 msgstr "Processo figlio fermato dal segnale %ld"
 
-#: glib/gspawn.c:1188
+#: glib/gspawn.c:1197
 #, c-format
 msgid "Child process exited abnormally"
 msgstr "Il processo figlio è uscito in modo anomalo"
 
 # (%s) è in fondo perché risolto in g_strerror (gint)
-#: glib/gspawn.c:1864 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
+#: glib/gspawn.c:1890 glib/gspawn-win32.c:353 glib/gspawn-win32.c:361
 #, c-format
 msgid "Failed to read from child pipe (%s)"
 msgstr "Lettura dalla pipe figlia non riuscita (%s)"
 
 # (%s) è in fondo perché risolto in g_strerror (gint)
-#: glib/gspawn.c:2166
+#: glib/gspawn.c:2253
 #, c-format
 msgid "Failed to spawn child process “%s” (%s)"
 msgstr "Esecuzione del processo figlio «%s» non riuscita (%s)"
 
 # (%s) è in fondo perché risolto in g_strerror (gint)
-#: glib/gspawn.c:2283
+#: glib/gspawn.c:2370
 #, c-format
 msgid "Failed to fork (%s)"
 msgstr "Esecuzione di fork non riuscita (%s)"
 
 # (%s) è in fondo perché risolto in g_strerror (gint)
-#: glib/gspawn.c:2443 glib/gspawn-win32.c:381
+#: glib/gspawn.c:2530 glib/gspawn-win32.c:384
 #, c-format
 msgid "Failed to change to directory “%s” (%s)"
 msgstr "Cambio della directory in «%s» non riuscito (%s)"
 
 # (%s) è in fondo perché risolto in g_strerror (gint)
-#: glib/gspawn.c:2453
+#: glib/gspawn.c:2540
 #, c-format
 msgid "Failed to execute child process “%s” (%s)"
 msgstr "Esecuzione del processo figlio «%s» non riuscita (%s)"
 
+#: glib/gspawn.c:2550
+#, c-format
+msgid "Failed to open file to remap file descriptor (%s)"
+msgstr "Apertura del file per rimappare il descrittore file non riuscita (%s)"
+
 # (%s) è in fondo perché risolto in g_strerror (gint)
-#: glib/gspawn.c:2463
+#: glib/gspawn.c:2558
 #, c-format
-msgid "Failed to redirect output or input of child process (%s)"
-msgstr "Ridirezione dell'output o input del processo figlio non riuscita (%s)"
+msgid "Failed to duplicate file descriptor for child process (%s)"
+msgstr ""
+"Duplicazione del descrittore file per il processo figlio non riuscita (%s)"
 
 # (%s) è in fondo perché risolto in g_strerror (gint)
-#: glib/gspawn.c:2472
+#: glib/gspawn.c:2567
 #, c-format
 msgid "Failed to fork child process (%s)"
 msgstr "Esecuzione del fork per processo figlio non riuscita (%s)"
 
 # (%s) è in fondo perché risolto in g_strerror (gint)
-#: glib/gspawn.c:2480
+#: glib/gspawn.c:2575
 #, c-format
 msgid "Failed to close file descriptor for child process (%s)"
-msgstr "Chiusura del descrittore file dal processo figlio non riuscita (%s)"
+msgstr "Chiusura del descrittore file per il processo figlio non riuscita (%s)"
 
-#: glib/gspawn.c:2488
+#: glib/gspawn.c:2583
 #, c-format
 msgid "Unknown error executing child process “%s”"
 msgstr "Errore sconosciuto nell'eseguire il processo figlio «%s»"
 
 # (%s) è in fondo perché risolto in g_strerror (gint)
-#: glib/gspawn.c:2512
+#: glib/gspawn.c:2607
 #, c-format
 msgid "Failed to read enough data from child pid pipe (%s)"
 msgstr ""
 "Lettura di una quantità di dati sufficiente dalla pipe del processo figlio "
 "non riuscita (%s)"
 
-#: glib/gspawn-win32.c:294
+#: glib/gspawn-win32.c:297
 msgid "Failed to read data from child process"
 msgstr "Lettura di dati dal processo figlio non riuscita"
 
 # (%s) è in fondo perché risolto in g_strerror (gint)
-#: glib/gspawn-win32.c:387 glib/gspawn-win32.c:392 glib/gspawn-win32.c:511
+#: glib/gspawn-win32.c:390 glib/gspawn-win32.c:395 glib/gspawn-win32.c:521
 #, c-format
 msgid "Failed to execute child process (%s)"
 msgstr "Esecuzione del processo figlio non riuscita (%s)"
 
-#: glib/gspawn-win32.c:461
+# (%s) è in fondo perché risolto in g_strerror (gint)
+#: glib/gspawn-win32.c:400
+#, c-format
+msgid "Failed to dup() in child process (%s)"
+msgstr "Esecuzione di dup() nel processo figlio non riuscita (%s)"
+
+#: glib/gspawn-win32.c:471
 #, c-format
 msgid "Invalid program name: %s"
 msgstr "Nome programma non valido: %s"
 
-#: glib/gspawn-win32.c:471 glib/gspawn-win32.c:779
+#: glib/gspawn-win32.c:481 glib/gspawn-win32.c:807
 #, c-format
 msgid "Invalid string in argument vector at %d: %s"
 msgstr "Stringa non valida nel vettore di argomenti alla posizione %d: %s"
 
-#: glib/gspawn-win32.c:482 glib/gspawn-win32.c:794
+#: glib/gspawn-win32.c:492 glib/gspawn-win32.c:823
 #, c-format
 msgid "Invalid string in environment: %s"
 msgstr "Stringa non valida nell'ambiente: %s"
 
-#: glib/gspawn-win32.c:775
+#: glib/gspawn-win32.c:803
 #, c-format
 msgid "Invalid working directory: %s"
 msgstr "Directory di lavoro non valida: %s"
 
 # (%s) è in fondo perché risolto in g_strerror (gint)
-#: glib/gspawn-win32.c:837
+#: glib/gspawn-win32.c:868
 #, c-format
 msgid "Failed to execute helper program (%s)"
 msgstr "Esecuzione del programma helper non riuscita (%s)"
 
-#: glib/gspawn-win32.c:1064
+#: glib/gspawn-win32.c:1096
 msgid ""
 "Unexpected error in g_io_channel_win32_poll() reading data from a child "
 "process"
@@ -6106,21 +6184,21 @@ msgstr ""
 "Errore inatteso in g_io_channel_win32_poll() nel leggere i dati da un "
 "processo figlio"
 
-#: glib/gstrfuncs.c:3345 glib/gstrfuncs.c:3447
+#: glib/gstrfuncs.c:3351 glib/gstrfuncs.c:3453
 msgid "Empty string is not a number"
 msgstr "La stringa vuota non è un numero"
 
-#: glib/gstrfuncs.c:3369
+#: glib/gstrfuncs.c:3375
 #, c-format
 msgid "“%s” is not a signed number"
 msgstr "«%s» non è un numero con segno"
 
-#: glib/gstrfuncs.c:3379 glib/gstrfuncs.c:3483
+#: glib/gstrfuncs.c:3385 glib/gstrfuncs.c:3489
 #, c-format
 msgid "Number “%s” is out of bounds [%s, %s]"
 msgstr "Numero «%s» oltre i limiti [%s, %s]"
 
-#: glib/gstrfuncs.c:3473
+#: glib/gstrfuncs.c:3479
 #, c-format
 msgid "“%s” is not an unsigned number"
 msgstr "«%s» non è un numero senza segno"
@@ -6181,175 +6259,175 @@ msgstr "L'URI non è assoluto e non è stato fornito un URI di base"
 msgid "Missing ‘=’ and parameter value"
 msgstr "Manca il simbolo «=» e il valore"
 
-#: glib/gutf8.c:817
+#: glib/gutf8.c:832
 msgid "Failed to allocate memory"
 msgstr "Allocazione della memoria non riuscita"
 
-#: glib/gutf8.c:950
+#: glib/gutf8.c:965
 msgid "Character out of range for UTF-8"
 msgstr "Carattere fuori dall'intervallo per UTF-8"
 
-#: glib/gutf8.c:1051 glib/gutf8.c:1060 glib/gutf8.c:1190 glib/gutf8.c:1199
-#: glib/gutf8.c:1338 glib/gutf8.c:1435
+#: glib/gutf8.c:1067 glib/gutf8.c:1076 glib/gutf8.c:1206 glib/gutf8.c:1215
+#: glib/gutf8.c:1354 glib/gutf8.c:1451
 msgid "Invalid sequence in conversion input"
 msgstr "Sequenza non valida in ingresso per la conversione"
 
-#: glib/gutf8.c:1349 glib/gutf8.c:1446
+#: glib/gutf8.c:1365 glib/gutf8.c:1462
 msgid "Character out of range for UTF-16"
 msgstr "Carattere fuori dall'intervallo per UTF-16"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2770
+#: glib/gutils.c:2849
 #, c-format
 msgid "%.1f kB"
 msgstr "%.1f kB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2772
+#: glib/gutils.c:2851
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2774
+#: glib/gutils.c:2853
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2776
+#: glib/gutils.c:2855
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2778
+#: glib/gutils.c:2857
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2780
+#: glib/gutils.c:2859
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2784
+#: glib/gutils.c:2863
 #, c-format
 msgid "%.1f KiB"
 msgstr "%.1f KiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2786
+#: glib/gutils.c:2865
 #, c-format
 msgid "%.1f MiB"
 msgstr "%.1f MiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2788
+#: glib/gutils.c:2867
 #, c-format
 msgid "%.1f GiB"
 msgstr "%.1f GiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2790
+#: glib/gutils.c:2869
 #, c-format
 msgid "%.1f TiB"
 msgstr "%.1f TiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2792
+#: glib/gutils.c:2871
 #, c-format
 msgid "%.1f PiB"
 msgstr "%.1f PiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2794
+#: glib/gutils.c:2873
 #, c-format
 msgid "%.1f EiB"
 msgstr "%.1f EiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2798
+#: glib/gutils.c:2877
 #, c-format
 msgid "%.1f kb"
 msgstr "%.1f kb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2800
+#: glib/gutils.c:2879
 #, c-format
 msgid "%.1f Mb"
 msgstr "%.1f Mb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2802
+#: glib/gutils.c:2881
 #, c-format
 msgid "%.1f Gb"
 msgstr "%.1f Gb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2804
+#: glib/gutils.c:2883
 #, c-format
 msgid "%.1f Tb"
 msgstr "%.1f Tb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2806
+#: glib/gutils.c:2885
 #, c-format
 msgid "%.1f Pb"
 msgstr "%.1f Pb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2808
+#: glib/gutils.c:2887
 #, c-format
 msgid "%.1f Eb"
 msgstr "%.1f Eb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2812
+#: glib/gutils.c:2891
 #, c-format
 msgid "%.1f Kib"
 msgstr "%.1f Kib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2814
+#: glib/gutils.c:2893
 #, c-format
 msgid "%.1f Mib"
 msgstr "%.1f Mib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2816
+#: glib/gutils.c:2895
 #, c-format
 msgid "%.1f Gib"
 msgstr "%.1f Gib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2818
+#: glib/gutils.c:2897
 #, c-format
 msgid "%.1f Tib"
 msgstr "%.1f Tib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2820
+#: glib/gutils.c:2899
 #, c-format
 msgid "%.1f Pib"
 msgstr "%.1f Pib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2822
+#: glib/gutils.c:2901
 #, c-format
 msgid "%.1f Eib"
 msgstr "%.1f Eib"
 
-#: glib/gutils.c:2856 glib/gutils.c:2973
+#: glib/gutils.c:2935 glib/gutils.c:3052
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
 msgstr[0] "%u byte"
 msgstr[1] "%u byte"
 
-#: glib/gutils.c:2860
+#: glib/gutils.c:2939
 #, c-format
 msgid "%u bit"
 msgid_plural "%u bits"
@@ -6357,7 +6435,7 @@ msgstr[0] "%u bit"
 msgstr[1] "%u bit"
 
 #. Translators: the %s in "%s bytes" will always be replaced by a number.
-#: glib/gutils.c:2927
+#: glib/gutils.c:3006
 #, c-format
 msgid "%s byte"
 msgid_plural "%s bytes"
@@ -6365,7 +6443,7 @@ msgstr[0] "%s byte"
 msgstr[1] "%s byte"
 
 #. Translators: the %s in "%s bits" will always be replaced by a number.
-#: glib/gutils.c:2932
+#: glib/gutils.c:3011
 #, c-format
 msgid "%s bit"
 msgid_plural "%s bits"
@@ -6377,32 +6455,32 @@ msgstr[1] "%s bit"
 #. * compatibility.  Users will not see this string unless a program is using this deprecated function.
 #. * Please translate as literally as possible.
 #.
-#: glib/gutils.c:2986
+#: glib/gutils.c:3065
 #, c-format
 msgid "%.1f KB"
 msgstr "%.1f kB"
 
-#: glib/gutils.c:2991
+#: glib/gutils.c:3070
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
-#: glib/gutils.c:2996
+#: glib/gutils.c:3075
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
-#: glib/gutils.c:3001
+#: glib/gutils.c:3080
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
-#: glib/gutils.c:3006
+#: glib/gutils.c:3085
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
-#: glib/gutils.c:3011
+#: glib/gutils.c:3090
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
index 5230322..988e2d0 100644 (file)
--- a/po/kk.po
+++ b/po/kk.po
@@ -7,8 +7,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: master\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/glib/issues\n"
-"POT-Creation-Date: 2021-07-19 15:52+0000\n"
-"PO-Revision-Date: 2021-08-29 22:04+0500\n"
+"POT-Creation-Date: 2022-02-14 13:48+0000\n"
+"PO-Revision-Date: 2022-03-12 22:39+0500\n"
 "Last-Translator: Baurzhan Muftakhidinov <baurthefirst@gmail.com>\n"
 "Language-Team: Kazakh <kk_KZ@googlegroups.com>\n"
 "Language: kk\n"
@@ -16,30 +16,39 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Poedit 3.0\n"
+"X-Generator: Poedit 3.0.1\n"
 
-#: gio/gapplication.c:500
+#: gio/gappinfo.c:333
+#| msgid "Cancellable initialization not supported"
+msgid "Setting default applications not supported yet"
+msgstr ""
+
+#: gio/gappinfo.c:366
+msgid "Setting application as last used for type not supported yet"
+msgstr ""
+
+#: gio/gapplication.c:497
 msgid "GApplication options"
 msgstr "GApplication опциялары"
 
-#: gio/gapplication.c:500
+#: gio/gapplication.c:497
 msgid "Show GApplication options"
 msgstr "GApplication опцияларын көрсету"
 
-#: gio/gapplication.c:545
+#: gio/gapplication.c:542
 msgid "Enter GApplication service mode (use from D-Bus service files)"
 msgstr ""
 
-#: gio/gapplication.c:557
+#: gio/gapplication.c:554
 msgid "Override the application’s ID"
 msgstr ""
 
-#: gio/gapplication.c:569
+#: gio/gapplication.c:566
 msgid "Replace the running instance"
 msgstr ""
 
 #: gio/gapplication-tool.c:45 gio/gapplication-tool.c:46 gio/gio-tool.c:227
-#: gio/gresource-tool.c:494 gio/gsettings-tool.c:572
+#: gio/gresource-tool.c:494 gio/gsettings-tool.c:584
 msgid "Print help"
 msgstr "Көмекті шығару"
 
@@ -51,7 +60,7 @@ msgstr "[КОМАНДА]"
 msgid "Print version"
 msgstr "Нұсқа ақпаратын шығару"
 
-#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:578
+#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:590
 msgid "Print version information and exit"
 msgstr "Нұсқа ақпаратын шығару және шығу"
 
@@ -112,8 +121,8 @@ msgstr ""
 msgid "Application identifier in D-Bus format (eg: org.example.viewer)"
 msgstr ""
 
-#: gio/gapplication-tool.c:74 gio/glib-compile-resources.c:738
-#: gio/glib-compile-resources.c:744 gio/glib-compile-resources.c:772
+#: gio/gapplication-tool.c:74 gio/glib-compile-resources.c:820
+#: gio/glib-compile-resources.c:826 gio/glib-compile-resources.c:855
 #: gio/gresource-tool.c:501 gio/gresource-tool.c:567
 msgid "FILE"
 msgstr "ФАЙЛ"
@@ -138,7 +147,7 @@ msgstr "ПАРАМЕТР"
 msgid "Optional parameter to the action invocation, in GVariant format"
 msgstr ""
 
-#: gio/gapplication-tool.c:98 gio/gresource-tool.c:532 gio/gsettings-tool.c:664
+#: gio/gapplication-tool.c:98 gio/gresource-tool.c:532 gio/gsettings-tool.c:676
 #, c-format
 msgid ""
 "Unknown command %s\n"
@@ -150,7 +159,7 @@ msgid "Usage:\n"
 msgstr "Қолданылуы:\n"
 
 #: gio/gapplication-tool.c:116 gio/gresource-tool.c:557
-#: gio/gsettings-tool.c:699
+#: gio/gsettings-tool.c:711
 msgid "Arguments:\n"
 msgstr "Аргументтер:\n"
 
@@ -267,7 +276,7 @@ msgstr ""
 msgid "Truncate not supported on base stream"
 msgstr ""
 
-#: gio/gcancellable.c:319 gio/gdbusconnection.c:1872 gio/gdbusprivate.c:1416
+#: gio/gcancellable.c:319 gio/gdbusconnection.c:1873 gio/gdbusprivate.c:1418
 #: gio/gsimpleasyncresult.c:871 gio/gsimpleasyncresult.c:897
 #, c-format
 msgid "Operation was cancelled"
@@ -288,7 +297,7 @@ msgstr "Мақсат жерінде жеткілікті орын жоқ"
 #: gio/gcharsetconverter.c:342 gio/gdatainputstream.c:848
 #: gio/gdatainputstream.c:1266 glib/gconvert.c:449 glib/gconvert.c:879
 #: glib/giochannel.c:1573 glib/giochannel.c:1615 glib/giochannel.c:2470
-#: glib/gutf8.c:875 glib/gutf8.c:1328
+#: glib/gutf8.c:890 glib/gutf8.c:1344
 msgid "Invalid byte sequence in conversion input"
 msgstr "Түрлендіру кірісінде жарамсыз байттар тізбегі анықталды"
 
@@ -298,7 +307,7 @@ msgstr "Түрлендіру кірісінде жарамсыз байттар
 msgid "Error during conversion: %s"
 msgstr ""
 
-#: gio/gcharsetconverter.c:445 gio/gsocket.c:1143
+#: gio/gcharsetconverter.c:445 gio/gsocket.c:1147
 msgid "Cancellable initialization not supported"
 msgstr "Бас тартуға болатын инициализацияға қолдау жоқ"
 
@@ -312,7 +321,7 @@ msgstr ""
 msgid "Could not open converter from “%s” to “%s”"
 msgstr ""
 
-#: gio/gcontenttype.c:454
+#: gio/gcontenttype.c:470
 #, c-format
 msgid "%s type"
 msgstr "%s түрі"
@@ -326,23 +335,23 @@ msgstr "Белгісіз түрі"
 msgid "%s filetype"
 msgstr "%s файл түрі"
 
-#: gio/gcredentials.c:323
+#: gio/gcredentials.c:335
 msgid "GCredentials contains invalid data"
 msgstr ""
 
-#: gio/gcredentials.c:383 gio/gcredentials.c:667
+#: gio/gcredentials.c:395 gio/gcredentials.c:686
 msgid "GCredentials is not implemented on this OS"
 msgstr ""
 
-#: gio/gcredentials.c:538 gio/gcredentials.c:556
+#: gio/gcredentials.c:550 gio/gcredentials.c:568
 msgid "There is no GCredentials support for your platform"
 msgstr ""
 
-#: gio/gcredentials.c:607
+#: gio/gcredentials.c:626
 msgid "GCredentials does not contain a process ID on this OS"
 msgstr ""
 
-#: gio/gcredentials.c:661
+#: gio/gcredentials.c:680
 msgid "Credentials spoofing is not possible on this OS"
 msgstr ""
 
@@ -350,152 +359,152 @@ msgstr ""
 msgid "Unexpected early end-of-stream"
 msgstr ""
 
-#: gio/gdbusaddress.c:159 gio/gdbusaddress.c:233 gio/gdbusaddress.c:322
+#: gio/gdbusaddress.c:162 gio/gdbusaddress.c:236 gio/gdbusaddress.c:325
 #, c-format
 msgid "Unsupported key “%s” in address entry “%s”"
 msgstr ""
 
-#: gio/gdbusaddress.c:172
+#: gio/gdbusaddress.c:175
 #, c-format
 msgid "Meaningless key/value pair combination in address entry “%s”"
 msgstr ""
 
-#: gio/gdbusaddress.c:181
+#: gio/gdbusaddress.c:184
 #, c-format
 msgid ""
 "Address “%s” is invalid (need exactly one of path, dir, tmpdir, or abstract "
 "keys)"
 msgstr ""
 
-#: gio/gdbusaddress.c:248 gio/gdbusaddress.c:259 gio/gdbusaddress.c:274
-#: gio/gdbusaddress.c:337 gio/gdbusaddress.c:348
+#: gio/gdbusaddress.c:251 gio/gdbusaddress.c:262 gio/gdbusaddress.c:277
+#: gio/gdbusaddress.c:340 gio/gdbusaddress.c:351
 #, c-format
 msgid "Error in address “%s” — the “%s” attribute is malformed"
 msgstr ""
 
-#: gio/gdbusaddress.c:418 gio/gdbusaddress.c:682
+#: gio/gdbusaddress.c:421 gio/gdbusaddress.c:680
 #, c-format
 msgid "Unknown or unsupported transport “%s” for address “%s”"
 msgstr ""
 
-#: gio/gdbusaddress.c:462
+#: gio/gdbusaddress.c:465
 #, c-format
 msgid "Address element “%s” does not contain a colon (:)"
 msgstr ""
 
-#: gio/gdbusaddress.c:471
+#: gio/gdbusaddress.c:474
 #, c-format
 msgid "Transport name in address element “%s” must not be empty"
 msgstr ""
 
-#: gio/gdbusaddress.c:492
+#: gio/gdbusaddress.c:495
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” does not contain an equal "
 "sign"
 msgstr ""
 
-#: gio/gdbusaddress.c:503
+#: gio/gdbusaddress.c:506
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” must not have an empty key"
 msgstr ""
 
-#: gio/gdbusaddress.c:517
+#: gio/gdbusaddress.c:520
 #, c-format
 msgid ""
 "Error unescaping key or value in Key/Value pair %d, “%s”, in address element "
 "“%s”"
 msgstr ""
 
-#: gio/gdbusaddress.c:589
+#: gio/gdbusaddress.c:588
 #, c-format
 msgid ""
 "Error in address “%s” — the unix transport requires exactly one of the keys "
 "“path” or “abstract” to be set"
 msgstr ""
 
-#: gio/gdbusaddress.c:625
+#: gio/gdbusaddress.c:623
 #, c-format
 msgid "Error in address “%s” — the host attribute is missing or malformed"
 msgstr ""
 
-#: gio/gdbusaddress.c:639
+#: gio/gdbusaddress.c:637
 #, c-format
 msgid "Error in address “%s” — the port attribute is missing or malformed"
 msgstr ""
 
-#: gio/gdbusaddress.c:653
+#: gio/gdbusaddress.c:651
 #, c-format
 msgid "Error in address “%s” — the noncefile attribute is missing or malformed"
 msgstr ""
 
-#: gio/gdbusaddress.c:674
+#: gio/gdbusaddress.c:672
 msgid "Error auto-launching: "
 msgstr ""
 
-#: gio/gdbusaddress.c:727
+#: gio/gdbusaddress.c:725
 #, c-format
 msgid "Error opening nonce file “%s”: %s"
 msgstr "\"%s\" файлын ашу қатесі: %s"
 
-#: gio/gdbusaddress.c:746
+#: gio/gdbusaddress.c:744
 #, c-format
 msgid "Error reading from nonce file “%s”: %s"
 msgstr "\"%s\" nonce файлынан оқу қатесі: %s"
 
-#: gio/gdbusaddress.c:755
+#: gio/gdbusaddress.c:753
 #, c-format
 msgid "Error reading from nonce file “%s”, expected 16 bytes, got %d"
 msgstr ""
 
-#: gio/gdbusaddress.c:773
+#: gio/gdbusaddress.c:771
 #, c-format
 msgid "Error writing contents of nonce file “%s” to stream:"
 msgstr ""
 
-#: gio/gdbusaddress.c:988
+#: gio/gdbusaddress.c:986
 msgid "The given address is empty"
 msgstr ""
 
-#: gio/gdbusaddress.c:1101
+#: gio/gdbusaddress.c:1099
 #, c-format
-msgid "Cannot spawn a message bus when setuid"
+msgid "Cannot spawn a message bus when AT_SECURE is set"
 msgstr ""
 
-#: gio/gdbusaddress.c:1108
+#: gio/gdbusaddress.c:1106
 msgid "Cannot spawn a message bus without a machine-id: "
 msgstr ""
 
-#: gio/gdbusaddress.c:1115
+#: gio/gdbusaddress.c:1113
 #, c-format
 msgid "Cannot autolaunch D-Bus without X11 $DISPLAY"
 msgstr ""
 
-#: gio/gdbusaddress.c:1157
+#: gio/gdbusaddress.c:1155
 #, c-format
 msgid "Error spawning command line “%s”: "
 msgstr ""
 
-#: gio/gdbusaddress.c:1226
+#: gio/gdbusaddress.c:1224
 #, c-format
 msgid "Cannot determine session bus address (not implemented for this OS)"
 msgstr ""
 
-#: gio/gdbusaddress.c:1397 gio/gdbusconnection.c:7261
+#: gio/gdbusaddress.c:1373 gio/gdbusconnection.c:7334
 #, c-format
 msgid ""
 "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
 "— unknown value “%s”"
 msgstr ""
 
-#: gio/gdbusaddress.c:1406 gio/gdbusconnection.c:7270
+#: gio/gdbusaddress.c:1382 gio/gdbusconnection.c:7343
 msgid ""
 "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
 "variable is not set"
 msgstr ""
 
-#: gio/gdbusaddress.c:1416
+#: gio/gdbusaddress.c:1392
 #, c-format
 msgid "Unknown bus type %d"
 msgstr ""
@@ -522,249 +531,249 @@ msgstr ""
 msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
 msgstr ""
 
-#: gio/gdbusauthmechanismsha1.c:298
+#: gio/gdbusauthmechanismsha1.c:299
 #, c-format
 msgid "Error when getting information for directory “%s”: %s"
 msgstr "\"%s\" бума ақпаратын алу қатесі: %s"
 
-#: gio/gdbusauthmechanismsha1.c:313
+#: gio/gdbusauthmechanismsha1.c:314
 #, c-format
 msgid ""
 "Permissions on directory “%s” are malformed. Expected mode 0700, got 0%o"
 msgstr ""
 
-#: gio/gdbusauthmechanismsha1.c:346 gio/gdbusauthmechanismsha1.c:357
+#: gio/gdbusauthmechanismsha1.c:347 gio/gdbusauthmechanismsha1.c:358
 #, c-format
 msgid "Error creating directory “%s”: %s"
 msgstr "\"%s\" бумасын жасау қатесі: %s"
 
-#: gio/gdbusauthmechanismsha1.c:359 gio/gfile.c:1062 gio/gfile.c:1300
-#: gio/gfile.c:1438 gio/gfile.c:1676 gio/gfile.c:1731 gio/gfile.c:1789
-#: gio/gfile.c:1873 gio/gfile.c:1930 gio/gfile.c:1994 gio/gfile.c:2049
-#: gio/gfile.c:3754 gio/gfile.c:3809 gio/gfile.c:4102 gio/gfile.c:4572
-#: gio/gfile.c:4983 gio/gfile.c:5068 gio/gfile.c:5158 gio/gfile.c:5255
-#: gio/gfile.c:5342 gio/gfile.c:5443 gio/gfile.c:8153 gio/gfile.c:8243
-#: gio/gfile.c:8327 gio/win32/gwinhttpfile.c:453
+#: gio/gdbusauthmechanismsha1.c:360 gio/gfile.c:1080 gio/gfile.c:1318
+#: gio/gfile.c:1456 gio/gfile.c:1694 gio/gfile.c:1749 gio/gfile.c:1807
+#: gio/gfile.c:1891 gio/gfile.c:1948 gio/gfile.c:2012 gio/gfile.c:2067
+#: gio/gfile.c:3772 gio/gfile.c:3912 gio/gfile.c:4205 gio/gfile.c:4675
+#: gio/gfile.c:5086 gio/gfile.c:5171 gio/gfile.c:5261 gio/gfile.c:5358
+#: gio/gfile.c:5445 gio/gfile.c:5546 gio/gfile.c:8375 gio/gfile.c:8465
+#: gio/gfile.c:8549 gio/win32/gwinhttpfile.c:453
 msgid "Operation not supported"
 msgstr "Әрекетке қолдау жоқ"
 
-#: gio/gdbusauthmechanismsha1.c:402
+#: gio/gdbusauthmechanismsha1.c:403
 #, c-format
 msgid "Error opening keyring “%s” for reading: "
 msgstr ""
 
-#: gio/gdbusauthmechanismsha1.c:425 gio/gdbusauthmechanismsha1.c:747
+#: gio/gdbusauthmechanismsha1.c:426 gio/gdbusauthmechanismsha1.c:748
 #, c-format
 msgid "Line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr ""
 
-#: gio/gdbusauthmechanismsha1.c:439 gio/gdbusauthmechanismsha1.c:761
+#: gio/gdbusauthmechanismsha1.c:440 gio/gdbusauthmechanismsha1.c:762
 #, c-format
 msgid ""
 "First token of line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr ""
 
-#: gio/gdbusauthmechanismsha1.c:453 gio/gdbusauthmechanismsha1.c:775
+#: gio/gdbusauthmechanismsha1.c:454 gio/gdbusauthmechanismsha1.c:776
 #, c-format
 msgid ""
 "Second token of line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr ""
 
-#: gio/gdbusauthmechanismsha1.c:477
+#: gio/gdbusauthmechanismsha1.c:478
 #, c-format
 msgid "Didn’t find cookie with id %d in the keyring at “%s”"
 msgstr ""
 
-#: gio/gdbusauthmechanismsha1.c:523
+#: gio/gdbusauthmechanismsha1.c:524
 #, c-format
 msgid "Error creating lock file “%s”: %s"
 msgstr ""
 
-#: gio/gdbusauthmechanismsha1.c:587
+#: gio/gdbusauthmechanismsha1.c:588
 #, c-format
 msgid "Error deleting stale lock file “%s”: %s"
 msgstr ""
 
-#: gio/gdbusauthmechanismsha1.c:626
+#: gio/gdbusauthmechanismsha1.c:627
 #, c-format
 msgid "Error closing (unlinked) lock file “%s”: %s"
 msgstr ""
 
-#: gio/gdbusauthmechanismsha1.c:637
+#: gio/gdbusauthmechanismsha1.c:638
 #, c-format
 msgid "Error unlinking lock file “%s”: %s"
 msgstr ""
 
-#: gio/gdbusauthmechanismsha1.c:714
+#: gio/gdbusauthmechanismsha1.c:715
 #, c-format
 msgid "Error opening keyring “%s” for writing: "
 msgstr ""
 
-#: gio/gdbusauthmechanismsha1.c:908
+#: gio/gdbusauthmechanismsha1.c:909
 #, c-format
 msgid "(Additionally, releasing the lock for “%s” also failed: %s) "
 msgstr ""
 
-#: gio/gdbusconnection.c:603 gio/gdbusconnection.c:2417
+#: gio/gdbusconnection.c:604 gio/gdbusconnection.c:2418
 msgid "The connection is closed"
 msgstr "Байланыс жабылған"
 
-#: gio/gdbusconnection.c:1902
+#: gio/gdbusconnection.c:1903
 msgid "Timeout was reached"
 msgstr ""
 
-#: gio/gdbusconnection.c:2540
+#: gio/gdbusconnection.c:2541
 msgid ""
 "Unsupported flags encountered when constructing a client-side connection"
 msgstr ""
 
-#: gio/gdbusconnection.c:4189 gio/gdbusconnection.c:4536
+#: gio/gdbusconnection.c:4269 gio/gdbusconnection.c:4623
 #, c-format
 msgid ""
 "No such interface “org.freedesktop.DBus.Properties” on object at path %s"
 msgstr ""
 
-#: gio/gdbusconnection.c:4331
+#: gio/gdbusconnection.c:4414
 #, c-format
 msgid "No such property “%s”"
 msgstr "\"%s\" қасиеті табылмады"
 
-#: gio/gdbusconnection.c:4343
+#: gio/gdbusconnection.c:4426
 #, c-format
 msgid "Property “%s” is not readable"
 msgstr "\"%s\" қасиетін оқу мүмкін емес"
 
-#: gio/gdbusconnection.c:4354
+#: gio/gdbusconnection.c:4437
 #, c-format
 msgid "Property “%s” is not writable"
 msgstr "\"%s\" қасиетін жазу мүмкін емес"
 
-#: gio/gdbusconnection.c:4374
+#: gio/gdbusconnection.c:4457
 #, c-format
 msgid "Error setting property “%s”: Expected type “%s” but got “%s”"
 msgstr ""
 
-#: gio/gdbusconnection.c:4479 gio/gdbusconnection.c:4687
-#: gio/gdbusconnection.c:6689
+#: gio/gdbusconnection.c:4562 gio/gdbusconnection.c:4777
+#: gio/gdbusconnection.c:6760
 #, c-format
 msgid "No such interface “%s”"
 msgstr ""
 
-#: gio/gdbusconnection.c:4905 gio/gdbusconnection.c:7201
+#: gio/gdbusconnection.c:4999 gio/gdbusconnection.c:7274
 #, c-format
 msgid "No such interface “%s” on object at path %s"
 msgstr ""
 
-#: gio/gdbusconnection.c:5003
+#: gio/gdbusconnection.c:5100
 #, c-format
 msgid "No such method “%s”"
 msgstr ""
 
-#: gio/gdbusconnection.c:5034
+#: gio/gdbusconnection.c:5131
 #, c-format
 msgid "Type of message, “%s”, does not match expected type “%s”"
 msgstr ""
 
-#: gio/gdbusconnection.c:5237
+#: gio/gdbusconnection.c:5334
 #, c-format
 msgid "An object is already exported for the interface %s at %s"
 msgstr ""
 
-#: gio/gdbusconnection.c:5463
+#: gio/gdbusconnection.c:5561
 #, c-format
 msgid "Unable to retrieve property %s.%s"
 msgstr ""
 
-#: gio/gdbusconnection.c:5519
+#: gio/gdbusconnection.c:5617
 #, c-format
 msgid "Unable to set property %s.%s"
 msgstr "%s қасиетін орнату мүмкін емес.%s"
 
-#: gio/gdbusconnection.c:5698
+#: gio/gdbusconnection.c:5796
 #, c-format
 msgid "Method “%s” returned type “%s”, but expected “%s”"
 msgstr ""
 
-#: gio/gdbusconnection.c:6800
+#: gio/gdbusconnection.c:6872
 #, c-format
 msgid "Method “%s” on interface “%s” with signature “%s” does not exist"
 msgstr ""
 
-#: gio/gdbusconnection.c:6921
+#: gio/gdbusconnection.c:6993
 #, c-format
 msgid "A subtree is already exported for %s"
 msgstr ""
 
-#: gio/gdbusconnection.c:7209
+#: gio/gdbusconnection.c:7282
 #, c-format
 msgid "Object does not exist at path “%s”"
 msgstr ""
 
-#: gio/gdbusmessage.c:1266
+#: gio/gdbusmessage.c:1301
 msgid "type is INVALID"
 msgstr ""
 
-#: gio/gdbusmessage.c:1277
+#: gio/gdbusmessage.c:1312
 msgid "METHOD_CALL message: PATH or MEMBER header field is missing"
 msgstr ""
 
-#: gio/gdbusmessage.c:1288
+#: gio/gdbusmessage.c:1323
 msgid "METHOD_RETURN message: REPLY_SERIAL header field is missing"
 msgstr ""
 
-#: gio/gdbusmessage.c:1300
+#: gio/gdbusmessage.c:1335
 msgid "ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing"
 msgstr ""
 
-#: gio/gdbusmessage.c:1313
+#: gio/gdbusmessage.c:1348
 msgid "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing"
 msgstr ""
 
-#: gio/gdbusmessage.c:1321
+#: gio/gdbusmessage.c:1356
 msgid ""
 "SIGNAL message: The PATH header field is using the reserved value /org/"
 "freedesktop/DBus/Local"
 msgstr ""
 
-#: gio/gdbusmessage.c:1329
+#: gio/gdbusmessage.c:1364
 msgid ""
 "SIGNAL message: The INTERFACE header field is using the reserved value org."
 "freedesktop.DBus.Local"
 msgstr ""
 
-#: gio/gdbusmessage.c:1377 gio/gdbusmessage.c:1437
+#: gio/gdbusmessage.c:1412 gio/gdbusmessage.c:1472
 #, c-format
 msgid "Wanted to read %lu byte but only got %lu"
 msgid_plural "Wanted to read %lu bytes but only got %lu"
 msgstr[0] ""
 
-#: gio/gdbusmessage.c:1391
+#: gio/gdbusmessage.c:1426
 #, c-format
 msgid "Expected NUL byte after the string “%s” but found byte %d"
 msgstr ""
 
-#: gio/gdbusmessage.c:1410
+#: gio/gdbusmessage.c:1445
 #, 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”"
 msgstr ""
 
-#: gio/gdbusmessage.c:1474 gio/gdbusmessage.c:1722 gio/gdbusmessage.c:1911
+#: gio/gdbusmessage.c:1509 gio/gdbusmessage.c:1785 gio/gdbusmessage.c:1996
 msgid "Value nested too deeply"
 msgstr ""
 
-#: gio/gdbusmessage.c:1620
+#: gio/gdbusmessage.c:1677
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus object path"
 msgstr ""
 
-#: gio/gdbusmessage.c:1642
+#: gio/gdbusmessage.c:1701
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature"
 msgstr ""
 
-#: gio/gdbusmessage.c:1689
+#: gio/gdbusmessage.c:1752
 #, c-format
 msgid ""
 "Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB)."
@@ -772,135 +781,138 @@ msgid_plural ""
 "Encountered array of length %u bytes. Maximum length is 2<<26 bytes (64 MiB)."
 msgstr[0] ""
 
-#: gio/gdbusmessage.c:1709
+#: gio/gdbusmessage.c:1772
 #, 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"
 msgstr ""
 
-#: gio/gdbusmessage.c:1895
+#: gio/gdbusmessage.c:1926 gio/gdbusmessage.c:2645
+msgid "Empty structures (tuples) are not allowed in D-Bus"
+msgstr ""
+
+#: gio/gdbusmessage.c:1980
 #, c-format
 msgid "Parsed value “%s” for variant is not a valid D-Bus signature"
 msgstr ""
 
-#: gio/gdbusmessage.c:1936
+#: gio/gdbusmessage.c:2021
 #, c-format
 msgid ""
 "Error deserializing GVariant with type string “%s” from the D-Bus wire format"
 msgstr ""
 
-#: gio/gdbusmessage.c:2121
+#: gio/gdbusmessage.c:2206
 #, c-format
 msgid ""
 "Invalid endianness value. Expected 0x6c (“l”) or 0x42 (“B”) but found value "
 "0x%02x"
 msgstr ""
 
-#: gio/gdbusmessage.c:2134
+#: gio/gdbusmessage.c:2225
 #, c-format
 msgid "Invalid major protocol version. Expected 1 but found %d"
 msgstr ""
 
-#: gio/gdbusmessage.c:2188 gio/gdbusmessage.c:2784
+#: gio/gdbusmessage.c:2283 gio/gdbusmessage.c:2881
 msgid "Signature header found but is not of type signature"
 msgstr ""
 
-#: gio/gdbusmessage.c:2200
+#: gio/gdbusmessage.c:2295
 #, c-format
 msgid "Signature header with signature “%s” found but message body is empty"
 msgstr ""
 
-#: gio/gdbusmessage.c:2215
+#: gio/gdbusmessage.c:2310
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature (for body)"
 msgstr ""
 
-#: gio/gdbusmessage.c:2247
+#: gio/gdbusmessage.c:2342
 #, 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"
 msgstr[0] ""
 
-#: gio/gdbusmessage.c:2257
+#: gio/gdbusmessage.c:2352
 msgid "Cannot deserialize message: "
 msgstr ""
 
-#: gio/gdbusmessage.c:2601
+#: gio/gdbusmessage.c:2698
 #, c-format
 msgid ""
 "Error serializing GVariant with type string “%s” to the D-Bus wire format"
 msgstr ""
 
-#: gio/gdbusmessage.c:2738
+#: gio/gdbusmessage.c:2835
 #, c-format
 msgid ""
 "Number of file descriptors in message (%d) differs from header field (%d)"
 msgstr ""
 
-#: gio/gdbusmessage.c:2746
+#: gio/gdbusmessage.c:2843
 msgid "Cannot serialize message: "
 msgstr ""
 
-#: gio/gdbusmessage.c:2799
+#: gio/gdbusmessage.c:2896
 #, c-format
 msgid "Message body has signature “%s” but there is no signature header"
 msgstr ""
 
-#: gio/gdbusmessage.c:2809
+#: gio/gdbusmessage.c:2906
 #, c-format
 msgid ""
 "Message body has type signature “%s” but signature in the header field is "
 "“%s”"
 msgstr ""
 
-#: gio/gdbusmessage.c:2825
+#: gio/gdbusmessage.c:2922
 #, c-format
 msgid "Message body is empty but signature in the header field is “(%s)”"
 msgstr ""
 
-#: gio/gdbusmessage.c:3380
+#: gio/gdbusmessage.c:3477
 #, c-format
 msgid "Error return with body of type “%s”"
 msgstr ""
 
-#: gio/gdbusmessage.c:3388
+#: gio/gdbusmessage.c:3485
 msgid "Error return with empty body"
 msgstr ""
 
-#: gio/gdbusprivate.c:2246
+#: gio/gdbusprivate.c:2185
 #, c-format
 msgid "(Type any character to close this window)\n"
 msgstr ""
 
-#: gio/gdbusprivate.c:2420
+#: gio/gdbusprivate.c:2371
 #, c-format
 msgid "Session dbus not running, and autolaunch failed"
 msgstr ""
 
-#: gio/gdbusprivate.c:2443
+#: gio/gdbusprivate.c:2394
 #, c-format
 msgid "Unable to get Hardware profile: %s"
 msgstr ""
 
 #. Translators: Both placeholders are file paths
-#: gio/gdbusprivate.c:2494
+#: gio/gdbusprivate.c:2445
 #, c-format
-#| msgid "Unable to trash file %s: %s"
 msgid "Unable to load %s or %s: "
 msgstr ""
 
-#: gio/gdbusproxy.c:1569
+#: gio/gdbusproxy.c:1573
 #, c-format
 msgid "Error calling StartServiceByName for %s: "
 msgstr ""
 
-#: gio/gdbusproxy.c:1592
+#: gio/gdbusproxy.c:1596
 #, c-format
 msgid "Unexpected reply %d from StartServiceByName(\"%s\") method"
 msgstr ""
 
-#: gio/gdbusproxy.c:2699 gio/gdbusproxy.c:2834
+#: gio/gdbusproxy.c:2707 gio/gdbusproxy.c:2842
 #, c-format
 msgid ""
 "Cannot invoke method; proxy is for the well-known name %s without an owner, "
@@ -945,13 +957,13 @@ msgid ""
 msgstr ""
 
 #: gio/gdbus-tool.c:201 gio/gdbus-tool.c:273 gio/gdbus-tool.c:345
-#: gio/gdbus-tool.c:369 gio/gdbus-tool.c:859 gio/gdbus-tool.c:1236
-#: gio/gdbus-tool.c:1724
+#: gio/gdbus-tool.c:369 gio/gdbus-tool.c:859 gio/gdbus-tool.c:1244
+#: gio/gdbus-tool.c:1732
 #, c-format
 msgid "Error: %s\n"
 msgstr "Қате: %s\n"
 
-#: gio/gdbus-tool.c:212 gio/gdbus-tool.c:286 gio/gdbus-tool.c:1740
+#: gio/gdbus-tool.c:212 gio/gdbus-tool.c:286 gio/gdbus-tool.c:1748
 #, c-format
 msgid "Error parsing introspection XML: %s\n"
 msgstr ""
@@ -961,8 +973,8 @@ msgstr ""
 msgid "Error: %s is not a valid name\n"
 msgstr ""
 
-#: gio/gdbus-tool.c:255 gio/gdbus-tool.c:745 gio/gdbus-tool.c:1060
-#: gio/gdbus-tool.c:1890 gio/gdbus-tool.c:2130
+#: gio/gdbus-tool.c:255 gio/gdbus-tool.c:745 gio/gdbus-tool.c:1063
+#: gio/gdbus-tool.c:1898 gio/gdbus-tool.c:2138
 #, c-format
 msgid "Error: %s is not a valid object path\n"
 msgstr ""
@@ -1026,8 +1038,8 @@ msgstr ""
 msgid "Emit a signal."
 msgstr "Сигналды жіберу."
 
-#: gio/gdbus-tool.c:683 gio/gdbus-tool.c:997 gio/gdbus-tool.c:1827
-#: gio/gdbus-tool.c:2059 gio/gdbus-tool.c:2279
+#: gio/gdbus-tool.c:683 gio/gdbus-tool.c:1000 gio/gdbus-tool.c:1835
+#: gio/gdbus-tool.c:2067 gio/gdbus-tool.c:2287
 #, c-format
 msgid "Error connecting: %s\n"
 msgstr "Байланысу қатесі: %s\n"
@@ -1037,7 +1049,7 @@ msgstr "Байланысу қатесі: %s\n"
 msgid "Error: %s is not a valid unique bus name.\n"
 msgstr ""
 
-#: gio/gdbus-tool.c:722 gio/gdbus-tool.c:1040 gio/gdbus-tool.c:1870
+#: gio/gdbus-tool.c:722 gio/gdbus-tool.c:1043 gio/gdbus-tool.c:1878
 msgid "Error: Object path is not specified\n"
 msgstr ""
 
@@ -1061,7 +1073,7 @@ msgid "Error: %s is not a valid member name\n"
 msgstr ""
 
 #. Use the original non-"parse-me-harder" error
-#: gio/gdbus-tool.c:834 gio/gdbus-tool.c:1172
+#: gio/gdbus-tool.c:834 gio/gdbus-tool.c:1175
 #, c-format
 msgid "Error parsing parameter %d: %s\n"
 msgstr ""
@@ -1071,162 +1083,171 @@ msgstr ""
 msgid "Error flushing connection: %s\n"
 msgstr ""
 
-#: gio/gdbus-tool.c:893
+#: gio/gdbus-tool.c:894
 msgid "Destination name to invoke method on"
 msgstr ""
 
-#: gio/gdbus-tool.c:894
+#: gio/gdbus-tool.c:895
 msgid "Object path to invoke method on"
 msgstr ""
 
-#: gio/gdbus-tool.c:895
+#: gio/gdbus-tool.c:896
 msgid "Method and interface name"
 msgstr ""
 
-#: gio/gdbus-tool.c:896
+#: gio/gdbus-tool.c:897
 msgid "Timeout in seconds"
 msgstr ""
 
-#: gio/gdbus-tool.c:942
+#: gio/gdbus-tool.c:898
+#| msgid "Show information about locations"
+msgid "Allow interactive authorization"
+msgstr ""
+
+#: gio/gdbus-tool.c:945
 msgid "Invoke a method on a remote object."
 msgstr ""
 
-#: gio/gdbus-tool.c:1014 gio/gdbus-tool.c:1844 gio/gdbus-tool.c:2084
+#: gio/gdbus-tool.c:1017 gio/gdbus-tool.c:1852 gio/gdbus-tool.c:2092
 msgid "Error: Destination is not specified\n"
 msgstr ""
 
-#: gio/gdbus-tool.c:1025 gio/gdbus-tool.c:1861 gio/gdbus-tool.c:2095
+#: gio/gdbus-tool.c:1028 gio/gdbus-tool.c:1869 gio/gdbus-tool.c:2103
 #, c-format
 msgid "Error: %s is not a valid bus name\n"
 msgstr ""
 
-#: gio/gdbus-tool.c:1075
+#: gio/gdbus-tool.c:1078
 msgid "Error: Method name is not specified\n"
 msgstr ""
 
-#: gio/gdbus-tool.c:1086
+#: gio/gdbus-tool.c:1089
 #, c-format
 msgid "Error: Method name “%s” is invalid\n"
 msgstr ""
 
-#: gio/gdbus-tool.c:1164
+#: gio/gdbus-tool.c:1167
 #, c-format
 msgid "Error parsing parameter %d of type “%s”: %s\n"
 msgstr ""
 
-#: gio/gdbus-tool.c:1190
+#: gio/gdbus-tool.c:1193
 #, c-format
-#| msgid "Error reading file %s: %s"
 msgid "Error adding handle %d: %s\n"
 msgstr ""
 
-#: gio/gdbus-tool.c:1686
+#: gio/gdbus-tool.c:1694
 msgid "Destination name to introspect"
 msgstr ""
 
-#: gio/gdbus-tool.c:1687
+#: gio/gdbus-tool.c:1695
 msgid "Object path to introspect"
 msgstr ""
 
-#: gio/gdbus-tool.c:1688
+#: gio/gdbus-tool.c:1696
 msgid "Print XML"
 msgstr "XML баспаға шығару"
 
-#: gio/gdbus-tool.c:1689
+#: gio/gdbus-tool.c:1697
 msgid "Introspect children"
 msgstr ""
 
-#: gio/gdbus-tool.c:1690
+#: gio/gdbus-tool.c:1698
 msgid "Only print properties"
 msgstr "Тек қасиеттерін баспаға шығару"
 
-#: gio/gdbus-tool.c:1779
+#: gio/gdbus-tool.c:1787
 msgid "Introspect a remote object."
 msgstr ""
 
-#: gio/gdbus-tool.c:1985
+#: gio/gdbus-tool.c:1993
 msgid "Destination name to monitor"
 msgstr "Бақылау үшін мақсат атауы"
 
-#: gio/gdbus-tool.c:1986
+#: gio/gdbus-tool.c:1994
 msgid "Object path to monitor"
 msgstr ""
 
-#: gio/gdbus-tool.c:2011
+#: gio/gdbus-tool.c:2019
 msgid "Monitor a remote object."
 msgstr ""
 
-#: gio/gdbus-tool.c:2069
+#: gio/gdbus-tool.c:2077
 msgid "Error: can’t monitor a non-message-bus connection\n"
 msgstr ""
 
-#: gio/gdbus-tool.c:2193
+#: gio/gdbus-tool.c:2201
 msgid "Service to activate before waiting for the other one (well-known name)"
 msgstr ""
 
-#: gio/gdbus-tool.c:2196
+#: gio/gdbus-tool.c:2204
 msgid ""
 "Timeout to wait for before exiting with an error (seconds); 0 for no timeout "
 "(default)"
 msgstr ""
 
-#: gio/gdbus-tool.c:2244
+#: gio/gdbus-tool.c:2252
 msgid "[OPTION…] BUS-NAME"
 msgstr "[ОПЦИЯ…] ШИНА-АТЫ"
 
-#: gio/gdbus-tool.c:2245
+#: gio/gdbus-tool.c:2253
 msgid "Wait for a bus name to appear."
 msgstr ""
 
-#: gio/gdbus-tool.c:2321
+#: gio/gdbus-tool.c:2329
 msgid "Error: A service to activate for must be specified.\n"
 msgstr "Қате: белсендіру үшін қызмет көрсетілуі керек.\n"
 
-#: gio/gdbus-tool.c:2326
+#: gio/gdbus-tool.c:2334
 msgid "Error: A service to wait for must be specified.\n"
 msgstr "Қате: күту үшін қызмет көрсетілуі керек.\n"
 
-#: gio/gdbus-tool.c:2331
+#: gio/gdbus-tool.c:2339
 msgid "Error: Too many arguments.\n"
 msgstr ""
 
-#: gio/gdbus-tool.c:2339 gio/gdbus-tool.c:2346
+#: gio/gdbus-tool.c:2347 gio/gdbus-tool.c:2354
 #, c-format
 msgid "Error: %s is not a valid well-known bus name.\n"
 msgstr "Қате: \"%s\" - кеңінен белгілі шина аты емес.\n"
 
-#: gio/gdesktopappinfo.c:2106 gio/gdesktopappinfo.c:4932
+#: gio/gdebugcontrollerdbus.c:203
+#, c-format
+msgid "Not authorized to change debug settings"
+msgstr ""
+
+#: gio/gdesktopappinfo.c:2174 gio/gdesktopappinfo.c:5099
 msgid "Unnamed"
 msgstr "Атаусыз"
 
-#: gio/gdesktopappinfo.c:2516
+#: gio/gdesktopappinfo.c:2584
 msgid "Desktop file didn’t specify Exec field"
 msgstr ""
 
-#: gio/gdesktopappinfo.c:2801
+#: gio/gdesktopappinfo.c:2892
 msgid "Unable to find terminal required for application"
 msgstr ""
 
-#: gio/gdesktopappinfo.c:3452
+#: gio/gdesktopappinfo.c:3619
 #, c-format
 msgid "Can’t create user application configuration folder %s: %s"
 msgstr ""
 
-#: gio/gdesktopappinfo.c:3456
+#: gio/gdesktopappinfo.c:3623
 #, c-format
 msgid "Can’t create user MIME configuration folder %s: %s"
 msgstr ""
 
-#: gio/gdesktopappinfo.c:3698 gio/gdesktopappinfo.c:3722
+#: gio/gdesktopappinfo.c:3865 gio/gdesktopappinfo.c:3889
 msgid "Application information lacks an identifier"
 msgstr ""
 
-#: gio/gdesktopappinfo.c:3958
+#: gio/gdesktopappinfo.c:4125
 #, c-format
 msgid "Can’t create user desktop file %s"
 msgstr "%s пайдаланушы жұмыс үстел файлын жасау мүмкін емес"
 
-#: gio/gdesktopappinfo.c:4094
+#: gio/gdesktopappinfo.c:4261
 #, c-format
 msgid "Custom definition for %s"
 msgstr ""
@@ -1254,7 +1275,7 @@ msgstr ""
 msgid "drive doesn’t implement stop"
 msgstr ""
 
-#: gio/gdtlsconnection.c:1153 gio/gtlsconnection.c:920
+#: gio/gdtlsconnection.c:1186 gio/gtlsconnection.c:955
 msgid "TLS backend does not implement TLS binding retrieval"
 msgstr ""
 
@@ -1295,73 +1316,73 @@ msgstr ""
 #. * trying to find the enclosing (user visible)
 #. * mount of a file, but none exists.
 #.
-#: gio/gfile.c:1561
+#: gio/gfile.c:1579
 msgid "Containing mount does not exist"
 msgstr ""
 
-#: gio/gfile.c:2608 gio/glocalfile.c:2477
+#: gio/gfile.c:2626 gio/glocalfile.c:2486
 msgid "Can’t copy over directory"
 msgstr "Бума үстіне көшіру мүмкін емес"
 
-#: gio/gfile.c:2668
+#: gio/gfile.c:2686
 msgid "Can’t copy directory over directory"
 msgstr "Буманы бума үстіне көшіру мүмкін емес"
 
-#: gio/gfile.c:2676
+#: gio/gfile.c:2694
 msgid "Target file exists"
 msgstr "Мақсат файлы бар болып тұр"
 
-#: gio/gfile.c:2695
+#: gio/gfile.c:2713
 msgid "Can’t recursively copy directory"
 msgstr "Буманы рекурсивті көшіру мүмкін емес"
 
-#: gio/gfile.c:2996
+#: gio/gfile.c:3014
 msgid "Splice not supported"
 msgstr ""
 
-#: gio/gfile.c:3000
+#: gio/gfile.c:3018
 #, c-format
 msgid "Error splicing file: %s"
 msgstr ""
 
-#: gio/gfile.c:3152
+#: gio/gfile.c:3170
 msgid "Copy (reflink/clone) between mounts is not supported"
 msgstr ""
 
-#: gio/gfile.c:3156
+#: gio/gfile.c:3174
 msgid "Copy (reflink/clone) is not supported or invalid"
 msgstr ""
 
-#: gio/gfile.c:3161
+#: gio/gfile.c:3179
 msgid "Copy (reflink/clone) is not supported or didn’t work"
 msgstr ""
 
-#: gio/gfile.c:3226
+#: gio/gfile.c:3244
 msgid "Can’t copy special file"
 msgstr "Арнайы файлды көшіру мүмкін емес"
 
-#: gio/gfile.c:4035
+#: gio/gfile.c:4138
 msgid "Invalid symlink value given"
 msgstr ""
 
-#: gio/gfile.c:4045 glib/gfileutils.c:2354
+#: gio/gfile.c:4148 glib/gfileutils.c:2333
 msgid "Symbolic links not supported"
 msgstr "Символдық сілтемелерге қолдау жоқ"
 
-#: gio/gfile.c:4213
+#: gio/gfile.c:4316
 msgid "Trash not supported"
 msgstr "Қоқыс шелегіне қолдау жоқ"
 
-#: gio/gfile.c:4325
+#: gio/gfile.c:4428
 #, c-format
 msgid "File names cannot contain “%c”"
 msgstr ""
 
-#: gio/gfile.c:6806 gio/gvolume.c:364
+#: gio/gfile.c:7028 gio/gvolume.c:364
 msgid "volume doesn’t implement mount"
 msgstr "том тіркеуді жүзеге асырмайды"
 
-#: gio/gfile.c:6920 gio/gfile.c:6968
+#: gio/gfile.c:7142 gio/gfile.c:7190
 msgid "No application is registered as handling this file"
 msgstr ""
 
@@ -1406,7 +1427,7 @@ msgstr ""
 msgid "Truncate not supported on stream"
 msgstr ""
 
-#: gio/ghttpproxy.c:91 gio/gresolver.c:443 gio/gresolver.c:596
+#: gio/ghttpproxy.c:91 gio/gresolver.c:458 gio/gresolver.c:611
 #: glib/gconvert.c:1825
 msgid "Invalid hostname"
 msgstr "Хост аты қате"
@@ -1433,7 +1454,6 @@ msgid "HTTP proxy connection failed: %i"
 msgstr "HTTP прокси байланысы сәтсіз аяқталды: %i"
 
 #: gio/ghttpproxy.c:266
-#| msgid "HTTP proxy connection failed: %i"
 msgid "HTTP proxy response too big"
 msgstr "HTTP прокси жауабы тым үлкен"
 
@@ -1494,7 +1514,7 @@ msgid "Could not parse “%s” as IP address mask"
 msgstr ""
 
 #: gio/ginetsocketaddress.c:203 gio/ginetsocketaddress.c:220
-#: gio/gnativesocketaddress.c:109 gio/gunixsocketaddress.c:221
+#: gio/gnativesocketaddress.c:109 gio/gunixsocketaddress.c:228
 msgid "Not enough space for socket address"
 msgstr ""
 
@@ -1553,7 +1573,6 @@ msgid "Show information about locations"
 msgstr "Орналасулар жөнінде ақпаратты көрсету"
 
 #: gio/gio-tool.c:232
-#| msgid "Launch an application"
 msgid "Launch an application from a desktop file"
 msgstr "Қолданбаны desktop файлынан жөнелту"
 
@@ -1820,7 +1839,6 @@ msgstr ""
 
 #: gio/gio-tool-launch.c:98
 #, c-format
-#| msgid "Unable to trash file %s: %s"
 msgid "Unable to load ‘%s‘: %s"
 msgstr "‘%s‘ жүктеу мүмкін емес: %s"
 
@@ -1831,7 +1849,6 @@ msgstr ""
 
 #: gio/gio-tool-launch.c:119
 #, c-format
-#| msgid "Unable to trash file %s: %s"
 msgid "Unable to launch application ‘%s’: %s"
 msgstr "‘%s’ қолданбасын жөнелту мүмкін емес: %s"
 
@@ -2199,7 +2216,6 @@ msgid "Empty the trash"
 msgstr "Қоқыс шелегін тазарту"
 
 #: gio/gio-tool-trash.c:35
-#| msgid "List the contents of the locations."
 msgid "List files in the trash with their original locations"
 msgstr ""
 "Қоқыс шелегіндегі файлдарды олардың бастапқы орналасулармен бірге тізіп "
@@ -2224,7 +2240,6 @@ msgid "Unable to move file to its original location: "
 msgstr ""
 
 #: gio/gio-tool-trash.c:225
-#| msgid "Move files or directories to the trash."
 msgid "Move/Restore files or directories to the trash."
 msgstr "Файлдар немесе бумаларды қоқыс шелегіне тастау немесе қалпына келтіру."
 
@@ -2301,76 +2316,80 @@ msgstr "%s файлын сығу қатесі"
 msgid "text may not appear inside <%s>"
 msgstr "мәтін <%s> ішінде болмауы мүмкін"
 
-#: gio/glib-compile-resources.c:737 gio/glib-compile-schemas.c:2172
+#: gio/glib-compile-resources.c:819 gio/glib-compile-schemas.c:2172
 msgid "Show program version and exit"
 msgstr ""
 
-#: gio/glib-compile-resources.c:738
+#: gio/glib-compile-resources.c:820
 msgid "Name of the output file"
 msgstr ""
 
-#: gio/glib-compile-resources.c:739
+#: gio/glib-compile-resources.c:821
 msgid ""
 "The directories to load files referenced in FILE from (default: current "
 "directory)"
 msgstr ""
 
-#: gio/glib-compile-resources.c:739 gio/glib-compile-schemas.c:2173
+#: gio/glib-compile-resources.c:821 gio/glib-compile-schemas.c:2173
 #: gio/glib-compile-schemas.c:2202
 msgid "DIRECTORY"
 msgstr "БУМА"
 
-#: gio/glib-compile-resources.c:740
+#: gio/glib-compile-resources.c:822
 msgid ""
 "Generate output in the format selected for by the target filename extension"
 msgstr ""
 
-#: gio/glib-compile-resources.c:741
+#: gio/glib-compile-resources.c:823
 msgid "Generate source header"
 msgstr ""
 
-#: gio/glib-compile-resources.c:742
+#: gio/glib-compile-resources.c:824
 msgid "Generate source code used to link in the resource file into your code"
 msgstr ""
 
-#: gio/glib-compile-resources.c:743
+#: gio/glib-compile-resources.c:825
 msgid "Generate dependency list"
 msgstr ""
 
-#: gio/glib-compile-resources.c:744
+#: gio/glib-compile-resources.c:826
 msgid "Name of the dependency file to generate"
 msgstr ""
 
-#: gio/glib-compile-resources.c:745
+#: gio/glib-compile-resources.c:827
 msgid "Include phony targets in the generated dependency file"
 msgstr ""
 
-#: gio/glib-compile-resources.c:746
+#: gio/glib-compile-resources.c:828
 msgid "Don’t automatically create and register resource"
 msgstr ""
 
-#: gio/glib-compile-resources.c:747
+#: gio/glib-compile-resources.c:829
 msgid "Don’t export functions; declare them G_GNUC_INTERNAL"
 msgstr ""
 
-#: gio/glib-compile-resources.c:748
+#: gio/glib-compile-resources.c:830
 msgid ""
 "Don’t embed resource data in the C file; assume it's linked externally "
 "instead"
 msgstr ""
 
-#: gio/glib-compile-resources.c:749
+#: gio/glib-compile-resources.c:831
 msgid "C identifier name used for the generated source code"
 msgstr ""
 
-#: gio/glib-compile-resources.c:775
+#: gio/glib-compile-resources.c:832
+msgid "The target C compiler (default: the CC environment variable)"
+msgstr ""
+
+#: gio/glib-compile-resources.c:858
 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 ""
 
-#: gio/glib-compile-resources.c:797
+#: gio/glib-compile-resources.c:880
 msgid "You should give exactly one file name\n"
 msgstr ""
 
@@ -2839,8 +2858,8 @@ msgstr "%s файл атын ауыстыру қатесі: %s"
 msgid "Can’t rename file, filename already exists"
 msgstr "Файл атын ауыстыру мүмкін емес, ондай файл бар болып тұр"
 
-#: gio/glocalfile.c:1184 gio/glocalfile.c:2371 gio/glocalfile.c:2399
-#: gio/glocalfile.c:2538 gio/glocalfileoutputstream.c:656
+#: gio/glocalfile.c:1184 gio/glocalfile.c:2380 gio/glocalfile.c:2408
+#: gio/glocalfile.c:2547 gio/glocalfileoutputstream.c:656
 msgid "Invalid filename"
 msgstr "Файл аты қате"
 
@@ -2854,92 +2873,91 @@ msgstr "%s файлын ашу қатесі: %s"
 msgid "Error removing file %s: %s"
 msgstr "%s файлын өшіру қатесі: %s"
 
-#: gio/glocalfile.c:1982 gio/glocalfile.c:1993
+#: gio/glocalfile.c:1982 gio/glocalfile.c:1993 gio/glocalfile.c:2020
 #, c-format
 msgid "Error trashing file %s: %s"
 msgstr "%s файлын қоқысқа тастау қатесі: %s"
 
-#: gio/glocalfile.c:2031
+#: gio/glocalfile.c:2040
 #, c-format
-#| msgid "Unable to trash file %s: %s"
 msgid "Unable to create trash directory %s: %s"
 msgstr "%s қоқыс шелегін жасау мүмкін емес: %s"
 
-#: gio/glocalfile.c:2052
+#: gio/glocalfile.c:2061
 #, c-format
 msgid "Unable to find toplevel directory to trash %s"
 msgstr ""
 
-#: gio/glocalfile.c:2060
+#: gio/glocalfile.c:2069
 #, c-format
 msgid "Trashing on system internal mounts is not supported"
 msgstr ""
 
-#: gio/glocalfile.c:2146 gio/glocalfile.c:2174
+#: gio/glocalfile.c:2155 gio/glocalfile.c:2183
 #, c-format
 msgid "Unable to find or create trash directory %s to trash %s"
 msgstr ""
 
-#: gio/glocalfile.c:2220
+#: gio/glocalfile.c:2229
 #, c-format
 msgid "Unable to create trashing info file for %s: %s"
 msgstr ""
 
-#: gio/glocalfile.c:2282
+#: gio/glocalfile.c:2291
 #, c-format
 msgid "Unable to trash file %s across filesystem boundaries"
 msgstr ""
 
-#: gio/glocalfile.c:2286 gio/glocalfile.c:2342
+#: gio/glocalfile.c:2295 gio/glocalfile.c:2351
 #, c-format
 msgid "Unable to trash file %s: %s"
 msgstr "%s файлын қоқысқа тастау мүмкін емес: %s"
 
-#: gio/glocalfile.c:2348
+#: gio/glocalfile.c:2357
 #, c-format
 msgid "Unable to trash file %s"
 msgstr "%s файлын қоқысқа тастау мүмкін емес"
 
-#: gio/glocalfile.c:2374
+#: gio/glocalfile.c:2383
 #, c-format
 msgid "Error creating directory %s: %s"
 msgstr "%s бумасын жасау қатесі: %s"
 
-#: gio/glocalfile.c:2403
+#: gio/glocalfile.c:2412
 #, c-format
 msgid "Filesystem does not support symbolic links"
 msgstr ""
 
-#: gio/glocalfile.c:2406
+#: gio/glocalfile.c:2415
 #, c-format
 msgid "Error making symbolic link %s: %s"
 msgstr "%s символдық сілтемесін жасау қатесі: %s"
 
-#: gio/glocalfile.c:2449 gio/glocalfile.c:2484 gio/glocalfile.c:2541
+#: gio/glocalfile.c:2458 gio/glocalfile.c:2493 gio/glocalfile.c:2550
 #, c-format
 msgid "Error moving file %s: %s"
 msgstr "%s файлын жылжыту қатесі: %s"
 
-#: gio/glocalfile.c:2472
+#: gio/glocalfile.c:2481
 msgid "Can’t move directory over directory"
 msgstr "Буманы бума үстіне жылжыту мүмкін емес"
 
-#: gio/glocalfile.c:2498 gio/glocalfileoutputstream.c:1108
+#: gio/glocalfile.c:2507 gio/glocalfileoutputstream.c:1108
 #: gio/glocalfileoutputstream.c:1122 gio/glocalfileoutputstream.c:1137
 #: gio/glocalfileoutputstream.c:1154 gio/glocalfileoutputstream.c:1168
 msgid "Backup file creation failed"
 msgstr "Қор көшірме файлын жасау сәтсіз аяқталды"
 
-#: gio/glocalfile.c:2517
+#: gio/glocalfile.c:2526
 #, c-format
 msgid "Error removing target file: %s"
 msgstr "Мақсат файлын өшіру қатесі: %s"
 
-#: gio/glocalfile.c:2531
+#: gio/glocalfile.c:2540
 msgid "Move between mounts not supported"
 msgstr ""
 
-#: gio/glocalfile.c:2705
+#: gio/glocalfile.c:2714
 #, c-format
 msgid "Could not determine the disk usage of %s: %s"
 msgstr ""
@@ -3122,7 +3140,7 @@ msgid "Error truncating file: %s"
 msgstr ""
 
 #: gio/glocalfileoutputstream.c:662 gio/glocalfileoutputstream.c:907
-#: gio/glocalfileoutputstream.c:1218 gio/gsubprocess.c:226
+#: gio/glocalfileoutputstream.c:1218 gio/gsubprocess.c:229
 #, c-format
 msgid "Error opening file “%s”: %s"
 msgstr "\"%s\" файлын ашу қатесі: %s"
@@ -3144,7 +3162,7 @@ msgstr "Файл сыртқы түрде өзгертілді"
 msgid "Error removing old file: %s"
 msgstr "Ескі файлды өшіру қатесі: %s"
 
-#: gio/gmemoryinputstream.c:474 gio/gmemoryoutputstream.c:772
+#: gio/gmemoryinputstream.c:474 gio/gmemoryoutputstream.c:762
 msgid "Invalid GSeekType supplied"
 msgstr ""
 
@@ -3156,25 +3174,25 @@ msgstr ""
 msgid "Cannot truncate GMemoryInputStream"
 msgstr ""
 
-#: gio/gmemoryoutputstream.c:567
+#: gio/gmemoryoutputstream.c:568
 msgid "Memory output stream not resizable"
 msgstr ""
 
-#: gio/gmemoryoutputstream.c:583
+#: gio/gmemoryoutputstream.c:584
 msgid "Failed to resize memory output stream"
 msgstr ""
 
-#: gio/gmemoryoutputstream.c:673
+#: gio/gmemoryoutputstream.c:663
 msgid ""
 "Amount of memory required to process the write is larger than available "
 "address space"
 msgstr ""
 
-#: gio/gmemoryoutputstream.c:782
+#: gio/gmemoryoutputstream.c:772
 msgid "Requested seek before the beginning of the stream"
 msgstr ""
 
-#: gio/gmemoryoutputstream.c:797
+#: gio/gmemoryoutputstream.c:787
 msgid "Requested seek beyond the end of the stream"
 msgstr ""
 
@@ -3254,12 +3272,12 @@ msgstr ""
 msgid "Could not get network status: "
 msgstr ""
 
-#: gio/gnetworkmonitornm.c:348
+#: gio/gnetworkmonitornm.c:311
 #, c-format
 msgid "NetworkManager not running"
 msgstr "NetworkManager орындалы тұрған жоқ"
 
-#: gio/gnetworkmonitornm.c:359
+#: gio/gnetworkmonitornm.c:322
 #, c-format
 msgid "NetworkManager version too old"
 msgstr "NetworkManager нұсқасы тым ескі"
@@ -3277,18 +3295,18 @@ msgstr ""
 msgid "Source stream is already closed"
 msgstr ""
 
-#: gio/gresolver.c:386 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
+#: gio/gresolver.c:401 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
 #, c-format
 msgid "Error resolving “%s”: %s"
 msgstr ""
 
 #. Translators: The placeholder is for a function name.
-#: gio/gresolver.c:455 gio/gresolver.c:615
+#: gio/gresolver.c:470 gio/gresolver.c:630
 #, c-format
 msgid "%s not implemented"
 msgstr ""
 
-#: gio/gresolver.c:984 gio/gresolver.c:1036
+#: gio/gresolver.c:999 gio/gresolver.c:1051
 msgid "Invalid domain"
 msgstr "Хост аты қате"
 
@@ -3379,7 +3397,7 @@ msgstr ""
 msgid "  SECTION   An (optional) elf section name\n"
 msgstr ""
 
-#: gio/gresource-tool.c:565 gio/gsettings-tool.c:706
+#: gio/gresource-tool.c:565 gio/gsettings-tool.c:718
 msgid "  COMMAND   The (optional) command to explain\n"
 msgstr ""
 
@@ -3409,7 +3427,7 @@ msgstr "ЖОЛ"
 msgid "  PATH      A resource path\n"
 msgstr ""
 
-#: gio/gsettings-tool.c:49 gio/gsettings-tool.c:70 gio/gsettings-tool.c:911
+#: gio/gsettings-tool.c:49 gio/gsettings-tool.c:70 gio/gsettings-tool.c:923
 #, c-format
 msgid "No such schema “%s”\n"
 msgstr ""
@@ -3440,93 +3458,93 @@ msgstr ""
 msgid "Path must not contain two adjacent slashes (//)\n"
 msgstr ""
 
-#: gio/gsettings-tool.c:541
+#: gio/gsettings-tool.c:553
 msgid "The provided value is outside of the valid range\n"
 msgstr ""
 
-#: gio/gsettings-tool.c:548
+#: gio/gsettings-tool.c:560
 msgid "The key is not writable\n"
 msgstr ""
 
-#: gio/gsettings-tool.c:584
+#: gio/gsettings-tool.c:596
 msgid "List the installed (non-relocatable) schemas"
 msgstr ""
 
-#: gio/gsettings-tool.c:590
+#: gio/gsettings-tool.c:602
 msgid "List the installed relocatable schemas"
 msgstr ""
 
-#: gio/gsettings-tool.c:596
+#: gio/gsettings-tool.c:608
 msgid "List the keys in SCHEMA"
 msgstr ""
 
-#: gio/gsettings-tool.c:597 gio/gsettings-tool.c:603 gio/gsettings-tool.c:646
+#: gio/gsettings-tool.c:609 gio/gsettings-tool.c:615 gio/gsettings-tool.c:658
 msgid "SCHEMA[:PATH]"
 msgstr "SCHEMA[:PATH]"
 
-#: gio/gsettings-tool.c:602
+#: gio/gsettings-tool.c:614
 msgid "List the children of SCHEMA"
 msgstr ""
 
-#: gio/gsettings-tool.c:608
+#: gio/gsettings-tool.c:620
 msgid ""
 "List keys and values, recursively\n"
 "If no SCHEMA is given, list all keys\n"
 msgstr ""
 
-#: gio/gsettings-tool.c:610
+#: gio/gsettings-tool.c:622
 msgid "[SCHEMA[:PATH]]"
 msgstr "[SCHEMA[:PATH]]"
 
-#: gio/gsettings-tool.c:615
+#: gio/gsettings-tool.c:627
 msgid "Get the value of KEY"
 msgstr ""
 
-#: gio/gsettings-tool.c:616 gio/gsettings-tool.c:622 gio/gsettings-tool.c:628
-#: gio/gsettings-tool.c:640 gio/gsettings-tool.c:652
+#: gio/gsettings-tool.c:628 gio/gsettings-tool.c:634 gio/gsettings-tool.c:640
+#: gio/gsettings-tool.c:652 gio/gsettings-tool.c:664
 msgid "SCHEMA[:PATH] KEY"
 msgstr "SCHEMA[:PATH] KEY"
 
-#: gio/gsettings-tool.c:621
+#: gio/gsettings-tool.c:633
 msgid "Query the range of valid values for KEY"
 msgstr ""
 
-#: gio/gsettings-tool.c:627
+#: gio/gsettings-tool.c:639
 msgid "Query the description for KEY"
 msgstr ""
 
-#: gio/gsettings-tool.c:633
+#: gio/gsettings-tool.c:645
 msgid "Set the value of KEY to VALUE"
 msgstr ""
 
-#: gio/gsettings-tool.c:634
+#: gio/gsettings-tool.c:646
 msgid "SCHEMA[:PATH] KEY VALUE"
 msgstr "SCHEMA[:PATH] KEY VALUE"
 
-#: gio/gsettings-tool.c:639
+#: gio/gsettings-tool.c:651
 msgid "Reset KEY to its default value"
 msgstr ""
 
-#: gio/gsettings-tool.c:645
+#: gio/gsettings-tool.c:657
 msgid "Reset all keys in SCHEMA to their defaults"
 msgstr ""
 
-#: gio/gsettings-tool.c:651
+#: gio/gsettings-tool.c:663
 msgid "Check if KEY is writable"
 msgstr ""
 
-#: gio/gsettings-tool.c:657
+#: gio/gsettings-tool.c:669
 msgid ""
 "Monitor KEY for changes.\n"
 "If no KEY is specified, monitor all keys in SCHEMA.\n"
 "Use ^C to stop monitoring.\n"
 msgstr ""
 
-#: gio/gsettings-tool.c:660
+#: gio/gsettings-tool.c:672
 msgid "SCHEMA[:PATH] [KEY]"
 msgstr ""
 
-#: gio/gsettings-tool.c:672
+#: gio/gsettings-tool.c:684
 msgid ""
 "Usage:\n"
 "  gsettings --version\n"
@@ -3552,7 +3570,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: gio/gsettings-tool.c:696
+#: gio/gsettings-tool.c:708
 #, c-format
 msgid ""
 "Usage:\n"
@@ -3562,222 +3580,221 @@ msgid ""
 "\n"
 msgstr ""
 
-#: gio/gsettings-tool.c:702
+#: gio/gsettings-tool.c:714
 msgid "  SCHEMADIR A directory to search for additional schemas\n"
 msgstr ""
 
-#: gio/gsettings-tool.c:710
+#: gio/gsettings-tool.c:722
 msgid ""
 "  SCHEMA    The name of the schema\n"
 "  PATH      The path, for relocatable schemas\n"
 msgstr ""
 
-#: gio/gsettings-tool.c:715
+#: gio/gsettings-tool.c:727
 msgid "  KEY       The (optional) key within the schema\n"
 msgstr ""
 
-#: gio/gsettings-tool.c:719
+#: gio/gsettings-tool.c:731
 msgid "  KEY       The key within the schema\n"
 msgstr ""
 
-#: gio/gsettings-tool.c:723
+#: gio/gsettings-tool.c:735
 msgid "  VALUE     The value to set\n"
 msgstr ""
 
-#: gio/gsettings-tool.c:778
+#: gio/gsettings-tool.c:790
 #, c-format
 msgid "Could not load schemas from %s: %s\n"
 msgstr ""
 
-#: gio/gsettings-tool.c:790
+#: gio/gsettings-tool.c:802
 msgid "No schemas installed\n"
 msgstr ""
 
-#: gio/gsettings-tool.c:869
+#: gio/gsettings-tool.c:881
 msgid "Empty schema name given\n"
 msgstr ""
 
-#: gio/gsettings-tool.c:924
+#: gio/gsettings-tool.c:936
 #, c-format
 msgid "No such key “%s”\n"
 msgstr ""
 
-#: gio/gsocket.c:413
+#: gio/gsocket.c:417
 msgid "Invalid socket, not initialized"
 msgstr ""
 
-#: gio/gsocket.c:420
+#: gio/gsocket.c:424
 #, c-format
 msgid "Invalid socket, initialization failed due to: %s"
 msgstr ""
 
-#: gio/gsocket.c:428
+#: gio/gsocket.c:432
 msgid "Socket is already closed"
 msgstr ""
 
-#: gio/gsocket.c:443 gio/gsocket.c:3190 gio/gsocket.c:4420 gio/gsocket.c:4478
+#: gio/gsocket.c:447 gio/gsocket.c:3194 gio/gsocket.c:4427 gio/gsocket.c:4485
 msgid "Socket I/O timed out"
 msgstr "Сокет Е/Ш күту мерзімі аяқталған"
 
-#: gio/gsocket.c:578
+#: gio/gsocket.c:582
 #, c-format
 msgid "creating GSocket from fd: %s"
 msgstr ""
 
-#: gio/gsocket.c:607 gio/gsocket.c:671 gio/gsocket.c:678
+#: gio/gsocket.c:611 gio/gsocket.c:675 gio/gsocket.c:682
 #, c-format
 msgid "Unable to create socket: %s"
 msgstr ""
 
-#: gio/gsocket.c:671
+#: gio/gsocket.c:675
 msgid "Unknown family was specified"
 msgstr ""
 
-#: gio/gsocket.c:678
+#: gio/gsocket.c:682
 msgid "Unknown protocol was specified"
 msgstr ""
 
-#: gio/gsocket.c:1169
+#: gio/gsocket.c:1173
 #, c-format
 msgid "Cannot use datagram operations on a non-datagram socket."
 msgstr ""
 
-#: gio/gsocket.c:1186
+#: gio/gsocket.c:1190
 #, c-format
 msgid "Cannot use datagram operations on a socket with a timeout set."
 msgstr ""
 
-#: gio/gsocket.c:1993
+#: gio/gsocket.c:1997
 #, c-format
 msgid "could not get local address: %s"
 msgstr ""
 
-#: gio/gsocket.c:2039
+#: gio/gsocket.c:2043
 #, c-format
 msgid "could not get remote address: %s"
 msgstr ""
 
-#: gio/gsocket.c:2105
+#: gio/gsocket.c:2109
 #, c-format
 msgid "could not listen: %s"
 msgstr ""
 
-#: gio/gsocket.c:2209
+#: gio/gsocket.c:2213
 #, c-format
 msgid "Error binding to address %s: %s"
 msgstr ""
 
-#: gio/gsocket.c:2385 gio/gsocket.c:2422 gio/gsocket.c:2532 gio/gsocket.c:2557
-#: gio/gsocket.c:2620 gio/gsocket.c:2678 gio/gsocket.c:2696
+#: gio/gsocket.c:2389 gio/gsocket.c:2426 gio/gsocket.c:2536 gio/gsocket.c:2561
+#: gio/gsocket.c:2624 gio/gsocket.c:2682 gio/gsocket.c:2700
 #, c-format
 msgid "Error joining multicast group: %s"
 msgstr ""
 
-#: gio/gsocket.c:2386 gio/gsocket.c:2423 gio/gsocket.c:2533 gio/gsocket.c:2558
-#: gio/gsocket.c:2621 gio/gsocket.c:2679 gio/gsocket.c:2697
+#: gio/gsocket.c:2390 gio/gsocket.c:2427 gio/gsocket.c:2537 gio/gsocket.c:2562
+#: gio/gsocket.c:2625 gio/gsocket.c:2683 gio/gsocket.c:2701
 #, c-format
 msgid "Error leaving multicast group: %s"
 msgstr ""
 
-#: gio/gsocket.c:2387
+#: gio/gsocket.c:2391
 msgid "No support for source-specific multicast"
 msgstr ""
 
-#: gio/gsocket.c:2534
+#: gio/gsocket.c:2538
 msgid "Unsupported socket family"
 msgstr ""
 
-#: gio/gsocket.c:2559
+#: gio/gsocket.c:2563
 msgid "source-specific not an IPv4 address"
 msgstr ""
 
-#: gio/gsocket.c:2583
+#: gio/gsocket.c:2587
 #, c-format
 msgid "Interface name too long"
 msgstr ""
 
-#: gio/gsocket.c:2596 gio/gsocket.c:2646
+#: gio/gsocket.c:2600 gio/gsocket.c:2650
 #, c-format
 msgid "Interface not found: %s"
 msgstr ""
 
-#: gio/gsocket.c:2622
+#: gio/gsocket.c:2626
 msgid "No support for IPv4 source-specific multicast"
 msgstr ""
 
-#: gio/gsocket.c:2680
+#: gio/gsocket.c:2684
 msgid "No support for IPv6 source-specific multicast"
 msgstr ""
 
-#: gio/gsocket.c:2889
+#: gio/gsocket.c:2893
 #, c-format
 msgid "Error accepting connection: %s"
 msgstr ""
 
-#: gio/gsocket.c:3015
+#: gio/gsocket.c:3019
 msgid "Connection in progress"
 msgstr ""
 
-#: gio/gsocket.c:3066
+#: gio/gsocket.c:3070
 msgid "Unable to get pending error: "
 msgstr ""
 
-#: gio/gsocket.c:3255
+#: gio/gsocket.c:3259
 #, c-format
 msgid "Error receiving data: %s"
 msgstr ""
 
-#: gio/gsocket.c:3452
+#: gio/gsocket.c:3456
 #, c-format
 msgid "Error sending data: %s"
 msgstr ""
 
-#: gio/gsocket.c:3639
+#: gio/gsocket.c:3643
 #, c-format
 msgid "Unable to shutdown socket: %s"
 msgstr ""
 
-#: gio/gsocket.c:3720
+#: gio/gsocket.c:3724
 #, c-format
 msgid "Error closing socket: %s"
 msgstr ""
 
-#: gio/gsocket.c:4413
+#: gio/gsocket.c:4420
 #, c-format
 msgid "Waiting for socket condition: %s"
 msgstr ""
 
-#: gio/gsocket.c:4804 gio/gsocket.c:4820 gio/gsocket.c:4833
+#: gio/gsocket.c:4810 gio/gsocket.c:4826 gio/gsocket.c:4839
 #, c-format
-#| msgid "Error sending message: %s"
 msgid "Unable to send message: %s"
 msgstr "Хабарламаны жіберу мүмкін емес: %s"
 
-#: gio/gsocket.c:4805 gio/gsocket.c:4821 gio/gsocket.c:4834
+#: gio/gsocket.c:4811 gio/gsocket.c:4827 gio/gsocket.c:4840
 msgid "Message vectors too large"
 msgstr ""
 
-#: gio/gsocket.c:4850 gio/gsocket.c:4852 gio/gsocket.c:4999 gio/gsocket.c:5084
-#: gio/gsocket.c:5262 gio/gsocket.c:5302 gio/gsocket.c:5304
+#: gio/gsocket.c:4856 gio/gsocket.c:4858 gio/gsocket.c:5005 gio/gsocket.c:5090
+#: gio/gsocket.c:5268 gio/gsocket.c:5308 gio/gsocket.c:5310
 #, c-format
 msgid "Error sending message: %s"
 msgstr "Хабарламаны жіберу сәтсіз: %s"
 
-#: gio/gsocket.c:5026
+#: gio/gsocket.c:5032
 msgid "GSocketControlMessage not supported on Windows"
 msgstr ""
 
-#: gio/gsocket.c:5495 gio/gsocket.c:5571 gio/gsocket.c:5797
+#: gio/gsocket.c:5505 gio/gsocket.c:5581 gio/gsocket.c:5807
 #, c-format
 msgid "Error receiving message: %s"
 msgstr ""
 
-#: gio/gsocket.c:6070 gio/gsocket.c:6081 gio/gsocket.c:6127
+#: gio/gsocket.c:6090 gio/gsocket.c:6101 gio/gsocket.c:6164
 #, c-format
 msgid "Unable to read socket credentials: %s"
 msgstr ""
 
-#: gio/gsocket.c:6136
+#: gio/gsocket.c:6173
 msgid "g_socket_get_credentials not implemented for this OS"
 msgstr ""
 
@@ -3795,11 +3812,11 @@ msgstr ""
 msgid "Could not connect: "
 msgstr "Байланысу мүмкін емес: "
 
-#: gio/gsocketclient.c:1162 gio/gsocketclient.c:1749
+#: gio/gsocketclient.c:1202 gio/gsocketclient.c:1793
 msgid "Proxying over a non-TCP connection is not supported."
 msgstr ""
 
-#: gio/gsocketclient.c:1194 gio/gsocketclient.c:1778
+#: gio/gsocketclient.c:1234 gio/gsocketclient.c:1822
 #, c-format
 msgid "Proxy protocol “%s” is not supported."
 msgstr ""
@@ -3897,6 +3914,16 @@ msgstr ""
 msgid "Unknown SOCKSv5 proxy error."
 msgstr ""
 
+#: gio/gtestdbus.c:612 glib/gspawn-win32.c:314
+#, c-format
+msgid "Failed to create pipe for communicating with child process (%s)"
+msgstr ""
+
+#: gio/gtestdbus.c:619
+#, c-format
+msgid "Pipes are not supported in this platform"
+msgstr ""
+
 #: gio/gthemedicon.c:595
 #, c-format
 msgid "Can’t handle version %d of GThemedIcon encoding"
@@ -3928,27 +3955,31 @@ msgstr ""
 msgid "Error resolving “%s”"
 msgstr ""
 
-#: gio/gtlscertificate.c:419
+#: gio/gtlscertificate.c:478
 msgid "No PEM-encoded private key found"
 msgstr ""
 
-#: gio/gtlscertificate.c:429
+#: gio/gtlscertificate.c:488
 msgid "Cannot decrypt PEM-encoded private key"
 msgstr ""
 
-#: gio/gtlscertificate.c:440
+#: gio/gtlscertificate.c:499
 msgid "Could not parse PEM-encoded private key"
 msgstr ""
 
-#: gio/gtlscertificate.c:467
+#: gio/gtlscertificate.c:526
 msgid "No PEM-encoded certificate found"
 msgstr ""
 
-#: gio/gtlscertificate.c:476
+#: gio/gtlscertificate.c:535
 msgid "Could not parse PEM-encoded certificate"
 msgstr ""
 
-#: gio/gtlscertificate.c:832
+#: gio/gtlscertificate.c:796
+msgid "The current TLS backend does not support PKCS #12"
+msgstr ""
+
+#: gio/gtlscertificate.c:1013
 msgid "This GTlsBackend does not support creating PKCS #11 certificates"
 msgstr ""
 
@@ -3973,51 +4004,61 @@ msgstr ""
 msgid "The password entered is incorrect."
 msgstr ""
 
-#: gio/gunixconnection.c:166 gio/gunixconnection.c:579
+#: gio/gunixconnection.c:125
+#| msgid "Symbolic links not supported"
+msgid "Sending FD is not supported"
+msgstr ""
+
+#: gio/gunixconnection.c:178 gio/gunixconnection.c:596
 #, c-format
 msgid "Expecting 1 control message, got %d"
 msgid_plural "Expecting 1 control message, got %d"
 msgstr[0] ""
 
-#: gio/gunixconnection.c:182 gio/gunixconnection.c:591
+#: gio/gunixconnection.c:194 gio/gunixconnection.c:608
 msgid "Unexpected type of ancillary data"
 msgstr ""
 
-#: gio/gunixconnection.c:200
+#: gio/gunixconnection.c:212
 #, c-format
 msgid "Expecting one fd, but got %d\n"
 msgid_plural "Expecting one fd, but got %d\n"
 msgstr[0] ""
 
-#: gio/gunixconnection.c:219
+#: gio/gunixconnection.c:231
 msgid "Received invalid fd"
 msgstr ""
 
-#: gio/gunixconnection.c:363
+#: gio/gunixconnection.c:238
+#| msgid "Operation not supported"
+msgid "Receiving FD is not supported"
+msgstr ""
+
+#: gio/gunixconnection.c:380
 msgid "Error sending credentials: "
 msgstr ""
 
-#: gio/gunixconnection.c:520
+#: gio/gunixconnection.c:537
 #, c-format
 msgid "Error checking if SO_PASSCRED is enabled for socket: %s"
 msgstr ""
 
-#: gio/gunixconnection.c:536
+#: gio/gunixconnection.c:553
 #, c-format
 msgid "Error enabling SO_PASSCRED: %s"
 msgstr ""
 
-#: gio/gunixconnection.c:565
+#: gio/gunixconnection.c:582
 msgid ""
 "Expecting to read a single byte for receiving credentials but read zero bytes"
 msgstr ""
 
-#: gio/gunixconnection.c:605
+#: gio/gunixconnection.c:622
 #, c-format
 msgid "Not expecting control message, but got %d"
 msgstr ""
 
-#: gio/gunixconnection.c:630
+#: gio/gunixconnection.c:647
 #, c-format
 msgid "Error while disabling SO_PASSCRED: %s"
 msgstr ""
@@ -4033,7 +4074,7 @@ msgstr ""
 msgid "Error closing file descriptor: %s"
 msgstr ""
 
-#: gio/gunixmounts.c:2785 gio/gunixmounts.c:2838
+#: gio/gunixmounts.c:2782 gio/gunixmounts.c:2835
 msgid "Filesystem root"
 msgstr "Файлдық жүйе түбірі"
 
@@ -4044,7 +4085,7 @@ msgstr "Файлдық жүйе түбірі"
 msgid "Error writing to file descriptor: %s"
 msgstr ""
 
-#: gio/gunixsocketaddress.c:244
+#: gio/gunixsocketaddress.c:251
 msgid "Abstract UNIX domain socket addresses not supported on this system"
 msgstr ""
 
@@ -4194,8 +4235,8 @@ msgstr ""
 msgid "Unrepresentable character in conversion input"
 msgstr ""
 
-#: glib/gconvert.c:495 glib/gutf8.c:871 glib/gutf8.c:1083 glib/gutf8.c:1220
-#: glib/gutf8.c:1324
+#: glib/gconvert.c:495 glib/gutf8.c:886 glib/gutf8.c:1099 glib/gutf8.c:1236
+#: glib/gutf8.c:1340
 msgid "Partial character sequence at end of input"
 msgstr ""
 
@@ -4660,78 +4701,78 @@ msgstr "PM"
 msgid "Error opening directory “%s”: %s"
 msgstr "\"%s\" бумасын ашу қатесі: %s"
 
-#: glib/gfileutils.c:737 glib/gfileutils.c:829
+#: glib/gfileutils.c:733 glib/gfileutils.c:825
 #, c-format
 msgid "Could not allocate %lu byte to read file “%s”"
 msgid_plural "Could not allocate %lu bytes to read file “%s”"
 msgstr[0] ""
 
-#: glib/gfileutils.c:754
+#: glib/gfileutils.c:750
 #, c-format
 msgid "Error reading file “%s”: %s"
 msgstr "\"%s\" файлын оқу қатесі: %s"
 
-#: glib/gfileutils.c:790
+#: glib/gfileutils.c:786
 #, c-format
 msgid "File “%s” is too large"
 msgstr "\"%s\" файлы тым үлкен"
 
-#: glib/gfileutils.c:854
+#: glib/gfileutils.c:850
 #, c-format
 msgid "Failed to read from file “%s”: %s"
 msgstr "\"%s\" файлынан оқу қатесі: %s"
 
-#: glib/gfileutils.c:904 glib/gfileutils.c:979 glib/gfileutils.c:1468
+#: glib/gfileutils.c:900 glib/gfileutils.c:975 glib/gfileutils.c:1447
 #, c-format
 msgid "Failed to open file “%s”: %s"
 msgstr "\"%s\" файлын ашу қатесі: %s"
 
-#: glib/gfileutils.c:917
+#: glib/gfileutils.c:913
 #, c-format
 msgid "Failed to get attributes of file “%s”: fstat() failed: %s"
 msgstr ""
 
-#: glib/gfileutils.c:948
+#: glib/gfileutils.c:944
 #, c-format
 msgid "Failed to open file “%s”: fdopen() failed: %s"
 msgstr ""
 
-#: glib/gfileutils.c:1049
+#: glib/gfileutils.c:1045
 #, c-format
 msgid "Failed to rename file “%s” to “%s”: g_rename() failed: %s"
 msgstr ""
 
-#: glib/gfileutils.c:1175
+#: glib/gfileutils.c:1154
 #, c-format
 msgid "Failed to write file “%s”: write() failed: %s"
 msgstr "\"%s\" файлын жазу сәтсіз: write() сәтсіз аяқталды: %s"
 
-#: glib/gfileutils.c:1196
+#: glib/gfileutils.c:1175
 #, c-format
 msgid "Failed to write file “%s”: fsync() failed: %s"
 msgstr "\"%s\" файлын жазу сәтсіз: fsync() сәтсіз аяқталды: %s"
 
-#: glib/gfileutils.c:1357 glib/gfileutils.c:1772
+#: glib/gfileutils.c:1336 glib/gfileutils.c:1751
 #, c-format
 msgid "Failed to create file “%s”: %s"
 msgstr "\"%s\" файлын жасау сәтсіз: %s"
 
-#: glib/gfileutils.c:1402
+#: glib/gfileutils.c:1381
 #, c-format
 msgid "Existing file “%s” could not be removed: g_unlink() failed: %s"
 msgstr ""
 
-#: glib/gfileutils.c:1737
+#: glib/gfileutils.c:1716
 #, c-format
 msgid "Template “%s” invalid, should not contain a “%s”"
 msgstr ""
 
-#: glib/gfileutils.c:1750
+#: glib/gfileutils.c:1729
 #, c-format
 msgid "Template “%s” doesn’t contain XXXXXX"
 msgstr ""
 
-#: glib/gfileutils.c:2310 glib/gfileutils.c:2339
+#: glib/gfileutils.c:2289 glib/gfileutils.c:2318
 #, c-format
 msgid "Failed to read the symbolic link “%s”: %s"
 msgstr ""
@@ -4757,99 +4798,100 @@ msgstr ""
 msgid "Can’t do a raw read in g_io_channel_read_to_end"
 msgstr ""
 
-#: glib/gkeyfile.c:790
+#: glib/gkeyfile.c:794
 msgid "Valid key file could not be found in search dirs"
 msgstr ""
 
-#: glib/gkeyfile.c:827
+#: glib/gkeyfile.c:831
 msgid "Not a regular file"
 msgstr "Қалыпты файл емес"
 
-#: glib/gkeyfile.c:1282
+#: glib/gkeyfile.c:1289
 #, c-format
 msgid ""
 "Key file contains line “%s” which is not a key-value pair, group, or comment"
 msgstr ""
 
-#: glib/gkeyfile.c:1339
+#: glib/gkeyfile.c:1346
 #, c-format
 msgid "Invalid group name: %s"
 msgstr "Қате топ аты: %s"
 
-#: glib/gkeyfile.c:1361
+#: glib/gkeyfile.c:1370
 msgid "Key file does not start with a group"
 msgstr ""
 
-#: glib/gkeyfile.c:1387
+#: glib/gkeyfile.c:1394
 #, c-format
-msgid "Invalid key name: %s"
+#| msgid "Invalid filename %s"
+msgid "Invalid key name: %.*s"
 msgstr ""
 
-#: glib/gkeyfile.c:1414
+#: glib/gkeyfile.c:1422
 #, c-format
 msgid "Key file contains unsupported encoding “%s”"
 msgstr ""
 
-#: glib/gkeyfile.c:1663 glib/gkeyfile.c:1836 glib/gkeyfile.c:3289
-#: glib/gkeyfile.c:3353 glib/gkeyfile.c:3483 glib/gkeyfile.c:3615
-#: glib/gkeyfile.c:3761 glib/gkeyfile.c:3996 glib/gkeyfile.c:4063
+#: glib/gkeyfile.c:1677 glib/gkeyfile.c:1850 glib/gkeyfile.c:3297
+#: glib/gkeyfile.c:3361 glib/gkeyfile.c:3491 glib/gkeyfile.c:3623
+#: glib/gkeyfile.c:3769 glib/gkeyfile.c:4004 glib/gkeyfile.c:4071
 #, c-format
 msgid "Key file does not have group “%s”"
 msgstr ""
 
-#: glib/gkeyfile.c:1791
+#: glib/gkeyfile.c:1805
 #, c-format
 msgid "Key file does not have key “%s” in group “%s”"
 msgstr ""
 
-#: glib/gkeyfile.c:1953 glib/gkeyfile.c:2069
+#: glib/gkeyfile.c:1967 glib/gkeyfile.c:2083
 #, c-format
 msgid "Key file contains key “%s” with value “%s” which is not UTF-8"
 msgstr ""
 
-#: glib/gkeyfile.c:1973 glib/gkeyfile.c:2089 glib/gkeyfile.c:2531
+#: glib/gkeyfile.c:1987 glib/gkeyfile.c:2103 glib/gkeyfile.c:2542
 #, c-format
 msgid ""
 "Key file contains key “%s” which has a value that cannot be interpreted."
 msgstr ""
 
-#: glib/gkeyfile.c:2749 glib/gkeyfile.c:3118
+#: glib/gkeyfile.c:2757 glib/gkeyfile.c:3126
 #, c-format
 msgid ""
 "Key file contains key “%s” in group “%s” which has a value that cannot be "
 "interpreted."
 msgstr ""
 
-#: glib/gkeyfile.c:2827 glib/gkeyfile.c:2904
+#: glib/gkeyfile.c:2835 glib/gkeyfile.c:2912
 #, c-format
 msgid "Key “%s” in group “%s” has value “%s” where %s was expected"
 msgstr ""
 
-#: glib/gkeyfile.c:4306
+#: glib/gkeyfile.c:4324
 msgid "Key file contains escape character at end of line"
 msgstr ""
 
-#: glib/gkeyfile.c:4328
+#: glib/gkeyfile.c:4346
 #, c-format
 msgid "Key file contains invalid escape sequence “%s”"
 msgstr ""
 
-#: glib/gkeyfile.c:4472
+#: glib/gkeyfile.c:4491
 #, c-format
 msgid "Value “%s” cannot be interpreted as a number."
 msgstr ""
 
-#: glib/gkeyfile.c:4486
+#: glib/gkeyfile.c:4505
 #, c-format
 msgid "Integer value “%s” out of range"
 msgstr ""
 
-#: glib/gkeyfile.c:4519
+#: glib/gkeyfile.c:4538
 #, c-format
 msgid "Value “%s” cannot be interpreted as a float number."
 msgstr ""
 
-#: glib/gkeyfile.c:4558
+#: glib/gkeyfile.c:4577
 #, c-format
 msgid "Value “%s” cannot be interpreted as a boolean."
 msgstr ""
@@ -5109,7 +5151,7 @@ msgstr ""
 msgid "Missing argument for %s"
 msgstr ""
 
-#: glib/goption.c:2185
+#: glib/goption.c:2184
 #, c-format
 msgid "Unknown option %s"
 msgstr "Белгісіз опция %s"
@@ -5479,168 +5521,180 @@ msgstr "белгісіз escape тізбегі"
 msgid "Error while parsing replacement text “%s” at char %lu: %s"
 msgstr ""
 
-#: glib/gshell.c:94
+#: glib/gshell.c:96
 msgid "Quoted text doesn’t begin with a quotation mark"
 msgstr ""
 
-#: glib/gshell.c:184
+#: glib/gshell.c:186
 msgid "Unmatched quotation mark in command line or other shell-quoted text"
 msgstr ""
 
-#: glib/gshell.c:580
+#: glib/gshell.c:592
 #, c-format
 msgid "Text ended just after a “\\” character. (The text was “%s”)"
 msgstr ""
 
-#: glib/gshell.c:587
+#: glib/gshell.c:599
 #, c-format
 msgid "Text ended before matching quote was found for %c. (The text was “%s”)"
 msgstr ""
 
-#: glib/gshell.c:599
+#: glib/gshell.c:611
 msgid "Text was empty (or contained only whitespace)"
 msgstr "Мәтін бос болды (немесе тек бос аралықтан тұрды)"
 
-#: glib/gspawn.c:308
+#: glib/gspawn.c:310
 #, c-format
 msgid "Failed to read data from child process (%s)"
 msgstr ""
 
-#: glib/gspawn.c:458
+#: glib/gspawn.c:461
 #, c-format
 msgid "Unexpected error in reading data from a child process (%s)"
 msgstr ""
 
-#: glib/gspawn.c:543
+#: glib/gspawn.c:546
 #, c-format
 msgid "Unexpected error in waitpid() (%s)"
 msgstr ""
 
-#: glib/gspawn.c:1152 glib/gspawn-win32.c:1407
+#: glib/gspawn.c:1168 glib/gspawn-win32.c:1426
 #, c-format
 msgid "Child process exited with code %ld"
 msgstr ""
 
-#: glib/gspawn.c:1160
+#: glib/gspawn.c:1176
 #, c-format
 msgid "Child process killed by signal %ld"
 msgstr ""
 
-#: glib/gspawn.c:1167
+#: glib/gspawn.c:1183
 #, c-format
 msgid "Child process stopped by signal %ld"
 msgstr ""
 
-#: glib/gspawn.c:1174
+#: glib/gspawn.c:1190
 #, c-format
 msgid "Child process exited abnormally"
 msgstr ""
 
-#: glib/gspawn.c:1793 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
+#: glib/gspawn.c:1881 glib/gspawn-win32.c:353 glib/gspawn-win32.c:361
 #, c-format
 msgid "Failed to read from child pipe (%s)"
 msgstr ""
 
-#: glib/gspawn.c:2095
+#: glib/gspawn.c:2241
 #, c-format
 msgid "Failed to spawn child process “%s” (%s)"
 msgstr ""
 
-#: glib/gspawn.c:2212
+#: glib/gspawn.c:2358
 #, c-format
 msgid "Failed to fork (%s)"
 msgstr ""
 
-#: glib/gspawn.c:2372 glib/gspawn-win32.c:381
+#: glib/gspawn.c:2518 glib/gspawn-win32.c:384
 #, c-format
 msgid "Failed to change to directory “%s” (%s)"
 msgstr "\"%s\" бумасына ауысу сәтсіз аяқталды (%s)"
 
-#: glib/gspawn.c:2382
+#: glib/gspawn.c:2528
 #, c-format
 msgid "Failed to execute child process “%s” (%s)"
 msgstr ""
 
-#: glib/gspawn.c:2392
+#: glib/gspawn.c:2538
+#, c-format
+#| msgid "Failed to open file “%s”: open() failed: %s"
+msgid "Failed to open file to remap file descriptor (%s)"
+msgstr ""
+
+#: glib/gspawn.c:2546
 #, c-format
-msgid "Failed to redirect output or input of child process (%s)"
+msgid "Failed to duplicate file descriptor for child process (%s)"
 msgstr ""
 
-#: glib/gspawn.c:2401
+#: glib/gspawn.c:2555
 #, c-format
 msgid "Failed to fork child process (%s)"
 msgstr ""
 
-#: glib/gspawn.c:2409
+#: glib/gspawn.c:2563
+#, c-format
+msgid "Failed to close file descriptor for child process (%s)"
+msgstr ""
+
+#: glib/gspawn.c:2571
 #, c-format
 msgid "Unknown error executing child process “%s”"
 msgstr ""
 
-#: glib/gspawn.c:2433
+#: glib/gspawn.c:2595
 #, c-format
 msgid "Failed to read enough data from child pid pipe (%s)"
 msgstr ""
 
-#: glib/gspawn-win32.c:294
+#: glib/gspawn-win32.c:297
 msgid "Failed to read data from child process"
 msgstr ""
 
-#: glib/gspawn-win32.c:311
+#: glib/gspawn-win32.c:390 glib/gspawn-win32.c:395 glib/gspawn-win32.c:519
 #, c-format
-msgid "Failed to create pipe for communicating with child process (%s)"
+msgid "Failed to execute child process (%s)"
 msgstr ""
 
-#: glib/gspawn-win32.c:387 glib/gspawn-win32.c:392 glib/gspawn-win32.c:511
+#: glib/gspawn-win32.c:400
 #, c-format
-msgid "Failed to execute child process (%s)"
+#| msgid "Failed to execute helper program (%s)"
+msgid "Failed to dup() in child process (%s)"
 msgstr ""
 
-#: glib/gspawn-win32.c:461
+#: glib/gspawn-win32.c:469
 #, c-format
 msgid "Invalid program name: %s"
 msgstr "Бағдарлама аты қате: %s"
 
-#: glib/gspawn-win32.c:471 glib/gspawn-win32.c:779
+#: glib/gspawn-win32.c:479 glib/gspawn-win32.c:797
 #, c-format
 msgid "Invalid string in argument vector at %d: %s"
 msgstr ""
 
-#: glib/gspawn-win32.c:482 glib/gspawn-win32.c:794
+#: glib/gspawn-win32.c:490 glib/gspawn-win32.c:813
 #, c-format
 msgid "Invalid string in environment: %s"
 msgstr ""
 
-#: glib/gspawn-win32.c:775
+#: glib/gspawn-win32.c:793
 #, c-format
 msgid "Invalid working directory: %s"
 msgstr "Жұмыс бумасы қате: %s"
 
-#: glib/gspawn-win32.c:837
+#: glib/gspawn-win32.c:858
 #, c-format
 msgid "Failed to execute helper program (%s)"
 msgstr "Көмекші бағдарламаны орындау қатесі (%s)"
 
-#: glib/gspawn-win32.c:1064
+#: glib/gspawn-win32.c:1086
 msgid ""
 "Unexpected error in g_io_channel_win32_poll() reading data from a child "
 "process"
 msgstr ""
 
-#: glib/gstrfuncs.c:3338 glib/gstrfuncs.c:3440
+#: glib/gstrfuncs.c:3351 glib/gstrfuncs.c:3453
 msgid "Empty string is not a number"
 msgstr ""
 
-#: glib/gstrfuncs.c:3362
+#: glib/gstrfuncs.c:3375
 #, c-format
 msgid "“%s” is not a signed number"
 msgstr "\"%s\" таңбасы бар сан емес"
 
-#: glib/gstrfuncs.c:3372 glib/gstrfuncs.c:3476
+#: glib/gstrfuncs.c:3385 glib/gstrfuncs.c:3489
 #, c-format
 msgid "Number “%s” is out of bounds [%s, %s]"
 msgstr ""
 
-#: glib/gstrfuncs.c:3466
+#: glib/gstrfuncs.c:3479
 #, c-format
 msgid "“%s” is not an unsigned number"
 msgstr "\"%s\" таңбасы жоқ сан емес"
@@ -5693,196 +5747,196 @@ msgstr ""
 msgid "URI ‘%s’ has no host component"
 msgstr ""
 
-#: glib/guri.c:1435
+#: glib/guri.c:1460
 msgid "URI is not absolute, and no base URI was provided"
 msgstr ""
 
-#: glib/guri.c:2213
+#: glib/guri.c:2238
 msgid "Missing ‘=’ and parameter value"
 msgstr ""
 
-#: glib/gutf8.c:817
+#: glib/gutf8.c:832
 msgid "Failed to allocate memory"
 msgstr "Жадыны бөлу сәтсіз"
 
-#: glib/gutf8.c:950
+#: glib/gutf8.c:965
 msgid "Character out of range for UTF-8"
 msgstr ""
 
-#: glib/gutf8.c:1051 glib/gutf8.c:1060 glib/gutf8.c:1190 glib/gutf8.c:1199
-#: glib/gutf8.c:1338 glib/gutf8.c:1435
+#: glib/gutf8.c:1067 glib/gutf8.c:1076 glib/gutf8.c:1206 glib/gutf8.c:1215
+#: glib/gutf8.c:1354 glib/gutf8.c:1451
 msgid "Invalid sequence in conversion input"
 msgstr ""
 
-#: glib/gutf8.c:1349 glib/gutf8.c:1446
+#: glib/gutf8.c:1365 glib/gutf8.c:1462
 msgid "Character out of range for UTF-16"
 msgstr ""
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2727
+#: glib/gutils.c:2849
 #, c-format
 msgid "%.1f kB"
 msgstr "%.1f КБ"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2729
+#: glib/gutils.c:2851
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f МБ"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2731
+#: glib/gutils.c:2853
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f ГБ"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2733
+#: glib/gutils.c:2855
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f ТБ"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2735
+#: glib/gutils.c:2857
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f ПБ"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2737
+#: glib/gutils.c:2859
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f ЭБ"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2741
+#: glib/gutils.c:2863
 #, c-format
 msgid "%.1f KiB"
 msgstr "%.1f КиБ"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2743
+#: glib/gutils.c:2865
 #, c-format
 msgid "%.1f MiB"
 msgstr "%.1f МиБ"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2745
+#: glib/gutils.c:2867
 #, c-format
 msgid "%.1f GiB"
 msgstr "%.1f ГиБ"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2747
+#: glib/gutils.c:2869
 #, c-format
 msgid "%.1f TiB"
 msgstr "%.1f ТиБ"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2749
+#: glib/gutils.c:2871
 #, c-format
 msgid "%.1f PiB"
 msgstr "%.1f ПиБ"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2751
+#: glib/gutils.c:2873
 #, c-format
 msgid "%.1f EiB"
 msgstr "%.1f ЭиБ"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2755
+#: glib/gutils.c:2877
 #, c-format
 msgid "%.1f kb"
 msgstr "%.1f кб"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2757
+#: glib/gutils.c:2879
 #, c-format
 msgid "%.1f Mb"
 msgstr "%.1f Мб"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2759
+#: glib/gutils.c:2881
 #, c-format
 msgid "%.1f Gb"
 msgstr "%.1f Гб"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2761
+#: glib/gutils.c:2883
 #, c-format
 msgid "%.1f Tb"
 msgstr "%.1f Тб"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2763
+#: glib/gutils.c:2885
 #, c-format
 msgid "%.1f Pb"
 msgstr "%.1f Пб"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2765
+#: glib/gutils.c:2887
 #, c-format
 msgid "%.1f Eb"
 msgstr "%.1f Эб"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2769
+#: glib/gutils.c:2891
 #, c-format
 msgid "%.1f Kib"
 msgstr "%.1f Киб"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2771
+#: glib/gutils.c:2893
 #, c-format
 msgid "%.1f Mib"
 msgstr "%.1f Миб"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2773
+#: glib/gutils.c:2895
 #, c-format
 msgid "%.1f Gib"
 msgstr "%.1f Гиб"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2775
+#: glib/gutils.c:2897
 #, c-format
 msgid "%.1f Tib"
 msgstr "%.1f Тиб"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2777
+#: glib/gutils.c:2899
 #, c-format
 msgid "%.1f Pib"
 msgstr "%.1f Пиб"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2779
+#: glib/gutils.c:2901
 #, c-format
 msgid "%.1f Eib"
 msgstr "%.1f Эиб"
 
-#: glib/gutils.c:2813 glib/gutils.c:2930
+#: glib/gutils.c:2935 glib/gutils.c:3052
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
 msgstr[0] "%u байт"
 
-#: glib/gutils.c:2817
+#: glib/gutils.c:2939
 #, c-format
 msgid "%u bit"
 msgid_plural "%u bits"
 msgstr[0] "%u бит"
 
 #. Translators: the %s in "%s bytes" will always be replaced by a number.
-#: glib/gutils.c:2884
+#: glib/gutils.c:3006
 #, c-format
 msgid "%s byte"
 msgid_plural "%s bytes"
 msgstr[0] "%s байт"
 
 #. Translators: the %s in "%s bits" will always be replaced by a number.
-#: glib/gutils.c:2889
+#: glib/gutils.c:3011
 #, c-format
 msgid "%s bit"
 msgid_plural "%s bits"
@@ -5893,32 +5947,32 @@ msgstr[0] "%s бит"
 #. * compatibility.  Users will not see this string unless a program is using this deprecated function.
 #. * Please translate as literally as possible.
 #.
-#: glib/gutils.c:2943
+#: glib/gutils.c:3065
 #, c-format
 msgid "%.1f KB"
 msgstr "%.1f КБ"
 
-#: glib/gutils.c:2948
+#: glib/gutils.c:3070
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f МБ"
 
-#: glib/gutils.c:2953
+#: glib/gutils.c:3075
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f ГБ"
 
-#: glib/gutils.c:2958
+#: glib/gutils.c:3080
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f ТБ"
 
-#: glib/gutils.c:2963
+#: glib/gutils.c:3085
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f ПБ"
 
-#: glib/gutils.c:2968
+#: glib/gutils.c:3090
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f ЭБ"
index 04c7668..e9e8494 100644 (file)
--- a/po/ko.po
+++ b/po/ko.po
@@ -4,7 +4,7 @@
 # Young-Ho Cha <ganadist@chollian.net>, 2002.
 # Eunju Kim <eukim@redhat.com>, 2007.
 # Seong-ho Cho <darkcircle.0426@gmail.com>, 2011-2012.
-# Changwoo Ryu <cwryu@debian.org>, 2002, 2004-2006, 2007-2011, 2013-2021.
+# Changwoo Ryu <cwryu@debian.org>, 2002, 2004-2006, 2007-2011, 2013-2022.
 #
 #
 # 용어:
@@ -16,8 +16,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: glib\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/glib/issues\n"
-"POT-Creation-Date: 2021-07-19 15:52+0000\n"
-"PO-Revision-Date: 2021-09-03 22:26+0900\n"
+"POT-Creation-Date: 2022-02-14 13:48+0000\n"
+"PO-Revision-Date: 2022-03-01 19:16+0900\n"
 "Last-Translator: Changwoo Ryu <cwryu@debian.org>\n"
 "Language-Team: GNOME Korea <gnome-kr@googlegroups.com>\n"
 "Language: ko\n"
@@ -26,28 +26,36 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 
-#: gio/gapplication.c:500
+#: gio/gappinfo.c:333
+msgid "Setting default applications not supported yet"
+msgstr "기본 프로그램 설정은 아직 지원하지 않습니다"
+
+#: gio/gappinfo.c:366
+msgid "Setting application as last used for type not supported yet"
+msgstr "타입에 대해 최근 사용한 프로그램 설정은 아직 지원하지 않습니다"
+
+#: gio/gapplication.c:497
 msgid "GApplication options"
 msgstr "GApplication 옵션"
 
-#: gio/gapplication.c:500
+#: gio/gapplication.c:497
 msgid "Show GApplication options"
 msgstr "GApplication 옵션을 표시합니다"
 
-#: gio/gapplication.c:545
+#: gio/gapplication.c:542
 msgid "Enter GApplication service mode (use from D-Bus service files)"
 msgstr "GApplication 서비스 모드로 들어갑니다 (D-버스 서비스 파일에서 사용)"
 
-#: gio/gapplication.c:557
+#: gio/gapplication.c:554
 msgid "Override the application’s ID"
 msgstr "프로그램 ID를 직접 지정합니다"
 
-#: gio/gapplication.c:569
+#: gio/gapplication.c:566
 msgid "Replace the running instance"
 msgstr "실행 중인 인스턴스를 바꿉니다"
 
 #: gio/gapplication-tool.c:45 gio/gapplication-tool.c:46 gio/gio-tool.c:227
-#: gio/gresource-tool.c:494 gio/gsettings-tool.c:572
+#: gio/gresource-tool.c:494 gio/gsettings-tool.c:584
 msgid "Print help"
 msgstr "도움말을 표시합니다"
 
@@ -59,7 +67,7 @@ msgstr "[<명령>]"
 msgid "Print version"
 msgstr "버전 출력"
 
-#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:578
+#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:590
 msgid "Print version information and exit"
 msgstr "버전 정보를 표시하고 끝납니다"
 
@@ -121,8 +129,8 @@ msgstr "자세한 도움말을 표시하는 명령"
 msgid "Application identifier in D-Bus format (eg: org.example.viewer)"
 msgstr "D-버스 형식의 프로그램 ID (예: org.example.viewer)"
 
-#: gio/gapplication-tool.c:74 gio/glib-compile-resources.c:738
-#: gio/glib-compile-resources.c:744 gio/glib-compile-resources.c:772
+#: gio/gapplication-tool.c:74 gio/glib-compile-resources.c:820
+#: gio/glib-compile-resources.c:826 gio/glib-compile-resources.c:855
 #: gio/gresource-tool.c:501 gio/gresource-tool.c:567
 msgid "FILE"
 msgstr "<파일>"
@@ -147,7 +155,7 @@ msgstr "<인수>"
 msgid "Optional parameter to the action invocation, in GVariant format"
 msgstr "추가로 동작 호출에 붙일 인수, GVariant 형식"
 
-#: gio/gapplication-tool.c:98 gio/gresource-tool.c:532 gio/gsettings-tool.c:664
+#: gio/gapplication-tool.c:98 gio/gresource-tool.c:532 gio/gsettings-tool.c:676
 #, c-format
 msgid ""
 "Unknown command %s\n"
@@ -161,7 +169,7 @@ msgid "Usage:\n"
 msgstr "사용법:\n"
 
 #: gio/gapplication-tool.c:116 gio/gresource-tool.c:557
-#: gio/gsettings-tool.c:699
+#: gio/gsettings-tool.c:711
 msgid "Arguments:\n"
 msgstr "인수:\n"
 
@@ -284,7 +292,7 @@ msgstr "스트림을 이미 닫았습니다"
 msgid "Truncate not supported on base stream"
 msgstr "기반 스트림에서 자르기를 지원하지 않습니다"
 
-#: gio/gcancellable.c:319 gio/gdbusconnection.c:1872 gio/gdbusprivate.c:1416
+#: gio/gcancellable.c:319 gio/gdbusconnection.c:1873 gio/gdbusprivate.c:1418
 #: gio/gsimpleasyncresult.c:871 gio/gsimpleasyncresult.c:897
 #, c-format
 msgid "Operation was cancelled"
@@ -305,7 +313,7 @@ msgstr "대상에 공간이 부족합니다"
 #: gio/gcharsetconverter.c:342 gio/gdatainputstream.c:848
 #: gio/gdatainputstream.c:1266 glib/gconvert.c:449 glib/gconvert.c:879
 #: glib/giochannel.c:1573 glib/giochannel.c:1615 glib/giochannel.c:2470
-#: glib/gutf8.c:875 glib/gutf8.c:1328
+#: glib/gutf8.c:890 glib/gutf8.c:1344
 msgid "Invalid byte sequence in conversion input"
 msgstr "변환 입력에서 잘못된 바이트 순서"
 
@@ -315,7 +323,7 @@ msgstr "변환 입력에서 잘못된 바이트 순서"
 msgid "Error during conversion: %s"
 msgstr "변환 중 오류: %s"
 
-#: gio/gcharsetconverter.c:445 gio/gsocket.c:1143
+#: gio/gcharsetconverter.c:445 gio/gsocket.c:1147
 msgid "Cancellable initialization not supported"
 msgstr "취소 가능한 초기화를 지원하지 않습니다"
 
@@ -329,7 +337,7 @@ msgstr "문자셋 “%s”에서 “%s”(으)로 변환은 지원되지 않습
 msgid "Could not open converter from “%s” to “%s”"
 msgstr "“%s”에서 “%s”(으)로 변환하는 변환기를 열 수 없습니다"
 
-#: gio/gcontenttype.c:454
+#: gio/gcontenttype.c:470
 #, c-format
 msgid "%s type"
 msgstr "%s 형식"
@@ -343,23 +351,23 @@ msgstr "알 수 없는 형식"
 msgid "%s filetype"
 msgstr "%s 파일 형식"
 
-#: gio/gcredentials.c:323
+#: gio/gcredentials.c:335
 msgid "GCredentials contains invalid data"
 msgstr "GCredentials에 잘못된 데이터가 들어 있습니다"
 
-#: gio/gcredentials.c:383 gio/gcredentials.c:667
+#: gio/gcredentials.c:395 gio/gcredentials.c:686
 msgid "GCredentials is not implemented on this OS"
 msgstr "GCredentials는 이 OS에서 구현되지 않았습니다"
 
-#: gio/gcredentials.c:538 gio/gcredentials.c:556
+#: gio/gcredentials.c:550 gio/gcredentials.c:568
 msgid "There is no GCredentials support for your platform"
 msgstr "이 플랫폼에서는 GCredentials를 지원하지 않습니다"
 
-#: gio/gcredentials.c:607
+#: gio/gcredentials.c:626
 msgid "GCredentials does not contain a process ID on this OS"
 msgstr "GCredentials는 이 OS에서 프로세스 ID가 없습니다"
 
-#: gio/gcredentials.c:661
+#: gio/gcredentials.c:680
 msgid "Credentials spoofing is not possible on this OS"
 msgstr "암호 데이터 속이기가 이 OS에서는 불가능합니다"
 
@@ -367,17 +375,17 @@ msgstr "암호 데이터 속이기가 이 OS에서는 불가능합니다"
 msgid "Unexpected early end-of-stream"
 msgstr "예기치 않게 일찍 스트림이 끝났습니다"
 
-#: gio/gdbusaddress.c:159 gio/gdbusaddress.c:233 gio/gdbusaddress.c:322
+#: gio/gdbusaddress.c:162 gio/gdbusaddress.c:236 gio/gdbusaddress.c:325
 #, c-format
 msgid "Unsupported key “%s” in address entry “%s”"
 msgstr "“%s” 키를 주소 항목 “%s”에서 지원하지 않습니다"
 
-#: gio/gdbusaddress.c:172
+#: gio/gdbusaddress.c:175
 #, c-format
 msgid "Meaningless key/value pair combination in address entry “%s”"
 msgstr "“%s” 주소 항목에서 의미 없는 키/값의 쌍"
 
-#: gio/gdbusaddress.c:181
+#: gio/gdbusaddress.c:184
 #, c-format
 msgid ""
 "Address “%s” is invalid (need exactly one of path, dir, tmpdir, or abstract "
@@ -386,50 +394,50 @@ msgstr ""
 "“%s” 주소는 올바르지 않습니다 (정확히 1개의 경로, 폴더, 임시 폴더, 절대 키 "
 "중 하나가 필요합니다)"
 
-#: gio/gdbusaddress.c:248 gio/gdbusaddress.c:259 gio/gdbusaddress.c:274
-#: gio/gdbusaddress.c:337 gio/gdbusaddress.c:348
+#: gio/gdbusaddress.c:251 gio/gdbusaddress.c:262 gio/gdbusaddress.c:277
+#: gio/gdbusaddress.c:340 gio/gdbusaddress.c:351
 #, c-format
 msgid "Error in address “%s” — the “%s” attribute is malformed"
 msgstr "“%s” 주소에서 오류 —  “%s” 속성의 형식이 잘못되었습니다"
 
-#: gio/gdbusaddress.c:418 gio/gdbusaddress.c:682
+#: gio/gdbusaddress.c:421 gio/gdbusaddress.c:680
 #, c-format
 msgid "Unknown or unsupported transport “%s” for address “%s”"
 msgstr ""
 "주소 “%2$s”에 대한  “%1$s” 트랜스포트는 알려지지 않았거나 지원하지 않습니다."
 
-#: gio/gdbusaddress.c:462
+#: gio/gdbusaddress.c:465
 #, c-format
 msgid "Address element “%s” does not contain a colon (:)"
 msgstr "주소 항목 “%s”에 콜론(:)이  없습니다"
 
-#: gio/gdbusaddress.c:471
+#: gio/gdbusaddress.c:474
 #, c-format
 msgid "Transport name in address element “%s” must not be empty"
 msgstr "주소 항목 “%s”에서 트랜스포트 이름이 비어 있으면 안 됩니다"
 
-#: gio/gdbusaddress.c:492
+#: gio/gdbusaddress.c:495
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” does not contain an equal "
 "sign"
 msgstr "키/값 쌍 %d번, “%s”에 (주소 항목 “%s”) 등호 기호가 없습니다"
 
-#: gio/gdbusaddress.c:503
+#: gio/gdbusaddress.c:506
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” must not have an empty key"
 msgstr ""
 "키/값 쌍 %d번, “%s”에 (주소 항목 “%s”) 비어 있는 키가 들어 있을 수 없습니다"
 
-#: gio/gdbusaddress.c:517
+#: gio/gdbusaddress.c:520
 #, c-format
 msgid ""
 "Error unescaping key or value in Key/Value pair %d, “%s”, in address element "
 "“%s”"
 msgstr "키/값 쌍 %d번, “%s”에 (주소 항목 “%s”) 키/값의 이스케이프 제거 오류"
 
-#: gio/gdbusaddress.c:589
+#: gio/gdbusaddress.c:588
 #, c-format
 msgid ""
 "Error in address “%s” — the unix transport requires exactly one of the keys "
@@ -438,75 +446,75 @@ msgstr ""
 "“%s” 주소에서 오류 — unix 트랜스포트에서는 'path'나 'abstract' 키 중 하나를 "
 "설정해야 합니다."
 
-#: gio/gdbusaddress.c:625
+#: gio/gdbusaddress.c:623
 #, c-format
 msgid "Error in address “%s” — the host attribute is missing or malformed"
 msgstr "“%s” 주소에서 오류 — host 속성이 없거나 형식이 잘못되었습니다"
 
-#: gio/gdbusaddress.c:639
+#: gio/gdbusaddress.c:637
 #, c-format
 msgid "Error in address “%s” — the port attribute is missing or malformed"
 msgstr "“%s” 주소에서 오류 — port 속성이 없거나 형식이 잘못되었습니다"
 
-#: gio/gdbusaddress.c:653
+#: gio/gdbusaddress.c:651
 #, c-format
 msgid "Error in address “%s” — the noncefile attribute is missing or malformed"
 msgstr "“%s” 주소에서 오류 — noncefile 속성이 없거나 형식이 잘못되었습니다"
 
-#: gio/gdbusaddress.c:674
+#: gio/gdbusaddress.c:672
 msgid "Error auto-launching: "
 msgstr "자동 실행 오류: "
 
-#: gio/gdbusaddress.c:727
+#: gio/gdbusaddress.c:725
 #, c-format
 msgid "Error opening nonce file “%s”: %s"
 msgstr "“%s” nonce 파일을 여는 중 오류: %s"
 
-#: gio/gdbusaddress.c:746
+#: gio/gdbusaddress.c:744
 #, c-format
 msgid "Error reading from nonce file “%s”: %s"
 msgstr "“%s” nonce 파일을 읽는 중 오류: %s"
 
-#: gio/gdbusaddress.c:755
+#: gio/gdbusaddress.c:753
 #, c-format
 msgid "Error reading from nonce file “%s”, expected 16 bytes, got %d"
 msgstr "“%s” nonce 파일을 읽는 중 오류, 16바이트가 있어야 하지만 %d바이트"
 
-#: gio/gdbusaddress.c:773
+#: gio/gdbusaddress.c:771
 #, c-format
 msgid "Error writing contents of nonce file “%s” to stream:"
 msgstr "“%s” nonce 파일의 내용을 스트림에 쓰는 중 오류:"
 
-#: gio/gdbusaddress.c:988
+#: gio/gdbusaddress.c:986
 msgid "The given address is empty"
 msgstr "지정된 주소가 빈 문자열입니다"
 
-#: gio/gdbusaddress.c:1101
+#: gio/gdbusaddress.c:1099
 #, c-format
-msgid "Cannot spawn a message bus when setuid"
-msgstr "setuid 없이 메시지 버스를 시작할 수 없습니다:"
+msgid "Cannot spawn a message bus when AT_SECURE is set"
+msgstr "AT_SECURE가 설정되었을 때 메시지 버스를 시작할 수 없습니다:"
 
-#: gio/gdbusaddress.c:1108
+#: gio/gdbusaddress.c:1106
 msgid "Cannot spawn a message bus without a machine-id: "
 msgstr "machine-id 없이 메시지 버스를 시작할 수 없습니다: "
 
-#: gio/gdbusaddress.c:1115
+#: gio/gdbusaddress.c:1113
 #, c-format
 msgid "Cannot autolaunch D-Bus without X11 $DISPLAY"
 msgstr "X11 $DISPLAY 없이 D-Bus 자동 실행할 수 없습니다"
 
-#: gio/gdbusaddress.c:1157
+#: gio/gdbusaddress.c:1155
 #, c-format
 msgid "Error spawning command line “%s”: "
 msgstr "“%s” 명령을 시작하는데 오류: "
 
-#: gio/gdbusaddress.c:1226
+#: gio/gdbusaddress.c:1224
 #, c-format
 msgid "Cannot determine session bus address (not implemented for this OS)"
 msgstr ""
 "세션 버스 주소를 알아낼 수 없습니다 (이 운영체제에서는 구현되지 않았습니다)"
 
-#: gio/gdbusaddress.c:1397 gio/gdbusconnection.c:7261
+#: gio/gdbusaddress.c:1373 gio/gdbusconnection.c:7334
 #, c-format
 msgid ""
 "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
@@ -515,7 +523,7 @@ msgstr ""
 "DBUS_STARTER_BUS_TYPE 환경 변수에서 세션 버스 주소를 알아낼 수 없습니다 — 알 "
 "수 없는 값 “%s”"
 
-#: gio/gdbusaddress.c:1406 gio/gdbusconnection.c:7270
+#: gio/gdbusaddress.c:1382 gio/gdbusconnection.c:7343
 msgid ""
 "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
 "variable is not set"
@@ -523,7 +531,7 @@ msgstr ""
 "DBUS_STARTER_BUS_TYPE 환경 변수를 설정하지 않았으므로 세션 버스 주소를 알아"
 "낼 수 없습니다"
 
-#: gio/gdbusaddress.c:1416
+#: gio/gdbusaddress.c:1392
 #, c-format
 msgid "Unknown bus type %d"
 msgstr "알 수 없는 버스 형식 (%d)"
@@ -551,43 +559,43 @@ msgstr "상대와 서버의 사용자 아이디는 같아야 합니다"
 msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
 msgstr "GDBusAuthObserver::authorize-authenticated-peer를 통해 취소됨"
 
-#: gio/gdbusauthmechanismsha1.c:298
+#: gio/gdbusauthmechanismsha1.c:299
 #, c-format
 msgid "Error when getting information for directory “%s”: %s"
 msgstr "디렉터리 “%s”의 정보를 가져오는 중 오류 : %s"
 
-#: gio/gdbusauthmechanismsha1.c:313
+#: gio/gdbusauthmechanismsha1.c:314
 #, c-format
 msgid ""
 "Permissions on directory “%s” are malformed. Expected mode 0700, got 0%o"
 msgstr "“%s” 디렉터리의 권한이 잘못되었습니다. 0700이어야 하지만 0%o입니다"
 
-#: gio/gdbusauthmechanismsha1.c:346 gio/gdbusauthmechanismsha1.c:357
+#: gio/gdbusauthmechanismsha1.c:347 gio/gdbusauthmechanismsha1.c:358
 #, c-format
 msgid "Error creating directory “%s”: %s"
 msgstr "“%s” 디렉터리를 만드는 중 오류: %s"
 
-#: gio/gdbusauthmechanismsha1.c:359 gio/gfile.c:1062 gio/gfile.c:1300
-#: gio/gfile.c:1438 gio/gfile.c:1676 gio/gfile.c:1731 gio/gfile.c:1789
-#: gio/gfile.c:1873 gio/gfile.c:1930 gio/gfile.c:1994 gio/gfile.c:2049
-#: gio/gfile.c:3754 gio/gfile.c:3809 gio/gfile.c:4102 gio/gfile.c:4572
-#: gio/gfile.c:4983 gio/gfile.c:5068 gio/gfile.c:5158 gio/gfile.c:5255
-#: gio/gfile.c:5342 gio/gfile.c:5443 gio/gfile.c:8153 gio/gfile.c:8243
-#: gio/gfile.c:8327 gio/win32/gwinhttpfile.c:453
+#: gio/gdbusauthmechanismsha1.c:360 gio/gfile.c:1080 gio/gfile.c:1318
+#: gio/gfile.c:1456 gio/gfile.c:1694 gio/gfile.c:1749 gio/gfile.c:1807
+#: gio/gfile.c:1891 gio/gfile.c:1948 gio/gfile.c:2012 gio/gfile.c:2067
+#: gio/gfile.c:3772 gio/gfile.c:3912 gio/gfile.c:4205 gio/gfile.c:4675
+#: gio/gfile.c:5086 gio/gfile.c:5171 gio/gfile.c:5261 gio/gfile.c:5358
+#: gio/gfile.c:5445 gio/gfile.c:5546 gio/gfile.c:8375 gio/gfile.c:8465
+#: gio/gfile.c:8549 gio/win32/gwinhttpfile.c:453
 msgid "Operation not supported"
 msgstr "동작을 지원하지 않습니다"
 
-#: gio/gdbusauthmechanismsha1.c:402
+#: gio/gdbusauthmechanismsha1.c:403
 #, c-format
 msgid "Error opening keyring “%s” for reading: "
 msgstr "“%s” 키 모음을 읽기 용도로 여는 중 오류: "
 
-#: gio/gdbusauthmechanismsha1.c:425 gio/gdbusauthmechanismsha1.c:747
+#: gio/gdbusauthmechanismsha1.c:426 gio/gdbusauthmechanismsha1.c:748
 #, c-format
 msgid "Line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr "“%2$s”의 키 모음 %1$d번 줄의 내용 “%3$s”의 형식이 잘못되었습니다."
 
-#: gio/gdbusauthmechanismsha1.c:439 gio/gdbusauthmechanismsha1.c:761
+#: gio/gdbusauthmechanismsha1.c:440 gio/gdbusauthmechanismsha1.c:762
 #, c-format
 msgid ""
 "First token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -595,7 +603,7 @@ msgstr ""
 "'%2$s'의 키 모음 %1$d번 줄의 첫번째 토큰의 내용  “%3$s”의 형식이 잘못되었습니"
 "다."
 
-#: gio/gdbusauthmechanismsha1.c:453 gio/gdbusauthmechanismsha1.c:775
+#: gio/gdbusauthmechanismsha1.c:454 gio/gdbusauthmechanismsha1.c:776
 #, c-format
 msgid ""
 "Second token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -603,158 +611,158 @@ msgstr ""
 "“%2$s”의 키 모음 %1$d번 줄의 두번째 토큰의 내용 “%3$s”의 형식이 잘못되었습니"
 "다."
 
-#: gio/gdbusauthmechanismsha1.c:477
+#: gio/gdbusauthmechanismsha1.c:478
 #, c-format
 msgid "Didn’t find cookie with id %d in the keyring at “%s”"
 msgstr "“%2$s”의 키 모음 아이디 %1$d의 쿠키를 찾을 수 없습니다"
 
-#: gio/gdbusauthmechanismsha1.c:523
+#: gio/gdbusauthmechanismsha1.c:524
 #, c-format
 msgid "Error creating lock file “%s”: %s"
 msgstr "“%s” 잠금 파일을 만드는 중 오류: %s"
 
-#: gio/gdbusauthmechanismsha1.c:587
+#: gio/gdbusauthmechanismsha1.c:588
 #, c-format
 msgid "Error deleting stale lock file “%s”: %s"
 msgstr "오래된 “%s” 잠금 파일을 만드는 중 오류: %s"
 
-#: gio/gdbusauthmechanismsha1.c:626
+#: gio/gdbusauthmechanismsha1.c:627
 #, c-format
 msgid "Error closing (unlinked) lock file “%s”: %s"
 msgstr "(링크가 끊어진) “%s” 잠금 파일을 닫는 중 오류: %s"
 
-#: gio/gdbusauthmechanismsha1.c:637
+#: gio/gdbusauthmechanismsha1.c:638
 #, c-format
 msgid "Error unlinking lock file “%s”: %s"
 msgstr "“%s” 잠금 파일을 삭제하는 중 오류: %s"
 
-#: gio/gdbusauthmechanismsha1.c:714
+#: gio/gdbusauthmechanismsha1.c:715
 #, c-format
 msgid "Error opening keyring “%s” for writing: "
 msgstr "“%s” 키 모음을 쓰기 용도로 여는 중 오류: "
 
-#: gio/gdbusauthmechanismsha1.c:908
+#: gio/gdbusauthmechanismsha1.c:909
 #, c-format
 msgid "(Additionally, releasing the lock for “%s” also failed: %s) "
 msgstr "(추가로 “%s”에 대한 잠금 해제도 실패했습니다: %s)"
 
-#: gio/gdbusconnection.c:603 gio/gdbusconnection.c:2417
+#: gio/gdbusconnection.c:604 gio/gdbusconnection.c:2418
 msgid "The connection is closed"
 msgstr "연결이 닫혔습니다"
 
-#: gio/gdbusconnection.c:1902
+#: gio/gdbusconnection.c:1903
 msgid "Timeout was reached"
 msgstr "시간 제한을 넘었습니다"
 
-#: gio/gdbusconnection.c:2540
+#: gio/gdbusconnection.c:2541
 msgid ""
 "Unsupported flags encountered when constructing a client-side connection"
 msgstr "클라이언트 연결을 만드는 중 지원하지 않는 플래그가 있습니다"
 
-#: gio/gdbusconnection.c:4189 gio/gdbusconnection.c:4536
+#: gio/gdbusconnection.c:4269 gio/gdbusconnection.c:4623
 #, c-format
 msgid ""
 "No such interface “org.freedesktop.DBus.Properties” on object at path %s"
 msgstr ""
 "경로 %s의 객체에 “org.freedesktop.DBus.Properties” 인터페이스가 없습니다"
 
-#: gio/gdbusconnection.c:4331
+#: gio/gdbusconnection.c:4414
 #, c-format
 msgid "No such property “%s”"
 msgstr "“%s” 속성이 없습니다"
 
-#: gio/gdbusconnection.c:4343
+#: gio/gdbusconnection.c:4426
 #, c-format
 msgid "Property “%s” is not readable"
 msgstr "“%s” 속성을 읽을 수 없습니다"
 
-#: gio/gdbusconnection.c:4354
+#: gio/gdbusconnection.c:4437
 #, c-format
 msgid "Property “%s” is not writable"
 msgstr "“%s” 속성을 쓸 수 없습니다"
 
-#: gio/gdbusconnection.c:4374
+#: gio/gdbusconnection.c:4457
 #, c-format
 msgid "Error setting property “%s”: Expected type “%s” but got “%s”"
 msgstr "“%s” 속성 설정 오류: “%s” 형식이어야 하지만 “%s”입니다"
 
-#: gio/gdbusconnection.c:4479 gio/gdbusconnection.c:4687
-#: gio/gdbusconnection.c:6689
+#: gio/gdbusconnection.c:4562 gio/gdbusconnection.c:4777
+#: gio/gdbusconnection.c:6760
 #, c-format
 msgid "No such interface “%s”"
 msgstr "“%s” 인터페이스가 없습니다"
 
-#: gio/gdbusconnection.c:4905 gio/gdbusconnection.c:7201
+#: gio/gdbusconnection.c:4999 gio/gdbusconnection.c:7274
 #, c-format
 msgid "No such interface “%s” on object at path %s"
 msgstr "경로 “%2$s”의 객체에 “%1$s” 인터페이스가 없습니다"
 
-#: gio/gdbusconnection.c:5003
+#: gio/gdbusconnection.c:5100
 #, c-format
 msgid "No such method “%s”"
 msgstr "“%s” 키가 없습니다"
 
-#: gio/gdbusconnection.c:5034
+#: gio/gdbusconnection.c:5131
 #, c-format
 msgid "Type of message, “%s”, does not match expected type “%s”"
 msgstr "메시지 형식이(“%s”) 예상한 “%s” 형식에 맞지 않습니다."
 
-#: gio/gdbusconnection.c:5237
+#: gio/gdbusconnection.c:5334
 #, c-format
 msgid "An object is already exported for the interface %s at %s"
 msgstr "%2$s의 %1$s 인터페이스 용도로 객체를 이미 내보냈습니다"
 
-#: gio/gdbusconnection.c:5463
+#: gio/gdbusconnection.c:5561
 #, c-format
 msgid "Unable to retrieve property %s.%s"
 msgstr "%s.%s 속성을 가져올 수 없습니다"
 
-#: gio/gdbusconnection.c:5519
+#: gio/gdbusconnection.c:5617
 #, c-format
 msgid "Unable to set property %s.%s"
 msgstr "%s.%s 속성을 설정할 수 없습니다"
 
-#: gio/gdbusconnection.c:5698
+#: gio/gdbusconnection.c:5796
 #, c-format
 msgid "Method “%s” returned type “%s”, but expected “%s”"
 msgstr "“%s” 메소드가 “%s” 형식을 리턴했지만, “%s” 형식이어야 합니다"
 
-#: gio/gdbusconnection.c:6800
+#: gio/gdbusconnection.c:6872
 #, c-format
 msgid "Method “%s” on interface “%s” with signature “%s” does not exist"
 msgstr "“%3$s” 서명이 있는 “%2$s” 인터페이스의 “%1$s” 메서드가 없습니다"
 
-#: gio/gdbusconnection.c:6921
+#: gio/gdbusconnection.c:6993
 #, c-format
 msgid "A subtree is already exported for %s"
 msgstr "하위 트리를 이미 %s 용도로 내보냈습니다"
 
-#: gio/gdbusconnection.c:7209
+#: gio/gdbusconnection.c:7282
 #, c-format
 msgid "Object does not exist at path “%s”"
 msgstr "“%s” 경로에 오브젝트가 없습니다"
 
-#: gio/gdbusmessage.c:1266
+#: gio/gdbusmessage.c:1301
 msgid "type is INVALID"
 msgstr "형식이 올바르지 않습니다"
 
-#: gio/gdbusmessage.c:1277
+#: gio/gdbusmessage.c:1312
 msgid "METHOD_CALL message: PATH or MEMBER header field is missing"
 msgstr "METHOD_CALL 메시지: PATH 혹은 MEMBER 헤더 필드가 없습니다"
 
-#: gio/gdbusmessage.c:1288
+#: gio/gdbusmessage.c:1323
 msgid "METHOD_RETURN message: REPLY_SERIAL header field is missing"
 msgstr "METHOD_CALL 메시지: REPLY_SERIAL 헤더 필드가 없습니다"
 
-#: gio/gdbusmessage.c:1300
+#: gio/gdbusmessage.c:1335
 msgid "ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing"
 msgstr "ERROR 메시지: REPLY_SERIAL 혹은 ERROR_NAME 헤더 필드가 없습니다"
 
-#: gio/gdbusmessage.c:1313
+#: gio/gdbusmessage.c:1348
 msgid "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing"
 msgstr "SIGNAL 메시지: PATH, INTERFACE 혹은 MEMBER 헤더 필드가 없습니다"
 
-#: gio/gdbusmessage.c:1321
+#: gio/gdbusmessage.c:1356
 msgid ""
 "SIGNAL message: The PATH header field is using the reserved value /org/"
 "freedesktop/DBus/Local"
@@ -762,7 +770,7 @@ msgstr ""
 "SIGNAL 메시지: PATH 헤더 필드가 /org/freedesktop/DBus/Local 예약 값을 사용하"
 "고 있습니다"
 
-#: gio/gdbusmessage.c:1329
+#: gio/gdbusmessage.c:1364
 msgid ""
 "SIGNAL message: The INTERFACE header field is using the reserved value org."
 "freedesktop.DBus.Local"
@@ -770,18 +778,18 @@ msgstr ""
 "SIGNAL 메시지: INTERFACE 헤더 필드가 org.freedesktop.DBus.Local 예약 값을 사"
 "용하고 있습니다"
 
-#: gio/gdbusmessage.c:1377 gio/gdbusmessage.c:1437
+#: gio/gdbusmessage.c:1412 gio/gdbusmessage.c:1472
 #, c-format
 msgid "Wanted to read %lu byte but only got %lu"
 msgid_plural "Wanted to read %lu bytes but only got %lu"
 msgstr[0] "%lu 바이트를 읽어야 하지만 %lu 바이트만 받았습니다"
 
-#: gio/gdbusmessage.c:1391
+#: gio/gdbusmessage.c:1426
 #, c-format
 msgid "Expected NUL byte after the string “%s” but found byte %d"
 msgstr "“%s” 문자열 뒤에 NUL 바이트가 와야 하지만 %d바이트가 있습니다"
 
-#: gio/gdbusmessage.c:1410
+#: gio/gdbusmessage.c:1445
 #, c-format
 msgid ""
 "Expected valid UTF-8 string but found invalid bytes at byte offset %d "
@@ -790,21 +798,21 @@ msgstr ""
 "올바른 UTF-8 문자열이 와야 하지만 오프셋 %d에(문자열 길이 %d) 잘못된 바이트"
 "가 있습니다. 그 부분까지 올바른 UTF-8 문자열은 “%s”입니다."
 
-#: gio/gdbusmessage.c:1474 gio/gdbusmessage.c:1722 gio/gdbusmessage.c:1911
+#: gio/gdbusmessage.c:1509 gio/gdbusmessage.c:1785 gio/gdbusmessage.c:1996
 msgid "Value nested too deeply"
 msgstr "값이 너무 깊숙히 끼워 넣어져 있습니다"
 
-#: gio/gdbusmessage.c:1620
+#: gio/gdbusmessage.c:1677
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus object path"
 msgstr "해석한 “%s” 값이 올바른 D-Bus 객체 경로가 아닙니다"
 
-#: gio/gdbusmessage.c:1642
+#: gio/gdbusmessage.c:1701
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature"
 msgstr "해석한 “%s” 값이 올바른 D-Bus 시그너쳐가 아닙니다"
 
-#: gio/gdbusmessage.c:1689
+#: gio/gdbusmessage.c:1752
 #, c-format
 msgid ""
 "Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB)."
@@ -813,7 +821,7 @@ msgid_plural ""
 msgstr[0] ""
 "길이가 %u 바이트인 배열이 있습니다. 최대 길이는 2<<26 바이트입니다. (64MiB)"
 
-#: gio/gdbusmessage.c:1709
+#: gio/gdbusmessage.c:1772
 #, c-format
 msgid ""
 "Encountered array of type “a%c”, expected to have a length a multiple of %u "
@@ -822,18 +830,22 @@ msgstr ""
 "타입이 “a%c”인 배열은 길이가 %u 바이트의 배수여야 하지만, 길이가 %u 바이트입"
 "니다."
 
-#: gio/gdbusmessage.c:1895
+#: gio/gdbusmessage.c:1926 gio/gdbusmessage.c:2645
+msgid "Empty structures (tuples) are not allowed in D-Bus"
+msgstr "D-Bus에서 빈 구조체(튜플)는 지원하지 않습니다"
+
+#: gio/gdbusmessage.c:1980
 #, c-format
 msgid "Parsed value “%s” for variant is not a valid D-Bus signature"
 msgstr "variant에 대해 해석한 값 “%s”은(는) 올바른 D-Bus 시그너쳐가 아닙니다."
 
-#: gio/gdbusmessage.c:1936
+#: gio/gdbusmessage.c:2021
 #, c-format
 msgid ""
 "Error deserializing GVariant with type string “%s” from the D-Bus wire format"
 msgstr "“%s” 형식 문자열로 GVariant를 D-Bus 전송 형식에서 재구성하는데 오류"
 
-#: gio/gdbusmessage.c:2121
+#: gio/gdbusmessage.c:2206
 #, c-format
 msgid ""
 "Invalid endianness value. Expected 0x6c (“l”) or 0x42 (“B”) but found value "
@@ -842,57 +854,57 @@ msgstr ""
 "엔디안 값이 잘못되었습니다. 0x6c(“l”) 또는 0x42 (“B”)가 와야 하지만 0x%02x 값"
 "이 있습니다"
 
-#: gio/gdbusmessage.c:2134
+#: gio/gdbusmessage.c:2225
 #, c-format
 msgid "Invalid major protocol version. Expected 1 but found %d"
 msgstr "메이저 프로토콜 버전이 잘못되었습니다. 1이어야 하지만 %d입니다."
 
-#: gio/gdbusmessage.c:2188 gio/gdbusmessage.c:2784
+#: gio/gdbusmessage.c:2283 gio/gdbusmessage.c:2881
 msgid "Signature header found but is not of type signature"
 msgstr "시그너쳐 헤더가 있지만 타입 시그너쳐 헤더가 아닙니다"
 
-#: gio/gdbusmessage.c:2200
+#: gio/gdbusmessage.c:2295
 #, c-format
 msgid "Signature header with signature “%s” found but message body is empty"
 msgstr "시그너쳐 “%s”인 시그너쳐 헤더가 있지만 메시지 본문이 비었습니다"
 
-#: gio/gdbusmessage.c:2215
+#: gio/gdbusmessage.c:2310
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature (for body)"
 msgstr "해석한 “%s” 값이 (본문에 대해) 올바른 D-Bus 시그너쳐가 아닙니다"
 
-#: gio/gdbusmessage.c:2247
+#: gio/gdbusmessage.c:2342
 #, 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"
 msgstr[0] "메시지에 시그너쳐 헤더가 없지만 메시지 본문이 %u 바이트입니다"
 
-#: gio/gdbusmessage.c:2257
+#: gio/gdbusmessage.c:2352
 msgid "Cannot deserialize message: "
 msgstr "메시지를 재구성할 수 없습니다: "
 
-#: gio/gdbusmessage.c:2601
+#: gio/gdbusmessage.c:2698
 #, c-format
 msgid ""
 "Error serializing GVariant with type string “%s” to the D-Bus wire format"
 msgstr "“%s” 형식 문자열로 GVariant를 D-Bus 전송 형식으로 만드는데 오류"
 
-#: gio/gdbusmessage.c:2738
+#: gio/gdbusmessage.c:2835
 #, c-format
 msgid ""
 "Number of file descriptors in message (%d) differs from header field (%d)"
 msgstr "메시지의 파일 디스크립터 개수가 (%d) 헤더 필드의 개수와 (%d) 다릅니다"
 
-#: gio/gdbusmessage.c:2746
+#: gio/gdbusmessage.c:2843
 msgid "Cannot serialize message: "
 msgstr "메시지를 전송 형식으로 만들 수 없습니다: "
 
-#: gio/gdbusmessage.c:2799
+#: gio/gdbusmessage.c:2896
 #, c-format
 msgid "Message body has signature “%s” but there is no signature header"
 msgstr "메시지 본문에 “%s” 시그너쳐가 있지만 시그너쳐 헤더가 없습니다"
 
-#: gio/gdbusmessage.c:2809
+#: gio/gdbusmessage.c:2906
 #, c-format
 msgid ""
 "Message body has type signature “%s” but signature in the header field is "
@@ -900,52 +912,52 @@ msgid ""
 msgstr ""
 "메시지 본문에 “%s” 형식 시그너쳐가 있지만 헤더 필드의 시그너쳐가 “%s”입니다"
 
-#: gio/gdbusmessage.c:2825
+#: gio/gdbusmessage.c:2922
 #, c-format
 msgid "Message body is empty but signature in the header field is “(%s)”"
 msgstr "메시지 본문이 비었지만 헤더 필드의 시그너쳐가 “(%s)”입니다"
 
-#: gio/gdbusmessage.c:3380
+#: gio/gdbusmessage.c:3477
 #, c-format
 msgid "Error return with body of type “%s”"
 msgstr "오류 리턴, “%s” 형식의 본문"
 
-#: gio/gdbusmessage.c:3388
+#: gio/gdbusmessage.c:3485
 msgid "Error return with empty body"
 msgstr "오류 리턴, 빈 본문"
 
-#: gio/gdbusprivate.c:2246
+#: gio/gdbusprivate.c:2185
 #, c-format
 msgid "(Type any character to close this window)\n"
 msgstr "(이 창을 닫으려면 아무 글자나 입력하십시오)\n"
 
-#: gio/gdbusprivate.c:2420
+#: gio/gdbusprivate.c:2371
 #, c-format
 msgid "Session dbus not running, and autolaunch failed"
 msgstr "dbus 세션이 실행중이 아니며, 자동실행에 실패했습니다"
 
-#: gio/gdbusprivate.c:2443
+#: gio/gdbusprivate.c:2394
 #, c-format
 msgid "Unable to get Hardware profile: %s"
 msgstr "하드웨어 프로파일을 가져올 수 없습니다: %s"
 
 #. Translators: Both placeholders are file paths
-#: gio/gdbusprivate.c:2494
+#: gio/gdbusprivate.c:2445
 #, c-format
 msgid "Unable to load %s or %s: "
 msgstr "%s 또는 %s을(를) 읽어들일 수 없습니다: "
 
-#: gio/gdbusproxy.c:1569
+#: gio/gdbusproxy.c:1573
 #, c-format
 msgid "Error calling StartServiceByName for %s: "
 msgstr "%s에 대해 StartServiceByName 호출이 실패했습니다: "
 
-#: gio/gdbusproxy.c:1592
+#: gio/gdbusproxy.c:1596
 #, c-format
 msgid "Unexpected reply %d from StartServiceByName(\"%s\") method"
 msgstr " StartServiceByName(\"%2$s\") 메소드에서 예상치 못한 응답 %1$d번"
 
-#: gio/gdbusproxy.c:2699 gio/gdbusproxy.c:2834
+#: gio/gdbusproxy.c:2707 gio/gdbusproxy.c:2842
 #, c-format
 msgid ""
 "Cannot invoke method; proxy is for the well-known name %s without an owner, "
@@ -1001,13 +1013,13 @@ msgstr ""
 "각 명령어의 도움말을 보려면 “%s <명령> --help” 명령을 사용하십시오.\n"
 
 #: gio/gdbus-tool.c:201 gio/gdbus-tool.c:273 gio/gdbus-tool.c:345
-#: gio/gdbus-tool.c:369 gio/gdbus-tool.c:859 gio/gdbus-tool.c:1236
-#: gio/gdbus-tool.c:1724
+#: gio/gdbus-tool.c:369 gio/gdbus-tool.c:859 gio/gdbus-tool.c:1244
+#: gio/gdbus-tool.c:1732
 #, c-format
 msgid "Error: %s\n"
 msgstr "오류: %s\n"
 
-#: gio/gdbus-tool.c:212 gio/gdbus-tool.c:286 gio/gdbus-tool.c:1740
+#: gio/gdbus-tool.c:212 gio/gdbus-tool.c:286 gio/gdbus-tool.c:1748
 #, c-format
 msgid "Error parsing introspection XML: %s\n"
 msgstr "introspection XML을 해석하는 중에 오류: %s\n"
@@ -1017,8 +1029,8 @@ msgstr "introspection XML을 해석하는 중에 오류: %s\n"
 msgid "Error: %s is not a valid name\n"
 msgstr "오류: “%s”은(는) 올바른 이름이 아닙니다\n"
 
-#: gio/gdbus-tool.c:255 gio/gdbus-tool.c:745 gio/gdbus-tool.c:1060
-#: gio/gdbus-tool.c:1890 gio/gdbus-tool.c:2130
+#: gio/gdbus-tool.c:255 gio/gdbus-tool.c:745 gio/gdbus-tool.c:1063
+#: gio/gdbus-tool.c:1898 gio/gdbus-tool.c:2138
 #, c-format
 msgid "Error: %s is not a valid object path\n"
 msgstr "오류: “%s”은(는) 올바른 객체 경로가 아닙니다\n"
@@ -1084,8 +1096,8 @@ msgstr "시그널 및 인터페이스 이름"
 msgid "Emit a signal."
 msgstr "시그널을 발생합니다."
 
-#: gio/gdbus-tool.c:683 gio/gdbus-tool.c:997 gio/gdbus-tool.c:1827
-#: gio/gdbus-tool.c:2059 gio/gdbus-tool.c:2279
+#: gio/gdbus-tool.c:683 gio/gdbus-tool.c:1000 gio/gdbus-tool.c:1835
+#: gio/gdbus-tool.c:2067 gio/gdbus-tool.c:2287
 #, c-format
 msgid "Error connecting: %s\n"
 msgstr "연결하는데 오류: %s\n"
@@ -1095,7 +1107,7 @@ msgstr "연결하는데 오류: %s\n"
 msgid "Error: %s is not a valid unique bus name.\n"
 msgstr "오류: “%s”은(는) 올바른 고유 버스 이름이 아닙니다.\n"
 
-#: gio/gdbus-tool.c:722 gio/gdbus-tool.c:1040 gio/gdbus-tool.c:1870
+#: gio/gdbus-tool.c:722 gio/gdbus-tool.c:1043 gio/gdbus-tool.c:1878
 msgid "Error: Object path is not specified\n"
 msgstr "오류: 객체 경로를 지정하지 않았습니다\n"
 
@@ -1119,7 +1131,7 @@ msgid "Error: %s is not a valid member name\n"
 msgstr "오류: “%s”은(는) 올바른 멤버 이름이 아닙니다\n"
 
 #. Use the original non-"parse-me-harder" error
-#: gio/gdbus-tool.c:834 gio/gdbus-tool.c:1172
+#: gio/gdbus-tool.c:834 gio/gdbus-tool.c:1175
 #, c-format
 msgid "Error parsing parameter %d: %s\n"
 msgstr "파라미터 %d번 해석 오류: %s\n"
@@ -1129,162 +1141,171 @@ msgstr "파라미터 %d번 해석 오류: %s\n"
 msgid "Error flushing connection: %s\n"
 msgstr "연결의 버퍼 내용을 적용하는데 오류: %s\n"
 
-#: gio/gdbus-tool.c:893
+#: gio/gdbus-tool.c:894
 msgid "Destination name to invoke method on"
 msgstr "메소드를 호출할 대상 이름"
 
-#: gio/gdbus-tool.c:894
+#: gio/gdbus-tool.c:895
 msgid "Object path to invoke method on"
 msgstr "메소드를 호출할 객체 경로"
 
-#: gio/gdbus-tool.c:895
+#: gio/gdbus-tool.c:896
 msgid "Method and interface name"
 msgstr "메소드 및 인터페이스 이름"
 
-#: gio/gdbus-tool.c:896
+#: gio/gdbus-tool.c:897
 msgid "Timeout in seconds"
 msgstr "시간 제한, 초 단위"
 
-#: gio/gdbus-tool.c:942
+#: gio/gdbus-tool.c:898
+msgid "Allow interactive authorization"
+msgstr "동적 권한 부여를 허용"
+
+#: gio/gdbus-tool.c:945
 msgid "Invoke a method on a remote object."
 msgstr "원격 객체에 대해 메소드를 호출합니다."
 
-#: gio/gdbus-tool.c:1014 gio/gdbus-tool.c:1844 gio/gdbus-tool.c:2084
+#: gio/gdbus-tool.c:1017 gio/gdbus-tool.c:1852 gio/gdbus-tool.c:2092
 msgid "Error: Destination is not specified\n"
 msgstr "오류: 대상을 지정하지 않았습니다\n"
 
-#: gio/gdbus-tool.c:1025 gio/gdbus-tool.c:1861 gio/gdbus-tool.c:2095
+#: gio/gdbus-tool.c:1028 gio/gdbus-tool.c:1869 gio/gdbus-tool.c:2103
 #, c-format
 msgid "Error: %s is not a valid bus name\n"
 msgstr "오류: “%s”은(는) 올바른 버스 이름이 아닙니다\n"
 
-#: gio/gdbus-tool.c:1075
+#: gio/gdbus-tool.c:1078
 msgid "Error: Method name is not specified\n"
 msgstr "오류: 메소드 이름을 지정하지 않았습니다\n"
 
-#: gio/gdbus-tool.c:1086
+#: gio/gdbus-tool.c:1089
 #, c-format
 msgid "Error: Method name “%s” is invalid\n"
 msgstr "오류: 메소드 이름 “%s”이(가) 올바르지 않습니다\n"
 
-#: gio/gdbus-tool.c:1164
+#: gio/gdbus-tool.c:1167
 #, c-format
 msgid "Error parsing parameter %d of type “%s”: %s\n"
 msgstr "형식 “%2$s”의 파라미터 %1$d번 해석 오류: %3$s\n"
 
-#: gio/gdbus-tool.c:1190
+#: gio/gdbus-tool.c:1193
 #, c-format
 msgid "Error adding handle %d: %s\n"
 msgstr "핸들 %d번 추가하는 중 오류: %s\n"
 
-#: gio/gdbus-tool.c:1686
+#: gio/gdbus-tool.c:1694
 msgid "Destination name to introspect"
 msgstr "조사할 대상 이름"
 
-#: gio/gdbus-tool.c:1687
+#: gio/gdbus-tool.c:1695
 msgid "Object path to introspect"
 msgstr "조사할 객체 경로"
 
-#: gio/gdbus-tool.c:1688
+#: gio/gdbus-tool.c:1696
 msgid "Print XML"
 msgstr "XML을 표시합니다"
 
-#: gio/gdbus-tool.c:1689
+#: gio/gdbus-tool.c:1697
 msgid "Introspect children"
 msgstr "하위 항목에 인트로스펙트 적용"
 
-#: gio/gdbus-tool.c:1690
+#: gio/gdbus-tool.c:1698
 msgid "Only print properties"
 msgstr "속성을 표시하기만 합니다"
 
-#: gio/gdbus-tool.c:1779
+#: gio/gdbus-tool.c:1787
 msgid "Introspect a remote object."
 msgstr "원격 객체를 조사합니다."
 
-#: gio/gdbus-tool.c:1985
+#: gio/gdbus-tool.c:1993
 msgid "Destination name to monitor"
 msgstr "감시할 대상 이름"
 
-#: gio/gdbus-tool.c:1986
+#: gio/gdbus-tool.c:1994
 msgid "Object path to monitor"
 msgstr "감시할 객체 경로"
 
-#: gio/gdbus-tool.c:2011
+#: gio/gdbus-tool.c:2019
 msgid "Monitor a remote object."
 msgstr "원격 객체를 감시합니다."
 
-#: gio/gdbus-tool.c:2069
+#: gio/gdbus-tool.c:2077
 msgid "Error: can’t monitor a non-message-bus connection\n"
 msgstr "오류: 메시지 버스가 아닌 연결을 감시할 수 없습니다\n"
 
-#: gio/gdbus-tool.c:2193
+#: gio/gdbus-tool.c:2201
 msgid "Service to activate before waiting for the other one (well-known name)"
 msgstr "(알려진 이름의) 다른 서비스를 기다리기 전에 활성화할 서비스"
 
-#: gio/gdbus-tool.c:2196
+#: gio/gdbus-tool.c:2204
 msgid ""
 "Timeout to wait for before exiting with an error (seconds); 0 for no timeout "
 "(default)"
 msgstr ""
 "오류로 끝날 때까지 대기할 시간 제한 (초 단위), 0이면 시간 무제한 (기본값)"
 
-#: gio/gdbus-tool.c:2244
+#: gio/gdbus-tool.c:2252
 msgid "[OPTION…] BUS-NAME"
 msgstr "[옵션…] <버스-이름>"
 
-#: gio/gdbus-tool.c:2245
+#: gio/gdbus-tool.c:2253
 msgid "Wait for a bus name to appear."
 msgstr "버스 이름이 나타날 때까지 대기합니다."
 
-#: gio/gdbus-tool.c:2321
+#: gio/gdbus-tool.c:2329
 msgid "Error: A service to activate for must be specified.\n"
 msgstr "오류: 활성화할 서비스를 지정해야 합니다.\n"
 
-#: gio/gdbus-tool.c:2326
+#: gio/gdbus-tool.c:2334
 msgid "Error: A service to wait for must be specified.\n"
 msgstr "오류: 대기할 서비스를 지정해야 합니다.\n"
 
-#: gio/gdbus-tool.c:2331
+#: gio/gdbus-tool.c:2339
 msgid "Error: Too many arguments.\n"
 msgstr "오류: 인자가 너무 많습니다.\n"
 
-#: gio/gdbus-tool.c:2339 gio/gdbus-tool.c:2346
+#: gio/gdbus-tool.c:2347 gio/gdbus-tool.c:2354
 #, c-format
 msgid "Error: %s is not a valid well-known bus name.\n"
 msgstr "오류: “%s”은(는) 올바른 알려진 버스 이름이 아닙니다.\n"
 
-#: gio/gdesktopappinfo.c:2106 gio/gdesktopappinfo.c:4932
+#: gio/gdebugcontrollerdbus.c:203
+#, c-format
+msgid "Not authorized to change debug settings"
+msgstr "디버깅 설정을 바꿀 권한이 없습니다"
+
+#: gio/gdesktopappinfo.c:2174 gio/gdesktopappinfo.c:5099
 msgid "Unnamed"
 msgstr "이름없음"
 
-#: gio/gdesktopappinfo.c:2516
+#: gio/gdesktopappinfo.c:2584
 msgid "Desktop file didn’t specify Exec field"
 msgstr "desktop 파일에 Exec 필드를 지정하지 않았습니다"
 
-#: gio/gdesktopappinfo.c:2801
+#: gio/gdesktopappinfo.c:2892
 msgid "Unable to find terminal required for application"
 msgstr "프로그램에 필요한 터미널을 찾을 수 없습니다"
 
-#: gio/gdesktopappinfo.c:3452
+#: gio/gdesktopappinfo.c:3619
 #, c-format
 msgid "Can’t create user application configuration folder %s: %s"
 msgstr "사용자 프로그램 설정 폴더(%s)를 만들 수 없습니다: %s"
 
-#: gio/gdesktopappinfo.c:3456
+#: gio/gdesktopappinfo.c:3623
 #, c-format
 msgid "Can’t create user MIME configuration folder %s: %s"
 msgstr "사용자 MIME 설정 폴더(%s)를 만들 수 없습니다: %s"
 
-#: gio/gdesktopappinfo.c:3698 gio/gdesktopappinfo.c:3722
+#: gio/gdesktopappinfo.c:3865 gio/gdesktopappinfo.c:3889
 msgid "Application information lacks an identifier"
 msgstr "프로그램 정보에 아이디가 없습니다"
 
-#: gio/gdesktopappinfo.c:3958
+#: gio/gdesktopappinfo.c:4125
 #, c-format
 msgid "Can’t create user desktop file %s"
 msgstr "%s 사용자 desktop 파일을 만들 수 없습니다"
 
-#: gio/gdesktopappinfo.c:4094
+#: gio/gdesktopappinfo.c:4261
 #, c-format
 msgid "Custom definition for %s"
 msgstr "%s에 대한 사용자 설정 정의"
@@ -1312,7 +1333,7 @@ msgstr "드라이브가 start 기능을 구현하지 않았습니다"
 msgid "drive doesn’t implement stop"
 msgstr "드라이브가 stop 기능을 구현하지 않았습니다"
 
-#: gio/gdtlsconnection.c:1153 gio/gtlsconnection.c:920
+#: gio/gdtlsconnection.c:1186 gio/gtlsconnection.c:955
 msgid "TLS backend does not implement TLS binding retrieval"
 msgstr "TLS 백엔드가 TLS 바인딩 가져오기를 구현하지 않았습니다"
 
@@ -1353,74 +1374,74 @@ msgstr "GEmblemedIcon에 GEmblem이 없습니다"
 #. * trying to find the enclosing (user visible)
 #. * mount of a file, but none exists.
 #.
-#: gio/gfile.c:1561
+#: gio/gfile.c:1579
 msgid "Containing mount does not exist"
 msgstr "들어 있는 마운트가 없습니다"
 
-#: gio/gfile.c:2608 gio/glocalfile.c:2477
+#: gio/gfile.c:2626 gio/glocalfile.c:2486
 msgid "Can’t copy over directory"
 msgstr "디렉터리를 덮어 써서 복사할 수 없습니다"
 
-#: gio/gfile.c:2668
+#: gio/gfile.c:2686
 msgid "Can’t copy directory over directory"
 msgstr "디렉터리를 덮어 써서 디렉터리를 복사할 수 없습니다"
 
-#: gio/gfile.c:2676
+#: gio/gfile.c:2694
 msgid "Target file exists"
 msgstr "대상 파일이 있습니다"
 
-#: gio/gfile.c:2695
+#: gio/gfile.c:2713
 msgid "Can’t recursively copy directory"
 msgstr "디렉터리를 재귀적으로 복사할 수 없습니다"
 
-#: gio/gfile.c:2996
+#: gio/gfile.c:3014
 msgid "Splice not supported"
 msgstr "잇기를 지원하지 않습니다"
 
-#: gio/gfile.c:3000
+#: gio/gfile.c:3018
 #, c-format
 msgid "Error splicing file: %s"
 msgstr "파일 쪼개기 오류: %s"
 
 # reflink/clone은 btrfs에서 임시 복사하는 걸 말한다
-#: gio/gfile.c:3152
+#: gio/gfile.c:3170
 msgid "Copy (reflink/clone) between mounts is not supported"
 msgstr "다른 마운트 사이에 복사(참조링크/클론)는 지원하지 않습니다"
 
-#: gio/gfile.c:3156
+#: gio/gfile.c:3174
 msgid "Copy (reflink/clone) is not supported or invalid"
 msgstr "복사(참조링크/클론)를 지원하지 않거나 잘못되었습니다"
 
-#: gio/gfile.c:3161
+#: gio/gfile.c:3179
 msgid "Copy (reflink/clone) is not supported or didn’t work"
 msgstr "복사(참조링크/클론)를 지원하지 않거나 동작하지 않았습니다."
 
-#: gio/gfile.c:3226
+#: gio/gfile.c:3244
 msgid "Can’t copy special file"
 msgstr "특수 파일은 복사할 수 없습니다"
 
-#: gio/gfile.c:4035
+#: gio/gfile.c:4138
 msgid "Invalid symlink value given"
 msgstr "잘못된 심볼릭 링크 값이 주어졌습니다"
 
-#: gio/gfile.c:4045 glib/gfileutils.c:2354
+#: gio/gfile.c:4148 glib/gfileutils.c:2333
 msgid "Symbolic links not supported"
 msgstr "심볼릭 링크를 지원하지 않습니다"
 
-#: gio/gfile.c:4213
+#: gio/gfile.c:4316
 msgid "Trash not supported"
 msgstr "휴지통을 지원하지 않습니다"
 
-#: gio/gfile.c:4325
+#: gio/gfile.c:4428
 #, c-format
 msgid "File names cannot contain “%c”"
 msgstr "파일 이름에 “%c” 문자가 들어갈 수 없습니다"
 
-#: gio/gfile.c:6806 gio/gvolume.c:364
+#: gio/gfile.c:7028 gio/gvolume.c:364
 msgid "volume doesn’t implement mount"
 msgstr "볼륨이 mount를 구현하지 않았습니다"
 
-#: gio/gfile.c:6920 gio/gfile.c:6968
+#: gio/gfile.c:7142 gio/gfile.c:7190
 msgid "No application is registered as handling this file"
 msgstr "이 파일을 처리하는 프로그램을 아무 것도 등록하지 않았습니다"
 
@@ -1465,7 +1486,7 @@ msgstr "입력 스트림이 truncate를 허용하지 않습니다"
 msgid "Truncate not supported on stream"
 msgstr "스트림에서 truncate를 지원하지 않습니다"
 
-#: gio/ghttpproxy.c:91 gio/gresolver.c:443 gio/gresolver.c:596
+#: gio/ghttpproxy.c:91 gio/gresolver.c:458 gio/gresolver.c:611
 #: glib/gconvert.c:1825
 msgid "Invalid hostname"
 msgstr "잘못된 호스트 이름"
@@ -1552,7 +1573,7 @@ msgid "Could not parse “%s” as IP address mask"
 msgstr "“%s”을(를) IP주소 마스크로 해석할 수 없습니다"
 
 #: gio/ginetsocketaddress.c:203 gio/ginetsocketaddress.c:220
-#: gio/gnativesocketaddress.c:109 gio/gunixsocketaddress.c:221
+#: gio/gnativesocketaddress.c:109 gio/gunixsocketaddress.c:228
 msgid "Not enough space for socket address"
 msgstr "소켓 주소에 공간이 부족합니다"
 
@@ -2386,76 +2407,80 @@ msgstr "%s 파일 압축 중 오류"
 msgid "text may not appear inside <%s>"
 msgstr "<%s> 안에는 문자가 들어갈 수 없습니다"
 
-#: gio/glib-compile-resources.c:737 gio/glib-compile-schemas.c:2172
+#: gio/glib-compile-resources.c:819 gio/glib-compile-schemas.c:2172
 msgid "Show program version and exit"
 msgstr "프로그램 버전을 표시하고 끝납니다"
 
-#: gio/glib-compile-resources.c:738
+#: gio/glib-compile-resources.c:820
 msgid "Name of the output file"
 msgstr "출력 파일의 이름"
 
-#: gio/glib-compile-resources.c:739
+#: gio/glib-compile-resources.c:821
 msgid ""
 "The directories to load files referenced in FILE from (default: current "
 "directory)"
 msgstr "FILE에 참조된 파일을 읽어들일 디렉터리 (기본값: 현재 디렉터리)"
 
-#: gio/glib-compile-resources.c:739 gio/glib-compile-schemas.c:2173
+#: gio/glib-compile-resources.c:821 gio/glib-compile-schemas.c:2173
 #: gio/glib-compile-schemas.c:2202
 msgid "DIRECTORY"
 msgstr "<디렉터리>"
 
 # 주의: 옵션 설명 - 문장으로 번역
-#: gio/glib-compile-resources.c:740
+#: gio/glib-compile-resources.c:822
 msgid ""
 "Generate output in the format selected for by the target filename extension"
 msgstr "대상 파일 이름 확장자에 따라 선택한 형식으로 출력을 생성합니다"
 
 # 주의: 옵션 설명 - 문장으로 번역
-#: gio/glib-compile-resources.c:741
+#: gio/glib-compile-resources.c:823
 msgid "Generate source header"
 msgstr "소스 헤더를 생성합니다"
 
 # 주의: 옵션 설명 - 문장으로 번역
-#: gio/glib-compile-resources.c:742
+#: gio/glib-compile-resources.c:824
 msgid "Generate source code used to link in the resource file into your code"
 msgstr "리소스 파일에 연결하는데 사용하는 소스 코드를 코드에 생성합니다"
 
 # 주의: 옵션 설명 - 문장으로 번역
-#: gio/glib-compile-resources.c:743
+#: gio/glib-compile-resources.c:825
 msgid "Generate dependency list"
 msgstr "의존성 목록을 생성합니다"
 
-#: gio/glib-compile-resources.c:744
+#: gio/glib-compile-resources.c:826
 msgid "Name of the dependency file to generate"
 msgstr "생성할 의존성 파일의 이름"
 
 # makefile의 .PHONY target을 말함
-#: gio/glib-compile-resources.c:745
+#: gio/glib-compile-resources.c:827
 msgid "Include phony targets in the generated dependency file"
 msgstr "만들어진 의존성 파일에 포니 타겟이 들어갑니다"
 
 # 주의: 옵션 설명 - 문장으로 번역
-#: gio/glib-compile-resources.c:746
+#: gio/glib-compile-resources.c:828
 msgid "Don’t automatically create and register resource"
 msgstr "자원을 자동으로 만들고 등록하지 않습니다"
 
-#: gio/glib-compile-resources.c:747
+#: gio/glib-compile-resources.c:829
 msgid "Don’t export functions; declare them G_GNUC_INTERNAL"
 msgstr "함수를 내보내지 않고, G_GNU_INTERNAL로 선언합니다"
 
-#: gio/glib-compile-resources.c:748
+#: gio/glib-compile-resources.c:830
 msgid ""
 "Don’t embed resource data in the C file; assume it's linked externally "
 "instead"
 msgstr ""
 "C 파일에 리소스 데이터를 내장하지 않고, 외부에 링크되어 있다고 가정합니다"
 
-#: gio/glib-compile-resources.c:749
+#: gio/glib-compile-resources.c:831
 msgid "C identifier name used for the generated source code"
 msgstr "C 식별자 이름은 생성한 소스코드에 대해 사용합니다"
 
-#: gio/glib-compile-resources.c:775
+#: gio/glib-compile-resources.c:832
+msgid "The target C compiler (default: the CC environment variable)"
+msgstr "타겟 C 컴파일러 (기본값: CC 환경 변수)"
+
+#: gio/glib-compile-resources.c:858
 msgid ""
 "Compile a resource specification into a resource file.\n"
 "Resource specification files have the extension .gresource.xml,\n"
@@ -2465,7 +2490,7 @@ msgstr ""
 "자원 명세 파일은 .gresource.xml 확장자를 지니며,\n"
 "자원 파일은 .gresource라는 확장자를 지닙니다."
 
-#: gio/glib-compile-resources.c:797
+#: gio/glib-compile-resources.c:880
 msgid "You should give exactly one file name\n"
 msgstr "정확히 파일 이름을 하나 지정해야 합니다\n"
 
@@ -2976,8 +3001,8 @@ msgstr "%s 파일의 이름 바꾸는 중 오류: %s"
 msgid "Can’t rename file, filename already exists"
 msgstr "파일 이름을 바꿀 수 없습니다. 파일이 이미 있습니다"
 
-#: gio/glocalfile.c:1184 gio/glocalfile.c:2371 gio/glocalfile.c:2399
-#: gio/glocalfile.c:2538 gio/glocalfileoutputstream.c:656
+#: gio/glocalfile.c:1184 gio/glocalfile.c:2380 gio/glocalfile.c:2408
+#: gio/glocalfile.c:2547 gio/glocalfileoutputstream.c:656
 msgid "Invalid filename"
 msgstr "잘못된 파일 이름"
 
@@ -2991,92 +3016,92 @@ msgstr "%s 파일을 여는 중 오류: %s"
 msgid "Error removing file %s: %s"
 msgstr "%s 파일 제거하는 중 오류: %s"
 
-#: gio/glocalfile.c:1982 gio/glocalfile.c:1993
+#: gio/glocalfile.c:1982 gio/glocalfile.c:1993 gio/glocalfile.c:2020
 #, c-format
 msgid "Error trashing file %s: %s"
 msgstr "%s 파일 버리는 중 오류: %s"
 
-#: gio/glocalfile.c:2031
+#: gio/glocalfile.c:2040
 #, c-format
 msgid "Unable to create trash directory %s: %s"
 msgstr "휴지통 디렉터리(%s)를 만들 수 없습니다: %s"
 
-#: gio/glocalfile.c:2052
+#: gio/glocalfile.c:2061
 #, c-format
 msgid "Unable to find toplevel directory to trash %s"
 msgstr "%s 휴지통의 상위 디렉터리를 찾을 수 없습니다"
 
 # reflink/clone은 btrfs에서 임시 복사하는 걸 말한다
-#: gio/glocalfile.c:2060
+#: gio/glocalfile.c:2069
 #, c-format
 msgid "Trashing on system internal mounts is not supported"
 msgstr "시스템 내부 마운트에 대해 휴지통은 지원하지 않습니다"
 
-#: gio/glocalfile.c:2146 gio/glocalfile.c:2174
+#: gio/glocalfile.c:2155 gio/glocalfile.c:2183
 #, c-format
 msgid "Unable to find or create trash directory %s to trash %s"
 msgstr "%s 휴지통 디렉터리를 (%s 버리기) 찾을 수 없거나 만들 수 없습니다"
 
-#: gio/glocalfile.c:2220
+#: gio/glocalfile.c:2229
 #, c-format
 msgid "Unable to create trashing info file for %s: %s"
 msgstr "%s에 대한 휴지통 정보 파일을 만들 수 없습니다: %s"
 
-#: gio/glocalfile.c:2282
+#: gio/glocalfile.c:2291
 #, c-format
 msgid "Unable to trash file %s across filesystem boundaries"
 msgstr "%s 파일을 파일 시스템 경계를 넘어서서 버릴 수 없습니다"
 
-#: gio/glocalfile.c:2286 gio/glocalfile.c:2342
+#: gio/glocalfile.c:2295 gio/glocalfile.c:2351
 #, c-format
 msgid "Unable to trash file %s: %s"
 msgstr "%s 파일을 버릴 수 없습니다: %s"
 
-#: gio/glocalfile.c:2348
+#: gio/glocalfile.c:2357
 #, c-format
 msgid "Unable to trash file %s"
 msgstr "%s 파일을 버릴 수 없습니다"
 
-#: gio/glocalfile.c:2374
+#: gio/glocalfile.c:2383
 #, c-format
 msgid "Error creating directory %s: %s"
 msgstr "%s 디렉터리를 만드는 중 오류: %s"
 
-#: gio/glocalfile.c:2403
+#: gio/glocalfile.c:2412
 #, c-format
 msgid "Filesystem does not support symbolic links"
 msgstr "파일 시스템이 심볼릭 링크를 지원하지 않습니다"
 
-#: gio/glocalfile.c:2406
+#: gio/glocalfile.c:2415
 #, c-format
 msgid "Error making symbolic link %s: %s"
 msgstr "%s 심볼릭 링크를 만드는 중 오류: %s"
 
-#: gio/glocalfile.c:2449 gio/glocalfile.c:2484 gio/glocalfile.c:2541
+#: gio/glocalfile.c:2458 gio/glocalfile.c:2493 gio/glocalfile.c:2550
 #, c-format
 msgid "Error moving file %s: %s"
 msgstr "%s 파일 옮기는 중 오류: %s"
 
-#: gio/glocalfile.c:2472
+#: gio/glocalfile.c:2481
 msgid "Can’t move directory over directory"
 msgstr "디렉터리를 덮어 써서 디렉터리를 옮길 수 없습니다"
 
-#: gio/glocalfile.c:2498 gio/glocalfileoutputstream.c:1108
+#: gio/glocalfile.c:2507 gio/glocalfileoutputstream.c:1108
 #: gio/glocalfileoutputstream.c:1122 gio/glocalfileoutputstream.c:1137
 #: gio/glocalfileoutputstream.c:1154 gio/glocalfileoutputstream.c:1168
 msgid "Backup file creation failed"
 msgstr "백업 파일 만들기가 실패했습니다"
 
-#: gio/glocalfile.c:2517
+#: gio/glocalfile.c:2526
 #, c-format
 msgid "Error removing target file: %s"
 msgstr "대상 파일을 제거하는 중 오류: %s"
 
-#: gio/glocalfile.c:2531
+#: gio/glocalfile.c:2540
 msgid "Move between mounts not supported"
 msgstr "다른 마운트 사이에 옮기기는 지원하지 않습니다"
 
-#: gio/glocalfile.c:2705
+#: gio/glocalfile.c:2714
 #, c-format
 msgid "Could not determine the disk usage of %s: %s"
 msgstr "%s의 디스크 사용량을 알아낼 수 없습니다: %s"
@@ -3260,7 +3285,7 @@ msgid "Error truncating file: %s"
 msgstr "파일을 자르는 중 오류: %s"
 
 #: gio/glocalfileoutputstream.c:662 gio/glocalfileoutputstream.c:907
-#: gio/glocalfileoutputstream.c:1218 gio/gsubprocess.c:226
+#: gio/glocalfileoutputstream.c:1218 gio/gsubprocess.c:229
 #, c-format
 msgid "Error opening file “%s”: %s"
 msgstr "“%s” 파일을 여는 중 오류: %s"
@@ -3282,7 +3307,7 @@ msgstr "파일이 외부에서 바뀌었습니다"
 msgid "Error removing old file: %s"
 msgstr "예전 파일을 제거하는 중 오류: %s"
 
-#: gio/gmemoryinputstream.c:474 gio/gmemoryoutputstream.c:772
+#: gio/gmemoryinputstream.c:474 gio/gmemoryoutputstream.c:762
 msgid "Invalid GSeekType supplied"
 msgstr "잘못된 GSeekType이 주어졌습니다"
 
@@ -3294,25 +3319,25 @@ msgstr "잘못된 탐색 요청"
 msgid "Cannot truncate GMemoryInputStream"
 msgstr "GMemoryInputStream은 자를 수 없습니다"
 
-#: gio/gmemoryoutputstream.c:567
+#: gio/gmemoryoutputstream.c:568
 msgid "Memory output stream not resizable"
 msgstr "메모리 출력 스트림은 크기를 바꿀 수 없습니다"
 
-#: gio/gmemoryoutputstream.c:583
+#: gio/gmemoryoutputstream.c:584
 msgid "Failed to resize memory output stream"
 msgstr "출력 스트림의 크기를 바꾸는데 실패했습니다"
 
-#: gio/gmemoryoutputstream.c:673
+#: gio/gmemoryoutputstream.c:663
 msgid ""
 "Amount of memory required to process the write is larger than available "
 "address space"
 msgstr "쓰기를 처리하는데 필요한 메모리 용량이 빈 공간보다 더 큽니다"
 
-#: gio/gmemoryoutputstream.c:782
+#: gio/gmemoryoutputstream.c:772
 msgid "Requested seek before the beginning of the stream"
 msgstr "요청한 파일 이동 위치가 스트림의 맨 앞보다 더 앞쪽입니다"
 
-#: gio/gmemoryoutputstream.c:797
+#: gio/gmemoryoutputstream.c:787
 msgid "Requested seek beyond the end of the stream"
 msgstr "요청한 파일 이동 위치가 스트림의 맨 뒤보다 더 뒤쪽입니다"
 
@@ -3394,12 +3419,12 @@ msgstr "네트워크 감시자를 만들 수 없습니다:"
 msgid "Could not get network status: "
 msgstr "네트워크 상태를 가져올 수 없습니다:"
 
-#: gio/gnetworkmonitornm.c:348
+#: gio/gnetworkmonitornm.c:311
 #, c-format
 msgid "NetworkManager not running"
 msgstr "NetworkManager 실행 중이 아닙니다"
 
-#: gio/gnetworkmonitornm.c:359
+#: gio/gnetworkmonitornm.c:322
 #, c-format
 msgid "NetworkManager version too old"
 msgstr "NetworkManager 버전이 너무 오래 됐습니다"
@@ -3417,18 +3442,18 @@ msgstr "%s에 전달된 벡터의 합이 너무 큽니다"
 msgid "Source stream is already closed"
 msgstr "원본 스트림을 이미 닫았습니다"
 
-#: gio/gresolver.c:386 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
+#: gio/gresolver.c:401 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
 #, c-format
 msgid "Error resolving “%s”: %s"
 msgstr "“%s”의 주소를 알아내는 데 오류: %s"
 
 #. Translators: The placeholder is for a function name.
-#: gio/gresolver.c:455 gio/gresolver.c:615
+#: gio/gresolver.c:470 gio/gresolver.c:630
 #, c-format
 msgid "%s not implemented"
 msgstr "%s 기능이 구현되지 않았습니다"
 
-#: gio/gresolver.c:984 gio/gresolver.c:1036
+#: gio/gresolver.c:999 gio/gresolver.c:1051
 msgid "Invalid domain"
 msgstr "잘못된 도메인"
 
@@ -3543,7 +3568,7 @@ msgstr ""
 msgid "  SECTION   An (optional) elf section name\n"
 msgstr "  <섹션>   (추가적) ELF 섹션 이름\n"
 
-#: gio/gresource-tool.c:565 gio/gsettings-tool.c:706
+#: gio/gresource-tool.c:565 gio/gsettings-tool.c:718
 msgid "  COMMAND   The (optional) command to explain\n"
 msgstr "  <명령>    설명할 명령어(옵션)\n"
 
@@ -3575,7 +3600,7 @@ msgstr "<경로>"
 msgid "  PATH      A resource path\n"
 msgstr "  <경로>    자원 경로\n"
 
-#: gio/gsettings-tool.c:49 gio/gsettings-tool.c:70 gio/gsettings-tool.c:911
+#: gio/gsettings-tool.c:49 gio/gsettings-tool.c:70 gio/gsettings-tool.c:923
 #, c-format
 msgid "No such schema “%s”\n"
 msgstr "“%s” 스키마가 없습니다\n"
@@ -3606,35 +3631,35 @@ msgstr "경로는 슬래시(/)로 끝나야 합니다\n"
 msgid "Path must not contain two adjacent slashes (//)\n"
 msgstr "경로에는 두 개의 연속된 슬래시(//)가 들어 있어서는 안 됩니다\n"
 
-#: gio/gsettings-tool.c:541
+#: gio/gsettings-tool.c:553
 msgid "The provided value is outside of the valid range\n"
 msgstr "지정한 값이 올바른 범위에서 벗어납니다\n"
 
-#: gio/gsettings-tool.c:548
+#: gio/gsettings-tool.c:560
 msgid "The key is not writable\n"
 msgstr "키를 쓸 수 없습니다\n"
 
-#: gio/gsettings-tool.c:584
+#: gio/gsettings-tool.c:596
 msgid "List the installed (non-relocatable) schemas"
 msgstr "설치한(이동 가능하지 않은) 스키마의 목록을 표시합니다"
 
-#: gio/gsettings-tool.c:590
+#: gio/gsettings-tool.c:602
 msgid "List the installed relocatable schemas"
 msgstr "설치한 이동 가능한 스키마의 목록을 표시합니다"
 
-#: gio/gsettings-tool.c:596
+#: gio/gsettings-tool.c:608
 msgid "List the keys in SCHEMA"
 msgstr "<스키마>의 키 목록을 표시합니다"
 
-#: gio/gsettings-tool.c:597 gio/gsettings-tool.c:603 gio/gsettings-tool.c:646
+#: gio/gsettings-tool.c:609 gio/gsettings-tool.c:615 gio/gsettings-tool.c:658
 msgid "SCHEMA[:PATH]"
 msgstr "<스키마>[:<경로>]"
 
-#: gio/gsettings-tool.c:602
+#: gio/gsettings-tool.c:614
 msgid "List the children of SCHEMA"
 msgstr "<스키마>의 하위 항목의 목록을 표시합니다"
 
-#: gio/gsettings-tool.c:608
+#: gio/gsettings-tool.c:620
 msgid ""
 "List keys and values, recursively\n"
 "If no SCHEMA is given, list all keys\n"
@@ -3642,48 +3667,48 @@ msgstr ""
 "키와 값의 목록을 재귀적으로 표시합니다.\n"
 "<스키마>가 없으면 모든 키를 표시합니다.\n"
 
-#: gio/gsettings-tool.c:610
+#: gio/gsettings-tool.c:622
 msgid "[SCHEMA[:PATH]]"
 msgstr "[<스키마>[:<경로>]]"
 
-#: gio/gsettings-tool.c:615
+#: gio/gsettings-tool.c:627
 msgid "Get the value of KEY"
 msgstr "<키>의 값을 가져옵니다"
 
-#: gio/gsettings-tool.c:616 gio/gsettings-tool.c:622 gio/gsettings-tool.c:628
-#: gio/gsettings-tool.c:640 gio/gsettings-tool.c:652
+#: gio/gsettings-tool.c:628 gio/gsettings-tool.c:634 gio/gsettings-tool.c:640
+#: gio/gsettings-tool.c:652 gio/gsettings-tool.c:664
 msgid "SCHEMA[:PATH] KEY"
 msgstr "<스키마>:[<경로>] <키>"
 
-#: gio/gsettings-tool.c:621
+#: gio/gsettings-tool.c:633
 msgid "Query the range of valid values for KEY"
 msgstr "<키>에 대한 올바른 값의 범위를 찾아 봅니다"
 
-#: gio/gsettings-tool.c:627
+#: gio/gsettings-tool.c:639
 msgid "Query the description for KEY"
 msgstr "<키>에 대한 설명을 찾아 봅니다"
 
-#: gio/gsettings-tool.c:633
+#: gio/gsettings-tool.c:645
 msgid "Set the value of KEY to VALUE"
 msgstr "<키>의 값을 <값>으로 설정합니다"
 
-#: gio/gsettings-tool.c:634
+#: gio/gsettings-tool.c:646
 msgid "SCHEMA[:PATH] KEY VALUE"
 msgstr "<스키마>:[<경로>] <키> <값>"
 
-#: gio/gsettings-tool.c:639
+#: gio/gsettings-tool.c:651
 msgid "Reset KEY to its default value"
 msgstr "<키>의 값을 기본값으로 초기화합니다"
 
-#: gio/gsettings-tool.c:645
+#: gio/gsettings-tool.c:657
 msgid "Reset all keys in SCHEMA to their defaults"
 msgstr "<스키마>에 있는 모든 키의 값을 기본값으로 초기화합니다"
 
-#: gio/gsettings-tool.c:651
+#: gio/gsettings-tool.c:663
 msgid "Check if KEY is writable"
 msgstr "<키>가 쓰기 가능한지 검사합니다"
 
-#: gio/gsettings-tool.c:657
+#: gio/gsettings-tool.c:669
 msgid ""
 "Monitor KEY for changes.\n"
 "If no KEY is specified, monitor all keys in SCHEMA.\n"
@@ -3693,11 +3718,11 @@ msgstr ""
 "<키>를 지정하지 않으면, <스키마>의 모든 키를 감시합니다.\n"
 "감시를 중단하려면 ^C를 누르십시오.\n"
 
-#: gio/gsettings-tool.c:660
+#: gio/gsettings-tool.c:672
 msgid "SCHEMA[:PATH] [KEY]"
 msgstr "<스키마>[:<경로>] [<키>]"
 
-#: gio/gsettings-tool.c:672
+#: gio/gsettings-tool.c:684
 msgid ""
 "Usage:\n"
 "  gsettings --version\n"
@@ -3745,7 +3770,7 @@ msgstr ""
 "자세한 도움말을 보려면 “gsettings help <명령>” 명령을 실행하십시오.\n"
 "\n"
 
-#: gio/gsettings-tool.c:696
+#: gio/gsettings-tool.c:708
 #, c-format
 msgid ""
 "Usage:\n"
@@ -3760,11 +3785,11 @@ msgstr ""
 "%s\n"
 "\n"
 
-#: gio/gsettings-tool.c:702
+#: gio/gsettings-tool.c:714
 msgid "  SCHEMADIR A directory to search for additional schemas\n"
 msgstr "  <스키마 경로> 추가적인 스키마를 검색하려는 디렉터리\n"
 
-#: gio/gsettings-tool.c:710
+#: gio/gsettings-tool.c:722
 msgid ""
 "  SCHEMA    The name of the schema\n"
 "  PATH      The path, for relocatable schemas\n"
@@ -3772,212 +3797,212 @@ msgstr ""
 "  <스키마>  스키마의 이름\n"
 "  <경로>    경로, 이동 가능한 스키마의 경우\n"
 
-#: gio/gsettings-tool.c:715
+#: gio/gsettings-tool.c:727
 msgid "  KEY       The (optional) key within the schema\n"
 msgstr "  <키>      스키마 안의 키(옵션)\n"
 
-#: gio/gsettings-tool.c:719
+#: gio/gsettings-tool.c:731
 msgid "  KEY       The key within the schema\n"
 msgstr "  <키>      스키마 안의 키\n"
 
-#: gio/gsettings-tool.c:723
+#: gio/gsettings-tool.c:735
 msgid "  VALUE     The value to set\n"
 msgstr "  <값>      설정할 값\n"
 
-#: gio/gsettings-tool.c:778
+#: gio/gsettings-tool.c:790
 #, c-format
 msgid "Could not load schemas from %s: %s\n"
 msgstr "“%s”에서 스키마를 읽어들일 수 없습니다: %s\n"
 
-#: gio/gsettings-tool.c:790
+#: gio/gsettings-tool.c:802
 msgid "No schemas installed\n"
 msgstr "스키마를 설치하지 않았습니다\n"
 
-#: gio/gsettings-tool.c:869
+#: gio/gsettings-tool.c:881
 msgid "Empty schema name given\n"
 msgstr "지정한 스키마 이름이 빈 문자열입니다\n"
 
-#: gio/gsettings-tool.c:924
+#: gio/gsettings-tool.c:936
 #, c-format
 msgid "No such key “%s”\n"
 msgstr "“%s” 키가 없습니다\n"
 
-#: gio/gsocket.c:413
+#: gio/gsocket.c:417
 msgid "Invalid socket, not initialized"
 msgstr "올바른 소켓이 아닙니다. 초기화되지 않았습니다"
 
-#: gio/gsocket.c:420
+#: gio/gsocket.c:424
 #, c-format
 msgid "Invalid socket, initialization failed due to: %s"
 msgstr "올바른 소켓이 아닙니다. 초기화가 다음 이유로 실패했습니다: %s"
 
-#: gio/gsocket.c:428
+#: gio/gsocket.c:432
 msgid "Socket is already closed"
 msgstr "소켓을 이미 닫았습니다"
 
-#: gio/gsocket.c:443 gio/gsocket.c:3190 gio/gsocket.c:4420 gio/gsocket.c:4478
+#: gio/gsocket.c:447 gio/gsocket.c:3194 gio/gsocket.c:4427 gio/gsocket.c:4485
 msgid "Socket I/O timed out"
 msgstr "소켓 입출력 시간 제한이 넘었습니다"
 
-#: gio/gsocket.c:578
+#: gio/gsocket.c:582
 #, c-format
 msgid "creating GSocket from fd: %s"
 msgstr "파일 서술자에서 GSocket을 만드는 중: %s"
 
-#: gio/gsocket.c:607 gio/gsocket.c:671 gio/gsocket.c:678
+#: gio/gsocket.c:611 gio/gsocket.c:675 gio/gsocket.c:682
 #, c-format
 msgid "Unable to create socket: %s"
 msgstr "소켓을 만들 수 없습니다: %s"
 
-#: gio/gsocket.c:671
+#: gio/gsocket.c:675
 msgid "Unknown family was specified"
 msgstr "알 수 없는 계열을 지정했습니다"
 
-#: gio/gsocket.c:678
+#: gio/gsocket.c:682
 msgid "Unknown protocol was specified"
 msgstr "알 수 없는 프로토콜을 지정했습니다"
 
-#: gio/gsocket.c:1169
+#: gio/gsocket.c:1173
 #, c-format
 msgid "Cannot use datagram operations on a non-datagram socket."
 msgstr "데이터그램 용도가 아닌 소켓에 데이터그램 동작을 수행할 수 없습니다."
 
-#: gio/gsocket.c:1186
+#: gio/gsocket.c:1190
 #, c-format
 msgid "Cannot use datagram operations on a socket with a timeout set."
 msgstr "제한시간을 설정한 소켓에 데이터그램 동작을 수행할 수 없습니다."
 
-#: gio/gsocket.c:1993
+#: gio/gsocket.c:1997
 #, c-format
 msgid "could not get local address: %s"
 msgstr "로컬 주소를 알아낼 수 없습니다: %s"
 
-#: gio/gsocket.c:2039
+#: gio/gsocket.c:2043
 #, c-format
 msgid "could not get remote address: %s"
 msgstr "원격 주소를 알아낼 수 없습니다: %s"
 
-#: gio/gsocket.c:2105
+#: gio/gsocket.c:2109
 #, c-format
 msgid "could not listen: %s"
 msgstr "연결을 받을 수 없습니다: %s"
 
 # NOTE: bind(2)를 뜻함
-#: gio/gsocket.c:2209
+#: gio/gsocket.c:2213
 #, c-format
 msgid "Error binding to address %s: %s"
 msgstr "%s 주소에 바인드하는데 오류: %s"
 
-#: gio/gsocket.c:2385 gio/gsocket.c:2422 gio/gsocket.c:2532 gio/gsocket.c:2557
-#: gio/gsocket.c:2620 gio/gsocket.c:2678 gio/gsocket.c:2696
+#: gio/gsocket.c:2389 gio/gsocket.c:2426 gio/gsocket.c:2536 gio/gsocket.c:2561
+#: gio/gsocket.c:2624 gio/gsocket.c:2682 gio/gsocket.c:2700
 #, c-format
 msgid "Error joining multicast group: %s"
 msgstr "멀티캐스트 그룹에 참여하는 중 오류: %s"
 
-#: gio/gsocket.c:2386 gio/gsocket.c:2423 gio/gsocket.c:2533 gio/gsocket.c:2558
-#: gio/gsocket.c:2621 gio/gsocket.c:2679 gio/gsocket.c:2697
+#: gio/gsocket.c:2390 gio/gsocket.c:2427 gio/gsocket.c:2537 gio/gsocket.c:2562
+#: gio/gsocket.c:2625 gio/gsocket.c:2683 gio/gsocket.c:2701
 #, c-format
 msgid "Error leaving multicast group: %s"
 msgstr "멀티캐스트 그룹을 나오는 중 오류: %s"
 
-#: gio/gsocket.c:2387
+#: gio/gsocket.c:2391
 msgid "No support for source-specific multicast"
 msgstr "소스 지향 멀티캐스트를 지원하지 않습니다"
 
-#: gio/gsocket.c:2534
+#: gio/gsocket.c:2538
 msgid "Unsupported socket family"
 msgstr "소켓 패밀리를 지원하지 않습니다"
 
-#: gio/gsocket.c:2559
+#: gio/gsocket.c:2563
 msgid "source-specific not an IPv4 address"
 msgstr "소스 지향 주소가 IPv4 주소가 아닙니다"
 
-#: gio/gsocket.c:2583
+#: gio/gsocket.c:2587
 #, c-format
 msgid "Interface name too long"
 msgstr "인터페이스 이름이 너무 깁니다"
 
-#: gio/gsocket.c:2596 gio/gsocket.c:2646
+#: gio/gsocket.c:2600 gio/gsocket.c:2650
 #, c-format
 msgid "Interface not found: %s"
 msgstr "인터페이스가 없습니다: %s"
 
-#: gio/gsocket.c:2622
+#: gio/gsocket.c:2626
 msgid "No support for IPv4 source-specific multicast"
 msgstr "IPv4 소스 지향 멀티캐스트를 지원하지 않습니다"
 
-#: gio/gsocket.c:2680
+#: gio/gsocket.c:2684
 msgid "No support for IPv6 source-specific multicast"
 msgstr "IPv6 소스 지향 멀티캐스트를 지원하지 않습니다"
 
-#: gio/gsocket.c:2889
+#: gio/gsocket.c:2893
 #, c-format
 msgid "Error accepting connection: %s"
 msgstr "연결을 받아들이는데 오류: %s"
 
-#: gio/gsocket.c:3015
+#: gio/gsocket.c:3019
 msgid "Connection in progress"
 msgstr "연결이 진행 중입니다"
 
-#: gio/gsocket.c:3066
+#: gio/gsocket.c:3070
 msgid "Unable to get pending error: "
 msgstr "밀린 오류를 알아낼 수 없습니다: "
 
-#: gio/gsocket.c:3255
+#: gio/gsocket.c:3259
 #, c-format
 msgid "Error receiving data: %s"
 msgstr "데이터를 받는데 오류: %s"
 
-#: gio/gsocket.c:3452
+#: gio/gsocket.c:3456
 #, c-format
 msgid "Error sending data: %s"
 msgstr "데이터를 보내는데 오류: %s"
 
-#: gio/gsocket.c:3639
+#: gio/gsocket.c:3643
 #, c-format
 msgid "Unable to shutdown socket: %s"
 msgstr "소켓을 닫을 수 없습니다: %s"
 
-#: gio/gsocket.c:3720
+#: gio/gsocket.c:3724
 #, c-format
 msgid "Error closing socket: %s"
 msgstr "소켓을 닫는데 오류: %s"
 
-#: gio/gsocket.c:4413
+#: gio/gsocket.c:4420
 #, c-format
 msgid "Waiting for socket condition: %s"
 msgstr "소켓 조건을 기다리는 중: %s"
 
-#: gio/gsocket.c:4804 gio/gsocket.c:4820 gio/gsocket.c:4833
+#: gio/gsocket.c:4810 gio/gsocket.c:4826 gio/gsocket.c:4839
 #, c-format
 msgid "Unable to send message: %s"
 msgstr "메시지를 보낼 수 없습니다: %s"
 
-#: gio/gsocket.c:4805 gio/gsocket.c:4821 gio/gsocket.c:4834
+#: gio/gsocket.c:4811 gio/gsocket.c:4827 gio/gsocket.c:4840
 msgid "Message vectors too large"
 msgstr "메시지 벡터가 너무 큽니다"
 
-#: gio/gsocket.c:4850 gio/gsocket.c:4852 gio/gsocket.c:4999 gio/gsocket.c:5084
-#: gio/gsocket.c:5262 gio/gsocket.c:5302 gio/gsocket.c:5304
+#: gio/gsocket.c:4856 gio/gsocket.c:4858 gio/gsocket.c:5005 gio/gsocket.c:5090
+#: gio/gsocket.c:5268 gio/gsocket.c:5308 gio/gsocket.c:5310
 #, c-format
 msgid "Error sending message: %s"
 msgstr "메시지를 보내는 중 오류: %s"
 
-#: gio/gsocket.c:5026
+#: gio/gsocket.c:5032
 msgid "GSocketControlMessage not supported on Windows"
 msgstr "윈도우에서는 GSocketControlMessage를 지원하지 않습니다"
 
-#: gio/gsocket.c:5495 gio/gsocket.c:5571 gio/gsocket.c:5797
+#: gio/gsocket.c:5505 gio/gsocket.c:5581 gio/gsocket.c:5807
 #, c-format
 msgid "Error receiving message: %s"
 msgstr "메시지를 받는데 오류: %s"
 
-#: gio/gsocket.c:6070 gio/gsocket.c:6081 gio/gsocket.c:6127
+#: gio/gsocket.c:6090 gio/gsocket.c:6101 gio/gsocket.c:6164
 #, c-format
 msgid "Unable to read socket credentials: %s"
 msgstr "소켓 암호 데이터를 읽을 수 없습니다: %s"
 
-#: gio/gsocket.c:6136
+#: gio/gsocket.c:6173
 msgid "g_socket_get_credentials not implemented for this OS"
 msgstr "g_socket_get_credentials가 이 OS에서 구현되지 않았습니다"
 
@@ -3995,11 +4020,11 @@ msgstr "%s(으)로 연결할 수 없습니다: "
 msgid "Could not connect: "
 msgstr "연결할 수 없습니다: "
 
-#: gio/gsocketclient.c:1162 gio/gsocketclient.c:1749
+#: gio/gsocketclient.c:1202 gio/gsocketclient.c:1793
 msgid "Proxying over a non-TCP connection is not supported."
 msgstr "TCP가 아닌 프록시 연결은 지원하지 않습니다."
 
-#: gio/gsocketclient.c:1194 gio/gsocketclient.c:1778
+#: gio/gsocketclient.c:1234 gio/gsocketclient.c:1822
 #, c-format
 msgid "Proxy protocol “%s” is not supported."
 msgstr "“%s” 프록시 프로토콜은 지원하지 않습니다."
@@ -4097,6 +4122,16 @@ msgstr "SOCKSv5 프록시가 해당 주소 형식을 지원하지 않습니다."
 msgid "Unknown SOCKSv5 proxy error."
 msgstr "알 수 없는 SOCKSv5 프록시 오류."
 
+#: gio/gtestdbus.c:612 glib/gspawn-win32.c:314
+#, c-format
+msgid "Failed to create pipe for communicating with child process (%s)"
+msgstr "하위 프로세스와 통신을 위한 파이프를 만드는 중 실패 (%s)"
+
+#: gio/gtestdbus.c:619
+#, c-format
+msgid "Pipes are not supported in this platform"
+msgstr "이 플랫폼에서는 파이프를 지원하지 않습니다"
+
 #: gio/gthemedicon.c:595
 #, c-format
 msgid "Can’t handle version %d of GThemedIcon encoding"
@@ -4128,27 +4163,31 @@ msgstr "일시적으로 “%s” 주소를 알아낼 수 없습니다"
 msgid "Error resolving “%s”"
 msgstr "“%s”의 주소를 알아내는 데 오류"
 
-#: gio/gtlscertificate.c:419
+#: gio/gtlscertificate.c:478
 msgid "No PEM-encoded private key found"
 msgstr "PEM 인코딩된 개인 키가 없습니다"
 
-#: gio/gtlscertificate.c:429
+#: gio/gtlscertificate.c:488
 msgid "Cannot decrypt PEM-encoded private key"
 msgstr "PEM 인코딩된 개인 키를 해독할 수 없습니다"
 
-#: gio/gtlscertificate.c:440
+#: gio/gtlscertificate.c:499
 msgid "Could not parse PEM-encoded private key"
 msgstr "PEM 인코딩된 개인 키를 해석할 수 없습니다"
 
-#: gio/gtlscertificate.c:467
+#: gio/gtlscertificate.c:526
 msgid "No PEM-encoded certificate found"
 msgstr "PEM 인코딩된 인증서가 없습니다"
 
-#: gio/gtlscertificate.c:476
+#: gio/gtlscertificate.c:535
 msgid "Could not parse PEM-encoded certificate"
 msgstr "PEM 인코딩된 인증서를 해석할 수 없습니다"
 
-#: gio/gtlscertificate.c:832
+#: gio/gtlscertificate.c:796
+msgid "The current TLS backend does not support PKCS #12"
+msgstr "현재 TLS 백엔드는 PKCS #12를 지원하지 않습니다"
+
+#: gio/gtlscertificate.c:1013
 msgid "This GTlsBackend does not support creating PKCS #11 certificates"
 msgstr "이 GTlsBackend는 PKCS #11 인증서 만들기를 지원하지 않습니다"
 
@@ -4170,51 +4209,59 @@ msgstr "암호 입력이 여러 차례 잘못되었습니다. 계속 실패하
 msgid "The password entered is incorrect."
 msgstr "입력한 암호가 올바르지 않습니다."
 
-#: gio/gunixconnection.c:166 gio/gunixconnection.c:579
+#: gio/gunixconnection.c:125
+msgid "Sending FD is not supported"
+msgstr "FD 보내기는 지원하지 않습니다"
+
+#: gio/gunixconnection.c:178 gio/gunixconnection.c:596
 #, c-format
 msgid "Expecting 1 control message, got %d"
 msgid_plural "Expecting 1 control message, got %d"
 msgstr[0] "한 개의 제어 메시지가 와야 하지만, %d개를 받았습니다"
 
-#: gio/gunixconnection.c:182 gio/gunixconnection.c:591
+#: gio/gunixconnection.c:194 gio/gunixconnection.c:608
 msgid "Unexpected type of ancillary data"
 msgstr "예상치 못한 부속 데이터의 형식입니다"
 
-#: gio/gunixconnection.c:200
+#: gio/gunixconnection.c:212
 #, c-format
 msgid "Expecting one fd, but got %d\n"
 msgid_plural "Expecting one fd, but got %d\n"
 msgstr[0] "한 개의 파일 서술자가 와야 하지만, %d개를 받았습니다\n"
 
-#: gio/gunixconnection.c:219
+#: gio/gunixconnection.c:231
 msgid "Received invalid fd"
 msgstr "올바르지 않은 파일 서술자를 받았습니다"
 
-#: gio/gunixconnection.c:363
+#: gio/gunixconnection.c:238
+msgid "Receiving FD is not supported"
+msgstr "FD 받기는 지원하지 않습니다"
+
+#: gio/gunixconnection.c:380
 msgid "Error sending credentials: "
 msgstr "암호 데이터를 보내는데 오류: "
 
-#: gio/gunixconnection.c:520
+#: gio/gunixconnection.c:537
 #, c-format
 msgid "Error checking if SO_PASSCRED is enabled for socket: %s"
 msgstr "소켓에 SO_PASSCRED를 사용하는지 검사하는데 오류: %s"
 
-#: gio/gunixconnection.c:536
+#: gio/gunixconnection.c:553
 #, c-format
 msgid "Error enabling SO_PASSCRED: %s"
 msgstr "SO_PASSCRED 사용 오류: %s"
 
-#: gio/gunixconnection.c:565
+#: gio/gunixconnection.c:582
 msgid ""
 "Expecting to read a single byte for receiving credentials but read zero bytes"
 msgstr "암호 데이터 1바이트를 읽어야 하지만 0바이트 읽음"
 
-#: gio/gunixconnection.c:605
+#: gio/gunixconnection.c:622
 #, c-format
 msgid "Not expecting control message, but got %d"
 msgstr "제어 메시지가 올 수 없지만, %d개를 받았습니다"
 
-#: gio/gunixconnection.c:630
+#: gio/gunixconnection.c:647
 #, c-format
 msgid "Error while disabling SO_PASSCRED: %s"
 msgstr "SO_PASSCRED 사용 해제 오류: %s"
@@ -4230,7 +4277,7 @@ msgstr "파일 서술자로부터 읽어오는 중 오류: %s"
 msgid "Error closing file descriptor: %s"
 msgstr "파일 서술자를 닫는 중 오류: %s"
 
-#: gio/gunixmounts.c:2785 gio/gunixmounts.c:2838
+#: gio/gunixmounts.c:2782 gio/gunixmounts.c:2835
 msgid "Filesystem root"
 msgstr "파일 시스템 루트"
 
@@ -4242,7 +4289,7 @@ msgid "Error writing to file descriptor: %s"
 msgstr "파일 서술자에 쓰는 중 오류: %s"
 
 # abstract unix domain socket address: 파일시스템과 관계없는 소켓을 말함
-#: gio/gunixsocketaddress.c:244
+#: gio/gunixsocketaddress.c:251
 msgid "Abstract UNIX domain socket addresses not supported on this system"
 msgstr "추상 유닉스 도메인 소켓 주소는 이 시스템에서 지원하지 않습니다"
 
@@ -4392,8 +4439,8 @@ msgstr "URI “%s”을(를) 사용해 “%s” 실행 명령 확장하기에 
 msgid "Unrepresentable character in conversion input"
 msgstr "변환 입력에 표현할 수 없는 글자가 들어 있습니다"
 
-#: glib/gconvert.c:495 glib/gutf8.c:871 glib/gutf8.c:1083 glib/gutf8.c:1220
-#: glib/gutf8.c:1324
+#: glib/gconvert.c:495 glib/gutf8.c:886 glib/gutf8.c:1099 glib/gutf8.c:1236
+#: glib/gutf8.c:1340
 msgid "Partial character sequence at end of input"
 msgstr "입력의 끝에서 부분적인 문자 순서"
 
@@ -4858,78 +4905,78 @@ msgstr "오후"
 msgid "Error opening directory “%s”: %s"
 msgstr "디렉터리 “%s” 여는 중 오류 : %s"
 
-#: glib/gfileutils.c:737 glib/gfileutils.c:829
+#: glib/gfileutils.c:733 glib/gfileutils.c:825
 #, c-format
 msgid "Could not allocate %lu byte to read file “%s”"
 msgid_plural "Could not allocate %lu bytes to read file “%s”"
 msgstr[0] "“%2$s” 파일을 읽는데 %1$lu 바이트를 할당할 수 없습니다"
 
-#: glib/gfileutils.c:754
+#: glib/gfileutils.c:750
 #, c-format
 msgid "Error reading file “%s”: %s"
 msgstr "“%s” 파일 읽는 중 오류: %s"
 
-#: glib/gfileutils.c:790
+#: glib/gfileutils.c:786
 #, c-format
 msgid "File “%s” is too large"
 msgstr "“%s” 파일이 너무 큽니다"
 
-#: glib/gfileutils.c:854
+#: glib/gfileutils.c:850
 #, c-format
 msgid "Failed to read from file “%s”: %s"
 msgstr "파일 “%s”에서 읽기 실패: %s"
 
-#: glib/gfileutils.c:904 glib/gfileutils.c:979 glib/gfileutils.c:1468
+#: glib/gfileutils.c:900 glib/gfileutils.c:975 glib/gfileutils.c:1447
 #, c-format
 msgid "Failed to open file “%s”: %s"
 msgstr "파일 “%s” 열기 실패: %s"
 
-#: glib/gfileutils.c:917
+#: glib/gfileutils.c:913
 #, c-format
 msgid "Failed to get attributes of file “%s”: fstat() failed: %s"
 msgstr "파일 “%s”의 속성 가져오기 실패: fstat() 실패: %s"
 
-#: glib/gfileutils.c:948
+#: glib/gfileutils.c:944
 #, c-format
 msgid "Failed to open file “%s”: fdopen() failed: %s"
 msgstr "파일 “%s” 열기 실패: fdopen() 실패: %s"
 
-#: glib/gfileutils.c:1049
+#: glib/gfileutils.c:1045
 #, c-format
 msgid "Failed to rename file “%s” to “%s”: g_rename() failed: %s"
 msgstr "파일 “%s”의 이름을 “%s”(으)로 바꾸는데 실패: g_rename() 실패: %s"
 
-#: glib/gfileutils.c:1175
+#: glib/gfileutils.c:1154
 #, c-format
 msgid "Failed to write file “%s”: write() failed: %s"
 msgstr "파일 “%s” 쓰기 실패: write() 실패: %s"
 
-#: glib/gfileutils.c:1196
+#: glib/gfileutils.c:1175
 #, c-format
 msgid "Failed to write file “%s”: fsync() failed: %s"
 msgstr "파일 “%s” 쓰기 실패: fsync() 실패: %s"
 
-#: glib/gfileutils.c:1357 glib/gfileutils.c:1772
+#: glib/gfileutils.c:1336 glib/gfileutils.c:1751
 #, c-format
 msgid "Failed to create file “%s”: %s"
 msgstr "파일 “%s” 만들기 실패: %s"
 
-#: glib/gfileutils.c:1402
+#: glib/gfileutils.c:1381
 #, c-format
 msgid "Existing file “%s” could not be removed: g_unlink() failed: %s"
 msgstr "기존의 “%s” 파일을 지울 수 없습니다: g_unlink() 실패: %s"
 
-#: glib/gfileutils.c:1737
+#: glib/gfileutils.c:1716
 #, c-format
 msgid "Template “%s” invalid, should not contain a “%s”"
 msgstr "“%s” 서식이 잘못되었습니다. “%s”이(가) 들어 있으면 안 됩니다"
 
-#: glib/gfileutils.c:1750
+#: glib/gfileutils.c:1729
 #, c-format
 msgid "Template “%s” doesn’t contain XXXXXX"
 msgstr "“%s” 서식에 XXXXXX가 없습니다"
 
-#: glib/gfileutils.c:2310 glib/gfileutils.c:2339
+#: glib/gfileutils.c:2289 glib/gfileutils.c:2318
 #, c-format
 msgid "Failed to read the symbolic link “%s”: %s"
 msgstr "심볼릭 링크 “%s” 읽기 실패: %s"
@@ -4955,15 +5002,15 @@ msgstr "일부 문자에서 채널 끝냄"
 msgid "Can’t do a raw read in g_io_channel_read_to_end"
 msgstr "g_io_channel_read_to_endi로 raw 읽기를 할 수 없습니다"
 
-#: glib/gkeyfile.c:790
+#: glib/gkeyfile.c:794
 msgid "Valid key file could not be found in search dirs"
 msgstr "검색 디렉터리 안에 올바른 키 파일이 없습니다"
 
-#: glib/gkeyfile.c:827
+#: glib/gkeyfile.c:831
 msgid "Not a regular file"
 msgstr "일반 파일이 아닙니다"
 
-#: glib/gkeyfile.c:1282
+#: glib/gkeyfile.c:1289
 #, c-format
 msgid ""
 "Key file contains line “%s” which is not a key-value pair, group, or comment"
@@ -4971,49 +5018,49 @@ msgstr ""
 "키 파일에 들어 있는 “%s” 줄은 키-값 쌍도 아니고, 그룹도 아니고, 주석도 아닙니"
 "다"
 
-#: glib/gkeyfile.c:1339
+#: glib/gkeyfile.c:1346
 #, c-format
 msgid "Invalid group name: %s"
 msgstr "잘못된 그룹 이름: %s"
 
-#: glib/gkeyfile.c:1361
+#: glib/gkeyfile.c:1370
 msgid "Key file does not start with a group"
 msgstr "키 파일이 그룹으로 시작하지 않습니다"
 
-#: glib/gkeyfile.c:1387
+#: glib/gkeyfile.c:1394
 #, c-format
-msgid "Invalid key name: %s"
-msgstr "잘못된 키 이름: %s"
+msgid "Invalid key name: %.*s"
+msgstr "잘못된 키 이름: %.*s"
 
-#: glib/gkeyfile.c:1414
+#: glib/gkeyfile.c:1422
 #, c-format
 msgid "Key file contains unsupported encoding “%s”"
 msgstr "키 파일에 지원하지 않는 “%s” 인코딩이 들어 있습니다"
 
-#: glib/gkeyfile.c:1663 glib/gkeyfile.c:1836 glib/gkeyfile.c:3289
-#: glib/gkeyfile.c:3353 glib/gkeyfile.c:3483 glib/gkeyfile.c:3615
-#: glib/gkeyfile.c:3761 glib/gkeyfile.c:3996 glib/gkeyfile.c:4063
+#: glib/gkeyfile.c:1677 glib/gkeyfile.c:1850 glib/gkeyfile.c:3297
+#: glib/gkeyfile.c:3361 glib/gkeyfile.c:3491 glib/gkeyfile.c:3623
+#: glib/gkeyfile.c:3769 glib/gkeyfile.c:4004 glib/gkeyfile.c:4071
 #, c-format
 msgid "Key file does not have group “%s”"
 msgstr "키 파일에 “%s” 그룹이 없습니다"
 
-#: glib/gkeyfile.c:1791
+#: glib/gkeyfile.c:1805
 #, c-format
 msgid "Key file does not have key “%s” in group “%s”"
 msgstr "키 파일에 있는 “%2$s” 그룹의 “%1$s” 키가 없습니다"
 
-#: glib/gkeyfile.c:1953 glib/gkeyfile.c:2069
+#: glib/gkeyfile.c:1967 glib/gkeyfile.c:2083
 #, c-format
 msgid "Key file contains key “%s” with value “%s” which is not UTF-8"
 msgstr "키 파일에 있는 “%s” 키와 “%s” 값은 UTF-8이 아닙니다"
 
-#: glib/gkeyfile.c:1973 glib/gkeyfile.c:2089 glib/gkeyfile.c:2531
+#: glib/gkeyfile.c:1987 glib/gkeyfile.c:2103 glib/gkeyfile.c:2542
 #, c-format
 msgid ""
 "Key file contains key “%s” which has a value that cannot be interpreted."
 msgstr "키 파일에 있는 “%s” 키의 값을 해석할 수 없습니다."
 
-#: glib/gkeyfile.c:2749 glib/gkeyfile.c:3118
+#: glib/gkeyfile.c:2757 glib/gkeyfile.c:3126
 #, c-format
 msgid ""
 "Key file contains key “%s” in group “%s” which has a value that cannot be "
@@ -5022,37 +5069,37 @@ msgstr ""
 "키 파일에 해석할 수 없는 값을 지닌 “%2$s” 그룹의 “%1$s” 키가 키 파일에 있습니"
 "다."
 
-#: glib/gkeyfile.c:2827 glib/gkeyfile.c:2904
+#: glib/gkeyfile.c:2835 glib/gkeyfile.c:2912
 #, c-format
 msgid "Key “%s” in group “%s” has value “%s” where %s was expected"
 msgstr ""
 "%4$s 값이 있어야 할 “%2$s” 그룹의 “%1$s” 키가 “%3$s” 값을 지니고 있습니다"
 
-#: glib/gkeyfile.c:4306
+#: glib/gkeyfile.c:4324
 msgid "Key file contains escape character at end of line"
 msgstr "키 파일의 줄 끝에 이스케이프 문자가 있습니다"
 
-#: glib/gkeyfile.c:4328
+#: glib/gkeyfile.c:4346
 #, c-format
 msgid "Key file contains invalid escape sequence “%s”"
 msgstr "키 파일에 잘못된 이스케이프 시퀀스 “%s”이(가) 들어 있습니다"
 
-#: glib/gkeyfile.c:4472
+#: glib/gkeyfile.c:4491
 #, c-format
 msgid "Value “%s” cannot be interpreted as a number."
 msgstr "값 “%s”을(를) 숫자로 해석할 수 없습니다."
 
-#: glib/gkeyfile.c:4486
+#: glib/gkeyfile.c:4505
 #, c-format
 msgid "Integer value “%s” out of range"
 msgstr "정수 값 “%s”이(가) 범위를 벗어났습니다"
 
-#: glib/gkeyfile.c:4519
+#: glib/gkeyfile.c:4538
 #, c-format
 msgid "Value “%s” cannot be interpreted as a float number."
 msgstr "값 “%s”을(를) 단정도 실수로 해석할 수 없습니다."
 
-#: glib/gkeyfile.c:4558
+#: glib/gkeyfile.c:4577
 #, c-format
 msgid "Value “%s” cannot be interpreted as a boolean."
 msgstr "값 “%s”을(를) 불리언 값으로 해석할 수 없습니다."
@@ -5340,7 +5387,7 @@ msgstr "옵션 읽는 중에 오류: %s"
 msgid "Missing argument for %s"
 msgstr "%s에 대한 인자가 빠졌습니다"
 
-#: glib/goption.c:2185
+#: glib/goption.c:2184
 #, c-format
 msgid "Unknown option %s"
 msgstr "알 수 없는 옵션 %s"
@@ -5715,151 +5762,161 @@ msgstr "“%s” 바꿀 문자열을 읽는 중 %lu번째 문자에서 오류가
 
 # g_shell_unquote()에 쓰임.  shell의 quoted text를 raw string으로 바꾸는 기능
 # FIXME: "quoted"라는 말을 어떻게 해야 할 것인가?
-#: glib/gshell.c:94
+#: glib/gshell.c:96
 msgid "Quoted text doesn’t begin with a quotation mark"
 msgstr "따옴표된 텍스트가 따옴표로 시작하지 않습니다"
 
 # FIXME: 위 참조, "quoted"
-#: glib/gshell.c:184
+#: glib/gshell.c:186
 msgid "Unmatched quotation mark in command line or other shell-quoted text"
 msgstr "명령줄에서 따옴표가 맞지 않거나 셸 따옴표된 텍스트가 또 있습니다"
 
-#: glib/gshell.c:580
+#: glib/gshell.c:592
 #, c-format
 msgid "Text ended just after a “\\” character. (The text was “%s”)"
 msgstr "텍스트가 “\\” 문자 다음에 끝났습니다. (텍스트는 “%s”입니다)"
 
-#: glib/gshell.c:587
+#: glib/gshell.c:599
 #, c-format
 msgid "Text ended before matching quote was found for %c. (The text was “%s”)"
 msgstr ""
 "텍스트가 %c에 대응되는 따옴표가 나타나기 전에 끝났습니다. (텍스트는 “%s”입니"
 "다)"
 
-#: glib/gshell.c:599
+#: glib/gshell.c:611
 msgid "Text was empty (or contained only whitespace)"
 msgstr "텍스트가 비어 있음(또는 공백만 들어 있음)"
 
-#: glib/gspawn.c:308
+#: glib/gspawn.c:310
 #, c-format
 msgid "Failed to read data from child process (%s)"
 msgstr "하위 프로세스에서 데이터를 읽기 실패 (%s)"
 
-#: glib/gspawn.c:458
+#: glib/gspawn.c:461
 #, c-format
 msgid "Unexpected error in reading data from a child process (%s)"
 msgstr "하위 프로세스에서 데이터를 읽는 중 예상치 못한 오류 (%s)"
 
-#: glib/gspawn.c:543
+#: glib/gspawn.c:546
 #, c-format
 msgid "Unexpected error in waitpid() (%s)"
 msgstr "waitpid()에서 예상치 못한 오류 (%s)"
 
-#: glib/gspawn.c:1152 glib/gspawn-win32.c:1407
+#: glib/gspawn.c:1168 glib/gspawn-win32.c:1426
 #, c-format
 msgid "Child process exited with code %ld"
 msgstr "하위 프로세스가 %ld 코드로 끝났습니다"
 
-#: glib/gspawn.c:1160
+#: glib/gspawn.c:1176
 #, c-format
 msgid "Child process killed by signal %ld"
 msgstr "하위 프로세스가 %ld 시그널로 죽었습니다"
 
-#: glib/gspawn.c:1167
+#: glib/gspawn.c:1183
 #, c-format
 msgid "Child process stopped by signal %ld"
 msgstr "하위 프로세스가 %ld 시그널로 멈췄습니다"
 
-#: glib/gspawn.c:1174
+#: glib/gspawn.c:1190
 #, c-format
 msgid "Child process exited abnormally"
 msgstr "하위 프로세스가 예기치 않게 끝났습니다"
 
-#: glib/gspawn.c:1793 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
+#: glib/gspawn.c:1881 glib/gspawn-win32.c:353 glib/gspawn-win32.c:361
 #, c-format
 msgid "Failed to read from child pipe (%s)"
 msgstr "하위 파이프로 부터 읽기 실패 (%s)"
 
-#: glib/gspawn.c:2095
+#: glib/gspawn.c:2241
 #, c-format
 msgid "Failed to spawn child process “%s” (%s)"
 msgstr "하위 프로세스 “%s”을(를) 실행하기 실패 (%s)"
 
-#: glib/gspawn.c:2212
+#: glib/gspawn.c:2358
 #, c-format
 msgid "Failed to fork (%s)"
 msgstr "포크 실패 (%s)"
 
-#: glib/gspawn.c:2372 glib/gspawn-win32.c:381
+#: glib/gspawn.c:2518 glib/gspawn-win32.c:384
 #, c-format
 msgid "Failed to change to directory “%s” (%s)"
 msgstr "디렉터리 “%s”(으)로 바꾸기 실패 (%s)"
 
-#: glib/gspawn.c:2382
+#: glib/gspawn.c:2528
 #, c-format
 msgid "Failed to execute child process “%s” (%s)"
 msgstr "하위 프로세스 “%s”을(를) 실행하기 실패 (%s)"
 
-#: glib/gspawn.c:2392
+#: glib/gspawn.c:2538
 #, c-format
-msgid "Failed to redirect output or input of child process (%s)"
-msgstr "í\95\98ì\9c\84 í\94\84ë¡\9cì\84¸ì\8a¤(%s)ì\9d\98 ì\9e\85ë ¥ ë\98\90ë\8a\94 ì¶\9cë ¥ì\9d\98 ë¦¬ë\8b¤ì\9d´ë \89í\8a¸ ì\8b¤í\8c¨"
+msgid "Failed to open file to remap file descriptor (%s)"
+msgstr "í\8c\8cì\9d¼ ë\94\94ì\8a¤í\81¬ë¦½í\84° ë¦¬ë§µí\95\98기 ì\9c\84í\95\9c í\8c\8cì\9d¼ ì\97´ê¸° ì\8b¤í\8c¨ (%s)"
 
-#: glib/gspawn.c:2401
+#: glib/gspawn.c:2546
+#, c-format
+msgid "Failed to duplicate file descriptor for child process (%s)"
+msgstr "하위 프로세스에 대한 파일 디스크립터 복제 실패 (%s)"
+
+#: glib/gspawn.c:2555
 #, c-format
 msgid "Failed to fork child process (%s)"
 msgstr "하위 프로세스(%s) 생성 실패"
 
-#: glib/gspawn.c:2409
+#: glib/gspawn.c:2563
+#, c-format
+msgid "Failed to close file descriptor for child process (%s)"
+msgstr "하위 프로세스에 대한 파일 디스크립터 닫기 실패 (%s)"
+
+#: glib/gspawn.c:2571
 #, c-format
 msgid "Unknown error executing child process “%s”"
 msgstr "하위 프로세스 “%s”을(를) 실행하는 중 알 수 없는 오류"
 
-#: glib/gspawn.c:2433
+#: glib/gspawn.c:2595
 #, c-format
 msgid "Failed to read enough data from child pid pipe (%s)"
 msgstr "하위 PID 파이프에서 필요한 데이터를 읽는데 실패했습니다 (%s)"
 
-#: glib/gspawn-win32.c:294
+#: glib/gspawn-win32.c:297
 msgid "Failed to read data from child process"
 msgstr "하위 프로세스에서 데이터 읽기 실패"
 
-#: glib/gspawn-win32.c:311
-#, c-format
-msgid "Failed to create pipe for communicating with child process (%s)"
-msgstr "하위 프로세스와 통신을 위한 파이프를 만드는 중 실패 (%s)"
-
-#: glib/gspawn-win32.c:387 glib/gspawn-win32.c:392 glib/gspawn-win32.c:511
+#: glib/gspawn-win32.c:390 glib/gspawn-win32.c:395 glib/gspawn-win32.c:519
 #, c-format
 msgid "Failed to execute child process (%s)"
 msgstr "하위 프로세스 실행 실패 (%s)"
 
-#: glib/gspawn-win32.c:461
+#: glib/gspawn-win32.c:400
+#, c-format
+msgid "Failed to dup() in child process (%s)"
+msgstr "하위 프로세스에서 dup() 실패 (%s)"
+
+#: glib/gspawn-win32.c:469
 #, c-format
 msgid "Invalid program name: %s"
 msgstr "잘못된 프로그램 이름: %s"
 
-#: glib/gspawn-win32.c:471 glib/gspawn-win32.c:779
+#: glib/gspawn-win32.c:479 glib/gspawn-win32.c:797
 #, c-format
 msgid "Invalid string in argument vector at %d: %s"
 msgstr "인자에서 잘못된 문자열, %d: %s"
 
-#: glib/gspawn-win32.c:482 glib/gspawn-win32.c:794
+#: glib/gspawn-win32.c:490 glib/gspawn-win32.c:813
 #, c-format
 msgid "Invalid string in environment: %s"
 msgstr "환경에서 잘못된 문자열: %s"
 
-#: glib/gspawn-win32.c:775
+#: glib/gspawn-win32.c:793
 #, c-format
 msgid "Invalid working directory: %s"
 msgstr "잘못된 현재 디렉터리: %s"
 
-#: glib/gspawn-win32.c:837
+#: glib/gspawn-win32.c:858
 #, c-format
 msgid "Failed to execute helper program (%s)"
 msgstr "도움 프로그램 실행 실패 (%s)"
 
-#: glib/gspawn-win32.c:1064
+#: glib/gspawn-win32.c:1086
 msgid ""
 "Unexpected error in g_io_channel_win32_poll() reading data from a child "
 "process"
@@ -5867,21 +5924,21 @@ msgstr ""
 "하위 프로세스에서 데이터를 읽는중 g_io_channel_win32_poll()에서 예기치 못한 "
 "오류"
 
-#: glib/gstrfuncs.c:3338 glib/gstrfuncs.c:3440
+#: glib/gstrfuncs.c:3351 glib/gstrfuncs.c:3453
 msgid "Empty string is not a number"
 msgstr "빈 문자열은 숫자가 아닙니다"
 
-#: glib/gstrfuncs.c:3362
+#: glib/gstrfuncs.c:3375
 #, c-format
 msgid "“%s” is not a signed number"
 msgstr "“%s”은(는) 부호 있는 숫자가 아닙니다"
 
-#: glib/gstrfuncs.c:3372 glib/gstrfuncs.c:3476
+#: glib/gstrfuncs.c:3385 glib/gstrfuncs.c:3489
 #, c-format
 msgid "Number “%s” is out of bounds [%s, %s]"
 msgstr "“%s” 숫자가 [%s, %s] 범위를 벗어납니다"
 
-#: glib/gstrfuncs.c:3466
+#: glib/gstrfuncs.c:3479
 #, c-format
 msgid "“%s” is not an unsigned number"
 msgstr "“%s”은(는) 부호 없는 숫자가 아닙니다"
@@ -5934,196 +5991,196 @@ msgstr "‘%s’ URI는 절대 URI가 아닙니다"
 msgid "URI ‘%s’ has no host component"
 msgstr "URI ‘%s’에 호스트 구성 요소가 없습니다"
 
-#: glib/guri.c:1435
+#: glib/guri.c:1460
 msgid "URI is not absolute, and no base URI was provided"
 msgstr "URI가 절대 URI가 아니고, 기준 URI를 제공하지 않았습니다"
 
-#: glib/guri.c:2213
+#: glib/guri.c:2238
 msgid "Missing ‘=’ and parameter value"
 msgstr "‘=’ 및 파라미터 값이 없습니다"
 
-#: glib/gutf8.c:817
+#: glib/gutf8.c:832
 msgid "Failed to allocate memory"
 msgstr "메모리를 할당하는데 실패했습니다"
 
-#: glib/gutf8.c:950
+#: glib/gutf8.c:965
 msgid "Character out of range for UTF-8"
 msgstr "UTF-8 문자 범위를 벗어났습니다"
 
-#: glib/gutf8.c:1051 glib/gutf8.c:1060 glib/gutf8.c:1190 glib/gutf8.c:1199
-#: glib/gutf8.c:1338 glib/gutf8.c:1435
+#: glib/gutf8.c:1067 glib/gutf8.c:1076 glib/gutf8.c:1206 glib/gutf8.c:1215
+#: glib/gutf8.c:1354 glib/gutf8.c:1451
 msgid "Invalid sequence in conversion input"
 msgstr "변환 입력 순서가 잘못되었습니다"
 
-#: glib/gutf8.c:1349 glib/gutf8.c:1446
+#: glib/gutf8.c:1365 glib/gutf8.c:1462
 msgid "Character out of range for UTF-16"
 msgstr "UTF-16 문자 범위를 벗어났습니다"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2727
+#: glib/gutils.c:2849
 #, c-format
 msgid "%.1f kB"
 msgstr "%.1f kB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2729
+#: glib/gutils.c:2851
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2731
+#: glib/gutils.c:2853
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2733
+#: glib/gutils.c:2855
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2735
+#: glib/gutils.c:2857
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2737
+#: glib/gutils.c:2859
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2741
+#: glib/gutils.c:2863
 #, c-format
 msgid "%.1f KiB"
 msgstr "%.1f KiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2743
+#: glib/gutils.c:2865
 #, c-format
 msgid "%.1f MiB"
 msgstr "%.1f MiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2745
+#: glib/gutils.c:2867
 #, c-format
 msgid "%.1f GiB"
 msgstr "%.1f GiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2747
+#: glib/gutils.c:2869
 #, c-format
 msgid "%.1f TiB"
 msgstr "%.1f TiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2749
+#: glib/gutils.c:2871
 #, c-format
 msgid "%.1f PiB"
 msgstr "%.1f PiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2751
+#: glib/gutils.c:2873
 #, c-format
 msgid "%.1f EiB"
 msgstr "%.1f EiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2755
+#: glib/gutils.c:2877
 #, c-format
 msgid "%.1f kb"
 msgstr "%.1f kb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2757
+#: glib/gutils.c:2879
 #, c-format
 msgid "%.1f Mb"
 msgstr "%.1f Mb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2759
+#: glib/gutils.c:2881
 #, c-format
 msgid "%.1f Gb"
 msgstr "%.1f Gb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2761
+#: glib/gutils.c:2883
 #, c-format
 msgid "%.1f Tb"
 msgstr "%.1f Tb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2763
+#: glib/gutils.c:2885
 #, c-format
 msgid "%.1f Pb"
 msgstr "%.1f Pb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2765
+#: glib/gutils.c:2887
 #, c-format
 msgid "%.1f Eb"
 msgstr "%.1f Eb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2769
+#: glib/gutils.c:2891
 #, c-format
 msgid "%.1f Kib"
 msgstr "%.1f Kib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2771
+#: glib/gutils.c:2893
 #, c-format
 msgid "%.1f Mib"
 msgstr "%.1f Mib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2773
+#: glib/gutils.c:2895
 #, c-format
 msgid "%.1f Gib"
 msgstr "%.1f Gib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2775
+#: glib/gutils.c:2897
 #, c-format
 msgid "%.1f Tib"
 msgstr "%.1f Tib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2777
+#: glib/gutils.c:2899
 #, c-format
 msgid "%.1f Pib"
 msgstr "%.1f Pib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2779
+#: glib/gutils.c:2901
 #, c-format
 msgid "%.1f Eib"
 msgstr "%.1f Eib"
 
-#: glib/gutils.c:2813 glib/gutils.c:2930
+#: glib/gutils.c:2935 glib/gutils.c:3052
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
 msgstr[0] "%u 바이트"
 
-#: glib/gutils.c:2817
+#: glib/gutils.c:2939
 #, c-format
 msgid "%u bit"
 msgid_plural "%u bits"
 msgstr[0] "%u 비트"
 
 #. Translators: the %s in "%s bytes" will always be replaced by a number.
-#: glib/gutils.c:2884
+#: glib/gutils.c:3006
 #, c-format
 msgid "%s byte"
 msgid_plural "%s bytes"
 msgstr[0] "%s 바이트"
 
 #. Translators: the %s in "%s bits" will always be replaced by a number.
-#: glib/gutils.c:2889
+#: glib/gutils.c:3011
 #, c-format
 msgid "%s bit"
 msgid_plural "%s bits"
@@ -6134,35 +6191,32 @@ msgstr[0] "%s 비트"
 #. * compatibility.  Users will not see this string unless a program is using this deprecated function.
 #. * Please translate as literally as possible.
 #.
-#: glib/gutils.c:2943
+#: glib/gutils.c:3065
 #, c-format
 msgid "%.1f KB"
 msgstr "%.1f KB"
 
-#: glib/gutils.c:2948
+#: glib/gutils.c:3070
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
-#: glib/gutils.c:2953
+#: glib/gutils.c:3075
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
-#: glib/gutils.c:2958
+#: glib/gutils.c:3080
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
-#: glib/gutils.c:2963
+#: glib/gutils.c:3085
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
-#: glib/gutils.c:2968
+#: glib/gutils.c:3090
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
-
-#~ msgid "Unable to load /var/lib/dbus/machine-id or /etc/machine-id: "
-#~ msgstr "/var/lib/dbus/machine-id나 /etc/machine-id를 읽어들일 수 없습니다:"
index 2173bde..bab6a0c 100644 (file)
--- a/po/lt.po
+++ b/po/lt.po
@@ -13,8 +13,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: lt\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/glib/issues\n"
-"POT-Creation-Date: 2022-03-07 09:11+0000\n"
-"PO-Revision-Date: 2022-03-07 18:06+0200\n"
+"POT-Creation-Date: 2022-03-22 15:19+0000\n"
+"PO-Revision-Date: 2022-03-22 21:16+0200\n"
 "Last-Translator: Aurimas Černius <aurisc4@gmail.com>\n"
 "Language-Team: Lietuvių <gnome-lt@lists.akl.lt>\n"
 "Language: lt\n"
@@ -26,6 +26,14 @@ msgstr ""
 "X-Generator: Gtranslator 40.0\n"
 "X-Project-Style: gnome\n"
 
+#: gio/gappinfo.c:333
+msgid "Setting default applications not supported yet"
+msgstr "Numatytųjų programų nustatymas dar nepalaikomas"
+
+#: gio/gappinfo.c:366
+msgid "Setting application as last used for type not supported yet"
+msgstr "Programos nustatymas kaip paskutinės naudotos dar nepalaikomas"
+
 #: gio/gapplication.c:500
 msgid "GApplication options"
 msgstr "GApplication parametrai"
@@ -48,7 +56,7 @@ msgid "Replace the running instance"
 msgstr "Pakeisti veikiančią"
 
 #: gio/gapplication-tool.c:45 gio/gapplication-tool.c:46 gio/gio-tool.c:227
-#: gio/gresource-tool.c:494 gio/gsettings-tool.c:572
+#: gio/gresource-tool.c:494 gio/gsettings-tool.c:584
 msgid "Print help"
 msgstr "Spausdinti pagalbą"
 
@@ -60,7 +68,7 @@ msgstr "[KOMANDA]"
 msgid "Print version"
 msgstr "Atspausdinti versiją"
 
-#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:578
+#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:590
 msgid "Print version information and exit"
 msgstr "Atspausdinti versijos informaciją ir išeiti"
 
@@ -122,8 +130,8 @@ msgstr "Komandą, kuriai atspausdinti detalią pagalbą"
 msgid "Application identifier in D-Bus format (eg: org.example.viewer)"
 msgstr "Programos identifikatorius D-Bus formatu (pvz.: org.example.viewer)"
 
-#: gio/gapplication-tool.c:74 gio/glib-compile-resources.c:738
-#: gio/glib-compile-resources.c:744 gio/glib-compile-resources.c:772
+#: gio/gapplication-tool.c:74 gio/glib-compile-resources.c:820
+#: gio/glib-compile-resources.c:826 gio/glib-compile-resources.c:855
 #: gio/gresource-tool.c:501 gio/gresource-tool.c:567
 msgid "FILE"
 msgstr "FAILAS"
@@ -149,7 +157,7 @@ msgstr "PARAMETRAS"
 msgid "Optional parameter to the action invocation, in GVariant format"
 msgstr "Nebūtinas parametras veiksmo iškvietimui, GVariant formatu"
 
-#: gio/gapplication-tool.c:98 gio/gresource-tool.c:532 gio/gsettings-tool.c:664
+#: gio/gapplication-tool.c:98 gio/gresource-tool.c:532 gio/gsettings-tool.c:676
 #, c-format
 msgid ""
 "Unknown command %s\n"
@@ -163,7 +171,7 @@ msgid "Usage:\n"
 msgstr "Naudojimas:\n"
 
 #: gio/gapplication-tool.c:116 gio/gresource-tool.c:557
-#: gio/gsettings-tool.c:699
+#: gio/gsettings-tool.c:711
 msgid "Arguments:\n"
 msgstr "Argumentai:\n"
 
@@ -280,7 +288,7 @@ msgstr "Srautas jau užvertas"
 msgid "Truncate not supported on base stream"
 msgstr "Trumpinimas sraute nepalaikomas"
 
-#: gio/gcancellable.c:319 gio/gdbusconnection.c:1873 gio/gdbusprivate.c:1416
+#: gio/gcancellable.c:319 gio/gdbusconnection.c:1857 gio/gdbusprivate.c:1418
 #: gio/gsimpleasyncresult.c:871 gio/gsimpleasyncresult.c:897
 #, c-format
 msgid "Operation was cancelled"
@@ -301,7 +309,7 @@ msgstr "Nepakanka paskirties vietos"
 #: gio/gcharsetconverter.c:342 gio/gdatainputstream.c:848
 #: gio/gdatainputstream.c:1266 glib/gconvert.c:449 glib/gconvert.c:879
 #: glib/giochannel.c:1573 glib/giochannel.c:1615 glib/giochannel.c:2470
-#: glib/gutf8.c:875 glib/gutf8.c:1328
+#: glib/gutf8.c:890 glib/gutf8.c:1344
 msgid "Invalid byte sequence in conversion input"
 msgstr "Klaidinga baitų seka keitimo įvedime"
 
@@ -311,7 +319,7 @@ msgstr "Klaidinga baitų seka keitimo įvedime"
 msgid "Error during conversion: %s"
 msgstr "Klaida keitimo metu: %s"
 
-#: gio/gcharsetconverter.c:445 gio/gsocket.c:1143
+#: gio/gcharsetconverter.c:445 gio/gsocket.c:1147
 msgid "Cancellable initialization not supported"
 msgstr "Atšaukiamas inicijavimas nepalaikomas"
 
@@ -325,37 +333,37 @@ msgstr "Keitimas iš koduotės „%s“ į koduotę „%s“ nepalaikomas"
 msgid "Could not open converter from “%s” to “%s”"
 msgstr "Nepavyko atverti keitiklio iš „%s“ į „%s“"
 
-#: gio/gcontenttype.c:454
+#: gio/gcontenttype.c:470
 #, c-format
 msgid "%s type"
 msgstr "%s tipas"
 
-#: gio/gcontenttype-win32.c:192
+#: gio/gcontenttype-win32.c:196
 msgid "Unknown type"
 msgstr "Nežinomas tipas"
 
-#: gio/gcontenttype-win32.c:194
+#: gio/gcontenttype-win32.c:198
 #, c-format
 msgid "%s filetype"
 msgstr "%s failo tipos"
 
-#: gio/gcredentials.c:323
+#: gio/gcredentials.c:335
 msgid "GCredentials contains invalid data"
 msgstr "GCredentials turi nekorektiškus duomenis"
 
-#: gio/gcredentials.c:383 gio/gcredentials.c:667
+#: gio/gcredentials.c:395 gio/gcredentials.c:686
 msgid "GCredentials is not implemented on this OS"
 msgstr "GCredentials nerealizuota šioje operacinėje sistemoje"
 
-#: gio/gcredentials.c:538 gio/gcredentials.c:556
+#: gio/gcredentials.c:550 gio/gcredentials.c:568
 msgid "There is no GCredentials support for your platform"
 msgstr "Jūsų platformoje nėra GCredentials palaikymo"
 
-#: gio/gcredentials.c:607
+#: gio/gcredentials.c:626
 msgid "GCredentials does not contain a process ID on this OS"
 msgstr "GCredentials neturi proceso ID šioje OS"
 
-#: gio/gcredentials.c:661
+#: gio/gcredentials.c:680
 msgid "Credentials spoofing is not possible on this OS"
 msgstr "Įgaliojimų apgavimas neįmanomas šioje operacinėje sistemoje"
 
@@ -363,17 +371,17 @@ msgstr "Įgaliojimų apgavimas neįmanomas šioje operacinėje sistemoje"
 msgid "Unexpected early end-of-stream"
 msgstr "Netikėta ankstyva srauto pabaiga"
 
-#: gio/gdbusaddress.c:159 gio/gdbusaddress.c:233 gio/gdbusaddress.c:322
+#: gio/gdbusaddress.c:162 gio/gdbusaddress.c:236 gio/gdbusaddress.c:325
 #, c-format
 msgid "Unsupported key “%s” in address entry “%s”"
 msgstr "Nepalaikomas raktas „%s“ adreso įvestyje „%s“"
 
-#: gio/gdbusaddress.c:172
+#: gio/gdbusaddress.c:175
 #, c-format
 msgid "Meaningless key/value pair combination in address entry “%s”"
 msgstr "Beprasmė rakto/reikšmės poros kombinacija adreso įvestyje „%s“"
 
-#: gio/gdbusaddress.c:181
+#: gio/gdbusaddress.c:184
 #, c-format
 msgid ""
 "Address “%s” is invalid (need exactly one of path, dir, tmpdir, or abstract "
@@ -382,28 +390,28 @@ msgstr ""
 "Adresas „%s“ nėra tinkamas (reikia įvesti vienintelį path, dir, tmpdir arba "
 "abstract raktą)"
 
-#: gio/gdbusaddress.c:248 gio/gdbusaddress.c:259 gio/gdbusaddress.c:274
-#: gio/gdbusaddress.c:337 gio/gdbusaddress.c:348
+#: gio/gdbusaddress.c:251 gio/gdbusaddress.c:262 gio/gdbusaddress.c:277
+#: gio/gdbusaddress.c:340 gio/gdbusaddress.c:351
 #, c-format
 msgid "Error in address “%s” — the “%s” attribute is malformed"
 msgstr "Klaida adrese „%s“ — neteisingai suformuotas atributas „%s“"
 
-#: gio/gdbusaddress.c:418 gio/gdbusaddress.c:682
+#: gio/gdbusaddress.c:421 gio/gdbusaddress.c:680
 #, c-format
 msgid "Unknown or unsupported transport “%s” for address “%s”"
 msgstr "Nežinomas arba nepalaikomas duomenų perdavimas „%s“ adresui „%s“"
 
-#: gio/gdbusaddress.c:462
+#: gio/gdbusaddress.c:465
 #, c-format
 msgid "Address element “%s” does not contain a colon (:)"
 msgstr "Adreso elementas „%s“ neturi dvitaškio (:)"
 
-#: gio/gdbusaddress.c:471
+#: gio/gdbusaddress.c:474
 #, c-format
 msgid "Transport name in address element “%s” must not be empty"
 msgstr "Transporto pavadinimas adreso elemente „%s“ negali būti tuščias"
 
-#: gio/gdbusaddress.c:492
+#: gio/gdbusaddress.c:495
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” does not contain an equal "
@@ -411,7 +419,7 @@ msgid ""
 msgstr ""
 "Rakto/reikšmės pora %d, „%s“, adreso elementas „%s“ neturi lygybės ženklo"
 
-#: gio/gdbusaddress.c:503
+#: gio/gdbusaddress.c:506
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” must not have an empty key"
@@ -419,7 +427,7 @@ msgstr ""
 "Rakto/reikšmės pora %d, „%s“, adreso elemente „%s“ negali turėti lygybės "
 "ženklo"
 
-#: gio/gdbusaddress.c:517
+#: gio/gdbusaddress.c:520
 #, c-format
 msgid ""
 "Error unescaping key or value in Key/Value pair %d, “%s”, in address element "
@@ -428,7 +436,7 @@ msgstr ""
 "Klaida šalinant kaitą rakte ar reikšmėje rakto/reikšmės poroje %d, „%s“ "
 "adreso elemente „%s“"
 
-#: gio/gdbusaddress.c:589
+#: gio/gdbusaddress.c:588
 #, c-format
 msgid ""
 "Error in address “%s” — the unix transport requires exactly one of the keys "
@@ -437,82 +445,82 @@ msgstr ""
 "Klaida adrese „%s“ - unix duomenų perdavimas reikalauja nustatyti vienintelį "
 "iš raktų 'path' arba 'abstract'"
 
-#: gio/gdbusaddress.c:625
+#: gio/gdbusaddress.c:623
 #, c-format
 msgid "Error in address “%s” — the host attribute is missing or malformed"
 msgstr ""
 "Klaida adrese „%s“ - pagrindinio kompiuterio atributas neįvestas arba blogai "
 "suformuotas"
 
-#: gio/gdbusaddress.c:639
+#: gio/gdbusaddress.c:637
 #, c-format
 msgid "Error in address “%s” — the port attribute is missing or malformed"
 msgstr ""
 "Klaida adrese „%s“ - prievado atributas neįvestas arba blogai suformuotas"
 
-#: gio/gdbusaddress.c:653
+#: gio/gdbusaddress.c:651
 #, c-format
 msgid "Error in address “%s” — the noncefile attribute is missing or malformed"
 msgstr ""
 "Klaida adrese „%s“ - laikino failo atributas neįvestas arba blogai "
 "suformuotas"
 
-#: gio/gdbusaddress.c:674
+#: gio/gdbusaddress.c:672
 msgid "Error auto-launching: "
 msgstr "Klaida automatiškai paleidžiant: "
 
-#: gio/gdbusaddress.c:727
+#: gio/gdbusaddress.c:725
 #, c-format
 msgid "Error opening nonce file “%s”: %s"
 msgstr "Klaida atveriant vienkartinio kodo failą „%s“: %s"
 
-#: gio/gdbusaddress.c:746
+#: gio/gdbusaddress.c:744
 #, c-format
 msgid "Error reading from nonce file “%s”: %s"
 msgstr "Klaida skaitant iš vienkartinio kodo failo „%s“: %s"
 
-#: gio/gdbusaddress.c:755
+#: gio/gdbusaddress.c:753
 #, c-format
 msgid "Error reading from nonce file “%s”, expected 16 bytes, got %d"
 msgstr ""
 "Klaida skaitant iš vienkartinio kodo failo „%s“, tikėtasi 16 baitų, gauta %d"
 
-#: gio/gdbusaddress.c:773
+#: gio/gdbusaddress.c:771
 #, c-format
 msgid "Error writing contents of nonce file “%s” to stream:"
 msgstr "Klaida rašant vienkartinio kodo failo turinį „%s“ į srautą:"
 
-#: gio/gdbusaddress.c:988
+#: gio/gdbusaddress.c:986
 msgid "The given address is empty"
 msgstr "Pateiktasis adresas yra tuščias"
 
-#: gio/gdbusaddress.c:1101
+#: gio/gdbusaddress.c:1099
 #, c-format
-msgid "Cannot spawn a message bus when setuid"
-msgstr "Negalima paleisti pranešimų magistralės kai vyksta setuid"
+msgid "Cannot spawn a message bus when AT_SECURE is set"
+msgstr "Negalima paleisti pranešimų magistralės kai nustatyta AT_SECURE"
 
-#: gio/gdbusaddress.c:1108
+#: gio/gdbusaddress.c:1106
 msgid "Cannot spawn a message bus without a machine-id: "
 msgstr "Negalima paleisti pranešimų magistralės be mašinos id: "
 
-#: gio/gdbusaddress.c:1115
+#: gio/gdbusaddress.c:1113
 #, c-format
 msgid "Cannot autolaunch D-Bus without X11 $DISPLAY"
 msgstr "Negalima automatiškai paleisti D-Bus be X11 $DISPLAY"
 
-#: gio/gdbusaddress.c:1157
+#: gio/gdbusaddress.c:1155
 #, c-format
 msgid "Error spawning command line “%s”: "
 msgstr "Klaida paleidžiant komandų eilutę „%s“: "
 
-#: gio/gdbusaddress.c:1226
+#: gio/gdbusaddress.c:1224
 #, c-format
 msgid "Cannot determine session bus address (not implemented for this OS)"
 msgstr ""
 "Nepavyko nustatyti sesijos magistralės adreso (nerealizuota šiai operacinei "
 "sistemai)"
 
-#: gio/gdbusaddress.c:1375 gio/gdbusconnection.c:7334
+#: gio/gdbusaddress.c:1373 gio/gdbusconnection.c:7318
 #, c-format
 msgid ""
 "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
@@ -521,7 +529,7 @@ msgstr ""
 "Nepavyko nustatyti magistralės adreso iš DBUS_STARTER_BUS_TYPE aplinkos "
 "kintamojo - nežinoma reikšmė „%s“"
 
-#: gio/gdbusaddress.c:1384 gio/gdbusconnection.c:7343
+#: gio/gdbusaddress.c:1382 gio/gdbusconnection.c:7327
 msgid ""
 "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
 "variable is not set"
@@ -529,7 +537,7 @@ msgstr ""
 "Nepavyko nustatyti magistralės adreso, kadangi DBUS_STARTER_BUS_TYPE "
 "aplinkos kintamasis nenustatytas"
 
-#: gio/gdbusaddress.c:1394
+#: gio/gdbusaddress.c:1392
 #, c-format
 msgid "Unknown bus type %d"
 msgstr "Nežinomas magistralės tipas %d"
@@ -558,12 +566,12 @@ msgstr "Naudotojų ID turi sutapti porininkui bei serveriui"
 msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
 msgstr "Atšaukta per GDBusAuthObserver::authorize-authenticated-peer"
 
-#: gio/gdbusauthmechanismsha1.c:298
+#: gio/gdbusauthmechanismsha1.c:300
 #, c-format
 msgid "Error when getting information for directory “%s”: %s"
 msgstr "Klaida gaunant informaciją apie katalogą „%s“: %s"
 
-#: gio/gdbusauthmechanismsha1.c:313
+#: gio/gdbusauthmechanismsha1.c:315
 #, c-format
 msgid ""
 "Permissions on directory “%s” are malformed. Expected mode 0700, got 0%o"
@@ -571,33 +579,33 @@ msgstr ""
 "Katalogo „%s“ leidimai yra suformuoti neteisingai. Tikėtasi mode 0700, gauta "
 "0%o"
 
-#: gio/gdbusauthmechanismsha1.c:346 gio/gdbusauthmechanismsha1.c:357
+#: gio/gdbusauthmechanismsha1.c:348 gio/gdbusauthmechanismsha1.c:359
 #, c-format
 msgid "Error creating directory “%s”: %s"
 msgstr "Klaida kuriant katalogą %s: %s"
 
-#: gio/gdbusauthmechanismsha1.c:359 gio/gfile.c:1062 gio/gfile.c:1300
-#: gio/gfile.c:1438 gio/gfile.c:1676 gio/gfile.c:1731 gio/gfile.c:1789
-#: gio/gfile.c:1873 gio/gfile.c:1930 gio/gfile.c:1994 gio/gfile.c:2049
-#: gio/gfile.c:3754 gio/gfile.c:3809 gio/gfile.c:4102 gio/gfile.c:4572
-#: gio/gfile.c:4983 gio/gfile.c:5068 gio/gfile.c:5158 gio/gfile.c:5255
-#: gio/gfile.c:5342 gio/gfile.c:5443 gio/gfile.c:8153 gio/gfile.c:8243
-#: gio/gfile.c:8327 gio/win32/gwinhttpfile.c:453
+#: gio/gdbusauthmechanismsha1.c:361 gio/gfile.c:1080 gio/gfile.c:1318
+#: gio/gfile.c:1456 gio/gfile.c:1694 gio/gfile.c:1749 gio/gfile.c:1807
+#: gio/gfile.c:1891 gio/gfile.c:1948 gio/gfile.c:2012 gio/gfile.c:2067
+#: gio/gfile.c:3772 gio/gfile.c:3912 gio/gfile.c:4205 gio/gfile.c:4675
+#: gio/gfile.c:5086 gio/gfile.c:5171 gio/gfile.c:5261 gio/gfile.c:5358
+#: gio/gfile.c:5445 gio/gfile.c:5546 gio/gfile.c:8375 gio/gfile.c:8465
+#: gio/gfile.c:8549 gio/win32/gwinhttpfile.c:453
 msgid "Operation not supported"
 msgstr "Operacija nepalaikoma"
 
-#: gio/gdbusauthmechanismsha1.c:402
+#: gio/gdbusauthmechanismsha1.c:404
 #, c-format
 msgid "Error opening keyring “%s” for reading: "
 msgstr "Klaida atveriant raktinę „%s“ skaitymui: "
 
-#: gio/gdbusauthmechanismsha1.c:425 gio/gdbusauthmechanismsha1.c:747
+#: gio/gdbusauthmechanismsha1.c:427 gio/gdbusauthmechanismsha1.c:769
 #, c-format
 msgid "Line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr ""
 "%d eilutė raktinės vietoje „%s“ su turiniu „%s“ yra suformuota neteisingai"
 
-#: gio/gdbusauthmechanismsha1.c:439 gio/gdbusauthmechanismsha1.c:761
+#: gio/gdbusauthmechanismsha1.c:441 gio/gdbusauthmechanismsha1.c:783
 #, c-format
 msgid ""
 "First token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -605,7 +613,7 @@ msgstr ""
 "Pirmoji leksema raktinės %d eilutės vietoje „%s“ su turiniu „%s“ yra "
 "suformuota neteisingai"
 
-#: gio/gdbusauthmechanismsha1.c:453 gio/gdbusauthmechanismsha1.c:775
+#: gio/gdbusauthmechanismsha1.c:455 gio/gdbusauthmechanismsha1.c:797
 #, c-format
 msgid ""
 "Second token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -613,158 +621,158 @@ msgstr ""
 "Antroji leksema raktinės %d eilutės vietoje „%s“ su turiniu „%s“ yra "
 "suformuota neteisingai"
 
-#: gio/gdbusauthmechanismsha1.c:477
+#: gio/gdbusauthmechanismsha1.c:479
 #, c-format
 msgid "Didn’t find cookie with id %d in the keyring at “%s”"
 msgstr "Nerastas slapukas su id %d raktinės vietoje „%s“"
 
-#: gio/gdbusauthmechanismsha1.c:523
+#: gio/gdbusauthmechanismsha1.c:536
 #, c-format
 msgid "Error creating lock file “%s”: %s"
 msgstr "Klaida kuriant rakinimo failą „%s“: %s"
 
-#: gio/gdbusauthmechanismsha1.c:587
+#: gio/gdbusauthmechanismsha1.c:609
 #, c-format
 msgid "Error deleting stale lock file “%s”: %s"
 msgstr "Klaida trinant nebegaliojantį rakinimo failą „%s“: %s"
 
-#: gio/gdbusauthmechanismsha1.c:626
+#: gio/gdbusauthmechanismsha1.c:648
 #, c-format
 msgid "Error closing (unlinked) lock file “%s”: %s"
 msgstr "Klaida užveriant (nesusietą) rakinimo failą „%s“: %s"
 
-#: gio/gdbusauthmechanismsha1.c:637
+#: gio/gdbusauthmechanismsha1.c:659
 #, c-format
 msgid "Error unlinking lock file “%s”: %s"
 msgstr "Klaida atsiejant rakinimo failą „%s“: %s"
 
-#: gio/gdbusauthmechanismsha1.c:714
+#: gio/gdbusauthmechanismsha1.c:736
 #, c-format
 msgid "Error opening keyring “%s” for writing: "
 msgstr "Klaida atveriant raktinę „%s“ rašymui: "
 
-#: gio/gdbusauthmechanismsha1.c:908
+#: gio/gdbusauthmechanismsha1.c:930
 #, c-format
 msgid "(Additionally, releasing the lock for “%s” also failed: %s) "
 msgstr "(Papildomai, užrakto atlaisvinimas „%s“ taip pat nepavyko: %s) "
 
-#: gio/gdbusconnection.c:604 gio/gdbusconnection.c:2418
+#: gio/gdbusconnection.c:588 gio/gdbusconnection.c:2402
 msgid "The connection is closed"
 msgstr "Ryšys yra užvertas"
 
-#: gio/gdbusconnection.c:1903
+#: gio/gdbusconnection.c:1887
 msgid "Timeout was reached"
 msgstr "Baigėsi laikas"
 
-#: gio/gdbusconnection.c:2541
+#: gio/gdbusconnection.c:2525
 msgid ""
 "Unsupported flags encountered when constructing a client-side connection"
 msgstr "Nepalaikomi požymiai aptikti konstruojant kliento pusės ryšį"
 
-#: gio/gdbusconnection.c:4269 gio/gdbusconnection.c:4623
+#: gio/gdbusconnection.c:4253 gio/gdbusconnection.c:4607
 #, c-format
 msgid ""
 "No such interface “org.freedesktop.DBus.Properties” on object at path %s"
 msgstr ""
 "Nėra sąsajos „org.freedesktop.DBus.Properties“ objektui, kurio kelias %s"
 
-#: gio/gdbusconnection.c:4414
+#: gio/gdbusconnection.c:4398
 #, c-format
 msgid "No such property “%s”"
 msgstr "Nėra savybės „%s“"
 
-#: gio/gdbusconnection.c:4426
+#: gio/gdbusconnection.c:4410
 #, c-format
 msgid "Property “%s” is not readable"
 msgstr "Savybė „%s“ yra neskaitoma"
 
-#: gio/gdbusconnection.c:4437
+#: gio/gdbusconnection.c:4421
 #, c-format
 msgid "Property “%s” is not writable"
 msgstr "Savybė „%s“ nėra rašoma"
 
-#: gio/gdbusconnection.c:4457
+#: gio/gdbusconnection.c:4441
 #, c-format
 msgid "Error setting property “%s”: Expected type “%s” but got “%s”"
 msgstr "Klaida nustatant savybę „%s“: tikėtasi tipo „%s“, bet gauta „%s“"
 
-#: gio/gdbusconnection.c:4562 gio/gdbusconnection.c:4777
-#: gio/gdbusconnection.c:6760
+#: gio/gdbusconnection.c:4546 gio/gdbusconnection.c:4761
+#: gio/gdbusconnection.c:6744
 #, c-format
 msgid "No such interface “%s”"
 msgstr "Nėra sąsajos „%s“"
 
-#: gio/gdbusconnection.c:4999 gio/gdbusconnection.c:7274
+#: gio/gdbusconnection.c:4983 gio/gdbusconnection.c:7258
 #, c-format
 msgid "No such interface “%s” on object at path %s"
 msgstr "Nėra sąsajos „%s“ objektui, kurio kelias %s"
 
-#: gio/gdbusconnection.c:5100
+#: gio/gdbusconnection.c:5084
 #, c-format
 msgid "No such method “%s”"
 msgstr "Nėra metodo „%s“"
 
-#: gio/gdbusconnection.c:5131
+#: gio/gdbusconnection.c:5115
 #, c-format
 msgid "Type of message, “%s”, does not match expected type “%s”"
 msgstr "Pranešimo tipas „%s“ neatitinka laukiamo tipo „%s“"
 
-#: gio/gdbusconnection.c:5334
+#: gio/gdbusconnection.c:5318
 #, c-format
 msgid "An object is already exported for the interface %s at %s"
 msgstr "Jau yra eksportuotas objektas sąsajai %s vietoje %s"
 
-#: gio/gdbusconnection.c:5561
+#: gio/gdbusconnection.c:5545
 #, c-format
 msgid "Unable to retrieve property %s.%s"
 msgstr "Nepavyko gauti savybės: %s.%s"
 
-#: gio/gdbusconnection.c:5617
+#: gio/gdbusconnection.c:5601
 #, c-format
 msgid "Unable to set property %s.%s"
 msgstr "Nepavyko nustatyti savybės: %s.%s"
 
-#: gio/gdbusconnection.c:5796
+#: gio/gdbusconnection.c:5780
 #, c-format
 msgid "Method “%s” returned type “%s”, but expected “%s”"
 msgstr "Metodas „%s“ grąžino tipą „%s“, bet laukta „%s“"
 
-#: gio/gdbusconnection.c:6872
+#: gio/gdbusconnection.c:6856
 #, c-format
 msgid "Method “%s” on interface “%s” with signature “%s” does not exist"
 msgstr "Metodas „%s“ sąsajoje „%s“ su signatūra „%s“ neegzistuoja"
 
-#: gio/gdbusconnection.c:6993
+#: gio/gdbusconnection.c:6977
 #, c-format
 msgid "A subtree is already exported for %s"
 msgstr "Pomedis %s jau yra eksportuotas"
 
-#: gio/gdbusconnection.c:7282
+#: gio/gdbusconnection.c:7266
 #, c-format
 msgid "Object does not exist at path “%s”"
 msgstr "Objekto kelyje „%s“ nėra"
 
-#: gio/gdbusmessage.c:1311
+#: gio/gdbusmessage.c:1301
 msgid "type is INVALID"
 msgstr "tipas yra NETINKAMAS"
 
-#: gio/gdbusmessage.c:1322
+#: gio/gdbusmessage.c:1312
 msgid "METHOD_CALL message: PATH or MEMBER header field is missing"
 msgstr "METHOD_CALL pranešimas: trūksta antraštės lauko PATH arba MEMBER"
 
-#: gio/gdbusmessage.c:1333
+#: gio/gdbusmessage.c:1323
 msgid "METHOD_RETURN message: REPLY_SERIAL header field is missing"
 msgstr "METHOD_RETURN pranešimas: trūksta REPLY_SERIAL antraštės"
 
-#: gio/gdbusmessage.c:1345
+#: gio/gdbusmessage.c:1335
 msgid "ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing"
 msgstr "ERROR pranešimas: antraštės lauke trūksta REPLY_SERIAL arba ERROR_NAME"
 
-#: gio/gdbusmessage.c:1358
+#: gio/gdbusmessage.c:1348
 msgid "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing"
 msgstr "SIGNAL pranešimas: trūksta antraštės lauko PATH, INTERFACE arba MEMBER"
 
-#: gio/gdbusmessage.c:1366
+#: gio/gdbusmessage.c:1356
 msgid ""
 "SIGNAL message: The PATH header field is using the reserved value /org/"
 "freedesktop/DBus/Local"
@@ -772,7 +780,7 @@ msgstr ""
 "SIGNAL pranešimas: antraštės laukas PATH naudoja rezervuotą reikšmę /org/"
 "freedesktop/DBus/Local"
 
-#: gio/gdbusmessage.c:1374
+#: gio/gdbusmessage.c:1364
 msgid ""
 "SIGNAL message: The INTERFACE header field is using the reserved value org."
 "freedesktop.DBus.Local"
@@ -780,7 +788,7 @@ msgstr ""
 "SIGNAL pranešimas: antraštės laukas INTERFACE naudoja rezervuotą reikšmę org."
 "freedesktop.DBus.Local"
 
-#: gio/gdbusmessage.c:1422 gio/gdbusmessage.c:1482
+#: gio/gdbusmessage.c:1412 gio/gdbusmessage.c:1472
 #, c-format
 msgid "Wanted to read %lu byte but only got %lu"
 msgid_plural "Wanted to read %lu bytes but only got %lu"
@@ -788,12 +796,12 @@ msgstr[0] "Norėta nuskaityti %lu baitą, bet gauta tik %lu"
 msgstr[1] "Norėta nuskaityti %lu baitus, bet gauta tik %lu"
 msgstr[2] "Norėta nuskaityti %lu baitų, bet gauta tik %lu"
 
-#: gio/gdbusmessage.c:1436
+#: gio/gdbusmessage.c:1426
 #, c-format
 msgid "Expected NUL byte after the string “%s” but found byte %d"
 msgstr "Tikėtasi NUL baito po simbolių eilutės „%s“, bet rastas baitas %d"
 
-#: gio/gdbusmessage.c:1455
+#: gio/gdbusmessage.c:1445
 #, c-format
 msgid ""
 "Expected valid UTF-8 string but found invalid bytes at byte offset %d "
@@ -802,21 +810,21 @@ msgstr ""
 "Tikėtasi teisingos UTF-8 eilutės, bet rasta neteisingų baitų poslinkiu %d "
 "(eilutės ilgis yra %d). Teisinga UTF-8 eilutė iki tos vietos buvo „%s“"
 
-#: gio/gdbusmessage.c:1519 gio/gdbusmessage.c:1795 gio/gdbusmessage.c:2006
+#: gio/gdbusmessage.c:1509 gio/gdbusmessage.c:1785 gio/gdbusmessage.c:1996
 msgid "Value nested too deeply"
 msgstr "Vertė yra per giliai"
 
-#: gio/gdbusmessage.c:1687
+#: gio/gdbusmessage.c:1677
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus object path"
 msgstr "Perskaityta reikšmė „%s“ nėra tinkamas D-Bus objekto kelias"
 
-#: gio/gdbusmessage.c:1711
+#: gio/gdbusmessage.c:1701
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature"
 msgstr "Perskaityta reikšmė „%s“ nėra tinkama D-Bus signatūra"
 
-#: gio/gdbusmessage.c:1762
+#: gio/gdbusmessage.c:1752
 #, c-format
 msgid ""
 "Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB)."
@@ -829,7 +837,7 @@ msgstr[1] ""
 msgstr[2] ""
 "Aptiktas %u baitų ilgio masyvas. Maksimalus ilgis yra 2<<26 baitų (64 MiB)."
 
-#: gio/gdbusmessage.c:1782
+#: gio/gdbusmessage.c:1772
 #, c-format
 msgid ""
 "Encountered array of type “a%c”, expected to have a length a multiple of %u "
@@ -838,23 +846,23 @@ msgstr ""
 "Aptiktas „a%c“ tipo masyvas, tikėtasi %u kartotinio baitų ilgio, bet rasta "
 "%u baitų ilgyje"
 
-#: gio/gdbusmessage.c:1936 gio/gdbusmessage.c:2655
+#: gio/gdbusmessage.c:1926 gio/gdbusmessage.c:2645
 msgid "Empty structures (tuples) are not allowed in D-Bus"
-msgstr "Tuščios struktūros (juginiai) D-Bus neleidžiamos"
+msgstr "Tuščios struktūros (junginiai) D-Bus neleidžiamos"
 
-#: gio/gdbusmessage.c:1990
+#: gio/gdbusmessage.c:1980
 #, c-format
 msgid "Parsed value “%s” for variant is not a valid D-Bus signature"
 msgstr "Perskaityta reikšmė „%s“ variantui nėra tinkama D-Bus signatūra"
 
-#: gio/gdbusmessage.c:2031
+#: gio/gdbusmessage.c:2021
 #, c-format
 msgid ""
 "Error deserializing GVariant with type string “%s” from the D-Bus wire format"
 msgstr ""
 "Klaida atstatant GVariant su tipo eilute „%s“ iš D-Bus telegramos formato"
 
-#: gio/gdbusmessage.c:2216
+#: gio/gdbusmessage.c:2206
 #, c-format
 msgid ""
 "Invalid endianness value. Expected 0x6c (“l”) or 0x42 (“B”) but found value "
@@ -863,29 +871,29 @@ msgstr ""
 "Netinkama baitų eiliškumo reikšmė. Tikėtasi 0x6c („l“) arba 0x42 („B“), bet "
 "rasta 0x%02x"
 
-#: gio/gdbusmessage.c:2235
+#: gio/gdbusmessage.c:2225
 #, c-format
 msgid "Invalid major protocol version. Expected 1 but found %d"
 msgstr "Netinkama pagrindinė protokolo versija. Tikėtasi 1, bet rasta %d"
 
-#: gio/gdbusmessage.c:2293 gio/gdbusmessage.c:2891
+#: gio/gdbusmessage.c:2283 gio/gdbusmessage.c:2881
 msgid "Signature header found but is not of type signature"
 msgstr "Rasta signatūros antraštė, bet ji nėra signatūros tipo"
 
-#: gio/gdbusmessage.c:2305
+#: gio/gdbusmessage.c:2295
 #, c-format
 msgid "Signature header with signature “%s” found but message body is empty"
 msgstr ""
 "Signatūros antraštė su signatūra „%s“ rasta, bet pranešimo pagrindinė dalis "
 "tuščia"
 
-#: gio/gdbusmessage.c:2320
+#: gio/gdbusmessage.c:2310
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature (for body)"
 msgstr ""
 "Perskaityta reikšmė „%s“ nėra tinkama D-Bus signatūra (pagrindinei daliai)"
 
-#: gio/gdbusmessage.c:2352
+#: gio/gdbusmessage.c:2342
 #, 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"
@@ -899,35 +907,35 @@ msgstr[2] ""
 "Nėra signatūros antraštės pranešime, bet pranešimo pagrindinė dalis yra %u "
 "baitų"
 
-#: gio/gdbusmessage.c:2362
+#: gio/gdbusmessage.c:2352
 msgid "Cannot deserialize message: "
 msgstr "Nepavyko atstatyti pranešimo: "
 
-#: gio/gdbusmessage.c:2708
+#: gio/gdbusmessage.c:2698
 #, c-format
 msgid ""
 "Error serializing GVariant with type string “%s” to the D-Bus wire format"
 msgstr ""
 "Klaida paverčiant GVariant su tipo eilute „%s“ į D-Bus telegramos formatą"
 
-#: gio/gdbusmessage.c:2845
+#: gio/gdbusmessage.c:2835
 #, c-format
 msgid ""
 "Number of file descriptors in message (%d) differs from header field (%d)"
 msgstr ""
 "Failo deskriptorių skaičius žinutėje (%d) skiriasi nuo antraštės lauko (%d)"
 
-#: gio/gdbusmessage.c:2853
+#: gio/gdbusmessage.c:2843
 msgid "Cannot serialize message: "
 msgstr "Nepavyko išsaugoti pranešimo: "
 
-#: gio/gdbusmessage.c:2906
+#: gio/gdbusmessage.c:2896
 #, c-format
 msgid "Message body has signature “%s” but there is no signature header"
 msgstr ""
 "Pranešimo pagrindinė dalis turi signatūrą „%s“, bet nėra signatūros antraštės"
 
-#: gio/gdbusmessage.c:2916
+#: gio/gdbusmessage.c:2906
 #, c-format
 msgid ""
 "Message body has type signature “%s” but signature in the header field is "
@@ -936,54 +944,54 @@ msgstr ""
 "Pranešimo pagrindinė dalis turi tipo signatūrą „%s“, bet signatūra antraštės "
 "lauke yra „%s“"
 
-#: gio/gdbusmessage.c:2932
+#: gio/gdbusmessage.c:2922
 #, c-format
 msgid "Message body is empty but signature in the header field is “(%s)”"
 msgstr ""
 "Pranešimo pagrindinė dalis yra tuščia, bet signatūra antraštės lauke yra "
 "„(%s)“"
 
-#: gio/gdbusmessage.c:3487
+#: gio/gdbusmessage.c:3477
 #, c-format
 msgid "Error return with body of type “%s”"
 msgstr "Klaidos grąžinimas su pagrindinės dalies tipu „%s“"
 
-#: gio/gdbusmessage.c:3495
+#: gio/gdbusmessage.c:3485
 msgid "Error return with empty body"
 msgstr "Klaidos grąžinimas su tuščia pagrindine dalimi"
 
-#: gio/gdbusprivate.c:2246
+#: gio/gdbusprivate.c:2185
 #, c-format
 msgid "(Type any character to close this window)\n"
 msgstr "(Spauskite bet kurį klavišą šiam langui užverti)\n"
 
-#: gio/gdbusprivate.c:2420
+#: gio/gdbusprivate.c:2371
 #, c-format
 msgid "Session dbus not running, and autolaunch failed"
 msgstr "Seanso dbus neveikia, automatinis paleidimas nepavyko"
 
-#: gio/gdbusprivate.c:2443
+#: gio/gdbusprivate.c:2394
 #, c-format
 msgid "Unable to get Hardware profile: %s"
 msgstr "Nepavyko gauti aparatūros profilio: %s"
 
 #. Translators: Both placeholders are file paths
-#: gio/gdbusprivate.c:2494
+#: gio/gdbusprivate.c:2445
 #, c-format
 msgid "Unable to load %s or %s: "
 msgstr "Nepavyko įkelti %s arba %s: "
 
-#: gio/gdbusproxy.c:1569
+#: gio/gdbusproxy.c:1573
 #, c-format
 msgid "Error calling StartServiceByName for %s: "
 msgstr "Klaida kviečiant StartServiceByName elementui %s: "
 
-#: gio/gdbusproxy.c:1592
+#: gio/gdbusproxy.c:1596
 #, c-format
 msgid "Unexpected reply %d from StartServiceByName(\"%s\") method"
 msgstr "Nelauktas atsakas %d iš StartServiceByName(\"%s\") metodo"
 
-#: gio/gdbusproxy.c:2699 gio/gdbusproxy.c:2834
+#: gio/gdbusproxy.c:2707 gio/gdbusproxy.c:2842
 #, c-format
 msgid ""
 "Cannot invoke method; proxy is for the well-known name %s without an owner, "
@@ -1039,66 +1047,66 @@ msgstr ""
 "\n"
 "Naudokite „%s KOMANDA --help“ kiekvienos komandos pagalbos gavimui.\n"
 
-#: gio/gdbus-tool.c:201 gio/gdbus-tool.c:273 gio/gdbus-tool.c:345
-#: gio/gdbus-tool.c:369 gio/gdbus-tool.c:859 gio/gdbus-tool.c:1236
-#: gio/gdbus-tool.c:1724
+#: gio/gdbus-tool.c:202 gio/gdbus-tool.c:274 gio/gdbus-tool.c:346
+#: gio/gdbus-tool.c:370 gio/gdbus-tool.c:860 gio/gdbus-tool.c:1245
+#: gio/gdbus-tool.c:1733
 #, c-format
 msgid "Error: %s\n"
 msgstr "Klaida: %s\n"
 
-#: gio/gdbus-tool.c:212 gio/gdbus-tool.c:286 gio/gdbus-tool.c:1740
+#: gio/gdbus-tool.c:213 gio/gdbus-tool.c:287 gio/gdbus-tool.c:1749
 #, c-format
 msgid "Error parsing introspection XML: %s\n"
 msgstr "Klaida skaitant introspekcijos XML: %s\n"
 
-#: gio/gdbus-tool.c:250
+#: gio/gdbus-tool.c:251
 #, c-format
 msgid "Error: %s is not a valid name\n"
 msgstr "Klaida: %s nėra tinkamas vardas\n"
 
-#: gio/gdbus-tool.c:255 gio/gdbus-tool.c:745 gio/gdbus-tool.c:1060
-#: gio/gdbus-tool.c:1890 gio/gdbus-tool.c:2130
+#: gio/gdbus-tool.c:256 gio/gdbus-tool.c:746 gio/gdbus-tool.c:1064
+#: gio/gdbus-tool.c:1899 gio/gdbus-tool.c:2139
 #, c-format
 msgid "Error: %s is not a valid object path\n"
 msgstr "Klaida: %s nėra tinkamas objekto kelias\n"
 
-#: gio/gdbus-tool.c:403
+#: gio/gdbus-tool.c:404
 msgid "Connect to the system bus"
 msgstr "Prisijungti prie sistemos magistralės"
 
-#: gio/gdbus-tool.c:404
+#: gio/gdbus-tool.c:405
 msgid "Connect to the session bus"
 msgstr "Prisijungti prie sesijos magistralės"
 
-#: gio/gdbus-tool.c:405
+#: gio/gdbus-tool.c:406
 msgid "Connect to given D-Bus address"
 msgstr "Prisijungti prie pateikto D-Bus adreso"
 
-#: gio/gdbus-tool.c:415
+#: gio/gdbus-tool.c:416
 msgid "Connection Endpoint Options:"
 msgstr "Ryšio pabaigos parametrai:"
 
-#: gio/gdbus-tool.c:416
+#: gio/gdbus-tool.c:417
 msgid "Options specifying the connection endpoint"
 msgstr "Parametrai, nurodantys ryšio pabaigą"
 
-#: gio/gdbus-tool.c:439
+#: gio/gdbus-tool.c:440
 #, c-format
 msgid "No connection endpoint specified"
 msgstr "Nėra nurodytos ryšio pabaigos"
 
-#: gio/gdbus-tool.c:449
+#: gio/gdbus-tool.c:450
 #, c-format
 msgid "Multiple connection endpoints specified"
 msgstr "Nurodytos kelio ryšio pabaigos"
 
-#: gio/gdbus-tool.c:522
+#: gio/gdbus-tool.c:523
 #, c-format
 msgid ""
 "Warning: According to introspection data, interface “%s” does not exist\n"
 msgstr "Perspėjimas: pagal introspekcijos duomenis, sąsaja „%s“ neegzistuoja\n"
 
-#: gio/gdbus-tool.c:531
+#: gio/gdbus-tool.c:532
 #, c-format
 msgid ""
 "Warning: According to introspection data, method “%s” does not exist on "
@@ -1107,160 +1115,164 @@ msgstr ""
 "Perspėjimas: pagal introspekcijos duomenis, metodas „%s“ neegzistuoja "
 "sąsajoje „%s“\n"
 
-#: gio/gdbus-tool.c:593
+#: gio/gdbus-tool.c:594
 msgid "Optional destination for signal (unique name)"
 msgstr "Nebūtinas signalo tikslas (unikalus vardas)"
 
-#: gio/gdbus-tool.c:594
+#: gio/gdbus-tool.c:595
 msgid "Object path to emit signal on"
 msgstr "Objekto, kuriame siunčiamas signalas, kelias"
 
-#: gio/gdbus-tool.c:595
+#: gio/gdbus-tool.c:596
 msgid "Signal and interface name"
 msgstr "Signalo ir sąsajos vardai"
 
-#: gio/gdbus-tool.c:628
+#: gio/gdbus-tool.c:629
 msgid "Emit a signal."
 msgstr "Siųsti signalą."
 
-#: gio/gdbus-tool.c:683 gio/gdbus-tool.c:997 gio/gdbus-tool.c:1827
-#: gio/gdbus-tool.c:2059 gio/gdbus-tool.c:2279
+#: gio/gdbus-tool.c:684 gio/gdbus-tool.c:1001 gio/gdbus-tool.c:1836
+#: gio/gdbus-tool.c:2068 gio/gdbus-tool.c:2288
 #, c-format
 msgid "Error connecting: %s\n"
 msgstr "Klaida prisijungiant: %s\n"
 
-#: gio/gdbus-tool.c:703
+#: gio/gdbus-tool.c:704
 #, c-format
 msgid "Error: %s is not a valid unique bus name.\n"
 msgstr "Klaida: %s nėra tinkamas unikalus magistralės pavadinimas.\n"
 
-#: gio/gdbus-tool.c:722 gio/gdbus-tool.c:1040 gio/gdbus-tool.c:1870
+#: gio/gdbus-tool.c:723 gio/gdbus-tool.c:1044 gio/gdbus-tool.c:1879
 msgid "Error: Object path is not specified\n"
 msgstr "Klaida: nenurodytas objekto kelias\n"
 
-#: gio/gdbus-tool.c:765
+#: gio/gdbus-tool.c:766
 msgid "Error: Signal name is not specified\n"
 msgstr "Klaida: nenurodytas signalo pavadinimas\n"
 
-#: gio/gdbus-tool.c:779
+#: gio/gdbus-tool.c:780
 #, c-format
 msgid "Error: Signal name “%s” is invalid\n"
 msgstr "Klaida: signalo pavadinimas „%s“ yra netinkamas\n"
 
-#: gio/gdbus-tool.c:791
+#: gio/gdbus-tool.c:792
 #, c-format
 msgid "Error: %s is not a valid interface name\n"
 msgstr "Klaida: %s nėra tinkamas sąsajos pavadinimas\n"
 
-#: gio/gdbus-tool.c:797
+#: gio/gdbus-tool.c:798
 #, c-format
 msgid "Error: %s is not a valid member name\n"
 msgstr "Klaida: %s nėra tinkamas nario pavadinimas\n"
 
 #. Use the original non-"parse-me-harder" error
-#: gio/gdbus-tool.c:834 gio/gdbus-tool.c:1172
+#: gio/gdbus-tool.c:835 gio/gdbus-tool.c:1176
 #, c-format
 msgid "Error parsing parameter %d: %s\n"
 msgstr "Klaida skaitant parametrą %d: %s\n"
 
-#: gio/gdbus-tool.c:866
+#: gio/gdbus-tool.c:867
 #, c-format
 msgid "Error flushing connection: %s\n"
 msgstr "Klaida išsiunčiant ryšį: %s\n"
 
-#: gio/gdbus-tool.c:893
+#: gio/gdbus-tool.c:895
 msgid "Destination name to invoke method on"
 msgstr "Tikslo pavadinimas metodo iškvietimui"
 
-#: gio/gdbus-tool.c:894
+#: gio/gdbus-tool.c:896
 msgid "Object path to invoke method on"
 msgstr "Objekto kelias metodo iškvietimui"
 
-#: gio/gdbus-tool.c:895
+#: gio/gdbus-tool.c:897
 msgid "Method and interface name"
 msgstr "Metodo ir sąsajos pavadinimai"
 
-#: gio/gdbus-tool.c:896
+#: gio/gdbus-tool.c:898
 msgid "Timeout in seconds"
 msgstr "Laiko limitas sekundėmis"
 
-#: gio/gdbus-tool.c:942
+#: gio/gdbus-tool.c:899
+msgid "Allow interactive authorization"
+msgstr "Rodyti interaktyvią autorizaciją"
+
+#: gio/gdbus-tool.c:946
 msgid "Invoke a method on a remote object."
 msgstr "Iškviesti metodą nutolusiame objekte."
 
-#: gio/gdbus-tool.c:1014 gio/gdbus-tool.c:1844 gio/gdbus-tool.c:2084
+#: gio/gdbus-tool.c:1018 gio/gdbus-tool.c:1853 gio/gdbus-tool.c:2093
 msgid "Error: Destination is not specified\n"
 msgstr "Klaida: nenurodytas tikslas\n"
 
-#: gio/gdbus-tool.c:1025 gio/gdbus-tool.c:1861 gio/gdbus-tool.c:2095
+#: gio/gdbus-tool.c:1029 gio/gdbus-tool.c:1870 gio/gdbus-tool.c:2104
 #, c-format
 msgid "Error: %s is not a valid bus name\n"
 msgstr "Klaida: %s nėra tinkamas magistralės pavadinimas\n"
 
-#: gio/gdbus-tool.c:1075
+#: gio/gdbus-tool.c:1079
 msgid "Error: Method name is not specified\n"
 msgstr "Klaida: nenurodytas metodo vardas\n"
 
-#: gio/gdbus-tool.c:1086
+#: gio/gdbus-tool.c:1090
 #, c-format
 msgid "Error: Method name “%s” is invalid\n"
 msgstr "Klaida: metodo vardas „%s“ yra netinkamas\n"
 
-#: gio/gdbus-tool.c:1164
+#: gio/gdbus-tool.c:1168
 #, c-format
 msgid "Error parsing parameter %d of type “%s”: %s\n"
 msgstr "Klaida skaitant parametrą %d, kurio tipas „%s“: %s\n"
 
-#: gio/gdbus-tool.c:1190
+#: gio/gdbus-tool.c:1194
 #, c-format
 msgid "Error adding handle %d: %s\n"
 msgstr "Klaida pridedant rankenėlę %d: %s\n"
 
-#: gio/gdbus-tool.c:1686
+#: gio/gdbus-tool.c:1695
 msgid "Destination name to introspect"
 msgstr "Tikslo vardas introspekcijai"
 
-#: gio/gdbus-tool.c:1687
+#: gio/gdbus-tool.c:1696
 msgid "Object path to introspect"
 msgstr "Objekto kelias introspekcijai"
 
-#: gio/gdbus-tool.c:1688
+#: gio/gdbus-tool.c:1697
 msgid "Print XML"
 msgstr "Spausdinti XML"
 
-#: gio/gdbus-tool.c:1689
+#: gio/gdbus-tool.c:1698
 msgid "Introspect children"
 msgstr "Nagrinėti vaiką"
 
-#: gio/gdbus-tool.c:1690
+#: gio/gdbus-tool.c:1699
 msgid "Only print properties"
 msgstr "Spausdinti tik savybes"
 
-#: gio/gdbus-tool.c:1779
+#: gio/gdbus-tool.c:1788
 msgid "Introspect a remote object."
 msgstr "Introspekcija nutolusiam objektui."
 
-#: gio/gdbus-tool.c:1985
+#: gio/gdbus-tool.c:1994
 msgid "Destination name to monitor"
 msgstr "Tikslo vardas stebėjimui"
 
-#: gio/gdbus-tool.c:1986
+#: gio/gdbus-tool.c:1995
 msgid "Object path to monitor"
 msgstr "Objekto kelias stebėjimui"
 
-#: gio/gdbus-tool.c:2011
+#: gio/gdbus-tool.c:2020
 msgid "Monitor a remote object."
 msgstr "Stebėti nutolusį objektą."
 
-#: gio/gdbus-tool.c:2069
+#: gio/gdbus-tool.c:2078
 msgid "Error: can’t monitor a non-message-bus connection\n"
 msgstr "Klaida: nepavyksta stebėti ne žinučių magistralės ryšio\n"
 
-#: gio/gdbus-tool.c:2193
+#: gio/gdbus-tool.c:2202
 msgid "Service to activate before waiting for the other one (well-known name)"
 msgstr "Aktyvuotina tarnyba prieš laukiant kitos (gerai žinomas pavadinimas)"
 
-#: gio/gdbus-tool.c:2196
+#: gio/gdbus-tool.c:2205
 msgid ""
 "Timeout to wait for before exiting with an error (seconds); 0 for no timeout "
 "(default)"
@@ -1268,65 +1280,70 @@ msgstr ""
 "Kiek laiko laukti prieš išeinant su klaida (sekundėmis); 0 reiškia neribotai "
 "(numatyta)"
 
-#: gio/gdbus-tool.c:2244
+#: gio/gdbus-tool.c:2253
 msgid "[OPTION…] BUS-NAME"
 msgstr "[PARAMETRAS…] MAGISTRALĖS-PAVADINIMAS"
 
-#: gio/gdbus-tool.c:2245
+#: gio/gdbus-tool.c:2254
 msgid "Wait for a bus name to appear."
 msgstr "Laukti, kol pasirodys magistralės pavadinimas."
 
-#: gio/gdbus-tool.c:2321
+#: gio/gdbus-tool.c:2330
 msgid "Error: A service to activate for must be specified.\n"
 msgstr ""
 "Klaida: reikia nurodyti aktyvuojamą tarnybą.\n"
 "\n"
 
-#: gio/gdbus-tool.c:2326
+#: gio/gdbus-tool.c:2335
 msgid "Error: A service to wait for must be specified.\n"
 msgstr "Klaida: turi būti nurodyta tarnyba, kurios laukti.\n"
 
-#: gio/gdbus-tool.c:2331
+#: gio/gdbus-tool.c:2340
 msgid "Error: Too many arguments.\n"
 msgstr "Klaida: per daug argumentų.\n"
 
-#: gio/gdbus-tool.c:2339 gio/gdbus-tool.c:2346
+#: gio/gdbus-tool.c:2348 gio/gdbus-tool.c:2355
 #, c-format
 msgid "Error: %s is not a valid well-known bus name.\n"
 msgstr "Klaida: %s nėra tinkamas gerai žinomas magistralės pavadinimas.\n"
 
-#: gio/gdesktopappinfo.c:2106 gio/gdesktopappinfo.c:4935
+#: gio/gdebugcontrollerdbus.c:358
+#, c-format
+msgid "Not authorized to change debug settings"
+msgstr "Neleidžiama keisti derinimo nuostatų"
+
+#: gio/gdesktopappinfo.c:2178 gio/gdesktopappinfo.c:5105
 msgid "Unnamed"
 msgstr "Nepavadinta"
 
-#: gio/gdesktopappinfo.c:2516
+#: gio/gdesktopappinfo.c:2588
 msgid "Desktop file didn’t specify Exec field"
 msgstr "Darbalaukio failas nenurodė Exec lauko"
 
-#: gio/gdesktopappinfo.c:2804
+#: gio/gdesktopappinfo.c:2896
 msgid "Unable to find terminal required for application"
 msgstr "Nerastas terminalas, reikalingas programai"
 
-#: gio/gdesktopappinfo.c:3455
+#: gio/gdesktopappinfo.c:3625
 #, c-format
 msgid "Can’t create user application configuration folder %s: %s"
 msgstr "Nepavyko sukurti naudotojo nustatymų aplanko %s: %s"
 
-#: gio/gdesktopappinfo.c:3459
+#: gio/gdesktopappinfo.c:3629
 #, c-format
 msgid "Can’t create user MIME configuration folder %s: %s"
 msgstr "Nepavyko sukurti naudotojo MIME nustatymų aplanko %s: %s"
 
-#: gio/gdesktopappinfo.c:3701 gio/gdesktopappinfo.c:3725
+#: gio/gdesktopappinfo.c:3871 gio/gdesktopappinfo.c:3895
 msgid "Application information lacks an identifier"
 msgstr "Programos informacijai trūksta identifikatoriaus"
 
-#: gio/gdesktopappinfo.c:3961
+#: gio/gdesktopappinfo.c:4131
 #, c-format
 msgid "Can’t create user desktop file %s"
 msgstr "Nepavyko sukurti naudotojo darbalaukio failo %s"
 
-#: gio/gdesktopappinfo.c:4097
+#: gio/gdesktopappinfo.c:4267
 #, c-format
 msgid "Custom definition for %s"
 msgstr "Specialus apibrėžimas %s"
@@ -1355,7 +1372,7 @@ msgstr "įrenginys nerealizuoja startavimo"
 msgid "drive doesn’t implement stop"
 msgstr "įrenginys nerealizuoja stabdymo"
 
-#: gio/gdtlsconnection.c:1153 gio/gtlsconnection.c:920
+#: gio/gdtlsconnection.c:1186 gio/gtlsconnection.c:955
 msgid "TLS backend does not implement TLS binding retrieval"
 msgstr "TLS realizacija nerealizuoja TLS susiejimų gavimo"
 
@@ -1396,73 +1413,73 @@ msgstr "Tikėtasi GEmblem skirto GEmblemedIcon"
 #. * trying to find the enclosing (user visible)
 #. * mount of a file, but none exists.
 #.
-#: gio/gfile.c:1561
+#: gio/gfile.c:1579
 msgid "Containing mount does not exist"
 msgstr "Tėvinis prijungimo taškas neegzistuoja"
 
-#: gio/gfile.c:2608 gio/glocalfile.c:2486
+#: gio/gfile.c:2626 gio/glocalfile.c:2486
 msgid "Can’t copy over directory"
 msgstr "Negalima kopijuoti ant aplanko viršaus"
 
-#: gio/gfile.c:2668
+#: gio/gfile.c:2686
 msgid "Can’t copy directory over directory"
 msgstr "Negalima kopijuoti aplanko ant aplanko"
 
-#: gio/gfile.c:2676
+#: gio/gfile.c:2694
 msgid "Target file exists"
 msgstr "Nurodytas failas jau egzistuoja"
 
-#: gio/gfile.c:2695
+#: gio/gfile.c:2713
 msgid "Can’t recursively copy directory"
 msgstr "Negalima rekursyviai kopijuoti aplanko"
 
-#: gio/gfile.c:2996
+#: gio/gfile.c:3014
 msgid "Splice not supported"
 msgstr "Skaidymas nepalaikomas"
 
-#: gio/gfile.c:3000
+#: gio/gfile.c:3018
 #, c-format
 msgid "Error splicing file: %s"
 msgstr "Klaida skaidant failą: %s"
 
-#: gio/gfile.c:3152
+#: gio/gfile.c:3170
 msgid "Copy (reflink/clone) between mounts is not supported"
 msgstr "Kopijavimas (reflink/clone) tarp prijungimo taškų nepalaikomas"
 
-#: gio/gfile.c:3156
+#: gio/gfile.c:3174
 msgid "Copy (reflink/clone) is not supported or invalid"
 msgstr "Kopijavimas (reflink/clone) nepalaikomas arba netinkamas"
 
-#: gio/gfile.c:3161
+#: gio/gfile.c:3179
 msgid "Copy (reflink/clone) is not supported or didn’t work"
 msgstr "Kopijavimas (reflink/clone) nepalaikomas arba nesuveikė"
 
-#: gio/gfile.c:3226
+#: gio/gfile.c:3244
 msgid "Can’t copy special file"
 msgstr "Negalima kopijuoti specialaus failo"
 
-#: gio/gfile.c:4035
+#: gio/gfile.c:4138
 msgid "Invalid symlink value given"
 msgstr "Netaisyklinga simbolinės nuorodos reikšmė"
 
-#: gio/gfile.c:4045 glib/gfileutils.c:2333
+#: gio/gfile.c:4148 glib/gfileutils.c:2333
 msgid "Symbolic links not supported"
 msgstr "Simbolinės nuorodos nepalaikomos"
 
-#: gio/gfile.c:4213
+#: gio/gfile.c:4316
 msgid "Trash not supported"
 msgstr "Šiukšlės nepalaikomos"
 
-#: gio/gfile.c:4325
+#: gio/gfile.c:4428
 #, c-format
 msgid "File names cannot contain “%c”"
 msgstr "Failų pavadinimuose negali būti '%c'"
 
-#: gio/gfile.c:6806 gio/gvolume.c:364
+#: gio/gfile.c:7028 gio/gvolume.c:364
 msgid "volume doesn’t implement mount"
 msgstr "tomas nepalaiko prijungimo"
 
-#: gio/gfile.c:6920 gio/gfile.c:6968
+#: gio/gfile.c:7142 gio/gfile.c:7190
 msgid "No application is registered as handling this file"
 msgstr "Nėra programos, priregistruotos kaip skaitančios šį failą"
 
@@ -1507,7 +1524,7 @@ msgstr "Trumpinimas įėjimo srauto nepalaikomas"
 msgid "Truncate not supported on stream"
 msgstr "Trumpinimas srauto nepalaikomas"
 
-#: gio/ghttpproxy.c:91 gio/gresolver.c:443 gio/gresolver.c:596
+#: gio/ghttpproxy.c:91 gio/gresolver.c:458 gio/gresolver.c:611
 #: glib/gconvert.c:1825
 msgid "Invalid hostname"
 msgstr "Klaidingas kompiuterio vardas"
@@ -1594,7 +1611,7 @@ msgid "Could not parse “%s” as IP address mask"
 msgstr "Nepavyko perskaityti „%s“ kaip IP adreso kaukės"
 
 #: gio/ginetsocketaddress.c:203 gio/ginetsocketaddress.c:220
-#: gio/gnativesocketaddress.c:109 gio/gunixsocketaddress.c:221
+#: gio/gnativesocketaddress.c:109 gio/gunixsocketaddress.c:228
 msgid "Not enough space for socket address"
 msgstr "Nepakanka vietos lizdo adresui"
 
@@ -2429,15 +2446,15 @@ msgstr "Klaida spaudžiant failą: %s"
 msgid "text may not appear inside <%s>"
 msgstr "tekstas negali būti viduje <%s>"
 
-#: gio/glib-compile-resources.c:737 gio/glib-compile-schemas.c:2172
+#: gio/glib-compile-resources.c:819 gio/glib-compile-schemas.c:2172
 msgid "Show program version and exit"
 msgstr "Parodyti programos versiją ir išeiti"
 
-#: gio/glib-compile-resources.c:738
+#: gio/glib-compile-resources.c:820
 msgid "Name of the output file"
 msgstr "Išvesties failo pavadinimas"
 
-#: gio/glib-compile-resources.c:739
+#: gio/glib-compile-resources.c:821
 msgid ""
 "The directories to load files referenced in FILE from (default: current "
 "directory)"
@@ -2445,56 +2462,60 @@ msgstr ""
 "Katalogai, iš kurių skaityti faile nurodytus failus (numatyta iš esamo "
 "katalogo)"
 
-#: gio/glib-compile-resources.c:739 gio/glib-compile-schemas.c:2173
+#: gio/glib-compile-resources.c:821 gio/glib-compile-schemas.c:2173
 #: gio/glib-compile-schemas.c:2202
 msgid "DIRECTORY"
 msgstr "KATALOGAS"
 
-#: gio/glib-compile-resources.c:740
+#: gio/glib-compile-resources.c:822
 msgid ""
 "Generate output in the format selected for by the target filename extension"
 msgstr "Generuoti išvestį formatu pagal pasirinkto tikslo failo plėtinį"
 
-#: gio/glib-compile-resources.c:741
+#: gio/glib-compile-resources.c:823
 msgid "Generate source header"
 msgstr "Generuoti šaltinio antraštę"
 
-#: gio/glib-compile-resources.c:742
+#: gio/glib-compile-resources.c:824
 msgid "Generate source code used to link in the resource file into your code"
 msgstr "Generuoti kodą, naudojamą išteklių failo įrišimui į jūsų kodą"
 
-#: gio/glib-compile-resources.c:743
+#: gio/glib-compile-resources.c:825
 msgid "Generate dependency list"
 msgstr "Generuoti priklausomybių sąrašą"
 
-#: gio/glib-compile-resources.c:744
+#: gio/glib-compile-resources.c:826
 msgid "Name of the dependency file to generate"
 msgstr "Generuojamo priklausomybių failo pavadinimas"
 
-#: gio/glib-compile-resources.c:745
+#: gio/glib-compile-resources.c:827
 msgid "Include phony targets in the generated dependency file"
 msgstr "Įtraukti į sugeneruotą priklausomybių failą netikras paskirtis"
 
-#: gio/glib-compile-resources.c:746
+#: gio/glib-compile-resources.c:828
 msgid "Don’t automatically create and register resource"
 msgstr "Automatiškai negeneruoti ir neregistruoti ištekliaus"
 
-#: gio/glib-compile-resources.c:747
+#: gio/glib-compile-resources.c:829
 msgid "Don’t export functions; declare them G_GNUC_INTERNAL"
 msgstr "Neeksportuoti funkcijų; deklaruoti jas G_GNUC_INTERNAL"
 
-#: gio/glib-compile-resources.c:748
+#: gio/glib-compile-resources.c:830
 msgid ""
 "Don’t embed resource data in the C file; assume it's linked externally "
 "instead"
 msgstr ""
 "Neįtraukti ištekliaus duomenų C faile; laikyti, kad jis susiejamas išoriškai"
 
-#: gio/glib-compile-resources.c:749
+#: gio/glib-compile-resources.c:831
 msgid "C identifier name used for the generated source code"
 msgstr "C identifikatoriaus vardas, naudojamas generuojamame kode"
 
-#: gio/glib-compile-resources.c:775
+#: gio/glib-compile-resources.c:832
+msgid "The target C compiler (default: the CC environment variable)"
+msgstr "Paskirties C kompiliatorius (numatyta: aplinkos kintamasis CC)"
+
+#: gio/glib-compile-resources.c:858
 msgid ""
 "Compile a resource specification into a resource file.\n"
 "Resource specification files have the extension .gresource.xml,\n"
@@ -2504,7 +2525,7 @@ msgstr ""
 "Resursų specifikacijos failai turi turėti plėtinį .gresource.xml,\n"
 "o resurso failas turi plėtinį gresource."
 
-#: gio/glib-compile-resources.c:797
+#: gio/glib-compile-resources.c:880
 msgid "You should give exactly one file name\n"
 msgstr "Turite nurodyti vienintelį failo pavadinimą\n"
 
@@ -3292,13 +3313,13 @@ msgstr "Klaida kuriant atsarginę kopiją: %s"
 msgid "Error renaming temporary file: %s"
 msgstr "Klaida pervadinant laikinąjį failą: %s"
 
-#: gio/glocalfileoutputstream.c:609 gio/glocalfileoutputstream.c:1237
+#: gio/glocalfileoutputstream.c:609 gio/glocalfileoutputstream.c:1239
 #, c-format
 msgid "Error truncating file: %s"
 msgstr "Klaida trumpinant failą: %s"
 
 #: gio/glocalfileoutputstream.c:662 gio/glocalfileoutputstream.c:907
-#: gio/glocalfileoutputstream.c:1218 gio/gsubprocess.c:226
+#: gio/glocalfileoutputstream.c:1220 gio/gsubprocess.c:229
 #, c-format
 msgid "Error opening file “%s”: %s"
 msgstr "Klaida atveriant failą %s: %s"
@@ -3320,7 +3341,7 @@ msgstr "Failas buvo pakeistas kitos programos"
 msgid "Error removing old file: %s"
 msgstr "Klaida ištrinant senąjį failą: %s"
 
-#: gio/gmemoryinputstream.c:474 gio/gmemoryoutputstream.c:772
+#: gio/gmemoryinputstream.c:474 gio/gmemoryoutputstream.c:762
 msgid "Invalid GSeekType supplied"
 msgstr "Netaisyklingas GSeekType"
 
@@ -3332,15 +3353,15 @@ msgstr "Netinkama pozicijos keitimo užklausa"
 msgid "Cannot truncate GMemoryInputStream"
 msgstr "Nepavyko sutrumpinti GMemoryInputStream"
 
-#: gio/gmemoryoutputstream.c:567
+#: gio/gmemoryoutputstream.c:568
 msgid "Memory output stream not resizable"
 msgstr "Atminties išvedimo srauto dydis nekeičiamas"
 
-#: gio/gmemoryoutputstream.c:583
+#: gio/gmemoryoutputstream.c:584
 msgid "Failed to resize memory output stream"
 msgstr "Nepavyko pakeisti atminties išvedimo srauto dydžio"
 
-#: gio/gmemoryoutputstream.c:673
+#: gio/gmemoryoutputstream.c:663
 msgid ""
 "Amount of memory required to process the write is larger than available "
 "address space"
@@ -3348,11 +3369,11 @@ msgstr ""
 "Atminties kiekis, reikalingas įrašymui apdoroti, netelpa į prieinamą adresų "
 "erdvę"
 
-#: gio/gmemoryoutputstream.c:782
+#: gio/gmemoryoutputstream.c:772
 msgid "Requested seek before the beginning of the stream"
 msgstr "Prašoma perkelti poziciją dar prieš srauto pradžią"
 
-#: gio/gmemoryoutputstream.c:797
+#: gio/gmemoryoutputstream.c:787
 msgid "Requested seek beyond the end of the stream"
 msgstr "Prašoma perkelti poziciją jau už srauto pabaigos"
 
@@ -3459,18 +3480,22 @@ msgstr "%s perduotų vektorių suma yra per didelė"
 msgid "Source stream is already closed"
 msgstr "Šaltinio srautas jau užvertas"
 
-#: gio/gresolver.c:386 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
+#. Translators: the first placeholder is a domain name, the
+#. * second is an error message
+#: gio/gresolver.c:401 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
+#: gio/gthreadedresolver.c:780 gio/gthreadedresolver.c:804
+#: gio/gthreadedresolver.c:829 gio/gthreadedresolver.c:844
 #, c-format
 msgid "Error resolving “%s”: %s"
 msgstr "Klaida surandant „%s“: %s"
 
 #. Translators: The placeholder is for a function name.
-#: gio/gresolver.c:455 gio/gresolver.c:615
+#: gio/gresolver.c:470 gio/gresolver.c:630
 #, c-format
 msgid "%s not implemented"
 msgstr "%s nerealizuota"
 
-#: gio/gresolver.c:984 gio/gresolver.c:1036
+#: gio/gresolver.c:999 gio/gresolver.c:1051
 msgid "Invalid domain"
 msgstr "Neteisinga sritis"
 
@@ -3585,7 +3610,7 @@ msgstr ""
 msgid "  SECTION   An (optional) elf section name\n"
 msgstr "  SEKCIJA   (Nebūtinas) elf sekcijos pavadinimas\n"
 
-#: gio/gresource-tool.c:565 gio/gsettings-tool.c:706
+#: gio/gresource-tool.c:565 gio/gsettings-tool.c:718
 msgid "  COMMAND   The (optional) command to explain\n"
 msgstr "  KOMANDA   Komanda (nebūtina) paaiškinimui\n"
 
@@ -3618,7 +3643,7 @@ msgstr "KELIAS"
 msgid "  PATH      A resource path\n"
 msgstr "  KELIAS    Ištekliaus kelias\n"
 
-#: gio/gsettings-tool.c:49 gio/gsettings-tool.c:70 gio/gsettings-tool.c:911
+#: gio/gsettings-tool.c:49 gio/gsettings-tool.c:70 gio/gsettings-tool.c:923
 #, c-format
 msgid "No such schema “%s”\n"
 msgstr "Nėra schemos „%s“\n"
@@ -3649,35 +3674,35 @@ msgstr "Kelias turi baigtis pasviruoju brūkšniu (/)\n"
 msgid "Path must not contain two adjacent slashes (//)\n"
 msgstr "Kelias neturi turėti dviejų gretimų pasvirųjų brūkšnių (//)\n"
 
-#: gio/gsettings-tool.c:541
+#: gio/gsettings-tool.c:553
 msgid "The provided value is outside of the valid range\n"
 msgstr "Pateikta reikšmė yra už leistinų ribų\n"
 
-#: gio/gsettings-tool.c:548
+#: gio/gsettings-tool.c:560
 msgid "The key is not writable\n"
 msgstr "Raktas nėra rašomas\n"
 
-#: gio/gsettings-tool.c:584
+#: gio/gsettings-tool.c:596
 msgid "List the installed (non-relocatable) schemas"
 msgstr "Išvardinti įdiegtas (neperkeliamas) schemas"
 
-#: gio/gsettings-tool.c:590
+#: gio/gsettings-tool.c:602
 msgid "List the installed relocatable schemas"
 msgstr "Išvardinti įdiegtas perkeliamas schemas"
 
-#: gio/gsettings-tool.c:596
+#: gio/gsettings-tool.c:608
 msgid "List the keys in SCHEMA"
 msgstr "Išvardinti raktus SCHEMOJE"
 
-#: gio/gsettings-tool.c:597 gio/gsettings-tool.c:603 gio/gsettings-tool.c:646
+#: gio/gsettings-tool.c:609 gio/gsettings-tool.c:615 gio/gsettings-tool.c:658
 msgid "SCHEMA[:PATH]"
 msgstr "SCHEMA[:KELIAS]"
 
-#: gio/gsettings-tool.c:602
+#: gio/gsettings-tool.c:614
 msgid "List the children of SCHEMA"
 msgstr "Išvardina vaikus SCHEMOJE"
 
-#: gio/gsettings-tool.c:608
+#: gio/gsettings-tool.c:620
 msgid ""
 "List keys and values, recursively\n"
 "If no SCHEMA is given, list all keys\n"
@@ -3685,48 +3710,48 @@ msgstr ""
 "Rekursyviai išvardinti raktus ir reikšmes\n"
 "Jei SCHEMA nepateikta, išvardinti visus raktus\n"
 
-#: gio/gsettings-tool.c:610
+#: gio/gsettings-tool.c:622
 msgid "[SCHEMA[:PATH]]"
 msgstr "[SCHEMA[:KELIAS]]"
 
-#: gio/gsettings-tool.c:615
+#: gio/gsettings-tool.c:627
 msgid "Get the value of KEY"
 msgstr "Gauti RAKTO reikšmę"
 
-#: gio/gsettings-tool.c:616 gio/gsettings-tool.c:622 gio/gsettings-tool.c:628
-#: gio/gsettings-tool.c:640 gio/gsettings-tool.c:652
+#: gio/gsettings-tool.c:628 gio/gsettings-tool.c:634 gio/gsettings-tool.c:640
+#: gio/gsettings-tool.c:652 gio/gsettings-tool.c:664
 msgid "SCHEMA[:PATH] KEY"
 msgstr "SCHEMOS[:KELIO] RAKTAS"
 
-#: gio/gsettings-tool.c:621
+#: gio/gsettings-tool.c:633
 msgid "Query the range of valid values for KEY"
 msgstr "Užklausti galimų reikšmių rėžių RAKTUI"
 
-#: gio/gsettings-tool.c:627
+#: gio/gsettings-tool.c:639
 msgid "Query the description for KEY"
 msgstr "Užklausti aprašymo RAKTUI"
 
-#: gio/gsettings-tool.c:633
+#: gio/gsettings-tool.c:645
 msgid "Set the value of KEY to VALUE"
 msgstr "Nustatyti RAKTO REIKŠMĘ"
 
-#: gio/gsettings-tool.c:634
+#: gio/gsettings-tool.c:646
 msgid "SCHEMA[:PATH] KEY VALUE"
 msgstr "SCHEMOS[:KELIO] RAKTO REIKŠMĖ"
 
-#: gio/gsettings-tool.c:639
+#: gio/gsettings-tool.c:651
 msgid "Reset KEY to its default value"
 msgstr "Nustatyti RAKTĄ į jo numatytąją reikšmę"
 
-#: gio/gsettings-tool.c:645
+#: gio/gsettings-tool.c:657
 msgid "Reset all keys in SCHEMA to their defaults"
 msgstr "Atstatyti visus SCHEMOS raktus į jų numatytasias reikšmes"
 
-#: gio/gsettings-tool.c:651
+#: gio/gsettings-tool.c:663
 msgid "Check if KEY is writable"
 msgstr "Patikrinti, ar RAKTAS yra rašomas"
 
-#: gio/gsettings-tool.c:657
+#: gio/gsettings-tool.c:669
 msgid ""
 "Monitor KEY for changes.\n"
 "If no KEY is specified, monitor all keys in SCHEMA.\n"
@@ -3736,11 +3761,11 @@ msgstr ""
 "Jei RAKTAS nenurodytas, stebėti visus raktus SCHEMOJE.\n"
 "Naudoti ^C stebėjimo nutraukimui.\n"
 
-#: gio/gsettings-tool.c:660
+#: gio/gsettings-tool.c:672
 msgid "SCHEMA[:PATH] [KEY]"
 msgstr "SCHEMA[:KELIAS] [RAKTAS]"
 
-#: gio/gsettings-tool.c:672
+#: gio/gsettings-tool.c:684
 msgid ""
 "Usage:\n"
 "  gsettings --version\n"
@@ -3788,7 +3813,7 @@ msgstr ""
 "Naudokite 'gsettings help KOMANDA' išsamesnei pagalbai gauti.\n"
 "\n"
 
-#: gio/gsettings-tool.c:696
+#: gio/gsettings-tool.c:708
 #, c-format
 msgid ""
 "Usage:\n"
@@ -3803,11 +3828,11 @@ msgstr ""
 "%s\n"
 "\n"
 
-#: gio/gsettings-tool.c:702
+#: gio/gsettings-tool.c:714
 msgid "  SCHEMADIR A directory to search for additional schemas\n"
 msgstr " SCHEMOSKAT Katalogas, kur ieškoti papildomų schemų\n"
 
-#: gio/gsettings-tool.c:710
+#: gio/gsettings-tool.c:722
 msgid ""
 "  SCHEMA    The name of the schema\n"
 "  PATH      The path, for relocatable schemas\n"
@@ -3815,212 +3840,212 @@ msgstr ""
 "  SCHEMA    Schemos pavadinimas\n"
 "  KELIAS    Kelias perkeliamoms schemoms\n"
 
-#: gio/gsettings-tool.c:715
+#: gio/gsettings-tool.c:727
 msgid "  KEY       The (optional) key within the schema\n"
 msgstr "  RAKTAS    Raktas schemoje (nebūtinas)\n"
 
-#: gio/gsettings-tool.c:719
+#: gio/gsettings-tool.c:731
 msgid "  KEY       The key within the schema\n"
 msgstr "  RAKTAS    Raktas schemoje\n"
 
-#: gio/gsettings-tool.c:723
+#: gio/gsettings-tool.c:735
 msgid "  VALUE     The value to set\n"
 msgstr "  REIKŠMĖ   Reikšmė, kurią nustatyti\n"
 
-#: gio/gsettings-tool.c:778
+#: gio/gsettings-tool.c:790
 #, c-format
 msgid "Could not load schemas from %s: %s\n"
 msgstr "Nepavyko atverti schemų iš „%s“: „%s“\n"
 
-#: gio/gsettings-tool.c:790
+#: gio/gsettings-tool.c:802
 msgid "No schemas installed\n"
 msgstr "Nėra įdiegtų schemų\n"
 
-#: gio/gsettings-tool.c:869
+#: gio/gsettings-tool.c:881
 msgid "Empty schema name given\n"
 msgstr "Pateiktas tuščias schemos pavadinimas\n"
 
-#: gio/gsettings-tool.c:924
+#: gio/gsettings-tool.c:936
 #, c-format
 msgid "No such key “%s”\n"
 msgstr "Nėra rakto „%s“\n"
 
-#: gio/gsocket.c:413
+#: gio/gsocket.c:417
 msgid "Invalid socket, not initialized"
 msgstr "Netinkamas lizdas, nepavyko inicijuoti"
 
-#: gio/gsocket.c:420
+#: gio/gsocket.c:424
 #, c-format
 msgid "Invalid socket, initialization failed due to: %s"
 msgstr "Netinkamas lizdas, nepavyko inicijuoti: %s"
 
-#: gio/gsocket.c:428
+#: gio/gsocket.c:432
 msgid "Socket is already closed"
 msgstr "Lizdas jau užvertas"
 
-#: gio/gsocket.c:443 gio/gsocket.c:3190 gio/gsocket.c:4420 gio/gsocket.c:4478
+#: gio/gsocket.c:447 gio/gsocket.c:3194 gio/gsocket.c:4427 gio/gsocket.c:4485
 msgid "Socket I/O timed out"
 msgstr "Lizdo I/O baigėsi laikas"
 
-#: gio/gsocket.c:578
+#: gio/gsocket.c:582
 #, c-format
 msgid "creating GSocket from fd: %s"
 msgstr "iš fd kuriamas GSocket: %s"
 
-#: gio/gsocket.c:607 gio/gsocket.c:671 gio/gsocket.c:678
+#: gio/gsocket.c:611 gio/gsocket.c:675 gio/gsocket.c:682
 #, c-format
 msgid "Unable to create socket: %s"
 msgstr "Nepavyko sukurti lizdo: %s"
 
-#: gio/gsocket.c:671
+#: gio/gsocket.c:675
 msgid "Unknown family was specified"
 msgstr "Nurodyta nežinoma šeima"
 
-#: gio/gsocket.c:678
+#: gio/gsocket.c:682
 msgid "Unknown protocol was specified"
 msgstr "Nurodytas nežinomas protokolas"
 
-#: gio/gsocket.c:1169
+#: gio/gsocket.c:1173
 #, c-format
 msgid "Cannot use datagram operations on a non-datagram socket."
 msgstr "Negalima naudoti duomenų paketo operacijų ne duomenų paketo lizdui."
 
-#: gio/gsocket.c:1186
+#: gio/gsocket.c:1190
 #, c-format
 msgid "Cannot use datagram operations on a socket with a timeout set."
 msgstr ""
 "Negalima naudoti duomenų paketo operacijų lizdui su laiko limito rinkiniu."
 
-#: gio/gsocket.c:1993
+#: gio/gsocket.c:1997
 #, c-format
 msgid "could not get local address: %s"
 msgstr "nepavyko gauto lokalaus adreso: %s"
 
-#: gio/gsocket.c:2039
+#: gio/gsocket.c:2043
 #, c-format
 msgid "could not get remote address: %s"
 msgstr "nepavyko gauti nuotolinio adreso: %s"
 
-#: gio/gsocket.c:2105
+#: gio/gsocket.c:2109
 #, c-format
 msgid "could not listen: %s"
 msgstr "nepavyko klausytis: %s"
 
-#: gio/gsocket.c:2209
+#: gio/gsocket.c:2213
 #, c-format
 msgid "Error binding to address %s: %s"
 msgstr "Susiejimo su adresu %s klaida: %s"
 
-#: gio/gsocket.c:2385 gio/gsocket.c:2422 gio/gsocket.c:2532 gio/gsocket.c:2557
-#: gio/gsocket.c:2620 gio/gsocket.c:2678 gio/gsocket.c:2696
+#: gio/gsocket.c:2389 gio/gsocket.c:2426 gio/gsocket.c:2536 gio/gsocket.c:2561
+#: gio/gsocket.c:2624 gio/gsocket.c:2682 gio/gsocket.c:2700
 #, c-format
 msgid "Error joining multicast group: %s"
 msgstr "Klaida prisijungian prie transliavimo grupės: %s"
 
-#: gio/gsocket.c:2386 gio/gsocket.c:2423 gio/gsocket.c:2533 gio/gsocket.c:2558
-#: gio/gsocket.c:2621 gio/gsocket.c:2679 gio/gsocket.c:2697
+#: gio/gsocket.c:2390 gio/gsocket.c:2427 gio/gsocket.c:2537 gio/gsocket.c:2562
+#: gio/gsocket.c:2625 gio/gsocket.c:2683 gio/gsocket.c:2701
 #, c-format
 msgid "Error leaving multicast group: %s"
 msgstr "Klaida paliekant transliavimo grupę: %s"
 
-#: gio/gsocket.c:2387
+#: gio/gsocket.c:2391
 msgid "No support for source-specific multicast"
 msgstr "Nėra resursams specifinio transliavimo palaikymo"
 
-#: gio/gsocket.c:2534
+#: gio/gsocket.c:2538
 msgid "Unsupported socket family"
 msgstr "Nepalaikoma lizdo šeima"
 
-#: gio/gsocket.c:2559
+#: gio/gsocket.c:2563
 msgid "source-specific not an IPv4 address"
 msgstr "ištekliams specifinis nėra IPv4 adresas"
 
-#: gio/gsocket.c:2583
+#: gio/gsocket.c:2587
 #, c-format
 msgid "Interface name too long"
 msgstr "Per ilgas sąsajos pavadinimas"
 
-#: gio/gsocket.c:2596 gio/gsocket.c:2646
+#: gio/gsocket.c:2600 gio/gsocket.c:2650
 #, c-format
 msgid "Interface not found: %s"
 msgstr "Sąsaja nerasta: %s"
 
-#: gio/gsocket.c:2622
+#: gio/gsocket.c:2626
 msgid "No support for IPv4 source-specific multicast"
 msgstr "Nėra IPv4 ištekliams specifinio transliavimo palaikymo"
 
-#: gio/gsocket.c:2680
+#: gio/gsocket.c:2684
 msgid "No support for IPv6 source-specific multicast"
 msgstr "Nėra palaikymo, skirto IPv4 ištekliams specifiniam transliavimui"
 
-#: gio/gsocket.c:2889
+#: gio/gsocket.c:2893
 #, c-format
 msgid "Error accepting connection: %s"
 msgstr "Klaida priimant ryšį: %s"
 
-#: gio/gsocket.c:3015
+#: gio/gsocket.c:3019
 msgid "Connection in progress"
 msgstr "Prisijungiama"
 
-#: gio/gsocket.c:3066
+#: gio/gsocket.c:3070
 msgid "Unable to get pending error: "
 msgstr "Nepavyko gauti laukiančios klaidos: "
 
-#: gio/gsocket.c:3255
+#: gio/gsocket.c:3259
 #, c-format
 msgid "Error receiving data: %s"
 msgstr "Klaida priimant duomenis: %s"
 
-#: gio/gsocket.c:3452
+#: gio/gsocket.c:3456
 #, c-format
 msgid "Error sending data: %s"
 msgstr "Klaida siunčiant duomenis: %s"
 
-#: gio/gsocket.c:3639
+#: gio/gsocket.c:3643
 #, c-format
 msgid "Unable to shutdown socket: %s"
 msgstr "Nepavyko išjungti lizdo: %s"
 
-#: gio/gsocket.c:3720
+#: gio/gsocket.c:3724
 #, c-format
 msgid "Error closing socket: %s"
 msgstr "Klaida užveriant lizdą: %s"
 
-#: gio/gsocket.c:4413
+#: gio/gsocket.c:4420
 #, c-format
 msgid "Waiting for socket condition: %s"
 msgstr "Laukiama lizdo būsenos: %s"
 
-#: gio/gsocket.c:4804 gio/gsocket.c:4820 gio/gsocket.c:4833
+#: gio/gsocket.c:4810 gio/gsocket.c:4826 gio/gsocket.c:4839
 #, c-format
 msgid "Unable to send message: %s"
 msgstr "Nepavyksta išsiųsti pranešimo: %s"
 
-#: gio/gsocket.c:4805 gio/gsocket.c:4821 gio/gsocket.c:4834
+#: gio/gsocket.c:4811 gio/gsocket.c:4827 gio/gsocket.c:4840
 msgid "Message vectors too large"
 msgstr "Pranešimų vektoriai per dideli"
 
-#: gio/gsocket.c:4850 gio/gsocket.c:4852 gio/gsocket.c:4999 gio/gsocket.c:5084
-#: gio/gsocket.c:5262 gio/gsocket.c:5302 gio/gsocket.c:5304
+#: gio/gsocket.c:4856 gio/gsocket.c:4858 gio/gsocket.c:5005 gio/gsocket.c:5090
+#: gio/gsocket.c:5268 gio/gsocket.c:5308 gio/gsocket.c:5310
 #, c-format
 msgid "Error sending message: %s"
 msgstr "Klaida siunčiant pranešimą: %s"
 
-#: gio/gsocket.c:5026
+#: gio/gsocket.c:5032
 msgid "GSocketControlMessage not supported on Windows"
 msgstr "„Windows“ sistemoje „GSocketControlMessage“ nepalaikoma"
 
-#: gio/gsocket.c:5495 gio/gsocket.c:5571 gio/gsocket.c:5797
+#: gio/gsocket.c:5505 gio/gsocket.c:5581 gio/gsocket.c:5807
 #, c-format
 msgid "Error receiving message: %s"
 msgstr "Klaida priimant pranešimą: %s"
 
-#: gio/gsocket.c:6070 gio/gsocket.c:6081 gio/gsocket.c:6127
+#: gio/gsocket.c:6090 gio/gsocket.c:6101 gio/gsocket.c:6164
 #, c-format
 msgid "Unable to read socket credentials: %s"
 msgstr "Nepavyko perskaityti lizdo įgaliojimų: %s"
 
-#: gio/gsocket.c:6136
+#: gio/gsocket.c:6173
 msgid "g_socket_get_credentials not implemented for this OS"
 msgstr "g_socket_get_credentials nerealizuota šiai operacinei sistemai"
 
@@ -4038,11 +4063,11 @@ msgstr "Nepavyko prisijungti prie %s: "
 msgid "Could not connect: "
 msgstr "Nepavyko prisijungti: "
 
-#: gio/gsocketclient.c:1162 gio/gsocketclient.c:1749
+#: gio/gsocketclient.c:1202 gio/gsocketclient.c:1793
 msgid "Proxying over a non-TCP connection is not supported."
 msgstr "Bandymas naudoti proxy ne per TCP ryšį nepalaikomas."
 
-#: gio/gsocketclient.c:1194 gio/gsocketclient.c:1778
+#: gio/gsocketclient.c:1234 gio/gsocketclient.c:1822
 #, c-format
 msgid "Proxy protocol “%s” is not supported."
 msgstr "Tarpinio serverio protokolas „%s“ nepalaikomas."
@@ -4143,7 +4168,7 @@ msgstr "SOCKSv5 proxy nepalaiko pateikto adreso tipo."
 msgid "Unknown SOCKSv5 proxy error."
 msgstr "Nežinoma SOCKSv5 proxy klaida."
 
-#: gio/gtestdbus.c:612 glib/gspawn-win32.c:311
+#: gio/gtestdbus.c:612 glib/gspawn-win32.c:314
 #, c-format
 msgid "Failed to create pipe for communicating with child process (%s)"
 msgstr ""
@@ -4169,44 +4194,67 @@ msgstr "Nerasta tinkamų adresų"
 msgid "Error reverse-resolving “%s”: %s"
 msgstr "Klaida atvirkščiai surandant „%s“: %s"
 
-#: gio/gthreadedresolver.c:676 gio/gthreadedresolver.c:755
-#: gio/gthreadedresolver.c:853 gio/gthreadedresolver.c:903
+#. Translators: the placeholder is a DNS record type, such as ‘MX’ or ‘SRV’
+#: gio/gthreadedresolver.c:550 gio/gthreadedresolver.c:572
+#: gio/gthreadedresolver.c:610 gio/gthreadedresolver.c:657
+#: gio/gthreadedresolver.c:686 gio/gthreadedresolver.c:698
+#, c-format
+msgid "Error parsing DNS %s record: malformed DNS packet"
+msgstr "Klaida analizuojant DNS %s įrašą: blogai suformuotas DNS paketas"
+
+#: gio/gthreadedresolver.c:756 gio/gthreadedresolver.c:893
+#: gio/gthreadedresolver.c:991 gio/gthreadedresolver.c:1041
 #, c-format
 msgid "No DNS record of the requested type for “%s”"
 msgstr "Nėra DNS įrašo prašomam tipui „%s“"
 
-#: gio/gthreadedresolver.c:681 gio/gthreadedresolver.c:858
+#: gio/gthreadedresolver.c:761 gio/gthreadedresolver.c:996
 #, c-format
 msgid "Temporarily unable to resolve “%s”"
 msgstr "Laikinai nepavyko surasti „%s“"
 
-#: gio/gthreadedresolver.c:686 gio/gthreadedresolver.c:863
-#: gio/gthreadedresolver.c:973
+#: gio/gthreadedresolver.c:766 gio/gthreadedresolver.c:1001
+#: gio/gthreadedresolver.c:1111
 #, c-format
 msgid "Error resolving “%s”"
 msgstr "Klaida surandant „%s“"
 
-#: gio/gtlscertificate.c:431
+#: gio/gthreadedresolver.c:780 gio/gthreadedresolver.c:804
+#: gio/gthreadedresolver.c:829 gio/gthreadedresolver.c:844
+msgid "Malformed DNS packet"
+msgstr "Blogai suformuotas DNS paketas"
+
+#: gio/gthreadedresolver.c:886
+#, c-format
+#| msgid "Failed to read from file “%s”: %s"
+msgid "Failed to parse DNS response for “%s”: "
+msgstr "Nepavyko išanalizuoti DNS atsakymo į „%s“: "
+
+#: gio/gtlscertificate.c:478
 msgid "No PEM-encoded private key found"
 msgstr "Nerastas PEM užkoduotas privatus raktas"
 
-#: gio/gtlscertificate.c:441
+#: gio/gtlscertificate.c:488
 msgid "Cannot decrypt PEM-encoded private key"
 msgstr "Nepavyko perskaityti PEM užkoduoto privataus rakto"
 
-#: gio/gtlscertificate.c:452
+#: gio/gtlscertificate.c:499
 msgid "Could not parse PEM-encoded private key"
 msgstr "Nepavyko perskaityti PEM užkoduoto privataus rakto"
 
-#: gio/gtlscertificate.c:479
+#: gio/gtlscertificate.c:526
 msgid "No PEM-encoded certificate found"
 msgstr "Nerastas PEM užkoduotas sertifikatas"
 
-#: gio/gtlscertificate.c:488
+#: gio/gtlscertificate.c:535
 msgid "Could not parse PEM-encoded certificate"
 msgstr "Nepavyko perskaityti PEM užkoduoto sertifikato"
 
-#: gio/gtlscertificate.c:844
+#: gio/gtlscertificate.c:796
+msgid "The current TLS backend does not support PKCS #12"
+msgstr "Dabartinė TLS realizacija nepalaiko PKCS #12"
+
+#: gio/gtlscertificate.c:1013
 msgid "This GTlsBackend does not support creating PKCS #11 certificates"
 msgstr "GTlsBackend nepalaiko PKCS #11 liudijimų kūrimo"
 
@@ -4232,7 +4280,11 @@ msgstr ""
 msgid "The password entered is incorrect."
 msgstr "Įvestas slaptažodis yra neteisingas."
 
-#: gio/gunixconnection.c:166 gio/gunixconnection.c:579
+#: gio/gunixconnection.c:125
+msgid "Sending FD is not supported"
+msgstr "FD siuntimas nepalaikomas"
+
+#: gio/gunixconnection.c:178 gio/gunixconnection.c:596
 #, c-format
 msgid "Expecting 1 control message, got %d"
 msgid_plural "Expecting 1 control message, got %d"
@@ -4240,11 +4292,11 @@ msgstr[0] "Tikėtasi 1 kontrolinio pranešimo, bet sulaukta %d"
 msgstr[1] "Tikėtasi 1 kontrolinio pranešimo, bet sulaukta %d"
 msgstr[2] "Tikėtasi 1 kontrolinio pranešimo, bet sulaukta %d"
 
-#: gio/gunixconnection.c:182 gio/gunixconnection.c:591
+#: gio/gunixconnection.c:194 gio/gunixconnection.c:608
 msgid "Unexpected type of ancillary data"
 msgstr "Netikėtas tarnybinių duomenų tipas"
 
-#: gio/gunixconnection.c:200
+#: gio/gunixconnection.c:212
 #, c-format
 msgid "Expecting one fd, but got %d\n"
 msgid_plural "Expecting one fd, but got %d\n"
@@ -4252,37 +4304,41 @@ msgstr[0] "Tikėtasi vieno fd, bet sulaukta %d\n"
 msgstr[1] "Tikėtasi vieno fd, bet sulaukta %d\n"
 msgstr[2] "Tikėtasi vieno fd, bet sulaukta %d\n"
 
-#: gio/gunixconnection.c:219
+#: gio/gunixconnection.c:231
 msgid "Received invalid fd"
 msgstr "Gautas netinkamas fd"
 
-#: gio/gunixconnection.c:363
+#: gio/gunixconnection.c:238
+msgid "Receiving FD is not supported"
+msgstr "FD gavimas nepalaikomas"
+
+#: gio/gunixconnection.c:380
 msgid "Error sending credentials: "
 msgstr "Klaida siunčiant įgaliojimus: "
 
-#: gio/gunixconnection.c:520
+#: gio/gunixconnection.c:537
 #, c-format
 msgid "Error checking if SO_PASSCRED is enabled for socket: %s"
 msgstr "Klaida tikrinant, ar SO_PASSCRED įjungta lizdui: %s"
 
-#: gio/gunixconnection.c:536
+#: gio/gunixconnection.c:553
 #, c-format
 msgid "Error enabling SO_PASSCRED: %s"
 msgstr "Klaida leidžiant SO_PASSCRED: %s"
 
-#: gio/gunixconnection.c:565
+#: gio/gunixconnection.c:582
 msgid ""
 "Expecting to read a single byte for receiving credentials but read zero bytes"
 msgstr ""
 "Tikimasi nustatyti vienintelį baitą įgaliojimų gavimui, bet nuskaityta nulis "
 "baitų"
 
-#: gio/gunixconnection.c:605
+#: gio/gunixconnection.c:622
 #, c-format
 msgid "Not expecting control message, but got %d"
 msgstr "Nesitikėta kontrolinio pranešimo, bet sulaukta %d"
 
-#: gio/gunixconnection.c:630
+#: gio/gunixconnection.c:647
 #, c-format
 msgid "Error while disabling SO_PASSCRED: %s"
 msgstr "Klaida išjungiant SO_PASSCRED: %s"
@@ -4298,7 +4354,7 @@ msgstr "Klaida skaitant failą: %s"
 msgid "Error closing file descriptor: %s"
 msgstr "Klaida užveriant failą: %s"
 
-#: gio/gunixmounts.c:2785 gio/gunixmounts.c:2838
+#: gio/gunixmounts.c:2809 gio/gunixmounts.c:2862
 msgid "Filesystem root"
 msgstr "Failų sistemos šaknis"
 
@@ -4309,7 +4365,7 @@ msgstr "Failų sistemos šaknis"
 msgid "Error writing to file descriptor: %s"
 msgstr "Klaida rašant į failą: %s"
 
-#: gio/gunixsocketaddress.c:244
+#: gio/gunixsocketaddress.c:251
 msgid "Abstract UNIX domain socket addresses not supported on this system"
 msgstr "Abstrakčiųjų UNIX srities lizdų adresai šioje sistemoje nepalaikomi"
 
@@ -4459,8 +4515,8 @@ msgstr "Nepavyko išskleisti vykdomosios eilutės „%s“ su URI „%s“"
 msgid "Unrepresentable character in conversion input"
 msgstr "Neatvaizduojamas simbolis keitimo įvestyje"
 
-#: glib/gconvert.c:495 glib/gutf8.c:871 glib/gutf8.c:1083 glib/gutf8.c:1220
-#: glib/gutf8.c:1324
+#: glib/gconvert.c:495 glib/gutf8.c:886 glib/gutf8.c:1099 glib/gutf8.c:1236
+#: glib/gutf8.c:1340
 msgid "Partial character sequence at end of input"
 msgstr "Nepilna simbolio seka įvedimo pabaigoje"
 
@@ -5024,15 +5080,15 @@ msgstr "Kanalas pasibaigia nepilnu simboliu"
 msgid "Can’t do a raw read in g_io_channel_read_to_end"
 msgstr "Negalima vykdyti tiesioginio skaitymo iš g_io_channel_read_to_end"
 
-#: glib/gkeyfile.c:791
+#: glib/gkeyfile.c:794
 msgid "Valid key file could not be found in search dirs"
 msgstr "Paieškos aplankuose nepavyko rasti tinkamo raktų failo"
 
-#: glib/gkeyfile.c:828
+#: glib/gkeyfile.c:831
 msgid "Not a regular file"
 msgstr "Nėra paprastas failas"
 
-#: glib/gkeyfile.c:1283
+#: glib/gkeyfile.c:1289
 #, c-format
 msgid ""
 "Key file contains line “%s” which is not a key-value pair, group, or comment"
@@ -5040,49 +5096,49 @@ msgstr ""
 "Raktų faile yra eilutė „%s“, kuri nėra raktas-reikšmė pora, grupė ar "
 "komentaras"
 
-#: glib/gkeyfile.c:1340
+#: glib/gkeyfile.c:1346
 #, c-format
 msgid "Invalid group name: %s"
 msgstr "Netinkamas grupės pavadinimas: %s"
 
-#: glib/gkeyfile.c:1362
+#: glib/gkeyfile.c:1370
 msgid "Key file does not start with a group"
 msgstr "Raktų failas neprasideda grupe"
 
-#: glib/gkeyfile.c:1388
+#: glib/gkeyfile.c:1394
 #, c-format
-msgid "Invalid key name: %s"
-msgstr "Netinkamas rakto pavadinimas: %s"
+msgid "Invalid key name: %.*s"
+msgstr "Netinkamas rakto pavadinimas: %.*s"
 
-#: glib/gkeyfile.c:1415
+#: glib/gkeyfile.c:1422
 #, c-format
 msgid "Key file contains unsupported encoding “%s”"
 msgstr "Raktų faile yra nepalaikoma koduotė „%s“"
 
-#: glib/gkeyfile.c:1664 glib/gkeyfile.c:1837 glib/gkeyfile.c:3287
-#: glib/gkeyfile.c:3351 glib/gkeyfile.c:3481 glib/gkeyfile.c:3613
-#: glib/gkeyfile.c:3759 glib/gkeyfile.c:3994 glib/gkeyfile.c:4061
+#: glib/gkeyfile.c:1677 glib/gkeyfile.c:1850 glib/gkeyfile.c:3297
+#: glib/gkeyfile.c:3361 glib/gkeyfile.c:3491 glib/gkeyfile.c:3623
+#: glib/gkeyfile.c:3769 glib/gkeyfile.c:4004 glib/gkeyfile.c:4071
 #, c-format
 msgid "Key file does not have group “%s”"
 msgstr "Raktų failas neturi grupės „%s“"
 
-#: glib/gkeyfile.c:1792
+#: glib/gkeyfile.c:1805
 #, c-format
 msgid "Key file does not have key “%s” in group “%s”"
 msgstr "Raktų faile nėra rakto „%s“ grupėje „%s“"
 
-#: glib/gkeyfile.c:1954 glib/gkeyfile.c:2070
+#: glib/gkeyfile.c:1967 glib/gkeyfile.c:2083
 #, c-format
 msgid "Key file contains key “%s” with value “%s” which is not UTF-8"
 msgstr "Raktų faile yra raktas „%s“ su reikšme „%s“, kuri nėra UTF-8"
 
-#: glib/gkeyfile.c:1974 glib/gkeyfile.c:2090 glib/gkeyfile.c:2529
+#: glib/gkeyfile.c:1987 glib/gkeyfile.c:2103 glib/gkeyfile.c:2542
 #, c-format
 msgid ""
 "Key file contains key “%s” which has a value that cannot be interpreted."
 msgstr "Raktų faile yra raktas „%s“, turintis nesuprantamą reikšmę."
 
-#: glib/gkeyfile.c:2747 glib/gkeyfile.c:3116
+#: glib/gkeyfile.c:2757 glib/gkeyfile.c:3126
 #, c-format
 msgid ""
 "Key file contains key “%s” in group “%s” which has a value that cannot be "
@@ -5091,37 +5147,37 @@ msgstr ""
 "Raktų faile yra raktas „%s“ grupėje „%s“, kuriame yra reikšmė, kurios "
 "negalima suprasti."
 
-#: glib/gkeyfile.c:2825 glib/gkeyfile.c:2902
+#: glib/gkeyfile.c:2835 glib/gkeyfile.c:2912
 #, c-format
 msgid "Key “%s” in group “%s” has value “%s” where %s was expected"
 msgstr "Raktas „%s“ grupėje „%s“ turi reikšmę „%s“, nors tikimasi %s"
 
-#: glib/gkeyfile.c:4304
+#: glib/gkeyfile.c:4324
 msgid "Key file contains escape character at end of line"
 msgstr "Raktų faile, eilutės pabaigoje yra pabėgimo simbolis"
 
-#: glib/gkeyfile.c:4326
+#: glib/gkeyfile.c:4346
 #, c-format
 msgid "Key file contains invalid escape sequence “%s”"
 msgstr "Raktų faile yra klaidinga kaitos eilutė „%s“"
 
-#: glib/gkeyfile.c:4470
+#: glib/gkeyfile.c:4491
 #, c-format
 msgid "Value “%s” cannot be interpreted as a number."
 msgstr "Reikšmės „%s“ negalima interpretuoti kaip skaičiaus."
 
-#: glib/gkeyfile.c:4484
+#: glib/gkeyfile.c:4505
 #, c-format
 msgid "Integer value “%s” out of range"
 msgstr "Sveikoji reikšmė „%s“ viršija ribas"
 
-#: glib/gkeyfile.c:4517
+#: glib/gkeyfile.c:4538
 #, c-format
 msgid "Value “%s” cannot be interpreted as a float number."
 msgstr ""
 "Reikšmės „%s“ negalima interpretuoti kaip slankiojo kablelio skaičiaus."
 
-#: glib/gkeyfile.c:4556
+#: glib/gkeyfile.c:4577
 #, c-format
 msgid "Value “%s” cannot be interpreted as a boolean."
 msgstr "Reikšmės „%s“ negalima interpretuoti kaip loginės."
@@ -5414,7 +5470,7 @@ msgstr "Klaida apdorojant parametrą %s"
 msgid "Missing argument for %s"
 msgstr "%s trūksta argumento"
 
-#: glib/goption.c:2185
+#: glib/goption.c:2184
 #, c-format
 msgid "Unknown option %s"
 msgstr "Nežinomas parametras %s"
@@ -5818,123 +5874,132 @@ msgstr "Tekstas buvo tuščias arba turėjo vien tik tarpo simbolius)"
 msgid "Failed to read data from child process (%s)"
 msgstr "Nepavyko gauti duomenis iš antrinio proceso (%s)"
 
-#: glib/gspawn.c:461
+#: glib/gspawn.c:462
 #, c-format
 msgid "Unexpected error in reading data from a child process (%s)"
 msgstr "Netikėta klaida skaitant duomenis žiš antrinio proceso (%s)"
 
-#: glib/gspawn.c:546
+#: glib/gspawn.c:547
 #, c-format
 msgid "Unexpected error in waitpid() (%s)"
 msgstr "Netikėta waitpid() klaida (%s)"
 
-#: glib/gspawn.c:1166 glib/gspawn-win32.c:1407
+#: glib/gspawn.c:1175 glib/gspawn-win32.c:1438
 #, c-format
 msgid "Child process exited with code %ld"
 msgstr "Vaikinis procesas išėjo su kodu %ld"
 
-#: glib/gspawn.c:1174
+#: glib/gspawn.c:1183
 #, c-format
 msgid "Child process killed by signal %ld"
 msgstr "Vaikinis procesas nutrauktas signalu %ld"
 
-#: glib/gspawn.c:1181
+#: glib/gspawn.c:1190
 #, c-format
 msgid "Child process stopped by signal %ld"
 msgstr "Vaikinis procesas sustabdytas signalu %ld"
 
-#: glib/gspawn.c:1188
+#: glib/gspawn.c:1197
 #, c-format
 msgid "Child process exited abnormally"
 msgstr "Vaikinis procesas išėjo nenormaliai"
 
-#: glib/gspawn.c:1864 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
+#: glib/gspawn.c:1890 glib/gspawn-win32.c:353 glib/gspawn-win32.c:361
 #, c-format
 msgid "Failed to read from child pipe (%s)"
 msgstr "Nepavyko perskaityti duomenų iš antrinio konvejerio (%s)"
 
-#: glib/gspawn.c:2166
+#: glib/gspawn.c:2253
 #, c-format
 msgid "Failed to spawn child process “%s” (%s)"
 msgstr "Nepavyko paleisti antrinio proceso „%s“ (%s)"
 
-#: glib/gspawn.c:2283
+#: glib/gspawn.c:2370
 #, c-format
 msgid "Failed to fork (%s)"
 msgstr "Nepavyko atskirti (%s)"
 
-#: glib/gspawn.c:2443 glib/gspawn-win32.c:381
+#: glib/gspawn.c:2530 glib/gspawn-win32.c:384
 #, c-format
 msgid "Failed to change to directory “%s” (%s)"
 msgstr "Nepavyko pereiti į aplanką „%s“ (%s)"
 
-#: glib/gspawn.c:2453
+#: glib/gspawn.c:2540
 #, c-format
 msgid "Failed to execute child process “%s” (%s)"
 msgstr "Nepavyko paleisti antrinio proceso „%s“ (%s)"
 
-#: glib/gspawn.c:2463
+#: glib/gspawn.c:2550
+#, c-format
+msgid "Failed to open file to remap file descriptor (%s)"
+msgstr "Nepavyko atverti failo deskriptoriaus pakeitimui (%s)"
+
+#: glib/gspawn.c:2558
 #, c-format
-msgid "Failed to redirect output or input of child process (%s)"
-msgstr "Nepavyko perimti antrinio proceso (%s) išvedimo arba įvedimo"
+msgid "Failed to duplicate file descriptor for child process (%s)"
+msgstr "Nepavyko dubliuoti failo deskriptoriaus antriniam procesui (%s)"
 
-#: glib/gspawn.c:2472
+#: glib/gspawn.c:2567
 #, c-format
 msgid "Failed to fork child process (%s)"
 msgstr "Nepavyko atskirti antrinio proceso (%s)"
 
-#: glib/gspawn.c:2480
+#: glib/gspawn.c:2575
 #, c-format
-#| msgid "Failed to read data from child process (%s)"
 msgid "Failed to close file descriptor for child process (%s)"
 msgstr "Nepavyko užverti failo deskriptoriaus antriniam procesui (%s)"
 
-#: glib/gspawn.c:2488
+#: glib/gspawn.c:2583
 #, c-format
 msgid "Unknown error executing child process “%s”"
 msgstr "Nežinoma klaida vykdant antrinį procesą „%s“"
 
-#: glib/gspawn.c:2512
+#: glib/gspawn.c:2607
 #, c-format
 msgid "Failed to read enough data from child pid pipe (%s)"
 msgstr ""
 "Nepavyko perskaityti reikiamo duomenų kiekio iš antrinio pid konvejerio (%s)"
 
-#: glib/gspawn-win32.c:294
+#: glib/gspawn-win32.c:297
 msgid "Failed to read data from child process"
 msgstr "Nepavyko gauti duomenų iš antrinio proceso"
 
-#: glib/gspawn-win32.c:387 glib/gspawn-win32.c:392 glib/gspawn-win32.c:511
+#: glib/gspawn-win32.c:390 glib/gspawn-win32.c:395 glib/gspawn-win32.c:521
 #, c-format
 msgid "Failed to execute child process (%s)"
 msgstr "Nepavyko paleisti antrinio proceso (%s)"
 
-#: glib/gspawn-win32.c:461
+#: glib/gspawn-win32.c:400
+#, c-format
+msgid "Failed to dup() in child process (%s)"
+msgstr "Nepavyko antriniams procesui iškviesti dup() (%s)"
+
+#: glib/gspawn-win32.c:471
 #, c-format
 msgid "Invalid program name: %s"
 msgstr "Netinkamas programos pavadinimas: %s"
 
-#: glib/gspawn-win32.c:471 glib/gspawn-win32.c:779
+#: glib/gspawn-win32.c:481 glib/gspawn-win32.c:807
 #, c-format
 msgid "Invalid string in argument vector at %d: %s"
 msgstr "Netinkama seka argumento vektoriuje, pozicijoje %d: %s"
 
-#: glib/gspawn-win32.c:482 glib/gspawn-win32.c:794
+#: glib/gspawn-win32.c:492 glib/gspawn-win32.c:823
 #, c-format
 msgid "Invalid string in environment: %s"
 msgstr "Netinka seka aplinkoje: %s"
 
-#: glib/gspawn-win32.c:775
+#: glib/gspawn-win32.c:803
 #, c-format
 msgid "Invalid working directory: %s"
 msgstr "Netinkamas darbinis katalogas: %s"
 
-#: glib/gspawn-win32.c:837
+#: glib/gspawn-win32.c:868
 #, c-format
 msgid "Failed to execute helper program (%s)"
 msgstr "Nepavyko paleisti pagalbinės programos (%s)"
 
-#: glib/gspawn-win32.c:1064
+#: glib/gspawn-win32.c:1096
 msgid ""
 "Unexpected error in g_io_channel_win32_poll() reading data from a child "
 "process"
@@ -5942,21 +6007,21 @@ msgstr ""
 "Netikėta klaida tarp g_io_channel_win32_poll() funkcijos duomenų skaitymo iš "
 "antrinio proceso metu"
 
-#: glib/gstrfuncs.c:3345 glib/gstrfuncs.c:3447
+#: glib/gstrfuncs.c:3351 glib/gstrfuncs.c:3453
 msgid "Empty string is not a number"
 msgstr "Tuščia simbolių eilutė nėra skaičius"
 
-#: glib/gstrfuncs.c:3369
+#: glib/gstrfuncs.c:3375
 #, c-format
 msgid "“%s” is not a signed number"
 msgstr "„%s“ nėra skaičius su ženklu"
 
-#: glib/gstrfuncs.c:3379 glib/gstrfuncs.c:3483
+#: glib/gstrfuncs.c:3385 glib/gstrfuncs.c:3489
 #, c-format
 msgid "Number “%s” is out of bounds [%s, %s]"
 msgstr "Skaičius „%s“ yra už [%s, %s] ribų"
 
-#: glib/gstrfuncs.c:3473
+#: glib/gstrfuncs.c:3479
 #, c-format
 msgid "“%s” is not an unsigned number"
 msgstr "„%s“ nėra skaičius be ženklo"
@@ -6017,168 +6082,168 @@ msgstr "URI nėra absoliutus ir nepateiktas bazinis URI"
 msgid "Missing ‘=’ and parameter value"
 msgstr "Trūksta „=“ bei parametro vertės"
 
-#: glib/gutf8.c:817
+#: glib/gutf8.c:832
 msgid "Failed to allocate memory"
 msgstr "Nepavyko išskirti atminties"
 
-#: glib/gutf8.c:950
+#: glib/gutf8.c:965
 msgid "Character out of range for UTF-8"
 msgstr "Simbolis neatitinka UTF-8 simbolių diapazono"
 
-#: glib/gutf8.c:1051 glib/gutf8.c:1060 glib/gutf8.c:1190 glib/gutf8.c:1199
-#: glib/gutf8.c:1338 glib/gutf8.c:1435
+#: glib/gutf8.c:1067 glib/gutf8.c:1076 glib/gutf8.c:1206 glib/gutf8.c:1215
+#: glib/gutf8.c:1354 glib/gutf8.c:1451
 msgid "Invalid sequence in conversion input"
 msgstr "Klaidinga seka keitimo įvestyje"
 
-#: glib/gutf8.c:1349 glib/gutf8.c:1446
+#: glib/gutf8.c:1365 glib/gutf8.c:1462
 msgid "Character out of range for UTF-16"
 msgstr "Simbolis neatitinka UTF-16 simbolių diapazono"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2770
+#: glib/gutils.c:2849
 #, c-format
 msgid "%.1f kB"
 msgstr "%.1f kB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2772
+#: glib/gutils.c:2851
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2774
+#: glib/gutils.c:2853
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2776
+#: glib/gutils.c:2855
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2778
+#: glib/gutils.c:2857
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2780
+#: glib/gutils.c:2859
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2784
+#: glib/gutils.c:2863
 #, c-format
 msgid "%.1f KiB"
 msgstr "%.1f KiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2786
+#: glib/gutils.c:2865
 #, c-format
 msgid "%.1f MiB"
 msgstr "%.1f MiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2788
+#: glib/gutils.c:2867
 #, c-format
 msgid "%.1f GiB"
 msgstr "%.1f GiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2790
+#: glib/gutils.c:2869
 #, c-format
 msgid "%.1f TiB"
 msgstr "%.1f TiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2792
+#: glib/gutils.c:2871
 #, c-format
 msgid "%.1f PiB"
 msgstr "%.1f PiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2794
+#: glib/gutils.c:2873
 #, c-format
 msgid "%.1f EiB"
 msgstr "%.1f EiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2798
+#: glib/gutils.c:2877
 #, c-format
 msgid "%.1f kb"
 msgstr "%.1f kb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2800
+#: glib/gutils.c:2879
 #, c-format
 msgid "%.1f Mb"
 msgstr "%.1f Mb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2802
+#: glib/gutils.c:2881
 #, c-format
 msgid "%.1f Gb"
 msgstr "%.1f Gb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2804
+#: glib/gutils.c:2883
 #, c-format
 msgid "%.1f Tb"
 msgstr "%.1f Tb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2806
+#: glib/gutils.c:2885
 #, c-format
 msgid "%.1f Pb"
 msgstr "%.1f Pb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2808
+#: glib/gutils.c:2887
 #, c-format
 msgid "%.1f Eb"
 msgstr "%.1f Eb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2812
+#: glib/gutils.c:2891
 #, c-format
 msgid "%.1f Kib"
 msgstr "%.1f Kib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2814
+#: glib/gutils.c:2893
 #, c-format
 msgid "%.1f Mib"
 msgstr "%.1f Mib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2816
+#: glib/gutils.c:2895
 #, c-format
 msgid "%.1f Gib"
 msgstr "%.1f Gib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2818
+#: glib/gutils.c:2897
 #, c-format
 msgid "%.1f Tib"
 msgstr "%.1f Tib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2820
+#: glib/gutils.c:2899
 #, c-format
 msgid "%.1f Pib"
 msgstr "%.1f Pib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2822
+#: glib/gutils.c:2901
 #, c-format
 msgid "%.1f Eib"
 msgstr "%.1f Eib"
 
-#: glib/gutils.c:2856 glib/gutils.c:2973
+#: glib/gutils.c:2935 glib/gutils.c:3052
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
@@ -6186,7 +6251,7 @@ msgstr[0] "%u baitas"
 msgstr[1] "%u baitai"
 msgstr[2] "%u baitų"
 
-#: glib/gutils.c:2860
+#: glib/gutils.c:2939
 #, c-format
 msgid "%u bit"
 msgid_plural "%u bits"
@@ -6195,7 +6260,7 @@ msgstr[1] "%u bitai"
 msgstr[2] "%u bitų"
 
 #. Translators: the %s in "%s bytes" will always be replaced by a number.
-#: glib/gutils.c:2927
+#: glib/gutils.c:3006
 #, c-format
 msgid "%s byte"
 msgid_plural "%s bytes"
@@ -6204,7 +6269,7 @@ msgstr[1] "%s baitai"
 msgstr[2] "%s baitų"
 
 #. Translators: the %s in "%s bits" will always be replaced by a number.
-#: glib/gutils.c:2932
+#: glib/gutils.c:3011
 #, c-format
 msgid "%s bit"
 msgid_plural "%s bits"
@@ -6217,32 +6282,32 @@ msgstr[2] "%s bitų"
 #. * compatibility.  Users will not see this string unless a program is using this deprecated function.
 #. * Please translate as literally as possible.
 #.
-#: glib/gutils.c:2986
+#: glib/gutils.c:3065
 #, c-format
 msgid "%.1f KB"
 msgstr "%.1f KB"
 
-#: glib/gutils.c:2991
+#: glib/gutils.c:3070
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
-#: glib/gutils.c:2996
+#: glib/gutils.c:3075
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
-#: glib/gutils.c:3001
+#: glib/gutils.c:3080
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
-#: glib/gutils.c:3006
+#: glib/gutils.c:3085
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
-#: glib/gutils.c:3011
+#: glib/gutils.c:3090
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
@@ -6369,8 +6434,5 @@ msgstr "%.1f EB"
 #~ msgid "Association creation not supported on win32"
 #~ msgstr "Saitų kūrimas win32 sistemose nepalaikomas"
 
-#~ msgid "URIs not supported"
-#~ msgstr "URI nepalaikomi"
-
 #~ msgid "Key file does not have key '%s'"
 #~ msgstr "Raktų failas neturi rakto „%s“"
index d13c996..1f91293 100644 (file)
--- a/po/lv.po
+++ b/po/lv.po
@@ -9,15 +9,15 @@ msgid ""
 msgstr ""
 "Project-Id-Version: glib\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/glib/issues\n"
-"POT-Creation-Date: 2021-02-12 16:38+0000\n"
-"PO-Revision-Date: 2021-03-07 19:59+0200\n"
+"POT-Creation-Date: 2021-07-19 15:52+0000\n"
+"PO-Revision-Date: 2021-10-25 19:39+0300\n"
 "Last-Translator: Rūdolfs Mazurs <rudolfs.mazurs@gmail.com>\n"
 "Language-Team: Latvian <lata-l10n@googlegroups.com>\n"
 "Language: lv\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Lokalize 19.12.3\n"
+"X-Generator: Lokalize 21.08.1\n"
 "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 :"
 " 2);\n"
 
@@ -43,11 +43,11 @@ msgid "Replace the running instance"
 msgstr "Aizvietot palaisto instanci"
 
 #: gio/gapplication-tool.c:45 gio/gapplication-tool.c:46 gio/gio-tool.c:227
-#: gio/gresource-tool.c:493 gio/gsettings-tool.c:567
+#: gio/gresource-tool.c:494 gio/gsettings-tool.c:572
 msgid "Print help"
 msgstr "Drukāšanas palīdzība"
 
-#: gio/gapplication-tool.c:47 gio/gresource-tool.c:494 gio/gresource-tool.c:562
+#: gio/gapplication-tool.c:47 gio/gresource-tool.c:495 gio/gresource-tool.c:563
 msgid "[COMMAND]"
 msgstr "[KOMANDA]"
 
@@ -55,96 +55,96 @@ msgstr "[KOMANDA]"
 msgid "Print version"
 msgstr "Drukāt versiju"
 
-#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:573
+#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:578
 msgid "Print version information and exit"
 msgstr "Parādīt informāciju par versiju un iziet"
 
-#: gio/gapplication-tool.c:52
+#: gio/gapplication-tool.c:53
 msgid "List applications"
 msgstr "Uzskaitīt lietotnes"
 
-#: gio/gapplication-tool.c:53
+#: gio/gapplication-tool.c:54
 msgid "List the installed D-Bus activatable applications (by .desktop files)"
 msgstr ""
 "Uzskaitīt instalētās D-Bus aktivizējamās lietotnes (ar .desktop datnēm)"
 
-#: gio/gapplication-tool.c:55
+#: gio/gapplication-tool.c:57
 msgid "Launch an application"
 msgstr "Palaist lietotni"
 
-#: gio/gapplication-tool.c:56
+#: gio/gapplication-tool.c:58
 msgid "Launch the application (with optional files to open)"
 msgstr "Palaist lietotni (ar neobligāti atveramām datnēm)"
 
-#: gio/gapplication-tool.c:57
+#: gio/gapplication-tool.c:59
 msgid "APPID [FILE…]"
 msgstr "LIETID [DATNE…]"
 
-#: gio/gapplication-tool.c:59
+#: gio/gapplication-tool.c:61
 msgid "Activate an action"
 msgstr "Aktivizēt darbību"
 
-#: gio/gapplication-tool.c:60
+#: gio/gapplication-tool.c:62
 msgid "Invoke an action on the application"
 msgstr "Izsaukt darbību uz lietotni"
 
-#: gio/gapplication-tool.c:61
+#: gio/gapplication-tool.c:63
 msgid "APPID ACTION [PARAMETER]"
 msgstr "LIETID DARBĪBA [PARAMETRS]"
 
-#: gio/gapplication-tool.c:63
+#: gio/gapplication-tool.c:65
 msgid "List available actions"
 msgstr "Uzskaita pieejamās darbības"
 
-#: gio/gapplication-tool.c:64
+#: gio/gapplication-tool.c:66
 msgid "List static actions for an application (from .desktop file)"
 msgstr "Uzskaita statiskās darbības lietotnei (no .desktop datnes)"
 
-#: gio/gapplication-tool.c:65 gio/gapplication-tool.c:71
+#: gio/gapplication-tool.c:67 gio/gapplication-tool.c:73
 msgid "APPID"
 msgstr "LIETID"
 
-#: gio/gapplication-tool.c:70 gio/gapplication-tool.c:133 gio/gdbus-tool.c:106
+#: gio/gapplication-tool.c:72 gio/gapplication-tool.c:135 gio/gdbus-tool.c:106
 #: gio/gio-tool.c:224
 msgid "COMMAND"
 msgstr "KOMANDA"
 
-#: gio/gapplication-tool.c:70
+#: gio/gapplication-tool.c:72
 msgid "The command to print detailed help for"
 msgstr "Komanda, lai drukātu detalizētu palīdzību priekš"
 
-#: gio/gapplication-tool.c:71
+#: gio/gapplication-tool.c:73
 msgid "Application identifier in D-Bus format (eg: org.example.viewer)"
 msgstr "Lietotnes identifikators D-Bus formātā(piemēram: org.example.viewer)"
 
-#: gio/gapplication-tool.c:72 gio/glib-compile-resources.c:738
+#: gio/gapplication-tool.c:74 gio/glib-compile-resources.c:738
 #: gio/glib-compile-resources.c:744 gio/glib-compile-resources.c:772
-#: gio/gresource-tool.c:500 gio/gresource-tool.c:566
+#: gio/gresource-tool.c:501 gio/gresource-tool.c:567
 msgid "FILE"
 msgstr "DATNE"
 
-#: gio/gapplication-tool.c:72
+#: gio/gapplication-tool.c:74
 msgid "Optional relative or absolute filenames, or URIs to open"
 msgstr ""
 "Neobligāts relatīvs vai absolūts datnes nosaukums, vai URI, lai atvērtu"
 
-#: gio/gapplication-tool.c:73
+#: gio/gapplication-tool.c:75
 msgid "ACTION"
 msgstr "DARBĪBA"
 
-#: gio/gapplication-tool.c:73
+#: gio/gapplication-tool.c:75
 msgid "The action name to invoke"
 msgstr "Darbības nosaukums, ko izsaukt"
 
-#: gio/gapplication-tool.c:74
+#: gio/gapplication-tool.c:76
 msgid "PARAMETER"
 msgstr "PARAMETRS"
 
-#: gio/gapplication-tool.c:74
+#: gio/gapplication-tool.c:76
 msgid "Optional parameter to the action invocation, in GVariant format"
 msgstr "Neobligāts parametrs darbības izsaukšanai, GVariant formātā"
 
-#: gio/gapplication-tool.c:96 gio/gresource-tool.c:531 gio/gsettings-tool.c:659
+#: gio/gapplication-tool.c:98 gio/gresource-tool.c:532 gio/gsettings-tool.c:664
 #, c-format
 msgid ""
 "Unknown command %s\n"
@@ -153,26 +153,26 @@ msgstr ""
 "Nezināma komanda %s\n"
 "\n"
 
-#: gio/gapplication-tool.c:101
+#: gio/gapplication-tool.c:103
 msgid "Usage:\n"
 msgstr "Lietošana:\n"
 
-#: gio/gapplication-tool.c:114 gio/gresource-tool.c:556
-#: gio/gsettings-tool.c:694
+#: gio/gapplication-tool.c:116 gio/gresource-tool.c:557
+#: gio/gsettings-tool.c:699
 msgid "Arguments:\n"
 msgstr "Argumenti:\n"
 
-#: gio/gapplication-tool.c:133 gio/gio-tool.c:224
+#: gio/gapplication-tool.c:135 gio/gio-tool.c:224
 msgid "[ARGS…]"
 msgstr "[ARG…]"
 
-#: gio/gapplication-tool.c:134
+#: gio/gapplication-tool.c:136
 #, c-format
 msgid "Commands:\n"
 msgstr "Komandas:\n"
 
 #. Translators: do not translate 'help', but please translate 'COMMAND'.
-#: gio/gapplication-tool.c:146
+#: gio/gapplication-tool.c:148
 #, c-format
 msgid ""
 "Use “%s help COMMAND” to get detailed help.\n"
@@ -181,7 +181,7 @@ msgstr ""
 "Lietojiet “%s help KOMANDA”, lai iegūtu detalizētu palīdzību.\n"
 "\n"
 
-#: gio/gapplication-tool.c:165
+#: gio/gapplication-tool.c:167
 #, c-format
 msgid ""
 "%s command requires an application id to directly follow\n"
@@ -190,13 +190,13 @@ msgstr ""
 "%s komandai vajag lietotnes id, lai tieši sekotu\n"
 "\n"
 
-#: gio/gapplication-tool.c:171
+#: gio/gapplication-tool.c:173
 #, c-format
 msgid "invalid application id: “%s”\n"
 msgstr "nederīgs lietotnes id — “%s”\n"
 
 #. Translators: %s is replaced with a command name like 'list-actions'
-#: gio/gapplication-tool.c:182
+#: gio/gapplication-tool.c:184
 #, c-format
 msgid ""
 "“%s” takes no arguments\n"
@@ -205,21 +205,21 @@ msgstr ""
 "“%s” nepieņem argumentus\n"
 "\n"
 
-#: gio/gapplication-tool.c:266
+#: gio/gapplication-tool.c:268
 #, c-format
 msgid "unable to connect to D-Bus: %s\n"
 msgstr "Nevarēja savienoties ar D-Bus — %s\n"
 
-#: gio/gapplication-tool.c:286
+#: gio/gapplication-tool.c:288
 #, c-format
 msgid "error sending %s message to application: %s\n"
 msgstr "kļūda, sūtot %s ziņojumu lietotnei — %s\n"
 
-#: gio/gapplication-tool.c:317
+#: gio/gapplication-tool.c:319
 msgid "action name must be given after application id\n"
 msgstr "darbības nosaukumam ir jābūt dotam pēc lietotnes id\n"
 
-#: gio/gapplication-tool.c:325
+#: gio/gapplication-tool.c:327
 #, c-format
 msgid ""
 "invalid action name: “%s”\n"
@@ -228,25 +228,25 @@ msgstr ""
 "nederīgs darbības nosaukums — “%s”\n"
 "darbības nosaukumā var būt tikai burti, cipari, “-” un “.”\n"
 
-#: gio/gapplication-tool.c:344
+#: gio/gapplication-tool.c:346
 #, c-format
 msgid "error parsing action parameter: %s\n"
 msgstr "kļūda, parsējot darbības parametru — %s\n"
 
-#: gio/gapplication-tool.c:356
+#: gio/gapplication-tool.c:358
 msgid "actions accept a maximum of one parameter\n"
 msgstr "darbības pieņem ne vairāk ka vienu parametru\n"
 
-#: gio/gapplication-tool.c:411
+#: gio/gapplication-tool.c:413
 msgid "list-actions command takes only the application id"
 msgstr "darbību uzskaites komanda pieņem tikai lietotnes id"
 
-#: gio/gapplication-tool.c:421
+#: gio/gapplication-tool.c:423
 #, c-format
 msgid "unable to find desktop file for application %s\n"
 msgstr "nevar atrast darbvirsmas datni lietotnei %s\n"
 
-#: gio/gapplication-tool.c:466
+#: gio/gapplication-tool.c:468
 #, c-format
 msgid ""
 "unrecognised command: %s\n"
@@ -256,8 +256,8 @@ msgstr ""
 "\n"
 
 #: gio/gbufferedinputstream.c:420 gio/gbufferedinputstream.c:498
-#: gio/ginputstream.c:179 gio/ginputstream.c:379 gio/ginputstream.c:617
-#: gio/ginputstream.c:1019 gio/goutputstream.c:223 gio/goutputstream.c:1049
+#: gio/ginputstream.c:179 gio/ginputstream.c:379 gio/ginputstream.c:648
+#: gio/ginputstream.c:1050 gio/goutputstream.c:223 gio/goutputstream.c:1049
 #: gio/gpollableinputstream.c:205 gio/gpollableoutputstream.c:277
 #, c-format
 msgid "Too large count value passed to %s"
@@ -268,11 +268,11 @@ msgstr "Pārāk liela vērtība tika padota %s"
 msgid "Seek not supported on base stream"
 msgstr "Uz bāzes plūsmas meklēšana netiek atbalstīta"
 
-#: gio/gbufferedinputstream.c:937
+#: gio/gbufferedinputstream.c:938
 msgid "Cannot truncate GBufferedInputStream"
 msgstr "Nevar apraut GBufferedInputStream"
 
-#: gio/gbufferedinputstream.c:982 gio/ginputstream.c:1208 gio/giostream.c:300
+#: gio/gbufferedinputstream.c:983 gio/ginputstream.c:1239 gio/giostream.c:300
 #: gio/goutputstream.c:2198
 msgid "Stream is already closed"
 msgstr "Plūsma jau ir aizvērta"
@@ -300,13 +300,13 @@ msgid "Not enough space in destination"
 msgstr "Mērķī nepietiek brīvās vietas"
 
 #: gio/gcharsetconverter.c:342 gio/gdatainputstream.c:848
-#: gio/gdatainputstream.c:1266 glib/gconvert.c:448 glib/gconvert.c:878
+#: gio/gdatainputstream.c:1266 glib/gconvert.c:449 glib/gconvert.c:879
 #: glib/giochannel.c:1573 glib/giochannel.c:1615 glib/giochannel.c:2470
 #: glib/gutf8.c:875 glib/gutf8.c:1328
 msgid "Invalid byte sequence in conversion input"
 msgstr "Nepareiza baitu secība konversijas ievadē"
 
-#: gio/gcharsetconverter.c:347 glib/gconvert.c:456 glib/gconvert.c:792
+#: gio/gcharsetconverter.c:347 glib/gconvert.c:457 glib/gconvert.c:793
 #: glib/giochannel.c:1580 glib/giochannel.c:2482
 #, c-format
 msgid "Error during conversion: %s"
@@ -316,12 +316,12 @@ msgstr "Kļūda, konversējot — %s"
 msgid "Cancellable initialization not supported"
 msgstr "Atceļama inicializācija nav atbalstīta"
 
-#: gio/gcharsetconverter.c:456 glib/gconvert.c:321 glib/giochannel.c:1401
+#: gio/gcharsetconverter.c:456 glib/gconvert.c:322 glib/giochannel.c:1401
 #, c-format
 msgid "Conversion from character set “%s” to “%s” is not supported"
 msgstr "Pārveidošana no rakstzīmju kopas “%s” uz “%s” nav atbalstīta"
 
-#: gio/gcharsetconverter.c:460 glib/gconvert.c:325
+#: gio/gcharsetconverter.c:460 glib/gconvert.c:326
 #, c-format
 msgid "Could not open converter from “%s” to “%s”"
 msgstr "Nevarēja atvērt pārveidotāju no “%s” uz “%s”"
@@ -506,7 +506,7 @@ msgstr "Kļūda, izveidojot komandrindu “%s”: "
 msgid "Cannot determine session bus address (not implemented for this OS)"
 msgstr "Nevar noteikt sesijas kopnes adresi (nav implementēts šai OS)"
 
-#: gio/gdbusaddress.c:1397 gio/gdbusconnection.c:7241
+#: gio/gdbusaddress.c:1397 gio/gdbusconnection.c:7261
 #, c-format
 msgid ""
 "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
@@ -515,7 +515,7 @@ msgstr ""
 "Nevar noteikt kopnes adresi no DBUS_STARTER_BUS_TYPE vides mainīgā — "
 "nezināma vērtība “%s”"
 
-#: gio/gdbusaddress.c:1406 gio/gdbusconnection.c:7250
+#: gio/gdbusaddress.c:1406 gio/gdbusconnection.c:7270
 msgid ""
 "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
 "variable is not set"
@@ -544,11 +544,11 @@ msgstr ""
 "Izsmelti visi pieejamie autentifikācijas mehānismi (mēģināti: %s) (pieejami: "
 "%s)"
 
-#: gio/gdbusauth.c:1170
+#: gio/gdbusauth.c:1171
 msgid "User IDs must be the same for peer and server"
 msgstr "Lietotāja ID ir jābūt vienādiem gan biedram, gan serverim"
 
-#: gio/gdbusauth.c:1182
+#: gio/gdbusauth.c:1183
 msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
 msgstr "Atcelts caur GDBusAuthObserver::authorize-authenticated-peer"
 
@@ -640,7 +640,7 @@ msgstr "Kļūda, atverot atslēgu saišķi “%s” rakstīšanai: "
 msgid "(Additionally, releasing the lock for “%s” also failed: %s) "
 msgstr "(Un vēl, “%s” slēguma atbrīvošana neizdevās — %s) "
 
-#: gio/gdbusconnection.c:603 gio/gdbusconnection.c:2405
+#: gio/gdbusconnection.c:603 gio/gdbusconnection.c:2417
 msgid "The connection is closed"
 msgstr "Savienojums ir aizvērts"
 
@@ -648,91 +648,97 @@ msgstr "Savienojums ir aizvērts"
 msgid "Timeout was reached"
 msgstr "Iestājās noildze"
 
-#: gio/gdbusconnection.c:2528
+#: gio/gdbusconnection.c:2540
 msgid ""
 "Unsupported flags encountered when constructing a client-side connection"
 msgstr ""
 "Sastapās ar neatbalstītiem slēdžiem (flag), veidojot klienta puses "
 "savienojumu"
 
-#: gio/gdbusconnection.c:4186 gio/gdbusconnection.c:4533
+#: gio/gdbusconnection.c:4189 gio/gdbusconnection.c:4536
 #, c-format
 msgid ""
 "No such interface “org.freedesktop.DBus.Properties” on object at path %s"
 msgstr ""
 "Nav tādas saskarnes “org.freedesktop.DBus.Properties” uz objekta ceļa %s"
 
-#: gio/gdbusconnection.c:4328
+#: gio/gdbusconnection.c:4331
 #, c-format
 msgid "No such property “%s”"
 msgstr "Nav tādas īpašības “%s”"
 
-#: gio/gdbusconnection.c:4340
+#: gio/gdbusconnection.c:4343
 #, c-format
 msgid "Property “%s” is not readable"
 msgstr "Īpašība “%s” nav lasāma"
 
-#: gio/gdbusconnection.c:4351
+#: gio/gdbusconnection.c:4354
 #, c-format
 msgid "Property “%s” is not writable"
 msgstr "Īpašība “%s” nav rakstāma"
 
-#: gio/gdbusconnection.c:4371
+#: gio/gdbusconnection.c:4374
 #, c-format
 msgid "Error setting property “%s”: Expected type “%s” but got “%s”"
 msgstr "Kļūda, iestatot īpašību “%s” — gaidīja tipu “%s”, bet saņēma “%s”"
 
-#: gio/gdbusconnection.c:4476 gio/gdbusconnection.c:4684
-#: gio/gdbusconnection.c:6681
+#: gio/gdbusconnection.c:4479 gio/gdbusconnection.c:4687
+#: gio/gdbusconnection.c:6689
 #, c-format
 msgid "No such interface “%s”"
 msgstr "Nav tādas saskarnes “%s”"
 
-#: gio/gdbusconnection.c:4902 gio/gdbusconnection.c:7190
+#: gio/gdbusconnection.c:4905 gio/gdbusconnection.c:7201
 #, c-format
 msgid "No such interface “%s” on object at path %s"
 msgstr "Nav tādas saskarnes “%s” uz objekta ceļa %s"
 
-#: gio/gdbusconnection.c:5000
+#: gio/gdbusconnection.c:5003
 #, c-format
 msgid "No such method “%s”"
 msgstr "Nav tādas metodes “%s”"
 
-#: gio/gdbusconnection.c:5031
+#: gio/gdbusconnection.c:5034
 #, c-format
 msgid "Type of message, “%s”, does not match expected type “%s”"
 msgstr "Ziņojuma tips “%s” neatbilda gaidītajam tipam “%s”"
 
-#: gio/gdbusconnection.c:5229
+#: gio/gdbusconnection.c:5237
 #, c-format
 msgid "An object is already exported for the interface %s at %s"
 msgstr "Objekts jau ir eksportēts saskarnei %s pie %s"
 
-#: gio/gdbusconnection.c:5455
+#: gio/gdbusconnection.c:5463
 #, c-format
 msgid "Unable to retrieve property %s.%s"
 msgstr "Nevar saņemt īpašību %s.%s"
 
-#: gio/gdbusconnection.c:5511
+#: gio/gdbusconnection.c:5519
 #, c-format
 msgid "Unable to set property %s.%s"
 msgstr "Nevar iestatīt īpašību %s.%s"
 
-#: gio/gdbusconnection.c:5690
+#: gio/gdbusconnection.c:5698
 #, c-format
 msgid "Method “%s” returned type “%s”, but expected “%s”"
 msgstr "Metode “%s” atgrieza tipu “%s”, bet gaidīja “%s”"
 
-#: gio/gdbusconnection.c:6792
+#: gio/gdbusconnection.c:6800
 #, c-format
 msgid "Method “%s” on interface “%s” with signature “%s” does not exist"
 msgstr "Metode “%s” uz saskarnes “%s” ar parakstu “%s” neeksistē"
 
-#: gio/gdbusconnection.c:6913
+#: gio/gdbusconnection.c:6921
 #, c-format
 msgid "A subtree is already exported for %s"
 msgstr "%s apakškoks jau ir eksportēts "
 
+#: gio/gdbusconnection.c:7209
+#, c-format
+#| msgid "Key file does not have group “%s”"
+msgid "Object does not exist at path “%s”"
+msgstr "Ceļā “%s” objekts neeksistē"
+
 #: gio/gdbusmessage.c:1266
 msgid "type is INVALID"
 msgstr "tips ir INVALID"
@@ -921,12 +927,12 @@ msgstr ""
 msgid "Message body is empty but signature in the header field is “(%s)”"
 msgstr "Ziņojuma pamatteksts ir tukšs, bet paraksta galvenes lauks ir “(%s)”"
 
-#: gio/gdbusmessage.c:3378
+#: gio/gdbusmessage.c:3380
 #, c-format
 msgid "Error return with body of type “%s”"
 msgstr "Kļūdas atgriešana ar pamattekstu ar tipu “%s”"
 
-#: gio/gdbusmessage.c:3386
+#: gio/gdbusmessage.c:3388
 msgid "Error return with empty body"
 msgstr "Kļūdas atgriešana ar tukšu pamattekstu"
 
@@ -945,21 +951,24 @@ msgstr "Sesijas dbus nav palaists un automātiskā palaišana cieta neveiksmi"
 msgid "Unable to get Hardware profile: %s"
 msgstr "Nevar saņemt aparatūras profilu — %s"
 
-#: gio/gdbusprivate.c:2488
-msgid "Unable to load /var/lib/dbus/machine-id or /etc/machine-id: "
-msgstr "Nevarēja ielādēt /var/lib/dbus/machine-id vai /etc/machine-id: "
+#. Translators: Both placeholders are file paths
+#: gio/gdbusprivate.c:2494
+#, c-format
+#| msgid "Unable to load ‘%s‘: %s"
+msgid "Unable to load %s or %s: "
+msgstr "Nevar ielādēt %s vai %s: "
 
-#: gio/gdbusproxy.c:1562
+#: gio/gdbusproxy.c:1569
 #, c-format
 msgid "Error calling StartServiceByName for %s: "
 msgstr "Kļūda, izsaucot StartServiceByName priekš %s: "
 
-#: gio/gdbusproxy.c:1585
+#: gio/gdbusproxy.c:1592
 #, c-format
 msgid "Unexpected reply %d from StartServiceByName(\"%s\") method"
 msgstr "Negaidīta atbilde %d no StartServiceByName(“%s”) metodes"
 
-#: gio/gdbusproxy.c:2688 gio/gdbusproxy.c:2823
+#: gio/gdbusproxy.c:2699 gio/gdbusproxy.c:2834
 #, c-format
 msgid ""
 "Cannot invoke method; proxy is for the well-known name %s without an owner, "
@@ -969,25 +978,25 @@ msgstr ""
 "īpašnieka, un starpnieks tika veidots ar "
 "G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START slēdzi (flag)"
 
-#: gio/gdbusserver.c:763
+#: gio/gdbusserver.c:767
 msgid "Abstract namespace not supported"
 msgstr "Abstraktas nosaukumu telpas nav atbalstītas"
 
-#: gio/gdbusserver.c:856
+#: gio/gdbusserver.c:860
 msgid "Cannot specify nonce file when creating a server"
 msgstr "Nevar norādīt nonce datni, kad veido serveri"
 
-#: gio/gdbusserver.c:938
+#: gio/gdbusserver.c:942
 #, c-format
 msgid "Error writing nonce file at “%s”: %s"
 msgstr "Kļūda, rakstot nonce datni pie “%s” — %s"
 
-#: gio/gdbusserver.c:1113
+#: gio/gdbusserver.c:1117
 #, c-format
 msgid "The string “%s” is not a valid D-Bus GUID"
 msgstr "Virkne “%s” nav derīga D-Bus GUID"
 
-#: gio/gdbusserver.c:1153
+#: gio/gdbusserver.c:1157
 #, c-format
 msgid "Cannot listen on unsupported transport “%s”"
 msgstr "Nevar klausīties uz neatbalstīta transporta “%s”"
@@ -1190,7 +1199,6 @@ msgstr "Kļūda, parsējot parametru %d ar tipu “%s” — %s\n"
 
 #: gio/gdbus-tool.c:1190
 #, c-format
-#| msgid "Error reading from handle: %s"
 msgid "Error adding handle %d: %s\n"
 msgstr "Kļūda, pievienojot turi %d — %s\n"
 
@@ -1330,7 +1338,7 @@ msgstr "dzinis neatbalsta startēšanu"
 msgid "drive doesn’t implement stop"
 msgstr "dzinis neatbalsta apturēšanu"
 
-#: gio/gdtlsconnection.c:1120 gio/gtlsconnection.c:921
+#: gio/gdtlsconnection.c:1153 gio/gtlsconnection.c:920
 msgid "TLS backend does not implement TLS binding retrieval"
 msgstr "TLS aizmugure nav implementējusi TLS saistīšanas saņemšanu"
 
@@ -1375,7 +1383,7 @@ msgstr "Gaidīja GEmblem priekš GEmblemedIcon"
 msgid "Containing mount does not exist"
 msgstr "Saturošais montējums neeksistē"
 
-#: gio/gfile.c:2608 gio/glocalfile.c:2472
+#: gio/gfile.c:2608 gio/glocalfile.c:2477
 msgid "Can’t copy over directory"
 msgstr "Nevar kopēt virsū mapei"
 
@@ -1420,7 +1428,7 @@ msgstr "Nevar kopēt īpašu datni"
 msgid "Invalid symlink value given"
 msgstr "Ir dota nederīga simboliskās saites vērtība"
 
-#: gio/gfile.c:4045 glib/gfileutils.c:2362
+#: gio/gfile.c:4045 glib/gfileutils.c:2354
 msgid "Symbolic links not supported"
 msgstr "Simboliskās saites nav atbalstītas"
 
@@ -1483,7 +1491,7 @@ msgid "Truncate not supported on stream"
 msgstr "Uz plūsmas apraušana nav atbalstīta"
 
 #: gio/ghttpproxy.c:91 gio/gresolver.c:443 gio/gresolver.c:596
-#: glib/gconvert.c:1778
+#: glib/gconvert.c:1825
 msgid "Invalid hostname"
 msgstr "Nepareizs resursdatora nosaukums"
 
@@ -1509,7 +1517,6 @@ msgid "HTTP proxy connection failed: %i"
 msgstr "Neizdevās savienojums ar HTTP starpnieku: %i"
 
 #: gio/ghttpproxy.c:266
-#| msgid "HTTP proxy connection failed: %i"
 msgid "HTTP proxy response too big"
 msgstr "HTTP starpnieka atbilde ir pārāk liela"
 
@@ -1570,7 +1577,7 @@ msgid "Could not parse “%s” as IP address mask"
 msgstr "Neizdevās parsēt “%s” kā IP adreses masku"
 
 #: gio/ginetsocketaddress.c:203 gio/ginetsocketaddress.c:220
-#: gio/gnativesocketaddress.c:109 gio/gunixsocketaddress.c:220
+#: gio/gnativesocketaddress.c:109 gio/gunixsocketaddress.c:221
 msgid "Not enough space for socket address"
 msgstr "Nepietiek vietas ligzdas adresei"
 
@@ -1588,7 +1595,7 @@ msgstr "Ievades plūsma neatbalsta lasīšanu"
 #. 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:1218 gio/giostream.c:310 gio/goutputstream.c:2208
+#: gio/ginputstream.c:1249 gio/giostream.c:310 gio/goutputstream.c:2208
 msgid "Stream has outstanding operation"
 msgstr "Plūsmai ir neizpildīta darbība"
 
@@ -1629,7 +1636,6 @@ msgid "Show information about locations"
 msgstr "Parādīt informāciju par atrašanās vietām"
 
 #: gio/gio-tool.c:232
-#| msgid "List static actions for an application (from .desktop file)"
 msgid "Launch an application from a desktop file"
 msgstr "Palaist lietotni no darbvirsmas datnes"
 
@@ -1903,30 +1909,25 @@ msgstr ""
 "Palaist lietotni no darbvirsmas datnes. Tai var padodot datņu argumentus."
 
 #: gio/gio-tool-launch.c:77
-#| msgid "No destination given"
 msgid "No desktop file given"
 msgstr "Nav dota darbvirsmas datne"
 
 #: gio/gio-tool-launch.c:85
-#| msgid "There is no GCredentials support for your platform"
 msgid "The launch command is not currently supported on this platform"
 msgstr "Palaišanas komanda šobrīd nav atbalstīta šajā platformā"
 
 #: gio/gio-tool-launch.c:98
 #, c-format
-#| msgid "Unable to trash file %s: %s"
 msgid "Unable to load ‘%s‘: %s"
 msgstr "Nevar ielādēt “%s” — %s"
 
 #: gio/gio-tool-launch.c:107
 #, c-format
-#| msgid "Failed to load info for handler “%s”"
 msgid "Unable to load application information for ‘%s‘"
 msgstr "Nevar ielādēt “%s” lietotnes informāciju"
 
 #: gio/gio-tool-launch.c:119
 #, c-format
-#| msgid "Default application for “%s”: %s\n"
 msgid "Unable to launch application ‘%s’: %s"
 msgstr "Nevar palaist lietotni “%s” — %s"
 
@@ -2315,7 +2316,6 @@ msgid "Empty the trash"
 msgstr "Iztukšot miskasti"
 
 #: gio/gio-tool-trash.c:35
-#| msgid "List the contents of the locations."
 msgid "List files in the trash with their original locations"
 msgstr "Uzrādīt datnes miskastē ar to sākotnējo atrašanās vietām"
 
@@ -2324,26 +2324,22 @@ msgid ""
 "Restore a file from trash to its original location (possibly recreating the "
 "directory)"
 msgstr ""
-"Atjaunot datni no miskastes uz tās sākotnējo vietu (iespējams, no jauna"
-" izveidojot direktoriju)"
+"Atjaunot datni no miskastes uz tās sākotnējo vietu (iespējams, no jauna "
+"izveidojot direktoriju)"
 
 #: gio/gio-tool-trash.c:106
-#| msgid "Unable to find terminal required for application"
 msgid "Unable to find original path"
 msgstr "Nevar atrast sākotnējo ceļu"
 
 #: gio/gio-tool-trash.c:123
-#| msgid "Unable to create socket: %s"
 msgid "Unable to recreate original location: "
 msgstr "Nevar no jauna izveidot sākotnējo vietu: "
 
 #: gio/gio-tool-trash.c:136
-#| msgid "unable to find desktop file for application %s\n"
 msgid "Unable to move file to its original location: "
 msgstr "Nevar pārvietot datni uz tās sākotnējo vietu: "
 
 #: gio/gio-tool-trash.c:225
-#| msgid "Move files or directories to the trash."
 msgid "Move/Restore files or directories to the trash."
 msgstr "Pārvietot/atjaunot datnes vai mapes uz miskasti."
 
@@ -2978,7 +2974,7 @@ msgstr "izņēma esošo izvades datni: izņēma esošo izvades datni."
 msgid "Invalid filename %s"
 msgstr "Nederīgs datnes nosaukums %s"
 
-#: gio/glocalfile.c:980
+#: gio/glocalfile.c:982
 #, c-format
 msgid "Error getting filesystem info for %s: %s"
 msgstr "Kļūda, iegūstot datņu sistēmas informāciju priekš %s — %s"
@@ -2987,126 +2983,124 @@ msgstr "Kļūda, iegūstot datņu sistēmas informāciju priekš %s — %s"
 #. * the enclosing (user visible) mount of a file, but none
 #. * exists.
 #.
-#: gio/glocalfile.c:1121
+#: gio/glocalfile.c:1123
 #, c-format
 msgid "Containing mount for file %s not found"
 msgstr "Saturošais montējums priekš datnes %s nav atrasts"
 
-#: gio/glocalfile.c:1144
+#: gio/glocalfile.c:1146
 msgid "Can’t rename root directory"
 msgstr "Nevar pārsaukt saknes mapi"
 
-#: gio/glocalfile.c:1162 gio/glocalfile.c:1185
+#: gio/glocalfile.c:1164 gio/glocalfile.c:1187
 #, c-format
 msgid "Error renaming file %s: %s"
 msgstr "Kļūda, pārsaucot datni %s — %s"
 
-#: gio/glocalfile.c:1169
+#: gio/glocalfile.c:1171
 msgid "Can’t rename file, filename already exists"
 msgstr "Nevar pārsaukt datni; datnes nosaukums jau eksistē"
 
-#: gio/glocalfile.c:1182 gio/glocalfile.c:2366 gio/glocalfile.c:2394
-#: gio/glocalfile.c:2533 gio/glocalfileoutputstream.c:650
+#: gio/glocalfile.c:1184 gio/glocalfile.c:2371 gio/glocalfile.c:2399
+#: gio/glocalfile.c:2538 gio/glocalfileoutputstream.c:656
 msgid "Invalid filename"
 msgstr "Nederīgs datnes nosaukums"
 
-#: gio/glocalfile.c:1350 gio/glocalfile.c:1361
+#: gio/glocalfile.c:1352 gio/glocalfile.c:1363
 #, c-format
 msgid "Error opening file %s: %s"
 msgstr "Kļūda, atverot datni %s — %s"
 
-#: gio/glocalfile.c:1486
+#: gio/glocalfile.c:1488
 #, c-format
 msgid "Error removing file %s: %s"
 msgstr "Kļūda, dzēšot datni %s — %s"
 
-#: gio/glocalfile.c:1980 gio/glocalfile.c:1991
+#: gio/glocalfile.c:1982 gio/glocalfile.c:1993
 #, c-format
 msgid "Error trashing file %s: %s"
 msgstr "Kļūda, izmetot miskastē datni %s — %s"
 
-#: gio/glocalfile.c:2029
+#: gio/glocalfile.c:2031
 #, c-format
-#| msgid "Unable to create trash dir %s: %s"
 msgid "Unable to create trash directory %s: %s"
 msgstr "Nevar izveidot miskastes direktoriju %s — %s"
 
-#: gio/glocalfile.c:2050
+#: gio/glocalfile.c:2052
 #, c-format
 msgid "Unable to find toplevel directory to trash %s"
 msgstr "Nevar atrast augšējā līmeņa mapi, lai izmestu miskastē %s"
 
-#: gio/glocalfile.c:2058
+#: gio/glocalfile.c:2060
 #, c-format
 msgid "Trashing on system internal mounts is not supported"
 msgstr "Izmešana uz sistēmas iekšējiem montējumiem nav atbalstīta"
 
-#: gio/glocalfile.c:2141 gio/glocalfile.c:2169
+#: gio/glocalfile.c:2146 gio/glocalfile.c:2174
 #, c-format
-#| msgid "Unable to find or create trash directory for %s"
 msgid "Unable to find or create trash directory %s to trash %s"
 msgstr "Nevar atrast vai izveidot miskastes direktoriju %s, lai izmestu %s"
 
-#: gio/glocalfile.c:2215
+#: gio/glocalfile.c:2220
 #, c-format
 msgid "Unable to create trashing info file for %s: %s"
 msgstr "Nevar izveidot miskastē izmešanas informācijas datni priekš %s — %s"
 
-#: gio/glocalfile.c:2277
+#: gio/glocalfile.c:2282
 #, c-format
 msgid "Unable to trash file %s across filesystem boundaries"
 msgstr "Nevar izmest miskastē datni %s pāri datņu sistēmas robežām"
 
-#: gio/glocalfile.c:2281 gio/glocalfile.c:2337
+#: gio/glocalfile.c:2286 gio/glocalfile.c:2342
 #, c-format
 msgid "Unable to trash file %s: %s"
 msgstr "Nevar izmest miskastē datni %s — %s"
 
-#: gio/glocalfile.c:2343
+#: gio/glocalfile.c:2348
 #, c-format
 msgid "Unable to trash file %s"
 msgstr "Nevar izmest miskastē datni %s"
 
-#: gio/glocalfile.c:2369
+#: gio/glocalfile.c:2374
 #, c-format
 msgid "Error creating directory %s: %s"
 msgstr "Kļūda, veidojot mapi %s — %s"
 
-#: gio/glocalfile.c:2398
+#: gio/glocalfile.c:2403
 #, c-format
 msgid "Filesystem does not support symbolic links"
 msgstr "Datņu sistēma neatbalsta simboliskās saites"
 
-#: gio/glocalfile.c:2401
+#: gio/glocalfile.c:2406
 #, c-format
 msgid "Error making symbolic link %s: %s"
 msgstr "Kļūda, veidojot simbolisko saiti %s — %s"
 
-#: gio/glocalfile.c:2444 gio/glocalfile.c:2479 gio/glocalfile.c:2536
+#: gio/glocalfile.c:2449 gio/glocalfile.c:2484 gio/glocalfile.c:2541
 #, c-format
 msgid "Error moving file %s: %s"
 msgstr "Kļūda, pārvietojot datni %s — %s"
 
-#: gio/glocalfile.c:2467
+#: gio/glocalfile.c:2472
 msgid "Can’t move directory over directory"
 msgstr "Nevar pārvietot mapi virsū mapei"
 
-#: gio/glocalfile.c:2493 gio/glocalfileoutputstream.c:1039
-#: gio/glocalfileoutputstream.c:1053 gio/glocalfileoutputstream.c:1068
-#: gio/glocalfileoutputstream.c:1085 gio/glocalfileoutputstream.c:1099
+#: gio/glocalfile.c:2498 gio/glocalfileoutputstream.c:1108
+#: gio/glocalfileoutputstream.c:1122 gio/glocalfileoutputstream.c:1137
+#: gio/glocalfileoutputstream.c:1154 gio/glocalfileoutputstream.c:1168
 msgid "Backup file creation failed"
 msgstr "Neizdevās izveidot rezerves kopijas datni"
 
-#: gio/glocalfile.c:2512
+#: gio/glocalfile.c:2517
 #, c-format
 msgid "Error removing target file: %s"
 msgstr "Kļūda, dzēšot mērķa datni — %s"
 
-#: gio/glocalfile.c:2526
+#: gio/glocalfile.c:2531
 msgid "Move between mounts not supported"
 msgstr "Pārvietošana starp montētiem sējumiem nav atbalstīta"
 
-#: gio/glocalfile.c:2700
+#: gio/glocalfile.c:2705
 #, c-format
 msgid "Could not determine the disk usage of %s: %s"
 msgstr "Nevarēja noteikt %s diska izmantojumu — %s"
@@ -3132,7 +3126,8 @@ msgstr "Kļūda, iestatot paplašināto atribūtu “%s” — %s"
 msgid " (invalid encoding)"
 msgstr " (nederīgs kodējums)"
 
-#: gio/glocalfileinfo.c:1868 gio/glocalfileoutputstream.c:915
+#: gio/glocalfileinfo.c:1868 gio/glocalfileoutputstream.c:943
+#: gio/glocalfileoutputstream.c:995
 #, c-format
 msgid "Error when getting information for file “%s”: %s"
 msgstr "Kļūda, saņemot informāciju par datni “%s” — %s"
@@ -3202,111 +3197,110 @@ msgstr "UNIX laika spiedogs %lld neiekļāvās 64 bitos"
 msgid "UNIX timestamp %lld is outside of the range supported by Windows"
 msgstr "UNIX laika spiedogs %lld ir ārpus apgabala, ko atbalsta Windows"
 
-#: gio/glocalfileinfo.c:2557
+#: gio/glocalfileinfo.c:2570
 #, c-format
 msgid "File name “%s” cannot be converted to UTF-16"
 msgstr "Datnes nosaukumu “%s” nevar pārveidot uz UTF-16"
 
-#: gio/glocalfileinfo.c:2576
+#: gio/glocalfileinfo.c:2589
 #, c-format
 msgid "File “%s” cannot be opened: Windows Error %lu"
 msgstr "Datni “%s” nevar atvērt, Windows kļūda %lu"
 
-#: gio/glocalfileinfo.c:2589
+#: gio/glocalfileinfo.c:2602
 #, c-format
 msgid "Error setting modification or access time for file “%s”: %lu"
 msgstr "Kļūda, iestatot izmaiņu vai piekļuves laiku datnei “%s” — %lu"
 
-#: gio/glocalfileinfo.c:2690
+#: gio/glocalfileinfo.c:2703
 #, c-format
 msgid "Error setting modification or access time: %s"
 msgstr "Kļūda, iestatot izmaiņu vai piekļuves laiku — %s"
 
-#: gio/glocalfileinfo.c:2713
+#: gio/glocalfileinfo.c:2726
 msgid "SELinux context must be non-NULL"
 msgstr "SELinux kontekstam ir jābūt ne NULL"
 
-#: gio/glocalfileinfo.c:2720
+#: gio/glocalfileinfo.c:2733
 msgid "SELinux is not enabled on this system"
 msgstr "SELinux nav ieslēgts uz šīs sistēmas"
 
-#: gio/glocalfileinfo.c:2730
+#: gio/glocalfileinfo.c:2743
 #, c-format
 msgid "Error setting SELinux context: %s"
 msgstr "Kļūda, iestatot SELinux kontekstu — %s"
 
-#: gio/glocalfileinfo.c:2823
+#: gio/glocalfileinfo.c:2836
 #, c-format
 msgid "Setting attribute %s not supported"
 msgstr "%s atribūta iestatīšana nav atbalstīta"
 
-#: gio/glocalfileinputstream.c:168 gio/glocalfileoutputstream.c:795
+#: gio/glocalfileinputstream.c:163 gio/glocalfileoutputstream.c:801
 #, c-format
 msgid "Error reading from file: %s"
 msgstr "Kļūda, lasot no datnes — %s"
 
-#: gio/glocalfileinputstream.c:199 gio/glocalfileinputstream.c:211
-#: gio/glocalfileinputstream.c:225 gio/glocalfileinputstream.c:333
-#: gio/glocalfileoutputstream.c:557 gio/glocalfileoutputstream.c:1117
-#, c-format
-msgid "Error seeking in file: %s"
-msgstr "Kļūda, meklējot datnē — %s"
-
-#: gio/glocalfileinputstream.c:255 gio/glocalfileoutputstream.c:347
-#: gio/glocalfileoutputstream.c:441
+#: gio/glocalfileinputstream.c:194 gio/glocalfileoutputstream.c:353
+#: gio/glocalfileoutputstream.c:447
 #, c-format
 msgid "Error closing file: %s"
 msgstr "Kļūda, aizverot datni — %s"
 
+#: gio/glocalfileinputstream.c:272 gio/glocalfileoutputstream.c:563
+#: gio/glocalfileoutputstream.c:1186
+#, c-format
+msgid "Error seeking in file: %s"
+msgstr "Kļūda, meklējot datnē — %s"
+
 #: gio/glocalfilemonitor.c:866
 msgid "Unable to find default local file monitor type"
 msgstr "Nevar atrast noklusēto lokālo datņu novērošanas tipu"
 
-#: gio/glocalfileoutputstream.c:214 gio/glocalfileoutputstream.c:292
-#: gio/glocalfileoutputstream.c:328 gio/glocalfileoutputstream.c:816
+#: gio/glocalfileoutputstream.c:220 gio/glocalfileoutputstream.c:298
+#: gio/glocalfileoutputstream.c:334 gio/glocalfileoutputstream.c:822
 #, c-format
 msgid "Error writing to file: %s"
 msgstr "Kļūda, rakstot datnē — %s"
 
-#: gio/glocalfileoutputstream.c:374
+#: gio/glocalfileoutputstream.c:380
 #, c-format
 msgid "Error removing old backup link: %s"
 msgstr "Kļūda, dzēšot vecu rezerves kopijas saiti — %s"
 
-#: gio/glocalfileoutputstream.c:388 gio/glocalfileoutputstream.c:401
+#: gio/glocalfileoutputstream.c:394 gio/glocalfileoutputstream.c:407
 #, c-format
 msgid "Error creating backup copy: %s"
 msgstr "Kļūda, veidojot rezerves kopiju — %s"
 
-#: gio/glocalfileoutputstream.c:419
+#: gio/glocalfileoutputstream.c:425
 #, c-format
 msgid "Error renaming temporary file: %s"
 msgstr "Kļūda, pārsaucot pagaidu datni — %s"
 
-#: gio/glocalfileoutputstream.c:603 gio/glocalfileoutputstream.c:1168
+#: gio/glocalfileoutputstream.c:609 gio/glocalfileoutputstream.c:1237
 #, c-format
 msgid "Error truncating file: %s"
 msgstr "Kļūda, apraujot datni — %s"
 
-#: gio/glocalfileoutputstream.c:656 gio/glocalfileoutputstream.c:894
-#: gio/glocalfileoutputstream.c:1149 gio/gsubprocess.c:380
+#: gio/glocalfileoutputstream.c:662 gio/glocalfileoutputstream.c:907
+#: gio/glocalfileoutputstream.c:1218 gio/gsubprocess.c:226
 #, c-format
 msgid "Error opening file “%s”: %s"
 msgstr "Kļūda, atverot datni “%s” — %s"
 
-#: gio/glocalfileoutputstream.c:928
+#: gio/glocalfileoutputstream.c:957
 msgid "Target file is a directory"
 msgstr "Mērķa datne ir mape"
 
-#: gio/glocalfileoutputstream.c:933
+#: gio/glocalfileoutputstream.c:971
 msgid "Target file is not a regular file"
 msgstr "Mērķa datne nav parasta datne"
 
-#: gio/glocalfileoutputstream.c:945
+#: gio/glocalfileoutputstream.c:1013
 msgid "The file was externally modified"
 msgstr "Datne tika mainīta no ārpuses"
 
-#: gio/glocalfileoutputstream.c:1133
+#: gio/glocalfileoutputstream.c:1202
 #, c-format
 msgid "Error removing old file: %s"
 msgstr "Kļūda, dzēšot veco datni — %s"
@@ -3484,11 +3478,11 @@ msgstr "Resurss pie “%s” nav mape"
 msgid "Input stream doesn’t implement seek"
 msgstr "Ievades plūsma neatbalsta meklēšanu"
 
-#: gio/gresource-tool.c:499
+#: gio/gresource-tool.c:500
 msgid "List sections containing resources in an elf FILE"
 msgstr "Uzskaitīt sadaļas, kas satur resursus elf DATNĒ"
 
-#: gio/gresource-tool.c:505
+#: gio/gresource-tool.c:506
 msgid ""
 "List resources\n"
 "If SECTION is given, only list resources in this section\n"
@@ -3498,15 +3492,15 @@ msgstr ""
 "Ja ir norādīta SADAĻA, uzskaitīt resursus šajā sadaļā\n"
 "Ja ir norādīts CEĻŠ, uzskaitīt tikai atbilstošus resursus"
 
-#: gio/gresource-tool.c:508 gio/gresource-tool.c:518
+#: gio/gresource-tool.c:509 gio/gresource-tool.c:519
 msgid "FILE [PATH]"
 msgstr "DATNE [CEĻŠ]"
 
-#: gio/gresource-tool.c:509 gio/gresource-tool.c:519 gio/gresource-tool.c:526
+#: gio/gresource-tool.c:510 gio/gresource-tool.c:520 gio/gresource-tool.c:527
 msgid "SECTION"
 msgstr "SADAĻA"
 
-#: gio/gresource-tool.c:514
+#: gio/gresource-tool.c:515
 msgid ""
 "List resources with details\n"
 "If SECTION is given, only list resources in this section\n"
@@ -3518,15 +3512,15 @@ msgstr ""
 "Ja ir norādīts CEĻŠ, uzskaitīt tikai atbilstošus resursus\n"
 "Informācija iekļauj sadaļu, izmēru un saspiešanu"
 
-#: gio/gresource-tool.c:524
+#: gio/gresource-tool.c:525
 msgid "Extract a resource file to stdout"
 msgstr "Izvilkt resursu datni uz stdout"
 
-#: gio/gresource-tool.c:525
+#: gio/gresource-tool.c:526
 msgid "FILE PATH"
 msgstr "DATNE CEĻŠ"
 
-#: gio/gresource-tool.c:539
+#: gio/gresource-tool.c:540
 msgid ""
 "Usage:\n"
 "  gresource [--section SECTION] COMMAND [ARGS…]\n"
@@ -3554,7 +3548,7 @@ msgstr ""
 "Lietojiet “gresource help KOMANDA”, lai saņemtu detalizētu palīdzību.\n"
 "\n"
 
-#: gio/gresource-tool.c:553
+#: gio/gresource-tool.c:554
 #, c-format
 msgid ""
 "Usage:\n"
@@ -3569,19 +3563,19 @@ msgstr ""
 "%s\n"
 "\n"
 
-#: gio/gresource-tool.c:560
+#: gio/gresource-tool.c:561
 msgid "  SECTION   An (optional) elf section name\n"
 msgstr "  SADAĻA   (Neobligāts) elf sadaļas nosaukums\n"
 
-#: gio/gresource-tool.c:564 gio/gsettings-tool.c:701
+#: gio/gresource-tool.c:565 gio/gsettings-tool.c:706
 msgid "  COMMAND   The (optional) command to explain\n"
 msgstr "  KOMANDA  (neobligāta) komanda, ko izskaidrot\n"
 
-#: gio/gresource-tool.c:570
+#: gio/gresource-tool.c:571
 msgid "  FILE      An elf file (a binary or a shared library)\n"
 msgstr "  DATNE     elf datne (bināra datne vai koplietota bibliotēka)\n"
 
-#: gio/gresource-tool.c:573
+#: gio/gresource-tool.c:574
 msgid ""
 "  FILE      An elf file (a binary or a shared library)\n"
 "            or a compiled resource file\n"
@@ -3589,23 +3583,23 @@ msgstr ""
 "  DATNE     elf datne (bināra datne vai koplietota bibliotēka)\n"
 "            vai saspiests resursu datne\n"
 
-#: gio/gresource-tool.c:577
+#: gio/gresource-tool.c:578
 msgid "[PATH]"
 msgstr "[CEĻŠ]"
 
-#: gio/gresource-tool.c:579
+#: gio/gresource-tool.c:580
 msgid "  PATH      An (optional) resource path (may be partial)\n"
 msgstr "  CEĻŠ      (Neobligāts) resursa ceļš (var būt daļējs)\n"
 
-#: gio/gresource-tool.c:580
+#: gio/gresource-tool.c:581
 msgid "PATH"
 msgstr "CEĻŠ"
 
-#: gio/gresource-tool.c:582
+#: gio/gresource-tool.c:583
 msgid "  PATH      A resource path\n"
 msgstr "  CEĻŠ      Resursa ceļš\n"
 
-#: gio/gsettings-tool.c:49 gio/gsettings-tool.c:70 gio/gsettings-tool.c:906
+#: gio/gsettings-tool.c:49 gio/gsettings-tool.c:70 gio/gsettings-tool.c:911
 #, c-format
 msgid "No such schema “%s”\n"
 msgstr "Nav tādas shēmas “%s”\n"
@@ -3636,35 +3630,35 @@ msgstr "Ceļam jābeidzas ar slīpsvītru (/)\n"
 msgid "Path must not contain two adjacent slashes (//)\n"
 msgstr "Ceļš nedrīkst saturēt divas blakus esošas slīpsvītras (//)\n"
 
-#: gio/gsettings-tool.c:536
+#: gio/gsettings-tool.c:541
 msgid "The provided value is outside of the valid range\n"
 msgstr "Dotā vērtība ir ārpus derīgo vērtību intervāla\n"
 
-#: gio/gsettings-tool.c:543
+#: gio/gsettings-tool.c:548
 msgid "The key is not writable\n"
 msgstr "Atslēga nav rakstāma\n"
 
-#: gio/gsettings-tool.c:579
+#: gio/gsettings-tool.c:584
 msgid "List the installed (non-relocatable) schemas"
 msgstr "Saraksts ar instalētām (nepārvietojamām) shēmām"
 
-#: gio/gsettings-tool.c:585
+#: gio/gsettings-tool.c:590
 msgid "List the installed relocatable schemas"
 msgstr "Saraksts ar instalētam pārvietojamām shēmām"
 
-#: gio/gsettings-tool.c:591
+#: gio/gsettings-tool.c:596
 msgid "List the keys in SCHEMA"
 msgstr "Atslēgu saraksts SHĒMĀ"
 
-#: gio/gsettings-tool.c:592 gio/gsettings-tool.c:598 gio/gsettings-tool.c:641
+#: gio/gsettings-tool.c:597 gio/gsettings-tool.c:603 gio/gsettings-tool.c:646
 msgid "SCHEMA[:PATH]"
 msgstr "SHĒMA[:CEĻŠ]"
 
-#: gio/gsettings-tool.c:597
+#: gio/gsettings-tool.c:602
 msgid "List the children of SCHEMA"
 msgstr "Bērnu skaits SHĒMĀ"
 
-#: gio/gsettings-tool.c:603
+#: gio/gsettings-tool.c:608
 msgid ""
 "List keys and values, recursively\n"
 "If no SCHEMA is given, list all keys\n"
@@ -3672,48 +3666,48 @@ msgstr ""
 "Saraksts ar atslēgām un vērtībām; rekursīvi\n"
 "Ja nav dota shēma, rādīt visas atslēgas\n"
 
-#: gio/gsettings-tool.c:605
+#: gio/gsettings-tool.c:610
 msgid "[SCHEMA[:PATH]]"
 msgstr "[SHĒMA[:CEĻŠ]"
 
-#: gio/gsettings-tool.c:610
+#: gio/gsettings-tool.c:615
 msgid "Get the value of KEY"
 msgstr "Saņemt vērtību ATSLĒGAI"
 
-#: gio/gsettings-tool.c:611 gio/gsettings-tool.c:617 gio/gsettings-tool.c:623
-#: gio/gsettings-tool.c:635 gio/gsettings-tool.c:647
+#: gio/gsettings-tool.c:616 gio/gsettings-tool.c:622 gio/gsettings-tool.c:628
+#: gio/gsettings-tool.c:640 gio/gsettings-tool.c:652
 msgid "SCHEMA[:PATH] KEY"
 msgstr "SHĒMA[:CEĻŠ] ATSLĒGA"
 
-#: gio/gsettings-tool.c:616
+#: gio/gsettings-tool.c:621
 msgid "Query the range of valid values for KEY"
 msgstr "Vaicājums derīgo vērtību intervālam ATSLĒGAI"
 
-#: gio/gsettings-tool.c:622
+#: gio/gsettings-tool.c:627
 msgid "Query the description for KEY"
 msgstr "Vaicāt aprakstu ATSLĒGAI"
 
-#: gio/gsettings-tool.c:628
+#: gio/gsettings-tool.c:633
 msgid "Set the value of KEY to VALUE"
 msgstr "Iestatīt ATSLĒGTAS vērtību uz VĒRTĪBA"
 
-#: gio/gsettings-tool.c:629
+#: gio/gsettings-tool.c:634
 msgid "SCHEMA[:PATH] KEY VALUE"
 msgstr "SHĒMA[:CEĻŠ] ATSLĒGA VĒRTĪBA"
 
-#: gio/gsettings-tool.c:634
+#: gio/gsettings-tool.c:639
 msgid "Reset KEY to its default value"
 msgstr "Pārstatīt ATSLĒGAS vērtību uz tās noklusēto"
 
-#: gio/gsettings-tool.c:640
+#: gio/gsettings-tool.c:645
 msgid "Reset all keys in SCHEMA to their defaults"
 msgstr "Atstatīt visas atslēgas SHĒMĀ uz to noklusētajām vērtībām"
 
-#: gio/gsettings-tool.c:646
+#: gio/gsettings-tool.c:651
 msgid "Check if KEY is writable"
 msgstr "Pārbaudīt, vai ATSLĒGA ir rakstāma"
 
-#: gio/gsettings-tool.c:652
+#: gio/gsettings-tool.c:657
 msgid ""
 "Monitor KEY for changes.\n"
 "If no KEY is specified, monitor all keys in SCHEMA.\n"
@@ -3723,11 +3717,11 @@ msgstr ""
 "Ja nav norādīta ATSLĒGA, novērot visas atslēgas SHĒMĀ.\n"
 "Izmantojiet ^C, lai pārtrauktu novērošanu.\n"
 
-#: gio/gsettings-tool.c:655
+#: gio/gsettings-tool.c:660
 msgid "SCHEMA[:PATH] [KEY]"
 msgstr "SHĒMA[:CEĻŠ] [ATSLĒGA]"
 
-#: gio/gsettings-tool.c:667
+#: gio/gsettings-tool.c:672
 msgid ""
 "Usage:\n"
 "  gsettings --version\n"
@@ -3775,7 +3769,7 @@ msgstr ""
 "Lietojiet “gsettings help KOMANDA”, lai saņemtu sīkāku palīdzību.\n"
 "\n"
 
-#: gio/gsettings-tool.c:691
+#: gio/gsettings-tool.c:696
 #, c-format
 msgid ""
 "Usage:\n"
@@ -3790,11 +3784,11 @@ msgstr ""
 "%s\n"
 "\n"
 
-#: gio/gsettings-tool.c:697
+#: gio/gsettings-tool.c:702
 msgid "  SCHEMADIR A directory to search for additional schemas\n"
 msgstr "  SHĒMAS_MAPE Mape, kurā meklēt papildu shēmas\n"
 
-#: gio/gsettings-tool.c:705
+#: gio/gsettings-tool.c:710
 msgid ""
 "  SCHEMA    The name of the schema\n"
 "  PATH      The path, for relocatable schemas\n"
@@ -3802,32 +3796,32 @@ msgstr ""
 "  SHĒMA     Shēmas nosaukums\n"
 "  CEĻŠ      Ceļš pārvietojamām shēmām\n"
 
-#: gio/gsettings-tool.c:710
+#: gio/gsettings-tool.c:715
 msgid "  KEY       The (optional) key within the schema\n"
 msgstr "  ATSLĒGA   (neobligāta) atslēga shēmā\n"
 
-#: gio/gsettings-tool.c:714
+#: gio/gsettings-tool.c:719
 msgid "  KEY       The key within the schema\n"
 msgstr "  ATSLĒGA   Atslēga shēmā\n"
 
-#: gio/gsettings-tool.c:718
+#: gio/gsettings-tool.c:723
 msgid "  VALUE     The value to set\n"
 msgstr "  VĒRTĪBA   Vērtība, ko iestatīt\n"
 
-#: gio/gsettings-tool.c:773
+#: gio/gsettings-tool.c:778
 #, c-format
 msgid "Could not load schemas from %s: %s\n"
 msgstr "Nevarēja ielādēt shēmas no “%s” — “%s”\n"
 
-#: gio/gsettings-tool.c:785
+#: gio/gsettings-tool.c:790
 msgid "No schemas installed\n"
 msgstr "Nav instalētu shēmu\n"
 
-#: gio/gsettings-tool.c:864
+#: gio/gsettings-tool.c:869
 msgid "Empty schema name given\n"
 msgstr "Dots tukšs shēmas nosaukums\n"
 
-#: gio/gsettings-tool.c:919
+#: gio/gsettings-tool.c:924
 #, c-format
 msgid "No such key “%s”\n"
 msgstr "Nav tādas atslēgas “%s”\n"
@@ -3979,7 +3973,6 @@ msgstr "Gaida ligzdas nosacījumu — %s"
 
 #: gio/gsocket.c:4804 gio/gsocket.c:4820 gio/gsocket.c:4833
 #, c-format
-#| msgid "Error sending message: %s"
 msgid "Unable to send message: %s"
 msgstr "Nevar nosūtīt ziņojumu — %s"
 
@@ -4160,27 +4153,27 @@ msgstr "Pagaidām nevar sameklēt “%s”"
 msgid "Error resolving “%s”"
 msgstr "Kļūda, sameklējot “%s”"
 
-#: gio/gtlscertificate.c:298
+#: gio/gtlscertificate.c:419
 msgid "No PEM-encoded private key found"
 msgstr "Nav atrasts PEM iekodēta privāta atslēga"
 
-#: gio/gtlscertificate.c:308
+#: gio/gtlscertificate.c:429
 msgid "Cannot decrypt PEM-encoded private key"
 msgstr "Nevarēja atšifrēt PEM-iekodētu privāto atslēgu"
 
-#: gio/gtlscertificate.c:319
+#: gio/gtlscertificate.c:440
 msgid "Could not parse PEM-encoded private key"
 msgstr "Nevarēja parsēt PEM-iekodētu privāto atslēgu"
 
-#: gio/gtlscertificate.c:346
+#: gio/gtlscertificate.c:467
 msgid "No PEM-encoded certificate found"
 msgstr "Nav atrasts PEM-iekodēts sertifikāts"
 
-#: gio/gtlscertificate.c:355
+#: gio/gtlscertificate.c:476
 msgid "Could not parse PEM-encoded certificate"
 msgstr "Nevarēja parsēt PEM-iekodētu sertifikātu"
 
-#: gio/gtlscertificate.c:710
+#: gio/gtlscertificate.c:832
 msgid "This GTlsBackend does not support creating PKCS #11 certificates"
 msgstr "Šis GTlsBackend neatbalsta PKCS #11 sertifikātu izveidošanu"
 
@@ -4271,7 +4264,7 @@ msgstr "Kļūda, nolasot datnes deskriptoru — %s"
 msgid "Error closing file descriptor: %s"
 msgstr "Kļūda, aizverot datnes deskriptoru — %s"
 
-#: gio/gunixmounts.c:2780 gio/gunixmounts.c:2833
+#: gio/gunixmounts.c:2785 gio/gunixmounts.c:2838
 msgid "Filesystem root"
 msgstr "Datņu sistēmas sakne"
 
@@ -4282,7 +4275,7 @@ msgstr "Datņu sistēmas sakne"
 msgid "Error writing to file descriptor: %s"
 msgstr "Kļūda, rakstot datnes deskriptorā — %s"
 
-#: gio/gunixsocketaddress.c:243
+#: gio/gunixsocketaddress.c:244
 msgid "Abstract UNIX domain socket addresses not supported on this system"
 msgstr "Abstraktas UNIX domēna ligzdas uz šīs sistēmas nav atbalstītas"
 
@@ -4353,129 +4346,129 @@ msgstr "Palaist dbus servisu"
 msgid "Wrong args\n"
 msgstr "Nepareizi parametri\n"
 
-#: glib/gbookmarkfile.c:768
+#: glib/gbookmarkfile.c:777
 #, c-format
 msgid "Unexpected attribute “%s” for element “%s”"
 msgstr "Negaidīts atribūts “%s” elementam “%s”"
 
-#: glib/gbookmarkfile.c:779 glib/gbookmarkfile.c:859 glib/gbookmarkfile.c:869
-#: glib/gbookmarkfile.c:982
+#: glib/gbookmarkfile.c:788 glib/gbookmarkfile.c:868 glib/gbookmarkfile.c:878
+#: glib/gbookmarkfile.c:991
 #, c-format
 msgid "Attribute “%s” of element “%s” not found"
 msgstr "Atribūts “%s” elementam “%s” netika atrasts"
 
-#: glib/gbookmarkfile.c:1191 glib/gbookmarkfile.c:1256
-#: glib/gbookmarkfile.c:1320 glib/gbookmarkfile.c:1330
+#: glib/gbookmarkfile.c:1200 glib/gbookmarkfile.c:1265
+#: glib/gbookmarkfile.c:1329 glib/gbookmarkfile.c:1339
 #, c-format
 msgid "Unexpected tag “%s”, tag “%s” expected"
 msgstr "Negaidīta birka “%s”, tika gaidīt birka “%s”"
 
-#: glib/gbookmarkfile.c:1216 glib/gbookmarkfile.c:1230
-#: glib/gbookmarkfile.c:1298 glib/gbookmarkfile.c:1344
+#: glib/gbookmarkfile.c:1225 glib/gbookmarkfile.c:1239
+#: glib/gbookmarkfile.c:1307 glib/gbookmarkfile.c:1353
 #, c-format
 msgid "Unexpected tag “%s” inside “%s”"
 msgstr "Negaidīta birka “%s” iekš “%s”"
 
-#: glib/gbookmarkfile.c:1624
+#: glib/gbookmarkfile.c:1633
 #, c-format
 msgid "Invalid date/time ‘%s’ in bookmark file"
 msgstr "Nederīgs datums/laiks “%s” grāmatzīmes datnē"
 
-#: glib/gbookmarkfile.c:1827
+#: glib/gbookmarkfile.c:1836
 msgid "No valid bookmark file found in data dirs"
 msgstr "Nav atrasts derīga grāmatzīmes datne datu mapēs"
 
-#: glib/gbookmarkfile.c:2028
+#: glib/gbookmarkfile.c:2037
 #, c-format
 msgid "A bookmark for URI “%s” already exists"
 msgstr "Grāmatzīme ar URI “%s” jau eksistē"
 
-#: glib/gbookmarkfile.c:2077 glib/gbookmarkfile.c:2235
-#: glib/gbookmarkfile.c:2320 glib/gbookmarkfile.c:2400
-#: glib/gbookmarkfile.c:2485 glib/gbookmarkfile.c:2619
-#: glib/gbookmarkfile.c:2752 glib/gbookmarkfile.c:2887
-#: glib/gbookmarkfile.c:2929 glib/gbookmarkfile.c:3026
-#: glib/gbookmarkfile.c:3147 glib/gbookmarkfile.c:3341
-#: glib/gbookmarkfile.c:3482 glib/gbookmarkfile.c:3701
-#: glib/gbookmarkfile.c:3790 glib/gbookmarkfile.c:3879
-#: glib/gbookmarkfile.c:3998
+#: glib/gbookmarkfile.c:2086 glib/gbookmarkfile.c:2244
+#: glib/gbookmarkfile.c:2329 glib/gbookmarkfile.c:2409
+#: glib/gbookmarkfile.c:2494 glib/gbookmarkfile.c:2628
+#: glib/gbookmarkfile.c:2761 glib/gbookmarkfile.c:2896
+#: glib/gbookmarkfile.c:2938 glib/gbookmarkfile.c:3035
+#: glib/gbookmarkfile.c:3156 glib/gbookmarkfile.c:3350
+#: glib/gbookmarkfile.c:3491 glib/gbookmarkfile.c:3710
+#: glib/gbookmarkfile.c:3799 glib/gbookmarkfile.c:3888
+#: glib/gbookmarkfile.c:4007
 #, c-format
 msgid "No bookmark found for URI “%s”"
 msgstr "Nav atrasta grāmatzīme URI “%s”"
 
-#: glib/gbookmarkfile.c:2409
+#: glib/gbookmarkfile.c:2418
 #, c-format
 msgid "No MIME type defined in the bookmark for URI “%s”"
 msgstr "Nav definēts MIME tips grāmatzīmē URI “%s”"
 
-#: glib/gbookmarkfile.c:2494
+#: glib/gbookmarkfile.c:2503
 #, c-format
 msgid "No private flag has been defined in bookmark for URI “%s”"
 msgstr "Nav definēti privātie karogi grāmatzīmēs URI “%s”"
 
-#: glib/gbookmarkfile.c:3035
+#: glib/gbookmarkfile.c:3044
 #, c-format
 msgid "No groups set in bookmark for URI “%s”"
 msgstr "Nav iestatītas grupas grāmatzīmēs URI “%s”"
 
-#: glib/gbookmarkfile.c:3503 glib/gbookmarkfile.c:3711
+#: glib/gbookmarkfile.c:3512 glib/gbookmarkfile.c:3720
 #, c-format
 msgid "No application with name “%s” registered a bookmark for “%s”"
 msgstr "Neviena lietotne ar nosaukumu “%s” nav reģistrējusi “%s” grāmatzīmi"
 
-#: glib/gbookmarkfile.c:3734
+#: glib/gbookmarkfile.c:3743
 #, c-format
 msgid "Failed to expand exec line “%s” with URI “%s”"
 msgstr "Neizdevās izvērst exec rindu “%s” ar URI “%s”"
 
-#: glib/gconvert.c:467
+#: glib/gconvert.c:468
 msgid "Unrepresentable character in conversion input"
 msgstr "Neattēlojama rakstzīme konversijas ievadē"
 
-#: glib/gconvert.c:494 glib/gutf8.c:871 glib/gutf8.c:1083 glib/gutf8.c:1220
+#: glib/gconvert.c:495 glib/gutf8.c:871 glib/gutf8.c:1083 glib/gutf8.c:1220
 #: glib/gutf8.c:1324
 msgid "Partial character sequence at end of input"
 msgstr "Daļēja simbolu secība ievades beigās"
 
-#: glib/gconvert.c:763
+#: glib/gconvert.c:764
 #, c-format
 msgid "Cannot convert fallback “%s” to codeset “%s”"
 msgstr "Nevar pārveidot atkāpšanos “%s” uz rakstzīmju kopu “%s”"
 
-#: glib/gconvert.c:935
+#: glib/gconvert.c:936
 msgid "Embedded NUL byte in conversion input"
 msgstr "Iegults NUL baits konversijas ievadē"
 
-#: glib/gconvert.c:956
+#: glib/gconvert.c:957
 msgid "Embedded NUL byte in conversion output"
 msgstr "Iegults NUL baits konversijas izvadē"
 
-#: glib/gconvert.c:1641
+#: glib/gconvert.c:1688
 #, c-format
 msgid "The URI “%s” is not an absolute URI using the “file” scheme"
 msgstr "URI “%s” nav absolūtais URI, lietojot “file” shēmu"
 
-#: glib/gconvert.c:1651
+#: glib/gconvert.c:1698
 #, c-format
 msgid "The local file URI “%s” may not include a “#”"
 msgstr "Lokālās datnes URI “%s” nedrīkst saturēt “#”"
 
-#: glib/gconvert.c:1668
+#: glib/gconvert.c:1715
 #, c-format
 msgid "The URI “%s” is invalid"
 msgstr "URI “%s” nav pareizs"
 
-#: glib/gconvert.c:1680
+#: glib/gconvert.c:1727
 #, c-format
 msgid "The hostname of the URI “%s” is invalid"
 msgstr "Resursdatora nosaukuma URI “%s” nav pareizs"
 
-#: glib/gconvert.c:1696
+#: glib/gconvert.c:1743
 #, c-format
 msgid "The URI “%s” contains invalidly escaped characters"
 msgstr "URI “%s” satur nepareizi veidotas atsoļa rakstzīmes"
 
-#: glib/gconvert.c:1768
+#: glib/gconvert.c:1815
 #, c-format
 msgid "The pathname “%s” is not an absolute path"
 msgstr "Ceļa nosaukums “%s” nav absolūts ceļš"
@@ -4893,7 +4886,7 @@ msgctxt "GDateTime"
 msgid "PM"
 msgstr "PM"
 
-#: glib/gdir.c:154
+#: glib/gdir.c:156
 #, c-format
 msgid "Error opening directory “%s”: %s"
 msgstr "Kļūda, atverot direktoriju “%s” — %s"
@@ -4921,7 +4914,7 @@ msgstr "Datne “%s” ir pārāk liela"
 msgid "Failed to read from file “%s”: %s"
 msgstr "Neizdevās nolasīt no datnes “%s” — %s"
 
-#: glib/gfileutils.c:904 glib/gfileutils.c:979 glib/gfileutils.c:1476
+#: glib/gfileutils.c:904 glib/gfileutils.c:979 glib/gfileutils.c:1468
 #, c-format
 msgid "Failed to open file “%s”: %s"
 msgstr "Neizdevās atvērt datni “%s” — %s"
@@ -4951,27 +4944,27 @@ msgstr "Neizdevās rakstīt datnē “%s” — write() neizdevās — %s"
 msgid "Failed to write file “%s”: fsync() failed: %s"
 msgstr "Neizdevās rakstīt datnē “%s” — fsync() neizdevās — %s"
 
-#: glib/gfileutils.c:1365 glib/gfileutils.c:1780
+#: glib/gfileutils.c:1357 glib/gfileutils.c:1772
 #, c-format
 msgid "Failed to create file “%s”: %s"
 msgstr "Neizdevās izveidot datni “%s” — %s"
 
-#: glib/gfileutils.c:1410
+#: glib/gfileutils.c:1402
 #, c-format
 msgid "Existing file “%s” could not be removed: g_unlink() failed: %s"
 msgstr "Nevarēja izdzēst esošo datni “%s” — g_unlink() neizdevās — %s"
 
-#: glib/gfileutils.c:1745
+#: glib/gfileutils.c:1737
 #, c-format
 msgid "Template “%s” invalid, should not contain a “%s”"
 msgstr "Veidne “%s” ir nepareiza, nedrīkstētu saturēt “%s”"
 
-#: glib/gfileutils.c:1758
+#: glib/gfileutils.c:1750
 #, c-format
 msgid "Template “%s” doesn’t contain XXXXXX"
 msgstr "Veidne “%s” nesatur XXXXXX"
 
-#: glib/gfileutils.c:2318 glib/gfileutils.c:2347
+#: glib/gfileutils.c:2310 glib/gfileutils.c:2339
 #, c-format
 msgid "Failed to read the symbolic link “%s”: %s"
 msgstr "Neizdevās nolasīt simbolisko saiti “%s” — %s"
@@ -4997,15 +4990,15 @@ msgstr "Kanāls pārtrūkst daļējā rakstzīmē"
 msgid "Can’t do a raw read in g_io_channel_read_to_end"
 msgstr "Neizdevās izpildīt jēllasīšanu iekš g_io_channel_read_to_end"
 
-#: glib/gkeyfile.c:789
+#: glib/gkeyfile.c:790
 msgid "Valid key file could not be found in search dirs"
 msgstr "Meklēšanas mapēs nevarēja atrast derīgu atslēgu"
 
-#: glib/gkeyfile.c:826
+#: glib/gkeyfile.c:827
 msgid "Not a regular file"
 msgstr "Nav parasta datne"
 
-#: glib/gkeyfile.c:1281
+#: glib/gkeyfile.c:1282
 #, c-format
 msgid ""
 "Key file contains line “%s” which is not a key-value pair, group, or comment"
@@ -5013,50 +5006,50 @@ msgstr ""
 "Atslēgu datne satur rindu “%s”, kura nav atslēgas vērtības pāris, grupa vai "
 "komentārs"
 
-#: glib/gkeyfile.c:1338
+#: glib/gkeyfile.c:1339
 #, c-format
 msgid "Invalid group name: %s"
 msgstr "Nederīgs grupas nosaukums — %s"
 
-#: glib/gkeyfile.c:1360
+#: glib/gkeyfile.c:1361
 msgid "Key file does not start with a group"
 msgstr "Atslēgu datne nesākas ar grupu"
 
-#: glib/gkeyfile.c:1386
+#: glib/gkeyfile.c:1387
 #, c-format
 msgid "Invalid key name: %s"
 msgstr "Nederīgs atslēgas nosaukums — %s"
 
-#: glib/gkeyfile.c:1413
+#: glib/gkeyfile.c:1414
 #, c-format
 msgid "Key file contains unsupported encoding “%s”"
 msgstr "Atslēgu datne satur neatbalstītu kodējumu “%s”"
 
-#: glib/gkeyfile.c:1662 glib/gkeyfile.c:1835 glib/gkeyfile.c:3288
-#: glib/gkeyfile.c:3352 glib/gkeyfile.c:3482 glib/gkeyfile.c:3614
-#: glib/gkeyfile.c:3760 glib/gkeyfile.c:3995 glib/gkeyfile.c:4062
+#: glib/gkeyfile.c:1663 glib/gkeyfile.c:1836 glib/gkeyfile.c:3289
+#: glib/gkeyfile.c:3353 glib/gkeyfile.c:3483 glib/gkeyfile.c:3615
+#: glib/gkeyfile.c:3761 glib/gkeyfile.c:3996 glib/gkeyfile.c:4063
 #, c-format
 msgid "Key file does not have group “%s”"
 msgstr "Atslēgu datnei nav grupa “%s”"
 
-#: glib/gkeyfile.c:1790
+#: glib/gkeyfile.c:1791
 #, c-format
 msgid "Key file does not have key “%s” in group “%s”"
 msgstr "Atslēgu datnei nav atslēgas “%s” grupā “%s”"
 
-#: glib/gkeyfile.c:1952 glib/gkeyfile.c:2068
+#: glib/gkeyfile.c:1953 glib/gkeyfile.c:2069
 #, c-format
 msgid "Key file contains key “%s” with value “%s” which is not UTF-8"
 msgstr "Atslēgu datne satur atslēgu “%s” ar vērtību “%s” kas nav UTF-8"
 
-#: glib/gkeyfile.c:1972 glib/gkeyfile.c:2088 glib/gkeyfile.c:2530
+#: glib/gkeyfile.c:1973 glib/gkeyfile.c:2089 glib/gkeyfile.c:2531
 #, c-format
 msgid ""
 "Key file contains key “%s” which has a value that cannot be interpreted."
 msgstr ""
 "Atslēgu datne satur atslēgu “%s”. kurai ir vērtība, kuru nevar interpretēt."
 
-#: glib/gkeyfile.c:2748 glib/gkeyfile.c:3117
+#: glib/gkeyfile.c:2749 glib/gkeyfile.c:3118
 #, c-format
 msgid ""
 "Key file contains key “%s” in group “%s” which has a value that cannot be "
@@ -5065,36 +5058,36 @@ msgstr ""
 "Atslēgu datne satur atslēgu “%s” grupā “%s” kurai ir vērtība, ko nevar "
 "interpretēt."
 
-#: glib/gkeyfile.c:2826 glib/gkeyfile.c:2903
+#: glib/gkeyfile.c:2827 glib/gkeyfile.c:2904
 #, c-format
 msgid "Key “%s” in group “%s” has value “%s” where %s was expected"
 msgstr "Atslēgai “%s” grupā “%s” ir vērtība “%s”, kur bija jābūt %s"
 
-#: glib/gkeyfile.c:4305
+#: glib/gkeyfile.c:4306
 msgid "Key file contains escape character at end of line"
 msgstr "Atslēgu datne satur atsoļa rakstzīme rindas beigās"
 
-#: glib/gkeyfile.c:4327
+#: glib/gkeyfile.c:4328
 #, c-format
 msgid "Key file contains invalid escape sequence “%s”"
 msgstr "Atslēgu datne satur nederīgu atsoļa sekvenci “%s”"
 
-#: glib/gkeyfile.c:4471
+#: glib/gkeyfile.c:4472
 #, c-format
 msgid "Value “%s” cannot be interpreted as a number."
 msgstr "Vērtību “%s” nevar interpretēt kā skaitli."
 
-#: glib/gkeyfile.c:4485
+#: glib/gkeyfile.c:4486
 #, c-format
 msgid "Integer value “%s” out of range"
 msgstr "Veselā skaitļa “%s” vērtība ir ārpus apgabala"
 
-#: glib/gkeyfile.c:4518
+#: glib/gkeyfile.c:4519
 #, c-format
 msgid "Value “%s” cannot be interpreted as a float number."
 msgstr "Vērtību “%s” nevar interpretēt kā peldošo komatu."
 
-#: glib/gkeyfile.c:4557
+#: glib/gkeyfile.c:4558
 #, c-format
 msgid "Value “%s” cannot be interpreted as a boolean."
 msgstr "Vērtību “%s” nevar interpretēt kā Būla vērtību."
@@ -5377,248 +5370,248 @@ msgstr "Dubultā vērtība “%s” priekš %s ir ārpus apgabala"
 msgid "Error parsing option %s"
 msgstr "Kļūda, parsējot opciju %s"
 
-#: glib/goption.c:1570 glib/goption.c:1683
+#: glib/goption.c:1561 glib/goption.c:1674
 #, c-format
 msgid "Missing argument for %s"
 msgstr "Trūkst %s arguments"
 
-#: glib/goption.c:2194
+#: glib/goption.c:2185
 #, c-format
 msgid "Unknown option %s"
 msgstr "Nezināma opcija %s"
 
-#: glib/gregex.c:257
+#: glib/gregex.c:255
 msgid "corrupted object"
 msgstr "bojāts objekts"
 
-#: glib/gregex.c:259
+#: glib/gregex.c:257
 msgid "internal error or corrupted object"
 msgstr "Iekšējā kļūda vai bojāts objekts"
 
-#: glib/gregex.c:261
+#: glib/gregex.c:259
 msgid "out of memory"
 msgstr "beigusies atmiņa"
 
-#: glib/gregex.c:266
+#: glib/gregex.c:264
 msgid "backtracking limit reached"
 msgstr "atpakaļ izsekošanas limits ir sasniegts"
 
-#: glib/gregex.c:278 glib/gregex.c:286
+#: glib/gregex.c:276 glib/gregex.c:284
 msgid "the pattern contains items not supported for partial matching"
 msgstr "raksts satur elementus, kurus neatbalsta daļējā atbilstība"
 
-#: glib/gregex.c:280
+#: glib/gregex.c:278
 msgid "internal error"
 msgstr "iekšēja kļūda"
 
-#: glib/gregex.c:288
+#: glib/gregex.c:286
 msgid "back references as conditions are not supported for partial matching"
 msgstr "atpakaļ atsauces kā nosacījumus neatbalsta daļējā atbilstība"
 
-#: glib/gregex.c:297
+#: glib/gregex.c:295
 msgid "recursion limit reached"
 msgstr "rekursiju limits ir sasniegts"
 
-#: glib/gregex.c:299
+#: glib/gregex.c:297
 msgid "invalid combination of newline flags"
 msgstr "nederīga jauno rindu karogu kombinācija"
 
-#: glib/gregex.c:301
+#: glib/gregex.c:299
 msgid "bad offset"
 msgstr "slikta nobīde"
 
-#: glib/gregex.c:303
+#: glib/gregex.c:301
 msgid "short utf8"
 msgstr "īss utf8"
 
-#: glib/gregex.c:305
+#: glib/gregex.c:303
 msgid "recursion loop"
 msgstr "rekursijas cikls"
 
-#: glib/gregex.c:309
+#: glib/gregex.c:307
 msgid "unknown error"
 msgstr "nezināma kļūda"
 
-#: glib/gregex.c:329
+#: glib/gregex.c:327
 msgid "\\ at end of pattern"
 msgstr "\\ raksta beigās"
 
-#: glib/gregex.c:332
+#: glib/gregex.c:330
 msgid "\\c at end of pattern"
 msgstr "\\c raksta beigās"
 
-#: glib/gregex.c:335
+#: glib/gregex.c:333
 msgid "unrecognized character following \\"
 msgstr "pēc \\ seko neatpazīta rakstzīme"
 
-#: glib/gregex.c:338
+#: glib/gregex.c:336
 msgid "numbers out of order in {} quantifier"
 msgstr "skaitļi nav pareizā secībā {} kvantorā"
 
-#: glib/gregex.c:341
+#: glib/gregex.c:339
 msgid "number too big in {} quantifier"
 msgstr "skaitlis pārāk liels {} kvantorā"
 
-#: glib/gregex.c:344
+#: glib/gregex.c:342
 msgid "missing terminating ] for character class"
 msgstr "trūkst beigu “]” rakstzīmju klasei"
 
-#: glib/gregex.c:347
+#: glib/gregex.c:345
 msgid "invalid escape sequence in character class"
 msgstr "nederīga atsoļu sekvence rakstzīmju klasē"
 
-#: glib/gregex.c:350
+#: glib/gregex.c:348
 msgid "range out of order in character class"
 msgstr "rakstzīmju klasē apgabals ir ārpus secības"
 
-#: glib/gregex.c:353
+#: glib/gregex.c:351
 msgid "nothing to repeat"
 msgstr "nav ko atkārtot"
 
-#: glib/gregex.c:357
+#: glib/gregex.c:355
 msgid "unexpected repeat"
 msgstr "negaidīta atkārtošanās"
 
-#: glib/gregex.c:360
+#: glib/gregex.c:358
 msgid "unrecognized character after (? or (?-"
 msgstr "neatpazīta rakstzīme pēc (? vai (?-"
 
-#: glib/gregex.c:363
+#: glib/gregex.c:361
 msgid "POSIX named classes are supported only within a class"
 msgstr "POSIX nosauktās klases ir atbalstītas tikai klasēs"
 
-#: glib/gregex.c:366
+#: glib/gregex.c:364
 msgid "missing terminating )"
 msgstr "trūkst beigu )"
 
-#: glib/gregex.c:369
+#: glib/gregex.c:367
 msgid "reference to non-existent subpattern"
 msgstr "atsauce uz neesošu apakšrakstu"
 
-#: glib/gregex.c:372
+#: glib/gregex.c:370
 msgid "missing ) after comment"
 msgstr "trūkst ) pēc komentāra"
 
-#: glib/gregex.c:375
+#: glib/gregex.c:373
 msgid "regular expression is too large"
 msgstr "regulārā izteiksme ir pārāk gara"
 
-#: glib/gregex.c:378
+#: glib/gregex.c:376
 msgid "failed to get memory"
 msgstr "neizdevās iegūt atmiņu"
 
-#: glib/gregex.c:382
+#: glib/gregex.c:380
 msgid ") without opening ("
 msgstr ") bez atverošās ("
 
-#: glib/gregex.c:386
+#: glib/gregex.c:384
 msgid "code overflow"
 msgstr "koda pārpilde"
 
-#: glib/gregex.c:390
+#: glib/gregex.c:388
 msgid "unrecognized character after (?<"
 msgstr "neatpazīta rakstzīme pēc (?<"
 
-#: glib/gregex.c:393
+#: glib/gregex.c:391
 msgid "lookbehind assertion is not fixed length"
 msgstr "lookbehind pieņēmums nav fiksēta garuma"
 
-#: glib/gregex.c:396
+#: glib/gregex.c:394
 msgid "malformed number or name after (?("
 msgstr "slikti formatēts skaitlis vai nosaukums pēc (?("
 
-#: glib/gregex.c:399
+#: glib/gregex.c:397
 msgid "conditional group contains more than two branches"
 msgstr "nosacījuma grupa satur vairāk kā divus zarus"
 
-#: glib/gregex.c:402
+#: glib/gregex.c:400
 msgid "assertion expected after (?("
 msgstr "pēc (?( tiek sagaidīts pieņēmums"
 
 #. translators: '(?R' and '(?[+-]digits' are both meant as (groups of)
 #. * sequences here, '(?-54' would be an example for the second group.
 #.
-#: glib/gregex.c:409
+#: glib/gregex.c:407
 msgid "(?R or (?[+-]digits must be followed by )"
 msgstr "pēc (?R vai (?[+-]digits ir jāseko )"
 
-#: glib/gregex.c:412
+#: glib/gregex.c:410
 msgid "unknown POSIX class name"
 msgstr "nezināms POSIX klases nosaukums"
 
-#: glib/gregex.c:415
+#: glib/gregex.c:413
 msgid "POSIX collating elements are not supported"
 msgstr "POSIX savāktie elementi nav atbalstīti"
 
-#: glib/gregex.c:418
+#: glib/gregex.c:416
 msgid "character value in \\x{...} sequence is too large"
 msgstr "rakstzīmes vērtība \\x{...} sekvencē ir pārāk liela"
 
-#: glib/gregex.c:421
+#: glib/gregex.c:419
 msgid "invalid condition (?(0)"
 msgstr "nederīgs nosacījums (?(0)"
 
-#: glib/gregex.c:424
+#: glib/gregex.c:422
 msgid "\\C not allowed in lookbehind assertion"
 msgstr "\\C nav atļauts lookbehind pieņēmumā"
 
-#: glib/gregex.c:431
+#: glib/gregex.c:429
 msgid "escapes \\L, \\l, \\N{name}, \\U, and \\u are not supported"
 msgstr "atsoļi \\L, \\l, \\N{nosaukums}, \\U un \\u nav atbalstīti"
 
-#: glib/gregex.c:434
+#: glib/gregex.c:432
 msgid "recursive call could loop indefinitely"
 msgstr "rekursīvais izsaukums varētu cikloties bezgalīgi"
 
-#: glib/gregex.c:438
+#: glib/gregex.c:436
 msgid "unrecognized character after (?P"
 msgstr "neatpazīta rakstzīme pēc (?P"
 
-#: glib/gregex.c:441
+#: glib/gregex.c:439
 msgid "missing terminator in subpattern name"
 msgstr "trūkst nobeiguma apakšraksta nosaukumā"
 
-#: glib/gregex.c:444
+#: glib/gregex.c:442
 msgid "two named subpatterns have the same name"
 msgstr "divi nosaukti apakšraksti ir ar vienādiem nosaukumiem"
 
-#: glib/gregex.c:447
+#: glib/gregex.c:445
 msgid "malformed \\P or \\p sequence"
 msgstr "slikti formatēta \\P vai \\p sekvence"
 
-#: glib/gregex.c:450
+#: glib/gregex.c:448
 msgid "unknown property name after \\P or \\p"
 msgstr "nezināms īpašības nosaukums pēc \\P vai \\p"
 
-#: glib/gregex.c:453
+#: glib/gregex.c:451
 msgid "subpattern name is too long (maximum 32 characters)"
 msgstr "apakšraksta nosaukums ir pārāk liels (maksimums ir 32 rakstzīmes)"
 
-#: glib/gregex.c:456
+#: glib/gregex.c:454
 msgid "too many named subpatterns (maximum 10,000)"
 msgstr "pārāk daudz nosauktu apakšrakstu (maksimums ir 10 000)"
 
-#: glib/gregex.c:459
+#: glib/gregex.c:457
 msgid "octal value is greater than \\377"
 msgstr "astotnieku vērtība ir lielāka nekā \\377"
 
-#: glib/gregex.c:463
+#: glib/gregex.c:461
 msgid "overran compiling workspace"
 msgstr "pārtērēta kompilēšanas darba telpa"
 
-#: glib/gregex.c:467
+#: glib/gregex.c:465
 msgid "previously-checked referenced subpattern not found"
 msgstr "iepriekš pārbaudīts norādītais apakšraksts nav atrasts"
 
-#: glib/gregex.c:470
+#: glib/gregex.c:468
 msgid "DEFINE group contains more than one branch"
 msgstr "DEFINE grupa satur vairāk kā vienu zaru"
 
-#: glib/gregex.c:473
+#: glib/gregex.c:471
 msgid "inconsistent NEWLINE options"
 msgstr "nekonsekventas NEWLINE opcijas"
 
-#: glib/gregex.c:476
+#: glib/gregex.c:474
 msgid ""
 "\\g is not followed by a braced, angle-bracketed, or quoted name or number, "
 "or by a plain number"
@@ -5626,130 +5619,130 @@ msgstr ""
 "pēc \\g neseko nosaukums iekavās, leņķa iekavās vai pēdiņās vai vienkāršs "
 "skaitlis"
 
-#: glib/gregex.c:480
+#: glib/gregex.c:478
 msgid "a numbered reference must not be zero"
 msgstr "skaitliska atsauce nevar būt nulle"
 
-#: glib/gregex.c:483
+#: glib/gregex.c:481
 msgid "an argument is not allowed for (*ACCEPT), (*FAIL), or (*COMMIT)"
 msgstr "arguments nav atļauts priekš (*ACCEPT), (*FAIL) vai (*COMMIT)"
 
-#: glib/gregex.c:486
+#: glib/gregex.c:484
 msgid "(*VERB) not recognized"
 msgstr "(*VERB) nav atpazīts"
 
-#: glib/gregex.c:489
+#: glib/gregex.c:487
 msgid "number is too big"
 msgstr "skaitlis ir pārāk liels"
 
-#: glib/gregex.c:492
+#: glib/gregex.c:490
 msgid "missing subpattern name after (?&"
 msgstr "trūkst apakšraksta nosaukums pēc (?&"
 
-#: glib/gregex.c:495
+#: glib/gregex.c:493
 msgid "digit expected after (?+"
 msgstr "tika gaidīts cipars pēc (?+"
 
-#: glib/gregex.c:498
+#: glib/gregex.c:496
 msgid "] is an invalid data character in JavaScript compatibility mode"
 msgstr "] ir nederīga datu rakstzīme JavaScript savietojamības režīmā"
 
-#: glib/gregex.c:501
+#: glib/gregex.c:499
 msgid "different names for subpatterns of the same number are not allowed"
 msgstr "dažādi nosaukumi apakšrakstiem ir ar vienādiem numuriem nav atļauti"
 
-#: glib/gregex.c:504
+#: glib/gregex.c:502
 msgid "(*MARK) must have an argument"
 msgstr "(*MARK) jābūt ar argumentu"
 
-#: glib/gregex.c:507
+#: glib/gregex.c:505
 msgid "\\c must be followed by an ASCII character"
 msgstr "\\c jāseko ASCII rakstzīmei"
 
-#: glib/gregex.c:510
+#: glib/gregex.c:508
 msgid "\\k is not followed by a braced, angle-bracketed, or quoted name"
 msgstr "pēc \\k neseko nosaukums iekavās, leņķa iekavās vai pēdiņās"
 
-#: glib/gregex.c:513
+#: glib/gregex.c:511
 msgid "\\N is not supported in a class"
 msgstr "\\N nav atbalstīts klasē"
 
-#: glib/gregex.c:516
+#: glib/gregex.c:514
 msgid "too many forward references"
 msgstr "pārāk daudz atsauču uz priekšu"
 
-#: glib/gregex.c:519
+#: glib/gregex.c:517
 msgid "name is too long in (*MARK), (*PRUNE), (*SKIP), or (*THEN)"
 msgstr "nosaukums ir pārāk garš iekš (*MARK), (*PRUNE), (*SKIP) vai (*THEN)"
 
-#: glib/gregex.c:522
+#: glib/gregex.c:520
 msgid "character value in \\u.... sequence is too large"
 msgstr "rakstzīmes vērtība \\u.... sekvencē ir pārāk liela"
 
-#: glib/gregex.c:745 glib/gregex.c:1983
+#: glib/gregex.c:743 glib/gregex.c:1988
 #, c-format
 msgid "Error while matching regular expression %s: %s"
 msgstr "Kļūda, kamēr meklē atbilstības regulārajai izteiksmei %s — %s"
 
-#: glib/gregex.c:1316
+#: glib/gregex.c:1321
 msgid "PCRE library is compiled without UTF8 support"
 msgstr "PCRE bibliotēka ir kompilēta bez UTF8 atbalsta"
 
-#: glib/gregex.c:1320
+#: glib/gregex.c:1325
 msgid "PCRE library is compiled without UTF8 properties support"
 msgstr "PCRE bibliotēka ir kompilēta bez UTF8 īpašību atbalsta"
 
-#: glib/gregex.c:1328
+#: glib/gregex.c:1333
 msgid "PCRE library is compiled with incompatible options"
 msgstr "PCRE bibliotēka ir kompilēta ar UTF8 īpašību atbalstu"
 
-#: glib/gregex.c:1357
+#: glib/gregex.c:1362
 #, c-format
 msgid "Error while optimizing regular expression %s: %s"
 msgstr "Kļūda, optimizējot regulāro izteiksmi %s — %s"
 
-#: glib/gregex.c:1437
+#: glib/gregex.c:1442
 #, c-format
 msgid "Error while compiling regular expression %s at char %d: %s"
 msgstr "Kļūda, kompilējot regulāro izteiksmi %s pie rakstzīmes %d — %s"
 
-#: glib/gregex.c:2419
+#: glib/gregex.c:2427
 msgid "hexadecimal digit or “}” expected"
 msgstr "tika gaidīts heksadecimālais cipars vai “}”"
 
-#: glib/gregex.c:2435
+#: glib/gregex.c:2443
 msgid "hexadecimal digit expected"
 msgstr "tika gaidīts heksadecimālais cipars"
 
-#: glib/gregex.c:2475
+#: glib/gregex.c:2483
 msgid "missing “<” in symbolic reference"
 msgstr "simboliskajā norādē trūkst “<”"
 
-#: glib/gregex.c:2484
+#: glib/gregex.c:2492
 msgid "unfinished symbolic reference"
 msgstr "nepabeigta simboliskā norāde"
 
-#: glib/gregex.c:2491
+#: glib/gregex.c:2499
 msgid "zero-length symbolic reference"
 msgstr "simboliskās norādes garums ir nulle"
 
-#: glib/gregex.c:2502
+#: glib/gregex.c:2510
 msgid "digit expected"
 msgstr "tika gaidīts cipars"
 
-#: glib/gregex.c:2520
+#: glib/gregex.c:2528
 msgid "illegal symbolic reference"
 msgstr "neatļauta simboliskā norāde"
 
-#: glib/gregex.c:2583
+#: glib/gregex.c:2591
 msgid "stray final “\\”"
 msgstr "noklīdis beigu “\\”"
 
-#: glib/gregex.c:2587
+#: glib/gregex.c:2595
 msgid "unknown escape sequence"
 msgstr "nezināma atsoļa sekvence"
 
-#: glib/gregex.c:2597
+#: glib/gregex.c:2605
 #, c-format
 msgid "Error while parsing replacement text “%s” at char %lu: %s"
 msgstr "Kļūda, apstrādājot aizvietošanas tekstu “%s” pie rakstzīmes %lu — %s"
@@ -5778,82 +5771,82 @@ msgstr ""
 msgid "Text was empty (or contained only whitespace)"
 msgstr "Teksts bija tukšs (vai saturēja tikai tukšumus)"
 
-#: glib/gspawn.c:323
+#: glib/gspawn.c:308
 #, c-format
 msgid "Failed to read data from child process (%s)"
 msgstr "Nevarēja nolasīt datus no bērnprocesa (%s)"
 
-#: glib/gspawn.c:468
+#: glib/gspawn.c:458
 #, c-format
 msgid "Unexpected error in reading data from a child process (%s)"
 msgstr "Negaidīta kļūda, lasot datus no bērnprocesa (%s)"
 
-#: glib/gspawn.c:553
+#: glib/gspawn.c:543
 #, c-format
 msgid "Unexpected error in waitpid() (%s)"
 msgstr "Negaidīta kļūda waitpid() (%s)"
 
-#: glib/gspawn.c:1061 glib/gspawn-win32.c:1329
+#: glib/gspawn.c:1152 glib/gspawn-win32.c:1407
 #, c-format
 msgid "Child process exited with code %ld"
 msgstr "Bērna process beidza darbu ar kodu %ld"
 
-#: glib/gspawn.c:1069
+#: glib/gspawn.c:1160
 #, c-format
 msgid "Child process killed by signal %ld"
 msgstr "Bērna process tika pārtraukts ar signālu %ld"
 
-#: glib/gspawn.c:1076
+#: glib/gspawn.c:1167
 #, c-format
 msgid "Child process stopped by signal %ld"
 msgstr "Bērna process tika apturēts ar signālu %ld"
 
-#: glib/gspawn.c:1083
+#: glib/gspawn.c:1174
 #, c-format
 msgid "Child process exited abnormally"
 msgstr "Bērna process beidza darbu nenormāli"
 
-#: glib/gspawn.c:1548 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
+#: glib/gspawn.c:1793 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
 #, c-format
 msgid "Failed to read from child pipe (%s)"
 msgstr "Nevarēja nolasīt no bērna programkanāla (%s)"
 
-#: glib/gspawn.c:1806
+#: glib/gspawn.c:2095
 #, c-format
 msgid "Failed to spawn child process “%s” (%s)"
 msgstr "Nevarēja radīt bērnprocesu “%s” (%s)"
 
-#: glib/gspawn.c:1922
+#: glib/gspawn.c:2212
 #, c-format
 msgid "Failed to fork (%s)"
 msgstr "Neizdevās sadalīt (%s)"
 
-#: glib/gspawn.c:2077 glib/gspawn-win32.c:381
+#: glib/gspawn.c:2372 glib/gspawn-win32.c:381
 #, c-format
 msgid "Failed to change to directory “%s” (%s)"
 msgstr "Nevarēja pāriet uz direktoriju “%s” (%s)"
 
-#: glib/gspawn.c:2087
+#: glib/gspawn.c:2382
 #, c-format
 msgid "Failed to execute child process “%s” (%s)"
 msgstr "Nevarēja izpildīt bērnprocesu “%s” (%s)"
 
-#: glib/gspawn.c:2097
+#: glib/gspawn.c:2392
 #, c-format
 msgid "Failed to redirect output or input of child process (%s)"
 msgstr "Nevarēja novadīt bērnprocesa (%s) izvadi vai ievadi"
 
-#: glib/gspawn.c:2106
+#: glib/gspawn.c:2401
 #, c-format
 msgid "Failed to fork child process (%s)"
 msgstr "Nevarēja sazarot bērnprocesu (%s)"
 
-#: glib/gspawn.c:2114
+#: glib/gspawn.c:2409
 #, c-format
 msgid "Unknown error executing child process “%s”"
 msgstr "Nezināma kļūda, izpildot bērnprocesu “%s”"
 
-#: glib/gspawn.c:2138
+#: glib/gspawn.c:2433
 #, c-format
 msgid "Failed to read enough data from child pid pipe (%s)"
 msgstr ""
@@ -5878,48 +5871,48 @@ msgstr "Nevarēja izpildīt bērnprocesu (%s)"
 msgid "Invalid program name: %s"
 msgstr "Nederīgs programmas nosaukums — %s"
 
-#: glib/gspawn-win32.c:471 glib/gspawn-win32.c:725
+#: glib/gspawn-win32.c:471 glib/gspawn-win32.c:779
 #, c-format
 msgid "Invalid string in argument vector at %d: %s"
 msgstr "Nederīga virkne argumenta vektorā pie %d — %s"
 
-#: glib/gspawn-win32.c:482 glib/gspawn-win32.c:740
+#: glib/gspawn-win32.c:482 glib/gspawn-win32.c:794
 #, c-format
 msgid "Invalid string in environment: %s"
 msgstr "Nederīga virkne vidē — %s"
 
-#: glib/gspawn-win32.c:721
+#: glib/gspawn-win32.c:775
 #, c-format
 msgid "Invalid working directory: %s"
 msgstr "Nederīga darba mape — %s"
 
-#: glib/gspawn-win32.c:783
+#: glib/gspawn-win32.c:837
 #, c-format
 msgid "Failed to execute helper program (%s)"
 msgstr "Neizdevās izpildīt palīga programmu (%s)"
 
-#: glib/gspawn-win32.c:1056
+#: glib/gspawn-win32.c:1064
 msgid ""
 "Unexpected error in g_io_channel_win32_poll() reading data from a child "
 "process"
 msgstr ""
 "Negaidīta kļūda iekš g_io_channel_win32_poll(), lasot datus no bērnprocesa"
 
-#: glib/gstrfuncs.c:3335 glib/gstrfuncs.c:3437
+#: glib/gstrfuncs.c:3338 glib/gstrfuncs.c:3440
 msgid "Empty string is not a number"
 msgstr "Tukša virkne nav skaitlis"
 
-#: glib/gstrfuncs.c:3359
+#: glib/gstrfuncs.c:3362
 #, c-format
 msgid "“%s” is not a signed number"
 msgstr "“%s” nav skaitlis ar zīmi"
 
-#: glib/gstrfuncs.c:3369 glib/gstrfuncs.c:3473
+#: glib/gstrfuncs.c:3372 glib/gstrfuncs.c:3476
 #, c-format
 msgid "Number “%s” is out of bounds [%s, %s]"
 msgstr "Skaitlis “%s” ir ārpus robežām [%s, %s]"
 
-#: glib/gstrfuncs.c:3463
+#: glib/gstrfuncs.c:3466
 #, c-format
 msgid "“%s” is not an unsigned number"
 msgstr "“%s” nav skaitlis bez zīmes"
@@ -5949,7 +5942,6 @@ msgstr "Nepareizi iekodēta IP adrese “%.*s” iekš URI"
 
 #: glib/guri.c:613
 #, c-format
-#| msgid "Illegal encoded IP address ‘%.*s’ in URI"
 msgid "Illegal internationalized hostname ‘%.*s’ in URI"
 msgstr "Nepareizi internacionalizēts resursdatora nosaukums “%.*s” iekš URI"
 
@@ -5977,7 +5969,7 @@ msgstr "URI “%s” nav resursdatora komponentes"
 msgid "URI is not absolute, and no base URI was provided"
 msgstr "URI nav absolūts un netika dots bāzes URI"
 
-#: glib/guri.c:2209
+#: glib/guri.c:2213
 msgid "Missing ‘=’ and parameter value"
 msgstr "Trūkst “=” un parametra vērtības"
 
@@ -5999,150 +5991,150 @@ msgid "Character out of range for UTF-16"
 msgstr "Rakstzīme nav UTF-16 apgabalā"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2767
+#: glib/gutils.c:2727
 #, c-format
 msgid "%.1f kB"
 msgstr "%.1f kB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2769
+#: glib/gutils.c:2729
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2771
+#: glib/gutils.c:2731
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2773
+#: glib/gutils.c:2733
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2775
+#: glib/gutils.c:2735
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2777
+#: glib/gutils.c:2737
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2781
+#: glib/gutils.c:2741
 #, c-format
 msgid "%.1f KiB"
 msgstr "%.1f KiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2783
+#: glib/gutils.c:2743
 #, c-format
 msgid "%.1f MiB"
 msgstr "%.1f MiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2785
+#: glib/gutils.c:2745
 #, c-format
 msgid "%.1f GiB"
 msgstr "%.1f GiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2787
+#: glib/gutils.c:2747
 #, c-format
 msgid "%.1f TiB"
 msgstr "%.1f TiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2789
+#: glib/gutils.c:2749
 #, c-format
 msgid "%.1f PiB"
 msgstr "%.1f PiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2791
+#: glib/gutils.c:2751
 #, c-format
 msgid "%.1f EiB"
 msgstr "%.1f EiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2795
+#: glib/gutils.c:2755
 #, c-format
 msgid "%.1f kb"
 msgstr "%.1f kb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2797
+#: glib/gutils.c:2757
 #, c-format
 msgid "%.1f Mb"
 msgstr "%.1f Mb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2799
+#: glib/gutils.c:2759
 #, c-format
 msgid "%.1f Gb"
 msgstr "%.1f Gb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2801
+#: glib/gutils.c:2761
 #, c-format
 msgid "%.1f Tb"
 msgstr "%.1f Tb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2803
+#: glib/gutils.c:2763
 #, c-format
 msgid "%.1f Pb"
 msgstr "%.1f Pb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2805
+#: glib/gutils.c:2765
 #, c-format
 msgid "%.1f Eb"
 msgstr "%.1f Eb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2809
+#: glib/gutils.c:2769
 #, c-format
 msgid "%.1f Kib"
 msgstr "%.1f Kib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2811
+#: glib/gutils.c:2771
 #, c-format
 msgid "%.1f Mib"
 msgstr "%.1f Mib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2813
+#: glib/gutils.c:2773
 #, c-format
 msgid "%.1f Gib"
 msgstr "%.1f Gib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2815
+#: glib/gutils.c:2775
 #, c-format
 msgid "%.1f Tib"
 msgstr "%.1f Tib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2817
+#: glib/gutils.c:2777
 #, c-format
 msgid "%.1f Pib"
 msgstr "%.1f Pib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2819
+#: glib/gutils.c:2779
 #, c-format
 msgid "%.1f Eib"
 msgstr "%.1f Eib"
 
-#: glib/gutils.c:2853 glib/gutils.c:2970
+#: glib/gutils.c:2813 glib/gutils.c:2930
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
@@ -6150,7 +6142,7 @@ msgstr[0] "%u baits"
 msgstr[1] "%u baiti"
 msgstr[2] "%u baitu"
 
-#: glib/gutils.c:2857
+#: glib/gutils.c:2817
 #, c-format
 msgid "%u bit"
 msgid_plural "%u bits"
@@ -6159,7 +6151,7 @@ msgstr[1] "%u biti"
 msgstr[2] "%u bitu"
 
 #. Translators: the %s in "%s bytes" will always be replaced by a number.
-#: glib/gutils.c:2924
+#: glib/gutils.c:2884
 #, c-format
 msgid "%s byte"
 msgid_plural "%s bytes"
@@ -6168,7 +6160,7 @@ msgstr[1] "%s baiti"
 msgstr[2] "%s baitu"
 
 #. Translators: the %s in "%s bits" will always be replaced by a number.
-#: glib/gutils.c:2929
+#: glib/gutils.c:2889
 #, c-format
 msgid "%s bit"
 msgid_plural "%s bits"
@@ -6181,36 +6173,39 @@ msgstr[2] "%s bitu"
 #. * compatibility.  Users will not see this string unless a program is using this deprecated function.
 #. * Please translate as literally as possible.
 #.
-#: glib/gutils.c:2983
+#: glib/gutils.c:2943
 #, c-format
 msgid "%.1f KB"
 msgstr "%.1f KB"
 
-#: glib/gutils.c:2988
+#: glib/gutils.c:2948
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
-#: glib/gutils.c:2993
+#: glib/gutils.c:2953
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
-#: glib/gutils.c:2998
+#: glib/gutils.c:2958
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
-#: glib/gutils.c:3003
+#: glib/gutils.c:2963
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
-#: glib/gutils.c:3008
+#: glib/gutils.c:2968
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
+#~ msgid "Unable to load /var/lib/dbus/machine-id or /etc/machine-id: "
+#~ msgstr "Nevarēja ielādēt /var/lib/dbus/machine-id vai /etc/machine-id: "
+
 #~ msgid "Unknown error on connect"
 #~ msgstr "Nezināma kļūda savienojoties"
 
index c8f7ce8..e065997 100644 (file)
--- a/po/ne.po
+++ b/po/ne.po
@@ -11,16 +11,26 @@ msgid ""
 msgstr ""
 "Project-Id-Version: Gnome Nepali Translation Project\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/glib/issues\n"
-"POT-Creation-Date: 2021-03-27 11:34+0000\n"
-"PO-Revision-Date: 2021-05-02 12:53+0545\n"
+"POT-Creation-Date: 2022-04-08 12:19+0000\n"
+"PO-Revision-Date: 2022-05-11 13:16+0545\n"
 "Last-Translator: Pawan Chitrakar <chautari@gmail.com>\n"
 "Language-Team: Nepali Translation Team <chautari@gmail.com>\n"
 "Language: ne\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: Poedit 2.4.2\n"
 "Plural-Forms: nplurals=2;plural=(n!=1);\n"
+"X-Generator: Poedit 3.0.1\n"
+
+#: gio/gappinfo.c:333
+#, fuzzy
+msgid "Setting default applications not supported yet"
+msgstr "%s: %s देखि %sमा सेट गर्दा त्रुटि"
+
+#: gio/gappinfo.c:366
+#, fuzzy
+msgid "Setting application as last used for type not supported yet"
+msgstr "%s: %s देखि %sमा सेट गर्दा त्रुटि"
 
 #: gio/gapplication.c:500
 msgid "GApplication options"
@@ -32,23 +42,22 @@ msgstr "जि-अनुप्रयोग विकल्पहरू देख
 
 #: gio/gapplication.c:545
 msgid "Enter GApplication service mode (use from D-Bus service files)"
-msgstr ""
+msgstr "जी-अनुप्रयोग सेवा मोड प्रविष्ट गर्नुहोस् (D-Bus सेवा फाइलबाट प्रयोग गर्नुहोस्)"
 
 #: gio/gapplication.c:557
 msgid "Override the application’s ID"
 msgstr "अनुप्रयोगको आईडी अधिलेखन गर्नुहोस्"
 
 #: gio/gapplication.c:569
-#, fuzzy
 msgid "Replace the running instance"
-msgstr "रिà¤\9cà¥\87लà¤\95à¥\8b à¤¹à¤¾à¤² à¤\9aलिरहà¥\87à¤\95à¥\8b दृष्टान्त बदल्नुहोस्"
+msgstr "à¤\9aालà¥\81 दृष्टान्त बदल्नुहोस्"
 
-#: gio/gapplication-tool.c:45 gio/gapplication-tool.c:46 gio/gio-tool.c:227
-#: gio/gresource-tool.c:493 gio/gsettings-tool.c:567
+#: gio/gapplication-tool.c:45 gio/gapplication-tool.c:46 gio/gio-tool.c:227 gio/gresource-tool.c:494
+#: gio/gsettings-tool.c:584
 msgid "Print help"
 msgstr "मद्दत मुद्रण गर्नुहोस्"
 
-#: gio/gapplication-tool.c:47 gio/gresource-tool.c:494 gio/gresource-tool.c:562
+#: gio/gapplication-tool.c:47 gio/gresource-tool.c:495 gio/gresource-tool.c:563
 msgid "[COMMAND]"
 msgstr "[आदेश]"
 
@@ -56,7 +65,7 @@ msgstr "[आदेश]"
 msgid "Print version"
 msgstr "मुद्रण संस्करण"
 
-#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:573
+#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:590
 msgid "Print version information and exit"
 msgstr "मुद्रण संस्करण विवरण अनि बाहिरनुहोस्"
 
@@ -66,7 +75,7 @@ msgstr "अनुप्रयोगहरूको सूची"
 
 #: gio/gapplication-tool.c:54
 msgid "List the installed D-Bus activatable applications (by .desktop files)"
-msgstr ""
+msgstr "स्थापना गरिएको D-Bus सक्रिय अनुप्रयोगहरूको सूची बनाउनुहोस् (.desktop files द्वारा)"
 
 #: gio/gapplication-tool.c:57
 msgid "Launch an application"
@@ -98,14 +107,13 @@ msgstr "उपलब्ध कार्यहरूको सूची"
 
 #: gio/gapplication-tool.c:66
 msgid "List static actions for an application (from .desktop file)"
-msgstr ""
+msgstr "(.desktop फाइलबाट) अनुप्रयोगका लागि स्थिर कार्यहरू सूचीबद्ध गर्नुहोस्"
 
 #: gio/gapplication-tool.c:67 gio/gapplication-tool.c:73
 msgid "APPID"
 msgstr "APPID"
 
-#: gio/gapplication-tool.c:72 gio/gapplication-tool.c:135 gio/gdbus-tool.c:106
-#: gio/gio-tool.c:224
+#: gio/gapplication-tool.c:72 gio/gapplication-tool.c:135 gio/gdbus-tool.c:106 gio/gio-tool.c:224
 msgid "COMMAND"
 msgstr "आदेश"
 
@@ -117,15 +125,14 @@ msgstr "विस्तृत मद्दत छाप्न आदेश"
 msgid "Application identifier in D-Bus format (eg: org.example.viewer)"
 msgstr "D-Bus ढाँचामा अनुप्रयोग पहिचायक (जस्तै: org.example.viewer)"
 
-#: gio/gapplication-tool.c:74 gio/glib-compile-resources.c:738
-#: gio/glib-compile-resources.c:744 gio/glib-compile-resources.c:772
-#: gio/gresource-tool.c:500 gio/gresource-tool.c:566
+#: gio/gapplication-tool.c:74 gio/glib-compile-resources.c:820 gio/glib-compile-resources.c:826
+#: gio/glib-compile-resources.c:855 gio/gresource-tool.c:501 gio/gresource-tool.c:567
 msgid "FILE"
 msgstr "फाइल"
 
 #: gio/gapplication-tool.c:74
 msgid "Optional relative or absolute filenames, or URIs to open"
-msgstr ""
+msgstr "वैकल्पिक सम्बन्धित वा पूर्ण फाइलनाम, वा URIs खोल्न"
 
 #: gio/gapplication-tool.c:75
 msgid "ACTION"
@@ -141,9 +148,9 @@ msgstr "परामिति"
 
 #: gio/gapplication-tool.c:76
 msgid "Optional parameter to the action invocation, in GVariant format"
-msgstr ""
+msgstr "GVariant ढाँचामा, क्रिया आव्न्जनमा वैकल्पिक परिमिति"
 
-#: gio/gapplication-tool.c:98 gio/gresource-tool.c:531 gio/gsettings-tool.c:659
+#: gio/gapplication-tool.c:98 gio/gresource-tool.c:532 gio/gsettings-tool.c:676
 #, c-format
 msgid ""
 "Unknown command %s\n"
@@ -156,8 +163,7 @@ msgstr ""
 msgid "Usage:\n"
 msgstr "उपयोग: \n"
 
-#: gio/gapplication-tool.c:116 gio/gresource-tool.c:556
-#: gio/gsettings-tool.c:694
+#: gio/gapplication-tool.c:116 gio/gresource-tool.c:557 gio/gsettings-tool.c:711
 msgid "Arguments:\n"
 msgstr "तर्कहरू:\n"
 
@@ -238,7 +244,7 @@ msgstr "कार्यले अधिकतम एउटा परिमित
 
 #: gio/gapplication-tool.c:413
 msgid "list-actions command takes only the application id"
-msgstr ""
+msgstr "सूची-कार्य आदेशले अनुप्रयोग आईडी मात्र लिन्छ"
 
 #: gio/gapplication-tool.c:423
 #, c-format
@@ -255,26 +261,22 @@ msgstr ""
 "\n"
 "\n"
 
-#: gio/gbufferedinputstream.c:420 gio/gbufferedinputstream.c:498
-#: gio/ginputstream.c:179 gio/ginputstream.c:379 gio/ginputstream.c:646
-#: gio/ginputstream.c:1048 gio/goutputstream.c:223 gio/goutputstream.c:1049
+#: gio/gbufferedinputstream.c:420 gio/gbufferedinputstream.c:498 gio/ginputstream.c:179 gio/ginputstream.c:379
+#: gio/ginputstream.c:648 gio/ginputstream.c:1050 gio/goutputstream.c:223 gio/goutputstream.c:1049
 #: gio/gpollableinputstream.c:205 gio/gpollableoutputstream.c:277
 #, c-format
 msgid "Too large count value passed to %s"
 msgstr "अति ठूलो गणना मान %s मा पास गरियो"
 
-#: gio/gbufferedinputstream.c:891 gio/gbufferedoutputstream.c:575
-#: gio/gdataoutputstream.c:562
+#: gio/gbufferedinputstream.c:891 gio/gbufferedoutputstream.c:575 gio/gdataoutputstream.c:562
 msgid "Seek not supported on base stream"
 msgstr "आधार स्ट्रिममा खोजी समर्थित छैन"
 
 #: gio/gbufferedinputstream.c:938
-#, fuzzy
 msgid "Cannot truncate GBufferedInputStream"
-msgstr "सूपबडीइनपुटस्ट्रीम ट्रंक गर्न सकिँदैन"
+msgstr "GBufferedInputStream काट्न सकिँदैन"
 
-#: gio/gbufferedinputstream.c:983 gio/ginputstream.c:1237 gio/giostream.c:300
-#: gio/goutputstream.c:2198
+#: gio/gbufferedinputstream.c:983 gio/ginputstream.c:1239 gio/giostream.c:300 gio/goutputstream.c:2198
 msgid "Stream is already closed"
 msgstr "स्ट्रीम पहिल्यै बन्द छ"
 
@@ -282,8 +284,8 @@ msgstr "स्ट्रीम पहिल्यै बन्द छ"
 msgid "Truncate not supported on base stream"
 msgstr "आधार स्ट्रीममा कताई समर्थित छैन"
 
-#: gio/gcancellable.c:319 gio/gdbusconnection.c:1872 gio/gdbusprivate.c:1416
-#: gio/gsimpleasyncresult.c:871 gio/gsimpleasyncresult.c:897
+#: gio/gcancellable.c:319 gio/gdbusconnection.c:1857 gio/gdbusprivate.c:1418 gio/gsimpleasyncresult.c:871
+#: gio/gsimpleasyncresult.c:897
 #, c-format
 msgid "Operation was cancelled"
 msgstr "सञ्चालन रद्द भएको छ"
@@ -300,66 +302,64 @@ msgstr "आगतमा अपूर्ण बहुब्य अनुक्र
 msgid "Not enough space in destination"
 msgstr "गन्तव्यमा पर्याप्त स्थान छैन"
 
-#: gio/gcharsetconverter.c:342 gio/gdatainputstream.c:848
-#: gio/gdatainputstream.c:1266 glib/gconvert.c:448 glib/gconvert.c:878
-#: glib/giochannel.c:1573 glib/giochannel.c:1615 glib/giochannel.c:2470
-#: glib/gutf8.c:875 glib/gutf8.c:1328
+#: gio/gcharsetconverter.c:342 gio/gdatainputstream.c:848 gio/gdatainputstream.c:1266 glib/gconvert.c:449
+#: glib/gconvert.c:879 glib/giochannel.c:1573 glib/giochannel.c:1615 glib/giochannel.c:2470 glib/gutf8.c:890
+#: glib/gutf8.c:1344
 msgid "Invalid byte sequence in conversion input"
 msgstr "रूपान्तरण आगतमा अवैध बाइट अनुक्रम"
 
-#: gio/gcharsetconverter.c:347 glib/gconvert.c:456 glib/gconvert.c:792
-#: glib/giochannel.c:1580 glib/giochannel.c:2482
+#: gio/gcharsetconverter.c:347 glib/gconvert.c:457 glib/gconvert.c:793 glib/giochannel.c:1580 glib/giochannel.c:2482
 #, c-format
 msgid "Error during conversion: %s"
 msgstr "रूपान्तरण अवधिमा त्रुटि: %s"
 
-#: gio/gcharsetconverter.c:445 gio/gsocket.c:1143
+#: gio/gcharsetconverter.c:445 gio/gsocket.c:1147
 msgid "Cancellable initialization not supported"
 msgstr "रद्द-सक्षम थालनी समर्थित छैन"
 
-#: gio/gcharsetconverter.c:456 glib/gconvert.c:321 glib/giochannel.c:1401
+#: gio/gcharsetconverter.c:456 glib/gconvert.c:322 glib/giochannel.c:1401
 #, c-format
 msgid "Conversion from character set “%s” to “%s” is not supported"
 msgstr "क्यारेक्टर सेट '%s' बाट '%s' मा रूपान्तरण समर्थित छैन"
 
-#: gio/gcharsetconverter.c:460 glib/gconvert.c:325
+#: gio/gcharsetconverter.c:460 glib/gconvert.c:326
 #, c-format
 msgid "Could not open converter from “%s” to “%s”"
 msgstr "“%s” लाई “%s” मा रुपान्तरण खोल्न सकिएन"
 
-#: gio/gcontenttype.c:454
+#: gio/gcontenttype.c:470
 #, c-format
 msgid "%s type"
 msgstr "%s प्रकार"
 
-#: gio/gcontenttype-win32.c:192
+#: gio/gcontenttype-win32.c:196
 msgid "Unknown type"
 msgstr "अज्ञात प्रकार"
 
-#: gio/gcontenttype-win32.c:194
+#: gio/gcontenttype-win32.c:198
 #, c-format
 msgid "%s filetype"
 msgstr "%s फइल प्रकार"
 
-#: gio/gcredentials.c:323
+#: gio/gcredentials.c:335
 #, fuzzy
 msgid "GCredentials contains invalid data"
 msgstr "फाइल नाममा अवैध वर्ण"
 
-#: gio/gcredentials.c:383 gio/gcredentials.c:667
+#: gio/gcredentials.c:395 gio/gcredentials.c:686
 #, fuzzy
 msgid "GCredentials is not implemented on this OS"
-msgstr "à¤\93à¤\8fसà¥\8d(OS)"
+msgstr "à¤\95ारà¥\8dयानà¥\8dवयन à¤­à¤\8fà¤\95à¥\8b à¤\9bà¥\88न"
 
-#: gio/gcredentials.c:538 gio/gcredentials.c:556
+#: gio/gcredentials.c:550 gio/gcredentials.c:568
 msgid "There is no GCredentials support for your platform"
-msgstr ""
+msgstr "तपाईँको प्लेटफर्मका लागि त्यहाँ GCredentials समर्थन छैन"
 
-#: gio/gcredentials.c:607
+#: gio/gcredentials.c:626
 msgid "GCredentials does not contain a process ID on this OS"
-msgstr ""
+msgstr "GCredentials ले यो OS मा प्रक्रिया आईडी समावेश गर्दैन"
 
-#: gio/gcredentials.c:661
+#: gio/gcredentials.c:680
 msgid "Credentials spoofing is not possible on this OS"
 msgstr "यो सञ्चालन प्रणालीमा प्रमाणपत्र स्पूफिङ सम्भव छैन"
 
@@ -367,555 +367,564 @@ msgstr "यो सञ्चालन प्रणालीमा प्रमा
 msgid "Unexpected early end-of-stream"
 msgstr "स्ट्रिमको अनपेक्षित अन्त्य"
 
-#: gio/gdbusaddress.c:159 gio/gdbusaddress.c:233 gio/gdbusaddress.c:322
+#: gio/gdbusaddress.c:162 gio/gdbusaddress.c:236 gio/gdbusaddress.c:325
 #, c-format
 msgid "Unsupported key “%s” in address entry “%s”"
-msgstr ""
+msgstr "\"%s\" ठेगाना प्रविष्टिमा असमर्थित कुञ्जी \"%s\""
 
-#: gio/gdbusaddress.c:172
+#: gio/gdbusaddress.c:175
 #, c-format
 msgid "Meaningless key/value pair combination in address entry “%s”"
-msgstr ""
+msgstr "ठेगाना प्रविष्टि \"%s\" मा अर्थहीन कुञ्जी/मान जोडा संयोजन"
 
-#: gio/gdbusaddress.c:181
+#: gio/gdbusaddress.c:184
 #, c-format
 msgid "Address “%s” is invalid (need exactly one of path, dir, tmpdir, or abstract keys)"
 msgstr "ठेगाना \"%s\" अवैध छ (पथ, डाइरेक्टरी, tmpdir, वा अमूर्त कुञ्जीहरू मध्ये ठ्याक्कै एक आवश्यक छ)"
 
-#: gio/gdbusaddress.c:248 gio/gdbusaddress.c:259 gio/gdbusaddress.c:274
-#: gio/gdbusaddress.c:337 gio/gdbusaddress.c:348
+#: gio/gdbusaddress.c:251 gio/gdbusaddress.c:262 gio/gdbusaddress.c:277 gio/gdbusaddress.c:340 gio/gdbusaddress.c:351
 #, c-format
 msgid "Error in address “%s” — the “%s” attribute is malformed"
 msgstr "\"%s\" ठेगानामा त्रुटि — \"%s\" विशेषता विकृत छ"
 
-#: gio/gdbusaddress.c:418 gio/gdbusaddress.c:682
+#: gio/gdbusaddress.c:421 gio/gdbusaddress.c:680
 #, fuzzy, c-format
 msgid "Unknown or unsupported transport “%s” for address “%s”"
 msgstr "असमर्थित पारवाहन \"%s\" मा सुन्न सकिँदैन"
 
-#: gio/gdbusaddress.c:462
+#: gio/gdbusaddress.c:465
 #, c-format
 msgid "Address element “%s” does not contain a colon (:)"
 msgstr "ठेगाना तत्व \"%s\" मा विराम चिन्ह (:) समावेश छैन"
 
-#: gio/gdbusaddress.c:471
+#: gio/gdbusaddress.c:474
 #, c-format
 msgid "Transport name in address element “%s” must not be empty"
-msgstr ""
+msgstr "ठेगाना तत्व \"%s\" मा यातायात नाम खाली हुनु हुदैन"
 
-#: gio/gdbusaddress.c:492
+#: gio/gdbusaddress.c:495
 #, c-format
 msgid "Key/Value pair %d, “%s”, in address element “%s” does not contain an equal sign"
-msgstr ""
+msgstr "कुञ्जी/मान जोडा %d, \"%s\", ठेगाना तत्वमा \"%s\" ले बराबर चिन्ह समावेश गर्दैन"
 
-#: gio/gdbusaddress.c:503
+#: gio/gdbusaddress.c:506
 #, c-format
 msgid "Key/Value pair %d, “%s”, in address element “%s” must not have an empty key"
-msgstr ""
+msgstr "कुञ्जी/मान जोडा %d, \"%s\", ठेगाना तत्वमा \"%s\" सँग एउटा खाली कुञ्जी हुनु हुदैन"
 
-#: gio/gdbusaddress.c:517
+#: gio/gdbusaddress.c:520
 #, c-format
 msgid "Error unescaping key or value in Key/Value pair %d, “%s”, in address element “%s”"
-msgstr ""
+msgstr "कुञ्जी/मान जोडा %d, \"%s\", ठेगाना तत्व \"%s\" मा मान वा कुञ्जी खुलाउने क्रममा त्रुटि"
 
-#: gio/gdbusaddress.c:589
+#: gio/gdbusaddress.c:588
 #, c-format
 msgid "Error in address “%s” — the unix transport requires exactly one of the keys “path” or “abstract” to be set"
-msgstr ""
+msgstr "\"%s\" ठेगानामा त्रुटि - युनिक्स ट्रान्सपोर्टलाई सेट हुनका लागि ठीक एउटा कुञ्जी \"मार्ग\" वा \"अमूर्त\" आवश्यक पर्दछ"
 
-#: gio/gdbusaddress.c:625
+#: gio/gdbusaddress.c:623
 #, c-format
 msgid "Error in address “%s” — the host attribute is missing or malformed"
-msgstr ""
+msgstr "\"%s\" ठेगानामा त्रुटि — होस्ट विशेषता छुटेको छ वा विकृत छ"
 
-#: gio/gdbusaddress.c:639
+#: gio/gdbusaddress.c:637
 #, c-format
 msgid "Error in address “%s” — the port attribute is missing or malformed"
-msgstr ""
+msgstr "\"%s\" ठेगानामा त्रुटि — पोर्ट विशेषता छुटेको छ वा विकृत छ"
 
-#: gio/gdbusaddress.c:653
+#: gio/gdbusaddress.c:651
 #, c-format
 msgid "Error in address “%s” — the noncefile attribute is missing or malformed"
-msgstr ""
+msgstr "\"%s\" ठेगानामा त्रुटि — noncefile विशेषता हराइरहेको छ वा विकृत छ"
 
-#: gio/gdbusaddress.c:674
+#: gio/gdbusaddress.c:672
 msgid "Error auto-launching: "
 msgstr "स्व:त सुरुआत गर्दा त्रुटि: "
 
-#: gio/gdbusaddress.c:727
+#: gio/gdbusaddress.c:725
 #, fuzzy, c-format
 msgid "Error opening nonce file “%s”: %s"
-msgstr "%s फाइल खोल्दा त्रुटि"
+msgstr "फाइल “%s” पढ्दा त्रुटि:%s"
 
-#: gio/gdbusaddress.c:746
+#: gio/gdbusaddress.c:744
 #, c-format
 msgid "Error reading from nonce file “%s”: %s"
 msgstr "फाइल “%s” पढ्दा त्रुटि:%s"
 
-#: gio/gdbusaddress.c:755
-#, fuzzy, c-format
+#: gio/gdbusaddress.c:753
+#, c-format
 msgid "Error reading from nonce file “%s”, expected 16 bytes, got %d"
-msgstr "'%s' फाइल पढ्दा त्रुटि : %s"
+msgstr "nonce फ़ाइल \"%s\" से पढ़ने में त्रुटि, अपेक्षित 16 बाइट्स, %d मिला"
 
-#: gio/gdbusaddress.c:773
+#: gio/gdbusaddress.c:771
 #, fuzzy, c-format
 msgid "Error writing contents of nonce file “%s” to stream:"
 msgstr "'%s' फाइल पढ्दा त्रुटि : %s"
 
-#: gio/gdbusaddress.c:988
+#: gio/gdbusaddress.c:986
 msgid "The given address is empty"
 msgstr "दिएको ठेगाना खाली छ"
 
-#: gio/gdbusaddress.c:1101
+#: gio/gdbusaddress.c:1099
 #, c-format
-msgid "Cannot spawn a message bus when setuid"
-msgstr "setuid मा सन्देश बस उत्पन्न गर्न सकिँदैन"
+msgid "Cannot spawn a message bus when AT_SECURE is set"
+msgstr "जब AT_SECURE सेट हुन्छ तब सन्देश बस उत्पन्न गर्न सकिँदैन"
 
-#: gio/gdbusaddress.c:1108
+#: gio/gdbusaddress.c:1106
 msgid "Cannot spawn a message bus without a machine-id: "
 msgstr "मेशिन आईडी बिना सन्देश बस उत्पन्न गर्न सकिँदैन: "
 
-#: gio/gdbusaddress.c:1115
+#: gio/gdbusaddress.c:1113
 #, c-format
 msgid "Cannot autolaunch D-Bus without X11 $DISPLAY"
 msgstr "X11 $DISPLAY बिना D-Bus स्वत: सुरुआत गर्न सकिँदैन"
 
-#: gio/gdbusaddress.c:1157
+#: gio/gdbusaddress.c:1155
 #, c-format
 msgid "Error spawning command line “%s”: "
 msgstr "आदेश-रेखा विकल्प पद वर्णन गर्न सकेन%s"
 
-#: gio/gdbusaddress.c:1226
+#: gio/gdbusaddress.c:1224
 #, c-format
 msgid "Cannot determine session bus address (not implemented for this OS)"
 msgstr "सत्र बस ठेगाना निर्धारण गर्न सकिँदैन (यो सञ्चालन प्रणालीका लागि कार्यान्वयन गरिएको छैन)"
 
-#: gio/gdbusaddress.c:1397 gio/gdbusconnection.c:7241
+#: gio/gdbusaddress.c:1373 gio/gdbusconnection.c:7318
 #, c-format
 msgid "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable — unknown value “%s”"
 msgstr "DBUS_STARTER_BUS_TYPE परिवेश चलबाट बस ठेगाना निर्धारण गर्न सकिँदैन — अज्ञात मान \"%s\""
 
-#: gio/gdbusaddress.c:1406 gio/gdbusconnection.c:7250
+#: gio/gdbusaddress.c:1382 gio/gdbusconnection.c:7327
 msgid "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment variable is not set"
 msgstr "बस ठेगाना निर्धारण गर्न सकिँदैन किनभने DBUS_STARTER_BUS_TYPE परिवेश मान सेट गरिएको छैन"
 
-#: gio/gdbusaddress.c:1416
+#: gio/gdbusaddress.c:1392
 #, c-format
 msgid "Unknown bus type %d"
 msgstr "अपरिचित बाँणको प्रकार %d"
 
 #: gio/gdbusauth.c:294
 msgid "Unexpected lack of content trying to read a line"
-msgstr ""
+msgstr "लाइन पढ्न प्रयास गरिरहेको सामाग्रीको अनपेक्षित कमी"
 
 #: gio/gdbusauth.c:338
 msgid "Unexpected lack of content trying to (safely) read a line"
-msgstr ""
+msgstr "लाइन (सुरक्षित रूपमा) पढ्न प्रयास गरिरहेको अनपेक्षित सामग्रीको कमी"
 
 #: gio/gdbusauth.c:482
 #, c-format
 msgid "Exhausted all available authentication mechanisms (tried: %s) (available: %s)"
 msgstr "सबै उपलब्ध प्रमाणीकरण संयन्त्रहरू निष्कासित गरियो (प्रयास गरियो: %s) (उपलब्ध: %s)"
 
-#: gio/gdbusauth.c:1170
+#: gio/gdbusauth.c:1171
 msgid "User IDs must be the same for peer and server"
-msgstr ""
+msgstr "समान र सर्भरका लागि प्रयोगकर्ता आईडी उस्तै हुनुपर्छ"
 
-#: gio/gdbusauth.c:1182
+#: gio/gdbusauth.c:1183
 msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
-msgstr ""
+msgstr "GDBusAuthObserver मार्फत रद्द गरियो:: authorize-authenticated-peer"
 
-#: gio/gdbusauthmechanismsha1.c:298
+#: gio/gdbusauthmechanismsha1.c:300
 #, fuzzy, c-format
 #| msgid "Error opening directory '%s': %s"
 msgid "Error when getting information for directory “%s”: %s"
 msgstr "\"%s\" लोड गर्दा त्रुटि: त्यस प्रकारको निर्देशिका छैन"
 
-#: gio/gdbusauthmechanismsha1.c:313
+#: gio/gdbusauthmechanismsha1.c:315
 #, c-format
 msgid "Permissions on directory “%s” are malformed. Expected mode 0700, got 0%o"
-msgstr ""
+msgstr "डाइरेक्टरी \"%s\" मा अनुमति विकृत छ। अपेक्षित मोड ०७००, ०%o प्राप्त भयो"
 
-#: gio/gdbusauthmechanismsha1.c:346 gio/gdbusauthmechanismsha1.c:357
+#: gio/gdbusauthmechanismsha1.c:348 gio/gdbusauthmechanismsha1.c:359
 #, c-format
 msgid "Error creating directory “%s”: %s"
 msgstr "निर्देशिका \"%s\" सिर्जना गर्दा त्रुटि: %s"
 
-#: gio/gdbusauthmechanismsha1.c:359 gio/gfile.c:1062 gio/gfile.c:1300
-#: gio/gfile.c:1438 gio/gfile.c:1676 gio/gfile.c:1731 gio/gfile.c:1789
-#: gio/gfile.c:1873 gio/gfile.c:1930 gio/gfile.c:1994 gio/gfile.c:2049
-#: gio/gfile.c:3754 gio/gfile.c:3809 gio/gfile.c:4102 gio/gfile.c:4572
-#: gio/gfile.c:4983 gio/gfile.c:5068 gio/gfile.c:5158 gio/gfile.c:5255
-#: gio/gfile.c:5342 gio/gfile.c:5443 gio/gfile.c:8153 gio/gfile.c:8243
-#: gio/gfile.c:8327 gio/win32/gwinhttpfile.c:453
+#: gio/gdbusauthmechanismsha1.c:361 gio/gfile.c:1080 gio/gfile.c:1318 gio/gfile.c:1456 gio/gfile.c:1694
+#: gio/gfile.c:1749 gio/gfile.c:1807 gio/gfile.c:1891 gio/gfile.c:1948 gio/gfile.c:2012 gio/gfile.c:2067
+#: gio/gfile.c:3772 gio/gfile.c:3912 gio/gfile.c:4205 gio/gfile.c:4675 gio/gfile.c:5086 gio/gfile.c:5171
+#: gio/gfile.c:5261 gio/gfile.c:5358 gio/gfile.c:5445 gio/gfile.c:5546 gio/gfile.c:8375 gio/gfile.c:8465
+#: gio/gfile.c:8549 gio/win32/gwinhttpfile.c:453
 msgid "Operation not supported"
 msgstr "सञ्चालन समर्थित छैन"
 
-#: gio/gdbusauthmechanismsha1.c:402
+#: gio/gdbusauthmechanismsha1.c:404
 #, c-format
 msgid "Error opening keyring “%s” for reading: "
 msgstr "\"%s\" किरिङ्ग पढ्नाका लागि खोल्दा त्रुटि: "
 
-#: gio/gdbusauthmechanismsha1.c:425 gio/gdbusauthmechanismsha1.c:747
+#: gio/gdbusauthmechanismsha1.c:427 gio/gdbusauthmechanismsha1.c:769
 #, c-format
 msgid "Line %d of the keyring at “%s” with content “%s” is malformed"
-msgstr ""
+msgstr "किरिङको लाइन %d मा “%s” सामाग्री “%s” विकृत छ"
 
-#: gio/gdbusauthmechanismsha1.c:439 gio/gdbusauthmechanismsha1.c:761
+#: gio/gdbusauthmechanismsha1.c:441 gio/gdbusauthmechanismsha1.c:783
 #, c-format
 msgid "First token of line %d of the keyring at “%s” with content “%s” is malformed"
-msgstr ""
+msgstr "किरिङको पहिलो टोकन लाइन %d मा  “%s” सामग्रीसँग “%s” विकृत छ"
 
-#: gio/gdbusauthmechanismsha1.c:453 gio/gdbusauthmechanismsha1.c:775
+#: gio/gdbusauthmechanismsha1.c:455 gio/gdbusauthmechanismsha1.c:797
 #, c-format
 msgid "Second token of line %d of the keyring at “%s” with content “%s” is malformed"
-msgstr ""
+msgstr "किरिङको दोस्रो टोकन लाइन %d मा  “%s” सामग्रीसँग “%s”  विकृत छ"
 
-#: gio/gdbusauthmechanismsha1.c:477
+#: gio/gdbusauthmechanismsha1.c:479
 #, c-format
 msgid "Didn’t find cookie with id %d in the keyring at “%s”"
-msgstr ""
+msgstr " आईडी %d मा \"%s\"किरिङ कुकी फेला परेन"
 
-#: gio/gdbusauthmechanismsha1.c:523
+#: gio/gdbusauthmechanismsha1.c:536
 #, c-format
 msgid "Error creating lock file “%s”: %s"
 msgstr "ताल्चा लगाइएको फाइल \"%s\" सिर्जना गर्दा त्रुटि: %s"
 
-#: gio/gdbusauthmechanismsha1.c:587
+#: gio/gdbusauthmechanismsha1.c:609
 #, fuzzy, c-format
 msgid "Error deleting stale lock file “%s”: %s"
-msgstr "'%s' फाइल मेट्दा त्रुटि: %s"
+msgstr "ताल्चा लगाइएको फाइल \"%s\" सिर्जना गर्दा त्रुटि: %s"
 
-#: gio/gdbusauthmechanismsha1.c:626
+#: gio/gdbusauthmechanismsha1.c:648
 #, fuzzy, c-format
 msgid "Error closing (unlinked) lock file “%s”: %s"
-msgstr "सतà¥\8dर à¤«à¤¾à¤\87ल '%s' à¤¬à¤¨à¥\8dद à¤\97रà¥\8dदा à¤¤à¥\8dरà¥\81à¤\9fि: %s\n"
+msgstr "तालà¥\8dà¤\9aा à¤²à¤\97ाà¤\87à¤\8fà¤\95à¥\8b à¤«à¤¾à¤\87ल \"%s\" à¤¸à¤¿à¤°à¥\8dà¤\9cना à¤\97रà¥\8dदा à¤¤à¥\8dरà¥\81à¤\9fि: %s"
 
-#: gio/gdbusauthmechanismsha1.c:637
+#: gio/gdbusauthmechanismsha1.c:659
 #, fuzzy, c-format
 msgid "Error unlinking lock file “%s”: %s"
-msgstr "%s का लागि बन्द फाइल सिर्जना गर्न सकेन: %s"
+msgstr "ताल्चा लगाइएको फाइल \"%s\" सिर्जना गर्दा त्रुटि: %s"
 
-#: gio/gdbusauthmechanismsha1.c:714
+#: gio/gdbusauthmechanismsha1.c:736
 #, c-format
 msgid "Error opening keyring “%s” for writing: "
 msgstr "लेख्नका लागि \"%s\" किरिङ्ग खोल्दा त्रुटि: "
 
-#: gio/gdbusauthmechanismsha1.c:908
+#: gio/gdbusauthmechanismsha1.c:930
 #, c-format
 msgid "(Additionally, releasing the lock for “%s” also failed: %s) "
-msgstr ""
+msgstr "(\"%s\" का लागि ताल्चा हटाउन असफल: %s) "
 
-#: gio/gdbusconnection.c:603 gio/gdbusconnection.c:2405
+#: gio/gdbusconnection.c:588 gio/gdbusconnection.c:2402
 msgid "The connection is closed"
 msgstr "जडान बन्द भयो"
 
-#: gio/gdbusconnection.c:1902
+#: gio/gdbusconnection.c:1887
 msgid "Timeout was reached"
 msgstr "समय समाप्ति"
 
-#: gio/gdbusconnection.c:2528
+#: gio/gdbusconnection.c:2525
 msgid "Unsupported flags encountered when constructing a client-side connection"
-msgstr ""
+msgstr "क्लाइन्ट-साइड जडान निर्माण गर्दा असमर्थित झण्डाहरू सामना भयो"
 
-#: gio/gdbusconnection.c:4186 gio/gdbusconnection.c:4533
+#: gio/gdbusconnection.c:4253 gio/gdbusconnection.c:4607
 #, fuzzy, c-format
 msgid "No such interface “org.freedesktop.DBus.Properties” on object at path %s"
-msgstr "त्रुटि: %s अवैध वस्तु मार्ग\n"
+msgstr "\"%s\" मार्गमा वस्तु अवस्थित छैन"
 
-#: gio/gdbusconnection.c:4328
+#: gio/gdbusconnection.c:4398
 #, fuzzy, c-format
 #| msgid "No such property '%s'"
 msgid "No such property “%s”"
-msgstr "अज्ञात गुण %s"
+msgstr "'%s' गुण लेख्न योग्य छैन:%s"
 
-#: gio/gdbusconnection.c:4340
-#, fuzzy, c-format
-#| msgid "Property '%s' is not readable"
+#: gio/gdbusconnection.c:4410
+#, c-format
 msgid "Property “%s” is not readable"
-msgstr "फाà¤\87ल %s à¤ªà¤¢à¥\8dनयà¥\8bà¤\97à¥\8dय à¤\9bà¥\88न à¥¤."
+msgstr "विशà¥\87षता \"%s\" à¤ªà¤¢à¥\8dनयà¥\8bà¤\97à¥\8dय à¤\9bà¥\88न"
 
-#: gio/gdbusconnection.c:4351
-#, fuzzy, c-format
-#| msgid "Property '%s' is not writable"
+#: gio/gdbusconnection.c:4421
+#, c-format
 msgid "Property “%s” is not writable"
-msgstr "%s का लागि कुनै लेखनयोग्य URI उपलब्ध छैन"
+msgstr "\"%s\" गुण लेखनयोग्य छैन"
 
-#: gio/gdbusconnection.c:4371
-#, fuzzy, c-format
+#: gio/gdbusconnection.c:4441
+#, c-format
 msgid "Error setting property “%s”: Expected type “%s” but got “%s”"
-msgstr "हà¥\8bसà¥\8dà¤\9fनाम"
+msgstr "विशà¥\87षता \"%s\" à¤¸à¥\87à¤\9f à¤\97रà¥\8dदा à¤¤à¥\8dरà¥\81à¤\9fि: à¤\85पà¥\87à¤\95à¥\8dषित à¤ªà¥\8dरà¤\95ार \"%s\" à¤¤à¤° \"%s\" à¤ªà¥\8dरापà¥\8dत à¤­à¤¯à¥\8b"
 
-#: gio/gdbusconnection.c:4476 gio/gdbusconnection.c:4684
-#: gio/gdbusconnection.c:6681
-#, fuzzy, c-format
-#| msgid "No such interface '%s'"
+#: gio/gdbusconnection.c:4546 gio/gdbusconnection.c:4761 gio/gdbusconnection.c:6744
+#, c-format
 msgid "No such interface “%s”"
-msgstr "चेतावनी: इन्टरक्रेसटेसन डाटाको अनुसार, इन्टरफेस \"%s\" अवस्थित छैन\n"
+msgstr "चेतावनी: इन्टरक्रेसटेसन डाटाको अनुसार, इन्टरफेस \"%s\" अवस्थित छैन"
 
-#: gio/gdbusconnection.c:4902 gio/gdbusconnection.c:7190
+#: gio/gdbusconnection.c:4983 gio/gdbusconnection.c:7258
 #, fuzzy, c-format
 msgid "No such interface “%s” on object at path %s"
-msgstr "त्रुटि: %s अवैध वस्तु मार्ग\n"
+msgstr "\"%s\" मार्गमा वस्तु अवस्थित छैन"
 
-#: gio/gdbusconnection.c:5000
+#: gio/gdbusconnection.c:5084
 #, fuzzy, c-format
 #| msgid "No such key “%s”\n"
 msgid "No such method “%s”"
 msgstr "चेतावनी: जाच भए डाटाको अनुसार, \"%s\" विधिमा  \"%s\" मा अवस्थित छैन।\n"
 
-#: gio/gdbusconnection.c:5031
+#: gio/gdbusconnection.c:5115
 #, c-format
 msgid "Type of message, “%s”, does not match expected type “%s”"
-msgstr ""
+msgstr "सन्देशको प्रकार, \"%s\", अपेक्षित प्रकार \"%s\" सँग मिल्दैन"
 
-#: gio/gdbusconnection.c:5229
+#: gio/gdbusconnection.c:5318
 #, c-format
 msgid "An object is already exported for the interface %s at %s"
 msgstr "%s मा %s इन्टरफेसका लागि एउटा वस्तु पहिल्यै निर्यात गरिएको छ"
 
-#: gio/gdbusconnection.c:5455
+#: gio/gdbusconnection.c:5545
 #, c-format
 msgid "Unable to retrieve property %s.%s"
 msgstr "%s गुण पुन:प्राप्त गर्न अक्षम.%s"
 
-#: gio/gdbusconnection.c:5511
-#, fuzzy, c-format
+#: gio/gdbusconnection.c:5601
+#, c-format
 msgid "Unable to set property %s.%s"
-msgstr "गुण %s::%s फेला परेन \n"
+msgstr "'%s' गुण लेख्न योग्य छैन:%s"
 
-#: gio/gdbusconnection.c:5690
+#: gio/gdbusconnection.c:5780
 #, fuzzy, c-format
 msgid "Method “%s” returned type “%s”, but expected “%s”"
-msgstr "हालà¤\95à¥\8b à¤¨à¥\8bड \"%s\" à¤ªà¥\8dरà¤\95ारà¤\95à¥\8b à¤\9b, à¤¤à¤° array à¤µà¤¾ à¤µà¤¸à¥\8dतà¥\81 à¤\86शा à¤\97रिà¤\8fà¤\95à¥\8b à¤¥à¤¿à¤¯à¥\8b।"
+msgstr "विशà¥\87षता \"%s\" à¤¸à¥\87à¤\9f à¤\97रà¥\8dदा à¤¤à¥\8dरà¥\81à¤\9fि: à¤\85पà¥\87à¤\95à¥\8dषित à¤ªà¥\8dरà¤\95ार \"%s\" à¤¤à¤° \"%s\" à¤ªà¥\8dरापà¥\8dत à¤­à¤¯à¥\8b"
 
-#: gio/gdbusconnection.c:6792
+#: gio/gdbusconnection.c:6856
 #, fuzzy, c-format
 #| msgid "Method '%s' on interface '%s' with signature '%s' does not exist"
 msgid "Method “%s” on interface “%s” with signature “%s” does not exist"
 msgstr "चेतावनी: जाच भए डाटाको अनुसार, \"%s\" विधिमा  \"%s\" मा अवस्थित छैन।\n"
 
-#: gio/gdbusconnection.c:6913
+#: gio/gdbusconnection.c:6977
 #, fuzzy, c-format
 msgid "A subtree is already exported for %s"
 msgstr "%s मा %s इन्टरफेसका लागि एउटा वस्तु पहिल्यै निर्यात गरिएको छ"
 
-#: gio/gdbusmessage.c:1266
+#: gio/gdbusconnection.c:7266
+#, c-format
+msgid "Object does not exist at path “%s”"
+msgstr "\"%s\" मार्गमा वस्तु अवस्थित छैन"
+
+#: gio/gdbusmessage.c:1301
 msgid "type is INVALID"
 msgstr "प्रकार अवैध छ"
 
-#: gio/gdbusmessage.c:1277
+#: gio/gdbusmessage.c:1312
 msgid "METHOD_CALL message: PATH or MEMBER header field is missing"
-msgstr ""
+msgstr "METHOD_CALL सन्देश: बाटो वा सदस्य हेडर फाँट छुटेको छ"
 
-#: gio/gdbusmessage.c:1288
+#: gio/gdbusmessage.c:1323
 msgid "METHOD_RETURN message: REPLY_SERIAL header field is missing"
-msgstr ""
+msgstr "METHOD_RETURN सन्देश: REPLY_SERIAL हेडर फाँट हराइरहेको छ"
 
-#: gio/gdbusmessage.c:1300
+#: gio/gdbusmessage.c:1335
 msgid "ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing"
-msgstr ""
+msgstr "त्रुटि सन्देश: REPLY_SERIAL वा ERROR_NAME हेडर फाँट छुटेको छ"
 
-#: gio/gdbusmessage.c:1313
+#: gio/gdbusmessage.c:1348
 msgid "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing"
-msgstr ""
+msgstr "सङ्केत सन्देश: बाटो, इन्टरफेस वा सदस्य हेडर फाँट हराइरहेको छ"
 
-#: gio/gdbusmessage.c:1321
+#: gio/gdbusmessage.c:1356
 msgid "SIGNAL message: The PATH header field is using the reserved value /org/freedesktop/DBus/Local"
-msgstr ""
+msgstr "संकेत सन्देश: बाटो हेडर फाँटले सञ्चित मान /org/freedesktop/DBus/Local प्रयोग गरिरहेको छ"
 
-#: gio/gdbusmessage.c:1329
+#: gio/gdbusmessage.c:1364
 msgid "SIGNAL message: The INTERFACE header field is using the reserved value org.freedesktop.DBus.Local"
-msgstr ""
+msgstr "संकेत सन्देश: इन्टरफेस हेडर फिल्डले सुरक्षित मान org.freedesktop.DBus.Local प्रयोग गरिरहेको छ"
 
-#: gio/gdbusmessage.c:1377 gio/gdbusmessage.c:1437
+#: gio/gdbusmessage.c:1412 gio/gdbusmessage.c:1472
 #, c-format
 msgid "Wanted to read %lu byte but only got %lu"
 msgid_plural "Wanted to read %lu bytes but only got %lu"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "%lu बाइट पढ्न चाहन्थ्यो तर %lu मात्र प्राप्त गर्यो"
+msgstr[1] "%lu बाइट पढ्न चाहन्थ्यो तर %lu मात्र प्राप्त गर्यो"
 
-#: gio/gdbusmessage.c:1391
+#: gio/gdbusmessage.c:1426
 #, c-format
 msgid "Expected NUL byte after the string “%s” but found byte %d"
-msgstr ""
+msgstr "स्ट्रिङ \"%s\" पछि NUL बाइट अपेक्षित तर %d बाइट फेला पर्यो"
 
-#: gio/gdbusmessage.c:1410
+#: gio/gdbusmessage.c:1445
 #, 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”"
 msgstr ""
+"अपेक्षित वैध UTF-8 स्ट्रिङ तर बाइट अफसेट %d मा अवैध बाइटहरू फेला पर्यो (स्ट्रिङको लम्बाइ %d हो)। त्यो बिन्दु \"%s\" नभएसम्म वैध UTF-8 "
+"स्ट्रिङ"
 
-#: gio/gdbusmessage.c:1474 gio/gdbusmessage.c:1722 gio/gdbusmessage.c:1911
+#: gio/gdbusmessage.c:1509 gio/gdbusmessage.c:1785 gio/gdbusmessage.c:1996
 #, fuzzy
 msgid "Value nested too deeply"
 msgstr "अति ठूलो गणना मान %s मा पास गरियो"
 
-#: gio/gdbusmessage.c:1620
+#: gio/gdbusmessage.c:1677
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus object path"
-msgstr ""
+msgstr "पद वर्णन गरिएको मान \"%s\" वैध D-Bus वस्तु मार्ग होइन"
 
-#: gio/gdbusmessage.c:1642
+#: gio/gdbusmessage.c:1701
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature"
-msgstr ""
+msgstr "पद वर्णन गरिएको मान \"%s\" वैध D-Bus हस्ताक्षर होइन"
 
-#: gio/gdbusmessage.c:1689
+#: gio/gdbusmessage.c:1752
 #, c-format
 msgid "Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB)."
 msgid_plural "Encountered array of length %u bytes. Maximum length is 2<<26 bytes (64 MiB)."
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "%u बाइट लम्बाइको एरे भेटिन्छ । अधिकतम लम्बाइ २<<२६ बाइट (६४ MiB) हो ।"
+msgstr[1] "%u बाइट लम्बाइको एरे भेटिन्छ । अधिकतम लम्बाइ २<<२६ बाइट (६४ MiB) हो ।"
 
-#: gio/gdbusmessage.c:1709
+#: gio/gdbusmessage.c:1772
 #, 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"
-msgstr ""
+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"
+msgstr "\"a%c\" प्रकारको एरे, %u बाइटको गुणनफल हुने अपेक्षा गरिएको छ, तर %u बाइट लम्बाइमा भएको फेला पर्यो"
 
-#: gio/gdbusmessage.c:1895
+#: gio/gdbusmessage.c:1926 gio/gdbusmessage.c:2645
+msgid "Empty structures (tuples) are not allowed in D-Bus"
+msgstr "D-Bus मा खाली बनावट (tuples) लाई अनुमति छैन"
+
+#: gio/gdbusmessage.c:1980
 #, c-format
 msgid "Parsed value “%s” for variant is not a valid D-Bus signature"
-msgstr ""
+msgstr "भेरिएन्टका लागि पद वर्णन गरिएको मान \"%s\" वैध D-Bus हस्ताक्षर होइन"
 
-#: gio/gdbusmessage.c:1936
+#: gio/gdbusmessage.c:2021
 #, c-format
 msgid "Error deserializing GVariant with type string “%s” from the D-Bus wire format"
-msgstr ""
+msgstr "D-Bus तार ढाँचाबाट \"%s\" प्रकार स्ट्रिङसँग GVariant deserializing गर्दा त्रुटि"
 
-#: gio/gdbusmessage.c:2121
+#: gio/gdbusmessage.c:2206
 #, c-format
 msgid "Invalid endianness value. Expected 0x6c (“l”) or 0x42 (“B”) but found value 0x%02x"
 msgstr "अवैध अन्त्य मान । अपेक्षित 0x6c (\"l\") वा 0x42 (\"B\") तर मान 0x%02x फेला पर्यो"
 
-#: gio/gdbusmessage.c:2134
+#: gio/gdbusmessage.c:2225
 #, c-format
 msgid "Invalid major protocol version. Expected 1 but found %d"
 msgstr "अवैध मुख्य प्रोटोकोल संस्करण । अपेक्षित १ तर %d प्राप्त भयो"
 
-#: gio/gdbusmessage.c:2188 gio/gdbusmessage.c:2784
+#: gio/gdbusmessage.c:2283 gio/gdbusmessage.c:2881
 msgid "Signature header found but is not of type signature"
-msgstr ""
+msgstr "हस्ताक्षर हेडर फेला पर्यो तर यो प्रकारको हस्ताक्षर होइन ।"
 
-#: gio/gdbusmessage.c:2200
+#: gio/gdbusmessage.c:2295
 #, c-format
 msgid "Signature header with signature “%s” found but message body is empty"
-msgstr ""
+msgstr "हस्ताक्षर \"%s\" सँग हस्ताक्षर हेडर फेला पर्यो तर सन्देशको मुख्य भाग खाली छ"
 
-#: gio/gdbusmessage.c:2215
+#: gio/gdbusmessage.c:2310
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature (for body)"
-msgstr ""
+msgstr "पद वर्णन गरिएको मान \"%s\" वैध D-Bus हस्ताक्षर (मुख्य भागका लागि) होइन"
 
-#: gio/gdbusmessage.c:2247
+#: gio/gdbusmessage.c:2342
 #, 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"
-msgstr[0] ""
-msgstr[1] ""
+msgstr[0] "सन्देशमा हस्ताक्षर हेडर छैन तर सन्देशको मुख्य भाग %u बाइट हो"
+msgstr[1] "सन्देशमा हस्ताक्षर हेडर छैन तर सन्देश मुख्य भाग %u बाइट हो"
 
-#: gio/gdbusmessage.c:2257
-#, fuzzy
+#: gio/gdbusmessage.c:2352
 msgid "Cannot deserialize message: "
-msgstr "सन्देश संग्रहहरू सेट गर्न सकिँदैन"
+msgstr "सन्देश deserialize गर्न सकिँदैन: "
 
-#: gio/gdbusmessage.c:2601
+#: gio/gdbusmessage.c:2698
 #, c-format
 msgid "Error serializing GVariant with type string “%s” to the D-Bus wire format"
-msgstr ""
+msgstr "\"%s\" प्रकार स्ट्रिङसँग जी भेरिएन्टलाई D-Bus तार ढाँचामा क्रमबद्ध गर्दा त्रुटि"
 
-#: gio/gdbusmessage.c:2738
+#: gio/gdbusmessage.c:2835
 #, c-format
 msgid "Number of file descriptors in message (%d) differs from header field (%d)"
-msgstr ""
+msgstr "सन्देश (%d) मा फाइल वर्णनकर्ताको सङ्ख्या हेडर फिल्ड (%d) भन्दा फरक हुन्छ"
 
-#: gio/gdbusmessage.c:2746
-#, fuzzy
+#: gio/gdbusmessage.c:2843
 msgid "Cannot serialize message: "
-msgstr "सनà¥\8dदà¥\87श à¤¸à¤\82à¤\97à¥\8dरहहरà¥\82 à¤¸à¥\87à¤\9f à¤\97रà¥\8dन à¤¸à¤\95िà¤\81दà¥\88न"
+msgstr "सनà¥\8dदà¥\87श à¤¸à¤¿à¤°à¥\8dà¤\9cना à¤\97रà¥\8dन à¤¸à¤\95िà¤\81दà¥\88न: "
 
-#: gio/gdbusmessage.c:2799
+#: gio/gdbusmessage.c:2896
 #, c-format
 msgid "Message body has signature “%s” but there is no signature header"
-msgstr ""
+msgstr "सन्देश मुख्य भागसँग हस्ताक्षर \"%s\" छ तर त्यहाँ हस्ताक्षर हेडर छैन"
 
-#: gio/gdbusmessage.c:2809
+#: gio/gdbusmessage.c:2906
 #, c-format
 msgid "Message body has type signature “%s” but signature in the header field is “%s”"
-msgstr ""
+msgstr "सन्देश मुख्य भागसँग प्रकार हस्ताक्षर \"%s\" छ तर हेडर फिल्डमा हस्ताक्षर \"%s\" हो"
 
-#: gio/gdbusmessage.c:2825
+#: gio/gdbusmessage.c:2922
 #, c-format
 msgid "Message body is empty but signature in the header field is “(%s)”"
-msgstr ""
+msgstr "सन्देश मुख्य भाग खाली छ तर हेडर फिल्डमा हस्ताक्षर \"(%s)\" छ"
 
-#: gio/gdbusmessage.c:3378
+#: gio/gdbusmessage.c:3477
 #, fuzzy, c-format
 msgid "Error return with body of type “%s”"
 msgstr ""
 "चित्र %s लोड गर्दा त्रुटि।\n"
 "अज्ञात फाइल प्रकार"
 
-#: gio/gdbusmessage.c:3386
+#: gio/gdbusmessage.c:3485
 #, fuzzy
 msgid "Error return with empty body"
-msgstr "तà¥\8dरà¥\81à¤\9fि: XJT à¤\97à¥\81ण à¤«à¤¾à¤\87ल '%s' à¤\96ालà¥\80 à¤\9b।"
+msgstr "à¤\96ालà¥\80 à¤®à¥\81à¤\96à¥\8dय à¤­à¤¾à¤\97सà¤\81à¤\97 à¤¤à¥\8dरà¥\81à¤\9fि"
 
-#: gio/gdbusprivate.c:2246
+#: gio/gdbusprivate.c:2185
 #, c-format
 msgid "(Type any character to close this window)\n"
 msgstr "(यो सञ्झ्याल बन्द गर्न कुनै क्यारेक्टर टाइप गर्नुहोस्)\n"
 
-#: gio/gdbusprivate.c:2420
+#: gio/gdbusprivate.c:2371
 #, c-format
 msgid "Session dbus not running, and autolaunch failed"
-msgstr ""
+msgstr "सत्र dbus चलिरहेको छैन, र स्वत: सुरुआत असफल भयो"
 
-#: gio/gdbusprivate.c:2443
+#: gio/gdbusprivate.c:2394
 #, c-format
 msgid "Unable to get Hardware profile: %s"
 msgstr "हार्डवेयर प्रोफाइल पाउन असक्षम: %s"
 
 #. Translators: Both placeholders are file paths
-#: gio/gdbusprivate.c:2494
+#: gio/gdbusprivate.c:2445
 #, c-format
 msgid "Unable to load %s or %s: "
 msgstr "%s वा %s लोड गर्न असक्षम भयो: "
 
-#: gio/gdbusproxy.c:1562
+#: gio/gdbusproxy.c:1573
 #, fuzzy, c-format
 msgid "Error calling StartServiceByName for %s: "
-msgstr "त्रुटि: %s पहिले '%s'"
+msgstr "त्रुटि: %s"
 
-#: gio/gdbusproxy.c:1585
+#: gio/gdbusproxy.c:1596
 #, c-format
 msgid "Unexpected reply %d from StartServiceByName(\"%s\") method"
-msgstr ""
+msgstr "StartServiceByName(\"%2$s\") विधिबाट अनपेक्षित जवाफ %1$d"
 
-#: gio/gdbusproxy.c:2688 gio/gdbusproxy.c:2823
+#: gio/gdbusproxy.c:2707 gio/gdbusproxy.c:2842
 #, c-format
-msgid "Cannot invoke method; proxy is for the well-known name %s without an owner, and proxy was constructed with the G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START flag"
-msgstr "विधि आह्वान गर्न सकिँदैन; मालिक बिनाको प्रोक्सी परिचित नाम %s का लागि हो, र G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START झण्डासँग प्रोक्सी निर्माण गरिएको थियो"
+msgid ""
+"Cannot invoke method; proxy is for the well-known name %s without an owner, and proxy was constructed with the "
+"G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START flag"
+msgstr ""
+"विधि आह्वान गर्न सकिँदैन; मालिक बिनाको प्रोक्सी परिचित नाम %s का लागि हो, र G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START झण्डासँग "
+"प्रोक्सी निर्माण गरिएको थियो"
 
-#: gio/gdbusserver.c:763
+#: gio/gdbusserver.c:767
 #, fuzzy
 msgid "Abstract namespace not supported"
-msgstr "नà¥\87मसà¥\8dपà¥\87स:"
+msgstr "सà¤\82à¤\95à¥\8dषà¥\87प"
 
-#: gio/gdbusserver.c:856
+#: gio/gdbusserver.c:860
 msgid "Cannot specify nonce file when creating a server"
 msgstr "सर्भर सिर्जना गर्दा कुनै पनि फाइल निर्दिष्ट गर्न सकिँदैन"
 
-#: gio/gdbusserver.c:938
+#: gio/gdbusserver.c:942
 #, fuzzy, c-format
 msgid "Error writing nonce file at “%s”: %s"
 msgstr "फाइल “%s” पढ्दा त्रुटि:%s"
 
-#: gio/gdbusserver.c:1113
-#, c-format
+#: gio/gdbusserver.c:1117
+#, fuzzy, c-format
 msgid "The string “%s” is not a valid D-Bus GUID"
-msgstr ""
+msgstr "पद वर्णन गरिएको मान \"%s\" वैध D-Bus हस्ताक्षर होइन"
 
-#: gio/gdbusserver.c:1153
+#: gio/gdbusserver.c:1157
 #, c-format
 msgid "Cannot listen on unsupported transport “%s”"
 msgstr "असमर्थित पारवाहन \"%s\" मा सुन्न सकिँदैन"
@@ -943,151 +952,153 @@ msgstr ""
 "\n"
 "प्रत्येक आदेशमा मद्दत पाउन \"% s COMMAND --help\" को प्रयोग गर्नुहोस्।\n"
 
-#: gio/gdbus-tool.c:201 gio/gdbus-tool.c:273 gio/gdbus-tool.c:345
-#: gio/gdbus-tool.c:369 gio/gdbus-tool.c:859 gio/gdbus-tool.c:1236
-#: gio/gdbus-tool.c:1724
+#: gio/gdbus-tool.c:202 gio/gdbus-tool.c:274 gio/gdbus-tool.c:346 gio/gdbus-tool.c:370 gio/gdbus-tool.c:860
+#: gio/gdbus-tool.c:1245 gio/gdbus-tool.c:1733
 #, c-format
 msgid "Error: %s\n"
 msgstr "त्रुटि: %s\n"
 
-#: gio/gdbus-tool.c:212 gio/gdbus-tool.c:286 gio/gdbus-tool.c:1740
+#: gio/gdbus-tool.c:213 gio/gdbus-tool.c:287 gio/gdbus-tool.c:1749
 #, fuzzy, c-format
 msgid "Error parsing introspection XML: %s\n"
 msgstr "फिल्टर पदवर्णन गर्दा त्रुटि: %s: %s"
 
-#: gio/gdbus-tool.c:250
+#: gio/gdbus-tool.c:251
 #, c-format
 msgid "Error: %s is not a valid name\n"
 msgstr "कार्य: %s अवैध नाम\n"
 
-#: gio/gdbus-tool.c:255 gio/gdbus-tool.c:745 gio/gdbus-tool.c:1060
-#: gio/gdbus-tool.c:1890 gio/gdbus-tool.c:2130
+#: gio/gdbus-tool.c:256 gio/gdbus-tool.c:746 gio/gdbus-tool.c:1064 gio/gdbus-tool.c:1899 gio/gdbus-tool.c:2139
 #, c-format
 msgid "Error: %s is not a valid object path\n"
 msgstr "त्रुटि: %s अवैध वस्तु मार्ग\n"
 
-#: gio/gdbus-tool.c:403
+#: gio/gdbus-tool.c:404
 msgid "Connect to the system bus"
 msgstr "सिस्टम बस सँगको जडान त्रुटी : %s"
 
-#: gio/gdbus-tool.c:404
+#: gio/gdbus-tool.c:405
 msgid "Connect to the session bus"
 msgstr "सत्र बस जडान"
 
-#: gio/gdbus-tool.c:405
+#: gio/gdbus-tool.c:406
 msgid "Connect to given D-Bus address"
 msgstr "दिएको D-Bus ठेगानामा जडान गर्नुहोस्"
 
-#: gio/gdbus-tool.c:415
+#: gio/gdbus-tool.c:416
 msgid "Connection Endpoint Options:"
 msgstr "जडान अन्त्यबिन्दु विकल्पहरू:"
 
-#: gio/gdbus-tool.c:416
-#, fuzzy
+#: gio/gdbus-tool.c:417
 msgid "Options specifying the connection endpoint"
-msgstr "à¤\9cडान à¤\85नà¥\8dतà¥\8dयबिनà¥\8dदà¥\81 à¤µà¤¿à¤\95लà¥\8dपहरà¥\82:"
+msgstr "à¤\9cडान à¤\85नà¥\8dतà¥\8dयबिनà¥\8dदà¥\81 à¤¨à¤¿à¤°à¥\8dदिषà¥\8dà¤\9f à¤µà¤¿à¤\95लà¥\8dप"
 
-#: gio/gdbus-tool.c:439
-#, fuzzy, c-format
+#: gio/gdbus-tool.c:440
+#, c-format
 msgid "No connection endpoint specified"
-msgstr "à¤\9cडान à¤\85नà¥\8dतà¥\8dयबिनà¥\8dदà¥\81 à¤µà¤¿à¤\95लà¥\8dपहरà¥\82:"
+msgstr "à¤\9cडान à¤\85नà¥\8dतिमबिनà¥\8dदà¥\81 à¤¨à¤¿à¤°à¥\8dदिषà¥\8dà¤\9f à¤\97रिà¤\8fà¤\95à¥\8b à¤\9bà¥\88न"
 
-#: gio/gdbus-tool.c:449
+#: gio/gdbus-tool.c:450
 #, c-format
 msgid "Multiple connection endpoints specified"
 msgstr "एकाधिक जडान अन्त्य निर्दिष्ट गरिएको छ"
 
-#: gio/gdbus-tool.c:522
+#: gio/gdbus-tool.c:523
 #, c-format
 msgid "Warning: According to introspection data, interface “%s” does not exist\n"
 msgstr "चेतावनी: इन्टरक्रेसटेसन डाटाको अनुसार, इन्टरफेस \"%s\" अवस्थित छैन\n"
 
-#: gio/gdbus-tool.c:531
+#: gio/gdbus-tool.c:532
 #, c-format
 msgid "Warning: According to introspection data, method “%s” does not exist on interface “%s”\n"
 msgstr "चेतावनी: जाच भए डाटाको अनुसार, \"%s\" विधिमा  \"%s\" मा अवस्थित छैन।\n"
 
-#: gio/gdbus-tool.c:593
+#: gio/gdbus-tool.c:594
 msgid "Optional destination for signal (unique name)"
 msgstr ""
 
-#: gio/gdbus-tool.c:594
+#: gio/gdbus-tool.c:595
 msgid "Object path to emit signal on"
 msgstr "सङ्केत मा उत्सर्जन गर्ने वस्तु मार्ग"
 
-#: gio/gdbus-tool.c:595
+#: gio/gdbus-tool.c:596
 msgid "Signal and interface name"
 msgstr "सङ्केत र इन्टरफेस नाम"
 
-#: gio/gdbus-tool.c:628
+#: gio/gdbus-tool.c:629
 msgid "Emit a signal."
 msgstr "सङ्केत उत्सर्जन गर्नुहोस् ।."
 
-#: gio/gdbus-tool.c:683 gio/gdbus-tool.c:997 gio/gdbus-tool.c:1827
-#: gio/gdbus-tool.c:2059 gio/gdbus-tool.c:2279
+#: gio/gdbus-tool.c:684 gio/gdbus-tool.c:1001 gio/gdbus-tool.c:1836 gio/gdbus-tool.c:2068 gio/gdbus-tool.c:2288
 #, c-format
 msgid "Error connecting: %s\n"
 msgstr "'%s' मा जडान हुदै...\n"
 
-#: gio/gdbus-tool.c:703
+#: gio/gdbus-tool.c:704
 #, fuzzy, c-format
 msgid "Error: %s is not a valid unique bus name.\n"
 msgstr "त्रुटि:%s मान्य ज्ञात बस नाम होइन।\n"
 
-#: gio/gdbus-tool.c:722 gio/gdbus-tool.c:1040 gio/gdbus-tool.c:1870
+#: gio/gdbus-tool.c:723 gio/gdbus-tool.c:1044 gio/gdbus-tool.c:1879
 msgid "Error: Object path is not specified\n"
 msgstr "त्रुटि: वस्तु मार्ग निर्दिष्ट नगरेको \n"
 
-#: gio/gdbus-tool.c:765
+#: gio/gdbus-tool.c:766
 #, fuzzy
 #| msgid "Error: Method name is not specified\n"
 msgid "Error: Signal name is not specified\n"
 msgstr "त्रुटि: विधि नाम निर्दिष्ट छैन\n"
 
-#: gio/gdbus-tool.c:779
+#: gio/gdbus-tool.c:780
 #, fuzzy, c-format
 #| msgid "Error: Method name “%s” is invalid\n"
 msgid "Error: Signal name “%s” is invalid\n"
 msgstr "त्रुटि: %s अवैध विधि नाम\n"
 
-#: gio/gdbus-tool.c:791
+#: gio/gdbus-tool.c:792
 #, c-format
 msgid "Error: %s is not a valid interface name\n"
 msgstr "त्रुटि: %s अवैध इन्टरफेस नाम\n"
 
-#: gio/gdbus-tool.c:797
+#: gio/gdbus-tool.c:798
 #, c-format
 msgid "Error: %s is not a valid member name\n"
 msgstr "त्रुटि:%s मान्य सदस्य नाम होइन।\n"
 
 #. Use the original non-"parse-me-harder" error
-#: gio/gdbus-tool.c:834 gio/gdbus-tool.c:1172
+#: gio/gdbus-tool.c:835 gio/gdbus-tool.c:1176
 #, fuzzy, c-format
 msgid "Error parsing parameter %d: %s\n"
 msgstr "प्यारामिटर पदवर्णन गर्दा त्रुटि: %s\n"
 
-#: gio/gdbus-tool.c:866
+#: gio/gdbus-tool.c:867
 #, c-format
 msgid "Error flushing connection: %s\n"
 msgstr "त्रुटि: %s मा जडान खोल्न सकेन\n"
 
-#: gio/gdbus-tool.c:893
+#: gio/gdbus-tool.c:895
 msgid "Destination name to invoke method on"
 msgstr "गन्तव्य नाम विधि आह्वान"
 
-#: gio/gdbus-tool.c:894
+#: gio/gdbus-tool.c:896
 msgid "Object path to invoke method on"
 msgstr "डेटास्रोत कन्फिगरेसन त्रुटि:निर्दिष्ट नगरेको प्रदायक"
 
-#: gio/gdbus-tool.c:895
+#: gio/gdbus-tool.c:897
 msgid "Method and interface name"
 msgstr "विधि र इन्टरफेस नाम"
 
-#: gio/gdbus-tool.c:896
+#: gio/gdbus-tool.c:898
 msgid "Timeout in seconds"
 msgstr "सेकेण्डमा  समय समाप्ति"
 
-#: gio/gdbus-tool.c:942
+#: gio/gdbus-tool.c:899
+#, fuzzy
+#| msgid "Show information about locations"
+msgid "Allow interactive authorization"
+msgstr "प्रमाणिकरण असफल"
+
+#: gio/gdbus-tool.c:946
 msgid "Invoke a method on a remote object."
 msgstr ""
 "आदेशहरू:\n"
@@ -1100,56 +1111,56 @@ msgstr ""
 "\n"
 "प्रत्येक आदेशमा मद्दत पाउन \"% s COMMAND --help\" को प्रयोग गर्नुहोस्।"
 
-#: gio/gdbus-tool.c:1014 gio/gdbus-tool.c:1844 gio/gdbus-tool.c:2084
+#: gio/gdbus-tool.c:1018 gio/gdbus-tool.c:1853 gio/gdbus-tool.c:2093
 msgid "Error: Destination is not specified\n"
 msgstr "त्रुटि: गन्तव्य निर्दिष्ट नगरेको\n"
 
-#: gio/gdbus-tool.c:1025 gio/gdbus-tool.c:1861 gio/gdbus-tool.c:2095
+#: gio/gdbus-tool.c:1029 gio/gdbus-tool.c:1870 gio/gdbus-tool.c:2104
 #, fuzzy, c-format
 msgid "Error: %s is not a valid bus name\n"
 msgstr "त्रुटि:%s मान्य ज्ञात बस नाम होइन।\n"
 
-#: gio/gdbus-tool.c:1075
+#: gio/gdbus-tool.c:1079
 msgid "Error: Method name is not specified\n"
 msgstr "त्रुटि: विधि नाम निर्दिष्ट छैन\n"
 
-#: gio/gdbus-tool.c:1086
+#: gio/gdbus-tool.c:1090
 #, c-format
 msgid "Error: Method name “%s” is invalid\n"
 msgstr "त्रुटि: %s अवैध विधि नाम\n"
 
-#: gio/gdbus-tool.c:1164
+#: gio/gdbus-tool.c:1168
 #, fuzzy, c-format
 msgid "Error parsing parameter %d of type “%s”: %s\n"
 msgstr "प्यारामिटर पदवर्णन गर्दा त्रुटि: %s\n"
 
-#: gio/gdbus-tool.c:1190
-#, fuzzy, c-format
+#: gio/gdbus-tool.c:1194
+#, c-format
 msgid "Error adding handle %d: %s\n"
-msgstr "सम्पर्क थप्दा अज्ञात त्रुटि:%s"
+msgstr "%d ह्यान्डल थप्दा त्रुटि: %s\n"
 
-#: gio/gdbus-tool.c:1686
+#: gio/gdbus-tool.c:1695
 msgid "Destination name to introspect"
 msgstr "निगरानिको लागि गन्तव्य नाम"
 
-#: gio/gdbus-tool.c:1687
+#: gio/gdbus-tool.c:1696
 msgid "Object path to introspect"
 msgstr "डेटास्रोत कन्फिगरेसन त्रुटि:निर्दिष्ट नगरेको प्रदायक"
 
-#: gio/gdbus-tool.c:1688
+#: gio/gdbus-tool.c:1697
 msgid "Print XML"
 msgstr "XML मुद्रण गर्नुहोस्"
 
-#: gio/gdbus-tool.c:1689
+#: gio/gdbus-tool.c:1698
 #, fuzzy
 msgid "Introspect children"
 msgstr "शाखाहरु"
 
-#: gio/gdbus-tool.c:1690
+#: gio/gdbus-tool.c:1699
 msgid "Only print properties"
 msgstr "मुद्रण गुणहरू मात्र"
 
-#: gio/gdbus-tool.c:1779
+#: gio/gdbus-tool.c:1788
 msgid "Introspect a remote object."
 msgstr ""
 "आदेशहरू:\n"
@@ -1162,15 +1173,15 @@ msgstr ""
 "\n"
 "प्रत्येक आदेशमा मद्दत पाउन \"% s COMMAND --help\" को प्रयोग गर्नुहोस्।"
 
-#: gio/gdbus-tool.c:1985
+#: gio/gdbus-tool.c:1994
 msgid "Destination name to monitor"
 msgstr "निगरानिको लागि गन्तव्य नाम"
 
-#: gio/gdbus-tool.c:1986
+#: gio/gdbus-tool.c:1995
 msgid "Object path to monitor"
 msgstr "वस्तु पथ निगरानी"
 
-#: gio/gdbus-tool.c:2011
+#: gio/gdbus-tool.c:2020
 msgid "Monitor a remote object."
 msgstr ""
 "आदेशहरू:\n"
@@ -1183,75 +1194,80 @@ msgstr ""
 "\n"
 "प्रत्येक आदेशमा मद्दत पाउन \"% s COMMAND --help\" को प्रयोग गर्नुहोस्।"
 
-#: gio/gdbus-tool.c:2069
+#: gio/gdbus-tool.c:2078
 msgid "Error: can’t monitor a non-message-bus connection\n"
 msgstr "त्रुटि: सन्देश-विहिन जडान अनुगमन गर्न सकेन\n"
 
-#: gio/gdbus-tool.c:2193
+#: gio/gdbus-tool.c:2202
 msgid "Service to activate before waiting for the other one (well-known name)"
 msgstr ""
 
-#: gio/gdbus-tool.c:2196
+#: gio/gdbus-tool.c:2205
 msgid "Timeout to wait for before exiting with an error (seconds); 0 for no timeout (default)"
 msgstr ""
 
-#: gio/gdbus-tool.c:2244
+#: gio/gdbus-tool.c:2253
 msgid "[OPTION…] BUS-NAME"
 msgstr "[विकल्प…]बस नाम"
 
-#: gio/gdbus-tool.c:2245
+#: gio/gdbus-tool.c:2254
 msgid "Wait for a bus name to appear."
 msgstr "एउटा बस नामको लागि पर्खनुहोस्।"
 
-#: gio/gdbus-tool.c:2321
+#: gio/gdbus-tool.c:2330
 msgid "Error: A service to activate for must be specified.\n"
 msgstr "त्रुटि: सक्रिय गर्नका लागि एउटा सेवा निर्दिष्ट गर्नु पर्दछ ।\n"
 
-#: gio/gdbus-tool.c:2326
+#: gio/gdbus-tool.c:2335
 msgid "Error: A service to wait for must be specified.\n"
 msgstr "त्रुटि: प्रतीक्षा गर्नुपर्ने सेवा निर्दिष्ट गर्नु पर्दछ ।\n"
 
-#: gio/gdbus-tool.c:2331
+#: gio/gdbus-tool.c:2340
 msgid "Error: Too many arguments.\n"
 msgstr "त्रुटि: निकै धेरै तर्कहरू\n"
 
-#: gio/gdbus-tool.c:2339 gio/gdbus-tool.c:2346
+#: gio/gdbus-tool.c:2348 gio/gdbus-tool.c:2355
 #, c-format
 msgid "Error: %s is not a valid well-known bus name.\n"
 msgstr "त्रुटि:%s मान्य ज्ञात बस नाम होइन।\n"
 
-#: gio/gdesktopappinfo.c:2106 gio/gdesktopappinfo.c:4932
+#: gio/gdebugcontrollerdbus.c:358
+#, c-format
+msgid "Not authorized to change debug settings"
+msgstr "त्रुटि सच्याउने सेटिङ परिवर्तन गर्न अधिकार प्राप्त छैन"
+
+#: gio/gdesktopappinfo.c:2178 gio/gdesktopappinfo.c:5105
 msgid "Unnamed"
 msgstr "बेनामी"
 
-#: gio/gdesktopappinfo.c:2516
+#: gio/gdesktopappinfo.c:2588
 msgid "Desktop file didn’t specify Exec field"
 msgstr "डेस्कटप फाइलले Exec फाँट निर्दिष्ट गरेन"
 
-#: gio/gdesktopappinfo.c:2801
+#: gio/gdesktopappinfo.c:2896
 msgid "Unable to find terminal required for application"
 msgstr "अनुप्रयोग लागी टर्मिनल खोज्न असक्षम"
 
-#: gio/gdesktopappinfo.c:3452
+#: gio/gdesktopappinfo.c:3625
 #, c-format
 msgid "Can’t create user application configuration folder %s: %s"
 msgstr "%s प्रयोगकर्ता अनुप्रयोग कन्फिगरेसन फोल्डर सिर्जना गर्न सकिँदैन: %s"
 
-#: gio/gdesktopappinfo.c:3456
+#: gio/gdesktopappinfo.c:3629
 #, c-format
 msgid "Can’t create user MIME configuration folder %s: %s"
 msgstr "%s प्रयोगकर्ता MIME कन्फिगरेसन फोल्डर सिर्जना गर्न सकिँदैन: %s"
 
-#: gio/gdesktopappinfo.c:3698 gio/gdesktopappinfo.c:3722
+#: gio/gdesktopappinfo.c:3871 gio/gdesktopappinfo.c:3895
 msgid "Application information lacks an identifier"
 msgstr "अनुप्रयोग सूचनामा पहिचायकको कमी छ"
 
-#: gio/gdesktopappinfo.c:3958
+#: gio/gdesktopappinfo.c:4131
 #, c-format
 msgid "Can’t create user desktop file %s"
 msgstr "%s प्रयोगकर्ता डेस्कटप फाइल सिर्जना गर्न सकेन"
 
-#: gio/gdesktopappinfo.c:4094
+#: gio/gdesktopappinfo.c:4267
 #, c-format
 msgid "Custom definition for %s"
 msgstr "%s को अनुकूल परिभाषा"
@@ -1279,12 +1295,11 @@ msgstr "ड्राइभले सुरुआत कार्यान्व
 msgid "drive doesn’t implement stop"
 msgstr "ड्राइभले रोक कार्यान्वयन गर्दैन"
 
-#: gio/gdtlsconnection.c:1120 gio/gtlsconnection.c:921
+#: gio/gdtlsconnection.c:1186 gio/gtlsconnection.c:955
 msgid "TLS backend does not implement TLS binding retrieval"
 msgstr ""
 
-#: gio/gdummytlsbackend.c:195 gio/gdummytlsbackend.c:321
-#: gio/gdummytlsbackend.c:513
+#: gio/gdummytlsbackend.c:195 gio/gdummytlsbackend.c:321 gio/gdummytlsbackend.c:513
 msgid "TLS support is not available"
 msgstr "TLS समर्थन उपलब्ध छैन"
 
@@ -1293,9 +1308,9 @@ msgid "DTLS support is not available"
 msgstr "DTLS समर्थन उपलब्ध छैन"
 
 #: gio/gemblem.c:323
-#, fuzzy, c-format
+#, c-format
 msgid "Can’t handle version %d of GEmblem encoding"
-msgstr "GVfsIcon सङ्केतनको संस्करण %d ह्याण्डल गर्न सकिँदैन"
+msgstr "GEmblem सङ्केतनको संस्करण %d ह्याण्डल गर्न सकिँदैन"
 
 #: gio/gemblem.c:333
 #, c-format
@@ -1303,9 +1318,9 @@ msgid "Malformed number of tokens (%d) in GEmblem encoding"
 msgstr ""
 
 #: gio/gemblemedicon.c:362
-#, fuzzy, c-format
+#, c-format
 msgid "Can’t handle version %d of GEmblemedIcon encoding"
-msgstr "GVfsIcon सङ्केतनको संस्करण %d ह्याण्डल गर्न सकिँदैन"
+msgstr "GEmblemedIcon सङ्केतनको संस्करण %d ह्यान्डल गर्न सकिँदैन"
 
 #: gio/gemblemedicon.c:372
 #, c-format
@@ -1315,83 +1330,82 @@ msgstr ""
 #: gio/gemblemedicon.c:395
 #, fuzzy
 msgid "Expected a GEmblem for GEmblemedIcon"
-msgstr "(?( पछि दाबी अपेक्षित"
+msgstr "अङ्क अपेक्षित"
 
 #. Translators: This is an error message when
 #. * trying to find the enclosing (user visible)
 #. * mount of a file, but none exists.
 #.
-#: gio/gfile.c:1561
+#: gio/gfile.c:1579
 msgid "Containing mount does not exist"
 msgstr "समाविष्ट माउन्ट अवस्थित छैन"
 
-#: gio/gfile.c:2608 gio/glocalfile.c:2472
+#: gio/gfile.c:2626 gio/glocalfile.c:2486
 msgid "Can’t copy over directory"
 msgstr "निर्देशिकामा प्रतिलिपि गर्न सकिँदैन"
 
-#: gio/gfile.c:2668
+#: gio/gfile.c:2686
 #, fuzzy
 msgid "Can’t copy directory over directory"
 msgstr "निर्देशिकामा प्रतिलिपि गर्न सकिँदैन"
 
-#: gio/gfile.c:2676
+#: gio/gfile.c:2694
 msgid "Target file exists"
 msgstr "लक्ष्य फाइल अवस्थित छ"
 
-#: gio/gfile.c:2695
+#: gio/gfile.c:2713
 #, fuzzy
 msgid "Can’t recursively copy directory"
 msgstr "निर्देशिकामा प्रतिलिपि गर्न सकिँदैन"
 
-#: gio/gfile.c:2996
-#, fuzzy
+#: gio/gfile.c:3014
 msgid "Splice not supported"
-msgstr "समरà¥\8dथित à¤\9bà¥\88न "
+msgstr "सà¥\8dपà¥\8dलिस à¤¸à¤®à¤°à¥\8dथित à¤\9bà¥\88न"
 
-#: gio/gfile.c:3000
+#: gio/gfile.c:3018
 #, fuzzy, c-format
 msgid "Error splicing file: %s"
-msgstr "फाà¤\87ल à¤®à¥\87à¤\9fà¥\8dदा à¤¤à¥\8dरà¥\81à¤\9fि: %s"
+msgstr "फाà¤\87ल à¤ªà¤¢à¥\8dदा à¤¤à¥\8dरà¥\81à¤\9fि %s: %s"
 
-#: gio/gfile.c:3152
+#: gio/gfile.c:3170
 msgid "Copy (reflink/clone) between mounts is not supported"
 msgstr "माउन्टहरूको बीचमा प्रतिलिपि (reflink/clone) समर्थित छैन"
 
-#: gio/gfile.c:3156
+#: gio/gfile.c:3174
 msgid "Copy (reflink/clone) is not supported or invalid"
 msgstr "प्रतिलिपि (reflink/clone) समर्थित वा अवैध छैन"
 
-#: gio/gfile.c:3161
+#: gio/gfile.c:3179
 msgid "Copy (reflink/clone) is not supported or didn’t work"
 msgstr "प्रतिलिपि (reflink/clone) समर्थित छैन वा काम गरेको छैन"
 
-#: gio/gfile.c:3226
+#: gio/gfile.c:3244
 msgid "Can’t copy special file"
 msgstr "विशेष फाइल प्रतिलिपि गर्न सक्दैन"
 
-#: gio/gfile.c:4035
+#: gio/gfile.c:4138
 #, fuzzy
 msgid "Invalid symlink value given"
-msgstr "यो मान अवैध छ।."
+msgstr "<choice value='%s'/> पहिल्यै नै दिएको छ"
 
-#: gio/gfile.c:4045 glib/gfileutils.c:2362
+#: gio/gfile.c:4148 glib/gfileutils.c:2333
 msgid "Symbolic links not supported"
 msgstr "सांकेतिक सम्बन्ध समर्थन गरिएन"
 
-#: gio/gfile.c:4213
+#: gio/gfile.c:4316
 msgid "Trash not supported"
 msgstr "रद्दीटोकरी समर्थित छैन"
 
-#: gio/gfile.c:4325
+#: gio/gfile.c:4428
 #, c-format
 msgid "File names cannot contain “%c”"
 msgstr "फाइल नामहरूमा “%c” समावेश गर्न सक्दैन"
 
-#: gio/gfile.c:6806 gio/gvolume.c:364
+#: gio/gfile.c:7028 gio/gvolume.c:364
 msgid "volume doesn’t implement mount"
 msgstr "भोल्युमले माउन्ट कार्यान्वयन गर्दैन"
 
-#: gio/gfile.c:6920 gio/gfile.c:6968
+#: gio/gfile.c:7142 gio/gfile.c:7190
 msgid "No application is registered as handling this file"
 msgstr "यस फाइल हेर्न पूर्वनिर्धारित अनुप्रयोग दर्ता गरिएको छैन।"
 
@@ -1400,8 +1414,7 @@ msgstr "यस फाइल हेर्न पूर्वनिर्धार
 msgid "Enumerator is closed"
 msgstr "फाइल गणनाकर्ता पहिले नै बन्द छ"
 
-#: gio/gfileenumerator.c:219 gio/gfileenumerator.c:278
-#: gio/gfileenumerator.c:377 gio/gfileenumerator.c:476
+#: gio/gfileenumerator.c:219 gio/gfileenumerator.c:278 gio/gfileenumerator.c:377 gio/gfileenumerator.c:476
 msgid "File enumerator has outstanding operation"
 msgstr ""
 
@@ -1410,23 +1423,21 @@ msgid "File enumerator is already closed"
 msgstr "फाइल गणनाकर्ता पहिले नै बन्द छ"
 
 #: gio/gfileicon.c:250
-#, fuzzy, c-format
+#, c-format
 msgid "Can’t handle version %d of GFileIcon encoding"
-msgstr "GVfsIcon सङ्केतनको संस्करण %d ह्याण्डल गर्न सकिँदैन"
+msgstr "GFile Icon सङ्केतनको संस्करण %d ह्याण्डल गर्न सकिँदैन"
 
 #: gio/gfileicon.c:260
 #, fuzzy
 msgid "Malformed input data for GFileIcon"
 msgstr "क्रमाङ्कन गरिएको डेटा विकृत छ"
 
-#: gio/gfileinputstream.c:149 gio/gfileinputstream.c:394
-#: gio/gfileiostream.c:167 gio/gfileoutputstream.c:164
+#: 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"
 msgstr ""
 
-#: gio/gfileinputstream.c:325 gio/gfileiostream.c:379
-#: gio/gfileoutputstream.c:371
+#: gio/gfileinputstream.c:325 gio/gfileiostream.c:379 gio/gfileoutputstream.c:371
 msgid "Seek not supported on stream"
 msgstr "स्ट्रिममा खोजी समर्थित छैन "
 
@@ -1439,20 +1450,18 @@ msgstr "आधार स्ट्रीममा कताई समर्थि
 msgid "Truncate not supported on stream"
 msgstr "स्ट्रीममा कताई समर्थित छैन"
 
-#: gio/ghttpproxy.c:91 gio/gresolver.c:443 gio/gresolver.c:596
-#: glib/gconvert.c:1778
+#: gio/ghttpproxy.c:91 gio/gresolver.c:458 gio/gresolver.c:611 glib/gconvert.c:1825
 msgid "Invalid hostname"
 msgstr "अवैध होस्टनाम"
 
 #: gio/ghttpproxy.c:143
-#, fuzzy
 msgid "Bad HTTP proxy reply"
-msgstr "à¤\8fà¤\9aà¤\9fà¥\80à¤\9fà¥\80पà¥\80 (HTTP) à¤ªà¥\8dरà¥\8bà¤\95à¥\8dसà¥\80  à¤ªà¥\8dरमाणà¥\80à¤\95रण à¤\85सफल à¤­à¤¯à¥\8b"
+msgstr "à¤\96राब HTTP à¤ªà¥\8dरà¥\8bà¤\95à¥\8dसà¥\80 à¤\9cवाफ"
 
 #: gio/ghttpproxy.c:159
 #, fuzzy
 msgid "HTTP proxy connection not allowed"
-msgstr "à¤\8fà¤\9aà¤\9fà¥\80à¤\9fà¥\80पà¥\80 (HTTP) à¤ªà¥\8dरà¥\8bà¤\95à¥\8dसà¥\80  à¤ªà¥\8dरमाणà¥\80à¤\95रण à¤\85सफल à¤­à¤¯à¥\8b"
+msgstr "à¤\96राब HTTP à¤ªà¥\8dरà¥\8bà¤\95à¥\8dसà¥\80 à¤\9cवाफ"
 
 #: gio/ghttpproxy.c:164
 msgid "HTTP proxy authentication failed"
@@ -1508,9 +1517,8 @@ msgid "Type %s does not implement from_tokens() on the GIcon interface"
 msgstr ""
 
 #: gio/gicon.c:469
-#, fuzzy
 msgid "Can’t handle the supplied version of the icon encoding"
-msgstr "GVfsIcon सङ्केतनको संस्करण %d ह्याण्डल गर्न सकिँदैन"
+msgstr "प्रतिमा सङ्केतनको आपूर्ति गरिएको संस्करण ह्यान्डल गर्न सकिँदैन"
 
 #: gio/ginetaddressmask.c:182
 msgid "No address specified"
@@ -1530,19 +1538,20 @@ msgstr "ठेगानामा उपसर्ग लम्बाइ भन्
 msgid "Could not parse “%s” as IP address mask"
 msgstr "आईपी ठेगाना मास्कको रूपमा \"%s\" पद वर्णन गर्न सकेन"
 
-#: gio/ginetsocketaddress.c:203 gio/ginetsocketaddress.c:220
-#: gio/gnativesocketaddress.c:109 gio/gunixsocketaddress.c:220
+#: gio/ginetsocketaddress.c:203 gio/ginetsocketaddress.c:220 gio/gnativesocketaddress.c:109
+#: gio/gunixsocketaddress.c:228
 #, fuzzy
 msgid "Not enough space for socket address"
-msgstr "निरà¥\8dयात à¤\97रà¥\8dन à¤\85सफल: à¤\97नà¥\8dतवà¥\8dयमा à¤ªà¤°à¥\8dयापà¥\8dत à¤\96ालà¥\80 à¤¸à¥\8dथान छैन"
+msgstr "डिसà¥\8dà¤\95मा à¤ªà¤°à¥\8dयापà¥\8dत à¤\96ालà¥\80सà¥\8dथान à¤\89पलबà¥\8dध छैन"
 
 #: gio/ginetsocketaddress.c:235
 msgid "Unsupported socket address"
 msgstr "असमर्थित सकेट ठेगाना"
 
 #: gio/ginputstream.c:188
+#, fuzzy
 msgid "Input stream doesn’t implement read"
-msgstr ""
+msgstr "आगत प्रवाहले खोजी कार्यान्वयन गर्दैन"
 
 #. Translators: This is an error you get if there is already an
 #. * operation running against this stream when you try to start
@@ -1550,7 +1559,7 @@ msgstr ""
 #. 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:1247 gio/giostream.c:310 gio/goutputstream.c:2208
+#: gio/ginputstream.c:1249 gio/giostream.c:310 gio/goutputstream.c:2208
 #, fuzzy
 msgid "Stream has outstanding operation"
 msgstr "अलार्ममा केहि अपुरो काम छ।"
@@ -1560,9 +1569,8 @@ msgid "Copy with file"
 msgstr "फाइलसहित प्रतिलिपि गर्नुहोस्"
 
 #: gio/gio-tool.c:164
-#, fuzzy
 msgid "Keep with file when moved"
-msgstr "फाà¤\87ल à¤°à¤¦à¥\8dदà¥\80à¤\9fà¥\8bà¤\95रà¥\80मा à¤°à¤¾à¤\96िà¤\8fà¤\95à¥\8b à¤®à¤¿à¤¤à¥\80"
+msgstr "सारà¥\8dदा à¤«à¤¾à¤\87ल à¤°à¤¾à¤\96à¥\8dनà¥\81हà¥\8bसà¥\8d"
 
 #: gio/gio-tool.c:205
 msgid "“version” takes no arguments"
@@ -1596,12 +1604,12 @@ msgstr "स्थानहरूको बारेमा जानकारी
 #, fuzzy
 #| msgid "Launch an application"
 msgid "Launch an application from a desktop file"
-msgstr "अनुप्रयोग पिक्सम्याप फाइल पत्ता लगाउन सकेन: %s\n"
+msgstr "(.desktop फाइलबाट) अनुप्रयोगका लागि स्थिर कार्यहरू सूचीबद्ध गर्नुहोस्"
 
 #: gio/gio-tool.c:233
 #, fuzzy
 msgid "List the contents of locations"
-msgstr "सà¥\8dथानहरà¥\82"
+msgstr "फाà¤\87लहरà¥\82 à¤°à¤¦à¥\8dदà¥\80à¤\9fà¥\8bà¤\95रà¥\80मा à¤¤à¤¿à¤¨à¥\80हरà¥\82à¤\95à¥\8b à¤®à¥\8cलिà¤\95 à¤¸à¥\8dथानसà¤\81à¤\97 à¤¸à¥\82à¤\9aà¥\80à¤\95à¥\83त à¤\97रà¥\8dनà¥\81हà¥\8bसà¥\8d"
 
 #: gio/gio-tool.c:234
 msgid "Get or set the handler for a mimetype"
@@ -1665,12 +1673,10 @@ msgid "Error writing to stdout"
 msgstr "%s: %s: स्टडआउटमा लेख्दा त्रुटि"
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-cat.c:133 gio/gio-tool-info.c:340 gio/gio-tool-list.c:172
-#: 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:204 gio/gio-tool-mount.c:1199 gio/gio-tool-open.c:70
-#: gio/gio-tool-remove.c:48 gio/gio-tool-rename.c:45 gio/gio-tool-set.c:89
-#: gio/gio-tool-trash.c:220 gio/gio-tool-tree.c:239
+#: gio/gio-tool-cat.c:133 gio/gio-tool-info.c:340 gio/gio-tool-list.c:172 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:204 gio/gio-tool-mount.c:1199 gio/gio-tool-open.c:70 gio/gio-tool-remove.c:48
+#: gio/gio-tool-rename.c:45 gio/gio-tool-set.c:89 gio/gio-tool-trash.c:220 gio/gio-tool-tree.c:239
 msgid "LOCATION"
 msgstr "स्थान"
 
@@ -1685,9 +1691,8 @@ msgid ""
 "like smb://server/resource/file.txt as location."
 msgstr ""
 
-#: gio/gio-tool-cat.c:162 gio/gio-tool-info.c:371 gio/gio-tool-mkdir.c:76
-#: gio/gio-tool-monitor.c:229 gio/gio-tool-mount.c:1250 gio/gio-tool-open.c:96
-#: gio/gio-tool-remove.c:72 gio/gio-tool-trash.c:303
+#: gio/gio-tool-cat.c:162 gio/gio-tool-info.c:371 gio/gio-tool-mkdir.c:76 gio/gio-tool-monitor.c:229
+#: gio/gio-tool-mount.c:1250 gio/gio-tool-open.c:96 gio/gio-tool-remove.c:72 gio/gio-tool-trash.c:303
 msgid "No locations given"
 msgstr "कुनै स्थान दिएको छैन"
 
@@ -1702,17 +1707,15 @@ msgstr "प्रगति देखाउनुहोस्"
 #: gio/gio-tool-copy.c:45 gio/gio-tool-move.c:40
 #, fuzzy
 msgid "Prompt before overwrite"
-msgstr "बà¤\9aत à¤\97रà¥\8dनà¥\81भनà¥\8dदा à¤ªà¤¹à¤¿à¤²à¤¾à¤\95à¥\8b à¤ªà¥\8dरà¥\8bमà¥\8dपà¥\8dà¤\9f"
+msgstr "à¤\85धिलà¥\87à¤\96न à¤\97रà¥\8dनà¥\81हà¥\8bसà¥\8d"
 
 #: gio/gio-tool-copy.c:46
-#, fuzzy
 msgid "Preserve all attributes"
-msgstr "सरà¤\95à¥\8dषण गर्नुहोस्"
+msgstr "सबà¥\88 à¤µà¤¿à¤¶à¥\87षता à¤¸à¥\81रà¤\95à¥\8dषित गर्नुहोस्"
 
 #: gio/gio-tool-copy.c:47 gio/gio-tool-move.c:41 gio/gio-tool-save.c:49
-#, fuzzy
 msgid "Backup existing destination files"
-msgstr "à¤\9cà¤\97à¥\87डा à¤«à¤¾à¤\87ल à¤¦à¥\87à¤\96ाà¤\89नुहोस्"
+msgstr "à¤\85वसà¥\8dथित à¤\97नà¥\8dतबà¥\8dय à¤«à¤¾à¤\87लहरà¥\82 à¤\9cà¤\97à¥\87डा à¤\97रà¥\8dनुहोस्"
 
 #: gio/gio-tool-copy.c:48
 msgid "Never follow symbolic links"
@@ -1834,7 +1837,7 @@ msgstr "सुलभ विशेषताहरू:\n"
 #: gio/gio-tool-info.c:310
 #, fuzzy
 msgid "Writable attribute namespaces:\n"
-msgstr "लà¥\87à¤\96à¥\8dन à¤¸à¤\95िनà¥\87 à¤¸à¥\8dमà¥\83ति"
+msgstr "à¤\95à¥\81à¤\9eà¥\8dà¤\9cà¥\80 à¤²à¥\87à¤\96नयà¥\8bà¤\97à¥\8dय à¤\9bà¥\88न\n"
 
 #: gio/gio-tool-info.c:345
 msgid "Show information about locations."
@@ -1875,7 +1878,7 @@ msgstr "'%s' लोड गर्न अक्षम: %s"
 #, fuzzy, c-format
 #| msgid "Failed to read from file '%s': %s"
 msgid "Unable to load application information for ‘%s‘"
-msgstr "छवि-लोडिङ मोड्युल लोड गर्न असफल: %s: %s"
+msgstr "%s लोड गर्न असमर्थ"
 
 #: gio/gio-tool-launch.c:119
 #, c-format
@@ -1891,20 +1894,17 @@ msgid "Use a long listing format"
 msgstr "लामो सूची ढाँचा प्रयोग गर्नुहोस्"
 
 #: gio/gio-tool-list.c:40
-#, fuzzy
-#| msgid "display name: %s\n"
 msgid "Print display names"
-msgstr "à¤\95ारà¥\8dयसà¥\8dथान à¤¨à¤¾à¤® à¤ªà¥\8dरदरà¥\8dशन गर्नुहोस्"
+msgstr "पà¥\8dरदरà¥\8dशन à¤¨à¤¾à¤® à¤®à¥\81दà¥\8dरण गर्नुहोस्"
 
 #: gio/gio-tool-list.c:41
-#, fuzzy
 msgid "Print full URIs"
-msgstr "à¤\9cहिलà¥\87पनि à¤ªà¥\82रा à¤\85भिवà¥\8dयà¤\95à¥\8dति मुद्रण गर्नुहोस्"
+msgstr "पà¥\82रा URIs मुद्रण गर्नुहोस्"
 
 #: gio/gio-tool-list.c:177
 #, fuzzy
 msgid "List the contents of the locations."
-msgstr "सà¥\8dथानहरà¥\82"
+msgstr "फाà¤\87लहरà¥\82 à¤°à¤¦à¥\8dदà¥\80à¤\9fà¥\8bà¤\95रà¥\80मा à¤¤à¤¿à¤¨à¥\80हरà¥\82à¤\95à¥\8b à¤®à¥\8cलिà¤\95 à¤¸à¥\8dथानसà¤\81à¤\97 à¤¸à¥\82à¤\9aà¥\80à¤\95à¥\83त à¤\97रà¥\8dनà¥\81हà¥\8bसà¥\8d"
 
 #: gio/gio-tool-list.c:179
 msgid ""
@@ -1972,9 +1972,9 @@ msgid "Failed to load info for handler “%s”"
 msgstr "प्रमाणपत्र लोड गर्न असफल: %s"
 
 #: gio/gio-tool-mime.c:168
-#, fuzzy, c-format
+#, c-format
 msgid "Failed to set “%s” as the default handler for “%s”: %s\n"
-msgstr "पाइप अवरोध बिहिन सेट गर्न असफल भयो: %s"
+msgstr "\"%s\" का लागि पूर्वनिर्धारित ह्यान्डलरको रूपमा \"%s\" सेट गर्न असफल भयो: %s\n"
 
 #: gio/gio-tool-mkdir.c:31
 msgid "Create parent directories"
@@ -2084,11 +2084,10 @@ msgid "The numeric PIM when unlocking a VeraCrypt volume"
 msgstr ""
 
 #: gio/gio-tool-mount.c:75
-#, fuzzy
 #| msgctxt "GDateTime"
 #| msgid "PM"
 msgid "PIM"
-msgstr "_PIM"
+msgstr "PIM"
 
 #: gio/gio-tool-mount.c:76
 msgid "Mount a TCRYPT hidden volume"
@@ -2133,7 +2132,7 @@ msgstr ""
 #: gio/gio-tool-move.c:143
 #, fuzzy, c-format
 msgid "Target %s is not a directory"
-msgstr "लक्षित निर्देशिका “%s” अवस्थित छैन"
+msgstr "लक्षित निर्देशिका छैन"
 
 #: gio/gio-tool-open.c:75
 msgid ""
@@ -2154,7 +2153,6 @@ msgid "NAME"
 msgstr "नाम"
 
 #: gio/gio-tool-rename.c:50
-#, fuzzy
 msgid "Rename a file."
 msgstr "फाइल पुन:नामाकरण गर्नुहोस्"
 
@@ -2205,7 +2203,7 @@ msgstr "ETAG"
 #: gio/gio-tool-save.c:113
 #, fuzzy
 msgid "Error reading from standard input"
-msgstr "फाà¤\87लबाà¤\9f à¤ªà¤¢à¥\8dनà¥\87 à¤\95à¥\8dरममा à¤¤à¥\8dरà¥\81à¤\9fि"
+msgstr "हà¥\87नà¥\8dदलबाà¤\9f à¤ªà¤¢à¥\8dदा à¤¤à¥\8dरà¥\81à¤\9fि: %s"
 
 #. Translators: The "etag" is a token allowing to verify whether a file has been modified
 #: gio/gio-tool-save.c:139
@@ -2238,9 +2236,8 @@ msgid "VALUE"
 msgstr "मान"
 
 #: gio/gio-tool-set.c:93
-#, fuzzy
 msgid "Set a file attribute of LOCATION."
-msgstr "फाà¤\87लविशà¥\87षता à¤¸à¥\87à¤\9f à¤\97रà¥\8dनà¥\81हà¥\8bसà¥\8d"
+msgstr "सà¥\8dथानà¤\95à¥\8b à¤«à¤¾à¤\87ल à¤µà¤¿à¤¶à¥\87षता à¤¸à¥\87à¤\9f à¤\97रà¥\8dनà¥\81हà¥\8bसà¥\8d à¥¤"
 
 #: gio/gio-tool-set.c:113
 msgid "Location not specified"
@@ -2264,9 +2261,8 @@ msgid "Empty the trash"
 msgstr "रद्दीटोकरी खाली गर्नुहोस्"
 
 #: gio/gio-tool-trash.c:35
-#, fuzzy
 msgid "List files in the trash with their original locations"
-msgstr "सामà¤\97à¥\8dरà¥\80हरà¥\82 (_C)"
+msgstr "फाà¤\87लहरà¥\82 à¤°à¤¦à¥\8dदà¥\80à¤\9fà¥\8bà¤\95रà¥\80मा à¤¤à¤¿à¤¨à¥\80हरà¥\82à¤\95à¥\8b à¤®à¥\8cलिà¤\95 à¤¸à¥\8dथानसà¤\81à¤\97 à¤¸à¥\82à¤\9aà¥\80à¤\95à¥\83त à¤\97रà¥\8dनà¥\81हà¥\8bसà¥\8d"
 
 #: gio/gio-tool-trash.c:36
 msgid "Restore a file from trash to its original location (possibly recreating the directory)"
@@ -2301,9 +2297,8 @@ msgid "Location given doesn't start with trash:///"
 msgstr ""
 
 #: gio/gio-tool-tree.c:33
-#, fuzzy
 msgid "Follow symbolic links, mounts and shortcuts"
-msgstr "साङ्केतिक लिङ्क नपछ्याउनुहोस्"
+msgstr "साङ्केतिक लिङ्क, माउन्ट र सर्टकट पछ्याउनुहोस्"
 
 #: gio/gio-tool-tree.c:244
 msgid "List contents of directories in a tree-like format."
@@ -2344,8 +2339,7 @@ msgstr "अज्ञात विकल्प %s"
 #. * the second %s is an environment variable, and the third
 #. * %s is a command line tool
 #.
-#: gio/glib-compile-resources.c:310 gio/glib-compile-resources.c:367
-#: gio/glib-compile-resources.c:424
+#: gio/glib-compile-resources.c:310 gio/glib-compile-resources.c:367 gio/glib-compile-resources.c:424
 #, c-format
 msgid "%s preprocessing requested, but %s is not set, and %s is not in PATH"
 msgstr "%s पूर्व प्रक्रिया अनुरोध गरियो, तर %s सेट भएको छैन, र %s पथ होइन"
@@ -2358,81 +2352,83 @@ msgstr "फाइल पढ्दा त्रुटि %s: %s"
 #: gio/glib-compile-resources.c:477
 #, fuzzy, c-format
 msgid "Error compressing file %s"
-msgstr "%'d फाइल “%s” भित्र सङ्कुचित गरिदै"
+msgstr "फाइलहरू सङ्कुचनमा त्रुटि"
 
 #: gio/glib-compile-resources.c:541
 #, fuzzy, c-format
 msgid "text may not appear inside <%s>"
 msgstr "पाठ <%s> भित्र देखा पर्दैन"
 
-#: gio/glib-compile-resources.c:737 gio/glib-compile-schemas.c:2172
+#: gio/glib-compile-resources.c:819 gio/glib-compile-schemas.c:2172
 msgid "Show program version and exit"
 msgstr "कार्यक्रम संस्करण देखाउनुहोस् र निस्कनुहोस्"
 
-#: gio/glib-compile-resources.c:738
+#: gio/glib-compile-resources.c:820
 msgid "Name of the output file"
 msgstr "निर्गत फाइलको नाम"
 
-#: gio/glib-compile-resources.c:739
+#: gio/glib-compile-resources.c:821
 msgid "The directories to load files referenced in FILE from (default: current directory)"
 msgstr ""
 
-#: gio/glib-compile-resources.c:739 gio/glib-compile-schemas.c:2173
-#: gio/glib-compile-schemas.c:2202
+#: gio/glib-compile-resources.c:821 gio/glib-compile-schemas.c:2173 gio/glib-compile-schemas.c:2202
 msgid "DIRECTORY"
 msgstr "निर्देशिका"
 
-#: gio/glib-compile-resources.c:740
+#: gio/glib-compile-resources.c:822
 msgid "Generate output in the format selected for by the target filename extension"
 msgstr ""
 
-#: gio/glib-compile-resources.c:741
-#, fuzzy
+#: gio/glib-compile-resources.c:823
 msgid "Generate source header"
-msgstr "स्रोत/हेडर शीर्षकहरू:"
+msgstr "स्रोत हेडर सिर्जना गर्नुहोस्"
 
-#: gio/glib-compile-resources.c:742
+#: gio/glib-compile-resources.c:824
 msgid "Generate source code used to link in the resource file into your code"
 msgstr ""
 
-#: gio/glib-compile-resources.c:743
+#: gio/glib-compile-resources.c:825
 #, fuzzy
 msgid "Generate dependency list"
-msgstr "निरà¥\8dभरता"
+msgstr "à¤\9cडान à¤¨à¤¿à¤°à¥\8dभरता à¤µà¤¿à¤«à¤²"
 
-#: gio/glib-compile-resources.c:744
+#: gio/glib-compile-resources.c:826
 #, fuzzy
 msgid "Name of the dependency file to generate"
-msgstr "फाà¤\87लà¤\95à¥\8b à¤¨à¤¾à¤® à¤° à¤ªà¥\8dरतिमा à¥¤"
+msgstr "यà¥\8b à¤¨à¤¾à¤®à¤\95à¥\8b à¤«à¤¾à¤\87ल à¤ªà¤¹à¤¿à¤²à¥\8dयà¥\88 à¤\85वसà¥\8dथित à¤\9b"
 
-#: gio/glib-compile-resources.c:745
+#: gio/glib-compile-resources.c:827
 msgid "Include phony targets in the generated dependency file"
 msgstr ""
 
-#: gio/glib-compile-resources.c:746
+#: gio/glib-compile-resources.c:828
 msgid "Don’t automatically create and register resource"
 msgstr ""
 
-#: gio/glib-compile-resources.c:747
+#: gio/glib-compile-resources.c:829
 msgid "Don’t export functions; declare them G_GNUC_INTERNAL"
 msgstr ""
 
-#: gio/glib-compile-resources.c:748
+#: gio/glib-compile-resources.c:830
 msgid "Don’t embed resource data in the C file; assume it's linked externally instead"
 msgstr ""
 
-#: gio/glib-compile-resources.c:749
+#: gio/glib-compile-resources.c:831
 msgid "C identifier name used for the generated source code"
 msgstr "सिर्जना गरिएको स्रोत सङ्केतका लागि प्रयोग गरिएको C पहिचायक नाम"
 
-#: gio/glib-compile-resources.c:775
+#: gio/glib-compile-resources.c:832
+msgid "The target C compiler (default: the CC environment variable)"
+msgstr ""
+
+#: gio/glib-compile-resources.c:858
 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 ""
 
-#: gio/glib-compile-resources.c:797
+#: gio/glib-compile-resources.c:880
 msgid "You should give exactly one file name\n"
 msgstr ""
 
@@ -2638,9 +2634,9 @@ msgid "<%s id='%s'> not (yet) defined."
 msgstr "<%s id='%s'> परिभाषित गरिएको छैन ।."
 
 #: gio/glib-compile-schemas.c:1017
-#, fuzzy, c-format
+#, c-format
 msgid "Invalid GVariant type string “%s”"
-msgstr "GVariant मा रूपान्तर गर्दा अवैध स्ट्रिंग मान"
+msgstr "अवैध जिभेरिएन्ट प्रकार स्ट्रिङ \"%s\""
 
 #: gio/glib-compile-schemas.c:1047
 msgid "<override> given but schema isn’t extending anything"
@@ -2719,12 +2715,12 @@ msgstr "<%s> तत्व एउटा मात्र <%s> भित्र अ
 #: gio/glib-compile-schemas.c:1518
 #, fuzzy, c-format
 msgid "Element <%s> not allowed at the top level"
-msgstr "<%s>तत्व भित्र <%s>तत्वलाई अनुमति छैन"
+msgstr "तत्व <%s> <%s भित्र अनुमति छैन>"
 
 #: gio/glib-compile-schemas.c:1536
 #, fuzzy
 msgid "Element <default> is required in <key>"
-msgstr "आवश्यक तत्व %s हराइरहेको छ"
+msgstr "%s को पूर्वनिर्धारित मुद्रक प्राप्त गर्न प्रमाणीकरण आवश्यक छ"
 
 #: gio/glib-compile-schemas.c:1626
 #, c-format
@@ -2747,10 +2743,8 @@ msgid "This entire file has been ignored."
 msgstr "यो सम्पूर्ण फाइल उपेक्षा गरिएको छ ।"
 
 #: gio/glib-compile-schemas.c:1908
-#, fuzzy
-#| msgid "Ignoring this file.\n"
 msgid "Ignoring this file."
-msgstr "à¤\95à¥\81नà¥\88 à¤ªà¤¨à¤¿ à¤\85वसà¥\8dथित à¤\87नà¥\8dहिबिà¤\9fर à¤\89पà¥\87à¤\95à¥\8dषा à¤\97रà¥\8dदà¥\88à¤\9b"
+msgstr "यà¥\8b à¤«à¤¾à¤\87ल à¤\89पà¥\87à¤\95à¥\8dषा à¤\97रà¥\8dदà¥\88à¤\9b à¥¤"
 
 #: gio/glib-compile-schemas.c:1963
 #, fuzzy, c-format
@@ -2764,12 +2758,16 @@ msgstr "चेतावनी: (%s) निर्दिष्ट गरिएक
 
 #: gio/glib-compile-schemas.c:1993
 #, c-format
-msgid "Cannot provide per-desktop overrides for localized key “%s” in schema “%s” (override file “%s”); ignoring override for this key."
+msgid ""
+"Cannot provide per-desktop overrides for localized key “%s” in schema “%s” (override file “%s”); ignoring override "
+"for this key."
 msgstr ""
 
 #: gio/glib-compile-schemas.c:2002
 #, c-format
-msgid "Cannot provide per-desktop overrides for localized key “%s” in schema “%s” (override file “%s”) and --strict was specified; exiting."
+msgid ""
+"Cannot provide per-desktop overrides for localized key “%s” in schema “%s” (override file “%s”) and --strict was "
+"specified; exiting."
 msgstr ""
 
 #: gio/glib-compile-schemas.c:2026
@@ -2784,22 +2782,30 @@ msgstr ""
 
 #: gio/glib-compile-schemas.c:2065
 #, c-format
-msgid "Override for key “%s” in schema “%s” in override file “%s” is outside the range given in the schema; ignoring override for this key."
+msgid ""
+"Override for key “%s” in schema “%s” in override file “%s” is outside the range given in the schema; ignoring "
+"override for this key."
 msgstr ""
 
 #: gio/glib-compile-schemas.c:2075
 #, c-format
-msgid "Override for key “%s” in schema “%s” in override file “%s” is outside the range given in the schema and --strict was specified; exiting."
+msgid ""
+"Override for key “%s” in schema “%s” in override file “%s” is outside the range given in the schema and --strict was "
+"specified; exiting."
 msgstr ""
 
 #: gio/glib-compile-schemas.c:2101
 #, c-format
-msgid "Override for key “%s” in schema “%s” in override file “%s” is not in the list of valid choices; ignoring override for this key."
+msgid ""
+"Override for key “%s” in schema “%s” in override file “%s” is not in the list of valid choices; ignoring override "
+"for this key."
 msgstr ""
 
 #: gio/glib-compile-schemas.c:2111
 #, c-format
-msgid "Override for key “%s” in schema “%s” in override file “%s” is not in the list of valid choices and --strict was specified; exiting."
+msgid ""
+"Override for key “%s” in schema “%s” in override file “%s” is not in the list of valid choices and --strict was "
+"specified; exiting."
 msgstr ""
 
 #: gio/glib-compile-schemas.c:2173
@@ -2814,7 +2820,7 @@ msgstr "%s ले कुनै त्रुटिहरू दिएको छ
 #: gio/glib-compile-schemas.c:2175
 #, fuzzy
 msgid "Do not write the gschema.compiled file"
-msgstr "निरà¥\8dà¤\97त à¤«à¤¾à¤\87ल %s à¤®à¤¾ à¤²à¥\87à¤\96à¥\8dन à¤\85नà¥\81मति à¤\9bà¥\88न\n"
+msgstr "à¤\95à¥\8dयास à¤«à¤¾à¤\87ल à¤²à¥\87à¤\96à¥\8dन à¤\85सफल à¤­à¤¯à¥\8b: %s\n"
 
 #: gio/glib-compile-schemas.c:2176
 msgid "Do not enforce key name restrictions"
@@ -2832,10 +2838,8 @@ msgid "You should give exactly one directory name"
 msgstr ""
 
 #: gio/glib-compile-schemas.c:2269
-#, fuzzy
-#| msgid "No schema files found: "
 msgid "No schema files found: doing nothing."
-msgstr "सà¥\8dà¤\95िमा à¤«à¥\87ला à¤ªà¤°à¥\87न"
+msgstr "सà¥\8dà¤\95िमा à¤«à¤¾à¤\87ल à¤«à¥\87ला à¤ªà¤°à¥\87न: à¤\95à¥\87हà¥\80 à¤ªà¤¨à¤¿ à¤\97रिरहà¥\87à¤\95à¥\8b à¤\9bà¥\88न à¥¤"
 
 #: gio/glib-compile-schemas.c:2271
 #, fuzzy
@@ -2847,7 +2851,7 @@ msgstr "फाइलबाट अवस्थित कुञ्जीहरू
 msgid "Invalid filename %s"
 msgstr "%s अवैध फाइल नाम"
 
-#: gio/glocalfile.c:980
+#: gio/glocalfile.c:982
 #, c-format
 msgid "Error getting filesystem info for %s: %s"
 msgstr "%s का लागि फाइल प्रणाली सूचना प्राप्त गर्दा त्रुटि: %s"
@@ -2856,136 +2860,134 @@ msgstr "%s का लागि फाइल प्रणाली सूचन
 #. * the enclosing (user visible) mount of a file, but none
 #. * exists.
 #.
-#: gio/glocalfile.c:1121
+#: gio/glocalfile.c:1123
 #, c-format
 msgid "Containing mount for file %s not found"
 msgstr "फाइल %s का लागि माउन्ट समाविष्ट फेला परेन"
 
-#: gio/glocalfile.c:1144
+#: gio/glocalfile.c:1146
 msgid "Can’t rename root directory"
 msgstr "मूल निर्देशिका पुन: नामकरण गर्न सकिँदैन"
 
-#: gio/glocalfile.c:1162 gio/glocalfile.c:1185
-#, fuzzy, c-format
+#: gio/glocalfile.c:1164 gio/glocalfile.c:1187
+#, c-format
 msgid "Error renaming file %s: %s"
-msgstr "%s लाई %s मा पुन: नामाकरण गर्दै."
+msgstr "'%s' फाइल पुन: नामकरण गर्दा त्रुटि: %s"
 
-#: gio/glocalfile.c:1169
+#: gio/glocalfile.c:1171
 msgid "Can’t rename file, filename already exists"
 msgstr "फाइल नाम फेर्न सकिँदैन, फाइलनाम पहिले नै अवस्थित छ"
 
-#: gio/glocalfile.c:1182 gio/glocalfile.c:2366 gio/glocalfile.c:2394
-#: gio/glocalfile.c:2533 gio/glocalfileoutputstream.c:656
+#: gio/glocalfile.c:1184 gio/glocalfile.c:2380 gio/glocalfile.c:2408 gio/glocalfile.c:2547
+#: gio/glocalfileoutputstream.c:656
 msgid "Invalid filename"
 msgstr "अमान्य फाइलनाम"
 
-#: gio/glocalfile.c:1350 gio/glocalfile.c:1361
+#: gio/glocalfile.c:1352 gio/glocalfile.c:1363
 #, c-format
 msgid "Error opening file %s: %s"
 msgstr "%s फाइल खोल्दा त्रुटि: %s"
 
-#: gio/glocalfile.c:1486
+#: gio/glocalfile.c:1488
 #, fuzzy, c-format
 msgid "Error removing file %s: %s"
 msgstr "लक्ष्य फाइल हटाउँदा त्रुटि: %s"
 
-#: gio/glocalfile.c:1980 gio/glocalfile.c:1991
+#: gio/glocalfile.c:1982 gio/glocalfile.c:1993 gio/glocalfile.c:2020
 #, fuzzy, c-format
 msgid "Error trashing file %s: %s"
-msgstr "सन्देश ट्र्यास गर्दा त्रुटि: %s"
+msgstr "%s का लागि रद्दीटोकरी सूचना फाइल सिर्जना गर्न असक्षम: %s"
 
-#: gio/glocalfile.c:2029
+#: gio/glocalfile.c:2040
 #, c-format
 msgid "Unable to create trash directory %s: %s"
 msgstr "रद्दीटोकरी डाइरेक्ट्री सिर्जना गर्न असक्षम %s: %s"
 
-#: gio/glocalfile.c:2050
+#: gio/glocalfile.c:2061
 #, c-format
 msgid "Unable to find toplevel directory to trash %s"
 msgstr "रद्दीटोकरीमा माथिल्लो तहको डाइरेक्टरी फेला पार्न अक्षम %s"
 
-#: gio/glocalfile.c:2058
-#, fuzzy, c-format
+#: gio/glocalfile.c:2069
+#, c-format
 msgid "Trashing on system internal mounts is not supported"
-msgstr "साà¤\82à¤\95à¥\87तिà¤\95 à¤¸à¤®à¥\8dबनà¥\8dध à¤¸à¤®à¤°à¥\8dथन à¤\97रिà¤\8fन"
+msgstr "पà¥\8dरणालà¥\80 à¤\86नà¥\8dतरिà¤\95 à¤®à¤¾à¤\89नà¥\8dà¤\9fमा à¤°à¤¦à¥\8dदà¥\80à¤\9fà¥\8bà¤\95रà¥\80 à¤¸à¤®à¤°à¥\8dथित à¤\9bà¥\88न"
 
-#: gio/glocalfile.c:2141 gio/glocalfile.c:2169
+#: gio/glocalfile.c:2155 gio/glocalfile.c:2183
 #, c-format
 msgid "Unable to find or create trash directory %s to trash %s"
 msgstr "रद्दीटोकरीमा %s डाइरेक्टरी सिर्जना गर्न वा फेला पार्न असक्षम %s"
 
-#: gio/glocalfile.c:2215
+#: gio/glocalfile.c:2229
 #, c-format
 msgid "Unable to create trashing info file for %s: %s"
 msgstr "%s का लागि रद्दीटोकरी सूचना फाइल सिर्जना गर्न असक्षम: %s"
 
-#: gio/glocalfile.c:2277
+#: gio/glocalfile.c:2291
 #, fuzzy, c-format
 msgid "Unable to trash file %s across filesystem boundaries"
 msgstr "'%s' फाइल सिर्जना गर्न असफल: %s"
 
-#: gio/glocalfile.c:2281 gio/glocalfile.c:2337
+#: gio/glocalfile.c:2295 gio/glocalfile.c:2351
 #, c-format
 msgid "Unable to trash file %s: %s"
-msgstr " असक्षम %s: %s"
+msgstr "फाइल %s रद्दीटोकरीमा सार्न अक्षम: %s"
 
-#: gio/glocalfile.c:2343
+#: gio/glocalfile.c:2357
 #, c-format
 msgid "Unable to trash file %s"
 msgstr "फाइललाई रद्दिटोकरीमा सार्न असक्षम: %s"
 
-#: gio/glocalfile.c:2369
+#: gio/glocalfile.c:2383
 #, c-format
 msgid "Error creating directory %s: %s"
 msgstr "निर्देशिका %s सिर्जना गर्दा त्रुटि: %s"
 
-#: gio/glocalfile.c:2398
-#, fuzzy, c-format
+#: gio/glocalfile.c:2412
+#, c-format
 msgid "Filesystem does not support symbolic links"
-msgstr "साà¤\82à¤\95à¥\87तिà¤\95 à¤¸à¤®à¥\8dबनà¥\8dध '%s' à¤ªà¤¢à¥\8dन à¤\85सफल: %s"
+msgstr "फाà¤\87ल à¤ªà¥\8dरणालà¥\80लà¥\87 à¤¸à¤¾à¤\82à¤\95à¥\87तिà¤\95 à¤¸à¤®à¥\8dबनà¥\8dधलाà¤\88 à¤¸à¤®à¤°à¥\8dथन à¤\97रà¥\8dदà¥\88न"
 
-#: gio/glocalfile.c:2401
+#: gio/glocalfile.c:2415
 #, fuzzy, c-format
 msgid "Error making symbolic link %s: %s"
 msgstr "\"%s\" एउटा पुनरावर्ती सांकेतिक शृंखला हो."
 
-#: gio/glocalfile.c:2444 gio/glocalfile.c:2479 gio/glocalfile.c:2536
+#: gio/glocalfile.c:2458 gio/glocalfile.c:2493 gio/glocalfile.c:2550
 #, c-format
 msgid "Error moving file %s: %s"
 msgstr "%s फाइल सार्दा त्रुटि: %s"
 
-#: gio/glocalfile.c:2467
+#: gio/glocalfile.c:2481
 #, fuzzy
 msgid "Can’t move directory over directory"
 msgstr "निर्देशिकामा प्रतिलिपि गर्न सकिँदैन"
 
-#: gio/glocalfile.c:2493 gio/glocalfileoutputstream.c:1079
-#: gio/glocalfileoutputstream.c:1093 gio/glocalfileoutputstream.c:1108
-#: gio/glocalfileoutputstream.c:1125 gio/glocalfileoutputstream.c:1139
+#: gio/glocalfile.c:2507 gio/glocalfileoutputstream.c:1108 gio/glocalfileoutputstream.c:1122
+#: gio/glocalfileoutputstream.c:1137 gio/glocalfileoutputstream.c:1154 gio/glocalfileoutputstream.c:1168
 #, fuzzy
 msgid "Backup file creation failed"
 msgstr "अस्थायी फाइल सिर्जना गर्दा असफल भयो ।"
 
-#: gio/glocalfile.c:2512
+#: gio/glocalfile.c:2526
 #, c-format
 msgid "Error removing target file: %s"
 msgstr "लक्ष्य फाइल हटाउँदा त्रुटि: %s"
 
-#: gio/glocalfile.c:2526
+#: gio/glocalfile.c:2540
 #, fuzzy
 msgid "Move between mounts not supported"
 msgstr "माउन्टहरूको बीचमा प्रतिलिपि (reflink/clone) समर्थित छैन"
 
-#: gio/glocalfile.c:2700
+#: gio/glocalfile.c:2714
 #, fuzzy, c-format
 #| msgid "Could not open converter from '%s' to '%s': %s"
 msgid "Could not determine the disk usage of %s: %s"
 msgstr "“%s” को मौलिक स्थान निर्धारण गर्न सकेन  "
 
 #: gio/glocalfileinfo.c:767
-#, fuzzy
 msgid "Attribute value must be non-NULL"
-msgstr "सà¥\82à¤\9aà¥\80 à¤\85नà¥\81à¤\95à¥\8dरमणिà¤\95ा à¤¨à¥\87à¤\97à¥\87à¤\9fिभ à¤¨à¤­à¤\8fà¤\95à¥\8b à¤¹à¥\81नà¥\81परà¥\8dदà¤\9b à¥¤"
+msgstr "विशà¥\87षता à¤®à¤¾à¤¨ à¤¶à¥\82नà¥\8dय-रहित à¤¹à¥\81नà¥\81परà¥\8dà¤\9b"
 
 #: gio/glocalfileinfo.c:774
 #, fuzzy
@@ -3000,13 +3002,13 @@ msgstr "अवैध विशेषता प्रकार"
 #: gio/glocalfileinfo.c:821
 #, fuzzy, c-format
 msgid "Error setting extended attribute “%s”: %s"
-msgstr "%s: %s देखि %sमा सेट गर्दा त्रुटि"
+msgstr "गुण '%s' सेट गर्दा अज्ञात त्रुटि:%s"
 
 #: gio/glocalfileinfo.c:1709 gio/win32/gwinhttpfile.c:191
 msgid " (invalid encoding)"
 msgstr " (अवैध सङ्केतन)"
 
-#: gio/glocalfileinfo.c:1868 gio/glocalfileoutputstream.c:943
+#: gio/glocalfileinfo.c:1868 gio/glocalfileoutputstream.c:943 gio/glocalfileoutputstream.c:995
 #, fuzzy, c-format
 msgid "Error when getting information for file “%s”: %s"
 msgstr "'%s' फाइल पढ्दा त्रुटि : %s"
@@ -3049,16 +3051,14 @@ msgstr "%s: %s देखि %sमा सेट गर्दा त्रुट
 msgid "symlink must be non-NULL"
 msgstr "सूची अनुक्रमणिका नेगेटिभ नभएको हुनुपर्दछ ।"
 
-#: gio/glocalfileinfo.c:2382 gio/glocalfileinfo.c:2401
-#: gio/glocalfileinfo.c:2412
+#: gio/glocalfileinfo.c:2382 gio/glocalfileinfo.c:2401 gio/glocalfileinfo.c:2412
 #, fuzzy, c-format
 msgid "Error setting symlink: %s"
-msgstr "%s: %s देखि %sमा सेट गर्दा त्रुटि"
+msgstr "सिम्लिङ्क सेट गर्दा त्रुटि: फाइल सिम्लिङ्क होइन"
 
 #: gio/glocalfileinfo.c:2391
-#, fuzzy
 msgid "Error setting symlink: file is not a symlink"
-msgstr "सिमलिà¤\99à¥\8dà¤\95 `%.255s'à¤\95à¥\8b à¤¸à¥\8dवामितà¥\8dव à¤¸à¥\87à¤\9f à¤\97रà¥\8dदा à¤¤à¥\8dरà¥\81à¤\9fि"
+msgstr "सिमà¥\8dलिà¤\99à¥\8dà¤\95 à¤¸à¥\87à¤\9f à¤\97रà¥\8dदा à¤¤à¥\8dरà¥\81à¤\9fि: à¤«à¤¾à¤\87ल à¤¸à¤¿à¤®à¥\8dलिà¤\99à¥\8dà¤\95 à¤¹à¥\8bà¤\87न"
 
 #: gio/glocalfileinfo.c:2463
 #, c-format
@@ -3080,71 +3080,67 @@ msgstr ""
 msgid "UNIX timestamp %lld is outside of the range supported by Windows"
 msgstr ""
 
-#: gio/glocalfileinfo.c:2557
+#: gio/glocalfileinfo.c:2570
 #, fuzzy, c-format
 #| msgid "Value '%s' cannot be interpreted as a number."
 msgid "File name “%s” cannot be converted to UTF-16"
 msgstr "मान '%s' लाई सङ्ख्याको रूपमा व्याख्या गर्न सकिँदैन"
 
-#: gio/glocalfileinfo.c:2576
+#: gio/glocalfileinfo.c:2589
 #, fuzzy, c-format
 #| msgid "Value '%s' cannot be interpreted as a number."
 msgid "File “%s” cannot be opened: Windows Error %lu"
 msgstr "मान '%s' लाई सङ्ख्याको रूपमा व्याख्या गर्न सकिँदैन"
 
-#: gio/glocalfileinfo.c:2589
+#: gio/glocalfileinfo.c:2602
 #, fuzzy, c-format
 msgid "Error setting modification or access time for file “%s”: %lu"
 msgstr "रूपान्तरण अवधिमा त्रुटि: %s"
 
-#: gio/glocalfileinfo.c:2690
+#: gio/glocalfileinfo.c:2703
 #, fuzzy, c-format
 msgid "Error setting modification or access time: %s"
 msgstr "रूपान्तरण अवधिमा त्रुटि: %s"
 
-#: gio/glocalfileinfo.c:2713
-#, fuzzy
+#: gio/glocalfileinfo.c:2726
 msgid "SELinux context must be non-NULL"
-msgstr "सूची अनुक्रमणिका नेगेटिभ नभएको हुनुपर्दछ ।"
+msgstr "SELinux प्रसङ्ग नल हुनै पर्छ"
 
-#: gio/glocalfileinfo.c:2720
-#, fuzzy
+#: gio/glocalfileinfo.c:2733
 msgid "SELinux is not enabled on this system"
-msgstr "सà¤\95à¥\8dषम à¤ªà¤¾à¤°à¤¿à¤\8fà¤\95à¥\8b"
+msgstr "यà¥\8b à¤ªà¥\8dरणालà¥\80मा SELinux à¤¸à¤\95à¥\8dषम à¤ªà¤¾à¤°à¤¿à¤\8fà¤\95à¥\8b à¤\9bà¥\88न"
 
-#: gio/glocalfileinfo.c:2730
+#: gio/glocalfileinfo.c:2743
 #, fuzzy, c-format
 msgid "Error setting SELinux context: %s"
 msgstr "• एसइलिन्क्स सन्दर्भ पूर्वनिर्धारित : %s\n"
 
-#: gio/glocalfileinfo.c:2823
+#: gio/glocalfileinfo.c:2836
 #, fuzzy, c-format
 msgid "Setting attribute %s not supported"
-msgstr "%s: %s देखि %sमा सेट गर्दा त्रुटि"
+msgstr "खोजी फोल्डर सेटअप गर्दै: %s"
 
 #: gio/glocalfileinputstream.c:163 gio/glocalfileoutputstream.c:801
 #, fuzzy, c-format
 msgid "Error reading from file: %s"
 msgstr "फाइल “%s” पढ्दा त्रुटि:%s"
 
-#: gio/glocalfileinputstream.c:194 gio/glocalfileoutputstream.c:353
-#: gio/glocalfileoutputstream.c:447
+#: gio/glocalfileinputstream.c:194 gio/glocalfileoutputstream.c:353 gio/glocalfileoutputstream.c:447
 #, c-format
 msgid "Error closing file: %s"
 msgstr "फाइल बन्द गर्दा त्रुटि: %s"
 
-#: gio/glocalfileinputstream.c:272 gio/glocalfileoutputstream.c:563
-#: gio/glocalfileoutputstream.c:1157
+#: gio/glocalfileinputstream.c:272 gio/glocalfileoutputstream.c:563 gio/glocalfileoutputstream.c:1186
 #, fuzzy, c-format
 msgid "Error seeking in file: %s"
-msgstr "%s मा खोजी गर्दै"
+msgstr "फाइल लेखनमा त्रुटि: %s"
 
 #: gio/glocalfilemonitor.c:866
 msgid "Unable to find default local file monitor type"
 msgstr ""
 
-#: gio/glocalfileoutputstream.c:220 gio/glocalfileoutputstream.c:298
-#: gio/glocalfileoutputstream.c:334 gio/glocalfileoutputstream.c:822
+#: gio/glocalfileoutputstream.c:220 gio/glocalfileoutputstream.c:298 gio/glocalfileoutputstream.c:334
+#: gio/glocalfileoutputstream.c:822
 #, c-format
 msgid "Error writing to file: %s"
 msgstr "फाइल लेखनमा त्रुटि: %s"
@@ -3164,13 +3160,13 @@ msgstr "ब्याकअप फाइल सिर्जना गर्दा
 msgid "Error renaming temporary file: %s"
 msgstr "फाइलहरू पुन नामकरणमा एउटा त्रुटि"
 
-#: gio/glocalfileoutputstream.c:609 gio/glocalfileoutputstream.c:1208
+#: gio/glocalfileoutputstream.c:609 gio/glocalfileoutputstream.c:1239
 #, c-format
 msgid "Error truncating file: %s"
 msgstr "फाइल '%s' खोल्ने क्रममा त्रुटि"
 
-#: gio/glocalfileoutputstream.c:662 gio/glocalfileoutputstream.c:907
-#: gio/glocalfileoutputstream.c:1189 gio/gsubprocess.c:226
+#: gio/glocalfileoutputstream.c:662 gio/glocalfileoutputstream.c:907 gio/glocalfileoutputstream.c:1220
+#: gio/gsubprocess.c:229
 #, c-format
 msgid "Error opening file “%s”: %s"
 msgstr "\"%s\" फाइल खोल्दा त्रुटि: %s"
@@ -3183,48 +3179,47 @@ msgstr "लक्ष्य फाइल निर्देशिका हो"
 msgid "Target file is not a regular file"
 msgstr "लक्ष्य फाइल नियमित फाइल होइन ।"
 
-#: gio/glocalfileoutputstream.c:984
+#: gio/glocalfileoutputstream.c:1013
 msgid "The file was externally modified"
 msgstr "फाइल लाई बाहिरी तरिकाले परिमार्जित गरियो"
 
-#: gio/glocalfileoutputstream.c:1173
+#: gio/glocalfileoutputstream.c:1202
 #, fuzzy, c-format
 msgid "Error removing old file: %s"
 msgstr "लक्ष्य फाइल हटाउँदा त्रुटि: %s"
 
-#: gio/gmemoryinputstream.c:474 gio/gmemoryoutputstream.c:772
+#: gio/gmemoryinputstream.c:474 gio/gmemoryoutputstream.c:762
 #, fuzzy
 msgid "Invalid GSeekType supplied"
-msgstr "पासवरà¥\8dड à¤ªà¥\82रà¥\8dति à¤\97रिà¤\8fà¤\95à¥\8b à¤\9bà¥\88न"
+msgstr "à¤\85वà¥\88ध"
 
 #: gio/gmemoryinputstream.c:484
 msgid "Invalid seek request"
 msgstr "अवैध खोजी अनुरोध"
 
 #: gio/gmemoryinputstream.c:508
-#, fuzzy
 msgid "Cannot truncate GMemoryInputStream"
-msgstr "सूपबडीइनपुटस्ट्रीम ट्रंक गर्न सकिँदैन"
+msgstr "GMemoryInputStream काट्न सकिँदैन"
 
-#: gio/gmemoryoutputstream.c:567
+#: gio/gmemoryoutputstream.c:568
 msgid "Memory output stream not resizable"
-msgstr ""
+msgstr "स्मृति निर्गत स्ट्रिम रिसाइज गर्न सकिने छैन"
 
-#: gio/gmemoryoutputstream.c:583
+#: gio/gmemoryoutputstream.c:584
 msgid "Failed to resize memory output stream"
-msgstr ""
+msgstr "स्मृति निर्गत प्रवाह रिसाइज गर्न असफल"
 
-#: gio/gmemoryoutputstream.c:673
+#: gio/gmemoryoutputstream.c:663
 msgid "Amount of memory required to process the write is larger than available address space"
 msgstr "लेखन प्रक्रिया गर्न आवश्यक स्मृतिको मात्रा उपलब्ध ठेगाना खाली स्थान भन्दा ठूलो छ"
 
-#: gio/gmemoryoutputstream.c:782
+#: gio/gmemoryoutputstream.c:772
 msgid "Requested seek before the beginning of the stream"
-msgstr ""
+msgstr "खोलाको सुरु हुनुभन्दा पहिले अनुरोध गरिएको खोजी गर्नुहोस्"
 
-#: gio/gmemoryoutputstream.c:797
+#: gio/gmemoryoutputstream.c:787
 msgid "Requested seek beyond the end of the stream"
-msgstr ""
+msgstr "खोलाको अन्त्य पछि खोजी गर्न अनुरोध गरियो"
 
 #. Translators: This is an error
 #. * message for mount objects that
@@ -3232,7 +3227,7 @@ msgstr ""
 #: gio/gmount.c:399
 #, fuzzy
 msgid "mount doesn’t implement “unmount”"
-msgstr "भà¥\8bलà¥\8dयà¥\81मलà¥\87 à¤®à¤¾à¤\89नà¥\8dà¤\9f कार्यान्वयन गर्दैन"
+msgstr "माà¤\89नà¥\8dà¤\9fलà¥\87 \"à¤\85नमाà¤\89नà¥\8dà¤\9f\" à¤µà¤¾ \"unmount_with_operation\" कार्यान्वयन गर्दैन"
 
 #. Translators: This is an error
 #. * message for mount objects that
@@ -3240,14 +3235,14 @@ msgstr "भोल्युमले माउन्ट कार्यान्
 #: gio/gmount.c:475
 #, fuzzy
 msgid "mount doesn’t implement “eject”"
-msgstr "डà¥\8dराà¤\87भलà¥\87 à¤¨à¤¿à¤\95ालà¥\8dनà¥\87 à¤µà¤¾ eject_with_operation कार्यान्वयन गर्दैन"
+msgstr "भà¥\8bलà¥\8dयà¥\81मलà¥\87 à¤®à¤¾à¤\89नà¥\8dà¤\9f कार्यान्वयन गर्दैन"
 
 #. Translators: This is an error
 #. * message for mount objects that
 #. * don't implement any of unmount or unmount_with_operation.
 #: gio/gmount.c:553
 msgid "mount doesn’t implement “unmount” or “unmount_with_operation”"
-msgstr ""
+msgstr "माउन्टले \"अनमाउन्ट\" वा \"unmount_with_operation\" कार्यान्वयन गर्दैन"
 
 #. Translators: This is an error
 #. * message for mount objects that
@@ -3270,14 +3265,14 @@ msgstr "भोल्युमले माउन्ट कार्यान्
 #. * don't implement content type guessing.
 #: gio/gmount.c:808
 msgid "mount doesn’t implement content type guessing"
-msgstr ""
+msgstr "माउन्टले सामाग्री प्रकार अनुमान कार्यान्वयन गर्दैन"
 
 #. Translators: This is an error
 #. * message for mount objects that
 #. * don't implement content type guessing.
 #: gio/gmount.c:895
 msgid "mount doesn’t implement synchronous content type guessing"
-msgstr ""
+msgstr "माउन्टले समक्रमित सामाग्री प्रकार अनुमान कार्यान्वयन गर्दैन"
 
 #: gio/gnetworkaddress.c:415
 #, fuzzy, c-format
@@ -3289,15 +3284,13 @@ msgid "Network unreachable"
 msgstr "सञ्जाल छैन"
 
 #: gio/gnetworkmonitorbase.c:257 gio/gnetworkmonitorbase.c:287
-#, fuzzy
 msgid "Host unreachable"
-msgstr "होस्ट:"
+msgstr "होस्ट पहुँचयोग्य छैन"
 
-#: gio/gnetworkmonitornetlink.c:99 gio/gnetworkmonitornetlink.c:111
-#: gio/gnetworkmonitornetlink.c:130
+#: gio/gnetworkmonitornetlink.c:99 gio/gnetworkmonitornetlink.c:111 gio/gnetworkmonitornetlink.c:130
 #, fuzzy, c-format
 msgid "Could not create network monitor: %s"
-msgstr "पाइप सिर्जना गर्न सकेन: %s"
+msgstr "%s मा अस्थायी डाइरेक्टरी सिर्जना गर्न सकेन।"
 
 #: gio/gnetworkmonitornetlink.c:120
 #, fuzzy
@@ -3308,19 +3301,19 @@ msgstr "सञ्जाल स्थान निगरानी"
 msgid "Could not get network status: "
 msgstr "सञ्जाल स्थिति प्राप्त गर्न सकेन: "
 
-#: gio/gnetworkmonitornm.c:348
+#: gio/gnetworkmonitornm.c:311
 #, c-format
 msgid "NetworkManager not running"
 msgstr "सञ्जाल प्रबन्धक चलिरहेको छैन"
 
-#: gio/gnetworkmonitornm.c:359
+#: gio/gnetworkmonitornm.c:322
 #, c-format
 msgid "NetworkManager version too old"
 msgstr "सञ्जाल प्रबन्धक संस्करण अति पुरानो छ"
 
 #: gio/goutputstream.c:232 gio/goutputstream.c:775
 msgid "Output stream doesn’t implement write"
-msgstr ""
+msgstr "निर्गत प्रवाहले लेखन कार्यन्वयन गर्दैन"
 
 #: gio/goutputstream.c:472 gio/goutputstream.c:1533
 #, fuzzy, c-format
@@ -3331,80 +3324,88 @@ msgstr "अति ठूलो गणना मान %s मा पास गर
 msgid "Source stream is already closed"
 msgstr "स्रोत प्रवाह पहिल्यै बन्द छ"
 
-#: gio/gresolver.c:386 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
-#, fuzzy, c-format
+#. Translators: the first placeholder is a domain name, the
+#. * second is an error message
+#: gio/gresolver.c:401 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168 gio/gthreadedresolver.c:780
+#: gio/gthreadedresolver.c:804 gio/gthreadedresolver.c:829 gio/gthreadedresolver.c:844
+#, c-format
 msgid "Error resolving “%s”: %s"
-msgstr "सेवा \"%2s\" डोमेन \"%3s\" मा हल गर्दा त्रुटि \"%1s\""
+msgstr "\"%s\" हल गर्दा त्रुटि: %s"
 
 #. Translators: The placeholder is for a function name.
-#: gio/gresolver.c:455 gio/gresolver.c:615
+#: gio/gresolver.c:470 gio/gresolver.c:630
 #, c-format
 msgid "%s not implemented"
 msgstr "%s कार्यान्वयन भएको छैन"
 
-#: gio/gresolver.c:984 gio/gresolver.c:1036
+#: gio/gresolver.c:999 gio/gresolver.c:1051
 msgid "Invalid domain"
 msgstr "अबैध डोमेन"
 
-#: gio/gresource.c:681 gio/gresource.c:943 gio/gresource.c:983
-#: gio/gresource.c:1107 gio/gresource.c:1179 gio/gresource.c:1253
-#: gio/gresource.c:1334 gio/gresourcefile.c:476 gio/gresourcefile.c:599
-#: gio/gresourcefile.c:736
-#, fuzzy, c-format
+#: gio/gresource.c:681 gio/gresource.c:943 gio/gresource.c:983 gio/gresource.c:1107 gio/gresource.c:1179
+#: gio/gresource.c:1253 gio/gresource.c:1334 gio/gresourcefile.c:476 gio/gresourcefile.c:599 gio/gresourcefile.c:736
+#, c-format
 msgid "The resource at “%s” does not exist"
-msgstr "'%s' निर्देशिका अवस्थित छैन"
+msgstr "\"%s\" मा स्रोत अवस्थित छैन"
 
 #: gio/gresource.c:848
-#, fuzzy, c-format
+#, c-format
 msgid "The resource at “%s” failed to decompress"
-msgstr "संसाधन पुरा तरिकाले क्यास गर्न असफल भयो"
+msgstr "\"%s\" मा संसाधन विसङ्कुचन गर्न असफल भयो"
 
 #: gio/gresourcefile.c:732
 #, fuzzy, c-format
 msgid "The resource at “%s” is not a directory"
-msgstr "लà¤\95à¥\8dषित à¤¨à¤¿à¤°à¥\8dदà¥\87शिà¤\95ा â\80\9c%sâ\80\9d à¤\85वà¥\88ध à¤¨à¤¿à¤°à¥\8dदà¥\87शिà¤\95ा à¤¹à¥\8b"
+msgstr "à¤\85नà¥\81रà¥\8bध à¤\97रिà¤\8fà¤\95à¥\8b à¤¸à¤\82साधन à¤«à¥\87ला à¤ªà¤°à¥\87न: %s"
 
 #: gio/gresourcefile.c:940
 msgid "Input stream doesn’t implement seek"
-msgstr ""
+msgstr "आगत प्रवाहले खोजी कार्यान्वयन गर्दैन"
 
-#: gio/gresource-tool.c:499
+#: gio/gresource-tool.c:500
 msgid "List sections containing resources in an elf FILE"
-msgstr ""
+msgstr "एउटा elf FILE मा संसाधन समाविष्ट सेक्सन सूचीबद्ध गर्नुहोस्"
 
-#: gio/gresource-tool.c:505
+#: gio/gresource-tool.c:506
 msgid ""
 "List resources\n"
 "If SECTION is given, only list resources in this section\n"
 "If PATH is given, only list matching resources"
 msgstr ""
+"संसाधन सूचीबद्ध गर्नुहोस्\n"
+"यदि सेक्सन दिइएको छ भने, यो खण्डमा संसाधन सूचीकृत गर्नुहोस्\n"
+"यदि बाटो दिइएको छ भने, मिल्दो संसाधनको सूची मात्र"
 
-#: gio/gresource-tool.c:508 gio/gresource-tool.c:518
+#: gio/gresource-tool.c:509 gio/gresource-tool.c:519
 msgid "FILE [PATH]"
 msgstr "फाइल [मार्ग]"
 
-#: gio/gresource-tool.c:509 gio/gresource-tool.c:519 gio/gresource-tool.c:526
+#: gio/gresource-tool.c:510 gio/gresource-tool.c:520 gio/gresource-tool.c:527
 msgid "SECTION"
 msgstr "खण्ड"
 
-#: gio/gresource-tool.c:514
+#: gio/gresource-tool.c:515
 msgid ""
 "List resources with details\n"
 "If SECTION is given, only list resources in this section\n"
 "If PATH is given, only list matching resources\n"
 "Details include the section, size and compression"
 msgstr ""
+"विस्तृत विवरण भएका संसाधन सूचीबद्ध गर्नुहोस्\n"
+"यदि सेक्सन दिइएको छ भने, यो खण्डमा संसाधन सूचीकृत गर्नुहोस्\n"
+"यदि बाटो दिइएको छ भने, मिल्दो संसाधनको सूची मात्र\n"
+"विवरणमा खण्ड, साइज र सङ्कुचन समावेश छ"
 
-#: gio/gresource-tool.c:524
+#: gio/gresource-tool.c:525
 #, fuzzy
 msgid "Extract a resource file to stdout"
 msgstr "मेटाडाटा निकाल्नका लागि फाइल"
 
-#: gio/gresource-tool.c:525
+#: gio/gresource-tool.c:526
 msgid "FILE PATH"
 msgstr "फाइल मार्ग"
 
-#: gio/gresource-tool.c:539
+#: gio/gresource-tool.c:540
 msgid ""
 "Usage:\n"
 "  gresource [--section SECTION] COMMAND [ARGS…]\n"
@@ -3419,8 +3420,20 @@ msgid ""
 "Use “gresource help COMMAND” to get detailed help.\n"
 "\n"
 msgstr ""
+"उपयोग:\n"
+"  gresource [--section] COMMAND [ARGS...]\n"
+"\n"
+"आदेश:\n"
+"  मद्दत यो सूचना देखाउनुहोस्\n"
+"  सेक्सनहरू संसाधन सेक्सनहरू सूचीबद्ध गर्नुहोस्\n"
+"  सूची संसाधन\n"
+"  विवरण सहितको संसाधन सूचीकृत गर्नुहोस्\n"
+"  संसाधन झिक्नुहोस्\n"
+"\n"
+"विस्तृत मद्दत प्राप्त गर्न \"gresource help COMMAND\" प्रयोग गर्नुहोस् ।\n"
+"\n"
 
-#: gio/gresource-tool.c:553
+#: gio/gresource-tool.c:554
 #, c-format
 msgid ""
 "Usage:\n"
@@ -3435,43 +3448,45 @@ msgstr ""
 "%s\n"
 "\n"
 
-#: gio/gresource-tool.c:560
+#: gio/gresource-tool.c:561
 msgid "  SECTION   An (optional) elf section name\n"
-msgstr ""
+msgstr "  सेक्सन एउटा (वैकल्पिक) एल्फ सेक्सन नाम\n"
 
-#: gio/gresource-tool.c:564 gio/gsettings-tool.c:701
+#: gio/gresource-tool.c:565 gio/gsettings-tool.c:718
 msgid "  COMMAND   The (optional) command to explain\n"
 msgstr ""
 "  COMMAND   व्याख्या गर्नका लागि (वैकल्पिक) आदेश\n"
 "\n"
 
-#: gio/gresource-tool.c:570
+#: gio/gresource-tool.c:571
 msgid "  FILE      An elf file (a binary or a shared library)\n"
-msgstr ""
+msgstr "  फाइल एउटा ईल्फ फाइल (बाइनरी वा साझा लाइब्रेरी)\n"
 
-#: gio/gresource-tool.c:573
+#: gio/gresource-tool.c:574
 msgid ""
 "  FILE      An elf file (a binary or a shared library)\n"
 "            or a compiled resource file\n"
 msgstr ""
+"  फाइल एउटा ईल्फ फाइल (बाइनरी वा साझा लाइब्रेरी)\n"
+"            वा कम्पाइल गरिएको संसाधन फाइल\n"
 
-#: gio/gresource-tool.c:577
+#: gio/gresource-tool.c:578
 msgid "[PATH]"
 msgstr "[बाटो]"
 
-#: gio/gresource-tool.c:579
+#: gio/gresource-tool.c:580
 msgid "  PATH      An (optional) resource path (may be partial)\n"
-msgstr ""
+msgstr "  मार्ग एउटा (वैकल्पिक) संसाधन मार्ग (आंशिक हुन सक्छ)\n"
 
-#: gio/gresource-tool.c:580
+#: gio/gresource-tool.c:581
 msgid "PATH"
 msgstr "मार्ग"
 
-#: gio/gresource-tool.c:582
+#: gio/gresource-tool.c:583
 msgid "  PATH      A resource path\n"
 msgstr "  PATH      संसाधन मार्ग\n"
 
-#: gio/gsettings-tool.c:49 gio/gsettings-tool.c:70 gio/gsettings-tool.c:906
+#: gio/gsettings-tool.c:49 gio/gsettings-tool.c:70 gio/gsettings-tool.c:923
 #, fuzzy, c-format
 msgid "No such schema “%s”\n"
 msgstr "अज्ञात स्किमा “%s”."
@@ -3479,21 +3494,20 @@ msgstr "अज्ञात स्किमा “%s”."
 #: gio/gsettings-tool.c:55
 #, c-format
 msgid "Schema “%s” is not relocatable (path must not be specified)\n"
-msgstr ""
+msgstr "स्किमा \"%s\" स्थानान्तरण योग्य छैन (बाटो निर्दिष्ट गरिएको छैन)\n"
 
 #: gio/gsettings-tool.c:76
 #, c-format
 msgid "Schema “%s” is relocatable (path must be specified)\n"
-msgstr ""
+msgstr "स्किमा \"%s\" स्थानान्तरण योग्य छ (मार्ग निर्दिष्ट गर्नु पर्दछ)\n"
 
 #: gio/gsettings-tool.c:90
 msgid "Empty path given.\n"
 msgstr "दिएको ठेगाना खाली छ\n"
 
 #: gio/gsettings-tool.c:96
-#, fuzzy
 msgid "Path must begin with a slash (/)\n"
-msgstr "यदि à¤¦à¤¿à¤\87à¤\8fà¤\95à¥\8b à¤­à¤\8f, à¤ªà¤¥ à¤¸à¥\8dलà¥\8dयाससà¤\81à¤\97 à¤¸à¥\81रà¥\81 à¤° à¤\85नà¥\8dतà¥\8dय à¤¹à¥\81नà¥\81परà¥\8dदà¤\9b"
+msgstr "à¤\95ाà¤\97à¤\9cात à¤\8fà¤\89à¤\9fा à¤¤à¤¤à¥\8dव à¤¬à¤¾à¤\9f à¤¸à¥\81रà¥\81 à¤¹à¥\81नà¥\88परà¥\8dà¤\9b (à¤\9cसà¥\8dतà¥\88: <book>)\n"
 
 #: gio/gsettings-tool.c:102
 #, fuzzy
@@ -3502,108 +3516,154 @@ msgstr "यदि दिइएको भए, पथ स्ल्याससँ
 
 #: gio/gsettings-tool.c:108
 msgid "Path must not contain two adjacent slashes (//)\n"
-msgstr ""
+msgstr "मार्गले दुईवटा आसन्न स्ल्यास (//) समावेश गर्नु हुदैन\n"
 
-#: gio/gsettings-tool.c:536
+#: gio/gsettings-tool.c:553
 msgid "The provided value is outside of the valid range\n"
-msgstr ""
+msgstr "उपलब्ध गराइएको मान वैध दायरा को बाहिर छ\n"
 
-#: gio/gsettings-tool.c:543
-#, fuzzy
+#: gio/gsettings-tool.c:560
 msgid "The key is not writable\n"
-msgstr "कुञ्जी लेखनयोग्य छ की छैन जाँच गर्नुहोस्"
+msgstr "कुञ्जी लेखनयोग्य छैन\n"
 
-#: gio/gsettings-tool.c:579
+#: gio/gsettings-tool.c:596
 msgid "List the installed (non-relocatable) schemas"
-msgstr ""
+msgstr "स्थापना गरिएको (स्थानान्तरण गर्न नसकिने) स्किमाहरू सूचीबद्ध गर्नुहोस्"
 
-#: gio/gsettings-tool.c:585
+#: gio/gsettings-tool.c:602
 #, fuzzy
 msgid "List the installed relocatable schemas"
-msgstr "सà¥\8dथापित à¤µà¤¿à¤¸à¥\8dतार à¤¸à¥\82à¤\9aà¥\80"
+msgstr "सà¥\8dथापना à¤\97रिà¤\8fà¤\95à¥\8b (सà¥\8dथानानà¥\8dतरण à¤\97रà¥\8dन à¤¨à¤¸à¤\95िनà¥\87) à¤¸à¥\8dà¤\95िमाहरà¥\82 à¤¸à¥\82à¤\9aà¥\80बदà¥\8dध à¤\97रà¥\8dनà¥\81हà¥\8bसà¥\8d"
 
-#: gio/gsettings-tool.c:591
-#, fuzzy
+#: gio/gsettings-tool.c:608
 msgid "List the keys in SCHEMA"
-msgstr "\"सूची-को\" स्कीमामा कुञ्जीहरू थप्न सकिँदैन"
+msgstr "स्किमामा कुञ्जीहरू सूचीबद्ध गर्नुहोस्"
 
-#: gio/gsettings-tool.c:592 gio/gsettings-tool.c:598 gio/gsettings-tool.c:641
-#, fuzzy
+#: gio/gsettings-tool.c:609 gio/gsettings-tool.c:615 gio/gsettings-tool.c:658
 msgid "SCHEMA[:PATH]"
-msgstr "[SCHEMA[:PATH]]"
+msgstr "SCHEMA[:PATH]"
 
-#: gio/gsettings-tool.c:597
+#: gio/gsettings-tool.c:614
 #, fuzzy
 msgid "List the children of SCHEMA"
-msgstr "\"सूची-को\" स्कीमामा कुञ्जीहरू थप्न सकिँदैन"
+msgstr ""
+"उपयोग:\n"
+"  gsettings --संस्करण\n"
+"  gsettings [--schemadir SCHEMADIR] आदेश [ARGS...]\n"
+"\n"
+"आदेश:\n"
+"  मद्दत यो सूचना देखाउनुहोस्\n"
+"  सूची-स्किमाहरू सूचीकृत गरिएको स्किमाहरू\n"
+"  सूची स्थानान्तरण योग्य-स्कीमाहरू स्थानान्तरण गर्न सकिने सूची\n"
+"  स्किमामा सूची कुञ्जीहरू सूचीबद्ध गर्नुहोस्\n"
+"  सूची-बच्चाको सूची स्किमा\n"
+"  सूची-पुनरावृतिक रूपमा कुञ्जी र मानहरू, पुनरावृतिक रूपमा सूचीबद्ध गर्नुहोस्\n"
+"  दायरा क्वेरीहरू कुञ्जीको दायरा\n"
+"  कुञ्जीको वर्णन क्वेरीवर्णन गर्नुहोस्\n"
+"  कुञ्जीको मान प्राप्त गर्नुहोस्\n"
+"  कुञ्जीको मान सेट गर्नुहोस्\n"
+"  कुञ्जीको मान रिसेट गर्नुहोस् रिसेट गर्नुहोस्\n"
+"  दिइएको स्किमामा सबै मानहरू पुनरावृतिक रूपमा रिसेट गर्नुहोस्\n"
+"  कुञ्जी लेखनयोग्य भएमा लेखनयोग्य जाँच गर्नुहोस्\n"
+"  परिवर्तनका लागि मोनिटर घडी\n"
+"\n"
+"विस्तृत मद्दत प्राप्त गर्न \"gsettings help COMMAND\" प्रयोग गर्नुहोस् ।\n"
+"\n"
 
-#: gio/gsettings-tool.c:603
+#: gio/gsettings-tool.c:620
 msgid ""
 "List keys and values, recursively\n"
 "If no SCHEMA is given, list all keys\n"
 msgstr ""
+"कुञ्जी र मानहरू, पुनरावृतिक रूपमा सूचीबद्ध गर्नुहोस्\n"
+"यदि स्किमा दिइएको छैन भने, सबै कुञ्जीहरू सूचीबद्ध गर्नुहोस्\n"
 
-#: gio/gsettings-tool.c:605
+#: gio/gsettings-tool.c:622
 msgid "[SCHEMA[:PATH]]"
 msgstr "[SCHEMA[:PATH]]"
 
-#: gio/gsettings-tool.c:610
+#: gio/gsettings-tool.c:627
 #, fuzzy
 msgid "Get the value of KEY"
-msgstr "कर्सर मान प्राप्त गर्नुहोस्"
+msgstr ""
+"उपयोग:\n"
+"  gsettings --संस्करण\n"
+"  gsettings [--schemadir SCHEMADIR] आदेश [ARGS...]\n"
+"\n"
+"आदेश:\n"
+"  मद्दत यो सूचना देखाउनुहोस्\n"
+"  सूची-स्किमाहरू सूचीकृत गरिएको स्किमाहरू\n"
+"  सूची स्थानान्तरण योग्य-स्कीमाहरू स्थानान्तरण गर्न सकिने सूची\n"
+"  स्किमामा सूची कुञ्जीहरू सूचीबद्ध गर्नुहोस्\n"
+"  सूची-बच्चाको सूची स्किमा\n"
+"  सूची-पुनरावृतिक रूपमा कुञ्जी र मानहरू, पुनरावृतिक रूपमा सूचीबद्ध गर्नुहोस्\n"
+"  दायरा क्वेरीहरू कुञ्जीको दायरा\n"
+"  कुञ्जीको वर्णन क्वेरीवर्णन गर्नुहोस्\n"
+"  कुञ्जीको मान प्राप्त गर्नुहोस्\n"
+"  कुञ्जीको मान सेट गर्नुहोस्\n"
+"  कुञ्जीको मान रिसेट गर्नुहोस् रिसेट गर्नुहोस्\n"
+"  दिइएको स्किमामा सबै मानहरू पुनरावृतिक रूपमा रिसेट गर्नुहोस्\n"
+"  कुञ्जी लेखनयोग्य भएमा लेखनयोग्य जाँच गर्नुहोस्\n"
+"  परिवर्तनका लागि मोनिटर घडी\n"
+"\n"
+"विस्तृत मद्दत प्राप्त गर्न \"gsettings help COMMAND\" प्रयोग गर्नुहोस् ।\n"
+"\n"
 
-#: gio/gsettings-tool.c:611 gio/gsettings-tool.c:617 gio/gsettings-tool.c:623
-#: gio/gsettings-tool.c:635 gio/gsettings-tool.c:647
+#: gio/gsettings-tool.c:628 gio/gsettings-tool.c:634 gio/gsettings-tool.c:640 gio/gsettings-tool.c:652
+#: gio/gsettings-tool.c:664
 #, fuzzy
 msgid "SCHEMA[:PATH] KEY"
 msgstr "[SCHEMA[:PATH]]"
 
-#: gio/gsettings-tool.c:616
+#: gio/gsettings-tool.c:633
 msgid "Query the range of valid values for KEY"
-msgstr ""
+msgstr "कुञ्जीका लागि वैध मानहरूको दायरा क्वेरी गर्नुहोस्"
 
-#: gio/gsettings-tool.c:622
+#: gio/gsettings-tool.c:639
 #, fuzzy
 msgid "Query the description for KEY"
-msgstr "विवरण:"
+msgstr "à¤\95à¥\81à¤\9eà¥\8dà¤\9cà¥\80à¤\95ा à¤²à¤¾à¤\97ि à¤µà¥\88ध à¤®à¤¾à¤¨à¤¹à¤°à¥\82à¤\95à¥\8b à¤¦à¤¾à¤¯à¤°à¤¾ à¤\95à¥\8dवà¥\87रà¥\80 à¤\97रà¥\8dनà¥\81हà¥\8bसà¥\8d"
 
-#: gio/gsettings-tool.c:628
+#: gio/gsettings-tool.c:645
 #, fuzzy
 msgid "Set the value of KEY to VALUE"
-msgstr "[कुञ्जी मान]"
+msgstr "कुञ्जी मान"
 
-#: gio/gsettings-tool.c:629
+#: gio/gsettings-tool.c:646
 #, fuzzy
 msgid "SCHEMA[:PATH] KEY VALUE"
-msgstr "[SCHEMA[:PATH]]"
+msgstr "  KEY       स्किमा भित्रको कुञ्जी\n"
 
-#: gio/gsettings-tool.c:634
+#: gio/gsettings-tool.c:651
 #, fuzzy
 msgid "Reset KEY to its default value"
 msgstr "यसको पूर्वनिर्धारित मानमा सर्टकट रिसेट गर्नुहोस्"
 
-#: gio/gsettings-tool.c:640
+#: gio/gsettings-tool.c:657
 #, fuzzy
 msgid "Reset all keys in SCHEMA to their defaults"
 msgstr "प्रणाली पुर्वनिर्धारितहरुमा सबै सेटिङ्हरू रिसेट गर्नुहोस्"
 
-#: gio/gsettings-tool.c:646
+#: gio/gsettings-tool.c:663
 msgid "Check if KEY is writable"
 msgstr "कुञ्जी लेखनयोग्य छ की छैन जाँच गर्नुहोस्"
 
-#: gio/gsettings-tool.c:652
+#: gio/gsettings-tool.c:669
 msgid ""
 "Monitor KEY for changes.\n"
 "If no KEY is specified, monitor all keys in SCHEMA.\n"
 "Use ^C to stop monitoring.\n"
 msgstr ""
+"परिवर्तनका लागि कुञ्जी मोनिटर गर्नुहोस् ।\n"
+"यदि कुञ्जी निर्दिष्ट गरिएन भने, स्किमामा भएका सबै कुञ्जीहरू अनुगमन गर्नुहोस् ।\n"
+"अनुगमन रोक्नका लागि ^C प्रयोग गर्नुहोस् ।\n"
 
-#: gio/gsettings-tool.c:655
+#: gio/gsettings-tool.c:672
 #, fuzzy
 msgid "SCHEMA[:PATH] [KEY]"
 msgstr "[SCHEMA[:PATH]]"
 
-#: gio/gsettings-tool.c:667
+#: gio/gsettings-tool.c:684
 msgid ""
 "Usage:\n"
 "  gsettings --version\n"
@@ -3628,8 +3688,30 @@ msgid ""
 "Use “gsettings help COMMAND” to get detailed help.\n"
 "\n"
 msgstr ""
+"उपयोग:\n"
+"  gsettings --संस्करण\n"
+"  gsettings [--schemadir SCHEMADIR] आदेश [ARGS...]\n"
+"\n"
+"आदेश:\n"
+"  मद्दत यो सूचना देखाउनुहोस्\n"
+"  सूची-स्किमाहरू सूचीकृत गरिएको स्किमाहरू\n"
+"  सूची स्थानान्तरण योग्य-स्कीमाहरू स्थानान्तरण गर्न सकिने सूची\n"
+"  स्किमामा सूची कुञ्जीहरू सूचीबद्ध गर्नुहोस्\n"
+"  सूची-बच्चाको सूची स्किमा\n"
+"  सूची-पुनरावृतिक रूपमा कुञ्जी र मानहरू, पुनरावृतिक रूपमा सूचीबद्ध गर्नुहोस्\n"
+"  दायरा क्वेरीहरू कुञ्जीको दायरा\n"
+"  कुञ्जीको वर्णन क्वेरीवर्णन गर्नुहोस्\n"
+"  कुञ्जीको मान प्राप्त गर्नुहोस्\n"
+"  कुञ्जीको मान सेट गर्नुहोस्\n"
+"  कुञ्जीको मान रिसेट गर्नुहोस् रिसेट गर्नुहोस्\n"
+"  दिइएको स्किमामा सबै मानहरू पुनरावृतिक रूपमा रिसेट गर्नुहोस्\n"
+"  कुञ्जी लेखनयोग्य भएमा लेखनयोग्य जाँच गर्नुहोस्\n"
+"  परिवर्तनका लागि मोनिटर घडी\n"
+"\n"
+"विस्तृत मद्दत प्राप्त गर्न \"gsettings help COMMAND\" प्रयोग गर्नुहोस् ।\n"
+"\n"
 
-#: gio/gsettings-tool.c:691
+#: gio/gsettings-tool.c:708
 #, c-format
 msgid ""
 "Usage:\n"
@@ -3638,241 +3720,242 @@ msgid ""
 "%s\n"
 "\n"
 msgstr ""
+"उपयोग:\n"
+"  gsettings [--schemadir SCHEMADIR] %s %s\n"
+"\n"
+"%s\n"
+"\n"
 
-#: gio/gsettings-tool.c:697
+#: gio/gsettings-tool.c:714
 msgid "  SCHEMADIR A directory to search for additional schemas\n"
-msgstr ""
+msgstr "  अतिरिक्त स्कीमाहरू खोजी गर्नका लागि एउटा डाइरेक्टरी स्किमाडाइरेक्टरी\n"
 
-#: gio/gsettings-tool.c:705
+#: gio/gsettings-tool.c:722
 msgid ""
 "  SCHEMA    The name of the schema\n"
 "  PATH      The path, for relocatable schemas\n"
 msgstr ""
+"  स्किमाको नाम स्किमा\n"
+"  बाटो बाटो, स्थानान्तरण योग्य स्किमाहरूका लागि\n"
 
-#: gio/gsettings-tool.c:710
+#: gio/gsettings-tool.c:727
 msgid "  KEY       The (optional) key within the schema\n"
 msgstr "  KEY       स्किमा भित्रको (वैकल्पिक) कुञ्जी\n"
 
-#: gio/gsettings-tool.c:714
+#: gio/gsettings-tool.c:731
 msgid "  KEY       The key within the schema\n"
 msgstr "  KEY       स्किमा भित्रको कुञ्जी\n"
 
-#: gio/gsettings-tool.c:718
+#: gio/gsettings-tool.c:735
 msgid "  VALUE     The value to set\n"
 msgstr "  VALUE     मान सेट गर्नुहोस्\n"
 
-#: gio/gsettings-tool.c:773
+#: gio/gsettings-tool.c:790
 #, c-format
 msgid "Could not load schemas from %s: %s\n"
 msgstr "%s बाट स्किमाहरू लोड गर्न सकेन: %s\n"
 
-#: gio/gsettings-tool.c:785
-#, fuzzy
+#: gio/gsettings-tool.c:802
 msgid "No schemas installed\n"
-msgstr "सà¥\8dथापना à¤­à¤¯à¥\8b"
+msgstr "सà¥\8dà¤\95िमाहरà¥\82 à¤¸à¥\8dथापना à¤\97रिà¤\8fà¤\95à¥\8b à¤\9bà¥\88न\n"
 
-#: gio/gsettings-tool.c:864
+#: gio/gsettings-tool.c:881
 #, fuzzy
 msgid "Empty schema name given\n"
-msgstr "दिà¤\87à¤\8fà¤\95à¥\8b à¤¨à¤¾à¤®"
+msgstr "दिà¤\8fà¤\95à¥\8b à¤ à¥\87à¤\97ाना à¤\96ालà¥\80 à¤\9b"
 
-#: gio/gsettings-tool.c:919
+#: gio/gsettings-tool.c:936
 #, c-format
 msgid "No such key “%s”\n"
 msgstr "\"%s\" कुञ्जी छैन\n"
 
-#: gio/gsocket.c:413
+#: gio/gsocket.c:417
 #, fuzzy
 msgid "Invalid socket, not initialized"
 msgstr "अमान्य वस्तु, प्रारम्भ गरिएको छैन"
 
-#: gio/gsocket.c:420
+#: gio/gsocket.c:424
 #, c-format
 msgid "Invalid socket, initialization failed due to: %s"
-msgstr ""
+msgstr "अवैध सकेट, सुरुआत गर्न असफल: %s"
 
-#: gio/gsocket.c:428
+#: gio/gsocket.c:432
 msgid "Socket is already closed"
 msgstr "सकेट पहिल्यै बन्द गरिएको छ"
 
-#: gio/gsocket.c:443 gio/gsocket.c:3190 gio/gsocket.c:4420 gio/gsocket.c:4478
+#: gio/gsocket.c:447 gio/gsocket.c:3194 gio/gsocket.c:4427 gio/gsocket.c:4485
 msgid "Socket I/O timed out"
 msgstr "सकेट I/O समय समाप्ति भयो"
 
-#: gio/gsocket.c:578
+#: gio/gsocket.c:582
 #, fuzzy, c-format
 msgid "creating GSocket from fd: %s"
 msgstr "'%s' फाइल पढ्दा त्रुटि : %s"
 
-#: gio/gsocket.c:607 gio/gsocket.c:671 gio/gsocket.c:678
+#: gio/gsocket.c:611 gio/gsocket.c:675 gio/gsocket.c:682
 #, c-format
 msgid "Unable to create socket: %s"
 msgstr "सकेट सिर्जना गर्न अक्षम: %s"
 
-#: gio/gsocket.c:671
+#: gio/gsocket.c:675
 msgid "Unknown family was specified"
 msgstr "अज्ञात परिवार निर्दिष्ट गरिएको थियो"
 
-#: gio/gsocket.c:678
+#: gio/gsocket.c:682
 #, fuzzy
 msgid "Unknown protocol was specified"
-msgstr "पà¥\8dरà¥\8bà¤\9fà¥\8bà¤\95ल"
+msgstr "à¤\85à¤\9cà¥\8dà¤\9eात à¤ªà¤°à¤¿à¤µà¤¾à¤° à¤¨à¤¿à¤°à¥\8dदिषà¥\8dà¤\9f à¤\97रिà¤\8fà¤\95à¥\8b à¤¥à¤¿à¤¯à¥\8b"
 
-#: gio/gsocket.c:1169
+#: gio/gsocket.c:1173
 #, c-format
 msgid "Cannot use datagram operations on a non-datagram socket."
-msgstr ""
+msgstr "डेटाग्राम विहिन सकेटमा डेटाग्राम सञ्चालन प्रयोग गर्न सकिँदैन ।"
 
-#: gio/gsocket.c:1186
+#: gio/gsocket.c:1190
 #, c-format
 msgid "Cannot use datagram operations on a socket with a timeout set."
-msgstr ""
+msgstr "टाइमआउट सेटसँग सकेटमा डेटाग्राम सञ्चालन प्रयोग गर्न सकिँदैन ।"
 
-#: gio/gsocket.c:1993
+#: gio/gsocket.c:1997
 #, c-format
 msgid "could not get local address: %s"
 msgstr "स्थानीय ठेगाना प्राप्त गर्न सकेन: %s"
 
-#: gio/gsocket.c:2039
+#: gio/gsocket.c:2043
 #, c-format
 msgid "could not get remote address: %s"
 msgstr "दूर ठेगाना प्राप्त गर्न सकेन: %s"
 
-#: gio/gsocket.c:2105
+#: gio/gsocket.c:2109
 #, c-format
 msgid "could not listen: %s"
 msgstr "सुन्न सकिएन: %s"
 
-#: gio/gsocket.c:2209
+#: gio/gsocket.c:2213
 #, fuzzy, c-format
 msgid "Error binding to address %s: %s"
-msgstr "स्थानान्तरण ठेगाना पुस्तिका फाइल पढ्दा त्रुटि :%s"
+msgstr "\"%s\" ठेगानामा त्रुटि — पोर्ट विशेषता छुटेको छ वा विकृत छ"
 
-#: gio/gsocket.c:2385 gio/gsocket.c:2422 gio/gsocket.c:2532 gio/gsocket.c:2557
-#: gio/gsocket.c:2620 gio/gsocket.c:2678 gio/gsocket.c:2696
+#: gio/gsocket.c:2389 gio/gsocket.c:2426 gio/gsocket.c:2536 gio/gsocket.c:2561 gio/gsocket.c:2624 gio/gsocket.c:2682
+#: gio/gsocket.c:2700
 #, fuzzy, c-format
 msgid "Error joining multicast group: %s"
 msgstr "'%s' सम्पर्क समूह परिवर्तन गर्दा त्रुटि: %s"
 
-#: gio/gsocket.c:2386 gio/gsocket.c:2423 gio/gsocket.c:2533 gio/gsocket.c:2558
-#: gio/gsocket.c:2621 gio/gsocket.c:2679 gio/gsocket.c:2697
+#: gio/gsocket.c:2390 gio/gsocket.c:2427 gio/gsocket.c:2537 gio/gsocket.c:2562 gio/gsocket.c:2625 gio/gsocket.c:2683
+#: gio/gsocket.c:2701
 #, fuzzy, c-format
 msgid "Error leaving multicast group: %s"
 msgstr "'%s' सम्पर्क समूह परिवर्तन गर्दा त्रुटि: %s"
 
-#: gio/gsocket.c:2387
-#, fuzzy
+#: gio/gsocket.c:2391
 msgid "No support for source-specific multicast"
-msgstr "सà¥\8dरà¥\8bत à¤«à¤¾à¤\87लनाम (पà¥\82रà¥\8dवनिरà¥\8dधारित: à¤¸à¥\8dरà¥\8bत à¤¬à¥\8dयाà¤\95à¤\87नà¥\8dडमा à¤¨à¤¿à¤°à¥\8dदिषà¥\8dà¤\9f)"
+msgstr "सà¥\8dरà¥\8bत à¤¨à¤¿à¤°à¥\8dदिषà¥\8dà¤\9f à¤®à¤²à¥\8dà¤\9fिà¤\95ासà¥\8dà¤\9fà¤\95ा à¤²à¤¾à¤\97ि à¤¸à¤®à¤°à¥\8dथन à¤\9bà¥\88न"
 
-#: gio/gsocket.c:2534
+#: gio/gsocket.c:2538
 msgid "Unsupported socket family"
 msgstr "असमर्थित सकेट परिवार"
 
-#: gio/gsocket.c:2559
+#: gio/gsocket.c:2563
 msgid "source-specific not an IPv4 address"
 msgstr "स्रोत-निर्दिष्ट एउटा IPv4 ठेगाना होइन"
 
-#: gio/gsocket.c:2583
+#: gio/gsocket.c:2587
 #, fuzzy, c-format
 msgid "Interface name too long"
-msgstr "फाà¤\87ल à¤¨à¤¾à¤® à¤§à¥\87रà¥\88 à¤²à¤¾à¤®à¥\8b à¤­à¤¯à¥\8b।."
+msgstr "लामà¥\8b à¤¸à¤\99à¥\8dà¤\97à¥\8dरह à¤¨à¤¾à¤®"
 
-#: gio/gsocket.c:2596 gio/gsocket.c:2646
+#: gio/gsocket.c:2600 gio/gsocket.c:2650
 #, fuzzy, c-format
 msgid "Interface not found: %s"
-msgstr "तà¥\8dरà¥\81à¤\9fि: %s à¤\85वà¥\88ध à¤\87नà¥\8dà¤\9fरफà¥\87स à¤¨à¤¾à¤®\n"
+msgstr "à¤\9aà¥\87तावनà¥\80: à¤\87नà¥\8dà¤\9fरà¤\95à¥\8dरà¥\87सà¤\9fà¥\87सन à¤¡à¤¾à¤\9fाà¤\95à¥\8b à¤\85नà¥\81सार, à¤\87नà¥\8dà¤\9fरफà¥\87स \"%s\" à¤\85वसà¥\8dथित à¤\9bà¥\88न"
 
-#: gio/gsocket.c:2622
+#: gio/gsocket.c:2626
 #, fuzzy
 msgid "No support for IPv4 source-specific multicast"
-msgstr "सà¥\8dरà¥\8bत à¤«à¤¾à¤\87लनाम (पà¥\82रà¥\8dवनिरà¥\8dधारित: à¤¸à¥\8dरà¥\8bत à¤¬à¥\8dयाà¤\95à¤\87नà¥\8dडमा à¤¨à¤¿à¤°à¥\8dदिषà¥\8dà¤\9f)"
+msgstr "सà¥\8dरà¥\8bत à¤¨à¤¿à¤°à¥\8dदिषà¥\8dà¤\9f à¤®à¤²à¥\8dà¤\9fिà¤\95ासà¥\8dà¤\9fà¤\95ा à¤²à¤¾à¤\97ि à¤¸à¤®à¤°à¥\8dथन à¤\9bà¥\88न"
 
-#: gio/gsocket.c:2680
+#: gio/gsocket.c:2684
 #, fuzzy
 msgid "No support for IPv6 source-specific multicast"
-msgstr "सà¥\8dरà¥\8bत à¤«à¤¾à¤\87लनाम (पà¥\82रà¥\8dवनिरà¥\8dधारित: à¤¸à¥\8dरà¥\8bत à¤¬à¥\8dयाà¤\95à¤\87नà¥\8dडमा à¤¨à¤¿à¤°à¥\8dदिषà¥\8dà¤\9f)"
+msgstr "सà¥\8dरà¥\8bत à¤¨à¤¿à¤°à¥\8dदिषà¥\8dà¤\9f à¤®à¤²à¥\8dà¤\9fिà¤\95ासà¥\8dà¤\9fà¤\95ा à¤²à¤¾à¤\97ि à¤¸à¤®à¤°à¥\8dथन à¤\9bà¥\88न"
 
-#: gio/gsocket.c:2889
+#: gio/gsocket.c:2893
 #, fuzzy, c-format
 msgid "Error accepting connection: %s"
 msgstr "त्रुटि: %s मा जडान खोल्न सकेन\n"
 
-#: gio/gsocket.c:3015
+#: gio/gsocket.c:3019
 msgid "Connection in progress"
 msgstr "जडान प्रगतिमा छ"
 
-#: gio/gsocket.c:3066
+#: gio/gsocket.c:3070
 msgid "Unable to get pending error: "
 msgstr "विचाराधिन त्रुटि प्राप्त गर्न असक्षम: %s "
 
-#: gio/gsocket.c:3255
+#: gio/gsocket.c:3259
 #, c-format
 msgid "Error receiving data: %s"
 msgstr "डाटा प्राप्त गर्दा त्रुटि: %s"
 
-#: gio/gsocket.c:3452
+#: gio/gsocket.c:3456
 #, c-format
 msgid "Error sending data: %s"
 msgstr "डाटा पठाउदा त्रुटि: %s"
 
-#: gio/gsocket.c:3639
-#, fuzzy, c-format
+#: gio/gsocket.c:3643
+#, c-format
 msgid "Unable to shutdown socket: %s"
-msgstr "सà¤\95à¥\87à¤\9f à¤¸à¤¿à¤°à¥\8dà¤\9cना à¤\97रà¥\8dन à¤\85सफल"
+msgstr "सà¤\95à¥\87à¤\9f à¤¬à¤¨à¥\8dद à¤\97रà¥\8dन à¤\85à¤\95à¥\8dषम: %s"
 
-#: gio/gsocket.c:3720
+#: gio/gsocket.c:3724
 #, fuzzy, c-format
 msgid "Error closing socket: %s"
 msgstr "%s: %s:  बन्द गर्दा त्रुटि: %s\n"
 
-#: gio/gsocket.c:4413
+#: gio/gsocket.c:4420
 #, c-format
 msgid "Waiting for socket condition: %s"
 msgstr "सकेट अवस्थाका लागि प्रतिक्षा गर्दै: %s"
 
-#: gio/gsocket.c:4804 gio/gsocket.c:4820 gio/gsocket.c:4833
+#: gio/gsocket.c:4810 gio/gsocket.c:4826 gio/gsocket.c:4839
 #, c-format
 msgid "Unable to send message: %s"
 msgstr "सन्देश पठाउन अक्षम: %s"
 
-#: gio/gsocket.c:4805 gio/gsocket.c:4821 gio/gsocket.c:4834
+#: gio/gsocket.c:4811 gio/gsocket.c:4827 gio/gsocket.c:4840
 #, fuzzy
 msgid "Message vectors too large"
-msgstr "à¤\8fà¤\95à¥\8dसपà¥\8bनà¥\87नà¥\8dà¤\9f à¤¨à¤¿à¤\95à¥\88 à¤ à¥\82लो"
+msgstr "à¤\85ति à¤ à¥\82लà¥\8b à¤\97णना à¤®à¤¾à¤¨ %s à¤®à¤¾ à¤ªà¤¾à¤¸ à¤\97रियो"
 
-#: gio/gsocket.c:4850 gio/gsocket.c:4852 gio/gsocket.c:4999 gio/gsocket.c:5084
-#: gio/gsocket.c:5262 gio/gsocket.c:5302 gio/gsocket.c:5304
+#: gio/gsocket.c:4856 gio/gsocket.c:4858 gio/gsocket.c:5005 gio/gsocket.c:5090 gio/gsocket.c:5268 gio/gsocket.c:5308
+#: gio/gsocket.c:5310
 #, c-format
 msgid "Error sending message: %s"
 msgstr "सन्देश पठाउदा त्रुटि: %s"
 
-#: gio/gsocket.c:5026
-#, fuzzy
+#: gio/gsocket.c:5032
 msgid "GSocketControlMessage not supported on Windows"
-msgstr "सà¤\9eà¥\8dà¤\9dà¥\8dयालहरà¥\82"
+msgstr "सà¤\9eà¥\8dà¤\9dà¥\8dयालमा GSocketControlMessage à¤¸à¤®à¤°à¥\8dथित à¤\9bà¥\88न"
 
-#: gio/gsocket.c:5495 gio/gsocket.c:5571 gio/gsocket.c:5797
+#: gio/gsocket.c:5505 gio/gsocket.c:5581 gio/gsocket.c:5807
 #, fuzzy, c-format
 msgid "Error receiving message: %s"
-msgstr " “%s” %s बाट प्राप्त गर्दा त्रुटि"
+msgstr "डाटा प्राप्त गर्दा त्रुटि: %s"
 
-#: gio/gsocket.c:6070 gio/gsocket.c:6081 gio/gsocket.c:6127
+#: gio/gsocket.c:6090 gio/gsocket.c:6101 gio/gsocket.c:6164
 #, fuzzy, c-format
 msgid "Unable to read socket credentials: %s"
-msgstr ""
-"आदेश विवरणबाट\n"
-"\n"
-"निर्गत पढ्न असमर्थ: %s"
+msgstr "सकेट सिर्जना गर्न अक्षम: %s"
 
-#: gio/gsocket.c:6136
+#: gio/gsocket.c:6173
 msgid "g_socket_get_credentials not implemented for this OS"
-msgstr ""
+msgstr "यो OS का लागि g_socket_get_credentials कार्यान्वयन गरिएको छैन"
 
 #: gio/gsocketclient.c:191
-#, fuzzy, c-format
+#, c-format
 msgid "Could not connect to proxy server %s: "
-msgstr "प्रोक्सी सर्भर जडान गर्न सक्दैन"
+msgstr "प्रोक्सी सर्भरमा जडान गर्न सकेन: %s "
 
 #: gio/gsocketclient.c:205
 #, c-format
@@ -3883,12 +3966,11 @@ msgstr "%s मा जडान गर्न सकेन: "
 msgid "Could not connect: "
 msgstr "जडान गर्न सकेन: "
 
-#: gio/gsocketclient.c:1162 gio/gsocketclient.c:1749
-#, fuzzy
+#: gio/gsocketclient.c:1202 gio/gsocketclient.c:1793
 msgid "Proxying over a non-TCP connection is not supported."
-msgstr "सांकेतिक सम्बन्ध समर्थन गरिएन"
+msgstr "TCP बाहेकका जडानमा प्रोक्सी समर्थित छैन ।"
 
-#: gio/gsocketclient.c:1194 gio/gsocketclient.c:1778
+#: gio/gsocketclient.c:1234 gio/gsocketclient.c:1822
 #, fuzzy, c-format
 msgid "Proxy protocol “%s” is not supported."
 msgstr "(प्रोटोकल %s)"
@@ -3905,16 +3987,16 @@ msgstr "थपिएको सकेट बन्द छ"
 #: gio/gsocks4aproxy.c:118
 #, c-format
 msgid "SOCKSv4 does not support IPv6 address “%s”"
-msgstr ""
+msgstr "SOCKSv4 ले IPv6 ठेगाना \"%s\" समर्थन गर्दैन"
 
 #: gio/gsocks4aproxy.c:136
 msgid "Username is too long for SOCKSv4 protocol"
 msgstr "SOCKSv4 प्रोटोकलका लागि प्रयोगकर्ता नाम धेरै लामो छ"
 
 #: gio/gsocks4aproxy.c:153
-#, fuzzy, c-format
+#, c-format
 msgid "Hostname “%s” is too long for SOCKSv4 protocol"
-msgstr "SOCKSv4 à¤ªà¥\8dरà¥\8bà¤\9fà¥\8bà¤\95लà¤\95ा à¤²à¤¾à¤\97ि à¤ªà¥\8dरयà¥\8bà¤\97à¤\95रà¥\8dता à¤¨à¤¾à¤® धेरै लामो छ"
+msgstr "SOCKSv4 à¤ªà¥\8dरà¥\8bà¤\9fà¥\8bà¤\95लà¤\95ा à¤²à¤¾à¤\97ि à¤¹à¥\8bसà¥\8dà¤\9fनाम \"%s\" धेरै लामो छ"
 
 #: gio/gsocks4aproxy.c:179
 msgid "The server is not a SOCKSv4 proxy server."
@@ -3934,30 +4016,29 @@ msgstr "SOCKSv5 प्रोक्सीलाई प्रमाणीकरण
 
 #: gio/gsocks5proxy.c:191
 msgid "The SOCKSv5 proxy requires an authentication method that is not supported by GLib."
-msgstr ""
+msgstr "SOCKSv5 प्रोक्सीलाई एउटा प्रमाणीकरण विधि आवश्यक पर्दछ जुन GLib द्वारा समर्थित छैन ।"
 
 #: gio/gsocks5proxy.c:220
-#, fuzzy
 msgid "Username or password is too long for SOCKSv5 protocol."
-msgstr "SOCKSv4 प्रोटोकलका लागि प्रयोगकर्ता नाम धेरै लामो छ"
+msgstr "SOCKSv5 प्रोटोकलका लागि प्रयोगकर्ता नाम वा पासवर्ड धेरै लामो छ ।"
 
 #: gio/gsocks5proxy.c:250
 msgid "SOCKSv5 authentication failed due to wrong username or password."
-msgstr ""
+msgstr "गलत प्रयोगकर्ता नाम वा पासवर्डका कारणSOCKSv5 प्रमाणीकरण असफल भयो ।"
 
 #: gio/gsocks5proxy.c:300
 #, c-format
 msgid "Hostname “%s” is too long for SOCKSv5 protocol"
-msgstr ""
+msgstr "होस्टनाम \"%s\" SOCKSv5 प्रोटोकलका लागि धेरै लामो छ"
 
 #: gio/gsocks5proxy.c:362
 msgid "The SOCKSv5 proxy server uses unknown address type."
-msgstr ""
+msgstr "SOCKSv5 प्रोक्सी सर्भरले अज्ञात ठेगाना प्रकार प्रयोग गर्दछ ।"
 
 #: gio/gsocks5proxy.c:369
 #, fuzzy
 msgid "Internal SOCKSv5 proxy server error."
-msgstr "पà¥\8dरà¥\8bà¤\95à¥\8dसà¥\80 à¤¹à¤²à¤\95रà¥\8dता à¤\86नà¥\8dतरिà¤\95 à¤¤à¥\8dरà¥\81à¤\9fि।."
+msgstr "सरà¥\8dभर SOCKSv5 à¤ªà¥\8dरà¥\8bà¤\95à¥\8dसà¥\80 à¤¸à¤°à¥\8dभर à¤¹à¥\8bà¤\87न à¥¤"
 
 #: gio/gsocks5proxy.c:375
 msgid "SOCKSv5 connection not allowed by ruleset."
@@ -3965,12 +4046,11 @@ msgstr "रूलसेटद्वारा SOCKSv5 जडानलाई अ
 
 #: gio/gsocks5proxy.c:382
 msgid "Host unreachable through SOCKSv5 server."
-msgstr ""
+msgstr "SOCKSv5 सर्भर मार्फत पहुँच योग्य नभएको होस्ट ।"
 
 #: gio/gsocks5proxy.c:388
-#, fuzzy
 msgid "Network unreachable through SOCKSv5 proxy."
-msgstr "SOCKSv5 प्रोक्सी सँग जडान अस्वीकृत भयो ।"
+msgstr "SOCKSv5 प्रोक्सीसँग सञ्जाल पहुँचयोग्य छैन ।"
 
 #: gio/gsocks5proxy.c:394
 msgid "Connection refused through SOCKSv5 proxy."
@@ -3978,169 +4058,199 @@ msgstr "SOCKSv5 प्रोक्सी सँग जडान अस्वी
 
 #: gio/gsocks5proxy.c:400
 msgid "SOCKSv5 proxy does not support “connect” command."
-msgstr ""
+msgstr "SOCKSv5 प्रोक्सीले \"जडान\" आदेश समर्थन गर्दैन ।"
 
 #: gio/gsocks5proxy.c:406
 msgid "SOCKSv5 proxy does not support provided address type."
-msgstr ""
+msgstr "SOCKSv5 प्रोक्सीले प्रदान गरिएको ठेगाना प्रकार समर्थन गर्दैन ।"
 
 #: gio/gsocks5proxy.c:412
 #, fuzzy
 msgid "Unknown SOCKSv5 proxy error."
-msgstr "SOCKSv5 प्रोक्सी सँग जडान अस्वीकृत भयो ।"
+msgstr "सर्भर SOCKSv5 प्रोक्सी सर्भर होइन ।"
+
+#: gio/gtestdbus.c:612 glib/gspawn-win32.c:314
+#, c-format
+msgid "Failed to create pipe for communicating with child process (%s)"
+msgstr "शाखा प्रक्रिया (%s)सँग कुराकानीका लागि पाइप सिर्जना गर्न असफल"
+
+#: gio/gtestdbus.c:619
+#, c-format
+msgid "Pipes are not supported in this platform"
+msgstr "यो प्लेटफर्ममा पाइपहरू समर्थन गर्दैन"
 
 #: gio/gthemedicon.c:595
-#, fuzzy, c-format
+#, c-format
 msgid "Can’t handle version %d of GThemedIcon encoding"
-msgstr "GVfsIcon सङ्केतनको संस्करण %d ह्याण्डल गर्न सकिँदैन"
+msgstr "GThemedIcon सङ्केतनको संस्करण %d ह्यान्डल गर्न सकिँदैन"
 
 #: gio/gthreadedresolver.c:152
 #, fuzzy
 msgid "No valid addresses were found"
-msgstr "à¤\95à¥\81नà¥\88 à¤µà¤°à¥\8dà¤\97 à¤\89पसरà¥\8dà¤\97हरà¥\82 à¤­à¥\87à¤\9fिà¤\8fन"
+msgstr "à¤\95à¥\81नà¥\88 à¤\97à¥\81णहरà¥\82 à¤«à¥\87ला à¤ªà¤°à¥\87न à¥¤"
 
 #: gio/gthreadedresolver.c:337
-#, fuzzy, c-format
+#, c-format
 msgid "Error reverse-resolving “%s”: %s"
-msgstr "सेवा \"%2s\" डोमेन \"%3s\" मा हल गर्दा त्रुटि \"%1s\""
+msgstr "\"%s\" पुन: समाधान गर्दा त्रुटि: %s"
 
-#: gio/gthreadedresolver.c:676 gio/gthreadedresolver.c:755
-#: gio/gthreadedresolver.c:853 gio/gthreadedresolver.c:903
+#. Translators: the placeholder is a DNS record type, such as ‘MX’ or ‘SRV’
+#: gio/gthreadedresolver.c:550 gio/gthreadedresolver.c:572 gio/gthreadedresolver.c:610 gio/gthreadedresolver.c:657
+#: gio/gthreadedresolver.c:686 gio/gthreadedresolver.c:698
+#, c-format
+msgid "Error parsing DNS %s record: malformed DNS packet"
+msgstr "%s रेकर्ड पद वर्णन गर्दा त्रुटि: विकृत DNS प्याकेट"
+
+#: gio/gthreadedresolver.c:756 gio/gthreadedresolver.c:893 gio/gthreadedresolver.c:991 gio/gthreadedresolver.c:1041
 #, fuzzy, c-format
 msgid "No DNS record of the requested type for “%s”"
 msgstr "वस्तु प्रकार '%s' यो प्रसङ्गमा अनुरोध गर्न सकिँदैन"
 
-#: gio/gthreadedresolver.c:681 gio/gthreadedresolver.c:858
+#: gio/gthreadedresolver.c:761 gio/gthreadedresolver.c:996
 #, fuzzy, c-format
 msgid "Temporarily unable to resolve “%s”"
-msgstr "सहभागी अद्यावधिक गर्न अक्षम । %s"
+msgstr "URI '%s' को लागि मिडिया समाधान गर्न सकेन"
 
-#: gio/gthreadedresolver.c:686 gio/gthreadedresolver.c:863
-#: gio/gthreadedresolver.c:973
-#, fuzzy, c-format
+#: gio/gthreadedresolver.c:766 gio/gthreadedresolver.c:1001 gio/gthreadedresolver.c:1111
+#, c-format
 msgid "Error resolving “%s”"
-msgstr "सेवा \"%2s\" डोमेन \"%3s\" मा हल गर्दा त्रुटि \"%1s\""
+msgstr "\"%s\" हल गर्दा त्रुटि"
 
-#: gio/gtlscertificate.c:298
-#, fuzzy
+#: gio/gthreadedresolver.c:780 gio/gthreadedresolver.c:804 gio/gthreadedresolver.c:829 gio/gthreadedresolver.c:844
+msgid "Malformed DNS packet"
+msgstr "विकृत DNS प्याकेट"
+
+#: gio/gthreadedresolver.c:886
+#, fuzzy, c-format
+#| msgid "Failed to read from file '%s': %s"
+msgid "Failed to parse DNS response for “%s”: "
+msgstr "स्वत: खोज प्रतिक्रिया एक्सएमएल पार्स गर्न असफल भयो"
+
+#: gio/gtlscertificate.c:478
 msgid "No PEM-encoded private key found"
-msgstr "PEM-सङ्केतन गरिएको निजी कुञ्जीको गुप्तलेखन उल्टाउन सकिँदैन"
+msgstr "PEM-सङ्केतन गरिएको निजी कुञ्जी फेला परेन"
 
-#: gio/gtlscertificate.c:308
+#: gio/gtlscertificate.c:488
 msgid "Cannot decrypt PEM-encoded private key"
 msgstr "PEM-सङ्केतन गरिएको निजी कुञ्जीको गुप्तलेखन उल्टाउन सकिँदैन"
 
-#: gio/gtlscertificate.c:319
+#: gio/gtlscertificate.c:499
 #, fuzzy
 msgid "Could not parse PEM-encoded private key"
-msgstr "PEM व्यक्तिगत कुञ्जी पद वर्णन गर्न सकेन: %s"
+msgstr "PEM-सङ्केतन गरिएको प्रमाणपत्र पद वर्णन गर्न सकेन"
 
-#: gio/gtlscertificate.c:346
-#, fuzzy
+#: gio/gtlscertificate.c:526
 msgid "No PEM-encoded certificate found"
-msgstr "PEM-सà¤\99à¥\8dà¤\95à¥\87तन à¤\97रिà¤\8fà¤\95à¥\8b à¤¨à¤¿à¤\9cà¥\80 à¤\95à¥\81à¤\9eà¥\8dà¤\9cà¥\80à¤\95à¥\8b à¤\97à¥\81पà¥\8dतलà¥\87à¤\96न à¤\89लà¥\8dà¤\9fाà¤\89न à¤¸à¤\95िà¤\81दà¥\88न"
+msgstr "PEM-सà¤\99à¥\8dà¤\95à¥\87तन à¤\97रिà¤\8fà¤\95à¥\8b à¤ªà¥\8dरमाणपतà¥\8dर à¤«à¥\87ला à¤ªà¤°à¥\87न"
 
-#: gio/gtlscertificate.c:355
-#, fuzzy
+#: gio/gtlscertificate.c:535
 msgid "Could not parse PEM-encoded certificate"
-msgstr "PEM प्रमाणपत्र पार्स गर्न सकेन:% s"
+msgstr "PEM-सङ्केतन गरिएको प्रमाणपत्र पद वर्णन गर्न सकेन"
 
-#: gio/gtlscertificate.c:710
+#: gio/gtlscertificate.c:796
+msgid "The current TLS backend does not support PKCS #12"
+msgstr "हालको TLS ब्याकइन्डले PKCS #12 समर्थन गर्दैन"
+
+#: gio/gtlscertificate.c:1013
 msgid "This GTlsBackend does not support creating PKCS #11 certificates"
-msgstr ""
+msgstr "यो GTlsBackend ले PKCS #11 प्रमाणपत्र सिर्जना गर्न समर्थन गर्दैन ।"
 
 #: gio/gtlspassword.c:111
 msgid "This is the last chance to enter the password correctly before your access is locked out."
-msgstr ""
+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 passwords entered have been incorrect, and your access will be locked out after further failures."
-msgstr ""
+msgstr "प्रविष्ट गरिएका धेरै पासवर्डहरू गलत भएका छन्, र तपाईँको पहुँच थप असफलता पछि ताल्चा लगाइएको हुनेछ ।"
 
 #: gio/gtlspassword.c:117
 #, fuzzy
 msgid "The password entered is incorrect."
 msgstr "पासवर्ड गलत थियो"
 
-#: gio/gunixconnection.c:166 gio/gunixconnection.c:579
+#: gio/gunixconnection.c:125
+msgid "Sending FD is not supported"
+msgstr "FD पठाउन समर्थन गर्दैन"
+
+#: gio/gunixconnection.c:178 gio/gunixconnection.c:596
 #, c-format
 msgid "Expecting 1 control message, got %d"
 msgid_plural "Expecting 1 control message, got %d"
 msgstr[0] "१ नियन्त्रण सन्देश अपेक्षा गर्दै, %d प्राप्त भयो"
 msgstr[1] "१ नियन्त्रण सन्देश अपेक्षा गर्दै, %d प्राप्त भयो"
 
-#: gio/gunixconnection.c:182 gio/gunixconnection.c:591
-#, fuzzy
+#: gio/gunixconnection.c:194 gio/gunixconnection.c:608
 msgid "Unexpected type of ancillary data"
-msgstr "PNM छवि डेटाको अप्रत्याशित अन्त्य"
+msgstr "अनपेक्षित प्रकारको सहायक डेटा"
 
-#: gio/gunixconnection.c:200
+#: gio/gunixconnection.c:212
 #, c-format
 msgid "Expecting one fd, but got %d\n"
 msgid_plural "Expecting one fd, but got %d\n"
 msgstr[0] "एउटा fd अपेक्षा गर्दै, तर %d प्राप्त गर्यो\n"
 msgstr[1] "एउटा fd अपेक्षा गर्दै, तर %d प्राप्त गर्यो\n"
 
-#: gio/gunixconnection.c:219
-#, fuzzy
+#: gio/gunixconnection.c:231
 msgid "Received invalid fd"
-msgstr "à¤\8fफडà¥\80"
+msgstr "à¤\85वà¥\88ध fd à¤ªà¥\8dरापà¥\8dत à¤­à¤¯à¥\8b"
 
-#: gio/gunixconnection.c:363
+#: gio/gunixconnection.c:238
+#, fuzzy
+msgid "Receiving FD is not supported"
+msgstr "FD पठाउन समर्थन गर्दैन"
+
+#: gio/gunixconnection.c:380
 #, fuzzy
 msgid "Error sending credentials: "
 msgstr "सन्देश पठाउदा त्रुटि: %s"
 
-#: gio/gunixconnection.c:520
+#: gio/gunixconnection.c:537
 #, c-format
 msgid "Error checking if SO_PASSCRED is enabled for socket: %s"
 msgstr ""
 
-#: gio/gunixconnection.c:536
+#: gio/gunixconnection.c:553
 #, c-format
 msgid "Error enabling SO_PASSCRED: %s"
 msgstr "SO_PASSCRED सक्षम पार्दा त्रुटि: %s"
 
-#: gio/gunixconnection.c:565
+#: gio/gunixconnection.c:582
 msgid "Expecting to read a single byte for receiving credentials but read zero bytes"
 msgstr "प्रमाणपत्र प्राप्त गर्नका लागि एकल बाइट पढ्ने अपेक्षा गर्दैछ तर शून्य बाइटहरू पढ्नुहोस्"
 
-#: gio/gunixconnection.c:605
+#: gio/gunixconnection.c:622
 #, fuzzy, c-format
 msgid "Not expecting control message, but got %d"
 msgstr "१ नियन्त्रण सन्देश अपेक्षा गर्दै, %d प्राप्त भयो"
 
-#: gio/gunixconnection.c:630
+#: gio/gunixconnection.c:647
 #, c-format
 msgid "Error while disabling SO_PASSCRED: %s"
-msgstr ""
+msgstr "SO_PASSCRED अक्षम गर्दा त्रुटि: %s"
 
 #: gio/gunixinputstream.c:357 gio/gunixinputstream.c:378
 #, fuzzy, c-format
 msgid "Error reading from file descriptor: %s"
 msgstr "फाइल “%s” पढ्दा त्रुटि:%s"
 
-#: gio/gunixinputstream.c:411 gio/gunixoutputstream.c:520
-#: gio/gwin32inputstream.c:217 gio/gwin32outputstream.c:204
+#: gio/gunixinputstream.c:411 gio/gunixoutputstream.c:520 gio/gwin32inputstream.c:217 gio/gwin32outputstream.c:204
 #, fuzzy, c-format
 msgid "Error closing file descriptor: %s"
 msgstr "फाइल बन्द गर्दा त्रुटि: %s"
 
-#: gio/gunixmounts.c:2780 gio/gunixmounts.c:2833
-#, fuzzy
+#: gio/gunixmounts.c:2809 gio/gunixmounts.c:2862
 msgid "Filesystem root"
-msgstr "बाà¤\9fà¥\8b %s à¤«à¤¾à¤\87ल à¤ªà¥\8dरणालà¥\80 à¤®à¥\82ल à¤¸à¤\81à¤\97 à¤¸à¤¨à¥\8dबनà¥\8dधित à¤¹à¥\81नà¥\81परà¥\8dà¤\9b (/ à¤¬à¤¾à¤\9f à¤¸à¥\81रà¥\81)"
+msgstr "मà¥\81ल à¤«à¤¾à¤\87ल à¤ªà¥\8dरणालà¥\80 "
 
-#: gio/gunixoutputstream.c:357 gio/gunixoutputstream.c:377
-#: gio/gunixoutputstream.c:464 gio/gunixoutputstream.c:484
+#: gio/gunixoutputstream.c:357 gio/gunixoutputstream.c:377 gio/gunixoutputstream.c:464 gio/gunixoutputstream.c:484
 #: gio/gunixoutputstream.c:630
 #, fuzzy, c-format
 msgid "Error writing to file descriptor: %s"
 msgstr "छवि फाइलमा लेख्दा त्रुटि: %s"
 
-#: gio/gunixsocketaddress.c:243
+#: gio/gunixsocketaddress.c:251
 msgid "Abstract UNIX domain socket addresses not supported on this system"
 msgstr "संक्षेप युनिक्स डोमेन सकेट ठेगाना यो प्रणालीमा समर्थन गर्दैन"
 
@@ -4157,11 +4267,9 @@ msgid "volume doesn’t implement eject or eject_with_operation"
 msgstr "ड्राइभले निकाल्ने वा eject_with_operation कार्यान्वयन गर्दैन"
 
 #: gio/gwin32inputstream.c:185
-#, fuzzy, c-format
+#, c-format
 msgid "Error reading from handle: %s"
-msgstr ""
-"सर्भरबाट जवाफ पढ्दा त्रुटि:\n"
-"%s"
+msgstr "हेन्दलबाट पढ्दा त्रुटि: %s"
 
 #: gio/gwin32inputstream.c:232 gio/gwin32outputstream.c:219
 #, fuzzy, c-format
@@ -4195,161 +4303,149 @@ msgid "Address to listen on"
 msgstr "Address to listen on"
 
 #: gio/tests/gdbus-daemon.c:19
-#, fuzzy
 msgid "Ignored, for compat with GTestDbus"
-msgstr "मिल्दोपनाका लागि उपेक्षा गरियो"
+msgstr "GTestDbus सँग कम्पाटका लागि, उपेक्षा गरियो"
 
 #: gio/tests/gdbus-daemon.c:20
-#, fuzzy
 msgid "Print address"
-msgstr "मà¥\81दà¥\8dरण à¤\97रà¥\8dनà¥\81हà¥\8bसà¥\8d..."
+msgstr "ठà¥\87à¤\97ाना à¤®à¥\81दà¥\8dरण à¤\97रà¥\8dनà¥\81हà¥\8bसà¥\8d"
 
 #: gio/tests/gdbus-daemon.c:21
 msgid "Print address in shell mode"
 msgstr ""
 
 #: gio/tests/gdbus-daemon.c:28
-#, fuzzy
 msgid "Run a dbus service"
-msgstr "DBus सेवामा जडान गर्दछ"
+msgstr "dbus सेवा चलाउनुहोस्"
 
 #: gio/tests/gdbus-daemon.c:42
 msgid "Wrong args\n"
 msgstr "गलत तर्क\n"
 
-#: glib/gbookmarkfile.c:768
+#: glib/gbookmarkfile.c:777
 #, fuzzy, c-format
 msgid "Unexpected attribute “%s” for element “%s”"
-msgstr "अनपेक्षित तत्व \"%s\""
+msgstr "\"%s\" विशेषताको \"%s\" तत्व फेला परेन"
 
-#: glib/gbookmarkfile.c:779 glib/gbookmarkfile.c:859 glib/gbookmarkfile.c:869
-#: glib/gbookmarkfile.c:982
+#: glib/gbookmarkfile.c:788 glib/gbookmarkfile.c:868 glib/gbookmarkfile.c:878 glib/gbookmarkfile.c:991
 #, c-format
 msgid "Attribute “%s” of element “%s” not found"
 msgstr "\"%s\" विशेषताको \"%s\" तत्व फेला परेन"
 
-#: glib/gbookmarkfile.c:1191 glib/gbookmarkfile.c:1256
-#: glib/gbookmarkfile.c:1320 glib/gbookmarkfile.c:1330
+#: glib/gbookmarkfile.c:1200 glib/gbookmarkfile.c:1265 glib/gbookmarkfile.c:1329 glib/gbookmarkfile.c:1339
 #, fuzzy, c-format
 msgid "Unexpected tag “%s”, tag “%s” expected"
-msgstr "à¤\85पà¥\87à¤\95à¥\8dषित à¤\9fà¥\8dयाà¤\97 <gda_array_data>, <%s> à¤ªà¥\8dरापà¥\8dत à¤\97रà¥\8dयà¥\8b"
+msgstr "à¤\85पà¥\8dरतà¥\8dयाशित à¤¸à¥\81रà¥\81 à¤\9fà¥\8dयाà¤\97 '%s' à¤²à¤¾à¤\87न %d à¤®à¤¾ char %d"
 
-#: glib/gbookmarkfile.c:1216 glib/gbookmarkfile.c:1230
-#: glib/gbookmarkfile.c:1298 glib/gbookmarkfile.c:1344
+#: glib/gbookmarkfile.c:1225 glib/gbookmarkfile.c:1239 glib/gbookmarkfile.c:1307 glib/gbookmarkfile.c:1353
 #, fuzzy, c-format
 msgid "Unexpected tag “%s” inside “%s”"
-msgstr "अनपेक्षित विशेषता %s::%s == '%s'।"
+msgstr "%s भित्रपटि (%s) अनुमति दिएको छैन"
 
-#: glib/gbookmarkfile.c:1624
+#: glib/gbookmarkfile.c:1633
 #, c-format
 msgid "Invalid date/time ‘%s’ in bookmark file"
 msgstr "पुस्तकचिनो फाइलमा अवैध मिति/समय '%s'"
 
-#: glib/gbookmarkfile.c:1827
+#: glib/gbookmarkfile.c:1836
 #, fuzzy
 msgid "No valid bookmark file found in data dirs"
 msgstr "खोजी डाइरेक्टरीहरूमा वैध कुञ्जी फाइल फेला पार्न सकेन ।"
 
-#: glib/gbookmarkfile.c:2028
+#: glib/gbookmarkfile.c:2037
 #, c-format
 msgid "A bookmark for URI “%s” already exists"
 msgstr "URI \"%s\" का लागि पुस्तकचिनो पहिले नै अवस्थित छ"
 
-#: glib/gbookmarkfile.c:2077 glib/gbookmarkfile.c:2235
-#: glib/gbookmarkfile.c:2320 glib/gbookmarkfile.c:2400
-#: glib/gbookmarkfile.c:2485 glib/gbookmarkfile.c:2619
-#: glib/gbookmarkfile.c:2752 glib/gbookmarkfile.c:2887
-#: glib/gbookmarkfile.c:2929 glib/gbookmarkfile.c:3026
-#: glib/gbookmarkfile.c:3147 glib/gbookmarkfile.c:3341
-#: glib/gbookmarkfile.c:3482 glib/gbookmarkfile.c:3701
-#: glib/gbookmarkfile.c:3790 glib/gbookmarkfile.c:3879
-#: glib/gbookmarkfile.c:3998
+#: glib/gbookmarkfile.c:2086 glib/gbookmarkfile.c:2244 glib/gbookmarkfile.c:2329 glib/gbookmarkfile.c:2409
+#: glib/gbookmarkfile.c:2494 glib/gbookmarkfile.c:2628 glib/gbookmarkfile.c:2761 glib/gbookmarkfile.c:2896
+#: glib/gbookmarkfile.c:2938 glib/gbookmarkfile.c:3035 glib/gbookmarkfile.c:3156 glib/gbookmarkfile.c:3350
+#: glib/gbookmarkfile.c:3491 glib/gbookmarkfile.c:3710 glib/gbookmarkfile.c:3799 glib/gbookmarkfile.c:3888
+#: glib/gbookmarkfile.c:4007
 #, fuzzy, c-format
 msgid "No bookmark found for URI “%s”"
 msgstr "'%s' URI का लागि वस्तु फेला परेन"
 
-#: glib/gbookmarkfile.c:2409
+#: glib/gbookmarkfile.c:2418
 #, c-format
 msgid "No MIME type defined in the bookmark for URI “%s”"
 msgstr ""
 
-#: glib/gbookmarkfile.c:2494
+#: glib/gbookmarkfile.c:2503
 #, c-format
 msgid "No private flag has been defined in bookmark for URI “%s”"
 msgstr ""
 
-#: glib/gbookmarkfile.c:3035
+#: glib/gbookmarkfile.c:3044
 #, fuzzy, c-format
 msgid "No groups set in bookmark for URI “%s”"
 msgstr "URI \"%s\" का लागि पुस्तकचिनो पहिले नै अवस्थित छ"
 
-#: glib/gbookmarkfile.c:3503 glib/gbookmarkfile.c:3711
+#: glib/gbookmarkfile.c:3512 glib/gbookmarkfile.c:3720
 #, fuzzy, c-format
 msgid "No application with name “%s” registered a bookmark for “%s”"
 msgstr "%s: अनुप्रयोग नाम हराइरहेको छ"
 
-#: glib/gbookmarkfile.c:3734
-#, fuzzy, c-format
+#: glib/gbookmarkfile.c:3743
+#, c-format
 msgid "Failed to expand exec line “%s” with URI “%s”"
-msgstr "सांकेतिक सम्बन्ध '%s' पढ्न असफल: %s"
+msgstr "\"%s\" यूआरआईसँग exec लाइन \"%s\" विस्तार गर्न असफल भयो"
 
-#: glib/gconvert.c:467
+#: glib/gconvert.c:468
 msgid "Unrepresentable character in conversion input"
 msgstr "रूपान्तरण आगतमा प्रतिनिधित्व गर्न नसकिने वर्ण"
 
-#: glib/gconvert.c:494 glib/gutf8.c:871 glib/gutf8.c:1083 glib/gutf8.c:1220
-#: glib/gutf8.c:1324
+#: glib/gconvert.c:495 glib/gutf8.c:886 glib/gutf8.c:1099 glib/gutf8.c:1236 glib/gutf8.c:1340
 msgid "Partial character sequence at end of input"
 msgstr "आगतको अन्त्यमा आंशिक क्यारेक्टर"
 
-#: glib/gconvert.c:763
+#: glib/gconvert.c:764
 #, fuzzy, c-format
 #| msgid "Cannot convert fallback '%s' to codeset '%s'"
 msgid "Cannot convert fallback “%s” to codeset “%s”"
 msgstr "फलब्याक '%s' बाट कोड सेट'%s' मा रूपान्तरण गर्न सक्दैन"
 
-#: glib/gconvert.c:935
+#: glib/gconvert.c:936
 #, fuzzy
 #| msgid "Invalid byte sequence in conversion input"
 msgid "Embedded NUL byte in conversion input"
 msgstr "रूपान्तरण आगतमा अवैध बाइट अनुक्रम"
 
-#: glib/gconvert.c:956
+#: glib/gconvert.c:957
 #, fuzzy
 #| msgid "Invalid byte sequence in conversion input"
 msgid "Embedded NUL byte in conversion output"
 msgstr "रूपान्तरण आगतमा अवैध बाइट अनुक्रम"
 
-#: glib/gconvert.c:1641
-#, fuzzy, c-format
-#| msgid "The URI '%s' is not an absolute URI using the \"file\" scheme"
+#: glib/gconvert.c:1688
+#, c-format
 msgid "The URI “%s” is not an absolute URI using the “file” scheme"
-msgstr "URI '%s' \"file\" योजना प्रयोग गर्ने एउटा निश्चित URI होइन"
+msgstr "URI \"%s\" \"file\" योजना प्रयोग गर्ने एउटा निश्चित URI होइन"
 
-#: glib/gconvert.c:1651
+#: glib/gconvert.c:1698
 #, fuzzy, c-format
 #| msgid "The local file URI '%s' may not include a '#'"
 msgid "The local file URI “%s” may not include a “#”"
 msgstr "स्थानीय फाइल URI '%s' मा एउटा '#' समावेश नहुनसक्छ"
 
-#: glib/gconvert.c:1668
+#: glib/gconvert.c:1715
 #, c-format
 msgid "The URI “%s” is invalid"
 msgstr "URI “%s” अवैध"
 
-#: glib/gconvert.c:1680
+#: glib/gconvert.c:1727
 #, fuzzy, c-format
 #| msgid "The hostname of the URI '%s' is invalid"
 msgid "The hostname of the URI “%s” is invalid"
 msgstr "URI “%s” अवैध"
 
-#: glib/gconvert.c:1696
+#: glib/gconvert.c:1743
 #, fuzzy, c-format
 #| msgid "The URI '%s' contains invalidly escaped characters"
 msgid "The URI “%s” contains invalidly escaped characters"
 msgstr "URI '%s' मा अवैध रूपमा निस्किएका क्यारेक्टरहरू देखिन्छन्"
 
-#: glib/gconvert.c:1768
+#: glib/gconvert.c:1815
 #, fuzzy, c-format
 #| msgid "The pathname '%s' is not an absolute path"
 msgid "The pathname “%s” is not an absolute path"
@@ -4768,12 +4864,12 @@ msgctxt "GDateTime"
 msgid "PM"
 msgstr "अपराह्न"
 
-#: glib/gdir.c:154
+#: glib/gdir.c:156
 #, c-format
 msgid "Error opening directory “%s”: %s"
 msgstr "निर्देशिका खोल्दा त्रुटि “%s”: %s"
 
-#: glib/gfileutils.c:737 glib/gfileutils.c:829
+#: glib/gfileutils.c:733 glib/gfileutils.c:825
 #, fuzzy, c-format
 #| msgid "Could not allocate %lu bytes to read file \"%s\""
 msgid "Could not allocate %lu byte to read file “%s”"
@@ -4781,78 +4877,78 @@ msgid_plural "Could not allocate %lu bytes to read file “%s”"
 msgstr[0] "फाइल \"%2$s\" पढ्न %1$lu बाईट्स बाँडफाँड गर्न सकिएन"
 msgstr[1] "फाइल \"%2$s\" पढ्न %1$lu बाईट्स बाँडफाँड गर्न सकिएन"
 
-#: glib/gfileutils.c:754
+#: glib/gfileutils.c:750
 #, c-format
 msgid "Error reading file “%s”: %s"
 msgstr "फाइल पढ्दा त्रुटि “%s”: %s"
 
-#: glib/gfileutils.c:790
+#: glib/gfileutils.c:786
 #, fuzzy, c-format
 msgid "File “%s” is too large"
-msgstr "%s: तर्क निकै ठूलो"
+msgstr "अति ठूलो गणना मान %s मा पास गरियो"
 
-#: glib/gfileutils.c:854
+#: glib/gfileutils.c:850
 #, fuzzy, c-format
 #| msgid "Failed to read from file '%s': %s"
 msgid "Failed to read from file “%s”: %s"
-msgstr "à¤\95à¥\8dयास à¤«à¤¾à¤\87ल à¤ªà¤¢à¥\8dन à¤\85सफल %s: %s"
+msgstr "शाà¤\96ा à¤ªà¥\8dरà¤\95à¥\8dरिया (%s) à¤¬à¤¾à¤\9f à¤¡à¥\87à¤\9fा à¤ªà¤¢à¥\8dन à¤\85सफल"
 
-#: glib/gfileutils.c:904 glib/gfileutils.c:979 glib/gfileutils.c:1476
+#: glib/gfileutils.c:900 glib/gfileutils.c:975 glib/gfileutils.c:1447
 #, fuzzy, c-format
 #| msgid "Failed to open file '%s': %s"
 msgid "Failed to open file “%s”: %s"
 msgstr "फाइल %s खोल्न असफल: %s\n"
 
-#: glib/gfileutils.c:917
+#: glib/gfileutils.c:913
 #, fuzzy, 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 "फाइल '%s' का लागि जानकारी प्राप्त गर्न सकेन: %s"
 
-#: glib/gfileutils.c:948
+#: glib/gfileutils.c:944
 #, c-format
 msgid "Failed to open file “%s”: fdopen() failed: %s"
 msgstr "कार्य फाइल %s: %s fdopen() गर्न असफल"
 
-#: glib/gfileutils.c:1049
+#: glib/gfileutils.c:1045
 #, c-format
 msgid "Failed to rename file “%s” to “%s”: g_rename() failed: %s"
 msgstr "फाइल “%s” लाई “%s” मा पुन: नामकरण गर्न असफल:g_rename() असफल: %s"
 
-#: glib/gfileutils.c:1175
+#: glib/gfileutils.c:1154
 #, fuzzy, c-format
 #| msgid "Failed to write file '%s': fwrite() failed: %s"
 msgid "Failed to write file “%s”: write() failed: %s"
 msgstr "क्यास फाइल लेख्न असफल भयो: %s\n"
 
-#: glib/gfileutils.c:1196
+#: glib/gfileutils.c:1175
 #, fuzzy, c-format
 msgid "Failed to write file “%s”: fsync() failed: %s"
 msgstr "क्यास फाइल लेख्न असफल भयो: %s\n"
 
-#: glib/gfileutils.c:1365 glib/gfileutils.c:1780
+#: glib/gfileutils.c:1336 glib/gfileutils.c:1751
 #, fuzzy, c-format
 #| msgid "Failed to create file '%s': %s"
 msgid "Failed to create file “%s”: %s"
 msgstr "अस्थायी फाईल सिर्जना गर्न असफल`%s': %s\n"
 
-#: glib/gfileutils.c:1410
+#: glib/gfileutils.c:1381
 #, fuzzy, 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 "अवस्थित फाइल '%s' हटाउन सकिएन:g_unlink() असफल: %s"
 
-#: glib/gfileutils.c:1745
+#: glib/gfileutils.c:1716
 #, c-format
 msgid "Template “%s” invalid, should not contain a “%s”"
 msgstr "टेम्प्लेट %s को #%s मा 'टेम्प्लेट:' लाइन समाविष्ट छैन"
 
-#: glib/gfileutils.c:1758
-#, fuzzy, c-format
+#: glib/gfileutils.c:1729
+#, c-format
 msgid "Template “%s” doesn’t contain XXXXXX"
-msgstr "'%s' टेम्प्लेट XXXXXX संगसमाप्त हुँदैन"
+msgstr "\"%s\" टेम्प्लेट XXXXXX समावेश छैन"
 
-#: glib/gfileutils.c:2318 glib/gfileutils.c:2347
+#: glib/gfileutils.c:2289 glib/gfileutils.c:2318
 #, c-format
 msgid "Failed to read the symbolic link “%s”: %s"
 msgstr "सांकेतिक सम्बन्ध \"%s\" पढ्न असफल भयो: %s"
@@ -4863,8 +4959,6 @@ msgid "Could not open converter from “%s” to “%s”: %s"
 msgstr "\"%s\" बाट \"%s\" मा रूपान्तरणकर्ता खोल्न सकेन: %s"
 
 #: glib/giochannel.c:1758
-#, fuzzy
-#| msgid "Can't do a raw read in g_io_channel_read_line_string"
 msgid "Can’t do a raw read in g_io_channel_read_line_string"
 msgstr "g_io_channel_read_line_string मा परीक्षण पढाई गर्न सक्दैन"
 
@@ -4877,108 +4971,106 @@ msgid "Channel terminates in a partial character"
 msgstr "आंशिक-क्यारेक्टरमा माध्यम टुङ्गिन्छ"
 
 #: glib/giochannel.c:1949
-#, fuzzy
-#| msgid "Can't do a raw read in g_io_channel_read_to_end"
 msgid "Can’t do a raw read in g_io_channel_read_to_end"
 msgstr "g_io_channel_read_to_end मा परीक्षण पढाई गर्न सक्दैन"
 
-#: glib/gkeyfile.c:790
+#: glib/gkeyfile.c:794
 msgid "Valid key file could not be found in search dirs"
 msgstr "खोजी डाइरेक्टरीहरूमा वैध कुञ्जी फाइल फेला पार्न सकेन ।"
 
-#: glib/gkeyfile.c:827
+#: glib/gkeyfile.c:831
 msgid "Not a regular file"
 msgstr "नियमित फाइल होइन"
 
-#: glib/gkeyfile.c:1282
+#: glib/gkeyfile.c:1289
 #, fuzzy, c-format
 #| msgid "Key file contains line '%s' which is not a key-value pair, group, or comment"
 msgid "Key file contains line “%s” which is not a key-value pair, group, or comment"
 msgstr "कुञ्जी फाइलमा पङ्गति '%s' समावेश छ जुन कुञ्जी-मान जोडि, समूह, वा टिप्पणी होइन।"
 
-#: glib/gkeyfile.c:1339
+#: glib/gkeyfile.c:1346
 #, c-format
 msgid "Invalid group name: %s"
 msgstr "अवैध समुह नाम : %s"
 
-#: glib/gkeyfile.c:1361
+#: glib/gkeyfile.c:1370
 msgid "Key file does not start with a group"
 msgstr "कुञ्जी फाइल एउटा समूहबाट सुरु हुँदैन"
 
-#: glib/gkeyfile.c:1387
-#, c-format
-msgid "Invalid key name: %s"
-msgstr "अवैध कुञ्जि नाम : %s"
+#: glib/gkeyfile.c:1394
+#, fuzzy, c-format
+#| msgid "Invalid key name: %s"
+msgid "Invalid key name: %.*s"
+msgstr "अवैध समुह नाम : %s"
 
-#: glib/gkeyfile.c:1414
+#: glib/gkeyfile.c:1422
 #, fuzzy, c-format
 #| msgid "Key file contains unsupported encoding '%s'"
 msgid "Key file contains unsupported encoding “%s”"
 msgstr "कुञ्जी फाइलमा समर्थन प्राप्त नभएको सङ्केतन '%s' समावेश छ।"
 
-#: glib/gkeyfile.c:1663 glib/gkeyfile.c:1836 glib/gkeyfile.c:3289
-#: glib/gkeyfile.c:3353 glib/gkeyfile.c:3483 glib/gkeyfile.c:3615
-#: glib/gkeyfile.c:3761 glib/gkeyfile.c:3996 glib/gkeyfile.c:4063
+#: glib/gkeyfile.c:1677 glib/gkeyfile.c:1850 glib/gkeyfile.c:3297 glib/gkeyfile.c:3361 glib/gkeyfile.c:3491
+#: glib/gkeyfile.c:3623 glib/gkeyfile.c:3769 glib/gkeyfile.c:4004 glib/gkeyfile.c:4071
 #, fuzzy, c-format
 #| msgid "Key file does not have group '%s'"
 msgid "Key file does not have group “%s”"
 msgstr "कुञ्जी फाइल एउटा समूहबाट सुरु हुँदैन"
 
-#: glib/gkeyfile.c:1791
+#: glib/gkeyfile.c:1805
 #, fuzzy, c-format
 #| msgid "Key file does not have key '%s' in group '%s'"
 msgid "Key file does not have key “%s” in group “%s”"
 msgstr "कुञ्जी फाइलमा समूह '%s' मा कुञ्जी '%s' हुँदैन"
 
-#: glib/gkeyfile.c:1953 glib/gkeyfile.c:2069
+#: glib/gkeyfile.c:1967 glib/gkeyfile.c:2083
 #, fuzzy, 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 "कुञ्जी फाइलमा मान '%s'सँगै कुञ्जी '%s' समावेश छ जुन UTF-8 होइन"
 
-#: glib/gkeyfile.c:1973 glib/gkeyfile.c:2089 glib/gkeyfile.c:2531
+#: glib/gkeyfile.c:1987 glib/gkeyfile.c:2103 glib/gkeyfile.c:2542
 #, fuzzy, c-format
 msgid "Key file contains key “%s” which has a value that cannot be interpreted."
 msgstr "कुञ्जी फाइलमा कुञ्जी '%s' समावेश छ जसको मानलाई व्याख्या गर्न सकिँदैन।"
 
-#: glib/gkeyfile.c:2749 glib/gkeyfile.c:3118
+#: glib/gkeyfile.c:2757 glib/gkeyfile.c:3126
 #, fuzzy, c-format
 #| msgid "Key file contains key '%s' in group '%s' which has value that cannot be interpreted."
 msgid "Key file contains key “%s” in group “%s” which has a value that cannot be interpreted."
 msgstr "कुञ्जी फाइलमा समूह '%s' मा कुञ्जी '%s' समावेश छ जसको मानलाई व्याख्या गर्न सकिँदैन।"
 
-#: glib/gkeyfile.c:2827 glib/gkeyfile.c:2904
+#: glib/gkeyfile.c:2835 glib/gkeyfile.c:2912
 #, c-format
 msgid "Key “%s” in group “%s” has value “%s” where %s was expected"
 msgstr ""
 
-#: glib/gkeyfile.c:4306
+#: glib/gkeyfile.c:4324
 msgid "Key file contains escape character at end of line"
 msgstr "कुञ्जी फाइलमा पङ्गतिको अन्त्यमा निकास क्यारेक्टर समावेश छ।"
 
-#: glib/gkeyfile.c:4328
+#: glib/gkeyfile.c:4346
 #, fuzzy, c-format
 #| msgid "Key file contains invalid escape sequence '%s'"
 msgid "Key file contains invalid escape sequence “%s”"
 msgstr "कुञ्जी फाइलमा अवैध निकास अनुक्रम '%s' समावेस छ।"
 
-#: glib/gkeyfile.c:4472
+#: glib/gkeyfile.c:4491
 #, c-format
 msgid "Value “%s” cannot be interpreted as a number."
 msgstr "मान '%s' लाई सङ्ख्याको रूपमा व्याख्या गर्न सकिँदैन"
 
-#: glib/gkeyfile.c:4486
+#: glib/gkeyfile.c:4505
 #, fuzzy, c-format
 #| msgid "Integer value '%s' out of range"
 msgid "Integer value “%s” out of range"
-msgstr "विशà¥\87षता %s à¤\95ा à¤²à¤¾à¤\97ि, à¤\87नà¥\8dà¤\9fिà¤\9cर '%s' à¤¦à¤¾à¤¯à¤°à¤¾ à¤¬à¤¾à¤¹à¤¿à¤° à¤\9b"
+msgstr "दायरा à¤¬à¤¾à¤¹à¤¿à¤°à¤\95à¥\8b à¤®à¤¾à¤¨ à¥¤\n"
 
-#: glib/gkeyfile.c:4519
+#: glib/gkeyfile.c:4538
 #, c-format
 msgid "Value “%s” cannot be interpreted as a float number."
 msgstr "मान \"%s\" लाई उत्प्लवान सङ्ख्याको रूपमा व्याख्या गर्न सकिँदैन।"
 
-#: glib/gkeyfile.c:4558
+#: glib/gkeyfile.c:4577
 #, c-format
 msgid "Value “%s” cannot be interpreted as a boolean."
 msgstr "मान \"%s\" लाई बुलियनको रूपमा व्याख्या गर्न सकिँदैन।"
@@ -5027,16 +5119,23 @@ msgid "Error on line %d: %s"
 msgstr "लाइन %d मा त्रुटि: %s"
 
 #: glib/gmarkup.c:690
-#, fuzzy, c-format
-#| msgid "Failed to parse '%-.*s', which should have been a digit inside a character reference (&#234; for example) - perhaps the digit is too large"
-msgid "Failed to parse “%-.*s”, which should have been a digit inside a character reference (&#234; for example) — perhaps the digit is too large"
+#, c-format
+msgid ""
+"Failed to parse “%-.*s”, which should have been a digit inside a character reference (&#234; for example) — perhaps "
+"the digit is too large"
 msgstr "'%-*s' पद वर्णन गर्न सकिएन, जुन एउटा क्यारेक्टर सन्दर्भ (उदाहरणका लागि; &#234) हुनु पर्थ्यो - संभवत अङ्क ज्यादै ठूलो छ"
 
 #: glib/gmarkup.c:702
 #, fuzzy
-#| msgid "Character reference did not end with a semicolon; most likely you used an ampersand character without intending to start an entity - escape ampersand as &amp;"
-msgid "Character reference did not end with a semicolon; most likely you used an ampersand character without intending to start an entity — escape ampersand as &amp;"
-msgstr "क्यारेक्टर सन्दर्भ अर्धविराममा सकिएन;तपाईँले धेरैजसो ऐम्परसेण्ड क्यारेक्टरबाट एउटा अस्तित्व सुरु गर्नका लागि प्रयास नगरिकन सुरु गर्नुभयो - &amp; को रूपमा ऐम्परसेंन्ड निकास गर्नुहोस्"
+#| msgid ""
+#| "Character reference did not end with a semicolon; most likely you used an ampersand character without intending "
+#| "to start an entity - escape ampersand as &amp;"
+msgid ""
+"Character reference did not end with a semicolon; most likely you used an ampersand character without intending to "
+"start an entity — escape ampersand as &amp;"
+msgstr ""
+"क्यारेक्टर सन्दर्भ अर्धविराममा सकिएन;तपाईँले धेरैजसो ऐम्परसेण्ड क्यारेक्टरबाट एउटा अस्तित्व सुरु गर्नका लागि प्रयास नगरिकन सुरु गर्नुभयो - "
+"&amp; को रूपमा ऐम्परसेंन्ड निकास गर्नुहोस्"
 
 #: glib/gmarkup.c:728
 #, fuzzy, c-format
@@ -5053,13 +5152,19 @@ msgstr "खाली अस्तित्व '&;' देखियो; वैध
 #: glib/gmarkup.c:774
 #, fuzzy, c-format
 msgid "Entity name “%-.*s” is not known"
-msgstr "%s à¤\85ब %s à¤­à¤\8fà¤\95à¥\8b छ"
+msgstr "%s à¤\85हिलà¥\87 %s à¤\95à¥\8b à¤°à¥\81पमा à¤\9aिनिनà¥\8dछ"
 
 #: glib/gmarkup.c:779
 #, fuzzy
-#| 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;"
-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;"
-msgstr "अस्तित्व अर्धविराममा सकिएन; तपाईँले धेरैजसो ऐम्परसेण्ड क्यारेक्टरबाट एउटा अस्तित्व सुरु गर्नको लागि प्रयास नगरिकन सुरु गर्नुभयो - &amp; को रूपमा ऐम्परसेंन्ड निकास गर्नुहोस्"
+#| 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;"
+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;"
+msgstr ""
+"अस्तित्व अर्धविराममा सकिएन; तपाईँले धेरैजसो ऐम्परसेण्ड क्यारेक्टरबाट एउटा अस्तित्व सुरु गर्नको लागि प्रयास नगरिकन सुरु गर्नुभयो - &amp; को "
+"रूपमा ऐम्परसेंन्ड निकास गर्नुहोस्"
 
 #: glib/gmarkup.c:1193
 msgid "Document must begin with an element (e.g. <book>)"
@@ -5069,7 +5174,7 @@ msgstr "कागजात एउटा तत्व बाट सुरु ह
 #, fuzzy, c-format
 #| msgid "'%s' is not a valid character following a '<' character; it may not begin an element name"
 msgid "“%s” is not a valid character following a “<” character; it may not begin an element name"
-msgstr "एउटा '<' क्यारेक्टर पछ्याउन '%s' वैधानिक क्यारेक्टर होइन; यस्ले एउटा तत्व नाम प्रारम्भ नगर्न सक्छ"
+msgstr "\"%s\" वर्णहरू \"</\" पछ्याउने वैध वर्ण होइन; \"%s\" तत्व नाम सुरु गर्न सक्दैन"
 
 #: glib/gmarkup.c:1276
 #, fuzzy, c-format
@@ -5089,27 +5194,37 @@ msgstr "विजोड क्यारेक्टर '%s' ले,'%s' तत
 
 #: glib/gmarkup.c:1408
 #, fuzzy, c-format
-#| msgid "Odd character '%s', expected a '>' or '/' character to end the start tag of element '%s', or optionally an attribute; perhaps you used an invalid character in an attribute name"
-msgid "Odd character “%s”, expected a “>” or “/” character to end the start tag of element “%s”, or optionally an attribute; perhaps you used an invalid character in an attribute name"
-msgstr "बिजोड क्यारेक्टर '%s', तत्व '%s' को सुरु ट्याग अन्त्य गर्नलाई अपेक्षा गरिएको एउटा '>' वा '/'  क्यारेक्टर, वा वैकल्पिक रूपमा एउटा विशेषता ,सायद तपाईँले एउटा विशेषता नाममा अवैध क्यारेक्टर प्रयोग गर्नुभयो"
+#| msgid ""
+#| "Odd character '%s', expected a '>' or '/' character to end the start tag of element '%s', or optionally an "
+#| "attribute; perhaps you used an invalid character in an attribute name"
+msgid ""
+"Odd character “%s”, expected a “>” or “/” character to end the start tag of element “%s”, or optionally an "
+"attribute; perhaps you used an invalid character in an attribute name"
+msgstr ""
+"बिजोड क्यारेक्टर '%s', तत्व '%s' को सुरु ट्याग अन्त्य गर्नलाई अपेक्षा गरिएको एउटा '>' वा '/'  क्यारेक्टर, वा वैकल्पिक रूपमा एउटा "
+"विशेषता ,सायद तपाईँले एउटा विशेषता नाममा अवैध क्यारेक्टर प्रयोग गर्नुभयो"
 
 #: glib/gmarkup.c:1453
 #, fuzzy, c-format
-#| msgid "Odd character '%s', expected an open quote mark after the equals sign when giving value for attribute '%s' of element '%s'"
-msgid "Odd character “%s”, expected an open quote mark after the equals sign when giving value for attribute “%s” of element “%s”"
-msgstr "बिजोड क्यारेक्टर '%s',तत्व '%s' को '%s' विशेषताका लागि मान दिइएको बेला बराबर चिन्ह पछि खुला उद्धरण चिन्हको अपेक्षा गरेको हुन्छ।"
+#| msgid ""
+#| "Odd character '%s', expected an open quote mark after the equals sign when giving value for attribute '%s' of "
+#| "element '%s'"
+msgid ""
+"Odd character “%s”, expected an open quote mark after the equals sign when giving value for attribute “%s” of "
+"element “%s”"
+msgstr ""
+"बिजोड क्यारेक्टर '%s',तत्व '%s' को '%s' विशेषताका लागि मान दिइएको बेला बराबर चिन्ह पछि खुला उद्धरण चिन्हको अपेक्षा गरेको हुन्छ।"
 
 #: glib/gmarkup.c:1587
-#, fuzzy, c-format
-#| msgid "'%s' is not a valid character following the characters '</'; '%s' may not begin an element name"
+#, c-format
 msgid "“%s” is not a valid character following the characters “</”; “%s” may not begin an element name"
-msgstr "'%s' एउटा वैध क्यारेक्टर होइन निम्न क्यारेक्टरहरू '</'; '%s' एउटा तत्व नाम प्रारम्भ नगर्न सक्छन"
+msgstr "\"%s\" वर्णहरू \"</\" पछ्याउने वैध वर्ण होइन; \"%s\" तत्व नाम सुरु गर्न सक्दैन"
 
 #: glib/gmarkup.c:1625
 #, fuzzy, c-format
 #| msgid "'%s' is not a valid character following the close element name '%s'; the allowed character is '>'"
 msgid "“%s” is not a valid character following the close element name “%s”; the allowed character is “>”"
-msgstr "बन्द तत्व नाम '%s' को पछि लाग्ने '%s' मान्य क्यारेक्टर होइन; अनुमति पाएको क्यारेक्टर '>' हो।"
+msgstr "\"%s\" वर्णहरू \"</\" पछ्याउने वैध वर्ण होइन; \"%s\" तत्व नाम सुरु गर्न सक्दैन"
 
 #: glib/gmarkup.c:1637
 #, fuzzy, c-format
@@ -5134,10 +5249,9 @@ msgid "Document ended unexpectedly just after an open angle bracket “<”"
 msgstr "एउटा खुल्ला कोण कोष्ठ पछि '<' कागजात अनपेक्षित रूपले समाप्त भयो।"
 
 #: glib/gmarkup.c:1821 glib/gmarkup.c:1866
-#, fuzzy, c-format
-#| msgid "Document ended unexpectedly with elements still open - '%s' was the last element opened"
+#, c-format
 msgid "Document ended unexpectedly with elements still open — “%s” was the last element opened"
-msgstr "'%s' खोलिएको अन्तिम तत्व संगकागजात अप्रत्याशित रूपले समाप्त भयो।"
+msgstr "कागजात अनपेक्षित रूपले समाप्त भयो र तत्वहरू अझै खुला छन् — \"%s\" खोलिएको अन्तिम तत्व थियो"
 
 #: glib/gmarkup.c:1829
 #, c-format
@@ -5181,7 +5295,6 @@ msgid "Document ended unexpectedly inside a comment or processing instruction"
 msgstr "एउटा टिप्पणी वा प्रक्रिया निर्देशन भित्र कागजपत्र अप्रत्याशित रूपले समाप्त भयो"
 
 #: glib/goption.c:873
-#| msgid "[OPTION...]"
 msgid "[OPTION…]"
 msgstr "[विकल्प…]"
 
@@ -5236,593 +5349,596 @@ msgstr "“%s” को मान दायरा बाहिर भयो"
 msgid "Error parsing option %s"
 msgstr "पद वर्णन विकल्पमा त्रुटि %s"
 
-#: glib/goption.c:1570 glib/goption.c:1683
+#: glib/goption.c:1561 glib/goption.c:1674
 #, c-format
 msgid "Missing argument for %s"
 msgstr "%s का छुटेको तर्क"
 
-#: glib/goption.c:2194
+#: glib/goption.c:2184
 #, c-format
 msgid "Unknown option %s"
 msgstr "अज्ञात विकल्प %s"
 
-#: glib/gregex.c:257
+#: glib/gregex.c:255
 msgid "corrupted object"
 msgstr "दूषित वस्तु"
 
-#: glib/gregex.c:259
+#: glib/gregex.c:257
 #, fuzzy
 msgid "internal error or corrupted object"
 msgstr "दूषित वस्तु"
 
-#: glib/gregex.c:261
+#: glib/gregex.c:259
 msgid "out of memory"
 msgstr "स्मृती भन्दा बाहिर"
 
-#: glib/gregex.c:266
-#, fuzzy
+#: glib/gregex.c:264
 msgid "backtracking limit reached"
-msgstr "यसमा à¤¸à¤¿à¤®à¤¿à¤¤: "
+msgstr "बà¥\8dयाà¤\95à¤\9fà¥\8dरà¥\8dयाà¤\95िà¤\99 à¤¸à¤¿à¤®à¤¾ à¤ªà¥\81à¤\97à¥\8dयà¥\8b"
 
-#: glib/gregex.c:278 glib/gregex.c:286
+#: glib/gregex.c:276 glib/gregex.c:284
 msgid "the pattern contains items not supported for partial matching"
 msgstr ""
 
-#: glib/gregex.c:280
+#: glib/gregex.c:278
 msgid "internal error"
 msgstr "आन्तरिक त्रुटि"
 
-#: glib/gregex.c:288
+#: glib/gregex.c:286
 msgid "back references as conditions are not supported for partial matching"
 msgstr "पछिल्लो सन्दर्भ लान आंशिक मिलान शर्त समर्थित छैन"
 
-#: glib/gregex.c:297
-#, fuzzy
+#: glib/gregex.c:295
 msgid "recursion limit reached"
-msgstr "यसमा à¤¸à¤¿à¤®à¤¿à¤¤: "
+msgstr "पà¥\81नरावà¥\83तà¥\8dति à¤¸à¥\80मा à¤ªà¥\81à¤\97à¥\8dयà¥\8b"
 
-#: glib/gregex.c:299
+#: glib/gregex.c:297
 msgid "invalid combination of newline flags"
 msgstr "नयाँ पङ्क्ति झण्डाको अवैध संयोजन"
 
-#: glib/gregex.c:301
-#, fuzzy
+#: glib/gregex.c:299
 msgid "bad offset"
-msgstr "खराब"
+msgstr "खराब अफसेट"
 
-#: glib/gregex.c:303
-#, fuzzy
+#: glib/gregex.c:301
 msgid "short utf8"
-msgstr "'UTF8'"
+msgstr "छोटो utf8"
 
-#: glib/gregex.c:305
+#: glib/gregex.c:303
 #, fuzzy
 msgid "recursion loop"
 msgstr "लूप"
 
-#: glib/gregex.c:309
+#: glib/gregex.c:307
 msgid "unknown error"
 msgstr "अज्ञात त्रुटि"
 
-#: glib/gregex.c:329
+#: glib/gregex.c:327
 #, fuzzy
 msgid "\\ at end of pattern"
-msgstr "बान्की:"
+msgstr "बाà¤\81नà¥\8dà¤\95à¥\80:"
 
-#: glib/gregex.c:332
+#: glib/gregex.c:330
 #, fuzzy
 msgid "\\c at end of pattern"
-msgstr "बान्की:"
+msgstr "बाà¤\81नà¥\8dà¤\95à¥\80:"
 
-#: glib/gregex.c:335
+#: glib/gregex.c:333
 msgid "unrecognized character following \\"
 msgstr "अपरिचित वर्ण \\ पछि"
 
-#: glib/gregex.c:338
+#: glib/gregex.c:336
+#, fuzzy
 msgid "numbers out of order in {} quantifier"
-msgstr ""
+msgstr "क्यारेक्टर वर्गमा क्रम बाहिर को दायरा"
 
-#: glib/gregex.c:341
+#: glib/gregex.c:339
 #, fuzzy
 msgid "number too big in {} quantifier"
 msgstr "अङ्क निकै ठूलो"
 
-#: glib/gregex.c:344
+#: glib/gregex.c:342
 msgid "missing terminating ] for character class"
 msgstr "वर्ण वर्ग को अन्त्य ] छुटेको छ"
 
-#: glib/gregex.c:347
-#, fuzzy
+#: glib/gregex.c:345
 msgid "invalid escape sequence in character class"
-msgstr "URI मा अवैध क्यारेक्टर अनुक्रम"
+msgstr "वर्ण वर्गमा अवैध इस्केप अनुक्रम"
 
-#: glib/gregex.c:350
-#, fuzzy
+#: glib/gregex.c:348
 msgid "range out of order in character class"
-msgstr "UTF-16 का लागि क्यारेक्टर दायरा भन्दा बाहिर छ"
+msgstr "क्यारेक्टर वर्गमा क्रम बाहिर को दायरा"
 
-#: glib/gregex.c:353
+#: glib/gregex.c:351
 msgid "nothing to repeat"
 msgstr "दोहोर्याउनका लागि केही छैन"
 
-#: glib/gregex.c:357
+#: glib/gregex.c:355
 #, fuzzy
 msgid "unexpected repeat"
 msgstr "नदोहो-याउनु"
 
-#: glib/gregex.c:360
+#: glib/gregex.c:358
 msgid "unrecognized character after (? or (?-"
 msgstr "अपरिचित वर्ण पछि (? वा (?-"
 
-#: glib/gregex.c:363
+#: glib/gregex.c:361
 msgid "POSIX named classes are supported only within a class"
 msgstr ""
 
-#: glib/gregex.c:366
+#: glib/gregex.c:364
 msgid "missing terminating )"
 msgstr "अन्त्यको ) छुटेको छ"
 
-#: glib/gregex.c:369
+#: glib/gregex.c:367
 #, fuzzy
 msgid "reference to non-existent subpattern"
 msgstr "अ-सन्दर्भको फरक !"
 
-#: glib/gregex.c:372
+#: glib/gregex.c:370
 msgid "missing ) after comment"
 msgstr "टिप्पणी पछि ) हराइरहेको छ"
 
-#: glib/gregex.c:375
+#: glib/gregex.c:373
 #, fuzzy
 msgid "regular expression is too large"
-msgstr "नियमित à¤\85भिवà¥\8dयà¤\95à¥\8dतिà¤\95à¥\8b à¤°à¥\82पमा à¤\9cà¥\8bडा à¤®à¤¿à¤²à¤¾à¤\89नà¥\81हà¥\8bसà¥\8d"
+msgstr "à¤\96राब à¤¨à¤¿à¤¯à¤®à¤¿à¤¤ à¤\85भिवà¥\8dयà¤\95à¥\8dति â\80\9c{0}â\80\9d."
 
-#: glib/gregex.c:378
+#: glib/gregex.c:376
 msgid "failed to get memory"
 msgstr "स्मृति पाउन असफल"
 
-#: glib/gregex.c:382
+#: glib/gregex.c:380
 msgid ") without opening ("
 msgstr ") बिना खुल्दैछ ("
 
-#: glib/gregex.c:386
+#: glib/gregex.c:384
 msgid "code overflow"
 msgstr "सङ्केत अतिप्रवाह"
 
-#: glib/gregex.c:390
+#: glib/gregex.c:388
 msgid "unrecognized character after (?<"
 msgstr "अज्ञात वर्ण पछि (?<"
 
-#: glib/gregex.c:393
+#: glib/gregex.c:391
 msgid "lookbehind assertion is not fixed length"
 msgstr ""
 
-#: glib/gregex.c:396
+#: glib/gregex.c:394
 #, fuzzy
 msgid "malformed number or name after (?("
 msgstr "विकृत संस्करण सङ्ख्या: %s"
 
-#: glib/gregex.c:399
+#: glib/gregex.c:397
 msgid "conditional group contains more than two branches"
 msgstr "ससर्त समूहले दुई भन्दा बढी शाखा समाविष्ट गर्दछ"
 
-#: glib/gregex.c:402
+#: glib/gregex.c:400
 msgid "assertion expected after (?("
 msgstr "(?( पछि दाबी अपेक्षित"
 
 #. translators: '(?R' and '(?[+-]digits' are both meant as (groups of)
 #. * sequences here, '(?-54' would be an example for the second group.
 #.
-#: glib/gregex.c:409
+#: glib/gregex.c:407
 #, fuzzy
 msgid "(?R or (?[+-]digits must be followed by )"
 msgstr "फाँट नाम `%.*s' विरामचिन्ह द्धारा साथ दिनु पर्छ"
 
-#: glib/gregex.c:412
+#: glib/gregex.c:410
 #, fuzzy
 msgid "unknown POSIX class name"
 msgstr "वर्ग नाम %s का लागि कुनै प्रकार छैन"
 
-#: glib/gregex.c:415
-#, fuzzy
+#: glib/gregex.c:413
 msgid "POSIX collating elements are not supported"
-msgstr "सांकेतिक सम्बन्ध समर्थन गरिएन"
+msgstr "POSIX कोल्याटिङ तत्वहरू समर्थित छैनन्"
 
-#: glib/gregex.c:418
+#: glib/gregex.c:416
 #, fuzzy
 msgid "character value in \\x{...} sequence is too large"
 msgstr "\\u.... मा क्यारेक्टर मान अनुक्रम धेरै ठूलो छ"
 
-#: glib/gregex.c:421
+#: glib/gregex.c:419
 msgid "invalid condition (?(0)"
 msgstr "अवैध अवस्था (?(0)"
 
-#: glib/gregex.c:424
+#: glib/gregex.c:422
 msgid "\\C not allowed in lookbehind assertion"
 msgstr ""
 
-#: glib/gregex.c:431
+#: glib/gregex.c:429
 msgid "escapes \\L, \\l, \\N{name}, \\U, and \\u are not supported"
 msgstr "escapes \\L,\\l, \\N{name}, \\U, र \\u समर्थित छैन"
 
-#: glib/gregex.c:434
+#: glib/gregex.c:432
 msgid "recursive call could loop indefinitely"
 msgstr ""
 
-#: glib/gregex.c:438
+#: glib/gregex.c:436
 msgid "unrecognized character after (?P"
 msgstr "अज्ञात वर्ण पछि (? पी"
 
-#: glib/gregex.c:441
+#: glib/gregex.c:439
 msgid "missing terminator in subpattern name"
 msgstr "उपपट्टिको नाममा छुटेको टर्मिनेटर"
 
-#: glib/gregex.c:444
+#: glib/gregex.c:442
 msgid "two named subpatterns have the same name"
 msgstr ""
 
-#: glib/gregex.c:447
+#: glib/gregex.c:445
 #, fuzzy
 msgid "malformed \\P or \\p sequence"
-msgstr "पà¥\8dलà¤\97à¤\87न"
+msgstr "à¤\9fà¥\8dयाब à¤ªà¤¿à¤¨ à¤\97रà¥\8dनà¥\81हà¥\8bसà¥\8d"
 
-#: glib/gregex.c:450
+#: glib/gregex.c:448
 msgid "unknown property name after \\P or \\p"
 msgstr ""
 
-#: glib/gregex.c:453
+#: glib/gregex.c:451
 msgid "subpattern name is too long (maximum 32 characters)"
 msgstr ""
 
-#: glib/gregex.c:456
+#: glib/gregex.c:454
 msgid "too many named subpatterns (maximum 10,000)"
 msgstr ""
 
-#: glib/gregex.c:459
+#: glib/gregex.c:457
 #, fuzzy
 msgid "octal value is greater than \\377"
 msgstr "अधिक्तम मान न्यूनतम मान भन्दा ठूलो हुनुपर्छ ।\n"
 
-#: glib/gregex.c:463
+#: glib/gregex.c:461
 #, fuzzy
 msgid "overran compiling workspace"
-msgstr ""
-"कम्पाइल गरेको बेलामा %s\n"
-"त्रुटि: %s"
+msgstr "कार्यस्थल"
 
-#: glib/gregex.c:467
+#: glib/gregex.c:465
 msgid "previously-checked referenced subpattern not found"
 msgstr ""
 
-#: glib/gregex.c:470
+#: glib/gregex.c:468
 msgid "DEFINE group contains more than one branch"
 msgstr "परिभाषित समूहले एक भन्दा बढी शाखा समाविष्ट गर्दछ"
 
-#: glib/gregex.c:473
+#: glib/gregex.c:471
 #, fuzzy
 msgid "inconsistent NEWLINE options"
-msgstr "नयाà¤\81 à¤ªà¤\99à¥\8dति"
+msgstr "परसà¥\8dपरबिरà¥\8bधि"
 
-#: glib/gregex.c:476
+#: glib/gregex.c:474
 msgid "\\g is not followed by a braced, angle-bracketed, or quoted name or number, or by a plain number"
 msgstr ""
 
-#: glib/gregex.c:480
+#: glib/gregex.c:478
 msgid "a numbered reference must not be zero"
 msgstr "एउटा क्रमाङ्कित सन्दर्भ शून्य हुनु हुदैन"
 
-#: glib/gregex.c:483
+#: glib/gregex.c:481
 msgid "an argument is not allowed for (*ACCEPT), (*FAIL), or (*COMMIT)"
 msgstr ""
 
-#: glib/gregex.c:486
+#: glib/gregex.c:484
 msgid "(*VERB) not recognized"
 msgstr "(*क्रिया) पहिचान गरिएको छैन"
 
-#: glib/gregex.c:489
+#: glib/gregex.c:487
 msgid "number is too big"
 msgstr "अङ्क निकै ठूलो"
 
-#: glib/gregex.c:492
+#: glib/gregex.c:490
 msgid "missing subpattern name after (?&"
 msgstr "(?& पछि उपबाँन्की नाम हराइरहेको छ"
 
-#: glib/gregex.c:495
+#: glib/gregex.c:493
 msgid "digit expected after (?+"
 msgstr "(?+ पछि अङ्क अपेक्षित"
 
-#: glib/gregex.c:498
+#: glib/gregex.c:496
 msgid "] is an invalid data character in JavaScript compatibility mode"
 msgstr ""
 
-#: glib/gregex.c:501
+#: glib/gregex.c:499
 msgid "different names for subpatterns of the same number are not allowed"
 msgstr "उस्तै नम्बरको उपबाँन्कीहरूका लागि फरक नामहरू अनुमति दिइएको छैन"
 
-#: glib/gregex.c:504
+#: glib/gregex.c:502
 msgid "(*MARK) must have an argument"
 msgstr "(* मार्क) तर्क हुनु पर्दछ"
 
-#: glib/gregex.c:507
+#: glib/gregex.c:505
 #, fuzzy
 msgid "\\c must be followed by an ASCII character"
 msgstr "मुल नोड पछि अवैध वर्ण “%c”"
 
-#: glib/gregex.c:510
+#: glib/gregex.c:508
 msgid "\\k is not followed by a braced, angle-bracketed, or quoted name"
 msgstr ""
 
-#: glib/gregex.c:513
-#, fuzzy
+#: glib/gregex.c:511
 msgid "\\N is not supported in a class"
-msgstr "वर्ग"
+msgstr "\\N एउटा वर्गमा समर्थित छैन"
 
-#: glib/gregex.c:516
+#: glib/gregex.c:514
 msgid "too many forward references"
 msgstr "अति धेरै अगाडीको सन्दर्भ"
 
-#: glib/gregex.c:519
+#: glib/gregex.c:517
 msgid "name is too long in (*MARK), (*PRUNE), (*SKIP), or (*THEN)"
 msgstr ""
 
-#: glib/gregex.c:522
+#: glib/gregex.c:520
 msgid "character value in \\u.... sequence is too large"
 msgstr "\\u.... मा क्यारेक्टर मान अनुक्रम धेरै ठूलो छ"
 
-#: glib/gregex.c:745 glib/gregex.c:1983
+#: glib/gregex.c:743 glib/gregex.c:1988
 #, fuzzy, c-format
 msgid "Error while matching regular expression %s: %s"
 msgstr "नियमित अभिव्यक्ति कम्पाइल गर्दा त्रुटि \"%s\" ।"
 
-#: glib/gregex.c:1316
+#: glib/gregex.c:1321
 msgid "PCRE library is compiled without UTF8 support"
 msgstr ""
 
-#: glib/gregex.c:1320
+#: glib/gregex.c:1325
 msgid "PCRE library is compiled without UTF8 properties support"
 msgstr ""
 
-#: glib/gregex.c:1328
+#: glib/gregex.c:1333
 msgid "PCRE library is compiled with incompatible options"
 msgstr ""
 
-#: glib/gregex.c:1357
+#: glib/gregex.c:1362
 #, fuzzy, c-format
 msgid "Error while optimizing regular expression %s: %s"
 msgstr "नियमित अभिव्यक्ति कम्पाइल गर्दा त्रुटि \"%s\" ।"
 
-#: glib/gregex.c:1437
+#: glib/gregex.c:1442
 #, fuzzy, c-format
 msgid "Error while compiling regular expression %s at char %d: %s"
 msgstr "लाइन %d क्यारेक्टर %d मा त्रुटि: %s"
 
-#: glib/gregex.c:2419
+#: glib/gregex.c:2427
 #, fuzzy
 msgid "hexadecimal digit or “}” expected"
 msgstr "(?+ पछि अङ्क अपेक्षित"
 
-#: glib/gregex.c:2435
+#: glib/gregex.c:2443
 #, fuzzy
 msgid "hexadecimal digit expected"
 msgstr "(?+ पछि अङ्क अपेक्षित"
 
-#: glib/gregex.c:2475
+#: glib/gregex.c:2483
 msgid "missing “<” in symbolic reference"
 msgstr "प्रतीकात्मक सन्दर्भमा \"<\" छुटेको छ"
 
-#: glib/gregex.c:2484
+#: glib/gregex.c:2492
 msgid "unfinished symbolic reference"
 msgstr "अधूरो प्रतीकात्मक सन्दर्भ"
 
-#: glib/gregex.c:2491
+#: glib/gregex.c:2499
 msgid "zero-length symbolic reference"
 msgstr "शून्य लम्बाइको सांकेतिक सन्दर्भ"
 
-#: glib/gregex.c:2502
+#: glib/gregex.c:2510
 msgid "digit expected"
 msgstr "अङ्क अपेक्षित"
 
-#: glib/gregex.c:2520
+#: glib/gregex.c:2528
 msgid "illegal symbolic reference"
 msgstr "अवैध प्रतीकात्मक सन्दर्भ"
 
-#: glib/gregex.c:2583
+#: glib/gregex.c:2591
 #, fuzzy
 msgid "stray final “\\”"
-msgstr "अन्तिम हो"
+msgstr "अन्तिम"
 
-#: glib/gregex.c:2587
+#: glib/gregex.c:2595
 msgid "unknown escape sequence"
 msgstr "अज्ञात इस्केप अनुक्रम"
 
-#: glib/gregex.c:2597
+#: glib/gregex.c:2605
 #, fuzzy, c-format
 msgid "Error while parsing replacement text “%s” at char %lu: %s"
 msgstr "लाइन %d क्यारेक्टर %d मा त्रुटि: %s"
 
-#: glib/gshell.c:94
+#: glib/gshell.c:96
 #, fuzzy
 #| msgid "Quoted text doesn't begin with a quotation mark"
 msgid "Quoted text doesn’t begin with a quotation mark"
 msgstr "उद्धरण गरिएको पाठ उद्धरण चिन्ह बाट सुरु हुँदैन"
 
-#: glib/gshell.c:184
+#: glib/gshell.c:186
 msgid "Unmatched quotation mark in command line or other shell-quoted text"
 msgstr "आदेश रेखामा वा अरू कवच-उद्धरण गरिएको पाठमा नमिलेको उद्धरण चिन्ह"
 
-#: glib/gshell.c:580
+#: glib/gshell.c:592
 #, fuzzy, c-format
 #| msgid "Text ended just after a '\\' character. (The text was '%s')"
 msgid "Text ended just after a “\\” character. (The text was “%s”)"
 msgstr "पाठ चाँही '\\' क्यारेक्टर पछि मात्र समाप्त भयो। (पाठ '%s' थियो)"
 
-#: glib/gshell.c:587
+#: glib/gshell.c:599
 #, fuzzy, 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 "%c का लागि मिल्ने उद्धरण फेला पर्नु अगाडि पाठ समाप्त भयो। (पाठ '%s' थियो)"
 
-#: glib/gshell.c:599
+#: glib/gshell.c:611
 msgid "Text was empty (or contained only whitespace)"
 msgstr "पाठ खाली थियो (वा सेतो खाली स्थान मात्र समावेश थियो)"
 
-#: glib/gspawn.c:318
+#: glib/gspawn.c:310
 #, c-format
 msgid "Failed to read data from child process (%s)"
 msgstr "शाखा प्रक्रिया (%s) बाट डेटा पढ्न असफल"
 
-#: glib/gspawn.c:465
+#: glib/gspawn.c:462
 #, fuzzy, c-format
 #| msgid "Unexpected error in select() reading data from a child process (%s)"
 msgid "Unexpected error in reading data from a child process (%s)"
 msgstr "शाखा प्रक्रियाबाट डेटा पढ्दा g_io_channel_win32_poll() अनपेक्षित त्रुटि"
 
-#: glib/gspawn.c:550
+#: glib/gspawn.c:547
 #, c-format
 msgid "Unexpected error in waitpid() (%s)"
 msgstr "waitpid() (%s) मा अनपेक्षित त्रुटि"
 
-#: glib/gspawn.c:1154 glib/gspawn-win32.c:1383
+#: glib/gspawn.c:1175 glib/gspawn-win32.c:1438
 #, c-format
 msgid "Child process exited with code %ld"
 msgstr "शाखा प्रक्रिया सङ्केत %ld सँग बाहिरियो"
 
-#: glib/gspawn.c:1162
+#: glib/gspawn.c:1183
 #, c-format
 msgid "Child process killed by signal %ld"
 msgstr "शाखा प्रक्रिया %ld सङ्केतद्वारा मारियो"
 
-#: glib/gspawn.c:1169
+#: glib/gspawn.c:1190
 #, c-format
 msgid "Child process stopped by signal %ld"
 msgstr "शाखा प्रक्रिया %ld सङ्केतद्वारा रोकियो"
 
-#: glib/gspawn.c:1176
+#: glib/gspawn.c:1197
 #, c-format
 msgid "Child process exited abnormally"
 msgstr "शाखा प्रक्रिया असामान्य तरिकाले अन्त्य भयो"
 
-#: glib/gspawn.c:1767 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
+#: glib/gspawn.c:1890 glib/gspawn-win32.c:353 glib/gspawn-win32.c:361
 #, c-format
 msgid "Failed to read from child pipe (%s)"
 msgstr "शाखा प्रक्रिया (%s)बाट पढ्न असफल"
 
-#: glib/gspawn.c:2069
+#: glib/gspawn.c:2253
 #, fuzzy, c-format
 #| msgid "Failed to execute child process \"%s\" (%s)"
 msgid "Failed to spawn child process “%s” (%s)"
-msgstr "शाखा प्रक्रिया \"%s\" कार्यान्वयन गर्न असफल भयो: "
+msgstr "शाखा प्रक्रिया (%s) कार्यान्वयन गर्न असफल"
 
-#: glib/gspawn.c:2186
+#: glib/gspawn.c:2370
 #, c-format
 msgid "Failed to fork (%s)"
 msgstr "(%s) फोर्क गर्न असफल"
 
-#: glib/gspawn.c:2346 glib/gspawn-win32.c:381
+#: glib/gspawn.c:2530 glib/gspawn-win32.c:384
 #, fuzzy, c-format
 #| msgid "Failed to change to directory '%s' (%s)"
 msgid "Failed to change to directory “%s” (%s)"
-msgstr "निरà¥\8dदà¥\87शिà¤\95ा \"%s\" à¤®à¤¾ à¤ªà¤°à¤¿à¤µà¤°à¥\8dतन à¤\97रà¥\8dन à¤\85सफल à¤­à¤¯à¥\8b%s"
+msgstr "समà¥\8dपरà¥\8dà¤\95à¤\95à¥\8b à¤\89पनाम à¤ªà¤°à¤¿à¤µà¤°à¥\8dतन à¤\97रà¥\8dन à¤\85सफल à¤­à¤¯à¥\8b:%s"
 
-#: glib/gspawn.c:2356
+#: glib/gspawn.c:2540
 #, fuzzy, c-format
 #| msgid "Failed to execute child process \"%s\" (%s)"
 msgid "Failed to execute child process “%s” (%s)"
-msgstr "शाखा प्रक्रिया \"%s\" कार्यान्वयन गर्न असफल भयो: "
+msgstr "शाखा प्रक्रिया (%s) कार्यान्वयन गर्न असफल"
 
-#: glib/gspawn.c:2366
-#, c-format
-msgid "Failed to redirect output or input of child process (%s)"
+#: glib/gspawn.c:2550
+#, fuzzy, c-format
+#| msgid "Failed to open file '%s': open() failed: %s"
+msgid "Failed to open file to remap file descriptor (%s)"
+msgstr "कार्य फाइल %s: %s fdopen() गर्न असफल"
+
+#: glib/gspawn.c:2558
+#, fuzzy, c-format
+#| msgid "Failed to redirect output or input of child process (%s)"
+msgid "Failed to duplicate file descriptor for child process (%s)"
 msgstr "शाखा प्रक्रिया (%s) को निर्गत वा आगत पुन:निर्देशिन गर्न असफल"
 
-#: glib/gspawn.c:2375
+#: glib/gspawn.c:2567
 #, c-format
 msgid "Failed to fork child process (%s)"
 msgstr "शाखा प्रक्रिया (%s) फोर्क गर्न असफल"
 
-#: glib/gspawn.c:2383
+#: glib/gspawn.c:2575
+#, fuzzy, c-format
+#| msgid "Failed to read data from child process (%s)"
+msgid "Failed to close file descriptor for child process (%s)"
+msgstr "शाखा प्रक्रिया (%s) बाट डेटा पढ्न असफल"
+
+#: glib/gspawn.c:2583
 #, fuzzy, c-format
 #| msgid "Unknown error executing child process \"%s\""
 msgid "Unknown error executing child process “%s”"
 msgstr "शाखा प्रक्रिया \"%s\" कार्यान्वयन गर्दा अज्ञात त्रुटि"
 
-#: glib/gspawn.c:2407
+#: glib/gspawn.c:2607
 #, c-format
 msgid "Failed to read enough data from child pid pipe (%s)"
 msgstr "शाखा पिड पाईप (%s) बाट प्रशस्त डेटाहरू पढ्न असफल"
 
-#: glib/gspawn-win32.c:294
+#: glib/gspawn-win32.c:297
 msgid "Failed to read data from child process"
 msgstr "शाखा प्रक्रियाबाट डेटा पढ्न असफल भयो"
 
-#: glib/gspawn-win32.c:311
-#, c-format
-msgid "Failed to create pipe for communicating with child process (%s)"
-msgstr "शाखा प्रक्रिया (%s)सँग कुराकानीका लागि पाइप सिर्जना गर्न असफल"
-
-#: glib/gspawn-win32.c:387 glib/gspawn-win32.c:392 glib/gspawn-win32.c:511
+#: glib/gspawn-win32.c:390 glib/gspawn-win32.c:395 glib/gspawn-win32.c:521
 #, c-format
 msgid "Failed to execute child process (%s)"
 msgstr "शाखा प्रक्रिया (%s) कार्यान्वयन गर्न असफल"
 
-#: glib/gspawn-win32.c:461
+#: glib/gspawn-win32.c:400
+#, fuzzy, c-format
+#| msgid "Failed to fork child process (%s)"
+msgid "Failed to dup() in child process (%s)"
+msgstr "शाखा प्रक्रिया (%s) कार्यान्वयन गर्न असफल"
+
+#: glib/gspawn-win32.c:471
 #, c-format
 msgid "Invalid program name: %s"
 msgstr "अवैध कार्यक्रम नाम : %s"
 
-#: glib/gspawn-win32.c:471 glib/gspawn-win32.c:757
+#: glib/gspawn-win32.c:481 glib/gspawn-win32.c:807
 #, c-format
 msgid "Invalid string in argument vector at %d: %s"
 msgstr "आर्गुमेन्ट भेक्टरको %d मा अवैध स्ट्रीङ: %s"
 
-#: glib/gspawn-win32.c:482 glib/gspawn-win32.c:772
+#: glib/gspawn-win32.c:492 glib/gspawn-win32.c:823
 #, c-format
 msgid "Invalid string in environment: %s"
 msgstr "वातावरणमा अवैध स्ट्रीङ: %s"
 
-#: glib/gspawn-win32.c:753
+#: glib/gspawn-win32.c:803
 #, c-format
 msgid "Invalid working directory: %s"
 msgstr "अवैध कार्य डाइरेक्टरी : %s"
 
-#: glib/gspawn-win32.c:815
+#: glib/gspawn-win32.c:868
 #, c-format
 msgid "Failed to execute helper program (%s)"
 msgstr "मद्दत गर्ने कार्यक्रम कार्यान्वयन गर्न असफल (%s)"
 
-#: glib/gspawn-win32.c:1042
+#: glib/gspawn-win32.c:1096
 msgid "Unexpected error in g_io_channel_win32_poll() reading data from a child process"
 msgstr "शाखा प्रक्रियाबाट डेटा पढ्दा g_io_channel_win32_poll() अनपेक्षित त्रुटि"
 
-#: glib/gstrfuncs.c:3338 glib/gstrfuncs.c:3440
-#, fuzzy
+#: glib/gstrfuncs.c:3351 glib/gstrfuncs.c:3453
 msgid "Empty string is not a number"
-msgstr "PIM सङ्ख्या वा खाली हुनुपर्दछ ।"
+msgstr "खाली स्ट्रिङ सङ्ख्या होइन"
 
-#: glib/gstrfuncs.c:3362
-#, fuzzy, c-format
+#: glib/gstrfuncs.c:3375
+#, c-format
 msgid "“%s” is not a signed number"
-msgstr "S/MIME साइन"
+msgstr "\"%s\" चिन्ह लगाइएको सङ्ख्या होइन"
 
-#: glib/gstrfuncs.c:3372 glib/gstrfuncs.c:3476
+#: glib/gstrfuncs.c:3385 glib/gstrfuncs.c:3489
 #, fuzzy, c-format
 msgid "Number “%s” is out of bounds [%s, %s]"
-msgstr "%s अनुमति दिएको दायरा भन्दा बाहिर छ"
+msgstr "मुद्रणयन्त्र\"%s\" मा विकासकर्ता छैन ।."
 
-#: glib/gstrfuncs.c:3466
-#, fuzzy, c-format
+#: glib/gstrfuncs.c:3479
+#, c-format
 msgid "“%s” is not an unsigned number"
-msgstr "%s सङ्ख्या होइन "
+msgstr "\"%s\" चिन्ह रहित सङ्ख्या होइन"
 
 #: glib/guri.c:315
-#, fuzzy, no-c-format
-#| msgid " (invalid encoding)"
+#, no-c-format
 msgid "Invalid %-encoding in URI"
-msgstr " (अवैध सङ्केतन)"
+msgstr "URI मा अवैध %-सङ्केतन"
 
 #: glib/guri.c:332
 #, fuzzy
 msgid "Illegal character in URI"
-msgstr "अवैध निर्देशन"
+msgstr "URI"
 
 #: glib/guri.c:366
 #, fuzzy
@@ -5832,7 +5948,7 @@ msgstr "जहाँ संख्यात्मक नभएको वर्ण
 #: glib/guri.c:546
 #, fuzzy, c-format
 msgid "Invalid IPv6 address ‘%.*s’ in URI"
-msgstr "URI “%s” अवैध"
+msgstr "अमान्य \"%s\" URI:%s"
 
 #: glib/guri.c:601
 #, c-format
@@ -5845,14 +5961,14 @@ msgid "Illegal internationalized hostname ‘%.*s’ in URI"
 msgstr ""
 
 #: glib/guri.c:645 glib/guri.c:657
-#, fuzzy, c-format
+#, c-format
 msgid "Could not parse port ‘%.*s’ in URI"
-msgstr "URI \"%s\" पार्स गर्न सकिएन"
+msgstr "यूआरआईमा पोर्ट '%.*s' पद वर्णन गर्न सकेन"
 
 #: glib/guri.c:664
 #, fuzzy, c-format
 msgid "Port ‘%.*s’ in URI is out of range"
-msgstr "%s अनुमति दिएको दायरा भन्दा बाहिर छ"
+msgstr "यूआरआईमा पोर्ट '%.*s' पद वर्णन गर्न सकेन"
 
 #: glib/guri.c:1224 glib/guri.c:1288
 #, c-format
@@ -5864,219 +5980,192 @@ msgstr "'%s' यूआरआई एउटा निश्चित यूआर
 msgid "URI ‘%s’ has no host component"
 msgstr ""
 
-#: glib/guri.c:1435
+#: glib/guri.c:1460
 #, fuzzy
 msgid "URI is not absolute, and no base URI was provided"
 msgstr "'%s' यूआरआई एउटा निश्चित यूआरआई होइन"
 
-#: glib/guri.c:2209
+#: glib/guri.c:2238
 #, fuzzy
 msgid "Missing ‘=’ and parameter value"
-msgstr "à¤\95à¥\8dवà¥\87रà¥\80 à¤\95ारà¥\8dयानà¥\8dवयन à¤\97रà¥\8dन à¤ªà¤°à¤¿à¤®à¤¿à¤¤à¤¿à¤¹à¤°à¥\82 à¤¹à¤°à¤¾à¤\87रहà¥\87à¤\95ा à¤\9bनà¥\8d à¥¤"
+msgstr "परामिति"
 
-#: glib/gutf8.c:817
+#: glib/gutf8.c:832
 msgid "Failed to allocate memory"
 msgstr "स्मृति निर्धारण गर्न अक्षम"
 
-#: glib/gutf8.c:950
+#: glib/gutf8.c:965
 msgid "Character out of range for UTF-8"
 msgstr "UTF-8 का लागि क्यारेक्टर दायरा भन्दा बाहिर छ"
 
-#: glib/gutf8.c:1051 glib/gutf8.c:1060 glib/gutf8.c:1190 glib/gutf8.c:1199
-#: glib/gutf8.c:1338 glib/gutf8.c:1435
+#: glib/gutf8.c:1067 glib/gutf8.c:1076 glib/gutf8.c:1206 glib/gutf8.c:1215 glib/gutf8.c:1354 glib/gutf8.c:1451
 msgid "Invalid sequence in conversion input"
 msgstr "रूपान्तरण आगतमा अवैध अनुक्रम"
 
-#: glib/gutf8.c:1349 glib/gutf8.c:1446
+#: glib/gutf8.c:1365 glib/gutf8.c:1462
 msgid "Character out of range for UTF-16"
 msgstr "UTF-16 का लागि क्यारेक्टर दायरा भन्दा बाहिर छ"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2767
+#: glib/gutils.c:2849
 #, c-format
-#| msgid "%.1f kB"
 msgid "%.1f kB"
 msgstr "%.1f kB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2769
+#: glib/gutils.c:2851
 #, c-format
-#| msgid "%.1f MB"
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2771
+#: glib/gutils.c:2853
 #, c-format
-#| msgid "%.1f GB"
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2773
+#: glib/gutils.c:2855
 #, c-format
-#| msgid "%.1f TB"
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2775
+#: glib/gutils.c:2857
 #, c-format
-#| msgid "%.1f PB"
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2777
+#: glib/gutils.c:2859
 #, c-format
-#| msgid "%.1f EB"
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2781
+#: glib/gutils.c:2863
 #, c-format
-#| msgid "%.1f KiB"
 msgid "%.1f KiB"
 msgstr "%.1f KiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2783
+#: glib/gutils.c:2865
 #, c-format
-#| msgid "%.1f MiB"
 msgid "%.1f MiB"
 msgstr "%.1f MiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2785
+#: glib/gutils.c:2867
 #, c-format
-#| msgid "%.1f GiB"
 msgid "%.1f GiB"
 msgstr "%.1f GiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2787
+#: glib/gutils.c:2869
 #, c-format
-#| msgid "%.1f TiB"
 msgid "%.1f TiB"
 msgstr "%.1f TiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2789
+#: glib/gutils.c:2871
 #, c-format
-#| msgid "%.1f PiB"
 msgid "%.1f PiB"
 msgstr "%.1f PiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2791
+#: glib/gutils.c:2873
 #, c-format
-#| msgid "%.1f EiB"
 msgid "%.1f EiB"
 msgstr "%.1f EiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2795
+#: glib/gutils.c:2877
 #, c-format
-#| msgid "%.1f kB"
 msgid "%.1f kb"
 msgstr "%.1f kb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2797
+#: glib/gutils.c:2879
 #, c-format
-#| msgid "%.1f MB"
 msgid "%.1f Mb"
 msgstr "%.1f Mb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2799
+#: glib/gutils.c:2881
 #, c-format
-#| msgid "%.1f GB"
 msgid "%.1f Gb"
 msgstr "%.1f Gb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2801
+#: glib/gutils.c:2883
 #, c-format
-#| msgid "%.1f TB"
 msgid "%.1f Tb"
 msgstr "%.1f Tb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2803
+#: glib/gutils.c:2885
 #, c-format
-#| msgid "%.1f PB"
 msgid "%.1f Pb"
 msgstr "%.1f Pb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2805
+#: glib/gutils.c:2887
 #, c-format
-#| msgid "%.1f EB"
 msgid "%.1f Eb"
 msgstr "%.1f Eb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2809
+#: glib/gutils.c:2891
 #, c-format
-#| msgid "%.1f KiB"
 msgid "%.1f Kib"
 msgstr "%.1f Kib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2811
+#: glib/gutils.c:2893
 #, c-format
-#| msgid "%.1f MiB"
 msgid "%.1f Mib"
 msgstr "%.1f Mib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2813
+#: glib/gutils.c:2895
 #, c-format
-#| msgid "%.1f GiB"
 msgid "%.1f Gib"
 msgstr "%.1f Gib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2815
+#: glib/gutils.c:2897
 #, c-format
-#| msgid "%.1f TiB"
 msgid "%.1f Tib"
 msgstr "%.1f Tib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2817
+#: glib/gutils.c:2899
 #, c-format
-#| msgid "%.1f PiB"
 msgid "%.1f Pib"
 msgstr "%.1f Pib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2819
+#: glib/gutils.c:2901
 #, c-format
-#| msgid "%.1f EiB"
 msgid "%.1f Eib"
 msgstr "%.1f Eib"
 
-#: glib/gutils.c:2853 glib/gutils.c:2970
+#: glib/gutils.c:2935 glib/gutils.c:3052
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
 msgstr[0] "%u बाइट"
 msgstr[1] "%u बाइट"
 
-#: glib/gutils.c:2857
+#: glib/gutils.c:2939
 #, c-format
-#| msgid "%u byte"
-#| msgid_plural "%u bytes"
 msgid "%u bit"
 msgid_plural "%u bits"
 msgstr[0] "%u विट"
 msgstr[1] "%u बिटहरू"
 
 #. Translators: the %s in "%s bytes" will always be replaced by a number.
-#: glib/gutils.c:2924
+#: glib/gutils.c:3006
 #, c-format
 msgid "%s byte"
 msgid_plural "%s bytes"
@@ -6084,7 +6173,7 @@ msgstr[0] "%s बाइट"
 msgstr[1] "%s बाइट"
 
 #. Translators: the %s in "%s bits" will always be replaced by a number.
-#: glib/gutils.c:2929
+#: glib/gutils.c:3011
 #, c-format
 msgid "%s bit"
 msgid_plural "%s bits"
@@ -6096,32 +6185,32 @@ msgstr[1] "%s विटहरू"
 #. * compatibility.  Users will not see this string unless a program is using this deprecated function.
 #. * Please translate as literally as possible.
 #.
-#: glib/gutils.c:2983
+#: glib/gutils.c:3065
 #, c-format
 msgid "%.1f KB"
 msgstr "%.1f KB"
 
-#: glib/gutils.c:2988
+#: glib/gutils.c:3070
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
-#: glib/gutils.c:2993
+#: glib/gutils.c:3075
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
-#: glib/gutils.c:2998
+#: glib/gutils.c:3080
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
-#: glib/gutils.c:3003
+#: glib/gutils.c:3085
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
-#: glib/gutils.c:3008
+#: glib/gutils.c:3090
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
@@ -6218,8 +6307,12 @@ msgstr "%.1f EB"
 #~ msgid "Invalid UTF-8 sequence in input"
 #~ msgstr "रूपान्तरण आगतमा अवैध अनुक्रम"
 
-#~ msgid "Character '%s' is not valid at the start of an entity name; the & character begins an entity; if this ampersand isn't supposed to be an entity, escape it as &amp;"
-#~ msgstr "अस्तित्व नामको सुरुमा क्यारेक्टर '%s' वैध हुँदैन ; & क्यारेक्टरले एउटा अस्तित्वा सुरु गर्दछ ; यदि यो एम्परस्यान्ड भएमा एउटा अस्तित्वको रूपमा मानिँदैन,यसलाई &amp; को रूपमा परित्याग गर्नुहोस्"
+#~ msgid ""
+#~ "Character '%s' is not valid at the start of an entity name; the & character begins an entity; if this ampersand "
+#~ "isn't supposed to be an entity, escape it as &amp;"
+#~ msgstr ""
+#~ "अस्तित्व नामको सुरुमा क्यारेक्टर '%s' वैध हुँदैन ; & क्यारेक्टरले एउटा अस्तित्वा सुरु गर्दछ ; यदि यो एम्परस्यान्ड भएमा एउटा अस्तित्वको "
+#~ "रूपमा मानिँदैन,यसलाई &amp; को रूपमा परित्याग गर्नुहोस्"
 
 #~ msgid "Empty character reference; should include a digit such as &#454;"
 #~ msgstr "खाली क्यारेक्टर सन्दर्भ, &#454 जस्तो अङ्क समाहित हुनुपर्छ"
index 12aa140..7c75eb3 100644 (file)
--- a/po/pl.po
+++ b/po/pl.po
@@ -13,8 +13,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: glib\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/glib/issues\n"
-"POT-Creation-Date: 2022-01-26 14:31+0000\n"
-"PO-Revision-Date: 2022-01-29 15:05+0100\n"
+"POT-Creation-Date: 2022-03-22 15:19+0000\n"
+"PO-Revision-Date: 2022-03-22 17:25+0100\n"
 "Last-Translator: Piotr Drąg <piotrdrag@gmail.com>\n"
 "Language-Team: Polish <community-poland@mozilla.org>\n"
 "Language: pl\n"
@@ -24,6 +24,16 @@ msgstr ""
 "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
 "|| n%100>=20) ? 1 : 2);\n"
 
+#: gio/gappinfo.c:333
+msgid "Setting default applications not supported yet"
+msgstr "Ustawianie domyślnych programów nie jest jeszcze obsługiwane"
+
+#: gio/gappinfo.c:366
+msgid "Setting application as last used for type not supported yet"
+msgstr ""
+"Ustawianie programu jako ostatnio używanego dla danego typu nie jest jeszcze "
+"obsługiwane"
+
 #: gio/gapplication.c:500
 msgid "GApplication options"
 msgstr "Opcje GApplication"
@@ -45,7 +55,7 @@ msgid "Replace the running instance"
 msgstr "Zastępuje działające wystąpienie"
 
 #: gio/gapplication-tool.c:45 gio/gapplication-tool.c:46 gio/gio-tool.c:227
-#: gio/gresource-tool.c:494 gio/gsettings-tool.c:572
+#: gio/gresource-tool.c:494 gio/gsettings-tool.c:584
 msgid "Print help"
 msgstr "Wyświetla pomoc"
 
@@ -57,7 +67,7 @@ msgstr "[POLECENIE]"
 msgid "Print version"
 msgstr "Wyświetla wersję"
 
-#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:578
+#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:590
 msgid "Print version information and exit"
 msgstr "Wyświetla informację o wersji i kończy działanie"
 
@@ -122,8 +132,8 @@ msgstr ""
 "Identyfikator programu w formacie usługi D-Bus (np. org.przykład."
 "przeglądarka)"
 
-#: gio/gapplication-tool.c:74 gio/glib-compile-resources.c:738
-#: gio/glib-compile-resources.c:744 gio/glib-compile-resources.c:772
+#: gio/gapplication-tool.c:74 gio/glib-compile-resources.c:820
+#: gio/glib-compile-resources.c:826 gio/glib-compile-resources.c:855
 #: gio/gresource-tool.c:501 gio/gresource-tool.c:567
 msgid "FILE"
 msgstr "PLIK"
@@ -149,7 +159,7 @@ msgstr "PARAMETR"
 msgid "Optional parameter to the action invocation, in GVariant format"
 msgstr "Opcjonalny parametr do wywołania działania w formacie GVariant"
 
-#: gio/gapplication-tool.c:98 gio/gresource-tool.c:532 gio/gsettings-tool.c:664
+#: gio/gapplication-tool.c:98 gio/gresource-tool.c:532 gio/gsettings-tool.c:676
 #, c-format
 msgid ""
 "Unknown command %s\n"
@@ -163,7 +173,7 @@ msgid "Usage:\n"
 msgstr "Użycie:\n"
 
 #: gio/gapplication-tool.c:116 gio/gresource-tool.c:557
-#: gio/gsettings-tool.c:699
+#: gio/gsettings-tool.c:711
 msgid "Arguments:\n"
 msgstr "Parametry:\n"
 
@@ -286,7 +296,7 @@ msgstr "Potok jest już zamknięty"
 msgid "Truncate not supported on base stream"
 msgstr "Skracanie nie jest dozwolone na podstawowym potoku"
 
-#: gio/gcancellable.c:319 gio/gdbusconnection.c:1873 gio/gdbusprivate.c:1416
+#: gio/gcancellable.c:319 gio/gdbusconnection.c:1857 gio/gdbusprivate.c:1418
 #: gio/gsimpleasyncresult.c:871 gio/gsimpleasyncresult.c:897
 #, c-format
 msgid "Operation was cancelled"
@@ -307,7 +317,7 @@ msgstr "Brak wystarczającej ilości miejsca w miejscu docelowym"
 #: gio/gcharsetconverter.c:342 gio/gdatainputstream.c:848
 #: gio/gdatainputstream.c:1266 glib/gconvert.c:449 glib/gconvert.c:879
 #: glib/giochannel.c:1573 glib/giochannel.c:1615 glib/giochannel.c:2470
-#: glib/gutf8.c:875 glib/gutf8.c:1328
+#: glib/gutf8.c:890 glib/gutf8.c:1344
 msgid "Invalid byte sequence in conversion input"
 msgstr "Nieprawidłowa sekwencja bajtów na wejściu konwersji"
 
@@ -317,7 +327,7 @@ msgstr "Nieprawidłowa sekwencja bajtów na wejściu konwersji"
 msgid "Error during conversion: %s"
 msgstr "Błąd podczas konwersji: %s"
 
-#: gio/gcharsetconverter.c:445 gio/gsocket.c:1143
+#: gio/gcharsetconverter.c:445 gio/gsocket.c:1147
 msgid "Cancellable initialization not supported"
 msgstr "Zainicjowanie, które można anulować nie jest obsługiwane"
 
@@ -331,38 +341,38 @@ msgstr "Konwersja z zestawu znaków „%s” na zestaw „%s” nie jest obsłu
 msgid "Could not open converter from “%s” to “%s”"
 msgstr "Nie można otworzyć konwertera z „%s” na „%s”"
 
-#: gio/gcontenttype.c:454
+#: gio/gcontenttype.c:470
 #, c-format
 msgid "%s type"
 msgstr "Typ %s"
 
-#: gio/gcontenttype-win32.c:192
+#: gio/gcontenttype-win32.c:196
 msgid "Unknown type"
 msgstr "Nieznany typ"
 
-#: gio/gcontenttype-win32.c:194
+#: gio/gcontenttype-win32.c:198
 #, c-format
 msgid "%s filetype"
 msgstr "Typ pliku %s"
 
-#: gio/gcredentials.c:323
+#: gio/gcredentials.c:335
 msgid "GCredentials contains invalid data"
 msgstr "GCredentials zawiera nieprawidłowe dane"
 
-#: gio/gcredentials.c:383 gio/gcredentials.c:667
+#: gio/gcredentials.c:395 gio/gcredentials.c:686
 msgid "GCredentials is not implemented on this OS"
 msgstr "GCredentials nie jest zaimplementowane w tym systemie operacyjnym"
 
-#: gio/gcredentials.c:538 gio/gcredentials.c:556
+#: gio/gcredentials.c:550 gio/gcredentials.c:568
 msgid "There is no GCredentials support for your platform"
 msgstr "Platforma nie obsługuje GCredentials"
 
-#: gio/gcredentials.c:607
+#: gio/gcredentials.c:626
 msgid "GCredentials does not contain a process ID on this OS"
 msgstr ""
 "GCredentials nie zawiera identyfikatora procesu w tym systemie operacyjnym"
 
-#: gio/gcredentials.c:661
+#: gio/gcredentials.c:680
 msgid "Credentials spoofing is not possible on this OS"
 msgstr ""
 "Fałszowanie danych uwierzytelniających nie jest możliwe w tym systemie "
@@ -372,17 +382,17 @@ msgstr ""
 msgid "Unexpected early end-of-stream"
 msgstr "Nieoczekiwany, przedwczesny koniec potoku"
 
-#: gio/gdbusaddress.c:159 gio/gdbusaddress.c:233 gio/gdbusaddress.c:322
+#: gio/gdbusaddress.c:162 gio/gdbusaddress.c:236 gio/gdbusaddress.c:325
 #, c-format
 msgid "Unsupported key “%s” in address entry “%s”"
 msgstr "Nieobsługiwany klucz „%s” we wpisie adresu „%s”"
 
-#: gio/gdbusaddress.c:172
+#: gio/gdbusaddress.c:175
 #, c-format
 msgid "Meaningless key/value pair combination in address entry “%s”"
 msgstr "Para klucz/wartość we wpisie adresu „%s” nie ma znaczenia"
 
-#: gio/gdbusaddress.c:181
+#: gio/gdbusaddress.c:184
 #, c-format
 msgid ""
 "Address “%s” is invalid (need exactly one of path, dir, tmpdir, or abstract "
@@ -391,28 +401,28 @@ msgstr ""
 "Adres „%s” jest nieprawidłowy (wymaga dokładnie jednej ścieżki, katalogu, "
 "katalogu tymczasowego lub kluczy abstrakcyjnych)"
 
-#: gio/gdbusaddress.c:248 gio/gdbusaddress.c:259 gio/gdbusaddress.c:274
-#: gio/gdbusaddress.c:337 gio/gdbusaddress.c:348
+#: gio/gdbusaddress.c:251 gio/gdbusaddress.c:262 gio/gdbusaddress.c:277
+#: gio/gdbusaddress.c:340 gio/gdbusaddress.c:351
 #, c-format
 msgid "Error in address “%s” — the “%s” attribute is malformed"
 msgstr "Błąd w adresie „%s” — atrybut „%s” jest błędnie sformatowany"
 
-#: gio/gdbusaddress.c:418 gio/gdbusaddress.c:682
+#: gio/gdbusaddress.c:421 gio/gdbusaddress.c:680
 #, c-format
 msgid "Unknown or unsupported transport “%s” for address “%s”"
 msgstr "Nieznany lub nieobsługiwany transport „%s” dla adresu „%s”"
 
-#: gio/gdbusaddress.c:462
+#: gio/gdbusaddress.c:465
 #, c-format
 msgid "Address element “%s” does not contain a colon (:)"
 msgstr "Element adresu „%s” nie zawiera dwukropka (:)"
 
-#: gio/gdbusaddress.c:471
+#: gio/gdbusaddress.c:474
 #, c-format
 msgid "Transport name in address element “%s” must not be empty"
 msgstr "Nazwa transportu w elemencie adresu „%s” nie może być pusta"
 
-#: gio/gdbusaddress.c:492
+#: gio/gdbusaddress.c:495
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” does not contain an equal "
@@ -421,7 +431,7 @@ msgstr ""
 "Para klucz/wartość %d, „%s” w elemencie adresu „%s” nie zawiera znaku "
 "równości"
 
-#: gio/gdbusaddress.c:503
+#: gio/gdbusaddress.c:506
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” must not have an empty key"
@@ -429,7 +439,7 @@ msgstr ""
 "Para klucz/wartość %d, „%s” w elemencie adresu „%s” nie może mieć pustego "
 "klucza"
 
-#: gio/gdbusaddress.c:517
+#: gio/gdbusaddress.c:520
 #, c-format
 msgid ""
 "Error unescaping key or value in Key/Value pair %d, “%s”, in address element "
@@ -438,7 +448,7 @@ msgstr ""
 "Błąd podczas usuwania znaku sterującego klucza lub wartości w parze klucz/"
 "wartość %d, „%s” w elemencie adresu „%s”"
 
-#: gio/gdbusaddress.c:589
+#: gio/gdbusaddress.c:588
 #, c-format
 msgid ""
 "Error in address “%s” — the unix transport requires exactly one of the keys "
@@ -447,84 +457,85 @@ msgstr ""
 "Błąd w adresie „%s” — transport systemu UNIX wymaga ustawienia dokładnie "
 "jednego z kluczy „path” lub „abstract”"
 
-#: gio/gdbusaddress.c:625
+#: gio/gdbusaddress.c:623
 #, c-format
 msgid "Error in address “%s” — the host attribute is missing or malformed"
 msgstr ""
 "Błąd w adresie „%s” — brak atrybutu komputera lub jest błędnie sformatowany"
 
-#: gio/gdbusaddress.c:639
+#: gio/gdbusaddress.c:637
 #, c-format
 msgid "Error in address “%s” — the port attribute is missing or malformed"
 msgstr ""
 "Błąd w adresie „%s” — brak atrybutu portu lub jest błędnie sformatowany"
 
-#: gio/gdbusaddress.c:653
+#: gio/gdbusaddress.c:651
 #, c-format
 msgid "Error in address “%s” — the noncefile attribute is missing or malformed"
 msgstr ""
 "Błąd w adresie „%s” — brak atrybutu pliku nonce lub jest błędnie sformatowany"
 
-#: gio/gdbusaddress.c:674
+#: gio/gdbusaddress.c:672
 msgid "Error auto-launching: "
 msgstr "Błąd podczas automatycznego uruchamiania: "
 
-#: gio/gdbusaddress.c:727
+#: gio/gdbusaddress.c:725
 #, c-format
 msgid "Error opening nonce file “%s”: %s"
 msgstr "Błąd podczas otwierania pliku nonce „%s”: %s"
 
-#: gio/gdbusaddress.c:746
+#: gio/gdbusaddress.c:744
 #, c-format
 msgid "Error reading from nonce file “%s”: %s"
 msgstr "Błąd podczas odczytywania pliku nonce „%s”: %s"
 
-#: gio/gdbusaddress.c:755
+#: gio/gdbusaddress.c:753
 #, c-format
 msgid "Error reading from nonce file “%s”, expected 16 bytes, got %d"
 msgstr ""
 "Błąd podczas odczytywania pliku nonce „%s”, oczekiwano 16 bajtów, otrzymano "
 "%d"
 
-#: gio/gdbusaddress.c:773
+#: gio/gdbusaddress.c:771
 #, c-format
 msgid "Error writing contents of nonce file “%s” to stream:"
 msgstr "Błąd podczas zapisywania zawartości pliku nonce „%s” do potoku:"
 
-#: gio/gdbusaddress.c:988
+#: gio/gdbusaddress.c:986
 msgid "The given address is empty"
 msgstr "Podany adres jest pusty"
 
-#: gio/gdbusaddress.c:1101
+#: gio/gdbusaddress.c:1099
 #, c-format
-msgid "Cannot spawn a message bus when setuid"
-msgstr "Nie można wywołać magistrali komunikatów, kiedy używane jest setuid"
+msgid "Cannot spawn a message bus when AT_SECURE is set"
+msgstr ""
+"Nie można wywołać magistrali komunikatów, kiedy AT_SECURE jest ustawione"
 
-#: gio/gdbusaddress.c:1108
+#: gio/gdbusaddress.c:1106
 msgid "Cannot spawn a message bus without a machine-id: "
 msgstr ""
 "Nie można wywołać magistrali komunikatów bez identyfikatora komputera: "
 
-#: gio/gdbusaddress.c:1115
+#: gio/gdbusaddress.c:1113
 #, c-format
 msgid "Cannot autolaunch D-Bus without X11 $DISPLAY"
 msgstr ""
 "Nie można automatycznie uruchomić usługi D-Bus bez zmiennej $DISPLAY "
 "środowiska X11"
 
-#: gio/gdbusaddress.c:1157
+#: gio/gdbusaddress.c:1155
 #, c-format
 msgid "Error spawning command line “%s”: "
 msgstr "Błąd podczas wywoływania wiersza poleceń „%s”: "
 
-#: gio/gdbusaddress.c:1226
+#: gio/gdbusaddress.c:1224
 #, c-format
 msgid "Cannot determine session bus address (not implemented for this OS)"
 msgstr ""
 "Nie można ustalić adresu magistrali sesji (nie jest zaimplementowane dla "
 "tego systemu operacyjnego)"
 
-#: gio/gdbusaddress.c:1375 gio/gdbusconnection.c:7334
+#: gio/gdbusaddress.c:1373 gio/gdbusconnection.c:7318
 #, c-format
 msgid ""
 "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
@@ -533,7 +544,7 @@ msgstr ""
 "Nie można ustalić adresu magistrali ze zmiennej środowiskowej "
 "DBUS_STARTER_BUS_TYPE — nieznana wartość „%s”"
 
-#: gio/gdbusaddress.c:1384 gio/gdbusconnection.c:7343
+#: gio/gdbusaddress.c:1382 gio/gdbusconnection.c:7327
 msgid ""
 "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
 "variable is not set"
@@ -541,7 +552,7 @@ msgstr ""
 "Nie można ustalić adresu magistrali, ponieważ nie ustawiono zmiennej "
 "środowiskowej DBUS_STARTER_BUS_TYPE"
 
-#: gio/gdbusaddress.c:1394
+#: gio/gdbusaddress.c:1392
 #, c-format
 msgid "Unknown bus type %d"
 msgstr "Nieznany typ magistrali %d"
@@ -571,12 +582,12 @@ msgstr "Identyfikatory użytkownika muszą być takie same dla partnera i serwe
 msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
 msgstr "Anulowano przez GDBusAuthObserver::authorize-authenticated-peer"
 
-#: gio/gdbusauthmechanismsha1.c:298
+#: gio/gdbusauthmechanismsha1.c:300
 #, c-format
 msgid "Error when getting information for directory “%s”: %s"
 msgstr "Błąd podczas pobierania informacji o katalogu „%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:313
+#: gio/gdbusauthmechanismsha1.c:315
 #, c-format
 msgid ""
 "Permissions on directory “%s” are malformed. Expected mode 0700, got 0%o"
@@ -584,33 +595,33 @@ msgstr ""
 "Uprawnienia katalogu „%s” są błędnie sformatowane. Oczekiwano trybu 0700, "
 "otrzymano 0%o"
 
-#: gio/gdbusauthmechanismsha1.c:346 gio/gdbusauthmechanismsha1.c:357
+#: gio/gdbusauthmechanismsha1.c:348 gio/gdbusauthmechanismsha1.c:359
 #, c-format
 msgid "Error creating directory “%s”: %s"
 msgstr "Błąd podczas tworzenia katalogu „%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:359 gio/gfile.c:1062 gio/gfile.c:1300
-#: gio/gfile.c:1438 gio/gfile.c:1676 gio/gfile.c:1731 gio/gfile.c:1789
-#: gio/gfile.c:1873 gio/gfile.c:1930 gio/gfile.c:1994 gio/gfile.c:2049
-#: gio/gfile.c:3754 gio/gfile.c:3809 gio/gfile.c:4102 gio/gfile.c:4572
-#: gio/gfile.c:4983 gio/gfile.c:5068 gio/gfile.c:5158 gio/gfile.c:5255
-#: gio/gfile.c:5342 gio/gfile.c:5443 gio/gfile.c:8153 gio/gfile.c:8243
-#: gio/gfile.c:8327 gio/win32/gwinhttpfile.c:453
+#: gio/gdbusauthmechanismsha1.c:361 gio/gfile.c:1080 gio/gfile.c:1318
+#: gio/gfile.c:1456 gio/gfile.c:1694 gio/gfile.c:1749 gio/gfile.c:1807
+#: gio/gfile.c:1891 gio/gfile.c:1948 gio/gfile.c:2012 gio/gfile.c:2067
+#: gio/gfile.c:3772 gio/gfile.c:3912 gio/gfile.c:4205 gio/gfile.c:4675
+#: gio/gfile.c:5086 gio/gfile.c:5171 gio/gfile.c:5261 gio/gfile.c:5358
+#: gio/gfile.c:5445 gio/gfile.c:5546 gio/gfile.c:8375 gio/gfile.c:8465
+#: gio/gfile.c:8549 gio/win32/gwinhttpfile.c:453
 msgid "Operation not supported"
 msgstr "Działanie nie jest obsługiwane"
 
-#: gio/gdbusauthmechanismsha1.c:402
+#: gio/gdbusauthmechanismsha1.c:404
 #, c-format
 msgid "Error opening keyring “%s” for reading: "
 msgstr "Błąd podczas otwierania bazy kluczy „%s” do odczytania: "
 
-#: gio/gdbusauthmechanismsha1.c:425 gio/gdbusauthmechanismsha1.c:747
+#: gio/gdbusauthmechanismsha1.c:427 gio/gdbusauthmechanismsha1.c:769
 #, c-format
 msgid "Line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr ""
 "%d. wiersz bazy kluczy w „%s” z zawartością „%s” jest błędnie sformatowany"
 
-#: gio/gdbusauthmechanismsha1.c:439 gio/gdbusauthmechanismsha1.c:761
+#: gio/gdbusauthmechanismsha1.c:441 gio/gdbusauthmechanismsha1.c:783
 #, c-format
 msgid ""
 "First token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -618,7 +629,7 @@ msgstr ""
 "Pierwszy token %d. wiersza bazy kluczy w „%s” z zawartością „%s” jest "
 "błędnie sformatowany"
 
-#: gio/gdbusauthmechanismsha1.c:453 gio/gdbusauthmechanismsha1.c:775
+#: gio/gdbusauthmechanismsha1.c:455 gio/gdbusauthmechanismsha1.c:797
 #, c-format
 msgid ""
 "Second token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -626,161 +637,161 @@ msgstr ""
 "Drugi token %d. wiersza bazy kluczy w „%s” z zawartością „%s” jest błędnie "
 "sformatowany"
 
-#: gio/gdbusauthmechanismsha1.c:477
+#: gio/gdbusauthmechanismsha1.c:479
 #, c-format
 msgid "Didn’t find cookie with id %d in the keyring at “%s”"
 msgstr "Nie odnaleziono ciasteczka z identyfikatorem %d w bazie kluczy w „%s”"
 
-#: gio/gdbusauthmechanismsha1.c:523
+#: gio/gdbusauthmechanismsha1.c:536
 #, c-format
 msgid "Error creating lock file “%s”: %s"
 msgstr "Błąd podczas tworzenia pliku blokady „%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:587
+#: gio/gdbusauthmechanismsha1.c:609
 #, c-format
 msgid "Error deleting stale lock file “%s”: %s"
 msgstr "Błąd podczas usuwania starego pliku blokady „%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:626
+#: gio/gdbusauthmechanismsha1.c:648
 #, c-format
 msgid "Error closing (unlinked) lock file “%s”: %s"
 msgstr "Błąd podczas zamykania (niedowiązanego) pliku blokady „%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:637
+#: gio/gdbusauthmechanismsha1.c:659
 #, c-format
 msgid "Error unlinking lock file “%s”: %s"
 msgstr "Błąd podczas odwiązywania pliku blokady „%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:714
+#: gio/gdbusauthmechanismsha1.c:736
 #, c-format
 msgid "Error opening keyring “%s” for writing: "
 msgstr "Błąd podczas otwierania bazy kluczy „%s” do zapisania: "
 
-#: gio/gdbusauthmechanismsha1.c:908
+#: gio/gdbusauthmechanismsha1.c:930
 #, c-format
 msgid "(Additionally, releasing the lock for “%s” also failed: %s) "
 msgstr "(Dodatkowo, uwolnienie blokady „%s” także się nie powiodło: %s) "
 
-#: gio/gdbusconnection.c:604 gio/gdbusconnection.c:2418
+#: gio/gdbusconnection.c:588 gio/gdbusconnection.c:2402
 msgid "The connection is closed"
 msgstr "Połączenie jest zamknięte"
 
-#: gio/gdbusconnection.c:1903
+#: gio/gdbusconnection.c:1887
 msgid "Timeout was reached"
 msgstr "Przekroczono czas oczekiwania"
 
-#: gio/gdbusconnection.c:2541
+#: gio/gdbusconnection.c:2525
 msgid ""
 "Unsupported flags encountered when constructing a client-side connection"
 msgstr ""
 "Wystąpiły nieobsługiwane flagi podczas tworzenia połączenia ze strony klienta"
 
-#: gio/gdbusconnection.c:4269 gio/gdbusconnection.c:4623
+#: gio/gdbusconnection.c:4253 gio/gdbusconnection.c:4607
 #, c-format
 msgid ""
 "No such interface “org.freedesktop.DBus.Properties” on object at path %s"
 msgstr ""
 "Brak interfejsu „org.freedesktop.DBus.Properties” w obiekcie w ścieżce %s"
 
-#: gio/gdbusconnection.c:4414
+#: gio/gdbusconnection.c:4398
 #, c-format
 msgid "No such property “%s”"
 msgstr "Brak właściwości „%s”"
 
-#: gio/gdbusconnection.c:4426
+#: gio/gdbusconnection.c:4410
 #, c-format
 msgid "Property “%s” is not readable"
 msgstr "Właściwość „%s” nie jest odczytywalna"
 
-#: gio/gdbusconnection.c:4437
+#: gio/gdbusconnection.c:4421
 #, c-format
 msgid "Property “%s” is not writable"
 msgstr "Właściwość „%s” nie jest zapisywalna"
 
-#: gio/gdbusconnection.c:4457
+#: gio/gdbusconnection.c:4441
 #, c-format
 msgid "Error setting property “%s”: Expected type “%s” but got “%s”"
 msgstr ""
 "Błąd podczas ustawiania właściwości „%s”: oczekiwano typ „%s”, ale otrzymano "
 "„%s”"
 
-#: gio/gdbusconnection.c:4562 gio/gdbusconnection.c:4777
-#: gio/gdbusconnection.c:6760
+#: gio/gdbusconnection.c:4546 gio/gdbusconnection.c:4761
+#: gio/gdbusconnection.c:6744
 #, c-format
 msgid "No such interface “%s”"
 msgstr "Brak interfejsu „%s”"
 
-#: gio/gdbusconnection.c:4999 gio/gdbusconnection.c:7274
+#: gio/gdbusconnection.c:4983 gio/gdbusconnection.c:7258
 #, c-format
 msgid "No such interface “%s” on object at path %s"
 msgstr "Brak interfejsu „%s” w obiekcie w ścieżce %s"
 
-#: gio/gdbusconnection.c:5100
+#: gio/gdbusconnection.c:5084
 #, c-format
 msgid "No such method “%s”"
 msgstr "Brak metody „%s”"
 
-#: gio/gdbusconnection.c:5131
+#: gio/gdbusconnection.c:5115
 #, c-format
 msgid "Type of message, “%s”, does not match expected type “%s”"
 msgstr "Typ komunikatu, „%s”, nie pasuje do oczekiwanego typu „%s”"
 
-#: gio/gdbusconnection.c:5334
+#: gio/gdbusconnection.c:5318
 #, c-format
 msgid "An object is already exported for the interface %s at %s"
 msgstr "Obiekt został już wyeksportowany dla interfejsu %s w %s"
 
-#: gio/gdbusconnection.c:5561
+#: gio/gdbusconnection.c:5545
 #, c-format
 msgid "Unable to retrieve property %s.%s"
 msgstr "Nie można pobrać właściwości %s.%s"
 
-#: gio/gdbusconnection.c:5617
+#: gio/gdbusconnection.c:5601
 #, c-format
 msgid "Unable to set property %s.%s"
 msgstr "Nie można ustawić właściwości %s.%s"
 
-#: gio/gdbusconnection.c:5796
+#: gio/gdbusconnection.c:5780
 #, c-format
 msgid "Method “%s” returned type “%s”, but expected “%s”"
 msgstr "Metoda „%s” zwróciła typ „%s”, ale oczekiwano „%s”"
 
-#: gio/gdbusconnection.c:6872
+#: gio/gdbusconnection.c:6856
 #, c-format
 msgid "Method “%s” on interface “%s” with signature “%s” does not exist"
 msgstr "Metoda „%s” w interfejsie „%s” z podpisem „%s” nie istnieje"
 
-#: gio/gdbusconnection.c:6993
+#: gio/gdbusconnection.c:6977
 #, c-format
 msgid "A subtree is already exported for %s"
 msgstr "Poddrzewo zostało już wyeksportowane dla %s"
 
-#: gio/gdbusconnection.c:7282
+#: gio/gdbusconnection.c:7266
 #, c-format
 msgid "Object does not exist at path “%s”"
 msgstr "Obiekt nie istnieje w ścieżce „%s”"
 
-#: gio/gdbusmessage.c:1311
+#: gio/gdbusmessage.c:1301
 msgid "type is INVALID"
 msgstr "typ jest NIEPRAWIDŁOWY"
 
-#: gio/gdbusmessage.c:1322
+#: gio/gdbusmessage.c:1312
 msgid "METHOD_CALL message: PATH or MEMBER header field is missing"
 msgstr "Komunikat METHOD_CALL: brak pola nagłówka PATH lub MEMBER"
 
-#: gio/gdbusmessage.c:1333
+#: gio/gdbusmessage.c:1323
 msgid "METHOD_RETURN message: REPLY_SERIAL header field is missing"
 msgstr "Komunikat METHOD_RETURN: brak pola nagłówka REPLY_SERIAL"
 
-#: gio/gdbusmessage.c:1345
+#: gio/gdbusmessage.c:1335
 msgid "ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing"
 msgstr "Komunikat o BŁĘDZIE: brak pola nagłówka REPLY_SERIAL lub ERROR_NAME"
 
-#: gio/gdbusmessage.c:1358
+#: gio/gdbusmessage.c:1348
 msgid "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing"
 msgstr "Komunikat SYGNAŁU: brak pola nagłówka PATH, INTERFACE lub MEMBER"
 
-#: gio/gdbusmessage.c:1366
+#: gio/gdbusmessage.c:1356
 msgid ""
 "SIGNAL message: The PATH header field is using the reserved value /org/"
 "freedesktop/DBus/Local"
@@ -788,7 +799,7 @@ msgstr ""
 "Komunikat SYGNAŁU: pole nagłówka PATH używa zastrzeżonej wartości /org/"
 "freedesktop/DBus/Local"
 
-#: gio/gdbusmessage.c:1374
+#: gio/gdbusmessage.c:1364
 msgid ""
 "SIGNAL message: The INTERFACE header field is using the reserved value org."
 "freedesktop.DBus.Local"
@@ -796,7 +807,7 @@ msgstr ""
 "Komunikat SYGNAŁU: pole nagłówka INTERFACE używa zastrzeżonej wartości org."
 "freedesktop.DBus.Local"
 
-#: gio/gdbusmessage.c:1422 gio/gdbusmessage.c:1482
+#: gio/gdbusmessage.c:1412 gio/gdbusmessage.c:1472
 #, c-format
 msgid "Wanted to read %lu byte but only got %lu"
 msgid_plural "Wanted to read %lu bytes but only got %lu"
@@ -804,12 +815,12 @@ msgstr[0] "Chciano odczytać %lu bajt, ale otrzymano tylko %lu"
 msgstr[1] "Chciano odczytać %lu bajty, ale otrzymano tylko %lu"
 msgstr[2] "Chciano odczytać %lu bajtów, ale otrzymano tylko %lu"
 
-#: gio/gdbusmessage.c:1436
+#: gio/gdbusmessage.c:1426
 #, c-format
 msgid "Expected NUL byte after the string “%s” but found byte %d"
 msgstr "Oczekiwano bajtu NUL po ciągu „%s”, ale odnaleziono bajt %d"
 
-#: gio/gdbusmessage.c:1455
+#: gio/gdbusmessage.c:1445
 #, c-format
 msgid ""
 "Expected valid UTF-8 string but found invalid bytes at byte offset %d "
@@ -819,22 +830,22 @@ msgstr ""
 "w wyrównaniu bajtu %d (długość ciągu wynosi %d). Prawidłowy ciąg UTF-8 do "
 "tego miejsca to „%s”"
 
-#: gio/gdbusmessage.c:1519 gio/gdbusmessage.c:1795 gio/gdbusmessage.c:2006
+#: gio/gdbusmessage.c:1509 gio/gdbusmessage.c:1785 gio/gdbusmessage.c:1996
 msgid "Value nested too deeply"
 msgstr "Wartość jest zagnieżdżona za głęboko"
 
-#: gio/gdbusmessage.c:1687
+#: gio/gdbusmessage.c:1677
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus object path"
 msgstr ""
 "Przetworzona wartość „%s” nie jest prawidłową ścieżką do obiektu usługi D-Bus"
 
-#: gio/gdbusmessage.c:1711
+#: gio/gdbusmessage.c:1701
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature"
 msgstr "Przetworzona wartość „%s” nie jest prawidłowym podpisem usługi D-Bus"
 
-#: gio/gdbusmessage.c:1762
+#: gio/gdbusmessage.c:1752
 #, c-format
 msgid ""
 "Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB)."
@@ -850,7 +861,7 @@ msgstr[2] ""
 "Wystąpiła macierz o długości %u bajtów. Maksymalna długość to 2<<26 bajtów "
 "(64 MiB)."
 
-#: gio/gdbusmessage.c:1782
+#: gio/gdbusmessage.c:1772
 #, c-format
 msgid ""
 "Encountered array of type “a%c”, expected to have a length a multiple of %u "
@@ -859,18 +870,18 @@ msgstr ""
 "Wystąpiła macierz typu „a%c”, której oczekiwana długość jest wielokrotnością "
 "%u B, ale wynosi %u B"
 
-#: gio/gdbusmessage.c:1936 gio/gdbusmessage.c:2655
+#: gio/gdbusmessage.c:1926 gio/gdbusmessage.c:2645
 msgid "Empty structures (tuples) are not allowed in D-Bus"
 msgstr "Puste struktury (krotki) nie są dozwolone na magistrali D-Bus"
 
-#: gio/gdbusmessage.c:1990
+#: gio/gdbusmessage.c:1980
 #, c-format
 msgid "Parsed value “%s” for variant is not a valid D-Bus signature"
 msgstr ""
 "Przetworzona wartość „%s” dla wariantu nie jest prawidłowym podpisem usługi "
 "D-Bus"
 
-#: gio/gdbusmessage.c:2031
+#: gio/gdbusmessage.c:2021
 #, c-format
 msgid ""
 "Error deserializing GVariant with type string “%s” from the D-Bus wire format"
@@ -878,7 +889,7 @@ msgstr ""
 "Błąd podczas deserializowania GVariant za pomocą ciągu typu „%s” z formatu "
 "przewodu usługi D-Bus"
 
-#: gio/gdbusmessage.c:2216
+#: gio/gdbusmessage.c:2206
 #, c-format
 msgid ""
 "Invalid endianness value. Expected 0x6c (“l”) or 0x42 (“B”) but found value "
@@ -887,30 +898,30 @@ msgstr ""
 "Nieprawidłowa wartość kolejności bajtów. Oczekiwano 0x6c („l”) lub 0x42 "
 "(„B”), ale odnaleziono wartość 0x%02x"
 
-#: gio/gdbusmessage.c:2235
+#: gio/gdbusmessage.c:2225
 #, c-format
 msgid "Invalid major protocol version. Expected 1 but found %d"
 msgstr ""
 "Nieprawidłowa główna wersja protokołu. Oczekiwano 1, ale odnaleziono %d"
 
-#: gio/gdbusmessage.c:2293 gio/gdbusmessage.c:2891
+#: gio/gdbusmessage.c:2283 gio/gdbusmessage.c:2881
 msgid "Signature header found but is not of type signature"
 msgstr "Odnaleziono nagłówek podpisu, ale nie jest podpisem typu"
 
-#: gio/gdbusmessage.c:2305
+#: gio/gdbusmessage.c:2295
 #, c-format
 msgid "Signature header with signature “%s” found but message body is empty"
 msgstr ""
 "Odnaleziono nagłówek podpisu z podpisem „%s”, ale treść komunikatu jest pusta"
 
-#: gio/gdbusmessage.c:2320
+#: gio/gdbusmessage.c:2310
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature (for body)"
 msgstr ""
 "Przetworzona wartość „%s” nie jest prawidłowym podpisem usługi D-Bus (dla "
 "treści)"
 
-#: gio/gdbusmessage.c:2352
+#: gio/gdbusmessage.c:2342
 #, 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"
@@ -921,11 +932,11 @@ msgstr[1] ""
 msgstr[2] ""
 "Brak nagłówka podpisu w komunikacie, ale treść komunikatu liczy %u bajtów"
 
-#: gio/gdbusmessage.c:2362
+#: gio/gdbusmessage.c:2352
 msgid "Cannot deserialize message: "
 msgstr "Nie można deserializować komunikatu: "
 
-#: gio/gdbusmessage.c:2708
+#: gio/gdbusmessage.c:2698
 #, c-format
 msgid ""
 "Error serializing GVariant with type string “%s” to the D-Bus wire format"
@@ -933,23 +944,23 @@ msgstr ""
 "Błąd podczas serializowania GVariant za pomocą ciągu typu „%s” z formatu "
 "przewodu usługi D-Bus"
 
-#: gio/gdbusmessage.c:2845
+#: gio/gdbusmessage.c:2835
 #, c-format
 msgid ""
 "Number of file descriptors in message (%d) differs from header field (%d)"
 msgstr ""
 "Liczba deskryptorów plików w komunikacie (%d) różni się od pola nagłówka (%d)"
 
-#: gio/gdbusmessage.c:2853
+#: gio/gdbusmessage.c:2843
 msgid "Cannot serialize message: "
 msgstr "Nie można serializować komunikatu: "
 
-#: gio/gdbusmessage.c:2906
+#: gio/gdbusmessage.c:2896
 #, c-format
 msgid "Message body has signature “%s” but there is no signature header"
 msgstr "Treść komunikatu ma podpis „%s”, ale brak nagłówka podpisu"
 
-#: gio/gdbusmessage.c:2916
+#: gio/gdbusmessage.c:2906
 #, c-format
 msgid ""
 "Message body has type signature “%s” but signature in the header field is "
@@ -957,54 +968,54 @@ msgid ""
 msgstr ""
 "Treść komunikatu ma podpis typu „%s”, ale podpis w polu nagłówka to „%s”"
 
-#: gio/gdbusmessage.c:2932
+#: gio/gdbusmessage.c:2922
 #, c-format
 msgid "Message body is empty but signature in the header field is “(%s)”"
 msgstr "Treść komunikatu jest pusta, ale podpis w polu nagłówka to „(%s)”"
 
-#: gio/gdbusmessage.c:3487
+#: gio/gdbusmessage.c:3477
 #, c-format
 msgid "Error return with body of type “%s”"
 msgstr "Błąd zwrotu z treścią typu „%s”"
 
-#: gio/gdbusmessage.c:3495
+#: gio/gdbusmessage.c:3485
 msgid "Error return with empty body"
 msgstr "Błąd zwrotu z pustą treścią"
 
-#: gio/gdbusprivate.c:2246
+#: gio/gdbusprivate.c:2185
 #, c-format
 msgid "(Type any character to close this window)\n"
 msgstr "(Wpisanie dowolnego znaku zamknie to okno)\n"
 
-#: gio/gdbusprivate.c:2420
+#: gio/gdbusprivate.c:2371
 #, c-format
 msgid "Session dbus not running, and autolaunch failed"
 msgstr ""
 "Magistrala D-Bus sesji nie jest uruchomiona, i automatyczne uruchomienie się "
 "nie powiodło"
 
-#: gio/gdbusprivate.c:2443
+#: gio/gdbusprivate.c:2394
 #, c-format
 msgid "Unable to get Hardware profile: %s"
 msgstr "Nie można pobrać profilu sprzętu: %s"
 
 #. Translators: Both placeholders are file paths
-#: gio/gdbusprivate.c:2494
+#: gio/gdbusprivate.c:2445
 #, c-format
 msgid "Unable to load %s or %s: "
 msgstr "Nie można wczytać pliku %s ani %s: "
 
-#: gio/gdbusproxy.c:1569
+#: gio/gdbusproxy.c:1573
 #, c-format
 msgid "Error calling StartServiceByName for %s: "
 msgstr "Błąd podczas wywoływania metody StartServiceByName dla %s: "
 
-#: gio/gdbusproxy.c:1592
+#: gio/gdbusproxy.c:1596
 #, c-format
 msgid "Unexpected reply %d from StartServiceByName(\"%s\") method"
 msgstr "Nieoczekiwana odpowiedź %d od metody StartServiceByName(\"%s\")"
 
-#: gio/gdbusproxy.c:2699 gio/gdbusproxy.c:2834
+#: gio/gdbusproxy.c:2707 gio/gdbusproxy.c:2842
 #, c-format
 msgid ""
 "Cannot invoke method; proxy is for the well-known name %s without an owner, "
@@ -1060,66 +1071,66 @@ msgstr ""
 "\n"
 "Polecenie „%s POLECENIE --help” wyświetla pomoc o każdym poleceniu.\n"
 
-#: gio/gdbus-tool.c:201 gio/gdbus-tool.c:273 gio/gdbus-tool.c:345
-#: gio/gdbus-tool.c:369 gio/gdbus-tool.c:859 gio/gdbus-tool.c:1236
-#: gio/gdbus-tool.c:1724
+#: gio/gdbus-tool.c:202 gio/gdbus-tool.c:274 gio/gdbus-tool.c:346
+#: gio/gdbus-tool.c:370 gio/gdbus-tool.c:860 gio/gdbus-tool.c:1245
+#: gio/gdbus-tool.c:1733
 #, c-format
 msgid "Error: %s\n"
 msgstr "Błąd: %s\n"
 
-#: gio/gdbus-tool.c:212 gio/gdbus-tool.c:286 gio/gdbus-tool.c:1740
+#: gio/gdbus-tool.c:213 gio/gdbus-tool.c:287 gio/gdbus-tool.c:1749
 #, c-format
 msgid "Error parsing introspection XML: %s\n"
 msgstr "Błąd podczas przetwarzania kodu XML introspekcji: %s\n"
 
-#: gio/gdbus-tool.c:250
+#: gio/gdbus-tool.c:251
 #, c-format
 msgid "Error: %s is not a valid name\n"
 msgstr "Błąd: %s nie jest prawidłową nazwą\n"
 
-#: gio/gdbus-tool.c:255 gio/gdbus-tool.c:745 gio/gdbus-tool.c:1060
-#: gio/gdbus-tool.c:1890 gio/gdbus-tool.c:2130
+#: gio/gdbus-tool.c:256 gio/gdbus-tool.c:746 gio/gdbus-tool.c:1064
+#: gio/gdbus-tool.c:1899 gio/gdbus-tool.c:2139
 #, c-format
 msgid "Error: %s is not a valid object path\n"
 msgstr "Błąd: %s nie jest prawidłową ścieżką do obiektu\n"
 
-#: gio/gdbus-tool.c:403
+#: gio/gdbus-tool.c:404
 msgid "Connect to the system bus"
 msgstr "Łączy z magistralą systemową"
 
-#: gio/gdbus-tool.c:404
+#: gio/gdbus-tool.c:405
 msgid "Connect to the session bus"
 msgstr "Łączy z magistralą sesji"
 
-#: gio/gdbus-tool.c:405
+#: gio/gdbus-tool.c:406
 msgid "Connect to given D-Bus address"
 msgstr "Łączy z podanym adresem usługi D-Bus"
 
-#: gio/gdbus-tool.c:415
+#: gio/gdbus-tool.c:416
 msgid "Connection Endpoint Options:"
 msgstr "Opcje punktów końcowych połączenia:"
 
-#: gio/gdbus-tool.c:416
+#: gio/gdbus-tool.c:417
 msgid "Options specifying the connection endpoint"
 msgstr "Opcje określające punkt końcowy połączenia"
 
-#: gio/gdbus-tool.c:439
+#: gio/gdbus-tool.c:440
 #, c-format
 msgid "No connection endpoint specified"
 msgstr "Nie określono żadnych punktów końcowych połączenia"
 
-#: gio/gdbus-tool.c:449
+#: gio/gdbus-tool.c:450
 #, c-format
 msgid "Multiple connection endpoints specified"
 msgstr "Określono wiele punktów końcowych połączenia"
 
-#: gio/gdbus-tool.c:522
+#: gio/gdbus-tool.c:523
 #, c-format
 msgid ""
 "Warning: According to introspection data, interface “%s” does not exist\n"
 msgstr "Ostrzeżenie: według danych introspekcji, interfejs „%s” nie istnieje\n"
 
-#: gio/gdbus-tool.c:531
+#: gio/gdbus-tool.c:532
 #, c-format
 msgid ""
 "Warning: According to introspection data, method “%s” does not exist on "
@@ -1128,161 +1139,165 @@ msgstr ""
 "Ostrzeżenie: według danych introspekcji, metoda „%s” nie istnieje "
 "w interfejsie „%s”\n"
 
-#: gio/gdbus-tool.c:593
+#: gio/gdbus-tool.c:594
 msgid "Optional destination for signal (unique name)"
 msgstr "Opcjonalny cel sygnału (unikalna nazwa)"
 
-#: gio/gdbus-tool.c:594
+#: gio/gdbus-tool.c:595
 msgid "Object path to emit signal on"
 msgstr "Ścieżka do obiektu do wyemitowania sygnału"
 
-#: gio/gdbus-tool.c:595
+#: gio/gdbus-tool.c:596
 msgid "Signal and interface name"
 msgstr "Nazwa sygnału i interfejsu"
 
-#: gio/gdbus-tool.c:628
+#: gio/gdbus-tool.c:629
 msgid "Emit a signal."
 msgstr "Emituje sygnał."
 
-#: gio/gdbus-tool.c:683 gio/gdbus-tool.c:997 gio/gdbus-tool.c:1827
-#: gio/gdbus-tool.c:2059 gio/gdbus-tool.c:2279
+#: gio/gdbus-tool.c:684 gio/gdbus-tool.c:1001 gio/gdbus-tool.c:1836
+#: gio/gdbus-tool.c:2068 gio/gdbus-tool.c:2288
 #, c-format
 msgid "Error connecting: %s\n"
 msgstr "Błąd podczas łączenia: %s\n"
 
-#: gio/gdbus-tool.c:703
+#: gio/gdbus-tool.c:704
 #, c-format
 msgid "Error: %s is not a valid unique bus name.\n"
 msgstr "Błąd: %s nie jest prawidłową unikalną nazwą magistrali.\n"
 
-#: gio/gdbus-tool.c:722 gio/gdbus-tool.c:1040 gio/gdbus-tool.c:1870
+#: gio/gdbus-tool.c:723 gio/gdbus-tool.c:1044 gio/gdbus-tool.c:1879
 msgid "Error: Object path is not specified\n"
 msgstr "Błąd: nie podano ścieżki do obiektu\n"
 
-#: gio/gdbus-tool.c:765
+#: gio/gdbus-tool.c:766
 msgid "Error: Signal name is not specified\n"
 msgstr "Błąd: nie podano nazwy sygnału\n"
 
-#: gio/gdbus-tool.c:779
+#: gio/gdbus-tool.c:780
 #, c-format
 msgid "Error: Signal name “%s” is invalid\n"
 msgstr "Błąd: nazwa sygnału „%s” jest nieprawidłowa\n"
 
-#: gio/gdbus-tool.c:791
+#: gio/gdbus-tool.c:792
 #, c-format
 msgid "Error: %s is not a valid interface name\n"
 msgstr "Błąd: %s nie jest prawidłową nazwą interfejsu\n"
 
-#: gio/gdbus-tool.c:797
+#: gio/gdbus-tool.c:798
 #, c-format
 msgid "Error: %s is not a valid member name\n"
 msgstr "Błąd: %s nie jest prawidłową nazwą elementu\n"
 
 #. Use the original non-"parse-me-harder" error
-#: gio/gdbus-tool.c:834 gio/gdbus-tool.c:1172
+#: gio/gdbus-tool.c:835 gio/gdbus-tool.c:1176
 #, c-format
 msgid "Error parsing parameter %d: %s\n"
 msgstr "Błąd podczas przetwarzania parametru %d: %s\n"
 
-#: gio/gdbus-tool.c:866
+#: gio/gdbus-tool.c:867
 #, c-format
 msgid "Error flushing connection: %s\n"
 msgstr "Błąd podczas czyszczenia połączenia: %s\n"
 
-#: gio/gdbus-tool.c:893
+#: gio/gdbus-tool.c:895
 msgid "Destination name to invoke method on"
 msgstr "Nazwa docelowa do wywołania na niej metody"
 
-#: gio/gdbus-tool.c:894
+#: gio/gdbus-tool.c:896
 msgid "Object path to invoke method on"
 msgstr "Ścieżka do obiektu do wywołania na niej metody"
 
-#: gio/gdbus-tool.c:895
+#: gio/gdbus-tool.c:897
 msgid "Method and interface name"
 msgstr "Nazwa metody i interfejsu"
 
-#: gio/gdbus-tool.c:896
+#: gio/gdbus-tool.c:898
 msgid "Timeout in seconds"
 msgstr "Czas oczekiwania w sekundach"
 
-#: gio/gdbus-tool.c:942
+#: gio/gdbus-tool.c:899
+msgid "Allow interactive authorization"
+msgstr "Zezwala na interaktywne upoważnienie"
+
+#: gio/gdbus-tool.c:946
 msgid "Invoke a method on a remote object."
 msgstr "Wywołuje metodę na zdalnym obiekcie."
 
-#: gio/gdbus-tool.c:1014 gio/gdbus-tool.c:1844 gio/gdbus-tool.c:2084
+#: gio/gdbus-tool.c:1018 gio/gdbus-tool.c:1853 gio/gdbus-tool.c:2093
 msgid "Error: Destination is not specified\n"
 msgstr "Błąd: nie podano celu\n"
 
-#: gio/gdbus-tool.c:1025 gio/gdbus-tool.c:1861 gio/gdbus-tool.c:2095
+#: gio/gdbus-tool.c:1029 gio/gdbus-tool.c:1870 gio/gdbus-tool.c:2104
 #, c-format
 msgid "Error: %s is not a valid bus name\n"
 msgstr "Błąd: %s nie jest prawidłową nazwą magistrali\n"
 
-#: gio/gdbus-tool.c:1075
+#: gio/gdbus-tool.c:1079
 msgid "Error: Method name is not specified\n"
 msgstr "Błąd: nie podano nazwy metody\n"
 
-#: gio/gdbus-tool.c:1086
+#: gio/gdbus-tool.c:1090
 #, c-format
 msgid "Error: Method name “%s” is invalid\n"
 msgstr "Błąd: nazwa metody „%s” jest nieprawidłowa\n"
 
-#: gio/gdbus-tool.c:1164
+#: gio/gdbus-tool.c:1168
 #, c-format
 msgid "Error parsing parameter %d of type “%s”: %s\n"
 msgstr "Błąd podczas przetwarzania parametru %d typu „%s”: %s\n"
 
-#: gio/gdbus-tool.c:1190
+#: gio/gdbus-tool.c:1194
 #, c-format
 msgid "Error adding handle %d: %s\n"
 msgstr "Błąd podczas dodawania pliku obsługi %d: %s\n"
 
-#: gio/gdbus-tool.c:1686
+#: gio/gdbus-tool.c:1695
 msgid "Destination name to introspect"
 msgstr "Nazwa docelowa do zbadania"
 
-#: gio/gdbus-tool.c:1687
+#: gio/gdbus-tool.c:1696
 msgid "Object path to introspect"
 msgstr "Ścieżka do obiektu do zbadania"
 
-#: gio/gdbus-tool.c:1688
+#: gio/gdbus-tool.c:1697
 msgid "Print XML"
 msgstr "Wyświetla kod XML"
 
-#: gio/gdbus-tool.c:1689
+#: gio/gdbus-tool.c:1698
 msgid "Introspect children"
 msgstr "Bada elementy potomne"
 
-#: gio/gdbus-tool.c:1690
+#: gio/gdbus-tool.c:1699
 msgid "Only print properties"
 msgstr "Wyświetla tylko właściwości"
 
-#: gio/gdbus-tool.c:1779
+#: gio/gdbus-tool.c:1788
 msgid "Introspect a remote object."
 msgstr "Bada zdalny obiekt."
 
-#: gio/gdbus-tool.c:1985
+#: gio/gdbus-tool.c:1994
 msgid "Destination name to monitor"
 msgstr "Nazwa docelowa do monitorowania"
 
-#: gio/gdbus-tool.c:1986
+#: gio/gdbus-tool.c:1995
 msgid "Object path to monitor"
 msgstr "Ścieżka do obiektu do monitorowania"
 
-#: gio/gdbus-tool.c:2011
+#: gio/gdbus-tool.c:2020
 msgid "Monitor a remote object."
 msgstr "Monitoruje zdalny obiekt."
 
-#: gio/gdbus-tool.c:2069
+#: gio/gdbus-tool.c:2078
 msgid "Error: can’t monitor a non-message-bus connection\n"
 msgstr ""
 "Błąd: nie można monitorować połączenia niebędącego magistralą komunikatów\n"
 
-#: gio/gdbus-tool.c:2193
+#: gio/gdbus-tool.c:2202
 msgid "Service to activate before waiting for the other one (well-known name)"
 msgstr "Usługa do aktywowania przed oczekiwaniem na drugą (znaną nazwę)"
 
-#: gio/gdbus-tool.c:2196
+#: gio/gdbus-tool.c:2205
 msgid ""
 "Timeout to wait for before exiting with an error (seconds); 0 for no timeout "
 "(default)"
@@ -1290,64 +1305,69 @@ msgstr ""
 "Czas oczekiwania przed zakończeniem z błędem (w sekundach), 0 oznacza brak "
 "ograniczenia (domyślne)"
 
-#: gio/gdbus-tool.c:2244
+#: gio/gdbus-tool.c:2253
 msgid "[OPTION…] BUS-NAME"
 msgstr "[OPCJA…] NAZWA-MAGISTRALI"
 
-#: gio/gdbus-tool.c:2245
+#: gio/gdbus-tool.c:2254
 msgid "Wait for a bus name to appear."
 msgstr "Oczekuje na pojawienie się nazwy magistrali."
 
-#: gio/gdbus-tool.c:2321
+#: gio/gdbus-tool.c:2330
 msgid "Error: A service to activate for must be specified.\n"
 msgstr "Błąd: należy podać usługę, dla której aktywować.\n"
 
-#: gio/gdbus-tool.c:2326
+#: gio/gdbus-tool.c:2335
 msgid "Error: A service to wait for must be specified.\n"
 msgstr "Błąd: należy podać usługę, na którą oczekiwać.\n"
 
-#: gio/gdbus-tool.c:2331
+#: gio/gdbus-tool.c:2340
 msgid "Error: Too many arguments.\n"
 msgstr "Błąd: za dużo parametrów.\n"
 
-#: gio/gdbus-tool.c:2339 gio/gdbus-tool.c:2346
+#: gio/gdbus-tool.c:2348 gio/gdbus-tool.c:2355
 #, c-format
 msgid "Error: %s is not a valid well-known bus name.\n"
 msgstr "Błąd: %s nie jest prawidłową znaną nazwą magistrali.\n"
 
-#: gio/gdesktopappinfo.c:2106 gio/gdesktopappinfo.c:4935
+#: gio/gdebugcontrollerdbus.c:358
+#, c-format
+msgid "Not authorized to change debug settings"
+msgstr "Brak upoważnienia do zmiany ustawień debugowania"
+
+#: gio/gdesktopappinfo.c:2178 gio/gdesktopappinfo.c:5105
 msgid "Unnamed"
 msgstr "Bez nazwy"
 
-#: gio/gdesktopappinfo.c:2516
+#: gio/gdesktopappinfo.c:2588
 msgid "Desktop file didn’t specify Exec field"
 msgstr "Plik .desktop nie określa pola Exec"
 
-#: gio/gdesktopappinfo.c:2804
+#: gio/gdesktopappinfo.c:2896
 msgid "Unable to find terminal required for application"
 msgstr "Nie można odnaleźć terminala wymaganego przez program"
 
-#: gio/gdesktopappinfo.c:3455
+#: gio/gdesktopappinfo.c:3625
 #, c-format
 msgid "Can’t create user application configuration folder %s: %s"
 msgstr ""
 "Nie można utworzyć katalogu użytkownika dla konfiguracji programu %s: %s"
 
-#: gio/gdesktopappinfo.c:3459
+#: gio/gdesktopappinfo.c:3629
 #, c-format
 msgid "Can’t create user MIME configuration folder %s: %s"
 msgstr "Nie można utworzyć katalogu użytkownika dla konfiguracji MIME %s: %s"
 
-#: gio/gdesktopappinfo.c:3701 gio/gdesktopappinfo.c:3725
+#: gio/gdesktopappinfo.c:3871 gio/gdesktopappinfo.c:3895
 msgid "Application information lacks an identifier"
 msgstr "Brak identyfikatora w informacjach o programie"
 
-#: gio/gdesktopappinfo.c:3961
+#: gio/gdesktopappinfo.c:4131
 #, c-format
 msgid "Can’t create user desktop file %s"
 msgstr "Nie można utworzyć pliku .desktop dla użytkownika %s"
 
-#: gio/gdesktopappinfo.c:4097
+#: gio/gdesktopappinfo.c:4267
 #, c-format
 msgid "Custom definition for %s"
 msgstr "Niestandardowa definicja dla %s"
@@ -1375,7 +1395,7 @@ msgstr "napęd nie obsługuje rozpoczęcia"
 msgid "drive doesn’t implement stop"
 msgstr "napęd nie obsługuje zatrzymania"
 
-#: gio/gdtlsconnection.c:1153 gio/gtlsconnection.c:920
+#: gio/gdtlsconnection.c:1186 gio/gtlsconnection.c:955
 msgid "TLS backend does not implement TLS binding retrieval"
 msgstr "Mechanizm TLS nie obsługuje wiążącego pobierania TLS"
 
@@ -1416,74 +1436,74 @@ msgstr "Oczekiwano obiektu GEmblem dla GEmblemedIcon"
 #. * trying to find the enclosing (user visible)
 #. * mount of a file, but none exists.
 #.
-#: gio/gfile.c:1561
+#: gio/gfile.c:1579
 msgid "Containing mount does not exist"
 msgstr "Nie istnieje zawierający punkt montowania"
 
-#: gio/gfile.c:2608 gio/glocalfile.c:2486
+#: gio/gfile.c:2626 gio/glocalfile.c:2486
 msgid "Can’t copy over directory"
 msgstr "Nie można skopiować na katalog"
 
-#: gio/gfile.c:2668
+#: gio/gfile.c:2686
 msgid "Can’t copy directory over directory"
 msgstr "Nie można skopiować katalogu na katalog"
 
-#: gio/gfile.c:2676
+#: gio/gfile.c:2694
 msgid "Target file exists"
 msgstr "Plik docelowy istnieje"
 
-#: gio/gfile.c:2695
+#: gio/gfile.c:2713
 msgid "Can’t recursively copy directory"
 msgstr "Nie można skopiować katalogu rekurencyjnie"
 
-#: gio/gfile.c:2996
+#: gio/gfile.c:3014
 msgid "Splice not supported"
 msgstr "Wywołanie „splice” nie jest obsługiwane"
 
-#: gio/gfile.c:3000
+#: gio/gfile.c:3018
 #, c-format
 msgid "Error splicing file: %s"
 msgstr "Błąd podczas dzielenia pliku: %s"
 
-#: gio/gfile.c:3152
+#: gio/gfile.c:3170
 msgid "Copy (reflink/clone) between mounts is not supported"
 msgstr ""
 "Kopiowanie (reflink/clone) między punktami montowania nie jest obsługiwane"
 
-#: gio/gfile.c:3156
+#: gio/gfile.c:3174
 msgid "Copy (reflink/clone) is not supported or invalid"
 msgstr "Kopiowanie (reflink/clone) nie jest obsługiwane lub jest nieprawidłowe"
 
-#: gio/gfile.c:3161
+#: gio/gfile.c:3179
 msgid "Copy (reflink/clone) is not supported or didn’t work"
 msgstr "Kopiowanie (reflink/clone) nie jest obsługiwane lub nie zadziałało"
 
-#: gio/gfile.c:3226
+#: gio/gfile.c:3244
 msgid "Can’t copy special file"
 msgstr "Nie można skopiować pliku specjalnego"
 
-#: gio/gfile.c:4035
+#: gio/gfile.c:4138
 msgid "Invalid symlink value given"
 msgstr "Wprowadzono nieprawidłową wartość dowiązania symbolicznego"
 
-#: gio/gfile.c:4045 glib/gfileutils.c:2333
+#: gio/gfile.c:4148 glib/gfileutils.c:2333
 msgid "Symbolic links not supported"
 msgstr "Dowiązania symboliczne nie są obsługiwane"
 
-#: gio/gfile.c:4213
+#: gio/gfile.c:4316
 msgid "Trash not supported"
 msgstr "Kosz nie jest obsługiwany"
 
-#: gio/gfile.c:4325
+#: gio/gfile.c:4428
 #, c-format
 msgid "File names cannot contain “%c”"
 msgstr "Nazwy plików nie mogą zawierać „%c”"
 
-#: gio/gfile.c:6806 gio/gvolume.c:364
+#: gio/gfile.c:7028 gio/gvolume.c:364
 msgid "volume doesn’t implement mount"
 msgstr "wolumin nie obsługuje montowania"
 
-#: gio/gfile.c:6920 gio/gfile.c:6968
+#: gio/gfile.c:7142 gio/gfile.c:7190
 msgid "No application is registered as handling this file"
 msgstr "Żaden program nie jest zarejestrowany do obsługi tego pliku"
 
@@ -1528,7 +1548,7 @@ msgstr "Skracanie nie jest dozwolone na potoku wejściowym"
 msgid "Truncate not supported on stream"
 msgstr "Skracanie nie jest dozwolone na potoku"
 
-#: gio/ghttpproxy.c:91 gio/gresolver.c:443 gio/gresolver.c:596
+#: gio/ghttpproxy.c:91 gio/gresolver.c:458 gio/gresolver.c:611
 #: glib/gconvert.c:1825
 msgid "Invalid hostname"
 msgstr "Nieprawidłowa nazwa komputera"
@@ -1615,7 +1635,7 @@ msgid "Could not parse “%s” as IP address mask"
 msgstr "Nie można przetworzyć „%s” jako maskę adresu IP"
 
 #: gio/ginetsocketaddress.c:203 gio/ginetsocketaddress.c:220
-#: gio/gnativesocketaddress.c:109 gio/gunixsocketaddress.c:221
+#: gio/gnativesocketaddress.c:109 gio/gunixsocketaddress.c:228
 msgid "Not enough space for socket address"
 msgstr "Brak wystarczającej ilości miejsca dla adresu gniazda"
 
@@ -2460,59 +2480,59 @@ msgstr "Błąd podczas kompresowania pliku %s"
 msgid "text may not appear inside <%s>"
 msgstr "tekst nie może znajdować się wewnątrz <%s>"
 
-#: gio/glib-compile-resources.c:737 gio/glib-compile-schemas.c:2172
+#: gio/glib-compile-resources.c:819 gio/glib-compile-schemas.c:2172
 msgid "Show program version and exit"
 msgstr "Wyświetla wersję programu i kończy działanie"
 
-#: gio/glib-compile-resources.c:738
+#: gio/glib-compile-resources.c:820
 msgid "Name of the output file"
 msgstr "Nazwa pliku wyjściowego"
 
-#: gio/glib-compile-resources.c:739
+#: gio/glib-compile-resources.c:821
 msgid ""
 "The directories to load files referenced in FILE from (default: current "
 "directory)"
 msgstr "Katalog, z którego wczytywać PLIKI (domyślnie bieżący katalog)"
 
-#: gio/glib-compile-resources.c:739 gio/glib-compile-schemas.c:2173
+#: gio/glib-compile-resources.c:821 gio/glib-compile-schemas.c:2173
 #: gio/glib-compile-schemas.c:2202
 msgid "DIRECTORY"
 msgstr "KATALOG"
 
-#: gio/glib-compile-resources.c:740
+#: gio/glib-compile-resources.c:822
 msgid ""
 "Generate output in the format selected for by the target filename extension"
 msgstr "Tworzy wyjście w formacie wybranym przez rozszerzenie pliku docelowego"
 
-#: gio/glib-compile-resources.c:741
+#: gio/glib-compile-resources.c:823
 msgid "Generate source header"
 msgstr "Tworzy nagłówek źródła"
 
-#: gio/glib-compile-resources.c:742
+#: gio/glib-compile-resources.c:824
 msgid "Generate source code used to link in the resource file into your code"
 msgstr "Tworzy kod źródłowy używany do dowiązania pliku zasobu do kodu"
 
-#: gio/glib-compile-resources.c:743
+#: gio/glib-compile-resources.c:825
 msgid "Generate dependency list"
 msgstr "Tworzy listę zależności"
 
-#: gio/glib-compile-resources.c:744
+#: gio/glib-compile-resources.c:826
 msgid "Name of the dependency file to generate"
 msgstr "Nazwa pliku zależności do utworzenia"
 
-#: gio/glib-compile-resources.c:745
+#: gio/glib-compile-resources.c:827
 msgid "Include phony targets in the generated dependency file"
 msgstr "Dołącza fałszywe cele w utworzonym pliku zależności"
 
-#: gio/glib-compile-resources.c:746
+#: gio/glib-compile-resources.c:828
 msgid "Don’t automatically create and register resource"
 msgstr "Bez automatycznego tworzenia i rejestrowania zasobu"
 
-#: gio/glib-compile-resources.c:747
+#: gio/glib-compile-resources.c:829
 msgid "Don’t export functions; declare them G_GNUC_INTERNAL"
 msgstr "Bez eksportowania funkcji; deklaruje je jako G_GNUC_INTERNAL"
 
-#: gio/glib-compile-resources.c:748
+#: gio/glib-compile-resources.c:830
 msgid ""
 "Don’t embed resource data in the C file; assume it's linked externally "
 "instead"
@@ -2520,11 +2540,15 @@ msgstr ""
 "Bez osadzania danych zasobów w pliku C; przyjmuje, że jest zamiast tego "
 "zewnętrznie dowiązane"
 
-#: gio/glib-compile-resources.c:749
+#: gio/glib-compile-resources.c:831
 msgid "C identifier name used for the generated source code"
 msgstr "Nazwa identyfikatora języka C używana dla utworzonego kodu źródłowego"
 
-#: gio/glib-compile-resources.c:775
+#: gio/glib-compile-resources.c:832
+msgid "The target C compiler (default: the CC environment variable)"
+msgstr "Docelowy kompilator języka C (domyślnie: zmienna środowiskowa CC)"
+
+#: gio/glib-compile-resources.c:858
 msgid ""
 "Compile a resource specification into a resource file.\n"
 "Resource specification files have the extension .gresource.xml,\n"
@@ -2534,7 +2558,7 @@ msgstr ""
 "zasobów mają rozszerzenie .gresource.xml, a pliki\n"
 "zasobów mają rozszerzenie .gresource."
 
-#: gio/glib-compile-resources.c:797
+#: gio/glib-compile-resources.c:880
 msgid "You should give exactly one file name\n"
 msgstr "Należy podać dokładnie jedną nazwę pliku\n"
 
@@ -3331,13 +3355,13 @@ msgstr "Błąd podczas tworzenia kopii zapasowej: %s"
 msgid "Error renaming temporary file: %s"
 msgstr "Błąd podczas zmieniania nazwy pliku tymczasowego: %s"
 
-#: gio/glocalfileoutputstream.c:609 gio/glocalfileoutputstream.c:1237
+#: gio/glocalfileoutputstream.c:609 gio/glocalfileoutputstream.c:1239
 #, c-format
 msgid "Error truncating file: %s"
 msgstr "Błąd podczas skracania pliku: %s"
 
 #: gio/glocalfileoutputstream.c:662 gio/glocalfileoutputstream.c:907
-#: gio/glocalfileoutputstream.c:1218 gio/gsubprocess.c:226
+#: gio/glocalfileoutputstream.c:1220 gio/gsubprocess.c:229
 #, c-format
 msgid "Error opening file “%s”: %s"
 msgstr "Błąd podczas otwierania pliku „%s”: %s"
@@ -3359,7 +3383,7 @@ msgstr "Plik został zmieniony poza programem"
 msgid "Error removing old file: %s"
 msgstr "Błąd podczas usuwania starego pliku: %s"
 
-#: gio/gmemoryinputstream.c:474 gio/gmemoryoutputstream.c:772
+#: gio/gmemoryinputstream.c:474 gio/gmemoryoutputstream.c:762
 msgid "Invalid GSeekType supplied"
 msgstr "Podano nieprawidłowy obiekt GSeekType"
 
@@ -3371,15 +3395,15 @@ msgstr "Nieprawidłowe żądanie wyszukiwania"
 msgid "Cannot truncate GMemoryInputStream"
 msgstr "Nie można skrócić GMemoryInputStream"
 
-#: gio/gmemoryoutputstream.c:567
+#: gio/gmemoryoutputstream.c:568
 msgid "Memory output stream not resizable"
 msgstr "Potok wyjściowy pamięci nie obsługuje zmiany rozmiaru"
 
-#: gio/gmemoryoutputstream.c:583
+#: gio/gmemoryoutputstream.c:584
 msgid "Failed to resize memory output stream"
 msgstr "Zmiana rozmiaru potoku wyjściowego pamięci się nie powiodła"
 
-#: gio/gmemoryoutputstream.c:673
+#: gio/gmemoryoutputstream.c:663
 msgid ""
 "Amount of memory required to process the write is larger than available "
 "address space"
@@ -3387,11 +3411,11 @@ msgstr ""
 "Ilość pamięci wymagana dla przetworzenia zapisu jest większa od dostępnej "
 "przestrzeni adresowej"
 
-#: gio/gmemoryoutputstream.c:782
+#: gio/gmemoryoutputstream.c:772
 msgid "Requested seek before the beginning of the stream"
 msgstr "Zażądano przejścia przed początkiem potoku"
 
-#: gio/gmemoryoutputstream.c:797
+#: gio/gmemoryoutputstream.c:787
 msgid "Requested seek beyond the end of the stream"
 msgstr "Zażądano przejścia poza koniec potoku"
 
@@ -3496,18 +3520,22 @@ msgstr "Suma wektorów przekazanych do %s jest za duża"
 msgid "Source stream is already closed"
 msgstr "Potok źródłowy jest już zamknięty"
 
-#: gio/gresolver.c:386 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
+#. Translators: the first placeholder is a domain name, the
+#. * second is an error message
+#: gio/gresolver.c:401 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
+#: gio/gthreadedresolver.c:780 gio/gthreadedresolver.c:804
+#: gio/gthreadedresolver.c:829 gio/gthreadedresolver.c:844
 #, c-format
 msgid "Error resolving “%s”: %s"
 msgstr "Błąd podczas rozwiązywania „%s”: %s"
 
 #. Translators: The placeholder is for a function name.
-#: gio/gresolver.c:455 gio/gresolver.c:615
+#: gio/gresolver.c:470 gio/gresolver.c:630
 #, c-format
 msgid "%s not implemented"
 msgstr "%s nie jest zaimplementowane"
 
-#: gio/gresolver.c:984 gio/gresolver.c:1036
+#: gio/gresolver.c:999 gio/gresolver.c:1051
 msgid "Invalid domain"
 msgstr "Nieprawidłowa domena"
 
@@ -3622,7 +3650,7 @@ msgstr ""
 msgid "  SECTION   An (optional) elf section name\n"
 msgstr "  SEKCJA    (Opcjonalna) nazwa sekcji formatu ELF\n"
 
-#: gio/gresource-tool.c:565 gio/gsettings-tool.c:706
+#: gio/gresource-tool.c:565 gio/gsettings-tool.c:718
 msgid "  COMMAND   The (optional) command to explain\n"
 msgstr "  POLECENIE (Opcjonalne) polecenie do wyjaśnienia\n"
 
@@ -3656,7 +3684,7 @@ msgstr "ŚCIEŻKA"
 msgid "  PATH      A resource path\n"
 msgstr "  ŚCIEŻKA   Ścieżka do zasobu\n"
 
-#: gio/gsettings-tool.c:49 gio/gsettings-tool.c:70 gio/gsettings-tool.c:911
+#: gio/gsettings-tool.c:49 gio/gsettings-tool.c:70 gio/gsettings-tool.c:923
 #, c-format
 msgid "No such schema “%s”\n"
 msgstr "Brak schematu „%s”\n"
@@ -3687,36 +3715,36 @@ msgstr "Ścieżka musi kończyć się ukośnikiem (/)\n"
 msgid "Path must not contain two adjacent slashes (//)\n"
 msgstr "Ścieżka nie może zawierać dwóch sąsiadujących ukośników (//)\n"
 
-#: gio/gsettings-tool.c:541
+#: gio/gsettings-tool.c:553
 msgid "The provided value is outside of the valid range\n"
 msgstr "Podana wartość jest poza prawidłowym zakresem\n"
 
-#: gio/gsettings-tool.c:548
+#: gio/gsettings-tool.c:560
 msgid "The key is not writable\n"
 msgstr "Klucz nie jest zapisywalny\n"
 
-#: gio/gsettings-tool.c:584
+#: gio/gsettings-tool.c:596
 msgid "List the installed (non-relocatable) schemas"
 msgstr ""
 "Wyświetla listę zainstalowanych schematów (których nie można przenosić)"
 
-#: gio/gsettings-tool.c:590
+#: gio/gsettings-tool.c:602
 msgid "List the installed relocatable schemas"
 msgstr "Wyświetla listę zainstalowanych schematów (które można przenosić)"
 
-#: gio/gsettings-tool.c:596
+#: gio/gsettings-tool.c:608
 msgid "List the keys in SCHEMA"
 msgstr "Wyświetla listę kluczy w SCHEMACIE"
 
-#: gio/gsettings-tool.c:597 gio/gsettings-tool.c:603 gio/gsettings-tool.c:646
+#: gio/gsettings-tool.c:609 gio/gsettings-tool.c:615 gio/gsettings-tool.c:658
 msgid "SCHEMA[:PATH]"
 msgstr "SCHEMAT[:ŚCIEŻKA]"
 
-#: gio/gsettings-tool.c:602
+#: gio/gsettings-tool.c:614
 msgid "List the children of SCHEMA"
 msgstr "Wyświetla listę elementów potomnych SCHEMATU"
 
-#: gio/gsettings-tool.c:608
+#: gio/gsettings-tool.c:620
 msgid ""
 "List keys and values, recursively\n"
 "If no SCHEMA is given, list all keys\n"
@@ -3724,48 +3752,48 @@ msgstr ""
 "Wyświetla listę kluczy i wartości, rekursywnie\n"
 "Jeśli nie podano SCHEMATU, to wyświetla listę wszystkich kluczy\n"
 
-#: gio/gsettings-tool.c:610
+#: gio/gsettings-tool.c:622
 msgid "[SCHEMA[:PATH]]"
 msgstr "[SCHEMAT[:ŚCIEŻKA]]"
 
-#: gio/gsettings-tool.c:615
+#: gio/gsettings-tool.c:627
 msgid "Get the value of KEY"
 msgstr "Uzyskuje wartość KLUCZA"
 
-#: gio/gsettings-tool.c:616 gio/gsettings-tool.c:622 gio/gsettings-tool.c:628
-#: gio/gsettings-tool.c:640 gio/gsettings-tool.c:652
+#: gio/gsettings-tool.c:628 gio/gsettings-tool.c:634 gio/gsettings-tool.c:640
+#: gio/gsettings-tool.c:652 gio/gsettings-tool.c:664
 msgid "SCHEMA[:PATH] KEY"
 msgstr "SCHEMAT[:ŚCIEŻKA] KLUCZ"
 
-#: gio/gsettings-tool.c:621
+#: gio/gsettings-tool.c:633
 msgid "Query the range of valid values for KEY"
 msgstr "Odpytuje zakres prawidłowych wartości KLUCZA"
 
-#: gio/gsettings-tool.c:627
+#: gio/gsettings-tool.c:639
 msgid "Query the description for KEY"
 msgstr "Odpytuje opis KLUCZA"
 
-#: gio/gsettings-tool.c:633
+#: gio/gsettings-tool.c:645
 msgid "Set the value of KEY to VALUE"
 msgstr "Ustawia wartość KLUCZA na WARTOŚĆ"
 
-#: gio/gsettings-tool.c:634
+#: gio/gsettings-tool.c:646
 msgid "SCHEMA[:PATH] KEY VALUE"
 msgstr "SCHEMAT[:ŚCIEŻKA] KLUCZ WARTOŚĆ"
 
-#: gio/gsettings-tool.c:639
+#: gio/gsettings-tool.c:651
 msgid "Reset KEY to its default value"
 msgstr "Przywraca KLUCZ na jego domyślną wartość"
 
-#: gio/gsettings-tool.c:645
+#: gio/gsettings-tool.c:657
 msgid "Reset all keys in SCHEMA to their defaults"
 msgstr "Przywraca wszystkie klucze w SCHEMACIE do domyślnych wartości"
 
-#: gio/gsettings-tool.c:651
+#: gio/gsettings-tool.c:663
 msgid "Check if KEY is writable"
 msgstr "Sprawdza, czy KLUCZ jest zapisywalny"
 
-#: gio/gsettings-tool.c:657
+#: gio/gsettings-tool.c:669
 msgid ""
 "Monitor KEY for changes.\n"
 "If no KEY is specified, monitor all keys in SCHEMA.\n"
@@ -3775,11 +3803,11 @@ msgstr ""
 "Jeśli nie podano KLUCZA, to monitoruje wszystkie klucze w SCHEMACIE.\n"
 "Użycie ^C zatrzymuje monitorowanie.\n"
 
-#: gio/gsettings-tool.c:660
+#: gio/gsettings-tool.c:672
 msgid "SCHEMA[:PATH] [KEY]"
 msgstr "SCHEMAT[:ŚCIEŻKA] [KLUCZ]"
 
-#: gio/gsettings-tool.c:672
+#: gio/gsettings-tool.c:684
 msgid ""
 "Usage:\n"
 "  gsettings --version\n"
@@ -3829,7 +3857,7 @@ msgstr ""
 "Polecenie „gsettings help POLECENIE” wyświetla szczegółową pomoc.\n"
 "\n"
 
-#: gio/gsettings-tool.c:696
+#: gio/gsettings-tool.c:708
 #, c-format
 msgid ""
 "Usage:\n"
@@ -3844,11 +3872,11 @@ msgstr ""
 "%s\n"
 "\n"
 
-#: gio/gsettings-tool.c:702
+#: gio/gsettings-tool.c:714
 msgid "  SCHEMADIR A directory to search for additional schemas\n"
 msgstr "  KATALOG-SCHEMATÓW Katalog do wyszukiwania dodatkowych schematów\n"
 
-#: gio/gsettings-tool.c:710
+#: gio/gsettings-tool.c:722
 msgid ""
 "  SCHEMA    The name of the schema\n"
 "  PATH      The path, for relocatable schemas\n"
@@ -3856,213 +3884,213 @@ msgstr ""
 "  SCHEMAT   Identyfikator schematu\n"
 "  ŚCIEŻKA   Ścieżka (dla schematów, które można przenosić)\n"
 
-#: gio/gsettings-tool.c:715
+#: gio/gsettings-tool.c:727
 msgid "  KEY       The (optional) key within the schema\n"
 msgstr "  KLUCZ     (Opcjonalny) klucz w schemacie\n"
 
-#: gio/gsettings-tool.c:719
+#: gio/gsettings-tool.c:731
 msgid "  KEY       The key within the schema\n"
 msgstr "  KLUCZ     Klucz w schemacie\n"
 
-#: gio/gsettings-tool.c:723
+#: gio/gsettings-tool.c:735
 msgid "  VALUE     The value to set\n"
 msgstr "  WARTOŚĆ   Wartość do ustawienia\n"
 
-#: gio/gsettings-tool.c:778
+#: gio/gsettings-tool.c:790
 #, c-format
 msgid "Could not load schemas from %s: %s\n"
 msgstr "Nie można wczytać schematów z %s: %s\n"
 
-#: gio/gsettings-tool.c:790
+#: gio/gsettings-tool.c:802
 msgid "No schemas installed\n"
 msgstr "Nie zainstalowano schematów\n"
 
-#: gio/gsettings-tool.c:869
+#: gio/gsettings-tool.c:881
 msgid "Empty schema name given\n"
 msgstr "Podano pustą nazwę schematu\n"
 
-#: gio/gsettings-tool.c:924
+#: gio/gsettings-tool.c:936
 #, c-format
 msgid "No such key “%s”\n"
 msgstr "Brak klucza „%s”\n"
 
-#: gio/gsocket.c:413
+#: gio/gsocket.c:417
 msgid "Invalid socket, not initialized"
 msgstr "Nieprawidłowe gniazdo, nie zainicjowano"
 
-#: gio/gsocket.c:420
+#: gio/gsocket.c:424
 #, c-format
 msgid "Invalid socket, initialization failed due to: %s"
 msgstr "Nieprawidłowe gniazdo, zainicjowanie się nie powiodło z powodu: %s"
 
-#: gio/gsocket.c:428
+#: gio/gsocket.c:432
 msgid "Socket is already closed"
 msgstr "Gniazdo jest już zamknięte"
 
-#: gio/gsocket.c:443 gio/gsocket.c:3190 gio/gsocket.c:4420 gio/gsocket.c:4478
+#: gio/gsocket.c:447 gio/gsocket.c:3194 gio/gsocket.c:4427 gio/gsocket.c:4485
 msgid "Socket I/O timed out"
 msgstr "Przekroczono czas oczekiwania wejścia/wyjścia gniazda"
 
-#: gio/gsocket.c:578
+#: gio/gsocket.c:582
 #, c-format
 msgid "creating GSocket from fd: %s"
 msgstr "tworzenie GSocket z fd: %s"
 
-#: gio/gsocket.c:607 gio/gsocket.c:671 gio/gsocket.c:678
+#: gio/gsocket.c:611 gio/gsocket.c:675 gio/gsocket.c:682
 #, c-format
 msgid "Unable to create socket: %s"
 msgstr "Nie można utworzyć gniazda: %s"
 
-#: gio/gsocket.c:671
+#: gio/gsocket.c:675
 msgid "Unknown family was specified"
 msgstr "Podano nieznaną rodzinę"
 
-#: gio/gsocket.c:678
+#: gio/gsocket.c:682
 msgid "Unknown protocol was specified"
 msgstr "Podano nieznany protokół"
 
-#: gio/gsocket.c:1169
+#: gio/gsocket.c:1173
 #, c-format
 msgid "Cannot use datagram operations on a non-datagram socket."
 msgstr "Nie można używać działań datagramowych na niedatagramowych gniazdach."
 
-#: gio/gsocket.c:1186
+#: gio/gsocket.c:1190
 #, c-format
 msgid "Cannot use datagram operations on a socket with a timeout set."
 msgstr ""
 "Nie można używać działań datagramowych na gniazdach z ustawionym czasem "
 "oczekiwania."
 
-#: gio/gsocket.c:1993
+#: gio/gsocket.c:1997
 #, c-format
 msgid "could not get local address: %s"
 msgstr "nie można uzyskać lokalnego adresu: %s"
 
-#: gio/gsocket.c:2039
+#: gio/gsocket.c:2043
 #, c-format
 msgid "could not get remote address: %s"
 msgstr "nie można uzyskać zdalnego adresu: %s"
 
-#: gio/gsocket.c:2105
+#: gio/gsocket.c:2109
 #, c-format
 msgid "could not listen: %s"
 msgstr "nie można nasłuchiwać: %s"
 
-#: gio/gsocket.c:2209
+#: gio/gsocket.c:2213
 #, c-format
 msgid "Error binding to address %s: %s"
 msgstr "Błąd podczas dowiązywania do adresu %s: %s"
 
-#: gio/gsocket.c:2385 gio/gsocket.c:2422 gio/gsocket.c:2532 gio/gsocket.c:2557
-#: gio/gsocket.c:2620 gio/gsocket.c:2678 gio/gsocket.c:2696
+#: gio/gsocket.c:2389 gio/gsocket.c:2426 gio/gsocket.c:2536 gio/gsocket.c:2561
+#: gio/gsocket.c:2624 gio/gsocket.c:2682 gio/gsocket.c:2700
 #, c-format
 msgid "Error joining multicast group: %s"
 msgstr "Błąd podczas dołączania do grupy multicast: %s"
 
-#: gio/gsocket.c:2386 gio/gsocket.c:2423 gio/gsocket.c:2533 gio/gsocket.c:2558
-#: gio/gsocket.c:2621 gio/gsocket.c:2679 gio/gsocket.c:2697
+#: gio/gsocket.c:2390 gio/gsocket.c:2427 gio/gsocket.c:2537 gio/gsocket.c:2562
+#: gio/gsocket.c:2625 gio/gsocket.c:2683 gio/gsocket.c:2701
 #, c-format
 msgid "Error leaving multicast group: %s"
 msgstr "Błąd podczas opuszczania grupy multicast: %s"
 
-#: gio/gsocket.c:2387
+#: gio/gsocket.c:2391
 msgid "No support for source-specific multicast"
 msgstr "Brak obsługi multicastu dla konkretnych źródeł"
 
-#: gio/gsocket.c:2534
+#: gio/gsocket.c:2538
 msgid "Unsupported socket family"
 msgstr "Nieobsługiwana rodzina gniazda"
 
-#: gio/gsocket.c:2559
+#: gio/gsocket.c:2563
 msgid "source-specific not an IPv4 address"
 msgstr "konkretne źródła nie są adresem IPv4"
 
-#: gio/gsocket.c:2583
+#: gio/gsocket.c:2587
 #, c-format
 msgid "Interface name too long"
 msgstr "Nazwa interfejsu jest za długa"
 
-#: gio/gsocket.c:2596 gio/gsocket.c:2646
+#: gio/gsocket.c:2600 gio/gsocket.c:2650
 #, c-format
 msgid "Interface not found: %s"
 msgstr "Nie odnaleziono interfejsu: %s"
 
-#: gio/gsocket.c:2622
+#: gio/gsocket.c:2626
 msgid "No support for IPv4 source-specific multicast"
 msgstr "Brak obsługi multicastu IPv4 dla konkretnych źródeł"
 
-#: gio/gsocket.c:2680
+#: gio/gsocket.c:2684
 msgid "No support for IPv6 source-specific multicast"
 msgstr "Brak obsługi multicastu IPv6 dla konkretnych źródeł"
 
-#: gio/gsocket.c:2889
+#: gio/gsocket.c:2893
 #, c-format
 msgid "Error accepting connection: %s"
 msgstr "Błąd podczas akceptowania połączenia: %s"
 
-#: gio/gsocket.c:3015
+#: gio/gsocket.c:3019
 msgid "Connection in progress"
 msgstr "Trwa połączenie"
 
-#: gio/gsocket.c:3066
+#: gio/gsocket.c:3070
 msgid "Unable to get pending error: "
 msgstr "Nie można uzyskać oczekującego błędu: "
 
-#: gio/gsocket.c:3255
+#: gio/gsocket.c:3259
 #, c-format
 msgid "Error receiving data: %s"
 msgstr "Błąd podczas pobierania danych: %s"
 
-#: gio/gsocket.c:3452
+#: gio/gsocket.c:3456
 #, c-format
 msgid "Error sending data: %s"
 msgstr "Błąd podczas wysyłania danych: %s"
 
-#: gio/gsocket.c:3639
+#: gio/gsocket.c:3643
 #, c-format
 msgid "Unable to shutdown socket: %s"
 msgstr "Nie można zamknąć gniazda: %s"
 
-#: gio/gsocket.c:3720
+#: gio/gsocket.c:3724
 #, c-format
 msgid "Error closing socket: %s"
 msgstr "Błąd podczas zamykania gniazda: %s"
 
-#: gio/gsocket.c:4413
+#: gio/gsocket.c:4420
 #, c-format
 msgid "Waiting for socket condition: %s"
 msgstr "Oczekiwanie na warunek gniazda: %s"
 
-#: gio/gsocket.c:4804 gio/gsocket.c:4820 gio/gsocket.c:4833
+#: gio/gsocket.c:4810 gio/gsocket.c:4826 gio/gsocket.c:4839
 #, c-format
 msgid "Unable to send message: %s"
 msgstr "Nie można wysłać komunikatu: %s"
 
-#: gio/gsocket.c:4805 gio/gsocket.c:4821 gio/gsocket.c:4834
+#: gio/gsocket.c:4811 gio/gsocket.c:4827 gio/gsocket.c:4840
 msgid "Message vectors too large"
 msgstr "Wektory komunikatu są za duże"
 
-#: gio/gsocket.c:4850 gio/gsocket.c:4852 gio/gsocket.c:4999 gio/gsocket.c:5084
-#: gio/gsocket.c:5262 gio/gsocket.c:5302 gio/gsocket.c:5304
+#: gio/gsocket.c:4856 gio/gsocket.c:4858 gio/gsocket.c:5005 gio/gsocket.c:5090
+#: gio/gsocket.c:5268 gio/gsocket.c:5308 gio/gsocket.c:5310
 #, c-format
 msgid "Error sending message: %s"
 msgstr "Błąd podczas wysyłania komunikatu: %s"
 
-#: gio/gsocket.c:5026
+#: gio/gsocket.c:5032
 msgid "GSocketControlMessage not supported on Windows"
 msgstr "GSocketControlMessage nie jest obsługiwane w systemie Windows"
 
-#: gio/gsocket.c:5495 gio/gsocket.c:5571 gio/gsocket.c:5797
+#: gio/gsocket.c:5505 gio/gsocket.c:5581 gio/gsocket.c:5807
 #, c-format
 msgid "Error receiving message: %s"
 msgstr "Błąd podczas pobierania komunikatu: %s"
 
-#: gio/gsocket.c:6070 gio/gsocket.c:6081 gio/gsocket.c:6127
+#: gio/gsocket.c:6090 gio/gsocket.c:6101 gio/gsocket.c:6164
 #, c-format
 msgid "Unable to read socket credentials: %s"
 msgstr "Nie można odczytać danych uwierzytelniających gniazda: %s"
 
-#: gio/gsocket.c:6136
+#: gio/gsocket.c:6173
 msgid "g_socket_get_credentials not implemented for this OS"
 msgstr ""
 "g_socket_get_credentials nie jest zaimplementowane dla tego systemu "
@@ -4082,11 +4110,11 @@ msgstr "Nie można połączyć z %s: "
 msgid "Could not connect: "
 msgstr "Nie można połączyć: "
 
-#: gio/gsocketclient.c:1162 gio/gsocketclient.c:1749
+#: gio/gsocketclient.c:1202 gio/gsocketclient.c:1793
 msgid "Proxying over a non-TCP connection is not supported."
 msgstr "Pośredniczenie przez połączenie niebędące TCP nie jest obsługiwane."
 
-#: gio/gsocketclient.c:1194 gio/gsocketclient.c:1778
+#: gio/gsocketclient.c:1234 gio/gsocketclient.c:1822
 #, c-format
 msgid "Proxy protocol “%s” is not supported."
 msgstr "Protokół pośrednika „%s” nie jest obsługiwany."
@@ -4187,7 +4215,7 @@ msgstr "Pośrednik SOCKSv5 nie obsługuje podanego typu adresu."
 msgid "Unknown SOCKSv5 proxy error."
 msgstr "Nieznany błąd pośrednika SOCKSv5."
 
-#: gio/gtestdbus.c:612 glib/gspawn-win32.c:311
+#: gio/gtestdbus.c:612 glib/gspawn-win32.c:314
 #, c-format
 msgid "Failed to create pipe for communicating with child process (%s)"
 msgstr ""
@@ -4212,44 +4240,67 @@ msgstr "Nie odnaleziono prawidłowych adresów"
 msgid "Error reverse-resolving “%s”: %s"
 msgstr "Błąd podczas odwrotnego rozwiązywania „%s”: %s"
 
-#: gio/gthreadedresolver.c:676 gio/gthreadedresolver.c:755
-#: gio/gthreadedresolver.c:853 gio/gthreadedresolver.c:903
+#. Translators: the placeholder is a DNS record type, such as ‘MX’ or ‘SRV’
+#: gio/gthreadedresolver.c:550 gio/gthreadedresolver.c:572
+#: gio/gthreadedresolver.c:610 gio/gthreadedresolver.c:657
+#: gio/gthreadedresolver.c:686 gio/gthreadedresolver.c:698
+#, c-format
+msgid "Error parsing DNS %s record: malformed DNS packet"
+msgstr ""
+"Błąd podczas przetwarzania wpisu DNS %s: błędnie sformatowany pakiet DNS"
+
+#: gio/gthreadedresolver.c:756 gio/gthreadedresolver.c:893
+#: gio/gthreadedresolver.c:991 gio/gthreadedresolver.c:1041
 #, c-format
 msgid "No DNS record of the requested type for “%s”"
 msgstr "Brak wpisu DNS żądanego typu dla „%s”"
 
-#: gio/gthreadedresolver.c:681 gio/gthreadedresolver.c:858
+#: gio/gthreadedresolver.c:761 gio/gthreadedresolver.c:996
 #, c-format
 msgid "Temporarily unable to resolve “%s”"
 msgstr "Nie można tymczasowo rozwiązać „%s”"
 
-#: gio/gthreadedresolver.c:686 gio/gthreadedresolver.c:863
-#: gio/gthreadedresolver.c:973
+#: gio/gthreadedresolver.c:766 gio/gthreadedresolver.c:1001
+#: gio/gthreadedresolver.c:1111
 #, c-format
 msgid "Error resolving “%s”"
 msgstr "Błąd podczas rozwiązywania „%s”"
 
-#: gio/gtlscertificate.c:431
+#: gio/gthreadedresolver.c:780 gio/gthreadedresolver.c:804
+#: gio/gthreadedresolver.c:829 gio/gthreadedresolver.c:844
+msgid "Malformed DNS packet"
+msgstr "Błędnie sformatowany pakiet DNS"
+
+#: gio/gthreadedresolver.c:886
+#, c-format
+msgid "Failed to parse DNS response for “%s”: "
+msgstr "Przetworzenie odpowiedzi DNS na „%s” się nie powiodło: "
+
+#: gio/gtlscertificate.c:478
 msgid "No PEM-encoded private key found"
 msgstr "Nie odnaleziono klucza prywatnego zakodowanego za pomocą PEM"
 
-#: gio/gtlscertificate.c:441
+#: gio/gtlscertificate.c:488
 msgid "Cannot decrypt PEM-encoded private key"
 msgstr "Nie można odszyfrować klucza prywatnego zakodowanego za pomocą PEM"
 
-#: gio/gtlscertificate.c:452
+#: gio/gtlscertificate.c:499
 msgid "Could not parse PEM-encoded private key"
 msgstr "Nie można przetworzyć klucza prywatnego zakodowanego za pomocą PEM"
 
-#: gio/gtlscertificate.c:479
+#: gio/gtlscertificate.c:526
 msgid "No PEM-encoded certificate found"
 msgstr "Nie odnaleziono certyfikatu zakodowanego za pomocą PEM"
 
-#: gio/gtlscertificate.c:488
+#: gio/gtlscertificate.c:535
 msgid "Could not parse PEM-encoded certificate"
 msgstr "Nie można przetworzyć certyfikatów zakodowanych za pomocą PEM"
 
-#: gio/gtlscertificate.c:844
+#: gio/gtlscertificate.c:796
+msgid "The current TLS backend does not support PKCS #12"
+msgstr "Obecny mechanizm TLS nie obsługuje PKCS #12"
+
+#: gio/gtlscertificate.c:1013
 msgid "This GTlsBackend does not support creating PKCS #11 certificates"
 msgstr ""
 "Ten mechanizm GTlsBackend nie obsługuje tworzenia certyfikatów PKCS #11"
@@ -4276,7 +4327,11 @@ msgstr ""
 msgid "The password entered is incorrect."
 msgstr "Podane hasło jest niepoprawne."
 
-#: gio/gunixconnection.c:166 gio/gunixconnection.c:579
+#: gio/gunixconnection.c:125
+msgid "Sending FD is not supported"
+msgstr "Wysyłanie DP nie jest obsługiwane"
+
+#: gio/gunixconnection.c:178 gio/gunixconnection.c:596
 #, c-format
 msgid "Expecting 1 control message, got %d"
 msgid_plural "Expecting 1 control message, got %d"
@@ -4284,11 +4339,11 @@ msgstr[0] "Oczekiwano jeden komunikat kontrolny, otrzymano %d"
 msgstr[1] "Oczekiwano jeden komunikat kontrolny, otrzymano %d"
 msgstr[2] "Oczekiwano jeden komunikat kontrolny, otrzymano %d"
 
-#: gio/gunixconnection.c:182 gio/gunixconnection.c:591
+#: gio/gunixconnection.c:194 gio/gunixconnection.c:608
 msgid "Unexpected type of ancillary data"
 msgstr "Nieoczekiwany typ podrzędnych danych"
 
-#: gio/gunixconnection.c:200
+#: gio/gunixconnection.c:212
 #, c-format
 msgid "Expecting one fd, but got %d\n"
 msgid_plural "Expecting one fd, but got %d\n"
@@ -4296,39 +4351,43 @@ msgstr[0] "Oczekiwano jedno fd, a otrzymano %d\n"
 msgstr[1] "Oczekiwano jedno fd, a otrzymano %d\n"
 msgstr[2] "Oczekiwano jedno fd, a otrzymano %d\n"
 
-#: gio/gunixconnection.c:219
+#: gio/gunixconnection.c:231
 msgid "Received invalid fd"
 msgstr "Pobrano nieprawidłowe fd"
 
-#: gio/gunixconnection.c:363
+#: gio/gunixconnection.c:238
+msgid "Receiving FD is not supported"
+msgstr "Odbieranie DP nie jest obsługiwane"
+
+#: gio/gunixconnection.c:380
 msgid "Error sending credentials: "
 msgstr "Błąd podczas wysyłania danych uwierzytelniających: "
 
-#: gio/gunixconnection.c:520
+#: gio/gunixconnection.c:537
 #, c-format
 msgid "Error checking if SO_PASSCRED is enabled for socket: %s"
 msgstr ""
 "Błąd podczas sprawdzania, czy zmienna SO_PASSCRED została włączona dla "
 "gniazda: %s"
 
-#: gio/gunixconnection.c:536
+#: gio/gunixconnection.c:553
 #, c-format
 msgid "Error enabling SO_PASSCRED: %s"
 msgstr "Błąd podczas włączania zmiennej SO_PASSCRED: %s"
 
-#: gio/gunixconnection.c:565
+#: gio/gunixconnection.c:582
 msgid ""
 "Expecting to read a single byte for receiving credentials but read zero bytes"
 msgstr ""
 "Oczekiwano odczytania pojedynczego bajtu dla odbieranych danych "
 "uwierzytelniających, ale odczytano zero bajtów"
 
-#: gio/gunixconnection.c:605
+#: gio/gunixconnection.c:622
 #, c-format
 msgid "Not expecting control message, but got %d"
 msgstr "Nie oczekiwano komunikatu kontrolnego, a otrzymano %d"
 
-#: gio/gunixconnection.c:630
+#: gio/gunixconnection.c:647
 #, c-format
 msgid "Error while disabling SO_PASSCRED: %s"
 msgstr "Błąd podczas wyłączania zmiennej SO_PASSCRED: %s"
@@ -4344,7 +4403,7 @@ msgstr "Błąd podczas odczytywania z deskryptora pliku: %s"
 msgid "Error closing file descriptor: %s"
 msgstr "Błąd podczas zamykania deskryptora pliku: %s"
 
-#: gio/gunixmounts.c:2785 gio/gunixmounts.c:2838
+#: gio/gunixmounts.c:2809 gio/gunixmounts.c:2862
 msgid "Filesystem root"
 msgstr "Katalog główny systemu plików"
 
@@ -4355,7 +4414,7 @@ msgstr "Katalog główny systemu plików"
 msgid "Error writing to file descriptor: %s"
 msgstr "Błąd podczas zapisywania do deskryptora pliku: %s"
 
-#: gio/gunixsocketaddress.c:244
+#: gio/gunixsocketaddress.c:251
 msgid "Abstract UNIX domain socket addresses not supported on this system"
 msgstr ""
 "Abstrakcyjne adresy gniazd domen systemu UNIX nie są obsługiwane w tym "
@@ -4507,8 +4566,8 @@ msgstr "Rozwinięcie wiersza exec „%s” z adresem URI „%s” się nie powi
 msgid "Unrepresentable character in conversion input"
 msgstr "Nieprzedstawialny znak na wejściu konwersji"
 
-#: glib/gconvert.c:495 glib/gutf8.c:871 glib/gutf8.c:1083 glib/gutf8.c:1220
-#: glib/gutf8.c:1324
+#: glib/gconvert.c:495 glib/gutf8.c:886 glib/gutf8.c:1099 glib/gutf8.c:1236
+#: glib/gutf8.c:1340
 msgid "Partial character sequence at end of input"
 msgstr "Na końcu wejścia występuje sekwencja odpowiadająca części znaku"
 
@@ -5083,16 +5142,16 @@ msgstr "Na końcu kanału występuje sekwencja odpowiadająca części znaku"
 msgid "Can’t do a raw read in g_io_channel_read_to_end"
 msgstr "Nie można wykonać surowego odczytu w zmiennej g_io_channel_read_to_end"
 
-#: glib/gkeyfile.c:791
+#: glib/gkeyfile.c:794
 msgid "Valid key file could not be found in search dirs"
 msgstr ""
 "Nie można odnaleźć prawidłowego pliku klucza w przeszukiwanych katalogach"
 
-#: glib/gkeyfile.c:828
+#: glib/gkeyfile.c:831
 msgid "Not a regular file"
 msgstr "To nie jest zwykły plik"
 
-#: glib/gkeyfile.c:1283
+#: glib/gkeyfile.c:1289
 #, c-format
 msgid ""
 "Key file contains line “%s” which is not a key-value pair, group, or comment"
@@ -5100,45 +5159,45 @@ msgstr ""
 "Plik klucza zawiera wiersz „%s”, który nie jest parą klucz-wartość, grupą "
 "lub komentarzem"
 
-#: glib/gkeyfile.c:1340
+#: glib/gkeyfile.c:1346
 #, c-format
 msgid "Invalid group name: %s"
 msgstr "Nieprawidłowa nazwa grupy: %s"
 
-#: glib/gkeyfile.c:1362
+#: glib/gkeyfile.c:1370
 msgid "Key file does not start with a group"
 msgstr "Plik klucza nie rozpoczyna się od grupy"
 
-#: glib/gkeyfile.c:1388
+#: glib/gkeyfile.c:1394
 #, c-format
-msgid "Invalid key name: %s"
-msgstr "Nieprawidłowa nazwa klucza: %s"
+msgid "Invalid key name: %.*s"
+msgstr "Nieprawidłowa nazwa klucza: %.*s"
 
-#: glib/gkeyfile.c:1415
+#: glib/gkeyfile.c:1422
 #, c-format
 msgid "Key file contains unsupported encoding “%s”"
 msgstr "Plik klucza zawiera nieobsługiwane kodowanie „%s”"
 
-#: glib/gkeyfile.c:1664 glib/gkeyfile.c:1837 glib/gkeyfile.c:3287
-#: glib/gkeyfile.c:3351 glib/gkeyfile.c:3481 glib/gkeyfile.c:3613
-#: glib/gkeyfile.c:3759 glib/gkeyfile.c:3994 glib/gkeyfile.c:4061
+#: glib/gkeyfile.c:1677 glib/gkeyfile.c:1850 glib/gkeyfile.c:3297
+#: glib/gkeyfile.c:3361 glib/gkeyfile.c:3491 glib/gkeyfile.c:3623
+#: glib/gkeyfile.c:3769 glib/gkeyfile.c:4004 glib/gkeyfile.c:4071
 #, c-format
 msgid "Key file does not have group “%s”"
 msgstr "Plik klucza nie zawiera grupy „%s”"
 
-#: glib/gkeyfile.c:1792
+#: glib/gkeyfile.c:1805
 #, c-format
 msgid "Key file does not have key “%s” in group “%s”"
 msgstr "Plik klucza nie zawiera klucza „%s” w grupie „%s”"
 
-#: glib/gkeyfile.c:1954 glib/gkeyfile.c:2070
+#: glib/gkeyfile.c:1967 glib/gkeyfile.c:2083
 #, c-format
 msgid "Key file contains key “%s” with value “%s” which is not UTF-8"
 msgstr ""
 "Plik klucza zawiera klucz „%s” o wartości „%s”, która nie jest zapisana "
 "w UTF-8"
 
-#: glib/gkeyfile.c:1974 glib/gkeyfile.c:2090 glib/gkeyfile.c:2529
+#: glib/gkeyfile.c:1987 glib/gkeyfile.c:2103 glib/gkeyfile.c:2542
 #, c-format
 msgid ""
 "Key file contains key “%s” which has a value that cannot be interpreted."
@@ -5146,7 +5205,7 @@ msgstr ""
 "Plik klucza zawiera klucz „%s”, który ma wartość niemożliwą do "
 "zinterpretowania."
 
-#: glib/gkeyfile.c:2747 glib/gkeyfile.c:3116
+#: glib/gkeyfile.c:2757 glib/gkeyfile.c:3126
 #, c-format
 msgid ""
 "Key file contains key “%s” in group “%s” which has a value that cannot be "
@@ -5155,36 +5214,36 @@ msgstr ""
 "Plik klucza zawiera klucz „%s” w grupie „%s”, która ma wartość niemożliwą do "
 "zinterpretowania."
 
-#: glib/gkeyfile.c:2825 glib/gkeyfile.c:2902
+#: glib/gkeyfile.c:2835 glib/gkeyfile.c:2912
 #, c-format
 msgid "Key “%s” in group “%s” has value “%s” where %s was expected"
 msgstr "Klucz „%s” w grupie „%s” ma wartość „%s”, podczas gdy oczekiwano %s"
 
-#: glib/gkeyfile.c:4304
+#: glib/gkeyfile.c:4324
 msgid "Key file contains escape character at end of line"
 msgstr "Plik klucza zawiera znak sterujący na końcu linii"
 
-#: glib/gkeyfile.c:4326
+#: glib/gkeyfile.c:4346
 #, c-format
 msgid "Key file contains invalid escape sequence “%s”"
 msgstr "Plik klucza zawiera nieprawidłową sekwencję sterującą „%s”"
 
-#: glib/gkeyfile.c:4470
+#: glib/gkeyfile.c:4491
 #, c-format
 msgid "Value “%s” cannot be interpreted as a number."
 msgstr "Nie można zinterpretować „%s” jako liczby."
 
-#: glib/gkeyfile.c:4484
+#: glib/gkeyfile.c:4505
 #, c-format
 msgid "Integer value “%s” out of range"
 msgstr "Wartość całkowita „%s” jest spoza dopuszczalnego zakresu"
 
-#: glib/gkeyfile.c:4517
+#: glib/gkeyfile.c:4538
 #, c-format
 msgid "Value “%s” cannot be interpreted as a float number."
 msgstr "Nie można zinterpretować „%s” jako liczby zmiennoprzecinkowej."
 
-#: glib/gkeyfile.c:4556
+#: glib/gkeyfile.c:4577
 #, c-format
 msgid "Value “%s” cannot be interpreted as a boolean."
 msgstr "Nie można zinterpretować „%s” jako wartości logicznej."
@@ -5490,7 +5549,7 @@ msgstr "Błąd podczas przetwarzania opcji %s"
 msgid "Missing argument for %s"
 msgstr "Brak parametru dla %s"
 
-#: glib/goption.c:2185
+#: glib/goption.c:2184
 #, c-format
 msgid "Unknown option %s"
 msgstr "Nieznana opcja %s"
@@ -5897,128 +5956,139 @@ msgstr "Tekst jest pusty (lub zawiera tylko spacje)"
 msgid "Failed to read data from child process (%s)"
 msgstr "Odczytanie danych z procesu potomnego (%s) się nie powiodło"
 
-#: glib/gspawn.c:461
+#: glib/gspawn.c:462
 #, c-format
 msgid "Unexpected error in reading data from a child process (%s)"
 msgstr ""
 "Nieoczekiwany błąd podczas odczytywania danych z procesu potomnego (%s)"
 
-#: glib/gspawn.c:546
+#: glib/gspawn.c:547
 #, c-format
 msgid "Unexpected error in waitpid() (%s)"
 msgstr "Nieoczekiwany błąd w waitpid() (%s)"
 
-#: glib/gspawn.c:1166 glib/gspawn-win32.c:1407
+#: glib/gspawn.c:1175 glib/gspawn-win32.c:1438
 #, c-format
 msgid "Child process exited with code %ld"
 msgstr "Proces potomny został zakończony z kodem %ld"
 
-#: glib/gspawn.c:1174
+#: glib/gspawn.c:1183
 #, c-format
 msgid "Child process killed by signal %ld"
 msgstr "Proces potomny został zakończony sygnałem %ld"
 
-#: glib/gspawn.c:1181
+#: glib/gspawn.c:1190
 #, c-format
 msgid "Child process stopped by signal %ld"
 msgstr "Proces potomny został zatrzymany sygnałem %ld"
 
-#: glib/gspawn.c:1188
+#: glib/gspawn.c:1197
 #, c-format
 msgid "Child process exited abnormally"
 msgstr "Proces potomny został nieprawidłowo zakończony"
 
-#: glib/gspawn.c:1864 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
+#: glib/gspawn.c:1890 glib/gspawn-win32.c:353 glib/gspawn-win32.c:361
 #, c-format
 msgid "Failed to read from child pipe (%s)"
 msgstr ""
 "Odczytanie danych z potoku łączącego z procesem potomnym (%s) się nie "
 "powiodło"
 
-#: glib/gspawn.c:2166
+#: glib/gspawn.c:2253
 #, c-format
 msgid "Failed to spawn child process “%s” (%s)"
 msgstr "Wywołanie procesu potomnego „%s” (%s) się nie powiodło"
 
-#: glib/gspawn.c:2283
+#: glib/gspawn.c:2370
 #, c-format
 msgid "Failed to fork (%s)"
 msgstr "Rozdzielenie procesu (%s) się nie powiodło"
 
-#: glib/gspawn.c:2443 glib/gspawn-win32.c:381
+#: glib/gspawn.c:2530 glib/gspawn-win32.c:384
 #, c-format
 msgid "Failed to change to directory “%s” (%s)"
 msgstr "Zmiana katalogu na „%s” (%s) się nie powiodła"
 
-#: glib/gspawn.c:2453
+#: glib/gspawn.c:2540
 #, c-format
 msgid "Failed to execute child process “%s” (%s)"
 msgstr "Wykonanie procesu potomnego „%s” (%s) się nie powiodło"
 
-#: glib/gspawn.c:2463
+#: glib/gspawn.c:2550
 #, c-format
-msgid "Failed to redirect output or input of child process (%s)"
+msgid "Failed to open file to remap file descriptor (%s)"
 msgstr ""
-"Przekierowanie wejścia lub wyjścia procesu potomnego (%s) się nie powiodło"
+"Otwarcie pliku do ponownego mapowania deskryptora pliku (%s) się nie powiodło"
 
-#: glib/gspawn.c:2472
+#: glib/gspawn.c:2558
+#, c-format
+msgid "Failed to duplicate file descriptor for child process (%s)"
+msgstr ""
+"Powielenie deskryptora pliku dla procesu potomnego (%s) się nie powiodło"
+
+#: glib/gspawn.c:2567
 #, c-format
 msgid "Failed to fork child process (%s)"
 msgstr "Rozdzielenie procesu potomnego (%s) się nie powiodło"
 
-#: glib/gspawn.c:2480
+#: glib/gspawn.c:2575
 #, c-format
 msgid "Failed to close file descriptor for child process (%s)"
 msgstr ""
 "Zamknięcie deskryptora pliku dla procesu potomnego (%s) się nie powiodło"
 
-#: glib/gspawn.c:2488
+#: glib/gspawn.c:2583
 #, c-format
 msgid "Unknown error executing child process “%s”"
 msgstr "Podczas wykonywania procesu potomnego „%s” wystąpił nieznany błąd"
 
-#: glib/gspawn.c:2512
+#: glib/gspawn.c:2607
 #, c-format
 msgid "Failed to read enough data from child pid pipe (%s)"
 msgstr ""
 "Odczytanie odpowiedniej liczby danych z potoku procesu potomnego (%s) się "
 "nie powiodło"
 
-#: glib/gspawn-win32.c:294
+#: glib/gspawn-win32.c:297
 msgid "Failed to read data from child process"
 msgstr "Odczytanie danych z procesu potomnego się nie powiodło"
 
-#: glib/gspawn-win32.c:387 glib/gspawn-win32.c:392 glib/gspawn-win32.c:511
+#: glib/gspawn-win32.c:390 glib/gspawn-win32.c:395 glib/gspawn-win32.c:521
 #, c-format
 msgid "Failed to execute child process (%s)"
 msgstr "Wykonanie procesu potomnego (%s) się nie powiodło"
 
-#: glib/gspawn-win32.c:461
+#: glib/gspawn-win32.c:400
+#, c-format
+msgid "Failed to dup() in child process (%s)"
+msgstr "Wykonanie dup() w procesie potomnym (%s) się nie powiodło"
+
+#: glib/gspawn-win32.c:471
 #, c-format
 msgid "Invalid program name: %s"
 msgstr "Nieprawidłowa nazwa programu: %s"
 
-#: glib/gspawn-win32.c:471 glib/gspawn-win32.c:779
+#: glib/gspawn-win32.c:481 glib/gspawn-win32.c:807
 #, c-format
 msgid "Invalid string in argument vector at %d: %s"
 msgstr "Nieprawidłowy ciąg w wektorze parametrów w %d: %s"
 
-#: glib/gspawn-win32.c:482 glib/gspawn-win32.c:794
+#: glib/gspawn-win32.c:492 glib/gspawn-win32.c:823
 #, c-format
 msgid "Invalid string in environment: %s"
 msgstr "Nieprawidłowa sekwencja w środowisku: %s"
 
-#: glib/gspawn-win32.c:775
+#: glib/gspawn-win32.c:803
 #, c-format
 msgid "Invalid working directory: %s"
 msgstr "Nieprawidłowy katalog roboczy: %s"
 
-#: glib/gspawn-win32.c:837
+#: glib/gspawn-win32.c:868
 #, c-format
 msgid "Failed to execute helper program (%s)"
 msgstr "Wykonanie programu pomocniczego (%s) się nie powiodło"
 
-#: glib/gspawn-win32.c:1064
+#: glib/gspawn-win32.c:1096
 msgid ""
 "Unexpected error in g_io_channel_win32_poll() reading data from a child "
 "process"
@@ -6026,21 +6096,21 @@ msgstr ""
 "Podczas odczytu danych z procesu potomnego w g_io_channel_win32_poll() "
 "wystąpił nieznany błąd"
 
-#: glib/gstrfuncs.c:3345 glib/gstrfuncs.c:3447
+#: glib/gstrfuncs.c:3351 glib/gstrfuncs.c:3453
 msgid "Empty string is not a number"
 msgstr "Pusty ciąg nie jest liczbą"
 
-#: glib/gstrfuncs.c:3369
+#: glib/gstrfuncs.c:3375
 #, c-format
 msgid "“%s” is not a signed number"
 msgstr "„%s” nie jest liczbą ze znakiem"
 
-#: glib/gstrfuncs.c:3379 glib/gstrfuncs.c:3483
+#: glib/gstrfuncs.c:3385 glib/gstrfuncs.c:3489
 #, c-format
 msgid "Number “%s” is out of bounds [%s, %s]"
 msgstr "Liczba „%s” jest poza zakresem [%s, %s]"
 
-#: glib/gstrfuncs.c:3473
+#: glib/gstrfuncs.c:3479
 #, c-format
 msgid "“%s” is not an unsigned number"
 msgstr "„%s” nie jest liczbą bez znaku"
@@ -6101,168 +6171,168 @@ msgstr "Adres URI nie jest bezwzględny i nie podano podstawy adresu URI"
 msgid "Missing ‘=’ and parameter value"
 msgstr "Brak „=” i wartości parametru"
 
-#: glib/gutf8.c:817
+#: glib/gutf8.c:832
 msgid "Failed to allocate memory"
 msgstr "Przydzielenie pamięci się nie powiodło"
 
-#: glib/gutf8.c:950
+#: glib/gutf8.c:965
 msgid "Character out of range for UTF-8"
 msgstr "Znak jest poza zakresem dla UTF-8"
 
-#: glib/gutf8.c:1051 glib/gutf8.c:1060 glib/gutf8.c:1190 glib/gutf8.c:1199
-#: glib/gutf8.c:1338 glib/gutf8.c:1435
+#: glib/gutf8.c:1067 glib/gutf8.c:1076 glib/gutf8.c:1206 glib/gutf8.c:1215
+#: glib/gutf8.c:1354 glib/gutf8.c:1451
 msgid "Invalid sequence in conversion input"
 msgstr "Nieprawidłowa sekwencja na wejściu konwersji"
 
-#: glib/gutf8.c:1349 glib/gutf8.c:1446
+#: glib/gutf8.c:1365 glib/gutf8.c:1462
 msgid "Character out of range for UTF-16"
 msgstr "Znak jest poza zakresem dla UTF-16"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2770
+#: glib/gutils.c:2849
 #, c-format
 msgid "%.1f kB"
 msgstr "%.1f kB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2772
+#: glib/gutils.c:2851
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2774
+#: glib/gutils.c:2853
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2776
+#: glib/gutils.c:2855
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2778
+#: glib/gutils.c:2857
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2780
+#: glib/gutils.c:2859
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2784
+#: glib/gutils.c:2863
 #, c-format
 msgid "%.1f KiB"
 msgstr "%.1f KiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2786
+#: glib/gutils.c:2865
 #, c-format
 msgid "%.1f MiB"
 msgstr "%.1f MiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2788
+#: glib/gutils.c:2867
 #, c-format
 msgid "%.1f GiB"
 msgstr "%.1f GiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2790
+#: glib/gutils.c:2869
 #, c-format
 msgid "%.1f TiB"
 msgstr "%.1f TiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2792
+#: glib/gutils.c:2871
 #, c-format
 msgid "%.1f PiB"
 msgstr "%.1f PiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2794
+#: glib/gutils.c:2873
 #, c-format
 msgid "%.1f EiB"
 msgstr "%.1f EiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2798
+#: glib/gutils.c:2877
 #, c-format
 msgid "%.1f kb"
 msgstr "%.1f kb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2800
+#: glib/gutils.c:2879
 #, c-format
 msgid "%.1f Mb"
 msgstr "%.1f Mb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2802
+#: glib/gutils.c:2881
 #, c-format
 msgid "%.1f Gb"
 msgstr "%.1f Gb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2804
+#: glib/gutils.c:2883
 #, c-format
 msgid "%.1f Tb"
 msgstr "%.1f Tb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2806
+#: glib/gutils.c:2885
 #, c-format
 msgid "%.1f Pb"
 msgstr "%.1f Pb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2808
+#: glib/gutils.c:2887
 #, c-format
 msgid "%.1f Eb"
 msgstr "%.1f Eb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2812
+#: glib/gutils.c:2891
 #, c-format
 msgid "%.1f Kib"
 msgstr "%.1f Kib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2814
+#: glib/gutils.c:2893
 #, c-format
 msgid "%.1f Mib"
 msgstr "%.1f Mib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2816
+#: glib/gutils.c:2895
 #, c-format
 msgid "%.1f Gib"
 msgstr "%.1f Gib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2818
+#: glib/gutils.c:2897
 #, c-format
 msgid "%.1f Tib"
 msgstr "%.1f Tib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2820
+#: glib/gutils.c:2899
 #, c-format
 msgid "%.1f Pib"
 msgstr "%.1f Pib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2822
+#: glib/gutils.c:2901
 #, c-format
 msgid "%.1f Eib"
 msgstr "%.1f Eib"
 
-#: glib/gutils.c:2856 glib/gutils.c:2973
+#: glib/gutils.c:2935 glib/gutils.c:3052
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
@@ -6270,7 +6340,7 @@ msgstr[0] "%u bajt"
 msgstr[1] "%u bajty"
 msgstr[2] "%u bajtów"
 
-#: glib/gutils.c:2860
+#: glib/gutils.c:2939
 #, c-format
 msgid "%u bit"
 msgid_plural "%u bits"
@@ -6279,7 +6349,7 @@ msgstr[1] "%u bity"
 msgstr[2] "%u bitów"
 
 #. Translators: the %s in "%s bytes" will always be replaced by a number.
-#: glib/gutils.c:2927
+#: glib/gutils.c:3006
 #, c-format
 msgid "%s byte"
 msgid_plural "%s bytes"
@@ -6288,7 +6358,7 @@ msgstr[1] "%s bajty"
 msgstr[2] "%s bajtów"
 
 #. Translators: the %s in "%s bits" will always be replaced by a number.
-#: glib/gutils.c:2932
+#: glib/gutils.c:3011
 #, c-format
 msgid "%s bit"
 msgid_plural "%s bits"
@@ -6301,32 +6371,32 @@ msgstr[2] "%s bitów"
 #. * compatibility.  Users will not see this string unless a program is using this deprecated function.
 #. * Please translate as literally as possible.
 #.
-#: glib/gutils.c:2986
+#: glib/gutils.c:3065
 #, c-format
 msgid "%.1f KB"
 msgstr "%.1f KB"
 
-#: glib/gutils.c:2991
+#: glib/gutils.c:3070
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
-#: glib/gutils.c:2996
+#: glib/gutils.c:3075
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
-#: glib/gutils.c:3001
+#: glib/gutils.c:3080
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
-#: glib/gutils.c:3006
+#: glib/gutils.c:3085
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
-#: glib/gutils.c:3011
+#: glib/gutils.c:3090
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
index 3bf26f2..792671b 100644 (file)
--- a/po/pt.po
+++ b/po/pt.po
@@ -1,7 +1,7 @@
 # glib's Portuguese Translation
-# Copyright © 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 glib
+# Copyright © 2001-2022 glib
 # Distributed under the same licence as the glib package
-# Duarte Loreto <happyguy_pt@hotmail.com>, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014.
+# Duarte Loreto <happyguy_pt@hotmail.com>, 2001-2014.
 # Pedro Albuquerque <palbuquerque73@gmail.com>, 2015.
 # Sérgio Cardeira <cardeira.sergio@gmail.com>, 2016.
 # Tiago Santos <tiagofsantos81@sapo.pt>, 2014 - 2016.
@@ -12,8 +12,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: 3.12\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/glib/issues\n"
-"POT-Creation-Date: 2022-01-26 14:31+0000\n"
-"PO-Revision-Date: 2022-01-26 14:33+0000\n"
+"POT-Creation-Date: 2022-03-22 15:19+0000\n"
+"PO-Revision-Date: 2022-03-22 22:18+0000\n"
 "Last-Translator: Hugo Carvalho <hugokarvalho@hotmail.com>\n"
 "Language-Team: Portuguese <https://l10n.gnome.org/teams/pt/>\n"
 "Language: pt\n"
@@ -23,6 +23,14 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 "X-Generator: Poedit 3.0.1\n"
 
+#: gio/gappinfo.c:333
+msgid "Setting default applications not supported yet"
+msgstr "Definição de aplicações predefinidas ainda não suportado"
+
+#: gio/gappinfo.c:366
+msgid "Setting application as last used for type not supported yet"
+msgstr "Definir aplicação como última utilizada para tipo ainda não suportado"
+
 #: gio/gapplication.c:500
 msgid "GApplication options"
 msgstr "Opções GApplication"
@@ -46,7 +54,7 @@ msgid "Replace the running instance"
 msgstr "Substituir a instância em execução"
 
 #: gio/gapplication-tool.c:45 gio/gapplication-tool.c:46 gio/gio-tool.c:227
-#: gio/gresource-tool.c:494 gio/gsettings-tool.c:572
+#: gio/gresource-tool.c:494 gio/gsettings-tool.c:584
 msgid "Print help"
 msgstr "Imprimir a ajuda"
 
@@ -58,7 +66,7 @@ msgstr "[COMANDO]"
 msgid "Print version"
 msgstr "Imprimir versão"
 
-#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:578
+#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:590
 msgid "Print version information and exit"
 msgstr "Imprimir informação de versão e sair"
 
@@ -122,8 +130,8 @@ msgstr ""
 "Identificador de aplicação em formato D-Bus (por ex: org.exemplo."
 "visualizador)"
 
-#: gio/gapplication-tool.c:74 gio/glib-compile-resources.c:738
-#: gio/glib-compile-resources.c:744 gio/glib-compile-resources.c:772
+#: gio/gapplication-tool.c:74 gio/glib-compile-resources.c:820
+#: gio/glib-compile-resources.c:826 gio/glib-compile-resources.c:855
 #: gio/gresource-tool.c:501 gio/gresource-tool.c:567
 msgid "FILE"
 msgstr "FICHEIRO"
@@ -148,7 +156,7 @@ msgstr "PARÂMETRO"
 msgid "Optional parameter to the action invocation, in GVariant format"
 msgstr "Parâmetro opcional para a invocação da ação, em formato GVariant"
 
-#: gio/gapplication-tool.c:98 gio/gresource-tool.c:532 gio/gsettings-tool.c:664
+#: gio/gapplication-tool.c:98 gio/gresource-tool.c:532 gio/gsettings-tool.c:676
 #, c-format
 msgid ""
 "Unknown command %s\n"
@@ -162,13 +170,13 @@ msgid "Usage:\n"
 msgstr "Utilização:\n"
 
 #: gio/gapplication-tool.c:116 gio/gresource-tool.c:557
-#: gio/gsettings-tool.c:699
+#: gio/gsettings-tool.c:711
 msgid "Arguments:\n"
 msgstr "Argumentos:\n"
 
 #: gio/gapplication-tool.c:135 gio/gio-tool.c:224
 msgid "[ARGS…]"
-msgstr "[ARGUMENTOS...]"
+msgstr "[ARGS…]"
 
 #: gio/gapplication-tool.c:136
 #, c-format
@@ -285,7 +293,7 @@ msgstr "O fluxo já se encontra fechado"
 msgid "Truncate not supported on base stream"
 msgstr "Truncar não é suportado no fluxo base"
 
-#: gio/gcancellable.c:319 gio/gdbusconnection.c:1873 gio/gdbusprivate.c:1416
+#: gio/gcancellable.c:319 gio/gdbusconnection.c:1857 gio/gdbusprivate.c:1418
 #: gio/gsimpleasyncresult.c:871 gio/gsimpleasyncresult.c:897
 #, c-format
 msgid "Operation was cancelled"
@@ -306,7 +314,7 @@ msgstr "Espaço insuficiente no destino"
 #: gio/gcharsetconverter.c:342 gio/gdatainputstream.c:848
 #: gio/gdatainputstream.c:1266 glib/gconvert.c:449 glib/gconvert.c:879
 #: glib/giochannel.c:1573 glib/giochannel.c:1615 glib/giochannel.c:2470
-#: glib/gutf8.c:875 glib/gutf8.c:1328
+#: glib/gutf8.c:890 glib/gutf8.c:1344
 msgid "Invalid byte sequence in conversion input"
 msgstr "Sequência de bytes inválida na origem da conversão"
 
@@ -316,7 +324,7 @@ msgstr "Sequência de bytes inválida na origem da conversão"
 msgid "Error during conversion: %s"
 msgstr "Erro durante a conversão: %s"
 
-#: gio/gcharsetconverter.c:445 gio/gsocket.c:1143
+#: gio/gcharsetconverter.c:445 gio/gsocket.c:1147
 msgid "Cancellable initialization not supported"
 msgstr "Não é suportada a inicialização cancelável"
 
@@ -330,37 +338,37 @@ msgstr "Conversão do conjunto de caracteres “%s” para “%s” não é supo
 msgid "Could not open converter from “%s” to “%s”"
 msgstr "Impossível abrir conversor de “%s” para “%s”"
 
-#: gio/gcontenttype.c:454
+#: gio/gcontenttype.c:470
 #, c-format
 msgid "%s type"
 msgstr "Tipo %s"
 
-#: gio/gcontenttype-win32.c:192
+#: gio/gcontenttype-win32.c:196
 msgid "Unknown type"
 msgstr "Tipo desconhecido"
 
-#: gio/gcontenttype-win32.c:194
+#: gio/gcontenttype-win32.c:198
 #, c-format
 msgid "%s filetype"
 msgstr "Tipo de ficheiro %s"
 
-#: gio/gcredentials.c:323
+#: gio/gcredentials.c:335
 msgid "GCredentials contains invalid data"
 msgstr "GCredentials contém dados inválidos"
 
-#: gio/gcredentials.c:383 gio/gcredentials.c:667
+#: gio/gcredentials.c:395 gio/gcredentials.c:686
 msgid "GCredentials is not implemented on this OS"
 msgstr "GCredentials não está implementado neste SO"
 
-#: gio/gcredentials.c:538 gio/gcredentials.c:556
+#: gio/gcredentials.c:550 gio/gcredentials.c:568
 msgid "There is no GCredentials support for your platform"
 msgstr "Não existe suporte para GCredentials na sua plataforma"
 
-#: gio/gcredentials.c:607
+#: gio/gcredentials.c:626
 msgid "GCredentials does not contain a process ID on this OS"
 msgstr "GCredentials não contém um ID de processo neste SO"
 
-#: gio/gcredentials.c:661
+#: gio/gcredentials.c:680
 msgid "Credentials spoofing is not possible on this OS"
 msgstr "Simular credenciais não é possível neste SO"
 
@@ -368,17 +376,17 @@ msgstr "Simular credenciais não é possível neste SO"
 msgid "Unexpected early end-of-stream"
 msgstr "Final precoce de fluxo inesperado"
 
-#: gio/gdbusaddress.c:159 gio/gdbusaddress.c:233 gio/gdbusaddress.c:322
+#: gio/gdbusaddress.c:162 gio/gdbusaddress.c:236 gio/gdbusaddress.c:325
 #, c-format
 msgid "Unsupported key “%s” in address entry “%s”"
 msgstr "Chave “%s” não suportada na entrada de endereço “%s”"
 
-#: gio/gdbusaddress.c:172
+#: gio/gdbusaddress.c:175
 #, c-format
 msgid "Meaningless key/value pair combination in address entry “%s”"
 msgstr "Combinação chave/valor sem sentido na entrada de endereço “%s”"
 
-#: gio/gdbusaddress.c:181
+#: gio/gdbusaddress.c:184
 #, c-format
 msgid ""
 "Address “%s” is invalid (need exactly one of path, dir, tmpdir, or abstract "
@@ -387,28 +395,28 @@ msgstr ""
 "Endereço “%s” é inválido (é necessário um de caminho, dir, tmpdir ou chaves "
 "abstratas)"
 
-#: gio/gdbusaddress.c:248 gio/gdbusaddress.c:259 gio/gdbusaddress.c:274
-#: gio/gdbusaddress.c:337 gio/gdbusaddress.c:348
+#: gio/gdbusaddress.c:251 gio/gdbusaddress.c:262 gio/gdbusaddress.c:277
+#: gio/gdbusaddress.c:340 gio/gdbusaddress.c:351
 #, c-format
 msgid "Error in address “%s” — the “%s” attribute is malformed"
 msgstr "Erro no endereço “%s” - o atributo “%s” está mal formado"
 
-#: gio/gdbusaddress.c:418 gio/gdbusaddress.c:682
+#: gio/gdbusaddress.c:421 gio/gdbusaddress.c:680
 #, c-format
 msgid "Unknown or unsupported transport “%s” for address “%s”"
 msgstr "Transporte “%s” desconhecido ou não suportado para o endereço “%s”"
 
-#: gio/gdbusaddress.c:462
+#: gio/gdbusaddress.c:465
 #, c-format
 msgid "Address element “%s” does not contain a colon (:)"
 msgstr "Elemento “%s” de endereço não contém dois-pontos (:)"
 
-#: gio/gdbusaddress.c:471
+#: gio/gdbusaddress.c:474
 #, c-format
 msgid "Transport name in address element “%s” must not be empty"
 msgstr "Nome do transporte no elemento “%s” endereço não pode ser vazio"
 
-#: gio/gdbusaddress.c:492
+#: gio/gdbusaddress.c:495
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” does not contain an equal "
@@ -417,14 +425,14 @@ msgstr ""
 "Par chave/valor %d, “%s”, no elemento “%s” de endereço, não contém um sinal "
 "de igual"
 
-#: gio/gdbusaddress.c:503
+#: gio/gdbusaddress.c:506
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” must not have an empty key"
 msgstr ""
 "Par chave/valor %d, “%s”, no elemento “%s” de endereço não pode ser vazio"
 
-#: gio/gdbusaddress.c:517
+#: gio/gdbusaddress.c:520
 #, c-format
 msgid ""
 "Error unescaping key or value in Key/Value pair %d, “%s”, in address element "
@@ -433,7 +441,7 @@ msgstr ""
 "Erro ao desfazer o escape de chave ou valor no par Chave/Valor %d, “%s”, no "
 "elemento “%s” de endereço"
 
-#: gio/gdbusaddress.c:589
+#: gio/gdbusaddress.c:588
 #, c-format
 msgid ""
 "Error in address “%s” — the unix transport requires exactly one of the keys "
@@ -442,77 +450,78 @@ msgstr ""
 "Erro no endereço “%s” — o transporte unix requer que exatamente uma das "
 "chaves “path” ou “abstract” esteja definida"
 
-#: gio/gdbusaddress.c:625
+#: gio/gdbusaddress.c:623
 #, c-format
 msgid "Error in address “%s” — the host attribute is missing or malformed"
 msgstr "Erro no endereço “%s” — o atributo host está em falta ou mal formado"
 
-#: gio/gdbusaddress.c:639
+#: gio/gdbusaddress.c:637
 #, c-format
 msgid "Error in address “%s” — the port attribute is missing or malformed"
 msgstr "Erro no endereço “%s” — o atributo port está em falta ou mal formado"
 
-#: gio/gdbusaddress.c:653
+#: gio/gdbusaddress.c:651
 #, c-format
 msgid "Error in address “%s” — the noncefile attribute is missing or malformed"
 msgstr ""
 "Erro no endereço “%s” — o atributo noncefile está em falta ou mal formado"
 
-#: gio/gdbusaddress.c:674
+#: gio/gdbusaddress.c:672
 msgid "Error auto-launching: "
-msgstr "Erro ao iniciar automaticamente: "
+msgstr "Erro ao autoiniciar: "
 
-#: gio/gdbusaddress.c:727
+#: gio/gdbusaddress.c:725
 #, c-format
 msgid "Error opening nonce file “%s”: %s"
 msgstr "Erro ao abrir o ficheiro nonce “%s”: %s"
 
-#: gio/gdbusaddress.c:746
+#: gio/gdbusaddress.c:744
 #, c-format
 msgid "Error reading from nonce file “%s”: %s"
 msgstr "Erro ao ler do ficheiro nonce “%s”: %s"
 
-#: gio/gdbusaddress.c:755
+#: gio/gdbusaddress.c:753
 #, c-format
 msgid "Error reading from nonce file “%s”, expected 16 bytes, got %d"
 msgstr "Erro ao ler do ficheiro nonce “%s”, esperados 16 bytes, obtidos %d"
 
-#: gio/gdbusaddress.c:773
+#: gio/gdbusaddress.c:771
 #, c-format
 msgid "Error writing contents of nonce file “%s” to stream:"
 msgstr "Erro ao escrever o conteúdo do ficheiro nonce “%s” para o fluxo:"
 
-#: gio/gdbusaddress.c:988
+#: gio/gdbusaddress.c:986
 msgid "The given address is empty"
 msgstr "O endereço indicado está vazio"
 
-#: gio/gdbusaddress.c:1101
+#: gio/gdbusaddress.c:1099
 #, c-format
-msgid "Cannot spawn a message bus when setuid"
-msgstr "Impossível criar um canal de mensagem quando em setuid"
+msgid "Cannot spawn a message bus when AT_SECURE is set"
+msgstr ""
+"Impossível criar um canal de mensagem quando o AT_SECURE está configurado"
 
-#: gio/gdbusaddress.c:1108
+#: gio/gdbusaddress.c:1106
 msgid "Cannot spawn a message bus without a machine-id: "
 msgstr "Impossível criar um canal de mensagem sem um id de máquina: "
 
-#: gio/gdbusaddress.c:1115
+#: gio/gdbusaddress.c:1113
 #, c-format
 msgid "Cannot autolaunch D-Bus without X11 $DISPLAY"
 msgstr "Não foi possível lançar automaticamente o D-Bus sem o $DISPLAY X-11"
 
-#: gio/gdbusaddress.c:1157
+#: gio/gdbusaddress.c:1155
 #, c-format
 msgid "Error spawning command line “%s”: "
 msgstr "Erro ao criar uma linha de comando “%s”: "
 
-#: gio/gdbusaddress.c:1226
+#: gio/gdbusaddress.c:1224
 #, c-format
 msgid "Cannot determine session bus address (not implemented for this OS)"
 msgstr ""
 "Impossível determinar o endereço do canal de sessão (não implementado para "
 "este SO)"
 
-#: gio/gdbusaddress.c:1375 gio/gdbusconnection.c:7334
+#: gio/gdbusaddress.c:1373 gio/gdbusconnection.c:7318
 #, c-format
 msgid ""
 "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
@@ -521,7 +530,7 @@ msgstr ""
 "Impossível determinar o endereço de canal a partir da variável de sessão "
 "DBUS_STARTER_BUS_TYPE — valor “%s” desconhecido"
 
-#: gio/gdbusaddress.c:1384 gio/gdbusconnection.c:7343
+#: gio/gdbusaddress.c:1382 gio/gdbusconnection.c:7327
 msgid ""
 "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
 "variable is not set"
@@ -529,7 +538,7 @@ msgstr ""
 "Impossível determinar o endereço do canal porque a variável de ambiente "
 "DBUS_STARTER_BUS_TYPE não está definida"
 
-#: gio/gdbusaddress.c:1394
+#: gio/gdbusaddress.c:1392
 #, c-format
 msgid "Unknown bus type %d"
 msgstr "Tipo de canal %d desconhecido"
@@ -559,12 +568,12 @@ msgstr ""
 msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
 msgstr "Cancelado via GDBusAuthObserver::authorize-authenticated-peer"
 
-#: gio/gdbusauthmechanismsha1.c:298
+#: gio/gdbusauthmechanismsha1.c:300
 #, c-format
 msgid "Error when getting information for directory “%s”: %s"
 msgstr "Erro ao obter informação da diretório “%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:313
+#: gio/gdbusauthmechanismsha1.c:315
 #, c-format
 msgid ""
 "Permissions on directory “%s” are malformed. Expected mode 0700, got 0%o"
@@ -572,32 +581,32 @@ msgstr ""
 "As permissões da diretório “%s” estão mal formadas. Esperado o modo 0700, "
 "obtido 0%o"
 
-#: gio/gdbusauthmechanismsha1.c:346 gio/gdbusauthmechanismsha1.c:357
+#: gio/gdbusauthmechanismsha1.c:348 gio/gdbusauthmechanismsha1.c:359
 #, c-format
 msgid "Error creating directory “%s”: %s"
 msgstr "Erro ao criar o diretório “%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:359 gio/gfile.c:1062 gio/gfile.c:1300
-#: gio/gfile.c:1438 gio/gfile.c:1676 gio/gfile.c:1731 gio/gfile.c:1789
-#: gio/gfile.c:1873 gio/gfile.c:1930 gio/gfile.c:1994 gio/gfile.c:2049
-#: gio/gfile.c:3754 gio/gfile.c:3809 gio/gfile.c:4102 gio/gfile.c:4572
-#: gio/gfile.c:4983 gio/gfile.c:5068 gio/gfile.c:5158 gio/gfile.c:5255
-#: gio/gfile.c:5342 gio/gfile.c:5443 gio/gfile.c:8153 gio/gfile.c:8243
-#: gio/gfile.c:8327 gio/win32/gwinhttpfile.c:453
+#: gio/gdbusauthmechanismsha1.c:361 gio/gfile.c:1080 gio/gfile.c:1318
+#: gio/gfile.c:1456 gio/gfile.c:1694 gio/gfile.c:1749 gio/gfile.c:1807
+#: gio/gfile.c:1891 gio/gfile.c:1948 gio/gfile.c:2012 gio/gfile.c:2067
+#: gio/gfile.c:3772 gio/gfile.c:3912 gio/gfile.c:4205 gio/gfile.c:4675
+#: gio/gfile.c:5086 gio/gfile.c:5171 gio/gfile.c:5261 gio/gfile.c:5358
+#: gio/gfile.c:5445 gio/gfile.c:5546 gio/gfile.c:8375 gio/gfile.c:8465
+#: gio/gfile.c:8549 gio/win32/gwinhttpfile.c:453
 msgid "Operation not supported"
 msgstr "Operação não suportada"
 
-#: gio/gdbusauthmechanismsha1.c:402
+#: gio/gdbusauthmechanismsha1.c:404
 #, c-format
 msgid "Error opening keyring “%s” for reading: "
 msgstr "Erro ao abrir o chaveiro “%s” para leitura: "
 
-#: gio/gdbusauthmechanismsha1.c:425 gio/gdbusauthmechanismsha1.c:747
+#: gio/gdbusauthmechanismsha1.c:427 gio/gdbusauthmechanismsha1.c:769
 #, c-format
 msgid "Line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr "Linha %d do chaveiro em “%s” com o conteúdo “%s” está mal formada"
 
-#: gio/gdbusauthmechanismsha1.c:439 gio/gdbusauthmechanismsha1.c:761
+#: gio/gdbusauthmechanismsha1.c:441 gio/gdbusauthmechanismsha1.c:783
 #, c-format
 msgid ""
 "First token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -605,7 +614,7 @@ msgstr ""
 "O primeiro bloco da linha %d do chaveiro em “%s” com o conteúdo “%s” está "
 "mal formado"
 
-#: gio/gdbusauthmechanismsha1.c:453 gio/gdbusauthmechanismsha1.c:775
+#: gio/gdbusauthmechanismsha1.c:455 gio/gdbusauthmechanismsha1.c:797
 #, c-format
 msgid ""
 "Second token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -613,56 +622,56 @@ msgstr ""
 "O segundo bloco da linha %d do chaveiro em “%s” com o conteúdo “%s” está mal "
 "formado"
 
-#: gio/gdbusauthmechanismsha1.c:477
+#: gio/gdbusauthmechanismsha1.c:479
 #, c-format
 msgid "Didn’t find cookie with id %d in the keyring at “%s”"
 msgstr "Impossível encontrar a cookie com o id %d no chaveiro em “%s”"
 
-#: gio/gdbusauthmechanismsha1.c:523
+#: gio/gdbusauthmechanismsha1.c:536
 #, c-format
 msgid "Error creating lock file “%s”: %s"
 msgstr "Erro ao criar o ficheiro de acesso exclusivo “%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:587
+#: gio/gdbusauthmechanismsha1.c:609
 #, c-format
 msgid "Error deleting stale lock file “%s”: %s"
 msgstr "Erro ao eliminar o ficheiro de acesso exclusivo “%s” abandonado: %s"
 
-#: gio/gdbusauthmechanismsha1.c:626
+#: gio/gdbusauthmechanismsha1.c:648
 #, c-format
 msgid "Error closing (unlinked) lock file “%s”: %s"
 msgstr "Erro ao fechar o ficheiro de acesso exclusivo “%s” (não ligado): %s"
 
-#: gio/gdbusauthmechanismsha1.c:637
+#: gio/gdbusauthmechanismsha1.c:659
 #, c-format
 msgid "Error unlinking lock file “%s”: %s"
 msgstr "Erro ao desfazer a ligação do ficheiro de acesso exclusivo “%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:714
+#: gio/gdbusauthmechanismsha1.c:736
 #, c-format
 msgid "Error opening keyring “%s” for writing: "
 msgstr "Erro ao abrir o chaveiro “%s” para escrita: "
 
-#: gio/gdbusauthmechanismsha1.c:908
+#: gio/gdbusauthmechanismsha1.c:930
 #, c-format
 msgid "(Additionally, releasing the lock for “%s” also failed: %s) "
 msgstr "(adicionalmente, também falhou a libertação para “%s”: %s) "
 
-#: gio/gdbusconnection.c:604 gio/gdbusconnection.c:2418
+#: gio/gdbusconnection.c:588 gio/gdbusconnection.c:2402
 msgid "The connection is closed"
 msgstr "A ligação está fechada"
 
-#: gio/gdbusconnection.c:1903
+#: gio/gdbusconnection.c:1887
 msgid "Timeout was reached"
 msgstr "Foi atingido o tempo de expiração"
 
-#: gio/gdbusconnection.c:2541
+#: gio/gdbusconnection.c:2525
 msgid ""
 "Unsupported flags encountered when constructing a client-side connection"
 msgstr ""
 "Foram encontrados parâmetros não suportados ao construir a ligação de cliente"
 
-#: gio/gdbusconnection.c:4269 gio/gdbusconnection.c:4623
+#: gio/gdbusconnection.c:4253 gio/gdbusconnection.c:4607
 #, c-format
 msgid ""
 "No such interface “org.freedesktop.DBus.Properties” on object at path %s"
@@ -670,104 +679,104 @@ msgstr ""
 "Não existe o ambiente “org.freedesktop.DBus.Properties” no objeto no caminho "
 "%s"
 
-#: gio/gdbusconnection.c:4414
+#: gio/gdbusconnection.c:4398
 #, c-format
 msgid "No such property “%s”"
 msgstr "Não existe a propriedade “%s”"
 
-#: gio/gdbusconnection.c:4426
+#: gio/gdbusconnection.c:4410
 #, c-format
 msgid "Property “%s” is not readable"
 msgstr "A propriedade “%s” não pode ser lida"
 
-#: gio/gdbusconnection.c:4437
+#: gio/gdbusconnection.c:4421
 #, c-format
 msgid "Property “%s” is not writable"
 msgstr "A propriedade “%s” não pode ser escrita"
 
-#: gio/gdbusconnection.c:4457
+#: gio/gdbusconnection.c:4441
 #, c-format
 msgid "Error setting property “%s”: Expected type “%s” but got “%s”"
 msgstr ""
 "Erro ao definir a propriedade “%s”: esperado o tipo “%s”, obtido o “%s”"
 
-#: gio/gdbusconnection.c:4562 gio/gdbusconnection.c:4777
-#: gio/gdbusconnection.c:6760
+#: gio/gdbusconnection.c:4546 gio/gdbusconnection.c:4761
+#: gio/gdbusconnection.c:6744
 #, c-format
 msgid "No such interface “%s”"
 msgstr "Não existe o ambiente “%s”"
 
-#: gio/gdbusconnection.c:4999 gio/gdbusconnection.c:7274
+#: gio/gdbusconnection.c:4983 gio/gdbusconnection.c:7258
 #, c-format
 msgid "No such interface “%s” on object at path %s"
 msgstr "Não existe o ambiente “%s” no objeto no caminho %s"
 
-#: gio/gdbusconnection.c:5100
+#: gio/gdbusconnection.c:5084
 #, c-format
 msgid "No such method “%s”"
 msgstr "Não existe o método “%s”"
 
-#: gio/gdbusconnection.c:5131
+#: gio/gdbusconnection.c:5115
 #, c-format
 msgid "Type of message, “%s”, does not match expected type “%s”"
 msgstr "Tipo de mensagem, “%s”, não corresponde ao tipo “%s” esperado"
 
-#: gio/gdbusconnection.c:5334
+#: gio/gdbusconnection.c:5318
 #, c-format
 msgid "An object is already exported for the interface %s at %s"
 msgstr "Já existe um objeto exportado para o ambiente %s em %s"
 
-#: gio/gdbusconnection.c:5561
+#: gio/gdbusconnection.c:5545
 #, c-format
 msgid "Unable to retrieve property %s.%s"
 msgstr "Impossível obter propriedade %s.%s"
 
-#: gio/gdbusconnection.c:5617
+#: gio/gdbusconnection.c:5601
 #, c-format
 msgid "Unable to set property %s.%s"
 msgstr "Impossível definir propriedade %s.%s"
 
-#: gio/gdbusconnection.c:5796
+#: gio/gdbusconnection.c:5780
 #, c-format
 msgid "Method “%s” returned type “%s”, but expected “%s”"
 msgstr "O método “%s” devolveu o tipo “%s”, mas era esperado “%s”"
 
-#: gio/gdbusconnection.c:6872
+#: gio/gdbusconnection.c:6856
 #, c-format
 msgid "Method “%s” on interface “%s” with signature “%s” does not exist"
 msgstr "O método “%s” no ambiente “%s” com a assinatura “%s” não existe"
 
-#: gio/gdbusconnection.c:6993
+#: gio/gdbusconnection.c:6977
 #, c-format
 msgid "A subtree is already exported for %s"
 msgstr "Já existe uma subárvore exportada para %s"
 
-#: gio/gdbusconnection.c:7282
+#: gio/gdbusconnection.c:7266
 #, c-format
 msgid "Object does not exist at path “%s”"
 msgstr "O objeto não existe no caminho \"%s\""
 
-#: gio/gdbusmessage.c:1311
+#: gio/gdbusmessage.c:1301
 msgid "type is INVALID"
 msgstr "tipo é INVÁLIDO"
 
-#: gio/gdbusmessage.c:1322
+#: gio/gdbusmessage.c:1312
 msgid "METHOD_CALL message: PATH or MEMBER header field is missing"
 msgstr "Mensagem METHOD_CALL: falta campo de cabeçalho PATH ou MEMBER"
 
-#: gio/gdbusmessage.c:1333
+#: gio/gdbusmessage.c:1323
 msgid "METHOD_RETURN message: REPLY_SERIAL header field is missing"
 msgstr "Mensagem ETHOD_RETURN: falta campo de cabeçalho REPLY_SERIAL"
 
-#: gio/gdbusmessage.c:1345
+#: gio/gdbusmessage.c:1335
 msgid "ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing"
 msgstr "Mensagem ERROR: Falta campo de cabeçalho REPLY_SERIAL ou ERROR_NAME"
 
-#: gio/gdbusmessage.c:1358
+#: gio/gdbusmessage.c:1348
 msgid "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing"
 msgstr "Mensagem SIGNAL: falta campo de cabeçalho PATH, INTERFACE ou MEMBER"
 
-#: gio/gdbusmessage.c:1366
+#: gio/gdbusmessage.c:1356
 msgid ""
 "SIGNAL message: The PATH header field is using the reserved value /org/"
 "freedesktop/DBus/Local"
@@ -775,7 +784,7 @@ msgstr ""
 "Mensagem SIGNAL: o campo de cabeçalho PATH está a utilizar o valor "
 "reservado /org/freedesktop/DBus/Local"
 
-#: gio/gdbusmessage.c:1374
+#: gio/gdbusmessage.c:1364
 msgid ""
 "SIGNAL message: The INTERFACE header field is using the reserved value org."
 "freedesktop.DBus.Local"
@@ -783,19 +792,19 @@ msgstr ""
 "Mensagem SIGNAL: o campo de cabeçalho INTERFACE está a utilizar o valor "
 "reservado org.freedesktop.DBus.Local"
 
-#: gio/gdbusmessage.c:1422 gio/gdbusmessage.c:1482
+#: gio/gdbusmessage.c:1412 gio/gdbusmessage.c:1472
 #, c-format
 msgid "Wanted to read %lu byte but only got %lu"
 msgid_plural "Wanted to read %lu bytes but only got %lu"
 msgstr[0] "Tentativa de ler %lu byte mas só obtido %lu"
 msgstr[1] "Tentativa de ler %lu bytes mas só obtidos %lu"
 
-#: gio/gdbusmessage.c:1436
+#: gio/gdbusmessage.c:1426
 #, c-format
 msgid "Expected NUL byte after the string “%s” but found byte %d"
 msgstr "Esperado o byte NUL após a cadeia “%s” mas encontrado o byte %d"
 
-#: gio/gdbusmessage.c:1455
+#: gio/gdbusmessage.c:1445
 #, c-format
 msgid ""
 "Expected valid UTF-8 string but found invalid bytes at byte offset %d "
@@ -805,21 +814,21 @@ msgstr ""
 "de bytes %d (comprimento da cadeia é %d). A cadeia UTF-8 válida até esse "
 "ponto era “%s”"
 
-#: gio/gdbusmessage.c:1519 gio/gdbusmessage.c:1795 gio/gdbusmessage.c:2006
+#: gio/gdbusmessage.c:1509 gio/gdbusmessage.c:1785 gio/gdbusmessage.c:1996
 msgid "Value nested too deeply"
 msgstr "Origem do valor muito antiga"
 
-#: gio/gdbusmessage.c:1687
+#: gio/gdbusmessage.c:1677
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus object path"
 msgstr "Valor processado “%s” não é um caminho de objeto D-Bus válido"
 
-#: gio/gdbusmessage.c:1711
+#: gio/gdbusmessage.c:1701
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature"
 msgstr "Valor processado “%s” não é uma assinatura D-Bus válida"
 
-#: gio/gdbusmessage.c:1762
+#: gio/gdbusmessage.c:1752
 #, c-format
 msgid ""
 "Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB)."
@@ -832,7 +841,7 @@ msgstr[1] ""
 "Encontrado um vetor de %u bytes de comprimento. Tamanho máximo é 2<<26 bytes "
 "(64MiB)."
 
-#: gio/gdbusmessage.c:1782
+#: gio/gdbusmessage.c:1772
 #, c-format
 msgid ""
 "Encountered array of type “a%c”, expected to have a length a multiple of %u "
@@ -841,16 +850,16 @@ msgstr ""
 "Encontrado um vetor de tipo \"a%c\", esperado um comprimento múltiplo de %u "
 "bytes, obtidos %u bytes de comprimento"
 
-#: gio/gdbusmessage.c:1936 gio/gdbusmessage.c:2655
+#: gio/gdbusmessage.c:1926 gio/gdbusmessage.c:2645
 msgid "Empty structures (tuples) are not allowed in D-Bus"
 msgstr "Estruturas vazias (tuples) não são permitidas no D-Bus"
 
-#: gio/gdbusmessage.c:1990
+#: gio/gdbusmessage.c:1980
 #, c-format
 msgid "Parsed value “%s” for variant is not a valid D-Bus signature"
 msgstr "Valor processado “%s” para variante não é uma assinatura D-Bus válida"
 
-#: gio/gdbusmessage.c:2031
+#: gio/gdbusmessage.c:2021
 #, c-format
 msgid ""
 "Error deserializing GVariant with type string “%s” from the D-Bus wire format"
@@ -858,7 +867,7 @@ msgstr ""
 "Erro ao remover serialização GVariant com a cadeia de tipo “%s” do formato "
 "de ligação D-Bus"
 
-#: gio/gdbusmessage.c:2216
+#: gio/gdbusmessage.c:2206
 #, c-format
 msgid ""
 "Invalid endianness value. Expected 0x6c (“l”) or 0x42 (“B”) but found value "
@@ -867,28 +876,28 @@ msgstr ""
 "Valor de \"endianness\" inválido. Esperado 0x6c (“l”) ou 0x42 (“B”) mas "
 "obtido o valor 0x%02x"
 
-#: gio/gdbusmessage.c:2235
+#: gio/gdbusmessage.c:2225
 #, c-format
 msgid "Invalid major protocol version. Expected 1 but found %d"
 msgstr "Versão principal de protocolo inválida. Esperada 1 mas obtida %d"
 
-#: gio/gdbusmessage.c:2293 gio/gdbusmessage.c:2891
+#: gio/gdbusmessage.c:2283 gio/gdbusmessage.c:2881
 msgid "Signature header found but is not of type signature"
 msgstr "Assinatura de cabeçalho encontrada, mas não do tipo assinatura"
 
-#: gio/gdbusmessage.c:2305
+#: gio/gdbusmessage.c:2295
 #, c-format
 msgid "Signature header with signature “%s” found but message body is empty"
 msgstr ""
 "Assinatura de cabeçalho com a assinatura “%s” encontrada, mas o corpo da "
 "mensagem está vazio"
 
-#: gio/gdbusmessage.c:2320
+#: gio/gdbusmessage.c:2310
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature (for body)"
 msgstr "Valor processado “%s” não é uma assinatura D-Bus válida (para corpo)"
 
-#: gio/gdbusmessage.c:2352
+#: gio/gdbusmessage.c:2342
 #, 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"
@@ -899,11 +908,11 @@ msgstr[1] ""
 "Nenhum cabeçalho de assinatura na mensagem mas o corpo da mensagem tem %u "
 "bytes"
 
-#: gio/gdbusmessage.c:2362
+#: gio/gdbusmessage.c:2352
 msgid "Cannot deserialize message: "
 msgstr "Impossível remover serialização da mensagem: "
 
-#: gio/gdbusmessage.c:2708
+#: gio/gdbusmessage.c:2698
 #, c-format
 msgid ""
 "Error serializing GVariant with type string “%s” to the D-Bus wire format"
@@ -911,7 +920,7 @@ msgstr ""
 "Erro ao serializar GVariant com a cadeia de tipo “%s” para o formato de "
 "ligação D-Bus"
 
-#: gio/gdbusmessage.c:2845
+#: gio/gdbusmessage.c:2835
 #, c-format
 msgid ""
 "Number of file descriptors in message (%d) differs from header field (%d)"
@@ -919,18 +928,18 @@ msgstr ""
 "Número de descritores de ficheiro na mensagem (%d) difere do campo no "
 "cabeçalho (%d)"
 
-#: gio/gdbusmessage.c:2853
+#: gio/gdbusmessage.c:2843
 msgid "Cannot serialize message: "
 msgstr "Impossível serializar a mensagem: "
 
-#: gio/gdbusmessage.c:2906
+#: gio/gdbusmessage.c:2896
 #, c-format
 msgid "Message body has signature “%s” but there is no signature header"
 msgstr ""
 "O corpo da mensagem tem a assinatura “%s” mas não existe a assinatura de "
 "cabeçalho"
 
-#: gio/gdbusmessage.c:2916
+#: gio/gdbusmessage.c:2906
 #, c-format
 msgid ""
 "Message body has type signature “%s” but signature in the header field is "
@@ -939,55 +948,55 @@ msgstr ""
 "O corpo da mensagem tem o tipo de assinatura “%s”, mas a assinatura no campo "
 "de cabeçalho é “%s”"
 
-#: gio/gdbusmessage.c:2932
+#: gio/gdbusmessage.c:2922
 #, c-format
 msgid "Message body is empty but signature in the header field is “(%s)”"
 msgstr ""
 "O corpo da mensagem está vazio mas a assinatura no campo de cabeçalho é "
 "“(%s)”"
 
-#: gio/gdbusmessage.c:3487
+#: gio/gdbusmessage.c:3477
 #, c-format
 msgid "Error return with body of type “%s”"
 msgstr "Resposta de erro com corpo do tipo “%s”"
 
-#: gio/gdbusmessage.c:3495
+#: gio/gdbusmessage.c:3485
 msgid "Error return with empty body"
 msgstr "Resposta de erro com corpo vazio"
 
-#: gio/gdbusprivate.c:2246
+#: gio/gdbusprivate.c:2185
 #, c-format
 msgid "(Type any character to close this window)\n"
 msgstr "(insira um qualquer carácter para fechar esta janela)\n"
 
-#: gio/gdbusprivate.c:2420
+#: gio/gdbusprivate.c:2371
 #, c-format
 msgid "Session dbus not running, and autolaunch failed"
 msgstr ""
 "Dbus de sessão não se encontra em execução e o início automático falhou"
 
-#: gio/gdbusprivate.c:2443
+#: gio/gdbusprivate.c:2394
 #, c-format
 msgid "Unable to get Hardware profile: %s"
 msgstr "Impossível obter o perfil de equipamento: %s"
 
 #. Translators: Both placeholders are file paths
-#: gio/gdbusprivate.c:2494
+#: gio/gdbusprivate.c:2445
 #, c-format
 msgid "Unable to load %s or %s: "
 msgstr "Incapaz de carregar %s ou %s: "
 
-#: gio/gdbusproxy.c:1569
+#: gio/gdbusproxy.c:1573
 #, c-format
 msgid "Error calling StartServiceByName for %s: "
 msgstr "Erro ao invocar StartServiceByName para %s: "
 
-#: gio/gdbusproxy.c:1592
+#: gio/gdbusproxy.c:1596
 #, c-format
 msgid "Unexpected reply %d from StartServiceByName(\"%s\") method"
 msgstr "Resposta %d inesperada do método StartServiceByName(“%s”)"
 
-#: gio/gdbusproxy.c:2699 gio/gdbusproxy.c:2834
+#: gio/gdbusproxy.c:2707 gio/gdbusproxy.c:2842
 #, c-format
 msgid ""
 "Cannot invoke method; proxy is for the well-known name %s without an owner, "
@@ -1042,67 +1051,67 @@ msgstr ""
 "\n"
 "Utilize \"%s COMMAND --help\" para obter ajuda sobre cada comando.\n"
 
-#: gio/gdbus-tool.c:201 gio/gdbus-tool.c:273 gio/gdbus-tool.c:345
-#: gio/gdbus-tool.c:369 gio/gdbus-tool.c:859 gio/gdbus-tool.c:1236
-#: gio/gdbus-tool.c:1724
+#: gio/gdbus-tool.c:202 gio/gdbus-tool.c:274 gio/gdbus-tool.c:346
+#: gio/gdbus-tool.c:370 gio/gdbus-tool.c:860 gio/gdbus-tool.c:1245
+#: gio/gdbus-tool.c:1733
 #, c-format
 msgid "Error: %s\n"
 msgstr "Erro: %s\n"
 
-#: gio/gdbus-tool.c:212 gio/gdbus-tool.c:286 gio/gdbus-tool.c:1740
+#: gio/gdbus-tool.c:213 gio/gdbus-tool.c:287 gio/gdbus-tool.c:1749
 #, c-format
 msgid "Error parsing introspection XML: %s\n"
 msgstr "Erro ao processar XML de introspeção: %s\n"
 
-#: gio/gdbus-tool.c:250
+#: gio/gdbus-tool.c:251
 #, c-format
 msgid "Error: %s is not a valid name\n"
 msgstr "Erro: %s não é um nome válido\n"
 
-#: gio/gdbus-tool.c:255 gio/gdbus-tool.c:745 gio/gdbus-tool.c:1060
-#: gio/gdbus-tool.c:1890 gio/gdbus-tool.c:2130
+#: gio/gdbus-tool.c:256 gio/gdbus-tool.c:746 gio/gdbus-tool.c:1064
+#: gio/gdbus-tool.c:1899 gio/gdbus-tool.c:2139
 #, c-format
 msgid "Error: %s is not a valid object path\n"
 msgstr "Erro: %s não é um caminho de objeto válido\n"
 
-#: gio/gdbus-tool.c:403
+#: gio/gdbus-tool.c:404
 msgid "Connect to the system bus"
 msgstr "Ligar ao bus de sistema"
 
-#: gio/gdbus-tool.c:404
+#: gio/gdbus-tool.c:405
 msgid "Connect to the session bus"
 msgstr "Ligar ao bus de sessão"
 
-#: gio/gdbus-tool.c:405
+#: gio/gdbus-tool.c:406
 msgid "Connect to given D-Bus address"
 msgstr "Ligar ao endereço D-Bus especificado"
 
-#: gio/gdbus-tool.c:415
+#: gio/gdbus-tool.c:416
 msgid "Connection Endpoint Options:"
 msgstr "Opções de destino da ligação:"
 
-#: gio/gdbus-tool.c:416
+#: gio/gdbus-tool.c:417
 msgid "Options specifying the connection endpoint"
 msgstr "Opções que especificam o destino da ligação"
 
-#: gio/gdbus-tool.c:439
+#: gio/gdbus-tool.c:440
 #, c-format
 msgid "No connection endpoint specified"
 msgstr "Nenhum destino de ligação especificado"
 
-#: gio/gdbus-tool.c:449
+#: gio/gdbus-tool.c:450
 #, c-format
 msgid "Multiple connection endpoints specified"
 msgstr "Múltiplos destinos de ligação especificados"
 
-#: gio/gdbus-tool.c:522
+#: gio/gdbus-tool.c:523
 #, c-format
 msgid ""
 "Warning: According to introspection data, interface “%s” does not exist\n"
 msgstr ""
 "Aviso: De acordo com os dados de introspeção, o ambiente “%s” não existe\n"
 
-#: gio/gdbus-tool.c:531
+#: gio/gdbus-tool.c:532
 #, c-format
 msgid ""
 "Warning: According to introspection data, method “%s” does not exist on "
@@ -1111,160 +1120,164 @@ msgstr ""
 "Aviso: De acordo com os dados de introspeção, o método “%s” não existe no "
 "ambiente “%s”\n"
 
-#: gio/gdbus-tool.c:593
+#: gio/gdbus-tool.c:594
 msgid "Optional destination for signal (unique name)"
 msgstr "Destino opcional para o sinal (nome único)"
 
-#: gio/gdbus-tool.c:594
+#: gio/gdbus-tool.c:595
 msgid "Object path to emit signal on"
 msgstr "Caminho do objeto sobre o qual emitir sinal"
 
-#: gio/gdbus-tool.c:595
+#: gio/gdbus-tool.c:596
 msgid "Signal and interface name"
 msgstr "Nome do sinal e do ambiente"
 
-#: gio/gdbus-tool.c:628
+#: gio/gdbus-tool.c:629
 msgid "Emit a signal."
 msgstr "Emitir um sinal."
 
-#: gio/gdbus-tool.c:683 gio/gdbus-tool.c:997 gio/gdbus-tool.c:1827
-#: gio/gdbus-tool.c:2059 gio/gdbus-tool.c:2279
+#: gio/gdbus-tool.c:684 gio/gdbus-tool.c:1001 gio/gdbus-tool.c:1836
+#: gio/gdbus-tool.c:2068 gio/gdbus-tool.c:2288
 #, c-format
 msgid "Error connecting: %s\n"
 msgstr "Erro ao ligar: %s\n"
 
-#: gio/gdbus-tool.c:703
+#: gio/gdbus-tool.c:704
 #, c-format
 msgid "Error: %s is not a valid unique bus name.\n"
 msgstr "Erro: %s não é um nome único de canal (bus) válido.\n"
 
-#: gio/gdbus-tool.c:722 gio/gdbus-tool.c:1040 gio/gdbus-tool.c:1870
+#: gio/gdbus-tool.c:723 gio/gdbus-tool.c:1044 gio/gdbus-tool.c:1879
 msgid "Error: Object path is not specified\n"
 msgstr "Erro: caminho de objeto não está especificado\n"
 
-#: gio/gdbus-tool.c:765
+#: gio/gdbus-tool.c:766
 msgid "Error: Signal name is not specified\n"
 msgstr "Erro: nome do sinal não é especificado\n"
 
-#: gio/gdbus-tool.c:779
+#: gio/gdbus-tool.c:780
 #, c-format
 msgid "Error: Signal name “%s” is invalid\n"
 msgstr "Erro: nome do sinal “%s” é inválido\n"
 
-#: gio/gdbus-tool.c:791
+#: gio/gdbus-tool.c:792
 #, c-format
 msgid "Error: %s is not a valid interface name\n"
 msgstr "Erro: %s não é um nome de ambiente válido\n"
 
-#: gio/gdbus-tool.c:797
+#: gio/gdbus-tool.c:798
 #, c-format
 msgid "Error: %s is not a valid member name\n"
 msgstr "Erro: %s não é um nome de membro válido\n"
 
 #. Use the original non-"parse-me-harder" error
-#: gio/gdbus-tool.c:834 gio/gdbus-tool.c:1172
+#: gio/gdbus-tool.c:835 gio/gdbus-tool.c:1176
 #, c-format
 msgid "Error parsing parameter %d: %s\n"
 msgstr "Erro ao processar o parâmetro %d: %s\n"
 
-#: gio/gdbus-tool.c:866
+#: gio/gdbus-tool.c:867
 #, c-format
 msgid "Error flushing connection: %s\n"
 msgstr "Erro ao despejar a ligação: %s\n"
 
-#: gio/gdbus-tool.c:893
+#: gio/gdbus-tool.c:895
 msgid "Destination name to invoke method on"
 msgstr "Nome de destino no qual invocar o método"
 
-#: gio/gdbus-tool.c:894
+#: gio/gdbus-tool.c:896
 msgid "Object path to invoke method on"
 msgstr "Caminho do objeto no qual invocar o método"
 
-#: gio/gdbus-tool.c:895
+#: gio/gdbus-tool.c:897
 msgid "Method and interface name"
 msgstr "Método e nome de ambiente"
 
-#: gio/gdbus-tool.c:896
+#: gio/gdbus-tool.c:898
 msgid "Timeout in seconds"
 msgstr "Tempo limite em segundos"
 
-#: gio/gdbus-tool.c:942
+#: gio/gdbus-tool.c:899
+msgid "Allow interactive authorization"
+msgstr "Permitir autorização interativa"
+
+#: gio/gdbus-tool.c:946
 msgid "Invoke a method on a remote object."
 msgstr "Invocar um método num objeto remoto."
 
-#: gio/gdbus-tool.c:1014 gio/gdbus-tool.c:1844 gio/gdbus-tool.c:2084
+#: gio/gdbus-tool.c:1018 gio/gdbus-tool.c:1853 gio/gdbus-tool.c:2093
 msgid "Error: Destination is not specified\n"
 msgstr "Erro: Destino não está especificado\n"
 
-#: gio/gdbus-tool.c:1025 gio/gdbus-tool.c:1861 gio/gdbus-tool.c:2095
+#: gio/gdbus-tool.c:1029 gio/gdbus-tool.c:1870 gio/gdbus-tool.c:2104
 #, c-format
 msgid "Error: %s is not a valid bus name\n"
 msgstr "Erro: %s não é um nome de canal válido\n"
 
-#: gio/gdbus-tool.c:1075
+#: gio/gdbus-tool.c:1079
 msgid "Error: Method name is not specified\n"
 msgstr "Erro: nome de método não é especificado\n"
 
-#: gio/gdbus-tool.c:1086
+#: gio/gdbus-tool.c:1090
 #, c-format
 msgid "Error: Method name “%s” is invalid\n"
 msgstr "Erro: nome de método “%s” é inválido\n"
 
-#: gio/gdbus-tool.c:1164
+#: gio/gdbus-tool.c:1168
 #, c-format
 msgid "Error parsing parameter %d of type “%s”: %s\n"
 msgstr "Erro ao processar o parâmetro %d do tipo “%s”: %s\n"
 
-#: gio/gdbus-tool.c:1190
+#: gio/gdbus-tool.c:1194
 #, c-format
 msgid "Error adding handle %d: %s\n"
 msgstr "Erro ao adicionar manipulador: %d: %s\n"
 
-#: gio/gdbus-tool.c:1686
+#: gio/gdbus-tool.c:1695
 msgid "Destination name to introspect"
 msgstr "Nome do destino sobre o qual realizar a introspeção"
 
-#: gio/gdbus-tool.c:1687
+#: gio/gdbus-tool.c:1696
 msgid "Object path to introspect"
 msgstr "Caminho do objeto sobre o qual realizar a introspeção"
 
-#: gio/gdbus-tool.c:1688
+#: gio/gdbus-tool.c:1697
 msgid "Print XML"
 msgstr "Imprimir XML"
 
-#: gio/gdbus-tool.c:1689
+#: gio/gdbus-tool.c:1698
 msgid "Introspect children"
 msgstr "Realizar introspeção dos sub processos"
 
-#: gio/gdbus-tool.c:1690
+#: gio/gdbus-tool.c:1699
 msgid "Only print properties"
 msgstr "Imprimir só propriedades"
 
-#: gio/gdbus-tool.c:1779
+#: gio/gdbus-tool.c:1788
 msgid "Introspect a remote object."
 msgstr "Realizar a introspeção de um objeto remoto."
 
-#: gio/gdbus-tool.c:1985
+#: gio/gdbus-tool.c:1994
 msgid "Destination name to monitor"
 msgstr "Nome do destino a monitorizar"
 
-#: gio/gdbus-tool.c:1986
+#: gio/gdbus-tool.c:1995
 msgid "Object path to monitor"
 msgstr "Caminho do objeto a monitorizar"
 
-#: gio/gdbus-tool.c:2011
+#: gio/gdbus-tool.c:2020
 msgid "Monitor a remote object."
 msgstr "Monitorizar um objeto remoto."
 
-#: gio/gdbus-tool.c:2069
+#: gio/gdbus-tool.c:2078
 msgid "Error: can’t monitor a non-message-bus connection\n"
 msgstr "Erro: impossível monitorizar um ligação non-message-bus\n"
 
-#: gio/gdbus-tool.c:2193
+#: gio/gdbus-tool.c:2202
 msgid "Service to activate before waiting for the other one (well-known name)"
 msgstr "Serviço a ativar enquanto espera por um outro (nome conhecido)"
 
-#: gio/gdbus-tool.c:2196
+#: gio/gdbus-tool.c:2205
 msgid ""
 "Timeout to wait for before exiting with an error (seconds); 0 for no timeout "
 "(default)"
@@ -1272,64 +1285,69 @@ msgstr ""
 "Compasso de espera antes de sair com erro (segundos); 0 para nenhum "
 "(predefinição)"
 
-#: gio/gdbus-tool.c:2244
+#: gio/gdbus-tool.c:2253
 msgid "[OPTION…] BUS-NAME"
-msgstr "[OPÇÃO...] NOME-"
+msgstr "[OPÇÃO…] BUS-NAME"
 
-#: gio/gdbus-tool.c:2245
+#: gio/gdbus-tool.c:2254
 msgid "Wait for a bus name to appear."
 msgstr "Esperar por um nome de canal aparecer."
 
-#: gio/gdbus-tool.c:2321
+#: gio/gdbus-tool.c:2330
 msgid "Error: A service to activate for must be specified.\n"
 msgstr "Erro: um serviço para ser ativado precisa ser especificado.\n"
 
-#: gio/gdbus-tool.c:2326
+#: gio/gdbus-tool.c:2335
 msgid "Error: A service to wait for must be specified.\n"
 msgstr "Erro: um serviço a ser esperado precisa ser especificado\n"
 
-#: gio/gdbus-tool.c:2331
+#: gio/gdbus-tool.c:2340
 msgid "Error: Too many arguments.\n"
 msgstr "Erro: demasiados argumentos\n"
 
-#: gio/gdbus-tool.c:2339 gio/gdbus-tool.c:2346
+#: gio/gdbus-tool.c:2348 gio/gdbus-tool.c:2355
 #, c-format
 msgid "Error: %s is not a valid well-known bus name.\n"
 msgstr "Erro: %s não é um nome de canal válido\n"
 
-#: gio/gdesktopappinfo.c:2106 gio/gdesktopappinfo.c:4935
+#: gio/gdebugcontrollerdbus.c:358
+#, c-format
+msgid "Not authorized to change debug settings"
+msgstr "Não autorizado a alterar as definições de depuração"
+
+#: gio/gdesktopappinfo.c:2178 gio/gdesktopappinfo.c:5105
 msgid "Unnamed"
 msgstr "Sem nome"
 
-#: gio/gdesktopappinfo.c:2516
+#: gio/gdesktopappinfo.c:2588
 msgid "Desktop file didn’t specify Exec field"
 msgstr "Ficheiro do ambiente de trabalho não especificou campo Exec"
 
-#: gio/gdesktopappinfo.c:2804
+#: gio/gdesktopappinfo.c:2896
 msgid "Unable to find terminal required for application"
 msgstr "Impossível encontrar o terminal necessário à aplicação"
 
-#: gio/gdesktopappinfo.c:3455
+#: gio/gdesktopappinfo.c:3625
 #, c-format
 msgid "Can’t create user application configuration folder %s: %s"
 msgstr ""
 "Impossível criar a pasta de configurações de utilizador da aplicação %s: %s"
 
-#: gio/gdesktopappinfo.c:3459
+#: gio/gdesktopappinfo.c:3629
 #, c-format
 msgid "Can’t create user MIME configuration folder %s: %s"
 msgstr "Impossível criar a pasta de configurações MIME do utilizador %s: %s"
 
-#: gio/gdesktopappinfo.c:3701 gio/gdesktopappinfo.c:3725
+#: gio/gdesktopappinfo.c:3871 gio/gdesktopappinfo.c:3895
 msgid "Application information lacks an identifier"
 msgstr "Informação da aplicação não possui um identificador"
 
-#: gio/gdesktopappinfo.c:3961
+#: gio/gdesktopappinfo.c:4131
 #, c-format
 msgid "Can’t create user desktop file %s"
 msgstr "Impossível criar ficheiro do ambiente de trabalho do utilizador %s"
 
-#: gio/gdesktopappinfo.c:4097
+#: gio/gdesktopappinfo.c:4267
 #, c-format
 msgid "Custom definition for %s"
 msgstr "Definição personalizada de %s"
@@ -1357,7 +1375,7 @@ msgstr "a unidade não implementa a reprodução"
 msgid "drive doesn’t implement stop"
 msgstr "a unidade não implementa a paragem"
 
-#: gio/gdtlsconnection.c:1153 gio/gtlsconnection.c:920
+#: gio/gdtlsconnection.c:1186 gio/gtlsconnection.c:955
 msgid "TLS backend does not implement TLS binding retrieval"
 msgstr "O suporte TLS não implementa a recuperação de fomatos TLS"
 
@@ -1398,73 +1416,73 @@ msgstr "Esperado um GEmblem para o GEmblemedIcon"
 #. * trying to find the enclosing (user visible)
 #. * mount of a file, but none exists.
 #.
-#: gio/gfile.c:1561
+#: gio/gfile.c:1579
 msgid "Containing mount does not exist"
 msgstr "Montagem contida não existe"
 
-#: gio/gfile.c:2608 gio/glocalfile.c:2486
+#: gio/gfile.c:2626 gio/glocalfile.c:2486
 msgid "Can’t copy over directory"
 msgstr "Impossível copiar sobre um diretório"
 
-#: gio/gfile.c:2668
+#: gio/gfile.c:2686
 msgid "Can’t copy directory over directory"
 msgstr "Impossível copiar uma pasta sobre uma pasta"
 
-#: gio/gfile.c:2676
+#: gio/gfile.c:2694
 msgid "Target file exists"
 msgstr "Ficheiro de destino já existe"
 
-#: gio/gfile.c:2695
+#: gio/gfile.c:2713
 msgid "Can’t recursively copy directory"
 msgstr "Impossível copiar diretório recursivamente"
 
-#: gio/gfile.c:2996
+#: gio/gfile.c:3014
 msgid "Splice not supported"
 msgstr "Dividir ficheiros não é suportado"
 
-#: gio/gfile.c:3000
+#: gio/gfile.c:3018
 #, c-format
 msgid "Error splicing file: %s"
 msgstr "Erro ao dividir o ficheiro: %s"
 
-#: gio/gfile.c:3152
+#: gio/gfile.c:3170
 msgid "Copy (reflink/clone) between mounts is not supported"
 msgstr "Copiar (reflink/clonar) entre montados não é suportado"
 
-#: gio/gfile.c:3156
+#: gio/gfile.c:3174
 msgid "Copy (reflink/clone) is not supported or invalid"
 msgstr "Copiar (reflink/clonar) não é suportado ou é inválido"
 
-#: gio/gfile.c:3161
+#: gio/gfile.c:3179
 msgid "Copy (reflink/clone) is not supported or didn’t work"
 msgstr "Copiar (reflink/clonar) não é suportado ou falhou"
 
-#: gio/gfile.c:3226
+#: gio/gfile.c:3244
 msgid "Can’t copy special file"
 msgstr "Impossível copiar ficheiro especial"
 
-#: gio/gfile.c:4035
+#: gio/gfile.c:4138
 msgid "Invalid symlink value given"
 msgstr "Dado um valor de ligação simbólica inválida"
 
-#: gio/gfile.c:4045 glib/gfileutils.c:2333
+#: gio/gfile.c:4148 glib/gfileutils.c:2333
 msgid "Symbolic links not supported"
 msgstr "Ligações simbólicas não são suportadas"
 
-#: gio/gfile.c:4213
+#: gio/gfile.c:4316
 msgid "Trash not supported"
 msgstr "Não existe suporte para o lixo"
 
-#: gio/gfile.c:4325
+#: gio/gfile.c:4428
 #, c-format
 msgid "File names cannot contain “%c”"
 msgstr "Nomes de ficheiros não podem conter “%c”"
 
-#: gio/gfile.c:6806 gio/gvolume.c:364
+#: gio/gfile.c:7028 gio/gvolume.c:364
 msgid "volume doesn’t implement mount"
 msgstr "unidade não implementa a montagem"
 
-#: gio/gfile.c:6920 gio/gfile.c:6968
+#: gio/gfile.c:7142 gio/gfile.c:7190
 msgid "No application is registered as handling this file"
 msgstr "Não existe nenhuma aplicação registada para gerir este ficheiro"
 
@@ -1509,7 +1527,7 @@ msgstr "Fluxo de entrada não permite truncar"
 msgid "Truncate not supported on stream"
 msgstr "Fluxo não suporta truncar"
 
-#: gio/ghttpproxy.c:91 gio/gresolver.c:443 gio/gresolver.c:596
+#: gio/ghttpproxy.c:91 gio/gresolver.c:458 gio/gresolver.c:611
 #: glib/gconvert.c:1825
 msgid "Invalid hostname"
 msgstr "Nome de máquina inválido"
@@ -1596,7 +1614,7 @@ msgid "Could not parse “%s” as IP address mask"
 msgstr "Impossível processar “%s” como a máscara de endereço IP"
 
 #: gio/ginetsocketaddress.c:203 gio/ginetsocketaddress.c:220
-#: gio/gnativesocketaddress.c:109 gio/gunixsocketaddress.c:221
+#: gio/gnativesocketaddress.c:109 gio/gunixsocketaddress.c:228
 msgid "Not enough space for socket address"
 msgstr "Espaço insuficiente para o endereço do socket"
 
@@ -1644,7 +1662,7 @@ msgstr "Comandos:"
 
 #: gio/gio-tool.c:229
 msgid "Concatenate files to standard output"
-msgstr "Concatenar ficheiros para a saída pre-definida"
+msgstr "Concatenar ficheiros para a saída predefinida"
 
 #: gio/gio-tool.c:230
 msgid "Copy one or more files"
@@ -1696,7 +1714,7 @@ msgstr "Apagar um ou mais ficheiros"
 
 #: gio/gio-tool.c:242
 msgid "Read from standard input and save"
-msgstr "Ler da entrada padrão e guardar"
+msgstr "Ler da entrada predefinida e guardar"
 
 #: gio/gio-tool.c:243
 msgid "Set a file attribute"
@@ -1731,7 +1749,7 @@ msgstr "LOCALIZAÇÃO"
 
 #: gio/gio-tool-cat.c:138
 msgid "Concatenate files and print to standard output."
-msgstr "Concatenar ficheiros e imprimir para a saída padrão."
+msgstr "Concatenar ficheiros e imprimir para a saída predefinida."
 
 #: gio/gio-tool-cat.c:140
 msgid ""
@@ -2434,15 +2452,15 @@ msgstr "Erro ao comprimir o ficheiro %s"
 msgid "text may not appear inside <%s>"
 msgstr "não pode surgir texto dentro de <%s>"
 
-#: gio/glib-compile-resources.c:737 gio/glib-compile-schemas.c:2172
+#: gio/glib-compile-resources.c:819 gio/glib-compile-schemas.c:2172
 msgid "Show program version and exit"
 msgstr "Mostrar a versão da aplicação e sair"
 
-#: gio/glib-compile-resources.c:738
+#: gio/glib-compile-resources.c:820
 msgid "Name of the output file"
 msgstr "Nome do ficheiro de saída"
 
-#: gio/glib-compile-resources.c:739
+#: gio/glib-compile-resources.c:821
 msgid ""
 "The directories to load files referenced in FILE from (default: current "
 "directory)"
@@ -2450,59 +2468,63 @@ msgstr ""
 "O diretório de onde ler os ficheiros referenciados no FICHEIRO do "
 "(predefinição: diretório atual)"
 
-#: gio/glib-compile-resources.c:739 gio/glib-compile-schemas.c:2173
+#: gio/glib-compile-resources.c:821 gio/glib-compile-schemas.c:2173
 #: gio/glib-compile-schemas.c:2202
 msgid "DIRECTORY"
 msgstr "PASTA"
 
-#: gio/glib-compile-resources.c:740
+#: gio/glib-compile-resources.c:822
 msgid ""
 "Generate output in the format selected for by the target filename extension"
 msgstr ""
 "Gerar o resultado no formato selecionado pela extensão do nome do ficheiro "
 "de saída"
 
-#: gio/glib-compile-resources.c:741
+#: gio/glib-compile-resources.c:823
 msgid "Generate source header"
 msgstr "Gerar o cabeçalho de código"
 
-#: gio/glib-compile-resources.c:742
+#: gio/glib-compile-resources.c:824
 msgid "Generate source code used to link in the resource file into your code"
 msgstr ""
 "Gerar o código-fonte utilizado para ligar o ficheiro de recurso ao seu código"
 
-#: gio/glib-compile-resources.c:743
+#: gio/glib-compile-resources.c:825
 msgid "Generate dependency list"
 msgstr "Gerar lista de dependências"
 
-#: gio/glib-compile-resources.c:744
+#: gio/glib-compile-resources.c:826
 msgid "Name of the dependency file to generate"
 msgstr "Nome do ficheiro de dependência a gerar"
 
-#: gio/glib-compile-resources.c:745
+#: gio/glib-compile-resources.c:827
 msgid "Include phony targets in the generated dependency file"
 msgstr "Incluir alvos falsos no ficheiro de dependência gerado"
 
-#: gio/glib-compile-resources.c:746
+#: gio/glib-compile-resources.c:828
 msgid "Don’t automatically create and register resource"
 msgstr "Não criar e registar um recurso automaticamente"
 
-#: gio/glib-compile-resources.c:747
+#: gio/glib-compile-resources.c:829
 msgid "Don’t export functions; declare them G_GNUC_INTERNAL"
 msgstr "Não exportar funções; declará-las G_GNUC_INTERNAL"
 
-#: gio/glib-compile-resources.c:748
+#: gio/glib-compile-resources.c:830
 msgid ""
 "Don’t embed resource data in the C file; assume it's linked externally "
 "instead"
 msgstr ""
 "Não imbuir dados de recurso num ficheiro C; assuma-o ligado externamente"
 
-#: gio/glib-compile-resources.c:749
+#: gio/glib-compile-resources.c:831
 msgid "C identifier name used for the generated source code"
 msgstr "Nome do identificador C utilizado no código fonte gerado"
 
-#: gio/glib-compile-resources.c:775
+#: gio/glib-compile-resources.c:832
+msgid "The target C compiler (default: the CC environment variable)"
+msgstr "O compilador C de destino (padrão: a variável de ambiente CC)"
+
+#: gio/glib-compile-resources.c:858
 msgid ""
 "Compile a resource specification into a resource file.\n"
 "Resource specification files have the extension .gresource.xml,\n"
@@ -2513,7 +2535,7 @@ msgstr ""
 "xml,\n"
 "e o ficheiro de recurso tem a extensão .gresource."
 
-#: gio/glib-compile-resources.c:797
+#: gio/glib-compile-resources.c:880
 msgid "You should give exactly one file name\n"
 msgstr "Deverá indicar apenas um nome de ficheiro\n"
 
@@ -3310,13 +3332,13 @@ msgstr "Erro ao criar a cópia da cópia de segurança: %s"
 msgid "Error renaming temporary file: %s"
 msgstr "Erro ao renomear ficheiro temporário: %s"
 
-#: gio/glocalfileoutputstream.c:609 gio/glocalfileoutputstream.c:1237
+#: gio/glocalfileoutputstream.c:609 gio/glocalfileoutputstream.c:1239
 #, c-format
 msgid "Error truncating file: %s"
 msgstr "Erro ao truncar ficheiro: %s"
 
 #: gio/glocalfileoutputstream.c:662 gio/glocalfileoutputstream.c:907
-#: gio/glocalfileoutputstream.c:1218 gio/gsubprocess.c:226
+#: gio/glocalfileoutputstream.c:1220 gio/gsubprocess.c:229
 #, c-format
 msgid "Error opening file “%s”: %s"
 msgstr "Erro ao abrir o ficheiro “%s”: %s"
@@ -3338,7 +3360,7 @@ msgstr "O ficheiro foi alterado externamente"
 msgid "Error removing old file: %s"
 msgstr "Erro ao remover o ficheiro antigo: %s"
 
-#: gio/gmemoryinputstream.c:474 gio/gmemoryoutputstream.c:772
+#: gio/gmemoryinputstream.c:474 gio/gmemoryoutputstream.c:762
 msgid "Invalid GSeekType supplied"
 msgstr "Fornecido um GSeekType inválido"
 
@@ -3350,15 +3372,15 @@ msgstr "Pedido de procura inválido"
 msgid "Cannot truncate GMemoryInputStream"
 msgstr "Impossível truncar um GMemoryInputStream"
 
-#: gio/gmemoryoutputstream.c:567
+#: gio/gmemoryoutputstream.c:568
 msgid "Memory output stream not resizable"
 msgstr "Fluxo de saída de memória não é redimensionável"
 
-#: gio/gmemoryoutputstream.c:583
+#: gio/gmemoryoutputstream.c:584
 msgid "Failed to resize memory output stream"
 msgstr "Falha ao redimensionar fluxo de saída de memória"
 
-#: gio/gmemoryoutputstream.c:673
+#: gio/gmemoryoutputstream.c:663
 msgid ""
 "Amount of memory required to process the write is larger than available "
 "address space"
@@ -3366,11 +3388,11 @@ msgstr ""
 "Quantidade de memória necessária para processar a escrita é maior do que o "
 "espaço de endereçamento disponível"
 
-#: gio/gmemoryoutputstream.c:782
+#: gio/gmemoryoutputstream.c:772
 msgid "Requested seek before the beginning of the stream"
 msgstr "Pedida uma procura para antes do início do fluxo"
 
-#: gio/gmemoryoutputstream.c:797
+#: gio/gmemoryoutputstream.c:787
 msgid "Requested seek beyond the end of the stream"
 msgstr "Pedida uma procura para depois do final do fluxo"
 
@@ -3475,18 +3497,22 @@ msgstr "Soma dos vetores passados ao %s demasiado longa"
 msgid "Source stream is already closed"
 msgstr "Fluxo de origem já está fechado"
 
-#: gio/gresolver.c:386 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
+#. Translators: the first placeholder is a domain name, the
+#. * second is an error message
+#: gio/gresolver.c:401 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
+#: gio/gthreadedresolver.c:780 gio/gthreadedresolver.c:804
+#: gio/gthreadedresolver.c:829 gio/gthreadedresolver.c:844
 #, c-format
 msgid "Error resolving “%s”: %s"
 msgstr "Erro ao resolver “%s”: %s"
 
 #. Translators: The placeholder is for a function name.
-#: gio/gresolver.c:455 gio/gresolver.c:615
+#: gio/gresolver.c:470 gio/gresolver.c:630
 #, c-format
 msgid "%s not implemented"
 msgstr "%s não implementado"
 
-#: gio/gresolver.c:984 gio/gresolver.c:1036
+#: gio/gresolver.c:999 gio/gresolver.c:1051
 msgid "Invalid domain"
 msgstr "Domínio inválido"
 
@@ -3524,11 +3550,11 @@ msgid ""
 msgstr ""
 "Lista recursos\n"
 "Se for especificada uma SECÇÃO, apenas listar recursos nesta secção\n"
-"Se for especificado um CAMINHO, apenas listar recursos que coincidam"
+"Se for especificado uma LOCALIZAÇÃO, apenas listar recursos que coincidam"
 
 #: gio/gresource-tool.c:509 gio/gresource-tool.c:519
 msgid "FILE [PATH]"
-msgstr "FICHEIRO [CAMINHO]"
+msgstr "FICHEIRO [LOCALIZAÇÃO]"
 
 #: gio/gresource-tool.c:510 gio/gresource-tool.c:520 gio/gresource-tool.c:527
 msgid "SECTION"
@@ -3543,7 +3569,7 @@ msgid ""
 msgstr ""
 "Listar recursos com detalhes\n"
 "Se for especificada uma SECÇÃO, apenas listar recursos nesta secção\n"
-"Se for especificado um CAMINHO, apenas listar recursos que coincidam\n"
+"Se for especificado uma LOCALIZAÇÃO, apenas listar recursos que coincidam\n"
 "Detalhes incluem a secção, tamanho e compressão"
 
 #: gio/gresource-tool.c:525
@@ -3552,7 +3578,7 @@ msgstr "Extrair um ficheiro de recurso para o terminal"
 
 #: gio/gresource-tool.c:526
 msgid "FILE PATH"
-msgstr "CAMINHO FICHEIRO"
+msgstr "LOCALIZAÇÃO FICHEIRO"
 
 #: gio/gresource-tool.c:540
 msgid ""
@@ -3601,7 +3627,7 @@ msgstr ""
 msgid "  SECTION   An (optional) elf section name\n"
 msgstr "  SECÇÃO    Um nome (opcional) de secção elf\n"
 
-#: gio/gresource-tool.c:565 gio/gsettings-tool.c:706
+#: gio/gresource-tool.c:565 gio/gsettings-tool.c:718
 msgid "  COMMAND   The (optional) command to explain\n"
 msgstr "  COMANDO   O comando (opcional) a ser explicado\n"
 
@@ -3620,21 +3646,22 @@ msgstr ""
 
 #: gio/gresource-tool.c:578
 msgid "[PATH]"
-msgstr "[CAMINHO]"
+msgstr "[LOCALIZAÇÃO]"
 
 #: gio/gresource-tool.c:580
 msgid "  PATH      An (optional) resource path (may be partial)\n"
-msgstr "  CAMINHO   Um caminho (opcional) de recurso (pode ser parcial)\n"
+msgstr ""
+"  LOCALIZAÇÃO   Uma localização (opcional) de recurso (pode ser parcial)\n"
 
 #: gio/gresource-tool.c:581
 msgid "PATH"
-msgstr "CAMINHO"
+msgstr "LOCALIZAÇÃO"
 
 #: gio/gresource-tool.c:583
 msgid "  PATH      A resource path\n"
-msgstr "  CAMINHO   Um caminho de recurso\n"
+msgstr "  LOCALIZAÇÃO   Uma localização de recurso\n"
 
-#: gio/gsettings-tool.c:49 gio/gsettings-tool.c:70 gio/gsettings-tool.c:911
+#: gio/gsettings-tool.c:49 gio/gsettings-tool.c:70 gio/gsettings-tool.c:923
 #, c-format
 msgid "No such schema “%s”\n"
 msgstr "Não existe o esquema “%s”\n"
@@ -3665,35 +3692,35 @@ msgstr "O caminho tem de terminar com uma barra (/)\n"
 msgid "Path must not contain two adjacent slashes (//)\n"
 msgstr "O caminho não pode conter duas barras adjacentes (//)\n"
 
-#: gio/gsettings-tool.c:541
+#: gio/gsettings-tool.c:553
 msgid "The provided value is outside of the valid range\n"
 msgstr "O valor especificado encontra-se fora do intervalo válido\n"
 
-#: gio/gsettings-tool.c:548
+#: gio/gsettings-tool.c:560
 msgid "The key is not writable\n"
 msgstr "O valor da chave não pode ser escrito\n"
 
-#: gio/gsettings-tool.c:584
+#: gio/gsettings-tool.c:596
 msgid "List the installed (non-relocatable) schemas"
 msgstr "Listar os esquemas instalados (não-realocáveis)"
 
-#: gio/gsettings-tool.c:590
+#: gio/gsettings-tool.c:602
 msgid "List the installed relocatable schemas"
 msgstr "Listar os esquemas instalados realocáveis"
 
-#: gio/gsettings-tool.c:596
+#: gio/gsettings-tool.c:608
 msgid "List the keys in SCHEMA"
 msgstr "Listar as chaves no ESQUEMA"
 
-#: gio/gsettings-tool.c:597 gio/gsettings-tool.c:603 gio/gsettings-tool.c:646
+#: gio/gsettings-tool.c:609 gio/gsettings-tool.c:615 gio/gsettings-tool.c:658
 msgid "SCHEMA[:PATH]"
-msgstr "ESQUEMA[:CAMINHO]"
+msgstr "ESQUEMA[:LOCALIZAÇÃO]"
 
-#: gio/gsettings-tool.c:602
+#: gio/gsettings-tool.c:614
 msgid "List the children of SCHEMA"
 msgstr "Listar os sub processos de ESQUEMA"
 
-#: gio/gsettings-tool.c:608
+#: gio/gsettings-tool.c:620
 msgid ""
 "List keys and values, recursively\n"
 "If no SCHEMA is given, list all keys\n"
@@ -3701,48 +3728,48 @@ msgstr ""
 "Listar as chaves e valores, recursivamente\n"
 "Se não for indicado um ESQUEMA, listar todas as chaves\n"
 
-#: gio/gsettings-tool.c:610
+#: gio/gsettings-tool.c:622
 msgid "[SCHEMA[:PATH]]"
-msgstr "[ESQUEMA[:CAMINHO]]"
+msgstr "[ESQUEMA[:LOCALIZAÇÃO]]"
 
-#: gio/gsettings-tool.c:615
+#: gio/gsettings-tool.c:627
 msgid "Get the value of KEY"
 msgstr "Obter o valor da CHAVE"
 
-#: gio/gsettings-tool.c:616 gio/gsettings-tool.c:622 gio/gsettings-tool.c:628
-#: gio/gsettings-tool.c:640 gio/gsettings-tool.c:652
+#: gio/gsettings-tool.c:628 gio/gsettings-tool.c:634 gio/gsettings-tool.c:640
+#: gio/gsettings-tool.c:652 gio/gsettings-tool.c:664
 msgid "SCHEMA[:PATH] KEY"
-msgstr "ESQUEMA[:CAMINHO] CHAVE"
+msgstr "ESQUEMA[:LOCALIZAÇÃO] CHAVE"
 
-#: gio/gsettings-tool.c:621
+#: gio/gsettings-tool.c:633
 msgid "Query the range of valid values for KEY"
 msgstr "Consultar o intervalo de valores válidos para a CHAVE"
 
-#: gio/gsettings-tool.c:627
+#: gio/gsettings-tool.c:639
 msgid "Query the description for KEY"
 msgstr "Consultar o descritor para a CHAVE"
 
-#: gio/gsettings-tool.c:633
+#: gio/gsettings-tool.c:645
 msgid "Set the value of KEY to VALUE"
 msgstr "Definir o valor da CHAVE com o VALOR"
 
-#: gio/gsettings-tool.c:634
+#: gio/gsettings-tool.c:646
 msgid "SCHEMA[:PATH] KEY VALUE"
-msgstr "ESQUEMA[:CAMINHO] CHAVE VALOR"
+msgstr "ESQUEMA[:LOCALIZAÇÃO] CHAVE VALOR"
 
-#: gio/gsettings-tool.c:639
+#: gio/gsettings-tool.c:651
 msgid "Reset KEY to its default value"
 msgstr "Repor o valor predefinido de CHAVE"
 
-#: gio/gsettings-tool.c:645
+#: gio/gsettings-tool.c:657
 msgid "Reset all keys in SCHEMA to their defaults"
 msgstr "Repor todas as chaves no ESQUEMA para os seus valores predefinidos"
 
-#: gio/gsettings-tool.c:651
+#: gio/gsettings-tool.c:663
 msgid "Check if KEY is writable"
 msgstr "Verificar se é possível definir o valor de CHAVE"
 
-#: gio/gsettings-tool.c:657
+#: gio/gsettings-tool.c:669
 msgid ""
 "Monitor KEY for changes.\n"
 "If no KEY is specified, monitor all keys in SCHEMA.\n"
@@ -3752,11 +3779,11 @@ msgstr ""
 "Se nenhuma chave for especificada, monitorizar todas as chaves do ESQUEMA.\n"
 "Utilizar ^C para parar de monitorizar.\n"
 
-#: gio/gsettings-tool.c:660
+#: gio/gsettings-tool.c:672
 msgid "SCHEMA[:PATH] [KEY]"
-msgstr "ESQUEMA[:CAMINHO] [CHAVE]"
+msgstr "ESQUEMA[:LOCALIZAÇÃO] [CHAVE]"
 
-#: gio/gsettings-tool.c:672
+#: gio/gsettings-tool.c:684
 msgid ""
 "Usage:\n"
 "  gsettings --version\n"
@@ -3804,7 +3831,7 @@ msgstr ""
 "Utilize \"gsettings help COMANDO\" para obter ajuda detalhada.\n"
 "\n"
 
-#: gio/gsettings-tool.c:696
+#: gio/gsettings-tool.c:708
 #, c-format
 msgid ""
 "Usage:\n"
@@ -3819,225 +3846,225 @@ msgstr ""
 "%s\n"
 "\n"
 
-#: gio/gsettings-tool.c:702
+#: gio/gsettings-tool.c:714
 msgid "  SCHEMADIR A directory to search for additional schemas\n"
 msgstr "  DIRESQUEMAS Um pasta onde procurar por esquemas adicionais\n"
 
-#: gio/gsettings-tool.c:710
+#: gio/gsettings-tool.c:722
 msgid ""
 "  SCHEMA    The name of the schema\n"
 "  PATH      The path, for relocatable schemas\n"
 msgstr ""
 "  ESQUEMA     O nome do esquema\n"
-"  CAMINHO     O caminho, para esquemas realocáveis\n"
+"  LOCALIZAÇÃO     A localização, para esquemas realocáveis\n"
 
-#: gio/gsettings-tool.c:715
+#: gio/gsettings-tool.c:727
 msgid "  KEY       The (optional) key within the schema\n"
 msgstr "  CHAVE     A chave (opcional) dentro do esquema\n"
 
-#: gio/gsettings-tool.c:719
+#: gio/gsettings-tool.c:731
 msgid "  KEY       The key within the schema\n"
 msgstr "  CHAVE     A chave dentro do esquema\n"
 
-#: gio/gsettings-tool.c:723
+#: gio/gsettings-tool.c:735
 msgid "  VALUE     The value to set\n"
 msgstr "  VALOR     O valor a definir\n"
 
-#: gio/gsettings-tool.c:778
+#: gio/gsettings-tool.c:790
 #, c-format
 msgid "Could not load schemas from %s: %s\n"
 msgstr "Impossível ler esquemas de %s: %s\n"
 
-#: gio/gsettings-tool.c:790
+#: gio/gsettings-tool.c:802
 msgid "No schemas installed\n"
 msgstr "Nenhum ficheiro de esquema instalado\n"
 
-#: gio/gsettings-tool.c:869
+#: gio/gsettings-tool.c:881
 msgid "Empty schema name given\n"
 msgstr "Indicado um nome de esquema vazio\n"
 
-#: gio/gsettings-tool.c:924
+#: gio/gsettings-tool.c:936
 #, c-format
 msgid "No such key “%s”\n"
 msgstr "Não existe a chave “%s”\n"
 
-#: gio/gsocket.c:413
+#: gio/gsocket.c:417
 msgid "Invalid socket, not initialized"
 msgstr "Socket inválido, não inicializado"
 
-#: gio/gsocket.c:420
+#: gio/gsocket.c:424
 #, c-format
 msgid "Invalid socket, initialization failed due to: %s"
 msgstr "Socket inválido, a inicialização falhou devido a: %s"
 
-#: gio/gsocket.c:428
+#: gio/gsocket.c:432
 msgid "Socket is already closed"
 msgstr "Socket já está fechado"
 
-#: gio/gsocket.c:443 gio/gsocket.c:3190 gio/gsocket.c:4420 gio/gsocket.c:4478
+#: gio/gsocket.c:447 gio/gsocket.c:3194 gio/gsocket.c:4427 gio/gsocket.c:4485
 msgid "Socket I/O timed out"
 msgstr "Tempo expirou no I/O de socket"
 
-#: gio/gsocket.c:578
+#: gio/gsocket.c:582
 #, c-format
 msgid "creating GSocket from fd: %s"
 msgstr "a criar o GSocket do fd: %s"
 
-#: gio/gsocket.c:607 gio/gsocket.c:671 gio/gsocket.c:678
+#: gio/gsocket.c:611 gio/gsocket.c:675 gio/gsocket.c:682
 #, c-format
 msgid "Unable to create socket: %s"
 msgstr "Impossível criar socket: %s"
 
-#: gio/gsocket.c:671
+#: gio/gsocket.c:675
 msgid "Unknown family was specified"
 msgstr "Foi especificada uma família desconhecida"
 
-#: gio/gsocket.c:678
+#: gio/gsocket.c:682
 msgid "Unknown protocol was specified"
 msgstr "Foi especificado um protocolo desconhecido"
 
-#: gio/gsocket.c:1169
+#: gio/gsocket.c:1173
 #, c-format
 msgid "Cannot use datagram operations on a non-datagram socket."
 msgstr "Impossível utilizar operações datagram em sockets não datagram."
 
-#: gio/gsocket.c:1186
+#: gio/gsocket.c:1190
 #, c-format
 msgid "Cannot use datagram operations on a socket with a timeout set."
 msgstr ""
 "Impossível utilizar operações datagram num socket com um tempo de expiração "
 "definido."
 
-#: gio/gsocket.c:1993
+#: gio/gsocket.c:1997
 #, c-format
 msgid "could not get local address: %s"
 msgstr "impossível obter o endereço local: %s"
 
-#: gio/gsocket.c:2039
+#: gio/gsocket.c:2043
 #, c-format
 msgid "could not get remote address: %s"
 msgstr "impossível obter o endereço remoto: %s"
 
-#: gio/gsocket.c:2105
+#: gio/gsocket.c:2109
 #, c-format
 msgid "could not listen: %s"
 msgstr "impossível escutar: %s"
 
-#: gio/gsocket.c:2209
+#: gio/gsocket.c:2213
 #, c-format
 msgid "Error binding to address %s: %s"
 msgstr "Erro ao ligar-se ao endereço: %s: %s"
 
-#: gio/gsocket.c:2385 gio/gsocket.c:2422 gio/gsocket.c:2532 gio/gsocket.c:2557
-#: gio/gsocket.c:2620 gio/gsocket.c:2678 gio/gsocket.c:2696
+#: gio/gsocket.c:2389 gio/gsocket.c:2426 gio/gsocket.c:2536 gio/gsocket.c:2561
+#: gio/gsocket.c:2624 gio/gsocket.c:2682 gio/gsocket.c:2700
 #, c-format
 msgid "Error joining multicast group: %s"
 msgstr "Erro ao juntar-se a um grupo multicast: %s"
 
-#: gio/gsocket.c:2386 gio/gsocket.c:2423 gio/gsocket.c:2533 gio/gsocket.c:2558
-#: gio/gsocket.c:2621 gio/gsocket.c:2679 gio/gsocket.c:2697
+#: gio/gsocket.c:2390 gio/gsocket.c:2427 gio/gsocket.c:2537 gio/gsocket.c:2562
+#: gio/gsocket.c:2625 gio/gsocket.c:2683 gio/gsocket.c:2701
 #, c-format
 msgid "Error leaving multicast group: %s"
 msgstr "Erro ao sair do grupo multicast: %s"
 
-#: gio/gsocket.c:2387
+#: gio/gsocket.c:2391
 msgid "No support for source-specific multicast"
 msgstr "Suporte indisponível para multicast específico da origem"
 
-#: gio/gsocket.c:2534
+#: gio/gsocket.c:2538
 msgid "Unsupported socket family"
 msgstr "Família de socket não suportada"
 
-#: gio/gsocket.c:2559
+#: gio/gsocket.c:2563
 msgid "source-specific not an IPv4 address"
 msgstr "fonte-específica não é um endereço IPv4"
 
-#: gio/gsocket.c:2583
+#: gio/gsocket.c:2587
 #, c-format
 msgid "Interface name too long"
 msgstr "Nome de ambiente demasiado extenso"
 
-#: gio/gsocket.c:2596 gio/gsocket.c:2646
+#: gio/gsocket.c:2600 gio/gsocket.c:2650
 #, c-format
 msgid "Interface not found: %s"
 msgstr "Ambiente não encontrado: %s"
 
-#: gio/gsocket.c:2622
+#: gio/gsocket.c:2626
 msgid "No support for IPv4 source-specific multicast"
 msgstr "Suporte indisponível para difusão de fonte-específica IPv4"
 
-#: gio/gsocket.c:2680
+#: gio/gsocket.c:2684
 msgid "No support for IPv6 source-specific multicast"
 msgstr "Suporte indisponível para difusão de fonte-específica IPv6"
 
-#: gio/gsocket.c:2889
+#: gio/gsocket.c:2893
 #, c-format
 msgid "Error accepting connection: %s"
 msgstr "Erro ao aceitar a ligação: %s"
 
-#: gio/gsocket.c:3015
+#: gio/gsocket.c:3019
 msgid "Connection in progress"
 msgstr "Ligação em curso"
 
-#: gio/gsocket.c:3066
+#: gio/gsocket.c:3070
 msgid "Unable to get pending error: "
 msgstr "Impossível obter o erro pendente: "
 
-#: gio/gsocket.c:3255
+#: gio/gsocket.c:3259
 #, c-format
 msgid "Error receiving data: %s"
 msgstr "Erro ao receber os dados: %s"
 
-#: gio/gsocket.c:3452
+#: gio/gsocket.c:3456
 #, c-format
 msgid "Error sending data: %s"
 msgstr "Erro ao enviar os dados: %s"
 
-#: gio/gsocket.c:3639
+#: gio/gsocket.c:3643
 #, c-format
 msgid "Unable to shutdown socket: %s"
 msgstr "Impossível desligar o socket: %s"
 
-#: gio/gsocket.c:3720
+#: gio/gsocket.c:3724
 #, c-format
 msgid "Error closing socket: %s"
 msgstr "Erro ao fechar o socket: %s"
 
-#: gio/gsocket.c:4413
+#: gio/gsocket.c:4420
 #, c-format
 msgid "Waiting for socket condition: %s"
 msgstr "A aguardar pela condição do socket: %s"
 
-#: gio/gsocket.c:4804 gio/gsocket.c:4820 gio/gsocket.c:4833
+#: gio/gsocket.c:4810 gio/gsocket.c:4826 gio/gsocket.c:4839
 #, c-format
 msgid "Unable to send message: %s"
 msgstr "Incapaz de enviar a mensagem: %s"
 
-#: gio/gsocket.c:4805 gio/gsocket.c:4821 gio/gsocket.c:4834
+#: gio/gsocket.c:4811 gio/gsocket.c:4827 gio/gsocket.c:4840
 msgid "Message vectors too large"
 msgstr "Vectores de mensagem demasiado grandes"
 
-#: gio/gsocket.c:4850 gio/gsocket.c:4852 gio/gsocket.c:4999 gio/gsocket.c:5084
-#: gio/gsocket.c:5262 gio/gsocket.c:5302 gio/gsocket.c:5304
+#: gio/gsocket.c:4856 gio/gsocket.c:4858 gio/gsocket.c:5005 gio/gsocket.c:5090
+#: gio/gsocket.c:5268 gio/gsocket.c:5308 gio/gsocket.c:5310
 #, c-format
 msgid "Error sending message: %s"
 msgstr "Erro ao enviar a mensagem: %s"
 
-#: gio/gsocket.c:5026
+#: gio/gsocket.c:5032
 msgid "GSocketControlMessage not supported on Windows"
 msgstr "GSocketControlMessage não é suportada em Windows"
 
-#: gio/gsocket.c:5495 gio/gsocket.c:5571 gio/gsocket.c:5797
+#: gio/gsocket.c:5505 gio/gsocket.c:5581 gio/gsocket.c:5807
 #, c-format
 msgid "Error receiving message: %s"
 msgstr "Erro ao receber a mensagem: %s"
 
-#: gio/gsocket.c:6070 gio/gsocket.c:6081 gio/gsocket.c:6127
+#: gio/gsocket.c:6090 gio/gsocket.c:6101 gio/gsocket.c:6164
 #, c-format
 msgid "Unable to read socket credentials: %s"
 msgstr "Impossível ler as credenciais do socket: %s"
 
-#: gio/gsocket.c:6136
+#: gio/gsocket.c:6173
 msgid "g_socket_get_credentials not implemented for this OS"
 msgstr "g_socket_get_credentials não implementado neste SO"
 
@@ -4055,11 +4082,11 @@ msgstr "Impossível ligar a %s: "
 msgid "Could not connect: "
 msgstr "Impossível ligar: "
 
-#: gio/gsocketclient.c:1162 gio/gsocketclient.c:1749
+#: gio/gsocketclient.c:1202 gio/gsocketclient.c:1793
 msgid "Proxying over a non-TCP connection is not supported."
 msgstr "Não há suporte à realização de proxy sobre ligações não-TCP."
 
-#: gio/gsocketclient.c:1194 gio/gsocketclient.c:1778
+#: gio/gsocketclient.c:1234 gio/gsocketclient.c:1822
 #, c-format
 msgid "Proxy protocol “%s” is not supported."
 msgstr "O protocolo de proxy “%s” não é suportado."
@@ -4161,7 +4188,7 @@ msgstr "Proxy SOCKSv5 não suporta o tipo de endereço indicado."
 msgid "Unknown SOCKSv5 proxy error."
 msgstr "Erro de proxy SOCKSv5 desconhecido."
 
-#: gio/gtestdbus.c:612 glib/gspawn-win32.c:311
+#: gio/gtestdbus.c:612 glib/gspawn-win32.c:314
 #, c-format
 msgid "Failed to create pipe for communicating with child process (%s)"
 msgstr "Falha ao criar canal para comunicar com sub processo (%s)"
@@ -4185,44 +4212,66 @@ msgstr "Não foram encontrados endereços válidos"
 msgid "Error reverse-resolving “%s”: %s"
 msgstr "Erro ao realizar a resolução invertida de “%s”: %s"
 
-#: gio/gthreadedresolver.c:676 gio/gthreadedresolver.c:755
-#: gio/gthreadedresolver.c:853 gio/gthreadedresolver.c:903
+#. Translators: the placeholder is a DNS record type, such as ‘MX’ or ‘SRV’
+#: gio/gthreadedresolver.c:550 gio/gthreadedresolver.c:572
+#: gio/gthreadedresolver.c:610 gio/gthreadedresolver.c:657
+#: gio/gthreadedresolver.c:686 gio/gthreadedresolver.c:698
+#, c-format
+msgid "Error parsing DNS %s record: malformed DNS packet"
+msgstr "Erro ao analisar o registo DNS %s: pacote DNS malformado"
+
+#: gio/gthreadedresolver.c:756 gio/gthreadedresolver.c:893
+#: gio/gthreadedresolver.c:991 gio/gthreadedresolver.c:1041
 #, c-format
 msgid "No DNS record of the requested type for “%s”"
 msgstr "Nenhum registo DNS do tipo pedido para “%s”"
 
-#: gio/gthreadedresolver.c:681 gio/gthreadedresolver.c:858
+#: gio/gthreadedresolver.c:761 gio/gthreadedresolver.c:996
 #, c-format
 msgid "Temporarily unable to resolve “%s”"
 msgstr "Temporariamente indisponível para resolver “%s”"
 
-#: gio/gthreadedresolver.c:686 gio/gthreadedresolver.c:863
-#: gio/gthreadedresolver.c:973
+#: gio/gthreadedresolver.c:766 gio/gthreadedresolver.c:1001
+#: gio/gthreadedresolver.c:1111
 #, c-format
 msgid "Error resolving “%s”"
 msgstr "Erro ao resolver “%s”"
 
-#: gio/gtlscertificate.c:431
+#: gio/gthreadedresolver.c:780 gio/gthreadedresolver.c:804
+#: gio/gthreadedresolver.c:829 gio/gthreadedresolver.c:844
+msgid "Malformed DNS packet"
+msgstr "Pacote DNS malformado"
+
+#: gio/gthreadedresolver.c:886
+#, c-format
+msgid "Failed to parse DNS response for “%s”: "
+msgstr "Falha ao analisar a resposta do DNS para \"%s\": "
+
+#: gio/gtlscertificate.c:478
 msgid "No PEM-encoded private key found"
-msgstr "Impossível encontrar uma chave privada codificada PEM"
+msgstr "Nenhuma chave privada codificada PEM encontrada"
 
-#: gio/gtlscertificate.c:441
+#: gio/gtlscertificate.c:488
 msgid "Cannot decrypt PEM-encoded private key"
 msgstr "Impossível desencriptar a chave privada codificada PEM"
 
-#: gio/gtlscertificate.c:452
+#: gio/gtlscertificate.c:499
 msgid "Could not parse PEM-encoded private key"
 msgstr "Impossível processar a chave privada codificada PEM"
 
-#: gio/gtlscertificate.c:479
+#: gio/gtlscertificate.c:526
 msgid "No PEM-encoded certificate found"
-msgstr "Impossível encontrar um certificado codificado PEM"
+msgstr "Nenhum certificado codificado PEM encontrado"
 
-#: gio/gtlscertificate.c:488
+#: gio/gtlscertificate.c:535
 msgid "Could not parse PEM-encoded certificate"
 msgstr "Impossível processar certificado codificado PEM"
 
-#: gio/gtlscertificate.c:844
+#: gio/gtlscertificate.c:796
+msgid "The current TLS backend does not support PKCS #12"
+msgstr "O backend TLS atual não suporta o PKCS #12"
+
+#: gio/gtlscertificate.c:1013
 msgid "This GTlsBackend does not support creating PKCS #11 certificates"
 msgstr "Este GTlsBackend não suporta a criação de certificados PKCS # 11"
 
@@ -4248,54 +4297,62 @@ msgstr ""
 msgid "The password entered is incorrect."
 msgstr "A palavra-passe introduzida está incorreta."
 
-#: gio/gunixconnection.c:166 gio/gunixconnection.c:579
+#: gio/gunixconnection.c:125
+msgid "Sending FD is not supported"
+msgstr "O envio de FD não é suportado"
+
+#: gio/gunixconnection.c:178 gio/gunixconnection.c:596
 #, c-format
 msgid "Expecting 1 control message, got %d"
 msgid_plural "Expecting 1 control message, got %d"
 msgstr[0] "Era esperada 1 mensagem de controlo, obtida %d"
 msgstr[1] "Era esperada 1 mensagem de controlo, obtidas %d"
 
-#: gio/gunixconnection.c:182 gio/gunixconnection.c:591
+#: gio/gunixconnection.c:194 gio/gunixconnection.c:608
 msgid "Unexpected type of ancillary data"
 msgstr "Tipo inesperado de dados basilares"
 
-#: gio/gunixconnection.c:200
+#: gio/gunixconnection.c:212
 #, c-format
 msgid "Expecting one fd, but got %d\n"
 msgid_plural "Expecting one fd, but got %d\n"
 msgstr[0] "Esperado um fd, obtido %d\n"
 msgstr[1] "Esperado um fd, obtidos %d\n"
 
-#: gio/gunixconnection.c:219
+#: gio/gunixconnection.c:231
 msgid "Received invalid fd"
 msgstr "Recebido um fd inválido"
 
-#: gio/gunixconnection.c:363
+#: gio/gunixconnection.c:238
+msgid "Receiving FD is not supported"
+msgstr "A receção FD não é suportada"
+
+#: gio/gunixconnection.c:380
 msgid "Error sending credentials: "
 msgstr "Erro ao enviar as credenciais: "
 
-#: gio/gunixconnection.c:520
+#: gio/gunixconnection.c:537
 #, c-format
 msgid "Error checking if SO_PASSCRED is enabled for socket: %s"
 msgstr "Erro ao verificar se SO_PASSCRED está ativo para o socket: %s"
 
-#: gio/gunixconnection.c:536
+#: gio/gunixconnection.c:553
 #, c-format
 msgid "Error enabling SO_PASSCRED: %s"
 msgstr "Erro ao ativar SO_PASSCRED: %s"
 
-#: gio/gunixconnection.c:565
+#: gio/gunixconnection.c:582
 msgid ""
 "Expecting to read a single byte for receiving credentials but read zero bytes"
 msgstr ""
 "Deveria ler um único byte para receber credenciais mas foram lidos zero bytes"
 
-#: gio/gunixconnection.c:605
+#: gio/gunixconnection.c:622
 #, c-format
 msgid "Not expecting control message, but got %d"
 msgstr "Não eram esperadas mensagens de controlo, obtidas %d"
 
-#: gio/gunixconnection.c:630
+#: gio/gunixconnection.c:647
 #, c-format
 msgid "Error while disabling SO_PASSCRED: %s"
 msgstr "Erro ao desativar SO_PASSCRED: %s"
@@ -4311,7 +4368,7 @@ msgstr "Erro ao ler do descritor do ficheiro: %s"
 msgid "Error closing file descriptor: %s"
 msgstr "Erro ao fechar o descritor do ficheiro: %s"
 
-#: gio/gunixmounts.c:2785 gio/gunixmounts.c:2838
+#: gio/gunixmounts.c:2809 gio/gunixmounts.c:2862
 msgid "Filesystem root"
 msgstr "Raiz do sistema de ficheiros"
 
@@ -4322,7 +4379,7 @@ msgstr "Raiz do sistema de ficheiros"
 msgid "Error writing to file descriptor: %s"
 msgstr "Erro ao escrever no descritor do ficheiro: %s"
 
-#: gio/gunixsocketaddress.c:244
+#: gio/gunixsocketaddress.c:251
 msgid "Abstract UNIX domain socket addresses not supported on this system"
 msgstr ""
 "Endereços abstratos de sockets de domínio UNIX não são suportados neste "
@@ -4475,8 +4532,8 @@ msgstr "Falha ao expandir a linha de execução “%s” com o URI “%s”"
 msgid "Unrepresentable character in conversion input"
 msgstr "Sequência inválida na conversão da entrada"
 
-#: glib/gconvert.c:495 glib/gutf8.c:871 glib/gutf8.c:1083 glib/gutf8.c:1220
-#: glib/gutf8.c:1324
+#: glib/gconvert.c:495 glib/gutf8.c:886 glib/gutf8.c:1099 glib/gutf8.c:1236
+#: glib/gutf8.c:1340
 msgid "Partial character sequence at end of input"
 msgstr "Sequência de caracteres parcial no final da origem"
 
@@ -5041,15 +5098,15 @@ msgstr "Canal termina num carácter parcial"
 msgid "Can’t do a raw read in g_io_channel_read_to_end"
 msgstr "Impossível efetuar uma leitura em bruto em g_io_channel_read_to_end"
 
-#: glib/gkeyfile.c:791
+#: glib/gkeyfile.c:794
 msgid "Valid key file could not be found in search dirs"
 msgstr "Impossível encontrar um ficheiro de chave válido nas pastas procuradas"
 
-#: glib/gkeyfile.c:828
+#: glib/gkeyfile.c:831
 msgid "Not a regular file"
 msgstr "Não é um ficheiro normal"
 
-#: glib/gkeyfile.c:1283
+#: glib/gkeyfile.c:1289
 #, c-format
 msgid ""
 "Key file contains line “%s” which is not a key-value pair, group, or comment"
@@ -5057,49 +5114,49 @@ msgstr ""
 "O ficheiro de chave contém a linha “%s” que não é um par chave-valor, grupo "
 "ou comentário"
 
-#: glib/gkeyfile.c:1340
+#: glib/gkeyfile.c:1346
 #, c-format
 msgid "Invalid group name: %s"
 msgstr "Nome de grupo inválido: %s"
 
-#: glib/gkeyfile.c:1362
+#: glib/gkeyfile.c:1370
 msgid "Key file does not start with a group"
 msgstr "Ficheiro de chave não começa com um grupo"
 
-#: glib/gkeyfile.c:1388
+#: glib/gkeyfile.c:1394
 #, c-format
-msgid "Invalid key name: %s"
-msgstr "Nome de chave inválida: %s"
+msgid "Invalid key name: %.*s"
+msgstr "Nome de chave inválida: %.*s"
 
-#: glib/gkeyfile.c:1415
+#: glib/gkeyfile.c:1422
 #, c-format
 msgid "Key file contains unsupported encoding “%s”"
 msgstr "Ficheiro de chave contém uma codificação não suportada “%s”"
 
-#: glib/gkeyfile.c:1664 glib/gkeyfile.c:1837 glib/gkeyfile.c:3287
-#: glib/gkeyfile.c:3351 glib/gkeyfile.c:3481 glib/gkeyfile.c:3613
-#: glib/gkeyfile.c:3759 glib/gkeyfile.c:3994 glib/gkeyfile.c:4061
+#: glib/gkeyfile.c:1677 glib/gkeyfile.c:1850 glib/gkeyfile.c:3297
+#: glib/gkeyfile.c:3361 glib/gkeyfile.c:3491 glib/gkeyfile.c:3623
+#: glib/gkeyfile.c:3769 glib/gkeyfile.c:4004 glib/gkeyfile.c:4071
 #, c-format
 msgid "Key file does not have group “%s”"
 msgstr "Ficheiro de chave não possui um grupo “%s”"
 
-#: glib/gkeyfile.c:1792
+#: glib/gkeyfile.c:1805
 #, c-format
 msgid "Key file does not have key “%s” in group “%s”"
 msgstr "Ficheiro de chave não possui a chave “%s” no grupo “%s”"
 
-#: glib/gkeyfile.c:1954 glib/gkeyfile.c:2070
+#: glib/gkeyfile.c:1967 glib/gkeyfile.c:2083
 #, c-format
 msgid "Key file contains key “%s” with value “%s” which is not UTF-8"
 msgstr "Ficheiro de chave contém a chave “%s” com o valor “%s” que não é UTF-8"
 
-#: glib/gkeyfile.c:1974 glib/gkeyfile.c:2090 glib/gkeyfile.c:2529
+#: glib/gkeyfile.c:1987 glib/gkeyfile.c:2103 glib/gkeyfile.c:2542
 #, c-format
 msgid ""
 "Key file contains key “%s” which has a value that cannot be interpreted."
 msgstr "Ficheiro de chaves contém a chave “%s” cujo valor não é interpretável."
 
-#: glib/gkeyfile.c:2747 glib/gkeyfile.c:3116
+#: glib/gkeyfile.c:2757 glib/gkeyfile.c:3126
 #, c-format
 msgid ""
 "Key file contains key “%s” in group “%s” which has a value that cannot be "
@@ -5108,37 +5165,37 @@ msgstr ""
 "Ficheiro de chave contém a chave “%s” no grupo “%s” que tem um valor que não "
 "pode ser interpretado."
 
-#: glib/gkeyfile.c:2825 glib/gkeyfile.c:2902
+#: glib/gkeyfile.c:2835 glib/gkeyfile.c:2912
 #, c-format
 msgid "Key “%s” in group “%s” has value “%s” where %s was expected"
 msgstr "Chave “%s” no grupo “%s” tem o valor “%s” onde %s era esperado"
 
-#: glib/gkeyfile.c:4304
+#: glib/gkeyfile.c:4324
 msgid "Key file contains escape character at end of line"
 msgstr "Ficheiro de chave contém caracteres mascarados no final da linha"
 
-#: glib/gkeyfile.c:4326
+#: glib/gkeyfile.c:4346
 #, c-format
 msgid "Key file contains invalid escape sequence “%s”"
 msgstr ""
 "Ficheiro de chave contém uma sequência de caracteres mascarados inválida “%s”"
 
-#: glib/gkeyfile.c:4470
+#: glib/gkeyfile.c:4491
 #, c-format
 msgid "Value “%s” cannot be interpreted as a number."
 msgstr "Impossível interpretar o valor “%s” como um numérico."
 
-#: glib/gkeyfile.c:4484
+#: glib/gkeyfile.c:4505
 #, c-format
 msgid "Integer value “%s” out of range"
 msgstr "Valor inteiro “%s” para além do limite permitido"
 
-#: glib/gkeyfile.c:4517
+#: glib/gkeyfile.c:4538
 #, c-format
 msgid "Value “%s” cannot be interpreted as a float number."
 msgstr "Impossível interpretar o valor “%s” como um número vírgula flutuante."
 
-#: glib/gkeyfile.c:4556
+#: glib/gkeyfile.c:4577
 #, c-format
 msgid "Value “%s” cannot be interpreted as a boolean."
 msgstr "Impossível interpretar o valor “%s” como lógico."
@@ -5438,7 +5495,7 @@ msgstr "Erro ao processar a opção %s"
 msgid "Missing argument for %s"
 msgstr "Argumento em falta para %s"
 
-#: glib/goption.c:2185
+#: glib/goption.c:2184
 #, c-format
 msgid "Unknown option %s"
 msgstr "Opção %s desconhecida"
@@ -5844,142 +5901,152 @@ msgstr "Texto estava vazio (ou apenas continha espaços)"
 msgid "Failed to read data from child process (%s)"
 msgstr "Falha ao ler dados de sub processo (%s)"
 
-#: glib/gspawn.c:461
+#: glib/gspawn.c:462
 #, c-format
 msgid "Unexpected error in reading data from a child process (%s)"
 msgstr "Erro inesperado ao ler dados de sub processo (%s)"
 
-#: glib/gspawn.c:546
+#: glib/gspawn.c:547
 #, c-format
 msgid "Unexpected error in waitpid() (%s)"
 msgstr "Erro inesperado em waitpid() (%s)"
 
-#: glib/gspawn.c:1166 glib/gspawn-win32.c:1407
+#: glib/gspawn.c:1175 glib/gspawn-win32.c:1438
 #, c-format
 msgid "Child process exited with code %ld"
-msgstr "Processo sub processo terminou com o código %ld"
+msgstr "Sub processo terminou com o código %ld"
 
-#: glib/gspawn.c:1174
+#: glib/gspawn.c:1183
 #, c-format
 msgid "Child process killed by signal %ld"
-msgstr "Processo sub processo morto com o sinal %ld"
+msgstr "Sub processo morto com o sinal %ld"
 
-#: glib/gspawn.c:1181
+#: glib/gspawn.c:1190
 #, c-format
 msgid "Child process stopped by signal %ld"
-msgstr "Processo sub processo parado com o sinal %ld"
+msgstr "Sub processo parado com o sinal %ld"
 
-#: glib/gspawn.c:1188
+#: glib/gspawn.c:1197
 #, c-format
 msgid "Child process exited abnormally"
 msgstr "O sub processo terminou anormalmente"
 
-#: glib/gspawn.c:1864 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
+#: glib/gspawn.c:1890 glib/gspawn-win32.c:353 glib/gspawn-win32.c:361
 #, c-format
 msgid "Failed to read from child pipe (%s)"
-msgstr "Falha ao ler de canal de sub processo (%s)"
+msgstr "Falha ao ler de canal acima (%s)"
 
-#: glib/gspawn.c:2166
+#: glib/gspawn.c:2253
 #, c-format
 msgid "Failed to spawn child process “%s” (%s)"
 msgstr "Falha ao criar sub processo “%s” (%s)"
 
-#: glib/gspawn.c:2283
+#: glib/gspawn.c:2370
 #, c-format
 msgid "Failed to fork (%s)"
-msgstr "Falha ao efetuar fork (%s)"
+msgstr "Falha ao bifurcar \"fork\" (%s)"
 
-#: glib/gspawn.c:2443 glib/gspawn-win32.c:381
+#: glib/gspawn.c:2530 glib/gspawn-win32.c:384
 #, c-format
 msgid "Failed to change to directory “%s” (%s)"
 msgstr "Falha ao ir para o diretório “%s” (%s)"
 
-#: glib/gspawn.c:2453
+#: glib/gspawn.c:2540
 #, c-format
 msgid "Failed to execute child process “%s” (%s)"
 msgstr "Falha ao executar o sub processo “%s” (%s)"
 
-#: glib/gspawn.c:2463
+#: glib/gspawn.c:2550
 #, c-format
-msgid "Failed to redirect output or input of child process (%s)"
-msgstr "Falha ao redirecionar saída ou entrada de sub processo (%s)"
+msgid "Failed to open file to remap file descriptor (%s)"
+msgstr "Falha ao abrir o ficheiro para remapear o descritor do ficheiro (%s)"
 
-#: glib/gspawn.c:2472
+#: glib/gspawn.c:2558
+#, c-format
+msgid "Failed to duplicate file descriptor for child process (%s)"
+msgstr "Falha ao duplicar descritor do ficheiro para o sub processo (%s)"
+
+#: glib/gspawn.c:2567
 #, c-format
 msgid "Failed to fork child process (%s)"
 msgstr "Falha ao efetuar fork de sub processo (%s)"
 
-#: glib/gspawn.c:2480
+#: glib/gspawn.c:2575
 #, c-format
 msgid "Failed to close file descriptor for child process (%s)"
 msgstr "Falha em fechar o descritor de ficheiro para sub processo (%s)"
 
-#: glib/gspawn.c:2488
+#: glib/gspawn.c:2583
 #, c-format
 msgid "Unknown error executing child process “%s”"
 msgstr "Erro desconhecido ao executar sub processo “%s”"
 
-#: glib/gspawn.c:2512
+#: glib/gspawn.c:2607
 #, c-format
 msgid "Failed to read enough data from child pid pipe (%s)"
-msgstr "Impossível ler dados suficientes de canal pid do sub processo (%s)"
+msgstr "Impossível ler dados suficientes de canal pid acima (%s)"
 
-#: glib/gspawn-win32.c:294
+#: glib/gspawn-win32.c:297
 msgid "Failed to read data from child process"
 msgstr "Falha ao ler dados de sub processo"
 
-#: glib/gspawn-win32.c:387 glib/gspawn-win32.c:392 glib/gspawn-win32.c:511
+#: glib/gspawn-win32.c:390 glib/gspawn-win32.c:395 glib/gspawn-win32.c:521
 #, c-format
 msgid "Failed to execute child process (%s)"
 msgstr "Falha ao executar sub processo (%s)"
 
-#: glib/gspawn-win32.c:461
+#: glib/gspawn-win32.c:400
+#, c-format
+msgid "Failed to dup() in child process (%s)"
+msgstr "Falha ao dup() no sub processo (%s)"
+
+#: glib/gspawn-win32.c:471
 #, c-format
 msgid "Invalid program name: %s"
-msgstr "Nome de aplicação inválido: %s"
+msgstr "Nome de programa inválido: %s"
 
-#: glib/gspawn-win32.c:471 glib/gspawn-win32.c:779
+#: glib/gspawn-win32.c:481 glib/gspawn-win32.c:807
 #, c-format
 msgid "Invalid string in argument vector at %d: %s"
 msgstr "Cadeia inválida no vetor de argumentos na posição %d: %s"
 
-#: glib/gspawn-win32.c:482 glib/gspawn-win32.c:794
+#: glib/gspawn-win32.c:492 glib/gspawn-win32.c:823
 #, c-format
 msgid "Invalid string in environment: %s"
 msgstr "Cadeia inválida no ambiente: %s"
 
-#: glib/gspawn-win32.c:775
+#: glib/gspawn-win32.c:803
 #, c-format
 msgid "Invalid working directory: %s"
 msgstr "Pasta de trabalho inválida: %s"
 
-#: glib/gspawn-win32.c:837
+#: glib/gspawn-win32.c:868
 #, c-format
 msgid "Failed to execute helper program (%s)"
 msgstr "Falha ao executar aplicação auxiliar (%s)"
 
-#: glib/gspawn-win32.c:1064
+#: glib/gspawn-win32.c:1096
 msgid ""
 "Unexpected error in g_io_channel_win32_poll() reading data from a child "
 "process"
 msgstr ""
 "Erro inesperado no g_io_channel_win32_poll() ao ler dados de um sub processo"
 
-#: glib/gstrfuncs.c:3345 glib/gstrfuncs.c:3447
+#: glib/gstrfuncs.c:3351 glib/gstrfuncs.c:3453
 msgid "Empty string is not a number"
 msgstr "Cadeia vazia não é um número"
 
-#: glib/gstrfuncs.c:3369
+#: glib/gstrfuncs.c:3375
 #, c-format
 msgid "“%s” is not a signed number"
 msgstr "“%s” não é um número com sinal"
 
-#: glib/gstrfuncs.c:3379 glib/gstrfuncs.c:3483
+#: glib/gstrfuncs.c:3385 glib/gstrfuncs.c:3489
 #, c-format
 msgid "Number “%s” is out of bounds [%s, %s]"
 msgstr "Número “%s” está fora do limite [%s, %s]"
 
-#: glib/gstrfuncs.c:3473
+#: glib/gstrfuncs.c:3479
 #, c-format
 msgid "“%s” is not an unsigned number"
 msgstr "“%s” não é um valor sem sinal"
@@ -6040,175 +6107,175 @@ msgstr "URI não é absoluto, e nenhuma base URI foi fornecida"
 msgid "Missing ‘=’ and parameter value"
 msgstr "‘=’ e valor de parâmetro em falta"
 
-#: glib/gutf8.c:817
+#: glib/gutf8.c:832
 msgid "Failed to allocate memory"
 msgstr "Falha ao alocar memória"
 
-#: glib/gutf8.c:950
+#: glib/gutf8.c:965
 msgid "Character out of range for UTF-8"
 msgstr "Carácter fora do limite para UTF-8"
 
-#: glib/gutf8.c:1051 glib/gutf8.c:1060 glib/gutf8.c:1190 glib/gutf8.c:1199
-#: glib/gutf8.c:1338 glib/gutf8.c:1435
+#: glib/gutf8.c:1067 glib/gutf8.c:1076 glib/gutf8.c:1206 glib/gutf8.c:1215
+#: glib/gutf8.c:1354 glib/gutf8.c:1451
 msgid "Invalid sequence in conversion input"
 msgstr "Sequência inválida na conversão da entrada"
 
-#: glib/gutf8.c:1349 glib/gutf8.c:1446
+#: glib/gutf8.c:1365 glib/gutf8.c:1462
 msgid "Character out of range for UTF-16"
 msgstr "Carácter fora do limite para UTF-16"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2770
+#: glib/gutils.c:2849
 #, c-format
 msgid "%.1f kB"
 msgstr "%.1f kB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2772
+#: glib/gutils.c:2851
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2774
+#: glib/gutils.c:2853
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2776
+#: glib/gutils.c:2855
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2778
+#: glib/gutils.c:2857
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2780
+#: glib/gutils.c:2859
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2784
+#: glib/gutils.c:2863
 #, c-format
 msgid "%.1f KiB"
 msgstr "%.1f KiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2786
+#: glib/gutils.c:2865
 #, c-format
 msgid "%.1f MiB"
 msgstr "%.1f MiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2788
+#: glib/gutils.c:2867
 #, c-format
 msgid "%.1f GiB"
 msgstr "%.1f GiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2790
+#: glib/gutils.c:2869
 #, c-format
 msgid "%.1f TiB"
 msgstr "%.1f TiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2792
+#: glib/gutils.c:2871
 #, c-format
 msgid "%.1f PiB"
 msgstr "%.1f PiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2794
+#: glib/gutils.c:2873
 #, c-format
 msgid "%.1f EiB"
 msgstr "%.1f EiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2798
+#: glib/gutils.c:2877
 #, c-format
 msgid "%.1f kb"
 msgstr "%.1f kb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2800
+#: glib/gutils.c:2879
 #, c-format
 msgid "%.1f Mb"
 msgstr "%.1f Mb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2802
+#: glib/gutils.c:2881
 #, c-format
 msgid "%.1f Gb"
 msgstr "%.1f Gb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2804
+#: glib/gutils.c:2883
 #, c-format
 msgid "%.1f Tb"
 msgstr "%.1f Tb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2806
+#: glib/gutils.c:2885
 #, c-format
 msgid "%.1f Pb"
 msgstr "%.1f Pb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2808
+#: glib/gutils.c:2887
 #, c-format
 msgid "%.1f Eb"
 msgstr "%.1f Eb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2812
+#: glib/gutils.c:2891
 #, c-format
 msgid "%.1f Kib"
 msgstr "%.1f Kib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2814
+#: glib/gutils.c:2893
 #, c-format
 msgid "%.1f Mib"
 msgstr "%.1f Mib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2816
+#: glib/gutils.c:2895
 #, c-format
 msgid "%.1f Gib"
 msgstr "%.1f Gib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2818
+#: glib/gutils.c:2897
 #, c-format
 msgid "%.1f Tib"
 msgstr "%.1f Tib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2820
+#: glib/gutils.c:2899
 #, c-format
 msgid "%.1f Pib"
 msgstr "%.1f Pib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2822
+#: glib/gutils.c:2901
 #, c-format
 msgid "%.1f Eib"
 msgstr "%.1f Eib"
 
-#: glib/gutils.c:2856 glib/gutils.c:2973
+#: glib/gutils.c:2935 glib/gutils.c:3052
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
 msgstr[0] "%u byte"
 msgstr[1] "%u bytes"
 
-#: glib/gutils.c:2860
+#: glib/gutils.c:2939
 #, c-format
 msgid "%u bit"
 msgid_plural "%u bits"
@@ -6216,7 +6283,7 @@ msgstr[0] "%u bit"
 msgstr[1] "%u bits"
 
 #. Translators: the %s in "%s bytes" will always be replaced by a number.
-#: glib/gutils.c:2927
+#: glib/gutils.c:3006
 #, c-format
 msgid "%s byte"
 msgid_plural "%s bytes"
@@ -6224,7 +6291,7 @@ msgstr[0] "%s byte"
 msgstr[1] "%s bytes"
 
 #. Translators: the %s in "%s bits" will always be replaced by a number.
-#: glib/gutils.c:2932
+#: glib/gutils.c:3011
 #, c-format
 msgid "%s bit"
 msgid_plural "%s bits"
@@ -6236,32 +6303,32 @@ msgstr[1] "%s bits"
 #. * compatibility.  Users will not see this string unless a program is using this deprecated function.
 #. * Please translate as literally as possible.
 #.
-#: glib/gutils.c:2986
+#: glib/gutils.c:3065
 #, c-format
 msgid "%.1f KB"
 msgstr "%.1f KB"
 
-#: glib/gutils.c:2991
+#: glib/gutils.c:3070
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
-#: glib/gutils.c:2996
+#: glib/gutils.c:3075
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
-#: glib/gutils.c:3001
+#: glib/gutils.c:3080
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
-#: glib/gutils.c:3006
+#: glib/gutils.c:3085
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
-#: glib/gutils.c:3011
+#: glib/gutils.c:3090
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
@@ -6364,9 +6431,6 @@ msgstr "%.1f EB"
 #~ msgstr ""
 #~ "Incapaz de encontrar o tipo de monitor por omissão do diretório local"
 
-#~ msgid "URIs not supported"
-#~ msgstr "Não são suportados URIs"
-
 #~ msgid "association changes not supported on win32"
 #~ msgstr "alterações de associação não são suportadas em win32"
 
index 9494962..bfee3cb 100644 (file)
 # Jonh Wendell <jwendell@gnome.org>, 2009, 2010, 2012.
 # Felipe Braga <fbobraga@gmail.com>, 2015.
 # Artur de Aquino Morais <artur.morais93@outlook.com>, 2016.
-# Rafael Fontenelle <rafaelff@gnome.org>, 2013-2021.
-# Enrico Nicoletto <liverig@gmail.com>, 2013-2014, 2016, 2021.
+# Enrico Nicoletto <hiko@duck.com>, 2013-2014, 2016, 2021-2022.
+# Leônidas Araújo <leorusvellt@hotmail.com>, 2022.
+# Rafael Fontenelle <rafaelff@gnome.org>, 2013-2022.
 # Matheus Barbosa <mdpb.matheus@gmail.com>, 2022.
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: glib\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/glib/issues\n"
-"POT-Creation-Date: 2022-01-26 14:31+0000\n"
-"PO-Revision-Date: 2022-01-25 19:30-0300\n"
-"Last-Translator: Matheus Barbosa <mdpb.matheus@gmail.com>\n"
+"POT-Creation-Date: 2022-04-14 12:00+0000\n"
+"PO-Revision-Date: 2022-04-15 13:53-0300\n"
+"Last-Translator: Enrico Nicoletto <hiko@duck.com>\n"
 "Language-Team: Brazilian Portuguese <gnome-pt_br-list@gnome.org>\n"
 "Language: pt_BR\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=2; plural=(n > 1)\n"
-"X-Generator: Gtranslator 40.0\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+"X-Generator: Poedit 3.0.1\n"
 "X-Project-Style: gnome\n"
+"X-DL-Team: pt_BR\n"
+"X-DL-Module: glib\n"
+"X-DL-Branch: main\n"
+"X-DL-Domain: po\n"
+"X-DL-State: Translating\n"
+
+#: gio/gappinfo.c:333
+msgid "Setting default applications not supported yet"
+msgstr "Definir aplicativos padrão ainda não suportado"
+
+#: gio/gappinfo.c:366
+msgid "Setting application as last used for type not supported yet"
+msgstr ""
+"Definir o aplicativo como usado pela última vez para o tipo ainda não "
+"suportado"
 
 #: gio/gapplication.c:500
 msgid "GApplication options"
@@ -57,7 +73,7 @@ msgid "Replace the running instance"
 msgstr "Substitui a instância em execução"
 
 #: gio/gapplication-tool.c:45 gio/gapplication-tool.c:46 gio/gio-tool.c:227
-#: gio/gresource-tool.c:494 gio/gsettings-tool.c:572
+#: gio/gresource-tool.c:494 gio/gsettings-tool.c:584
 msgid "Print help"
 msgstr "Exibe a ajuda"
 
@@ -69,7 +85,7 @@ msgstr "[COMANDO]"
 msgid "Print version"
 msgstr "Exibe a versão"
 
-#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:578
+#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:590
 msgid "Print version information and exit"
 msgstr "Exibe a informação da versão e sai"
 
@@ -132,8 +148,8 @@ msgid "Application identifier in D-Bus format (eg: org.example.viewer)"
 msgstr ""
 "Identificador do aplicativo em formato D-Bus (ex: org.exemplo.visualizador)"
 
-#: gio/gapplication-tool.c:74 gio/glib-compile-resources.c:738
-#: gio/glib-compile-resources.c:744 gio/glib-compile-resources.c:772
+#: gio/gapplication-tool.c:74 gio/glib-compile-resources.c:820
+#: gio/glib-compile-resources.c:826 gio/glib-compile-resources.c:855
 #: gio/gresource-tool.c:501 gio/gresource-tool.c:567
 msgid "FILE"
 msgstr "ARQUIVO"
@@ -149,7 +165,7 @@ msgstr "AÇÃO"
 # Espaço inicial acrescentado para alinhar o texto (gapplication help action) -- Rafael
 #: gio/gapplication-tool.c:75
 msgid "The action name to invoke"
-msgstr "  O nome da ação a ser invocada"
+msgstr " O nome da ação a ser invocada"
 
 #: gio/gapplication-tool.c:76
 msgid "PARAMETER"
@@ -158,9 +174,9 @@ msgstr "PARÂMETRO"
 # Espaço inicial acrescentado para alinhar o texto (gapplication help action) -- Rafael
 #: gio/gapplication-tool.c:76
 msgid "Optional parameter to the action invocation, in GVariant format"
-msgstr " Parâmetro opcional para a invocação da ação, em formato GVariant"
+msgstr "Parâmetro opcional para a invocação da ação, em formato GVariant"
 
-#: gio/gapplication-tool.c:98 gio/gresource-tool.c:532 gio/gsettings-tool.c:664
+#: gio/gapplication-tool.c:98 gio/gresource-tool.c:532 gio/gsettings-tool.c:676
 #, c-format
 msgid ""
 "Unknown command %s\n"
@@ -174,7 +190,7 @@ msgid "Usage:\n"
 msgstr "Uso:\n"
 
 #: gio/gapplication-tool.c:116 gio/gresource-tool.c:557
-#: gio/gsettings-tool.c:699
+#: gio/gsettings-tool.c:711
 msgid "Arguments:\n"
 msgstr "Argumentos:\n"
 
@@ -298,7 +314,7 @@ msgstr "O fluxo já está fechado"
 msgid "Truncate not supported on base stream"
 msgstr "Não há suporte para truncar fluxo base"
 
-#: gio/gcancellable.c:319 gio/gdbusconnection.c:1873 gio/gdbusprivate.c:1416
+#: gio/gcancellable.c:319 gio/gdbusconnection.c:1857 gio/gdbusprivate.c:1418
 #: gio/gsimpleasyncresult.c:871 gio/gsimpleasyncresult.c:897
 #, c-format
 msgid "Operation was cancelled"
@@ -319,7 +335,7 @@ msgstr "Espaço insuficiente no destino"
 #: gio/gcharsetconverter.c:342 gio/gdatainputstream.c:848
 #: gio/gdatainputstream.c:1266 glib/gconvert.c:449 glib/gconvert.c:879
 #: glib/giochannel.c:1573 glib/giochannel.c:1615 glib/giochannel.c:2470
-#: glib/gutf8.c:875 glib/gutf8.c:1328
+#: glib/gutf8.c:890 glib/gutf8.c:1344
 msgid "Invalid byte sequence in conversion input"
 msgstr "Sequência de bytes inválida na entrada de conversão"
 
@@ -329,7 +345,7 @@ msgstr "Sequência de bytes inválida na entrada de conversão"
 msgid "Error during conversion: %s"
 msgstr "Erro durante a conversão: %s"
 
-#: gio/gcharsetconverter.c:445 gio/gsocket.c:1143
+#: gio/gcharsetconverter.c:445 gio/gsocket.c:1147
 msgid "Cancellable initialization not supported"
 msgstr "Sem suporte a inicialização cancelável"
 
@@ -343,37 +359,37 @@ msgstr "Não há suporte à conversão do conjunto de caracteres “%s” para 
 msgid "Could not open converter from “%s” to “%s”"
 msgstr "Não foi possível abrir conversor de “%s” para “%s”"
 
-#: gio/gcontenttype.c:454
+#: gio/gcontenttype.c:470
 #, c-format
 msgid "%s type"
 msgstr "tipo %s"
 
-#: gio/gcontenttype-win32.c:192
+#: gio/gcontenttype-win32.c:196
 msgid "Unknown type"
 msgstr "Tipo desconhecido"
 
-#: gio/gcontenttype-win32.c:194
+#: gio/gcontenttype-win32.c:198
 #, c-format
 msgid "%s filetype"
 msgstr "tipo de arquivo %s"
 
-#: gio/gcredentials.c:323
+#: gio/gcredentials.c:335
 msgid "GCredentials contains invalid data"
 msgstr "GCredentials contém dados inválidos"
 
-#: gio/gcredentials.c:383 gio/gcredentials.c:667
+#: gio/gcredentials.c:395 gio/gcredentials.c:686
 msgid "GCredentials is not implemented on this OS"
 msgstr "GCredentials não está implementado neste SO"
 
-#: gio/gcredentials.c:538 gio/gcredentials.c:556
+#: gio/gcredentials.c:550 gio/gcredentials.c:568
 msgid "There is no GCredentials support for your platform"
 msgstr "Não há suporte ao GCredentials para sua plataforma"
 
-#: gio/gcredentials.c:607
+#: gio/gcredentials.c:626
 msgid "GCredentials does not contain a process ID on this OS"
 msgstr "GCredentials não contém um ID de processo neste SO"
 
-#: gio/gcredentials.c:661
+#: gio/gcredentials.c:680
 msgid "Credentials spoofing is not possible on this OS"
 msgstr ""
 "Não é possível fazer uso de falsificação de credenciais neste sistema "
@@ -383,18 +399,18 @@ msgstr ""
 msgid "Unexpected early end-of-stream"
 msgstr "Fim do fluxo inesperadamente prematuro"
 
-#: gio/gdbusaddress.c:159 gio/gdbusaddress.c:233 gio/gdbusaddress.c:322
+#: gio/gdbusaddress.c:162 gio/gdbusaddress.c:236 gio/gdbusaddress.c:325
 #, c-format
 msgid "Unsupported key “%s” in address entry “%s”"
 msgstr "Não há suporte a chave “%s” na entrada de endereço “%s”"
 
-#: gio/gdbusaddress.c:172
+#: gio/gdbusaddress.c:175
 #, c-format
 msgid "Meaningless key/value pair combination in address entry “%s”"
 msgstr ""
 "Combinação de pares chave/valor sem sentido na entrada de endereço “%s”"
 
-#: gio/gdbusaddress.c:181
+#: gio/gdbusaddress.c:184
 #, c-format
 msgid ""
 "Address “%s” is invalid (need exactly one of path, dir, tmpdir, or abstract "
@@ -403,28 +419,28 @@ msgstr ""
 "O endereço “%s” é inválido (é necessário exatamente um dentre: caminho, "
 "diretório, diretório temporário ou chaves abstratas)"
 
-#: gio/gdbusaddress.c:248 gio/gdbusaddress.c:259 gio/gdbusaddress.c:274
-#: gio/gdbusaddress.c:337 gio/gdbusaddress.c:348
+#: gio/gdbusaddress.c:251 gio/gdbusaddress.c:262 gio/gdbusaddress.c:277
+#: gio/gdbusaddress.c:340 gio/gdbusaddress.c:351
 #, c-format
 msgid "Error in address “%s” — the “%s” attribute is malformed"
 msgstr "Erro no endereço “%s” — o atributo “%s” está malformado"
 
-#: gio/gdbusaddress.c:418 gio/gdbusaddress.c:682
+#: gio/gdbusaddress.c:421 gio/gdbusaddress.c:680
 #, c-format
 msgid "Unknown or unsupported transport “%s” for address “%s”"
 msgstr "Transporte desconhecido ou sem suporte “%s” para o endereço “%s”"
 
-#: gio/gdbusaddress.c:462
+#: gio/gdbusaddress.c:465
 #, c-format
 msgid "Address element “%s” does not contain a colon (:)"
 msgstr "O elemento endereço “%s” não contém um caractere de dois-pontos (:)"
 
-#: gio/gdbusaddress.c:471
+#: gio/gdbusaddress.c:474
 #, c-format
 msgid "Transport name in address element “%s” must not be empty"
 msgstr "O nome do transporte no elemento de endereço “%s” não pode estar vazio"
 
-#: gio/gdbusaddress.c:492
+#: gio/gdbusaddress.c:495
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” does not contain an equal "
@@ -433,7 +449,7 @@ msgstr ""
 "O par chave/valor %d, “%s”, no elemento endereço “%s”, não contém um sinal "
 "de igual"
 
-#: gio/gdbusaddress.c:503
+#: gio/gdbusaddress.c:506
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” must not have an empty key"
@@ -441,7 +457,7 @@ msgstr ""
 "O par chave/valor %d, “%s”, no elemento endereço “%s”, não pode ter uma "
 "chave vazia"
 
-#: gio/gdbusaddress.c:517
+#: gio/gdbusaddress.c:520
 #, c-format
 msgid ""
 "Error unescaping key or value in Key/Value pair %d, “%s”, in address element "
@@ -450,7 +466,7 @@ msgstr ""
 "Erro ao distinguir a chave sem escape ou valor no par chave/valor %d, “%s”, "
 "no elemento endereço “%s”"
 
-#: gio/gdbusaddress.c:589
+#: gio/gdbusaddress.c:588
 #, c-format
 msgid ""
 "Error in address “%s” — the unix transport requires exactly one of the keys "
@@ -459,82 +475,84 @@ msgstr ""
 "Erro no endereço “%s” — o transporte Unix requer exatamente uma das chaves "
 "“path” ou “abstract” sejam definidas"
 
-#: gio/gdbusaddress.c:625
+#: gio/gdbusaddress.c:623
 #, c-format
 msgid "Error in address “%s” — the host attribute is missing or malformed"
 msgstr ""
 "Erro no endereço “%s” — o atributo servidor está faltando ou malformado"
 
-#: gio/gdbusaddress.c:639
+#: gio/gdbusaddress.c:637
 #, c-format
 msgid "Error in address “%s” — the port attribute is missing or malformed"
 msgstr "Erro no endereço “%s” — o atributo porta está faltando ou malformado"
 
-#: gio/gdbusaddress.c:653
+#: gio/gdbusaddress.c:651
 #, c-format
 msgid "Error in address “%s” — the noncefile attribute is missing or malformed"
 msgstr ""
 "Erro no endereço “%s” — o atributo do arquivo de valor de uso único está "
 "faltando ou malformado"
 
-#: gio/gdbusaddress.c:674
+#: gio/gdbusaddress.c:672
 msgid "Error auto-launching: "
 msgstr "Erro ao iniciar automaticamente: "
 
-#: gio/gdbusaddress.c:727
+#: gio/gdbusaddress.c:725
 #, c-format
 msgid "Error opening nonce file “%s”: %s"
 msgstr "Erro ao abrir arquivo de valor de uso único “%s”: %s"
 
-#: gio/gdbusaddress.c:746
+#: gio/gdbusaddress.c:744
 #, c-format
 msgid "Error reading from nonce file “%s”: %s"
 msgstr "Erro ao ler arquivo de valor de uso único “%s”: %s"
 
-#: gio/gdbusaddress.c:755
+#: gio/gdbusaddress.c:753
 #, c-format
 msgid "Error reading from nonce file “%s”, expected 16 bytes, got %d"
 msgstr ""
 "Erro ao ler o arquivo de valor de uso único “%s”; era esperado 16 bytes, mas "
 "foi obtido %d"
 
-#: gio/gdbusaddress.c:773
+#: gio/gdbusaddress.c:771
 #, c-format
 msgid "Error writing contents of nonce file “%s” to stream:"
 msgstr "Erro ao gravar o arquivo de valor de uso único “%s” no fluxo:"
 
-#: gio/gdbusaddress.c:988
+#: gio/gdbusaddress.c:986
 msgid "The given address is empty"
 msgstr "O endereço fornecido está vazio"
 
-#: gio/gdbusaddress.c:1101
+#: gio/gdbusaddress.c:1099
 #, c-format
-msgid "Cannot spawn a message bus when setuid"
-msgstr "Não foi possível chamar um barramento de mensagens com setuid"
+msgid "Cannot spawn a message bus when AT_SECURE is set"
+msgstr ""
+"Não é possível chamar um barramento de mensagens quando AT_SECURE está "
+"definido"
 
-#: gio/gdbusaddress.c:1108
+#: gio/gdbusaddress.c:1106
 msgid "Cannot spawn a message bus without a machine-id: "
 msgstr ""
 "Não foi possível chamar um barramento de mensagens sem um ID de máquina: "
 
-#: gio/gdbusaddress.c:1115
+#: gio/gdbusaddress.c:1113
 #, c-format
 msgid "Cannot autolaunch D-Bus without X11 $DISPLAY"
 msgstr "Não foi possível iniciar automaticamente o D-Bus sem X11 $DISPLAY"
 
-#: gio/gdbusaddress.c:1157
+#: gio/gdbusaddress.c:1155
 #, c-format
 msgid "Error spawning command line “%s”: "
 msgstr "Erro ao chamar a linha de comandos “%s”: "
 
-#: gio/gdbusaddress.c:1226
+#: gio/gdbusaddress.c:1224
 #, c-format
 msgid "Cannot determine session bus address (not implemented for this OS)"
 msgstr ""
 "Não foi possível determinar o endereço de barramento da sessão (sem "
 "implementação para este SO)"
 
-#: gio/gdbusaddress.c:1375 gio/gdbusconnection.c:7334
+#: gio/gdbusaddress.c:1373 gio/gdbusconnection.c:7318
 #, c-format
 msgid ""
 "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
@@ -543,7 +561,7 @@ msgstr ""
 "Não foi possível determinar o endereço de barramento da variável de ambiente "
 "DBUS_STARTER_BUS_TYPE — valor desconhecido “%s”"
 
-#: gio/gdbusaddress.c:1384 gio/gdbusconnection.c:7343
+#: gio/gdbusaddress.c:1382 gio/gdbusconnection.c:7327
 msgid ""
 "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
 "variable is not set"
@@ -551,7 +569,7 @@ msgstr ""
 "Não foi possível determinar o endereço do barramento porque a variável de "
 "ambiente DBUS_STARTER_BUS_TYPE não está definida"
 
-#: gio/gdbusaddress.c:1394
+#: gio/gdbusaddress.c:1392
 #, c-format
 msgid "Unknown bus type %d"
 msgstr "Tipo de barramento %d desconhecido"
@@ -580,12 +598,12 @@ msgstr "IDs de usuário devem ser o mesmo para a ponta e o servidor"
 msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
 msgstr "Cancelado via GDBusAuthObserver::authorize-authenticated-peer"
 
-#: gio/gdbusauthmechanismsha1.c:298
+#: gio/gdbusauthmechanismsha1.c:300
 #, c-format
 msgid "Error when getting information for directory “%s”: %s"
 msgstr "Erro ao obter informação para o diretório “%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:313
+#: gio/gdbusauthmechanismsha1.c:315
 #, c-format
 msgid ""
 "Permissions on directory “%s” are malformed. Expected mode 0700, got 0%o"
@@ -593,32 +611,32 @@ msgstr ""
 "As permissões no diretório “%s” estão malformadas. É esperado 0700, mas foi "
 "obtido 0%o"
 
-#: gio/gdbusauthmechanismsha1.c:346 gio/gdbusauthmechanismsha1.c:357
+#: gio/gdbusauthmechanismsha1.c:348 gio/gdbusauthmechanismsha1.c:359
 #, c-format
 msgid "Error creating directory “%s”: %s"
 msgstr "Erro ao criar o diretório “%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:359 gio/gfile.c:1062 gio/gfile.c:1300
-#: gio/gfile.c:1438 gio/gfile.c:1676 gio/gfile.c:1731 gio/gfile.c:1789
-#: gio/gfile.c:1873 gio/gfile.c:1930 gio/gfile.c:1994 gio/gfile.c:2049
-#: gio/gfile.c:3754 gio/gfile.c:3809 gio/gfile.c:4102 gio/gfile.c:4572
-#: gio/gfile.c:4983 gio/gfile.c:5068 gio/gfile.c:5158 gio/gfile.c:5255
-#: gio/gfile.c:5342 gio/gfile.c:5443 gio/gfile.c:8153 gio/gfile.c:8243
-#: gio/gfile.c:8327 gio/win32/gwinhttpfile.c:453
+#: gio/gdbusauthmechanismsha1.c:361 gio/gfile.c:1080 gio/gfile.c:1318
+#: gio/gfile.c:1456 gio/gfile.c:1694 gio/gfile.c:1749 gio/gfile.c:1807
+#: gio/gfile.c:1891 gio/gfile.c:1948 gio/gfile.c:2012 gio/gfile.c:2067
+#: gio/gfile.c:3772 gio/gfile.c:3912 gio/gfile.c:4205 gio/gfile.c:4675
+#: gio/gfile.c:5086 gio/gfile.c:5171 gio/gfile.c:5261 gio/gfile.c:5358
+#: gio/gfile.c:5445 gio/gfile.c:5546 gio/gfile.c:8375 gio/gfile.c:8465
+#: gio/gfile.c:8549 gio/win32/gwinhttpfile.c:453
 msgid "Operation not supported"
 msgstr "Operação sem suporte"
 
-#: gio/gdbusauthmechanismsha1.c:402
+#: gio/gdbusauthmechanismsha1.c:404
 #, c-format
 msgid "Error opening keyring “%s” for reading: "
 msgstr "Erro ao abrir o chaveiro “%s” para leitura: "
 
-#: gio/gdbusauthmechanismsha1.c:425 gio/gdbusauthmechanismsha1.c:747
+#: gio/gdbusauthmechanismsha1.c:427 gio/gdbusauthmechanismsha1.c:769
 #, c-format
 msgid "Line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr "A linha %d do chaveiro em “%s” com o conteúdo “%s” está malformado"
 
-#: gio/gdbusauthmechanismsha1.c:439 gio/gdbusauthmechanismsha1.c:761
+#: gio/gdbusauthmechanismsha1.c:441 gio/gdbusauthmechanismsha1.c:783
 #, c-format
 msgid ""
 "First token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -626,7 +644,7 @@ msgstr ""
 "O primeiro símbolo da linha %d do chaveiro em “%s” com o conteúdo “%s” está "
 "malformado"
 
-#: gio/gdbusauthmechanismsha1.c:453 gio/gdbusauthmechanismsha1.c:775
+#: gio/gdbusauthmechanismsha1.c:455 gio/gdbusauthmechanismsha1.c:797
 #, c-format
 msgid ""
 "Second token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -634,167 +652,167 @@ msgstr ""
 "O segundo símbolo da linha %d do chaveiro em “%s” com o conteúdo “%s” está "
 "malformado"
 
-#: gio/gdbusauthmechanismsha1.c:477
+#: gio/gdbusauthmechanismsha1.c:479
 #, c-format
 msgid "Didn’t find cookie with id %d in the keyring at “%s”"
 msgstr "Não foi possível localizar um anexo com o ID %d no chaveiro em “%s”"
 
-#: gio/gdbusauthmechanismsha1.c:523
+#: gio/gdbusauthmechanismsha1.c:536
 #, c-format
 msgid "Error creating lock file “%s”: %s"
 msgstr "Erro ao criar o arquivo de bloqueio “%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:587
+#: gio/gdbusauthmechanismsha1.c:609
 #, c-format
 msgid "Error deleting stale lock file “%s”: %s"
 msgstr "Erro ao excluir o arquivo de bloqueio anterior “%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:626
+#: gio/gdbusauthmechanismsha1.c:648
 #, c-format
 msgid "Error closing (unlinked) lock file “%s”: %s"
 msgstr "Erro ao fechar o arquivo de bloqueio (desvinculado) “%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:637
+#: gio/gdbusauthmechanismsha1.c:659
 #, c-format
 msgid "Error unlinking lock file “%s”: %s"
 msgstr "Erro ao desvincular o arquivo de bloqueio “%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:714
+#: gio/gdbusauthmechanismsha1.c:736
 #, c-format
 msgid "Error opening keyring “%s” for writing: "
 msgstr "Erro ao abrir o chaveiro “%s” para escrita: "
 
-#: gio/gdbusauthmechanismsha1.c:908
+#: gio/gdbusauthmechanismsha1.c:930
 #, c-format
 msgid "(Additionally, releasing the lock for “%s” also failed: %s) "
 msgstr "(Adicionalmente, liberar o bloqueio de “%s” também falhou: %s) "
 
-#: gio/gdbusconnection.c:604 gio/gdbusconnection.c:2418
+#: gio/gdbusconnection.c:588 gio/gdbusconnection.c:2402
 msgid "The connection is closed"
 msgstr "A conexão está fechada"
 
-#: gio/gdbusconnection.c:1903
+#: gio/gdbusconnection.c:1887
 msgid "Timeout was reached"
 msgstr "O tempo limite foi alcançado"
 
-#: gio/gdbusconnection.c:2541
+#: gio/gdbusconnection.c:2525
 msgid ""
 "Unsupported flags encountered when constructing a client-side connection"
 msgstr ""
 "Foram encontrados sinalizadores sem suporte ao construir uma conexão do lado "
 "do cliente"
 
-#: gio/gdbusconnection.c:4269 gio/gdbusconnection.c:4623
+#: gio/gdbusconnection.c:4253 gio/gdbusconnection.c:4607
 #, c-format
 msgid ""
 "No such interface “org.freedesktop.DBus.Properties” on object at path %s"
 msgstr ""
 "Nenhuma interface “org.freedesktop.DBus.Properties” no objeto no caminho %s"
 
-#: gio/gdbusconnection.c:4414
+#: gio/gdbusconnection.c:4398
 #, c-format
 msgid "No such property “%s”"
 msgstr "Nenhuma propriedade “%s”"
 
-#: gio/gdbusconnection.c:4426
+#: gio/gdbusconnection.c:4410
 #, c-format
 msgid "Property “%s” is not readable"
 msgstr "A propriedade “%s” não pode ser lida"
 
-#: gio/gdbusconnection.c:4437
+#: gio/gdbusconnection.c:4421
 #, c-format
 msgid "Property “%s” is not writable"
 msgstr "A propriedade “%s” não pode ser escrita"
 
-#: gio/gdbusconnection.c:4457
+#: gio/gdbusconnection.c:4441
 #, c-format
 msgid "Error setting property “%s”: Expected type “%s” but got “%s”"
 msgstr ""
 "Erro ao definir a propriedade “%s”: o tipo esperado é “%s”, mas obteve “%s”"
 
-#: gio/gdbusconnection.c:4562 gio/gdbusconnection.c:4777
-#: gio/gdbusconnection.c:6760
+#: gio/gdbusconnection.c:4546 gio/gdbusconnection.c:4761
+#: gio/gdbusconnection.c:6744
 #, c-format
 msgid "No such interface “%s”"
 msgstr "Nenhuma interface “%s”"
 
-#: gio/gdbusconnection.c:4999 gio/gdbusconnection.c:7274
+#: gio/gdbusconnection.c:4983 gio/gdbusconnection.c:7258
 #, c-format
 msgid "No such interface “%s” on object at path %s"
 msgstr "Nenhuma interface “%s” no objeto no caminho %s"
 
-#: gio/gdbusconnection.c:5100
+#: gio/gdbusconnection.c:5084
 #, c-format
 msgid "No such method “%s”"
 msgstr "Método inexistente “%s”"
 
-#: gio/gdbusconnection.c:5131
+#: gio/gdbusconnection.c:5115
 #, c-format
 msgid "Type of message, “%s”, does not match expected type “%s”"
 msgstr "O tipo da mensagem, “%s”, não equivale ao tipo esperado “%s”"
 
-#: gio/gdbusconnection.c:5334
+#: gio/gdbusconnection.c:5318
 #, c-format
 msgid "An object is already exported for the interface %s at %s"
 msgstr "Um objeto já foi exportado para a interface %s em %s"
 
-#: gio/gdbusconnection.c:5561
+#: gio/gdbusconnection.c:5545
 #, c-format
 msgid "Unable to retrieve property %s.%s"
 msgstr "Não foi possível obter a propriedade %s.%s"
 
-#: gio/gdbusconnection.c:5617
+#: gio/gdbusconnection.c:5601
 #, c-format
 msgid "Unable to set property %s.%s"
 msgstr "Não foi possível definir a propriedade %s.%s"
 
-#: gio/gdbusconnection.c:5796
+#: gio/gdbusconnection.c:5780
 #, c-format
 msgid "Method “%s” returned type “%s”, but expected “%s”"
 msgstr "O método “%s” retornou o tipo “%s”, mas é esperado “%s”"
 
-#: gio/gdbusconnection.c:6872
+#: gio/gdbusconnection.c:6856
 #, c-format
 msgid "Method “%s” on interface “%s” with signature “%s” does not exist"
 msgstr "O método “%s” na interface “%s” com a assinatura “%s” não existe"
 
-#: gio/gdbusconnection.c:6993
+#: gio/gdbusconnection.c:6977
 #, c-format
 msgid "A subtree is already exported for %s"
 msgstr "Uma subárvore já foi exportada para %s"
 
-#: gio/gdbusconnection.c:7282
+#: gio/gdbusconnection.c:7266
 #, c-format
 msgid "Object does not exist at path “%s”"
 msgstr "O objeto não existe no caminho “%s”"
 
-#: gio/gdbusmessage.c:1311
+#: gio/gdbusmessage.c:1301
 msgid "type is INVALID"
 msgstr "o tipo é INVALID"
 
-#: gio/gdbusmessage.c:1322
+#: gio/gdbusmessage.c:1312
 msgid "METHOD_CALL message: PATH or MEMBER header field is missing"
 msgstr ""
 "Mensagem de METHOD_CALL: O campo de cabeçalho PATH ou MEMBER está faltando"
 
-#: gio/gdbusmessage.c:1333
+#: gio/gdbusmessage.c:1323
 msgid "METHOD_RETURN message: REPLY_SERIAL header field is missing"
 msgstr ""
 "Mensagem de METHOD_RETURN: O campo de cabeçalho REPLY_SERIAL está faltando"
 
-#: gio/gdbusmessage.c:1345
+#: gio/gdbusmessage.c:1335
 msgid "ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing"
 msgstr ""
 "Mensagem de ERROR: O campo de cabeçalho REPLY_SERIAL ou ERROR_NAME está "
 "faltando"
 
-#: gio/gdbusmessage.c:1358
+#: gio/gdbusmessage.c:1348
 msgid "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing"
 msgstr ""
 "Mensagem de SIGNAL: O campo de cabeçalho PATH, INTERFACE ou MEMBER está "
 "faltando"
 
-#: gio/gdbusmessage.c:1366
+#: gio/gdbusmessage.c:1356
 msgid ""
 "SIGNAL message: The PATH header field is using the reserved value /org/"
 "freedesktop/DBus/Local"
@@ -802,7 +820,7 @@ msgstr ""
 "Mensagem de SIGNAL: O campo de cabeçalho PATH está usando o valor reservado /"
 "org/freedesktop/DBus/Local"
 
-#: gio/gdbusmessage.c:1374
+#: gio/gdbusmessage.c:1364
 msgid ""
 "SIGNAL message: The INTERFACE header field is using the reserved value org."
 "freedesktop.DBus.Local"
@@ -810,21 +828,21 @@ msgstr ""
 "Mensagem de SIGNAL: O campo de cabeçalho INTERFACE está usando o valor "
 "reservado org.freedesktop.DBus.Local"
 
-#: gio/gdbusmessage.c:1422 gio/gdbusmessage.c:1482
+#: gio/gdbusmessage.c:1412 gio/gdbusmessage.c:1472
 #, c-format
 msgid "Wanted to read %lu byte but only got %lu"
 msgid_plural "Wanted to read %lu bytes but only got %lu"
 msgstr[0] "Ao tentar ler %lu byte obteve-se %lu"
 msgstr[1] "Ao tentar ler %lu bytes obteve-se %lu"
 
-#: gio/gdbusmessage.c:1436
+#: gio/gdbusmessage.c:1426
 #, c-format
 msgid "Expected NUL byte after the string “%s” but found byte %d"
 msgstr ""
 "Era esperado um byte NUL (nulo) após o texto “%s”, mas foi localizado o byte "
 "%d"
 
-#: gio/gdbusmessage.c:1455
+#: gio/gdbusmessage.c:1445
 #, c-format
 msgid ""
 "Expected valid UTF-8 string but found invalid bytes at byte offset %d "
@@ -834,21 +852,21 @@ msgstr ""
 "posição %d (tamanho do texto é %d). O texto UTF-8 válido até este ponto era "
 "“%s”"
 
-#: gio/gdbusmessage.c:1519 gio/gdbusmessage.c:1795 gio/gdbusmessage.c:2006
+#: gio/gdbusmessage.c:1509 gio/gdbusmessage.c:1785 gio/gdbusmessage.c:1996
 msgid "Value nested too deeply"
 msgstr "Valor aninhado profundo demais"
 
-#: gio/gdbusmessage.c:1687
+#: gio/gdbusmessage.c:1677
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus object path"
 msgstr "O valor “%s” analisado não é um objeto de caminho D-Bus válido"
 
-#: gio/gdbusmessage.c:1711
+#: gio/gdbusmessage.c:1701
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature"
 msgstr "O valor “%s” analisado não é uma assinatura D-Bus válida"
 
-#: gio/gdbusmessage.c:1762
+#: gio/gdbusmessage.c:1752
 #, c-format
 msgid ""
 "Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB)."
@@ -861,7 +879,7 @@ msgstr[1] ""
 "Foi encontrado um vetor com tamanho de %u bytes. O tamanho máximo é de 2<<26 "
 "bytes (64 MiB)."
 
-#: gio/gdbusmessage.c:1782
+#: gio/gdbusmessage.c:1772
 #, c-format
 msgid ""
 "Encountered array of type “a%c”, expected to have a length a multiple of %u "
@@ -871,16 +889,16 @@ msgstr ""
 "comprimento múltiplo de %u bytes, porém foi localizado %u bytes em "
 "comprimento"
 
-#: gio/gdbusmessage.c:1936 gio/gdbusmessage.c:2655
+#: gio/gdbusmessage.c:1926 gio/gdbusmessage.c:2645
 msgid "Empty structures (tuples) are not allowed in D-Bus"
 msgstr "Estruturas (tuplas) vazias não são permitidas no D-Bus"
 
-#: gio/gdbusmessage.c:1990
+#: gio/gdbusmessage.c:1980
 #, c-format
 msgid "Parsed value “%s” for variant is not a valid D-Bus signature"
 msgstr "O valor “%s” analisado para variante não é uma assinatura D-Bus válida"
 
-#: gio/gdbusmessage.c:2031
+#: gio/gdbusmessage.c:2021
 #, c-format
 msgid ""
 "Error deserializing GVariant with type string “%s” from the D-Bus wire format"
@@ -888,7 +906,7 @@ msgstr ""
 "Erro ao desserializar GVariant com o texto de tipo “%s” do formato "
 "delimitado pelo D-Bus"
 
-#: gio/gdbusmessage.c:2216
+#: gio/gdbusmessage.c:2206
 #, c-format
 msgid ""
 "Invalid endianness value. Expected 0x6c (“l”) or 0x42 (“B”) but found value "
@@ -897,31 +915,31 @@ msgstr ""
 "Valor identificador de endian inválido. Era esperado 0x6c (“l”) ou 0x42 "
 "(“B”), mas foi localizado o valor 0x%02x"
 
-#: gio/gdbusmessage.c:2235
+#: gio/gdbusmessage.c:2225
 #, c-format
 msgid "Invalid major protocol version. Expected 1 but found %d"
 msgstr ""
 "Versão majoritária de protocolo inválida. Era esperado 1, mas foi localizado "
 "%d"
 
-#: gio/gdbusmessage.c:2293 gio/gdbusmessage.c:2891
+#: gio/gdbusmessage.c:2283 gio/gdbusmessage.c:2881
 msgid "Signature header found but is not of type signature"
 msgstr "Cabeçalho da assinatura localizado, mas não é do tipo assinatura"
 
-#: gio/gdbusmessage.c:2305
+#: gio/gdbusmessage.c:2295
 #, c-format
 msgid "Signature header with signature “%s” found but message body is empty"
 msgstr ""
 "O cabeçalho de assinatura foi localizado com a assinatura “%s”, mas o corpo "
 "da mensagem está vazio"
 
-#: gio/gdbusmessage.c:2320
+#: gio/gdbusmessage.c:2310
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature (for body)"
 msgstr ""
 "O valor “%s” analisado não é uma assinatura D-Bus válida (para o corpo)"
 
-#: gio/gdbusmessage.c:2352
+#: gio/gdbusmessage.c:2342
 #, 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"
@@ -932,11 +950,11 @@ msgstr[1] ""
 "Nenhum cabeçalho de assinatura na mensagem, mas o corpo da mensagem tem %u "
 "bytes"
 
-#: gio/gdbusmessage.c:2362
+#: gio/gdbusmessage.c:2352
 msgid "Cannot deserialize message: "
 msgstr "Não foi possível desserializar a mensagem: "
 
-#: gio/gdbusmessage.c:2708
+#: gio/gdbusmessage.c:2698
 #, c-format
 msgid ""
 "Error serializing GVariant with type string “%s” to the D-Bus wire format"
@@ -944,7 +962,7 @@ msgstr ""
 "Erro ao serializar GVariant com o texto de tipo “%s” para o formato "
 "delimitado pelo D-Bus"
 
-#: gio/gdbusmessage.c:2845
+#: gio/gdbusmessage.c:2835
 #, c-format
 msgid ""
 "Number of file descriptors in message (%d) differs from header field (%d)"
@@ -952,18 +970,18 @@ msgstr ""
 "O número de descritores de arquivo na mensagem (%d) difere do campo de "
 "cabeçalho (%d)"
 
-#: gio/gdbusmessage.c:2853
+#: gio/gdbusmessage.c:2843
 msgid "Cannot serialize message: "
 msgstr "Não foi possível serializar a mensagem: "
 
-#: gio/gdbusmessage.c:2906
+#: gio/gdbusmessage.c:2896
 #, c-format
 msgid "Message body has signature “%s” but there is no signature header"
 msgstr ""
 "O corpo da mensagem tem a assinatura “%s”, mas não há um cabeçalho de "
 "assinatura"
 
-#: gio/gdbusmessage.c:2916
+#: gio/gdbusmessage.c:2906
 #, c-format
 msgid ""
 "Message body has type signature “%s” but signature in the header field is "
@@ -972,54 +990,54 @@ msgstr ""
 "O corpo da mensagem tem o tipo de assinatura “%s”, mas a assinatura no campo "
 "de cabeçalho é “%s”"
 
-#: gio/gdbusmessage.c:2932
+#: gio/gdbusmessage.c:2922
 #, c-format
 msgid "Message body is empty but signature in the header field is “(%s)”"
 msgstr ""
 "O corpo da mensagem está vazio, mas a assinatura no campo de cabeçalho é "
 "“(%s)”"
 
-#: gio/gdbusmessage.c:3487
+#: gio/gdbusmessage.c:3477
 #, c-format
 msgid "Error return with body of type “%s”"
 msgstr "Retorno de erro com o corpo de tipo “%s”"
 
-#: gio/gdbusmessage.c:3495
+#: gio/gdbusmessage.c:3485
 msgid "Error return with empty body"
 msgstr "Retorno de erro com o corpo vazio"
 
-#: gio/gdbusprivate.c:2246
+#: gio/gdbusprivate.c:2185
 #, c-format
 msgid "(Type any character to close this window)\n"
 msgstr "(Digite qualquer tecla para fechar esta janela)\n"
 
-#: gio/gdbusprivate.c:2420
+#: gio/gdbusprivate.c:2371
 #, c-format
 msgid "Session dbus not running, and autolaunch failed"
 msgstr "A sessão dbus não está em execução, e o início automático falhou"
 
-#: gio/gdbusprivate.c:2443
+#: gio/gdbusprivate.c:2394
 #, c-format
 msgid "Unable to get Hardware profile: %s"
 msgstr "Não foi possível obter o perfil da máquina: %s"
 
 #. Translators: Both placeholders are file paths
-#: gio/gdbusprivate.c:2494
+#: gio/gdbusprivate.c:2445
 #, c-format
 msgid "Unable to load %s or %s: "
 msgstr "Não foi possível carregar %s ou %s: "
 
-#: gio/gdbusproxy.c:1569
+#: gio/gdbusproxy.c:1573
 #, c-format
 msgid "Error calling StartServiceByName for %s: "
 msgstr "Erro ao chamar StartServiceByName para %s: "
 
-#: gio/gdbusproxy.c:1592
+#: gio/gdbusproxy.c:1596
 #, c-format
 msgid "Unexpected reply %d from StartServiceByName(\"%s\") method"
 msgstr "Resposta %d inesperada do método StartServiceByName(\"%s\")"
 
-#: gio/gdbusproxy.c:2699 gio/gdbusproxy.c:2834
+#: gio/gdbusproxy.c:2707 gio/gdbusproxy.c:2842
 #, c-format
 msgid ""
 "Cannot invoke method; proxy is for the well-known name %s without an owner, "
@@ -1077,67 +1095,67 @@ msgstr ""
 "\n"
 "Use “%s COMANDO --help” para obter ajuda de cada comando.\n"
 
-#: gio/gdbus-tool.c:201 gio/gdbus-tool.c:273 gio/gdbus-tool.c:345
-#: gio/gdbus-tool.c:369 gio/gdbus-tool.c:859 gio/gdbus-tool.c:1236
-#: gio/gdbus-tool.c:1724
+#: gio/gdbus-tool.c:202 gio/gdbus-tool.c:274 gio/gdbus-tool.c:346
+#: gio/gdbus-tool.c:370 gio/gdbus-tool.c:860 gio/gdbus-tool.c:1245
+#: gio/gdbus-tool.c:1733
 #, c-format
 msgid "Error: %s\n"
 msgstr "Erro: %s\n"
 
-#: gio/gdbus-tool.c:212 gio/gdbus-tool.c:286 gio/gdbus-tool.c:1740
+#: gio/gdbus-tool.c:213 gio/gdbus-tool.c:287 gio/gdbus-tool.c:1749
 #, c-format
 msgid "Error parsing introspection XML: %s\n"
 msgstr "Erro ao analisar XML de introspecção: %s\n"
 
-#: gio/gdbus-tool.c:250
+#: gio/gdbus-tool.c:251
 #, c-format
 msgid "Error: %s is not a valid name\n"
 msgstr "Erro: %s não é um nome válido\n"
 
-#: gio/gdbus-tool.c:255 gio/gdbus-tool.c:745 gio/gdbus-tool.c:1060
-#: gio/gdbus-tool.c:1890 gio/gdbus-tool.c:2130
+#: gio/gdbus-tool.c:256 gio/gdbus-tool.c:746 gio/gdbus-tool.c:1064
+#: gio/gdbus-tool.c:1899 gio/gdbus-tool.c:2139
 #, c-format
 msgid "Error: %s is not a valid object path\n"
 msgstr "Erro: %s não é um caminho de objeto válido\n"
 
-#: gio/gdbus-tool.c:403
+#: gio/gdbus-tool.c:404
 msgid "Connect to the system bus"
 msgstr "Conectar ao barramento de sistema"
 
-#: gio/gdbus-tool.c:404
+#: gio/gdbus-tool.c:405
 msgid "Connect to the session bus"
 msgstr "Conectar ao barramento de sessão"
 
-#: gio/gdbus-tool.c:405
+#: gio/gdbus-tool.c:406
 msgid "Connect to given D-Bus address"
 msgstr "Conectar ao endereço D-Bus escolhido"
 
-#: gio/gdbus-tool.c:415
+#: gio/gdbus-tool.c:416
 msgid "Connection Endpoint Options:"
 msgstr "Opções de conexão de ponto final:"
 
-#: gio/gdbus-tool.c:416
+#: gio/gdbus-tool.c:417
 msgid "Options specifying the connection endpoint"
 msgstr "Opções especificando a conexão de ponto final"
 
-#: gio/gdbus-tool.c:439
+#: gio/gdbus-tool.c:440
 #, c-format
 msgid "No connection endpoint specified"
 msgstr "Nenhuma conexão de ponto final especificada"
 
-#: gio/gdbus-tool.c:449
+#: gio/gdbus-tool.c:450
 #, c-format
 msgid "Multiple connection endpoints specified"
 msgstr "Múltiplas conexões de ponto final especificadas"
 
-#: gio/gdbus-tool.c:522
+#: gio/gdbus-tool.c:523
 #, c-format
 msgid ""
 "Warning: According to introspection data, interface “%s” does not exist\n"
 msgstr ""
 "Aviso: De acordo com os dados de introspecção a interface “%s” não existe\n"
 
-#: gio/gdbus-tool.c:531
+#: gio/gdbus-tool.c:532
 #, c-format
 msgid ""
 "Warning: According to introspection data, method “%s” does not exist on "
@@ -1146,162 +1164,166 @@ msgstr ""
 "Aviso: De acordo com os dados de introspecção o método “%s” não existe na "
 "interface “%s”\n"
 
-#: gio/gdbus-tool.c:593
+#: gio/gdbus-tool.c:594
 msgid "Optional destination for signal (unique name)"
 msgstr "Destino opcional para o sinal (nome único)"
 
-#: gio/gdbus-tool.c:594
+#: gio/gdbus-tool.c:595
 msgid "Object path to emit signal on"
 msgstr "Caminho do objeto para emitir sinal"
 
-#: gio/gdbus-tool.c:595
+#: gio/gdbus-tool.c:596
 msgid "Signal and interface name"
 msgstr "Nome de sinal e de interface"
 
-#: gio/gdbus-tool.c:628
+#: gio/gdbus-tool.c:629
 msgid "Emit a signal."
 msgstr "Emitir um sinal."
 
-#: gio/gdbus-tool.c:683 gio/gdbus-tool.c:997 gio/gdbus-tool.c:1827
-#: gio/gdbus-tool.c:2059 gio/gdbus-tool.c:2279
+#: gio/gdbus-tool.c:684 gio/gdbus-tool.c:1001 gio/gdbus-tool.c:1836
+#: gio/gdbus-tool.c:2068 gio/gdbus-tool.c:2288
 #, c-format
 msgid "Error connecting: %s\n"
 msgstr "Erro ao conectar: %s\n"
 
-#: gio/gdbus-tool.c:703
+#: gio/gdbus-tool.c:704
 #, c-format
 msgid "Error: %s is not a valid unique bus name.\n"
 msgstr "Erro: %s não é um nome válido de barramento exclusivo.\n"
 
-#: gio/gdbus-tool.c:722 gio/gdbus-tool.c:1040 gio/gdbus-tool.c:1870
+#: gio/gdbus-tool.c:723 gio/gdbus-tool.c:1044 gio/gdbus-tool.c:1879
 msgid "Error: Object path is not specified\n"
 msgstr "Erro: O caminho do objeto não foi especificado\n"
 
-#: gio/gdbus-tool.c:765
+#: gio/gdbus-tool.c:766
 msgid "Error: Signal name is not specified\n"
 msgstr "Erro: O nome do sinal não foi especificado\n"
 
-#: gio/gdbus-tool.c:779
+#: gio/gdbus-tool.c:780
 #, c-format
 msgid "Error: Signal name “%s” is invalid\n"
 msgstr "Erro: O nome do sinal “%s” é inválido\n"
 
-#: gio/gdbus-tool.c:791
+#: gio/gdbus-tool.c:792
 #, c-format
 msgid "Error: %s is not a valid interface name\n"
 msgstr "Erro: %s não é um nome de interface válido\n"
 
-#: gio/gdbus-tool.c:797
+#: gio/gdbus-tool.c:798
 #, c-format
 msgid "Error: %s is not a valid member name\n"
 msgstr "Erro: %s não é um nome de membro válido\n"
 
 #. Use the original non-"parse-me-harder" error
-#: gio/gdbus-tool.c:834 gio/gdbus-tool.c:1172
+#: gio/gdbus-tool.c:835 gio/gdbus-tool.c:1176
 #, c-format
 msgid "Error parsing parameter %d: %s\n"
 msgstr "Erro ao analisar o parâmetro %d: %s\n"
 
-#: gio/gdbus-tool.c:866
+#: gio/gdbus-tool.c:867
 #, c-format
 msgid "Error flushing connection: %s\n"
 msgstr "Erro limpando conexão: %s\n"
 
-#: gio/gdbus-tool.c:893
+#: gio/gdbus-tool.c:895
 msgid "Destination name to invoke method on"
 msgstr "Nome do destino para chamar um método"
 
-#: gio/gdbus-tool.c:894
+#: gio/gdbus-tool.c:896
 msgid "Object path to invoke method on"
 msgstr "Caminho do objeto para chamar um método"
 
-#: gio/gdbus-tool.c:895
+#: gio/gdbus-tool.c:897
 msgid "Method and interface name"
 msgstr "Nome de método e de interface"
 
-#: gio/gdbus-tool.c:896
+#: gio/gdbus-tool.c:898
 msgid "Timeout in seconds"
 msgstr "Tempo limite em segundos"
 
-#: gio/gdbus-tool.c:942
+#: gio/gdbus-tool.c:899
+msgid "Allow interactive authorization"
+msgstr "Permitir autorização interativa"
+
+#: gio/gdbus-tool.c:946
 msgid "Invoke a method on a remote object."
 msgstr "Chamar um método no objeto remoto."
 
-#: gio/gdbus-tool.c:1014 gio/gdbus-tool.c:1844 gio/gdbus-tool.c:2084
+#: gio/gdbus-tool.c:1018 gio/gdbus-tool.c:1853 gio/gdbus-tool.c:2093
 msgid "Error: Destination is not specified\n"
 msgstr "Erro: O destino não foi especificado\n"
 
-#: gio/gdbus-tool.c:1025 gio/gdbus-tool.c:1861 gio/gdbus-tool.c:2095
+#: gio/gdbus-tool.c:1029 gio/gdbus-tool.c:1870 gio/gdbus-tool.c:2104
 #, c-format
 msgid "Error: %s is not a valid bus name\n"
 msgstr "Erro: %s não é um nome de barramento válido\n"
 
-#: gio/gdbus-tool.c:1075
+#: gio/gdbus-tool.c:1079
 msgid "Error: Method name is not specified\n"
 msgstr "Erro: O nome do método não foi especificado\n"
 
-#: gio/gdbus-tool.c:1086
+#: gio/gdbus-tool.c:1090
 #, c-format
 msgid "Error: Method name “%s” is invalid\n"
 msgstr "Erro: O nome do método “%s” é inválido\n"
 
-#: gio/gdbus-tool.c:1164
+#: gio/gdbus-tool.c:1168
 #, c-format
 msgid "Error parsing parameter %d of type “%s”: %s\n"
 msgstr "Erro ao analisar o parâmetro %d do tipo “%s”: %s\n"
 
-#: gio/gdbus-tool.c:1190
+#: gio/gdbus-tool.c:1194
 #, c-format
 msgid "Error adding handle %d: %s\n"
 msgstr "Erro ao adicionar manipulador %d: %s\n"
 
-#: gio/gdbus-tool.c:1686
+#: gio/gdbus-tool.c:1695
 msgid "Destination name to introspect"
 msgstr "Nome do destino para introspecção"
 
-#: gio/gdbus-tool.c:1687
+#: gio/gdbus-tool.c:1696
 msgid "Object path to introspect"
 msgstr "Caminho do objeto para introspecção"
 
-#: gio/gdbus-tool.c:1688
+#: gio/gdbus-tool.c:1697
 msgid "Print XML"
 msgstr "Exibir XML"
 
-#: gio/gdbus-tool.c:1689
+#: gio/gdbus-tool.c:1698
 msgid "Introspect children"
 msgstr "Auto-examinar filhos"
 
-#: gio/gdbus-tool.c:1690
+#: gio/gdbus-tool.c:1699
 msgid "Only print properties"
 msgstr "Apenas imprimir as propriedades"
 
-#: gio/gdbus-tool.c:1779
+#: gio/gdbus-tool.c:1788
 msgid "Introspect a remote object."
 msgstr "Introspecção de um objeto remoto."
 
-#: gio/gdbus-tool.c:1985
+#: gio/gdbus-tool.c:1994
 msgid "Destination name to monitor"
 msgstr "Nome do destino para monitorar"
 
-#: gio/gdbus-tool.c:1986
+#: gio/gdbus-tool.c:1995
 msgid "Object path to monitor"
 msgstr "Caminho do objeto para monitorar"
 
-#: gio/gdbus-tool.c:2011
+#: gio/gdbus-tool.c:2020
 msgid "Monitor a remote object."
 msgstr "Monitora um objeto remoto."
 
-#: gio/gdbus-tool.c:2069
+#: gio/gdbus-tool.c:2078
 msgid "Error: can’t monitor a non-message-bus connection\n"
 msgstr ""
 "Erro: não é possível monitorar uma conexão que não seja de barramento de "
 "mensagem\n"
 
-#: gio/gdbus-tool.c:2193
+#: gio/gdbus-tool.c:2202
 msgid "Service to activate before waiting for the other one (well-known name)"
 msgstr "Serviço a ser ativado antes de esperar por uma outra (nome conhecido)"
 
-#: gio/gdbus-tool.c:2196
+#: gio/gdbus-tool.c:2205
 msgid ""
 "Timeout to wait for before exiting with an error (seconds); 0 for no timeout "
 "(default)"
@@ -1309,64 +1331,69 @@ msgstr ""
 "Tempo limite de espera antes de sair com um erro (segundos); 0 para nenhum "
 "tempo limite (padrão)"
 
-#: gio/gdbus-tool.c:2244
+#: gio/gdbus-tool.c:2253
 msgid "[OPTION…] BUS-NAME"
 msgstr "[OPÇÃO…] NOME-BARRAMENTO"
 
-#: gio/gdbus-tool.c:2245
+#: gio/gdbus-tool.c:2254
 msgid "Wait for a bus name to appear."
 msgstr "Espera por um nome de barramento para aparecer."
 
-#: gio/gdbus-tool.c:2321
+#: gio/gdbus-tool.c:2330
 msgid "Error: A service to activate for must be specified.\n"
 msgstr "Erro: Um serviço a ser ativado deve ser especificado.\n"
 
-#: gio/gdbus-tool.c:2326
+#: gio/gdbus-tool.c:2335
 msgid "Error: A service to wait for must be specified.\n"
 msgstr "Erro: Um serviço a ser esperado deve ser especificado.\n"
 
-#: gio/gdbus-tool.c:2331
+#: gio/gdbus-tool.c:2340
 msgid "Error: Too many arguments.\n"
 msgstr "Erro: Número excessivo de argumentos.\n"
 
-#: gio/gdbus-tool.c:2339 gio/gdbus-tool.c:2346
+#: gio/gdbus-tool.c:2348 gio/gdbus-tool.c:2355
 #, c-format
 msgid "Error: %s is not a valid well-known bus name.\n"
 msgstr "Erro: %s não é um nome válido de barramento conhecido.\n"
 
-#: gio/gdesktopappinfo.c:2106 gio/gdesktopappinfo.c:4935
+#: gio/gdebugcontrollerdbus.c:358
+#, c-format
+msgid "Not authorized to change debug settings"
+msgstr "Não autorizado para alterar configurações de depuração"
+
+#: gio/gdesktopappinfo.c:2178 gio/gdesktopappinfo.c:5105
 msgid "Unnamed"
 msgstr "Sem nome"
 
-#: gio/gdesktopappinfo.c:2516
+#: gio/gdesktopappinfo.c:2588
 msgid "Desktop file didn’t specify Exec field"
 msgstr "O arquivo da área de trabalho não especifica o campo Exec"
 
-#: gio/gdesktopappinfo.c:2804
+#: gio/gdesktopappinfo.c:2896
 msgid "Unable to find terminal required for application"
 msgstr "Não é possível localizar o terminal requerido para o aplicativo"
 
-#: gio/gdesktopappinfo.c:3455
+#: gio/gdesktopappinfo.c:3625
 #, c-format
 msgid "Can’t create user application configuration folder %s: %s"
 msgstr ""
 "Não é possível criar pasta de configuração do aplicativo do usuário %s: %s"
 
-#: gio/gdesktopappinfo.c:3459
+#: gio/gdesktopappinfo.c:3629
 #, c-format
 msgid "Can’t create user MIME configuration folder %s: %s"
 msgstr "Não é possível criar pasta de configuração MIME do usuário %s: %s"
 
-#: gio/gdesktopappinfo.c:3701 gio/gdesktopappinfo.c:3725
+#: gio/gdesktopappinfo.c:3871 gio/gdesktopappinfo.c:3895
 msgid "Application information lacks an identifier"
 msgstr "A informação do aplicativo carece de um identificador"
 
-#: gio/gdesktopappinfo.c:3961
+#: gio/gdesktopappinfo.c:4131
 #, c-format
 msgid "Can’t create user desktop file %s"
 msgstr "Não é possível criar arquivo %s da área de trabalho do usuário"
 
-#: gio/gdesktopappinfo.c:4097
+#: gio/gdesktopappinfo.c:4267
 #, c-format
 msgid "Custom definition for %s"
 msgstr "Definição personalizada para %s"
@@ -1394,7 +1421,7 @@ msgstr "a unidade não implementa start"
 msgid "drive doesn’t implement stop"
 msgstr "a unidade não implementa stop"
 
-#: gio/gdtlsconnection.c:1153 gio/gtlsconnection.c:920
+#: gio/gdtlsconnection.c:1186 gio/gtlsconnection.c:955
 msgid "TLS backend does not implement TLS binding retrieval"
 msgstr "O backend TLS não implementa recuperação de vinculação TLS"
 
@@ -1435,73 +1462,73 @@ msgstr "Esperado um GEmblem para o GEmblemedIcon"
 #. * trying to find the enclosing (user visible)
 #. * mount of a file, but none exists.
 #.
-#: gio/gfile.c:1561
+#: gio/gfile.c:1579
 msgid "Containing mount does not exist"
 msgstr "Ponto de montagem contido não existe"
 
-#: gio/gfile.c:2608 gio/glocalfile.c:2486
+#: gio/gfile.c:2626 gio/glocalfile.c:2486
 msgid "Can’t copy over directory"
 msgstr "Não é possível copiar sobre diretório"
 
-#: gio/gfile.c:2668
+#: gio/gfile.c:2686
 msgid "Can’t copy directory over directory"
 msgstr "Não é possível copiar diretório sobre diretório"
 
-#: gio/gfile.c:2676
+#: gio/gfile.c:2694
 msgid "Target file exists"
 msgstr "Arquivo alvo existe"
 
-#: gio/gfile.c:2695
+#: gio/gfile.c:2713
 msgid "Can’t recursively copy directory"
 msgstr "Não é possível copiar o diretório recursivamente"
 
-#: gio/gfile.c:2996
+#: gio/gfile.c:3014
 msgid "Splice not supported"
 msgstr "Não há suporte a união de arquivos"
 
-#: gio/gfile.c:3000
+#: gio/gfile.c:3018
 #, c-format
 msgid "Error splicing file: %s"
 msgstr "Erro ao unir o arquivo: %s"
 
-#: gio/gfile.c:3152
+#: gio/gfile.c:3170
 msgid "Copy (reflink/clone) between mounts is not supported"
 msgstr "Não há suporte a copiar (reflink/clone) entre montagens"
 
-#: gio/gfile.c:3156
+#: gio/gfile.c:3174
 msgid "Copy (reflink/clone) is not supported or invalid"
 msgstr "Não há suporte a copiar (reflink/clone) ou é inválido"
 
-#: gio/gfile.c:3161
+#: gio/gfile.c:3179
 msgid "Copy (reflink/clone) is not supported or didn’t work"
 msgstr "Não há suporte a copiar (reflink/clone) ou não funcionou"
 
-#: gio/gfile.c:3226
+#: gio/gfile.c:3244
 msgid "Can’t copy special file"
 msgstr "Não é possível copiar o arquivo especial"
 
-#: gio/gfile.c:4035
+#: gio/gfile.c:4138
 msgid "Invalid symlink value given"
 msgstr "Fornecido valor inválido de link simbólico"
 
-#: gio/gfile.c:4045 glib/gfileutils.c:2333
+#: gio/gfile.c:4148 glib/gfileutils.c:2333
 msgid "Symbolic links not supported"
 msgstr "Não há suporte a links simbólicos"
 
-#: gio/gfile.c:4213
+#: gio/gfile.c:4316
 msgid "Trash not supported"
 msgstr "Não há suporte para lixeira"
 
-#: gio/gfile.c:4325
+#: gio/gfile.c:4428
 #, c-format
 msgid "File names cannot contain “%c”"
 msgstr "Nomes de arquivo não podem conter “%c”"
 
-#: gio/gfile.c:6806 gio/gvolume.c:364
+#: gio/gfile.c:7028 gio/gvolume.c:364
 msgid "volume doesn’t implement mount"
 msgstr "volume não implementa montagem"
 
-#: gio/gfile.c:6920 gio/gfile.c:6968
+#: gio/gfile.c:7142 gio/gfile.c:7190
 msgid "No application is registered as handling this file"
 msgstr "Nenhum aplicativo está registrado como manipulador deste arquivo"
 
@@ -1546,7 +1573,7 @@ msgstr "Não é permitido truncar fluxo de entrada"
 msgid "Truncate not supported on stream"
 msgstr "Não há suporte para truncar fluxo"
 
-#: gio/ghttpproxy.c:91 gio/gresolver.c:443 gio/gresolver.c:596
+#: gio/ghttpproxy.c:91 gio/gresolver.c:458 gio/gresolver.c:611
 #: glib/gconvert.c:1825
 msgid "Invalid hostname"
 msgstr "Nome de máquina inválido"
@@ -1633,7 +1660,7 @@ msgid "Could not parse “%s” as IP address mask"
 msgstr "Não foi possível interpretar “%s” como uma máscara de endereço IP"
 
 #: gio/ginetsocketaddress.c:203 gio/ginetsocketaddress.c:220
-#: gio/gnativesocketaddress.c:109 gio/gunixsocketaddress.c:221
+#: gio/gnativesocketaddress.c:109 gio/gunixsocketaddress.c:228
 msgid "Not enough space for socket address"
 msgstr "Sem espaço suficiente para o endereço do soquete"
 
@@ -2471,15 +2498,15 @@ msgstr "Ocorreu erro ao comprimir o arquivo %s"
 msgid "text may not appear inside <%s>"
 msgstr "texto não pode aparecer dentro de <%s>"
 
-#: gio/glib-compile-resources.c:737 gio/glib-compile-schemas.c:2172
+#: gio/glib-compile-resources.c:819 gio/glib-compile-schemas.c:2172
 msgid "Show program version and exit"
 msgstr "Mostra a versão do programa e sai"
 
-#: gio/glib-compile-resources.c:738
+#: gio/glib-compile-resources.c:820
 msgid "Name of the output file"
 msgstr "Nome do arquivo de saída"
 
-#: gio/glib-compile-resources.c:739
+#: gio/glib-compile-resources.c:821
 msgid ""
 "The directories to load files referenced in FILE from (default: current "
 "directory)"
@@ -2487,45 +2514,45 @@ msgstr ""
 "Os diretórios do quais serão carregados arquivos referenciados em ARQUIVO "
 "(padrão: diretório atual)"
 
-#: gio/glib-compile-resources.c:739 gio/glib-compile-schemas.c:2173
+#: gio/glib-compile-resources.c:821 gio/glib-compile-schemas.c:2173
 #: gio/glib-compile-schemas.c:2202
 msgid "DIRECTORY"
 msgstr "DIRETÓRIO"
 
-#: gio/glib-compile-resources.c:740
+#: gio/glib-compile-resources.c:822
 msgid ""
 "Generate output in the format selected for by the target filename extension"
 msgstr "Gera a saída no formato definido pela extensão do arquivo alvo"
 
-#: gio/glib-compile-resources.c:741
+#: gio/glib-compile-resources.c:823
 msgid "Generate source header"
 msgstr "Gera um cabeçalho"
 
-#: gio/glib-compile-resources.c:742
+#: gio/glib-compile-resources.c:824
 msgid "Generate source code used to link in the resource file into your code"
 msgstr "Gera código-fonte que vincula o recurso ao seu programa"
 
-#: gio/glib-compile-resources.c:743
+#: gio/glib-compile-resources.c:825
 msgid "Generate dependency list"
 msgstr "Gera uma lista de dependência"
 
-#: gio/glib-compile-resources.c:744
+#: gio/glib-compile-resources.c:826
 msgid "Name of the dependency file to generate"
 msgstr "Nome do arquivo de dependências para gerar"
 
-#: gio/glib-compile-resources.c:745
+#: gio/glib-compile-resources.c:827
 msgid "Include phony targets in the generated dependency file"
 msgstr "Inclui alvos falsos no arquivo de dependência gerado"
 
-#: gio/glib-compile-resources.c:746
+#: gio/glib-compile-resources.c:828
 msgid "Don’t automatically create and register resource"
 msgstr "Não cria e registra o recurso automaticamente"
 
-#: gio/glib-compile-resources.c:747
+#: gio/glib-compile-resources.c:829
 msgid "Don’t export functions; declare them G_GNUC_INTERNAL"
 msgstr "Não exporta funções; declara-as G_GNUC_INTERNAL"
 
-#: gio/glib-compile-resources.c:748
+#: gio/glib-compile-resources.c:830
 msgid ""
 "Don’t embed resource data in the C file; assume it's linked externally "
 "instead"
@@ -2533,11 +2560,15 @@ msgstr ""
 "Não embute dados de recurso no arquivo C; presume estar vinculado "
 "externamente"
 
-#: gio/glib-compile-resources.c:749
+#: gio/glib-compile-resources.c:831
 msgid "C identifier name used for the generated source code"
 msgstr "Nome do identificador C usado no código-fonte gerado"
 
-#: gio/glib-compile-resources.c:775
+#: gio/glib-compile-resources.c:832
+msgid "The target C compiler (default: the CC environment variable)"
+msgstr "O compilador C alvo (padrão: a variável de ambiente CC)"
+
+#: gio/glib-compile-resources.c:858
 msgid ""
 "Compile a resource specification into a resource file.\n"
 "Resource specification files have the extension .gresource.xml,\n"
@@ -2547,7 +2578,7 @@ msgstr ""
 "Arquivos de especificação de recurso têm a extensão .gresource.xml,\n"
 "e um arquivo de recurso tem a extensão .gresource."
 
-#: gio/glib-compile-resources.c:797
+#: gio/glib-compile-resources.c:880
 msgid "You should give exactly one file name\n"
 msgstr "Você deve fornecer exatamente um arquivo\n"
 
@@ -2959,7 +2990,7 @@ msgid ""
 msgstr ""
 "Sobrescrita para chave “%s” no esquema “%s” no arquivo de sobrescrita “%s” "
 "está fora dos limites dado pelo esquema; ignorando sobrescrita para essa "
-"chave"
+"chave."
 
 #: gio/glib-compile-schemas.c:2075
 #, c-format
@@ -3343,13 +3374,13 @@ msgstr "Erro ao criar cópia de backup: %s"
 msgid "Error renaming temporary file: %s"
 msgstr "Erro ao renomear arquivo temporário: %s"
 
-#: gio/glocalfileoutputstream.c:609 gio/glocalfileoutputstream.c:1237
+#: gio/glocalfileoutputstream.c:609 gio/glocalfileoutputstream.c:1239
 #, c-format
 msgid "Error truncating file: %s"
 msgstr "Erro ao truncar arquivo: %s"
 
 #: gio/glocalfileoutputstream.c:662 gio/glocalfileoutputstream.c:907
-#: gio/glocalfileoutputstream.c:1218 gio/gsubprocess.c:226
+#: gio/glocalfileoutputstream.c:1220 gio/gsubprocess.c:229
 #, c-format
 msgid "Error opening file “%s”: %s"
 msgstr "Erro ao abrir arquivo “%s”: %s"
@@ -3371,7 +3402,7 @@ msgstr "O arquivo foi modificado externamente"
 msgid "Error removing old file: %s"
 msgstr "Erro ao remover arquivo antigo: %s"
 
-#: gio/gmemoryinputstream.c:474 gio/gmemoryoutputstream.c:772
+#: gio/gmemoryinputstream.c:474 gio/gmemoryoutputstream.c:762
 msgid "Invalid GSeekType supplied"
 msgstr "GSeekType fornecido inválido"
 
@@ -3383,15 +3414,15 @@ msgstr "Solicitação de busca inválida"
 msgid "Cannot truncate GMemoryInputStream"
 msgstr "Não é possível truncar GMemoryInputStream"
 
-#: gio/gmemoryoutputstream.c:567
+#: gio/gmemoryoutputstream.c:568
 msgid "Memory output stream not resizable"
 msgstr "Fluxo de saída da memória não redimensionável"
 
-#: gio/gmemoryoutputstream.c:583
+#: gio/gmemoryoutputstream.c:584
 msgid "Failed to resize memory output stream"
 msgstr "Falha ao redimensionar fluxo de saída da memória"
 
-#: gio/gmemoryoutputstream.c:673
+#: gio/gmemoryoutputstream.c:663
 msgid ""
 "Amount of memory required to process the write is larger than available "
 "address space"
@@ -3399,11 +3430,11 @@ msgstr ""
 "Quantidade de memória necessária para processar a escrita é maior que a "
 "disponível"
 
-#: gio/gmemoryoutputstream.c:782
+#: gio/gmemoryoutputstream.c:772
 msgid "Requested seek before the beginning of the stream"
 msgstr "Solicitada uma busca antes do começo do fluxo"
 
-#: gio/gmemoryoutputstream.c:797
+#: gio/gmemoryoutputstream.c:787
 msgid "Requested seek beyond the end of the stream"
 msgstr "Solicitada uma busca além do fim do fluxo"
 
@@ -3508,18 +3539,22 @@ msgstr "A soma dos vetores passada para %s é grande demais"
 msgid "Source stream is already closed"
 msgstr "A fonte do fluxo já está fechada"
 
-#: gio/gresolver.c:386 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
+#. Translators: the first placeholder is a domain name, the
+#. * second is an error message
+#: gio/gresolver.c:401 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
+#: gio/gthreadedresolver.c:780 gio/gthreadedresolver.c:804
+#: gio/gthreadedresolver.c:829 gio/gthreadedresolver.c:844
 #, c-format
 msgid "Error resolving “%s”: %s"
 msgstr "Erro ao resolver “%s”: %s"
 
 #. Translators: The placeholder is for a function name.
-#: gio/gresolver.c:455 gio/gresolver.c:615
+#: gio/gresolver.c:470 gio/gresolver.c:630
 #, c-format
 msgid "%s not implemented"
 msgstr "%s não implementado"
 
-#: gio/gresolver.c:984 gio/gresolver.c:1036
+#: gio/gresolver.c:999 gio/gresolver.c:1051
 msgid "Invalid domain"
 msgstr "Domínio inválido"
 
@@ -3634,7 +3669,7 @@ msgstr ""
 msgid "  SECTION   An (optional) elf section name\n"
 msgstr "  SEÇÃO     Um nome de seção elf (opcional)\n"
 
-#: gio/gresource-tool.c:565 gio/gsettings-tool.c:706
+#: gio/gresource-tool.c:565 gio/gsettings-tool.c:718
 msgid "  COMMAND   The (optional) command to explain\n"
 msgstr "  COMANDO   O comando a ser explicado (opcional)\n"
 
@@ -3666,7 +3701,7 @@ msgstr "CAMINHO"
 msgid "  PATH      A resource path\n"
 msgstr "  CAMINHO   Um caminho do recurso\n"
 
-#: gio/gsettings-tool.c:49 gio/gsettings-tool.c:70 gio/gsettings-tool.c:911
+#: gio/gsettings-tool.c:49 gio/gsettings-tool.c:70 gio/gsettings-tool.c:923
 #, c-format
 msgid "No such schema “%s”\n"
 msgstr "Nenhum esquema “%s”\n"
@@ -3697,35 +3732,35 @@ msgstr "O caminho deve terminar com uma barra (/)\n"
 msgid "Path must not contain two adjacent slashes (//)\n"
 msgstr "O caminho não pode conter duas barras adjacentes (//)\n"
 
-#: gio/gsettings-tool.c:541
+#: gio/gsettings-tool.c:553
 msgid "The provided value is outside of the valid range\n"
 msgstr "O valor fornecido está fora do intervalo válido\n"
 
-#: gio/gsettings-tool.c:548
+#: gio/gsettings-tool.c:560
 msgid "The key is not writable\n"
 msgstr "A chave não é gravável\n"
 
-#: gio/gsettings-tool.c:584
+#: gio/gsettings-tool.c:596
 msgid "List the installed (non-relocatable) schemas"
 msgstr "Lista os esquemas instalados (não-recolocáveis)"
 
-#: gio/gsettings-tool.c:590
+#: gio/gsettings-tool.c:602
 msgid "List the installed relocatable schemas"
 msgstr "Lista os esquemas recolocáveis instalados"
 
-#: gio/gsettings-tool.c:596
+#: gio/gsettings-tool.c:608
 msgid "List the keys in SCHEMA"
 msgstr "Lista as chaves no ESQUEMA"
 
-#: gio/gsettings-tool.c:597 gio/gsettings-tool.c:603 gio/gsettings-tool.c:646
+#: gio/gsettings-tool.c:609 gio/gsettings-tool.c:615 gio/gsettings-tool.c:658
 msgid "SCHEMA[:PATH]"
 msgstr "ESQUEMA[:CAMINHO]"
 
-#: gio/gsettings-tool.c:602
+#: gio/gsettings-tool.c:614
 msgid "List the children of SCHEMA"
 msgstr "Lista os filhos do ESQUEMA"
 
-#: gio/gsettings-tool.c:608
+#: gio/gsettings-tool.c:620
 msgid ""
 "List keys and values, recursively\n"
 "If no SCHEMA is given, list all keys\n"
@@ -3733,48 +3768,48 @@ msgstr ""
 "Lista as chaves e valores, recursivamente\n"
 "Se nenhum ESQUEMA for fornecido, lista todas as chaves\n"
 
-#: gio/gsettings-tool.c:610
+#: gio/gsettings-tool.c:622
 msgid "[SCHEMA[:PATH]]"
 msgstr "[ESQUEMA[:CAMINHO]]"
 
-#: gio/gsettings-tool.c:615
+#: gio/gsettings-tool.c:627
 msgid "Get the value of KEY"
 msgstr "Obtém o valor de CHAVE"
 
-#: gio/gsettings-tool.c:616 gio/gsettings-tool.c:622 gio/gsettings-tool.c:628
-#: gio/gsettings-tool.c:640 gio/gsettings-tool.c:652
+#: gio/gsettings-tool.c:628 gio/gsettings-tool.c:634 gio/gsettings-tool.c:640
+#: gio/gsettings-tool.c:652 gio/gsettings-tool.c:664
 msgid "SCHEMA[:PATH] KEY"
 msgstr "ESQUEMA[:CAMINHO] CHAVE"
 
-#: gio/gsettings-tool.c:621
+#: gio/gsettings-tool.c:633
 msgid "Query the range of valid values for KEY"
 msgstr "Consulta o intervalo de valores válidos para CHAVE"
 
-#: gio/gsettings-tool.c:627
+#: gio/gsettings-tool.c:639
 msgid "Query the description for KEY"
 msgstr "Consulta a descrição para a CHAVE"
 
-#: gio/gsettings-tool.c:633
+#: gio/gsettings-tool.c:645
 msgid "Set the value of KEY to VALUE"
 msgstr "Define o valor de CHAVE para VALOR"
 
-#: gio/gsettings-tool.c:634
+#: gio/gsettings-tool.c:646
 msgid "SCHEMA[:PATH] KEY VALUE"
 msgstr "ESQUEMA[:CAMINHO] CHAVE VALOR"
 
-#: gio/gsettings-tool.c:639
+#: gio/gsettings-tool.c:651
 msgid "Reset KEY to its default value"
 msgstr "Restaurar CHAVE para seu valor padrão"
 
-#: gio/gsettings-tool.c:645
+#: gio/gsettings-tool.c:657
 msgid "Reset all keys in SCHEMA to their defaults"
 msgstr "Restaurar todas as chaves no ESQUEMA para seus padrões"
 
-#: gio/gsettings-tool.c:651
+#: gio/gsettings-tool.c:663
 msgid "Check if KEY is writable"
 msgstr "Verifica se CHAVE é gravável"
 
-#: gio/gsettings-tool.c:657
+#: gio/gsettings-tool.c:669
 msgid ""
 "Monitor KEY for changes.\n"
 "If no KEY is specified, monitor all keys in SCHEMA.\n"
@@ -3784,11 +3819,11 @@ msgstr ""
 "Se nenhuma CHAVE for especificada, monitora todas as chaves no ESQUEMA.\n"
 "Use ^C para parar o monitoramento.\n"
 
-#: gio/gsettings-tool.c:660
+#: gio/gsettings-tool.c:672
 msgid "SCHEMA[:PATH] [KEY]"
 msgstr "ESQUEMA[:CAMINHO] [CHAVE]"
 
-#: gio/gsettings-tool.c:672
+#: gio/gsettings-tool.c:684
 msgid ""
 "Usage:\n"
 "  gsettings --version\n"
@@ -3837,7 +3872,7 @@ msgstr ""
 "Use “gsettings help COMANDO” para obter ajuda detalhada.\n"
 "\n"
 
-#: gio/gsettings-tool.c:696
+#: gio/gsettings-tool.c:708
 #, c-format
 msgid ""
 "Usage:\n"
@@ -3852,11 +3887,11 @@ msgstr ""
 "%s\n"
 "\n"
 
-#: gio/gsettings-tool.c:702
+#: gio/gsettings-tool.c:714
 msgid "  SCHEMADIR A directory to search for additional schemas\n"
 msgstr "  SCHEMADIR Um diretório para procurar por esquemas adicionais\n"
 
-#: gio/gsettings-tool.c:710
+#: gio/gsettings-tool.c:722
 msgid ""
 "  SCHEMA    The name of the schema\n"
 "  PATH      The path, for relocatable schemas\n"
@@ -3864,214 +3899,214 @@ msgstr ""
 "  ESQUEMA   O nome do esquema\n"
 "  CAMINHO   O caminho, para esquemas recolocáveis\n"
 
-#: gio/gsettings-tool.c:715
+#: gio/gsettings-tool.c:727
 msgid "  KEY       The (optional) key within the schema\n"
 msgstr "  CHAVE     A chave (opcional) com o esquema\n"
 
-#: gio/gsettings-tool.c:719
+#: gio/gsettings-tool.c:731
 msgid "  KEY       The key within the schema\n"
 msgstr "  CHAVE     A chave com o esquema\n"
 
-#: gio/gsettings-tool.c:723
+#: gio/gsettings-tool.c:735
 msgid "  VALUE     The value to set\n"
 msgstr "  VALOR     O valor para definir\n"
 
-#: gio/gsettings-tool.c:778
+#: gio/gsettings-tool.c:790
 #, c-format
 msgid "Could not load schemas from %s: %s\n"
 msgstr "Não foi possível carregar esquemas de %s: %s\n"
 
-#: gio/gsettings-tool.c:790
+#: gio/gsettings-tool.c:802
 msgid "No schemas installed\n"
 msgstr "Nenhum esquema instalado\n"
 
-#: gio/gsettings-tool.c:869
+#: gio/gsettings-tool.c:881
 msgid "Empty schema name given\n"
 msgstr "Nome de esquema vazio\n"
 
-#: gio/gsettings-tool.c:924
+#: gio/gsettings-tool.c:936
 #, c-format
 msgid "No such key “%s”\n"
 msgstr "Nenhuma chave “%s”\n"
 
-#: gio/gsocket.c:413
+#: gio/gsocket.c:417
 msgid "Invalid socket, not initialized"
 msgstr "Soquete inválido, não inicializado"
 
-#: gio/gsocket.c:420
+#: gio/gsocket.c:424
 #, c-format
 msgid "Invalid socket, initialization failed due to: %s"
 msgstr "Soquete inválido, inicialização falhou devido a: %s"
 
-#: gio/gsocket.c:428
+#: gio/gsocket.c:432
 msgid "Socket is already closed"
 msgstr "O soquete já está fechado"
 
-#: gio/gsocket.c:443 gio/gsocket.c:3190 gio/gsocket.c:4420 gio/gsocket.c:4478
+#: gio/gsocket.c:447 gio/gsocket.c:3194 gio/gsocket.c:4427 gio/gsocket.c:4485
 msgid "Socket I/O timed out"
 msgstr "Tempo de E/S do soquete foi esgotado"
 
-#: gio/gsocket.c:578
+#: gio/gsocket.c:582
 #, c-format
 msgid "creating GSocket from fd: %s"
 msgstr "criando GSocket a partir do fd: %s"
 
-#: gio/gsocket.c:607 gio/gsocket.c:671 gio/gsocket.c:678
+#: gio/gsocket.c:611 gio/gsocket.c:675 gio/gsocket.c:682
 #, c-format
 msgid "Unable to create socket: %s"
 msgstr "Não é possível criar soquete: %s"
 
-#: gio/gsocket.c:671
+#: gio/gsocket.c:675
 msgid "Unknown family was specified"
 msgstr "Foi especificada uma família desconhecida"
 
-#: gio/gsocket.c:678
+#: gio/gsocket.c:682
 msgid "Unknown protocol was specified"
 msgstr "Foi especificado um protocolo desconhecido"
 
-#: gio/gsocket.c:1169
+#: gio/gsocket.c:1173
 #, c-format
 msgid "Cannot use datagram operations on a non-datagram socket."
 msgstr ""
 "Não foi possível usar operações de datagrama em um soquete não-datagrama."
 
-#: gio/gsocket.c:1186
+#: gio/gsocket.c:1190
 #, c-format
 msgid "Cannot use datagram operations on a socket with a timeout set."
 msgstr ""
 "Não foi possível usar operações de datagrama em um soquete com um tempo "
 "limite definido."
 
-#: gio/gsocket.c:1993
+#: gio/gsocket.c:1997
 #, c-format
 msgid "could not get local address: %s"
 msgstr "não foi possível obter endereço local: %s"
 
-#: gio/gsocket.c:2039
+#: gio/gsocket.c:2043
 #, c-format
 msgid "could not get remote address: %s"
 msgstr "não foi possível obter endereço remoto: %s"
 
-#: gio/gsocket.c:2105
+#: gio/gsocket.c:2109
 #, c-format
 msgid "could not listen: %s"
 msgstr "não foi possível escutar: %s"
 
-#: gio/gsocket.c:2209
+#: gio/gsocket.c:2213
 #, c-format
 msgid "Error binding to address %s: %s"
 msgstr "Erro ao vincular ao endereço %s: %s"
 
-#: gio/gsocket.c:2385 gio/gsocket.c:2422 gio/gsocket.c:2532 gio/gsocket.c:2557
-#: gio/gsocket.c:2620 gio/gsocket.c:2678 gio/gsocket.c:2696
+#: gio/gsocket.c:2389 gio/gsocket.c:2426 gio/gsocket.c:2536 gio/gsocket.c:2561
+#: gio/gsocket.c:2624 gio/gsocket.c:2682 gio/gsocket.c:2700
 #, c-format
 msgid "Error joining multicast group: %s"
 msgstr "Erro ao entrar no grupo multicast: %s"
 
-#: gio/gsocket.c:2386 gio/gsocket.c:2423 gio/gsocket.c:2533 gio/gsocket.c:2558
-#: gio/gsocket.c:2621 gio/gsocket.c:2679 gio/gsocket.c:2697
+#: gio/gsocket.c:2390 gio/gsocket.c:2427 gio/gsocket.c:2537 gio/gsocket.c:2562
+#: gio/gsocket.c:2625 gio/gsocket.c:2683 gio/gsocket.c:2701
 #, c-format
 msgid "Error leaving multicast group: %s"
 msgstr "Erro ao sair do grupo multicast: %s"
 
-#: gio/gsocket.c:2387
+#: gio/gsocket.c:2391
 msgid "No support for source-specific multicast"
 msgstr "Não há suporte para multicast específico da origem"
 
-#: gio/gsocket.c:2534
+#: gio/gsocket.c:2538
 msgid "Unsupported socket family"
 msgstr "Família de soquete sem suporte"
 
-#: gio/gsocket.c:2559
+#: gio/gsocket.c:2563
 msgid "source-specific not an IPv4 address"
 msgstr "a origem específica não é um endereço IPv4"
 
-#: gio/gsocket.c:2583
+#: gio/gsocket.c:2587
 #, c-format
 msgid "Interface name too long"
 msgstr "Nome de interface grande demais"
 
-#: gio/gsocket.c:2596 gio/gsocket.c:2646
+#: gio/gsocket.c:2600 gio/gsocket.c:2650
 #, c-format
 msgid "Interface not found: %s"
 msgstr "Interface não localizada: %s"
 
-#: gio/gsocket.c:2622
+#: gio/gsocket.c:2626
 msgid "No support for IPv4 source-specific multicast"
 msgstr "Não há suporte para multicast específico da origem IPv4"
 
-#: gio/gsocket.c:2680
+#: gio/gsocket.c:2684
 msgid "No support for IPv6 source-specific multicast"
 msgstr "Não há suporte para multicast específico da origem IPv6"
 
-#: gio/gsocket.c:2889
+#: gio/gsocket.c:2893
 #, c-format
 msgid "Error accepting connection: %s"
 msgstr "Erro ao aceitar a conexão: %s"
 
-#: gio/gsocket.c:3015
+#: gio/gsocket.c:3019
 msgid "Connection in progress"
 msgstr "Conexão em progresso"
 
-#: gio/gsocket.c:3066
+#: gio/gsocket.c:3070
 msgid "Unable to get pending error: "
 msgstr "Não é possível obter erro pendente: "
 
-#: gio/gsocket.c:3255
+#: gio/gsocket.c:3259
 #, c-format
 msgid "Error receiving data: %s"
 msgstr "Erro ao receber dados: %s"
 
-#: gio/gsocket.c:3452
+#: gio/gsocket.c:3456
 #, c-format
 msgid "Error sending data: %s"
 msgstr "Erro ao enviar dados: %s"
 
-#: gio/gsocket.c:3639
+#: gio/gsocket.c:3643
 #, c-format
 msgid "Unable to shutdown socket: %s"
 msgstr "Não é possível encerrar soquete: %s"
 
-#: gio/gsocket.c:3720
+#: gio/gsocket.c:3724
 #, c-format
 msgid "Error closing socket: %s"
 msgstr "Erro ao fechar soquete: %s"
 
-#: gio/gsocket.c:4413
+#: gio/gsocket.c:4420
 #, c-format
 msgid "Waiting for socket condition: %s"
 msgstr "Aguardando pela condição do soquete: %s"
 
-#: gio/gsocket.c:4804 gio/gsocket.c:4820 gio/gsocket.c:4833
+#: gio/gsocket.c:4810 gio/gsocket.c:4826 gio/gsocket.c:4839
 #, c-format
 msgid "Unable to send message: %s"
 msgstr "Não foi possível enviar mensagem: %s"
 
-#: gio/gsocket.c:4805 gio/gsocket.c:4821 gio/gsocket.c:4834
+#: gio/gsocket.c:4811 gio/gsocket.c:4827 gio/gsocket.c:4840
 msgid "Message vectors too large"
 msgstr "Vetores da mensagem muito grandes"
 
-#: gio/gsocket.c:4850 gio/gsocket.c:4852 gio/gsocket.c:4999 gio/gsocket.c:5084
-#: gio/gsocket.c:5262 gio/gsocket.c:5302 gio/gsocket.c:5304
+#: gio/gsocket.c:4856 gio/gsocket.c:4858 gio/gsocket.c:5005 gio/gsocket.c:5090
+#: gio/gsocket.c:5268 gio/gsocket.c:5308 gio/gsocket.c:5310
 #, c-format
 msgid "Error sending message: %s"
 msgstr "Erro ao enviar mensagem: %s"
 
-#: gio/gsocket.c:5026
+#: gio/gsocket.c:5032
 msgid "GSocketControlMessage not supported on Windows"
 msgstr "Não há suporte a GSocketControlMessage no Windows"
 
-#: gio/gsocket.c:5495 gio/gsocket.c:5571 gio/gsocket.c:5797
+#: gio/gsocket.c:5505 gio/gsocket.c:5581 gio/gsocket.c:5807
 #, c-format
 msgid "Error receiving message: %s"
 msgstr "Erro ao receber mensagem: %s"
 
-#: gio/gsocket.c:6070 gio/gsocket.c:6081 gio/gsocket.c:6127
+#: gio/gsocket.c:6090 gio/gsocket.c:6101 gio/gsocket.c:6164
 #, c-format
 msgid "Unable to read socket credentials: %s"
 msgstr "Não é possível ler as credenciais do soquete: %s"
 
-#: gio/gsocket.c:6136
+#: gio/gsocket.c:6173
 msgid "g_socket_get_credentials not implemented for this OS"
 msgstr "g_socket_get_credentials não está implementado para este SO"
 
@@ -4089,11 +4124,11 @@ msgstr "Não foi possível conectar-se a %s: "
 msgid "Could not connect: "
 msgstr "Não foi possível conectar: "
 
-#: gio/gsocketclient.c:1162 gio/gsocketclient.c:1749
+#: gio/gsocketclient.c:1202 gio/gsocketclient.c:1793
 msgid "Proxying over a non-TCP connection is not supported."
 msgstr "Não há suporte ao uso de proxy sobre uma conexão não TCP."
 
-#: gio/gsocketclient.c:1194 gio/gsocketclient.c:1778
+#: gio/gsocketclient.c:1234 gio/gsocketclient.c:1822
 #, c-format
 msgid "Proxy protocol “%s” is not supported."
 msgstr "Não há suporte ao protocolo de proxy “%s”."
@@ -4193,7 +4228,7 @@ msgstr "Proxy SOCKSv5 sem suporte ao tipo de endereço fornecido."
 msgid "Unknown SOCKSv5 proxy error."
 msgstr "Erro de proxy SOCKSv5 desconhecido."
 
-#: gio/gtestdbus.c:612 glib/gspawn-win32.c:311
+#: gio/gtestdbus.c:612 glib/gspawn-win32.c:314
 #, c-format
 msgid "Failed to create pipe for communicating with child process (%s)"
 msgstr "Falha ao criar canal para comunicar com processo filho (%s)"
@@ -4217,44 +4252,67 @@ msgstr "Nenhum endereço válido foi localizado"
 msgid "Error reverse-resolving “%s”: %s"
 msgstr "Erro ao resolver reversalmente “%s”: %s"
 
-#: gio/gthreadedresolver.c:676 gio/gthreadedresolver.c:755
-#: gio/gthreadedresolver.c:853 gio/gthreadedresolver.c:903
+#. Translators: the placeholder is a DNS record type, such as ‘MX’ or ‘SRV’
+#: gio/gthreadedresolver.c:550 gio/gthreadedresolver.c:572
+#: gio/gthreadedresolver.c:610 gio/gthreadedresolver.c:657
+#: gio/gthreadedresolver.c:686 gio/gthreadedresolver.c:698
+#, c-format
+msgid "Error parsing DNS %s record: malformed DNS packet"
+msgstr "Erro ao analisar registro %s do DNS: pacote DNS mal formado"
+
+#: gio/gthreadedresolver.c:756 gio/gthreadedresolver.c:893
+#: gio/gthreadedresolver.c:991 gio/gthreadedresolver.c:1041
 #, c-format
 msgid "No DNS record of the requested type for “%s”"
 msgstr "Nenhum registro DNS do tipo de requisição para “%s”"
 
-#: gio/gthreadedresolver.c:681 gio/gthreadedresolver.c:858
+#: gio/gthreadedresolver.c:761 gio/gthreadedresolver.c:996
 #, c-format
 msgid "Temporarily unable to resolve “%s”"
 msgstr "Temporariamente sem condições de resolver “%s”"
 
-#: gio/gthreadedresolver.c:686 gio/gthreadedresolver.c:863
-#: gio/gthreadedresolver.c:973
+#: gio/gthreadedresolver.c:766 gio/gthreadedresolver.c:1001
+#: gio/gthreadedresolver.c:1111
 #, c-format
 msgid "Error resolving “%s”"
 msgstr "Erro ao resolver “%s”"
 
-#: gio/gtlscertificate.c:431
+#: gio/gthreadedresolver.c:780 gio/gthreadedresolver.c:804
+#: gio/gthreadedresolver.c:829 gio/gthreadedresolver.c:844
+msgid "Malformed DNS packet"
+msgstr "Pacote DNS mal formado"
+
+#: gio/gthreadedresolver.c:886
+#, c-format
+#| msgid "Failed to read from file “%s”: %s"
+msgid "Failed to parse DNS response for “%s”: "
+msgstr "Falha ao analisar resposta DNS para “%s”: "
+
+#: gio/gtlscertificate.c:478
 msgid "No PEM-encoded private key found"
 msgstr "Chave privada codificada com PEM não localizada"
 
-#: gio/gtlscertificate.c:441
+#: gio/gtlscertificate.c:488
 msgid "Cannot decrypt PEM-encoded private key"
 msgstr "Não foi possível decodificar uma chave privada codificada com PEM"
 
-#: gio/gtlscertificate.c:452
+#: gio/gtlscertificate.c:499
 msgid "Could not parse PEM-encoded private key"
 msgstr "Não foi possível analisar chave privada codificada com PEM"
 
-#: gio/gtlscertificate.c:479
+#: gio/gtlscertificate.c:526
 msgid "No PEM-encoded certificate found"
 msgstr "Certificado codificado com PEM não localizado"
 
-#: gio/gtlscertificate.c:488
+#: gio/gtlscertificate.c:535
 msgid "Could not parse PEM-encoded certificate"
 msgstr "Não foi possível analisar certificado codificado com PEM"
 
-#: gio/gtlscertificate.c:844
+#: gio/gtlscertificate.c:796
+msgid "The current TLS backend does not support PKCS #12"
+msgstr "O backend TLS atual não oferece suporte a PKCS #12"
+
+#: gio/gtlscertificate.c:1013
 msgid "This GTlsBackend does not support creating PKCS #11 certificates"
 msgstr ""
 "Este GTlsBackend não oferece suporte à criação de certificados PKCS #11"
@@ -4281,55 +4339,63 @@ msgstr ""
 msgid "The password entered is incorrect."
 msgstr "A senha digitada está incorreta."
 
-#: gio/gunixconnection.c:166 gio/gunixconnection.c:579
+#: gio/gunixconnection.c:125
+msgid "Sending FD is not supported"
+msgstr "Não há suporte ao envio de FD"
+
+#: gio/gunixconnection.c:178 gio/gunixconnection.c:596
 #, c-format
 msgid "Expecting 1 control message, got %d"
 msgid_plural "Expecting 1 control message, got %d"
 msgstr[0] "Esperando 1 mensagem de controle, obtive %d"
 msgstr[1] "Esperando 1 mensagem de controle, obtive %d"
 
-#: gio/gunixconnection.c:182 gio/gunixconnection.c:591
+#: gio/gunixconnection.c:194 gio/gunixconnection.c:608
 msgid "Unexpected type of ancillary data"
 msgstr "Tipo de dado auxiliar não esperado"
 
-#: gio/gunixconnection.c:200
+#: gio/gunixconnection.c:212
 #, c-format
 msgid "Expecting one fd, but got %d\n"
 msgid_plural "Expecting one fd, but got %d\n"
 msgstr[0] "Esperando um fd, mas obtive %d\n"
 msgstr[1] "Esperando um fd, mas obtive %d\n"
 
-#: gio/gunixconnection.c:219
+#: gio/gunixconnection.c:231
 msgid "Received invalid fd"
 msgstr "Recebido fd inválido"
 
-#: gio/gunixconnection.c:363
+#: gio/gunixconnection.c:238
+msgid "Receiving FD is not supported"
+msgstr "Não há suporte ao recebimento de FD"
+
+#: gio/gunixconnection.c:380
 msgid "Error sending credentials: "
 msgstr "Erro ao enviar credenciais: "
 
-#: gio/gunixconnection.c:520
+#: gio/gunixconnection.c:537
 #, c-format
 msgid "Error checking if SO_PASSCRED is enabled for socket: %s"
 msgstr "Erro ao verificar se SO_PASSCRED está habilitado pelo soquete: %s"
 
-#: gio/gunixconnection.c:536
+#: gio/gunixconnection.c:553
 #, c-format
 msgid "Error enabling SO_PASSCRED: %s"
 msgstr "Erro ao habilitar SO_PASSCRED: %s"
 
-#: gio/gunixconnection.c:565
+#: gio/gunixconnection.c:582
 msgid ""
 "Expecting to read a single byte for receiving credentials but read zero bytes"
 msgstr ""
 "Era esperado ler apenas um byte para receber credenciais, mas foi lido zero "
 "byte"
 
-#: gio/gunixconnection.c:605
+#: gio/gunixconnection.c:622
 #, c-format
 msgid "Not expecting control message, but got %d"
 msgstr "Não esperava mensagem de controle, mas recebeu %d"
 
-#: gio/gunixconnection.c:630
+#: gio/gunixconnection.c:647
 #, c-format
 msgid "Error while disabling SO_PASSCRED: %s"
 msgstr "Erro ao desabilitar SO_PASSCRED: %s"
@@ -4345,7 +4411,7 @@ msgstr "Erro ao ler do descritor de arquivo: %s"
 msgid "Error closing file descriptor: %s"
 msgstr "Erro ao fechar o descritor de arquivo: %s"
 
-#: gio/gunixmounts.c:2785 gio/gunixmounts.c:2838
+#: gio/gunixmounts.c:2809 gio/gunixmounts.c:2862
 msgid "Filesystem root"
 msgstr "Sistema de arquivos root"
 
@@ -4356,7 +4422,7 @@ msgstr "Sistema de arquivos root"
 msgid "Error writing to file descriptor: %s"
 msgstr "Erro ao gravar o descritor de arquivo: %s"
 
-#: gio/gunixsocketaddress.c:244
+#: gio/gunixsocketaddress.c:251
 msgid "Abstract UNIX domain socket addresses not supported on this system"
 msgstr ""
 "Não há suporte a endereços de soquetes de domínio UNIX abstratos neste "
@@ -4509,8 +4575,8 @@ msgstr "Falha em expandir linha de execução “%s” com URI “%s”"
 msgid "Unrepresentable character in conversion input"
 msgstr "Caractere não representável na conversão da entrada"
 
-#: glib/gconvert.c:495 glib/gutf8.c:871 glib/gutf8.c:1083 glib/gutf8.c:1220
-#: glib/gutf8.c:1324
+#: glib/gconvert.c:495 glib/gutf8.c:886 glib/gutf8.c:1099 glib/gutf8.c:1236
+#: glib/gutf8.c:1340
 msgid "Partial character sequence at end of input"
 msgstr "Sequência de caracteres parcial no final da entrada"
 
@@ -5075,16 +5141,16 @@ msgstr "Canal termina em um caractere parcial"
 msgid "Can’t do a raw read in g_io_channel_read_to_end"
 msgstr "Não é possível fazer uma leitura em bruto de g_io_channel_read_to_end"
 
-#: glib/gkeyfile.c:791
+#: glib/gkeyfile.c:794
 msgid "Valid key file could not be found in search dirs"
 msgstr ""
 "Não foi possível localizar arquivo de chave válido nos diretórios pesquisados"
 
-#: glib/gkeyfile.c:828
+#: glib/gkeyfile.c:831
 msgid "Not a regular file"
 msgstr "Não é um arquivo comum"
 
-#: glib/gkeyfile.c:1283
+#: glib/gkeyfile.c:1289
 #, c-format
 msgid ""
 "Key file contains line “%s” which is not a key-value pair, group, or comment"
@@ -5092,50 +5158,50 @@ msgstr ""
 "Arquivo de chave contém a linha “%s” que não é um par chave-valor, grupo ou "
 "comentário"
 
-#: glib/gkeyfile.c:1340
+#: glib/gkeyfile.c:1346
 #, c-format
 msgid "Invalid group name: %s"
 msgstr "Nome de grupo inválido: %s"
 
-#: glib/gkeyfile.c:1362
+#: glib/gkeyfile.c:1370
 msgid "Key file does not start with a group"
 msgstr "Arquivo de chave não começa com um grupo"
 
-#: glib/gkeyfile.c:1388
+#: glib/gkeyfile.c:1394
 #, c-format
-msgid "Invalid key name: %s"
-msgstr "Nome de chave inválido: %s"
+msgid "Invalid key name: %.*s"
+msgstr "Nome de chave inválido: %.*s"
 
-#: glib/gkeyfile.c:1415
+#: glib/gkeyfile.c:1422
 #, c-format
 msgid "Key file contains unsupported encoding “%s”"
 msgstr "Arquivo de chave contém codificação “%s” sem suporte"
 
-#: glib/gkeyfile.c:1664 glib/gkeyfile.c:1837 glib/gkeyfile.c:3287
-#: glib/gkeyfile.c:3351 glib/gkeyfile.c:3481 glib/gkeyfile.c:3613
-#: glib/gkeyfile.c:3759 glib/gkeyfile.c:3994 glib/gkeyfile.c:4061
+#: glib/gkeyfile.c:1677 glib/gkeyfile.c:1850 glib/gkeyfile.c:3297
+#: glib/gkeyfile.c:3361 glib/gkeyfile.c:3491 glib/gkeyfile.c:3623
+#: glib/gkeyfile.c:3769 glib/gkeyfile.c:4004 glib/gkeyfile.c:4071
 #, c-format
 msgid "Key file does not have group “%s”"
 msgstr "Arquivo de chave não tem grupo “%s”"
 
-#: glib/gkeyfile.c:1792
+#: glib/gkeyfile.c:1805
 #, c-format
 msgid "Key file does not have key “%s” in group “%s”"
 msgstr "Arquivo de chave não tem chave “%s” no grupo “%s”"
 
-#: glib/gkeyfile.c:1954 glib/gkeyfile.c:2070
+#: glib/gkeyfile.c:1967 glib/gkeyfile.c:2083
 #, c-format
 msgid "Key file contains key “%s” with value “%s” which is not UTF-8"
 msgstr "Arquivo de chave contém chave “%s” com valor “%s” que não é UTF-8"
 
-#: glib/gkeyfile.c:1974 glib/gkeyfile.c:2090 glib/gkeyfile.c:2529
+#: glib/gkeyfile.c:1987 glib/gkeyfile.c:2103 glib/gkeyfile.c:2542
 #, c-format
 msgid ""
 "Key file contains key “%s” which has a value that cannot be interpreted."
 msgstr ""
 "Arquivo de chave contém chave “%s” cujo valor não pode ser interpretado."
 
-#: glib/gkeyfile.c:2747 glib/gkeyfile.c:3116
+#: glib/gkeyfile.c:2757 glib/gkeyfile.c:3126
 #, c-format
 msgid ""
 "Key file contains key “%s” in group “%s” which has a value that cannot be "
@@ -5144,36 +5210,36 @@ msgstr ""
 "Arquivo de chave contém chave “%s” no grupo “%s” que tem um valor que não "
 "pode ser interpretado."
 
-#: glib/gkeyfile.c:2825 glib/gkeyfile.c:2902
+#: glib/gkeyfile.c:2835 glib/gkeyfile.c:2912
 #, c-format
 msgid "Key “%s” in group “%s” has value “%s” where %s was expected"
 msgstr "Chave “%s” no grupo “%s” tem o valor “%s” onde %s era esperado"
 
-#: glib/gkeyfile.c:4304
+#: glib/gkeyfile.c:4324
 msgid "Key file contains escape character at end of line"
 msgstr "Arquivo de chave contém caractere de escape no fim da linha"
 
-#: glib/gkeyfile.c:4326
+#: glib/gkeyfile.c:4346
 #, c-format
 msgid "Key file contains invalid escape sequence “%s”"
 msgstr "Arquivo de chave contém sequência de escape “%s” inválida"
 
-#: glib/gkeyfile.c:4470
+#: glib/gkeyfile.c:4491
 #, c-format
 msgid "Value “%s” cannot be interpreted as a number."
 msgstr "O valor “%s” não pode ser interpretado como um número."
 
-#: glib/gkeyfile.c:4484
+#: glib/gkeyfile.c:4505
 #, c-format
 msgid "Integer value “%s” out of range"
 msgstr "Valor inteiro “%s” fora dos limites"
 
-#: glib/gkeyfile.c:4517
+#: glib/gkeyfile.c:4538
 #, c-format
 msgid "Value “%s” cannot be interpreted as a float number."
 msgstr "O valor “%s” não pode ser interpretado como ponto flutuante."
 
-#: glib/gkeyfile.c:4556
+#: glib/gkeyfile.c:4577
 #, c-format
 msgid "Value “%s” cannot be interpreted as a boolean."
 msgstr "O valor “%s” não pode ser interpretado como um booleano."
@@ -5471,7 +5537,7 @@ msgstr "Erro ao ler a opção %s"
 msgid "Missing argument for %s"
 msgstr "Falta argumento para %s"
 
-#: glib/goption.c:2185
+#: glib/goption.c:2184
 #, c-format
 msgid "Unknown option %s"
 msgstr "Opção %s desconhecida"
@@ -5576,7 +5642,7 @@ msgstr "caractere não reconhecido após (? ou (?-"
 
 #: glib/gregex.c:361
 msgid "POSIX named classes are supported only within a class"
-msgstr "classes nomeadas POSIX têm suporte apenas dentro de uma classe"
+msgstr "Classes nomeadas POSIX têm suporte apenas dentro de uma classe"
 
 #: glib/gregex.c:364
 msgid "missing terminating )"
@@ -5639,7 +5705,7 @@ msgstr "nome de classe POSIX desconhecido"
 
 #: glib/gregex.c:413
 msgid "POSIX collating elements are not supported"
-msgstr "elementos de arranjo POSIX sem suporte"
+msgstr "Elementos de arranjo POSIX sem suporte"
 
 #: glib/gregex.c:416
 msgid "character value in \\x{...} sequence is too large"
@@ -5879,121 +5945,131 @@ msgstr "Texto estava vazio (ou apenas continha espaços)"
 msgid "Failed to read data from child process (%s)"
 msgstr "Falha ao ler dados de processo filho (%s)"
 
-#: glib/gspawn.c:461
+#: glib/gspawn.c:462
 #, c-format
 msgid "Unexpected error in reading data from a child process (%s)"
 msgstr "Erro inesperado na leitura de dados de um processo filho (%s)"
 
-#: glib/gspawn.c:546
+#: glib/gspawn.c:547
 #, c-format
 msgid "Unexpected error in waitpid() (%s)"
 msgstr "Erro inesperado em waitpid() (%s)"
 
-#: glib/gspawn.c:1166 glib/gspawn-win32.c:1407
+#: glib/gspawn.c:1175 glib/gspawn-win32.c:1438
 #, c-format
 msgid "Child process exited with code %ld"
 msgstr "Processo filho concluiu com código %ld"
 
-#: glib/gspawn.c:1174
+#: glib/gspawn.c:1183
 #, c-format
 msgid "Child process killed by signal %ld"
 msgstr "Processo filho foi terminado pelo sinal %ld"
 
-#: glib/gspawn.c:1181
+#: glib/gspawn.c:1190
 #, c-format
 msgid "Child process stopped by signal %ld"
 msgstr "Processo filho foi parado pelo sinal %ld"
 
-#: glib/gspawn.c:1188
+#: glib/gspawn.c:1197
 #, c-format
 msgid "Child process exited abnormally"
 msgstr "Processo filho concluiu anormalmente"
 
-#: glib/gspawn.c:1864 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
+#: glib/gspawn.c:1890 glib/gspawn-win32.c:353 glib/gspawn-win32.c:361
 #, c-format
 msgid "Failed to read from child pipe (%s)"
 msgstr "Falha ao ler de canal filho (%s)"
 
-#: glib/gspawn.c:2166
+#: glib/gspawn.c:2253
 #, c-format
 msgid "Failed to spawn child process “%s” (%s)"
 msgstr "Falha ao criar processo filho “%s” (%s)"
 
-#: glib/gspawn.c:2283
+#: glib/gspawn.c:2370
 #, c-format
 msgid "Failed to fork (%s)"
 msgstr "Falha no fork (%s)"
 
-#: glib/gspawn.c:2443 glib/gspawn-win32.c:381
+#: glib/gspawn.c:2530 glib/gspawn-win32.c:384
 #, c-format
 msgid "Failed to change to directory “%s” (%s)"
 msgstr "Falha ao ir para diretório “%s” (%s)"
 
-#: glib/gspawn.c:2453
+#: glib/gspawn.c:2540
 #, c-format
 msgid "Failed to execute child process “%s” (%s)"
 msgstr "Falha ao executar processo filho “%s” (%s)"
 
-#: glib/gspawn.c:2463
+#: glib/gspawn.c:2550
+#, c-format
+msgid "Failed to open file to remap file descriptor (%s)"
+msgstr "Falha ao abrir o arquivo para remapear o descritor de arquivo (%s)"
+
+#: glib/gspawn.c:2558
 #, c-format
-msgid "Failed to redirect output or input of child process (%s)"
-msgstr "Falha ao redirecionar saída ou entrada do processo filho (%s)"
+msgid "Failed to duplicate file descriptor for child process (%s)"
+msgstr "Falha ao duplicar o descritor de arquivo para o processo filho (%s)"
 
-#: glib/gspawn.c:2472
+#: glib/gspawn.c:2567
 #, c-format
 msgid "Failed to fork child process (%s)"
 msgstr "Falha no fork de processo filho (%s)"
 
-#: glib/gspawn.c:2480
+#: glib/gspawn.c:2575
 #, c-format
 msgid "Failed to close file descriptor for child process (%s)"
-msgstr "Falho ao fechar o descritor de arquivo para processo filho (%s)"
+msgstr "Falha ao fechar o descritor de arquivo para o processo filho (%s)"
 
-#: glib/gspawn.c:2488
+#: glib/gspawn.c:2583
 #, c-format
 msgid "Unknown error executing child process “%s”"
 msgstr "Erro desconhecido ao executar processo filho “%s”"
 
-#: glib/gspawn.c:2512
+#: glib/gspawn.c:2607
 #, c-format
 msgid "Failed to read enough data from child pid pipe (%s)"
 msgstr "Falha ao ler dados suficientes de canal pid do filho (%s)"
 
-#: glib/gspawn-win32.c:294
+#: glib/gspawn-win32.c:297
 msgid "Failed to read data from child process"
 msgstr "Falha ao ler dados de processo filho"
 
-#: glib/gspawn-win32.c:387 glib/gspawn-win32.c:392 glib/gspawn-win32.c:511
+#: glib/gspawn-win32.c:390 glib/gspawn-win32.c:395 glib/gspawn-win32.c:521
 #, c-format
 msgid "Failed to execute child process (%s)"
 msgstr "Falha ao executar processo filho (%s)"
 
-#: glib/gspawn-win32.c:461
+#: glib/gspawn-win32.c:400
+#, c-format
+msgid "Failed to dup() in child process (%s)"
+msgstr "Falha em dup() no processo filho (%s)"
+
+#: glib/gspawn-win32.c:471
 #, c-format
 msgid "Invalid program name: %s"
 msgstr "Nome de programa inválido: %s"
 
-#: glib/gspawn-win32.c:471 glib/gspawn-win32.c:779
+#: glib/gspawn-win32.c:481 glib/gspawn-win32.c:807
 #, c-format
 msgid "Invalid string in argument vector at %d: %s"
 msgstr "String inválida no vetor de argumentos em %d: %s"
 
-#: glib/gspawn-win32.c:482 glib/gspawn-win32.c:794
+#: glib/gspawn-win32.c:492 glib/gspawn-win32.c:823
 #, c-format
 msgid "Invalid string in environment: %s"
 msgstr "String inválida no ambiente: %s"
 
-#: glib/gspawn-win32.c:775
+#: glib/gspawn-win32.c:803
 #, c-format
 msgid "Invalid working directory: %s"
 msgstr "Diretório de trabalho inválido: %s"
 
-#: glib/gspawn-win32.c:837
+#: glib/gspawn-win32.c:868
 #, c-format
 msgid "Failed to execute helper program (%s)"
 msgstr "Falha ao executar programa auxiliar (%s)"
 
-#: glib/gspawn-win32.c:1064
+#: glib/gspawn-win32.c:1096
 msgid ""
 "Unexpected error in g_io_channel_win32_poll() reading data from a child "
 "process"
@@ -6001,21 +6077,21 @@ msgstr ""
 "Erro inesperado no g_io_channel_win32_poll() ao ler dados de um processo "
 "filho"
 
-#: glib/gstrfuncs.c:3345 glib/gstrfuncs.c:3447
+#: glib/gstrfuncs.c:3351 glib/gstrfuncs.c:3453
 msgid "Empty string is not a number"
 msgstr "Texto vazio não é um número"
 
-#: glib/gstrfuncs.c:3369
+#: glib/gstrfuncs.c:3375
 #, c-format
 msgid "“%s” is not a signed number"
 msgstr "“%s” não é um número assinado"
 
-#: glib/gstrfuncs.c:3379 glib/gstrfuncs.c:3483
+#: glib/gstrfuncs.c:3385 glib/gstrfuncs.c:3489
 #, c-format
 msgid "Number “%s” is out of bounds [%s, %s]"
 msgstr "O número “%s” está fora dos limites [%s, %s]"
 
-#: glib/gstrfuncs.c:3473
+#: glib/gstrfuncs.c:3479
 #, c-format
 msgid "“%s” is not an unsigned number"
 msgstr "“%s” não é um número não assinado"
@@ -6076,175 +6152,175 @@ msgstr "A URI não é absoluta, e nenhuma URI base foi fornecida"
 msgid "Missing ‘=’ and parameter value"
 msgstr "Faltando “=” e valor de parâmetro"
 
-#: glib/gutf8.c:817
+#: glib/gutf8.c:832
 msgid "Failed to allocate memory"
 msgstr "Falha ao alocar memória"
 
-#: glib/gutf8.c:950
+#: glib/gutf8.c:965
 msgid "Character out of range for UTF-8"
 msgstr "Caractere fora do limite para UTF-8"
 
-#: glib/gutf8.c:1051 glib/gutf8.c:1060 glib/gutf8.c:1190 glib/gutf8.c:1199
-#: glib/gutf8.c:1338 glib/gutf8.c:1435
+#: glib/gutf8.c:1067 glib/gutf8.c:1076 glib/gutf8.c:1206 glib/gutf8.c:1215
+#: glib/gutf8.c:1354 glib/gutf8.c:1451
 msgid "Invalid sequence in conversion input"
 msgstr "Sequência inválida na conversão da entrada"
 
-#: glib/gutf8.c:1349 glib/gutf8.c:1446
+#: glib/gutf8.c:1365 glib/gutf8.c:1462
 msgid "Character out of range for UTF-16"
 msgstr "Caractere fora do limite para UTF-16"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2770
+#: glib/gutils.c:2849
 #, c-format
 msgid "%.1f kB"
 msgstr "%.1f kB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2772
+#: glib/gutils.c:2851
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2774
+#: glib/gutils.c:2853
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2776
+#: glib/gutils.c:2855
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2778
+#: glib/gutils.c:2857
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2780
+#: glib/gutils.c:2859
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2784
+#: glib/gutils.c:2863
 #, c-format
 msgid "%.1f KiB"
 msgstr "%.1f KiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2786
+#: glib/gutils.c:2865
 #, c-format
 msgid "%.1f MiB"
 msgstr "%.1f MiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2788
+#: glib/gutils.c:2867
 #, c-format
 msgid "%.1f GiB"
 msgstr "%.1f GiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2790
+#: glib/gutils.c:2869
 #, c-format
 msgid "%.1f TiB"
 msgstr "%.1f TiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2792
+#: glib/gutils.c:2871
 #, c-format
 msgid "%.1f PiB"
 msgstr "%.1f PiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2794
+#: glib/gutils.c:2873
 #, c-format
 msgid "%.1f EiB"
 msgstr "%.1f EiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2798
+#: glib/gutils.c:2877
 #, c-format
 msgid "%.1f kb"
 msgstr "%.1f kb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2800
+#: glib/gutils.c:2879
 #, c-format
 msgid "%.1f Mb"
 msgstr "%.1f Mb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2802
+#: glib/gutils.c:2881
 #, c-format
 msgid "%.1f Gb"
 msgstr "%.1f Gb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2804
+#: glib/gutils.c:2883
 #, c-format
 msgid "%.1f Tb"
 msgstr "%.1f Tb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2806
+#: glib/gutils.c:2885
 #, c-format
 msgid "%.1f Pb"
 msgstr "%.1f Pb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2808
+#: glib/gutils.c:2887
 #, c-format
 msgid "%.1f Eb"
 msgstr "%.1f Eb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2812
+#: glib/gutils.c:2891
 #, c-format
 msgid "%.1f Kib"
 msgstr "%.1f Kib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2814
+#: glib/gutils.c:2893
 #, c-format
 msgid "%.1f Mib"
 msgstr "%.1f Mib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2816
+#: glib/gutils.c:2895
 #, c-format
 msgid "%.1f Gib"
 msgstr "%.1f Gib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2818
+#: glib/gutils.c:2897
 #, c-format
 msgid "%.1f Tib"
 msgstr "%.1f Tib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2820
+#: glib/gutils.c:2899
 #, c-format
 msgid "%.1f Pib"
 msgstr "%.1f Pib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2822
+#: glib/gutils.c:2901
 #, c-format
 msgid "%.1f Eib"
 msgstr "%.1f Eib"
 
-#: glib/gutils.c:2856 glib/gutils.c:2973
+#: glib/gutils.c:2935 glib/gutils.c:3052
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
 msgstr[0] "%u byte"
 msgstr[1] "%u bytes"
 
-#: glib/gutils.c:2860
+#: glib/gutils.c:2939
 #, c-format
 msgid "%u bit"
 msgid_plural "%u bits"
@@ -6252,7 +6328,7 @@ msgstr[0] "%u bit"
 msgstr[1] "%u bits"
 
 #. Translators: the %s in "%s bytes" will always be replaced by a number.
-#: glib/gutils.c:2927
+#: glib/gutils.c:3006
 #, c-format
 msgid "%s byte"
 msgid_plural "%s bytes"
@@ -6260,7 +6336,7 @@ msgstr[0] "%s byte"
 msgstr[1] "%s bytes"
 
 #. Translators: the %s in "%s bits" will always be replaced by a number.
-#: glib/gutils.c:2932
+#: glib/gutils.c:3011
 #, c-format
 msgid "%s bit"
 msgid_plural "%s bits"
@@ -6272,32 +6348,32 @@ msgstr[1] "%s bits"
 #. * compatibility.  Users will not see this string unless a program is using this deprecated function.
 #. * Please translate as literally as possible.
 #.
-#: glib/gutils.c:2986
+#: glib/gutils.c:3065
 #, c-format
 msgid "%.1f KB"
 msgstr "%.1f KB"
 
-#: glib/gutils.c:2991
+#: glib/gutils.c:3070
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
-#: glib/gutils.c:2996
+#: glib/gutils.c:3075
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
-#: glib/gutils.c:3001
+#: glib/gutils.c:3080
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
-#: glib/gutils.c:3006
+#: glib/gutils.c:3085
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
-#: glib/gutils.c:3011
+#: glib/gutils.c:3090
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
@@ -6416,9 +6492,6 @@ msgstr "%.1f EB"
 #~ msgid "Unable to find default local directory monitor type"
 #~ msgstr "Não é possível localizar o tipo de diretório monitor local padrão"
 
-#~ msgid "URIs not supported"
-#~ msgstr "Não há suporte a URIs"
-
 #~ msgid "Key file does not have key '%s'"
 #~ msgstr "Arquivo de chave não tem chave \"%s\""
 
index d58cdbf..0792344 100644 (file)
--- a/po/ro.po
+++ b/po/ro.po
@@ -10,9 +10,9 @@ msgid ""
 msgstr ""
 "Project-Id-Version: glib\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/glib/issues\n"
-"POT-Creation-Date: 2022-02-01 17:05+0000\n"
-"PO-Revision-Date: 2022-02-19 14:41+0100\n"
-"Last-Translator: Florentina Mușat <florentina.musat.28@gmail.com>\n"
+"POT-Creation-Date: 2022-02-19 13:43+0000\n"
+"PO-Revision-Date: 2022-03-06 12:47+0100\n"
+"Last-Translator: Daniel Șerbănescu <daniel [at] serbanescu [dot] dk>\n"
 "Language-Team: Gnome Romanian Translation Team <gnomero-list@lists."
 "sourceforge.net>\n"
 "Language: ro\n"
@@ -25,30 +25,39 @@ msgstr ""
 "X-Project-Style: gnome\n"
 "X-Poedit-SourceCharset: UTF-8\n"
 
-#: gio/gapplication.c:500
+#: gio/gappinfo.c:333
+msgid "Setting default applications not supported yet"
+msgstr "Stabilirea aplicațiilor implicite nu este suportată încă"
+
+#: gio/gappinfo.c:366
+msgid "Setting application as last used for type not supported yet"
+msgstr ""
+"Stabilirea aplicației ca ultima folosită pentru acest tip nu este suportată"
+
+#: gio/gapplication.c:497
 msgid "GApplication options"
 msgstr "Opțiuni GApplication"
 
-#: gio/gapplication.c:500
+#: gio/gapplication.c:497
 msgid "Show GApplication options"
 msgstr "Arată opțiunile GApplication"
 
-#: gio/gapplication.c:545
+#: gio/gapplication.c:542
 msgid "Enter GApplication service mode (use from D-Bus service files)"
 msgstr ""
 "Intră în modul de serviciu GApplication (utilizează de la fișierele de "
 "serviciu D-Bus)"
 
-#: gio/gapplication.c:557
+#: gio/gapplication.c:554
 msgid "Override the application’s ID"
 msgstr "Suprascrie ID-ul aplicației"
 
-#: gio/gapplication.c:569
+#: gio/gapplication.c:566
 msgid "Replace the running instance"
 msgstr "Înlocuiește instanța care rulează"
 
 #: gio/gapplication-tool.c:45 gio/gapplication-tool.c:46 gio/gio-tool.c:227
-#: gio/gresource-tool.c:494 gio/gsettings-tool.c:572
+#: gio/gresource-tool.c:494 gio/gsettings-tool.c:584
 msgid "Print help"
 msgstr "Afișează ajutorul"
 
@@ -60,7 +69,7 @@ msgstr "[COMANDĂ]"
 msgid "Print version"
 msgstr "Tipărește versiunea"
 
-#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:578
+#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:590
 msgid "Print version information and exit"
 msgstr "Afișează informațiile despre versiune și ieși"
 
@@ -121,8 +130,8 @@ msgstr "Comanda pentru care să se afișeze ajutorul detaliat"
 msgid "Application identifier in D-Bus format (eg: org.example.viewer)"
 msgstr "Identificatorul de aplicație în format D-Bus (eg: org.example.viewer)"
 
-#: gio/gapplication-tool.c:74 gio/glib-compile-resources.c:738
-#: gio/glib-compile-resources.c:744 gio/glib-compile-resources.c:772
+#: gio/gapplication-tool.c:74 gio/glib-compile-resources.c:820
+#: gio/glib-compile-resources.c:826 gio/glib-compile-resources.c:855
 #: gio/gresource-tool.c:501 gio/gresource-tool.c:567
 msgid "FILE"
 msgstr "FIȘIER"
@@ -147,7 +156,7 @@ msgstr "PARAMETRU"
 msgid "Optional parameter to the action invocation, in GVariant format"
 msgstr "Parametru opțional pentru invocarea acțiunii, în formatul GVariant"
 
-#: gio/gapplication-tool.c:98 gio/gresource-tool.c:532 gio/gsettings-tool.c:664
+#: gio/gapplication-tool.c:98 gio/gresource-tool.c:532 gio/gsettings-tool.c:676
 #, c-format
 msgid ""
 "Unknown command %s\n"
@@ -161,7 +170,7 @@ msgid "Usage:\n"
 msgstr "Utilizare:\n"
 
 #: gio/gapplication-tool.c:116 gio/gresource-tool.c:557
-#: gio/gsettings-tool.c:699
+#: gio/gsettings-tool.c:711
 msgid "Arguments:\n"
 msgstr "Argumente:\n"
 
@@ -285,7 +294,7 @@ msgstr "Flux deja închis"
 msgid "Truncate not supported on base stream"
 msgstr "Trunchierea fluxului de bază nu este suportată"
 
-#: gio/gcancellable.c:319 gio/gdbusconnection.c:1873 gio/gdbusprivate.c:1416
+#: gio/gcancellable.c:319 gio/gdbusconnection.c:1873 gio/gdbusprivate.c:1418
 #: gio/gsimpleasyncresult.c:871 gio/gsimpleasyncresult.c:897
 #, c-format
 msgid "Operation was cancelled"
@@ -306,7 +315,7 @@ msgstr "Spațiu insuficient în destinație"
 #: gio/gcharsetconverter.c:342 gio/gdatainputstream.c:848
 #: gio/gdatainputstream.c:1266 glib/gconvert.c:449 glib/gconvert.c:879
 #: glib/giochannel.c:1573 glib/giochannel.c:1615 glib/giochannel.c:2470
-#: glib/gutf8.c:875 glib/gutf8.c:1328
+#: glib/gutf8.c:890 glib/gutf8.c:1344
 msgid "Invalid byte sequence in conversion input"
 msgstr "Secvență de octeți incorectă în inputul conversiei"
 
@@ -316,7 +325,7 @@ msgstr "Secvență de octeți incorectă în inputul conversiei"
 msgid "Error during conversion: %s"
 msgstr "Eroare în timpul conversiei: %s"
 
-#: gio/gcharsetconverter.c:445 gio/gsocket.c:1143
+#: gio/gcharsetconverter.c:445 gio/gsocket.c:1147
 msgid "Cancellable initialization not supported"
 msgstr "Inițializarea întreruptibilă nu este implementată"
 
@@ -330,7 +339,7 @@ msgstr "Conversia de la setul de caractere „%s” la „%s” nu este suportat
 msgid "Could not open converter from “%s” to “%s”"
 msgstr "Nu s-a putut deschide convertorul de la „%s” la „%s”"
 
-#: gio/gcontenttype.c:454
+#: gio/gcontenttype.c:470
 #, c-format
 msgid "%s type"
 msgstr "tip %s"
@@ -344,23 +353,23 @@ msgstr "Tip necunoscută"
 msgid "%s filetype"
 msgstr "tip de fișier %s"
 
-#: gio/gcredentials.c:323
+#: gio/gcredentials.c:335
 msgid "GCredentials contains invalid data"
 msgstr "GCredentials conține date nevalide"
 
-#: gio/gcredentials.c:383 gio/gcredentials.c:667
+#: gio/gcredentials.c:395 gio/gcredentials.c:686
 msgid "GCredentials is not implemented on this OS"
 msgstr "GCredentials nu este implementat pe acest SO"
 
-#: gio/gcredentials.c:538 gio/gcredentials.c:556
+#: gio/gcredentials.c:550 gio/gcredentials.c:568
 msgid "There is no GCredentials support for your platform"
 msgstr "Nu există suport pentru GCredentials pe platforma dumneavoastră"
 
-#: gio/gcredentials.c:607
+#: gio/gcredentials.c:626
 msgid "GCredentials does not contain a process ID on this OS"
 msgstr "GCredentials nu conține un ID de proces pe acest SO"
 
-#: gio/gcredentials.c:661
+#: gio/gcredentials.c:680
 msgid "Credentials spoofing is not possible on this OS"
 msgstr "Spoofing-ul certificărilor nu este posibil pe acest SO"
 
@@ -368,17 +377,17 @@ msgstr "Spoofing-ul certificărilor nu este posibil pe acest SO"
 msgid "Unexpected early end-of-stream"
 msgstr "Flux terminat neașteptat de repede"
 
-#: gio/gdbusaddress.c:159 gio/gdbusaddress.c:233 gio/gdbusaddress.c:322
+#: gio/gdbusaddress.c:162 gio/gdbusaddress.c:236 gio/gdbusaddress.c:325
 #, c-format
 msgid "Unsupported key “%s” in address entry “%s”"
 msgstr "Cheie „%s” nesuportată în intrarea de adresă „%s”"
 
-#: gio/gdbusaddress.c:172
+#: gio/gdbusaddress.c:175
 #, c-format
 msgid "Meaningless key/value pair combination in address entry “%s”"
 msgstr "Pereche cheie/valoare fără sens în intrarea de adresă „%s”"
 
-#: gio/gdbusaddress.c:181
+#: gio/gdbusaddress.c:184
 #, c-format
 msgid ""
 "Address “%s” is invalid (need exactly one of path, dir, tmpdir, or abstract "
@@ -387,28 +396,28 @@ msgstr ""
 "Adresa „%s” nu este validă (este nevoie de exact una din cale, dir, tmpdir "
 "sau chei abstracte)"
 
-#: gio/gdbusaddress.c:248 gio/gdbusaddress.c:259 gio/gdbusaddress.c:274
-#: gio/gdbusaddress.c:337 gio/gdbusaddress.c:348
+#: gio/gdbusaddress.c:251 gio/gdbusaddress.c:262 gio/gdbusaddress.c:277
+#: gio/gdbusaddress.c:340 gio/gdbusaddress.c:351
 #, c-format
 msgid "Error in address “%s” — the “%s” attribute is malformed"
 msgstr "Eroare în adresa „%s” — atributul „%s” este malformat"
 
-#: gio/gdbusaddress.c:418 gio/gdbusaddress.c:682
+#: gio/gdbusaddress.c:421 gio/gdbusaddress.c:680
 #, c-format
 msgid "Unknown or unsupported transport “%s” for address “%s”"
 msgstr "Transport „%s” necunoscut sau nesuportat pentru adresa „%s”"
 
-#: gio/gdbusaddress.c:462
+#: gio/gdbusaddress.c:465
 #, c-format
 msgid "Address element “%s” does not contain a colon (:)"
 msgstr "Elementul de adresă „%s” nu conține două puncte (:)"
 
-#: gio/gdbusaddress.c:471
+#: gio/gdbusaddress.c:474
 #, c-format
 msgid "Transport name in address element “%s” must not be empty"
 msgstr "Numele de transport în elementul de adresă „%s” nu trebuie să fie gol"
 
-#: gio/gdbusaddress.c:492
+#: gio/gdbusaddress.c:495
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” does not contain an equal "
@@ -417,7 +426,7 @@ msgstr ""
 "Perechea cheie/valoare %d, „%s”, în elementul de adresă „%s”, nu conține un "
 "semn de egalitate"
 
-#: gio/gdbusaddress.c:503
+#: gio/gdbusaddress.c:506
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” must not have an empty key"
@@ -425,7 +434,7 @@ msgstr ""
 "Perechea cheie/valoare %d, „%s”, în elementul de adresă „%s”, nu trebuie să "
 "aibă o cheie goală"
 
-#: gio/gdbusaddress.c:517
+#: gio/gdbusaddress.c:520
 #, c-format
 msgid ""
 "Error unescaping key or value in Key/Value pair %d, “%s”, in address element "
@@ -434,7 +443,7 @@ msgstr ""
 "Eroare la conversia din formatul „escaped” a cheii sau a valorii din "
 "perechea cheie/valoare %d, „%s”, în elementul de adresă „%s”"
 
-#: gio/gdbusaddress.c:589
+#: gio/gdbusaddress.c:588
 #, c-format
 msgid ""
 "Error in address “%s” — the unix transport requires exactly one of the keys "
@@ -443,79 +452,79 @@ msgstr ""
 "Eroare în adresa „%s” - transportul unix necesită exact una din cheile "
 "„path” sau „abstract” să fie stabilită"
 
-#: gio/gdbusaddress.c:625
+#: gio/gdbusaddress.c:623
 #, c-format
 msgid "Error in address “%s” — the host attribute is missing or malformed"
 msgstr "Eroare în adresa „%s” - atributul gazdă lipsește sau este eronat"
 
-#: gio/gdbusaddress.c:639
+#: gio/gdbusaddress.c:637
 #, c-format
 msgid "Error in address “%s” — the port attribute is missing or malformed"
 msgstr "Eroare la adresa „%s” - atributul port lipsește sau este eronat"
 
-#: gio/gdbusaddress.c:653
+#: gio/gdbusaddress.c:651
 #, c-format
 msgid "Error in address “%s” — the noncefile attribute is missing or malformed"
 msgstr "Eroare în adresa „%s” - atributul noncefile lipsește sau este eronat"
 
-#: gio/gdbusaddress.c:674
+#: gio/gdbusaddress.c:672
 msgid "Error auto-launching: "
 msgstr "Eroare la auto-lansare: "
 
-#: gio/gdbusaddress.c:727
+#: gio/gdbusaddress.c:725
 #, c-format
 msgid "Error opening nonce file “%s”: %s"
 msgstr "Eroare la deschiderea fișierului nonce „%s”: %s"
 
-#: gio/gdbusaddress.c:746
+#: gio/gdbusaddress.c:744
 #, c-format
 msgid "Error reading from nonce file “%s”: %s"
 msgstr "Eroare la citirea din fișierul nonce „%s”: %s"
 
-#: gio/gdbusaddress.c:755
+#: gio/gdbusaddress.c:753
 #, c-format
 msgid "Error reading from nonce file “%s”, expected 16 bytes, got %d"
 msgstr ""
 "Eroare la citirea din fișierul nonce „%s”, se așteptau 16 octeți, s-au "
 "primit %d"
 
-#: gio/gdbusaddress.c:773
+#: gio/gdbusaddress.c:771
 #, c-format
 msgid "Error writing contents of nonce file “%s” to stream:"
 msgstr "Eroare la scrierea conținutului fișierului nonce „%s” la flux:"
 
-#: gio/gdbusaddress.c:988
+#: gio/gdbusaddress.c:986
 msgid "The given address is empty"
 msgstr "Adresa oferită este goală"
 
-#: gio/gdbusaddress.c:1101
+#: gio/gdbusaddress.c:1099
 #, c-format
-msgid "Cannot spawn a message bus when setuid"
-msgstr "Nu se poate lansa o magistrală de mesaje când setuid"
+msgid "Cannot spawn a message bus when AT_SECURE is set"
+msgstr "Nu se poate lansa o magistrală de mesaje când AT_SECURE este stabilit"
 
-#: gio/gdbusaddress.c:1108
+#: gio/gdbusaddress.c:1106
 msgid "Cannot spawn a message bus without a machine-id: "
 msgstr ""
 "Nu se poate lansa o magistrală de mesaje fără un identificator de mașină: "
 
-#: gio/gdbusaddress.c:1115
+#: gio/gdbusaddress.c:1113
 #, c-format
 msgid "Cannot autolaunch D-Bus without X11 $DISPLAY"
 msgstr "Nu se poate lansa automat D-Bus fără $DISPLAY X11"
 
-#: gio/gdbusaddress.c:1157
+#: gio/gdbusaddress.c:1155
 #, c-format
 msgid "Error spawning command line “%s”: "
 msgstr "Eroare la crearea liniei de comandă „%s”: "
 
-#: gio/gdbusaddress.c:1226
+#: gio/gdbusaddress.c:1224
 #, c-format
 msgid "Cannot determine session bus address (not implemented for this OS)"
 msgstr ""
 "Nu se poate determina adresa magistralei de sesiune (neimplementat pe acest "
 "sistem de operare)"
 
-#: gio/gdbusaddress.c:1375 gio/gdbusconnection.c:7334
+#: gio/gdbusaddress.c:1373 gio/gdbusconnection.c:7334
 #, c-format
 msgid ""
 "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
@@ -524,7 +533,7 @@ msgstr ""
 "Nu se poate determina adresa magistralei din variabila de mediu "
 "DBUS_STARTER_BUS_TYPE — valoare necunoscută „%s”"
 
-#: gio/gdbusaddress.c:1384 gio/gdbusconnection.c:7343
+#: gio/gdbusaddress.c:1382 gio/gdbusconnection.c:7343
 msgid ""
 "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
 "variable is not set"
@@ -532,7 +541,7 @@ msgstr ""
 "Nu s-a putut determina adresa magistralei pentru că variabila de mediu "
 "DBUS_STARTER_BUS_TYPE nu este setată"
 
-#: gio/gdbusaddress.c:1394
+#: gio/gdbusaddress.c:1392
 #, c-format
 msgid "Unknown bus type %d"
 msgstr "Tip de magistrală %d necunoscut"
@@ -564,12 +573,12 @@ msgstr ""
 msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
 msgstr "Anulat via GDBusAuthObserver::authorize-authenticated-peer"
 
-#: gio/gdbusauthmechanismsha1.c:298
+#: gio/gdbusauthmechanismsha1.c:299
 #, c-format
 msgid "Error when getting information for directory “%s”: %s"
 msgstr "Eroare în timpul obținerii de informații pentru directorul „%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:313
+#: gio/gdbusauthmechanismsha1.c:314
 #, c-format
 msgid ""
 "Permissions on directory “%s” are malformed. Expected mode 0700, got 0%o"
@@ -577,32 +586,32 @@ msgstr ""
 "Permisiunile pentru dosarul „%s” sunt eronate. Se aștepta modul 0700, s-a "
 "primit 0%o"
 
-#: gio/gdbusauthmechanismsha1.c:346 gio/gdbusauthmechanismsha1.c:357
+#: gio/gdbusauthmechanismsha1.c:347 gio/gdbusauthmechanismsha1.c:358
 #, c-format
 msgid "Error creating directory “%s”: %s"
 msgstr "Eroare la crearea directorului „%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:359 gio/gfile.c:1062 gio/gfile.c:1300
-#: gio/gfile.c:1438 gio/gfile.c:1676 gio/gfile.c:1731 gio/gfile.c:1789
-#: gio/gfile.c:1873 gio/gfile.c:1930 gio/gfile.c:1994 gio/gfile.c:2049
-#: gio/gfile.c:3754 gio/gfile.c:3809 gio/gfile.c:4102 gio/gfile.c:4572
-#: gio/gfile.c:4983 gio/gfile.c:5068 gio/gfile.c:5158 gio/gfile.c:5255
-#: gio/gfile.c:5342 gio/gfile.c:5443 gio/gfile.c:8153 gio/gfile.c:8243
-#: gio/gfile.c:8327 gio/win32/gwinhttpfile.c:453
+#: gio/gdbusauthmechanismsha1.c:360 gio/gfile.c:1080 gio/gfile.c:1318
+#: gio/gfile.c:1456 gio/gfile.c:1694 gio/gfile.c:1749 gio/gfile.c:1807
+#: gio/gfile.c:1891 gio/gfile.c:1948 gio/gfile.c:2012 gio/gfile.c:2067
+#: gio/gfile.c:3772 gio/gfile.c:3912 gio/gfile.c:4205 gio/gfile.c:4675
+#: gio/gfile.c:5086 gio/gfile.c:5171 gio/gfile.c:5261 gio/gfile.c:5358
+#: gio/gfile.c:5445 gio/gfile.c:5546 gio/gfile.c:8375 gio/gfile.c:8465
+#: gio/gfile.c:8549 gio/win32/gwinhttpfile.c:453
 msgid "Operation not supported"
 msgstr "Operațiune neimplementată"
 
-#: gio/gdbusauthmechanismsha1.c:402
+#: gio/gdbusauthmechanismsha1.c:403
 #, c-format
 msgid "Error opening keyring “%s” for reading: "
 msgstr "Eroare la deschiderea inelului de chei „%s” pentru citire: "
 
-#: gio/gdbusauthmechanismsha1.c:425 gio/gdbusauthmechanismsha1.c:747
+#: gio/gdbusauthmechanismsha1.c:426 gio/gdbusauthmechanismsha1.c:748
 #, c-format
 msgid "Line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr "Linia %d a inelului de chei de la „%s” cu conținutul „%s” este eronată"
 
-#: gio/gdbusauthmechanismsha1.c:439 gio/gdbusauthmechanismsha1.c:761
+#: gio/gdbusauthmechanismsha1.c:440 gio/gdbusauthmechanismsha1.c:762
 #, c-format
 msgid ""
 "First token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -610,7 +619,7 @@ msgstr ""
 "Primul jeton al liniei %d a inelului de chei de la „%s” cu conținutul „%s” "
 "este eronat"
 
-#: gio/gdbusauthmechanismsha1.c:453 gio/gdbusauthmechanismsha1.c:775
+#: gio/gdbusauthmechanismsha1.c:454 gio/gdbusauthmechanismsha1.c:776
 #, c-format
 msgid ""
 "Second token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -618,37 +627,37 @@ msgstr ""
 "Al doilea jeton al liniei %d a inelului de chei de la „%s” cu conținutul "
 "„%s” este eronat"
 
-#: gio/gdbusauthmechanismsha1.c:477
+#: gio/gdbusauthmechanismsha1.c:478
 #, c-format
 msgid "Didn’t find cookie with id %d in the keyring at “%s”"
 msgstr "Nu s-a găsit un cookie cu id-ul %d în inelul de chei de la „%s”"
 
-#: gio/gdbusauthmechanismsha1.c:523
+#: gio/gdbusauthmechanismsha1.c:524
 #, c-format
 msgid "Error creating lock file “%s”: %s"
 msgstr "Eroare la crearea fișierului de blocare „%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:587
+#: gio/gdbusauthmechanismsha1.c:588
 #, c-format
 msgid "Error deleting stale lock file “%s”: %s"
 msgstr "Eroare la ștergerea fișierului de blocare învechit „%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:626
+#: gio/gdbusauthmechanismsha1.c:627
 #, c-format
 msgid "Error closing (unlinked) lock file “%s”: %s"
 msgstr "Eroare la închiderea fișierului de blocare (deconectat) „%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:637
+#: gio/gdbusauthmechanismsha1.c:638
 #, c-format
 msgid "Error unlinking lock file “%s”: %s"
 msgstr "Eroare la deconectarea fișierului de blocare „%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:714
+#: gio/gdbusauthmechanismsha1.c:715
 #, c-format
 msgid "Error opening keyring “%s” for writing: "
 msgstr "Eroare la deschiderea inelului de chei „%s” pentru citire: "
 
-#: gio/gdbusauthmechanismsha1.c:908
+#: gio/gdbusauthmechanismsha1.c:909
 #, c-format
 msgid "(Additionally, releasing the lock for “%s” also failed: %s) "
 msgstr "(Adițional, a eșuat și eliberarea blocării pentru „%s”: %s) "
@@ -754,31 +763,31 @@ msgstr "Un subarbore este deja exporta pentru %s"
 msgid "Object does not exist at path “%s”"
 msgstr "Obiectul nu există la calea „%s”"
 
-#: gio/gdbusmessage.c:1311
+#: gio/gdbusmessage.c:1301
 msgid "type is INVALID"
 msgstr "tipul este NEVALID"
 
-#: gio/gdbusmessage.c:1322
+#: gio/gdbusmessage.c:1312
 msgid "METHOD_CALL message: PATH or MEMBER header field is missing"
 msgstr ""
 "Mesaj METHOD_CALL: unul din câmpurile de antet PATH sau MEMBER lipsește"
 
-#: gio/gdbusmessage.c:1333
+#: gio/gdbusmessage.c:1323
 msgid "METHOD_RETURN message: REPLY_SERIAL header field is missing"
 msgstr "Mesaj METHOD_RETURN: câmpul antet REPLY_SERIAL lipsește"
 
-#: gio/gdbusmessage.c:1345
+#: gio/gdbusmessage.c:1335
 msgid "ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing"
 msgstr ""
 "Mesaj de EROARE: unul din câmpurile de antet REPLY_SERIAL sau ERROR_NAME "
 "lipsește"
 
-#: gio/gdbusmessage.c:1358
+#: gio/gdbusmessage.c:1348
 msgid "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing"
 msgstr ""
 "Mesaj SIGNAL: unul din câmpurile de antet PATH, INTERFACE sau MEMBER lipsește"
 
-#: gio/gdbusmessage.c:1366
+#: gio/gdbusmessage.c:1356
 msgid ""
 "SIGNAL message: The PATH header field is using the reserved value /org/"
 "freedesktop/DBus/Local"
@@ -786,7 +795,7 @@ msgstr ""
 "Mesaj SIGNAL: câmpul de antet PATH utilizează valoarea rezervată /org/"
 "freedesktop/DBus/Local"
 
-#: gio/gdbusmessage.c:1374
+#: gio/gdbusmessage.c:1364
 msgid ""
 "SIGNAL message: The INTERFACE header field is using the reserved value org."
 "freedesktop.DBus.Local"
@@ -794,7 +803,7 @@ msgstr ""
 "Mesaj SIGNAL: câmpul de antet INTERFACE utilizează valoarea rezervată org."
 "freedesktop.DBus.Local"
 
-#: gio/gdbusmessage.c:1422 gio/gdbusmessage.c:1482
+#: gio/gdbusmessage.c:1412 gio/gdbusmessage.c:1472
 #, c-format
 msgid "Wanted to read %lu byte but only got %lu"
 msgid_plural "Wanted to read %lu bytes but only got %lu"
@@ -802,12 +811,12 @@ msgstr[0] "S-a încercat să se citească %lu octet, dar s-a primit doar %lu"
 msgstr[1] "S-a încercat să se citească %lu octeți, dar s-au primit doar %lu"
 msgstr[2] "S-a încercat să se citească %lu de octeți, dar s-au primit doar %lu"
 
-#: gio/gdbusmessage.c:1436
+#: gio/gdbusmessage.c:1426
 #, c-format
 msgid "Expected NUL byte after the string “%s” but found byte %d"
 msgstr "S-a așteptat un octet NUL după șirul „%s”, dar s-a găsit octetul %d"
 
-#: gio/gdbusmessage.c:1455
+#: gio/gdbusmessage.c:1445
 #, c-format
 msgid ""
 "Expected valid UTF-8 string but found invalid bytes at byte offset %d "
@@ -817,21 +826,21 @@ msgstr ""
 "%d (lungimea șirului este %d). Șirul UTF-8 valid până la acel punct a fost "
 "„%s”"
 
-#: gio/gdbusmessage.c:1519 gio/gdbusmessage.c:1795 gio/gdbusmessage.c:2006
+#: gio/gdbusmessage.c:1509 gio/gdbusmessage.c:1785 gio/gdbusmessage.c:1996
 msgid "Value nested too deeply"
 msgstr "Valoare imbricată prea adânc"
 
-#: gio/gdbusmessage.c:1687
+#: gio/gdbusmessage.c:1677
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus object path"
 msgstr "Valoarea parsată „%s” nu este o cale de obiect D-Bus validă"
 
-#: gio/gdbusmessage.c:1711
+#: gio/gdbusmessage.c:1701
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature"
 msgstr "Valoarea parsată „%s” nu este o semnătură D-Bus validă"
 
-#: gio/gdbusmessage.c:1762
+#: gio/gdbusmessage.c:1752
 #, c-format
 msgid ""
 "Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB)."
@@ -847,7 +856,7 @@ msgstr[2] ""
 "S-a întâlnit un șir cu lungimea de %u de octeți. Lungimea maximă este de "
 "2<<26 de octeți (64 MiB)."
 
-#: gio/gdbusmessage.c:1782
+#: gio/gdbusmessage.c:1772
 #, c-format
 msgid ""
 "Encountered array of type “a%c”, expected to have a length a multiple of %u "
@@ -856,16 +865,16 @@ msgstr ""
 "S-a întâlnit un șir de tipul „a%c”, se aștepta să aibă o lungime un multiplu "
 "de %u octeți, dar s-a constatat că are o lungime de %u octeți"
 
-#: gio/gdbusmessage.c:1936 gio/gdbusmessage.c:2655
+#: gio/gdbusmessage.c:1926 gio/gdbusmessage.c:2645
 msgid "Empty structures (tuples) are not allowed in D-Bus"
 msgstr "Structuri goale (tuple) nu sunt permise în D-Bus"
 
-#: gio/gdbusmessage.c:1990
+#: gio/gdbusmessage.c:1980
 #, c-format
 msgid "Parsed value “%s” for variant is not a valid D-Bus signature"
 msgstr "Valoarea parsată „%s” pentru variantă nu este o semnătură D-Bus validă"
 
-#: gio/gdbusmessage.c:2031
+#: gio/gdbusmessage.c:2021
 #, c-format
 msgid ""
 "Error deserializing GVariant with type string “%s” from the D-Bus wire format"
@@ -873,7 +882,7 @@ msgstr ""
 "Eroare la deserializarea GVariant cu șirul de tipul „%s” din formatul de "
 "rețea D-Bus"
 
-#: gio/gdbusmessage.c:2216
+#: gio/gdbusmessage.c:2206
 #, c-format
 msgid ""
 "Invalid endianness value. Expected 0x6c (“l”) or 0x42 (“B”) but found value "
@@ -882,28 +891,28 @@ msgstr ""
 "Valoare de endianness nevalidă. Se aștepta 0x6c („l”) sau 0x42 („B”), dar s-"
 "a găsit valoarea 0x%02x"
 
-#: gio/gdbusmessage.c:2235
+#: gio/gdbusmessage.c:2225
 #, c-format
 msgid "Invalid major protocol version. Expected 1 but found %d"
 msgstr "Versiune majoră de protocol nevalidă. Se aștepta 1 dar s-a găsit %d"
 
-#: gio/gdbusmessage.c:2293 gio/gdbusmessage.c:2891
+#: gio/gdbusmessage.c:2283 gio/gdbusmessage.c:2881
 msgid "Signature header found but is not of type signature"
 msgstr "Antet de semnătură găsit dar nu este de tipul semnătură"
 
-#: gio/gdbusmessage.c:2305
+#: gio/gdbusmessage.c:2295
 #, c-format
 msgid "Signature header with signature “%s” found but message body is empty"
 msgstr ""
 "S-a găsit un antet de semnătură cu semnătura „%s”, dar corpul mesajului este "
 "vid"
 
-#: gio/gdbusmessage.c:2320
+#: gio/gdbusmessage.c:2310
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature (for body)"
 msgstr "Valoarea parsată „%s” nu este o semnătură D-Bus validă (pentru corp)"
 
-#: gio/gdbusmessage.c:2352
+#: gio/gdbusmessage.c:2342
 #, 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"
@@ -917,11 +926,11 @@ msgstr[2] ""
 "Nu există niciun antet de semnătură în mesaj, dar corpul mesajului este de "
 "%u de octeți"
 
-#: gio/gdbusmessage.c:2362
+#: gio/gdbusmessage.c:2352
 msgid "Cannot deserialize message: "
 msgstr "Nu se poate deserializa mesajul: "
 
-#: gio/gdbusmessage.c:2708
+#: gio/gdbusmessage.c:2698
 #, c-format
 msgid ""
 "Error serializing GVariant with type string “%s” to the D-Bus wire format"
@@ -929,24 +938,24 @@ msgstr ""
 "Eroare la serializarea GVariant cu șirul de tipul „%s” în formatul de rețea "
 "D-Bus"
 
-#: gio/gdbusmessage.c:2845
+#: gio/gdbusmessage.c:2835
 #, c-format
 msgid ""
 "Number of file descriptors in message (%d) differs from header field (%d)"
 msgstr ""
 "Numărul de descriptori de fișier în mesaj (%d) diferă de câmpul de antet (%d)"
 
-#: gio/gdbusmessage.c:2853
+#: gio/gdbusmessage.c:2843
 msgid "Cannot serialize message: "
 msgstr "Nu se poate serializa mesajul: "
 
-#: gio/gdbusmessage.c:2906
+#: gio/gdbusmessage.c:2896
 #, c-format
 msgid "Message body has signature “%s” but there is no signature header"
 msgstr ""
 "Corpul mesajului are semnătura „%s”, dar nu există nicio semnătură de antet"
 
-#: gio/gdbusmessage.c:2916
+#: gio/gdbusmessage.c:2906
 #, c-format
 msgid ""
 "Message body has type signature “%s” but signature in the header field is "
@@ -955,53 +964,53 @@ msgstr ""
 "Corpul mesajului are semnătura „%s”, dar semnătura din câmpul de antet este "
 "„%s”"
 
-#: gio/gdbusmessage.c:2932
+#: gio/gdbusmessage.c:2922
 #, c-format
 msgid "Message body is empty but signature in the header field is “(%s)”"
 msgstr ""
 "Corpul mesajului este vid, dar semnătura din câmpul de antet este „(%s)”"
 
-#: gio/gdbusmessage.c:3487
+#: gio/gdbusmessage.c:3477
 #, c-format
 msgid "Error return with body of type “%s”"
 msgstr "Eroare la întoarcere cu corpul de tipul „%s”"
 
-#: gio/gdbusmessage.c:3495
+#: gio/gdbusmessage.c:3485
 msgid "Error return with empty body"
 msgstr "Rezultat de eroare cu corp vid"
 
-#: gio/gdbusprivate.c:2246
+#: gio/gdbusprivate.c:2185
 #, c-format
 msgid "(Type any character to close this window)\n"
 msgstr "(Tastați orice caracter pentru a închide această fereastră)\n"
 
-#: gio/gdbusprivate.c:2420
+#: gio/gdbusprivate.c:2371
 #, c-format
 msgid "Session dbus not running, and autolaunch failed"
 msgstr "Sesiunea dbus nu rulează, și lansarea automată a eșuat"
 
-#: gio/gdbusprivate.c:2443
+#: gio/gdbusprivate.c:2394
 #, c-format
 msgid "Unable to get Hardware profile: %s"
 msgstr "Nu se poate obține profilul hardware: %s"
 
 #. Translators: Both placeholders are file paths
-#: gio/gdbusprivate.c:2494
+#: gio/gdbusprivate.c:2445
 #, c-format
 msgid "Unable to load %s or %s: "
 msgstr "Nu s-a putut încărca %s sau %s: "
 
-#: gio/gdbusproxy.c:1569
+#: gio/gdbusproxy.c:1573
 #, c-format
 msgid "Error calling StartServiceByName for %s: "
 msgstr "Eroare la apelul StartServiceByName pentru %s: "
 
-#: gio/gdbusproxy.c:1592
+#: gio/gdbusproxy.c:1596
 #, c-format
 msgid "Unexpected reply %d from StartServiceByName(\"%s\") method"
 msgstr "Răspuns neașteptat %d de la metoda StartServiceByName(\"%s\")"
 
-#: gio/gdbusproxy.c:2699 gio/gdbusproxy.c:2834
+#: gio/gdbusproxy.c:2707 gio/gdbusproxy.c:2842
 #, c-format
 msgid ""
 "Cannot invoke method; proxy is for the well-known name %s without an owner, "
@@ -1059,13 +1068,13 @@ msgstr ""
 "comandă.\n"
 
 #: gio/gdbus-tool.c:201 gio/gdbus-tool.c:273 gio/gdbus-tool.c:345
-#: gio/gdbus-tool.c:369 gio/gdbus-tool.c:859 gio/gdbus-tool.c:1236
-#: gio/gdbus-tool.c:1724
+#: gio/gdbus-tool.c:369 gio/gdbus-tool.c:859 gio/gdbus-tool.c:1244
+#: gio/gdbus-tool.c:1732
 #, c-format
 msgid "Error: %s\n"
 msgstr "Eroare: %s\n"
 
-#: gio/gdbus-tool.c:212 gio/gdbus-tool.c:286 gio/gdbus-tool.c:1740
+#: gio/gdbus-tool.c:212 gio/gdbus-tool.c:286 gio/gdbus-tool.c:1748
 #, c-format
 msgid "Error parsing introspection XML: %s\n"
 msgstr "Eroare la parsarea introspecției XML: %s\n"
@@ -1077,8 +1086,8 @@ msgstr ""
 "Eroare: %s nu este un nume valid\n"
 "\n"
 
-#: gio/gdbus-tool.c:255 gio/gdbus-tool.c:745 gio/gdbus-tool.c:1060
-#: gio/gdbus-tool.c:1890 gio/gdbus-tool.c:2130
+#: gio/gdbus-tool.c:255 gio/gdbus-tool.c:745 gio/gdbus-tool.c:1063
+#: gio/gdbus-tool.c:1898 gio/gdbus-tool.c:2138
 #, c-format
 msgid "Error: %s is not a valid object path\n"
 msgstr "Eroare: calea %s către obiect nu este validă\n"
@@ -1145,8 +1154,8 @@ msgstr "Numele semnalului și interfeței"
 msgid "Emit a signal."
 msgstr "Emite un semnal."
 
-#: gio/gdbus-tool.c:683 gio/gdbus-tool.c:997 gio/gdbus-tool.c:1827
-#: gio/gdbus-tool.c:2059 gio/gdbus-tool.c:2279
+#: gio/gdbus-tool.c:683 gio/gdbus-tool.c:1000 gio/gdbus-tool.c:1835
+#: gio/gdbus-tool.c:2067 gio/gdbus-tool.c:2287
 #, c-format
 msgid "Error connecting: %s\n"
 msgstr "Eroare la conectare: %s\n"
@@ -1156,7 +1165,7 @@ msgstr "Eroare la conectare: %s\n"
 msgid "Error: %s is not a valid unique bus name.\n"
 msgstr "Eroare: %s nu este un nume de magistrală unic valid.\n"
 
-#: gio/gdbus-tool.c:722 gio/gdbus-tool.c:1040 gio/gdbus-tool.c:1870
+#: gio/gdbus-tool.c:722 gio/gdbus-tool.c:1043 gio/gdbus-tool.c:1878
 msgid "Error: Object path is not specified\n"
 msgstr "Eroare: calea către obiect nu a fost specificată\n"
 
@@ -1182,7 +1191,7 @@ msgid "Error: %s is not a valid member name\n"
 msgstr "Eroare: %s nu este un nume de membru valid\n"
 
 #. Use the original non-"parse-me-harder" error
-#: gio/gdbus-tool.c:834 gio/gdbus-tool.c:1172
+#: gio/gdbus-tool.c:834 gio/gdbus-tool.c:1175
 #, c-format
 msgid "Error parsing parameter %d: %s\n"
 msgstr "Eroare la parsarea parametrului %d: %s\n"
@@ -1192,104 +1201,108 @@ msgstr "Eroare la parsarea parametrului %d: %s\n"
 msgid "Error flushing connection: %s\n"
 msgstr "Eroare la golirea conexiunii: %s\n"
 
-#: gio/gdbus-tool.c:893
+#: gio/gdbus-tool.c:894
 msgid "Destination name to invoke method on"
 msgstr "Numele destinației pe care se va invoca metoda"
 
-#: gio/gdbus-tool.c:894
+#: gio/gdbus-tool.c:895
 msgid "Object path to invoke method on"
 msgstr "Calea către obiectul pe care se va invoca metoda"
 
-#: gio/gdbus-tool.c:895
+#: gio/gdbus-tool.c:896
 msgid "Method and interface name"
 msgstr "Metoda și numele interfeței"
 
-#: gio/gdbus-tool.c:896
+#: gio/gdbus-tool.c:897
 msgid "Timeout in seconds"
 msgstr "Limita de timp în secunde"
 
-#: gio/gdbus-tool.c:942
+#: gio/gdbus-tool.c:898
+msgid "Allow interactive authorization"
+msgstr "Permite autorizarea interactivă"
+
+#: gio/gdbus-tool.c:945
 msgid "Invoke a method on a remote object."
 msgstr "Invocă o metodă pe un obiect la distanță."
 
-#: gio/gdbus-tool.c:1014 gio/gdbus-tool.c:1844 gio/gdbus-tool.c:2084
+#: gio/gdbus-tool.c:1017 gio/gdbus-tool.c:1852 gio/gdbus-tool.c:2092
 msgid "Error: Destination is not specified\n"
 msgstr "Eroare: destinația nu a fost specificată\n"
 
-#: gio/gdbus-tool.c:1025 gio/gdbus-tool.c:1861 gio/gdbus-tool.c:2095
+#: gio/gdbus-tool.c:1028 gio/gdbus-tool.c:1869 gio/gdbus-tool.c:2103
 #, c-format
 msgid "Error: %s is not a valid bus name\n"
 msgstr ""
 "Eroare: %s nu este un nume de magistrală valid\n"
 "\n"
 
-#: gio/gdbus-tool.c:1075
+#: gio/gdbus-tool.c:1078
 msgid "Error: Method name is not specified\n"
 msgstr "Eroare: numele metodei nu a fost specificat\n"
 
-#: gio/gdbus-tool.c:1086
+#: gio/gdbus-tool.c:1089
 #, c-format
 msgid "Error: Method name “%s” is invalid\n"
 msgstr ""
 "Eroare: numele de metodă „%s” nu este valid\n"
 "\n"
 
-#: gio/gdbus-tool.c:1164
+#: gio/gdbus-tool.c:1167
 #, c-format
 msgid "Error parsing parameter %d of type “%s”: %s\n"
 msgstr "Eroare la parsarea parametrului %d cu tipul „%s”: %s\n"
 
-#: gio/gdbus-tool.c:1190
+#: gio/gdbus-tool.c:1193
 #, c-format
 msgid "Error adding handle %d: %s\n"
 msgstr "Eroare la adăugarea mânerului %d: %s\n"
 
-#: gio/gdbus-tool.c:1686
+#: gio/gdbus-tool.c:1694
 msgid "Destination name to introspect"
 msgstr "Numele destinației de introspectat"
 
-#: gio/gdbus-tool.c:1687
+#: gio/gdbus-tool.c:1695
 msgid "Object path to introspect"
 msgstr "Calea obiectului de introspectat"
 
-#: gio/gdbus-tool.c:1688
+#: gio/gdbus-tool.c:1696
 msgid "Print XML"
 msgstr "Afișează XML"
 
-#: gio/gdbus-tool.c:1689
+#: gio/gdbus-tool.c:1697
 msgid "Introspect children"
 msgstr "Introspectează inferiorii"
 
-#: gio/gdbus-tool.c:1690
+#: gio/gdbus-tool.c:1698
 msgid "Only print properties"
 msgstr "Tipărește doar proprietățile"
 
-#: gio/gdbus-tool.c:1779
+#: gio/gdbus-tool.c:1787
 msgid "Introspect a remote object."
 msgstr "Introspectează un obiect la distanță."
 
-#: gio/gdbus-tool.c:1985
+#: gio/gdbus-tool.c:1993
 msgid "Destination name to monitor"
 msgstr "Numele destinației de monitorizat"
 
-#: gio/gdbus-tool.c:1986
+#: gio/gdbus-tool.c:1994
 msgid "Object path to monitor"
 msgstr "Calea către obiectul de monitorizat"
 
-#: gio/gdbus-tool.c:2011
+#: gio/gdbus-tool.c:2019
 msgid "Monitor a remote object."
 msgstr "Monitorizează un obiect la distanță."
 
-#: gio/gdbus-tool.c:2069
+#: gio/gdbus-tool.c:2077
 msgid "Error: can’t monitor a non-message-bus connection\n"
 msgstr "Eroare: nu se poate monitoriza o conexiune non-magistrală-mesaj\n"
 
-#: gio/gdbus-tool.c:2193
+#: gio/gdbus-tool.c:2201
 msgid "Service to activate before waiting for the other one (well-known name)"
 msgstr ""
 "Serviciu de activat înainte de a-l aștepta pe celălalt (nume bine cunoscut)"
 
-#: gio/gdbus-tool.c:2196
+#: gio/gdbus-tool.c:2204
 msgid ""
 "Timeout to wait for before exiting with an error (seconds); 0 for no timeout "
 "(default)"
@@ -1297,65 +1310,70 @@ msgstr ""
 "Limita de timp de așteptat înainte de a ieși cu o eroare (secunde); 0 pentru "
 "nicio limită de timp (implicit)"
 
-#: gio/gdbus-tool.c:2244
+#: gio/gdbus-tool.c:2252
 msgid "[OPTION…] BUS-NAME"
 msgstr "[OPȚIUNE…] NUME-MAGISTRALĂ"
 
-#: gio/gdbus-tool.c:2245
+#: gio/gdbus-tool.c:2253
 msgid "Wait for a bus name to appear."
 msgstr "Așteaptă apariția unui nume de magistrală."
 
-#: gio/gdbus-tool.c:2321
+#: gio/gdbus-tool.c:2329
 msgid "Error: A service to activate for must be specified.\n"
 msgstr "Eroare: trebuie specificat un serviciu pentru care să se activeze.\n"
 
-#: gio/gdbus-tool.c:2326
+#: gio/gdbus-tool.c:2334
 msgid "Error: A service to wait for must be specified.\n"
 msgstr "Eroare: trebuie specificat un serviciu după care să se aștepte.\n"
 
-#: gio/gdbus-tool.c:2331
+#: gio/gdbus-tool.c:2339
 msgid "Error: Too many arguments.\n"
 msgstr "Eroare: prea multe argumente.\n"
 
-#: gio/gdbus-tool.c:2339 gio/gdbus-tool.c:2346
+#: gio/gdbus-tool.c:2347 gio/gdbus-tool.c:2354
 #, c-format
 msgid "Error: %s is not a valid well-known bus name.\n"
 msgstr "Eroare: %s nu este un nume de magistrală popular valid.\n"
 
-#: gio/gdesktopappinfo.c:2106 gio/gdesktopappinfo.c:4935
+#: gio/gdebugcontrollerdbus.c:357
+#, c-format
+msgid "Not authorized to change debug settings"
+msgstr "Neautorizat pentru a modifica configurările de depanare"
+
+#: gio/gdesktopappinfo.c:2174 gio/gdesktopappinfo.c:5101
 msgid "Unnamed"
 msgstr "Nedenumit"
 
-#: gio/gdesktopappinfo.c:2516
+#: gio/gdesktopappinfo.c:2584
 msgid "Desktop file didn’t specify Exec field"
 msgstr "Fișierul desktop nu a specificat un câmp Exec"
 
-#: gio/gdesktopappinfo.c:2804
+#: gio/gdesktopappinfo.c:2892
 msgid "Unable to find terminal required for application"
 msgstr "Nu s-a găsit un terminal pentru pornirea aplicației"
 
-#: gio/gdesktopappinfo.c:3455
+#: gio/gdesktopappinfo.c:3621
 #, c-format
 msgid "Can’t create user application configuration folder %s: %s"
 msgstr ""
 "Nu se poate crea dosarul de configurare pentru aplicațiile utilizatorului "
 "%s: %s"
 
-#: gio/gdesktopappinfo.c:3459
+#: gio/gdesktopappinfo.c:3625
 #, c-format
 msgid "Can’t create user MIME configuration folder %s: %s"
 msgstr "Nu se poate crea dosarul de configurare MIME al utilizatorului %s: %s"
 
-#: gio/gdesktopappinfo.c:3701 gio/gdesktopappinfo.c:3725
+#: gio/gdesktopappinfo.c:3867 gio/gdesktopappinfo.c:3891
 msgid "Application information lacks an identifier"
 msgstr "Informațiile despre aplicație nu au un indentificator"
 
-#: gio/gdesktopappinfo.c:3961
+#: gio/gdesktopappinfo.c:4127
 #, c-format
 msgid "Can’t create user desktop file %s"
 msgstr "Nu se poate crea fișierul desktop al utilizatorului %s"
 
-#: gio/gdesktopappinfo.c:4097
+#: gio/gdesktopappinfo.c:4263
 #, c-format
 msgid "Custom definition for %s"
 msgstr "Definiție personalizată pentru %s"
@@ -1384,7 +1402,7 @@ msgstr "unitatea nu implementează comanda start"
 msgid "drive doesn’t implement stop"
 msgstr "unitatea nu implementează comanda stop"
 
-#: gio/gdtlsconnection.c:1153 gio/gtlsconnection.c:920
+#: gio/gdtlsconnection.c:1186 gio/gtlsconnection.c:955
 msgid "TLS backend does not implement TLS binding retrieval"
 msgstr "Suportul TLS nu implementează obținerea legăturii TLS"
 
@@ -1425,77 +1443,77 @@ msgstr "Se aștepta un GEmblem pentru GEmblemedIcon"
 #. * trying to find the enclosing (user visible)
 #. * mount of a file, but none exists.
 #.
-#: gio/gfile.c:1561
+#: gio/gfile.c:1579
 msgid "Containing mount does not exist"
 msgstr "Montarea conținută nu există"
 
-#: gio/gfile.c:2608 gio/glocalfile.c:2486
+#: gio/gfile.c:2626 gio/glocalfile.c:2486
 msgid "Can’t copy over directory"
 msgstr "Nu se poate copia peste director"
 
-#: gio/gfile.c:2668
+#: gio/gfile.c:2686
 msgid "Can’t copy directory over directory"
 msgstr "Nu se poate copia un director peste alt director"
 
-#: gio/gfile.c:2676
+#: gio/gfile.c:2694
 msgid "Target file exists"
 msgstr "Fișierul destinație există deja"
 
-#: gio/gfile.c:2695
+#: gio/gfile.c:2713
 msgid "Can’t recursively copy directory"
 msgstr "Nu se poate copia recursiv directorul"
 
-#: gio/gfile.c:2996
+#: gio/gfile.c:3014
 msgid "Splice not supported"
 msgstr "Nu există suport pentru funcția splice"
 
-#: gio/gfile.c:3000
+#: gio/gfile.c:3018
 #, c-format
 msgid "Error splicing file: %s"
 msgstr "Eroare la aplicarea funcției „splice” fișierului: %s"
 
-#: gio/gfile.c:3152
+#: gio/gfile.c:3170
 msgid "Copy (reflink/clone) between mounts is not supported"
 msgstr "Copierea (reflink/clonarea) între două montări nu este suportată"
 
-#: gio/gfile.c:3156
+#: gio/gfile.c:3174
 msgid "Copy (reflink/clone) is not supported or invalid"
 msgstr ""
 "Copierea (legătura de referință/clonarea) nu este suportată sau nu este "
 "validă"
 
-#: gio/gfile.c:3161
+#: gio/gfile.c:3179
 msgid "Copy (reflink/clone) is not supported or didn’t work"
 msgstr ""
 "Copierea (legătura de referință/clonarea) nu este suportată sau nu a "
 "funcționat"
 
-#: gio/gfile.c:3226
+#: gio/gfile.c:3244
 msgid "Can’t copy special file"
 msgstr "Nu se poate copia fișierul special"
 
-#: gio/gfile.c:4035
+#: gio/gfile.c:4138
 msgid "Invalid symlink value given"
 msgstr "S-a primit o valoare incorectă pentru legătura simbolică"
 
-#: gio/gfile.c:4045 glib/gfileutils.c:2333
+#: gio/gfile.c:4148 glib/gfileutils.c:2333
 msgid "Symbolic links not supported"
 msgstr "Legăturile simbolice nu sunt implementate"
 
-#: gio/gfile.c:4213
+#: gio/gfile.c:4316
 msgid "Trash not supported"
 msgstr "Nu există o implementare pentru coșul de gunoi"
 
-#: gio/gfile.c:4325
+#: gio/gfile.c:4428
 #, c-format
 msgid "File names cannot contain “%c”"
 msgstr "Numele de fișiere nu pot conține „%c”"
 
-#: gio/gfile.c:6806 gio/gvolume.c:364
+#: gio/gfile.c:7028 gio/gvolume.c:364
 msgid "volume doesn’t implement mount"
 msgstr "volumul nu implementează montarea"
 
-#: gio/gfile.c:6920 gio/gfile.c:6968
+#: gio/gfile.c:7142 gio/gfile.c:7190
 msgid "No application is registered as handling this file"
 msgstr "Nu există o aplicație înregistrată pentru deschiderea acestui fișier"
 
@@ -1540,7 +1558,7 @@ msgstr "Nu se permite trunchierea fluxului de intrare"
 msgid "Truncate not supported on stream"
 msgstr "Trunchierea fluxului nu este implementată"
 
-#: gio/ghttpproxy.c:91 gio/gresolver.c:443 gio/gresolver.c:596
+#: gio/ghttpproxy.c:91 gio/gresolver.c:458 gio/gresolver.c:611
 #: glib/gconvert.c:1825
 msgid "Invalid hostname"
 msgstr "Nume nevalid"
@@ -1627,7 +1645,7 @@ msgid "Could not parse “%s” as IP address mask"
 msgstr "Nu s-a putut parsa „%s” ca mască de adresă IP"
 
 #: gio/ginetsocketaddress.c:203 gio/ginetsocketaddress.c:220
-#: gio/gnativesocketaddress.c:109 gio/gunixsocketaddress.c:221
+#: gio/gnativesocketaddress.c:109 gio/gunixsocketaddress.c:228
 msgid "Not enough space for socket address"
 msgstr "Spațiu insuficient pentru adresa socket-ului"
 
@@ -2483,15 +2501,15 @@ msgstr "Eroare la comprimarea fișierului %s"
 msgid "text may not appear inside <%s>"
 msgstr "textul nu are voie să apară în <%s>"
 
-#: gio/glib-compile-resources.c:737 gio/glib-compile-schemas.c:2172
+#: gio/glib-compile-resources.c:819 gio/glib-compile-schemas.c:2172
 msgid "Show program version and exit"
 msgstr "Arată versiunea programului și ieși"
 
-#: gio/glib-compile-resources.c:738
+#: gio/glib-compile-resources.c:820
 msgid "Name of the output file"
 msgstr "Numele fișierului de ieșire"
 
-#: gio/glib-compile-resources.c:739
+#: gio/glib-compile-resources.c:821
 msgid ""
 "The directories to load files referenced in FILE from (default: current "
 "directory)"
@@ -2499,56 +2517,60 @@ msgstr ""
 "Directoarele de unde se vor încărca fișierele referențiate în FILE "
 "(implicit: directorul curent)"
 
-#: gio/glib-compile-resources.c:739 gio/glib-compile-schemas.c:2173
+#: gio/glib-compile-resources.c:821 gio/glib-compile-schemas.c:2173
 #: gio/glib-compile-schemas.c:2202
 msgid "DIRECTORY"
 msgstr "DOSAR"
 
-#: gio/glib-compile-resources.c:740
+#: gio/glib-compile-resources.c:822
 msgid ""
 "Generate output in the format selected for by the target filename extension"
 msgstr ""
 "Generează rezultatul în formatul selectat de extensia numelui de fișier țintă"
 
-#: gio/glib-compile-resources.c:741
+#: gio/glib-compile-resources.c:823
 msgid "Generate source header"
 msgstr "Generează antetul sursei"
 
-#: gio/glib-compile-resources.c:742
+#: gio/glib-compile-resources.c:824
 msgid "Generate source code used to link in the resource file into your code"
 msgstr "Generează codul sursă utilizat pentru a lega fișierul resursă în cod"
 
-#: gio/glib-compile-resources.c:743
+#: gio/glib-compile-resources.c:825
 msgid "Generate dependency list"
 msgstr "Generează lista de dependențe"
 
-#: gio/glib-compile-resources.c:744
+#: gio/glib-compile-resources.c:826
 msgid "Name of the dependency file to generate"
 msgstr "Numele fișierului de dependențe de generat"
 
-#: gio/glib-compile-resources.c:745
+#: gio/glib-compile-resources.c:827
 msgid "Include phony targets in the generated dependency file"
 msgstr "Include țintele false în fișierul de dependențe generat"
 
-#: gio/glib-compile-resources.c:746
+#: gio/glib-compile-resources.c:828
 msgid "Don’t automatically create and register resource"
 msgstr "Nu crea și înregistra automat resursa"
 
-#: gio/glib-compile-resources.c:747
+#: gio/glib-compile-resources.c:829
 msgid "Don’t export functions; declare them G_GNUC_INTERNAL"
 msgstr "Nu exporta funcțiile; declară-le G_GNUC_INTERNAL"
 
-#: gio/glib-compile-resources.c:748
+#: gio/glib-compile-resources.c:830
 msgid ""
 "Don’t embed resource data in the C file; assume it's linked externally "
 "instead"
 msgstr "Nu îngloba date în fișierul C; presupuneți că este legat extern"
 
-#: gio/glib-compile-resources.c:749
+#: gio/glib-compile-resources.c:831
 msgid "C identifier name used for the generated source code"
 msgstr "Nume de identificator C utilizat pentru codul sursă generat"
 
-#: gio/glib-compile-resources.c:775
+#: gio/glib-compile-resources.c:832
+msgid "The target C compiler (default: the CC environment variable)"
+msgstr "Compilatorul C țintă (implicit: variabila de mediu CC)"
+
+#: gio/glib-compile-resources.c:858
 msgid ""
 "Compile a resource specification into a resource file.\n"
 "Resource specification files have the extension .gresource.xml,\n"
@@ -2558,7 +2580,7 @@ msgstr ""
 "Fișierele specificație de resursă au extensia .gresource.xml,\n"
 "iar fișierul resursă are extensia cu numele .gresource."
 
-#: gio/glib-compile-resources.c:797
+#: gio/glib-compile-resources.c:880
 msgid "You should give exactly one file name\n"
 msgstr "Ar trebui să furnizați exact un nume de fișier\n"
 
@@ -3372,7 +3394,7 @@ msgid "Error truncating file: %s"
 msgstr "Eroare la trunchierea fișierului: %s"
 
 #: gio/glocalfileoutputstream.c:662 gio/glocalfileoutputstream.c:907
-#: gio/glocalfileoutputstream.c:1218 gio/gsubprocess.c:226
+#: gio/glocalfileoutputstream.c:1218 gio/gsubprocess.c:229
 #, c-format
 msgid "Error opening file “%s”: %s"
 msgstr "Eroare la deschiderea fișierului „%s”: %s"
@@ -3394,7 +3416,7 @@ msgstr "Fișierul a fost modificat de o terță parte"
 msgid "Error removing old file: %s"
 msgstr "Eroare la ștergerea vechiului fișier: %s"
 
-#: gio/gmemoryinputstream.c:474 gio/gmemoryoutputstream.c:772
+#: gio/gmemoryinputstream.c:474 gio/gmemoryoutputstream.c:762
 msgid "Invalid GSeekType supplied"
 msgstr "S-a primit un GSeekType nevalid"
 
@@ -3406,15 +3428,15 @@ msgstr "Cerere de căutare nevalidă"
 msgid "Cannot truncate GMemoryInputStream"
 msgstr "Nu se poate trunchia GMemoryInputStream"
 
-#: gio/gmemoryoutputstream.c:567
+#: gio/gmemoryoutputstream.c:568
 msgid "Memory output stream not resizable"
 msgstr "Fluxul de ieșire al memoriei nu poate fi redimensionat"
 
-#: gio/gmemoryoutputstream.c:583
+#: gio/gmemoryoutputstream.c:584
 msgid "Failed to resize memory output stream"
 msgstr "Nu s-a putut redimensiona fluxul de ieșire al memoriei"
 
-#: gio/gmemoryoutputstream.c:673
+#: gio/gmemoryoutputstream.c:663
 msgid ""
 "Amount of memory required to process the write is larger than available "
 "address space"
@@ -3422,11 +3444,11 @@ msgstr ""
 "Cantitatea de memorie necesară pentru a procesa scrierea este mai mare decât "
 "spațiul de adrese disponibil"
 
-#: gio/gmemoryoutputstream.c:782
+#: gio/gmemoryoutputstream.c:772
 msgid "Requested seek before the beginning of the stream"
 msgstr "S-a cerut mutarea cursorului înaintea începutului fluxului"
 
-#: gio/gmemoryoutputstream.c:797
+#: gio/gmemoryoutputstream.c:787
 msgid "Requested seek beyond the end of the stream"
 msgstr "S-a cerut mutarea cursorului după sfârșitul fluxului"
 
@@ -3529,18 +3551,18 @@ msgstr "Suma vectorilor oferiți la %s este prea mare"
 msgid "Source stream is already closed"
 msgstr "Sursa fluxului este deja închisă"
 
-#: gio/gresolver.c:386 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
+#: gio/gresolver.c:401 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
 #, c-format
 msgid "Error resolving “%s”: %s"
 msgstr "Eroare la rezolvarea „%s”: %s"
 
 #. Translators: The placeholder is for a function name.
-#: gio/gresolver.c:455 gio/gresolver.c:615
+#: gio/gresolver.c:470 gio/gresolver.c:630
 #, c-format
 msgid "%s not implemented"
 msgstr "%s nu este implementat"
 
-#: gio/gresolver.c:984 gio/gresolver.c:1036
+#: gio/gresolver.c:999 gio/gresolver.c:1051
 msgid "Invalid domain"
 msgstr "Domeniu nevalid"
 
@@ -3655,7 +3677,7 @@ msgstr ""
 msgid "  SECTION   An (optional) elf section name\n"
 msgstr "  SECȚIUNE   Un nume (opțional) de secțiune elf\n"
 
-#: gio/gresource-tool.c:565 gio/gsettings-tool.c:706
+#: gio/gresource-tool.c:565 gio/gsettings-tool.c:718
 msgid "  COMMAND   The (optional) command to explain\n"
 msgstr "  COMANDĂ   Comandă (opțională) de explicat\n"
 
@@ -3687,7 +3709,7 @@ msgstr "CALE"
 msgid "  PATH      A resource path\n"
 msgstr "  CALE      O cale de resursă\n"
 
-#: gio/gsettings-tool.c:49 gio/gsettings-tool.c:70 gio/gsettings-tool.c:911
+#: gio/gsettings-tool.c:49 gio/gsettings-tool.c:70 gio/gsettings-tool.c:923
 #, c-format
 msgid "No such schema “%s”\n"
 msgstr "Nu există schema „%s”\n"
@@ -3718,35 +3740,35 @@ msgstr "Calea trebuie să se termine cu o bară oblică (/)\n"
 msgid "Path must not contain two adjacent slashes (//)\n"
 msgstr "Calea trebuie să nu conțină două bare oblice adiacente (//)\n"
 
-#: gio/gsettings-tool.c:541
+#: gio/gsettings-tool.c:553
 msgid "The provided value is outside of the valid range\n"
 msgstr "Valoarea furnizată este în afara intervalului valid\n"
 
-#: gio/gsettings-tool.c:548
+#: gio/gsettings-tool.c:560
 msgid "The key is not writable\n"
 msgstr "Cheia nu este inscripționabilă\n"
 
-#: gio/gsettings-tool.c:584
+#: gio/gsettings-tool.c:596
 msgid "List the installed (non-relocatable) schemas"
 msgstr "Listează schemele (nerelocalizabile) instalate"
 
-#: gio/gsettings-tool.c:590
+#: gio/gsettings-tool.c:602
 msgid "List the installed relocatable schemas"
 msgstr "Listează schemele relocalizabile instalate"
 
-#: gio/gsettings-tool.c:596
+#: gio/gsettings-tool.c:608
 msgid "List the keys in SCHEMA"
 msgstr "Listează cheile din SCHEMĂ"
 
-#: gio/gsettings-tool.c:597 gio/gsettings-tool.c:603 gio/gsettings-tool.c:646
+#: gio/gsettings-tool.c:609 gio/gsettings-tool.c:615 gio/gsettings-tool.c:658
 msgid "SCHEMA[:PATH]"
 msgstr "SCHEMĂ[:CALE]"
 
-#: gio/gsettings-tool.c:602
+#: gio/gsettings-tool.c:614
 msgid "List the children of SCHEMA"
 msgstr "Listează copiii SCHEMEI"
 
-#: gio/gsettings-tool.c:608
+#: gio/gsettings-tool.c:620
 msgid ""
 "List keys and values, recursively\n"
 "If no SCHEMA is given, list all keys\n"
@@ -3754,48 +3776,48 @@ msgstr ""
 "Listează chei și valori, recursiv\n"
 "Dacă nu a fost furnizată nicio SCHEMĂ, listează toate cheile\n"
 
-#: gio/gsettings-tool.c:610
+#: gio/gsettings-tool.c:622
 msgid "[SCHEMA[:PATH]]"
 msgstr "[SCHEMĂ[:CALE]]"
 
-#: gio/gsettings-tool.c:615
+#: gio/gsettings-tool.c:627
 msgid "Get the value of KEY"
 msgstr "Obține valoarea CHEII"
 
-#: gio/gsettings-tool.c:616 gio/gsettings-tool.c:622 gio/gsettings-tool.c:628
-#: gio/gsettings-tool.c:640 gio/gsettings-tool.c:652
+#: gio/gsettings-tool.c:628 gio/gsettings-tool.c:634 gio/gsettings-tool.c:640
+#: gio/gsettings-tool.c:652 gio/gsettings-tool.c:664
 msgid "SCHEMA[:PATH] KEY"
 msgstr "SCHEMĂ[:CALE] CHEIE"
 
-#: gio/gsettings-tool.c:621
+#: gio/gsettings-tool.c:633
 msgid "Query the range of valid values for KEY"
 msgstr "Interoghează intervalul valorilor valide pentru CHEIE"
 
-#: gio/gsettings-tool.c:627
+#: gio/gsettings-tool.c:639
 msgid "Query the description for KEY"
 msgstr "Interoghează descrierea pentru CHEIE"
 
-#: gio/gsettings-tool.c:633
+#: gio/gsettings-tool.c:645
 msgid "Set the value of KEY to VALUE"
 msgstr "Setează valoarea CHEII la VALOARE"
 
-#: gio/gsettings-tool.c:634
+#: gio/gsettings-tool.c:646
 msgid "SCHEMA[:PATH] KEY VALUE"
 msgstr "SCHEMĂ[:CALE] CHEIE VALOARE"
 
-#: gio/gsettings-tool.c:639
+#: gio/gsettings-tool.c:651
 msgid "Reset KEY to its default value"
 msgstr "Resetează CHEIA la valoarea ei implicită"
 
-#: gio/gsettings-tool.c:645
+#: gio/gsettings-tool.c:657
 msgid "Reset all keys in SCHEMA to their defaults"
 msgstr "Restabilește toate cheile în SCHEMA la valorile implicite"
 
-#: gio/gsettings-tool.c:651
+#: gio/gsettings-tool.c:663
 msgid "Check if KEY is writable"
 msgstr "Verifică dacă CHEIA poate fi scrisă"
 
-#: gio/gsettings-tool.c:657
+#: gio/gsettings-tool.c:669
 msgid ""
 "Monitor KEY for changes.\n"
 "If no KEY is specified, monitor all keys in SCHEMA.\n"
@@ -3806,11 +3828,11 @@ msgstr ""
 "SCHEMĂ.\n"
 "Folosiți ^C pentru a opri monitorizarea.\n"
 
-#: gio/gsettings-tool.c:660
+#: gio/gsettings-tool.c:672
 msgid "SCHEMA[:PATH] [KEY]"
 msgstr "SCHEMĂ[:CALE] [CHEIE]"
 
-#: gio/gsettings-tool.c:672
+#: gio/gsettings-tool.c:684
 msgid ""
 "Usage:\n"
 "  gsettings --version\n"
@@ -3858,7 +3880,7 @@ msgstr ""
 "Folosiți comanda „gsettings help COMANDĂ” pentru a obține ajutor detaliat.\n"
 "\n"
 
-#: gio/gsettings-tool.c:696
+#: gio/gsettings-tool.c:708
 #, c-format
 msgid ""
 "Usage:\n"
@@ -3873,11 +3895,11 @@ msgstr ""
 "%s\n"
 "\n"
 
-#: gio/gsettings-tool.c:702
+#: gio/gsettings-tool.c:714
 msgid "  SCHEMADIR A directory to search for additional schemas\n"
 msgstr "  SCHEMADIR Un director pentru căutarea de scheme adiționale\n"
 
-#: gio/gsettings-tool.c:710
+#: gio/gsettings-tool.c:722
 msgid ""
 "  SCHEMA    The name of the schema\n"
 "  PATH      The path, for relocatable schemas\n"
@@ -3885,215 +3907,215 @@ msgstr ""
 "  SCHEMĂ    Numele schemei\n"
 "  CALE      Calea, pentru schemele relocalizabile\n"
 
-#: gio/gsettings-tool.c:715
+#: gio/gsettings-tool.c:727
 msgid "  KEY       The (optional) key within the schema\n"
 msgstr "  CHEIE     Cheia (opțională) din schemă\n"
 
-#: gio/gsettings-tool.c:719
+#: gio/gsettings-tool.c:731
 msgid "  KEY       The key within the schema\n"
 msgstr "  CHEIE     Cheia din schemă\n"
 
-#: gio/gsettings-tool.c:723
+#: gio/gsettings-tool.c:735
 msgid "  VALUE     The value to set\n"
 msgstr "  VALOARE   Valoarea de setat\n"
 
-#: gio/gsettings-tool.c:778
+#: gio/gsettings-tool.c:790
 #, c-format
 msgid "Could not load schemas from %s: %s\n"
 msgstr "Nu s-au putut încărca schemele de la %s: %s\n"
 
-#: gio/gsettings-tool.c:790
+#: gio/gsettings-tool.c:802
 msgid "No schemas installed\n"
 msgstr "Nu sunt scheme instalate\n"
 
-#: gio/gsettings-tool.c:869
+#: gio/gsettings-tool.c:881
 msgid "Empty schema name given\n"
 msgstr "Numele schemei dat este gol \n"
 
-#: gio/gsettings-tool.c:924
+#: gio/gsettings-tool.c:936
 #, c-format
 msgid "No such key “%s”\n"
 msgstr "Nu există cheia „%s”\n"
 
-#: gio/gsocket.c:413
+#: gio/gsocket.c:417
 msgid "Invalid socket, not initialized"
 msgstr "Socket nevalid (neinițializat)"
 
-#: gio/gsocket.c:420
+#: gio/gsocket.c:424
 #, c-format
 msgid "Invalid socket, initialization failed due to: %s"
 msgstr "Socket nevalid, inițializarea a eșuat din următoarea cauză: %s"
 
-#: gio/gsocket.c:428
+#: gio/gsocket.c:432
 msgid "Socket is already closed"
 msgstr "Socket-ul este deja închis"
 
-#: gio/gsocket.c:443 gio/gsocket.c:3190 gio/gsocket.c:4420 gio/gsocket.c:4478
+#: gio/gsocket.c:447 gio/gsocket.c:3194 gio/gsocket.c:4427 gio/gsocket.c:4485
 msgid "Socket I/O timed out"
 msgstr "A expirat limita de timp la I/O pe socket"
 
-#: gio/gsocket.c:578
+#: gio/gsocket.c:582
 #, c-format
 msgid "creating GSocket from fd: %s"
 msgstr "se creează GSocket din fd: %s"
 
-#: gio/gsocket.c:607 gio/gsocket.c:671 gio/gsocket.c:678
+#: gio/gsocket.c:611 gio/gsocket.c:675 gio/gsocket.c:682
 #, c-format
 msgid "Unable to create socket: %s"
 msgstr "Nu s-a putut crea socket-ul: %s"
 
-#: gio/gsocket.c:671
+#: gio/gsocket.c:675
 msgid "Unknown family was specified"
 msgstr "S-a specificat o familie necunoscută"
 
-#: gio/gsocket.c:678
+#: gio/gsocket.c:682
 msgid "Unknown protocol was specified"
 msgstr "S-a specificat un protocol necunoscut"
 
-#: gio/gsocket.c:1169
+#: gio/gsocket.c:1173
 #, c-format
 msgid "Cannot use datagram operations on a non-datagram socket."
 msgstr "Nu se pot utiliza operațiile de datagramă pe un soclu non-datagramă."
 
-#: gio/gsocket.c:1186
+#: gio/gsocket.c:1190
 #, c-format
 msgid "Cannot use datagram operations on a socket with a timeout set."
 msgstr ""
 "Nu se pot utiliza operațiile de datagramă pe un soclu care are stabilită o "
 "limită de timp."
 
-#: gio/gsocket.c:1993
+#: gio/gsocket.c:1997
 #, c-format
 msgid "could not get local address: %s"
 msgstr "nu s-a putut obține adresa locală: %s"
 
-#: gio/gsocket.c:2039
+#: gio/gsocket.c:2043
 #, c-format
 msgid "could not get remote address: %s"
 msgstr "nu s-a putut obține adresa la distanță: %s"
 
-#: gio/gsocket.c:2105
+#: gio/gsocket.c:2109
 #, c-format
 msgid "could not listen: %s"
 msgstr "nu s-a putut asculta: %s"
 
-#: gio/gsocket.c:2209
+#: gio/gsocket.c:2213
 #, c-format
 msgid "Error binding to address %s: %s"
 msgstr "Eroare la asocierea adresei %s: %s"
 
-#: gio/gsocket.c:2385 gio/gsocket.c:2422 gio/gsocket.c:2532 gio/gsocket.c:2557
-#: gio/gsocket.c:2620 gio/gsocket.c:2678 gio/gsocket.c:2696
+#: gio/gsocket.c:2389 gio/gsocket.c:2426 gio/gsocket.c:2536 gio/gsocket.c:2561
+#: gio/gsocket.c:2624 gio/gsocket.c:2682 gio/gsocket.c:2700
 #, c-format
 msgid "Error joining multicast group: %s"
 msgstr "Eroare la alăturarea grupului multicast: %s"
 
-#: gio/gsocket.c:2386 gio/gsocket.c:2423 gio/gsocket.c:2533 gio/gsocket.c:2558
-#: gio/gsocket.c:2621 gio/gsocket.c:2679 gio/gsocket.c:2697
+#: gio/gsocket.c:2390 gio/gsocket.c:2427 gio/gsocket.c:2537 gio/gsocket.c:2562
+#: gio/gsocket.c:2625 gio/gsocket.c:2683 gio/gsocket.c:2701
 #, c-format
 msgid "Error leaving multicast group: %s"
 msgstr "Eroare la părăsirea grupului multicast: %s"
 
-#: gio/gsocket.c:2387
+#: gio/gsocket.c:2391
 msgid "No support for source-specific multicast"
 msgstr "Nu există niciun suport pentru difuzarea multiplă specifică sursei"
 
-#: gio/gsocket.c:2534
+#: gio/gsocket.c:2538
 msgid "Unsupported socket family"
 msgstr "Familie de soclu nesuportată"
 
-#: gio/gsocket.c:2559
+#: gio/gsocket.c:2563
 msgid "source-specific not an IPv4 address"
 msgstr "specific sursei nu o adresă IPv4"
 
-#: gio/gsocket.c:2583
+#: gio/gsocket.c:2587
 #, c-format
 msgid "Interface name too long"
 msgstr "Numele de interfață este prea lung"
 
-#: gio/gsocket.c:2596 gio/gsocket.c:2646
+#: gio/gsocket.c:2600 gio/gsocket.c:2650
 #, c-format
 msgid "Interface not found: %s"
 msgstr "Nu s-a putut găsi interfața: %s"
 
-#: gio/gsocket.c:2622
+#: gio/gsocket.c:2626
 msgid "No support for IPv4 source-specific multicast"
 msgstr ""
 "Nu există niciun suport pentru difuzarea multiplă specifică sursei IPv4"
 
-#: gio/gsocket.c:2680
+#: gio/gsocket.c:2684
 msgid "No support for IPv6 source-specific multicast"
 msgstr ""
 "Nu există niciun suport pentru difuzarea multiplă specifică sursei IPv6"
 
-#: gio/gsocket.c:2889
+#: gio/gsocket.c:2893
 #, c-format
 msgid "Error accepting connection: %s"
 msgstr "Eroare la acceptarea conexiunii: %s"
 
-#: gio/gsocket.c:3015
+#: gio/gsocket.c:3019
 msgid "Connection in progress"
 msgstr "Conectare în progres"
 
-#: gio/gsocket.c:3066
+#: gio/gsocket.c:3070
 msgid "Unable to get pending error: "
 msgstr "Nu se poate obține eroarea în așteptare: "
 
-#: gio/gsocket.c:3255
+#: gio/gsocket.c:3259
 #, c-format
 msgid "Error receiving data: %s"
 msgstr "Eroare la primirea datelor: %s"
 
-#: gio/gsocket.c:3452
+#: gio/gsocket.c:3456
 #, c-format
 msgid "Error sending data: %s"
 msgstr "Eroare la trimiterea datelor: %s"
 
-#: gio/gsocket.c:3639
+#: gio/gsocket.c:3643
 #, c-format
 msgid "Unable to shutdown socket: %s"
 msgstr "Nu se poate opri soclul: %s"
 
-#: gio/gsocket.c:3720
+#: gio/gsocket.c:3724
 #, c-format
 msgid "Error closing socket: %s"
 msgstr "Eroare la închiderea socket-ului: %s"
 
-#: gio/gsocket.c:4413
+#: gio/gsocket.c:4420
 #, c-format
 msgid "Waiting for socket condition: %s"
 msgstr "Se așteaptă condiția socket-ului: %s"
 
-#: gio/gsocket.c:4804 gio/gsocket.c:4820 gio/gsocket.c:4833
+#: gio/gsocket.c:4810 gio/gsocket.c:4826 gio/gsocket.c:4839
 #, c-format
 msgid "Unable to send message: %s"
 msgstr "Nu s-a putut trimite mesajul: %s"
 
-#: gio/gsocket.c:4805 gio/gsocket.c:4821 gio/gsocket.c:4834
+#: gio/gsocket.c:4811 gio/gsocket.c:4827 gio/gsocket.c:4840
 msgid "Message vectors too large"
 msgstr "Vectorii mesaj prea mari"
 
-#: gio/gsocket.c:4850 gio/gsocket.c:4852 gio/gsocket.c:4999 gio/gsocket.c:5084
-#: gio/gsocket.c:5262 gio/gsocket.c:5302 gio/gsocket.c:5304
+#: gio/gsocket.c:4856 gio/gsocket.c:4858 gio/gsocket.c:5005 gio/gsocket.c:5090
+#: gio/gsocket.c:5268 gio/gsocket.c:5308 gio/gsocket.c:5310
 #, c-format
 msgid "Error sending message: %s"
 msgstr "Eroare la trimiterea mesajului: %s"
 
-#: gio/gsocket.c:5026
+#: gio/gsocket.c:5032
 msgid "GSocketControlMessage not supported on Windows"
 msgstr "GSocketControlMessage nu este suportat pe Windows"
 
-#: gio/gsocket.c:5495 gio/gsocket.c:5571 gio/gsocket.c:5797
+#: gio/gsocket.c:5505 gio/gsocket.c:5581 gio/gsocket.c:5807
 #, c-format
 msgid "Error receiving message: %s"
 msgstr "Eroare la primirea mesajului: %s"
 
-#: gio/gsocket.c:6070 gio/gsocket.c:6081 gio/gsocket.c:6127
+#: gio/gsocket.c:6090 gio/gsocket.c:6101 gio/gsocket.c:6164
 #, c-format
 msgid "Unable to read socket credentials: %s"
 msgstr "Nu se pot citi certificările soclului: %s"
 
-#: gio/gsocket.c:6136
+#: gio/gsocket.c:6173
 msgid "g_socket_get_credentials not implemented for this OS"
 msgstr ""
 "g_socket_get_credentials nu este implementat pe acest sistem de operare"
@@ -4112,11 +4134,11 @@ msgstr "Nu s-a putut conecta la %s: "
 msgid "Could not connect: "
 msgstr "Nu s-a putut conecta: "
 
-#: gio/gsocketclient.c:1162 gio/gsocketclient.c:1749
+#: gio/gsocketclient.c:1202 gio/gsocketclient.c:1793
 msgid "Proxying over a non-TCP connection is not supported."
 msgstr "Nu se poate utiliza proxy peste o conexiune non-TCP."
 
-#: gio/gsocketclient.c:1194 gio/gsocketclient.c:1778
+#: gio/gsocketclient.c:1234 gio/gsocketclient.c:1822
 #, c-format
 msgid "Proxy protocol “%s” is not supported."
 msgstr "Protocolul proxy „%s” nu este suportat."
@@ -4218,7 +4240,7 @@ msgstr "Proxy-ul SOCKSv5 nu acceptă tipul de adresă furnizat."
 msgid "Unknown SOCKSv5 proxy error."
 msgstr "Eroare necunoscută a proxy-ului SOCKSv5."
 
-#: gio/gtestdbus.c:612 glib/gspawn-win32.c:311
+#: gio/gtestdbus.c:612 glib/gspawn-win32.c:314
 #, c-format
 msgid "Failed to create pipe for communicating with child process (%s)"
 msgstr ""
@@ -4260,27 +4282,31 @@ msgstr "Nu se poate rezolva temporar „%s”"
 msgid "Error resolving “%s”"
 msgstr "Eroare la rezolvarea „%s”"
 
-#: gio/gtlscertificate.c:431
+#: gio/gtlscertificate.c:478
 msgid "No PEM-encoded private key found"
 msgstr "Nu s-a găsit nicio cheie privată codată PEM"
 
-#: gio/gtlscertificate.c:441
+#: gio/gtlscertificate.c:488
 msgid "Cannot decrypt PEM-encoded private key"
 msgstr "Nu se poate decripta cheia privată codată PEM"
 
-#: gio/gtlscertificate.c:452
+#: gio/gtlscertificate.c:499
 msgid "Could not parse PEM-encoded private key"
 msgstr "Nu s-a putut parsa cheia privată codificată PEM"
 
-#: gio/gtlscertificate.c:479
+#: gio/gtlscertificate.c:526
 msgid "No PEM-encoded certificate found"
 msgstr "Nu s-a găsit niciun certificat codificat PEM"
 
-#: gio/gtlscertificate.c:488
+#: gio/gtlscertificate.c:535
 msgid "Could not parse PEM-encoded certificate"
 msgstr "Nu s-a putut parsa certificatul codificat PEM"
 
-#: gio/gtlscertificate.c:844
+#: gio/gtlscertificate.c:796
+msgid "The current TLS backend does not support PKCS #12"
+msgstr "Backendul TLS curent nu suportă PKCS #12"
+
+#: gio/gtlscertificate.c:1013
 msgid "This GTlsBackend does not support creating PKCS #11 certificates"
 msgstr "Acest GTlsBackend nu suportă crearea de certificate PKCS #11"
 
@@ -4306,7 +4332,11 @@ msgstr ""
 msgid "The password entered is incorrect."
 msgstr "Parola introdusă nu este corectă."
 
-#: gio/gunixconnection.c:166 gio/gunixconnection.c:579
+#: gio/gunixconnection.c:125
+msgid "Sending FD is not supported"
+msgstr "Trimiterea FD nu este suportată"
+
+#: gio/gunixconnection.c:178 gio/gunixconnection.c:596
 #, c-format
 msgid "Expecting 1 control message, got %d"
 msgid_plural "Expecting 1 control message, got %d"
@@ -4314,11 +4344,11 @@ msgstr[0] "S-a așteptat un mesaj de control, dar s-a primit %d"
 msgstr[1] "S-a așteptat un mesaj de control, dar s-au primit %d"
 msgstr[2] "S-a așteptat un mesaj de control, dar s-au primit %d"
 
-#: gio/gunixconnection.c:182 gio/gunixconnection.c:591
+#: gio/gunixconnection.c:194 gio/gunixconnection.c:608
 msgid "Unexpected type of ancillary data"
 msgstr "Tip neașteptat de date auxiliare"
 
-#: gio/gunixconnection.c:200
+#: gio/gunixconnection.c:212
 #, c-format
 msgid "Expecting one fd, but got %d\n"
 msgid_plural "Expecting one fd, but got %d\n"
@@ -4326,37 +4356,41 @@ msgstr[0] "S-a așteptat un fd, dar s-a primit %d\n"
 msgstr[1] "S-a așteptat un fd, dar s-a primit %d\n"
 msgstr[2] "S-a așteptat un fd, dar s-a primit %d\n"
 
-#: gio/gunixconnection.c:219
+#: gio/gunixconnection.c:231
 msgid "Received invalid fd"
 msgstr "S-a primit un fd nevalid"
 
-#: gio/gunixconnection.c:363
+#: gio/gunixconnection.c:238
+msgid "Receiving FD is not supported"
+msgstr "Primirea FD nu este suportată"
+
+#: gio/gunixconnection.c:380
 msgid "Error sending credentials: "
 msgstr "Eroare la trimiterea credențialelor: "
 
-#: gio/gunixconnection.c:520
+#: gio/gunixconnection.c:537
 #, c-format
 msgid "Error checking if SO_PASSCRED is enabled for socket: %s"
 msgstr "Eroare la verificarea dacă SO_PASSCRED este activat pe socket: %s"
 
-#: gio/gunixconnection.c:536
+#: gio/gunixconnection.c:553
 #, c-format
 msgid "Error enabling SO_PASSCRED: %s"
 msgstr "Eroare la activarea SO_PASSCRED: %s"
 
-#: gio/gunixconnection.c:565
+#: gio/gunixconnection.c:582
 msgid ""
 "Expecting to read a single byte for receiving credentials but read zero bytes"
 msgstr ""
 "Se aștepta să se citească un singur octet pentru a primi credențialele, dar "
 "s-au citi zero octeți"
 
-#: gio/gunixconnection.c:605
+#: gio/gunixconnection.c:622
 #, c-format
 msgid "Not expecting control message, but got %d"
 msgstr "Nu s-a așteptat un mesaj de control, dar s-a primit %d"
 
-#: gio/gunixconnection.c:630
+#: gio/gunixconnection.c:647
 #, c-format
 msgid "Error while disabling SO_PASSCRED: %s"
 msgstr "Eroare la dezactivarea SO_PASSCRED: %s"
@@ -4372,7 +4406,7 @@ msgstr "Eroare la citirea din descriptorul de fișier: %s"
 msgid "Error closing file descriptor: %s"
 msgstr "Eroare la închiderea descriptorului de fișier: %s"
 
-#: gio/gunixmounts.c:2785 gio/gunixmounts.c:2838
+#: gio/gunixmounts.c:2809 gio/gunixmounts.c:2862
 msgid "Filesystem root"
 msgstr "Rădăcina sistemului de fișiere"
 
@@ -4383,7 +4417,7 @@ msgstr "Rădăcina sistemului de fișiere"
 msgid "Error writing to file descriptor: %s"
 msgstr "Eroare la scrierea în descriptorul de fișier: %s"
 
-#: gio/gunixsocketaddress.c:244
+#: gio/gunixsocketaddress.c:251
 msgid "Abstract UNIX domain socket addresses not supported on this system"
 msgstr ""
 "Adresele de soclu abstracte pentru domeniul UNIX nu sunt suportate pe acest "
@@ -4535,8 +4569,8 @@ msgstr "Nu s-a putut extinde linia de exec „%s” cu URI-ul „%s”"
 msgid "Unrepresentable character in conversion input"
 msgstr "Caracter nereprezentabil în intrarea conversiei"
 
-#: glib/gconvert.c:495 glib/gutf8.c:871 glib/gutf8.c:1083 glib/gutf8.c:1220
-#: glib/gutf8.c:1324
+#: glib/gconvert.c:495 glib/gutf8.c:886 glib/gutf8.c:1099 glib/gutf8.c:1236
+#: glib/gutf8.c:1340
 msgid "Partial character sequence at end of input"
 msgstr "Secvență parțială de caractere la sfârșitul inputului"
 
@@ -5100,15 +5134,15 @@ msgstr "Canalul se termină cu un caracter parțial"
 msgid "Can’t do a raw read in g_io_channel_read_to_end"
 msgstr "Nu se poate efectua o citire brută în g_io_channel_read_to_end"
 
-#: glib/gkeyfile.c:791
+#: glib/gkeyfile.c:794
 msgid "Valid key file could not be found in search dirs"
 msgstr "Nu s-a găsit un fișier cheie valid în directoarele de căutare"
 
-#: glib/gkeyfile.c:828
+#: glib/gkeyfile.c:831
 msgid "Not a regular file"
 msgstr "Nu e un fișier obișnuit"
 
-#: glib/gkeyfile.c:1283
+#: glib/gkeyfile.c:1289
 #, c-format
 msgid ""
 "Key file contains line “%s” which is not a key-value pair, group, or comment"
@@ -5116,44 +5150,44 @@ msgstr ""
 "Fișierul cheii conține linia „%s” care nu este o pereche cheie-valoare, un "
 "grup, sau un comentariu"
 
-#: glib/gkeyfile.c:1340
+#: glib/gkeyfile.c:1346
 #, c-format
 msgid "Invalid group name: %s"
 msgstr "Nume incorect de grup: %s"
 
-#: glib/gkeyfile.c:1362
+#: glib/gkeyfile.c:1370
 msgid "Key file does not start with a group"
 msgstr "Fișierul cheie nu începe cu un grup"
 
-#: glib/gkeyfile.c:1388
+#: glib/gkeyfile.c:1394
 #, c-format
-msgid "Invalid key name: %s"
-msgstr "Nume incorect de cheie: %s"
+msgid "Invalid key name: %.*s"
+msgstr "Nume nevalid de cheie: %.*s"
 
-#: glib/gkeyfile.c:1415
+#: glib/gkeyfile.c:1422
 #, c-format
 msgid "Key file contains unsupported encoding “%s”"
 msgstr "Fișierul cheii conține codarea nesuportată „%s”"
 
-#: glib/gkeyfile.c:1664 glib/gkeyfile.c:1837 glib/gkeyfile.c:3287
-#: glib/gkeyfile.c:3351 glib/gkeyfile.c:3481 glib/gkeyfile.c:3613
-#: glib/gkeyfile.c:3759 glib/gkeyfile.c:3994 glib/gkeyfile.c:4061
+#: glib/gkeyfile.c:1677 glib/gkeyfile.c:1850 glib/gkeyfile.c:3297
+#: glib/gkeyfile.c:3361 glib/gkeyfile.c:3491 glib/gkeyfile.c:3623
+#: glib/gkeyfile.c:3769 glib/gkeyfile.c:4004 glib/gkeyfile.c:4071
 #, c-format
 msgid "Key file does not have group “%s”"
 msgstr "Fișierul cheii nu are grupul „%s”"
 
-#: glib/gkeyfile.c:1792
+#: glib/gkeyfile.c:1805
 #, c-format
 msgid "Key file does not have key “%s” in group “%s”"
 msgstr "Fișierul cheii nu are cheia „%s” în grupul „%s”"
 
-#: glib/gkeyfile.c:1954 glib/gkeyfile.c:2070
+#: glib/gkeyfile.c:1967 glib/gkeyfile.c:2083
 #, c-format
 msgid "Key file contains key “%s” with value “%s” which is not UTF-8"
 msgstr ""
 "Fișierul cheii conține cheia „%s”, cu valoarea „%s”, care nu este UTF-8"
 
-#: glib/gkeyfile.c:1974 glib/gkeyfile.c:2090 glib/gkeyfile.c:2529
+#: glib/gkeyfile.c:1987 glib/gkeyfile.c:2103 glib/gkeyfile.c:2542
 #, c-format
 msgid ""
 "Key file contains key “%s” which has a value that cannot be interpreted."
@@ -5161,7 +5195,7 @@ msgstr ""
 "Fișierul cheii conține cheia „%s” care are o valoare care nu se poate "
 "interpreta."
 
-#: glib/gkeyfile.c:2747 glib/gkeyfile.c:3116
+#: glib/gkeyfile.c:2757 glib/gkeyfile.c:3126
 #, c-format
 msgid ""
 "Key file contains key “%s” in group “%s” which has a value that cannot be "
@@ -5170,36 +5204,36 @@ msgstr ""
 "Fișierul cheie conține cheia „%s” în grupul „%s”, care are o valoare ce nu "
 "poate fi interpretată."
 
-#: glib/gkeyfile.c:2825 glib/gkeyfile.c:2902
+#: glib/gkeyfile.c:2835 glib/gkeyfile.c:2912
 #, c-format
 msgid "Key “%s” in group “%s” has value “%s” where %s was expected"
 msgstr "Cheia „%s” în grupul „%s” are valoarea „%s” unde %s a fost așteptat"
 
-#: glib/gkeyfile.c:4304
+#: glib/gkeyfile.c:4324
 msgid "Key file contains escape character at end of line"
 msgstr "Fișieul cheie conține caractere „escape” la sfârșit de linie"
 
-#: glib/gkeyfile.c:4326
+#: glib/gkeyfile.c:4346
 #, c-format
 msgid "Key file contains invalid escape sequence “%s”"
 msgstr "Fișierul cheie conține secvența de eludare nevalidă „%s”"
 
-#: glib/gkeyfile.c:4470
+#: glib/gkeyfile.c:4491
 #, c-format
 msgid "Value “%s” cannot be interpreted as a number."
 msgstr "Valoarea „%s” nu poate fi interpretată ca un număr."
 
-#: glib/gkeyfile.c:4484
+#: glib/gkeyfile.c:4505
 #, c-format
 msgid "Integer value “%s” out of range"
 msgstr "Valoarea întreagă „%s” este în afara limitelor"
 
-#: glib/gkeyfile.c:4517
+#: glib/gkeyfile.c:4538
 #, c-format
 msgid "Value “%s” cannot be interpreted as a float number."
 msgstr "Valoarea „%s” nu poate fi interpretată ca un număr rațional."
 
-#: glib/gkeyfile.c:4556
+#: glib/gkeyfile.c:4577
 #, c-format
 msgid "Value “%s” cannot be interpreted as a boolean."
 msgstr "Valoarea „%s” nu poate fi interpretată ca o valoare logică."
@@ -5504,7 +5538,7 @@ msgstr "Eroare la prelucrarea opțiunii %s"
 msgid "Missing argument for %s"
 msgstr "Argument lipsă pentru %s"
 
-#: glib/goption.c:2185
+#: glib/goption.c:2184
 #, c-format
 msgid "Unknown option %s"
 msgstr "Opțiune necunoscută %s"
@@ -5924,111 +5958,123 @@ msgstr "Eroare neașteptată la citirea datelor din procesul copil (%s)"
 msgid "Unexpected error in waitpid() (%s)"
 msgstr "Eroare neașteptată în waitpid() (%s)"
 
-#: glib/gspawn.c:1166 glib/gspawn-win32.c:1407
+#: glib/gspawn.c:1168 glib/gspawn-win32.c:1426
 #, c-format
 msgid "Child process exited with code %ld"
 msgstr "Procesul inferior a ieșit cu codul %ld"
 
-#: glib/gspawn.c:1174
+#: glib/gspawn.c:1176
 #, c-format
 msgid "Child process killed by signal %ld"
 msgstr "Procesul inferior a fost terminat de semnalul %ld"
 
-#: glib/gspawn.c:1181
+#: glib/gspawn.c:1183
 #, c-format
 msgid "Child process stopped by signal %ld"
 msgstr "Procesul inferior a fost oprit de semnalul %ld"
 
-#: glib/gspawn.c:1188
+#: glib/gspawn.c:1190
 #, c-format
 msgid "Child process exited abnormally"
 msgstr "Procesul inferior a ieșit în mod neobișnuit"
 
-#: glib/gspawn.c:1864 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
+#: glib/gspawn.c:1881 glib/gspawn-win32.c:353 glib/gspawn-win32.c:361
 #, c-format
 msgid "Failed to read from child pipe (%s)"
 msgstr "Nu s-au putut citi datele din conectorul „pipe” copil (%s)"
 
-#: glib/gspawn.c:2166
+#: glib/gspawn.c:2241
 #, c-format
 msgid "Failed to spawn child process “%s” (%s)"
 msgstr "Nu s-a putut crea procesul inferior „%s” (%s)"
 
-#: glib/gspawn.c:2283
+#: glib/gspawn.c:2358
 #, c-format
 msgid "Failed to fork (%s)"
 msgstr "Nu s-a putut clona procesul (%s)"
 
-#: glib/gspawn.c:2443 glib/gspawn-win32.c:381
+#: glib/gspawn.c:2518 glib/gspawn-win32.c:384
 #, c-format
 msgid "Failed to change to directory “%s” (%s)"
 msgstr "Nu s-a putut schimba la directorul „%s” (%s)"
 
-#: glib/gspawn.c:2453
+#: glib/gspawn.c:2528
 #, c-format
 msgid "Failed to execute child process “%s” (%s)"
 msgstr "Nu s-a putut executa procesul inferior „%s” (%s)"
 
-#: glib/gspawn.c:2463
+#: glib/gspawn.c:2538
 #, c-format
-msgid "Failed to redirect output or input of child process (%s)"
-msgstr "Nu s-a putut redirecta ieșirea sau inputul procesului copil (%s)"
+msgid "Failed to open file to remap file descriptor (%s)"
+msgstr ""
+"Nu s-a putut deschide fișierul pentru a recartografia descriptorul de "
+"fișiere (%s)"
 
-#: glib/gspawn.c:2472
+#: glib/gspawn.c:2546
+#, c-format
+msgid "Failed to duplicate file descriptor for child process (%s)"
+msgstr "Nu s-a putut duplica descriptorul de fișier pentru procesul copil (%s)"
+
+#: glib/gspawn.c:2555
 #, c-format
 msgid "Failed to fork child process (%s)"
 msgstr "Nu s-a putut clona procesul copil (%s)"
 
-#: glib/gspawn.c:2480
+#: glib/gspawn.c:2563
 #, c-format
 msgid "Failed to close file descriptor for child process (%s)"
 msgstr "Nu s-a putut închide descriptorul de fișier pentru procesul copil (%s)"
 
-#: glib/gspawn.c:2488
+#: glib/gspawn.c:2571
 #, c-format
 msgid "Unknown error executing child process “%s”"
 msgstr "Eroare necunoscută la executarea procesului inferior „%s”"
 
-#: glib/gspawn.c:2512
+#: glib/gspawn.c:2595
 #, c-format
 msgid "Failed to read enough data from child pid pipe (%s)"
 msgstr "Nu s-au putut citi date suficiente de la procesul copil (%s)"
 
-#: glib/gspawn-win32.c:294
+#: glib/gspawn-win32.c:297
 msgid "Failed to read data from child process"
 msgstr "Nu s-au putut citi datele de la procesul copil"
 
-#: glib/gspawn-win32.c:387 glib/gspawn-win32.c:392 glib/gspawn-win32.c:511
+#: glib/gspawn-win32.c:390 glib/gspawn-win32.c:395 glib/gspawn-win32.c:519
 #, c-format
 msgid "Failed to execute child process (%s)"
 msgstr "Nu s-a putut executa procesul copil (%s)"
 
-#: glib/gspawn-win32.c:461
+#: glib/gspawn-win32.c:400
+#, c-format
+msgid "Failed to dup() in child process (%s)"
+msgstr "Nu s-a putut clona «dup()» procesul copil (%s)"
+
+#: glib/gspawn-win32.c:469
 #, c-format
 msgid "Invalid program name: %s"
 msgstr "Nume incorect de program: %s"
 
-#: glib/gspawn-win32.c:471 glib/gspawn-win32.c:779
+#: glib/gspawn-win32.c:479 glib/gspawn-win32.c:797
 #, c-format
 msgid "Invalid string in argument vector at %d: %s"
 msgstr "Secvență incorectă în vectorul argumentului la %d: %s"
 
-#: glib/gspawn-win32.c:482 glib/gspawn-win32.c:794
+#: glib/gspawn-win32.c:490 glib/gspawn-win32.c:813
 #, c-format
 msgid "Invalid string in environment: %s"
 msgstr "Secvență incorectă în variabilele de mediu: %s"
 
-#: glib/gspawn-win32.c:775
+#: glib/gspawn-win32.c:793
 #, c-format
 msgid "Invalid working directory: %s"
 msgstr "Director curent nevalid: %s"
 
-#: glib/gspawn-win32.c:837
+#: glib/gspawn-win32.c:858
 #, c-format
 msgid "Failed to execute helper program (%s)"
 msgstr "Nu s-a putut porni programul asociat (%s)"
 
-#: glib/gspawn-win32.c:1064
+#: glib/gspawn-win32.c:1086
 msgid ""
 "Unexpected error in g_io_channel_win32_poll() reading data from a child "
 "process"
@@ -6036,21 +6082,21 @@ msgstr ""
 "Eroare neașteptată în g_io_channel_win32_poll() la citirea datelor de la "
 "procesul copil"
 
-#: glib/gstrfuncs.c:3345 glib/gstrfuncs.c:3447
+#: glib/gstrfuncs.c:3351 glib/gstrfuncs.c:3453
 msgid "Empty string is not a number"
 msgstr "Șirul gol nu este un număr"
 
-#: glib/gstrfuncs.c:3369
+#: glib/gstrfuncs.c:3375
 #, c-format
 msgid "“%s” is not a signed number"
 msgstr "„%s” nu este un număr negativ"
 
-#: glib/gstrfuncs.c:3379 glib/gstrfuncs.c:3483
+#: glib/gstrfuncs.c:3385 glib/gstrfuncs.c:3489
 #, c-format
 msgid "Number “%s” is out of bounds [%s, %s]"
 msgstr "Numărul „%s” se află în afara intervalului [%s, %s]"
 
-#: glib/gstrfuncs.c:3473
+#: glib/gstrfuncs.c:3479
 #, c-format
 msgid "“%s” is not an unsigned number"
 msgstr "„%s” nu este un număr pozitiv"
@@ -6111,168 +6157,168 @@ msgstr "URI-ul nu este absolut, și nu s-a furnizat nicio bază URI"
 msgid "Missing ‘=’ and parameter value"
 msgstr "Lipsește „=” și valoarea parametrului"
 
-#: glib/gutf8.c:817
+#: glib/gutf8.c:832
 msgid "Failed to allocate memory"
 msgstr "Nu s-a putut aloca memoria"
 
-#: glib/gutf8.c:950
+#: glib/gutf8.c:965
 msgid "Character out of range for UTF-8"
 msgstr "Caracter în afara limitelor standardului UTF-8"
 
-#: glib/gutf8.c:1051 glib/gutf8.c:1060 glib/gutf8.c:1190 glib/gutf8.c:1199
-#: glib/gutf8.c:1338 glib/gutf8.c:1435
+#: glib/gutf8.c:1067 glib/gutf8.c:1076 glib/gutf8.c:1206 glib/gutf8.c:1215
+#: glib/gutf8.c:1354 glib/gutf8.c:1451
 msgid "Invalid sequence in conversion input"
 msgstr "Secvență incorectă în inputul conversiei"
 
-#: glib/gutf8.c:1349 glib/gutf8.c:1446
+#: glib/gutf8.c:1365 glib/gutf8.c:1462
 msgid "Character out of range for UTF-16"
 msgstr "Caracter în afara limitelor standardului UTF-16"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2770
+#: glib/gutils.c:2849
 #, c-format
 msgid "%.1f kB"
 msgstr "%.1f kB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2772
+#: glib/gutils.c:2851
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2774
+#: glib/gutils.c:2853
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2776
+#: glib/gutils.c:2855
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2778
+#: glib/gutils.c:2857
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2780
+#: glib/gutils.c:2859
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2784
+#: glib/gutils.c:2863
 #, c-format
 msgid "%.1f KiB"
 msgstr "%.1f KiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2786
+#: glib/gutils.c:2865
 #, c-format
 msgid "%.1f MiB"
 msgstr "%.1f MiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2788
+#: glib/gutils.c:2867
 #, c-format
 msgid "%.1f GiB"
 msgstr "%.1f GiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2790
+#: glib/gutils.c:2869
 #, c-format
 msgid "%.1f TiB"
 msgstr "%.1f TiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2792
+#: glib/gutils.c:2871
 #, c-format
 msgid "%.1f PiB"
 msgstr "%.1f PiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2794
+#: glib/gutils.c:2873
 #, c-format
 msgid "%.1f EiB"
 msgstr "%.1f EiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2798
+#: glib/gutils.c:2877
 #, c-format
 msgid "%.1f kb"
 msgstr "%.1f kb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2800
+#: glib/gutils.c:2879
 #, c-format
 msgid "%.1f Mb"
 msgstr "%.1f Mb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2802
+#: glib/gutils.c:2881
 #, c-format
 msgid "%.1f Gb"
 msgstr "%.1f Gb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2804
+#: glib/gutils.c:2883
 #, c-format
 msgid "%.1f Tb"
 msgstr "%.1f Tb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2806
+#: glib/gutils.c:2885
 #, c-format
 msgid "%.1f Pb"
 msgstr "%.1f Pb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2808
+#: glib/gutils.c:2887
 #, c-format
 msgid "%.1f Eb"
 msgstr "%.1f Eb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2812
+#: glib/gutils.c:2891
 #, c-format
 msgid "%.1f Kib"
 msgstr "%.1f Kib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2814
+#: glib/gutils.c:2893
 #, c-format
 msgid "%.1f Mib"
 msgstr "%.1f Mib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2816
+#: glib/gutils.c:2895
 #, c-format
 msgid "%.1f Gib"
 msgstr "%.1f Gib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2818
+#: glib/gutils.c:2897
 #, c-format
 msgid "%.1f Tib"
 msgstr "%.1f Tib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2820
+#: glib/gutils.c:2899
 #, c-format
 msgid "%.1f Pib"
 msgstr "%.1f Pib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2822
+#: glib/gutils.c:2901
 #, c-format
 msgid "%.1f Eib"
 msgstr "%.1f Eib"
 
-#: glib/gutils.c:2856 glib/gutils.c:2973
+#: glib/gutils.c:2935 glib/gutils.c:3052
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
@@ -6280,7 +6326,7 @@ msgstr[0] "%u octet"
 msgstr[1] "%u octeți"
 msgstr[2] "%u de octeți"
 
-#: glib/gutils.c:2860
+#: glib/gutils.c:2939
 #, c-format
 msgid "%u bit"
 msgid_plural "%u bits"
@@ -6289,7 +6335,7 @@ msgstr[1] "%u biți"
 msgstr[2] "%u de biți"
 
 #. Translators: the %s in "%s bytes" will always be replaced by a number.
-#: glib/gutils.c:2927
+#: glib/gutils.c:3006
 #, c-format
 msgid "%s byte"
 msgid_plural "%s bytes"
@@ -6298,7 +6344,7 @@ msgstr[1] "%s octeți"
 msgstr[2] "%s de octeți"
 
 #. Translators: the %s in "%s bits" will always be replaced by a number.
-#: glib/gutils.c:2932
+#: glib/gutils.c:3011
 #, c-format
 msgid "%s bit"
 msgid_plural "%s bits"
@@ -6311,36 +6357,39 @@ msgstr[2] "%s de biți"
 #. * compatibility.  Users will not see this string unless a program is using this deprecated function.
 #. * Please translate as literally as possible.
 #.
-#: glib/gutils.c:2986
+#: glib/gutils.c:3065
 #, c-format
 msgid "%.1f KB"
 msgstr "%.1f KB"
 
-#: glib/gutils.c:2991
+#: glib/gutils.c:3070
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
-#: glib/gutils.c:2996
+#: glib/gutils.c:3075
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
-#: glib/gutils.c:3001
+#: glib/gutils.c:3080
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
-#: glib/gutils.c:3006
+#: glib/gutils.c:3085
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
-#: glib/gutils.c:3011
+#: glib/gutils.c:3090
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
+#~ msgid "Failed to redirect output or input of child process (%s)"
+#~ msgstr "Nu s-a putut redirecta ieșirea sau inputul procesului copil (%s)"
+
 #~ msgid "Unable to load /var/lib/dbus/machine-id or /etc/machine-id: "
 #~ msgstr "Nu se poate încărca /var/lib/dbus/machine-id sau /etc/machine-id: "
 
index a6fd4c9..31a5f54 100644 (file)
--- a/po/ru.po
+++ b/po/ru.po
@@ -16,8 +16,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: ru\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/glib/issues\n"
-"POT-Creation-Date: 2022-01-26 14:31+0000\n"
-"PO-Revision-Date: 2022-01-26 20:42+0300\n"
+"POT-Creation-Date: 2022-04-08 12:19+0000\n"
+"PO-Revision-Date: 2022-04-08 15:24+0300\n"
 "Last-Translator: Aleksandr Melman <Alexmelman88@gmail.com>\n"
 "Language-Team: Русский <gnome-cyr@gnome.org>\n"
 "Language: ru\n"
@@ -26,7 +26,17 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
 "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
-"X-Generator: Poedit 3.0\n"
+"X-Generator: Poedit 3.0.1\n"
+
+#: gio/gappinfo.c:333
+msgid "Setting default applications not supported yet"
+msgstr "Установка приложений по умолчанию пока не поддерживается"
+
+#: gio/gappinfo.c:366
+msgid "Setting application as last used for type not supported yet"
+msgstr ""
+"Установка приложения как последнего использованного для типа файла, который "
+"еще не поддерживается"
 
 #: gio/gapplication.c:500
 msgid "GApplication options"
@@ -51,7 +61,7 @@ msgid "Replace the running instance"
 msgstr "Заменить запущенный экземпляр"
 
 #: gio/gapplication-tool.c:45 gio/gapplication-tool.c:46 gio/gio-tool.c:227
-#: gio/gresource-tool.c:494 gio/gsettings-tool.c:572
+#: gio/gresource-tool.c:494 gio/gsettings-tool.c:584
 msgid "Print help"
 msgstr "Напечатать справку"
 
@@ -63,7 +73,7 @@ msgstr "[КОМАНДА]"
 msgid "Print version"
 msgstr "Вывести номер верии"
 
-#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:578
+#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:590
 msgid "Print version information and exit"
 msgstr "Вывести информацию о версии и выйти"
 
@@ -126,8 +136,8 @@ msgstr "Команда, по которой выводится подробна
 msgid "Application identifier in D-Bus format (eg: org.example.viewer)"
 msgstr "Идентификатор приложения в формате D-Bus (напр.: org.example.viewer)"
 
-#: gio/gapplication-tool.c:74 gio/glib-compile-resources.c:738
-#: gio/glib-compile-resources.c:744 gio/glib-compile-resources.c:772
+#: gio/gapplication-tool.c:74 gio/glib-compile-resources.c:820
+#: gio/glib-compile-resources.c:826 gio/glib-compile-resources.c:855
 #: gio/gresource-tool.c:501 gio/gresource-tool.c:567
 msgid "FILE"
 msgstr "ФАЙЛ"
@@ -154,7 +164,7 @@ msgstr "ПАРАМЕТР"
 msgid "Optional parameter to the action invocation, in GVariant format"
 msgstr "Необязательный параметр для вызова действия в формате GVariant"
 
-#: gio/gapplication-tool.c:98 gio/gresource-tool.c:532 gio/gsettings-tool.c:664
+#: gio/gapplication-tool.c:98 gio/gresource-tool.c:532 gio/gsettings-tool.c:676
 #, c-format
 msgid ""
 "Unknown command %s\n"
@@ -168,7 +178,7 @@ msgid "Usage:\n"
 msgstr "Использование:\n"
 
 #: gio/gapplication-tool.c:116 gio/gresource-tool.c:557
-#: gio/gsettings-tool.c:699
+#: gio/gsettings-tool.c:711
 msgid "Arguments:\n"
 msgstr "Аргументы:\n"
 
@@ -291,7 +301,7 @@ msgstr "Поток уже закрыт"
 msgid "Truncate not supported on base stream"
 msgstr "Усечение не поддерживается в базовом потоке"
 
-#: gio/gcancellable.c:319 gio/gdbusconnection.c:1873 gio/gdbusprivate.c:1416
+#: gio/gcancellable.c:319 gio/gdbusconnection.c:1857 gio/gdbusprivate.c:1418
 #: gio/gsimpleasyncresult.c:871 gio/gsimpleasyncresult.c:897
 #, c-format
 msgid "Operation was cancelled"
@@ -312,7 +322,7 @@ msgstr "Недостаточно места в целевом расположе
 #: gio/gcharsetconverter.c:342 gio/gdatainputstream.c:848
 #: gio/gdatainputstream.c:1266 glib/gconvert.c:449 glib/gconvert.c:879
 #: glib/giochannel.c:1573 glib/giochannel.c:1615 glib/giochannel.c:2470
-#: glib/gutf8.c:875 glib/gutf8.c:1328
+#: glib/gutf8.c:890 glib/gutf8.c:1344
 msgid "Invalid byte sequence in conversion input"
 msgstr "Недопустимая последовательность байтов во входных преобразуемых данных"
 
@@ -322,7 +332,7 @@ msgstr "Недопустимая последовательность байто
 msgid "Error during conversion: %s"
 msgstr "Произошла ошибка при преобразовании: %s"
 
-#: gio/gcharsetconverter.c:445 gio/gsocket.c:1143
+#: gio/gcharsetconverter.c:445 gio/gsocket.c:1147
 msgid "Cancellable initialization not supported"
 msgstr "Прерываемая инициализация не поддерживается"
 
@@ -336,37 +346,37 @@ msgstr "Преобразование из набора символов «%s» 
 msgid "Could not open converter from “%s” to “%s”"
 msgstr "Не удалось открыть преобразователь из «%s» в «%s»"
 
-#: gio/gcontenttype.c:454
+#: gio/gcontenttype.c:470
 #, c-format
 msgid "%s type"
 msgstr "Тип %s"
 
-#: gio/gcontenttype-win32.c:192
+#: gio/gcontenttype-win32.c:196
 msgid "Unknown type"
 msgstr "Неизвестный тип"
 
-#: gio/gcontenttype-win32.c:194
+#: gio/gcontenttype-win32.c:198
 #, c-format
 msgid "%s filetype"
 msgstr "Тип файлов %s"
 
-#: gio/gcredentials.c:323
+#: gio/gcredentials.c:335
 msgid "GCredentials contains invalid data"
 msgstr "Объект GCredentials содержит некорректные данные"
 
-#: gio/gcredentials.c:383 gio/gcredentials.c:667
+#: gio/gcredentials.c:395 gio/gcredentials.c:686
 msgid "GCredentials is not implemented on this OS"
 msgstr "Тип GCredentials не реализован для этой ОС"
 
-#: gio/gcredentials.c:538 gio/gcredentials.c:556
+#: gio/gcredentials.c:550 gio/gcredentials.c:568
 msgid "There is no GCredentials support for your platform"
 msgstr "Поддержка GCredentials для вашей платформы отсутствует"
 
-#: gio/gcredentials.c:607
+#: gio/gcredentials.c:626
 msgid "GCredentials does not contain a process ID on this OS"
 msgstr "Тип GCredentials не содержит идентификатора процесса для этой ОС"
 
-#: gio/gcredentials.c:661
+#: gio/gcredentials.c:680
 msgid "Credentials spoofing is not possible on this OS"
 msgstr "Спуфинг учётных данных невозможен в этой ОС"
 
@@ -374,17 +384,17 @@ msgstr "Спуфинг учётных данных невозможен в эт
 msgid "Unexpected early end-of-stream"
 msgstr "Неожиданный ранний конец потока"
 
-#: gio/gdbusaddress.c:159 gio/gdbusaddress.c:233 gio/gdbusaddress.c:322
+#: gio/gdbusaddress.c:162 gio/gdbusaddress.c:236 gio/gdbusaddress.c:325
 #, c-format
 msgid "Unsupported key “%s” in address entry “%s”"
 msgstr "Неподдерживаемый ключ «%s» в элементе адреса «%s»"
 
-#: gio/gdbusaddress.c:172
+#: gio/gdbusaddress.c:175
 #, c-format
 msgid "Meaningless key/value pair combination in address entry “%s”"
 msgstr "Бессмысленная комбинация ключ/значение в элементе адреса «%s»"
 
-#: gio/gdbusaddress.c:181
+#: gio/gdbusaddress.c:184
 #, c-format
 msgid ""
 "Address “%s” is invalid (need exactly one of path, dir, tmpdir, or abstract "
@@ -393,28 +403,28 @@ msgstr ""
 "Неправильный адрес «%s» (требуется путь, временный каталог или один из "
 "абстрактных ключей)"
 
-#: gio/gdbusaddress.c:248 gio/gdbusaddress.c:259 gio/gdbusaddress.c:274
-#: gio/gdbusaddress.c:337 gio/gdbusaddress.c:348
+#: gio/gdbusaddress.c:251 gio/gdbusaddress.c:262 gio/gdbusaddress.c:277
+#: gio/gdbusaddress.c:340 gio/gdbusaddress.c:351
 #, c-format
 msgid "Error in address “%s” — the “%s” attribute is malformed"
 msgstr "Ошибка в адресе «%s» — неправильный формат атрибута «%s»"
 
-#: gio/gdbusaddress.c:418 gio/gdbusaddress.c:682
+#: gio/gdbusaddress.c:421 gio/gdbusaddress.c:680
 #, c-format
 msgid "Unknown or unsupported transport “%s” for address “%s”"
 msgstr "Неизвестный или неподдерживаемый транспорт «%s» для адреса «%s»"
 
-#: gio/gdbusaddress.c:462
+#: gio/gdbusaddress.c:465
 #, c-format
 msgid "Address element “%s” does not contain a colon (:)"
 msgstr "В элементе адреса «%s» отсутствует двоеточие (:)"
 
-#: gio/gdbusaddress.c:471
+#: gio/gdbusaddress.c:474
 #, c-format
 msgid "Transport name in address element “%s” must not be empty"
 msgstr "Название протокола в элементе адреса “%s” не должен быть пустым"
 
-#: gio/gdbusaddress.c:492
+#: gio/gdbusaddress.c:495
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” does not contain an equal "
@@ -423,7 +433,7 @@ msgstr ""
 "Пара ключ/значение %d, «%s», в элементе адреса «%s» не содержит знака "
 "равенства"
 
-#: gio/gdbusaddress.c:503
+#: gio/gdbusaddress.c:506
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” must not have an empty key"
@@ -431,7 +441,7 @@ msgstr ""
 "Пара ключ/значение %d, «%s», в элементе адреса «%s» не должна иметь пустого "
 "ключа"
 
-#: gio/gdbusaddress.c:517
+#: gio/gdbusaddress.c:520
 #, c-format
 msgid ""
 "Error unescaping key or value in Key/Value pair %d, “%s”, in address element "
@@ -440,7 +450,7 @@ msgstr ""
 "Ошибка снятия экранирования ключа или значения в паре ключ/значение %d, "
 "«%s», в элементе адреса «%s»"
 
-#: gio/gdbusaddress.c:589
+#: gio/gdbusaddress.c:588
 #, c-format
 msgid ""
 "Error in address “%s” — the unix transport requires exactly one of the keys "
@@ -449,82 +459,82 @@ msgstr ""
 "Ошибка в адресе «%s» — для транспорта unix требуется только один "
 "установленный ключ «path» или «abstract»"
 
-#: gio/gdbusaddress.c:625
+#: gio/gdbusaddress.c:623
 #, c-format
 msgid "Error in address “%s” — the host attribute is missing or malformed"
 msgstr ""
 "Ошибка в адресе «%s» — атрибут узла отсутствует или имеет неправильный формат"
 
-#: gio/gdbusaddress.c:639
+#: gio/gdbusaddress.c:637
 #, c-format
 msgid "Error in address “%s” — the port attribute is missing or malformed"
 msgstr ""
 "Ошибка в адресе «%s» — атрибут порта отсутствует или имеет неправильный "
 "формат"
 
-#: gio/gdbusaddress.c:653
+#: gio/gdbusaddress.c:651
 #, c-format
 msgid "Error in address “%s” — the noncefile attribute is missing or malformed"
 msgstr ""
 "Ошибка в адресе «%s» — атрибут noncefile отсутствует или имеет неправильный "
 "формат"
 
-#: gio/gdbusaddress.c:674
+#: gio/gdbusaddress.c:672
 msgid "Error auto-launching: "
 msgstr "Ошибка автоматического запуска: "
 
-#: gio/gdbusaddress.c:727
+#: gio/gdbusaddress.c:725
 #, c-format
 msgid "Error opening nonce file “%s”: %s"
 msgstr "Произошла ошибка при открытии nonce-файла «%s»: %s"
 
-#: gio/gdbusaddress.c:746
+#: gio/gdbusaddress.c:744
 #, c-format
 msgid "Error reading from nonce file “%s”: %s"
 msgstr "Произошла ошибка при чтении nonce-файла «%s»: %s"
 
-#: gio/gdbusaddress.c:755
+#: gio/gdbusaddress.c:753
 #, c-format
 msgid "Error reading from nonce file “%s”, expected 16 bytes, got %d"
 msgstr ""
 "Произошла ошибка при чтении nonce-файла «%s», ожидалось 16 байт, получено %d"
 
-#: gio/gdbusaddress.c:773
+#: gio/gdbusaddress.c:771
 #, c-format
 msgid "Error writing contents of nonce file “%s” to stream:"
 msgstr "Произошла ошибка записи содержимого nonce-файла «%s» в поток:"
 
-#: gio/gdbusaddress.c:988
+#: gio/gdbusaddress.c:986
 msgid "The given address is empty"
 msgstr "Указанный адрес пуст"
 
-#: gio/gdbusaddress.c:1101
+#: gio/gdbusaddress.c:1099
 #, c-format
-msgid "Cannot spawn a message bus when setuid"
+msgid "Cannot spawn a message bus when AT_SECURE is set"
 msgstr ""
-"Невозможно породить процесс шины сообщений, если установлен атрибут setuid"
+"Невозможно создать шину сообщений, когда установлено значение AT_SECURE"
 
-#: gio/gdbusaddress.c:1108
+#: gio/gdbusaddress.c:1106
 msgid "Cannot spawn a message bus without a machine-id: "
 msgstr "Невозможно породить процесс шины сообщений без идентификатора машины: "
 
-#: gio/gdbusaddress.c:1115
+#: gio/gdbusaddress.c:1113
 #, c-format
 msgid "Cannot autolaunch D-Bus without X11 $DISPLAY"
 msgstr "Невозможно автоматически запустить D-Bus без X11 $DISPLAY"
 
-#: gio/gdbusaddress.c:1157
+#: gio/gdbusaddress.c:1155
 #, c-format
 msgid "Error spawning command line “%s”: "
 msgstr "Произошла ошибка при создании процесса командной строки «%s»: "
 
-#: gio/gdbusaddress.c:1226
+#: gio/gdbusaddress.c:1224
 #, c-format
 msgid "Cannot determine session bus address (not implemented for this OS)"
 msgstr ""
 "Не удалось определить адрес сеансовой шины (не реализовано для этой ОС)"
 
-#: gio/gdbusaddress.c:1375 gio/gdbusconnection.c:7334
+#: gio/gdbusaddress.c:1373 gio/gdbusconnection.c:7318
 #, c-format
 msgid ""
 "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
@@ -533,7 +543,7 @@ msgstr ""
 "Не удалось определить адрес шины из значения переменной окружения "
 "DBUS_STARTER_BUS_TYPE — неизвестное значение «%s»"
 
-#: gio/gdbusaddress.c:1384 gio/gdbusconnection.c:7343
+#: gio/gdbusaddress.c:1382 gio/gdbusconnection.c:7327
 msgid ""
 "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
 "variable is not set"
@@ -541,7 +551,7 @@ msgstr ""
 "Не удалось определить адрес шины, т. к. значение переменной окружения "
 "DBUS_STARTER_BUS_TYPE не установлено"
 
-#: gio/gdbusaddress.c:1394
+#: gio/gdbusaddress.c:1392
 #, c-format
 msgid "Unknown bus type %d"
 msgstr "Неизвестный тип шины %d"
@@ -570,43 +580,43 @@ msgstr "Идентификаторы пользователя должны бы
 msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
 msgstr "Отменено через GDBusAuthObserver::authorize-authenticated-peer"
 
-#: gio/gdbusauthmechanismsha1.c:298
+#: gio/gdbusauthmechanismsha1.c:300
 #, c-format
 msgid "Error when getting information for directory “%s”: %s"
 msgstr "Ошибка при получении информации о каталоге «%s»: %s"
 
-#: gio/gdbusauthmechanismsha1.c:313
+#: gio/gdbusauthmechanismsha1.c:315
 #, c-format
 msgid ""
 "Permissions on directory “%s” are malformed. Expected mode 0700, got 0%o"
 msgstr "Ошибочные права на каталог «%s». Ожидалось 0700, получено 0%o"
 
-#: gio/gdbusauthmechanismsha1.c:346 gio/gdbusauthmechanismsha1.c:357
+#: gio/gdbusauthmechanismsha1.c:348 gio/gdbusauthmechanismsha1.c:359
 #, c-format
 msgid "Error creating directory “%s”: %s"
 msgstr "Произошла ошибка при создании каталога «%s»: %s"
 
-#: gio/gdbusauthmechanismsha1.c:359 gio/gfile.c:1062 gio/gfile.c:1300
-#: gio/gfile.c:1438 gio/gfile.c:1676 gio/gfile.c:1731 gio/gfile.c:1789
-#: gio/gfile.c:1873 gio/gfile.c:1930 gio/gfile.c:1994 gio/gfile.c:2049
-#: gio/gfile.c:3754 gio/gfile.c:3809 gio/gfile.c:4102 gio/gfile.c:4572
-#: gio/gfile.c:4983 gio/gfile.c:5068 gio/gfile.c:5158 gio/gfile.c:5255
-#: gio/gfile.c:5342 gio/gfile.c:5443 gio/gfile.c:8153 gio/gfile.c:8243
-#: gio/gfile.c:8327 gio/win32/gwinhttpfile.c:453
+#: gio/gdbusauthmechanismsha1.c:361 gio/gfile.c:1080 gio/gfile.c:1318
+#: gio/gfile.c:1456 gio/gfile.c:1694 gio/gfile.c:1749 gio/gfile.c:1807
+#: gio/gfile.c:1891 gio/gfile.c:1948 gio/gfile.c:2012 gio/gfile.c:2067
+#: gio/gfile.c:3772 gio/gfile.c:3912 gio/gfile.c:4205 gio/gfile.c:4675
+#: gio/gfile.c:5086 gio/gfile.c:5171 gio/gfile.c:5261 gio/gfile.c:5358
+#: gio/gfile.c:5445 gio/gfile.c:5546 gio/gfile.c:8375 gio/gfile.c:8465
+#: gio/gfile.c:8549 gio/win32/gwinhttpfile.c:453
 msgid "Operation not supported"
 msgstr "Действие не поддерживается"
 
-#: gio/gdbusauthmechanismsha1.c:402
+#: gio/gdbusauthmechanismsha1.c:404
 #, c-format
 msgid "Error opening keyring “%s” for reading: "
 msgstr "Произошла ошибка при открытии связки ключей «%s» на чтение: "
 
-#: gio/gdbusauthmechanismsha1.c:425 gio/gdbusauthmechanismsha1.c:747
+#: gio/gdbusauthmechanismsha1.c:427 gio/gdbusauthmechanismsha1.c:769
 #, c-format
 msgid "Line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr "Некорректная строка %d в связке ключей около «%s» с содержимым «%s»"
 
-#: gio/gdbusauthmechanismsha1.c:439 gio/gdbusauthmechanismsha1.c:761
+#: gio/gdbusauthmechanismsha1.c:441 gio/gdbusauthmechanismsha1.c:783
 #, c-format
 msgid ""
 "First token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -614,7 +624,7 @@ msgstr ""
 "Некорректная первая лексема в строке %d в связке ключей около «%s» с "
 "содержимым «%s»"
 
-#: gio/gdbusauthmechanismsha1.c:453 gio/gdbusauthmechanismsha1.c:775
+#: gio/gdbusauthmechanismsha1.c:455 gio/gdbusauthmechanismsha1.c:797
 #, c-format
 msgid ""
 "Second token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -622,160 +632,160 @@ msgstr ""
 "Некорректная вторая лексема в строке %d в связке ключей около «%s» с "
 "содержимым «%s»"
 
-#: gio/gdbusauthmechanismsha1.c:477
+#: gio/gdbusauthmechanismsha1.c:479
 #, c-format
 msgid "Didn’t find cookie with id %d in the keyring at “%s”"
 msgstr "Не удалось найти куки с идентификатором %d в связке ключей «%s»"
 
-#: gio/gdbusauthmechanismsha1.c:523
+#: gio/gdbusauthmechanismsha1.c:536
 #, c-format
 msgid "Error creating lock file “%s”: %s"
 msgstr "Произошла ошибка при создании файла блокировки «%s»: %s"
 
-#: gio/gdbusauthmechanismsha1.c:587
+#: gio/gdbusauthmechanismsha1.c:609
 #, c-format
 msgid "Error deleting stale lock file “%s”: %s"
 msgstr "Произошла ошибка при удалении устаревшего файла блокировки «%s»: %s"
 
-#: gio/gdbusauthmechanismsha1.c:626
+#: gio/gdbusauthmechanismsha1.c:648
 #, c-format
 msgid "Error closing (unlinked) lock file “%s”: %s"
 msgstr "Произошла ошибка при закрытии (удалённого) файла блокировки «%s»: %s"
 
-#: gio/gdbusauthmechanismsha1.c:637
+#: gio/gdbusauthmechanismsha1.c:659
 #, c-format
 msgid "Error unlinking lock file “%s”: %s"
 msgstr "Произошла ошибка при удалении файла блокировки «%s»: %s"
 
-#: gio/gdbusauthmechanismsha1.c:714
+#: gio/gdbusauthmechanismsha1.c:736
 #, c-format
 msgid "Error opening keyring “%s” for writing: "
 msgstr "Произошла ошибка при открытии связки ключей «%s» на запись: "
 
-#: gio/gdbusauthmechanismsha1.c:908
+#: gio/gdbusauthmechanismsha1.c:930
 #, c-format
 msgid "(Additionally, releasing the lock for “%s” also failed: %s) "
 msgstr "(Также, не удалось освободить блокировку для «%s»: %s) "
 
-#: gio/gdbusconnection.c:604 gio/gdbusconnection.c:2418
+#: gio/gdbusconnection.c:588 gio/gdbusconnection.c:2402
 msgid "The connection is closed"
 msgstr "Соединение закрыто"
 
-#: gio/gdbusconnection.c:1903
+#: gio/gdbusconnection.c:1887
 msgid "Timeout was reached"
 msgstr "Время ожидания истекло"
 
-#: gio/gdbusconnection.c:2541
+#: gio/gdbusconnection.c:2525
 msgid ""
 "Unsupported flags encountered when constructing a client-side connection"
 msgstr "При создании клиентского соединения обнаружены неподдерживаемые флаги"
 
-#: gio/gdbusconnection.c:4269 gio/gdbusconnection.c:4623
+#: gio/gdbusconnection.c:4253 gio/gdbusconnection.c:4607
 #, c-format
 msgid ""
 "No such interface “org.freedesktop.DBus.Properties” on object at path %s"
 msgstr ""
 "Интерфейс «org.freedesktop.DBus.Properties» для пути %s объекта не найден"
 
-#: gio/gdbusconnection.c:4414
+#: gio/gdbusconnection.c:4398
 #, c-format
 msgid "No such property “%s”"
 msgstr "Свойство «%s» отсутствует"
 
-#: gio/gdbusconnection.c:4426
+#: gio/gdbusconnection.c:4410
 #, c-format
 msgid "Property “%s” is not readable"
 msgstr "Свойство «%s» недоступно для чтения"
 
-#: gio/gdbusconnection.c:4437
+#: gio/gdbusconnection.c:4421
 #, c-format
 msgid "Property “%s” is not writable"
 msgstr "Свойство «%s» недоступно для записи"
 
-#: gio/gdbusconnection.c:4457
+#: gio/gdbusconnection.c:4441
 #, c-format
 msgid "Error setting property “%s”: Expected type “%s” but got “%s”"
 msgstr "Ошибка установки свойства «%s»: ожидался тип «%s», но получен «%s»"
 
-#: gio/gdbusconnection.c:4562 gio/gdbusconnection.c:4777
-#: gio/gdbusconnection.c:6760
+#: gio/gdbusconnection.c:4546 gio/gdbusconnection.c:4761
+#: gio/gdbusconnection.c:6744
 #, c-format
 msgid "No such interface “%s”"
 msgstr "Интерфейс «%s» отсутствует"
 
-#: gio/gdbusconnection.c:4999 gio/gdbusconnection.c:7274
+#: gio/gdbusconnection.c:4983 gio/gdbusconnection.c:7258
 #, c-format
 msgid "No such interface “%s” on object at path %s"
 msgstr "Интерфейс «%s» для пути %s объекта не найден"
 
-#: gio/gdbusconnection.c:5100
+#: gio/gdbusconnection.c:5084
 #, c-format
 msgid "No such method “%s”"
 msgstr "Ключ «%s» отсутствует"
 
-#: gio/gdbusconnection.c:5131
+#: gio/gdbusconnection.c:5115
 #, c-format
 msgid "Type of message, “%s”, does not match expected type “%s”"
 msgstr "Тип сообщения «%s» не совпадает с ожидаемым типом «%s»"
 
-#: gio/gdbusconnection.c:5334
+#: gio/gdbusconnection.c:5318
 #, c-format
 msgid "An object is already exported for the interface %s at %s"
 msgstr "Объект интерфейса %s уже экспортирован как %s"
 
-#: gio/gdbusconnection.c:5561
+#: gio/gdbusconnection.c:5545
 #, c-format
 msgid "Unable to retrieve property %s.%s"
 msgstr "Невозможно получить свойство %s.%s"
 
-#: gio/gdbusconnection.c:5617
+#: gio/gdbusconnection.c:5601
 #, c-format
 msgid "Unable to set property %s.%s"
 msgstr "Невозможно установить свойство %s.%s"
 
-#: gio/gdbusconnection.c:5796
+#: gio/gdbusconnection.c:5780
 #, c-format
 msgid "Method “%s” returned type “%s”, but expected “%s”"
 msgstr "Метод «%s» вернул тип «%s», но ожидалось «%s»"
 
-#: gio/gdbusconnection.c:6872
+#: gio/gdbusconnection.c:6856
 #, c-format
 msgid "Method “%s” on interface “%s” with signature “%s” does not exist"
 msgstr "Метод «%s» интерфейса «%s» с сигнатурой «%s» не существует"
 
-#: gio/gdbusconnection.c:6993
+#: gio/gdbusconnection.c:6977
 #, c-format
 msgid "A subtree is already exported for %s"
 msgstr "Поддерево уже экспортировано для %s"
 
-#: gio/gdbusconnection.c:7282
+#: gio/gdbusconnection.c:7266
 #, c-format
 msgid "Object does not exist at path “%s”"
 msgstr "Объект по пути «%s» не существует"
 
-#: gio/gdbusmessage.c:1311
+#: gio/gdbusmessage.c:1301
 msgid "type is INVALID"
-msgstr "НЕПРАВИЛЬНЫЙ тип"
+msgstr "тип является НЕДОПУСТИМЫМ"
 
-#: gio/gdbusmessage.c:1322
+#: gio/gdbusmessage.c:1312
 msgid "METHOD_CALL message: PATH or MEMBER header field is missing"
 msgstr "Сообщение METHOD_CALL: отсутствует поле заголовка PATH или MEMBER"
 
-#: gio/gdbusmessage.c:1333
+#: gio/gdbusmessage.c:1323
 msgid "METHOD_RETURN message: REPLY_SERIAL header field is missing"
 msgstr "Сообщение METHOD_RETURN: отсутствует поле заголовка REPLY_SERIAL"
 
-#: gio/gdbusmessage.c:1345
+#: gio/gdbusmessage.c:1335
 msgid "ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing"
 msgstr ""
 "Сообщение ERROR: отсутствует поле заголовка REPLY_SERIAL или ERROR_NAME"
 
-#: gio/gdbusmessage.c:1358
+#: gio/gdbusmessage.c:1348
 msgid "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing"
 msgstr ""
 "Сообщение SIGNAL: отсутствует поле заголовка PATH, INTERFACE или MEMBER"
 
-#: gio/gdbusmessage.c:1366
+#: gio/gdbusmessage.c:1356
 msgid ""
 "SIGNAL message: The PATH header field is using the reserved value /org/"
 "freedesktop/DBus/Local"
@@ -783,7 +793,7 @@ msgstr ""
 "Сообщение SIGNAL: поле заголовка PATH использует зарезервированное значение /"
 "org/freedesktop/DBus/Local"
 
-#: gio/gdbusmessage.c:1374
+#: gio/gdbusmessage.c:1364
 msgid ""
 "SIGNAL message: The INTERFACE header field is using the reserved value org."
 "freedesktop.DBus.Local"
@@ -791,7 +801,7 @@ msgstr ""
 "Сообщение SIGNAL: поле заголовка INTERFACE использует зарезервированное "
 "значение org.freedesktop.DBus.Local"
 
-#: gio/gdbusmessage.c:1422 gio/gdbusmessage.c:1482
+#: gio/gdbusmessage.c:1412 gio/gdbusmessage.c:1472
 #, c-format
 msgid "Wanted to read %lu byte but only got %lu"
 msgid_plural "Wanted to read %lu bytes but only got %lu"
@@ -799,12 +809,12 @@ msgstr[0] "Требовалось прочитать %lu байт, но проч
 msgstr[1] "Требовалось прочитать %lu байта, но прочитано только %lu"
 msgstr[2] "Требовалось прочитать %lu байт, но прочитано только %lu"
 
-#: gio/gdbusmessage.c:1436
+#: gio/gdbusmessage.c:1426
 #, c-format
 msgid "Expected NUL byte after the string “%s” but found byte %d"
 msgstr "Ожидался байт NUL после строки «%s», но найден байт %d"
 
-#: gio/gdbusmessage.c:1455
+#: gio/gdbusmessage.c:1445
 #, c-format
 msgid ""
 "Expected valid UTF-8 string but found invalid bytes at byte offset %d "
@@ -814,21 +824,21 @@ msgstr ""
 "(смещение %d, длина строки %d). Корректная строка UTF-8 вплоть до тех байт: "
 "«%s»"
 
-#: gio/gdbusmessage.c:1519 gio/gdbusmessage.c:1795 gio/gdbusmessage.c:2006
+#: gio/gdbusmessage.c:1509 gio/gdbusmessage.c:1785 gio/gdbusmessage.c:1996
 msgid "Value nested too deeply"
 msgstr "Слишком глубокая иерархия"
 
-#: gio/gdbusmessage.c:1687
+#: gio/gdbusmessage.c:1677
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus object path"
 msgstr "Разобранное значение «%s» не является допустимым путём объекта D-Bus"
 
-#: gio/gdbusmessage.c:1711
+#: gio/gdbusmessage.c:1701
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature"
 msgstr "Разобранное значение «%s» не является допустимой подписью D-Bus"
 
-#: gio/gdbusmessage.c:1762
+#: gio/gdbusmessage.c:1752
 #, c-format
 msgid ""
 "Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB)."
@@ -844,7 +854,7 @@ msgstr[2] ""
 "Обнаружен массив длинной %u байт. Максимальная длина равна 2<<26 байт (64 "
 "МиБ)."
 
-#: gio/gdbusmessage.c:1782
+#: gio/gdbusmessage.c:1772
 #, c-format
 msgid ""
 "Encountered array of type “a%c”, expected to have a length a multiple of %u "
@@ -853,24 +863,24 @@ msgstr ""
 "Получен массив типа «a%c», который должен иметь размер кратный %u (байт), но "
 "массив имеет длину %u (байт)"
 
-#: gio/gdbusmessage.c:1936 gio/gdbusmessage.c:2655
+#: gio/gdbusmessage.c:1926 gio/gdbusmessage.c:2645
 msgid "Empty structures (tuples) are not allowed in D-Bus"
 msgstr "Пустые структуры (записи) не допускаются в D-Bus"
 
-#: gio/gdbusmessage.c:1990
+#: gio/gdbusmessage.c:1980
 #, c-format
 msgid "Parsed value “%s” for variant is not a valid D-Bus signature"
 msgstr ""
 "Разобранное значение «%s» для варианта не является допустимой подписью D-Bus"
 
-#: gio/gdbusmessage.c:2031
+#: gio/gdbusmessage.c:2021
 #, c-format
 msgid ""
 "Error deserializing GVariant with type string “%s” from the D-Bus wire format"
 msgstr ""
 "Ошибка десериализации GVariant с типом строки «%s» из формата D-Bus wire"
 
-#: gio/gdbusmessage.c:2216
+#: gio/gdbusmessage.c:2206
 #, c-format
 msgid ""
 "Invalid endianness value. Expected 0x6c (“l”) or 0x42 (“B”) but found value "
@@ -879,27 +889,27 @@ msgstr ""
 "Неправильный порядок байтов в значении. Ожидался 0x6c ('l') или 0x42 ('B'), "
 "но найдено значение 0x%02x"
 
-#: gio/gdbusmessage.c:2235
+#: gio/gdbusmessage.c:2225
 #, c-format
 msgid "Invalid major protocol version. Expected 1 but found %d"
 msgstr "Неправильный старший номер версии протокола. Ожидался 1, но найден %d"
 
-#: gio/gdbusmessage.c:2293 gio/gdbusmessage.c:2891
+#: gio/gdbusmessage.c:2283 gio/gdbusmessage.c:2881
 msgid "Signature header found but is not of type signature"
 msgstr "Заголовок подписи найден, но его тип отличается от подписи"
 
-#: gio/gdbusmessage.c:2305
+#: gio/gdbusmessage.c:2295
 #, c-format
 msgid "Signature header with signature “%s” found but message body is empty"
 msgstr "Найден заголовок подписи с подписью «%s», но тело сообщения пусто"
 
-#: gio/gdbusmessage.c:2320
+#: gio/gdbusmessage.c:2310
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature (for body)"
 msgstr ""
 "Разобранное значение «%s» не является допустимой подписью D-Bus (для тела)"
 
-#: gio/gdbusmessage.c:2352
+#: gio/gdbusmessage.c:2342
 #, 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"
@@ -911,17 +921,17 @@ msgstr[1] ""
 msgstr[2] ""
 "Отсутствует заголовок подписи в сообщении, но тело сообщения занимает %u байт"
 
-#: gio/gdbusmessage.c:2362
+#: gio/gdbusmessage.c:2352
 msgid "Cannot deserialize message: "
 msgstr "Не удалось выполнить извлечение сообщения: "
 
-#: gio/gdbusmessage.c:2708
+#: gio/gdbusmessage.c:2698
 #, c-format
 msgid ""
 "Error serializing GVariant with type string “%s” to the D-Bus wire format"
 msgstr "Ошибка сериализации GVariant с типом строки «%s» в формат D-Bus wire"
 
-#: gio/gdbusmessage.c:2845
+#: gio/gdbusmessage.c:2835
 #, c-format
 msgid ""
 "Number of file descriptors in message (%d) differs from header field (%d)"
@@ -929,16 +939,16 @@ msgstr ""
 "Количество дескрипторов файлов в сообщении (%d) отличается от указанного в "
 "заголовке (%d)"
 
-#: gio/gdbusmessage.c:2853
+#: gio/gdbusmessage.c:2843
 msgid "Cannot serialize message: "
 msgstr "Не удалось сериализовать сообщение: "
 
-#: gio/gdbusmessage.c:2906
+#: gio/gdbusmessage.c:2896
 #, c-format
 msgid "Message body has signature “%s” but there is no signature header"
 msgstr "Тело сообщения имеет подпись «%s», но нет заголовка подписи"
 
-#: gio/gdbusmessage.c:2916
+#: gio/gdbusmessage.c:2906
 #, c-format
 msgid ""
 "Message body has type signature “%s” but signature in the header field is "
@@ -947,53 +957,53 @@ msgstr ""
 "Тело сообщения имеет тип подписи «%s», но значение подписи в поле заголовка "
 "равно «%s»"
 
-#: gio/gdbusmessage.c:2932
+#: gio/gdbusmessage.c:2922
 #, c-format
 msgid "Message body is empty but signature in the header field is “(%s)”"
 msgstr ""
 "Тело сообщения пусто, но значение подписи в поле заголовка равно «(%s)»"
 
-#: gio/gdbusmessage.c:3487
+#: gio/gdbusmessage.c:3477
 #, c-format
 msgid "Error return with body of type “%s”"
 msgstr "Возвращена ошибка с телом типа «%s»"
 
-#: gio/gdbusmessage.c:3495
+#: gio/gdbusmessage.c:3485
 msgid "Error return with empty body"
 msgstr "Возвращена ошибка с пустым телом"
 
-#: gio/gdbusprivate.c:2246
+#: gio/gdbusprivate.c:2185
 #, c-format
 msgid "(Type any character to close this window)\n"
 msgstr "(Чтобы закрыть это окно, введите любой символ)\n"
 
-#: gio/gdbusprivate.c:2420
+#: gio/gdbusprivate.c:2371
 #, c-format
 msgid "Session dbus not running, and autolaunch failed"
 msgstr "Сеанс dbus не запущен, и автозапуск не выполнился"
 
-#: gio/gdbusprivate.c:2443
+#: gio/gdbusprivate.c:2394
 #, c-format
 msgid "Unable to get Hardware profile: %s"
 msgstr "Не удалось получить профиль аппаратуры: %s"
 
 #. Translators: Both placeholders are file paths
-#: gio/gdbusprivate.c:2494
+#: gio/gdbusprivate.c:2445
 #, c-format
 msgid "Unable to load %s or %s: "
 msgstr "Не удалось загрузить %s или %s: "
 
-#: gio/gdbusproxy.c:1569
+#: gio/gdbusproxy.c:1573
 #, c-format
 msgid "Error calling StartServiceByName for %s: "
 msgstr "Ошибка вызова StartServiceByName для %s: "
 
-#: gio/gdbusproxy.c:1592
+#: gio/gdbusproxy.c:1596
 #, c-format
 msgid "Unexpected reply %d from StartServiceByName(\"%s\") method"
 msgstr "Неожиданный ответ %d из метода StartServiceByName(«%s»)"
 
-#: gio/gdbusproxy.c:2699 gio/gdbusproxy.c:2834
+#: gio/gdbusproxy.c:2707 gio/gdbusproxy.c:2842
 #, c-format
 msgid ""
 "Cannot invoke method; proxy is for the well-known name %s without an owner, "
@@ -1048,67 +1058,67 @@ msgstr ""
 "\n"
 "Для получения справки по команде используйте «%s КОМАНДА --help».\n"
 
-#: gio/gdbus-tool.c:201 gio/gdbus-tool.c:273 gio/gdbus-tool.c:345
-#: gio/gdbus-tool.c:369 gio/gdbus-tool.c:859 gio/gdbus-tool.c:1236
-#: gio/gdbus-tool.c:1724
+#: gio/gdbus-tool.c:202 gio/gdbus-tool.c:274 gio/gdbus-tool.c:346
+#: gio/gdbus-tool.c:370 gio/gdbus-tool.c:860 gio/gdbus-tool.c:1245
+#: gio/gdbus-tool.c:1733
 #, c-format
 msgid "Error: %s\n"
 msgstr "Ошибка: %s\n"
 
-#: gio/gdbus-tool.c:212 gio/gdbus-tool.c:286 gio/gdbus-tool.c:1740
+#: gio/gdbus-tool.c:213 gio/gdbus-tool.c:287 gio/gdbus-tool.c:1749
 #, c-format
 msgid "Error parsing introspection XML: %s\n"
 msgstr "Произошла ошибка при разборе интроспекции XML: %s\n"
 
-#: gio/gdbus-tool.c:250
+#: gio/gdbus-tool.c:251
 #, c-format
 msgid "Error: %s is not a valid name\n"
 msgstr "Ошибка: %s не является допустимым именем\n"
 
-#: gio/gdbus-tool.c:255 gio/gdbus-tool.c:745 gio/gdbus-tool.c:1060
-#: gio/gdbus-tool.c:1890 gio/gdbus-tool.c:2130
+#: gio/gdbus-tool.c:256 gio/gdbus-tool.c:746 gio/gdbus-tool.c:1064
+#: gio/gdbus-tool.c:1899 gio/gdbus-tool.c:2139
 #, c-format
 msgid "Error: %s is not a valid object path\n"
 msgstr "Ошибка: %s не является допустимым объектным путём\n"
 
-#: gio/gdbus-tool.c:403
+#: gio/gdbus-tool.c:404
 msgid "Connect to the system bus"
 msgstr "Подключиться к системной шине"
 
-#: gio/gdbus-tool.c:404
+#: gio/gdbus-tool.c:405
 msgid "Connect to the session bus"
 msgstr "Подключиться к пользовательской шине"
 
-#: gio/gdbus-tool.c:405
+#: gio/gdbus-tool.c:406
 msgid "Connect to given D-Bus address"
 msgstr "Подключиться к заданному адресу D-Bus"
 
-#: gio/gdbus-tool.c:415
+#: gio/gdbus-tool.c:416
 msgid "Connection Endpoint Options:"
 msgstr "Параметры оконечной точки соединения:"
 
-#: gio/gdbus-tool.c:416
+#: gio/gdbus-tool.c:417
 msgid "Options specifying the connection endpoint"
 msgstr "Параметры, определяющие оконечную точку соединения"
 
-#: gio/gdbus-tool.c:439
+#: gio/gdbus-tool.c:440
 #, c-format
 msgid "No connection endpoint specified"
 msgstr "Оконечная точка соединения не указана"
 
-#: gio/gdbus-tool.c:449
+#: gio/gdbus-tool.c:450
 #, c-format
 msgid "Multiple connection endpoints specified"
 msgstr "Указано несколько оконечных точек соединения"
 
-#: gio/gdbus-tool.c:522
+#: gio/gdbus-tool.c:523
 #, c-format
 msgid ""
 "Warning: According to introspection data, interface “%s” does not exist\n"
 msgstr ""
 "Предупреждение: согласно данным интроспекции, интерфейс «%s» не существует\n"
 
-#: gio/gdbus-tool.c:531
+#: gio/gdbus-tool.c:532
 #, c-format
 msgid ""
 "Warning: According to introspection data, method “%s” does not exist on "
@@ -1117,160 +1127,164 @@ msgstr ""
 "Предупреждение: согласно данным интроспекции, метод «%s» в интерфейсе «%s» "
 "не существует\n"
 
-#: gio/gdbus-tool.c:593
+#: gio/gdbus-tool.c:594
 msgid "Optional destination for signal (unique name)"
 msgstr "Необязательный получатель сигнала (уникальное имя)"
 
-#: gio/gdbus-tool.c:594
+#: gio/gdbus-tool.c:595
 msgid "Object path to emit signal on"
 msgstr "Объектный путь, для выпуска сигнала"
 
-#: gio/gdbus-tool.c:595
+#: gio/gdbus-tool.c:596
 msgid "Signal and interface name"
 msgstr "Название сигнала и интерфейса"
 
-#: gio/gdbus-tool.c:628
+#: gio/gdbus-tool.c:629
 msgid "Emit a signal."
 msgstr "Послать сигнал."
 
-#: gio/gdbus-tool.c:683 gio/gdbus-tool.c:997 gio/gdbus-tool.c:1827
-#: gio/gdbus-tool.c:2059 gio/gdbus-tool.c:2279
+#: gio/gdbus-tool.c:684 gio/gdbus-tool.c:1001 gio/gdbus-tool.c:1836
+#: gio/gdbus-tool.c:2068 gio/gdbus-tool.c:2288
 #, c-format
 msgid "Error connecting: %s\n"
 msgstr "Произошла ошибка при соединении: %s\n"
 
-#: gio/gdbus-tool.c:703
+#: gio/gdbus-tool.c:704
 #, c-format
 msgid "Error: %s is not a valid unique bus name.\n"
 msgstr "Ошибка: %s не является допустимым уникальным именем шины.\n"
 
-#: gio/gdbus-tool.c:722 gio/gdbus-tool.c:1040 gio/gdbus-tool.c:1870
+#: gio/gdbus-tool.c:723 gio/gdbus-tool.c:1044 gio/gdbus-tool.c:1879
 msgid "Error: Object path is not specified\n"
 msgstr "Ошибка: не указан объектный путь\n"
 
-#: gio/gdbus-tool.c:765
+#: gio/gdbus-tool.c:766
 msgid "Error: Signal name is not specified\n"
 msgstr "Ошибка: не указано имя сигнала\n"
 
-#: gio/gdbus-tool.c:779
+#: gio/gdbus-tool.c:780
 #, c-format
 msgid "Error: Signal name “%s” is invalid\n"
 msgstr "Ошибка: неправильное имя сигнала «%s»\n"
 
-#: gio/gdbus-tool.c:791
+#: gio/gdbus-tool.c:792
 #, c-format
 msgid "Error: %s is not a valid interface name\n"
 msgstr "Ошибка: %s не является допустимым именем интерфейса\n"
 
-#: gio/gdbus-tool.c:797
+#: gio/gdbus-tool.c:798
 #, c-format
 msgid "Error: %s is not a valid member name\n"
 msgstr "Ошибка: %s не является допустимым именем члена\n"
 
 #. Use the original non-"parse-me-harder" error
-#: gio/gdbus-tool.c:834 gio/gdbus-tool.c:1172
+#: gio/gdbus-tool.c:835 gio/gdbus-tool.c:1176
 #, c-format
 msgid "Error parsing parameter %d: %s\n"
 msgstr "Произошла ошибка при разборе параметра %d: %s\n"
 
-#: gio/gdbus-tool.c:866
+#: gio/gdbus-tool.c:867
 #, c-format
 msgid "Error flushing connection: %s\n"
 msgstr "Произошла ошибка при сбросе подключения: %s\n"
 
-#: gio/gdbus-tool.c:893
+#: gio/gdbus-tool.c:895
 msgid "Destination name to invoke method on"
 msgstr "Имя назначения, для которого вызывается метод"
 
-#: gio/gdbus-tool.c:894
+#: gio/gdbus-tool.c:896
 msgid "Object path to invoke method on"
 msgstr "Объектный путь, для которого вызывается метод"
 
-#: gio/gdbus-tool.c:895
+#: gio/gdbus-tool.c:897
 msgid "Method and interface name"
 msgstr "Название метода или интерфейса"
 
-#: gio/gdbus-tool.c:896
+#: gio/gdbus-tool.c:898
 msgid "Timeout in seconds"
 msgstr "Время ожидания в секундах"
 
-#: gio/gdbus-tool.c:942
+#: gio/gdbus-tool.c:899
+msgid "Allow interactive authorization"
+msgstr "Разрешить интерактивную авторизацию"
+
+#: gio/gdbus-tool.c:946
 msgid "Invoke a method on a remote object."
 msgstr "Вызывает метод на удалённом объекте."
 
-#: gio/gdbus-tool.c:1014 gio/gdbus-tool.c:1844 gio/gdbus-tool.c:2084
+#: gio/gdbus-tool.c:1018 gio/gdbus-tool.c:1853 gio/gdbus-tool.c:2093
 msgid "Error: Destination is not specified\n"
 msgstr "Ошибка: не указано назначение\n"
 
-#: gio/gdbus-tool.c:1025 gio/gdbus-tool.c:1861 gio/gdbus-tool.c:2095
+#: gio/gdbus-tool.c:1029 gio/gdbus-tool.c:1870 gio/gdbus-tool.c:2104
 #, c-format
 msgid "Error: %s is not a valid bus name\n"
 msgstr "Ошибка: %s не является допустимым именем шины\n"
 
-#: gio/gdbus-tool.c:1075
+#: gio/gdbus-tool.c:1079
 msgid "Error: Method name is not specified\n"
 msgstr "Ошибка: не указано имя метода\n"
 
-#: gio/gdbus-tool.c:1086
+#: gio/gdbus-tool.c:1090
 #, c-format
 msgid "Error: Method name “%s” is invalid\n"
 msgstr "Ошибка: неправильное имя метода «%s»\n"
 
-#: gio/gdbus-tool.c:1164
+#: gio/gdbus-tool.c:1168
 #, c-format
 msgid "Error parsing parameter %d of type “%s”: %s\n"
 msgstr "Произошла ошибка при разборе параметра %d типа «%s»: %s\n"
 
-#: gio/gdbus-tool.c:1190
+#: gio/gdbus-tool.c:1194
 #, c-format
 msgid "Error adding handle %d: %s\n"
 msgstr "Произошла ошибка при добавлении дескриптора %d: %s\n"
 
-#: gio/gdbus-tool.c:1686
+#: gio/gdbus-tool.c:1695
 msgid "Destination name to introspect"
 msgstr "Имя назначения для интроспекции"
 
-#: gio/gdbus-tool.c:1687
+#: gio/gdbus-tool.c:1696
 msgid "Object path to introspect"
 msgstr "Объектный путь для интроспекции"
 
-#: gio/gdbus-tool.c:1688
+#: gio/gdbus-tool.c:1697
 msgid "Print XML"
 msgstr "Напечатать XML"
 
-#: gio/gdbus-tool.c:1689
+#: gio/gdbus-tool.c:1698
 msgid "Introspect children"
 msgstr "Интроспекция потомка"
 
-#: gio/gdbus-tool.c:1690
+#: gio/gdbus-tool.c:1699
 msgid "Only print properties"
 msgstr "Только свойства печати"
 
-#: gio/gdbus-tool.c:1779
+#: gio/gdbus-tool.c:1788
 msgid "Introspect a remote object."
 msgstr "Выполнить интроспекцию удалённого объекта."
 
-#: gio/gdbus-tool.c:1985
+#: gio/gdbus-tool.c:1994
 msgid "Destination name to monitor"
 msgstr "Имя назначения для наблюдения"
 
-#: gio/gdbus-tool.c:1986
+#: gio/gdbus-tool.c:1995
 msgid "Object path to monitor"
 msgstr "Объектный путь для наблюдения"
 
-#: gio/gdbus-tool.c:2011
+#: gio/gdbus-tool.c:2020
 msgid "Monitor a remote object."
 msgstr "Наблюдать за удалённым объектом."
 
-#: gio/gdbus-tool.c:2069
+#: gio/gdbus-tool.c:2078
 msgid "Error: can’t monitor a non-message-bus connection\n"
 msgstr "Ошибка: невозможно следить за соединением non-message-bus\n"
 
-#: gio/gdbus-tool.c:2193
+#: gio/gdbus-tool.c:2202
 msgid "Service to activate before waiting for the other one (well-known name)"
 msgstr "Сервис для активации перед ожиданием другого (хорошо известное имя)"
 
-#: gio/gdbus-tool.c:2196
+#: gio/gdbus-tool.c:2205
 msgid ""
 "Timeout to wait for before exiting with an error (seconds); 0 for no timeout "
 "(default)"
@@ -1278,63 +1292,68 @@ msgstr ""
 "Срок ожидание до выхода с ошибкой (секунды); 0 для бесконечности (по "
 "умолчанию)"
 
-#: gio/gdbus-tool.c:2244
+#: gio/gdbus-tool.c:2253
 msgid "[OPTION…] BUS-NAME"
 msgstr "[ПАРАМЕТР…] ИМЯ-ШИНЫ"
 
-#: gio/gdbus-tool.c:2245
+#: gio/gdbus-tool.c:2254
 msgid "Wait for a bus name to appear."
 msgstr "Дождитесь появления имени шины."
 
-#: gio/gdbus-tool.c:2321
+#: gio/gdbus-tool.c:2330
 msgid "Error: A service to activate for must be specified.\n"
 msgstr "Ошибка: должен быть указан сервис для активации.\n"
 
-#: gio/gdbus-tool.c:2326
+#: gio/gdbus-tool.c:2335
 msgid "Error: A service to wait for must be specified.\n"
 msgstr "Ошибка: должен быть указан сервис для ожидания.\n"
 
-#: gio/gdbus-tool.c:2331
+#: gio/gdbus-tool.c:2340
 msgid "Error: Too many arguments.\n"
 msgstr "Ошибка: слишком много аргументов.\n"
 
-#: gio/gdbus-tool.c:2339 gio/gdbus-tool.c:2346
+#: gio/gdbus-tool.c:2348 gio/gdbus-tool.c:2355
 #, c-format
 msgid "Error: %s is not a valid well-known bus name.\n"
 msgstr "Ошибка: %s не является допустимым известным именем шины\n"
 
-#: gio/gdesktopappinfo.c:2106 gio/gdesktopappinfo.c:4935
+#: gio/gdebugcontrollerdbus.c:358
+#, c-format
+msgid "Not authorized to change debug settings"
+msgstr "Не вправе изменять настройки отладки"
+
+#: gio/gdesktopappinfo.c:2178 gio/gdesktopappinfo.c:5105
 msgid "Unnamed"
 msgstr "Без имени"
 
-#: gio/gdesktopappinfo.c:2516
+#: gio/gdesktopappinfo.c:2588
 msgid "Desktop file didn’t specify Exec field"
 msgstr "В desktop-файле не указано поле Exec"
 
-#: gio/gdesktopappinfo.c:2804
+#: gio/gdesktopappinfo.c:2896
 msgid "Unable to find terminal required for application"
 msgstr "Не удалось найти терминал, требуемый для приложения"
 
-#: gio/gdesktopappinfo.c:3455
+#: gio/gdesktopappinfo.c:3625
 #, c-format
 msgid "Can’t create user application configuration folder %s: %s"
 msgstr "Не удалось создать пользовательскую папку настроек приложения %s: %s"
 
-#: gio/gdesktopappinfo.c:3459
+#: gio/gdesktopappinfo.c:3629
 #, c-format
 msgid "Can’t create user MIME configuration folder %s: %s"
 msgstr "Не удалось создать пользовательскую папку настроек MIME %s: %s"
 
-#: gio/gdesktopappinfo.c:3701 gio/gdesktopappinfo.c:3725
+#: gio/gdesktopappinfo.c:3871 gio/gdesktopappinfo.c:3895
 msgid "Application information lacks an identifier"
 msgstr "В информации о приложении отсутствует идентификатор"
 
-#: gio/gdesktopappinfo.c:3961
+#: gio/gdesktopappinfo.c:4131
 #, c-format
 msgid "Can’t create user desktop file %s"
 msgstr "Не удалось создать пользовательский desktop-файл %s"
 
-#: gio/gdesktopappinfo.c:4097
+#: gio/gdesktopappinfo.c:4267
 #, c-format
 msgid "Custom definition for %s"
 msgstr "Особое определение для %s"
@@ -1362,7 +1381,7 @@ msgstr "привод не поддерживает запуск"
 msgid "drive doesn’t implement stop"
 msgstr "привод не поддерживает остановку"
 
-#: gio/gdtlsconnection.c:1153 gio/gtlsconnection.c:920
+#: gio/gdtlsconnection.c:1186 gio/gtlsconnection.c:955
 msgid "TLS backend does not implement TLS binding retrieval"
 msgstr "Библиотека TLS не реализует запрос на TLS binding"
 
@@ -1403,74 +1422,74 @@ msgstr "Для GEmblemedIcon ожидается GEmblem"
 #. * trying to find the enclosing (user visible)
 #. * mount of a file, but none exists.
 #.
-#: gio/gfile.c:1561
+#: gio/gfile.c:1579
 msgid "Containing mount does not exist"
 msgstr "Содержащая точка монтирования не существует"
 
-#: gio/gfile.c:2608 gio/glocalfile.c:2486
+#: gio/gfile.c:2626 gio/glocalfile.c:2486
 msgid "Can’t copy over directory"
 msgstr "Нельзя скопировать поверх каталога"
 
-#: gio/gfile.c:2668
+#: gio/gfile.c:2686
 msgid "Can’t copy directory over directory"
 msgstr "Нельзя скопировать каталог поверх каталога"
 
-#: gio/gfile.c:2676
+#: gio/gfile.c:2694
 msgid "Target file exists"
 msgstr "Целевой файл существует"
 
-#: gio/gfile.c:2695
+#: gio/gfile.c:2713
 msgid "Can’t recursively copy directory"
 msgstr "Не удалось рекурсивно скопировать каталог"
 
-#: gio/gfile.c:2996
+#: gio/gfile.c:3014
 msgid "Splice not supported"
 msgstr "Соединение не поддерживается"
 
-#: gio/gfile.c:3000
+#: gio/gfile.c:3018
 #, c-format
 msgid "Error splicing file: %s"
 msgstr "Произошла ошибка при соединении файла: %s"
 
-#: gio/gfile.c:3152
+#: gio/gfile.c:3170
 msgid "Copy (reflink/clone) between mounts is not supported"
 msgstr ""
 "Копирование (reflink/clone) между точками монтирования не поддерживается"
 
-#: gio/gfile.c:3156
+#: gio/gfile.c:3174
 msgid "Copy (reflink/clone) is not supported or invalid"
 msgstr "Копирование (reflink/clone) не поддерживается или некорректно"
 
-#: gio/gfile.c:3161
+#: gio/gfile.c:3179
 msgid "Copy (reflink/clone) is not supported or didn’t work"
 msgstr "Копирование (reflink/clone) не поддерживается или не работает"
 
-#: gio/gfile.c:3226
+#: gio/gfile.c:3244
 msgid "Can’t copy special file"
 msgstr "Нельзя скопировать специальный файл"
 
-#: gio/gfile.c:4035
+#: gio/gfile.c:4138
 msgid "Invalid symlink value given"
 msgstr "Дано неверное значение символьной ссылки"
 
-#: gio/gfile.c:4045 glib/gfileutils.c:2333
+#: gio/gfile.c:4148 glib/gfileutils.c:2333
 msgid "Symbolic links not supported"
 msgstr "Символьные ссылки не поддерживаются"
 
-#: gio/gfile.c:4213
+#: gio/gfile.c:4316
 msgid "Trash not supported"
 msgstr "Корзина не поддерживается"
 
-#: gio/gfile.c:4325
+#: gio/gfile.c:4428
 #, c-format
 msgid "File names cannot contain “%c”"
 msgstr "Имена файлов не могут содержать «%c»"
 
-#: gio/gfile.c:6806 gio/gvolume.c:364
+#: gio/gfile.c:7028 gio/gvolume.c:364
 msgid "volume doesn’t implement mount"
 msgstr "том не поддерживает присоединение"
 
-#: gio/gfile.c:6920 gio/gfile.c:6968
+#: gio/gfile.c:7142 gio/gfile.c:7190
 msgid "No application is registered as handling this file"
 msgstr "Нет зарегистрированного приложения для обработки данного файла"
 
@@ -1515,7 +1534,7 @@ msgstr "Усечение на входном потоке не разрешен
 msgid "Truncate not supported on stream"
 msgstr "Усечение не поддерживается на потоке"
 
-#: gio/ghttpproxy.c:91 gio/gresolver.c:443 gio/gresolver.c:596
+#: gio/ghttpproxy.c:91 gio/gresolver.c:458 gio/gresolver.c:611
 #: glib/gconvert.c:1825
 msgid "Invalid hostname"
 msgstr "Недопустимое имя узла"
@@ -1602,7 +1621,7 @@ msgid "Could not parse “%s” as IP address mask"
 msgstr "Невозможно считать «%s» маской IP-адреса"
 
 #: gio/ginetsocketaddress.c:203 gio/ginetsocketaddress.c:220
-#: gio/gnativesocketaddress.c:109 gio/gunixsocketaddress.c:221
+#: gio/gnativesocketaddress.c:109 gio/gunixsocketaddress.c:228
 msgid "Not enough space for socket address"
 msgstr "Недостаточно места для адреса сокета"
 
@@ -2448,15 +2467,15 @@ msgstr "Ошибка при сжатии файла %s"
 msgid "text may not appear inside <%s>"
 msgstr "текста не может быть внутри <%s>"
 
-#: gio/glib-compile-resources.c:737 gio/glib-compile-schemas.c:2172
+#: gio/glib-compile-resources.c:819 gio/glib-compile-schemas.c:2172
 msgid "Show program version and exit"
 msgstr "Показать версию программы и выйти"
 
-#: gio/glib-compile-resources.c:738
+#: gio/glib-compile-resources.c:820
 msgid "Name of the output file"
 msgstr "Имя файла для сохранения"
 
-#: gio/glib-compile-resources.c:739
+#: gio/glib-compile-resources.c:821
 msgid ""
 "The directories to load files referenced in FILE from (default: current "
 "directory)"
@@ -2464,48 +2483,48 @@ msgstr ""
 "Каталоги для загрузки файлов, указанных в параметре FILE (по умолчанию: "
 "текущий каталог)"
 
-#: gio/glib-compile-resources.c:739 gio/glib-compile-schemas.c:2173
+#: gio/glib-compile-resources.c:821 gio/glib-compile-schemas.c:2173
 #: gio/glib-compile-schemas.c:2202
 msgid "DIRECTORY"
 msgstr "КАТАЛОГ"
 
-#: gio/glib-compile-resources.c:740
+#: gio/glib-compile-resources.c:822
 msgid ""
 "Generate output in the format selected for by the target filename extension"
 msgstr ""
 "Генерировать результат в формате в соответствии с расширением целевого файла"
 
-#: gio/glib-compile-resources.c:741
+#: gio/glib-compile-resources.c:823
 msgid "Generate source header"
 msgstr "Генерировать исходный заголовок"
 
-#: gio/glib-compile-resources.c:742
+#: gio/glib-compile-resources.c:824
 msgid "Generate source code used to link in the resource file into your code"
 msgstr ""
 "Генерировать исходный код, который используется для связи с файлом ресурсов "
 "вашего кода"
 
-#: gio/glib-compile-resources.c:743
+#: gio/glib-compile-resources.c:825
 msgid "Generate dependency list"
 msgstr "Генерировать список зависимостей"
 
-#: gio/glib-compile-resources.c:744
+#: gio/glib-compile-resources.c:826
 msgid "Name of the dependency file to generate"
 msgstr "Имя файла зависимостей для генерации"
 
-#: gio/glib-compile-resources.c:745
+#: gio/glib-compile-resources.c:827
 msgid "Include phony targets in the generated dependency file"
 msgstr "Включить фиктивные цели в созданный файл зависимостей"
 
-#: gio/glib-compile-resources.c:746
+#: gio/glib-compile-resources.c:828
 msgid "Don’t automatically create and register resource"
 msgstr "Не создавать и не регистрировать ресурс автоматически"
 
-#: gio/glib-compile-resources.c:747
+#: gio/glib-compile-resources.c:829
 msgid "Don’t export functions; declare them G_GNUC_INTERNAL"
 msgstr "Не экспортируйте функции; объявляйте их как G_GNUC_INTERNAL"
 
-#: gio/glib-compile-resources.c:748
+#: gio/glib-compile-resources.c:830
 msgid ""
 "Don’t embed resource data in the C file; assume it's linked externally "
 "instead"
@@ -2513,11 +2532,15 @@ msgstr ""
 "Не включайте ресурсные данные в файл С. Предполагается что они подключаются "
 "из отдельных файлов"
 
-#: gio/glib-compile-resources.c:749
+#: gio/glib-compile-resources.c:831
 msgid "C identifier name used for the generated source code"
 msgstr "Имя C-идентификатора, используемое для генерации исходного кода"
 
-#: gio/glib-compile-resources.c:775
+#: gio/glib-compile-resources.c:832
+msgid "The target C compiler (default: the CC environment variable)"
+msgstr "Целевой компилятор языка C (по умолчанию: переменная окружения CC)"
+
+#: gio/glib-compile-resources.c:858
 msgid ""
 "Compile a resource specification into a resource file.\n"
 "Resource specification files have the extension .gresource.xml,\n"
@@ -2527,7 +2550,7 @@ msgstr ""
 "Файлы спецификации ресурсов имеют расширение .gresource.xml,\n"
 "а файл ресурса имеет расширение .gresource."
 
-#: gio/glib-compile-resources.c:797
+#: gio/glib-compile-resources.c:880
 msgid "You should give exactly one file name\n"
 msgstr "Должно быть указано только одно имя имя файла\n"
 
@@ -3319,13 +3342,13 @@ msgstr "Произошла ошибка при создании резервно
 msgid "Error renaming temporary file: %s"
 msgstr "Произошла ошибка при переименовании временного файла: %s"
 
-#: gio/glocalfileoutputstream.c:609 gio/glocalfileoutputstream.c:1237
+#: gio/glocalfileoutputstream.c:609 gio/glocalfileoutputstream.c:1239
 #, c-format
 msgid "Error truncating file: %s"
 msgstr "Произошла ошибка при усечении файла: %s"
 
 #: gio/glocalfileoutputstream.c:662 gio/glocalfileoutputstream.c:907
-#: gio/glocalfileoutputstream.c:1218 gio/gsubprocess.c:226
+#: gio/glocalfileoutputstream.c:1220 gio/gsubprocess.c:229
 #, c-format
 msgid "Error opening file “%s”: %s"
 msgstr "Произошла ошибка при открытии файла «%s»: %s"
@@ -3347,7 +3370,7 @@ msgstr "Файл был изменён извне"
 msgid "Error removing old file: %s"
 msgstr "Произошла ошибка при удалении старого файла: %s"
 
-#: gio/gmemoryinputstream.c:474 gio/gmemoryoutputstream.c:772
+#: gio/gmemoryinputstream.c:474 gio/gmemoryoutputstream.c:762
 msgid "Invalid GSeekType supplied"
 msgstr "Передан недопустимый GSeekType"
 
@@ -3359,15 +3382,15 @@ msgstr "Недопустимый запрос на переход"
 msgid "Cannot truncate GMemoryInputStream"
 msgstr "Нельзя усечь GMemoryInputStream"
 
-#: gio/gmemoryoutputstream.c:567
+#: gio/gmemoryoutputstream.c:568
 msgid "Memory output stream not resizable"
 msgstr "Невозможно изменить размер выходного потока в память"
 
-#: gio/gmemoryoutputstream.c:583
+#: gio/gmemoryoutputstream.c:584
 msgid "Failed to resize memory output stream"
 msgstr "Не удалось изменить размер выходного потока в память"
 
-#: gio/gmemoryoutputstream.c:673
+#: gio/gmemoryoutputstream.c:663
 msgid ""
 "Amount of memory required to process the write is larger than available "
 "address space"
@@ -3375,11 +3398,11 @@ msgstr ""
 "Количество памяти, требуемое процессом записи, больше чем доступное адресное "
 "пространство"
 
-#: gio/gmemoryoutputstream.c:782
+#: gio/gmemoryoutputstream.c:772
 msgid "Requested seek before the beginning of the stream"
 msgstr "Выполнять перемещение в начало потока"
 
-#: gio/gmemoryoutputstream.c:797
+#: gio/gmemoryoutputstream.c:787
 msgid "Requested seek beyond the end of the stream"
 msgstr "Выполнять перемещение в конец потока"
 
@@ -3488,18 +3511,22 @@ msgstr "Сумма массивов, переданных в «%s» слишко
 msgid "Source stream is already closed"
 msgstr "Исходный поток уже закрыт"
 
-#: gio/gresolver.c:386 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
+#. Translators: the first placeholder is a domain name, the
+#. * second is an error message
+#: gio/gresolver.c:401 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
+#: gio/gthreadedresolver.c:780 gio/gthreadedresolver.c:804
+#: gio/gthreadedresolver.c:829 gio/gthreadedresolver.c:844
 #, c-format
 msgid "Error resolving “%s”: %s"
 msgstr "Ошибка разрешения «%s»: %s"
 
 #. Translators: The placeholder is for a function name.
-#: gio/gresolver.c:455 gio/gresolver.c:615
+#: gio/gresolver.c:470 gio/gresolver.c:630
 #, c-format
 msgid "%s not implemented"
 msgstr "«%s» не реализовано"
 
-#: gio/gresolver.c:984 gio/gresolver.c:1036
+#: gio/gresolver.c:999 gio/gresolver.c:1051
 msgid "Invalid domain"
 msgstr "Недопустимый домен"
 
@@ -3614,7 +3641,7 @@ msgstr ""
 msgid "  SECTION   An (optional) elf section name\n"
 msgstr "  РАЗДЕЛ    Имя раздела elf (необязательный)\n"
 
-#: gio/gresource-tool.c:565 gio/gsettings-tool.c:706
+#: gio/gresource-tool.c:565 gio/gsettings-tool.c:718
 msgid "  COMMAND   The (optional) command to explain\n"
 msgstr "  КОМАНДА   Команда для пояснения (необязательный)\n"
 
@@ -3647,7 +3674,7 @@ msgstr "ПУТЬ"
 msgid "  PATH      A resource path\n"
 msgstr "  ПУТЬ      Путь ресурса\n"
 
-#: gio/gsettings-tool.c:49 gio/gsettings-tool.c:70 gio/gsettings-tool.c:911
+#: gio/gsettings-tool.c:49 gio/gsettings-tool.c:70 gio/gsettings-tool.c:923
 #, c-format
 msgid "No such schema “%s”\n"
 msgstr "Схема «%s» отсутствует\n"
@@ -3678,35 +3705,35 @@ msgstr "Путь должен заканчиваться символом кос
 msgid "Path must not contain two adjacent slashes (//)\n"
 msgstr "В пути не должно быть две стоящих рядом косых черты (//)\n"
 
-#: gio/gsettings-tool.c:541
+#: gio/gsettings-tool.c:553
 msgid "The provided value is outside of the valid range\n"
 msgstr "Предоставленное величина лежит вне диапазона допустимых значений\n"
 
-#: gio/gsettings-tool.c:548
+#: gio/gsettings-tool.c:560
 msgid "The key is not writable\n"
 msgstr "Ключ недоступен для записи\n"
 
-#: gio/gsettings-tool.c:584
+#: gio/gsettings-tool.c:596
 msgid "List the installed (non-relocatable) schemas"
 msgstr "Список установленных (неперемещаемых) схем"
 
-#: gio/gsettings-tool.c:590
+#: gio/gsettings-tool.c:602
 msgid "List the installed relocatable schemas"
 msgstr "Список установленных перемещаемых схем"
 
-#: gio/gsettings-tool.c:596
+#: gio/gsettings-tool.c:608
 msgid "List the keys in SCHEMA"
 msgstr "Список ключей в СХЕМЕ"
 
-#: gio/gsettings-tool.c:597 gio/gsettings-tool.c:603 gio/gsettings-tool.c:646
+#: gio/gsettings-tool.c:609 gio/gsettings-tool.c:615 gio/gsettings-tool.c:658
 msgid "SCHEMA[:PATH]"
 msgstr "СХЕМА[:ПУТЬ]"
 
-#: gio/gsettings-tool.c:602
+#: gio/gsettings-tool.c:614
 msgid "List the children of SCHEMA"
 msgstr "Список потомков СХЕМЫ"
 
-#: gio/gsettings-tool.c:608
+#: gio/gsettings-tool.c:620
 msgid ""
 "List keys and values, recursively\n"
 "If no SCHEMA is given, list all keys\n"
@@ -3714,48 +3741,48 @@ msgstr ""
 "Перечислить ключи и значения рекурсивно\n"
 "Если указана СХЕМА, то перечислить все ключи\n"
 
-#: gio/gsettings-tool.c:610
+#: gio/gsettings-tool.c:622
 msgid "[SCHEMA[:PATH]]"
 msgstr "[СХЕМА[:ПУТЬ]]"
 
-#: gio/gsettings-tool.c:615
+#: gio/gsettings-tool.c:627
 msgid "Get the value of KEY"
 msgstr "Получить значение КЛЮЧА"
 
-#: gio/gsettings-tool.c:616 gio/gsettings-tool.c:622 gio/gsettings-tool.c:628
-#: gio/gsettings-tool.c:640 gio/gsettings-tool.c:652
+#: gio/gsettings-tool.c:628 gio/gsettings-tool.c:634 gio/gsettings-tool.c:640
+#: gio/gsettings-tool.c:652 gio/gsettings-tool.c:664
 msgid "SCHEMA[:PATH] KEY"
 msgstr "СХЕМА[:ПУТЬ] КЛЮЧ"
 
-#: gio/gsettings-tool.c:621
+#: gio/gsettings-tool.c:633
 msgid "Query the range of valid values for KEY"
 msgstr "Запросить диапазон допустимых значений КЛЮЧА"
 
-#: gio/gsettings-tool.c:627
+#: gio/gsettings-tool.c:639
 msgid "Query the description for KEY"
 msgstr "Запросить описание для КЛЮЧА"
 
-#: gio/gsettings-tool.c:633
+#: gio/gsettings-tool.c:645
 msgid "Set the value of KEY to VALUE"
 msgstr "Присвоить величину ЗНАЧЕНИЕ КЛЮЧУ"
 
-#: gio/gsettings-tool.c:634
+#: gio/gsettings-tool.c:646
 msgid "SCHEMA[:PATH] KEY VALUE"
 msgstr "СХЕМА[:ПУТЬ] КЛЮЧ ЗНАЧЕНИЕ"
 
-#: gio/gsettings-tool.c:639
+#: gio/gsettings-tool.c:651
 msgid "Reset KEY to its default value"
 msgstr "Назначить КЛЮЧУ его значение по умолчанию"
 
-#: gio/gsettings-tool.c:645
+#: gio/gsettings-tool.c:657
 msgid "Reset all keys in SCHEMA to their defaults"
 msgstr "Сбросить все ключи в СХЕМЕ в их значения по умолчанию"
 
-#: gio/gsettings-tool.c:651
+#: gio/gsettings-tool.c:663
 msgid "Check if KEY is writable"
 msgstr "Проверить, что КЛЮЧ доступен для записи"
 
-#: gio/gsettings-tool.c:657
+#: gio/gsettings-tool.c:669
 msgid ""
 "Monitor KEY for changes.\n"
 "If no KEY is specified, monitor all keys in SCHEMA.\n"
@@ -3765,11 +3792,11 @@ msgstr ""
 "Если КЛЮЧ не задан, то следить за всеми ключами СХЕМЫ.\n"
 "Для остановки слежения используйте ^C.\n"
 
-#: gio/gsettings-tool.c:660
+#: gio/gsettings-tool.c:672
 msgid "SCHEMA[:PATH] [KEY]"
 msgstr "СХЕМА[:ПУТЬ] [КЛЮЧ]"
 
-#: gio/gsettings-tool.c:672
+#: gio/gsettings-tool.c:684
 msgid ""
 "Usage:\n"
 "  gsettings --version\n"
@@ -3818,7 +3845,7 @@ msgstr ""
 "КОМАНДА».\n"
 "\n"
 
-#: gio/gsettings-tool.c:696
+#: gio/gsettings-tool.c:708
 #, c-format
 msgid ""
 "Usage:\n"
@@ -3833,11 +3860,11 @@ msgstr ""
 "%s\n"
 "\n"
 
-#: gio/gsettings-tool.c:702
+#: gio/gsettings-tool.c:714
 msgid "  SCHEMADIR A directory to search for additional schemas\n"
 msgstr "  КАТ_СХЕМ  Каталог для поиска дополнительных схем\n"
 
-#: gio/gsettings-tool.c:710
+#: gio/gsettings-tool.c:722
 msgid ""
 "  SCHEMA    The name of the schema\n"
 "  PATH      The path, for relocatable schemas\n"
@@ -3845,216 +3872,216 @@ msgstr ""
 "  СХЕМА     Идентификатор схемы\n"
 "  ПУТЬ      Путь, для перемещаемых схем\n"
 
-#: gio/gsettings-tool.c:715
+#: gio/gsettings-tool.c:727
 msgid "  KEY       The (optional) key within the schema\n"
 msgstr "  КЛЮЧ      (Необязательный) ключ схемы\n"
 
-#: gio/gsettings-tool.c:719
+#: gio/gsettings-tool.c:731
 msgid "  KEY       The key within the schema\n"
 msgstr "  КЛЮЧ      Ключ схемы\n"
 
-#: gio/gsettings-tool.c:723
+#: gio/gsettings-tool.c:735
 msgid "  VALUE     The value to set\n"
 msgstr "  ЗНАЧЕНИЕ  Присваиваемое значение\n"
 
-#: gio/gsettings-tool.c:778
+#: gio/gsettings-tool.c:790
 #, c-format
 msgid "Could not load schemas from %s: %s\n"
 msgstr "Не удалось загрузить схемы из «%s»: %s\n"
 
-#: gio/gsettings-tool.c:790
+#: gio/gsettings-tool.c:802
 msgid "No schemas installed\n"
 msgstr "Схемы не установлены\n"
 
-#: gio/gsettings-tool.c:869
+#: gio/gsettings-tool.c:881
 msgid "Empty schema name given\n"
 msgstr "Указано пустое имя схемы\n"
 
-#: gio/gsettings-tool.c:924
+#: gio/gsettings-tool.c:936
 #, c-format
 msgid "No such key “%s”\n"
 msgstr "Ключ «%s» отсутствует\n"
 
-#: gio/gsocket.c:413
+#: gio/gsocket.c:417
 msgid "Invalid socket, not initialized"
 msgstr "Недопустимый сокет, не инициализировано"
 
-#: gio/gsocket.c:420
+#: gio/gsocket.c:424
 #, c-format
 msgid "Invalid socket, initialization failed due to: %s"
 msgstr "Недопустимый сокет, инициализация не удалась по причине: %s"
 
-#: gio/gsocket.c:428
+#: gio/gsocket.c:432
 msgid "Socket is already closed"
 msgstr "Сокет уже закрыт"
 
-#: gio/gsocket.c:443 gio/gsocket.c:3190 gio/gsocket.c:4420 gio/gsocket.c:4478
+#: gio/gsocket.c:447 gio/gsocket.c:3194 gio/gsocket.c:4427 gio/gsocket.c:4485
 msgid "Socket I/O timed out"
 msgstr "Превышено время ожидания ввода-вывода сокета"
 
-#: gio/gsocket.c:578
+#: gio/gsocket.c:582
 #, c-format
 msgid "creating GSocket from fd: %s"
 msgstr "создаётся GSocket из fd: %s"
 
-#: gio/gsocket.c:607 gio/gsocket.c:671 gio/gsocket.c:678
+#: gio/gsocket.c:611 gio/gsocket.c:675 gio/gsocket.c:682
 #, c-format
 msgid "Unable to create socket: %s"
 msgstr "Не удалось создать сокет: %s"
 
-#: gio/gsocket.c:671
+#: gio/gsocket.c:675
 msgid "Unknown family was specified"
 msgstr "Указано неизвестное семейство"
 
-#: gio/gsocket.c:678
+#: gio/gsocket.c:682
 msgid "Unknown protocol was specified"
 msgstr "Указан неизвестный протокол"
 
-#: gio/gsocket.c:1169
+#: gio/gsocket.c:1173
 #, c-format
 msgid "Cannot use datagram operations on a non-datagram socket."
 msgstr ""
 "Невозможно использовать дейтаграммные операции на не-дейтаграммном сокете."
 
-#: gio/gsocket.c:1186
+#: gio/gsocket.c:1190
 #, c-format
 msgid "Cannot use datagram operations on a socket with a timeout set."
 msgstr ""
 "Невозможно использовать дейтаграммные операции на сокете с установленным "
 "тайм-аутом."
 
-#: gio/gsocket.c:1993
+#: gio/gsocket.c:1997
 #, c-format
 msgid "could not get local address: %s"
 msgstr "не удалось получить локальный адрес: %s"
 
-#: gio/gsocket.c:2039
+#: gio/gsocket.c:2043
 #, c-format
 msgid "could not get remote address: %s"
 msgstr "не удалось получить удаленный адрес: %s"
 
-#: gio/gsocket.c:2105
+#: gio/gsocket.c:2109
 #, c-format
 msgid "could not listen: %s"
 msgstr "не удалось слушать: %s"
 
-#: gio/gsocket.c:2209
+#: gio/gsocket.c:2213
 #, c-format
 msgid "Error binding to address %s: %s"
 msgstr "Произошла ошибка при связывании к адресу %s: %s"
 
-#: gio/gsocket.c:2385 gio/gsocket.c:2422 gio/gsocket.c:2532 gio/gsocket.c:2557
-#: gio/gsocket.c:2620 gio/gsocket.c:2678 gio/gsocket.c:2696
+#: gio/gsocket.c:2389 gio/gsocket.c:2426 gio/gsocket.c:2536 gio/gsocket.c:2561
+#: gio/gsocket.c:2624 gio/gsocket.c:2682 gio/gsocket.c:2700
 #, c-format
 msgid "Error joining multicast group: %s"
 msgstr "Ошибка при вступлении в мультикастовую группу: %s"
 
-#: gio/gsocket.c:2386 gio/gsocket.c:2423 gio/gsocket.c:2533 gio/gsocket.c:2558
-#: gio/gsocket.c:2621 gio/gsocket.c:2679 gio/gsocket.c:2697
+#: gio/gsocket.c:2390 gio/gsocket.c:2427 gio/gsocket.c:2537 gio/gsocket.c:2562
+#: gio/gsocket.c:2625 gio/gsocket.c:2683 gio/gsocket.c:2701
 #, c-format
 msgid "Error leaving multicast group: %s"
 msgstr "Ошибка при выходе из мультикастовой группы: %s"
 
-#: gio/gsocket.c:2387
+#: gio/gsocket.c:2391
 msgid "No support for source-specific multicast"
 msgstr "Отсутствует поддержка мультикаста по источнику"
 
-#: gio/gsocket.c:2534
+#: gio/gsocket.c:2538
 msgid "Unsupported socket family"
 msgstr "Неподдерживаемое семейство сокетов"
 
-#: gio/gsocket.c:2559
+#: gio/gsocket.c:2563
 msgid "source-specific not an IPv4 address"
 msgstr "специфичный источник, не адрес IP4"
 
-#: gio/gsocket.c:2583
+#: gio/gsocket.c:2587
 #, c-format
 msgid "Interface name too long"
 msgstr "Имя интерфейса слишком длинное"
 
-#: gio/gsocket.c:2596 gio/gsocket.c:2646
+#: gio/gsocket.c:2600 gio/gsocket.c:2650
 #, c-format
 msgid "Interface not found: %s"
 msgstr "Интерфейс не найден: %s"
 
-#: gio/gsocket.c:2622
+#: gio/gsocket.c:2626
 msgid "No support for IPv4 source-specific multicast"
 msgstr "Отсутствует поддержка IPv4 мультикаста по источнику"
 
-#: gio/gsocket.c:2680
+#: gio/gsocket.c:2684
 msgid "No support for IPv6 source-specific multicast"
 msgstr "Отсутствует поддержка IPv6 мультикаста по источнику"
 
-#: gio/gsocket.c:2889
+#: gio/gsocket.c:2893
 #, c-format
 msgid "Error accepting connection: %s"
 msgstr "Ошибка приёма подключения: %s"
 
-#: gio/gsocket.c:3015
+#: gio/gsocket.c:3019
 msgid "Connection in progress"
 msgstr "Выполняется соединение"
 
-#: gio/gsocket.c:3066
+#: gio/gsocket.c:3070
 msgid "Unable to get pending error: "
 msgstr "Не удалось получить ошибку ожидания: "
 
-#: gio/gsocket.c:3255
+#: gio/gsocket.c:3259
 #, c-format
 msgid "Error receiving data: %s"
 msgstr "Ошибка при получении данных: %s"
 
-#: gio/gsocket.c:3452
+#: gio/gsocket.c:3456
 #, c-format
 msgid "Error sending data: %s"
 msgstr "Ошибка при отправлении данных: %s"
 
-#: gio/gsocket.c:3639
+#: gio/gsocket.c:3643
 #, c-format
 msgid "Unable to shutdown socket: %s"
 msgstr "Не удалось выключить сокет: %s"
 
-#: gio/gsocket.c:3720
+#: gio/gsocket.c:3724
 #, c-format
 msgid "Error closing socket: %s"
 msgstr "Произошла ошибка при закрытии сокета: %s"
 
-#: gio/gsocket.c:4413
+#: gio/gsocket.c:4420
 #, c-format
 msgid "Waiting for socket condition: %s"
 msgstr "Ожидание состояния сокета: %s"
 
-#: gio/gsocket.c:4804 gio/gsocket.c:4820 gio/gsocket.c:4833
+#: gio/gsocket.c:4810 gio/gsocket.c:4826 gio/gsocket.c:4839
 #, c-format
 msgid "Unable to send message: %s"
 msgstr "Не удалось отправить сообщение: %s"
 
-#: gio/gsocket.c:4805 gio/gsocket.c:4821 gio/gsocket.c:4834
+#: gio/gsocket.c:4811 gio/gsocket.c:4827 gio/gsocket.c:4840
 msgid "Message vectors too large"
 msgstr "Слишком большие массивы сообщения"
 
-#: gio/gsocket.c:4850 gio/gsocket.c:4852 gio/gsocket.c:4999 gio/gsocket.c:5084
-#: gio/gsocket.c:5262 gio/gsocket.c:5302 gio/gsocket.c:5304
+#: gio/gsocket.c:4856 gio/gsocket.c:4858 gio/gsocket.c:5005 gio/gsocket.c:5090
+#: gio/gsocket.c:5268 gio/gsocket.c:5308 gio/gsocket.c:5310
 #, c-format
 msgid "Error sending message: %s"
 msgstr "Произошла ошибка при отправлении сообщения: %s"
 
-#: gio/gsocket.c:5026
+#: gio/gsocket.c:5032
 msgid "GSocketControlMessage not supported on Windows"
 msgstr "GSocketControlMessage не поддерживается в Windows"
 
-#: gio/gsocket.c:5495 gio/gsocket.c:5571 gio/gsocket.c:5797
+#: gio/gsocket.c:5505 gio/gsocket.c:5581 gio/gsocket.c:5807
 #, c-format
 msgid "Error receiving message: %s"
 msgstr "Произошла ошибка при получении сообщения: %s"
 
-#: gio/gsocket.c:6070 gio/gsocket.c:6081 gio/gsocket.c:6127
+#: gio/gsocket.c:6090 gio/gsocket.c:6101 gio/gsocket.c:6164
 #, c-format
 msgid "Unable to read socket credentials: %s"
 msgstr "Не удалось прочитать полномочия сокета: %s"
 
-#: gio/gsocket.c:6136
+#: gio/gsocket.c:6173
 msgid "g_socket_get_credentials not implemented for this OS"
-msgstr "Функция g_socket_get_credentials не реализована в этой ОС"
+msgstr "g_socket_get_credentials не реализован для данной ОС"
 
 #: gio/gsocketclient.c:191
 #, c-format
@@ -4070,11 +4097,11 @@ msgstr "Не удалось подключиться к %s: "
 msgid "Could not connect: "
 msgstr "Не удалось подключиться к: "
 
-#: gio/gsocketclient.c:1162 gio/gsocketclient.c:1749
+#: gio/gsocketclient.c:1202 gio/gsocketclient.c:1793
 msgid "Proxying over a non-TCP connection is not supported."
 msgstr "Проксирование через не-TCP соединение не поддерживается."
 
-#: gio/gsocketclient.c:1194 gio/gsocketclient.c:1778
+#: gio/gsocketclient.c:1234 gio/gsocketclient.c:1822
 #, c-format
 msgid "Proxy protocol “%s” is not supported."
 msgstr "Протокол прокси «%s» не поддерживается."
@@ -4176,7 +4203,7 @@ msgstr "Прокси SOCKSv5 не поддерживает предложенн
 msgid "Unknown SOCKSv5 proxy error."
 msgstr "Неизвестная ошибка прокси SOCKSv5."
 
-#: gio/gtestdbus.c:612 glib/gspawn-win32.c:311
+#: gio/gtestdbus.c:612 glib/gspawn-win32.c:314
 #, c-format
 msgid "Failed to create pipe for communicating with child process (%s)"
 msgstr "Не удалось создать канал для сообщения с процессом-потомком (%s)"
@@ -4200,44 +4227,66 @@ msgstr "Не найдено ни одного допустимого адрес
 msgid "Error reverse-resolving “%s”: %s"
 msgstr "Ошибка обратного разрешения «%s»: %s"
 
-#: gio/gthreadedresolver.c:676 gio/gthreadedresolver.c:755
-#: gio/gthreadedresolver.c:853 gio/gthreadedresolver.c:903
+#. Translators: the placeholder is a DNS record type, such as ‘MX’ or ‘SRV’
+#: gio/gthreadedresolver.c:550 gio/gthreadedresolver.c:572
+#: gio/gthreadedresolver.c:610 gio/gthreadedresolver.c:657
+#: gio/gthreadedresolver.c:686 gio/gthreadedresolver.c:698
+#, c-format
+msgid "Error parsing DNS %s record: malformed DNS packet"
+msgstr "Ошибка при разборе записи DNS %s: некорректный DNS-пакет"
+
+#: gio/gthreadedresolver.c:756 gio/gthreadedresolver.c:893
+#: gio/gthreadedresolver.c:991 gio/gthreadedresolver.c:1041
 #, c-format
 msgid "No DNS record of the requested type for “%s”"
 msgstr "Запись DNS с запрашиваемым типом «%s» отсутствует"
 
-#: gio/gthreadedresolver.c:681 gio/gthreadedresolver.c:858
+#: gio/gthreadedresolver.c:761 gio/gthreadedresolver.c:996
 #, c-format
 msgid "Temporarily unable to resolve “%s”"
 msgstr "Временно невозможно разрешить «%s»"
 
-#: gio/gthreadedresolver.c:686 gio/gthreadedresolver.c:863
-#: gio/gthreadedresolver.c:973
+#: gio/gthreadedresolver.c:766 gio/gthreadedresolver.c:1001
+#: gio/gthreadedresolver.c:1111
 #, c-format
 msgid "Error resolving “%s”"
 msgstr "Произошла ошибка разрешения «%s»"
 
-#: gio/gtlscertificate.c:431
+#: gio/gthreadedresolver.c:780 gio/gthreadedresolver.c:804
+#: gio/gthreadedresolver.c:829 gio/gthreadedresolver.c:844
+msgid "Malformed DNS packet"
+msgstr "Некорректный DNS-пакет"
+
+#: gio/gthreadedresolver.c:886
+#, c-format
+msgid "Failed to parse DNS response for “%s”: "
+msgstr "Не удалось разобрать ответ DNS для \"%s\": "
+
+#: gio/gtlscertificate.c:478
 msgid "No PEM-encoded private key found"
 msgstr "Не найден секретный ключ в формате PEM"
 
-#: gio/gtlscertificate.c:441
+#: gio/gtlscertificate.c:488
 msgid "Cannot decrypt PEM-encoded private key"
 msgstr "Не удалось расшифровать секретный ключ в формате PEM"
 
-#: gio/gtlscertificate.c:452
+#: gio/gtlscertificate.c:499
 msgid "Could not parse PEM-encoded private key"
 msgstr "Не удалось разобрать секретный ключ в формате PEM"
 
-#: gio/gtlscertificate.c:479
+#: gio/gtlscertificate.c:526
 msgid "No PEM-encoded certificate found"
 msgstr "Не найден сертификат в формате PEM"
 
-#: gio/gtlscertificate.c:488
+#: gio/gtlscertificate.c:535
 msgid "Could not parse PEM-encoded certificate"
 msgstr "Не удалось разобрать сертификат в формате PEM"
 
-#: gio/gtlscertificate.c:844
+#: gio/gtlscertificate.c:796
+msgid "The current TLS backend does not support PKCS #12"
+msgstr "Текущий бэкенд TLS не поддерживает PKCS #12"
+
+#: gio/gtlscertificate.c:1013
 msgid "This GTlsBackend does not support creating PKCS #11 certificates"
 msgstr "Сервис GTlsBackend не поддерживает создание сертификатов PKCS #11"
 
@@ -4263,7 +4312,11 @@ msgstr ""
 msgid "The password entered is incorrect."
 msgstr "Введённый пароль неверен."
 
-#: gio/gunixconnection.c:166 gio/gunixconnection.c:579
+#: gio/gunixconnection.c:125
+msgid "Sending FD is not supported"
+msgstr "Отправка дескриптора файла не поддерживается"
+
+#: gio/gunixconnection.c:178 gio/gunixconnection.c:596
 #, c-format
 msgid "Expecting 1 control message, got %d"
 msgid_plural "Expecting 1 control message, got %d"
@@ -4271,11 +4324,11 @@ msgstr[0] "Ожидается 1 контрольное сообщение, по
 msgstr[1] "Ожидается 1 контрольное сообщение, получено %d"
 msgstr[2] "Ожидается 1 контрольное сообщение, получено %d"
 
-#: gio/gunixconnection.c:182 gio/gunixconnection.c:591
+#: gio/gunixconnection.c:194 gio/gunixconnection.c:608
 msgid "Unexpected type of ancillary data"
 msgstr "Неожиданный тип вспомогательных данных"
 
-#: gio/gunixconnection.c:200
+#: gio/gunixconnection.c:212
 #, c-format
 msgid "Expecting one fd, but got %d\n"
 msgid_plural "Expecting one fd, but got %d\n"
@@ -4283,37 +4336,41 @@ msgstr[0] "Ожидается один файловый дескриптор н
 msgstr[1] "Ожидается один файловый дескриптор но получено %d\n"
 msgstr[2] "Ожидается один файловый дескриптор но получено %d\n"
 
-#: gio/gunixconnection.c:219
+#: gio/gunixconnection.c:231
 msgid "Received invalid fd"
 msgstr "Получен недопустимый файловый дескриптор"
 
-#: gio/gunixconnection.c:363
+#: gio/gunixconnection.c:238
+msgid "Receiving FD is not supported"
+msgstr "Получение дескриптора файла не поддерживается"
+
+#: gio/gunixconnection.c:380
 msgid "Error sending credentials: "
 msgstr "Произошла ошибка при отправлении мандата: "
 
-#: gio/gunixconnection.c:520
+#: gio/gunixconnection.c:537
 #, c-format
 msgid "Error checking if SO_PASSCRED is enabled for socket: %s"
 msgstr "Произошла ошибка при проверке включения SO_PASSCRED для сокета: %s"
 
-#: gio/gunixconnection.c:536
+#: gio/gunixconnection.c:553
 #, c-format
 msgid "Error enabling SO_PASSCRED: %s"
 msgstr "Произошла ошибка при включении SO_PASSCRED: %s"
 
-#: gio/gunixconnection.c:565
+#: gio/gunixconnection.c:582
 msgid ""
 "Expecting to read a single byte for receiving credentials but read zero bytes"
 msgstr ""
 "Ожидалось прочитать один байт идентификационной информации (credentials), но "
 "не прочитано ни одного байта"
 
-#: gio/gunixconnection.c:605
+#: gio/gunixconnection.c:622
 #, c-format
 msgid "Not expecting control message, but got %d"
 msgstr "Контрольное сообщение не ожидалось, но получено %d"
 
-#: gio/gunixconnection.c:630
+#: gio/gunixconnection.c:647
 #, c-format
 msgid "Error while disabling SO_PASSCRED: %s"
 msgstr "Произошла ошибка при отключении SO_PASSCRED: %s"
@@ -4329,7 +4386,7 @@ msgstr "Ошибка при чтении из файлового дескрип
 msgid "Error closing file descriptor: %s"
 msgstr "Ошибка при закрытии файлового дескриптора: %s"
 
-#: gio/gunixmounts.c:2785 gio/gunixmounts.c:2838
+#: gio/gunixmounts.c:2809 gio/gunixmounts.c:2862
 msgid "Filesystem root"
 msgstr "Корень файловой системы"
 
@@ -4340,7 +4397,7 @@ msgstr "Корень файловой системы"
 msgid "Error writing to file descriptor: %s"
 msgstr "Ошибка при записи в файловый дескриптор: %s"
 
-#: gio/gunixsocketaddress.c:244
+#: gio/gunixsocketaddress.c:251
 msgid "Abstract UNIX domain socket addresses not supported on this system"
 msgstr ""
 "Абстрактные адреса доменных сокетов UNIX не поддерживаются на этой системе"
@@ -4491,8 +4548,8 @@ msgstr "Не удалось дополнить строку выполнения
 msgid "Unrepresentable character in conversion input"
 msgstr "Во входной строке для преобразования обнаружен неотображаемый символ"
 
-#: glib/gconvert.c:495 glib/gutf8.c:871 glib/gutf8.c:1083 glib/gutf8.c:1220
-#: glib/gutf8.c:1324
+#: glib/gconvert.c:495 glib/gutf8.c:886 glib/gutf8.c:1099 glib/gutf8.c:1236
+#: glib/gutf8.c:1340
 msgid "Partial character sequence at end of input"
 msgstr ""
 "Неполная символьная последовательность содержится в конце входных данных"
@@ -4809,62 +4866,62 @@ msgstr "Вс"
 #: glib/gdatetime.c:468
 msgctxt "full month name with day"
 msgid "January"
-msgstr "января"
+msgstr "Января"
 
 #: glib/gdatetime.c:470
 msgctxt "full month name with day"
 msgid "February"
-msgstr "февраля"
+msgstr "Февраля"
 
 #: glib/gdatetime.c:472
 msgctxt "full month name with day"
 msgid "March"
-msgstr "марта"
+msgstr "Ð\9cарта"
 
 #: glib/gdatetime.c:474
 msgctxt "full month name with day"
 msgid "April"
-msgstr "апреля"
+msgstr "Ð\90преля"
 
 #: glib/gdatetime.c:476
 msgctxt "full month name with day"
 msgid "May"
-msgstr "мая"
+msgstr "Ð\9cая"
 
 #: glib/gdatetime.c:478
 msgctxt "full month name with day"
 msgid "June"
-msgstr "июня"
+msgstr "Ð\98юня"
 
 #: glib/gdatetime.c:480
 msgctxt "full month name with day"
 msgid "July"
-msgstr "июля"
+msgstr "Ð\98юля"
 
 #: glib/gdatetime.c:482
 msgctxt "full month name with day"
 msgid "August"
-msgstr "августа"
+msgstr "Ð\90вгуста"
 
 #: glib/gdatetime.c:484
 msgctxt "full month name with day"
 msgid "September"
-msgstr "сентября"
+msgstr "Сентября"
 
 #: glib/gdatetime.c:486
 msgctxt "full month name with day"
 msgid "October"
-msgstr "октября"
+msgstr "Ð\9eктября"
 
 #: glib/gdatetime.c:488
 msgctxt "full month name with day"
 msgid "November"
-msgstr "ноября"
+msgstr "Ð\9dоября"
 
 #: glib/gdatetime.c:490
 msgctxt "full month name with day"
 msgid "December"
-msgstr "декабря"
+msgstr "Ð\94екабря"
 
 #. Translators: Some languages need different grammatical forms of
 #. * month names depending on whether they are standalone or in a full
@@ -4886,62 +4943,62 @@ msgstr "декабря"
 #: glib/gdatetime.c:555
 msgctxt "abbreviated month name with day"
 msgid "Jan"
-msgstr "янв"
+msgstr "Янв"
 
 #: glib/gdatetime.c:557
 msgctxt "abbreviated month name with day"
 msgid "Feb"
-msgstr "фев"
+msgstr "Фев"
 
 #: glib/gdatetime.c:559
 msgctxt "abbreviated month name with day"
 msgid "Mar"
-msgstr "мар"
+msgstr "Ð\9cар"
 
 #: glib/gdatetime.c:561
 msgctxt "abbreviated month name with day"
 msgid "Apr"
-msgstr "апр"
+msgstr "Ð\90пр"
 
 #: glib/gdatetime.c:563
 msgctxt "abbreviated month name with day"
 msgid "May"
-msgstr "маÑ\8f"
+msgstr "Ð\9cай"
 
 #: glib/gdatetime.c:565
 msgctxt "abbreviated month name with day"
 msgid "Jun"
-msgstr "июн"
+msgstr "Ð\98юн"
 
 #: glib/gdatetime.c:567
 msgctxt "abbreviated month name with day"
 msgid "Jul"
-msgstr "июл"
+msgstr "Ð\98юл"
 
 #: glib/gdatetime.c:569
 msgctxt "abbreviated month name with day"
 msgid "Aug"
-msgstr "авг"
+msgstr "Ð\90вг"
 
 #: glib/gdatetime.c:571
 msgctxt "abbreviated month name with day"
 msgid "Sep"
-msgstr "сен"
+msgstr "Сен"
 
 #: glib/gdatetime.c:573
 msgctxt "abbreviated month name with day"
 msgid "Oct"
-msgstr "окт"
+msgstr "Ð\9eкт"
 
 #: glib/gdatetime.c:575
 msgctxt "abbreviated month name with day"
 msgid "Nov"
-msgstr "ноя"
+msgstr "Ð\9dоя"
 
 #: glib/gdatetime.c:577
 msgctxt "abbreviated month name with day"
 msgid "Dec"
-msgstr "дек"
+msgstr "Ð\94ек"
 
 #. Translators: 'before midday' indicator
 #: glib/gdatetime.c:594
@@ -5065,15 +5122,15 @@ msgstr ""
 "Невозможно выполнить непосредственное чтение в функции "
 "g_io_channel_read_to_end"
 
-#: glib/gkeyfile.c:791
+#: glib/gkeyfile.c:794
 msgid "Valid key file could not be found in search dirs"
 msgstr "В каталогах поиска не удалось найти допустимый файл ключей"
 
-#: glib/gkeyfile.c:828
+#: glib/gkeyfile.c:831
 msgid "Not a regular file"
 msgstr "Не является обычным файлом"
 
-#: glib/gkeyfile.c:1283
+#: glib/gkeyfile.c:1289
 #, c-format
 msgid ""
 "Key file contains line “%s” which is not a key-value pair, group, or comment"
@@ -5081,44 +5138,44 @@ msgstr ""
 "Файл ключей содержит строку «%s», которая не является парой «ключ-значение», "
 "группой или комментарием"
 
-#: glib/gkeyfile.c:1340
+#: glib/gkeyfile.c:1346
 #, c-format
 msgid "Invalid group name: %s"
 msgstr "Недопустимое имя группы: %s"
 
-#: glib/gkeyfile.c:1362
+#: glib/gkeyfile.c:1370
 msgid "Key file does not start with a group"
 msgstr "Файл ключей не начинается с группы"
 
-#: glib/gkeyfile.c:1388
+#: glib/gkeyfile.c:1394
 #, c-format
-msgid "Invalid key name: %s"
-msgstr "Недопустимое имя ключа: %s"
+msgid "Invalid key name: %.*s"
+msgstr "Недопустимое имя ключа: %.*s"
 
-#: glib/gkeyfile.c:1415
+#: glib/gkeyfile.c:1422
 #, c-format
 msgid "Key file contains unsupported encoding “%s”"
 msgstr "Файл ключей содержит неподдерживаемую кодировку «%s»"
 
-#: glib/gkeyfile.c:1664 glib/gkeyfile.c:1837 glib/gkeyfile.c:3287
-#: glib/gkeyfile.c:3351 glib/gkeyfile.c:3481 glib/gkeyfile.c:3613
-#: glib/gkeyfile.c:3759 glib/gkeyfile.c:3994 glib/gkeyfile.c:4061
+#: glib/gkeyfile.c:1677 glib/gkeyfile.c:1850 glib/gkeyfile.c:3297
+#: glib/gkeyfile.c:3361 glib/gkeyfile.c:3491 glib/gkeyfile.c:3623
+#: glib/gkeyfile.c:3769 glib/gkeyfile.c:4004 glib/gkeyfile.c:4071
 #, c-format
 msgid "Key file does not have group “%s”"
 msgstr "Файл ключей не содержит группу «%s»"
 
-#: glib/gkeyfile.c:1792
+#: glib/gkeyfile.c:1805
 #, c-format
 msgid "Key file does not have key “%s” in group “%s”"
 msgstr "Файл ключей не содержит ключа «%s» в группе «%s»"
 
-#: glib/gkeyfile.c:1954 glib/gkeyfile.c:2070
+#: glib/gkeyfile.c:1967 glib/gkeyfile.c:2083
 #, c-format
 msgid "Key file contains key “%s” with value “%s” which is not UTF-8"
 msgstr ""
 "Файл ключей содержит ключ «%s», значение которого «%s» не в кодировке UTF-8"
 
-#: glib/gkeyfile.c:1974 glib/gkeyfile.c:2090 glib/gkeyfile.c:2529
+#: glib/gkeyfile.c:1987 glib/gkeyfile.c:2103 glib/gkeyfile.c:2542
 #, c-format
 msgid ""
 "Key file contains key “%s” which has a value that cannot be interpreted."
@@ -5126,7 +5183,7 @@ msgstr ""
 "Файл ключей содержит ключ «%s», значение которого не удалось "
 "интерпретировать."
 
-#: glib/gkeyfile.c:2747 glib/gkeyfile.c:3116
+#: glib/gkeyfile.c:2757 glib/gkeyfile.c:3126
 #, c-format
 msgid ""
 "Key file contains key “%s” in group “%s” which has a value that cannot be "
@@ -5135,36 +5192,36 @@ msgstr ""
 "Файл ключей содержит ключ «%s» в группе «%s», значение которого не удалось "
 "интерпретировать."
 
-#: glib/gkeyfile.c:2825 glib/gkeyfile.c:2902
+#: glib/gkeyfile.c:2835 glib/gkeyfile.c:2912
 #, c-format
 msgid "Key “%s” in group “%s” has value “%s” where %s was expected"
 msgstr "Значение ключа «%s» в группе «%s» имеет значение «%s», но ожидалось %s"
 
-#: glib/gkeyfile.c:4304
+#: glib/gkeyfile.c:4324
 msgid "Key file contains escape character at end of line"
 msgstr "Файл ключей содержит символ escape в конце строки"
 
-#: glib/gkeyfile.c:4326
+#: glib/gkeyfile.c:4346
 #, c-format
 msgid "Key file contains invalid escape sequence “%s”"
 msgstr "Файл ключей содержит неверную экранирующую последовательность «%s»"
 
-#: glib/gkeyfile.c:4470
+#: glib/gkeyfile.c:4491
 #, c-format
 msgid "Value “%s” cannot be interpreted as a number."
 msgstr "Не удалось преобразовать значение «%s» в число."
 
-#: glib/gkeyfile.c:4484
+#: glib/gkeyfile.c:4505
 #, c-format
 msgid "Integer value “%s” out of range"
 msgstr "Целочисленное значение «%s» выходит за пределы"
 
-#: glib/gkeyfile.c:4517
+#: glib/gkeyfile.c:4538
 #, c-format
 msgid "Value “%s” cannot be interpreted as a float number."
 msgstr "Не удалось преобразовать «%s» в число с плавающей запятой."
 
-#: glib/gkeyfile.c:4556
+#: glib/gkeyfile.c:4577
 #, c-format
 msgid "Value “%s” cannot be interpreted as a boolean."
 msgstr "Не удалось преобразовать «%s» в булево значение."
@@ -5458,7 +5515,7 @@ msgstr "Произошла ошибка при разборе параметра
 msgid "Missing argument for %s"
 msgstr "Отсутствует аргумент для %s"
 
-#: glib/goption.c:2185
+#: glib/goption.c:2184
 #, c-format
 msgid "Unknown option %s"
 msgstr "Неизвестный параметр %s"
@@ -5766,7 +5823,7 @@ msgstr "слишком длинное имя в (*MARK), (*PRUNE), (*SKIP) ил
 
 #: glib/gregex.c:520
 msgid "character value in \\u.... sequence is too large"
-msgstr "слишком большое значение символа в \\u…"
+msgstr "значение символа в последовательности \\u.... слишком велико"
 
 #: glib/gregex.c:743 glib/gregex.c:1988
 #, c-format
@@ -5870,125 +5927,135 @@ msgstr "Текст был пуст (или содержал только про
 #: glib/gspawn.c:310
 #, c-format
 msgid "Failed to read data from child process (%s)"
-msgstr "Ð\9dе Ñ\83далоÑ\81Ñ\8c Ð¿Ñ\80оÑ\87иÑ\82аÑ\82Ñ\8c Ð´Ð°Ð½Ð½Ñ\8bе Ð¸Ð· Ð¿Ñ\80оÑ\86еÑ\81Ñ\81а-поÑ\82омка (%s)"
+msgstr "Ð\9dе Ñ\83далоÑ\81Ñ\8c Ð¿Ñ\80оÑ\87иÑ\82аÑ\82Ñ\8c Ð´Ð°Ð½Ð½Ñ\8bе Ð¸Ð· Ð´Ð¾Ñ\87еÑ\80него Ð¿Ñ\80оÑ\86еÑ\81Ñ\81а (%s)"
 
-#: glib/gspawn.c:461
+#: glib/gspawn.c:462
 #, c-format
 msgid "Unexpected error in reading data from a child process (%s)"
-msgstr ""
-"Произошла неожиданная ошибка при чтении данных из процесса-потомка (%s)"
+msgstr "Неожиданная ошибка при чтении данных из дочернего процесса (%s)"
 
-#: glib/gspawn.c:546
+#: glib/gspawn.c:547
 #, c-format
 msgid "Unexpected error in waitpid() (%s)"
 msgstr "Произошла неожиданная ошибка в функции waitpid() (%s)"
 
-#: glib/gspawn.c:1166 glib/gspawn-win32.c:1407
+#: glib/gspawn.c:1175 glib/gspawn-win32.c:1438
 #, c-format
 msgid "Child process exited with code %ld"
 msgstr "Дочерний процесс завершился с кодом %ld"
 
-#: glib/gspawn.c:1174
+#: glib/gspawn.c:1183
 #, c-format
 msgid "Child process killed by signal %ld"
 msgstr "Дочерний процесс убит по сигналу %ld"
 
-#: glib/gspawn.c:1181
+#: glib/gspawn.c:1190
 #, c-format
 msgid "Child process stopped by signal %ld"
 msgstr "Дочерний процесс остановлен по сигналу %ld"
 
-#: glib/gspawn.c:1188
+#: glib/gspawn.c:1197
 #, c-format
 msgid "Child process exited abnormally"
 msgstr "Дочерний процесс аварийно завершил работу"
 
-#: glib/gspawn.c:1864 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
+#: glib/gspawn.c:1890 glib/gspawn-win32.c:353 glib/gspawn-win32.c:361
 #, c-format
 msgid "Failed to read from child pipe (%s)"
-msgstr "Ð\9dе Ñ\83далоÑ\81Ñ\8c Ð¿Ñ\80оÑ\87иÑ\82аÑ\82Ñ\8c Ð´Ð°Ð½Ð½Ñ\8bе Ð¸Ð· ÐºÐ°Ð½Ð°Ð»Ð° Ð¿Ð¾Ñ\82омка (%s)"
+msgstr "Ð\9dе Ñ\83далоÑ\81Ñ\8c Ð²Ñ\8bполниÑ\82Ñ\8c Ñ\87Ñ\82ение Ð¸Ð· Ð´Ð¾Ñ\87еÑ\80него ÐºÐ°Ð½Ð°Ð»а (%s)"
 
-#: glib/gspawn.c:2166
+#: glib/gspawn.c:2253
 #, c-format
 msgid "Failed to spawn child process “%s” (%s)"
-msgstr "Ð\9dе Ñ\83далоÑ\81Ñ\8c Ð²Ñ\8bполниÑ\82Ñ\8c Ð¿Ñ\80оÑ\86еÑ\81Ñ\81-поÑ\82омок Â«%s» (%s)"
+msgstr "Ð\9dе Ñ\83далоÑ\81Ñ\8c Ð·Ð°Ð¿Ñ\83Ñ\81Ñ\82иÑ\82Ñ\8c Ð´Ð¾Ñ\87еÑ\80ний Ð¿Ñ\80оÑ\86еÑ\81Ñ\81 \"%s\" (%s)"
 
-#: glib/gspawn.c:2283
+#: glib/gspawn.c:2370
 #, c-format
 msgid "Failed to fork (%s)"
 msgstr "Функция fork завершилась неудачно (%s)"
 
-#: glib/gspawn.c:2443 glib/gspawn-win32.c:381
+#: glib/gspawn.c:2530 glib/gspawn-win32.c:384
 #, c-format
 msgid "Failed to change to directory “%s” (%s)"
 msgstr "Не удалось сменить каталог на «%s» (%s)"
 
-#: glib/gspawn.c:2453
+#: glib/gspawn.c:2540
 #, c-format
 msgid "Failed to execute child process “%s” (%s)"
-msgstr "Не удалось выполнить процесс-потомок «%s» (%s)"
+msgstr "Не удалось выполнить дочерний процесс \"%s\" (%s)"
+
+#: glib/gspawn.c:2550
+#, c-format
+msgid "Failed to open file to remap file descriptor (%s)"
+msgstr "Не удалось открыть файл для изменения дескриптора файла (%s)"
 
-#: glib/gspawn.c:2463
+#: glib/gspawn.c:2558
 #, c-format
-msgid "Failed to redirect output or input of child process (%s)"
-msgstr "Ð\9dе Ñ\83далоÑ\81Ñ\8c Ð¿ÐµÑ\80енапÑ\80авиÑ\82Ñ\8c Ð²Ñ\8bвод Ð¸Ð»Ð¸ Ð²Ð²Ð¾Ð´ Ð¿Ñ\80оÑ\86еÑ\81Ñ\81а-поÑ\82омка (%s)"
+msgid "Failed to duplicate file descriptor for child process (%s)"
+msgstr "Ð\9dе Ñ\83далоÑ\81Ñ\8c Ð´Ñ\83блиÑ\80оваÑ\82Ñ\8c Ð´ÐµÑ\81кÑ\80ипÑ\82оÑ\80 Ñ\84айла Ð´Ð»Ñ\8f Ð´Ð¾Ñ\87еÑ\80него Ð¿Ñ\80оÑ\86еÑ\81Ñ\81а (%s)"
 
-#: glib/gspawn.c:2472
+#: glib/gspawn.c:2567
 #, c-format
 msgid "Failed to fork child process (%s)"
-msgstr "Ð\9fÑ\80и Ñ\81оздании Ð¿Ñ\80оÑ\86еÑ\81Ñ\81а-поÑ\82омка функция fork завершилась неудачно (%s)"
+msgstr "Ð\9fÑ\80и Ñ\81оздании Ð´Ð¾Ñ\87еÑ\80него Ð¿Ñ\80оÑ\86еÑ\81Ñ\81а функция fork завершилась неудачно (%s)"
 
-#: glib/gspawn.c:2480
+#: glib/gspawn.c:2575
 #, c-format
 msgid "Failed to close file descriptor for child process (%s)"
 msgstr "Не удалось закрыть дескриптор файла для дочернего процесса (%s)"
 
-#: glib/gspawn.c:2488
+#: glib/gspawn.c:2583
 #, c-format
 msgid "Unknown error executing child process “%s”"
-msgstr "Ð\9fÑ\80оизоÑ\88ла Ð½ÐµÐ¸Ð·Ð²ÐµÑ\81Ñ\82наÑ\8f Ð¾Ñ\88ибка Ð¿Ñ\80и Ð²Ñ\8bполнении Ð¿Ñ\80оÑ\86еÑ\81Ñ\81а-поÑ\82Ð¾Ð¼Ðºа «%s»"
+msgstr "Ð\9fÑ\80оизоÑ\88ла Ð½ÐµÐ¸Ð·Ð²ÐµÑ\81Ñ\82наÑ\8f Ð¾Ñ\88ибка Ð¿Ñ\80и Ð²Ñ\8bполнении Ð´Ð¾Ñ\87еÑ\80него Ð¿Ñ\80оÑ\86еÑ\81Ñ\81а «%s»"
 
-#: glib/gspawn.c:2512
+#: glib/gspawn.c:2607
 #, c-format
 msgid "Failed to read enough data from child pid pipe (%s)"
 msgstr ""
-"Не удалось прочитать нужное количество данных из канала процесса-потомка (%s)"
+"Не удалось прочитать нужное количество данных из канала дочернего процесса "
+"(%s)"
 
-#: glib/gspawn-win32.c:294
+#: glib/gspawn-win32.c:297
 msgid "Failed to read data from child process"
-msgstr "Ð\9dе Ñ\83далоÑ\81Ñ\8c Ð¿Ñ\80оÑ\87иÑ\82аÑ\82Ñ\8c Ð´Ð°Ð½Ð½Ñ\8bе Ð¸Ð· Ð¿Ñ\80оÑ\86еÑ\81Ñ\81а-поÑ\82омка"
+msgstr "Ð\9dе Ñ\83далоÑ\81Ñ\8c Ð¿Ñ\80оÑ\87иÑ\82аÑ\82Ñ\8c Ð´Ð°Ð½Ð½Ñ\8bе Ð¸Ð· Ð´Ð¾Ñ\87еÑ\80него Ð¿Ñ\80оÑ\86еÑ\81Ñ\81а"
 
-#: glib/gspawn-win32.c:387 glib/gspawn-win32.c:392 glib/gspawn-win32.c:511
+#: glib/gspawn-win32.c:390 glib/gspawn-win32.c:395 glib/gspawn-win32.c:521
 #, c-format
 msgid "Failed to execute child process (%s)"
-msgstr "Не удалось выполнить процесс-потомок (%s)"
+msgstr "Не удалось выполнить дочерний процесс (%s)"
+
+#: glib/gspawn-win32.c:400
+#, c-format
+msgid "Failed to dup() in child process (%s)"
+msgstr "Не удалось выполнить dup() в дочернем процессе (%s)"
 
-#: glib/gspawn-win32.c:461
+#: glib/gspawn-win32.c:471
 #, c-format
 msgid "Invalid program name: %s"
 msgstr "Недопустимое имя программы: %s"
 
-#: glib/gspawn-win32.c:471 glib/gspawn-win32.c:779
+#: glib/gspawn-win32.c:481 glib/gspawn-win32.c:807
 #, c-format
 msgid "Invalid string in argument vector at %d: %s"
 msgstr "Недопустимая строка в векторе аргументов под номером %d: %s"
 
-#: glib/gspawn-win32.c:482 glib/gspawn-win32.c:794
+#: glib/gspawn-win32.c:492 glib/gspawn-win32.c:823
 #, c-format
 msgid "Invalid string in environment: %s"
 msgstr "Недопустимая строка в окружении: %s"
 
-#: glib/gspawn-win32.c:775
+#: glib/gspawn-win32.c:803
 #, c-format
 msgid "Invalid working directory: %s"
 msgstr "Недопустимый рабочий каталог: %s"
 
-#: glib/gspawn-win32.c:837
+#: glib/gspawn-win32.c:868
 #, c-format
 msgid "Failed to execute helper program (%s)"
 msgstr "Не удалось выполнить вспомогательную программу (%s)"
 
-#: glib/gspawn-win32.c:1064
+#: glib/gspawn-win32.c:1096
 msgid ""
 "Unexpected error in g_io_channel_win32_poll() reading data from a child "
 "process"
@@ -5996,21 +6063,21 @@ msgstr ""
 "Произошла неожиданная ошибка в функции g_io_channel_win32_poll() при чтении "
 "данных из процесса-потомка"
 
-#: glib/gstrfuncs.c:3345 glib/gstrfuncs.c:3447
+#: glib/gstrfuncs.c:3351 glib/gstrfuncs.c:3453
 msgid "Empty string is not a number"
 msgstr "Пустая строка не является числом"
 
-#: glib/gstrfuncs.c:3369
+#: glib/gstrfuncs.c:3375
 #, c-format
 msgid "“%s” is not a signed number"
 msgstr "«%s» не является числом со знаком"
 
-#: glib/gstrfuncs.c:3379 glib/gstrfuncs.c:3483
+#: glib/gstrfuncs.c:3385 glib/gstrfuncs.c:3489
 #, c-format
 msgid "Number “%s” is out of bounds [%s, %s]"
 msgstr "Число «%s» is out of bounds [%s, %s]"
 
-#: glib/gstrfuncs.c:3473
+#: glib/gstrfuncs.c:3479
 #, c-format
 msgid "“%s” is not an unsigned number"
 msgstr "«%s» не является числом без знака"
@@ -6071,170 +6138,170 @@ msgstr "URI не абсолютный, базовый адрес URI не ука
 msgid "Missing ‘=’ and parameter value"
 msgstr "Не хватает символа ‘=’ и значения параметра"
 
-#: glib/gutf8.c:817
+#: glib/gutf8.c:832
 msgid "Failed to allocate memory"
 msgstr "Не удалось выделить память"
 
-#: glib/gutf8.c:950
+#: glib/gutf8.c:965
 msgid "Character out of range for UTF-8"
 msgstr "Символ находится вне диапазона для UTF-8"
 
-#: glib/gutf8.c:1051 glib/gutf8.c:1060 glib/gutf8.c:1190 glib/gutf8.c:1199
-#: glib/gutf8.c:1338 glib/gutf8.c:1435
+#: glib/gutf8.c:1067 glib/gutf8.c:1076 glib/gutf8.c:1206 glib/gutf8.c:1215
+#: glib/gutf8.c:1354 glib/gutf8.c:1451
 msgid "Invalid sequence in conversion input"
 msgstr ""
 "Во входной строке для преобразования обнаружена недопустимая "
 "последовательность"
 
-#: glib/gutf8.c:1349 glib/gutf8.c:1446
+#: glib/gutf8.c:1365 glib/gutf8.c:1462
 msgid "Character out of range for UTF-16"
 msgstr "Символ находится вне диапазона для UTF-16"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2770
+#: glib/gutils.c:2849
 #, c-format
 msgid "%.1f kB"
 msgstr "%.1f кБ"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2772
+#: glib/gutils.c:2851
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f МБ"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2774
+#: glib/gutils.c:2853
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f ГБ"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2776
+#: glib/gutils.c:2855
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f ТБ"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2778
+#: glib/gutils.c:2857
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f ПБ"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2780
+#: glib/gutils.c:2859
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f ЭБ"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2784
+#: glib/gutils.c:2863
 #, c-format
 msgid "%.1f KiB"
 msgstr "%.1f КиБ"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2786
+#: glib/gutils.c:2865
 #, c-format
 msgid "%.1f MiB"
 msgstr "%.1f МиБ"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2788
+#: glib/gutils.c:2867
 #, c-format
 msgid "%.1f GiB"
 msgstr "%.1f ГиБ"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2790
+#: glib/gutils.c:2869
 #, c-format
 msgid "%.1f TiB"
 msgstr "%.1f ТиБ"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2792
+#: glib/gutils.c:2871
 #, c-format
 msgid "%.1f PiB"
 msgstr "%.1f ПиБ"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2794
+#: glib/gutils.c:2873
 #, c-format
 msgid "%.1f EiB"
 msgstr "%.1f ЭиБ"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2798
+#: glib/gutils.c:2877
 #, c-format
 msgid "%.1f kb"
 msgstr "%.1f кбит"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2800
+#: glib/gutils.c:2879
 #, c-format
 msgid "%.1f Mb"
 msgstr "%.1f Мбит"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2802
+#: glib/gutils.c:2881
 #, c-format
 msgid "%.1f Gb"
 msgstr "%.1f Гбит"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2804
+#: glib/gutils.c:2883
 #, c-format
 msgid "%.1f Tb"
 msgstr "%.1f Тбит"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2806
+#: glib/gutils.c:2885
 #, c-format
 msgid "%.1f Pb"
 msgstr "%.1f Пбит"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2808
+#: glib/gutils.c:2887
 #, c-format
 msgid "%.1f Eb"
 msgstr "%.1f Эбит"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2812
+#: glib/gutils.c:2891
 #, c-format
 msgid "%.1f Kib"
 msgstr "%.1f Кибит"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2814
+#: glib/gutils.c:2893
 #, c-format
 msgid "%.1f Mib"
 msgstr "%.1f Мибит"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2816
+#: glib/gutils.c:2895
 #, c-format
 msgid "%.1f Gib"
 msgstr "%.1f Гибит"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2818
+#: glib/gutils.c:2897
 #, c-format
 msgid "%.1f Tib"
 msgstr "%.1f Тибит"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2820
+#: glib/gutils.c:2899
 #, c-format
 msgid "%.1f Pib"
 msgstr "%.1f Пибит"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2822
+#: glib/gutils.c:2901
 #, c-format
 msgid "%.1f Eib"
 msgstr "%.1f Эибит"
 
-#: glib/gutils.c:2856 glib/gutils.c:2973
+#: glib/gutils.c:2935 glib/gutils.c:3052
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
@@ -6242,7 +6309,7 @@ msgstr[0] "%u байт"
 msgstr[1] "%u байта"
 msgstr[2] "%u байт"
 
-#: glib/gutils.c:2860
+#: glib/gutils.c:2939
 #, c-format
 msgid "%u bit"
 msgid_plural "%u bits"
@@ -6251,7 +6318,7 @@ msgstr[1] "%u бита"
 msgstr[2] "%u бит"
 
 #. Translators: the %s in "%s bytes" will always be replaced by a number.
-#: glib/gutils.c:2927
+#: glib/gutils.c:3006
 #, c-format
 msgid "%s byte"
 msgid_plural "%s bytes"
@@ -6260,7 +6327,7 @@ msgstr[1] "%s байта"
 msgstr[2] "%s байт"
 
 #. Translators: the %s in "%s bits" will always be replaced by a number.
-#: glib/gutils.c:2932
+#: glib/gutils.c:3011
 #, c-format
 msgid "%s bit"
 msgid_plural "%s bits"
@@ -6273,32 +6340,32 @@ msgstr[2] "%s бит"
 #. * compatibility.  Users will not see this string unless a program is using this deprecated function.
 #. * Please translate as literally as possible.
 #.
-#: glib/gutils.c:2986
+#: glib/gutils.c:3065
 #, c-format
 msgid "%.1f KB"
 msgstr "%.1f КБ"
 
-#: glib/gutils.c:2991
+#: glib/gutils.c:3070
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f МБ"
 
-#: glib/gutils.c:2996
+#: glib/gutils.c:3075
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f ГБ"
 
-#: glib/gutils.c:3001
+#: glib/gutils.c:3080
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f ТБ"
 
-#: glib/gutils.c:3006
+#: glib/gutils.c:3085
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f ПБ"
 
-#: glib/gutils.c:3011
+#: glib/gutils.c:3090
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f ЭБ"
index 724e42c..8d6a1ce 100644 (file)
--- a/po/sk.po
+++ b/po/sk.po
@@ -6,22 +6,22 @@
 # Marcel Telka <marcel@telka.sk>, 2005, 2008.
 # Peter Mráz <etkinator@gmail.com>, 2011, 2012.
 # Ján Kyselica <kyselica.jan@gmail.com>, 2013.
-# Dušan Kazik <prescott66@gmail.com>, 2014, 2015.
+# Dušan Kazik <prescott66@gmail.com>, 2014-2021.
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: glib\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/glib/issues\n"
-"POT-Creation-Date: 2020-10-01 16:40+0000\n"
-"PO-Revision-Date: 2020-10-13 14:43+0200\n"
+"POT-Creation-Date: 2021-07-19 15:52+0000\n"
+"PO-Revision-Date: 2021-10-05 08:53+0200\n"
 "Last-Translator: Dušan Kazik <prescott66@gmail.com>\n"
 "Language-Team: Slovak <gnome-sk-list@gnome.org>\n"
 "Language: sk\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n==1) ? 1 : (n>=2 && n<=4) ? 2 : 0;\n"
-"X-Generator: Poedit 2.4.1\n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 1 : (n>=2 && n<=4) ? 2 : 0\n"
+"X-Generator: Gtranslator 40.0\n"
 
 #: gio/gapplication.c:500
 msgid "GApplication options"
@@ -43,14 +43,14 @@ msgstr "Preváži ID aplikácie"
 
 #: gio/gapplication.c:569
 msgid "Replace the running instance"
-msgstr ""
+msgstr "Nahradí spustenú inštanciu"
 
 #: gio/gapplication-tool.c:45 gio/gapplication-tool.c:46 gio/gio-tool.c:227
-#: gio/gresource-tool.c:493 gio/gsettings-tool.c:567
+#: gio/gresource-tool.c:494 gio/gsettings-tool.c:572
 msgid "Print help"
 msgstr "Zobrazí pomocníka"
 
-#: gio/gapplication-tool.c:47 gio/gresource-tool.c:494 gio/gresource-tool.c:562
+#: gio/gapplication-tool.c:47 gio/gresource-tool.c:495 gio/gresource-tool.c:563
 msgid "[COMMAND]"
 msgstr "[PRÍKAZ]"
 
@@ -59,99 +59,99 @@ msgid "Print version"
 msgstr "Vypíše verziu"
 
 # MČ: „Vypíše …“, podobne ako nasledujúce reťazce.
-#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:573
+#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:578
 msgid "Print version information and exit"
 msgstr "Vypíše informácie o verzii a skončí"
 
-#: gio/gapplication-tool.c:52
+#: gio/gapplication-tool.c:53
 msgid "List applications"
 msgstr "Vypíše zoznam aplikácií"
 
-#: gio/gapplication-tool.c:53
+#: gio/gapplication-tool.c:54
 msgid "List the installed D-Bus activatable applications (by .desktop files)"
 msgstr ""
 "Vypíše zoznam nainštalovaných aplikácií aktivovateľných zbernicou D-Bus "
 "(podľa súborov typu .desktop)"
 
 # cmd desc
-#: gio/gapplication-tool.c:55
+#: gio/gapplication-tool.c:57
 msgid "Launch an application"
 msgstr "Spustí aplikáciu"
 
-#: gio/gapplication-tool.c:56
+#: gio/gapplication-tool.c:58
 msgid "Launch the application (with optional files to open)"
 msgstr "Spustí aplikáciu (s voliteľnými súbormi na otvorenie)"
 
-#: gio/gapplication-tool.c:57
+#: gio/gapplication-tool.c:59
 msgid "APPID [FILE…]"
 msgstr "IDAPLIKÁCIE [SÚBOR…]"
 
-#: gio/gapplication-tool.c:59
+#: gio/gapplication-tool.c:61
 msgid "Activate an action"
 msgstr "Aktivuje akciu"
 
-#: gio/gapplication-tool.c:60
+#: gio/gapplication-tool.c:62
 msgid "Invoke an action on the application"
 msgstr "Vyvolá akciu na aplikácii"
 
-#: gio/gapplication-tool.c:61
+#: gio/gapplication-tool.c:63
 msgid "APPID ACTION [PARAMETER]"
 msgstr "IDAPLIKÁCIE AKCIA [PARAMETER]"
 
-#: gio/gapplication-tool.c:63
+#: gio/gapplication-tool.c:65
 msgid "List available actions"
 msgstr "Vypíše zoznam dostupných akcií"
 
-#: gio/gapplication-tool.c:64
+#: gio/gapplication-tool.c:66
 msgid "List static actions for an application (from .desktop file)"
 msgstr "Vypíše zoznam statických akcií pre aplikáciu (zo súboru typu .desktop)"
 
-#: gio/gapplication-tool.c:65 gio/gapplication-tool.c:71
+#: gio/gapplication-tool.c:67 gio/gapplication-tool.c:73
 msgid "APPID"
 msgstr "IDAPLIKÁCIE"
 
-#: gio/gapplication-tool.c:70 gio/gapplication-tool.c:133 gio/gdbus-tool.c:102
+#: gio/gapplication-tool.c:72 gio/gapplication-tool.c:135 gio/gdbus-tool.c:106
 #: gio/gio-tool.c:224
 msgid "COMMAND"
 msgstr "PRÍKAZ"
 
-#: gio/gapplication-tool.c:70
+#: gio/gapplication-tool.c:72
 msgid "The command to print detailed help for"
 msgstr "Príkaz, pre ktorý sa má vypísať podrobný pomocník"
 
-#: gio/gapplication-tool.c:71
+#: gio/gapplication-tool.c:73
 msgid "Application identifier in D-Bus format (eg: org.example.viewer)"
 msgstr ""
 "Identifikátor aplikácie vo formáte zbernice D-Bus (napr.: org.príklad.viewer)"
 
-#: gio/gapplication-tool.c:72 gio/glib-compile-resources.c:738
+#: gio/gapplication-tool.c:74 gio/glib-compile-resources.c:738
 #: gio/glib-compile-resources.c:744 gio/glib-compile-resources.c:772
-#: gio/gresource-tool.c:500 gio/gresource-tool.c:566
+#: gio/gresource-tool.c:501 gio/gresource-tool.c:567
 msgid "FILE"
 msgstr "SÚBOR"
 
-#: gio/gapplication-tool.c:72
+#: gio/gapplication-tool.c:74
 msgid "Optional relative or absolute filenames, or URIs to open"
 msgstr ""
 "Voliteľné relatívne alebo absolútne názvy súborov, alebo URI na otvorenie"
 
-#: gio/gapplication-tool.c:73
+#: gio/gapplication-tool.c:75
 msgid "ACTION"
 msgstr "AKCIA"
 
-#: gio/gapplication-tool.c:73
+#: gio/gapplication-tool.c:75
 msgid "The action name to invoke"
 msgstr "Názov akcie na vyvolanie"
 
-#: gio/gapplication-tool.c:74
+#: gio/gapplication-tool.c:76
 msgid "PARAMETER"
 msgstr "PARAMETER"
 
-#: gio/gapplication-tool.c:74
+#: gio/gapplication-tool.c:76
 msgid "Optional parameter to the action invocation, in GVariant format"
 msgstr "Voliteľný parameter pre vyvolanie akcie vo formáte GVariant"
 
-#: gio/gapplication-tool.c:96 gio/gresource-tool.c:531 gio/gsettings-tool.c:659
+#: gio/gapplication-tool.c:98 gio/gresource-tool.c:532 gio/gsettings-tool.c:664
 #, c-format
 msgid ""
 "Unknown command %s\n"
@@ -160,26 +160,26 @@ msgstr ""
 "Neznámy príkaz %s\n"
 "\n"
 
-#: gio/gapplication-tool.c:101
+#: gio/gapplication-tool.c:103
 msgid "Usage:\n"
 msgstr "Použitie:\n"
 
-#: gio/gapplication-tool.c:114 gio/gresource-tool.c:556
-#: gio/gsettings-tool.c:694
+#: gio/gapplication-tool.c:116 gio/gresource-tool.c:557
+#: gio/gsettings-tool.c:699
 msgid "Arguments:\n"
 msgstr "Parametre:\n"
 
-#: gio/gapplication-tool.c:133 gio/gio-tool.c:224
+#: gio/gapplication-tool.c:135 gio/gio-tool.c:224
 msgid "[ARGS…]"
 msgstr "[PARAMETRE…]"
 
-#: gio/gapplication-tool.c:134
+#: gio/gapplication-tool.c:136
 #, c-format
 msgid "Commands:\n"
 msgstr "Príkazy:\n"
 
 #. Translators: do not translate 'help', but please translate 'COMMAND'.
-#: gio/gapplication-tool.c:146
+#: gio/gapplication-tool.c:148
 #, c-format
 msgid ""
 "Use “%s help COMMAND” to get detailed help.\n"
@@ -188,7 +188,7 @@ msgstr ""
 "Na získanie podrobnejšieho pomocníka, použite „%s help PRÍKAZ“.\n"
 "\n"
 
-#: gio/gapplication-tool.c:165
+#: gio/gapplication-tool.c:167
 #, c-format
 msgid ""
 "%s command requires an application id to directly follow\n"
@@ -197,13 +197,13 @@ msgstr ""
 "príkaz %s vyžaduje, aby ihneď po ňom nasledoval identifikátor aplikácie\n"
 "\n"
 
-#: gio/gapplication-tool.c:171
+#: gio/gapplication-tool.c:173
 #, c-format
 msgid "invalid application id: “%s”\n"
 msgstr "neplatný identifikátor aplikácie: „%s“\n"
 
 #. Translators: %s is replaced with a command name like 'list-actions'
-#: gio/gapplication-tool.c:182
+#: gio/gapplication-tool.c:184
 #, c-format
 msgid ""
 "“%s” takes no arguments\n"
@@ -212,21 +212,21 @@ msgstr ""
 "Príkaz „%s“ sa nedá použiť so žiadnymi parametrami\n"
 "\n"
 
-#: gio/gapplication-tool.c:266
+#: gio/gapplication-tool.c:268
 #, c-format
 msgid "unable to connect to D-Bus: %s\n"
 msgstr "nepodarilo sa pripojiť k zbernici D-Bus: %s\n"
 
-#: gio/gapplication-tool.c:286
+#: gio/gapplication-tool.c:288
 #, c-format
 msgid "error sending %s message to application: %s\n"
 msgstr "chyba pri odosielaní správy %s aplikácii: %s\n"
 
-#: gio/gapplication-tool.c:317
+#: gio/gapplication-tool.c:319
 msgid "action name must be given after application id\n"
 msgstr "názov akcie musí byť zadaný po identifikátore aplikácie\n"
 
-#: gio/gapplication-tool.c:325
+#: gio/gapplication-tool.c:327
 #, c-format
 msgid ""
 "invalid action name: “%s”\n"
@@ -235,25 +235,25 @@ msgstr ""
 "neplatný názov akcie: „%s“\n"
 "názvy akcií musia pozostávať iba zo znakov, číslic, „-“ a „.“\n"
 
-#: gio/gapplication-tool.c:344
+#: gio/gapplication-tool.c:346
 #, c-format
 msgid "error parsing action parameter: %s\n"
 msgstr "chyba pri spracovaní parametra akcie: %s\n"
 
-#: gio/gapplication-tool.c:356
+#: gio/gapplication-tool.c:358
 msgid "actions accept a maximum of one parameter\n"
 msgstr "akcie prijímajú maximálne jeden parameter\n"
 
-#: gio/gapplication-tool.c:411
+#: gio/gapplication-tool.c:413
 msgid "list-actions command takes only the application id"
 msgstr "príkaz list-actions sa dá použiť iba s identifikátorom aplikácie"
 
-#: gio/gapplication-tool.c:421
+#: gio/gapplication-tool.c:423
 #, c-format
 msgid "unable to find desktop file for application %s\n"
 msgstr "nepodarilo sa nájsť súbor desktop pre aplikáciu %s\n"
 
-#: gio/gapplication-tool.c:466
+#: gio/gapplication-tool.c:468
 #, c-format
 msgid ""
 "unrecognised command: %s\n"
@@ -263,8 +263,8 @@ msgstr ""
 "\n"
 
 #: gio/gbufferedinputstream.c:420 gio/gbufferedinputstream.c:498
-#: gio/ginputstream.c:179 gio/ginputstream.c:379 gio/ginputstream.c:617
-#: gio/ginputstream.c:1019 gio/goutputstream.c:223 gio/goutputstream.c:1049
+#: gio/ginputstream.c:179 gio/ginputstream.c:379 gio/ginputstream.c:648
+#: gio/ginputstream.c:1050 gio/goutputstream.c:223 gio/goutputstream.c:1049
 #: gio/gpollableinputstream.c:205 gio/gpollableoutputstream.c:277
 #, c-format
 msgid "Too large count value passed to %s"
@@ -275,11 +275,11 @@ msgstr "Príliš vysoký počet hodnôt predaný do %s"
 msgid "Seek not supported on base stream"
 msgstr "Presúvanie v základnom prúde nie je podporované"
 
-#: gio/gbufferedinputstream.c:937
+#: gio/gbufferedinputstream.c:938
 msgid "Cannot truncate GBufferedInputStream"
 msgstr "GBufferedInputStream sa nedá skrátiť"
 
-#: gio/gbufferedinputstream.c:982 gio/ginputstream.c:1208 gio/giostream.c:300
+#: gio/gbufferedinputstream.c:983 gio/ginputstream.c:1239 gio/giostream.c:300
 #: gio/goutputstream.c:2198
 msgid "Stream is already closed"
 msgstr "Prúd je už zatvorený"
@@ -288,7 +288,7 @@ msgstr "Prúd je už zatvorený"
 msgid "Truncate not supported on base stream"
 msgstr "Skrátenie nie je v základnom prúde podporované"
 
-#: gio/gcancellable.c:319 gio/gdbusconnection.c:1862 gio/gdbusprivate.c:1413
+#: gio/gcancellable.c:319 gio/gdbusconnection.c:1872 gio/gdbusprivate.c:1416
 #: gio/gsimpleasyncresult.c:871 gio/gsimpleasyncresult.c:897
 #, c-format
 msgid "Operation was cancelled"
@@ -307,33 +307,33 @@ msgid "Not enough space in destination"
 msgstr "Nedostatok miesta v cieli"
 
 #: gio/gcharsetconverter.c:342 gio/gdatainputstream.c:848
-#: gio/gdatainputstream.c:1261 glib/gconvert.c:448 glib/gconvert.c:878
-#: glib/giochannel.c:1564 glib/giochannel.c:1606 glib/giochannel.c:2461
+#: gio/gdatainputstream.c:1266 glib/gconvert.c:449 glib/gconvert.c:879
+#: glib/giochannel.c:1573 glib/giochannel.c:1615 glib/giochannel.c:2470
 #: glib/gutf8.c:875 glib/gutf8.c:1328
 msgid "Invalid byte sequence in conversion input"
 msgstr "Neplatná sekvencia bajtov na vstupe prevodu"
 
-#: gio/gcharsetconverter.c:347 glib/gconvert.c:456 glib/gconvert.c:792
-#: glib/giochannel.c:1571 glib/giochannel.c:2473
+#: gio/gcharsetconverter.c:347 glib/gconvert.c:457 glib/gconvert.c:793
+#: glib/giochannel.c:1580 glib/giochannel.c:2482
 #, c-format
 msgid "Error during conversion: %s"
 msgstr "Chyba počas prevodu: %s"
 
-#: gio/gcharsetconverter.c:445 gio/gsocket.c:1133
+#: gio/gcharsetconverter.c:445 gio/gsocket.c:1143
 msgid "Cancellable initialization not supported"
 msgstr "Zrušiteľná inicializácia nie je podporovaná"
 
-#: gio/gcharsetconverter.c:456 glib/gconvert.c:321 glib/giochannel.c:1392
+#: gio/gcharsetconverter.c:456 glib/gconvert.c:322 glib/giochannel.c:1401
 #, c-format
 msgid "Conversion from character set “%s” to “%s” is not supported"
 msgstr "Prevod zo znakovej sady „%s“ do „%s“ nie je podporovaný"
 
-#: gio/gcharsetconverter.c:460 glib/gconvert.c:325
+#: gio/gcharsetconverter.c:460 glib/gconvert.c:326
 #, c-format
 msgid "Could not open converter from “%s” to “%s”"
 msgstr "Nepodarilo sa otvoriť program na prevod z „%s“ do „%s“"
 
-#: gio/gcontenttype.c:452
+#: gio/gcontenttype.c:454
 #, c-format
 msgid "%s type"
 msgstr "typ %s"
@@ -349,7 +349,7 @@ msgstr "typ súboru %s"
 
 #: gio/gcredentials.c:323
 msgid "GCredentials contains invalid data"
-msgstr ""
+msgstr "GCredentials obsahuje neplatné údaje"
 
 #: gio/gcredentials.c:383 gio/gcredentials.c:667
 msgid "GCredentials is not implemented on this OS"
@@ -372,18 +372,18 @@ msgstr "Zmena poverení nie je možná v tomto operačnom systéme"
 msgid "Unexpected early end-of-stream"
 msgstr "Neočakávane skorý koniec prúdu"
 
-#: gio/gdbusaddress.c:158 gio/gdbusaddress.c:232 gio/gdbusaddress.c:321
+#: gio/gdbusaddress.c:159 gio/gdbusaddress.c:233 gio/gdbusaddress.c:322
 #, c-format
 msgid "Unsupported key “%s” in address entry “%s”"
 msgstr "Nepodporovaný kľúč „%s“ v položke adresy „%s“"
 
-#: gio/gdbusaddress.c:171
+#: gio/gdbusaddress.c:172
 #, c-format
 msgid "Meaningless key/value pair combination in address entry “%s”"
 msgstr "Nezmyselná kombinácia kľúč/hodnota v položke adresy „%s“"
 
-#: gio/gdbusaddress.c:180
-#, fuzzy, c-format
+#: gio/gdbusaddress.c:181
+#, c-format
 #| msgid ""
 #| "Address “%s” is invalid (need exactly one of path, tmpdir or abstract "
 #| "keys)"
@@ -391,48 +391,49 @@ msgid ""
 "Address “%s” is invalid (need exactly one of path, dir, tmpdir, or abstract "
 "keys)"
 msgstr ""
-"Adresa „%s“ je neplatná (je potrebný práve jeden kľúč path, tmpdir alebo "
-"abstract)"
+"Adresa „%s“ je neplatná (je potrebný práve jeden kľúč path, dir, tmpdir "
+"alebo abstract)"
 
-#: gio/gdbusaddress.c:247 gio/gdbusaddress.c:258 gio/gdbusaddress.c:273
-#: gio/gdbusaddress.c:336 gio/gdbusaddress.c:347
+#: gio/gdbusaddress.c:248 gio/gdbusaddress.c:259 gio/gdbusaddress.c:274
+#: gio/gdbusaddress.c:337 gio/gdbusaddress.c:348
 #, c-format
 msgid "Error in address “%s” — the “%s” attribute is malformed"
 msgstr "Chyba v adrese „%s“ — atribút „%s“ má zlý formát"
 
 # first is transport name
-#: gio/gdbusaddress.c:417 gio/gdbusaddress.c:681
+#: gio/gdbusaddress.c:418 gio/gdbusaddress.c:682
 #, c-format
 msgid "Unknown or unsupported transport “%s” for address “%s”"
 msgstr "Neznámy alebo nepodporovaný transport typu „%s“ pre adresu „%s“"
 
-#: gio/gdbusaddress.c:461
+#: gio/gdbusaddress.c:462
 #, c-format
 msgid "Address element “%s” does not contain a colon (:)"
 msgstr "Prvok adresy „%s“ neobsahuje dvojbodku (:)"
 
-#: gio/gdbusaddress.c:470
+#: gio/gdbusaddress.c:471
 #, c-format
 msgid "Transport name in address element “%s” must not be empty"
 msgstr ""
 
-#: gio/gdbusaddress.c:491
+#: gio/gdbusaddress.c:492
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” does not contain an equal "
 "sign"
 msgstr "Pár kľúč/hodnota %d, „%s“ v prvku adresy „%s“ neobsahuje znak rovnosti"
 
-#: gio/gdbusaddress.c:502
-#, fuzzy, c-format
+#: gio/gdbusaddress.c:503
+#, 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” must not have an empty key"
-msgstr "Pár kľúč/hodnota %d, „%s“ v prvku adresy „%s“ neobsahuje znak rovnosti"
+msgstr ""
+"Pár kľúč/hodnota %d, „%s“ v prvku adresy „%s“ nemôže obsahovať prázdny kľúč"
 
-#: gio/gdbusaddress.c:516
+#: gio/gdbusaddress.c:517
 #, c-format
 msgid ""
 "Error unescaping key or value in Key/Value pair %d, “%s”, in address element "
@@ -441,7 +442,7 @@ msgstr ""
 "Chyba kľúča alebo hodnoty s nahradenými špeciálne uvedenými sekvenciami v "
 "páre kľúč/hodnota %d, „%s“ v prvku adresy „%s“"
 
-#: gio/gdbusaddress.c:588
+#: gio/gdbusaddress.c:589
 #, c-format
 msgid ""
 "Error in address “%s” — the unix transport requires exactly one of the keys "
@@ -450,83 +451,83 @@ msgstr ""
 "Chyba v adrese „%s“ — transport typu unix vyžaduje nastavenie práve jedného "
 "z kľúčov „path“ alebo „abstract“"
 
-#: gio/gdbusaddress.c:624
+#: gio/gdbusaddress.c:625
 #, c-format
 msgid "Error in address “%s” — the host attribute is missing or malformed"
 msgstr "Chyba v adrese „%s“ — atribút hostiteľa chýba alebo má zlý formát"
 
-#: gio/gdbusaddress.c:638
+#: gio/gdbusaddress.c:639
 #, c-format
 msgid "Error in address “%s” — the port attribute is missing or malformed"
 msgstr "Chyba v adrese „%s“ — atribút portu chýba alebo má zlý formát"
 
-#: gio/gdbusaddress.c:652
+#: gio/gdbusaddress.c:653
 #, c-format
 msgid "Error in address “%s” — the noncefile attribute is missing or malformed"
 msgstr "Chyba v adrese „%s“ — atribút noncefile chýba alebo má zlý formát"
 
-#: gio/gdbusaddress.c:673
+#: gio/gdbusaddress.c:674
 msgid "Error auto-launching: "
 msgstr "Chyba pri automatickom spustení: "
 
-#: gio/gdbusaddress.c:726
+#: gio/gdbusaddress.c:727
 #, c-format
 msgid "Error opening nonce file “%s”: %s"
 msgstr "Chyba pri otváraní nonce súboru „%s“: %s"
 
-#: gio/gdbusaddress.c:745
+#: gio/gdbusaddress.c:746
 #, c-format
 msgid "Error reading from nonce file “%s”: %s"
 msgstr "Chyba pri čítaní z nonce súboru „%s“: %s"
 
-#: gio/gdbusaddress.c:754
+#: gio/gdbusaddress.c:755
 #, c-format
 msgid "Error reading from nonce file “%s”, expected 16 bytes, got %d"
 msgstr ""
 "Chyba pri čítaní z nonce súboru „%s“, očakávaných 16 bajtov, získaných %d"
 
-#: gio/gdbusaddress.c:772
+#: gio/gdbusaddress.c:773
 #, c-format
 msgid "Error writing contents of nonce file “%s” to stream:"
 msgstr "Chyba pri zápise obsahu nounce súboru „%s“ do prúdu:"
 
-#: gio/gdbusaddress.c:981
+#: gio/gdbusaddress.c:988
 msgid "The given address is empty"
 msgstr "Daná adresa je prázdna"
 
 # PM: tu si nie som istý
 # MČ: Komentár v kóde: /* Don't run binaries as root if we're setuid. */
 # MČ: v tomto prípade „spawn“ znamená: Spustí a posiela dáta, cez stdin a očakáva dáta cez stdout, takže by som skôr dal spustiť.
-#: gio/gdbusaddress.c:1094
+#: gio/gdbusaddress.c:1101
 #, c-format
 msgid "Cannot spawn a message bus when setuid"
 msgstr "Zbernica správ sa nedá spustiť pri setuid"
 
 # MČ: v tomto prípade „spawn“ znamená: Spustí a posiela dáta, cez stdin a očakáva dáta cez stdout, takže by som skôr dal spustiť.
-#: gio/gdbusaddress.c:1101
+#: gio/gdbusaddress.c:1108
 msgid "Cannot spawn a message bus without a machine-id: "
 msgstr "Zbernica správ sa nedá spustiť bez machine-id: "
 
-#: gio/gdbusaddress.c:1108
+#: gio/gdbusaddress.c:1115
 #, c-format
 msgid "Cannot autolaunch D-Bus without X11 $DISPLAY"
 msgstr "Zbernica D-Bus sa nedá spustiť automaticky bez X11 $DISPLAY"
 
 # MČ: v tomto prípade „spawn“ znamená: Spustí a posiela dáta, cez stdin a očakáva dáta cez stdout, takže by som skôr dal spustiť.
-#: gio/gdbusaddress.c:1150
+#: gio/gdbusaddress.c:1157
 #, c-format
 msgid "Error spawning command line “%s”: "
 msgstr "Chyba pri spúšťaní príkazového riadka „%s“: "
 
 # funkcia na určenie adresy relačnej zbernice
-#: gio/gdbusaddress.c:1219
+#: gio/gdbusaddress.c:1226
 #, c-format
 msgid "Cannot determine session bus address (not implemented for this OS)"
 msgstr ""
 "Nedá sa určiť adresa relačnej zbernice (nie je implementovaná pre tento "
 "operačný systém)"
 
-#: gio/gdbusaddress.c:1357 gio/gdbusconnection.c:7192
+#: gio/gdbusaddress.c:1397 gio/gdbusconnection.c:7261
 #, c-format
 msgid ""
 "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
@@ -535,7 +536,7 @@ msgstr ""
 "Nedá sa určiť adresa zbernice z premennej prostredia DBUS_STARTER_BUS_TYPE — "
 "neznáma hodnota „%s“"
 
-#: gio/gdbusaddress.c:1366 gio/gdbusconnection.c:7201
+#: gio/gdbusaddress.c:1406 gio/gdbusconnection.c:7270
 msgid ""
 "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
 "variable is not set"
@@ -543,7 +544,7 @@ msgstr ""
 "Nedá sa určiť adresa zbernice, pretože premenná prostredia "
 "DBUS_STARTER_BUS_TYPE nie je nastavená"
 
-#: gio/gdbusaddress.c:1376
+#: gio/gdbusaddress.c:1416
 #, c-format
 msgid "Unknown bus type %d"
 msgstr "Neznámy typ zbernice %d"
@@ -564,16 +565,20 @@ msgstr ""
 "Vyčerpané všetky dostupné mechanizmy overenia totožnosti (pokusy: %s) "
 "(dostupné: %s)"
 
-#: gio/gdbusauth.c:1167
+#: gio/gdbusauth.c:1171
+msgid "User IDs must be the same for peer and server"
+msgstr "Identifikátory používateľa musia byť rovnaké pre partnera a server"
+
+#: gio/gdbusauth.c:1183
 msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
 msgstr "Zrušené cez GDBusAuthObserver::authorize-authenticated-peer"
 
-#: gio/gdbusauthmechanismsha1.c:296
+#: gio/gdbusauthmechanismsha1.c:298
 #, c-format
 msgid "Error when getting information for directory “%s”: %s"
 msgstr "Chyba pri získavaní informácií pre adresár „%s“: %s"
 
-#: gio/gdbusauthmechanismsha1.c:311
+#: gio/gdbusauthmechanismsha1.c:313
 #, c-format
 msgid ""
 "Permissions on directory “%s” are malformed. Expected mode 0700, got 0%o"
@@ -581,17 +586,27 @@ msgstr ""
 "Oprávnenia k adresáru „%s“ sú zle formátované. Očakávaný režim 0700, získaný "
 "0%o"
 
-#: gio/gdbusauthmechanismsha1.c:341
+#: gio/gdbusauthmechanismsha1.c:346 gio/gdbusauthmechanismsha1.c:357
 #, c-format
 msgid "Error creating directory “%s”: %s"
 msgstr "Chyba pri vytváraní adresára %s: %s"
 
-#: gio/gdbusauthmechanismsha1.c:386
+#: gio/gdbusauthmechanismsha1.c:359 gio/gfile.c:1062 gio/gfile.c:1300
+#: gio/gfile.c:1438 gio/gfile.c:1676 gio/gfile.c:1731 gio/gfile.c:1789
+#: gio/gfile.c:1873 gio/gfile.c:1930 gio/gfile.c:1994 gio/gfile.c:2049
+#: gio/gfile.c:3754 gio/gfile.c:3809 gio/gfile.c:4102 gio/gfile.c:4572
+#: gio/gfile.c:4983 gio/gfile.c:5068 gio/gfile.c:5158 gio/gfile.c:5255
+#: gio/gfile.c:5342 gio/gfile.c:5443 gio/gfile.c:8153 gio/gfile.c:8243
+#: gio/gfile.c:8327 gio/win32/gwinhttpfile.c:453
+msgid "Operation not supported"
+msgstr "Nepodporovaná operácia"
+
+#: gio/gdbusauthmechanismsha1.c:402
 #, c-format
 msgid "Error opening keyring “%s” for reading: "
 msgstr "Chyba pri otváraní zväzku kľúčov „%s“ na čítanie: "
 
-#: gio/gdbusauthmechanismsha1.c:409 gio/gdbusauthmechanismsha1.c:731
+#: gio/gdbusauthmechanismsha1.c:425 gio/gdbusauthmechanismsha1.c:747
 #, c-format
 msgid "Line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr "Riadok č. %d zväzku kľúčov na „%s“ s obsahom „%s“ je zle formátovaný"
@@ -599,7 +614,7 @@ msgstr "Riadok č. %d zväzku kľúčov na „%s“ s obsahom „%s“ je zle fo
 # PK: token nie je nejaky znak? viacX
 # PM: token je napríklad "%s" ide o znaky ktoré môžu byt nahradené nejakým textom napr %u - meno používateľa
 # PK: token by mal byt string
-#: gio/gdbusauthmechanismsha1.c:423 gio/gdbusauthmechanismsha1.c:745
+#: gio/gdbusauthmechanismsha1.c:439 gio/gdbusauthmechanismsha1.c:761
 #, c-format
 msgid ""
 "First token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -607,7 +622,7 @@ msgstr ""
 "Prvý token riadka č. %d zväzku kľúčov na „%s“ s obsahom „%s“ je zle "
 "formátovaný"
 
-#: gio/gdbusauthmechanismsha1.c:437 gio/gdbusauthmechanismsha1.c:759
+#: gio/gdbusauthmechanismsha1.c:453 gio/gdbusauthmechanismsha1.c:775
 #, c-format
 msgid ""
 "Second token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -615,122 +630,122 @@ msgstr ""
 "Druhý token riadka č. %d zväzku kľúčov na „%s“ s obsahom „%s“ je zle "
 "formátovaný"
 
-#: gio/gdbusauthmechanismsha1.c:461
+#: gio/gdbusauthmechanismsha1.c:477
 #, c-format
 msgid "Didn’t find cookie with id %d in the keyring at “%s”"
 msgstr "Nenašlo sa cookie s identifikátorom %d vo zväzku kľúčov na „%s“"
 
-#: gio/gdbusauthmechanismsha1.c:507
+#: gio/gdbusauthmechanismsha1.c:523
 #, c-format
 msgid "Error creating lock file “%s”: %s"
 msgstr "Chyba pri vytváraní súboru uzamknutia „%s“: %s"
 
-#: gio/gdbusauthmechanismsha1.c:571
+#: gio/gdbusauthmechanismsha1.c:587
 #, c-format
 msgid "Error deleting stale lock file “%s”: %s"
 msgstr "Chyba pri odstraňovaní starého súboru uzamknutia „%s“: %s"
 
 # PM: Je to súbor určený na vymazanie ale vymaže sa až vtedy, keď ho zatvorí posledný, kto ho má otvorený
-#: gio/gdbusauthmechanismsha1.c:610
+#: gio/gdbusauthmechanismsha1.c:626
 #, c-format
 msgid "Error closing (unlinked) lock file “%s”: %s"
 msgstr "Chyba pri zatváraní (vymazávaného) súboru uzamknutia „%s“: %s"
 
-#: gio/gdbusauthmechanismsha1.c:621
+#: gio/gdbusauthmechanismsha1.c:637
 #, c-format
 msgid "Error unlinking lock file “%s”: %s"
 msgstr "Chyba pri mazaní súboru uzamknutia „%s“: %s"
 
-#: gio/gdbusauthmechanismsha1.c:698
+#: gio/gdbusauthmechanismsha1.c:714
 #, c-format
 msgid "Error opening keyring “%s” for writing: "
 msgstr "Chyba pri otváraní zväzku kľúčov „%s“ na zápis: "
 
-#: gio/gdbusauthmechanismsha1.c:892
+#: gio/gdbusauthmechanismsha1.c:908
 #, c-format
 msgid "(Additionally, releasing the lock for “%s” also failed: %s) "
 msgstr "(Okrem toho zlyhalo aj uvoľnenie zámky pre „%s“: %s) "
 
-#: gio/gdbusconnection.c:595 gio/gdbusconnection.c:2391
+#: gio/gdbusconnection.c:603 gio/gdbusconnection.c:2417
 msgid "The connection is closed"
 msgstr "Pripojenie je ukončené"
 
-#: gio/gdbusconnection.c:1892
+#: gio/gdbusconnection.c:1902
 msgid "Timeout was reached"
 msgstr "Vypršal časový limit"
 
-#: gio/gdbusconnection.c:2513
+#: gio/gdbusconnection.c:2540
 msgid ""
 "Unsupported flags encountered when constructing a client-side connection"
 msgstr ""
 "Pri vytváraní klientského pripojenia boli nájdené nepodporované príznaky"
 
-#: gio/gdbusconnection.c:4163 gio/gdbusconnection.c:4510
+#: gio/gdbusconnection.c:4189 gio/gdbusconnection.c:4536
 #, c-format
 msgid ""
 "No such interface “org.freedesktop.DBus.Properties” on object at path %s"
 msgstr ""
 "Rozhranie „org.freedesktop.DBus.Properties“ nie je v objekte na ceste %s"
 
-#: gio/gdbusconnection.c:4305
+#: gio/gdbusconnection.c:4331
 #, c-format
 msgid "No such property “%s”"
 msgstr "Neexistuje vlastnosť „%s“"
 
-#: gio/gdbusconnection.c:4317
+#: gio/gdbusconnection.c:4343
 #, c-format
 msgid "Property “%s” is not readable"
 msgstr "Vlastnosť „%s“ nie je čitateľná"
 
-#: gio/gdbusconnection.c:4328
+#: gio/gdbusconnection.c:4354
 #, c-format
 msgid "Property “%s” is not writable"
 msgstr "Vlastnosť „%s“ nie je zapisovateľná"
 
-#: gio/gdbusconnection.c:4348
+#: gio/gdbusconnection.c:4374
 #, c-format
 msgid "Error setting property “%s”: Expected type “%s” but got “%s”"
 msgstr ""
 "Chyba pri nastavovaní vlastnosti „%s“: Bol očakávaný typ „%s“, no získaný "
 "bol „%s“"
 
-#: gio/gdbusconnection.c:4453 gio/gdbusconnection.c:4661
-#: gio/gdbusconnection.c:6632
+#: gio/gdbusconnection.c:4479 gio/gdbusconnection.c:4687
+#: gio/gdbusconnection.c:6689
 #, c-format
 msgid "No such interface “%s”"
 msgstr "Neexistuje rozhranie „%s“"
 
-#: gio/gdbusconnection.c:4879 gio/gdbusconnection.c:7141
+#: gio/gdbusconnection.c:4905 gio/gdbusconnection.c:7201
 #, c-format
 msgid "No such interface “%s” on object at path %s"
 msgstr "Rozhranie „%s“ nie je v objekte na ceste %s"
 
-#: gio/gdbusconnection.c:4977
+#: gio/gdbusconnection.c:5003
 #, c-format
 msgid "No such method “%s”"
 msgstr "Neexistujúca metóda „%s“"
 
-#: gio/gdbusconnection.c:5008
+#: gio/gdbusconnection.c:5034
 #, c-format
 msgid "Type of message, “%s”, does not match expected type “%s”"
 msgstr "Typ správy „%s“ nezodpovedá očakávanému typu „%s“"
 
-#: gio/gdbusconnection.c:5206
+#: gio/gdbusconnection.c:5237
 #, c-format
 msgid "An object is already exported for the interface %s at %s"
 msgstr "Pre rozhranie %s je už exportovaný objekt na %s"
 
-#: gio/gdbusconnection.c:5432
+#: gio/gdbusconnection.c:5463
 #, c-format
 msgid "Unable to retrieve property %s.%s"
 msgstr "Nepodarilo sa získať vlastnosť %s.%s"
 
-#: gio/gdbusconnection.c:5488
+#: gio/gdbusconnection.c:5519
 #, c-format
 msgid "Unable to set property %s.%s"
 msgstr "Nepodarilo sa nastaviť vlastnosť %s.%s"
 
-#: gio/gdbusconnection.c:5666
+#: gio/gdbusconnection.c:5698
 #, c-format
 msgid "Method “%s” returned type “%s”, but expected “%s”"
 msgstr "Metóda „%s“ vrátila typ „%s“, no očakávaný bol „%s“"
@@ -738,37 +753,43 @@ msgstr "Metóda „%s“ vrátila typ „%s“, no očakávaný bol „%s“"
 # MČ: mám k tomuto preklady výhrady, ale keď to tak chcete, môže byť. Keď signatúra nevyhovuje, tak skôr značka. Ak sa rozhodnete upraviť, tak pri všetkých výskytoch.
 # PK: http://dbus.freedesktop.org/doc/dbus-specification.html#message-protocol-signatures
 # PK: mozno oznacenie
-#: gio/gdbusconnection.c:6743
+#: gio/gdbusconnection.c:6800
 #, c-format
 msgid "Method “%s” on interface “%s” with signature “%s” does not exist"
 msgstr "Metóda „%s“ z rozhrania „%s“ s označením „%s“ neexistuje"
 
-#: gio/gdbusconnection.c:6864
+#: gio/gdbusconnection.c:6921
 #, c-format
 msgid "A subtree is already exported for %s"
 msgstr "Podstrom je už exportovaný do %s"
 
-#: gio/gdbusmessage.c:1255
+#: gio/gdbusconnection.c:7209
+#, c-format
+#| msgid "Key file does not have group “%s”"
+msgid "Object does not exist at path “%s”"
+msgstr "Objekt neexistuje na ceste „%s“"
+
+#: gio/gdbusmessage.c:1266
 msgid "type is INVALID"
 msgstr "typ je INVALID"
 
-#: gio/gdbusmessage.c:1266
+#: gio/gdbusmessage.c:1277
 msgid "METHOD_CALL message: PATH or MEMBER header field is missing"
 msgstr "Správa METHOD_CALL: chýba pole hlavičky PATH alebo MEMBER"
 
-#: gio/gdbusmessage.c:1277
+#: gio/gdbusmessage.c:1288
 msgid "METHOD_RETURN message: REPLY_SERIAL header field is missing"
 msgstr "Správa METHOD_RETURN: chýba pole hlavičky REPLY_SERIAL"
 
-#: gio/gdbusmessage.c:1289
+#: gio/gdbusmessage.c:1300
 msgid "ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing"
 msgstr "Správa ERROR: chýba pole hlavičky REPLY_SERIAL alebo ERROR_NAME"
 
-#: gio/gdbusmessage.c:1302
+#: gio/gdbusmessage.c:1313
 msgid "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing"
 msgstr "Správa SIGNAL: chýba pole hlavičky PATH, INTERFACE alebo MEMBER"
 
-#: gio/gdbusmessage.c:1310
+#: gio/gdbusmessage.c:1321
 msgid ""
 "SIGNAL message: The PATH header field is using the reserved value /org/"
 "freedesktop/DBus/Local"
@@ -776,7 +797,7 @@ msgstr ""
 "Správa SIGNAL: pole hlavičky PATH používa vyhradenú hodnotu /org/freedesktop/"
 "DBus/Local"
 
-#: gio/gdbusmessage.c:1318
+#: gio/gdbusmessage.c:1329
 msgid ""
 "SIGNAL message: The INTERFACE header field is using the reserved value org."
 "freedesktop.DBus.Local"
@@ -786,7 +807,7 @@ msgstr ""
 
 # MČ: Asi bude tre dať rozdeliť reťazec, nenapadá mi, ako by sa druhá časť dala preložiť neutrálne. Jedna vec je istá, pri druhom reťazci môže byť ozískaných“ len nula, keďže iba to je menej ako jedna. Prípadne všade použiť „získaných“, malo by to narobiť najmenej problémov.
 # JK: https://bugzilla.gnome.org/show_bug.cgi?id=695234
-#: gio/gdbusmessage.c:1366 gio/gdbusmessage.c:1426
+#: gio/gdbusmessage.c:1377 gio/gdbusmessage.c:1437
 #, c-format
 msgid "Wanted to read %lu byte but only got %lu"
 msgid_plural "Wanted to read %lu bytes but only got %lu"
@@ -796,12 +817,12 @@ msgstr[2] "Potrebné %lu bajty na čítanie, no získaných iba %lu"
 
 # *https://bugzilla.gnome.org/show_bug.cgi?id=658913
 # PM: tu je to hodnota znaku nie smerníka
-#: gio/gdbusmessage.c:1380
+#: gio/gdbusmessage.c:1391
 #, c-format
 msgid "Expected NUL byte after the string “%s” but found byte %d"
 msgstr "Očakávaný znak NUL za reťazcom „%s“, no nájdený bajt %d"
 
-#: gio/gdbusmessage.c:1399
+#: gio/gdbusmessage.c:1410
 #, c-format
 msgid ""
 "Expected valid UTF-8 string but found invalid bytes at byte offset %d "
@@ -810,22 +831,22 @@ msgstr ""
 "Očakávaný platný UTF-8 reťazec, no nájdené neplatné bajty na pozícii %d "
 "(dĺžka reťazca je %d). Platný UTF-8 reťazec do toho miesta bol „%s“"
 
-#: gio/gdbusmessage.c:1463 gio/gdbusmessage.c:1711 gio/gdbusmessage.c:1900
+#: gio/gdbusmessage.c:1474 gio/gdbusmessage.c:1722 gio/gdbusmessage.c:1911
 msgid "Value nested too deeply"
 msgstr ""
 
-#: gio/gdbusmessage.c:1609
+#: gio/gdbusmessage.c:1620
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus object path"
 msgstr ""
 "Analyzovaná hodnota „%s“ nie je platnou cestou k objektu zbernice D-Bus"
 
-#: gio/gdbusmessage.c:1631
+#: gio/gdbusmessage.c:1642
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature"
 msgstr "Analyzovaná hodnota „%s“ nie je platným označením zbernice D-Bus"
 
-#: gio/gdbusmessage.c:1678
+#: gio/gdbusmessage.c:1689
 #, c-format
 msgid ""
 "Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB)."
@@ -838,7 +859,7 @@ msgstr[1] ""
 msgstr[2] ""
 "Zistené pole s dĺžkou %u bajty. Maximálna dĺžka je 2<<26 bajtov (64 MiB)"
 
-#: gio/gdbusmessage.c:1698
+#: gio/gdbusmessage.c:1709
 #, c-format
 msgid ""
 "Encountered array of type “a%c”, expected to have a length a multiple of %u "
@@ -847,13 +868,13 @@ msgstr ""
 "Zistené pole typu „a%c“, ktoré by malo mať dĺžku v násobkoch %u bajtov, ale "
 "reálna dĺžka je %u bajtov"
 
-#: gio/gdbusmessage.c:1884
+#: gio/gdbusmessage.c:1895
 #, c-format
 msgid "Parsed value “%s” for variant is not a valid D-Bus signature"
 msgstr ""
 "Analyzovaná hodnota „%s“ pre variant nie je platným označením zbernice D-Bus"
 
-#: gio/gdbusmessage.c:1925
+#: gio/gdbusmessage.c:1936
 #, c-format
 msgid ""
 "Error deserializing GVariant with type string “%s” from the D-Bus wire format"
@@ -862,7 +883,7 @@ msgstr ""
 "formátu zbernice D-Bus"
 
 # tu musia byt taketo uvodzovky, kedze je to tak aj v C alebo Java
-#: gio/gdbusmessage.c:2110
+#: gio/gdbusmessage.c:2121
 #, c-format
 msgid ""
 "Invalid endianness value. Expected 0x6c (“l”) or 0x42 (“B”) but found value "
@@ -872,29 +893,29 @@ msgstr ""
 "nájdená hodnota 0x%02x"
 
 #  protocol version
-#: gio/gdbusmessage.c:2123
+#: gio/gdbusmessage.c:2134
 #, c-format
 msgid "Invalid major protocol version. Expected 1 but found %d"
 msgstr "Neplatná hlavná verzia protokolu. Očakávaná 1, no nájdená %d"
 
-#: gio/gdbusmessage.c:2177 gio/gdbusmessage.c:2773
+#: gio/gdbusmessage.c:2188 gio/gdbusmessage.c:2784
 msgid "Signature header found but is not of type signature"
 msgstr ""
 
-#: gio/gdbusmessage.c:2189
+#: gio/gdbusmessage.c:2200
 #, c-format
 msgid "Signature header with signature “%s” found but message body is empty"
 msgstr ""
 "Nájdená hlavička označenia s označením „%s“, no nájdené telo správy je "
 "prázdne"
 
-#: gio/gdbusmessage.c:2204
+#: gio/gdbusmessage.c:2215
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature (for body)"
 msgstr ""
 "Analyzovaná hodnota „%s“ nie je platným označením zbernice D-Bus (pre telo)"
 
-#: gio/gdbusmessage.c:2236
+#: gio/gdbusmessage.c:2247
 #, 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"
@@ -905,11 +926,11 @@ msgstr[1] ""
 msgstr[2] ""
 "V správe nie je žiadna hlavička označenia, no telo správy má %u bajty"
 
-#: gio/gdbusmessage.c:2246
+#: gio/gdbusmessage.c:2257
 msgid "Cannot deserialize message: "
 msgstr "Nedá sa deserializovať správa: "
 
-#: gio/gdbusmessage.c:2590
+#: gio/gdbusmessage.c:2601
 #, c-format
 msgid ""
 "Error serializing GVariant with type string “%s” to the D-Bus wire format"
@@ -917,22 +938,24 @@ msgstr ""
 "Chyba pri serializovaní Gvariant pomocou reťazca typu „%s“ z prenosového "
 "formátu zbernice D-Bus"
 
-#: gio/gdbusmessage.c:2727
+#: gio/gdbusmessage.c:2738
 #, c-format
 msgid ""
 "Number of file descriptors in message (%d) differs from header field (%d)"
 msgstr ""
+"Počet popisovačov súboru v správe (%d) sa odlišuje od počtu v poli hlavička "
+"(%d)"
 
-#: gio/gdbusmessage.c:2735
+#: gio/gdbusmessage.c:2746
 msgid "Cannot serialize message: "
 msgstr "Nedá sa serializovať správa: "
 
-#: gio/gdbusmessage.c:2788
+#: gio/gdbusmessage.c:2799
 #, c-format
 msgid "Message body has signature “%s” but there is no signature header"
 msgstr "Telo správy má označenie „%s“, no neexistuje žiadna hlavička označenia"
 
-#: gio/gdbusmessage.c:2798
+#: gio/gdbusmessage.c:2809
 #, c-format
 msgid ""
 "Message body has type signature “%s” but signature in the header field is "
@@ -940,51 +963,54 @@ msgid ""
 msgstr ""
 "Telo správy má označenie typu „%s“, no označenie v poli hlavičky je „%s“"
 
-#: gio/gdbusmessage.c:2814
+#: gio/gdbusmessage.c:2825
 #, c-format
 msgid "Message body is empty but signature in the header field is “(%s)”"
 msgstr "Telo správy je prázdne, no označenie v poli hlavičky je „(%s)“"
 
-#: gio/gdbusmessage.c:3367
+#: gio/gdbusmessage.c:3380
 #, c-format
 msgid "Error return with body of type “%s”"
 msgstr "Chyba pri návrate s telom typu „%s“"
 
-#: gio/gdbusmessage.c:3375
+#: gio/gdbusmessage.c:3388
 msgid "Error return with empty body"
 msgstr "Chyba pri návrate s prázdnym telom"
 
 # PM: podľa mňa ked ide o zadanie treba na konci stlačiť enter, nie som si istý či je to tento prípad
-#: gio/gdbusprivate.c:2244
+#: gio/gdbusprivate.c:2246
 #, c-format
 msgid "(Type any character to close this window)\n"
 msgstr "(Toto okno zatvoríte zadaním ľubovolného znaku)\n"
 
-#: gio/gdbusprivate.c:2418
+#: gio/gdbusprivate.c:2420
 #, c-format
 msgid "Session dbus not running, and autolaunch failed"
 msgstr "Relácia dbus nebeží a automatické spustenie zlyhalo"
 
-#: gio/gdbusprivate.c:2441
+#: gio/gdbusprivate.c:2443
 #, c-format
 msgid "Unable to get Hardware profile: %s"
 msgstr "Nepodarilo sa získať hardvérový profil: %s"
 
-#: gio/gdbusprivate.c:2486
-msgid "Unable to load /var/lib/dbus/machine-id or /etc/machine-id: "
-msgstr "Nepodarilo sa načítať /var/lib/dbus/machine-id ani /etc/machine-id: "
+#. Translators: Both placeholders are file paths
+#: gio/gdbusprivate.c:2494
+#, c-format
+#| msgid "Unable to trash file %s: %s"
+msgid "Unable to load %s or %s: "
+msgstr "Nie je možné načítať %s alebo %s:"
 
-#: gio/gdbusproxy.c:1562
+#: gio/gdbusproxy.c:1569
 #, c-format
 msgid "Error calling StartServiceByName for %s: "
 msgstr "Chyba pri volaní StartServiceByName pre %s: "
 
-#: gio/gdbusproxy.c:1585
+#: gio/gdbusproxy.c:1592
 #, c-format
 msgid "Unexpected reply %d from StartServiceByName(\"%s\") method"
 msgstr "Neočakávaná odpoveď %d z metódy StartServiceByName(„%s“)"
 
-#: gio/gdbusproxy.c:2688 gio/gdbusproxy.c:2823
+#: gio/gdbusproxy.c:2699 gio/gdbusproxy.c:2834
 #, fuzzy, c-format
 #| msgid ""
 #| "Cannot invoke method; proxy is for a well-known name without an owner and "
@@ -996,30 +1022,30 @@ msgstr ""
 "Nedá sa vyvolať metóda; proxy je pre dobre známy názov bez vlastníka a proxy "
 "bol vytvorený s príznakom G_DBUS_PROXY_FLAGS_DO_NOT_AUTO_START"
 
-#: gio/gdbusserver.c:755
+#: gio/gdbusserver.c:767
 msgid "Abstract namespace not supported"
 msgstr "Abstraktný menný priestor nie je podporovaný"
 
-#: gio/gdbusserver.c:848
+#: gio/gdbusserver.c:860
 msgid "Cannot specify nonce file when creating a server"
 msgstr "Pri vytváraní servera sa nedá zadať nonce súbor"
 
-#: gio/gdbusserver.c:930
+#: gio/gdbusserver.c:942
 #, c-format
 msgid "Error writing nonce file at “%s”: %s"
 msgstr "Chyba pri zápise do nonce súboru na „%s“: %s"
 
-#: gio/gdbusserver.c:1103
+#: gio/gdbusserver.c:1117
 #, c-format
 msgid "The string “%s” is not a valid D-Bus GUID"
 msgstr "Reťazec „%s“ nie je platný D-Bus GUID"
 
-#: gio/gdbusserver.c:1143
+#: gio/gdbusserver.c:1157
 #, c-format
 msgid "Cannot listen on unsupported transport “%s”"
 msgstr "Nedá sa počúvať na nepodporovanom transporte „%s“"
 
-#: gio/gdbus-tool.c:107
+#: gio/gdbus-tool.c:111
 #, c-format
 msgid ""
 "Commands:\n"
@@ -1044,61 +1070,67 @@ msgstr ""
 "\n"
 "Pomocníka pre každý z príkazov získate zadaním „%s PRÍKAZ --help“.\n"
 
-#: gio/gdbus-tool.c:197 gio/gdbus-tool.c:264 gio/gdbus-tool.c:336
-#: gio/gdbus-tool.c:360 gio/gdbus-tool.c:850 gio/gdbus-tool.c:1187
-#: gio/gdbus-tool.c:1672
+#: gio/gdbus-tool.c:201 gio/gdbus-tool.c:273 gio/gdbus-tool.c:345
+#: gio/gdbus-tool.c:369 gio/gdbus-tool.c:859 gio/gdbus-tool.c:1236
+#: gio/gdbus-tool.c:1724
 #, c-format
 msgid "Error: %s\n"
 msgstr "Chyba: %s\n"
 
-#: gio/gdbus-tool.c:208 gio/gdbus-tool.c:277 gio/gdbus-tool.c:1688
+#: gio/gdbus-tool.c:212 gio/gdbus-tool.c:286 gio/gdbus-tool.c:1740
 #, c-format
 msgid "Error parsing introspection XML: %s\n"
 msgstr "Chyba pri analýze XML vútorného preskúmania: %s\n"
 
-#: gio/gdbus-tool.c:246
+#: gio/gdbus-tool.c:250
 #, c-format
 msgid "Error: %s is not a valid name\n"
 msgstr "Chyba: %s nie je platný názov\n"
 
-#: gio/gdbus-tool.c:394
+#: gio/gdbus-tool.c:255 gio/gdbus-tool.c:745 gio/gdbus-tool.c:1060
+#: gio/gdbus-tool.c:1890 gio/gdbus-tool.c:2130
+#, c-format
+msgid "Error: %s is not a valid object path\n"
+msgstr "Chyba: %s nie platná cesta objektu\n"
+
+#: gio/gdbus-tool.c:403
 msgid "Connect to the system bus"
 msgstr "Pripojiť k systémovej zbernici"
 
-#: gio/gdbus-tool.c:395
+#: gio/gdbus-tool.c:404
 msgid "Connect to the session bus"
 msgstr "Pripojiť k relačnej zbernici"
 
-#: gio/gdbus-tool.c:396
+#: gio/gdbus-tool.c:405
 msgid "Connect to given D-Bus address"
 msgstr "Pripojiť k danej adrese zbernice D-Bus"
 
-#: gio/gdbus-tool.c:406
+#: gio/gdbus-tool.c:415
 msgid "Connection Endpoint Options:"
 msgstr "Voľby koncového bodu pripojenia:"
 
-#: gio/gdbus-tool.c:407
+#: gio/gdbus-tool.c:416
 msgid "Options specifying the connection endpoint"
 msgstr "Voľby určujúce koncový bod pripojenia"
 
-#: gio/gdbus-tool.c:430
+#: gio/gdbus-tool.c:439
 #, c-format
 msgid "No connection endpoint specified"
 msgstr "Neurčený žiadny koncový bod pripojenia"
 
-#: gio/gdbus-tool.c:440
+#: gio/gdbus-tool.c:449
 #, c-format
 msgid "Multiple connection endpoints specified"
 msgstr "Určených viacero koncových bodov pripojenia"
 
-#: gio/gdbus-tool.c:513
+#: gio/gdbus-tool.c:522
 #, c-format
 msgid ""
 "Warning: According to introspection data, interface “%s” does not exist\n"
 msgstr ""
 "Upozornenie: Podľa údajov vnútorného preskúmania rozhranie „%s“ neexistuje\n"
 
-#: gio/gdbus-tool.c:522
+#: gio/gdbus-tool.c:531
 #, c-format
 msgid ""
 "Warning: According to introspection data, method “%s” does not exist on "
@@ -1107,162 +1139,163 @@ msgstr ""
 "Upozornenie: Podľa údajov vnútorného preskúmania metóda „%s“ neexistuje na "
 "rozhraní „%s“\n"
 
-#: gio/gdbus-tool.c:584
+#: gio/gdbus-tool.c:593
 msgid "Optional destination for signal (unique name)"
 msgstr "Voliteľný cieľ pre signál (jedinečný názov)"
 
-#: gio/gdbus-tool.c:585
+#: gio/gdbus-tool.c:594
 msgid "Object path to emit signal on"
 msgstr "Cesta objektu, ktorému vyslať signál"
 
-#: gio/gdbus-tool.c:586
+#: gio/gdbus-tool.c:595
 msgid "Signal and interface name"
 msgstr "Názov signálu a rozhrania"
 
-#: gio/gdbus-tool.c:619
+#: gio/gdbus-tool.c:628
 msgid "Emit a signal."
 msgstr "Vyslať signál."
 
-#: gio/gdbus-tool.c:674 gio/gdbus-tool.c:981 gio/gdbus-tool.c:1775
-#: gio/gdbus-tool.c:2007 gio/gdbus-tool.c:2227
+#: gio/gdbus-tool.c:683 gio/gdbus-tool.c:997 gio/gdbus-tool.c:1827
+#: gio/gdbus-tool.c:2059 gio/gdbus-tool.c:2279
 #, c-format
 msgid "Error connecting: %s\n"
 msgstr "Chyba pri pripájaní: %s\n"
 
-#: gio/gdbus-tool.c:694
+#: gio/gdbus-tool.c:703
 #, c-format
 msgid "Error: %s is not a valid unique bus name.\n"
 msgstr "Chyba: %s nie je platný jedinečný názov zbernice.\n"
 
-#: gio/gdbus-tool.c:713 gio/gdbus-tool.c:1024 gio/gdbus-tool.c:1818
+#: gio/gdbus-tool.c:722 gio/gdbus-tool.c:1040 gio/gdbus-tool.c:1870
 msgid "Error: Object path is not specified\n"
 msgstr "Chyba: Cesta objektu nie je určená\n"
 
-#: gio/gdbus-tool.c:736 gio/gdbus-tool.c:1044 gio/gdbus-tool.c:1838
-#: gio/gdbus-tool.c:2078
-#, c-format
-msgid "Error: %s is not a valid object path\n"
-msgstr "Chyba: %s nie platná cesta objektu\n"
-
-#: gio/gdbus-tool.c:756
+#: gio/gdbus-tool.c:765
 msgid "Error: Signal name is not specified\n"
 msgstr "Chyba: Názov signálu nie je určený\n"
 
-#: gio/gdbus-tool.c:770
+#: gio/gdbus-tool.c:779
 #, c-format
 msgid "Error: Signal name “%s” is invalid\n"
 msgstr "Chyba: Názov signálu „%s“ nie je platný\n"
 
-#: gio/gdbus-tool.c:782
+#: gio/gdbus-tool.c:791
 #, c-format
 msgid "Error: %s is not a valid interface name\n"
 msgstr "Chyba: %s nie je platný názov rozhrania\n"
 
-#: gio/gdbus-tool.c:788
+#: gio/gdbus-tool.c:797
 #, c-format
 msgid "Error: %s is not a valid member name\n"
 msgstr "Chyba: %s nie je platný názov člena objektu\n"
 
 #. Use the original non-"parse-me-harder" error
-#: gio/gdbus-tool.c:825 gio/gdbus-tool.c:1156
+#: gio/gdbus-tool.c:834 gio/gdbus-tool.c:1172
 #, c-format
 msgid "Error parsing parameter %d: %s\n"
 msgstr "Chyba pri spracovaní parametra %d: %s\n"
 
-#: gio/gdbus-tool.c:857
+#: gio/gdbus-tool.c:866
 #, c-format
 msgid "Error flushing connection: %s\n"
 msgstr "Chyba pri vyprázdnení pripojenia: %s\n"
 
-#: gio/gdbus-tool.c:884
+#: gio/gdbus-tool.c:893
 msgid "Destination name to invoke method on"
 msgstr "Názov cieľa, na ktorom sa má zavolať metóda"
 
 # PK: Nazov ciela, na ktorom zavolat metodu
-#: gio/gdbus-tool.c:885
+#: gio/gdbus-tool.c:894
 msgid "Object path to invoke method on"
 msgstr "Cesta objektu na zavolanie metódy"
 
-#: gio/gdbus-tool.c:886
+#: gio/gdbus-tool.c:895
 msgid "Method and interface name"
 msgstr "Názov metódy a rozhrania"
 
-#: gio/gdbus-tool.c:887
+#: gio/gdbus-tool.c:896
 msgid "Timeout in seconds"
 msgstr "Časový limit v sekundách"
 
-#: gio/gdbus-tool.c:926
+#: gio/gdbus-tool.c:942
 msgid "Invoke a method on a remote object."
 msgstr "Zavolať metódu na vzdialenom objekte."
 
-#: gio/gdbus-tool.c:998 gio/gdbus-tool.c:1792 gio/gdbus-tool.c:2032
+#: gio/gdbus-tool.c:1014 gio/gdbus-tool.c:1844 gio/gdbus-tool.c:2084
 msgid "Error: Destination is not specified\n"
 msgstr "Chyba: Cieľ nie je určený\n"
 
-#: gio/gdbus-tool.c:1009 gio/gdbus-tool.c:1809 gio/gdbus-tool.c:2043
+#: gio/gdbus-tool.c:1025 gio/gdbus-tool.c:1861 gio/gdbus-tool.c:2095
 #, c-format
 msgid "Error: %s is not a valid bus name\n"
 msgstr "Chyba: %s nie je platný názov zbernice\n"
 
-#: gio/gdbus-tool.c:1059
+#: gio/gdbus-tool.c:1075
 msgid "Error: Method name is not specified\n"
 msgstr "Chyba: Názov metódy nie je určený\n"
 
-#: gio/gdbus-tool.c:1070
+#: gio/gdbus-tool.c:1086
 #, c-format
 msgid "Error: Method name “%s” is invalid\n"
 msgstr "Chyba: Názov metódy „%s“ nie je platný\n"
 
-#: gio/gdbus-tool.c:1148
+#: gio/gdbus-tool.c:1164
 #, c-format
 msgid "Error parsing parameter %d of type “%s”: %s\n"
 msgstr "Chyba pri spracovaní parametra %d typu „%s“: %s\n"
 
-#: gio/gdbus-tool.c:1634
+# PŠ: file handle (win32) je ekvivalent file descriptor - dovolil som si to preložiť rovnako. Keďže používané manipulátor, alebo rukoväť sú oba zlé preklady (obsluha je handler)... A dokonca aj v slovenskom preklade Správcu úloh vo win je použitý popisovač.
+#: gio/gdbus-tool.c:1190
+#, fuzzy, c-format
+#| msgid "Error reading from handle: %s"
+msgid "Error adding handle %d: %s\n"
+msgstr "Chyba pri čítaní z popisovača: %s"
+
+#: gio/gdbus-tool.c:1686
 msgid "Destination name to introspect"
 msgstr "Názov cieľa na vnútorné preskúmanie"
 
-#: gio/gdbus-tool.c:1635
+#: gio/gdbus-tool.c:1687
 msgid "Object path to introspect"
 msgstr "Cesta objektu na vnútorné preskúmanie"
 
-#: gio/gdbus-tool.c:1636
+#: gio/gdbus-tool.c:1688
 msgid "Print XML"
 msgstr "Vypísať XML"
 
-#: gio/gdbus-tool.c:1637
+#: gio/gdbus-tool.c:1689
 msgid "Introspect children"
 msgstr "Vnútorne preskúmať potomka"
 
-#: gio/gdbus-tool.c:1638
+#: gio/gdbus-tool.c:1690
 msgid "Only print properties"
 msgstr "Iba vypísať vlastnosti"
 
-#: gio/gdbus-tool.c:1727
+#: gio/gdbus-tool.c:1779
 msgid "Introspect a remote object."
 msgstr "Vnútorne preskúmať vzdialený objekt."
 
-#: gio/gdbus-tool.c:1933
+#: gio/gdbus-tool.c:1985
 msgid "Destination name to monitor"
 msgstr "Názov cieľa na sledovanie"
 
-#: gio/gdbus-tool.c:1934
+#: gio/gdbus-tool.c:1986
 msgid "Object path to monitor"
 msgstr "Cesta objektu na sledovanie"
 
-#: gio/gdbus-tool.c:1959
+#: gio/gdbus-tool.c:2011
 msgid "Monitor a remote object."
 msgstr "Sledovať vzdialený objekt."
 
-#: gio/gdbus-tool.c:2017
+#: gio/gdbus-tool.c:2069
 msgid "Error: can’t monitor a non-message-bus connection\n"
 msgstr ""
 
-#: gio/gdbus-tool.c:2141
+#: gio/gdbus-tool.c:2193
 msgid "Service to activate before waiting for the other one (well-known name)"
 msgstr "Služba, ktorá sa má aktivovať  pred čakaním na inú (so známym menom)"
 
-#: gio/gdbus-tool.c:2144
+#: gio/gdbus-tool.c:2196
 msgid ""
 "Timeout to wait for before exiting with an error (seconds); 0 for no timeout "
 "(default)"
@@ -1270,63 +1303,63 @@ msgstr ""
 "Časový limit (v sekundách) pre čakanie, po uplynutí ktorého sa ukončí "
 "chybou; 0 bez limitu (predvolené)"
 
-#: gio/gdbus-tool.c:2192
+#: gio/gdbus-tool.c:2244
 msgid "[OPTION…] BUS-NAME"
 msgstr "[VOĽBA…] NÁZOV_ZBERNICE"
 
-#: gio/gdbus-tool.c:2193
+#: gio/gdbus-tool.c:2245
 msgid "Wait for a bus name to appear."
 msgstr "Čakať na zjavenie názvu zbernice."
 
-#: gio/gdbus-tool.c:2269
+#: gio/gdbus-tool.c:2321
 msgid "Error: A service to activate for must be specified.\n"
 msgstr "Chyba: Musí byť určená služba, ktorá sa má aktivovať.\n"
 
-#: gio/gdbus-tool.c:2274
+#: gio/gdbus-tool.c:2326
 msgid "Error: A service to wait for must be specified.\n"
 msgstr "Chyba: Musí byť určená služba, na ktorú sa má čakať.\n"
 
-#: gio/gdbus-tool.c:2279
+#: gio/gdbus-tool.c:2331
 msgid "Error: Too many arguments.\n"
 msgstr "Chyba: Príliš veľa parametrov.\n"
 
-#: gio/gdbus-tool.c:2287 gio/gdbus-tool.c:2294
+#: gio/gdbus-tool.c:2339 gio/gdbus-tool.c:2346
 #, c-format
 msgid "Error: %s is not a valid well-known bus name.\n"
 msgstr "Chyba: %s nie je platný známy názov zbernice.\n"
 
-#: gio/gdesktopappinfo.c:2073 gio/gdesktopappinfo.c:4893
+#: gio/gdesktopappinfo.c:2106 gio/gdesktopappinfo.c:4932
 msgid "Unnamed"
 msgstr "Bez názvu"
 
-#: gio/gdesktopappinfo.c:2483
+#: gio/gdesktopappinfo.c:2516
 msgid "Desktop file didn’t specify Exec field"
 msgstr "V súbore desktop nie je určené pole Exec"
 
-#: gio/gdesktopappinfo.c:2763
+#: gio/gdesktopappinfo.c:2801
 msgid "Unable to find terminal required for application"
 msgstr "Nepodarilo sa nájsť terminál vyžadovaný pre aplikáciu"
 
-#: gio/gdesktopappinfo.c:3414
+#: gio/gdesktopappinfo.c:3452
 #, c-format
 msgid "Can’t create user application configuration folder %s: %s"
 msgstr "Nedá sa vytvoriť používateľský konfiguračný priečinok aplikácie %s: %s"
 
-#: gio/gdesktopappinfo.c:3418
+#: gio/gdesktopappinfo.c:3456
 #, c-format
 msgid "Can’t create user MIME configuration folder %s: %s"
 msgstr "Nedá sa vytvoriť používateľský konfiguračný priečinok MIME %s: %s"
 
-#: gio/gdesktopappinfo.c:3660 gio/gdesktopappinfo.c:3684
+#: gio/gdesktopappinfo.c:3698 gio/gdesktopappinfo.c:3722
 msgid "Application information lacks an identifier"
 msgstr "V informáciách o aplikácii chýba identifikátor"
 
-#: gio/gdesktopappinfo.c:3920
+#: gio/gdesktopappinfo.c:3958
 #, c-format
 msgid "Can’t create user desktop file %s"
 msgstr "Nedá sa vytvoriť používateľský desktop súbor %s"
 
-#: gio/gdesktopappinfo.c:4056
+#: gio/gdesktopappinfo.c:4094
 #, c-format
 msgid "Custom definition for %s"
 msgstr "Vlastná definícia pre %s"
@@ -1356,7 +1389,7 @@ msgstr "mechanika neimplementuje spustenie"
 msgid "drive doesn’t implement stop"
 msgstr "mechanika neimplementuje zastavenie"
 
-#: gio/gdtlsconnection.c:1120 gio/gtlsconnection.c:921
+#: gio/gdtlsconnection.c:1153 gio/gtlsconnection.c:920
 msgid "TLS backend does not implement TLS binding retrieval"
 msgstr ""
 
@@ -1393,93 +1426,83 @@ msgstr "Chybný počet tokenov (%d) v kódovaní GEmblemedIcon"
 msgid "Expected a GEmblem for GEmblemedIcon"
 msgstr "Očakávaný GEmblem pre GEmblemedIcon"
 
-#: gio/gfile.c:1044 gio/gfile.c:1282 gio/gfile.c:1420 gio/gfile.c:1658
-#: gio/gfile.c:1713 gio/gfile.c:1771 gio/gfile.c:1855 gio/gfile.c:1912
-#: gio/gfile.c:1976 gio/gfile.c:2031 gio/gfile.c:3722 gio/gfile.c:3777
-#: gio/gfile.c:4070 gio/gfile.c:4540 gio/gfile.c:4951 gio/gfile.c:5036
-#: gio/gfile.c:5126 gio/gfile.c:5223 gio/gfile.c:5310 gio/gfile.c:5411
-#: gio/gfile.c:8121 gio/gfile.c:8211 gio/gfile.c:8295
-#: gio/win32/gwinhttpfile.c:453
-msgid "Operation not supported"
-msgstr "Nepodporovaná operácia"
-
 #. Translators: This is an error message when
 #. * trying to find the enclosing (user visible)
 #. * mount of a file, but none exists.
 #.
-#: gio/gfile.c:1543
+#: gio/gfile.c:1561
 msgid "Containing mount does not exist"
 msgstr "Obklopujúce pripojenie neexistuje"
 
-#: gio/gfile.c:2590 gio/glocalfile.c:2430
+#: gio/gfile.c:2608 gio/glocalfile.c:2477
 msgid "Can’t copy over directory"
 msgstr "Nedá sa prepísať adresár pri kopírovaní"
 
-#: gio/gfile.c:2650
+#: gio/gfile.c:2668
 msgid "Can’t copy directory over directory"
 msgstr "Nedá sa prepísať adresár adresárom pri kopírovaní"
 
-#: gio/gfile.c:2658
+#: gio/gfile.c:2676
 msgid "Target file exists"
 msgstr "Cieľový súbor existuje"
 
-#: gio/gfile.c:2677
+#: gio/gfile.c:2695
 msgid "Can’t recursively copy directory"
 msgstr "Adresár sa nedá kopírovať rekurzívne"
 
-#: gio/gfile.c:2952
+#: gio/gfile.c:2996
 msgid "Splice not supported"
 msgstr "Operácia zreťazovania vstupu s výstupom nie je podporovaná"
 
 # http://developer.gnome.org/gio/2.32/GOutputStream.html#g-output-stream-splice
-#: gio/gfile.c:2956 gio/gfile.c:3001
+#: gio/gfile.c:3000
 #, c-format
 msgid "Error splicing file: %s"
 msgstr "Chyba pri zreťazovaní súboru: %s"
 
-#: gio/gfile.c:3117
+#: gio/gfile.c:3152
 msgid "Copy (reflink/clone) between mounts is not supported"
 msgstr "Kopírovanie (odkaz/klon) medzi pripojeniami nie je podporované"
 
-#: gio/gfile.c:3121
+#: gio/gfile.c:3156
 msgid "Copy (reflink/clone) is not supported or invalid"
 msgstr ""
 "Kopírovanie (odkaz/klon) medzi pripojeniami nie je podporované alebo je "
 "neplatné"
 
-#: gio/gfile.c:3126
+#: gio/gfile.c:3161
 msgid "Copy (reflink/clone) is not supported or didn’t work"
 msgstr ""
 "Kopírovanie (odkaz/klon) medzi pripojeniami nie je podporované alebo "
 "nefunguje"
 
-#: gio/gfile.c:3190
+#: gio/gfile.c:3226
 msgid "Can’t copy special file"
 msgstr "Špeciálny súbor sa nedá kopírovať"
 
-#: gio/gfile.c:4003
+#: gio/gfile.c:4035
 msgid "Invalid symlink value given"
 msgstr "Neplatný daný symbolický odkaz"
 
-#: gio/gfile.c:4013 glib/gfileutils.c:2349
+#: gio/gfile.c:4045 glib/gfileutils.c:2354
 msgid "Symbolic links not supported"
 msgstr "Symbolické odkazy nie sú podporované"
 
-#: gio/gfile.c:4181
+#: gio/gfile.c:4213
 msgid "Trash not supported"
 msgstr "Zahodenie do Koša nie je podporované"
 
 # literal character
-#: gio/gfile.c:4293
+#: gio/gfile.c:4325
 #, c-format
 msgid "File names cannot contain “%c”"
 msgstr "Názvy súborov nemôžu obsahovať „%c“"
 
-#: gio/gfile.c:6774 gio/gvolume.c:364
+#: gio/gfile.c:6806 gio/gvolume.c:364
 msgid "volume doesn’t implement mount"
 msgstr "zväzok neimplementuje pripojenie"
 
-#: gio/gfile.c:6888 gio/gfile.c:6936
+#: gio/gfile.c:6920 gio/gfile.c:6968
 msgid "No application is registered as handling this file"
 msgstr "Žiadna aplikácia nie je zaregistrovaná na spracovanie tohto súboru"
 
@@ -1498,12 +1521,12 @@ msgstr "Enumerátor súborov má nevykonanú operáciu"
 msgid "File enumerator is already closed"
 msgstr "Enumerátor súborov je už uzatvorený"
 
-#: gio/gfileicon.c:236
+#: gio/gfileicon.c:250
 #, c-format
 msgid "Can’t handle version %d of GFileIcon encoding"
 msgstr "Nedá sa spracovať kódovanie GFileIcon verzie %d"
 
-#: gio/gfileicon.c:246
+#: gio/gfileicon.c:260
 msgid "Malformed input data for GFileIcon"
 msgstr "Zle formátované vstupné údaje pre GFileIcon"
 
@@ -1527,7 +1550,7 @@ msgid "Truncate not supported on stream"
 msgstr "Skrátenie nie je v prúde podporované"
 
 #: gio/ghttpproxy.c:91 gio/gresolver.c:443 gio/gresolver.c:596
-#: glib/gconvert.c:1778
+#: glib/gconvert.c:1825
 msgid "Invalid hostname"
 msgstr "Neplatný názov hostiteľa"
 
@@ -1552,7 +1575,13 @@ msgstr "Vyžaduje sa overenie totožnosti sprostredkovateľa HTTP"
 msgid "HTTP proxy connection failed: %i"
 msgstr "Pripojenie k sprostredkovateľovi HTTP zlyhalo: %i"
 
-#: gio/ghttpproxy.c:269
+#: gio/ghttpproxy.c:266
+#, fuzzy
+#| msgid "HTTP proxy connection failed: %i"
+msgid "HTTP proxy response too big"
+msgstr "Pripojenie k sprostredkovateľovi HTTP zlyhalo: %i"
+
+#: gio/ghttpproxy.c:283
 msgid "HTTP proxy server closed connection unexpectedly."
 msgstr "Server sprostredkovateľa HTTP neočakávane prerušil pripojenie."
 
@@ -1614,7 +1643,7 @@ msgid "Could not parse “%s” as IP address mask"
 msgstr "Nepodarilo sa analyzovať „%s“ ako masku adresy IP"
 
 #: gio/ginetsocketaddress.c:203 gio/ginetsocketaddress.c:220
-#: gio/gnativesocketaddress.c:109 gio/gunixsocketaddress.c:220
+#: gio/gnativesocketaddress.c:109 gio/gunixsocketaddress.c:221
 msgid "Not enough space for socket address"
 msgstr "Nie je dostatok miesta pre adresu soketu"
 
@@ -1632,7 +1661,7 @@ msgstr "Vstupný prúd neimplementuje čítanie"
 #. 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:1218 gio/giostream.c:310 gio/goutputstream.c:2208
+#: gio/ginputstream.c:1249 gio/giostream.c:310 gio/goutputstream.c:2208
 msgid "Stream has outstanding operation"
 msgstr "Prúd má nevykonanú operáciu"
 
@@ -1674,58 +1703,64 @@ msgid "Show information about locations"
 msgstr "Zobrazí informácie o umiestneniach"
 
 #: gio/gio-tool.c:232
+#, fuzzy
+#| msgid "List static actions for an application (from .desktop file)"
+msgid "Launch an application from a desktop file"
+msgstr "Vypíše zoznam statických akcií pre aplikáciu (zo súboru typu .desktop)"
+
+#: gio/gio-tool.c:233
 msgid "List the contents of locations"
 msgstr "Vypíše obsah umiestnení"
 
-#: gio/gio-tool.c:233
+#: gio/gio-tool.c:234
 msgid "Get or set the handler for a mimetype"
 msgstr "Získa alebo nastaví obslužný program pre typ MIME"
 
-#: gio/gio-tool.c:234
+#: gio/gio-tool.c:235
 msgid "Create directories"
 msgstr "Vytvorí adresáre"
 
-#: gio/gio-tool.c:235
+#: gio/gio-tool.c:236
 msgid "Monitor files and directories for changes"
 msgstr "Sleduje zmeny súborov a adresárov"
 
-#: gio/gio-tool.c:236
+#: gio/gio-tool.c:237
 msgid "Mount or unmount the locations"
 msgstr "Pripojí alebo odpojí umiestnenia"
 
-#: gio/gio-tool.c:237
+#: gio/gio-tool.c:238
 msgid "Move one or more files"
 msgstr "Presunie jeden alebo viac súborov"
 
-#: gio/gio-tool.c:238
+#: gio/gio-tool.c:239
 msgid "Open files with the default application"
 msgstr "Otvorí súbory predvolenou aplikáciou"
 
-#: gio/gio-tool.c:239
+#: gio/gio-tool.c:240
 msgid "Rename a file"
 msgstr "Premenuje súbor"
 
-#: gio/gio-tool.c:240
+#: gio/gio-tool.c:241
 msgid "Delete one or more files"
 msgstr "Odstráni jeden alebo viac súborov"
 
-#: gio/gio-tool.c:241
+#: gio/gio-tool.c:242
 msgid "Read from standard input and save"
 msgstr "Číta z predvoleného vstupu a ukladá"
 
-#: gio/gio-tool.c:242
+#: gio/gio-tool.c:243
 msgid "Set a file attribute"
 msgstr "Nastaví atribút súboru"
 
-#: gio/gio-tool.c:243
+#: gio/gio-tool.c:244
 msgid "Move files or directories to the trash"
 msgstr "Presunie súbory alebo adresáre do Koša"
 
-#: gio/gio-tool.c:244
+#: gio/gio-tool.c:245
 msgid "Lists the contents of locations in a tree"
 msgstr "Vypíše obsah umiestnení v stromovom zobrazení"
 
-#: gio/gio-tool.c:246
+#: gio/gio-tool.c:247
 #, c-format
 msgid "Use %s to get detailed help.\n"
 msgstr "Na získanie podrobnejšieho pomocníka, použite %s.\n"
@@ -1735,12 +1770,12 @@ msgid "Error writing to stdout"
 msgstr "Chyba pri zápise na štandardný výstup"
 
 #. Translators: commandline placeholder
-#: gio/gio-tool-cat.c:133 gio/gio-tool-info.c:333 gio/gio-tool-list.c:172
+#: gio/gio-tool-cat.c:133 gio/gio-tool-info.c:340 gio/gio-tool-list.c:172
 #: 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:1199 gio/gio-tool-open.c:70
+#: gio/gio-tool-monitor.c:204 gio/gio-tool-mount.c:1199 gio/gio-tool-open.c:70
 #: gio/gio-tool-remove.c:48 gio/gio-tool-rename.c:45 gio/gio-tool-set.c:89
-#: gio/gio-tool-trash.c:90 gio/gio-tool-tree.c:239
+#: gio/gio-tool-trash.c:220 gio/gio-tool-tree.c:239
 msgid "LOCATION"
 msgstr "UMIESTNENIE"
 
@@ -1759,9 +1794,9 @@ msgstr ""
 "použiť niečo ako \n"
 "smb://server/resource/file.txt ako umiestnenie."
 
-#: gio/gio-tool-cat.c:162 gio/gio-tool-info.c:364 gio/gio-tool-mkdir.c:76
-#: gio/gio-tool-monitor.c:228 gio/gio-tool-mount.c:1250 gio/gio-tool-open.c:96
-#: gio/gio-tool-remove.c:72 gio/gio-tool-trash.c:145
+#: gio/gio-tool-cat.c:162 gio/gio-tool-info.c:371 gio/gio-tool-mkdir.c:76
+#: gio/gio-tool-monitor.c:229 gio/gio-tool-mount.c:1250 gio/gio-tool-open.c:96
+#: gio/gio-tool-remove.c:72 gio/gio-tool-trash.c:303
 msgid "No locations given"
 msgstr "Neposkytnuté žiadne umiestnenia"
 
@@ -1898,24 +1933,24 @@ msgstr "uri: %s\n"
 msgid "local path: %s\n"
 msgstr "miestna cesta: %s\n"
 
-#: gio/gio-tool-info.c:199
+#: gio/gio-tool-info.c:205
 #, c-format
 msgid "unix mount: %s%s %s %s %s\n"
 msgstr ""
 
-#: gio/gio-tool-info.c:279
+#: gio/gio-tool-info.c:286
 msgid "Settable attributes:\n"
 msgstr "Nastaviteľné atribúty:\n"
 
-#: gio/gio-tool-info.c:303
+#: gio/gio-tool-info.c:310
 msgid "Writable attribute namespaces:\n"
 msgstr "Menné priestory zapisovateľného atribútu:\n"
 
-#: gio/gio-tool-info.c:338
+#: gio/gio-tool-info.c:345
 msgid "Show information about locations."
 msgstr "Zobrazí informácie o umiestneniach."
 
-#: gio/gio-tool-info.c:340
+#: gio/gio-tool-info.c:347
 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"
@@ -1931,6 +1966,47 @@ msgstr ""
 "menného priestoru, napr. unix, alebo zadaním '*', čo zastupuje všetky "
 "vlastnosti"
 
+#. Translators: commandline placeholder
+#: gio/gio-tool-launch.c:54
+msgid "DESKTOP-FILE [FILE-ARG …]"
+msgstr ""
+
+#: gio/gio-tool-launch.c:57
+msgid ""
+"Launch an application from a desktop file, passing optional filename "
+"arguments to it."
+msgstr ""
+
+#: gio/gio-tool-launch.c:77
+#, fuzzy
+#| msgid "No files given"
+msgid "No desktop file given"
+msgstr "Neposkytnuté žiadne súbory"
+
+#: gio/gio-tool-launch.c:85
+#, fuzzy
+#| msgid "There is no GCredentials support for your platform"
+msgid "The launch command is not currently supported on this platform"
+msgstr "Neexistuje podpora GCredentials pre vašu platformu"
+
+#: gio/gio-tool-launch.c:98
+#, fuzzy, c-format
+#| msgid "Unable to trash file %s: %s"
+msgid "Unable to load ‘%s‘: %s"
+msgstr "Nepodarilo sa zahodiť súbor %s do Koša: %s"
+
+#: gio/gio-tool-launch.c:107
+#, fuzzy, c-format
+#| msgid "Failed to load info for handler “%s”"
+msgid "Unable to load application information for ‘%s‘"
+msgstr "Zlyhalo načítanie informácii pre obslužný program „%s“"
+
+#: gio/gio-tool-launch.c:119
+#, fuzzy, c-format
+#| msgid "Default application for “%s”: %s\n"
+msgid "Unable to launch application ‘%s’: %s"
+msgstr "Predvolená aplikácia pre „%s“: %s\n"
+
 #: gio/gio-tool-list.c:37 gio/gio-tool-tree.c:32
 msgid "Show hidden files"
 msgstr "Zobrazí skryté súbory"
@@ -2078,7 +2154,7 @@ msgstr ""
 msgid "Watch for mount events"
 msgstr "Sleduje udalosti pripojení"
 
-#: gio/gio-tool-monitor.c:208
+#: gio/gio-tool-monitor.c:209
 msgid "Monitor files or directories for changes."
 msgstr "Sledovať zmeny súborov a adresárov."
 
@@ -2209,7 +2285,7 @@ msgstr ""
 "Otvára súbory predvolenou aplikáciou, ktorá\n"
 "je zaregistrovanou na obsluhu súborov zadaného typu."
 
-#: gio/gio-tool-remove.c:31 gio/gio-tool-trash.c:31
+#: gio/gio-tool-remove.c:31 gio/gio-tool-trash.c:33
 msgid "Ignore nonexistent files, never prompt"
 msgstr "Ignoruje neexistujúce súbory, nepýta sa"
 
@@ -2323,14 +2399,56 @@ msgstr "Hodnota neurčená"
 msgid "Invalid attribute type “%s”"
 msgstr "Neplatný typ atribútu „%s“"
 
-#: gio/gio-tool-trash.c:32
+#: gio/gio-tool-trash.c:34
 msgid "Empty the trash"
 msgstr "Vyprázdni Kôš"
 
-#: gio/gio-tool-trash.c:95
-msgid "Move files or directories to the trash."
+#: gio/gio-tool-trash.c:35
+#, fuzzy
+#| msgid "List the contents of the locations."
+msgid "List files in the trash with their original locations"
+msgstr "Vypíše obsah umiestnení."
+
+#: gio/gio-tool-trash.c:36
+msgid ""
+"Restore a file from trash to its original location (possibly recreating the "
+"directory)"
+msgstr ""
+
+#: gio/gio-tool-trash.c:106
+#, fuzzy
+#| msgid "Unable to find terminal required for application"
+msgid "Unable to find original path"
+msgstr "Nepodarilo sa nájsť terminál vyžadovaný pre aplikáciu"
+
+#: gio/gio-tool-trash.c:123
+#, fuzzy
+#| msgid "Unable to create socket: %s"
+msgid "Unable to recreate original location: "
+msgstr "Nepodarilo sa vytvoriť soket: %s"
+
+#: gio/gio-tool-trash.c:136
+#, fuzzy
+#| msgid "unable to find desktop file for application %s\n"
+msgid "Unable to move file to its original location: "
+msgstr "nepodarilo sa nájsť súbor desktop pre aplikáciu %s\n"
+
+#: gio/gio-tool-trash.c:225
+#, fuzzy
+#| msgid "Move files or directories to the trash."
+msgid "Move/Restore files or directories to the trash."
 msgstr "Presúva súbory alebo adresáre do Koša."
 
+#: gio/gio-tool-trash.c:227
+msgid ""
+"Note: for --restore switch, if the original location of the trashed file \n"
+"already exists, it will not be overwritten unless --force is set."
+msgstr ""
+
+#: gio/gio-tool-trash.c:258
+msgid "Location given doesn't start with trash:///"
+msgstr ""
+
 #: gio/gio-tool-tree.c:33
 msgid "Follow symbolic links, mounts and shortcuts"
 msgstr "Nasleduje symbolické odkazy, pripojenia a skratky"
@@ -2975,7 +3093,7 @@ msgstr "Nenájdené žiadne súbory schém: existujúci výstupný súbor odstr
 msgid "Invalid filename %s"
 msgstr "Neplatný názov súboru %s"
 
-#: gio/glocalfile.c:980
+#: gio/glocalfile.c:982
 #, c-format
 msgid "Error getting filesystem info for %s: %s"
 msgstr "Chyba pri získavaní informácií o súborovom systéme pre %s: %s"
@@ -2984,127 +3102,129 @@ msgstr "Chyba pri získavaní informácií o súborovom systéme pre %s: %s"
 #. * the enclosing (user visible) mount of a file, but none
 #. * exists.
 #.
-#: gio/glocalfile.c:1121
+#: gio/glocalfile.c:1123
 #, c-format
 msgid "Containing mount for file %s not found"
 msgstr "Obklopujúce pripojenie pre súbor %s sa nepodarilo nájsť"
 
-#: gio/glocalfile.c:1144
+#: gio/glocalfile.c:1146
 msgid "Can’t rename root directory"
 msgstr "Koreňový adresár sa nedá premenovať"
 
-#: gio/glocalfile.c:1162 gio/glocalfile.c:1185
+#: gio/glocalfile.c:1164 gio/glocalfile.c:1187
 #, c-format
 msgid "Error renaming file %s: %s"
 msgstr "Chyba pri premenovaní súboru %s: %s"
 
-#: gio/glocalfile.c:1169
+#: gio/glocalfile.c:1171
 msgid "Can’t rename file, filename already exists"
 msgstr "Nedá sa premenovať súbor, názov súboru už existuje"
 
-#: gio/glocalfile.c:1182 gio/glocalfile.c:2324 gio/glocalfile.c:2352
-#: gio/glocalfile.c:2491 gio/glocalfileoutputstream.c:650
+#: gio/glocalfile.c:1184 gio/glocalfile.c:2371 gio/glocalfile.c:2399
+#: gio/glocalfile.c:2538 gio/glocalfileoutputstream.c:656
 msgid "Invalid filename"
 msgstr "Neplatný názov súboru"
 
-#: gio/glocalfile.c:1350 gio/glocalfile.c:1361
+#: gio/glocalfile.c:1352 gio/glocalfile.c:1363
 #, c-format
 msgid "Error opening file %s: %s"
 msgstr "Chyba pri otváraní súboru %s: %s"
 
-#: gio/glocalfile.c:1486
+#: gio/glocalfile.c:1488
 #, c-format
 msgid "Error removing file %s: %s"
 msgstr "Chyba pri odstraňovaní súboru %s: %s"
 
-#: gio/glocalfile.c:1969
+#: gio/glocalfile.c:1982 gio/glocalfile.c:1993
 #, c-format
 msgid "Error trashing file %s: %s"
 msgstr "Chyba pri zahadzovaní súboru %s do Koša: %s"
 
-#: gio/glocalfile.c:2010
-#, c-format
-msgid "Unable to create trash dir %s: %s"
+#: gio/glocalfile.c:2031
+#, fuzzy, c-format
+#| msgid "Unable to create trash dir %s: %s"
+msgid "Unable to create trash directory %s: %s"
 msgstr "Nepodarilo sa vytvoriť adresár Kôš %s: %s"
 
-#: gio/glocalfile.c:2030
+#: gio/glocalfile.c:2052
 #, c-format
 msgid "Unable to find toplevel directory to trash %s"
 msgstr "Nepodarilo sa nájsť adresár najvyššej úrovne pre Kôš %s"
 
-#: gio/glocalfile.c:2038
+#: gio/glocalfile.c:2060
 #, fuzzy, c-format
 #| msgid "Copy (reflink/clone) between mounts is not supported"
 msgid "Trashing on system internal mounts is not supported"
 msgstr "Kopírovanie (odkaz/klon) medzi pripojeniami nie je podporované"
 
-#: gio/glocalfile.c:2118 gio/glocalfile.c:2138
-#, c-format
-msgid "Unable to find or create trash directory for %s"
+#: gio/glocalfile.c:2146 gio/glocalfile.c:2174
+#, fuzzy, c-format
+#| msgid "Unable to find or create trash directory for %s"
+msgid "Unable to find or create trash directory %s to trash %s"
 msgstr "Nepodarilo sa nájsť ani vytvoriť adresár Kôš pre %s"
 
-#: gio/glocalfile.c:2173
+#: gio/glocalfile.c:2220
 #, c-format
 msgid "Unable to create trashing info file for %s: %s"
 msgstr ""
 "Nepodarilo sa vytvoriť informačný súbor o zahadzovaní do Koša pre %s: %s"
 
-#: gio/glocalfile.c:2235
+#: gio/glocalfile.c:2282
 #, c-format
 msgid "Unable to trash file %s across filesystem boundaries"
 msgstr ""
 "Nepodarilo sa zahodiť súbor do Koša cez hranice súborových systémov: %s"
 
-#: gio/glocalfile.c:2239 gio/glocalfile.c:2295
+#: gio/glocalfile.c:2286 gio/glocalfile.c:2342
 #, c-format
 msgid "Unable to trash file %s: %s"
 msgstr "Nepodarilo sa zahodiť súbor %s do Koša: %s"
 
-#: gio/glocalfile.c:2301
+#: gio/glocalfile.c:2348
 #, c-format
 msgid "Unable to trash file %s"
 msgstr "Nepodarilo sa zahodiť súbor %s do Koša"
 
-#: gio/glocalfile.c:2327
+#: gio/glocalfile.c:2374
 #, c-format
 msgid "Error creating directory %s: %s"
 msgstr "Chyba pri vytváraní adresára %s: %s"
 
-#: gio/glocalfile.c:2356
+#: gio/glocalfile.c:2403
 #, c-format
 msgid "Filesystem does not support symbolic links"
 msgstr "Súborový systém nepodporuje symbolické odkazy"
 
-#: gio/glocalfile.c:2359
+#: gio/glocalfile.c:2406
 #, c-format
 msgid "Error making symbolic link %s: %s"
 msgstr "Chyba pri vytváraní symbolického odkazu %s: %s"
 
-#: gio/glocalfile.c:2402 gio/glocalfile.c:2437 gio/glocalfile.c:2494
+#: gio/glocalfile.c:2449 gio/glocalfile.c:2484 gio/glocalfile.c:2541
 #, c-format
 msgid "Error moving file %s: %s"
 msgstr "Chyba pri presúvaní súboru %s: %s"
 
-#: gio/glocalfile.c:2425
+#: gio/glocalfile.c:2472
 msgid "Can’t move directory over directory"
 msgstr "Nedá sa prepísať adresár adresárom počas presúvania"
 
-#: gio/glocalfile.c:2451 gio/glocalfileoutputstream.c:1039
-#: gio/glocalfileoutputstream.c:1053 gio/glocalfileoutputstream.c:1068
-#: gio/glocalfileoutputstream.c:1085 gio/glocalfileoutputstream.c:1099
+#: gio/glocalfile.c:2498 gio/glocalfileoutputstream.c:1108
+#: gio/glocalfileoutputstream.c:1122 gio/glocalfileoutputstream.c:1137
+#: gio/glocalfileoutputstream.c:1154 gio/glocalfileoutputstream.c:1168
 msgid "Backup file creation failed"
 msgstr "Vytvorenie súboru zálohy zlyhalo"
 
-#: gio/glocalfile.c:2470
+#: gio/glocalfile.c:2517
 #, c-format
 msgid "Error removing target file: %s"
 msgstr "Chyba pri odstraňovaní cieľového súboru: %s"
 
-#: gio/glocalfile.c:2484
+#: gio/glocalfile.c:2531
 msgid "Move between mounts not supported"
 msgstr "Presun medzi pripojeniami nie je podporovaný"
 
-#: gio/glocalfile.c:2658
+#: gio/glocalfile.c:2705
 #, c-format
 msgid "Could not determine the disk usage of %s: %s"
 msgstr "Nepodarilo sa určiť využitie disku %s: %s"
@@ -3126,187 +3246,187 @@ msgstr "Neplatný názov rozšíreného atribútu"
 msgid "Error setting extended attribute “%s”: %s"
 msgstr "Chyba pri nastavovaní rozšíreného atribútu „%s“: %s"
 
-#: gio/glocalfileinfo.c:1666 gio/win32/gwinhttpfile.c:191
+#: gio/glocalfileinfo.c:1709 gio/win32/gwinhttpfile.c:191
 msgid " (invalid encoding)"
 msgstr " (neplatné kódovanie)"
 
-#: gio/glocalfileinfo.c:1825 gio/glocalfileoutputstream.c:915
+#: gio/glocalfileinfo.c:1868 gio/glocalfileoutputstream.c:943
+#: gio/glocalfileoutputstream.c:995
 #, c-format
 msgid "Error when getting information for file “%s”: %s"
 msgstr "Chyba pri získavaní informácií pre súbor „%s“: %s"
 
-#: gio/glocalfileinfo.c:2091
+#: gio/glocalfileinfo.c:2134
 #, c-format
 msgid "Error when getting information for file descriptor: %s"
 msgstr "Chyba pri získavaní informácií pre popisovač súboru: %s"
 
-#: gio/glocalfileinfo.c:2136
+#: gio/glocalfileinfo.c:2179
 msgid "Invalid attribute type (uint32 expected)"
 msgstr "Neplatný typ atribútu (očakávané uint32)"
 
-#: gio/glocalfileinfo.c:2154
+#: gio/glocalfileinfo.c:2197
 msgid "Invalid attribute type (uint64 expected)"
 msgstr "Neplatný typ atribútu (očakávané uint64)"
 
-#: gio/glocalfileinfo.c:2173 gio/glocalfileinfo.c:2192
+#: gio/glocalfileinfo.c:2216 gio/glocalfileinfo.c:2235
 msgid "Invalid attribute type (byte string expected)"
 msgstr "Neplatný typ atribútu (očakávaný bajtový reťazec)"
 
-#: gio/glocalfileinfo.c:2239
+#: gio/glocalfileinfo.c:2282
 msgid "Cannot set permissions on symlinks"
 msgstr "Pre symbolické odkazy sa nedajú nastaviť oprávnenia"
 
-#: gio/glocalfileinfo.c:2255
+#: gio/glocalfileinfo.c:2298
 #, c-format
 msgid "Error setting permissions: %s"
 msgstr "Chyba pri nastavovaní oprávnení: %s"
 
-#: gio/glocalfileinfo.c:2306
+#: gio/glocalfileinfo.c:2349
 #, c-format
 msgid "Error setting owner: %s"
 msgstr "Chyba pri nastavovaní vlastníka: %s"
 
-#: gio/glocalfileinfo.c:2329
+#: gio/glocalfileinfo.c:2372
 msgid "symlink must be non-NULL"
 msgstr "symbolický odkaz nesmie byť NULL"
 
-#: gio/glocalfileinfo.c:2339 gio/glocalfileinfo.c:2358
-#: gio/glocalfileinfo.c:2369
+#: gio/glocalfileinfo.c:2382 gio/glocalfileinfo.c:2401
+#: gio/glocalfileinfo.c:2412
 #, c-format
 msgid "Error setting symlink: %s"
 msgstr "Chyba pri nastavovaní symbolického odkazu: %s"
 
-#: gio/glocalfileinfo.c:2348
+#: gio/glocalfileinfo.c:2391
 msgid "Error setting symlink: file is not a symlink"
 msgstr ""
 "Chyba pri nastavovaní symbolického odkazu: súbor nie je symbolický odkaz"
 
-#: gio/glocalfileinfo.c:2420
+#: gio/glocalfileinfo.c:2463
 #, c-format
 msgid "Extra nanoseconds %d for UNIX timestamp %lld are negative"
 msgstr "%d nanosekúnd navyše pre UNIXovú časovú značku %lld je záporných"
 
-#: gio/glocalfileinfo.c:2429
+#: gio/glocalfileinfo.c:2472
 #, c-format
 msgid "Extra nanoseconds %d for UNIX timestamp %lld reach 1 second"
 msgstr "%d nanosekúnd navyše pre UNIXovú časovú značku %lld dosiahlo 1 sekundu"
 
-#: gio/glocalfileinfo.c:2439
+#: gio/glocalfileinfo.c:2482
 #, c-format
 msgid "UNIX timestamp %lld does not fit into 64 bits"
 msgstr "UNIXová časová značka %lld sa nevmestí do 64 bitov"
 
-#: gio/glocalfileinfo.c:2450
+#: gio/glocalfileinfo.c:2493
 #, c-format
 msgid "UNIX timestamp %lld is outside of the range supported by Windows"
 msgstr ""
 "UNIXová časová značka %lld je mimo rozsahu podporovaného systémom Windows"
 
-#: gio/glocalfileinfo.c:2514
+#: gio/glocalfileinfo.c:2570
 #, c-format
 msgid "File name “%s” cannot be converted to UTF-16"
 msgstr "Názov súboru „%s“ nemôže byť prevedený na kódovanie UTF-16"
 
-#: gio/glocalfileinfo.c:2533
+#: gio/glocalfileinfo.c:2589
 #, c-format
 msgid "File “%s” cannot be opened: Windows Error %lu"
 msgstr "Súbor „%s“ sa nedá otvoriť: Chyba systému Windows %lu"
 
-#: gio/glocalfileinfo.c:2546
+#: gio/glocalfileinfo.c:2602
 #, c-format
 msgid "Error setting modification or access time for file “%s”: %lu"
 msgstr "Chyba pri nastavovaní času prístupu alebo zmeny súboru „%s“: %lu"
 
-#: gio/glocalfileinfo.c:2647
+#: gio/glocalfileinfo.c:2703
 #, c-format
 msgid "Error setting modification or access time: %s"
 msgstr "Chyba pri nastavovaní času prístupu alebo zmeny: %s"
 
-#: gio/glocalfileinfo.c:2670
+#: gio/glocalfileinfo.c:2726
 msgid "SELinux context must be non-NULL"
 msgstr "Kontext pre SELinux nesmie byť NULL"
 
-#: gio/glocalfileinfo.c:2685
+#: gio/glocalfileinfo.c:2733
+msgid "SELinux is not enabled on this system"
+msgstr "SELinux nie je na tomto systéme povolený"
+
+#: gio/glocalfileinfo.c:2743
 #, c-format
 msgid "Error setting SELinux context: %s"
 msgstr "Chyba pri nastavovaní kontextu pre SELinux: %s"
 
-#: gio/glocalfileinfo.c:2692
-msgid "SELinux is not enabled on this system"
-msgstr "SELinux nie je na tomto systéme povolený"
-
-#: gio/glocalfileinfo.c:2784
+#: gio/glocalfileinfo.c:2836
 #, c-format
 msgid "Setting attribute %s not supported"
 msgstr "Nastavovanie atribútu %s nie je podporované"
 
-#: gio/glocalfileinputstream.c:168 gio/glocalfileoutputstream.c:795
+#: gio/glocalfileinputstream.c:163 gio/glocalfileoutputstream.c:801
 #, c-format
 msgid "Error reading from file: %s"
 msgstr "Chyba pri čítaní zo súboru: %s"
 
-#: gio/glocalfileinputstream.c:199 gio/glocalfileinputstream.c:211
-#: gio/glocalfileinputstream.c:225 gio/glocalfileinputstream.c:333
-#: gio/glocalfileoutputstream.c:557 gio/glocalfileoutputstream.c:1117
-#, c-format
-msgid "Error seeking in file: %s"
-msgstr "Chyba pri presúvaní v súbore: %s"
-
-#: gio/glocalfileinputstream.c:255 gio/glocalfileoutputstream.c:347
-#: gio/glocalfileoutputstream.c:441
+#: gio/glocalfileinputstream.c:194 gio/glocalfileoutputstream.c:353
+#: gio/glocalfileoutputstream.c:447
 #, c-format
 msgid "Error closing file: %s"
 msgstr "Chyba pri zatváraní súboru: %s"
 
-#: gio/glocalfilemonitor.c:865
+#: gio/glocalfileinputstream.c:272 gio/glocalfileoutputstream.c:563
+#: gio/glocalfileoutputstream.c:1186
+#, c-format
+msgid "Error seeking in file: %s"
+msgstr "Chyba pri presúvaní v súbore: %s"
+
+#: gio/glocalfilemonitor.c:866
 msgid "Unable to find default local file monitor type"
 msgstr "Nepodarilo sa nájsť predvolený typ sledovania lokálneho súboru"
 
-#: gio/glocalfileoutputstream.c:214 gio/glocalfileoutputstream.c:292
-#: gio/glocalfileoutputstream.c:328 gio/glocalfileoutputstream.c:816
+#: gio/glocalfileoutputstream.c:220 gio/glocalfileoutputstream.c:298
+#: gio/glocalfileoutputstream.c:334 gio/glocalfileoutputstream.c:822
 #, c-format
 msgid "Error writing to file: %s"
 msgstr "Chyba pri zápise do súboru: %s"
 
-#: gio/glocalfileoutputstream.c:374
+#: gio/glocalfileoutputstream.c:380
 #, c-format
 msgid "Error removing old backup link: %s"
 msgstr "Chyba pri odstraňovaní starého záložného odkazu: %s"
 
-#: gio/glocalfileoutputstream.c:388 gio/glocalfileoutputstream.c:401
+#: gio/glocalfileoutputstream.c:394 gio/glocalfileoutputstream.c:407
 #, c-format
 msgid "Error creating backup copy: %s"
 msgstr "Chyba pri vytváraní záložnej kópie: %s"
 
-#: gio/glocalfileoutputstream.c:419
+#: gio/glocalfileoutputstream.c:425
 #, c-format
 msgid "Error renaming temporary file: %s"
 msgstr "Chyba pri premenúvaní dočasného súboru: %s"
 
-#: gio/glocalfileoutputstream.c:603 gio/glocalfileoutputstream.c:1168
+#: gio/glocalfileoutputstream.c:609 gio/glocalfileoutputstream.c:1237
 #, c-format
 msgid "Error truncating file: %s"
 msgstr "Chyba pri skracovaní súboru: %s"
 
-#: gio/glocalfileoutputstream.c:656 gio/glocalfileoutputstream.c:894
-#: gio/glocalfileoutputstream.c:1149 gio/gsubprocess.c:380
+#: gio/glocalfileoutputstream.c:662 gio/glocalfileoutputstream.c:907
+#: gio/glocalfileoutputstream.c:1218 gio/gsubprocess.c:226
 #, c-format
 msgid "Error opening file “%s”: %s"
 msgstr "Chyba pri otváraní súboru %s: %s"
 
-#: gio/glocalfileoutputstream.c:928
+#: gio/glocalfileoutputstream.c:957
 msgid "Target file is a directory"
 msgstr "Cieľový súbor je adresár"
 
-#: gio/glocalfileoutputstream.c:933
+#: gio/glocalfileoutputstream.c:971
 msgid "Target file is not a regular file"
 msgstr "Cieľový súbor nie je obyčajný súbor"
 
-#: gio/glocalfileoutputstream.c:945
+#: gio/glocalfileoutputstream.c:1013
 msgid "The file was externally modified"
 msgstr "Súbor bol externe zmenený"
 
-#: gio/glocalfileoutputstream.c:1133
+#: gio/glocalfileoutputstream.c:1202
 #, c-format
 msgid "Error removing old file: %s"
 msgstr "Chyba pri odstraňovaní starého súboru: %s"
@@ -3466,16 +3586,16 @@ msgid "Invalid domain"
 msgstr "Neplatná doména"
 
 # %s je cesta
-#: gio/gresource.c:672 gio/gresource.c:931 gio/gresource.c:970
-#: gio/gresource.c:1094 gio/gresource.c:1166 gio/gresource.c:1239
-#: gio/gresource.c:1320 gio/gresourcefile.c:476 gio/gresourcefile.c:599
+#: gio/gresource.c:681 gio/gresource.c:943 gio/gresource.c:983
+#: gio/gresource.c:1107 gio/gresource.c:1179 gio/gresource.c:1253
+#: gio/gresource.c:1334 gio/gresourcefile.c:476 gio/gresourcefile.c:599
 #: gio/gresourcefile.c:736
 #, c-format
 msgid "The resource at “%s” does not exist"
 msgstr "Zdroj v „%s“ neexistuje"
 
 # %s je cesta
-#: gio/gresource.c:837
+#: gio/gresource.c:848
 #, c-format
 msgid "The resource at “%s” failed to decompress"
 msgstr "Zdroj v „%s“ sa nepodarilo rozbaliť"
@@ -3493,11 +3613,11 @@ msgstr "Zdroj v „%s“ nie je adresár"
 msgid "Input stream doesn’t implement seek"
 msgstr "Vstupný prúd neimplementuje presúvanie"
 
-#: gio/gresource-tool.c:499
+#: gio/gresource-tool.c:500
 msgid "List sections containing resources in an elf FILE"
 msgstr "Zoznam častí obsahujúcich zdroje v SÚBORE vo formáte elf"
 
-#: gio/gresource-tool.c:505
+#: gio/gresource-tool.c:506
 msgid ""
 "List resources\n"
 "If SECTION is given, only list resources in this section\n"
@@ -3507,15 +3627,15 @@ msgstr ""
 "Ak je zadaná ČASŤ, budú to iba zdroje tejto časti\n"
 "Ak je zadaná CESTA, bude to iba zoznam zodpovedajúcich zdrojov"
 
-#: gio/gresource-tool.c:508 gio/gresource-tool.c:518
+#: gio/gresource-tool.c:509 gio/gresource-tool.c:519
 msgid "FILE [PATH]"
 msgstr "SÚBOR [CESTA]"
 
-#: gio/gresource-tool.c:509 gio/gresource-tool.c:519 gio/gresource-tool.c:526
+#: gio/gresource-tool.c:510 gio/gresource-tool.c:520 gio/gresource-tool.c:527
 msgid "SECTION"
 msgstr "ČASŤ"
 
-#: gio/gresource-tool.c:514
+#: gio/gresource-tool.c:515
 msgid ""
 "List resources with details\n"
 "If SECTION is given, only list resources in this section\n"
@@ -3527,15 +3647,15 @@ msgstr ""
 "Ak je zadaná CESTA, bude to iba zoznam zodpovedajúcich zdrojov\n"
 "Podrobnosti zahŕňajú časti, veľkosti a kompresie"
 
-#: gio/gresource-tool.c:524
+#: gio/gresource-tool.c:525
 msgid "Extract a resource file to stdout"
 msgstr "Extrahuje súbor zdrojov do stdout"
 
-#: gio/gresource-tool.c:525
+#: gio/gresource-tool.c:526
 msgid "FILE PATH"
 msgstr "CESTA SÚBORU"
 
-#: gio/gresource-tool.c:539
+#: gio/gresource-tool.c:540
 msgid ""
 "Usage:\n"
 "  gresource [--section SECTION] COMMAND [ARGS…]\n"
@@ -3560,7 +3680,7 @@ msgstr ""
 "  details                   Zoznam zdrojov s podrobnosťami\n"
 "  extract                   Extrahuje zdroj\n"
 
-#: gio/gresource-tool.c:553
+#: gio/gresource-tool.c:554
 #, c-format
 msgid ""
 "Usage:\n"
@@ -3576,19 +3696,19 @@ msgstr ""
 "\n"
 
 # http://en.wikipedia.org/wiki/Executable_and_Linkable_Format
-#: gio/gresource-tool.c:560
+#: gio/gresource-tool.c:561
 msgid "  SECTION   An (optional) elf section name\n"
 msgstr "  ČASŤ      (voliteľný) názov časti elf\n"
 
-#: gio/gresource-tool.c:564 gio/gsettings-tool.c:701
+#: gio/gresource-tool.c:565 gio/gsettings-tool.c:706
 msgid "  COMMAND   The (optional) command to explain\n"
 msgstr "  PRÍKAZ    (voliteľný) príkaz na vysvetlenie\n"
 
-#: gio/gresource-tool.c:570
+#: gio/gresource-tool.c:571
 msgid "  FILE      An elf file (a binary or a shared library)\n"
 msgstr "  SÚBOR     elf súbor (binárny súbor alebo zdieľaná knižnica)\n"
 
-#: gio/gresource-tool.c:573
+#: gio/gresource-tool.c:574
 msgid ""
 "  FILE      An elf file (a binary or a shared library)\n"
 "            or a compiled resource file\n"
@@ -3596,23 +3716,23 @@ msgstr ""
 "  SÚBOR     Súbor vo formáte elf (binárny súbor alebo zdieľaná knižnica)\n"
 "            alebo preložený súbor zdrojov\n"
 
-#: gio/gresource-tool.c:577
+#: gio/gresource-tool.c:578
 msgid "[PATH]"
 msgstr "[CESTA]"
 
-#: gio/gresource-tool.c:579
+#: gio/gresource-tool.c:580
 msgid "  PATH      An (optional) resource path (may be partial)\n"
 msgstr "  CESTA     (voliteľná) cesta k súboru zdrojov (môže byť čiastočná)\n"
 
-#: gio/gresource-tool.c:580
+#: gio/gresource-tool.c:581
 msgid "PATH"
 msgstr "CESTA"
 
-#: gio/gresource-tool.c:582
+#: gio/gresource-tool.c:583
 msgid "  PATH      A resource path\n"
 msgstr "  CESTA     Cesta k súboru zdrojov\n"
 
-#: gio/gsettings-tool.c:49 gio/gsettings-tool.c:70 gio/gsettings-tool.c:906
+#: gio/gsettings-tool.c:49 gio/gsettings-tool.c:70 gio/gsettings-tool.c:911
 #, c-format
 msgid "No such schema “%s”\n"
 msgstr "Neexistuje schéma „%s“\n"
@@ -3643,35 +3763,35 @@ msgstr "Cesta musí končiť lomkou (/)\n"
 msgid "Path must not contain two adjacent slashes (//)\n"
 msgstr "Cesta nesmie obsahovať dve po sebe nasledujúce lomky (//)\n"
 
-#: gio/gsettings-tool.c:536
+#: gio/gsettings-tool.c:541
 msgid "The provided value is outside of the valid range\n"
 msgstr "Poskytnutá hodnota nepatrí do platného rozsahu\n"
 
-#: gio/gsettings-tool.c:543
+#: gio/gsettings-tool.c:548
 msgid "The key is not writable\n"
 msgstr "Kľúč nie je zapisovateľný\n"
 
-#: gio/gsettings-tool.c:579
+#: gio/gsettings-tool.c:584
 msgid "List the installed (non-relocatable) schemas"
 msgstr "Vypíše nainštalované (nepremiestniteľné) schémy"
 
-#: gio/gsettings-tool.c:585
+#: gio/gsettings-tool.c:590
 msgid "List the installed relocatable schemas"
 msgstr "Vypíše nainštalované premiestniteľné schémy"
 
-#: gio/gsettings-tool.c:591
+#: gio/gsettings-tool.c:596
 msgid "List the keys in SCHEMA"
 msgstr "Vypíše kľúče v SCHÉME"
 
-#: gio/gsettings-tool.c:592 gio/gsettings-tool.c:598 gio/gsettings-tool.c:641
+#: gio/gsettings-tool.c:597 gio/gsettings-tool.c:603 gio/gsettings-tool.c:646
 msgid "SCHEMA[:PATH]"
 msgstr "SCHÉMA[:CESTA]"
 
-#: gio/gsettings-tool.c:597
+#: gio/gsettings-tool.c:602
 msgid "List the children of SCHEMA"
 msgstr "Vypíše potomkov SCHÉMY"
 
-#: gio/gsettings-tool.c:603
+#: gio/gsettings-tool.c:608
 msgid ""
 "List keys and values, recursively\n"
 "If no SCHEMA is given, list all keys\n"
@@ -3679,48 +3799,48 @@ msgstr ""
 "Vypíše rekurzívne všetky kľúče a hodnoty\n"
 "Ak SCHÉMA nie je zadaná, vypíše všetky kľúče\n"
 
-#: gio/gsettings-tool.c:605
+#: gio/gsettings-tool.c:610
 msgid "[SCHEMA[:PATH]]"
 msgstr "[SCHÉMA[:CESTA]]"
 
-#: gio/gsettings-tool.c:610
+#: gio/gsettings-tool.c:615
 msgid "Get the value of KEY"
 msgstr "Získa hodnotu KĽÚČA"
 
-#: gio/gsettings-tool.c:611 gio/gsettings-tool.c:617 gio/gsettings-tool.c:623
-#: gio/gsettings-tool.c:635 gio/gsettings-tool.c:647
+#: gio/gsettings-tool.c:616 gio/gsettings-tool.c:622 gio/gsettings-tool.c:628
+#: gio/gsettings-tool.c:640 gio/gsettings-tool.c:652
 msgid "SCHEMA[:PATH] KEY"
 msgstr "SCHÉMA[:CESTA] KĽÚČ"
 
-#: gio/gsettings-tool.c:616
+#: gio/gsettings-tool.c:621
 msgid "Query the range of valid values for KEY"
 msgstr "Spýta sa na platný rozsah hodnôt KĽÚČA"
 
-#: gio/gsettings-tool.c:622
+#: gio/gsettings-tool.c:627
 msgid "Query the description for KEY"
 msgstr "Spýta sa na popis KĽÚČA"
 
-#: gio/gsettings-tool.c:628
+#: gio/gsettings-tool.c:633
 msgid "Set the value of KEY to VALUE"
 msgstr "Nastaví hodnotu KĽÚČA na HODNOTU"
 
-#: gio/gsettings-tool.c:629
+#: gio/gsettings-tool.c:634
 msgid "SCHEMA[:PATH] KEY VALUE"
 msgstr "SCHÉMA[:CESTA] KĽÚČ HODNOTA"
 
-#: gio/gsettings-tool.c:634
+#: gio/gsettings-tool.c:639
 msgid "Reset KEY to its default value"
 msgstr "Nastaví KĽÚČ na jeho predvolenú hodnotu"
 
-#: gio/gsettings-tool.c:640
+#: gio/gsettings-tool.c:645
 msgid "Reset all keys in SCHEMA to their defaults"
 msgstr "Nastaví všetky kľúče v SCHÉME na ich predvolené hodnoty"
 
-#: gio/gsettings-tool.c:646
+#: gio/gsettings-tool.c:651
 msgid "Check if KEY is writable"
 msgstr "Skontroluje, či je KĽÚČ zapisovateľný"
 
-#: gio/gsettings-tool.c:652
+#: gio/gsettings-tool.c:657
 msgid ""
 "Monitor KEY for changes.\n"
 "If no KEY is specified, monitor all keys in SCHEMA.\n"
@@ -3730,11 +3850,11 @@ msgstr ""
 "Ak KĽÚČ nie určený, sleduje všetky kľúče v SCHÉME.\n"
 "Sledovanie zastavíte pomocou ^C.\n"
 
-#: gio/gsettings-tool.c:655
+#: gio/gsettings-tool.c:660
 msgid "SCHEMA[:PATH] [KEY]"
 msgstr "SCHÉMA[:CESTA] [KĽÚČ]"
 
-#: gio/gsettings-tool.c:667
+#: gio/gsettings-tool.c:672
 msgid ""
 "Usage:\n"
 "  gsettings --version\n"
@@ -3782,7 +3902,7 @@ msgstr ""
 "Podrobnejšieho pomocníka získate pomocou „gsettings help PRÍKAZ“.\n"
 "\n"
 
-#: gio/gsettings-tool.c:691
+#: gio/gsettings-tool.c:696
 #, c-format
 msgid ""
 "Usage:\n"
@@ -3797,11 +3917,11 @@ msgstr ""
 "%s\n"
 "\n"
 
-#: gio/gsettings-tool.c:697
+#: gio/gsettings-tool.c:702
 msgid "  SCHEMADIR A directory to search for additional schemas\n"
 msgstr "  ADRESÁR_SCHÉMY Adresár, v ktorom sa majú hľadať dodatočné schémy\n"
 
-#: gio/gsettings-tool.c:705
+#: gio/gsettings-tool.c:710
 msgid ""
 "  SCHEMA    The name of the schema\n"
 "  PATH      The path, for relocatable schemas\n"
@@ -3809,32 +3929,32 @@ msgstr ""
 "  SCHÉMA    Názov schémy\n"
 "  CESTA     Cesta pre premiestniteľné schémy\n"
 
-#: gio/gsettings-tool.c:710
+#: gio/gsettings-tool.c:715
 msgid "  KEY       The (optional) key within the schema\n"
 msgstr "  KĽÚČ      (voliteľný) kľúč vo vnútri schémy\n"
 
-#: gio/gsettings-tool.c:714
+#: gio/gsettings-tool.c:719
 msgid "  KEY       The key within the schema\n"
 msgstr "  KĽÚČ      Kľúč vo vnútri schémy\n"
 
-#: gio/gsettings-tool.c:718
+#: gio/gsettings-tool.c:723
 msgid "  VALUE     The value to set\n"
 msgstr "  HODNOTA   Hodnota, ktorá sa má nastaviť\n"
 
-#: gio/gsettings-tool.c:773
+#: gio/gsettings-tool.c:778
 #, c-format
 msgid "Could not load schemas from %s: %s\n"
 msgstr "Nepodarilo sa načítať schémy z %s: %s\n"
 
-#: gio/gsettings-tool.c:785
+#: gio/gsettings-tool.c:790
 msgid "No schemas installed\n"
 msgstr "Nie sú nainštalované žiadne schémy\n"
 
-#: gio/gsettings-tool.c:864
+#: gio/gsettings-tool.c:869
 msgid "Empty schema name given\n"
 msgstr "Poskytnutý prázdny názov schémy\n"
 
-#: gio/gsettings-tool.c:919
+#: gio/gsettings-tool.c:924
 #, c-format
 msgid "No such key “%s”\n"
 msgstr "Neexistuje kľúč „%s“\n"
@@ -3852,7 +3972,7 @@ msgstr "Neplatný soket, inicializácia zlyhala kvôli: %s"
 msgid "Socket is already closed"
 msgstr "Soket je už zatvorený"
 
-#: gio/gsocket.c:443 gio/gsocket.c:3180 gio/gsocket.c:4403 gio/gsocket.c:4461
+#: gio/gsocket.c:443 gio/gsocket.c:3190 gio/gsocket.c:4420 gio/gsocket.c:4478
 msgid "Socket I/O timed out"
 msgstr "Vypršal časový limit V/V soketu"
 
@@ -3861,186 +3981,192 @@ msgstr "Vypršal časový limit V/V soketu"
 msgid "creating GSocket from fd: %s"
 msgstr "vytvára sa GSocket z popisovanča súboru: %s"
 
-#: gio/gsocket.c:607 gio/gsocket.c:661 gio/gsocket.c:668
+#: gio/gsocket.c:607 gio/gsocket.c:671 gio/gsocket.c:678
 #, c-format
 msgid "Unable to create socket: %s"
 msgstr "Nepodarilo sa vytvoriť soket: %s"
 
-#: gio/gsocket.c:661
+#: gio/gsocket.c:671
 msgid "Unknown family was specified"
 msgstr "Bola zadaná neznáma rodina protokolov"
 
-#: gio/gsocket.c:668
+#: gio/gsocket.c:678
 msgid "Unknown protocol was specified"
 msgstr "Bol zadaný neznámy protokol"
 
-#: gio/gsocket.c:1159
+#: gio/gsocket.c:1169
 #, c-format
 msgid "Cannot use datagram operations on a non-datagram socket."
 msgstr ""
 "Nedajú sa použiť operácie soketu datagram na sokete nepodporujúcom datagram."
 
-#: gio/gsocket.c:1176
+#: gio/gsocket.c:1186
 #, c-format
 msgid "Cannot use datagram operations on a socket with a timeout set."
 msgstr ""
 "Nedajú sa použiť operácie soketu datagram na sokete s nastavením vypršaním "
 "času."
 
-#: gio/gsocket.c:1983
+#: gio/gsocket.c:1993
 #, c-format
 msgid "could not get local address: %s"
 msgstr "nepodarilo sa získať lokálnu adresu: %s"
 
-#: gio/gsocket.c:2029
+#: gio/gsocket.c:2039
 #, c-format
 msgid "could not get remote address: %s"
 msgstr "nepodarilo sa získať vzdialenú adresu: %s"
 
-#: gio/gsocket.c:2095
+#: gio/gsocket.c:2105
 #, c-format
 msgid "could not listen: %s"
 msgstr "nepodarilo sa počúvať: %s"
 
-#: gio/gsocket.c:2199
+#: gio/gsocket.c:2209
 #, c-format
 msgid "Error binding to address %s: %s"
 msgstr "Chyba pri viazaní sa na adresu %s: %s"
 
-#: gio/gsocket.c:2375 gio/gsocket.c:2412 gio/gsocket.c:2522 gio/gsocket.c:2547
-#: gio/gsocket.c:2610 gio/gsocket.c:2668 gio/gsocket.c:2686
+#: gio/gsocket.c:2385 gio/gsocket.c:2422 gio/gsocket.c:2532 gio/gsocket.c:2557
+#: gio/gsocket.c:2620 gio/gsocket.c:2678 gio/gsocket.c:2696
 #, c-format
 msgid "Error joining multicast group: %s"
 msgstr "Chyba pri pripájaní sa k multicast skupine: %s"
 
-#: gio/gsocket.c:2376 gio/gsocket.c:2413 gio/gsocket.c:2523 gio/gsocket.c:2548
-#: gio/gsocket.c:2611 gio/gsocket.c:2669 gio/gsocket.c:2687
+#: gio/gsocket.c:2386 gio/gsocket.c:2423 gio/gsocket.c:2533 gio/gsocket.c:2558
+#: gio/gsocket.c:2621 gio/gsocket.c:2679 gio/gsocket.c:2697
 #, c-format
 msgid "Error leaving multicast group: %s"
 msgstr "Chyba pri odpájaní sa od multicast skupiny: %s"
 
 # PM: SSM je termín neprekladal som to
 # http://en.wikipedia.org/wiki/Source-specific_multicast
-#: gio/gsocket.c:2377
+#: gio/gsocket.c:2387
 msgid "No support for source-specific multicast"
 msgstr "Nie je podpora pre source-specific multicast"
 
-#: gio/gsocket.c:2524
+#: gio/gsocket.c:2534
 msgid "Unsupported socket family"
 msgstr "Nepodporovaná rodina soketu"
 
-#: gio/gsocket.c:2549
+#: gio/gsocket.c:2559
 msgid "source-specific not an IPv4 address"
 msgstr ""
 
-#: gio/gsocket.c:2573
+#: gio/gsocket.c:2583
 #, c-format
 msgid "Interface name too long"
 msgstr "Názov rozhrania je príliš dlhý"
 
-#: gio/gsocket.c:2586 gio/gsocket.c:2636
+#: gio/gsocket.c:2596 gio/gsocket.c:2646
 #, c-format
 msgid "Interface not found: %s"
 msgstr "Nenašlo sa rozhranie: %s"
 
 # PM: SSM je termín neprekladal som to
 # http://en.wikipedia.org/wiki/Source-specific_multicast
-#: gio/gsocket.c:2612
+#: gio/gsocket.c:2622
 msgid "No support for IPv4 source-specific multicast"
 msgstr "Nie je podpora pre IPv4 source-specific multicast"
 
 # PM: SSM je termín neprekladal som to
 # http://en.wikipedia.org/wiki/Source-specific_multicast
-#: gio/gsocket.c:2670
+#: gio/gsocket.c:2680
 msgid "No support for IPv6 source-specific multicast"
 msgstr "Nie je podpora pre IPv6 source-specific multicast"
 
-#: gio/gsocket.c:2879
+#: gio/gsocket.c:2889
 #, c-format
 msgid "Error accepting connection: %s"
 msgstr "Chyba pri prijímaní pripojenia: %s"
 
-#: gio/gsocket.c:3005
+#: gio/gsocket.c:3015
 msgid "Connection in progress"
 msgstr "Prebieha pripájanie"
 
-#: gio/gsocket.c:3056
+#: gio/gsocket.c:3066
 msgid "Unable to get pending error: "
 msgstr "Nepodarilo sa získať chybu určenú na spracovanie: "
 
-#: gio/gsocket.c:3245
+#: gio/gsocket.c:3255
 #, c-format
 msgid "Error receiving data: %s"
 msgstr "Chyba pri prijímaní údajov: %s"
 
-#: gio/gsocket.c:3442
+#: gio/gsocket.c:3452
 #, c-format
 msgid "Error sending data: %s"
 msgstr "Chyba pri odosielaní údajov: %s"
 
-#: gio/gsocket.c:3629
+#: gio/gsocket.c:3639
 #, c-format
 msgid "Unable to shutdown socket: %s"
 msgstr "Nepodarilo sa vypnúť soket: %s"
 
-#: gio/gsocket.c:3710
+#: gio/gsocket.c:3720
 #, c-format
 msgid "Error closing socket: %s"
 msgstr "Chyba pri zatváraní soketu: %s"
 
-#: gio/gsocket.c:4396
+#: gio/gsocket.c:4413
 #, c-format
 msgid "Waiting for socket condition: %s"
 msgstr "Čaká sa na stav soketu: %s"
 
-#: gio/gsocket.c:4774 gio/gsocket.c:4776 gio/gsocket.c:4923 gio/gsocket.c:5008
-#: gio/gsocket.c:5186 gio/gsocket.c:5226 gio/gsocket.c:5228
+#: gio/gsocket.c:4804 gio/gsocket.c:4820 gio/gsocket.c:4833
+#, fuzzy, c-format
+#| msgid "Error sending message: %s"
+msgid "Unable to send message: %s"
+msgstr "Chyba pri odosielaní správy: %s"
+
+#: gio/gsocket.c:4805 gio/gsocket.c:4821 gio/gsocket.c:4834
+msgid "Message vectors too large"
+msgstr ""
+
+#: gio/gsocket.c:4850 gio/gsocket.c:4852 gio/gsocket.c:4999 gio/gsocket.c:5084
+#: gio/gsocket.c:5262 gio/gsocket.c:5302 gio/gsocket.c:5304
 #, c-format
 msgid "Error sending message: %s"
 msgstr "Chyba pri odosielaní správy: %s"
 
-#: gio/gsocket.c:4950
+#: gio/gsocket.c:5026
 msgid "GSocketControlMessage not supported on Windows"
 msgstr "GSocketControlMessage nie je podporovaný vo Windows"
 
-#: gio/gsocket.c:5419 gio/gsocket.c:5492 gio/gsocket.c:5718
+#: gio/gsocket.c:5495 gio/gsocket.c:5571 gio/gsocket.c:5797
 #, c-format
 msgid "Error receiving message: %s"
 msgstr "Chyba pri prijímaní správy: %s"
 
-#: gio/gsocket.c:5990 gio/gsocket.c:6038
+#: gio/gsocket.c:6070 gio/gsocket.c:6081 gio/gsocket.c:6127
 #, c-format
 msgid "Unable to read socket credentials: %s"
 msgstr "Nepodarilo sa prečítať poverenia soketu: %s"
 
-#: gio/gsocket.c:6047
+#: gio/gsocket.c:6136
 msgid "g_socket_get_credentials not implemented for this OS"
 msgstr ""
 "g_socket_get_credentials nie je pre tento operačný systém implementovaný"
 
-#: gio/gsocketclient.c:182
+#: gio/gsocketclient.c:191
 #, c-format
 msgid "Could not connect to proxy server %s: "
 msgstr "Nepodarilo sa pripojiť k proxy serveru %s: "
 
-#: gio/gsocketclient.c:196
+#: gio/gsocketclient.c:205
 #, c-format
 msgid "Could not connect to %s: "
 msgstr "Nepodarilo sa pripojiť k %s: "
 
-#: gio/gsocketclient.c:198
+#: gio/gsocketclient.c:207
 msgid "Could not connect: "
 msgstr "Nepodarilo sa pripojiť: "
 
-#: gio/gsocketclient.c:1037 gio/gsocketclient.c:1866
-msgid "Unknown error on connect"
-msgstr "Neznáma chyba pripájania"
-
-#: gio/gsocketclient.c:1091 gio/gsocketclient.c:1668
+#: gio/gsocketclient.c:1162 gio/gsocketclient.c:1749
 msgid "Proxying over a non-TCP connection is not supported."
 msgstr "Pripojenie cez proxy nepoužívajúce TCP nie je podporované."
 
-#: gio/gsocketclient.c:1120 gio/gsocketclient.c:1698
+#: gio/gsocketclient.c:1194 gio/gsocketclient.c:1778
 #, c-format
 msgid "Proxy protocol “%s” is not supported."
 msgstr "Protokol proxy „%s“ nie je podporovaný."
@@ -4173,26 +4299,30 @@ msgstr "Služba nie je dočasne schopná preložiť adresu „%s“"
 msgid "Error resolving “%s”"
 msgstr "Chyba pri preklade adresy „%s“"
 
-#: gio/gtlscertificate.c:243
+#: gio/gtlscertificate.c:419
 msgid "No PEM-encoded private key found"
 msgstr "Nenašiel sa súkromný kľúč v PEM kódovaní"
 
-#: gio/gtlscertificate.c:253
+#: gio/gtlscertificate.c:429
 msgid "Cannot decrypt PEM-encoded private key"
 msgstr "Nepodá sa rozšifrovať súkromný kľúč v kódovaní PEM"
 
-#: gio/gtlscertificate.c:264
+#: gio/gtlscertificate.c:440
 msgid "Could not parse PEM-encoded private key"
 msgstr "Nepodarilo sa analyzovať súkromný kľúč v kódovaní PEM"
 
-#: gio/gtlscertificate.c:291
+#: gio/gtlscertificate.c:467
 msgid "No PEM-encoded certificate found"
 msgstr "Nenašiel sa certifikát v kódovaní PEM"
 
-#: gio/gtlscertificate.c:300
+#: gio/gtlscertificate.c:476
 msgid "Could not parse PEM-encoded certificate"
 msgstr "Neporarilo sa analyzovať certifikát v kódovaní PEM"
 
+#: gio/gtlscertificate.c:832
+msgid "This GTlsBackend does not support creating PKCS #11 certificates"
+msgstr ""
+
 #: gio/gtlspassword.c:111
 msgid ""
 "This is the last chance to enter the password correctly before your access "
@@ -4276,29 +4406,29 @@ msgstr "Neočakávala sa riadiaca správa, no získané %d"
 msgid "Error while disabling SO_PASSCRED: %s"
 msgstr "Chyba počas zakazovania SO_PASSCRED: %s"
 
-#: gio/gunixinputstream.c:362 gio/gunixinputstream.c:383
+#: gio/gunixinputstream.c:357 gio/gunixinputstream.c:378
 #, c-format
 msgid "Error reading from file descriptor: %s"
 msgstr "Chyba pri čítaní z popisovača súboru: %s"
 
-#: gio/gunixinputstream.c:416 gio/gunixoutputstream.c:525
+#: gio/gunixinputstream.c:411 gio/gunixoutputstream.c:520
 #: gio/gwin32inputstream.c:217 gio/gwin32outputstream.c:204
 #, c-format
 msgid "Error closing file descriptor: %s"
 msgstr "Chyba pri zatváraní popisovača súboru: %s"
 
-#: gio/gunixmounts.c:2755 gio/gunixmounts.c:2808
+#: gio/gunixmounts.c:2785 gio/gunixmounts.c:2838
 msgid "Filesystem root"
 msgstr "Koreň súborového systému"
 
-#: gio/gunixoutputstream.c:362 gio/gunixoutputstream.c:382
-#: gio/gunixoutputstream.c:469 gio/gunixoutputstream.c:489
-#: gio/gunixoutputstream.c:635
+#: gio/gunixoutputstream.c:357 gio/gunixoutputstream.c:377
+#: gio/gunixoutputstream.c:464 gio/gunixoutputstream.c:484
+#: gio/gunixoutputstream.c:630
 #, c-format
 msgid "Error writing to file descriptor: %s"
 msgstr "Chyba pri zápise do popisovača súboru: %s"
 
-#: gio/gunixsocketaddress.c:243
+#: gio/gunixsocketaddress.c:244
 msgid "Abstract UNIX domain socket addresses not supported on this system"
 msgstr ""
 "V tomto systéme nie sú podporované abstraktné adresy soketov unixových domén"
@@ -4375,160 +4505,160 @@ msgstr "Spustí službu dbus"
 msgid "Wrong args\n"
 msgstr "Chybné parametre\n"
 
-#: glib/gbookmarkfile.c:768
+#: glib/gbookmarkfile.c:777
 #, c-format
 msgid "Unexpected attribute “%s” for element “%s”"
 msgstr "Neočakávaný atribút „%s“ prvku „%s“"
 
-#: glib/gbookmarkfile.c:779 glib/gbookmarkfile.c:859 glib/gbookmarkfile.c:869
-#: glib/gbookmarkfile.c:982
+#: glib/gbookmarkfile.c:788 glib/gbookmarkfile.c:868 glib/gbookmarkfile.c:878
+#: glib/gbookmarkfile.c:991
 #, c-format
 msgid "Attribute “%s” of element “%s” not found"
 msgstr "Atribút „%s“ prvku „%s“ nenájdený"
 
-#: glib/gbookmarkfile.c:1191 glib/gbookmarkfile.c:1256
-#: glib/gbookmarkfile.c:1320 glib/gbookmarkfile.c:1330
+#: glib/gbookmarkfile.c:1200 glib/gbookmarkfile.c:1265
+#: glib/gbookmarkfile.c:1329 glib/gbookmarkfile.c:1339
 #, c-format
 msgid "Unexpected tag “%s”, tag “%s” expected"
 msgstr "Neočakávaná značka „%s“, bola očakávaná značka „%s“"
 
-#: glib/gbookmarkfile.c:1216 glib/gbookmarkfile.c:1230
-#: glib/gbookmarkfile.c:1298 glib/gbookmarkfile.c:1344
+#: glib/gbookmarkfile.c:1225 glib/gbookmarkfile.c:1239
+#: glib/gbookmarkfile.c:1307 glib/gbookmarkfile.c:1353
 #, c-format
 msgid "Unexpected tag “%s” inside “%s”"
 msgstr "Neočakávaná značka „%s“ vo vnútri „%s“"
 
-#: glib/gbookmarkfile.c:1624
+#: glib/gbookmarkfile.c:1633
 #, c-format
 msgid "Invalid date/time ‘%s’ in bookmark file"
 msgstr "Neplatný dátum alebo čas „%s“ v súbore záložky"
 
-#: glib/gbookmarkfile.c:1827
+#: glib/gbookmarkfile.c:1836
 msgid "No valid bookmark file found in data dirs"
 msgstr "V dátových adresároch nebol nájdený žiadny platný súbor záložiek"
 
-#: glib/gbookmarkfile.c:2028
+#: glib/gbookmarkfile.c:2037
 #, c-format
 msgid "A bookmark for URI “%s” already exists"
 msgstr "Záložka pre identifikátor URI „%s“ už existuje"
 
-#: glib/gbookmarkfile.c:2077 glib/gbookmarkfile.c:2235
-#: glib/gbookmarkfile.c:2320 glib/gbookmarkfile.c:2400
-#: glib/gbookmarkfile.c:2485 glib/gbookmarkfile.c:2619
-#: glib/gbookmarkfile.c:2752 glib/gbookmarkfile.c:2887
-#: glib/gbookmarkfile.c:2929 glib/gbookmarkfile.c:3026
-#: glib/gbookmarkfile.c:3147 glib/gbookmarkfile.c:3341
-#: glib/gbookmarkfile.c:3482 glib/gbookmarkfile.c:3701
-#: glib/gbookmarkfile.c:3790 glib/gbookmarkfile.c:3879
-#: glib/gbookmarkfile.c:3998
+#: glib/gbookmarkfile.c:2086 glib/gbookmarkfile.c:2244
+#: glib/gbookmarkfile.c:2329 glib/gbookmarkfile.c:2409
+#: glib/gbookmarkfile.c:2494 glib/gbookmarkfile.c:2628
+#: glib/gbookmarkfile.c:2761 glib/gbookmarkfile.c:2896
+#: glib/gbookmarkfile.c:2938 glib/gbookmarkfile.c:3035
+#: glib/gbookmarkfile.c:3156 glib/gbookmarkfile.c:3350
+#: glib/gbookmarkfile.c:3491 glib/gbookmarkfile.c:3710
+#: glib/gbookmarkfile.c:3799 glib/gbookmarkfile.c:3888
+#: glib/gbookmarkfile.c:4007
 #, c-format
 msgid "No bookmark found for URI “%s”"
 msgstr "Nebola nájedená záložka pre identifikátor URI „%s“"
 
-#: glib/gbookmarkfile.c:2409
+#: glib/gbookmarkfile.c:2418
 #, c-format
 msgid "No MIME type defined in the bookmark for URI “%s”"
 msgstr "V záložke pre identifikátor URI „%s“ nie je definovaný žiadny typ MIME"
 
-#: glib/gbookmarkfile.c:2494
+#: glib/gbookmarkfile.c:2503
 #, c-format
 msgid "No private flag has been defined in bookmark for URI “%s”"
 msgstr ""
 "V záložke pre identifikátor URI „%s“ nebol definovaný žiadny súkromný príznak"
 
-#: glib/gbookmarkfile.c:3035
+#: glib/gbookmarkfile.c:3044
 #, c-format
 msgid "No groups set in bookmark for URI “%s”"
 msgstr "V záložke pre identifikátor URI „%s“ neboli nastavené žiadne skupiny"
 
-#: glib/gbookmarkfile.c:3503 glib/gbookmarkfile.c:3711
+#: glib/gbookmarkfile.c:3512 glib/gbookmarkfile.c:3720
 #, c-format
 msgid "No application with name “%s” registered a bookmark for “%s”"
 msgstr "Žiadna aplikácia s názvom „%s“ nezaregistrovala záložku pre „%s“"
 
-#: glib/gbookmarkfile.c:3734
+#: glib/gbookmarkfile.c:3743
 #, c-format
 msgid "Failed to expand exec line “%s” with URI “%s”"
 msgstr "Zlyhalo rozvinutie spustiteľného riadka „%s“ o identifikátor URI „%s“"
 
-#: glib/gconvert.c:467
+#: glib/gconvert.c:468
 msgid "Unrepresentable character in conversion input"
 msgstr "Nezobraziteľný znak na vstupe prevodu"
 
-#: glib/gconvert.c:494 glib/gutf8.c:871 glib/gutf8.c:1083 glib/gutf8.c:1220
+#: glib/gconvert.c:495 glib/gutf8.c:871 glib/gutf8.c:1083 glib/gutf8.c:1220
 #: glib/gutf8.c:1324
 msgid "Partial character sequence at end of input"
 msgstr "Čiastočná sekvencia znakov na konci vstupu"
 
-#: glib/gconvert.c:763
+#: glib/gconvert.c:764
 #, c-format
 msgid "Cannot convert fallback “%s” to codeset “%s”"
 msgstr "Nedá sa previesť náhradné „%s“ do kódovej stránky „%s“"
 
-#: glib/gconvert.c:935
+#: glib/gconvert.c:936
 #, fuzzy
 #| msgid "Invalid byte sequence in conversion input"
 msgid "Embedded NUL byte in conversion input"
 msgstr "Neplatná sekvencia bajtov na vstupe prevodu"
 
-#: glib/gconvert.c:956
+#: glib/gconvert.c:957
 #, fuzzy
 #| msgid "Invalid byte sequence in conversion input"
 msgid "Embedded NUL byte in conversion output"
 msgstr "Neplatná sekvencia bajtov na vstupe prevodu"
 
-#: glib/gconvert.c:1641
+#: glib/gconvert.c:1688
 #, c-format
 msgid "The URI “%s” is not an absolute URI using the “file” scheme"
 msgstr ""
 "Identifikátor URI „%s“ nie je absolútny identifikátor URI používajúci schému "
 "„file“"
 
-#: glib/gconvert.c:1651
+#: glib/gconvert.c:1698
 #, c-format
 msgid "The local file URI “%s” may not include a “#”"
 msgstr "Identifikátor URI lokálneho súboru „%s“ nesmie obsahovať „#“"
 
-#: glib/gconvert.c:1668
+#: glib/gconvert.c:1715
 #, c-format
 msgid "The URI “%s” is invalid"
 msgstr "Identifikátor URI „%s“ je neplatný"
 
-#: glib/gconvert.c:1680
+#: glib/gconvert.c:1727
 #, c-format
 msgid "The hostname of the URI “%s” is invalid"
 msgstr "Názov hostiteľa URI „%s“ je neplatný"
 
-#: glib/gconvert.c:1696
+#: glib/gconvert.c:1743
 #, c-format
 msgid "The URI “%s” contains invalidly escaped characters"
 msgstr "Identifikátor URI „%s“ obsahuje neplatné špeciálne uvedené znaky"
 
-#: glib/gconvert.c:1768
+#: glib/gconvert.c:1815
 #, c-format
 msgid "The pathname “%s” is not an absolute path"
 msgstr "Cesta „%s“ nie je absolútna"
 
 #. Translators: this is the preferred format for expressing the date and the time
-#: glib/gdatetime.c:220
+#: glib/gdatetime.c:226
 msgctxt "GDateTime"
 msgid "%a %b %e %H:%M:%S %Y"
 msgstr "%a %-d. %B %Y, %H:%M:%S %Z"
 
 #. Translators: this is the preferred format for expressing the date
-#: glib/gdatetime.c:223
+#: glib/gdatetime.c:229
 msgctxt "GDateTime"
 msgid "%m/%d/%y"
 msgstr "%d.%m.%Y"
 
 #. Translators: this is the preferred format for expressing the time
-#: glib/gdatetime.c:226
+#: glib/gdatetime.c:232
 msgctxt "GDateTime"
 msgid "%H:%M:%S"
 msgstr "%H:%M:%S"
 
 #. Translators: this is the preferred format for expressing 12 hour time
-#: glib/gdatetime.c:229
+#: glib/gdatetime.c:235
 msgctxt "GDateTime"
 msgid "%I:%M:%S %p"
 msgstr "%H:%M:%S"
@@ -4549,62 +4679,62 @@ msgstr "%H:%M:%S"
 #. * non-European) there is no difference between the standalone and
 #. * complete date form.
 #.
-#: glib/gdatetime.c:268
+#: glib/gdatetime.c:274
 msgctxt "full month name"
 msgid "January"
 msgstr "január"
 
-#: glib/gdatetime.c:270
+#: glib/gdatetime.c:276
 msgctxt "full month name"
 msgid "February"
 msgstr "február"
 
-#: glib/gdatetime.c:272
+#: glib/gdatetime.c:278
 msgctxt "full month name"
 msgid "March"
 msgstr "marec"
 
-#: glib/gdatetime.c:274
+#: glib/gdatetime.c:280
 msgctxt "full month name"
 msgid "April"
 msgstr "apríl"
 
-#: glib/gdatetime.c:276
+#: glib/gdatetime.c:282
 msgctxt "full month name"
 msgid "May"
 msgstr "máj"
 
-#: glib/gdatetime.c:278
+#: glib/gdatetime.c:284
 msgctxt "full month name"
 msgid "June"
 msgstr "jún"
 
-#: glib/gdatetime.c:280
+#: glib/gdatetime.c:286
 msgctxt "full month name"
 msgid "July"
 msgstr "júl"
 
-#: glib/gdatetime.c:282
+#: glib/gdatetime.c:288
 msgctxt "full month name"
 msgid "August"
 msgstr "august"
 
-#: glib/gdatetime.c:284
+#: glib/gdatetime.c:290
 msgctxt "full month name"
 msgid "September"
 msgstr "september"
 
-#: glib/gdatetime.c:286
+#: glib/gdatetime.c:292
 msgctxt "full month name"
 msgid "October"
 msgstr "október"
 
-#: glib/gdatetime.c:288
+#: glib/gdatetime.c:294
 msgctxt "full month name"
 msgid "November"
 msgstr "november"
 
-#: glib/gdatetime.c:290
+#: glib/gdatetime.c:296
 msgctxt "full month name"
 msgid "December"
 msgstr "december"
@@ -4626,132 +4756,132 @@ msgstr "december"
 #. * other platform.  Here are abbreviated month names in a form
 #. * appropriate when they are used standalone.
 #.
-#: glib/gdatetime.c:322
+#: glib/gdatetime.c:328
 msgctxt "abbreviated month name"
 msgid "Jan"
 msgstr "jan"
 
-#: glib/gdatetime.c:324
+#: glib/gdatetime.c:330
 msgctxt "abbreviated month name"
 msgid "Feb"
 msgstr "feb"
 
-#: glib/gdatetime.c:326
+#: glib/gdatetime.c:332
 msgctxt "abbreviated month name"
 msgid "Mar"
 msgstr "mar"
 
-#: glib/gdatetime.c:328
+#: glib/gdatetime.c:334
 msgctxt "abbreviated month name"
 msgid "Apr"
 msgstr "apr"
 
-#: glib/gdatetime.c:330
+#: glib/gdatetime.c:336
 msgctxt "abbreviated month name"
 msgid "May"
 msgstr "máj"
 
-#: glib/gdatetime.c:332
+#: glib/gdatetime.c:338
 msgctxt "abbreviated month name"
 msgid "Jun"
 msgstr "jún"
 
-#: glib/gdatetime.c:334
+#: glib/gdatetime.c:340
 msgctxt "abbreviated month name"
 msgid "Jul"
 msgstr "júl"
 
-#: glib/gdatetime.c:336
+#: glib/gdatetime.c:342
 msgctxt "abbreviated month name"
 msgid "Aug"
 msgstr "aug"
 
-#: glib/gdatetime.c:338
+#: glib/gdatetime.c:344
 msgctxt "abbreviated month name"
 msgid "Sep"
 msgstr "sep"
 
-#: glib/gdatetime.c:340
+#: glib/gdatetime.c:346
 msgctxt "abbreviated month name"
 msgid "Oct"
 msgstr "okt"
 
-#: glib/gdatetime.c:342
+#: glib/gdatetime.c:348
 msgctxt "abbreviated month name"
 msgid "Nov"
 msgstr "nov"
 
-#: glib/gdatetime.c:344
+#: glib/gdatetime.c:350
 msgctxt "abbreviated month name"
 msgid "Dec"
 msgstr "dec"
 
-#: glib/gdatetime.c:359
+#: glib/gdatetime.c:365
 msgctxt "full weekday name"
 msgid "Monday"
 msgstr "pondelok"
 
-#: glib/gdatetime.c:361
+#: glib/gdatetime.c:367
 msgctxt "full weekday name"
 msgid "Tuesday"
 msgstr "utorok"
 
-#: glib/gdatetime.c:363
+#: glib/gdatetime.c:369
 msgctxt "full weekday name"
 msgid "Wednesday"
 msgstr "streda"
 
-#: glib/gdatetime.c:365
+#: glib/gdatetime.c:371
 msgctxt "full weekday name"
 msgid "Thursday"
 msgstr "štvrtok"
 
-#: glib/gdatetime.c:367
+#: glib/gdatetime.c:373
 msgctxt "full weekday name"
 msgid "Friday"
 msgstr "piatok"
 
-#: glib/gdatetime.c:369
+#: glib/gdatetime.c:375
 msgctxt "full weekday name"
 msgid "Saturday"
 msgstr "sobota"
 
-#: glib/gdatetime.c:371
+#: glib/gdatetime.c:377
 msgctxt "full weekday name"
 msgid "Sunday"
 msgstr "nedela"
 
-#: glib/gdatetime.c:386
+#: glib/gdatetime.c:392
 msgctxt "abbreviated weekday name"
 msgid "Mon"
 msgstr "po"
 
-#: glib/gdatetime.c:388
+#: glib/gdatetime.c:394
 msgctxt "abbreviated weekday name"
 msgid "Tue"
 msgstr "ut"
 
-#: glib/gdatetime.c:390
+#: glib/gdatetime.c:396
 msgctxt "abbreviated weekday name"
 msgid "Wed"
 msgstr "st"
 
-#: glib/gdatetime.c:392
+#: glib/gdatetime.c:398
 msgctxt "abbreviated weekday name"
 msgid "Thu"
 msgstr "št"
 
-#: glib/gdatetime.c:394
+#: glib/gdatetime.c:400
 msgctxt "abbreviated weekday name"
 msgid "Fri"
 msgstr "pi"
 
-#: glib/gdatetime.c:396
+#: glib/gdatetime.c:402
 msgctxt "abbreviated weekday name"
 msgid "Sat"
 msgstr "so"
 
-#: glib/gdatetime.c:398
+#: glib/gdatetime.c:404
 msgctxt "abbreviated weekday name"
 msgid "Sun"
 msgstr "ne"
@@ -4773,62 +4903,62 @@ msgstr "ne"
 #. * (western European, non-European) there is no difference between the
 #. * standalone and complete date form.
 #.
-#: glib/gdatetime.c:462
+#: glib/gdatetime.c:468
 msgctxt "full month name with day"
 msgid "January"
 msgstr "januára"
 
-#: glib/gdatetime.c:464
+#: glib/gdatetime.c:470
 msgctxt "full month name with day"
 msgid "February"
 msgstr "februára"
 
-#: glib/gdatetime.c:466
+#: glib/gdatetime.c:472
 msgctxt "full month name with day"
 msgid "March"
 msgstr "marca"
 
-#: glib/gdatetime.c:468
+#: glib/gdatetime.c:474
 msgctxt "full month name with day"
 msgid "April"
 msgstr "apríla"
 
-#: glib/gdatetime.c:470
+#: glib/gdatetime.c:476
 msgctxt "full month name with day"
 msgid "May"
 msgstr "mája"
 
-#: glib/gdatetime.c:472
+#: glib/gdatetime.c:478
 msgctxt "full month name with day"
 msgid "June"
 msgstr "júna"
 
-#: glib/gdatetime.c:474
+#: glib/gdatetime.c:480
 msgctxt "full month name with day"
 msgid "July"
 msgstr "júla"
 
-#: glib/gdatetime.c:476
+#: glib/gdatetime.c:482
 msgctxt "full month name with day"
 msgid "August"
 msgstr "augusta"
 
-#: glib/gdatetime.c:478
+#: glib/gdatetime.c:484
 msgctxt "full month name with day"
 msgid "September"
 msgstr "septembra"
 
-#: glib/gdatetime.c:480
+#: glib/gdatetime.c:486
 msgctxt "full month name with day"
 msgid "October"
 msgstr "októbra"
 
-#: glib/gdatetime.c:482
+#: glib/gdatetime.c:488
 msgctxt "full month name with day"
 msgid "November"
 msgstr "novembra"
 
-#: glib/gdatetime.c:484
+#: glib/gdatetime.c:490
 msgctxt "full month name with day"
 msgid "December"
 msgstr "decembra"
@@ -4850,80 +4980,80 @@ msgstr "decembra"
 #. * month names almost ready to copy and paste here.  In other systems
 #. * due to a bug the result is incorrect in some languages.
 #.
-#: glib/gdatetime.c:549
+#: glib/gdatetime.c:555
 msgctxt "abbreviated month name with day"
 msgid "Jan"
 msgstr "jan"
 
-#: glib/gdatetime.c:551
+#: glib/gdatetime.c:557
 msgctxt "abbreviated month name with day"
 msgid "Feb"
 msgstr "feb"
 
-#: glib/gdatetime.c:553
+#: glib/gdatetime.c:559
 msgctxt "abbreviated month name with day"
 msgid "Mar"
 msgstr "mar"
 
-#: glib/gdatetime.c:555
+#: glib/gdatetime.c:561
 msgctxt "abbreviated month name with day"
 msgid "Apr"
 msgstr "apr"
 
-#: glib/gdatetime.c:557
+#: glib/gdatetime.c:563
 msgctxt "abbreviated month name with day"
 msgid "May"
 msgstr "máj"
 
-#: glib/gdatetime.c:559
+#: glib/gdatetime.c:565
 msgctxt "abbreviated month name with day"
 msgid "Jun"
 msgstr "jún"
 
-#: glib/gdatetime.c:561
+#: glib/gdatetime.c:567
 msgctxt "abbreviated month name with day"
 msgid "Jul"
 msgstr "júl"
 
-#: glib/gdatetime.c:563
+#: glib/gdatetime.c:569
 msgctxt "abbreviated month name with day"
 msgid "Aug"
 msgstr "aug"
 
-#: glib/gdatetime.c:565
+#: glib/gdatetime.c:571
 msgctxt "abbreviated month name with day"
 msgid "Sep"
 msgstr "sep"
 
-#: glib/gdatetime.c:567
+#: glib/gdatetime.c:573
 msgctxt "abbreviated month name with day"
 msgid "Oct"
 msgstr "okt"
 
-#: glib/gdatetime.c:569
+#: glib/gdatetime.c:575
 msgctxt "abbreviated month name with day"
 msgid "Nov"
 msgstr "nov"
 
-#: glib/gdatetime.c:571
+#: glib/gdatetime.c:577
 msgctxt "abbreviated month name with day"
 msgid "Dec"
 msgstr "dec"
 
 # PM: ale myslím si ze by to malo byť preložené, lebo ak si niekto v hodinách prepne na 12 hodinový formát tak si potom nebude vedieť nastaviť správny čas
 #. Translators: 'before midday' indicator
-#: glib/gdatetime.c:588
+#: glib/gdatetime.c:594
 msgctxt "GDateTime"
 msgid "AM"
 msgstr "Doobeda"
 
 #. Translators: 'after midday' indicator
-#: glib/gdatetime.c:591
+#: glib/gdatetime.c:597
 msgctxt "GDateTime"
 msgid "PM"
 msgstr "Poobede"
 
-#: glib/gdir.c:154
+#: glib/gdir.c:156
 #, c-format
 msgid "Error opening directory “%s”: %s"
 msgstr "Chyba pri otváraní adresára „%s“: %s"
@@ -4951,91 +5081,91 @@ msgstr "Súbor „%s“ je príliš veľký"
 msgid "Failed to read from file “%s”: %s"
 msgstr "Zlyhalo čítanie zo súboru „%s“: %s"
 
-#: glib/gfileutils.c:902 glib/gfileutils.c:974 glib/gfileutils.c:1466
+#: glib/gfileutils.c:904 glib/gfileutils.c:979 glib/gfileutils.c:1468
 #, c-format
 msgid "Failed to open file “%s”: %s"
 msgstr "Zlyhalo otvorenie súboru „%s“: %s"
 
-#: glib/gfileutils.c:914
+#: glib/gfileutils.c:917
 #, c-format
 msgid "Failed to get attributes of file “%s”: fstat() failed: %s"
 msgstr "Zlyhalo získanie atribútov súboru „%s“: fstat() zlyhalo: %s"
 
-#: glib/gfileutils.c:944
+#: glib/gfileutils.c:948
 #, c-format
 msgid "Failed to open file “%s”: fdopen() failed: %s"
 msgstr "Zlyhalo otvorenie súboru „%s“: fdopen() zlyhalo: %s"
 
-#: glib/gfileutils.c:1044
+#: glib/gfileutils.c:1049
 #, c-format
 msgid "Failed to rename file “%s” to “%s”: g_rename() failed: %s"
 msgstr "Zlyhalo premenovanie súboru „%s“ na „%s“: g_rename() zlyhalo: %s"
 
-#: glib/gfileutils.c:1169
+#: glib/gfileutils.c:1175
 #, c-format
 msgid "Failed to write file “%s”: write() failed: %s"
 msgstr "Zlyhal zápis súboru „%s“: write() zlyhalo: %s"
 
-#: glib/gfileutils.c:1189
+#: glib/gfileutils.c:1196
 #, c-format
 msgid "Failed to write file “%s”: fsync() failed: %s"
 msgstr "Zlyhal zápis súboru „%s“: fsync() zlyhalo: %s"
 
-#: glib/gfileutils.c:1357 glib/gfileutils.c:1769
+#: glib/gfileutils.c:1357 glib/gfileutils.c:1772
 #, c-format
 msgid "Failed to create file “%s”: %s"
 msgstr "Zlyhalo vytvorenie súboru „%s“: %s"
 
-#: glib/gfileutils.c:1401
+#: glib/gfileutils.c:1402
 #, c-format
 msgid "Existing file “%s” could not be removed: g_unlink() failed: %s"
 msgstr "Existujúci súbor „%s“ nemohol byť odstránený: g_unlink() zlyhalo: %s"
 
-#: glib/gfileutils.c:1735
+#: glib/gfileutils.c:1737
 #, c-format
 msgid "Template “%s” invalid, should not contain a “%s”"
 msgstr "Šablóna „%s“ je neplatná, nesmie obsahovať „%s“"
 
-#: glib/gfileutils.c:1748
+#: glib/gfileutils.c:1750
 #, c-format
 msgid "Template “%s” doesn’t contain XXXXXX"
 msgstr "Šablóna „%s“ neobsahuje XXXXXX"
 
-#: glib/gfileutils.c:2306 glib/gfileutils.c:2334
+#: glib/gfileutils.c:2310 glib/gfileutils.c:2339
 #, c-format
 msgid "Failed to read the symbolic link “%s”: %s"
 msgstr "Zlyhalo načítanie symbolického odkazu „%s“: %s"
 
-#: glib/giochannel.c:1396
+#: glib/giochannel.c:1405
 #, c-format
 msgid "Could not open converter from “%s” to “%s”: %s"
 msgstr "Nepodarilo sa otvoriť program na prevod z „%s“ do „%s“: %s"
 
-#: glib/giochannel.c:1749
+#: glib/giochannel.c:1758
 msgid "Can’t do a raw read in g_io_channel_read_line_string"
 msgstr "Nedá sa urobiť priame čítanie v g_io_channel_read_line_string"
 
-#: glib/giochannel.c:1796 glib/giochannel.c:2054 glib/giochannel.c:2141
+#: glib/giochannel.c:1805 glib/giochannel.c:2063 glib/giochannel.c:2150
 msgid "Leftover unconverted data in read buffer"
 msgstr "Zanechané neprevedené údaje v zásobníku na čítanie"
 
-#: glib/giochannel.c:1877 glib/giochannel.c:1954
+#: glib/giochannel.c:1886 glib/giochannel.c:1963
 msgid "Channel terminates in a partial character"
 msgstr "Kanál skončil s neúplným znakom"
 
-#: glib/giochannel.c:1940
+#: glib/giochannel.c:1949
 msgid "Can’t do a raw read in g_io_channel_read_to_end"
 msgstr "Nedá sa urobiť priame čítanie v g_io_channel_read_to_end"
 
-#: glib/gkeyfile.c:789
+#: glib/gkeyfile.c:790
 msgid "Valid key file could not be found in search dirs"
 msgstr "Nepodarilo sa nájsť platný súbor kľúčov vo vyhľadávacích adresároch"
 
-#: glib/gkeyfile.c:826
+#: glib/gkeyfile.c:827
 msgid "Not a regular file"
 msgstr "Nie je bežný súbor"
 
-#: glib/gkeyfile.c:1275
+#: glib/gkeyfile.c:1282
 #, c-format
 msgid ""
 "Key file contains line “%s” which is not a key-value pair, group, or comment"
@@ -5043,49 +5173,49 @@ msgstr ""
 "Súbor kľúčov obsahuje riadok „%s“, ktorý nie je párom kľúč-hodnota, "
 "skupinou, ani komentárom"
 
-#: glib/gkeyfile.c:1332
+#: glib/gkeyfile.c:1339
 #, c-format
 msgid "Invalid group name: %s"
 msgstr "Neplatný názov skupiny: %s"
 
-#: glib/gkeyfile.c:1354
+#: glib/gkeyfile.c:1361
 msgid "Key file does not start with a group"
 msgstr "Súbor kľúčov nezačína skupinou"
 
-#: glib/gkeyfile.c:1380
+#: glib/gkeyfile.c:1387
 #, c-format
 msgid "Invalid key name: %s"
 msgstr "Neplatný názov kľúča: %s"
 
-#: glib/gkeyfile.c:1407
+#: glib/gkeyfile.c:1414
 #, c-format
 msgid "Key file contains unsupported encoding “%s”"
 msgstr "Súbor kľúčov obsahuje nepodporované kódovane „%s“"
 
-#: glib/gkeyfile.c:1650 glib/gkeyfile.c:1823 glib/gkeyfile.c:3276
-#: glib/gkeyfile.c:3340 glib/gkeyfile.c:3470 glib/gkeyfile.c:3602
-#: glib/gkeyfile.c:3748 glib/gkeyfile.c:3977 glib/gkeyfile.c:4044
+#: glib/gkeyfile.c:1663 glib/gkeyfile.c:1836 glib/gkeyfile.c:3289
+#: glib/gkeyfile.c:3353 glib/gkeyfile.c:3483 glib/gkeyfile.c:3615
+#: glib/gkeyfile.c:3761 glib/gkeyfile.c:3996 glib/gkeyfile.c:4063
 #, c-format
 msgid "Key file does not have group “%s”"
 msgstr "Súbor kľúčov nemá skupinu „%s“"
 
-#: glib/gkeyfile.c:1778
+#: glib/gkeyfile.c:1791
 #, c-format
 msgid "Key file does not have key “%s” in group “%s”"
 msgstr "Súbor kľúčov nemá kľúč „%s“ v skupine „%s“"
 
-#: glib/gkeyfile.c:1940 glib/gkeyfile.c:2056
+#: glib/gkeyfile.c:1953 glib/gkeyfile.c:2069
 #, c-format
 msgid "Key file contains key “%s” with value “%s” which is not UTF-8"
 msgstr "Súbor kľúčov obsahuje kľúč „%s“ s hodnotou „%s“, ktorá nie je UTF-8"
 
-#: glib/gkeyfile.c:1960 glib/gkeyfile.c:2076 glib/gkeyfile.c:2518
+#: glib/gkeyfile.c:1973 glib/gkeyfile.c:2089 glib/gkeyfile.c:2531
 #, c-format
 msgid ""
 "Key file contains key “%s” which has a value that cannot be interpreted."
 msgstr "Súbor kľúčov obsahuje kľúč „%s“, ktorý má neinterpretovateľnú hodnotu."
 
-#: glib/gkeyfile.c:2736 glib/gkeyfile.c:3105
+#: glib/gkeyfile.c:2749 glib/gkeyfile.c:3118
 #, c-format
 msgid ""
 "Key file contains key “%s” in group “%s” which has a value that cannot be "
@@ -5094,36 +5224,36 @@ msgstr ""
 "Súbor kľúčov obsahuje kľúč „%s“ v skupine „%s“, ktorý má neinterpretovateľnú "
 "hodnotu."
 
-#: glib/gkeyfile.c:2814 glib/gkeyfile.c:2891
+#: glib/gkeyfile.c:2827 glib/gkeyfile.c:2904
 #, c-format
 msgid "Key “%s” in group “%s” has value “%s” where %s was expected"
 msgstr "Kľúč „%s“ v skupine „%s“ má hodnotu „%s“, pričom bola očakávaná %s"
 
-#: glib/gkeyfile.c:4284
+#: glib/gkeyfile.c:4306
 msgid "Key file contains escape character at end of line"
 msgstr "Súbor kľúčov obsahuje znak escape na konci riadku"
 
-#: glib/gkeyfile.c:4306
+#: glib/gkeyfile.c:4328
 #, c-format
 msgid "Key file contains invalid escape sequence “%s”"
 msgstr "Súbor kľúčov obsahuje neplatnú špeciálnu (escape) sekvenciu „%s“"
 
-#: glib/gkeyfile.c:4450
+#: glib/gkeyfile.c:4472
 #, c-format
 msgid "Value “%s” cannot be interpreted as a number."
 msgstr "Hodnota „%s“ nemôže byť interpretovaná ako číslo."
 
-#: glib/gkeyfile.c:4464
+#: glib/gkeyfile.c:4486
 #, c-format
 msgid "Integer value “%s” out of range"
 msgstr "Celočíselná hodnota „%s“ je mimo rozsah"
 
-#: glib/gkeyfile.c:4497
+#: glib/gkeyfile.c:4519
 #, c-format
 msgid "Value “%s” cannot be interpreted as a float number."
 msgstr "Hodnota „%s“ nemôže byť interpretovaná ako reálne číslo."
 
-#: glib/gkeyfile.c:4536
+#: glib/gkeyfile.c:4558
 #, c-format
 msgid "Value “%s” cannot be interpreted as a boolean."
 msgstr "Hodnota „%s“ nemôže byť interpretovaná ako logická hodnota."
@@ -5444,251 +5574,251 @@ msgstr "Hodnota double „%s“ pre %s je mimo rozsah"
 msgid "Error parsing option %s"
 msgstr "Chyba analyzovania voľby %s"
 
-#: glib/goption.c:1570 glib/goption.c:1683
+#: glib/goption.c:1561 glib/goption.c:1674
 #, c-format
 msgid "Missing argument for %s"
 msgstr "Chýbajúci parameter pre %s"
 
-#: glib/goption.c:2194
+#: glib/goption.c:2185
 #, c-format
 msgid "Unknown option %s"
 msgstr "Neznáma voľba %s"
 
-#: glib/gregex.c:257
+#: glib/gregex.c:255
 msgid "corrupted object"
 msgstr "poškodený objekt"
 
-#: glib/gregex.c:259
+#: glib/gregex.c:257
 msgid "internal error or corrupted object"
 msgstr "vnútorná chyba alebo poškodený objekt"
 
-#: glib/gregex.c:261
+#: glib/gregex.c:259
 msgid "out of memory"
 msgstr "nedostatok pamäte"
 
-#: glib/gregex.c:266
+#: glib/gregex.c:264
 msgid "backtracking limit reached"
 msgstr "dosiahnutý limit spätného hľadania"
 
-#: glib/gregex.c:278 glib/gregex.c:286
+#: glib/gregex.c:276 glib/gregex.c:284
 msgid "the pattern contains items not supported for partial matching"
 msgstr "vzor obsahuje položky nepodporované pri čiastočnom porovnávaní"
 
-#: glib/gregex.c:280
+#: glib/gregex.c:278
 msgid "internal error"
 msgstr "vnútorná chyba"
 
-#: glib/gregex.c:288
+#: glib/gregex.c:286
 msgid "back references as conditions are not supported for partial matching"
 msgstr ""
 "spätné odkazy použité ako podmienky nie sú podporované pri čiastočnom "
 "porovnávaní"
 
-#: glib/gregex.c:297
+#: glib/gregex.c:295
 msgid "recursion limit reached"
 msgstr "dosiahnutý limit rekurzie"
 
-#: glib/gregex.c:299
+#: glib/gregex.c:297
 msgid "invalid combination of newline flags"
 msgstr "neplatná kombinácia príznakov nového riadka"
 
-#: glib/gregex.c:301
+#: glib/gregex.c:299
 msgid "bad offset"
 msgstr "zlý ofset"
 
-#: glib/gregex.c:303
+#: glib/gregex.c:301
 msgid "short utf8"
 msgstr "krátke utf8"
 
 # Ide o omyl programátora: case PCRE_ERROR_RECURSELOOP: return _("recursion loop");
-#: glib/gregex.c:305
+#: glib/gregex.c:303
 msgid "recursion loop"
 msgstr "rekurzívna slučka"
 
-#: glib/gregex.c:309
+#: glib/gregex.c:307
 msgid "unknown error"
 msgstr "neznáma chyba"
 
-#: glib/gregex.c:329
+#: glib/gregex.c:327
 msgid "\\ at end of pattern"
 msgstr "\\ na konci vzoru"
 
-#: glib/gregex.c:332
+#: glib/gregex.c:330
 msgid "\\c at end of pattern"
 msgstr "\\c na konci vzoru"
 
-#: glib/gregex.c:335
+#: glib/gregex.c:333
 msgid "unrecognized character following \\"
 msgstr "nerozpoznaný znak nasledujúci za \\"
 
-#: glib/gregex.c:338
+#: glib/gregex.c:336
 msgid "numbers out of order in {} quantifier"
 msgstr "nesprávne poradie čísel v kvantifikátore {}"
 
-#: glib/gregex.c:341
+#: glib/gregex.c:339
 msgid "number too big in {} quantifier"
 msgstr "príliš veľké číslo v kvantifikátore {}"
 
-#: glib/gregex.c:344
+#: glib/gregex.c:342
 msgid "missing terminating ] for character class"
 msgstr "chýbajúca koncová ] pre triedu znakov"
 
-#: glib/gregex.c:347
+#: glib/gregex.c:345
 msgid "invalid escape sequence in character class"
 msgstr "neplatná špeciálna (escape) sekvencia v triede znakov"
 
-#: glib/gregex.c:350
+#: glib/gregex.c:348
 msgid "range out of order in character class"
 msgstr "nesprávne poradie rozsahu v triede znakov"
 
-#: glib/gregex.c:353
+#: glib/gregex.c:351
 msgid "nothing to repeat"
 msgstr "nie je čo opakovať"
 
-#: glib/gregex.c:357
+#: glib/gregex.c:355
 msgid "unexpected repeat"
 msgstr "neočakávané opakovanie"
 
-#: glib/gregex.c:360
+#: glib/gregex.c:358
 msgid "unrecognized character after (? or (?-"
 msgstr "nerozpoznaný znak za (? alebo (?-"
 
-#: glib/gregex.c:363
+#: glib/gregex.c:361
 msgid "POSIX named classes are supported only within a class"
 msgstr "triedy s názvami POSIX sú podporované iba v triedach"
 
-#: glib/gregex.c:366
+#: glib/gregex.c:364
 msgid "missing terminating )"
 msgstr "chýbajúca koncová )"
 
-#: glib/gregex.c:369
+#: glib/gregex.c:367
 msgid "reference to non-existent subpattern"
 msgstr "odkaz na neexistujúci podvzor"
 
-#: glib/gregex.c:372
+#: glib/gregex.c:370
 msgid "missing ) after comment"
 msgstr "chýbajúca ) po komentári"
 
-#: glib/gregex.c:375
+#: glib/gregex.c:373
 msgid "regular expression is too large"
 msgstr "regulárny výraz je príliš veľký"
 
-#: glib/gregex.c:378
+#: glib/gregex.c:376
 msgid "failed to get memory"
 msgstr "nepodarilo sa získať pamäť"
 
-#: glib/gregex.c:382
+#: glib/gregex.c:380
 msgid ") without opening ("
 msgstr ") bez otváracej ("
 
-#: glib/gregex.c:386
+#: glib/gregex.c:384
 msgid "code overflow"
 msgstr "pretečenie kódu"
 
-#: glib/gregex.c:390
+#: glib/gregex.c:388
 msgid "unrecognized character after (?<"
 msgstr "nerozpoznaný znak za (?<"
 
-#: glib/gregex.c:393
+#: glib/gregex.c:391
 msgid "lookbehind assertion is not fixed length"
 msgstr "spätné tvrdenie nemá pevnú dĺžku"
 
-#: glib/gregex.c:396
+#: glib/gregex.c:394
 msgid "malformed number or name after (?("
 msgstr "zle formátované číslo alebo názov za (?("
 
-#: glib/gregex.c:399
+#: glib/gregex.c:397
 msgid "conditional group contains more than two branches"
 msgstr "podmienková skupina obsahuje viac ako dve zátvorky"
 
-#: glib/gregex.c:402
+#: glib/gregex.c:400
 msgid "assertion expected after (?("
 msgstr "tvrdenie očakávané 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:409
+#: glib/gregex.c:407
 msgid "(?R or (?[+-]digits must be followed by )"
 msgstr "za (?R alebo (?[+-]číslice musí nasledovať )"
 
-#: glib/gregex.c:412
+#: glib/gregex.c:410
 msgid "unknown POSIX class name"
 msgstr "neznámy POSIX názov triedy"
 
-#: glib/gregex.c:415
+#: glib/gregex.c:413
 msgid "POSIX collating elements are not supported"
 msgstr "porovnávacie POSIX prvky nie sú podporované"
 
-#: glib/gregex.c:418
+#: glib/gregex.c:416
 msgid "character value in \\x{...} sequence is too large"
 msgstr "hodnota znaku v postupnosti \\x{...} je príliš veľká"
 
-#: glib/gregex.c:421
+#: glib/gregex.c:419
 msgid "invalid condition (?(0)"
 msgstr "neplatná podmienka (?(0)"
 
-#: glib/gregex.c:424
+#: glib/gregex.c:422
 msgid "\\C not allowed in lookbehind assertion"
 msgstr "\\C nie je povolené v spätnom tvrdení"
 
-#: glib/gregex.c:431
+#: glib/gregex.c:429
 msgid "escapes \\L, \\l, \\N{name}, \\U, and \\u are not supported"
 msgstr "\\L, \\l, \\N{name}, \\U, a \\u nie sú podporované"
 
-#: glib/gregex.c:434
+#: glib/gregex.c:432
 msgid "recursive call could loop indefinitely"
 msgstr "rekurzívne volanie by sa mohlo donekonečna opakovať"
 
-#: glib/gregex.c:438
+#: glib/gregex.c:436
 msgid "unrecognized character after (?P"
 msgstr "nerozpoznaný znak za (?P"
 
-#: glib/gregex.c:441
+#: glib/gregex.c:439
 msgid "missing terminator in subpattern name"
 msgstr "chýba ukončovací člen v názve podvzoru"
 
-#: glib/gregex.c:444
+#: glib/gregex.c:442
 msgid "two named subpatterns have the same name"
 msgstr "dva pomenované podvzory majú rovnaký názov"
 
-#: glib/gregex.c:447
+#: glib/gregex.c:445
 msgid "malformed \\P or \\p sequence"
 msgstr "zle formátovaná postupnosť \\P alebo \\p"
 
-#: glib/gregex.c:450
+#: glib/gregex.c:448
 msgid "unknown property name after \\P or \\p"
 msgstr "neznámy názov vlastnosti za \\P alebo \\p"
 
-#: glib/gregex.c:453
+#: glib/gregex.c:451
 msgid "subpattern name is too long (maximum 32 characters)"
 msgstr "názov podvzoru je príliš dlhý (maximum je 32 znakov)"
 
-#: glib/gregex.c:456
+#: glib/gregex.c:454
 msgid "too many named subpatterns (maximum 10,000)"
 msgstr "príliš mnoho pomenovaných podvzorov (maximum je 10 000)"
 
-#: glib/gregex.c:459
+#: glib/gregex.c:457
 msgid "octal value is greater than \\377"
 msgstr "osmičková hodnota je väčšia ako \\377"
 
-#: glib/gregex.c:463
+#: glib/gregex.c:461
 msgid "overran compiling workspace"
 msgstr "pretečený priestor pre preklad"
 
-#: glib/gregex.c:467
+#: glib/gregex.c:465
 msgid "previously-checked referenced subpattern not found"
 msgstr "predtým kontrolovaný odkazovaný podvzor nenájdený"
 
-#: glib/gregex.c:470
+#: glib/gregex.c:468
 msgid "DEFINE group contains more than one branch"
 msgstr "skupina DEFINE obsahuje viac ako jednu vetvu"
 
-#: glib/gregex.c:473
+#: glib/gregex.c:471
 msgid "inconsistent NEWLINE options"
 msgstr "nekonzistentné voľby NEWLINE"
 
-#: glib/gregex.c:476
+#: glib/gregex.c:474
 msgid ""
 "\\g is not followed by a braced, angle-bracketed, or quoted name or number, "
 "or by a plain number"
@@ -5696,134 +5826,134 @@ msgstr ""
 "za \\g nenasleduje názov v guľatých ani lomených zátvorkách, názov alebo "
 "číslo v úvodzovkách ani nekódované číslo"
 
-#: glib/gregex.c:480
+#: glib/gregex.c:478
 msgid "a numbered reference must not be zero"
 msgstr "očíslovaný odkaz nesmie byť nula"
 
-#: glib/gregex.c:483
+#: glib/gregex.c:481
 msgid "an argument is not allowed for (*ACCEPT), (*FAIL), or (*COMMIT)"
 msgstr "parameter nie je pre (*ACCEPT), (*FAIL) a (*COMMIT) dovolený"
 
-#: glib/gregex.c:486
+#: glib/gregex.c:484
 msgid "(*VERB) not recognized"
 msgstr "(*VERB) nebolo rozpoznané"
 
-#: glib/gregex.c:489
+#: glib/gregex.c:487
 msgid "number is too big"
 msgstr "číslo je príliš veľké"
 
-#: glib/gregex.c:492
+#: glib/gregex.c:490
 msgid "missing subpattern name after (?&"
 msgstr "za (?& chýba názov podvzoru"
 
-#: glib/gregex.c:495
+#: glib/gregex.c:493
 msgid "digit expected after (?+"
 msgstr "za (?+ sa očakáva číslica"
 
-#: glib/gregex.c:498
+#: glib/gregex.c:496
 msgid "] is an invalid data character in JavaScript compatibility mode"
 msgstr ""
 "] nie je platný dátový znak v režime kompatibility s jazykom JavaScript"
 
-#: glib/gregex.c:501
+#: glib/gregex.c:499
 msgid "different names for subpatterns of the same number are not allowed"
 msgstr "rôzne názvy pre podvzory s rovnakým číslom nie sú povolené"
 
-#: glib/gregex.c:504
+#: glib/gregex.c:502
 msgid "(*MARK) must have an argument"
 msgstr "(*MARK) musí mať parameter"
 
-#: glib/gregex.c:507
+#: glib/gregex.c:505
 msgid "\\c must be followed by an ASCII character"
 msgstr "za \\c musí nasledovať znak ASCII"
 
-#: glib/gregex.c:510
+#: glib/gregex.c:508
 msgid "\\k is not followed by a braced, angle-bracketed, or quoted name"
 msgstr ""
 "za \\k nenasleduje názov v zátvorkách, lomených zátvorkách alebo úvodzovkách"
 
-#: glib/gregex.c:513
+#: glib/gregex.c:511
 msgid "\\N is not supported in a class"
 msgstr "\\N nie je v triede podporované"
 
 # PM:nie som si istý
 # MČ: Hmm. Musel som pozrieť zdrojáky pcre, aby som sa trošku ztoho vymotal. Pri doprednom vyhľadávaní (lookahead) si stroj regulárneho výrazu odkladá odkazy na už asociované (zjednodušene nájdené) časti textu k regulárnemu výrazu. Ak je ich priveľa, nezmestia sa do pamäte, malloc zlyhá, vráti túto chybovú hlášku. Myslím, že preklad aj originál mi povedali rovnako veľa informácií.
-#: glib/gregex.c:516
+#: glib/gregex.c:514
 msgid "too many forward references"
 msgstr "príliš mnoho dopredných odkazov"
 
-#: glib/gregex.c:519
+#: glib/gregex.c:517
 msgid "name is too long in (*MARK), (*PRUNE), (*SKIP), or (*THEN)"
 msgstr "názov v (*MARK), (*PRUNE), (*SKIP) alebo (*THEN) je príliš dlhý"
 
-#: glib/gregex.c:522
+#: glib/gregex.c:520
 msgid "character value in \\u.... sequence is too large"
 msgstr "hodnota znaku v postupnosti \\u.... je príliš veľká"
 
-#: glib/gregex.c:745 glib/gregex.c:1983
+#: glib/gregex.c:743 glib/gregex.c:1988
 #, c-format
 msgid "Error while matching regular expression %s: %s"
 msgstr "Chyba počas porovnávania regulárneho výrazu %s: %s"
 
-#: glib/gregex.c:1316
+#: glib/gregex.c:1321
 msgid "PCRE library is compiled without UTF8 support"
 msgstr "Knižnica PCRE je preložená bez podpory UTF8"
 
-#: glib/gregex.c:1320
+#: glib/gregex.c:1325
 msgid "PCRE library is compiled without UTF8 properties support"
 msgstr "Knižnica PCRE je preložená bez podpory vlastností UTF8"
 
-#: glib/gregex.c:1328
+#: glib/gregex.c:1333
 msgid "PCRE library is compiled with incompatible options"
 msgstr "Knižnica PCRE je preložená s nekompatibilnými voľbami"
 
-#: glib/gregex.c:1357
+#: glib/gregex.c:1362
 #, c-format
 msgid "Error while optimizing regular expression %s: %s"
 msgstr "Chyba počas optimalizovania regulárneho výrazu %s: %s"
 
-#: glib/gregex.c:1437
+#: glib/gregex.c:1442
 #, c-format
 msgid "Error while compiling regular expression %s at char %d: %s"
 msgstr "Chyba počas prekladu regulárneho výrazu %s pri znaku %d: %s"
 
-#: glib/gregex.c:2419
+#: glib/gregex.c:2427
 msgid "hexadecimal digit or “}” expected"
 msgstr "očakávaná šestnástková číslica alebo „}“"
 
-#: glib/gregex.c:2435
+#: glib/gregex.c:2443
 msgid "hexadecimal digit expected"
 msgstr "očakávaná šestnástková číslica"
 
-#: glib/gregex.c:2475
+#: glib/gregex.c:2483
 msgid "missing “<” in symbolic reference"
 msgstr "chýba „<“ v symbolickom odkaze"
 
-#: glib/gregex.c:2484
+#: glib/gregex.c:2492
 msgid "unfinished symbolic reference"
 msgstr "neukončený symbolický odkaz"
 
-#: glib/gregex.c:2491
+#: glib/gregex.c:2499
 msgid "zero-length symbolic reference"
 msgstr "symbolický odkaz s nulovou dĺžkou"
 
-#: glib/gregex.c:2502
+#: glib/gregex.c:2510
 msgid "digit expected"
 msgstr "očakávaná číslica"
 
-#: glib/gregex.c:2520
+#: glib/gregex.c:2528
 msgid "illegal symbolic reference"
 msgstr "neplatný symbolický odkaz"
 
-#: glib/gregex.c:2583
+#: glib/gregex.c:2591
 msgid "stray final “\\”"
 msgstr "zabudnuté koncové „\\“"
 
-#: glib/gregex.c:2587
+#: glib/gregex.c:2595
 msgid "unknown escape sequence"
 msgstr "neznáma špeciálna (escape) sekvencia"
 
-#: glib/gregex.c:2597
+#: glib/gregex.c:2605
 #, c-format
 msgid "Error while parsing replacement text “%s” at char %lu: %s"
 msgstr "Chyba počas analyzovania nahrádzajúceho textu „%s“ pri znaku %lu: %s"
@@ -5854,82 +5984,82 @@ msgstr ""
 msgid "Text was empty (or contained only whitespace)"
 msgstr "Text bol prázdny (alebo obsahoval iba medzery)"
 
-#: glib/gspawn.c:323
+#: glib/gspawn.c:308
 #, c-format
 msgid "Failed to read data from child process (%s)"
 msgstr "Zlyhalo čítanie údajov z dcérskeho procesu (%s)"
 
-#: glib/gspawn.c:468
+#: glib/gspawn.c:458
 #, c-format
 msgid "Unexpected error in reading data from a child process (%s)"
 msgstr "Neočakávaná chyba pri čítaní údajov z dcérskeho procesu (%s)"
 
-#: glib/gspawn.c:553
+#: glib/gspawn.c:543
 #, c-format
 msgid "Unexpected error in waitpid() (%s)"
 msgstr "Neočakávaná chyba vo waitpid() (%s)"
 
-#: glib/gspawn.c:1061 glib/gspawn-win32.c:1329
+#: glib/gspawn.c:1152 glib/gspawn-win32.c:1407
 #, c-format
 msgid "Child process exited with code %ld"
 msgstr "Dcérsky proces skončil s kódom %ld"
 
-#: glib/gspawn.c:1069
+#: glib/gspawn.c:1160
 #, c-format
 msgid "Child process killed by signal %ld"
 msgstr "Dcérsky proces bol zabitý signálom %ld"
 
-#: glib/gspawn.c:1076
+#: glib/gspawn.c:1167
 #, c-format
 msgid "Child process stopped by signal %ld"
 msgstr "Dcérsky proces bol zastavený signálom %ld"
 
-#: glib/gspawn.c:1083
+#: glib/gspawn.c:1174
 #, c-format
 msgid "Child process exited abnormally"
 msgstr "Dcérsky proces skončil neobvykle"
 
-#: glib/gspawn.c:1532 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
+#: glib/gspawn.c:1793 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
 #, c-format
 msgid "Failed to read from child pipe (%s)"
 msgstr "Zlyhalo čítanie zo zreťazenia s potomkom (%s)"
 
-#: glib/gspawn.c:1788
+#: glib/gspawn.c:2095
 #, c-format
 msgid "Failed to spawn child process “%s” (%s)"
 msgstr "Zlyhalo vytvorenie dcérskeho procesu „%s“ (%s)"
 
-#: glib/gspawn.c:1871
+#: glib/gspawn.c:2212
 #, c-format
 msgid "Failed to fork (%s)"
 msgstr "Zlyhalo vytvorenie vetvy (%s)"
 
-#: glib/gspawn.c:2026 glib/gspawn-win32.c:381
+#: glib/gspawn.c:2372 glib/gspawn-win32.c:381
 #, c-format
 msgid "Failed to change to directory “%s” (%s)"
 msgstr "Zlyhala zmena adresára na „%s“ (%s)"
 
-#: glib/gspawn.c:2036
+#: glib/gspawn.c:2382
 #, c-format
 msgid "Failed to execute child process “%s” (%s)"
 msgstr "Zlyhalo spustenie dcérskeho procesu „%s“ (%s)"
 
-#: glib/gspawn.c:2046
+#: glib/gspawn.c:2392
 #, c-format
 msgid "Failed to redirect output or input of child process (%s)"
 msgstr "Zlyhalo presmerovanie vstupu alebo výstupu dcérskeho procesu (%s)"
 
-#: glib/gspawn.c:2055
+#: glib/gspawn.c:2401
 #, c-format
 msgid "Failed to fork child process (%s)"
 msgstr "Zlyhalo vytvorenie vetvy dcérskeho procesu (%s)"
 
-#: glib/gspawn.c:2063
+#: glib/gspawn.c:2409
 #, c-format
 msgid "Unknown error executing child process “%s”"
 msgstr "Neznáma chyba pri spúšťaní dcérskeho procesu „%s“"
 
-#: glib/gspawn.c:2087
+#: glib/gspawn.c:2433
 #, c-format
 msgid "Failed to read enough data from child pid pipe (%s)"
 msgstr ""
@@ -5954,27 +6084,27 @@ msgstr "Zlyhalo spustenie dcérskeho procesu (%s)"
 msgid "Invalid program name: %s"
 msgstr "Neplatný názov programu: %s"
 
-#: glib/gspawn-win32.c:471 glib/gspawn-win32.c:725
+#: glib/gspawn-win32.c:471 glib/gspawn-win32.c:779
 #, c-format
 msgid "Invalid string in argument vector at %d: %s"
 msgstr "Neplatný reťazec vo vektore parametra na %d: %s"
 
-#: glib/gspawn-win32.c:482 glib/gspawn-win32.c:740
+#: glib/gspawn-win32.c:482 glib/gspawn-win32.c:794
 #, c-format
 msgid "Invalid string in environment: %s"
 msgstr "Neplatný reťazec v prostredí: %s"
 
-#: glib/gspawn-win32.c:721
+#: glib/gspawn-win32.c:775
 #, c-format
 msgid "Invalid working directory: %s"
 msgstr "Neplatný pracovný adresár: %s"
 
-#: glib/gspawn-win32.c:783
+#: glib/gspawn-win32.c:837
 #, c-format
 msgid "Failed to execute helper program (%s)"
 msgstr "Zlyhalo spustenie pomocného programu (%s)"
 
-#: glib/gspawn-win32.c:1056
+#: glib/gspawn-win32.c:1064
 msgid ""
 "Unexpected error in g_io_channel_win32_poll() reading data from a child "
 "process"
@@ -5982,73 +6112,79 @@ msgstr ""
 "Neočakávaná chyba v g_io_channel_win32_poll() pri čítaní údajov z dcérskeho "
 "procesu"
 
-#: glib/gstrfuncs.c:3303 glib/gstrfuncs.c:3405
+#: glib/gstrfuncs.c:3338 glib/gstrfuncs.c:3440
 msgid "Empty string is not a number"
 msgstr "Prázdny reťazec nie je číslo"
 
-#: glib/gstrfuncs.c:3327
+#: glib/gstrfuncs.c:3362
 #, c-format
 msgid "“%s” is not a signed number"
 msgstr "„%s“ nie je číslo so znamienkom"
 
-#: glib/gstrfuncs.c:3337 glib/gstrfuncs.c:3441
+#: glib/gstrfuncs.c:3372 glib/gstrfuncs.c:3476
 #, c-format
 msgid "Number “%s” is out of bounds [%s, %s]"
 msgstr "Číslo „%s“  je mimo rozsah [%s, %s]"
 
-#: glib/gstrfuncs.c:3431
+#: glib/gstrfuncs.c:3466
 #, c-format
 msgid "“%s” is not an unsigned number"
 msgstr "„%s“ nie je číslo bez znamienka"
 
-#: glib/guri.c:313
+#: glib/guri.c:315
 #, no-c-format
 msgid "Invalid %-encoding in URI"
 msgstr "Neplatné kódovanie použitím znaku % v URI"
 
-#: glib/guri.c:330
+#: glib/guri.c:332
 msgid "Illegal character in URI"
 msgstr "Neplatný znak v URI"
 
-#: glib/guri.c:359
+#: glib/guri.c:366
 msgid "Non-UTF-8 characters in URI"
 msgstr ""
 
-#: glib/guri.c:533
+#: glib/guri.c:546
 #, c-format
 msgid "Invalid IPv6 address ‘%.*s’ in URI"
 msgstr ""
 
-#: glib/guri.c:588
+#: glib/guri.c:601
 #, c-format
 msgid "Illegal encoded IP address ‘%.*s’ in URI"
 msgstr ""
 
-#: glib/guri.c:620 glib/guri.c:632
+#: glib/guri.c:613
+#, fuzzy, c-format
+#| msgid "Could not parse port ‘%.*s’ in URI"
+msgid "Illegal internationalized hostname ‘%.*s’ in URI"
+msgstr "Nepodarilo sa analyzovať port „%.*s“ v URI"
+
+#: glib/guri.c:645 glib/guri.c:657
 #, c-format
 msgid "Could not parse port ‘%.*s’ in URI"
 msgstr "Nepodarilo sa analyzovať port „%.*s“ v URI"
 
-#: glib/guri.c:639
+#: glib/guri.c:664
 #, c-format
 msgid "Port ‘%.*s’ in URI is out of range"
 msgstr "Port „%.*s“ v URI je mimo rozsah"
 
-#: glib/guri.c:1119 glib/guri.c:1183
+#: glib/guri.c:1224 glib/guri.c:1288
 #, c-format
 msgid "URI ‘%s’ is not an absolute URI"
 msgstr "URI „%s“ nie je absolútnym URI"
 
-#: glib/guri.c:1125
+#: glib/guri.c:1230
 #, c-format
 msgid "URI ‘%s’ has no host component"
 msgstr ""
 
-#: glib/guri.c:1330
+#: glib/guri.c:1435
 msgid "URI is not absolute, and no base URI was provided"
 msgstr ""
 
-#: glib/guri.c:2082
+#: glib/guri.c:2213
 msgid "Missing ‘=’ and parameter value"
 msgstr "Chýba znak „=“ a hodnota parametra"
 
@@ -6070,150 +6206,150 @@ msgid "Character out of range for UTF-16"
 msgstr "Znak mimo rozsah UTF-16"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2759
+#: glib/gutils.c:2727
 #, c-format
 msgid "%.1f kB"
 msgstr "%.1f kB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2761
+#: glib/gutils.c:2729
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2763
+#: glib/gutils.c:2731
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2765
+#: glib/gutils.c:2733
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2767
+#: glib/gutils.c:2735
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2769
+#: glib/gutils.c:2737
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2773
+#: glib/gutils.c:2741
 #, c-format
 msgid "%.1f KiB"
 msgstr "%.1f KiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2775
+#: glib/gutils.c:2743
 #, c-format
 msgid "%.1f MiB"
 msgstr "%.1f MiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2777
+#: glib/gutils.c:2745
 #, c-format
 msgid "%.1f GiB"
 msgstr "%.1f GiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2779
+#: glib/gutils.c:2747
 #, c-format
 msgid "%.1f TiB"
 msgstr "%.1f TiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2781
+#: glib/gutils.c:2749
 #, c-format
 msgid "%.1f PiB"
 msgstr "%.1f PiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2783
+#: glib/gutils.c:2751
 #, c-format
 msgid "%.1f EiB"
 msgstr "%.1f EiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2787
+#: glib/gutils.c:2755
 #, c-format
 msgid "%.1f kb"
 msgstr "%.1f kb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2789
+#: glib/gutils.c:2757
 #, c-format
 msgid "%.1f Mb"
 msgstr "%.1f Mb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2791
+#: glib/gutils.c:2759
 #, c-format
 msgid "%.1f Gb"
 msgstr "%.1f Gb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2793
+#: glib/gutils.c:2761
 #, c-format
 msgid "%.1f Tb"
 msgstr "%.1f Tb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2795
+#: glib/gutils.c:2763
 #, c-format
 msgid "%.1f Pb"
 msgstr "%.1f Pb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2797
+#: glib/gutils.c:2765
 #, c-format
 msgid "%.1f Eb"
 msgstr "%.1f Eb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2801
+#: glib/gutils.c:2769
 #, c-format
 msgid "%.1f Kib"
 msgstr "%.1f Kib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2803
+#: glib/gutils.c:2771
 #, c-format
 msgid "%.1f Mib"
 msgstr "%.1f Mib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2805
+#: glib/gutils.c:2773
 #, c-format
 msgid "%.1f Gib"
 msgstr "%.1f Gib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2807
+#: glib/gutils.c:2775
 #, c-format
 msgid "%.1f Tib"
 msgstr "%.1f Tib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2809
+#: glib/gutils.c:2777
 #, c-format
 msgid "%.1f Pib"
 msgstr "%.1f Pib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2811
+#: glib/gutils.c:2779
 #, c-format
 msgid "%.1f Eib"
 msgstr "%.1f Eib"
 
-#: glib/gutils.c:2845 glib/gutils.c:2962
+#: glib/gutils.c:2813 glib/gutils.c:2930
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
@@ -6221,7 +6357,7 @@ msgstr[0] "%u bajtov"
 msgstr[1] "%u bajt"
 msgstr[2] "%u bajty"
 
-#: glib/gutils.c:2849
+#: glib/gutils.c:2817
 #, c-format
 msgid "%u bit"
 msgid_plural "%u bits"
@@ -6230,7 +6366,7 @@ msgstr[1] "%u bit"
 msgstr[2] "%u bity"
 
 #. Translators: the %s in "%s bytes" will always be replaced by a number.
-#: glib/gutils.c:2916
+#: glib/gutils.c:2884
 #, c-format
 msgid "%s byte"
 msgid_plural "%s bytes"
@@ -6239,7 +6375,7 @@ msgstr[1] "%s bajt"
 msgstr[2] "%s bajty"
 
 #. Translators: the %s in "%s bits" will always be replaced by a number.
-#: glib/gutils.c:2921
+#: glib/gutils.c:2889
 #, c-format
 msgid "%s bit"
 msgid_plural "%s bits"
@@ -6252,36 +6388,43 @@ msgstr[2] "%s bity"
 #. * compatibility.  Users will not see this string unless a program is using this deprecated function.
 #. * Please translate as literally as possible.
 #.
-#: glib/gutils.c:2975
+#: glib/gutils.c:2943
 #, c-format
 msgid "%.1f KB"
 msgstr "%.1f kB"
 
-#: glib/gutils.c:2980
+#: glib/gutils.c:2948
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
-#: glib/gutils.c:2985
+#: glib/gutils.c:2953
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
-#: glib/gutils.c:2990
+#: glib/gutils.c:2958
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
-#: glib/gutils.c:2995
+#: glib/gutils.c:2963
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
-#: glib/gutils.c:3000
+#: glib/gutils.c:2968
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
+#~ msgid "Unable to load /var/lib/dbus/machine-id or /etc/machine-id: "
+#~ msgstr ""
+#~ "Nepodarilo sa načítať /var/lib/dbus/machine-id ani /etc/machine-id: "
+
+#~ msgid "Unknown error on connect"
+#~ msgstr "Neznáma chyba pripájania"
+
 #~ msgid "Error in address “%s” — the family attribute is malformed"
 #~ msgstr "Chyba v adrese „%s“ — atribút rodiny má zlý formát"
 
@@ -6339,9 +6482,6 @@ msgstr "%.1f EB"
 #~ msgid "No such interface"
 #~ msgstr "Také rozhranie neexistuje"
 
-#~ msgid "No files given"
-#~ msgstr "Neposkytnuté žiadne súbory"
-
 #~ msgid "Error getting writable attributes: %s\n"
 #~ msgstr "Chyba pri získavaní zapisovateľných atribútov: %s\n"
 
index fe45ab1..5ea1af7 100644 (file)
--- a/po/sl.po
+++ b/po/sl.po
@@ -3,14 +3,14 @@
 # This file is distributed under the same license as the glib package.
 #
 # Andraž Tori <andraz.tori1@guest.arnes.si> 2000.
-# Matej Urbančič <mateju@src.gnome.org>, 2007–2022.
+# Matej Urbančič <mateju@src.gnome.org>, 2007–2022 .
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: glib master\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/glib/issues\n"
-"POT-Creation-Date: 2022-01-30 15:25+0000\n"
-"PO-Revision-Date: 2022-01-30 21:50+0100\n"
+"POT-Creation-Date: 2022-03-22 16:26+0000\n"
+"PO-Revision-Date: 2022-03-22 19:31+0100\n"
 "Last-Translator: Matej Urbančič <mateju@src.gnome.org>\n"
 "Language-Team: Slovenian GNOME Translation Team <gnome-si@googlegroups.com>\n"
 "Language: sl_SI\n"
@@ -22,6 +22,15 @@ msgstr ""
 "X-Poedit-SourceCharset: utf-8\n"
 "X-Generator: Poedit 3.0\n"
 
+#: gio/gappinfo.c:333
+msgid "Setting default applications not supported yet"
+msgstr "Nastavljanje privzetih programov ni podprto"
+
+#: gio/gappinfo.c:366
+msgid "Setting application as last used for type not supported yet"
+msgstr ""
+"Nastavljanje programa kot nazadnje uporabljenega za vrsto datotek ni podprto"
+
 #: gio/gapplication.c:500
 msgid "GApplication options"
 msgstr "Možnosti programa GApplication"
@@ -43,7 +52,7 @@ msgid "Replace the running instance"
 msgstr "Zamenjaj trenutno zagnan primerek"
 
 #: gio/gapplication-tool.c:45 gio/gapplication-tool.c:46 gio/gio-tool.c:227
-#: gio/gresource-tool.c:494 gio/gsettings-tool.c:572
+#: gio/gresource-tool.c:494 gio/gsettings-tool.c:584
 msgid "Print help"
 msgstr "Izpiši pomoč"
 
@@ -55,7 +64,7 @@ msgstr "[UKAZ]"
 msgid "Print version"
 msgstr "Izpiši različico"
 
-#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:578
+#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:590
 msgid "Print version information and exit"
 msgstr "Izpiši podatke o različici in končaj"
 
@@ -119,8 +128,8 @@ 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:74 gio/glib-compile-resources.c:738
-#: gio/glib-compile-resources.c:744 gio/glib-compile-resources.c:772
+#: gio/gapplication-tool.c:74 gio/glib-compile-resources.c:820
+#: gio/glib-compile-resources.c:826 gio/glib-compile-resources.c:855
 #: gio/gresource-tool.c:501 gio/gresource-tool.c:567
 msgid "FILE"
 msgstr "DATOTEKA"
@@ -146,7 +155,7 @@ msgstr "PARAMETER"
 msgid "Optional parameter to the action invocation, in GVariant format"
 msgstr "Neobvezen parameter za priklic dejanja, v zapisu GVariant"
 
-#: gio/gapplication-tool.c:98 gio/gresource-tool.c:532 gio/gsettings-tool.c:664
+#: gio/gapplication-tool.c:98 gio/gresource-tool.c:532 gio/gsettings-tool.c:676
 #, c-format
 msgid ""
 "Unknown command %s\n"
@@ -160,7 +169,7 @@ msgid "Usage:\n"
 msgstr "Uporaba:\n"
 
 #: gio/gapplication-tool.c:116 gio/gresource-tool.c:557
-#: gio/gsettings-tool.c:699
+#: gio/gsettings-tool.c:711
 msgid "Arguments:\n"
 msgstr "Argumenti:\n"
 
@@ -283,7 +292,7 @@ msgstr "Pretok je že zaprt"
 msgid "Truncate not supported on base stream"
 msgstr "Razčlenitev na osnovnem pretoku ni dovoljena"
 
-#: gio/gcancellable.c:319 gio/gdbusconnection.c:1873 gio/gdbusprivate.c:1416
+#: gio/gcancellable.c:319 gio/gdbusconnection.c:1857 gio/gdbusprivate.c:1418
 #: gio/gsimpleasyncresult.c:871 gio/gsimpleasyncresult.c:897
 #, c-format
 msgid "Operation was cancelled"
@@ -304,7 +313,7 @@ msgstr "Ni dovolj prostora za cilju"
 #: gio/gcharsetconverter.c:342 gio/gdatainputstream.c:848
 #: gio/gdatainputstream.c:1266 glib/gconvert.c:449 glib/gconvert.c:879
 #: glib/giochannel.c:1573 glib/giochannel.c:1615 glib/giochannel.c:2470
-#: glib/gutf8.c:875 glib/gutf8.c:1328
+#: glib/gutf8.c:890 glib/gutf8.c:1344
 msgid "Invalid byte sequence in conversion input"
 msgstr "Neveljavno zaporedje bajtov na vhodu pretvorbe"
 
@@ -314,7 +323,7 @@ msgstr "Neveljavno zaporedje bajtov na vhodu pretvorbe"
 msgid "Error during conversion: %s"
 msgstr "Napaka med pretvorbo: %s"
 
-#: gio/gcharsetconverter.c:445 gio/gsocket.c:1143
+#: gio/gcharsetconverter.c:445 gio/gsocket.c:1147
 msgid "Cancellable initialization not supported"
 msgstr "Dejanje prekinitve zagona ni podprto"
 
@@ -328,37 +337,37 @@ msgstr "Pretvorba iz nabora znakov »%s« v »%s« ni podprta"
 msgid "Could not open converter from “%s” to “%s”"
 msgstr "Ni mogoče odpreti pretvornika iz »%s« v »%s«"
 
-#: gio/gcontenttype.c:454
+#: gio/gcontenttype.c:470
 #, c-format
 msgid "%s type"
 msgstr "%s vrsta"
 
-#: gio/gcontenttype-win32.c:192
+#: gio/gcontenttype-win32.c:196
 msgid "Unknown type"
 msgstr "Neznana vrsta"
 
-#: gio/gcontenttype-win32.c:194
+#: gio/gcontenttype-win32.c:198
 #, c-format
 msgid "%s filetype"
 msgstr "%s vrsta datoteke"
 
-#: gio/gcredentials.c:323
+#: gio/gcredentials.c:335
 msgid "GCredentials contains invalid data"
 msgstr "GCredentials vsebuje neveljavne podatke"
 
-#: gio/gcredentials.c:383 gio/gcredentials.c:667
+#: gio/gcredentials.c:395 gio/gcredentials.c:686
 msgid "GCredentials is not implemented on this OS"
 msgstr "Na tem OS predmet GCredentials ni podprt"
 
-#: gio/gcredentials.c:538 gio/gcredentials.c:556
+#: gio/gcredentials.c:550 gio/gcredentials.c:568
 msgid "There is no GCredentials support for your platform"
 msgstr "Okolje ne podpira možnosti GCredentials"
 
-#: gio/gcredentials.c:607
+#: gio/gcredentials.c:626
 msgid "GCredentials does not contain a process ID on this OS"
 msgstr "Predmet GCredentials na tem sistemu ne vsebuje ustreznega ID opravila"
 
-#: gio/gcredentials.c:661
+#: gio/gcredentials.c:680
 msgid "Credentials spoofing is not possible on this OS"
 msgstr "Na tem OS vohljanje po poverilih ni podprto"
 
@@ -366,17 +375,17 @@ msgstr "Na tem OS vohljanje po poverilih ni podprto"
 msgid "Unexpected early end-of-stream"
 msgstr "Nepričakovan prezgodnji konec pretoka"
 
-#: gio/gdbusaddress.c:159 gio/gdbusaddress.c:233 gio/gdbusaddress.c:322
+#: gio/gdbusaddress.c:162 gio/gdbusaddress.c:236 gio/gdbusaddress.c:325
 #, c-format
 msgid "Unsupported key “%s” in address entry “%s”"
 msgstr "Nepodprt ključ  »%s« v vnosu naslova  »%s«"
 
-#: gio/gdbusaddress.c:172
+#: gio/gdbusaddress.c:175
 #, c-format
 msgid "Meaningless key/value pair combination in address entry “%s”"
 msgstr "Nesmiselna kombinacija za par ključ/vrednost v vnosu naslova »%s«"
 
-#: gio/gdbusaddress.c:181
+#: gio/gdbusaddress.c:184
 #, c-format
 msgid ""
 "Address “%s” is invalid (need exactly one of path, dir, tmpdir, or abstract "
@@ -384,35 +393,35 @@ msgid ""
 msgstr ""
 "Naslov »%s« ni večkavem (zahtevana je pot, začasna mapa ali abstraktni ključ)"
 
-#: gio/gdbusaddress.c:248 gio/gdbusaddress.c:259 gio/gdbusaddress.c:274
-#: gio/gdbusaddress.c:337 gio/gdbusaddress.c:348
+#: gio/gdbusaddress.c:251 gio/gdbusaddress.c:262 gio/gdbusaddress.c:277
+#: gio/gdbusaddress.c:340 gio/gdbusaddress.c:351
 #, c-format
 msgid "Error in address “%s” — the “%s” attribute is malformed"
 msgstr "Napaka v naslovu »%s« – atribut »%s« je nepravilno oblikovan"
 
-#: gio/gdbusaddress.c:418 gio/gdbusaddress.c:682
+#: gio/gdbusaddress.c:421 gio/gdbusaddress.c:680
 #, c-format
 msgid "Unknown or unsupported transport “%s” for address “%s”"
 msgstr "Neznan ali nepodprt prenos »%s« za naslov »%s«"
 
-#: gio/gdbusaddress.c:462
+#: gio/gdbusaddress.c:465
 #, c-format
 msgid "Address element “%s” does not contain a colon (:)"
 msgstr "Predmet naslova »%s« ne vsebuje dvopičja ( : )"
 
-#: gio/gdbusaddress.c:471
+#: gio/gdbusaddress.c:474
 #, c-format
 msgid "Transport name in address element “%s” must not be empty"
 msgstr "Transportno ime v naslovu predmeta »%s« ne sme biti prazno polje"
 
-#: gio/gdbusaddress.c:492
+#: gio/gdbusaddress.c:495
 #, c-format
 msgid ""
 "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:503
+#: gio/gdbusaddress.c:506
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” must not have an empty key"
@@ -420,7 +429,7 @@ msgstr ""
 "Par ključ/vrednost %d, »%s« v predmetu naslova »%s« ne sme vsebovati "
 "praznega ključa"
 
-#: gio/gdbusaddress.c:517
+#: gio/gdbusaddress.c:520
 #, c-format
 msgid ""
 "Error unescaping key or value in Key/Value pair %d, “%s”, in address element "
@@ -429,7 +438,7 @@ msgstr ""
 "Napaka neubežnega ključa ali vrednosti v paru ključ/vrednost %d, »%s«, v "
 "predmetu naslova »%s«"
 
-#: gio/gdbusaddress.c:589
+#: gio/gdbusaddress.c:588
 #, c-format
 msgid ""
 "Error in address “%s” — the unix transport requires exactly one of the keys "
@@ -438,82 +447,83 @@ msgstr ""
 "Napaka v naslovu »%s« – prenos unix zahteva enega izmed ključev »path« ali "
 "»abstract«"
 
-#: gio/gdbusaddress.c:625
+#: gio/gdbusaddress.c:623
 #, c-format
 msgid "Error in address “%s” — the host attribute is missing or malformed"
 msgstr ""
 "Napaka v naslovu »%s« – atribut gostitelja manjka ali pa je nepravilno "
 "oblikovan"
 
-#: gio/gdbusaddress.c:639
+#: gio/gdbusaddress.c:637
 #, c-format
 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:653
+#: gio/gdbusaddress.c:651
 #, c-format
 msgid "Error in address “%s” — the noncefile attribute is missing or malformed"
 msgstr ""
 "Napaka v naslovu »%s« – atribut enkratne datoteke manjka ali pa je "
 "nepravilno oblikovan"
 
-#: gio/gdbusaddress.c:674
+#: gio/gdbusaddress.c:672
 msgid "Error auto-launching: "
-msgstr "Napaka samodejnega zaganjanja:"
+msgstr "Napaka samodejnega zaganjanja: "
 
-#: gio/gdbusaddress.c:727
+#: gio/gdbusaddress.c:725
 #, c-format
 msgid "Error opening nonce file “%s”: %s"
 msgstr "Napaka med odpiranjem enkratne datoteke »%s«: %s"
 
-#: gio/gdbusaddress.c:746
+#: gio/gdbusaddress.c:744
 #, c-format
 msgid "Error reading from nonce file “%s”: %s"
 msgstr "Napaka med branjem iz enkratne datoteke »%s«: %s"
 
-#: gio/gdbusaddress.c:755
+#: gio/gdbusaddress.c:753
 #, c-format
 msgid "Error reading from nonce file “%s”, expected 16 bytes, got %d"
 msgstr ""
 "Napaka med branjem iz enkratne datoteke »%s«; pričakovanih 16 bajtov, "
 "pridobljenih pa %d"
 
-#: gio/gdbusaddress.c:773
+#: gio/gdbusaddress.c:771
 #, c-format
 msgid "Error writing contents of nonce file “%s” to stream:"
 msgstr "Napaka med pisanjem vsebine enkratne datoteke »%s« v pretok:"
 
-#: gio/gdbusaddress.c:988
+#: gio/gdbusaddress.c:986
 msgid "The given address is empty"
 msgstr "Podan naslov je prazen."
 
-#: gio/gdbusaddress.c:1101
+#: gio/gdbusaddress.c:1099
 #, c-format
-msgid "Cannot spawn a message bus when setuid"
-msgstr "Ni mogoče oživiti vodila sporočila med izvajanjem ukaza setuid"
+msgid "Cannot spawn a message bus when AT_SECURE is set"
+msgstr ""
+"Ni mogoče oživiti vodila sporočila, če je nastavljena možnost AT_SECURE"
 
-#: gio/gdbusaddress.c:1108
+#: gio/gdbusaddress.c:1106
 msgid "Cannot spawn a message bus without a machine-id: "
-msgstr "Ni mogoče oživiti vodila sporočila brez predmeta machine-id:"
+msgstr "Ni mogoče oživiti vodila sporočila brez predmeta machine-id: "
 
-#: gio/gdbusaddress.c:1115
+#: gio/gdbusaddress.c:1113
 #, c-format
 msgid "Cannot autolaunch D-Bus without X11 $DISPLAY"
 msgstr "Ni mogoče samodejno zagnati vodila D-Bus brez nastavitve X11 $DISPLAY"
 
-#: gio/gdbusaddress.c:1157
+#: gio/gdbusaddress.c:1155
 #, c-format
 msgid "Error spawning command line “%s”: "
 msgstr "Napaka med oživljanjem ukazne vrstice »%s«: "
 
-#: gio/gdbusaddress.c:1226
+#: gio/gdbusaddress.c:1224
 #, 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:1375 gio/gdbusconnection.c:7334
+#: gio/gdbusaddress.c:1373 gio/gdbusconnection.c:7318
 #, c-format
 msgid ""
 "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
@@ -522,7 +532,7 @@ msgstr ""
 "Ni mogoče določiti naslova vodila iz okoljske spremenljivke "
 "DBUS_STARTER_BUS_TYPE – neznana vrednost »%s«"
 
-#: gio/gdbusaddress.c:1384 gio/gdbusconnection.c:7343
+#: gio/gdbusaddress.c:1382 gio/gdbusconnection.c:7327
 msgid ""
 "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
 "variable is not set"
@@ -530,7 +540,7 @@ msgstr ""
 "Ni mogoče določiti naslova vodila, kajti okoljska spremenljivka "
 "DBUS_STARTER_BUS_TYPE ni nastavljena"
 
-#: gio/gdbusaddress.c:1394
+#: gio/gdbusaddress.c:1392
 #, c-format
 msgid "Unknown bus type %d"
 msgstr "Neznana vrsta vodila %d"
@@ -559,12 +569,12 @@ msgstr "Uporabniški ID mora biti enak za odjemalca in strežnik"
 msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
 msgstr "Prekinjeno s strani GDBusAuthObserver::authorize-authenticated-peer"
 
-#: gio/gdbusauthmechanismsha1.c:298
+#: gio/gdbusauthmechanismsha1.c:300
 #, c-format
 msgid "Error when getting information for directory “%s”: %s"
 msgstr "Napaka med pridobivanjem podrobnosti mape »%s«: %s"
 
-#: gio/gdbusauthmechanismsha1.c:313
+#: gio/gdbusauthmechanismsha1.c:315
 #, c-format
 msgid ""
 "Permissions on directory “%s” are malformed. Expected mode 0700, got 0%o"
@@ -572,32 +582,32 @@ msgstr ""
 "Dovoljenja na mapi »%s« so napačno oblikovana. Pričakovano je dovoljenje "
 "0700, pridobljeno pa 0%o"
 
-#: gio/gdbusauthmechanismsha1.c:346 gio/gdbusauthmechanismsha1.c:357
+#: gio/gdbusauthmechanismsha1.c:348 gio/gdbusauthmechanismsha1.c:359
 #, c-format
 msgid "Error creating directory “%s”: %s"
 msgstr "Napaka med ustvarjanjem mape »%s«: %s"
 
-#: gio/gdbusauthmechanismsha1.c:359 gio/gfile.c:1062 gio/gfile.c:1300
-#: gio/gfile.c:1438 gio/gfile.c:1676 gio/gfile.c:1731 gio/gfile.c:1789
-#: gio/gfile.c:1873 gio/gfile.c:1930 gio/gfile.c:1994 gio/gfile.c:2049
-#: gio/gfile.c:3754 gio/gfile.c:3809 gio/gfile.c:4102 gio/gfile.c:4572
-#: gio/gfile.c:4983 gio/gfile.c:5068 gio/gfile.c:5158 gio/gfile.c:5255
-#: gio/gfile.c:5342 gio/gfile.c:5443 gio/gfile.c:8153 gio/gfile.c:8243
-#: gio/gfile.c:8327 gio/win32/gwinhttpfile.c:453
+#: gio/gdbusauthmechanismsha1.c:361 gio/gfile.c:1080 gio/gfile.c:1318
+#: gio/gfile.c:1456 gio/gfile.c:1694 gio/gfile.c:1749 gio/gfile.c:1807
+#: gio/gfile.c:1891 gio/gfile.c:1948 gio/gfile.c:2012 gio/gfile.c:2067
+#: gio/gfile.c:3772 gio/gfile.c:3912 gio/gfile.c:4205 gio/gfile.c:4675
+#: gio/gfile.c:5086 gio/gfile.c:5171 gio/gfile.c:5261 gio/gfile.c:5358
+#: gio/gfile.c:5445 gio/gfile.c:5546 gio/gfile.c:8375 gio/gfile.c:8465
+#: gio/gfile.c:8549 gio/win32/gwinhttpfile.c:453
 msgid "Operation not supported"
 msgstr "Opravilo ni podprto"
 
-#: gio/gdbusauthmechanismsha1.c:402
+#: gio/gdbusauthmechanismsha1.c:404
 #, c-format
 msgid "Error opening keyring “%s” for reading: "
-msgstr "Napaka med odpiranjem zbirke ključev »%s« za branje:"
+msgstr "Napaka med odpiranjem zbirke ključev »%s« za branje: "
 
-#: gio/gdbusauthmechanismsha1.c:425 gio/gdbusauthmechanismsha1.c:747
+#: gio/gdbusauthmechanismsha1.c:427 gio/gdbusauthmechanismsha1.c:769
 #, c-format
 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:439 gio/gdbusauthmechanismsha1.c:761
+#: gio/gdbusauthmechanismsha1.c:441 gio/gdbusauthmechanismsha1.c:783
 #, c-format
 msgid ""
 "First token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -605,7 +615,7 @@ msgstr ""
 "Prvi žeton vrstice %d zbirke ključev pri »%s« z vsebino »%s« je neustrezno "
 "oblikovan"
 
-#: gio/gdbusauthmechanismsha1.c:453 gio/gdbusauthmechanismsha1.c:775
+#: gio/gdbusauthmechanismsha1.c:455 gio/gdbusauthmechanismsha1.c:797
 #, c-format
 msgid ""
 "Second token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -613,162 +623,162 @@ msgstr ""
 "Drugi žeton vrstice %d zbirke ključev pri »%s« z vsebino »%s« je neustrezno "
 "oblikovana"
 
-#: gio/gdbusauthmechanismsha1.c:477
+#: gio/gdbusauthmechanismsha1.c:479
 #, c-format
 msgid "Didn’t find cookie with id %d in the keyring at “%s”"
 msgstr "Piškotka z ID %d v zbirki ključev »%s« ni mogoče najti"
 
-#: gio/gdbusauthmechanismsha1.c:523
+#: gio/gdbusauthmechanismsha1.c:536
 #, c-format
 msgid "Error creating lock file “%s”: %s"
 msgstr "Napaka med ustvarjanjem datoteke zaklepa »%s«: %s"
 
-#: gio/gdbusauthmechanismsha1.c:587
+#: gio/gdbusauthmechanismsha1.c:609
 #, c-format
 msgid "Error deleting stale lock file “%s”: %s"
 msgstr "Napaka brisanja stare datoteke zaklepa »%s«: %s"
 
-#: gio/gdbusauthmechanismsha1.c:626
+#: gio/gdbusauthmechanismsha1.c:648
 #, c-format
 msgid "Error closing (unlinked) lock file “%s”: %s"
 msgstr "Napaka med zapiranjem (nepovezane) datoteke zaklepa »%s«: %s"
 
-#: gio/gdbusauthmechanismsha1.c:637
+#: gio/gdbusauthmechanismsha1.c:659
 #, c-format
 msgid "Error unlinking lock file “%s”: %s"
 msgstr "Napaka med razvezovanjem datoteke zaklepa »%s«: %s"
 
-#: gio/gdbusauthmechanismsha1.c:714
+#: gio/gdbusauthmechanismsha1.c:736
 #, c-format
 msgid "Error opening keyring “%s” for writing: "
 msgstr "Napaka med odpiranjem zbirke ključev »%s« za branje: "
 
-#: gio/gdbusauthmechanismsha1.c:908
+#: gio/gdbusauthmechanismsha1.c:930
 #, c-format
 msgid "(Additionally, releasing the lock for “%s” also failed: %s) "
-msgstr "(V nadaljevanju je spodletelo tudi sproščanje zaklepa »%s«: %s)"
+msgstr "(V nadaljevanju je spodletelo tudi sproščanje zaklepa »%s«: %s) "
 
-#: gio/gdbusconnection.c:604 gio/gdbusconnection.c:2418
+#: gio/gdbusconnection.c:588 gio/gdbusconnection.c:2402
 msgid "The connection is closed"
 msgstr "Povezava je zaprta"
 
-#: gio/gdbusconnection.c:1903
+#: gio/gdbusconnection.c:1887
 msgid "Timeout was reached"
 msgstr "Čas zakasnitve je potekel"
 
-#: gio/gdbusconnection.c:2541
+#: gio/gdbusconnection.c:2525
 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:4269 gio/gdbusconnection.c:4623
+#: gio/gdbusconnection.c:4253 gio/gdbusconnection.c:4607
 #, 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:4414
+#: gio/gdbusconnection.c:4398
 #, c-format
 msgid "No such property “%s”"
 msgstr "Lastnost »%s« ne obstaja"
 
-#: gio/gdbusconnection.c:4426
+#: gio/gdbusconnection.c:4410
 #, c-format
 msgid "Property “%s” is not readable"
 msgstr "Lastnost »%s« ni berljiva"
 
-#: gio/gdbusconnection.c:4437
+#: gio/gdbusconnection.c:4421
 #, c-format
 msgid "Property “%s” is not writable"
 msgstr "Lastnost »%s« ni zapisljiva"
 
-#: gio/gdbusconnection.c:4457
+#: gio/gdbusconnection.c:4441
 #, c-format
 msgid "Error setting property “%s”: Expected type “%s” but got “%s”"
 msgstr ""
 "Napaka med nastavljanjem lastnosti »%s«: pričakovana je vrsta »%s«, javljena "
 "pa »%s«."
 
-#: gio/gdbusconnection.c:4562 gio/gdbusconnection.c:4777
-#: gio/gdbusconnection.c:6760
+#: gio/gdbusconnection.c:4546 gio/gdbusconnection.c:4761
+#: gio/gdbusconnection.c:6744
 #, c-format
 msgid "No such interface “%s”"
 msgstr "Vmesnik »%s« ne obstaja"
 
-#: gio/gdbusconnection.c:4999 gio/gdbusconnection.c:7274
+#: gio/gdbusconnection.c:4983 gio/gdbusconnection.c:7258
 #, 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:5100
+#: gio/gdbusconnection.c:5084
 #, c-format
 msgid "No such method “%s”"
 msgstr "Način »%s« ne obstaja"
 
-#: gio/gdbusconnection.c:5131
+#: gio/gdbusconnection.c:5115
 #, 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:5334
+#: gio/gdbusconnection.c:5318
 #, 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:5561
+#: gio/gdbusconnection.c:5545
 #, c-format
 msgid "Unable to retrieve property %s.%s"
 msgstr "Ni mogoče pridobiti lastnosti %s.%s"
 
-#: gio/gdbusconnection.c:5617
+#: gio/gdbusconnection.c:5601
 #, c-format
 msgid "Unable to set property %s.%s"
 msgstr "Ni mogoče določiti lastnosti %s.%s"
 
-#: gio/gdbusconnection.c:5796
+#: gio/gdbusconnection.c:5780
 #, 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:6872
+#: gio/gdbusconnection.c:6856
 #, 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:6993
+#: gio/gdbusconnection.c:6977
 #, c-format
 msgid "A subtree is already exported for %s"
 msgstr "Podrejeno drevo je že izvoženo za %s"
 
-#: gio/gdbusconnection.c:7282
+#: gio/gdbusconnection.c:7266
 #, c-format
 msgid "Object does not exist at path “%s”"
 msgstr "Predmeta na poti »%s« ni mogoče najti."
 
-#: gio/gdbusmessage.c:1311
+#: gio/gdbusmessage.c:1301
 msgid "type is INVALID"
 msgstr "vrsta je neveljavna"
 
-#: gio/gdbusmessage.c:1322
+#: gio/gdbusmessage.c:1312
 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:1333
+#: gio/gdbusmessage.c:1323
 msgid "METHOD_RETURN message: REPLY_SERIAL header field is missing"
 msgstr "Sporočilo METHOD_RETURN: manjka polje glave REPLY_SERIAL"
 
-#: gio/gdbusmessage.c:1345
+#: gio/gdbusmessage.c:1335
 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:1358
+#: gio/gdbusmessage.c:1348
 msgid "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing"
 msgstr "Sporočilo SIGNAL: manjka polje glave PATH, INTERFACE ali MEMBER"
 
-#: gio/gdbusmessage.c:1366
+#: gio/gdbusmessage.c:1356
 msgid ""
 "SIGNAL message: The PATH header field is using the reserved value /org/"
 "freedesktop/DBus/Local"
@@ -776,7 +786,7 @@ msgstr ""
 "Sporočilo SIGNAL: polje glave PATH uporablja rezervirano vrednost /org/"
 "freedesktop/DBus/Local"
 
-#: gio/gdbusmessage.c:1374
+#: gio/gdbusmessage.c:1364
 msgid ""
 "SIGNAL message: The INTERFACE header field is using the reserved value org."
 "freedesktop.DBus.Local"
@@ -785,21 +795,21 @@ msgstr ""
 "freedesktop.DBus.Local"
 
 # Double multiple plural?
-#: gio/gdbusmessage.c:1422 gio/gdbusmessage.c:1482
+#: gio/gdbusmessage.c:1412 gio/gdbusmessage.c:1472
 #, c-format
 msgid "Wanted to read %lu byte but only got %lu"
 msgid_plural "Wanted to read %lu bytes but only got %lu"
 msgstr[0] "Med poskusom branja %lu bajtov je bilo prejetih le %lu"
-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."
+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:1436
+#: gio/gdbusmessage.c:1426
 #, c-format
 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:1455
+#: gio/gdbusmessage.c:1445
 #, c-format
 msgid ""
 "Expected valid UTF-8 string but found invalid bytes at byte offset %d "
@@ -809,21 +819,21 @@ msgstr ""
 "bajtov na bajtnem odmiku %d (dolžina niza %d). Do takrat veljaven UTF-8 niz "
 "je »%s«"
 
-#: gio/gdbusmessage.c:1519 gio/gdbusmessage.c:1795 gio/gdbusmessage.c:2006
+#: gio/gdbusmessage.c:1509 gio/gdbusmessage.c:1785 gio/gdbusmessage.c:1996
 msgid "Value nested too deeply"
 msgstr "Vrednost je gnezdene pregloboko"
 
-#: gio/gdbusmessage.c:1687
+#: gio/gdbusmessage.c:1677
 #, c-format
 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:1711
+#: gio/gdbusmessage.c:1701
 #, c-format
 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:1762
+#: gio/gdbusmessage.c:1752
 #, c-format
 msgid ""
 "Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB)."
@@ -842,7 +852,7 @@ msgstr[3] ""
 "Najdeno je polje dolžine %u bajtov, največja dovoljena pa je 2<<26 bajtov "
 "(64 MiB)."
 
-#: gio/gdbusmessage.c:1782
+#: gio/gdbusmessage.c:1772
 #, c-format
 msgid ""
 "Encountered array of type “a%c”, expected to have a length a multiple of %u "
@@ -851,16 +861,16 @@ 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:1936 gio/gdbusmessage.c:2655
+#: gio/gdbusmessage.c:1926 gio/gdbusmessage.c:2645
 msgid "Empty structures (tuples) are not allowed in D-Bus"
 msgstr "V vodilu D-Bus prazne vrednosti niso dovoljene"
 
-#: gio/gdbusmessage.c:1990
+#: gio/gdbusmessage.c:1980
 #, c-format
 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:2031
+#: gio/gdbusmessage.c:2021
 #, c-format
 msgid ""
 "Error deserializing GVariant with type string “%s” from the D-Bus wire format"
@@ -868,7 +878,7 @@ msgstr ""
 "Napaka med ločevanjem GVariant iz zaporedja z vrsto niza »%s« iz D-Bus žične "
 "oblike"
 
-#: gio/gdbusmessage.c:2216
+#: gio/gdbusmessage.c:2206
 #, c-format
 msgid ""
 "Invalid endianness value. Expected 0x6c (“l”) or 0x42 (“B”) but found value "
@@ -877,29 +887,29 @@ msgstr ""
 "Neveljavna vrednost vrstnega reda zlogov. Pričakovana je ali vrednost 0x6c "
 "(» l «) ali 0x42 (» B «), najdena pa je vrednost 0x%02x"
 
-#: gio/gdbusmessage.c:2235
+#: gio/gdbusmessage.c:2225
 #, 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:2293 gio/gdbusmessage.c:2891
+#: gio/gdbusmessage.c:2283 gio/gdbusmessage.c:2881
 msgid "Signature header found but is not of type signature"
 msgstr "Glava podpisa je najdena, vendar ni ustrezno oblikovana"
 
-#: gio/gdbusmessage.c:2305
+#: gio/gdbusmessage.c:2295
 #, c-format
 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:2320
+#: gio/gdbusmessage.c:2310
 #, c-format
 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:2352
+#: gio/gdbusmessage.c:2342
 #, 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"
@@ -912,11 +922,11 @@ msgstr[2] ""
 msgstr[3] ""
 "V sporočilu ni glave podpisa, vendar je telo sporočila dolgo %u bajte"
 
-#: gio/gdbusmessage.c:2362
+#: gio/gdbusmessage.c:2352
 msgid "Cannot deserialize message: "
 msgstr "Sporočila ni mogoče ločiti iz zaporedja: "
 
-#: gio/gdbusmessage.c:2708
+#: gio/gdbusmessage.c:2698
 #, c-format
 msgid ""
 "Error serializing GVariant with type string “%s” to the D-Bus wire format"
@@ -924,22 +934,22 @@ msgstr ""
 "Napaka pri združevanju GVariant v zaporedje z vrsto niza »%s« v D-Bus žično "
 "obliko"
 
-#: gio/gdbusmessage.c:2845
+#: gio/gdbusmessage.c:2835
 #, c-format
 msgid ""
 "Number of file descriptors in message (%d) differs from header field (%d)"
 msgstr "Število opisnikov v sporočilu (%d) se razlikuje od polja glave (%d)"
 
-#: gio/gdbusmessage.c:2853
+#: gio/gdbusmessage.c:2843
 msgid "Cannot serialize message: "
 msgstr "Sporočila ni bilo mogoče združiti v zaporedje: "
 
-#: gio/gdbusmessage.c:2906
+#: gio/gdbusmessage.c:2896
 #, c-format
 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:2916
+#: gio/gdbusmessage.c:2906
 #, c-format
 msgid ""
 "Message body has type signature “%s” but signature in the header field is "
@@ -947,52 +957,52 @@ msgid ""
 msgstr ""
 "Telo sporočila ima podpis vrste »%s«, vendar je podpis v polju glave »%s«"
 
-#: gio/gdbusmessage.c:2932
+#: gio/gdbusmessage.c:2922
 #, c-format
 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:3487
+#: gio/gdbusmessage.c:3477
 #, c-format
 msgid "Error return with body of type “%s”"
 msgstr "Napaka vrnjena s telesom vrste »%s«"
 
-#: gio/gdbusmessage.c:3495
+#: gio/gdbusmessage.c:3485
 msgid "Error return with empty body"
 msgstr "Napaka vrnjena s praznim telesom"
 
-#: gio/gdbusprivate.c:2246
+#: gio/gdbusprivate.c:2185
 #, c-format
 msgid "(Type any character to close this window)\n"
 msgstr "(S pritiskom na katerikoli znak, se okno zapre)\n"
 
-#: gio/gdbusprivate.c:2420
+#: gio/gdbusprivate.c:2371
 #, c-format
 msgid "Session dbus not running, and autolaunch failed"
 msgstr "Vodilo seje DBus ni zagnano, zato je samodejni zagon spodletel"
 
-#: gio/gdbusprivate.c:2443
+#: gio/gdbusprivate.c:2394
 #, c-format
 msgid "Unable to get Hardware profile: %s"
 msgstr "Ni mogoče pridobiti strojnega profila: %s"
 
 #. Translators: Both placeholders are file paths
-#: gio/gdbusprivate.c:2494
+#: gio/gdbusprivate.c:2445
 #, c-format
 msgid "Unable to load %s or %s: "
-msgstr "Ni mogoče naložiti %s oziroma %s:"
+msgstr "Ni mogoče naložiti %s oziroma %s: "
 
-#: gio/gdbusproxy.c:1569
+#: gio/gdbusproxy.c:1573
 #, c-format
 msgid "Error calling StartServiceByName for %s: "
 msgstr "Napaka med klicanjem predmeta StartServiceByName za %s: "
 
-#: gio/gdbusproxy.c:1592
+#: gio/gdbusproxy.c:1596
 #, c-format
 msgid "Unexpected reply %d from StartServiceByName(\"%s\") method"
 msgstr "Nepričakovan odgovor %d iz načina StartServiceByName(»%s«)"
 
-#: gio/gdbusproxy.c:2699 gio/gdbusproxy.c:2834
+#: gio/gdbusproxy.c:2707 gio/gdbusproxy.c:2842
 #, c-format
 msgid ""
 "Cannot invoke method; proxy is for the well-known name %s without an owner, "
@@ -1047,66 +1057,66 @@ msgstr ""
 "\n"
 "Uporabite »%s COMMAND --help« za pomoč o posameznem ukazu.\n"
 
-#: gio/gdbus-tool.c:201 gio/gdbus-tool.c:273 gio/gdbus-tool.c:345
-#: gio/gdbus-tool.c:369 gio/gdbus-tool.c:859 gio/gdbus-tool.c:1236
-#: gio/gdbus-tool.c:1724
+#: gio/gdbus-tool.c:202 gio/gdbus-tool.c:274 gio/gdbus-tool.c:346
+#: gio/gdbus-tool.c:370 gio/gdbus-tool.c:860 gio/gdbus-tool.c:1245
+#: gio/gdbus-tool.c:1733
 #, c-format
 msgid "Error: %s\n"
 msgstr "Napaka: %s\n"
 
-#: gio/gdbus-tool.c:212 gio/gdbus-tool.c:286 gio/gdbus-tool.c:1740
+#: gio/gdbus-tool.c:213 gio/gdbus-tool.c:287 gio/gdbus-tool.c:1749
 #, c-format
 msgid "Error parsing introspection XML: %s\n"
 msgstr "Napaka med samopreverjanjem XML: %s\n"
 
-#: gio/gdbus-tool.c:250
+#: gio/gdbus-tool.c:251
 #, c-format
 msgid "Error: %s is not a valid name\n"
 msgstr "Napaka: %s ni veljavno ime\n"
 
-#: gio/gdbus-tool.c:255 gio/gdbus-tool.c:745 gio/gdbus-tool.c:1060
-#: gio/gdbus-tool.c:1890 gio/gdbus-tool.c:2130
+#: gio/gdbus-tool.c:256 gio/gdbus-tool.c:746 gio/gdbus-tool.c:1064
+#: gio/gdbus-tool.c:1899 gio/gdbus-tool.c:2139
 #, c-format
 msgid "Error: %s is not a valid object path\n"
 msgstr "Napaka: %s ni veljavna pot predmeta\n"
 
-#: gio/gdbus-tool.c:403
+#: gio/gdbus-tool.c:404
 msgid "Connect to the system bus"
 msgstr "Poveži s sistemskim vodilom"
 
-#: gio/gdbus-tool.c:404
+#: gio/gdbus-tool.c:405
 msgid "Connect to the session bus"
 msgstr "Poveži z vodilom seje"
 
-#: gio/gdbus-tool.c:405
+#: gio/gdbus-tool.c:406
 msgid "Connect to given D-Bus address"
 msgstr "Poveži s podanim naslovom vodila D-Bus"
 
-#: gio/gdbus-tool.c:415
+#: gio/gdbus-tool.c:416
 msgid "Connection Endpoint Options:"
 msgstr "Možnosti končnih točk povezave:"
 
-#: gio/gdbus-tool.c:416
+#: gio/gdbus-tool.c:417
 msgid "Options specifying the connection endpoint"
 msgstr "Možnosti, ki določajo končne točke povezave"
 
-#: gio/gdbus-tool.c:439
+#: gio/gdbus-tool.c:440
 #, c-format
 msgid "No connection endpoint specified"
 msgstr "Ni določene končne točke povezave"
 
-#: gio/gdbus-tool.c:449
+#: gio/gdbus-tool.c:450
 #, c-format
 msgid "Multiple connection endpoints specified"
 msgstr "Določenih je več povezav končne točke"
 
-#: gio/gdbus-tool.c:522
+#: gio/gdbus-tool.c:523
 #, c-format
 msgid ""
 "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:531
+#: gio/gdbus-tool.c:532
 #, c-format
 msgid ""
 "Warning: According to introspection data, method “%s” does not exist on "
@@ -1115,160 +1125,164 @@ msgstr ""
 "Opozorilo: na osnovi podatkov samopregleda, način »%s« ne obstaja na "
 "vmesniku »%s«\n"
 
-#: gio/gdbus-tool.c:593
+#: gio/gdbus-tool.c:594
 msgid "Optional destination for signal (unique name)"
 msgstr "Izbirni cilj za signal (enoznačno ime)"
 
-#: gio/gdbus-tool.c:594
+#: gio/gdbus-tool.c:595
 msgid "Object path to emit signal on"
 msgstr "Pot predmeta za oddajanje signala"
 
-#: gio/gdbus-tool.c:595
+#: gio/gdbus-tool.c:596
 msgid "Signal and interface name"
 msgstr "Ime signala in vmesnika"
 
-#: gio/gdbus-tool.c:628
+#: gio/gdbus-tool.c:629
 msgid "Emit a signal."
 msgstr "Oddaj signal."
 
-#: gio/gdbus-tool.c:683 gio/gdbus-tool.c:997 gio/gdbus-tool.c:1827
-#: gio/gdbus-tool.c:2059 gio/gdbus-tool.c:2279
+#: gio/gdbus-tool.c:684 gio/gdbus-tool.c:1001 gio/gdbus-tool.c:1836
+#: gio/gdbus-tool.c:2068 gio/gdbus-tool.c:2288
 #, c-format
 msgid "Error connecting: %s\n"
 msgstr "Napaka med povezovanjem: %s\n"
 
-#: gio/gdbus-tool.c:703
+#: gio/gdbus-tool.c:704
 #, c-format
 msgid "Error: %s is not a valid unique bus name.\n"
 msgstr "Napaka: %s ni veljavno enoznačno ime vodila.\n"
 
-#: gio/gdbus-tool.c:722 gio/gdbus-tool.c:1040 gio/gdbus-tool.c:1870
+#: gio/gdbus-tool.c:723 gio/gdbus-tool.c:1044 gio/gdbus-tool.c:1879
 msgid "Error: Object path is not specified\n"
 msgstr "Napaka: pot predmeta ni določena\n"
 
-#: gio/gdbus-tool.c:765
+#: gio/gdbus-tool.c:766
 msgid "Error: Signal name is not specified\n"
 msgstr "Napaka: ime signala ni določeno\n"
 
-#: gio/gdbus-tool.c:779
+#: gio/gdbus-tool.c:780
 #, c-format
 msgid "Error: Signal name “%s” is invalid\n"
 msgstr "Napaka: ime signala »%s« ni veljavno\n"
 
-#: gio/gdbus-tool.c:791
+#: gio/gdbus-tool.c:792
 #, c-format
 msgid "Error: %s is not a valid interface name\n"
 msgstr "Napaka: %s ni veljavno ime vmesnika.\n"
 
-#: gio/gdbus-tool.c:797
+#: gio/gdbus-tool.c:798
 #, c-format
 msgid "Error: %s is not a valid member name\n"
 msgstr "Napaka: %s ni veljavno ime predmeta.\n"
 
 #. Use the original non-"parse-me-harder" error
-#: gio/gdbus-tool.c:834 gio/gdbus-tool.c:1172
+#: gio/gdbus-tool.c:835 gio/gdbus-tool.c:1176
 #, c-format
 msgid "Error parsing parameter %d: %s\n"
 msgstr "Napaka med razčlenjevanjem parametra %d: %s\n"
 
-#: gio/gdbus-tool.c:866
+#: gio/gdbus-tool.c:867
 #, c-format
 msgid "Error flushing connection: %s\n"
 msgstr "Napaka med počiščenjem povezave: %s\n"
 
-#: gio/gdbus-tool.c:893
+#: gio/gdbus-tool.c:895
 msgid "Destination name to invoke method on"
 msgstr "Ime cilja za sklicanje načina"
 
-#: gio/gdbus-tool.c:894
+#: gio/gdbus-tool.c:896
 msgid "Object path to invoke method on"
 msgstr "Pot do predmeta za sklicanje načina"
 
-#: gio/gdbus-tool.c:895
+#: gio/gdbus-tool.c:897
 msgid "Method and interface name"
 msgstr "Ime načina in vmesnika"
 
-#: gio/gdbus-tool.c:896
+#: gio/gdbus-tool.c:898
 msgid "Timeout in seconds"
 msgstr "Časovni zamik v sekundah"
 
-#: gio/gdbus-tool.c:942
+#: gio/gdbus-tool.c:899
+msgid "Allow interactive authorization"
+msgstr "Dovoli interaktivno overjanje"
+
+#: gio/gdbus-tool.c:946
 msgid "Invoke a method on a remote object."
 msgstr "Skliči način na oddaljenem predmetu."
 
-#: gio/gdbus-tool.c:1014 gio/gdbus-tool.c:1844 gio/gdbus-tool.c:2084
+#: gio/gdbus-tool.c:1018 gio/gdbus-tool.c:1853 gio/gdbus-tool.c:2093
 msgid "Error: Destination is not specified\n"
 msgstr "Napaka: cilj ni določen\n"
 
-#: gio/gdbus-tool.c:1025 gio/gdbus-tool.c:1861 gio/gdbus-tool.c:2095
+#: gio/gdbus-tool.c:1029 gio/gdbus-tool.c:1870 gio/gdbus-tool.c:2104
 #, c-format
 msgid "Error: %s is not a valid bus name\n"
 msgstr "Napaka: %s ni veljavno ime vodila\n"
 
-#: gio/gdbus-tool.c:1075
+#: gio/gdbus-tool.c:1079
 msgid "Error: Method name is not specified\n"
 msgstr "Napaka: ime načina ni določeno\n"
 
-#: gio/gdbus-tool.c:1086
+#: gio/gdbus-tool.c:1090
 #, c-format
 msgid "Error: Method name “%s” is invalid\n"
 msgstr "Napaka: ime načina »%s« ni veljavno\n"
 
-#: gio/gdbus-tool.c:1164
+#: gio/gdbus-tool.c:1168
 #, c-format
 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:1190
+#: gio/gdbus-tool.c:1194
 #, c-format
 msgid "Error adding handle %d: %s\n"
 msgstr "Napaka med dodajanjem ročnika: %d: %s\n"
 
-#: gio/gdbus-tool.c:1686
+#: gio/gdbus-tool.c:1695
 msgid "Destination name to introspect"
 msgstr "Samopreverjanje ciljnega imena"
 
-#: gio/gdbus-tool.c:1687
+#: gio/gdbus-tool.c:1696
 msgid "Object path to introspect"
 msgstr "Samopreverjanje poti predmeta"
 
-#: gio/gdbus-tool.c:1688
+#: gio/gdbus-tool.c:1697
 msgid "Print XML"
 msgstr "Natisni XML"
 
-#: gio/gdbus-tool.c:1689
+#: gio/gdbus-tool.c:1698
 msgid "Introspect children"
 msgstr "Samopreverjanje podrejenih predmetov"
 
-#: gio/gdbus-tool.c:1690
+#: gio/gdbus-tool.c:1699
 msgid "Only print properties"
 msgstr "Natisni le lastnosti"
 
-#: gio/gdbus-tool.c:1779
+#: gio/gdbus-tool.c:1788
 msgid "Introspect a remote object."
 msgstr "Samopreverjanje oddaljenega predmeta."
 
-#: gio/gdbus-tool.c:1985
+#: gio/gdbus-tool.c:1994
 msgid "Destination name to monitor"
 msgstr "Nadzor ciljnega imena"
 
-#: gio/gdbus-tool.c:1986
+#: gio/gdbus-tool.c:1995
 msgid "Object path to monitor"
 msgstr "Nadzor poti predmeta"
 
-#: gio/gdbus-tool.c:2011
+#: gio/gdbus-tool.c:2020
 msgid "Monitor a remote object."
 msgstr "Nadzoruj oddaljeni predmet."
 
-#: gio/gdbus-tool.c:2069
+#: gio/gdbus-tool.c:2078
 msgid "Error: can’t monitor a non-message-bus connection\n"
 msgstr "Napaka: ni mogoče nadzirati povezav mimo sporočilnega vtiča\n"
 
-#: gio/gdbus-tool.c:2193
+#: gio/gdbus-tool.c:2202
 msgid "Service to activate before waiting for the other one (well-known name)"
 msgstr "Storitev, ki naj se začne, preden začne program čakati na drugo (ime)"
 
-#: gio/gdbus-tool.c:2196
+#: gio/gdbus-tool.c:2205
 msgid ""
 "Timeout to wait for before exiting with an error (seconds); 0 for no timeout "
 "(default)"
@@ -1276,65 +1290,71 @@ msgstr ""
 "Časovni zamik, po katerem je program končan z napako (v sekundah); vrednost "
 "0 onemogoči zamik (privzeto)"
 
-#: gio/gdbus-tool.c:2244
+#: gio/gdbus-tool.c:2253
 msgid "[OPTION…] BUS-NAME"
 msgstr "[MOŽNOST …] IME-VODILA"
 
-#: gio/gdbus-tool.c:2245
+#: gio/gdbus-tool.c:2254
 msgid "Wait for a bus name to appear."
 msgstr "Počakaj na izpis imena vodila."
 
-#: gio/gdbus-tool.c:2321
+#: gio/gdbus-tool.c:2330
 msgid "Error: A service to activate for must be specified.\n"
 msgstr "Napaka: storitev za omogočanje mora biti določena.\n"
 
-#: gio/gdbus-tool.c:2326
+#: gio/gdbus-tool.c:2335
 msgid "Error: A service to wait for must be specified.\n"
 msgstr ""
 "Napaka: storitev za čakanje mora biti določena.\n"
 "\n"
 
-#: gio/gdbus-tool.c:2331
+#: gio/gdbus-tool.c:2340
 msgid "Error: Too many arguments.\n"
 msgstr "Napaka: navedenih je preveč argumentov.\n"
 
-#: gio/gdbus-tool.c:2339 gio/gdbus-tool.c:2346
+#: gio/gdbus-tool.c:2348 gio/gdbus-tool.c:2355
 #, c-format
 msgid "Error: %s is not a valid well-known bus name.\n"
 msgstr "Napaka: %s ni veljavno enoznačno ime vodila.\n"
 
-#: gio/gdesktopappinfo.c:2106 gio/gdesktopappinfo.c:4935
+#: gio/gdebugcontrollerdbus.c:358
+#, c-format
+msgid "Not authorized to change debug settings"
+msgstr ""
+"Za spreminjanje nastavitev razhroščevanja so zahtevana posebna dovoljenja"
+
+#: gio/gdesktopappinfo.c:2178 gio/gdesktopappinfo.c:5105
 msgid "Unnamed"
 msgstr "Neimenovano"
 
-#: gio/gdesktopappinfo.c:2516
+#: gio/gdesktopappinfo.c:2588
 msgid "Desktop file didn’t specify Exec field"
 msgstr "Namizna datoteka ne vsebuje določenega polja Exec"
 
-#: gio/gdesktopappinfo.c:2804
+#: gio/gdesktopappinfo.c:2896
 msgid "Unable to find terminal required for application"
 msgstr "Ni mogoče najti terminala, ki ga zahteva program"
 
-#: gio/gdesktopappinfo.c:3455
+#: gio/gdesktopappinfo.c:3625
 #, c-format
 msgid "Can’t create user application configuration folder %s: %s"
 msgstr "Ni mogoče ustvariti nastavitvene mape uporabnikovega programa %s: %s"
 
-#: gio/gdesktopappinfo.c:3459
+#: gio/gdesktopappinfo.c:3629
 #, c-format
 msgid "Can’t create user MIME configuration folder %s: %s"
 msgstr "Ni mogoče ustvariti uporabnikove nastavitvene mape MIME %s: %s"
 
-#: gio/gdesktopappinfo.c:3701 gio/gdesktopappinfo.c:3725
+#: gio/gdesktopappinfo.c:3871 gio/gdesktopappinfo.c:3895
 msgid "Application information lacks an identifier"
 msgstr "Podatki programa so brez določila"
 
-#: gio/gdesktopappinfo.c:3961
+#: gio/gdesktopappinfo.c:4131
 #, c-format
 msgid "Can’t create user desktop file %s"
 msgstr "Ni mogoče ustvariti uporabnikove datoteke namizja %s"
 
-#: gio/gdesktopappinfo.c:4097
+#: gio/gdesktopappinfo.c:4267
 #, c-format
 msgid "Custom definition for %s"
 msgstr "Določilo po meri za %s"
@@ -1362,7 +1382,7 @@ msgstr "pogon ne vključuje možnosti zagona"
 msgid "drive doesn’t implement stop"
 msgstr "pogon ne vključuje možnosti zaustavitve"
 
-#: gio/gdtlsconnection.c:1153 gio/gtlsconnection.c:920
+#: gio/gdtlsconnection.c:1186 gio/gtlsconnection.c:955
 msgid "TLS backend does not implement TLS binding retrieval"
 msgstr "Ozadnji program TLS ne vključuje pridobivanje vezi TLS"
 
@@ -1403,74 +1423,74 @@ msgstr "Pričakovan GEmblem za GEmblemedIcon"
 #. * trying to find the enclosing (user visible)
 #. * mount of a file, but none exists.
 #.
-#: gio/gfile.c:1561
+#: gio/gfile.c:1579
 msgid "Containing mount does not exist"
 msgstr "Obstoječa enota ne obstaja"
 
-#: gio/gfile.c:2608 gio/glocalfile.c:2486
+#: gio/gfile.c:2626 gio/glocalfile.c:2486
 msgid "Can’t copy over directory"
 msgstr "Ni mogoče kopirati prek mape"
 
-#: gio/gfile.c:2668
+#: gio/gfile.c:2686
 msgid "Can’t copy directory over directory"
 msgstr "Ni mogoče kopirati mape prek mape"
 
-#: gio/gfile.c:2676
+#: gio/gfile.c:2694
 msgid "Target file exists"
 msgstr "Ciljna datoteka obstaja"
 
-#: gio/gfile.c:2695
+#: gio/gfile.c:2713
 msgid "Can’t recursively copy directory"
 msgstr "Ni mogoče kopirati drevesne zgradbe map"
 
-#: gio/gfile.c:2996
+#: gio/gfile.c:3014
 msgid "Splice not supported"
 msgstr "Splice ni podprt"
 
-#: gio/gfile.c:3000
+#: gio/gfile.c:3018
 #, c-format
 msgid "Error splicing file: %s"
 msgstr "Napaka med prepletanjem datoteke: %s"
 
-#: gio/gfile.c:3152
+#: gio/gfile.c:3170
 msgid "Copy (reflink/clone) between mounts is not supported"
 msgstr ""
 "Kopiranje (sklic povezave/kloniranje) med različnimi priklopi ni podprto"
 
-#: gio/gfile.c:3156
+#: gio/gfile.c:3174
 msgid "Copy (reflink/clone) is not supported or invalid"
 msgstr "Kopiranje (sklic povezave/kloniranje) ni podprto ali pa ni veljavno"
 
-#: gio/gfile.c:3161
+#: gio/gfile.c:3179
 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:3226
+#: gio/gfile.c:3244
 msgid "Can’t copy special file"
 msgstr "Ni mogoče kopirati posebne datoteke"
 
-#: gio/gfile.c:4035
+#: gio/gfile.c:4138
 msgid "Invalid symlink value given"
 msgstr "Neveljavna vrednost simbolne povezave"
 
-#: gio/gfile.c:4045 glib/gfileutils.c:2333
+#: gio/gfile.c:4148 glib/gfileutils.c:2333
 msgid "Symbolic links not supported"
 msgstr "Simbolne povezave niso podprte"
 
-#: gio/gfile.c:4213
+#: gio/gfile.c:4316
 msgid "Trash not supported"
 msgstr "Smeti niso podprte"
 
-#: gio/gfile.c:4325
+#: gio/gfile.c:4428
 #, c-format
 msgid "File names cannot contain “%c”"
 msgstr "Ni mogoče uporabiti »%c« v imenu datoteke"
 
-#: gio/gfile.c:6806 gio/gvolume.c:364
+#: gio/gfile.c:7028 gio/gvolume.c:364
 msgid "volume doesn’t implement mount"
 msgstr "enota ne podpira priklopa"
 
-#: gio/gfile.c:6920 gio/gfile.c:6968
+#: gio/gfile.c:7142 gio/gfile.c:7190
 msgid "No application is registered as handling this file"
 msgstr "Na voljo ni programa z a upravljanje s to datoteko"
 
@@ -1515,7 +1535,7 @@ msgstr "Razčlenitev ni dovoljena na dovodnem pretoku"
 msgid "Truncate not supported on stream"
 msgstr "Razčlenitev ni podprta na pretoku"
 
-#: gio/ghttpproxy.c:91 gio/gresolver.c:443 gio/gresolver.c:596
+#: gio/ghttpproxy.c:91 gio/gresolver.c:458 gio/gresolver.c:611
 #: glib/gconvert.c:1825
 msgid "Invalid hostname"
 msgstr "Neveljavno ime gostitelja"
@@ -1602,7 +1622,7 @@ 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:109 gio/gunixsocketaddress.c:221
+#: gio/gnativesocketaddress.c:109 gio/gunixsocketaddress.c:228
 msgid "Not enough space for socket address"
 msgstr "Ni dovolj prostora za naslov vtiča"
 
@@ -2438,70 +2458,74 @@ msgstr "Napaka med stiskanjem datoteke %s"
 msgid "text may not appear inside <%s>"
 msgstr "besedilo se ne sme pojaviti znotraj <%s>"
 
-#: gio/glib-compile-resources.c:737 gio/glib-compile-schemas.c:2172
+#: gio/glib-compile-resources.c:819 gio/glib-compile-schemas.c:2172
 msgid "Show program version and exit"
 msgstr "Izpiši podrobnosti različice in končaj"
 
-#: gio/glib-compile-resources.c:738
+#: gio/glib-compile-resources.c:820
 msgid "Name of the output file"
 msgstr "Ime izhodne datoteke"
 
-#: gio/glib-compile-resources.c:739
+#: gio/glib-compile-resources.c:821
 msgid ""
 "The directories to load files referenced in FILE from (default: current "
 "directory)"
 msgstr ""
 "Mape, iz katerih naj bodo prebrane datoteke (privzeto je to trenutna mapa)"
 
-#: gio/glib-compile-resources.c:739 gio/glib-compile-schemas.c:2173
+#: gio/glib-compile-resources.c:821 gio/glib-compile-schemas.c:2173
 #: gio/glib-compile-schemas.c:2202
 msgid "DIRECTORY"
 msgstr "MAPA"
 
-#: gio/glib-compile-resources.c:740
+#: gio/glib-compile-resources.c:822
 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:741
+#: gio/glib-compile-resources.c:823
 msgid "Generate source header"
 msgstr "Ustvari glavo vira"
 
-#: gio/glib-compile-resources.c:742
+#: gio/glib-compile-resources.c:824
 msgid "Generate source code 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:743
+#: gio/glib-compile-resources.c:825
 msgid "Generate dependency list"
 msgstr "Ustvari seznam odvisnosti."
 
-#: gio/glib-compile-resources.c:744
+#: gio/glib-compile-resources.c:826
 msgid "Name of the dependency file to generate"
 msgstr "Ime ustvarjene datoteke odvisnosti za ustvarjanje"
 
-#: gio/glib-compile-resources.c:745
+#: gio/glib-compile-resources.c:827
 msgid "Include phony targets in the generated dependency file"
 msgstr "Vključi lažne cilje v ustvarjeni datoteki odvisnosti"
 
-#: gio/glib-compile-resources.c:746
+#: gio/glib-compile-resources.c:828
 msgid "Don’t automatically create and register resource"
 msgstr "Vira ne ustvari in ne vpiši samodejno"
 
-#: gio/glib-compile-resources.c:747
+#: gio/glib-compile-resources.c:829
 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:748
+#: gio/glib-compile-resources.c:830
 msgid ""
 "Don’t embed resource data in the C file; assume it's linked externally "
 "instead"
 msgstr "Ne vgrajuj podatkov vira v datoteko C; predvidi zunanjo povezavo"
 
-#: gio/glib-compile-resources.c:749
+#: gio/glib-compile-resources.c:831
 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:775
+#: gio/glib-compile-resources.c:832
+msgid "The target C compiler (default: the CC environment variable)"
+msgstr "Ciljni prevajalnik C (privzeto: okoljska spremenljivka CC)"
+
+#: gio/glib-compile-resources.c:858
 msgid ""
 "Compile a resource specification into a resource file.\n"
 "Resource specification files have the extension .gresource.xml,\n"
@@ -2511,7 +2535,7 @@ msgstr ""
 "Datoteke določil vira imajo pripone .gresource.xml,\n"
 "datoteke vira pa pripono .gresource."
 
-#: gio/glib-compile-resources.c:797
+#: gio/glib-compile-resources.c:880
 msgid "You should give exactly one file name\n"
 msgstr "Podati je treba natanko eno ime datoteke\n"
 
@@ -3302,13 +3326,13 @@ msgstr "Napaka med ustvarjanjem varnostne kopije: %s"
 msgid "Error renaming temporary file: %s"
 msgstr "Napaka med preimenovanjem začasne datoteke: %s"
 
-#: gio/glocalfileoutputstream.c:609 gio/glocalfileoutputstream.c:1237
+#: gio/glocalfileoutputstream.c:609 gio/glocalfileoutputstream.c:1239
 #, c-format
 msgid "Error truncating file: %s"
 msgstr "Napaka med obrezovanjem datoteke: %s"
 
 #: gio/glocalfileoutputstream.c:662 gio/glocalfileoutputstream.c:907
-#: gio/glocalfileoutputstream.c:1218 gio/gsubprocess.c:226
+#: gio/glocalfileoutputstream.c:1220 gio/gsubprocess.c:229
 #, c-format
 msgid "Error opening file “%s”: %s"
 msgstr "Napaka med odpiranjem datoteke »%s«: %s"
@@ -3330,7 +3354,7 @@ msgstr "Datoteka je bila zunanje spremenjena"
 msgid "Error removing old file: %s"
 msgstr "Napaka med odstranjevanjem datoteke: %s"
 
-#: gio/gmemoryinputstream.c:474 gio/gmemoryoutputstream.c:772
+#: gio/gmemoryinputstream.c:474 gio/gmemoryoutputstream.c:762
 msgid "Invalid GSeekType supplied"
 msgstr "Privzet neveljaven GSeekType"
 
@@ -3342,15 +3366,15 @@ msgstr "Neveljavna zahteva iskanja"
 msgid "Cannot truncate GMemoryInputStream"
 msgstr "Ni mogoče razčleniti GMemoryInputStream"
 
-#: gio/gmemoryoutputstream.c:567
+#: gio/gmemoryoutputstream.c:568
 msgid "Memory output stream not resizable"
 msgstr "Odvoda pretoka pomnilnika ni mogoče razširiti"
 
-#: gio/gmemoryoutputstream.c:583
+#: gio/gmemoryoutputstream.c:584
 msgid "Failed to resize memory output stream"
 msgstr "Razširjanje pretoka odvoda pomnilnika je spodletelo."
 
-#: gio/gmemoryoutputstream.c:673
+#: gio/gmemoryoutputstream.c:663
 msgid ""
 "Amount of memory required to process the write is larger than available "
 "address space"
@@ -3358,11 +3382,11 @@ msgstr ""
 "Količina pomnilnika zahtevana za pisanje je večja kot je razpoložljivi "
 "prostor naslova"
 
-#: gio/gmemoryoutputstream.c:782
+#: gio/gmemoryoutputstream.c:772
 msgid "Requested seek before the beginning of the stream"
 msgstr "Zahtevano iskanje pred začetkom pretoka"
 
-#: gio/gmemoryoutputstream.c:797
+#: gio/gmemoryoutputstream.c:787
 msgid "Requested seek beyond the end of the stream"
 msgstr "Zahtevano iskanje za koncem pretoka"
 
@@ -3436,11 +3460,11 @@ msgstr "Ni mogoče ustvariti nadzornika omrežja: %s"
 
 #: gio/gnetworkmonitornetlink.c:120
 msgid "Could not create network monitor: "
-msgstr "Ni mogoče ustvariti nadzornika omrežja:"
+msgstr "Ni mogoče ustvariti nadzornika omrežja: "
 
 #: gio/gnetworkmonitornetlink.c:183
 msgid "Could not get network status: "
-msgstr "Ni mogoče pridobiti stanja omrežja:"
+msgstr "Ni mogoče pridobiti stanja omrežja: "
 
 #: gio/gnetworkmonitornm.c:311
 #, c-format
@@ -3465,18 +3489,22 @@ msgstr "Vsota vektorjev, poslanih na %s, je prevelika."
 msgid "Source stream is already closed"
 msgstr "Izvorni pretok je že zaprt"
 
-#: gio/gresolver.c:386 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
+#. Translators: the first placeholder is a domain name, the
+#. * second is an error message
+#: gio/gresolver.c:401 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
+#: gio/gthreadedresolver.c:780 gio/gthreadedresolver.c:804
+#: gio/gthreadedresolver.c:829 gio/gthreadedresolver.c:844
 #, c-format
 msgid "Error resolving “%s”: %s"
 msgstr "Napaka med razreševanjem »%s«: %s"
 
 #. Translators: The placeholder is for a function name.
-#: gio/gresolver.c:455 gio/gresolver.c:615
+#: gio/gresolver.c:470 gio/gresolver.c:630
 #, c-format
 msgid "%s not implemented"
 msgstr "Za funkcijo %s ni zagotovljene podpore."
 
-#: gio/gresolver.c:984 gio/gresolver.c:1036
+#: gio/gresolver.c:999 gio/gresolver.c:1051
 msgid "Invalid domain"
 msgstr "Neveljavna domena"
 
@@ -3591,7 +3619,7 @@ msgstr ""
 msgid "  SECTION   An (optional) elf section name\n"
 msgstr "  ODSEK     Ime (izbirno) izbora elf\n"
 
-#: gio/gresource-tool.c:565 gio/gsettings-tool.c:706
+#: gio/gresource-tool.c:565 gio/gsettings-tool.c:718
 msgid "  COMMAND   The (optional) command to explain\n"
 msgstr "  UKAZ      Ukaz (izbirno) za razlago\n"
 
@@ -3623,7 +3651,7 @@ msgstr "POT"
 msgid "  PATH      A resource path\n"
 msgstr "  POT       Pot vira\n"
 
-#: gio/gsettings-tool.c:49 gio/gsettings-tool.c:70 gio/gsettings-tool.c:911
+#: gio/gsettings-tool.c:49 gio/gsettings-tool.c:70 gio/gsettings-tool.c:923
 #, c-format
 msgid "No such schema “%s”\n"
 msgstr "Shema »%s« ne obstaja.\n"
@@ -3654,35 +3682,35 @@ 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:541
+#: gio/gsettings-tool.c:553
 msgid "The provided value is outside of the valid range\n"
 msgstr "Ponujena vrednost je izven veljavnega območja\n"
 
-#: gio/gsettings-tool.c:548
+#: gio/gsettings-tool.c:560
 msgid "The key is not writable\n"
 msgstr "Ključ ni zapisljiv\n"
 
-#: gio/gsettings-tool.c:584
+#: gio/gsettings-tool.c:596
 msgid "List the installed (non-relocatable) schemas"
 msgstr "Izpiši nameščene (nedodeljive) sheme"
 
-#: gio/gsettings-tool.c:590
+#: gio/gsettings-tool.c:602
 msgid "List the installed relocatable schemas"
 msgstr "Seznam naloženih dodeljivih SHEM"
 
-#: gio/gsettings-tool.c:596
+#: gio/gsettings-tool.c:608
 msgid "List the keys in SCHEMA"
 msgstr "Izpiši seznam ključev SHEME"
 
-#: gio/gsettings-tool.c:597 gio/gsettings-tool.c:603 gio/gsettings-tool.c:646
+#: gio/gsettings-tool.c:609 gio/gsettings-tool.c:615 gio/gsettings-tool.c:658
 msgid "SCHEMA[:PATH]"
 msgstr "SHEMA[:POT]"
 
-#: gio/gsettings-tool.c:602
+#: gio/gsettings-tool.c:614
 msgid "List the children of SCHEMA"
 msgstr "Izpiši seznam podrejenih predmetov SHEME"
 
-#: gio/gsettings-tool.c:608
+#: gio/gsettings-tool.c:620
 msgid ""
 "List keys and values, recursively\n"
 "If no SCHEMA is given, list all keys\n"
@@ -3690,48 +3718,48 @@ msgstr ""
 "Rekurzivno izpiši ključe in vrednosti,\n"
 "če ni podana SHEMA, pa izpiši vse ključe\n"
 
-#: gio/gsettings-tool.c:610
+#: gio/gsettings-tool.c:622
 msgid "[SCHEMA[:PATH]]"
 msgstr "[SHEMA[:POT]]"
 
-#: gio/gsettings-tool.c:615
+#: gio/gsettings-tool.c:627
 msgid "Get the value of KEY"
 msgstr "Pridobi vrednost KLJUČA"
 
-#: gio/gsettings-tool.c:616 gio/gsettings-tool.c:622 gio/gsettings-tool.c:628
-#: gio/gsettings-tool.c:640 gio/gsettings-tool.c:652
+#: gio/gsettings-tool.c:628 gio/gsettings-tool.c:634 gio/gsettings-tool.c:640
+#: gio/gsettings-tool.c:652 gio/gsettings-tool.c:664
 msgid "SCHEMA[:PATH] KEY"
 msgstr "SHEMA[:POT] KLJUČ"
 
-#: gio/gsettings-tool.c:621
+#: gio/gsettings-tool.c:633
 msgid "Query the range of valid values for KEY"
 msgstr "Poizvej območje veljavnih vrednosti KLJUČA"
 
-#: gio/gsettings-tool.c:627
+#: gio/gsettings-tool.c:639
 msgid "Query the description for KEY"
 msgstr "Preveri opis za KLJUČ"
 
-#: gio/gsettings-tool.c:633
+#: gio/gsettings-tool.c:645
 msgid "Set the value of KEY to VALUE"
 msgstr "Nastavi vrednosti KLJUČA na VREDNOST"
 
-#: gio/gsettings-tool.c:634
+#: gio/gsettings-tool.c:646
 msgid "SCHEMA[:PATH] KEY VALUE"
 msgstr "SHEMA[:POT] KLJUČ VREDNOST"
 
-#: gio/gsettings-tool.c:639
+#: gio/gsettings-tool.c:651
 msgid "Reset KEY to its default value"
 msgstr "Ponastavi KLJUČ na privzeto vrednost"
 
-#: gio/gsettings-tool.c:645
+#: gio/gsettings-tool.c:657
 msgid "Reset all keys in SCHEMA to their defaults"
 msgstr "Ponastavi vse ključe SHEME na privzete vrednosti"
 
-#: gio/gsettings-tool.c:651
+#: gio/gsettings-tool.c:663
 msgid "Check if KEY is writable"
 msgstr "Preveri ali je KLJUČ zapisljiv"
 
-#: gio/gsettings-tool.c:657
+#: gio/gsettings-tool.c:669
 msgid ""
 "Monitor KEY for changes.\n"
 "If no KEY is specified, monitor all keys in SCHEMA.\n"
@@ -3741,11 +3769,11 @@ msgstr ""
 "V kolikor KLJUČ ni določen, nadzoruj vse ključe SHEME.\n"
 "Pritisni ^C za zaustavitev nadzora.\n"
 
-#: gio/gsettings-tool.c:660
+#: gio/gsettings-tool.c:672
 msgid "SCHEMA[:PATH] [KEY]"
 msgstr "SHEMA[:POT] [KLJUČ]"
 
-#: gio/gsettings-tool.c:672
+#: gio/gsettings-tool.c:684
 msgid ""
 "Usage:\n"
 "  gsettings --version\n"
@@ -3793,7 +3821,7 @@ msgstr ""
 "Z ukazom »gsettings help UKAZ« se izpiše podrobna pomoč.\n"
 "\n"
 
-#: gio/gsettings-tool.c:696
+#: gio/gsettings-tool.c:708
 #, c-format
 msgid ""
 "Usage:\n"
@@ -3808,11 +3836,11 @@ msgstr ""
 "%s\n"
 "\n"
 
-#: gio/gsettings-tool.c:702
+#: gio/gsettings-tool.c:714
 msgid "  SCHEMADIR A directory to search for additional schemas\n"
 msgstr "  MAPASHEM  Mapa za iskanje dodatnih shem\n"
 
-#: gio/gsettings-tool.c:710
+#: gio/gsettings-tool.c:722
 msgid ""
 "  SCHEMA    The name of the schema\n"
 "  PATH      The path, for relocatable schemas\n"
@@ -3820,213 +3848,213 @@ msgstr ""
 "  SHEMA         Ime sheme\n"
 "  POT              Pot do dodeljive sheme\n"
 
-#: gio/gsettings-tool.c:715
+#: gio/gsettings-tool.c:727
 msgid "  KEY       The (optional) key within the schema\n"
 msgstr "  KLJUČ           Ključ (izbirno) znotraj sheme\n"
 
-#: gio/gsettings-tool.c:719
+#: gio/gsettings-tool.c:731
 msgid "  KEY       The key within the schema\n"
 msgstr "  KLJUČ           Ključ znotraj sheme\n"
 
-#: gio/gsettings-tool.c:723
+#: gio/gsettings-tool.c:735
 msgid "  VALUE     The value to set\n"
 msgstr "  VREDNOST   Vrednost za nastavitev\n"
 
-#: gio/gsettings-tool.c:778
+#: gio/gsettings-tool.c:790
 #, 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:790
+#: gio/gsettings-tool.c:802
 msgid "No schemas installed\n"
 msgstr "Ni nameščenih shem\n"
 
-#: gio/gsettings-tool.c:869
+#: gio/gsettings-tool.c:881
 msgid "Empty schema name given\n"
 msgstr "Ni podanega imena sheme.\n"
 
-#: gio/gsettings-tool.c:924
+#: gio/gsettings-tool.c:936
 #, c-format
 msgid "No such key “%s”\n"
 msgstr "Ključ »%s« ne obstaja.\n"
 
-#: gio/gsocket.c:413
+#: gio/gsocket.c:417
 msgid "Invalid socket, not initialized"
 msgstr "Neveljaven vtič, ni zagnano"
 
-#: gio/gsocket.c:420
+#: gio/gsocket.c:424
 #, c-format
 msgid "Invalid socket, initialization failed due to: %s"
 msgstr "Neveljaven vtič, zaganjanje je spodletelo: %s"
 
-#: gio/gsocket.c:428
+#: gio/gsocket.c:432
 msgid "Socket is already closed"
 msgstr "Vtič je že zaprt"
 
-#: gio/gsocket.c:443 gio/gsocket.c:3190 gio/gsocket.c:4420 gio/gsocket.c:4478
+#: gio/gsocket.c:447 gio/gsocket.c:3194 gio/gsocket.c:4427 gio/gsocket.c:4485
 msgid "Socket I/O timed out"
 msgstr "Vtič V/I naprave je časovno potekel"
 
-#: gio/gsocket.c:578
+#: gio/gsocket.c:582
 #, c-format
 msgid "creating GSocket from fd: %s"
 msgstr "ustvarjanje GSocet preko fd: %s"
 
-#: gio/gsocket.c:607 gio/gsocket.c:671 gio/gsocket.c:678
+#: gio/gsocket.c:611 gio/gsocket.c:675 gio/gsocket.c:682
 #, c-format
 msgid "Unable to create socket: %s"
 msgstr "Ni mogoče ustvariti vtiča: %s"
 
-#: gio/gsocket.c:671
+#: gio/gsocket.c:675
 msgid "Unknown family was specified"
 msgstr "Določena je neznana družina"
 
-#: gio/gsocket.c:678
+#: gio/gsocket.c:682
 msgid "Unknown protocol was specified"
 msgstr "Določen je neznan protokol"
 
-#: gio/gsocket.c:1169
+#: gio/gsocket.c:1173
 #, 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:1186
+#: gio/gsocket.c:1190
 #, 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:1993
+#: gio/gsocket.c:1997
 #, c-format
 msgid "could not get local address: %s"
 msgstr "ni mogoče pridobiti krajevnega naslova: %s"
 
-#: gio/gsocket.c:2039
+#: gio/gsocket.c:2043
 #, c-format
 msgid "could not get remote address: %s"
 msgstr "ni mogoče pridobiti oddaljenega naslova: %s"
 
-#: gio/gsocket.c:2105
+#: gio/gsocket.c:2109
 #, c-format
 msgid "could not listen: %s"
 msgstr "ni mogoče slediti: %s"
 
-#: gio/gsocket.c:2209
+#: gio/gsocket.c:2213
 #, c-format
 msgid "Error binding to address %s: %s"
 msgstr "Napaka vezave na naslov %s: %s"
 
-#: gio/gsocket.c:2385 gio/gsocket.c:2422 gio/gsocket.c:2532 gio/gsocket.c:2557
-#: gio/gsocket.c:2620 gio/gsocket.c:2678 gio/gsocket.c:2696
+#: gio/gsocket.c:2389 gio/gsocket.c:2426 gio/gsocket.c:2536 gio/gsocket.c:2561
+#: gio/gsocket.c:2624 gio/gsocket.c:2682 gio/gsocket.c:2700
 #, c-format
 msgid "Error joining multicast group: %s"
 msgstr "Napaka povezovanja v skupino za večsmerno oddajanje: %s"
 
-#: gio/gsocket.c:2386 gio/gsocket.c:2423 gio/gsocket.c:2533 gio/gsocket.c:2558
-#: gio/gsocket.c:2621 gio/gsocket.c:2679 gio/gsocket.c:2697
+#: gio/gsocket.c:2390 gio/gsocket.c:2427 gio/gsocket.c:2537 gio/gsocket.c:2562
+#: gio/gsocket.c:2625 gio/gsocket.c:2683 gio/gsocket.c:2701
 #, c-format
 msgid "Error leaving multicast group: %s"
 msgstr "Napaka zapuščanja skupine za večsmerno oddajanje: %s"
 
-#: gio/gsocket.c:2387
+#: gio/gsocket.c:2391
 msgid "No support for source-specific multicast"
 msgstr "Ni podpore za večsmerno oddajanje lastno viru"
 
-#: gio/gsocket.c:2534
+#: gio/gsocket.c:2538
 msgid "Unsupported socket family"
 msgstr "Nepodprta skupina vtiča"
 
-#: gio/gsocket.c:2559
+#: gio/gsocket.c:2563
 msgid "source-specific not an IPv4 address"
 msgstr "določeno po viru in ne po naslovu IPv4"
 
-#: gio/gsocket.c:2583
+#: gio/gsocket.c:2587
 #, c-format
 msgid "Interface name too long"
 msgstr "Ime vmesnika je predolgo"
 
-#: gio/gsocket.c:2596 gio/gsocket.c:2646
+#: gio/gsocket.c:2600 gio/gsocket.c:2650
 #, c-format
 msgid "Interface not found: %s"
 msgstr "Vmesnika ni mogoče najti: %s"
 
-#: gio/gsocket.c:2622
+#: gio/gsocket.c:2626
 msgid "No support for IPv4 source-specific multicast"
 msgstr "Ni podpore za večsmerno oddajanje v protokolu IPv4"
 
-#: gio/gsocket.c:2680
+#: gio/gsocket.c:2684
 msgid "No support for IPv6 source-specific multicast"
 msgstr "Ni podpore za večsmerno oddajanje v protokolu IPv6"
 
-#: gio/gsocket.c:2889
+#: gio/gsocket.c:2893
 #, c-format
 msgid "Error accepting connection: %s"
 msgstr "Napaka med sprejemanjem povezave: %s"
 
-#: gio/gsocket.c:3015
+#: gio/gsocket.c:3019
 msgid "Connection in progress"
 msgstr "Povezava v teku"
 
-#: gio/gsocket.c:3066
+#: gio/gsocket.c:3070
 msgid "Unable to get pending error: "
 msgstr "Ni mogoče pridobiti uvrščene napake:"
 
-#: gio/gsocket.c:3255
+#: gio/gsocket.c:3259
 #, c-format
 msgid "Error receiving data: %s"
 msgstr "Napaka med prejemanjem podatkov: %s"
 
-#: gio/gsocket.c:3452
+#: gio/gsocket.c:3456
 #, c-format
 msgid "Error sending data: %s"
 msgstr "Napaka med pošiljanjem podatkov: %s"
 
-#: gio/gsocket.c:3639
+#: gio/gsocket.c:3643
 #, c-format
 msgid "Unable to shutdown socket: %s"
 msgstr "Ni mogoče izklopiti vtiča: %s"
 
-#: gio/gsocket.c:3720
+#: gio/gsocket.c:3724
 #, c-format
 msgid "Error closing socket: %s"
 msgstr "Napaka med zapiranjem vtiča: %s"
 
-#: gio/gsocket.c:4413
+#: gio/gsocket.c:4420
 #, c-format
 msgid "Waiting for socket condition: %s"
 msgstr "Čakanje na stanje vtiča: %s"
 
-#: gio/gsocket.c:4804 gio/gsocket.c:4820 gio/gsocket.c:4833
+#: gio/gsocket.c:4810 gio/gsocket.c:4826 gio/gsocket.c:4839
 #, c-format
 msgid "Unable to send message: %s"
 msgstr "Ni mogoče poslati sporočila: %s"
 
-#: gio/gsocket.c:4805 gio/gsocket.c:4821 gio/gsocket.c:4834
+#: gio/gsocket.c:4811 gio/gsocket.c:4827 gio/gsocket.c:4840
 msgid "Message vectors too large"
 msgstr "Vektorji sporočila so preobsežni."
 
-#: gio/gsocket.c:4850 gio/gsocket.c:4852 gio/gsocket.c:4999 gio/gsocket.c:5084
-#: gio/gsocket.c:5262 gio/gsocket.c:5302 gio/gsocket.c:5304
+#: gio/gsocket.c:4856 gio/gsocket.c:4858 gio/gsocket.c:5005 gio/gsocket.c:5090
+#: gio/gsocket.c:5268 gio/gsocket.c:5308 gio/gsocket.c:5310
 #, c-format
 msgid "Error sending message: %s"
 msgstr "Napaka med pošiljanjem sporočila: %s"
 
-#: gio/gsocket.c:5026
+#: gio/gsocket.c:5032
 msgid "GSocketControlMessage not supported on Windows"
 msgstr "Predmet GSocketControlMessage na sistemih Windows ni podprt"
 
-#: gio/gsocket.c:5495 gio/gsocket.c:5571 gio/gsocket.c:5797
+#: gio/gsocket.c:5505 gio/gsocket.c:5581 gio/gsocket.c:5807
 #, c-format
 msgid "Error receiving message: %s"
 msgstr "Napaka med prejemanjem sporočila: %s"
 
-#: gio/gsocket.c:6070 gio/gsocket.c:6081 gio/gsocket.c:6127
+#: gio/gsocket.c:6090 gio/gsocket.c:6101 gio/gsocket.c:6164
 #, c-format
 msgid "Unable to read socket credentials: %s"
 msgstr "Ni mogoče prebrati poveril vtiča: %s."
 
-#: gio/gsocket.c:6136
+#: gio/gsocket.c:6173
 msgid "g_socket_get_credentials not implemented for this OS"
 msgstr "Operacijski sistem ne podpira možnosti g_socket_get_credentials"
 
@@ -4038,17 +4066,17 @@ msgstr "Ni se mogoče povezati s posredniškim strežnikom %s:"
 #: gio/gsocketclient.c:205
 #, c-format
 msgid "Could not connect to %s: "
-msgstr "Ni se mogoče povezati s strežnikom %s:"
+msgstr "Ni se mogoče povezati s strežnikom %s: "
 
 #: gio/gsocketclient.c:207
 msgid "Could not connect: "
-msgstr "Ni se mogoče povezati:"
+msgstr "Ni se mogoče povezati: "
 
-#: gio/gsocketclient.c:1162 gio/gsocketclient.c:1749
+#: gio/gsocketclient.c:1202 gio/gsocketclient.c:1793
 msgid "Proxying over a non-TCP connection is not supported."
 msgstr "Posredovanje preko ne-TCP povezave ni podprto."
 
-#: gio/gsocketclient.c:1194 gio/gsocketclient.c:1778
+#: gio/gsocketclient.c:1234 gio/gsocketclient.c:1822
 #, c-format
 msgid "Proxy protocol “%s” is not supported."
 msgstr "Protokol posredniškega strežnika »%s« ni podprt."
@@ -4148,7 +4176,7 @@ msgstr "SOCKSv5 posredniški strežnik ne podpira ponujene vrste naslova"
 msgid "Unknown SOCKSv5 proxy error."
 msgstr "Neznana napaka posredniškega strežnika SOCKSv5."
 
-#: gio/gtestdbus.c:612 glib/gspawn-win32.c:311
+#: gio/gtestdbus.c:612 glib/gspawn-win32.c:314
 #, 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)"
@@ -4172,44 +4200,66 @@ msgstr "Ni mogoče najti veljavnega naslova"
 msgid "Error reverse-resolving “%s”: %s"
 msgstr "Napaka med obratnim razreševanjem »%s«: %s"
 
-#: gio/gthreadedresolver.c:676 gio/gthreadedresolver.c:755
-#: gio/gthreadedresolver.c:853 gio/gthreadedresolver.c:903
+#. Translators: the placeholder is a DNS record type, such as ‘MX’ or ‘SRV’
+#: gio/gthreadedresolver.c:550 gio/gthreadedresolver.c:572
+#: gio/gthreadedresolver.c:610 gio/gthreadedresolver.c:657
+#: gio/gthreadedresolver.c:686 gio/gthreadedresolver.c:698
+#, c-format
+msgid "Error parsing DNS %s record: malformed DNS packet"
+msgstr "Napaka razčlenjevanja zapisa DNS %s: nepravilno oblikovan paket DNS"
+
+#: gio/gthreadedresolver.c:756 gio/gthreadedresolver.c:893
+#: gio/gthreadedresolver.c:991 gio/gthreadedresolver.c:1041
 #, c-format
 msgid "No DNS record of the requested type for “%s”"
 msgstr "Ni zapisa DNS za zahtevano vrsto »%s«"
 
-#: gio/gthreadedresolver.c:681 gio/gthreadedresolver.c:858
+#: gio/gthreadedresolver.c:761 gio/gthreadedresolver.c:996
 #, c-format
 msgid "Temporarily unable to resolve “%s”"
 msgstr "Trenutno ni mogoče razrešiti »%s«"
 
-#: gio/gthreadedresolver.c:686 gio/gthreadedresolver.c:863
-#: gio/gthreadedresolver.c:973
+#: gio/gthreadedresolver.c:766 gio/gthreadedresolver.c:1001
+#: gio/gthreadedresolver.c:1111
 #, c-format
 msgid "Error resolving “%s”"
 msgstr "Napaka med razreševanjem »%s«"
 
-#: gio/gtlscertificate.c:431
+#: gio/gthreadedresolver.c:780 gio/gthreadedresolver.c:804
+#: gio/gthreadedresolver.c:829 gio/gthreadedresolver.c:844
+msgid "Malformed DNS packet"
+msgstr "Nepravilno oblikovan paket DNS"
+
+#: gio/gthreadedresolver.c:886
+#, c-format
+msgid "Failed to parse DNS response for “%s”: "
+msgstr "Razčlenjevanje odziva DNS za »%s« je spodletelo: "
+
+#: gio/gtlscertificate.c:478
 msgid "No PEM-encoded private key found"
 msgstr "Potrdila kodiranega s protokolom PEM ni mogoče najti."
 
-#: gio/gtlscertificate.c:441
+#: gio/gtlscertificate.c:488
 msgid "Cannot decrypt PEM-encoded private key"
 msgstr "Ni mogoče odšifrirati s protokolom PEM šifriranega osebnega ključa"
 
-#: gio/gtlscertificate.c:452
+#: gio/gtlscertificate.c:499
 msgid "Could not parse PEM-encoded private key"
 msgstr "Ni mogoče razčleniti s protokolom PEM kodiranega zasebnega ključa."
 
-#: gio/gtlscertificate.c:479
+#: gio/gtlscertificate.c:526
 msgid "No PEM-encoded certificate found"
 msgstr "Potrdila kodiranega s protokolom PEM ni mogoče najti."
 
-#: gio/gtlscertificate.c:488
+#: gio/gtlscertificate.c:535
 msgid "Could not parse PEM-encoded certificate"
 msgstr "Ni mogoče razčleniti s protokolom PEM kodiranega potrdila."
 
-#: gio/gtlscertificate.c:844
+#: gio/gtlscertificate.c:796
+msgid "The current TLS backend does not support PKCS #12"
+msgstr "Ozadnji program TLS ne podpira potrdil PKCS #12."
+
+#: gio/gtlscertificate.c:1013
 msgid "This GTlsBackend does not support creating PKCS #11 certificates"
 msgstr "Ozadnji program GTlsBackend ne podpira ustvarjanja potrdil PKCS #11."
 
@@ -4234,7 +4284,11 @@ msgstr ""
 msgid "The password entered is incorrect."
 msgstr "Vneseno geslo je nepravilno."
 
-#: gio/gunixconnection.c:166 gio/gunixconnection.c:579
+#: gio/gunixconnection.c:125
+msgid "Sending FD is not supported"
+msgstr "Pošiljanje FD ni podprto"
+
+#: gio/gunixconnection.c:178 gio/gunixconnection.c:596
 #, c-format
 msgid "Expecting 1 control message, got %d"
 msgid_plural "Expecting 1 control message, got %d"
@@ -4243,11 +4297,11 @@ 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:591
+#: gio/gunixconnection.c:194 gio/gunixconnection.c:608
 msgid "Unexpected type of ancillary data"
 msgstr "Nepričakovana vrsta dodatnih podatkov"
 
-#: gio/gunixconnection.c:200
+#: gio/gunixconnection.c:212
 #, c-format
 msgid "Expecting one fd, but got %d\n"
 msgid_plural "Expecting one fd, but got %d\n"
@@ -4256,37 +4310,41 @@ msgstr[1] "Pričakovan en fd, prejet pa je %d\n"
 msgstr[2] "Pričakovan en fd, prejeta pa sta %d\n"
 msgstr[3] "Pričakovan en fd, prejetih pa so %d\n"
 
-#: gio/gunixconnection.c:219
+#: gio/gunixconnection.c:231
 msgid "Received invalid fd"
 msgstr "Prejet neveljaven fd"
 
-#: gio/gunixconnection.c:363
+#: gio/gunixconnection.c:238
+msgid "Receiving FD is not supported"
+msgstr "Prejemanje FD ni podprto"
+
+#: gio/gunixconnection.c:380
 msgid "Error sending credentials: "
 msgstr "Napaka med pošiljanjem poveril:"
 
-#: gio/gunixconnection.c:520
+#: gio/gunixconnection.c:537
 #, 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:536
+#: gio/gunixconnection.c:553
 #, c-format
 msgid "Error enabling SO_PASSCRED: %s"
 msgstr "Napaka omogočanja predmeta SO_PASSCRED: %s"
 
-#: gio/gunixconnection.c:565
+#: gio/gunixconnection.c:582
 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:605
+#: gio/gunixconnection.c:622
 #, 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:630
+#: gio/gunixconnection.c:647
 #, c-format
 msgid "Error while disabling SO_PASSCRED: %s"
 msgstr "Napaka med onemogočanjem SO_PASSCRED: %s"
@@ -4302,7 +4360,7 @@ msgstr "Napaka med branjem iz opisovalnika datoteke: %s"
 msgid "Error closing file descriptor: %s"
 msgstr "Napaka med zapiranjem opisovalnika datoteke: %s"
 
-#: gio/gunixmounts.c:2785 gio/gunixmounts.c:2838
+#: gio/gunixmounts.c:2809 gio/gunixmounts.c:2862
 msgid "Filesystem root"
 msgstr "Koren datotečnega sistema"
 
@@ -4313,7 +4371,7 @@ msgstr "Koren datotečnega sistema"
 msgid "Error writing to file descriptor: %s"
 msgstr "Napaka med pisanjem v opisovalnik datoteke: %s"
 
-#: gio/gunixsocketaddress.c:244
+#: gio/gunixsocketaddress.c:251
 msgid "Abstract UNIX domain socket addresses not supported on this system"
 msgstr "Abstraktni naslovi vtiča domene UNIX na tem sistemu niso podprti"
 
@@ -4463,8 +4521,8 @@ msgstr "Razširjanje ukazne vrstice »%s« z naslovom URI »%s« je spodletelo."
 msgid "Unrepresentable character in conversion input"
 msgstr "Nepredstavljiv znak na dovodu pretvorbe"
 
-#: glib/gconvert.c:495 glib/gutf8.c:871 glib/gutf8.c:1083 glib/gutf8.c:1220
-#: glib/gutf8.c:1324
+#: glib/gconvert.c:495 glib/gutf8.c:886 glib/gutf8.c:1099 glib/gutf8.c:1236
+#: glib/gutf8.c:1340
 msgid "Partial character sequence at end of input"
 msgstr "Nedokončano zaporedje znakov na koncu vhoda"
 
@@ -5035,15 +5093,15 @@ msgstr "Kanal je prekinjen v delnem znaku"
 msgid "Can’t 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:791
+#: glib/gkeyfile.c:794
 msgid "Valid key file could not be found in search dirs"
 msgstr "Veljavnega ključa v iskanih mapah ni mogoče najti"
 
-#: glib/gkeyfile.c:828
+#: glib/gkeyfile.c:831
 msgid "Not a regular file"
 msgstr "Ni običajna datoteka"
 
-#: glib/gkeyfile.c:1283
+#: glib/gkeyfile.c:1289
 #, c-format
 msgid ""
 "Key file contains line “%s” which is not a key-value pair, group, or comment"
@@ -5051,52 +5109,52 @@ msgstr ""
 "Datoteka ključa vsebuje vrstico »%s«, ki ni par ključ-vrednost, skupina ali "
 "opomba"
 
-#: glib/gkeyfile.c:1340
+#: glib/gkeyfile.c:1346
 #, c-format
 msgid "Invalid group name: %s"
 msgstr "Neveljavno ime skupine: %s"
 
-#: glib/gkeyfile.c:1362
+#: glib/gkeyfile.c:1370
 msgid "Key file does not start with a group"
 msgstr "Datoteka s ključem se ne začne s skupino"
 
-#: glib/gkeyfile.c:1388
+#: glib/gkeyfile.c:1394
 #, c-format
-msgid "Invalid key name: %s"
-msgstr "Neveljavno ime ključa: %s"
+msgid "Invalid key name: %.*s"
+msgstr "Neveljavno ime ključa: %.*s"
 
-#: glib/gkeyfile.c:1415
+#: glib/gkeyfile.c:1422
 #, c-format
 msgid "Key file contains unsupported encoding “%s”"
 msgstr "Datoteka ključa vsebuje nepodprto kodiranje »%s«"
 
-#: glib/gkeyfile.c:1664 glib/gkeyfile.c:1837 glib/gkeyfile.c:3287
-#: glib/gkeyfile.c:3351 glib/gkeyfile.c:3481 glib/gkeyfile.c:3613
-#: glib/gkeyfile.c:3759 glib/gkeyfile.c:3994 glib/gkeyfile.c:4061
+#: glib/gkeyfile.c:1677 glib/gkeyfile.c:1850 glib/gkeyfile.c:3297
+#: glib/gkeyfile.c:3361 glib/gkeyfile.c:3491 glib/gkeyfile.c:3623
+#: glib/gkeyfile.c:3769 glib/gkeyfile.c:4004 glib/gkeyfile.c:4071
 #, c-format
 msgid "Key file does not have group “%s”"
 msgstr "Datoteka s ključem ni del skupine »%s«"
 
-#: glib/gkeyfile.c:1792
+#: glib/gkeyfile.c:1805
 #, 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«"
 
-#: glib/gkeyfile.c:1954 glib/gkeyfile.c:2070
+#: glib/gkeyfile.c:1967 glib/gkeyfile.c:2083
 #, c-format
 msgid "Key file contains key “%s” with value “%s” which is not UTF-8"
 msgstr ""
 "Datoteka ključa vsebuje ključ »%s« z vrednostjo »%s«, ki ni zapisan v naboru "
 "UTF-8"
 
-#: glib/gkeyfile.c:1974 glib/gkeyfile.c:2090 glib/gkeyfile.c:2529
+#: glib/gkeyfile.c:1987 glib/gkeyfile.c:2103 glib/gkeyfile.c:2542
 #, c-format
 msgid ""
 "Key file contains key “%s” which has a value that cannot be interpreted."
 msgstr ""
 "Datoteka ključa vsebuje ključ »%s« z vrednostjo, ki je ni mogoče tolmačiti."
 
-#: glib/gkeyfile.c:2747 glib/gkeyfile.c:3116
+#: glib/gkeyfile.c:2757 glib/gkeyfile.c:3126
 #, c-format
 msgid ""
 "Key file contains key “%s” in group “%s” which has a value that cannot be "
@@ -5105,37 +5163,37 @@ msgstr ""
 "Datoteka ključa vsebuje ključ »%s« v skupini »%s« z vrednostjo, ki je ni "
 "mogoče tolmačiti."
 
-#: glib/gkeyfile.c:2825 glib/gkeyfile.c:2902
+#: glib/gkeyfile.c:2835 glib/gkeyfile.c:2912
 #, c-format
 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."
 
-#: glib/gkeyfile.c:4304
+#: glib/gkeyfile.c:4324
 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:4326
+#: glib/gkeyfile.c:4346
 #, c-format
 msgid "Key file contains invalid escape sequence “%s”"
 msgstr "Datoteka ključa vsebuje neveljavno ubežno zaporedje »%s«"
 
-#: glib/gkeyfile.c:4470
+#: glib/gkeyfile.c:4491
 #, c-format
 msgid "Value “%s” cannot be interpreted as a number."
 msgstr "Vrednosti »%s« ni mogoče obravnavati kot število."
 
-#: glib/gkeyfile.c:4484
+#: glib/gkeyfile.c:4505
 #, c-format
 msgid "Integer value “%s” out of range"
 msgstr "Celoštevilska vrednost »%s« je izven obsega"
 
-#: glib/gkeyfile.c:4517
+#: glib/gkeyfile.c:4538
 #, 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."
 
-#: glib/gkeyfile.c:4556
+#: glib/gkeyfile.c:4577
 #, c-format
 msgid "Value “%s” cannot be interpreted as a boolean."
 msgstr "Vrednosti »%s« ni mogoče obravnavati kot logično Boolovo vrednost."
@@ -5429,7 +5487,7 @@ msgstr "Napaka med razčlenjevanjem %s"
 msgid "Missing argument for %s"
 msgstr "Manjka argument za %s"
 
-#: glib/goption.c:2185
+#: glib/goption.c:2184
 #, c-format
 msgid "Unknown option %s"
 msgstr "Neznana možnost %s"
@@ -5829,121 +5887,131 @@ msgstr "Besedilo je bilo prazno (ali pa vsebuje le presledne znake)"
 msgid "Failed to read data from child process (%s)"
 msgstr "Ni mogoče prebrati podatkov podrejenega procesa (%s)"
 
-#: glib/gspawn.c:461
+#: glib/gspawn.c:462
 #, c-format
 msgid "Unexpected error in reading data from a child process (%s)"
 msgstr "Nepričakovana napaka branja podatkov podrejenega opravila (%s)"
 
-#: glib/gspawn.c:546
+#: glib/gspawn.c:547
 #, c-format
 msgid "Unexpected error in waitpid() (%s)"
 msgstr "Nepričakovana napaka v waitpid() (%s)"
 
-#: glib/gspawn.c:1166 glib/gspawn-win32.c:1407
+#: glib/gspawn.c:1175 glib/gspawn-win32.c:1438
 #, c-format
 msgid "Child process exited with code %ld"
 msgstr "Podrejeni proces se je zaključil s kodo %ld"
 
-#: glib/gspawn.c:1174
+#: glib/gspawn.c:1183
 #, c-format
 msgid "Child process killed by signal %ld"
 msgstr "Podrejeni proces je uničen s signalom %ld"
 
-#: glib/gspawn.c:1181
+#: glib/gspawn.c:1190
 #, c-format
 msgid "Child process stopped by signal %ld"
 msgstr "Podrejeni proces se je ustavil s signalom %ld"
 
-#: glib/gspawn.c:1188
+#: glib/gspawn.c:1197
 #, c-format
 msgid "Child process exited abnormally"
 msgstr "Podrejeni proces se je zaključil nenaravno"
 
-#: glib/gspawn.c:1864 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
+#: glib/gspawn.c:1890 glib/gspawn-win32.c:353 glib/gspawn-win32.c:361
 #, c-format
 msgid "Failed to read from child pipe (%s)"
 msgstr "Ni mogoče prebrati iz cevi podrejenega procesa (%s)"
 
-#: glib/gspawn.c:2166
+#: glib/gspawn.c:2253
 #, c-format
 msgid "Failed to spawn child process “%s” (%s)"
 msgstr "Ni mogoče ustvariti podrejenega opravila »%s« (%s)"
 
-#: glib/gspawn.c:2283
+#: glib/gspawn.c:2370
 #, c-format
 msgid "Failed to fork (%s)"
 msgstr "Ni mogoča razvejitev (%s)"
 
-#: glib/gspawn.c:2443 glib/gspawn-win32.c:381
+#: glib/gspawn.c:2530 glib/gspawn-win32.c:384
 #, c-format
 msgid "Failed to change to directory “%s” (%s)"
 msgstr "Ni mogoče spremeniti v mapo »%s« (%s)"
 
-#: glib/gspawn.c:2453
+#: glib/gspawn.c:2540
 #, c-format
 msgid "Failed to execute child process “%s” (%s)"
 msgstr "Ni mogoče izvesti podrejenega opravila »%s« (%s)"
 
-#: glib/gspawn.c:2463
+#: glib/gspawn.c:2550
 #, c-format
-msgid "Failed to redirect output or input of child process (%s)"
-msgstr "Ni mogoče preusmeriti vhoda ali izhoda podrejenega procesa (%s)"
+msgid "Failed to open file to remap file descriptor (%s)"
+msgstr "Ni mogoče odpreti datoteke za preslikavo opisnika datoteke (%s)"
 
-#: glib/gspawn.c:2472
+#: glib/gspawn.c:2558
+#, c-format
+msgid "Failed to duplicate file descriptor for child process (%s)"
+msgstr "Ni mogoče podvojiti opisnika datoteke podrejenega procesa (%s)"
+
+#: glib/gspawn.c:2567
 #, c-format
 msgid "Failed to fork child process (%s)"
 msgstr "Ni mogoče razvejiti podrejenega procesa (%s)"
 
-#: glib/gspawn.c:2480
+#: glib/gspawn.c:2575
 #, c-format
 msgid "Failed to close file descriptor for child process (%s)"
 msgstr "Ni mogoče zapreti opisnika datoteke podrejenega procesa (%s)"
 
-#: glib/gspawn.c:2488
+#: glib/gspawn.c:2583
 #, c-format
 msgid "Unknown error executing child process “%s”"
 msgstr "Neznana napaka med izvajanjem podrejenega opravila »%s«"
 
-#: glib/gspawn.c:2512
+#: glib/gspawn.c:2607
 #, 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:294
+#: glib/gspawn-win32.c:297
 msgid "Failed to read data from child process"
 msgstr "Ni mogoče prebrati podatkov iz opravila podrejenega predmeta"
 
-#: glib/gspawn-win32.c:387 glib/gspawn-win32.c:392 glib/gspawn-win32.c:511
+#: glib/gspawn-win32.c:390 glib/gspawn-win32.c:395 glib/gspawn-win32.c:521
 #, c-format
 msgid "Failed to execute child process (%s)"
 msgstr "Ni mogoče izvesti podrejenega opravila (%s)"
 
-#: glib/gspawn-win32.c:461
+#: glib/gspawn-win32.c:400
+#, c-format
+msgid "Failed to dup() in child process (%s)"
+msgstr "Ni mogoče izvesti ukaza dup() podrejenega procesa (%s)"
+
+#: glib/gspawn-win32.c:471
 #, c-format
 msgid "Invalid program name: %s"
 msgstr "Neveljavno ime programa: %s"
 
-#: glib/gspawn-win32.c:471 glib/gspawn-win32.c:779
+#: glib/gspawn-win32.c:481 glib/gspawn-win32.c:807
 #, c-format
 msgid "Invalid string in argument vector at %d: %s"
 msgstr "Neveljaven niz v vektorju argumenta pri %d: %s"
 
-#: glib/gspawn-win32.c:482 glib/gspawn-win32.c:794
+#: glib/gspawn-win32.c:492 glib/gspawn-win32.c:823
 #, c-format
 msgid "Invalid string in environment: %s"
 msgstr "Neveljaven niz okolja: %s"
 
-#: glib/gspawn-win32.c:775
+#: glib/gspawn-win32.c:803
 #, c-format
 msgid "Invalid working directory: %s"
 msgstr "Neveljavna delovna mapa: %s"
 
-#: glib/gspawn-win32.c:837
+#: glib/gspawn-win32.c:868
 #, c-format
 msgid "Failed to execute helper program (%s)"
 msgstr "Napaka med izvajanjem pomožnega programa  (%s)"
 
-#: glib/gspawn-win32.c:1064
+#: glib/gspawn-win32.c:1096
 msgid ""
 "Unexpected error in g_io_channel_win32_poll() reading data from a child "
 "process"
@@ -5951,21 +6019,21 @@ msgstr ""
 "Nepričakovana napaka v g_io_channel_win32_poll() med branjem podatkov "
 "procesa podrejenega predmeta"
 
-#: glib/gstrfuncs.c:3345 glib/gstrfuncs.c:3447
+#: glib/gstrfuncs.c:3351 glib/gstrfuncs.c:3453
 msgid "Empty string is not a number"
 msgstr "Prazen niz ni številska vrednost"
 
-#: glib/gstrfuncs.c:3369
+#: glib/gstrfuncs.c:3375
 #, c-format
 msgid "“%s” is not a signed number"
 msgstr "»%s« ni podpisano število"
 
-#: glib/gstrfuncs.c:3379 glib/gstrfuncs.c:3483
+#: glib/gstrfuncs.c:3385 glib/gstrfuncs.c:3489
 #, c-format
 msgid "Number “%s” is out of bounds [%s, %s]"
 msgstr "Število »%s« je izven območja [%s, %s]"
 
-#: glib/gstrfuncs.c:3473
+#: glib/gstrfuncs.c:3479
 #, c-format
 msgid "“%s” is not an unsigned number"
 msgstr "»%s« ni nepodpisano število"
@@ -6026,168 +6094,168 @@ msgstr "Naslov URI ni absoluten naslov in ni podanega osnovnega naslova URI"
 msgid "Missing ‘=’ and parameter value"
 msgstr "Manjka znak »=« in vrednost parametra"
 
-#: glib/gutf8.c:817
+#: glib/gutf8.c:832
 msgid "Failed to allocate memory"
 msgstr "Ni mogoče dodeliti pomnilnika"
 
-#: glib/gutf8.c:950
+#: glib/gutf8.c:965
 msgid "Character out of range for UTF-8"
 msgstr "Znak izven območja za UTF-8"
 
-#: glib/gutf8.c:1051 glib/gutf8.c:1060 glib/gutf8.c:1190 glib/gutf8.c:1199
-#: glib/gutf8.c:1338 glib/gutf8.c:1435
+#: glib/gutf8.c:1067 glib/gutf8.c:1076 glib/gutf8.c:1206 glib/gutf8.c:1215
+#: glib/gutf8.c:1354 glib/gutf8.c:1451
 msgid "Invalid sequence in conversion input"
 msgstr "Neveljavno zaporedje na vhodu pretvorbe"
 
-#: glib/gutf8.c:1349 glib/gutf8.c:1446
+#: glib/gutf8.c:1365 glib/gutf8.c:1462
 msgid "Character out of range for UTF-16"
 msgstr "Znak izven območja za UTF-16"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2770
+#: glib/gutils.c:2849
 #, c-format
 msgid "%.1f kB"
 msgstr "%.1f kB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2772
+#: glib/gutils.c:2851
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2774
+#: glib/gutils.c:2853
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2776
+#: glib/gutils.c:2855
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2778
+#: glib/gutils.c:2857
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2780
+#: glib/gutils.c:2859
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2784
+#: glib/gutils.c:2863
 #, c-format
 msgid "%.1f KiB"
 msgstr "%.1f KiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2786
+#: glib/gutils.c:2865
 #, c-format
 msgid "%.1f MiB"
 msgstr "%.1f MiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2788
+#: glib/gutils.c:2867
 #, c-format
 msgid "%.1f GiB"
 msgstr "%.1f GiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2790
+#: glib/gutils.c:2869
 #, c-format
 msgid "%.1f TiB"
 msgstr "%.1f TiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2792
+#: glib/gutils.c:2871
 #, c-format
 msgid "%.1f PiB"
 msgstr "%.1f PiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2794
+#: glib/gutils.c:2873
 #, c-format
 msgid "%.1f EiB"
 msgstr "%.1f EiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2798
+#: glib/gutils.c:2877
 #, c-format
 msgid "%.1f kb"
 msgstr "%.1f kb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2800
+#: glib/gutils.c:2879
 #, c-format
 msgid "%.1f Mb"
 msgstr "%.1f Mb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2802
+#: glib/gutils.c:2881
 #, c-format
 msgid "%.1f Gb"
 msgstr "%.1f Gb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2804
+#: glib/gutils.c:2883
 #, c-format
 msgid "%.1f Tb"
 msgstr "%.1f Tb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2806
+#: glib/gutils.c:2885
 #, c-format
 msgid "%.1f Pb"
 msgstr "%.1f Pb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2808
+#: glib/gutils.c:2887
 #, c-format
 msgid "%.1f Eb"
 msgstr "%.1f Eb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2812
+#: glib/gutils.c:2891
 #, c-format
 msgid "%.1f Kib"
 msgstr "%.1f Kib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2814
+#: glib/gutils.c:2893
 #, c-format
 msgid "%.1f Mib"
 msgstr "%.1f Mib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2816
+#: glib/gutils.c:2895
 #, c-format
 msgid "%.1f Gib"
 msgstr "%.1f Gib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2818
+#: glib/gutils.c:2897
 #, c-format
 msgid "%.1f Tib"
 msgstr "%.1f Tib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2820
+#: glib/gutils.c:2899
 #, c-format
 msgid "%.1f Pib"
 msgstr "%.1f Pib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2822
+#: glib/gutils.c:2901
 #, c-format
 msgid "%.1f Eib"
 msgstr "%.1f Eib"
 
-#: glib/gutils.c:2856 glib/gutils.c:2973
+#: glib/gutils.c:2935 glib/gutils.c:3052
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
@@ -6196,7 +6264,7 @@ msgstr[1] "%u bajt"
 msgstr[2] "%u bajta"
 msgstr[3] "%u bajti"
 
-#: glib/gutils.c:2860
+#: glib/gutils.c:2939
 #, c-format
 msgid "%u bit"
 msgid_plural "%u bits"
@@ -6206,7 +6274,7 @@ msgstr[2] "%u bita"
 msgstr[3] "%u biti"
 
 #. Translators: the %s in "%s bytes" will always be replaced by a number.
-#: glib/gutils.c:2927
+#: glib/gutils.c:3006
 #, c-format
 msgid "%s byte"
 msgid_plural "%s bytes"
@@ -6216,7 +6284,7 @@ msgstr[2] "%s bajta"
 msgstr[3] "%s bajti"
 
 #. Translators: the %s in "%s bits" will always be replaced by a number.
-#: glib/gutils.c:2932
+#: glib/gutils.c:3011
 #, c-format
 msgid "%s bit"
 msgid_plural "%s bits"
@@ -6230,32 +6298,32 @@ msgstr[3] "%s biti"
 #. * compatibility.  Users will not see this string unless a program is using this deprecated function.
 #. * Please translate as literally as possible.
 #.
-#: glib/gutils.c:2986
+#: glib/gutils.c:3065
 #, c-format
 msgid "%.1f KB"
 msgstr "%.1f KB"
 
-#: glib/gutils.c:2991
+#: glib/gutils.c:3070
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
-#: glib/gutils.c:2996
+#: glib/gutils.c:3075
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
-#: glib/gutils.c:3001
+#: glib/gutils.c:3080
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
-#: glib/gutils.c:3006
+#: glib/gutils.c:3085
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
-#: glib/gutils.c:3011
+#: glib/gutils.c:3090
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
@@ -6379,8 +6447,5 @@ msgstr "%.1f EB"
 #~ msgid "Association creation not supported on win32"
 #~ msgstr "Ustvarjanje asociativnih povezav ni podprto na win32 sistemih"
 
-#~ msgid "URIs not supported"
-#~ msgstr "naslovi URI niso podprti"
-
 #~ msgid "Key file does not have key '%s'"
 #~ msgstr "Datoteka s ključem nima ključa '%s'"
index 5b1d96d..7160e38 100644 (file)
--- a/po/sr.po
+++ b/po/sr.po
@@ -4,18 +4,18 @@
 # Translators:
 # Данило Шеган <danilo@gnome.org>, 2004–2005.
 # Слободан Д. Средојевић <slobo@akrep.be>, 2006.
-# Милош Поповић <gpopac@gmail.com>, 2010–2015.
-# Марко М. Костић <marko.m.kostic@gmail.com>, 2016.
 # Бранко Кокановић <branko.kokanovic@gmail.com>, 2010.
+# Милош Поповић <gpopac@gmail.com>, 2010–2015.
 # Мирослав Николић <miroslavnikolic@rocketmail.com>, 2011–2022.
+# Марко М. Костић <marko.m.kostic@gmail.com>, 2016.
 msgid ""
 msgstr ""
 "Project-Id-Version: 2.8\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/glib/issues\n"
-"POT-Creation-Date: 2022-02-22 17:38+0000\n"
-"PO-Revision-Date: 2022-03-03 05:32+0200\n"
+"POT-Creation-Date: 2022-03-10 19:46+0000\n"
+"PO-Revision-Date: 2022-03-17 07:56+0200\n"
 "Last-Translator: Мирослав Николић <miroslavnikolic@rocketmail.com>\n"
-"Language-Team: Serbian <(nothing)>\n"
+"Language-Team: Serbian <gnome-sr@googlegroups.org>\n"
 "Language: sr\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -24,6 +24,18 @@ msgstr ""
 "%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
 "X-Project-Style: gnome\n"
 
+#: gio/gappinfo.c:333
+#| msgid "Setting attribute %s not supported"
+msgid "Setting default applications not supported yet"
+msgstr "Постављање основних програма још није подржано"
+
+#: gio/gappinfo.c:366
+#| msgid "Setting attribute %s not supported"
+msgid "Setting application as last used for type not supported yet"
+msgstr ""
+"Постављање програма као што је последњи пут коришћен за врсту није још "
+"подржано"
+
 #: gio/gapplication.c:500
 msgid "GApplication options"
 msgstr "Опције Гпрограма"
@@ -46,7 +58,7 @@ msgid "Replace the running instance"
 msgstr "Замени покренути примерак"
 
 #: gio/gapplication-tool.c:45 gio/gapplication-tool.c:46 gio/gio-tool.c:227
-#: gio/gresource-tool.c:494 gio/gsettings-tool.c:572
+#: gio/gresource-tool.c:494 gio/gsettings-tool.c:584
 msgid "Print help"
 msgstr "Штампа помоћ"
 
@@ -58,7 +70,7 @@ msgstr "[НАРЕДБА]"
 msgid "Print version"
 msgstr "Исписује издање"
 
-#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:578
+#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:590
 msgid "Print version information and exit"
 msgstr "Исписује податке о издању и излази"
 
@@ -121,8 +133,8 @@ msgstr "Наредба за коју ће исписати опширнију п
 msgid "Application identifier in D-Bus format (eg: org.example.viewer)"
 msgstr "Одредник програма у запису Д-сабирнице (нпр: „org.example.viewer“)"
 
-#: gio/gapplication-tool.c:74 gio/glib-compile-resources.c:738
-#: gio/glib-compile-resources.c:744 gio/glib-compile-resources.c:772
+#: gio/gapplication-tool.c:74 gio/glib-compile-resources.c:820
+#: gio/glib-compile-resources.c:826 gio/glib-compile-resources.c:855
 #: gio/gresource-tool.c:501 gio/gresource-tool.c:567
 msgid "FILE"
 msgstr "ДАТОТЕКА"
@@ -149,7 +161,7 @@ msgstr "ПАРАМЕТАР"
 msgid "Optional parameter to the action invocation, in GVariant format"
 msgstr "Изборни параметар за призивање радње, у запису Гваријанта"
 
-#: gio/gapplication-tool.c:98 gio/gresource-tool.c:532 gio/gsettings-tool.c:664
+#: gio/gapplication-tool.c:98 gio/gresource-tool.c:532 gio/gsettings-tool.c:676
 #, c-format
 msgid ""
 "Unknown command %s\n"
@@ -163,7 +175,7 @@ msgid "Usage:\n"
 msgstr "Употреба:\n"
 
 #: gio/gapplication-tool.c:116 gio/gresource-tool.c:557
-#: gio/gsettings-tool.c:699
+#: gio/gsettings-tool.c:711
 msgid "Arguments:\n"
 msgstr "Аргументи:\n"
 
@@ -286,7 +298,7 @@ msgstr "Ток је већ затворен"
 msgid "Truncate not supported on base stream"
 msgstr "Није подржано сасецање основног тока"
 
-#: gio/gcancellable.c:319 gio/gdbusconnection.c:1873 gio/gdbusprivate.c:1416
+#: gio/gcancellable.c:319 gio/gdbusconnection.c:1873 gio/gdbusprivate.c:1418
 #: gio/gsimpleasyncresult.c:871 gio/gsimpleasyncresult.c:897
 #, c-format
 msgid "Operation was cancelled"
@@ -307,7 +319,7 @@ msgstr "Нема довољно места у одредишту"
 #: gio/gcharsetconverter.c:342 gio/gdatainputstream.c:848
 #: gio/gdatainputstream.c:1266 glib/gconvert.c:449 glib/gconvert.c:879
 #: glib/giochannel.c:1573 glib/giochannel.c:1615 glib/giochannel.c:2470
-#: glib/gutf8.c:875 glib/gutf8.c:1328
+#: glib/gutf8.c:890 glib/gutf8.c:1344
 msgid "Invalid byte sequence in conversion input"
 msgstr "Неисправан низ бајтова у улазу који претварам"
 
@@ -317,7 +329,7 @@ msgstr "Неисправан низ бајтова у улазу који пре
 msgid "Error during conversion: %s"
 msgstr "Грешка приликом претварања: %s"
 
-#: gio/gcharsetconverter.c:445 gio/gsocket.c:1143
+#: gio/gcharsetconverter.c:445 gio/gsocket.c:1147
 msgid "Cancellable initialization not supported"
 msgstr "Није подржано покретање уз могућност отказивања"
 
@@ -331,7 +343,7 @@ msgstr "Претварање из скупа знакова „%s“ у „%s“
 msgid "Could not open converter from “%s” to “%s”"
 msgstr "Не могу да покренем претварање из „%s“ у „%s“"
 
-#: gio/gcontenttype.c:454
+#: gio/gcontenttype.c:470
 #, c-format
 msgid "%s type"
 msgstr "%s врста"
@@ -345,23 +357,23 @@ msgstr "Непозната врста"
 msgid "%s filetype"
 msgstr "%s врста датотеке"
 
-#: gio/gcredentials.c:323
+#: gio/gcredentials.c:335
 msgid "GCredentials contains invalid data"
 msgstr "Г-акредитиви садрже неисправне податке"
 
-#: gio/gcredentials.c:383 gio/gcredentials.c:667
+#: gio/gcredentials.c:395 gio/gcredentials.c:686
 msgid "GCredentials is not implemented on this OS"
 msgstr "Гуверења нису подржана на оперативном систему"
 
-#: gio/gcredentials.c:538 gio/gcredentials.c:556
+#: gio/gcredentials.c:550 gio/gcredentials.c:568
 msgid "There is no GCredentials support for your platform"
 msgstr "Немате подршку за Гуверења на овој платформи"
 
-#: gio/gcredentials.c:607
+#: gio/gcredentials.c:626
 msgid "GCredentials does not contain a process ID on this OS"
 msgstr "Гуверења не садрже ИБ процеса на овом оперативном систему"
 
-#: gio/gcredentials.c:661
+#: gio/gcredentials.c:680
 msgid "Credentials spoofing is not possible on this OS"
 msgstr "Заваравање уверења није могуће на овом оперативном систему"
 
@@ -369,17 +381,17 @@ msgstr "Заваравање уверења није могуће на овом
 msgid "Unexpected early end-of-stream"
 msgstr "Неочекиван, преран крај тока"
 
-#: gio/gdbusaddress.c:159 gio/gdbusaddress.c:233 gio/gdbusaddress.c:322
+#: gio/gdbusaddress.c:162 gio/gdbusaddress.c:236 gio/gdbusaddress.c:325
 #, c-format
 msgid "Unsupported key “%s” in address entry “%s”"
 msgstr "Кључ „%s“ није подржан унутар адресе „%s“"
 
-#: gio/gdbusaddress.c:172
+#: gio/gdbusaddress.c:175
 #, c-format
 msgid "Meaningless key/value pair combination in address entry “%s”"
 msgstr "Безначајна комбинација кључ/вредност унутар адресе „%s“"
 
-#: gio/gdbusaddress.c:181
+#: gio/gdbusaddress.c:184
 #, c-format
 msgid ""
 "Address “%s” is invalid (need exactly one of path, dir, tmpdir, or abstract "
@@ -388,28 +400,28 @@ msgstr ""
 "Адреса „%s“ је неисправна (потребна само једна путања, директоријум, "
 "привремени директоријум или апстрактни кључ)"
 
-#: gio/gdbusaddress.c:248 gio/gdbusaddress.c:259 gio/gdbusaddress.c:274
-#: gio/gdbusaddress.c:337 gio/gdbusaddress.c:348
+#: gio/gdbusaddress.c:251 gio/gdbusaddress.c:262 gio/gdbusaddress.c:277
+#: gio/gdbusaddress.c:340 gio/gdbusaddress.c:351
 #, c-format
 msgid "Error in address “%s” — the “%s” attribute is malformed"
 msgstr "Грешка унутар адресе „%s“ — особина „%s“ није исправна"
 
-#: gio/gdbusaddress.c:418 gio/gdbusaddress.c:682
+#: gio/gdbusaddress.c:421 gio/gdbusaddress.c:680
 #, c-format
 msgid "Unknown or unsupported transport “%s” for address “%s”"
 msgstr "Непознати или неподржани пренос „%s“ за адресе „%s“"
 
-#: gio/gdbusaddress.c:462
+#: gio/gdbusaddress.c:465
 #, c-format
 msgid "Address element “%s” does not contain a colon (:)"
 msgstr "Елемент адресе „%s“ не садржи две тачке (:)"
 
-#: gio/gdbusaddress.c:471
+#: gio/gdbusaddress.c:474
 #, c-format
 msgid "Transport name in address element “%s” must not be empty"
 msgstr "Назив транспорта у елементу адресе „%s“ не сме бити празан"
 
-#: gio/gdbusaddress.c:492
+#: gio/gdbusaddress.c:495
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” does not contain an equal "
@@ -417,7 +429,7 @@ msgid ""
 msgstr ""
 "Пар кључ/вредност %d, „%s“, у елементу адресе „%s“ не садржи знак једнакости"
 
-#: gio/gdbusaddress.c:503
+#: gio/gdbusaddress.c:506
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” must not have an empty key"
@@ -425,7 +437,7 @@ msgstr ""
 "Пар кључ/вредност %d, „%s“, у елементу адресе „%s“ не сме задржати празан "
 "кључ"
 
-#: gio/gdbusaddress.c:517
+#: gio/gdbusaddress.c:520
 #, c-format
 msgid ""
 "Error unescaping key or value in Key/Value pair %d, “%s”, in address element "
@@ -434,7 +446,7 @@ msgstr ""
 "Грешка при неизбегавању кључа или вредности у пару Кључ/Вредности %d, „%s“, "
 "у елементу адресе „%s“"
 
-#: gio/gdbusaddress.c:589
+#: gio/gdbusaddress.c:588
 #, c-format
 msgid ""
 "Error in address “%s” — the unix transport requires exactly one of the keys "
@@ -443,84 +455,85 @@ msgstr ""
 "Грешка у адреси „%s“ — Јуниксов пренос захтева постављање кључа "
 "„path“ (путања) или „abstract“ (резиме)"
 
-#: gio/gdbusaddress.c:625
+#: gio/gdbusaddress.c:623
 #, c-format
 msgid "Error in address “%s” — the host attribute is missing or malformed"
 msgstr ""
 "Грешка унутар адресе „%s“ — атрибут домаћина недостаје или је неисправан"
 
-#: gio/gdbusaddress.c:639
+#: gio/gdbusaddress.c:637
 #, c-format
 msgid "Error in address “%s” — the port attribute is missing or malformed"
 msgstr "Грешка унутар адресе „%s“ — порт недостаје или је неисправан"
 
-#: gio/gdbusaddress.c:653
+#: gio/gdbusaddress.c:651
 #, c-format
 msgid "Error in address “%s” — the noncefile attribute is missing or malformed"
 msgstr ""
 "Грешка унутар адресе „%s“ — атрибут датотеке једнократних случајних бројева "
 "недостаје или је неисправан"
 
-#: gio/gdbusaddress.c:674
+#: gio/gdbusaddress.c:672
 msgid "Error auto-launching: "
 msgstr "Грешка у самопокретању: "
 
-#: gio/gdbusaddress.c:727
+#: gio/gdbusaddress.c:725
 #, c-format
 msgid "Error opening nonce file “%s”: %s"
 msgstr ""
 "Грешка приликом отварања датотеке једнократних случајних бројева „%s“: %s"
 
-#: gio/gdbusaddress.c:746
+#: gio/gdbusaddress.c:744
 #, c-format
 msgid "Error reading from nonce file “%s”: %s"
 msgstr "Грешка при читању датотеке једнократних случајних бројева „%s“: %s"
 
-#: gio/gdbusaddress.c:755
+#: gio/gdbusaddress.c:753
 #, c-format
 msgid "Error reading from nonce file “%s”, expected 16 bytes, got %d"
 msgstr ""
 "Грешка при читању датотеке једнократних случајних бројева „%s“, очекивано 16 "
 "бајтова, а добијено %d"
 
-#: gio/gdbusaddress.c:773
+#: gio/gdbusaddress.c:771
 #, c-format
 msgid "Error writing contents of nonce file “%s” to stream:"
 msgstr ""
 "Грешка приликом уписа садржаја датотеке једнократних случајних бројева „%s“ "
 "у ток:"
 
-#: gio/gdbusaddress.c:988
+#: gio/gdbusaddress.c:986
 msgid "The given address is empty"
 msgstr "Дата адреса је празна"
 
-#: gio/gdbusaddress.c:1101
+#: gio/gdbusaddress.c:1099
 #, c-format
-msgid "Cannot spawn a message bus when setuid"
-msgstr "Не могу да покренем магистралу порука када подешавам јиб"
+#| msgid "Cannot spawn a message bus when setuid"
+msgid "Cannot spawn a message bus when AT_SECURE is set"
+msgstr "Не могу да изродим магистралу поруке када је постављено „AT_SECURE“"
 
-#: gio/gdbusaddress.c:1108
+#: gio/gdbusaddress.c:1106
 msgid "Cannot spawn a message bus without a machine-id: "
 msgstr "Не могу да покренем магистралу порука без идентификације машине: "
 
-#: gio/gdbusaddress.c:1115
+#: gio/gdbusaddress.c:1113
 #, c-format
 msgid "Cannot autolaunch D-Bus without X11 $DISPLAY"
 msgstr "Не могу да самопокренем Д-сабирницу без „X11 $DISPLAY“"
 
-#: gio/gdbusaddress.c:1157
+#: gio/gdbusaddress.c:1155
 #, c-format
 msgid "Error spawning command line “%s”: "
 msgstr "Грешка при покретању наредбе „%s“: "
 
-#: gio/gdbusaddress.c:1226
+#: gio/gdbusaddress.c:1224
 #, c-format
 msgid "Cannot determine session bus address (not implemented for this OS)"
 msgstr ""
 "Не могу да одредим адресу магистрале сесије (није направљено за овај "
 "оперативни систем)"
 
-#: gio/gdbusaddress.c:1375 gio/gdbusconnection.c:7334
+#: gio/gdbusaddress.c:1373 gio/gdbusconnection.c:7334
 #, c-format
 msgid ""
 "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
@@ -529,7 +542,7 @@ msgstr ""
 "Не могу да одредим адресу магистрале сесије из променљиве окружења "
 "DBUS_STARTER_BUS_TYPE — непозната вредност „%s“"
 
-#: gio/gdbusaddress.c:1384 gio/gdbusconnection.c:7343
+#: gio/gdbusaddress.c:1382 gio/gdbusconnection.c:7343
 msgid ""
 "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
 "variable is not set"
@@ -537,7 +550,7 @@ msgstr ""
 "Не могу да одредим адресу магистрале сесије јер није постављена променљива "
 "окружења DBUS_STARTER_BUS_TYPE"
 
-#: gio/gdbusaddress.c:1394
+#: gio/gdbusaddress.c:1392
 #, c-format
 msgid "Unknown bus type %d"
 msgstr "Непознат тип магистрале %d"
@@ -566,12 +579,12 @@ msgstr "Кориснички ИБ-ови морају бити исти и за
 msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
 msgstr "Поништено преко GDBusAuthObserver::authorize-authenticated-peer"
 
-#: gio/gdbusauthmechanismsha1.c:298
+#: gio/gdbusauthmechanismsha1.c:300
 #, c-format
 msgid "Error when getting information for directory “%s”: %s"
 msgstr "Грешка приликом добављања података за директоријум „%s“: %s"
 
-#: gio/gdbusauthmechanismsha1.c:313
+#: gio/gdbusauthmechanismsha1.c:315
 #, c-format
 msgid ""
 "Permissions on directory “%s” are malformed. Expected mode 0700, got 0%o"
@@ -579,39 +592,39 @@ msgstr ""
 "Овлашћења фасцикле „%s“ су неисправна. Очекивана вредност је била 0700, а "
 "добијено је 0%o"
 
-#: gio/gdbusauthmechanismsha1.c:346 gio/gdbusauthmechanismsha1.c:357
+#: gio/gdbusauthmechanismsha1.c:348 gio/gdbusauthmechanismsha1.c:359
 #, c-format
 msgid "Error creating directory “%s”: %s"
 msgstr "Грешка стварања директоријума „%s“: %s"
 
-#: gio/gdbusauthmechanismsha1.c:359 gio/gfile.c:1062 gio/gfile.c:1300
-#: gio/gfile.c:1438 gio/gfile.c:1676 gio/gfile.c:1731 gio/gfile.c:1789
-#: gio/gfile.c:1873 gio/gfile.c:1930 gio/gfile.c:1994 gio/gfile.c:2049
-#: gio/gfile.c:3754 gio/gfile.c:3809 gio/gfile.c:4102 gio/gfile.c:4572
-#: gio/gfile.c:4983 gio/gfile.c:5068 gio/gfile.c:5158 gio/gfile.c:5255
-#: gio/gfile.c:5342 gio/gfile.c:5443 gio/gfile.c:8153 gio/gfile.c:8243
-#: gio/gfile.c:8327 gio/win32/gwinhttpfile.c:453
+#: gio/gdbusauthmechanismsha1.c:361 gio/gfile.c:1080 gio/gfile.c:1318
+#: gio/gfile.c:1456 gio/gfile.c:1694 gio/gfile.c:1749 gio/gfile.c:1807
+#: gio/gfile.c:1891 gio/gfile.c:1948 gio/gfile.c:2012 gio/gfile.c:2067
+#: gio/gfile.c:3772 gio/gfile.c:3912 gio/gfile.c:4205 gio/gfile.c:4675
+#: gio/gfile.c:5086 gio/gfile.c:5171 gio/gfile.c:5261 gio/gfile.c:5358
+#: gio/gfile.c:5445 gio/gfile.c:5546 gio/gfile.c:8375 gio/gfile.c:8465
+#: gio/gfile.c:8549 gio/win32/gwinhttpfile.c:453
 msgid "Operation not supported"
 msgstr "Радња није подржана"
 
-#: gio/gdbusauthmechanismsha1.c:402
+#: gio/gdbusauthmechanismsha1.c:404
 #, c-format
 msgid "Error opening keyring “%s” for reading: "
 msgstr "Грешка приликом отварања привеска кључева „%s“ за читање: "
 
-#: gio/gdbusauthmechanismsha1.c:425 gio/gdbusauthmechanismsha1.c:747
+#: gio/gdbusauthmechanismsha1.c:427 gio/gdbusauthmechanismsha1.c:769
 #, c-format
 msgid "Line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr "Линија %d привеска кључева на „%s“ са садржајем „%s“ није исправна"
 
-#: gio/gdbusauthmechanismsha1.c:439 gio/gdbusauthmechanismsha1.c:761
+#: gio/gdbusauthmechanismsha1.c:441 gio/gdbusauthmechanismsha1.c:783
 #, c-format
 msgid ""
 "First token of line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr ""
 "Први токен линије %d привеска кључева на „%s“ са садржајем „%s“ није исправан"
 
-#: gio/gdbusauthmechanismsha1.c:453 gio/gdbusauthmechanismsha1.c:775
+#: gio/gdbusauthmechanismsha1.c:455 gio/gdbusauthmechanismsha1.c:797
 #, c-format
 msgid ""
 "Second token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -619,37 +632,37 @@ msgstr ""
 "Други токен линије %d привеска кључева на „%s“ са садржајем „%s“ није "
 "исправан"
 
-#: gio/gdbusauthmechanismsha1.c:477
+#: gio/gdbusauthmechanismsha1.c:479
 #, c-format
 msgid "Didn’t find cookie with id %d in the keyring at “%s”"
 msgstr "Нисам нашао колачић са идентификацијом %d у привеску кључева на „%s“"
 
-#: gio/gdbusauthmechanismsha1.c:523
+#: gio/gdbusauthmechanismsha1.c:536
 #, c-format
 msgid "Error creating lock file “%s”: %s"
 msgstr "Грешка при прављењу датотеке закључавања „%s“: %s"
 
-#: gio/gdbusauthmechanismsha1.c:587
+#: gio/gdbusauthmechanismsha1.c:609
 #, c-format
 msgid "Error deleting stale lock file “%s”: %s"
 msgstr "Грешка при брисању заостале датотеке закључавања „%s“: %s"
 
-#: gio/gdbusauthmechanismsha1.c:626
+#: gio/gdbusauthmechanismsha1.c:648
 #, c-format
 msgid "Error closing (unlinked) lock file “%s”: %s"
 msgstr "Грешка приликом затварања (неповезане) датотеке закључавања „%s“: %s"
 
-#: gio/gdbusauthmechanismsha1.c:637
+#: gio/gdbusauthmechanismsha1.c:659
 #, c-format
 msgid "Error unlinking lock file “%s”: %s"
 msgstr "Грешка приликом одвезивању датотеке закључавања „%s“: %s"
 
-#: gio/gdbusauthmechanismsha1.c:714
+#: gio/gdbusauthmechanismsha1.c:736
 #, c-format
 msgid "Error opening keyring “%s” for writing: "
 msgstr "Грешка приликом отварања привеска кључева „%s“ за писање: "
 
-#: gio/gdbusauthmechanismsha1.c:908
+#: gio/gdbusauthmechanismsha1.c:930
 #, c-format
 msgid "(Additionally, releasing the lock for “%s” also failed: %s) "
 msgstr "(Додатно, отпуштање кључа са „%s“ такође није успело: %s) "
@@ -750,30 +763,30 @@ msgstr "Поддрво је већ извезено за %s"
 #: gio/gdbusconnection.c:7282
 #, c-format
 msgid "Object does not exist at path “%s”"
-msgstr "Објекат не постоји на путањи „%s“"
+msgstr "Објекат не постоји у путањи „%s“"
 
-#: gio/gdbusmessage.c:1311
+#: gio/gdbusmessage.c:1301
 msgid "type is INVALID"
 msgstr "врста је НЕИСПРАВНА"
 
-#: gio/gdbusmessage.c:1322
+#: gio/gdbusmessage.c:1312
 msgid "METHOD_CALL message: PATH or MEMBER header field is missing"
 msgstr "Порука ПОЗИВА_МЕТОДА: недостају поља заглавља ПУТАЊА или ЧЛАН"
 
-#: gio/gdbusmessage.c:1333
+#: gio/gdbusmessage.c:1323
 msgid "METHOD_RETURN message: REPLY_SERIAL header field is missing"
 msgstr "Порука РЕЗУЛТАТ_МЕТОДА: недостаје поље заглавља ОДГОВОРИ_СЕРИЈСКИ"
 
-#: gio/gdbusmessage.c:1345
+#: gio/gdbusmessage.c:1335
 msgid "ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing"
 msgstr ""
 "Порука ГРЕШКЕ: недостају поља заглавља ОДГОВОРИ_СЕРИЈСКИ или НАЗИВ_ГРЕШКЕ"
 
-#: gio/gdbusmessage.c:1358
+#: gio/gdbusmessage.c:1348
 msgid "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing"
 msgstr "Порука СИГНАЛА: недостају поља заглавља ПУТАЊА, СУЧЕЉЕ или ЧЛАН"
 
-#: gio/gdbusmessage.c:1366
+#: gio/gdbusmessage.c:1356
 msgid ""
 "SIGNAL message: The PATH header field is using the reserved value /org/"
 "freedesktop/DBus/Local"
@@ -781,7 +794,7 @@ msgstr ""
 "Порука СИГНАЛА: поље заглавља ПУТАЊА користи резервисану вредност „/org/"
 "freedesktop/DBus/Local“"
 
-#: gio/gdbusmessage.c:1374
+#: gio/gdbusmessage.c:1364
 msgid ""
 "SIGNAL message: The INTERFACE header field is using the reserved value org."
 "freedesktop.DBus.Local"
@@ -789,7 +802,7 @@ msgstr ""
 "Порука СИГНАЛА: поље заглавља СУЧЕЉЕ користи резервисану вредност „org."
 "freedesktop.DBus.Local“"
 
-#: gio/gdbusmessage.c:1422 gio/gdbusmessage.c:1482
+#: gio/gdbusmessage.c:1412 gio/gdbusmessage.c:1472
 #, c-format
 msgid "Wanted to read %lu byte but only got %lu"
 msgid_plural "Wanted to read %lu bytes but only got %lu"
@@ -798,12 +811,12 @@ msgstr[1] "Покушах да читам %lu бајта, али добих са
 msgstr[2] "Покушах да читам %lu бајтова, али добих само %lu"
 msgstr[3] "Покушах да читам један бајт, али добих само %lu"
 
-#: gio/gdbusmessage.c:1436
+#: gio/gdbusmessage.c:1426
 #, c-format
 msgid "Expected NUL byte after the string “%s” but found byte %d"
 msgstr "Очекивао сам NUL бајт после ниске „%s“, али сам нашао бајт %d"
 
-#: gio/gdbusmessage.c:1455
+#: gio/gdbusmessage.c:1445
 #, c-format
 msgid ""
 "Expected valid UTF-8 string but found invalid bytes at byte offset %d "
@@ -812,21 +825,21 @@ msgstr ""
 "Очекивах исправну УТФ-8 ниску, али нађох неисправне бајтове на бајт померају "
 "%d (дужина ниске је %d). Исправна ниска до тог дела је била „%s“"
 
-#: gio/gdbusmessage.c:1519 gio/gdbusmessage.c:1795 gio/gdbusmessage.c:2006
+#: gio/gdbusmessage.c:1509 gio/gdbusmessage.c:1785 gio/gdbusmessage.c:1996
 msgid "Value nested too deeply"
 msgstr "Вредност је угнеждена предубоко"
 
-#: gio/gdbusmessage.c:1687
+#: gio/gdbusmessage.c:1677
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus object path"
 msgstr "Рашчлањена вредност „%s“ није исправна путања објекта Д-магистрале"
 
-#: gio/gdbusmessage.c:1711
+#: gio/gdbusmessage.c:1701
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature"
 msgstr "Рашчлањена вредност „%s“ није исправан потпис Д-магистрале"
 
-#: gio/gdbusmessage.c:1762
+#: gio/gdbusmessage.c:1752
 #, c-format
 msgid ""
 "Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB)."
@@ -843,7 +856,7 @@ msgstr[3] ""
 "Наишао сам на низ дужине једног бајта. Највећа дужина је 2<<26 бајтова (64 "
 "MiB)."
 
-#: gio/gdbusmessage.c:1782
+#: gio/gdbusmessage.c:1772
 #, c-format
 msgid ""
 "Encountered array of type “a%c”, expected to have a length a multiple of %u "
@@ -852,17 +865,17 @@ msgstr ""
 "Наиђох на низ врсте „a%c“, очекивах да је дужина умножак од %u бајта, али "
 "нађох да је дуг %u бајта"
 
-#: gio/gdbusmessage.c:1936 gio/gdbusmessage.c:2655
+#: gio/gdbusmessage.c:1926 gio/gdbusmessage.c:2645
 msgid "Empty structures (tuples) are not allowed in D-Bus"
 msgstr "Празне структуре (н-торке) нису дозвољене у Д-сабирници"
 
-#: gio/gdbusmessage.c:1990
+#: gio/gdbusmessage.c:1980
 #, c-format
 msgid "Parsed value “%s” for variant is not a valid D-Bus signature"
 msgstr ""
 "Рашчлањена вредност „%s“ за варијанту није исправан потпис Д-магистрале"
 
-#: gio/gdbusmessage.c:2031
+#: gio/gdbusmessage.c:2021
 #, c-format
 msgid ""
 "Error deserializing GVariant with type string “%s” from the D-Bus wire format"
@@ -870,7 +883,7 @@ msgstr ""
 "Грешка при десеријализацији Гваријанта са ниском врсте „%s“ из жичаног "
 "формата Д-магистрале"
 
-#: gio/gdbusmessage.c:2216
+#: gio/gdbusmessage.c:2206
 #, c-format
 msgid ""
 "Invalid endianness value. Expected 0x6c (“l”) or 0x42 (“B”) but found value "
@@ -879,27 +892,27 @@ msgstr ""
 "Неисправна вредност за крајњост. Очекивао сам 0x6c („l“) или 0x42 („Bд) али "
 "сам нашао вредност 0x%02x"
 
-#: gio/gdbusmessage.c:2235
+#: gio/gdbusmessage.c:2225
 #, c-format
 msgid "Invalid major protocol version. Expected 1 but found %d"
 msgstr "Неисправна главно издање протокола. Очекивано 1, али нађено %d"
 
-#: gio/gdbusmessage.c:2293 gio/gdbusmessage.c:2891
+#: gio/gdbusmessage.c:2283 gio/gdbusmessage.c:2881
 msgid "Signature header found but is not of type signature"
 msgstr "Потпис заглавља је пронађен али он није врсте потпис"
 
-#: gio/gdbusmessage.c:2305
+#: gio/gdbusmessage.c:2295
 #, c-format
 msgid "Signature header with signature “%s” found but message body is empty"
 msgstr "Потпис заглавља са потписом „%s“ је нађен, али је тело поруке празно"
 
-#: gio/gdbusmessage.c:2320
+#: gio/gdbusmessage.c:2310
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature (for body)"
 msgstr ""
 "Рашчлањена вредност „%s“ није исправан потпис Д-магистрале (за тело поруке)"
 
-#: gio/gdbusmessage.c:2352
+#: gio/gdbusmessage.c:2342
 #, 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"
@@ -908,11 +921,11 @@ msgstr[1] "Нема заглавља потписа у поруци, али те
 msgstr[2] "Нема заглавља потписа у поруци, али тело поруке има %u бајтова"
 msgstr[3] "Нема заглавља потписа у поруци, али тело поруке има један бајт"
 
-#: gio/gdbusmessage.c:2362
+#: gio/gdbusmessage.c:2352
 msgid "Cannot deserialize message: "
 msgstr "Не могу да десеријализујем поруку: "
 
-#: gio/gdbusmessage.c:2708
+#: gio/gdbusmessage.c:2698
 #, c-format
 msgid ""
 "Error serializing GVariant with type string “%s” to the D-Bus wire format"
@@ -920,75 +933,75 @@ msgstr ""
 "Грешка при серијализацији Гваријанта са ниском врсте „%s“ из жичаног формата "
 "Д-магистрале"
 
-#: gio/gdbusmessage.c:2845
+#: gio/gdbusmessage.c:2835
 #, c-format
 msgid ""
 "Number of file descriptors in message (%d) differs from header field (%d)"
 msgstr ""
 "Број описника датотеке у поруци (%d) се разликује од заглавља поља (%d)"
 
-#: gio/gdbusmessage.c:2853
+#: gio/gdbusmessage.c:2843
 msgid "Cannot serialize message: "
 msgstr "Не могу да серијализујем поруку: "
 
-#: gio/gdbusmessage.c:2906
+#: gio/gdbusmessage.c:2896
 #, c-format
 msgid "Message body has signature “%s” but there is no signature header"
 msgstr "Тело поруке има потпис „%s“, али недостаје заглавље потписа"
 
-#: gio/gdbusmessage.c:2916
+#: gio/gdbusmessage.c:2906
 #, c-format
 msgid ""
 "Message body has type signature “%s” but signature in the header field is "
 "“%s”"
 msgstr "Тело поруке има тип потписа „%s“, али потпис у пољу заглавља је „%s“"
 
-#: gio/gdbusmessage.c:2932
+#: gio/gdbusmessage.c:2922
 #, c-format
 msgid "Message body is empty but signature in the header field is “(%s)”"
 msgstr "Тело поруке је празно,,, али је потпис у пољу заглавља „(%s)“"
 
-#: gio/gdbusmessage.c:3487
+#: gio/gdbusmessage.c:3477
 #, c-format
 msgid "Error return with body of type “%s”"
 msgstr "Добијена је грешка са телом поруке типа „%s“"
 
-#: gio/gdbusmessage.c:3495
+#: gio/gdbusmessage.c:3485
 msgid "Error return with empty body"
 msgstr "Добијена је грешка са празним телом поруке"
 
-#: gio/gdbusprivate.c:2246
+#: gio/gdbusprivate.c:2185
 #, c-format
 msgid "(Type any character to close this window)\n"
 msgstr "(Упишите било који знак да затворите овај прозор)\n"
 
-#: gio/gdbusprivate.c:2420
+#: gio/gdbusprivate.c:2371
 #, c-format
 msgid "Session dbus not running, and autolaunch failed"
 msgstr "Д-магистрала сесије није покренута, самопокретање није успело"
 
-#: gio/gdbusprivate.c:2443
+#: gio/gdbusprivate.c:2394
 #, c-format
 msgid "Unable to get Hardware profile: %s"
 msgstr "Не могу да добавим профил физичких делова: %s"
 
 #. Translators: Both placeholders are file paths
-#: gio/gdbusprivate.c:2494
+#: gio/gdbusprivate.c:2445
 #, c-format
 msgid "Unable to load %s or %s: "
 msgstr "Не могу да учитам „%s“ или „%s“: "
 
-#: gio/gdbusproxy.c:1569
+#: gio/gdbusproxy.c:1573
 #, c-format
 msgid "Error calling StartServiceByName for %s: "
 msgstr "Грешка при позиву покрени услугу према називу за %s: "
 
-#: gio/gdbusproxy.c:1592
+#: gio/gdbusproxy.c:1596
 #, c-format
 msgid "Unexpected reply %d from StartServiceByName(\"%s\") method"
 msgstr "Неочекиван одговор %d од StartServiceByName(„%s“) метода"
 
-#: gio/gdbusproxy.c:2699 gio/gdbusproxy.c:2834
+#: gio/gdbusproxy.c:2707 gio/gdbusproxy.c:2842
 #, c-format
 msgid ""
 "Cannot invoke method; proxy is for the well-known name %s without an owner, "
@@ -1046,67 +1059,67 @@ msgstr ""
 "\n"
 "Користите „%s НАРЕДБА --help“ да добијете помоћ за појединачне наредбе.\n"
 
-#: gio/gdbus-tool.c:201 gio/gdbus-tool.c:273 gio/gdbus-tool.c:345
-#: gio/gdbus-tool.c:369 gio/gdbus-tool.c:859 gio/gdbus-tool.c:1236
-#: gio/gdbus-tool.c:1724
+#: gio/gdbus-tool.c:202 gio/gdbus-tool.c:274 gio/gdbus-tool.c:346
+#: gio/gdbus-tool.c:370 gio/gdbus-tool.c:860 gio/gdbus-tool.c:1245
+#: gio/gdbus-tool.c:1733
 #, c-format
 msgid "Error: %s\n"
 msgstr "Грешка: %s\n"
 
-#: gio/gdbus-tool.c:212 gio/gdbus-tool.c:286 gio/gdbus-tool.c:1740
+#: gio/gdbus-tool.c:213 gio/gdbus-tool.c:287 gio/gdbus-tool.c:1749
 #, c-format
 msgid "Error parsing introspection XML: %s\n"
 msgstr "Грешка при рашчлањивању XML-а добијеног испитивањем: %s\n"
 
-#: gio/gdbus-tool.c:250
+#: gio/gdbus-tool.c:251
 #, c-format
 msgid "Error: %s is not a valid name\n"
 msgstr "Грешка: „%s“ није исправан назив\n"
 
-#: gio/gdbus-tool.c:255 gio/gdbus-tool.c:745 gio/gdbus-tool.c:1060
-#: gio/gdbus-tool.c:1890 gio/gdbus-tool.c:2130
+#: gio/gdbus-tool.c:256 gio/gdbus-tool.c:746 gio/gdbus-tool.c:1064
+#: gio/gdbus-tool.c:1899 gio/gdbus-tool.c:2139
 #, c-format
 msgid "Error: %s is not a valid object path\n"
 msgstr "Грешка: %s није исправна путања до објеката\n"
 
-#: gio/gdbus-tool.c:403
+#: gio/gdbus-tool.c:404
 msgid "Connect to the system bus"
 msgstr "Повезивање на системску магистрали"
 
-#: gio/gdbus-tool.c:404
+#: gio/gdbus-tool.c:405
 msgid "Connect to the session bus"
 msgstr "Повезивање на магистралу сесије"
 
-#: gio/gdbus-tool.c:405
+#: gio/gdbus-tool.c:406
 msgid "Connect to given D-Bus address"
 msgstr "Повезивање на задату Д-бас адресу"
 
-#: gio/gdbus-tool.c:415
+#: gio/gdbus-tool.c:416
 msgid "Connection Endpoint Options:"
 msgstr "Опције крајње тачке везе:"
 
-#: gio/gdbus-tool.c:416
+#: gio/gdbus-tool.c:417
 msgid "Options specifying the connection endpoint"
 msgstr "Опције које одређују крајњу тачку везе"
 
-#: gio/gdbus-tool.c:439
+#: gio/gdbus-tool.c:440
 #, c-format
 msgid "No connection endpoint specified"
 msgstr "Није наведена крајња тачка везе"
 
-#: gio/gdbus-tool.c:449
+#: gio/gdbus-tool.c:450
 #, c-format
 msgid "Multiple connection endpoints specified"
 msgstr "Наведено више крајњих тачака везе"
 
-#: gio/gdbus-tool.c:522
+#: gio/gdbus-tool.c:523
 #, c-format
 msgid ""
 "Warning: According to introspection data, interface “%s” does not exist\n"
 msgstr ""
 "Упозорење: Према подацима добијеним испитивањем, интерфејс „%s“ не постоји\n"
 
-#: gio/gdbus-tool.c:531
+#: gio/gdbus-tool.c:532
 #, c-format
 msgid ""
 "Warning: According to introspection data, method “%s” does not exist on "
@@ -1115,160 +1128,165 @@ msgstr ""
 "Упозорење: Према подацима добијеним испитивањем, метод „%s“ не постоји на "
 "интерфејсу „%s“\n"
 
-#: gio/gdbus-tool.c:593
+#: gio/gdbus-tool.c:594
 msgid "Optional destination for signal (unique name)"
 msgstr "Опционална дестинација сигнала (јединствено име)"
 
-#: gio/gdbus-tool.c:594
+#: gio/gdbus-tool.c:595
 msgid "Object path to emit signal on"
 msgstr "Путања објекта за емитовање сигнала"
 
-#: gio/gdbus-tool.c:595
+#: gio/gdbus-tool.c:596
 msgid "Signal and interface name"
 msgstr "Назив сигнала и сучеља"
 
-#: gio/gdbus-tool.c:628
+#: gio/gdbus-tool.c:629
 msgid "Emit a signal."
 msgstr "Емитује сигнал."
 
-#: gio/gdbus-tool.c:683 gio/gdbus-tool.c:997 gio/gdbus-tool.c:1827
-#: gio/gdbus-tool.c:2059 gio/gdbus-tool.c:2279
+#: gio/gdbus-tool.c:684 gio/gdbus-tool.c:1001 gio/gdbus-tool.c:1836
+#: gio/gdbus-tool.c:2068 gio/gdbus-tool.c:2288
 #, c-format
 msgid "Error connecting: %s\n"
 msgstr "Грешка у повезивању: %s\n"
 
-#: gio/gdbus-tool.c:703
+#: gio/gdbus-tool.c:704
 #, c-format
 msgid "Error: %s is not a valid unique bus name.\n"
 msgstr "Грешка: „%s“ није исправан назив јединствене магистрале.\n"
 
-#: gio/gdbus-tool.c:722 gio/gdbus-tool.c:1040 gio/gdbus-tool.c:1870
+#: gio/gdbus-tool.c:723 gio/gdbus-tool.c:1044 gio/gdbus-tool.c:1879
 msgid "Error: Object path is not specified\n"
 msgstr "Грешка: Није изабрана путања до објекта\n"
 
-#: gio/gdbus-tool.c:765
+#: gio/gdbus-tool.c:766
 msgid "Error: Signal name is not specified\n"
 msgstr "Грешка: Име сигнала није одређено\n"
 
-#: gio/gdbus-tool.c:779
+#: gio/gdbus-tool.c:780
 #, c-format
 msgid "Error: Signal name “%s” is invalid\n"
 msgstr "Грешка: Име сигнала „%s“ није одређено\n"
 
-#: gio/gdbus-tool.c:791
+#: gio/gdbus-tool.c:792
 #, c-format
 msgid "Error: %s is not a valid interface name\n"
 msgstr "Грешка: „%s“ није исправан назив сучеља\n"
 
-#: gio/gdbus-tool.c:797
+#: gio/gdbus-tool.c:798
 #, c-format
 msgid "Error: %s is not a valid member name\n"
 msgstr "Грешка: „%s“ није исправан назив члана\n"
 
 #. Use the original non-"parse-me-harder" error
-#: gio/gdbus-tool.c:834 gio/gdbus-tool.c:1172
+#: gio/gdbus-tool.c:835 gio/gdbus-tool.c:1176
 #, c-format
 msgid "Error parsing parameter %d: %s\n"
 msgstr "Грешка при обради параметра %d: %s\n"
 
-#: gio/gdbus-tool.c:866
+#: gio/gdbus-tool.c:867
 #, c-format
 msgid "Error flushing connection: %s\n"
 msgstr "Грешка испирања везе: %s\n"
 
-#: gio/gdbus-tool.c:893
+#: gio/gdbus-tool.c:895
 msgid "Destination name to invoke method on"
 msgstr "Назив одредишта на коме треба позвати метод"
 
-#: gio/gdbus-tool.c:894
+#: gio/gdbus-tool.c:896
 msgid "Object path to invoke method on"
 msgstr "Путања објекта на коме треба позвати метод"
 
-#: gio/gdbus-tool.c:895
+#: gio/gdbus-tool.c:897
 msgid "Method and interface name"
 msgstr "Име метода и интерфејса"
 
-#: gio/gdbus-tool.c:896
+#: gio/gdbus-tool.c:898
 msgid "Timeout in seconds"
 msgstr "Време истека у секундама"
 
-#: gio/gdbus-tool.c:942
+#: gio/gdbus-tool.c:899
+#| msgid "Show information about locations"
+msgid "Allow interactive authorization"
+msgstr "Дозвољава међудејствено овлашћивање"
+
+#: gio/gdbus-tool.c:946
 msgid "Invoke a method on a remote object."
 msgstr "Позивање метода на удаљеном објекту."
 
-#: gio/gdbus-tool.c:1014 gio/gdbus-tool.c:1844 gio/gdbus-tool.c:2084
+#: gio/gdbus-tool.c:1018 gio/gdbus-tool.c:1853 gio/gdbus-tool.c:2093
 msgid "Error: Destination is not specified\n"
 msgstr "Грешка: Није изабрано одредиште\n"
 
-#: gio/gdbus-tool.c:1025 gio/gdbus-tool.c:1861 gio/gdbus-tool.c:2095
+#: gio/gdbus-tool.c:1029 gio/gdbus-tool.c:1870 gio/gdbus-tool.c:2104
 #, c-format
 msgid "Error: %s is not a valid bus name\n"
 msgstr "Грешка: „%s“ није исправан назив магистрале\n"
 
-#: gio/gdbus-tool.c:1075
+#: gio/gdbus-tool.c:1079
 msgid "Error: Method name is not specified\n"
 msgstr "Грешка: Име начина није одређено\n"
 
-#: gio/gdbus-tool.c:1086
+#: gio/gdbus-tool.c:1090
 #, c-format
 msgid "Error: Method name “%s” is invalid\n"
 msgstr "Грешка: Име начина „%s“ није одређено\n"
 
-#: gio/gdbus-tool.c:1164
+#: gio/gdbus-tool.c:1168
 #, c-format
 msgid "Error parsing parameter %d of type “%s”: %s\n"
 msgstr "Грешка при обради параметра %d врсте „%s“: %s\n"
 
-#: gio/gdbus-tool.c:1190
+#: gio/gdbus-tool.c:1194
 #, c-format
 msgid "Error adding handle %d: %s\n"
 msgstr "Грешка додавања ручке %d: %s\n"
 
-#: gio/gdbus-tool.c:1686
+#: gio/gdbus-tool.c:1695
 msgid "Destination name to introspect"
 msgstr "Назив одредишта за испитивање"
 
-#: gio/gdbus-tool.c:1687
+#: gio/gdbus-tool.c:1696
 msgid "Object path to introspect"
 msgstr "Путања објекта за испитивање"
 
-#: gio/gdbus-tool.c:1688
+#: gio/gdbus-tool.c:1697
 msgid "Print XML"
 msgstr "Штампа ИксМЛ"
 
-#: gio/gdbus-tool.c:1689
+#: gio/gdbus-tool.c:1698
 msgid "Introspect children"
 msgstr "Преиспитује чланове"
 
-#: gio/gdbus-tool.c:1690
+#: gio/gdbus-tool.c:1699
 msgid "Only print properties"
 msgstr "Само штампа својства"
 
-#: gio/gdbus-tool.c:1779
+#: gio/gdbus-tool.c:1788
 msgid "Introspect a remote object."
 msgstr "Испитајте удаљени објекат."
 
-#: gio/gdbus-tool.c:1985
+#: gio/gdbus-tool.c:1994
 msgid "Destination name to monitor"
 msgstr "Назив одредишта за надгледање"
 
-#: gio/gdbus-tool.c:1986
+#: gio/gdbus-tool.c:1995
 msgid "Object path to monitor"
 msgstr "Путања објекта за надгледање"
 
-#: gio/gdbus-tool.c:2011
+#: gio/gdbus-tool.c:2020
 msgid "Monitor a remote object."
 msgstr "Надгледање удаљеног објекта."
 
-#: gio/gdbus-tool.c:2069
+#: gio/gdbus-tool.c:2078
 msgid "Error: can’t monitor a non-message-bus connection\n"
 msgstr "Грешка: не могу да надгледам везу на сабирници која није за поруке\n"
 
-#: gio/gdbus-tool.c:2193
+#: gio/gdbus-tool.c:2202
 msgid "Service to activate before waiting for the other one (well-known name)"
 msgstr "Услуга за активирање пре чекања на другу (добро знан назив)"
 
-#: gio/gdbus-tool.c:2196
+#: gio/gdbus-tool.c:2205
 msgid ""
 "Timeout to wait for before exiting with an error (seconds); 0 for no timeout "
 "(default)"
@@ -1276,63 +1294,68 @@ msgstr ""
 "Време за чекање пре изласка са грешком (секунде); 0 — без временског рока "
 "(основно)"
 
-#: gio/gdbus-tool.c:2244
+#: gio/gdbus-tool.c:2253
 msgid "[OPTION…] BUS-NAME"
 msgstr "[ОПЦИЈА…] НАЗИВ_МАГИСТРАЛЕ"
 
-#: gio/gdbus-tool.c:2245
+#: gio/gdbus-tool.c:2254
 msgid "Wait for a bus name to appear."
 msgstr "Чека да се појави назив магистрале."
 
-#: gio/gdbus-tool.c:2321
+#: gio/gdbus-tool.c:2330
 msgid "Error: A service to activate for must be specified.\n"
 msgstr "Грешка: Услуга за активирање мора бити наведена.\n"
 
-#: gio/gdbus-tool.c:2326
+#: gio/gdbus-tool.c:2335
 msgid "Error: A service to wait for must be specified.\n"
 msgstr "Грешка: Услуга за чекање мора бити наведена.\n"
 
-#: gio/gdbus-tool.c:2331
+#: gio/gdbus-tool.c:2340
 msgid "Error: Too many arguments.\n"
 msgstr "Грешка: Превише аргумената.\n"
 
-#: gio/gdbus-tool.c:2339 gio/gdbus-tool.c:2346
+#: gio/gdbus-tool.c:2348 gio/gdbus-tool.c:2355
 #, c-format
 msgid "Error: %s is not a valid well-known bus name.\n"
 msgstr "Грешка: „%s“ није исправан назив добро знане магистрале.\n"
 
-#: gio/gdesktopappinfo.c:2106 gio/gdesktopappinfo.c:4935
+#: gio/gdebugcontrollerdbus.c:358
+#, c-format
+msgid "Not authorized to change debug settings"
+msgstr "Нисте овлашћени да измените поставке прочишћавања"
+
+#: gio/gdesktopappinfo.c:2178 gio/gdesktopappinfo.c:5105
 msgid "Unnamed"
 msgstr "Неименовано"
 
-#: gio/gdesktopappinfo.c:2516
+#: gio/gdesktopappinfo.c:2588
 msgid "Desktop file didn’t specify Exec field"
 msgstr "Датотека за радну површ не садржи Exec унос"
 
-#: gio/gdesktopappinfo.c:2804
+#: gio/gdesktopappinfo.c:2896
 msgid "Unable to find terminal required for application"
 msgstr "Не могу да нађем терминал ради покретања овог програма"
 
-#: gio/gdesktopappinfo.c:3455
+#: gio/gdesktopappinfo.c:3625
 #, c-format
 msgid "Can’t create user application configuration folder %s: %s"
 msgstr "Не могу да направим фасциклу за корисникова подешавања %s: %s"
 
-#: gio/gdesktopappinfo.c:3459
+#: gio/gdesktopappinfo.c:3629
 #, c-format
 msgid "Can’t create user MIME configuration folder %s: %s"
 msgstr "Не могу да направим фасциклу за корисникова МИМЕ подешавања %s: %s"
 
-#: gio/gdesktopappinfo.c:3701 gio/gdesktopappinfo.c:3725
+#: gio/gdesktopappinfo.c:3871 gio/gdesktopappinfo.c:3895
 msgid "Application information lacks an identifier"
 msgstr "Подацима о програму недостаје идентификатор"
 
-#: gio/gdesktopappinfo.c:3961
+#: gio/gdesktopappinfo.c:4131
 #, c-format
 msgid "Can’t create user desktop file %s"
 msgstr "Не могу да направим датотеку радне површи %s"
 
-#: gio/gdesktopappinfo.c:4097
+#: gio/gdesktopappinfo.c:4267
 #, c-format
 msgid "Custom definition for %s"
 msgstr "Произвољне одреднице за %s"
@@ -1360,7 +1383,7 @@ msgstr "уређај не подржава „покрени“"
 msgid "drive doesn’t implement stop"
 msgstr "уређај не подржава „заустави“"
 
-#: gio/gdtlsconnection.c:1153 gio/gtlsconnection.c:920
+#: gio/gdtlsconnection.c:1186 gio/gtlsconnection.c:955
 msgid "TLS backend does not implement TLS binding retrieval"
 msgstr "ТЛС позадинац не подржава добаваљање ТЛС повезивања"
 
@@ -1401,73 +1424,73 @@ msgstr "Очекивано је ГЕмблем за иконицу ГЕмбле
 #. * trying to find the enclosing (user visible)
 #. * mount of a file, but none exists.
 #.
-#: gio/gfile.c:1561
+#: gio/gfile.c:1579
 msgid "Containing mount does not exist"
 msgstr "Садржано монтирање не постоји"
 
-#: gio/gfile.c:2608 gio/glocalfile.c:2486
+#: gio/gfile.c:2626 gio/glocalfile.c:2486
 msgid "Can’t copy over directory"
 msgstr "Не могу да умножим преко директоријума"
 
-#: gio/gfile.c:2668
+#: gio/gfile.c:2686
 msgid "Can’t copy directory over directory"
 msgstr "Не могу да умножим директоријум преко директоријума"
 
-#: gio/gfile.c:2676
+#: gio/gfile.c:2694
 msgid "Target file exists"
 msgstr "Циљна датотека већ постоји"
 
-#: gio/gfile.c:2695
+#: gio/gfile.c:2713
 msgid "Can’t recursively copy directory"
 msgstr "Не могу да умножим директоријум и његов садржај"
 
-#: gio/gfile.c:2996
+#: gio/gfile.c:3014
 msgid "Splice not supported"
 msgstr "Дељење није подржано"
 
-#: gio/gfile.c:3000
+#: gio/gfile.c:3018
 #, c-format
 msgid "Error splicing file: %s"
 msgstr "Грешка приликом дељења датотеке: %s"
 
-#: gio/gfile.c:3152
+#: gio/gfile.c:3170
 msgid "Copy (reflink/clone) between mounts is not supported"
 msgstr "Није подржано умножавање (reflink/clone) између монтираних уређаја"
 
-#: gio/gfile.c:3156
+#: gio/gfile.c:3174
 msgid "Copy (reflink/clone) is not supported or invalid"
 msgstr "Умножавање (reflink/clone) није подржано или је неисправно"
 
-#: gio/gfile.c:3161
+#: gio/gfile.c:3179
 msgid "Copy (reflink/clone) is not supported or didn’t work"
 msgstr "Умножавање (reflink/clone) није подржано или не ради"
 
-#: gio/gfile.c:3226
+#: gio/gfile.c:3244
 msgid "Can’t copy special file"
 msgstr "Не могу да умножим специјалну датотеку"
 
-#: gio/gfile.c:4035
+#: gio/gfile.c:4138
 msgid "Invalid symlink value given"
 msgstr "Дата је неисправна симболичка веза"
 
-#: gio/gfile.c:4045 glib/gfileutils.c:2333
+#: gio/gfile.c:4148 glib/gfileutils.c:2333
 msgid "Symbolic links not supported"
 msgstr "Симболичке везе нису подржане"
 
-#: gio/gfile.c:4213
+#: gio/gfile.c:4316
 msgid "Trash not supported"
 msgstr "Није подржано смеће"
 
-#: gio/gfile.c:4325
+#: gio/gfile.c:4428
 #, c-format
 msgid "File names cannot contain “%c”"
 msgstr "Имена датотека не могу да садрже „%c“"
 
-#: gio/gfile.c:6806 gio/gvolume.c:364
+#: gio/gfile.c:7028 gio/gvolume.c:364
 msgid "volume doesn’t implement mount"
 msgstr "није подржано монтирање диска"
 
-#: gio/gfile.c:6920 gio/gfile.c:6968
+#: gio/gfile.c:7142 gio/gfile.c:7190
 msgid "No application is registered as handling this file"
 msgstr "Ни један програм не може да отвори ову датотеку"
 
@@ -1512,7 +1535,7 @@ msgstr "Сасецање није дозвољену над улазним то
 msgid "Truncate not supported on stream"
 msgstr "Сасецање није дозвољено над током"
 
-#: gio/ghttpproxy.c:91 gio/gresolver.c:443 gio/gresolver.c:596
+#: gio/ghttpproxy.c:91 gio/gresolver.c:458 gio/gresolver.c:611
 #: glib/gconvert.c:1825
 msgid "Invalid hostname"
 msgstr "Неисправно име домаћина"
@@ -1599,7 +1622,7 @@ msgid "Could not parse “%s” as IP address mask"
 msgstr "Не могу да обрадим „%s“ као маску ИП адресе"
 
 #: gio/ginetsocketaddress.c:203 gio/ginetsocketaddress.c:220
-#: gio/gnativesocketaddress.c:109 gio/gunixsocketaddress.c:221
+#: gio/gnativesocketaddress.c:109 gio/gunixsocketaddress.c:228
 msgid "Not enough space for socket address"
 msgstr "Нема довољно места за адресу утичнице"
 
@@ -2437,15 +2460,15 @@ msgstr "Грешка при сажимању датотеке „%s“"
 msgid "text may not appear inside <%s>"
 msgstr "текст не може да се појављује унутар <%s>"
 
-#: gio/glib-compile-resources.c:737 gio/glib-compile-schemas.c:2172
+#: gio/glib-compile-resources.c:819 gio/glib-compile-schemas.c:2172
 msgid "Show program version and exit"
 msgstr "Приказује издање програма и излази"
 
-#: gio/glib-compile-resources.c:738
+#: gio/glib-compile-resources.c:820
 msgid "Name of the output file"
 msgstr "Назив излазне датотеке"
 
-#: gio/glib-compile-resources.c:739
+#: gio/glib-compile-resources.c:821
 msgid ""
 "The directories to load files referenced in FILE from (default: current "
 "directory)"
@@ -2453,45 +2476,45 @@ msgstr ""
 "Директоријуми из којих ће датотеке дефинисане у ДАТОТЕЦИ бити учитане "
 "(подразумевано: тренутни директоријум)"
 
-#: gio/glib-compile-resources.c:739 gio/glib-compile-schemas.c:2173
+#: gio/glib-compile-resources.c:821 gio/glib-compile-schemas.c:2173
 #: gio/glib-compile-schemas.c:2202
 msgid "DIRECTORY"
 msgstr "ДИРЕКТОРИЈУМ"
 
-#: gio/glib-compile-resources.c:740
+#: gio/glib-compile-resources.c:822
 msgid ""
 "Generate output in the format selected for by the target filename extension"
 msgstr "Ствара излаз у формату изабраном проширењем назива циљне датотеке"
 
-#: gio/glib-compile-resources.c:741
+#: gio/glib-compile-resources.c:823
 msgid "Generate source header"
 msgstr "Ствара заглавље извора"
 
-#: gio/glib-compile-resources.c:742
+#: gio/glib-compile-resources.c:824
 msgid "Generate source code used to link in the resource file into your code"
 msgstr "Ствара изворни код коришћен да повеже датотеку ресурса у ваш код"
 
-#: gio/glib-compile-resources.c:743
+#: gio/glib-compile-resources.c:825
 msgid "Generate dependency list"
 msgstr "Ствара списак зависности"
 
-#: gio/glib-compile-resources.c:744
+#: gio/glib-compile-resources.c:826
 msgid "Name of the dependency file to generate"
 msgstr "Назив датотеке зависности за стварање"
 
-#: gio/glib-compile-resources.c:745
+#: gio/glib-compile-resources.c:827
 msgid "Include phony targets in the generated dependency file"
 msgstr "Укључује лажне мете у створеној датотеци зависности"
 
-#: gio/glib-compile-resources.c:746
+#: gio/glib-compile-resources.c:828
 msgid "Don’t automatically create and register resource"
 msgstr "Не ствара самостално и не бележи извор"
 
-#: gio/glib-compile-resources.c:747
+#: gio/glib-compile-resources.c:829
 msgid "Don’t export functions; declare them G_GNUC_INTERNAL"
 msgstr "Не извози функције; објављује их „Г_ГНУЦ_УНУТРАШЊИМ“"
 
-#: gio/glib-compile-resources.c:748
+#: gio/glib-compile-resources.c:830
 msgid ""
 "Don’t embed resource data in the C file; assume it's linked externally "
 "instead"
@@ -2499,11 +2522,15 @@ msgstr ""
 "Не угнежђујте ресурсне податке у Це датотеку, уместо тога претпоставите да "
 "је повезан (линкована) споља"
 
-#: gio/glib-compile-resources.c:749
+#: gio/glib-compile-resources.c:831
 msgid "C identifier name used for the generated source code"
 msgstr "Назив Ц одредника коришћеног за створени изворни код"
 
-#: gio/glib-compile-resources.c:775
+#: gio/glib-compile-resources.c:832
+msgid "The target C compiler (default: the CC environment variable)"
+msgstr "Ц преводилац мете (основно: променљива ЦЦ окружења)"
+
+#: gio/glib-compile-resources.c:858
 msgid ""
 "Compile a resource specification into a resource file.\n"
 "Resource specification files have the extension .gresource.xml,\n"
@@ -2513,7 +2540,7 @@ msgstr ""
 "Датотеке одреднице ресурса имају проширење „.gresource.xml“,\n"
 "а датотеке ресурса имају проширење „.gresource“."
 
-#: gio/glib-compile-resources.c:797
+#: gio/glib-compile-resources.c:880
 msgid "You should give exactly one file name\n"
 msgstr "Треба да наведете тачно један назив датотеке\n"
 
@@ -3305,7 +3332,7 @@ msgid "Error truncating file: %s"
 msgstr "Грешка при сасецању датотеке: %s"
 
 #: gio/glocalfileoutputstream.c:662 gio/glocalfileoutputstream.c:907
-#: gio/glocalfileoutputstream.c:1218 gio/gsubprocess.c:226
+#: gio/glocalfileoutputstream.c:1218 gio/gsubprocess.c:229
 #, c-format
 msgid "Error opening file “%s”: %s"
 msgstr "Грешка отварања датотеке „%s“: %s"
@@ -3327,7 +3354,7 @@ msgstr "Датотека је измењена спољним програмом
 msgid "Error removing old file: %s"
 msgstr "Грешка приликом уклањања старе датотеке: %s"
 
-#: gio/gmemoryinputstream.c:474 gio/gmemoryoutputstream.c:772
+#: gio/gmemoryinputstream.c:474 gio/gmemoryoutputstream.c:762
 msgid "Invalid GSeekType supplied"
 msgstr "Није исправно одређена врста ГПретраге"
 
@@ -3339,25 +3366,25 @@ msgstr "Неисправан захтев претраге"
 msgid "Cannot truncate GMemoryInputStream"
 msgstr "Не могу да скратим улазни ток ГМеморије"
 
-#: gio/gmemoryoutputstream.c:567
+#: gio/gmemoryoutputstream.c:568
 msgid "Memory output stream not resizable"
 msgstr "Величина излазне меморије се не може променити"
 
-#: gio/gmemoryoutputstream.c:583
+#: gio/gmemoryoutputstream.c:584
 msgid "Failed to resize memory output stream"
 msgstr "Нисам успеода променим величину излазног меморијског тока"
 
-#: gio/gmemoryoutputstream.c:673
+#: gio/gmemoryoutputstream.c:663
 msgid ""
 "Amount of memory required to process the write is larger than available "
 "address space"
 msgstr "Има више меморије за упис него што има места у датој адреси"
 
-#: gio/gmemoryoutputstream.c:782
+#: gio/gmemoryoutputstream.c:772
 msgid "Requested seek before the beginning of the stream"
 msgstr "Захтевано је премотавање на део пре почетка тока"
 
-#: gio/gmemoryoutputstream.c:797
+#: gio/gmemoryoutputstream.c:787
 msgid "Requested seek beyond the end of the stream"
 msgstr "Захтевано је премотавање на део након завршетка тока"
 
@@ -3460,18 +3487,18 @@ msgstr "Збир вектора достављених у „%s“ је прев
 msgid "Source stream is already closed"
 msgstr "Изворни ток је већ затворен"
 
-#: gio/gresolver.c:386 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
+#: gio/gresolver.c:401 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
 #, c-format
 msgid "Error resolving “%s”: %s"
 msgstr "Грешка у разрешавању „%s“: %s"
 
 #. Translators: The placeholder is for a function name.
-#: gio/gresolver.c:455 gio/gresolver.c:615
+#: gio/gresolver.c:470 gio/gresolver.c:630
 #, c-format
 msgid "%s not implemented"
 msgstr "Ставка „%s“ није израђена"
 
-#: gio/gresolver.c:984 gio/gresolver.c:1036
+#: gio/gresolver.c:999 gio/gresolver.c:1051
 msgid "Invalid domain"
 msgstr "Неисправан домен"
 
@@ -3586,7 +3613,7 @@ msgstr ""
 msgid "  SECTION   An (optional) elf section name\n"
 msgstr "  ОДЕЉАК     Назив (опционално) елф одељка\n"
 
-#: gio/gresource-tool.c:565 gio/gsettings-tool.c:706
+#: gio/gresource-tool.c:565 gio/gsettings-tool.c:718
 msgid "  COMMAND   The (optional) command to explain\n"
 msgstr "  НАРЕДБА    Наредба (опционално) за објашњавање\n"
 
@@ -3618,7 +3645,7 @@ msgstr "ПУТАЊА"
 msgid "  PATH      A resource path\n"
 msgstr "  ПУТАЊА     Путања ресурса\n"
 
-#: gio/gsettings-tool.c:49 gio/gsettings-tool.c:70 gio/gsettings-tool.c:911
+#: gio/gsettings-tool.c:49 gio/gsettings-tool.c:70 gio/gsettings-tool.c:923
 #, c-format
 msgid "No such schema “%s”\n"
 msgstr "Нема такве шеме „%s“\n"
@@ -3649,35 +3676,35 @@ msgstr "Путања мора да се заврши косом цртом (/)\n
 msgid "Path must not contain two adjacent slashes (//)\n"
 msgstr "Путања не сме да садржи две суседне косе црте (//)\n"
 
-#: gio/gsettings-tool.c:541
+#: gio/gsettings-tool.c:553
 msgid "The provided value is outside of the valid range\n"
 msgstr "Обезбеђена вредност је изван важећег опсега\n"
 
-#: gio/gsettings-tool.c:548
+#: gio/gsettings-tool.c:560
 msgid "The key is not writable\n"
 msgstr "У овај кључ се не може уписивати\n"
 
-#: gio/gsettings-tool.c:584
+#: gio/gsettings-tool.c:596
 msgid "List the installed (non-relocatable) schemas"
 msgstr "Наводи инсталиране (непреместљиве) шеме"
 
-#: gio/gsettings-tool.c:590
+#: gio/gsettings-tool.c:602
 msgid "List the installed relocatable schemas"
 msgstr "Наводи инсталиране преместљиве шеме"
 
-#: gio/gsettings-tool.c:596
+#: gio/gsettings-tool.c:608
 msgid "List the keys in SCHEMA"
 msgstr "Наводи кључеве у ШЕМИ"
 
-#: gio/gsettings-tool.c:597 gio/gsettings-tool.c:603 gio/gsettings-tool.c:646
+#: gio/gsettings-tool.c:609 gio/gsettings-tool.c:615 gio/gsettings-tool.c:658
 msgid "SCHEMA[:PATH]"
 msgstr "ШЕМА [:ПУТАЊА]"
 
-#: gio/gsettings-tool.c:602
+#: gio/gsettings-tool.c:614
 msgid "List the children of SCHEMA"
 msgstr "Наводи проистекле из ШЕМЕ"
 
-#: gio/gsettings-tool.c:608
+#: gio/gsettings-tool.c:620
 msgid ""
 "List keys and values, recursively\n"
 "If no SCHEMA is given, list all keys\n"
@@ -3685,48 +3712,48 @@ msgstr ""
 "Наводи кључеве и вредности, рекурзивно\n"
 "Ако СХЕМА није дата, наводи све кључеве\n"
 
-#: gio/gsettings-tool.c:610
+#: gio/gsettings-tool.c:622
 msgid "[SCHEMA[:PATH]]"
 msgstr "[ШЕМА[:ПУТАЊА]]"
 
-#: gio/gsettings-tool.c:615
+#: gio/gsettings-tool.c:627
 msgid "Get the value of KEY"
 msgstr "Добавља вредност кључа"
 
-#: gio/gsettings-tool.c:616 gio/gsettings-tool.c:622 gio/gsettings-tool.c:628
-#: gio/gsettings-tool.c:640 gio/gsettings-tool.c:652
+#: gio/gsettings-tool.c:628 gio/gsettings-tool.c:634 gio/gsettings-tool.c:640
+#: gio/gsettings-tool.c:652 gio/gsettings-tool.c:664
 msgid "SCHEMA[:PATH] KEY"
 msgstr "ШЕМА [:ПУТАЊА] КЉУЧ"
 
-#: gio/gsettings-tool.c:621
+#: gio/gsettings-tool.c:633
 msgid "Query the range of valid values for KEY"
 msgstr "Пропитује опсег важећих вредности за КЉУЧ"
 
-#: gio/gsettings-tool.c:627
+#: gio/gsettings-tool.c:639
 msgid "Query the description for KEY"
 msgstr "Пропитује опис за КЉУЧ"
 
-#: gio/gsettings-tool.c:633
+#: gio/gsettings-tool.c:645
 msgid "Set the value of KEY to VALUE"
 msgstr "Поставља вредност КЉУЧА на ВРЕДНОСТ"
 
-#: gio/gsettings-tool.c:634
+#: gio/gsettings-tool.c:646
 msgid "SCHEMA[:PATH] KEY VALUE"
 msgstr "ШЕМА [:ПУТАЊА] КЉУЧ ВРЕДНОСТ"
 
-#: gio/gsettings-tool.c:639
+#: gio/gsettings-tool.c:651
 msgid "Reset KEY to its default value"
 msgstr "Поново поставља КЉУЧ на подразумевану вредност"
 
-#: gio/gsettings-tool.c:645
+#: gio/gsettings-tool.c:657
 msgid "Reset all keys in SCHEMA to their defaults"
 msgstr "Враћа све кључеве у СХЕМИ на основне вредности"
 
-#: gio/gsettings-tool.c:651
+#: gio/gsettings-tool.c:663
 msgid "Check if KEY is writable"
 msgstr "Проверава да ли је КЉУЧ уписив"
 
-#: gio/gsettings-tool.c:657
+#: gio/gsettings-tool.c:669
 msgid ""
 "Monitor KEY for changes.\n"
 "If no KEY is specified, monitor all keys in SCHEMA.\n"
@@ -3736,11 +3763,11 @@ msgstr ""
 "Ако није наведен ниједан КЉУЧ, прати све кључеве у ШЕМИ.\n"
 "Користите „^C“ да зауставите праћење.\n"
 
-#: gio/gsettings-tool.c:660
+#: gio/gsettings-tool.c:672
 msgid "SCHEMA[:PATH] [KEY]"
 msgstr "ШЕМА [:ПУТАЊА] [КЉУЧ]"
 
-#: gio/gsettings-tool.c:672
+#: gio/gsettings-tool.c:684
 msgid ""
 "Usage:\n"
 "  gsettings --version\n"
@@ -3788,7 +3815,7 @@ msgstr ""
 "Користите „gsettings help НАРЕДБА“ да добијете детаљнију помоћ.\n"
 "\n"
 
-#: gio/gsettings-tool.c:696
+#: gio/gsettings-tool.c:708
 #, c-format
 msgid ""
 "Usage:\n"
@@ -3803,11 +3830,11 @@ msgstr ""
 "%s\n"
 "\n"
 
-#: gio/gsettings-tool.c:702
+#: gio/gsettings-tool.c:714
 msgid "  SCHEMADIR A directory to search for additional schemas\n"
 msgstr "  ШЕМАДИР   Директоријум за тражење додатних шема\n"
 
-#: gio/gsettings-tool.c:710
+#: gio/gsettings-tool.c:722
 msgid ""
 "  SCHEMA    The name of the schema\n"
 "  PATH      The path, for relocatable schemas\n"
@@ -3815,213 +3842,213 @@ msgstr ""
 "  ШЕМА      Име шеме\n"
 "  ПУТАЊА    Путања, за преместиве шеме\n"
 
-#: gio/gsettings-tool.c:715
+#: gio/gsettings-tool.c:727
 msgid "  KEY       The (optional) key within the schema\n"
 msgstr "  КЉУЧ      (изборни) кључ унутар шеме\n"
 
-#: gio/gsettings-tool.c:719
+#: gio/gsettings-tool.c:731
 msgid "  KEY       The key within the schema\n"
 msgstr "  КЉУЧ      Кључ унутар шеме\n"
 
-#: gio/gsettings-tool.c:723
+#: gio/gsettings-tool.c:735
 msgid "  VALUE     The value to set\n"
 msgstr "  ВРЕДНОСТ  Вредност за подешавање\n"
 
-#: gio/gsettings-tool.c:778
+#: gio/gsettings-tool.c:790
 #, c-format
 msgid "Could not load schemas from %s: %s\n"
 msgstr "Не могу да учитам шеме из „%s“: %s\n"
 
-#: gio/gsettings-tool.c:790
+#: gio/gsettings-tool.c:802
 msgid "No schemas installed\n"
 msgstr "Ниједна шема није инсталирана\n"
 
-#: gio/gsettings-tool.c:869
+#: gio/gsettings-tool.c:881
 msgid "Empty schema name given\n"
 msgstr "Дат је празан назив шеме\n"
 
-#: gio/gsettings-tool.c:924
+#: gio/gsettings-tool.c:936
 #, c-format
 msgid "No such key “%s”\n"
 msgstr "Нема таквог кључа „%s“\n"
 
-#: gio/gsocket.c:413
+#: gio/gsocket.c:417
 msgid "Invalid socket, not initialized"
 msgstr "Неисправна утичница, није покренуто"
 
-#: gio/gsocket.c:420
+#: gio/gsocket.c:424
 #, c-format
 msgid "Invalid socket, initialization failed due to: %s"
 msgstr "Неисправна утичница, покретање није успело због: %s"
 
-#: gio/gsocket.c:428
+#: gio/gsocket.c:432
 msgid "Socket is already closed"
 msgstr "Утичница је већ затворена"
 
-#: gio/gsocket.c:443 gio/gsocket.c:3190 gio/gsocket.c:4420 gio/gsocket.c:4478
+#: gio/gsocket.c:447 gio/gsocket.c:3194 gio/gsocket.c:4427 gio/gsocket.c:4485
 msgid "Socket I/O timed out"
 msgstr "Истекло време за У/И утичнице"
 
-#: gio/gsocket.c:578
+#: gio/gsocket.c:582
 #, c-format
 msgid "creating GSocket from fd: %s"
 msgstr "правим ГУтичницу из фд-а: %s"
 
-#: gio/gsocket.c:607 gio/gsocket.c:671 gio/gsocket.c:678
+#: gio/gsocket.c:611 gio/gsocket.c:675 gio/gsocket.c:682
 #, c-format
 msgid "Unable to create socket: %s"
 msgstr "Не могу да направим утичницу: %s"
 
-#: gio/gsocket.c:671
+#: gio/gsocket.c:675
 msgid "Unknown family was specified"
 msgstr "Задата је непозната породица"
 
-#: gio/gsocket.c:678
+#: gio/gsocket.c:682
 msgid "Unknown protocol was specified"
 msgstr "Задат је непознати протокол"
 
-#: gio/gsocket.c:1169
+#: gio/gsocket.c:1173
 #, c-format
 msgid "Cannot use datagram operations on a non-datagram socket."
 msgstr "Не могу да користим датаграм радње над недатаграмском утичницом."
 
-#: gio/gsocket.c:1186
+#: gio/gsocket.c:1190
 #, c-format
 msgid "Cannot use datagram operations on a socket with a timeout set."
 msgstr ""
 "Не могу да користим датаграмске радње над утичницом са подешеним истицањем "
 "времена."
 
-#: gio/gsocket.c:1993
+#: gio/gsocket.c:1997
 #, c-format
 msgid "could not get local address: %s"
 msgstr "не могу да добијем локалну адресу: %s"
 
-#: gio/gsocket.c:2039
+#: gio/gsocket.c:2043
 #, c-format
 msgid "could not get remote address: %s"
 msgstr "не могу да добијем удаљену адресу: %s"
 
-#: gio/gsocket.c:2105
+#: gio/gsocket.c:2109
 #, c-format
 msgid "could not listen: %s"
 msgstr "не могу да слушам: %s"
 
-#: gio/gsocket.c:2209
+#: gio/gsocket.c:2213
 #, c-format
 msgid "Error binding to address %s: %s"
 msgstr "Грешка при повезивању на адресу %s: %s"
 
-#: gio/gsocket.c:2385 gio/gsocket.c:2422 gio/gsocket.c:2532 gio/gsocket.c:2557
-#: gio/gsocket.c:2620 gio/gsocket.c:2678 gio/gsocket.c:2696
+#: gio/gsocket.c:2389 gio/gsocket.c:2426 gio/gsocket.c:2536 gio/gsocket.c:2561
+#: gio/gsocket.c:2624 gio/gsocket.c:2682 gio/gsocket.c:2700
 #, c-format
 msgid "Error joining multicast group: %s"
 msgstr "Грешка приликом приступања групи вишеструког емитовања: %s"
 
-#: gio/gsocket.c:2386 gio/gsocket.c:2423 gio/gsocket.c:2533 gio/gsocket.c:2558
-#: gio/gsocket.c:2621 gio/gsocket.c:2679 gio/gsocket.c:2697
+#: gio/gsocket.c:2390 gio/gsocket.c:2427 gio/gsocket.c:2537 gio/gsocket.c:2562
+#: gio/gsocket.c:2625 gio/gsocket.c:2683 gio/gsocket.c:2701
 #, c-format
 msgid "Error leaving multicast group: %s"
 msgstr "Грешка приликом напуштања групе вишеструког емитовања: %s"
 
-#: gio/gsocket.c:2387
+#: gio/gsocket.c:2391
 msgid "No support for source-specific multicast"
 msgstr "Нема подршке за посебно вишеструко емитовање извора"
 
-#: gio/gsocket.c:2534
+#: gio/gsocket.c:2538
 msgid "Unsupported socket family"
 msgstr "Није подржана породица утичнице"
 
-#: gio/gsocket.c:2559
+#: gio/gsocket.c:2563
 msgid "source-specific not an IPv4 address"
 msgstr "посебни извор није ИПв4 адреса"
 
-#: gio/gsocket.c:2583
+#: gio/gsocket.c:2587
 #, c-format
 msgid "Interface name too long"
 msgstr "Назив интерфејса је предугачак"
 
-#: gio/gsocket.c:2596 gio/gsocket.c:2646
+#: gio/gsocket.c:2600 gio/gsocket.c:2650
 #, c-format
 msgid "Interface not found: %s"
 msgstr "Интерфејс није нађен: %s"
 
-#: gio/gsocket.c:2622
+#: gio/gsocket.c:2626
 msgid "No support for IPv4 source-specific multicast"
 msgstr "Нема подршке за посебно вишеструко емитовање ИПв4 извора"
 
-#: gio/gsocket.c:2680
+#: gio/gsocket.c:2684
 msgid "No support for IPv6 source-specific multicast"
 msgstr "Нема подршке за посебно вишеструко емитовање ИПв6 извора"
 
-#: gio/gsocket.c:2889
+#: gio/gsocket.c:2893
 #, c-format
 msgid "Error accepting connection: %s"
 msgstr "грешка у прихватању везе: %s"
 
-#: gio/gsocket.c:3015
+#: gio/gsocket.c:3019
 msgid "Connection in progress"
 msgstr "Повезивање је у току"
 
-#: gio/gsocket.c:3066
+#: gio/gsocket.c:3070
 msgid "Unable to get pending error: "
 msgstr "Не могу да добијем грешку на чекању: "
 
-#: gio/gsocket.c:3255
+#: gio/gsocket.c:3259
 #, c-format
 msgid "Error receiving data: %s"
 msgstr "Грешка у примању података: %s"
 
-#: gio/gsocket.c:3452
+#: gio/gsocket.c:3456
 #, c-format
 msgid "Error sending data: %s"
 msgstr "Грешка у слању података: %s"
 
-#: gio/gsocket.c:3639
+#: gio/gsocket.c:3643
 #, c-format
 msgid "Unable to shutdown socket: %s"
 msgstr "Не могу да угасим утичницу: %s"
 
-#: gio/gsocket.c:3720
+#: gio/gsocket.c:3724
 #, c-format
 msgid "Error closing socket: %s"
 msgstr "Грешка у затварању утичнице: %s"
 
-#: gio/gsocket.c:4413
+#: gio/gsocket.c:4420
 #, c-format
 msgid "Waiting for socket condition: %s"
 msgstr "Чекам услов утичнице: %s"
 
-#: gio/gsocket.c:4804 gio/gsocket.c:4820 gio/gsocket.c:4833
+#: gio/gsocket.c:4810 gio/gsocket.c:4826 gio/gsocket.c:4839
 #, c-format
 msgid "Unable to send message: %s"
 msgstr "Не могу да пошаљем поруку: %s"
 
-#: gio/gsocket.c:4805 gio/gsocket.c:4821 gio/gsocket.c:4834
+#: gio/gsocket.c:4811 gio/gsocket.c:4827 gio/gsocket.c:4840
 msgid "Message vectors too large"
 msgstr "Вектори поруке су превелики"
 
-#: gio/gsocket.c:4850 gio/gsocket.c:4852 gio/gsocket.c:4999 gio/gsocket.c:5084
-#: gio/gsocket.c:5262 gio/gsocket.c:5302 gio/gsocket.c:5304
+#: gio/gsocket.c:4856 gio/gsocket.c:4858 gio/gsocket.c:5005 gio/gsocket.c:5090
+#: gio/gsocket.c:5268 gio/gsocket.c:5308 gio/gsocket.c:5310
 #, c-format
 msgid "Error sending message: %s"
 msgstr "Грешка при слању поруке: %s"
 
-#: gio/gsocket.c:5026
+#: gio/gsocket.c:5032
 msgid "GSocketControlMessage not supported on Windows"
 msgstr "Порука управљања Гутичницом није подржана на Виндоузу"
 
-#: gio/gsocket.c:5495 gio/gsocket.c:5571 gio/gsocket.c:5797
+#: gio/gsocket.c:5505 gio/gsocket.c:5581 gio/gsocket.c:5807
 #, c-format
 msgid "Error receiving message: %s"
 msgstr "Грешка при примању поруке: %s"
 
-#: gio/gsocket.c:6070 gio/gsocket.c:6081 gio/gsocket.c:6127
+#: gio/gsocket.c:6090 gio/gsocket.c:6101 gio/gsocket.c:6164
 #, c-format
 msgid "Unable to read socket credentials: %s"
 msgstr "Не могу да прочитам уверења утичнице: %s"
 
-#: gio/gsocket.c:6136
+#: gio/gsocket.c:6173
 msgid "g_socket_get_credentials not implemented for this OS"
 msgstr "г_утичница_добавља_уверења није примењена за овај оперативни систем"
 
@@ -4039,11 +4066,11 @@ msgstr "Не могу да се повежем на „%s“: "
 msgid "Could not connect: "
 msgstr "Не могу да се повежем: "
 
-#: gio/gsocketclient.c:1162 gio/gsocketclient.c:1749
+#: gio/gsocketclient.c:1202 gio/gsocketclient.c:1793
 msgid "Proxying over a non-TCP connection is not supported."
 msgstr "Посредовање преко везе која није ТЦП није подржано."
 
-#: gio/gsocketclient.c:1194 gio/gsocketclient.c:1778
+#: gio/gsocketclient.c:1234 gio/gsocketclient.c:1822
 #, c-format
 msgid "Proxy protocol “%s” is not supported."
 msgstr "Протокол посредника „%s“ није подржан."
@@ -4142,13 +4169,14 @@ msgstr "СОЦКСв5 посредник не подржава дати тип 
 msgid "Unknown SOCKSv5 proxy error."
 msgstr "Непозната грешка СОЦКСв5 посредника."
 
-#: gio/gtestdbus.c:612 glib/gspawn-win32.c:311
+#: gio/gtestdbus.c:612 glib/gspawn-win32.c:314
 #, c-format
 msgid "Failed to create pipe for communicating with child process (%s)"
 msgstr "Нисам успео да направим спојку за везу са потпроцесом (%s)"
 
 #: gio/gtestdbus.c:619
 #, c-format
+#| msgid "Seek not supported on stream"
 msgid "Pipes are not supported in this platform"
 msgstr "Спојке нису подржане на овој платформи"
 
@@ -4183,27 +4211,32 @@ msgstr "Привремено не могу да разрешим „%s“"
 msgid "Error resolving “%s”"
 msgstr "Грешка у разрешивању „%s“"
 
-#: gio/gtlscertificate.c:431
+#: gio/gtlscertificate.c:478
 msgid "No PEM-encoded private key found"
 msgstr "Нисам пронашао ПЕМ шифровани приватни кључ"
 
-#: gio/gtlscertificate.c:441
+#: gio/gtlscertificate.c:488
 msgid "Cannot decrypt PEM-encoded private key"
 msgstr "Не могу да дешифрујем ПЕМ шифровани приватни кључ"
 
-#: gio/gtlscertificate.c:452
+#: gio/gtlscertificate.c:499
 msgid "Could not parse PEM-encoded private key"
 msgstr "Не могу да рашчланим ПЕМ шифровани приватни кључ"
 
-#: gio/gtlscertificate.c:479
+#: gio/gtlscertificate.c:526
 msgid "No PEM-encoded certificate found"
 msgstr "Нисам пронашао ПЕМ шифровано уверење"
 
-#: gio/gtlscertificate.c:488
+#: gio/gtlscertificate.c:535
 msgid "Could not parse PEM-encoded certificate"
 msgstr "Не могу да рашчланим ПЕМ шифровано уверење"
 
-#: gio/gtlscertificate.c:844
+#: gio/gtlscertificate.c:796
+#| msgid "This GTlsBackend does not support creating PKCS #11 certificates"
+msgid "The current TLS backend does not support PKCS #12"
+msgstr "Тренутни ТЛС позадинац не подржава ПКЦС #12"
+
+#: gio/gtlscertificate.c:1013
 msgid "This GTlsBackend does not support creating PKCS #11 certificates"
 msgstr "Овај ГТлс позадинац не подржава стварање ПКЦС #11 уверења"
 
@@ -4229,7 +4262,12 @@ msgstr ""
 msgid "The password entered is incorrect."
 msgstr "Унешена лозинка је погрешна."
 
-#: gio/gunixconnection.c:166 gio/gunixconnection.c:579
+#: gio/gunixconnection.c:125
+#| msgid "Setting attribute %s not supported"
+msgid "Sending FD is not supported"
+msgstr "Слање описника датотеке није подржано"
+
+#: gio/gunixconnection.c:178 gio/gunixconnection.c:596
 #, c-format
 msgid "Expecting 1 control message, got %d"
 msgid_plural "Expecting 1 control message, got %d"
@@ -4238,11 +4276,11 @@ msgstr[1] "Очекујем једну контролну поруку, доби
 msgstr[2] "Очекујем једну контролну поруку, добио сам %d"
 msgstr[3] "Очекујем једну контролну поруку, добио сам %d"
 
-#: gio/gunixconnection.c:182 gio/gunixconnection.c:591
+#: gio/gunixconnection.c:194 gio/gunixconnection.c:608
 msgid "Unexpected type of ancillary data"
 msgstr "Неочекивана врста подређених података"
 
-#: gio/gunixconnection.c:200
+#: gio/gunixconnection.c:212
 #, c-format
 msgid "Expecting one fd, but got %d\n"
 msgid_plural "Expecting one fd, but got %d\n"
@@ -4251,38 +4289,43 @@ msgstr[1] "Очекујем један описник датотеке, али 
 msgstr[2] "Очекујем један описник датотеке, али добих %d\n"
 msgstr[3] "Очекујем један описник датотеке, али добих %d\n"
 
-#: gio/gunixconnection.c:219
+#: gio/gunixconnection.c:231
 msgid "Received invalid fd"
 msgstr "Примљен је неисправни fd"
 
-#: gio/gunixconnection.c:363
+#: gio/gunixconnection.c:238
+#| msgid "URIs not supported"
+msgid "Receiving FD is not supported"
+msgstr "Примање описника датотеке није подржано"
+
+#: gio/gunixconnection.c:380
 msgid "Error sending credentials: "
 msgstr "Грешка у слању акредитива: "
 
-#: gio/gunixconnection.c:520
+#: gio/gunixconnection.c:537
 #, c-format
 msgid "Error checking if SO_PASSCRED is enabled for socket: %s"
 msgstr ""
 "Грешка приликом провере да ли је „SO_PASSCRED“ омогућен за утичницу: %s"
 
-#: gio/gunixconnection.c:536
+#: gio/gunixconnection.c:553
 #, c-format
 msgid "Error enabling SO_PASSCRED: %s"
 msgstr "Грешка приликом омогућавања „SO_PASSCRED“: %s"
 
-#: gio/gunixconnection.c:565
+#: gio/gunixconnection.c:582
 msgid ""
 "Expecting to read a single byte for receiving credentials but read zero bytes"
 msgstr ""
 "Очекивано да се прочита један бајт за добијање акредитива, али је прочитано "
 "нула бајтова"
 
-#: gio/gunixconnection.c:605
+#: gio/gunixconnection.c:622
 #, c-format
 msgid "Not expecting control message, but got %d"
 msgstr "Не очекивах контролну поруку, али добих %d"
 
-#: gio/gunixconnection.c:630
+#: gio/gunixconnection.c:647
 #, c-format
 msgid "Error while disabling SO_PASSCRED: %s"
 msgstr "Грешка приликом онемогућавања „SO_PASSCRED“: %s"
@@ -4298,7 +4341,7 @@ msgstr "Грешка приликом читања из описивача да
 msgid "Error closing file descriptor: %s"
 msgstr "Грешка приликом затварања описника датотеке: %s"
 
-#: gio/gunixmounts.c:2785 gio/gunixmounts.c:2838
+#: gio/gunixmounts.c:2809 gio/gunixmounts.c:2862
 msgid "Filesystem root"
 msgstr "Корени систем датотека"
 
@@ -4309,7 +4352,7 @@ msgstr "Корени систем датотека"
 msgid "Error writing to file descriptor: %s"
 msgstr "Грешка приликом писања у описивач датотеке: %s"
 
-#: gio/gunixsocketaddress.c:244
+#: gio/gunixsocketaddress.c:251
 msgid "Abstract UNIX domain socket addresses not supported on this system"
 msgstr "Апстрактна ЈУНИКС утичница адреса домена није подржана на овом систему"
 
@@ -4461,8 +4504,8 @@ msgstr "Нисам успеода проширим комадну линију 
 msgid "Unrepresentable character in conversion input"
 msgstr "Неприказив знак у уносу за претварање"
 
-#: glib/gconvert.c:495 glib/gutf8.c:871 glib/gutf8.c:1083 glib/gutf8.c:1220
-#: glib/gutf8.c:1324
+#: glib/gconvert.c:495 glib/gutf8.c:886 glib/gutf8.c:1099 glib/gutf8.c:1236
+#: glib/gutf8.c:1340
 msgid "Partial character sequence at end of input"
 msgstr "Непотпун низ знакова на крају улаза"
 
@@ -5038,16 +5081,16 @@ msgstr "Канал се завршава делимичним знаком"
 msgid "Can’t do a raw read in g_io_channel_read_to_end"
 msgstr "Не могу да читам без обраде у г_уи_каналу_читај_до_краја"
 
-#: glib/gkeyfile.c:791
+#: glib/gkeyfile.c:794
 msgid "Valid key file could not be found in search dirs"
 msgstr ""
 "Не могу да нађем исправну датотеку са кључевима међу директоријумима претраге"
 
-#: glib/gkeyfile.c:828
+#: glib/gkeyfile.c:831
 msgid "Not a regular file"
 msgstr "Није обична датотека"
 
-#: glib/gkeyfile.c:1283
+#: glib/gkeyfile.c:1289
 #, c-format
 msgid ""
 "Key file contains line “%s” which is not a key-value pair, group, or comment"
@@ -5055,49 +5098,50 @@ msgstr ""
 "Датотека са кључевима садржи ред „%s“ што не чини пар кључ-вредност, групу "
 "или примедбу"
 
-#: glib/gkeyfile.c:1340
+#: glib/gkeyfile.c:1346
 #, c-format
 msgid "Invalid group name: %s"
 msgstr "Неисправан назив групе: %s"
 
-#: glib/gkeyfile.c:1362
+#: glib/gkeyfile.c:1370
 msgid "Key file does not start with a group"
 msgstr "Датотека са кључевима не почиње групом"
 
-#: glib/gkeyfile.c:1388
+#: glib/gkeyfile.c:1394
 #, c-format
-msgid "Invalid key name: %s"
-msgstr "Неисправан назив кључа: %s"
+#| msgid "Invalid key name: %s"
+msgid "Invalid key name: %.*s"
+msgstr "Неисправан назив кључа: %.*s"
 
-#: glib/gkeyfile.c:1415
+#: glib/gkeyfile.c:1422
 #, c-format
 msgid "Key file contains unsupported encoding “%s”"
 msgstr "Датотека са кључевима садржи неподржано кодирање „%s“"
 
-#: glib/gkeyfile.c:1664 glib/gkeyfile.c:1837 glib/gkeyfile.c:3287
-#: glib/gkeyfile.c:3351 glib/gkeyfile.c:3481 glib/gkeyfile.c:3613
-#: glib/gkeyfile.c:3759 glib/gkeyfile.c:3994 glib/gkeyfile.c:4061
+#: glib/gkeyfile.c:1677 glib/gkeyfile.c:1850 glib/gkeyfile.c:3297
+#: glib/gkeyfile.c:3361 glib/gkeyfile.c:3491 glib/gkeyfile.c:3623
+#: glib/gkeyfile.c:3769 glib/gkeyfile.c:4004 glib/gkeyfile.c:4071
 #, c-format
 msgid "Key file does not have group “%s”"
 msgstr "Датотека са кључевима нема групу „%s“"
 
-#: glib/gkeyfile.c:1792
+#: glib/gkeyfile.c:1805
 #, c-format
 msgid "Key file does not have key “%s” in group “%s”"
 msgstr "Датотека са кључевима не садржи кључ „%s“ у групи „%s“"
 
-#: glib/gkeyfile.c:1954 glib/gkeyfile.c:2070
+#: glib/gkeyfile.c:1967 glib/gkeyfile.c:2083
 #, c-format
 msgid "Key file contains key “%s” with value “%s” which is not UTF-8"
 msgstr "Датотека са кључевима садржи кључ „%s“ вредности „%s“ што није УТФ-8"
 
-#: glib/gkeyfile.c:1974 glib/gkeyfile.c:2090 glib/gkeyfile.c:2529
+#: glib/gkeyfile.c:1987 glib/gkeyfile.c:2103 glib/gkeyfile.c:2542
 #, c-format
 msgid ""
 "Key file contains key “%s” which has a value that cannot be interpreted."
 msgstr "Датотека са кључевима садржи кључ „%s“ неразумљиве вредности."
 
-#: glib/gkeyfile.c:2747 glib/gkeyfile.c:3116
+#: glib/gkeyfile.c:2757 glib/gkeyfile.c:3126
 #, c-format
 msgid ""
 "Key file contains key “%s” in group “%s” which has a value that cannot be "
@@ -5105,36 +5149,36 @@ msgid ""
 msgstr ""
 "Датотека са кључевима садржи кључ „%s“ у групи „%s“ неразумљиве вредности."
 
-#: glib/gkeyfile.c:2825 glib/gkeyfile.c:2902
+#: glib/gkeyfile.c:2835 glib/gkeyfile.c:2912
 #, c-format
 msgid "Key “%s” in group “%s” has value “%s” where %s was expected"
 msgstr "Кључ „%s“ у групи „%s“ има вредност „%s“ где је очекивано %s"
 
-#: glib/gkeyfile.c:4304
+#: glib/gkeyfile.c:4324
 msgid "Key file contains escape character at end of line"
 msgstr "Датотека са кључевима садржи знак истицања на крају реда"
 
-#: glib/gkeyfile.c:4326
+#: glib/gkeyfile.c:4346
 #, c-format
 msgid "Key file contains invalid escape sequence “%s”"
 msgstr "Датотека са кључевима садржи недозвољен низ истицања „%s“"
 
-#: glib/gkeyfile.c:4470
+#: glib/gkeyfile.c:4491
 #, c-format
 msgid "Value “%s” cannot be interpreted as a number."
 msgstr "Вредност „%s“ се не може сматрати бројем."
 
-#: glib/gkeyfile.c:4484
+#: glib/gkeyfile.c:4505
 #, c-format
 msgid "Integer value “%s” out of range"
 msgstr "Целобројна вредност „%s“ је изван опсега"
 
-#: glib/gkeyfile.c:4517
+#: glib/gkeyfile.c:4538
 #, c-format
 msgid "Value “%s” cannot be interpreted as a float number."
 msgstr "Вредност „%s“ се не може сматрати реалним бројем једноструке тачности."
 
-#: glib/gkeyfile.c:4556
+#: glib/gkeyfile.c:4577
 #, c-format
 msgid "Value “%s” cannot be interpreted as a boolean."
 msgstr "Вредност „%s“ се не може сматрати истинитосном."
@@ -5429,7 +5473,7 @@ msgstr "Грешка при рашчлањивању могућности %s"
 msgid "Missing argument for %s"
 msgstr "Недостаје аргумент за %s"
 
-#: glib/goption.c:2185
+#: glib/goption.c:2184
 #, c-format
 msgid "Unknown option %s"
 msgstr "Непозната опција %s"
@@ -5832,123 +5876,137 @@ msgstr "Садржај празан (или садржи само белине)"
 msgid "Failed to read data from child process (%s)"
 msgstr "Неуспело читање података од потпроцеса (%s)"
 
-#: glib/gspawn.c:461
+#: glib/gspawn.c:462
 #, c-format
 msgid "Unexpected error in reading data from a child process (%s)"
 msgstr "Неочекивана грешка приликом читања података из дете процеса (%s)"
 
-#: glib/gspawn.c:546
+#: glib/gspawn.c:547
 #, c-format
 msgid "Unexpected error in waitpid() (%s)"
 msgstr "Неочекивана грешка у функцији „waitpid()“ (%s)"
 
-#: glib/gspawn.c:1166 glib/gspawn-win32.c:1407
+#: glib/gspawn.c:1175 glib/gspawn-win32.c:1438
 #, c-format
 msgid "Child process exited with code %ld"
 msgstr "Потпроцес је изашао са шифром %ld"
 
-#: glib/gspawn.c:1174
+#: glib/gspawn.c:1183
 #, c-format
 msgid "Child process killed by signal %ld"
 msgstr "Потпроцес је убијен сигналом %ld"
 
-#: glib/gspawn.c:1181
+#: glib/gspawn.c:1190
 #, c-format
 msgid "Child process stopped by signal %ld"
 msgstr "Потпроцес је заустављен сигналом %ld"
 
-#: glib/gspawn.c:1188
+#: glib/gspawn.c:1197
 #, c-format
 msgid "Child process exited abnormally"
 msgstr "Потпроцес је неочекивано прекинут"
 
-#: glib/gspawn.c:1864 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
+#: glib/gspawn.c:1890 glib/gspawn-win32.c:353 glib/gspawn-win32.c:361
 #, c-format
 msgid "Failed to read from child pipe (%s)"
 msgstr "Нисам успео да читам из спојке порода (%s)"
 
-#: glib/gspawn.c:2166
+#: glib/gspawn.c:2253
 #, c-format
 msgid "Failed to spawn child process “%s” (%s)"
 msgstr "Нисам успео да извршим потпроцес „%s“ (%s)"
 
 # за сада овако, можда гранање, умножавање? виљушкање ;-)
-#: glib/gspawn.c:2283
+#: glib/gspawn.c:2370
 #, c-format
 msgid "Failed to fork (%s)"
 msgstr "Нисам успео да исцепим (%s)"
 
-#: glib/gspawn.c:2443 glib/gspawn-win32.c:381
+#: glib/gspawn.c:2530 glib/gspawn-win32.c:384
 #, c-format
 msgid "Failed to change to directory “%s” (%s)"
 msgstr "Нисам успео да пређем у директоријум „%s“ (%s)"
 
-#: glib/gspawn.c:2453
+#: glib/gspawn.c:2540
 #, c-format
 msgid "Failed to execute child process “%s” (%s)"
 msgstr "Нисам успео да извршим потпроцес „%s“ (%s)"
 
-#: glib/gspawn.c:2463
+#: glib/gspawn.c:2550
+#, c-format
+#| msgid "Failed to open file “%s”: open() failed: %s"
+msgid "Failed to open file to remap file descriptor (%s)"
+msgstr ""
+"Нисам успео да отворим датотеку да поново мапирам описника датотеке (%s)"
+
+#: glib/gspawn.c:2558
 #, c-format
-msgid "Failed to redirect output or input of child process (%s)"
-msgstr "Нисам успео да преусмерим улаз или излаз потпроцеса (%s)"
+#| msgid "Failed to redirect output or input of child process (%s)"
+msgid "Failed to duplicate file descriptor for child process (%s)"
+msgstr "Нисам успео да удвостручим описника датотеке за изрођени процес (%s)"
 
-#: glib/gspawn.c:2472
+#: glib/gspawn.c:2567
 #, c-format
 msgid "Failed to fork child process (%s)"
 msgstr "Нисам успео да исцепим потпроцес (%s)"
 
-#: glib/gspawn.c:2480
+#: glib/gspawn.c:2575
 #, c-format
 #| msgid "Failed to read data from child process (%s)"
 msgid "Failed to close file descriptor for child process (%s)"
-msgstr "Ð\9dиÑ\81ам Ñ\83Ñ\81пео Ð´Ð° Ð·Ð°Ñ\82воÑ\80им Ð¾Ð¿Ð¸Ñ\81ника Ð´Ð°Ñ\82оÑ\82еке Ð·Ð° Ð¿Ð¾Ñ\82процес (%s)"
+msgstr "Ð\9dиÑ\81ам Ñ\83Ñ\81пео Ð´Ð° Ð·Ð°Ñ\82воÑ\80им Ð¾Ð¿Ð¸Ñ\81ника Ð´Ð°Ñ\82оÑ\82еке Ð·Ð° Ð¸Ð·Ñ\80оÑ\92ени процес (%s)"
 
-#: glib/gspawn.c:2488
+#: glib/gspawn.c:2583
 #, c-format
 msgid "Unknown error executing child process “%s”"
 msgstr "Непозната грешка при извршавању потпроцеса „%s“"
 
-#: glib/gspawn.c:2512
+#: glib/gspawn.c:2607
 #, c-format
 msgid "Failed to read enough data from child pid pipe (%s)"
 msgstr "Није успео да прочита довољно података из цевке ка потпроцесу (%s)"
 
-#: glib/gspawn-win32.c:294
+#: glib/gspawn-win32.c:297
 msgid "Failed to read data from child process"
 msgstr "Нисам успео да читам податке из потпроцеса"
 
-#: glib/gspawn-win32.c:387 glib/gspawn-win32.c:392 glib/gspawn-win32.c:511
+#: glib/gspawn-win32.c:390 glib/gspawn-win32.c:395 glib/gspawn-win32.c:521
 #, c-format
 msgid "Failed to execute child process (%s)"
 msgstr "Нисам успео да извршим потпроцес (%s)"
 
-#: glib/gspawn-win32.c:461
+#: glib/gspawn-win32.c:400
+#, c-format
+#| msgid "Failed to fork child process (%s)"
+msgid "Failed to dup() in child process (%s)"
+msgstr "Нисам успео да „dup()“ у изрођеном процесу (%s)"
+
+#: glib/gspawn-win32.c:471
 #, c-format
 msgid "Invalid program name: %s"
 msgstr "Није исправан назив програма: %s"
 
-#: glib/gspawn-win32.c:471 glib/gspawn-win32.c:779
+#: glib/gspawn-win32.c:481 glib/gspawn-win32.c:807
 #, c-format
 msgid "Invalid string in argument vector at %d: %s"
 msgstr "Није исправна ниска — члан вектора у %d: %s"
 
-#: glib/gspawn-win32.c:482 glib/gspawn-win32.c:794
+#: glib/gspawn-win32.c:492 glib/gspawn-win32.c:823
 #, c-format
 msgid "Invalid string in environment: %s"
 msgstr "Није исправна ниска у окружењу: %s"
 
-#: glib/gspawn-win32.c:775
+#: glib/gspawn-win32.c:803
 #, c-format
 msgid "Invalid working directory: %s"
 msgstr "Није исправна радна фасцикла: %s"
 
-#: glib/gspawn-win32.c:837
+#: glib/gspawn-win32.c:868
 #, c-format
 msgid "Failed to execute helper program (%s)"
 msgstr "Нисам успео да извршим помоћнички програм (%s)"
 
-#: glib/gspawn-win32.c:1064
+#: glib/gspawn-win32.c:1096
 msgid ""
 "Unexpected error in g_io_channel_win32_poll() reading data from a child "
 "process"
@@ -5956,21 +6014,21 @@ msgstr ""
 "Неочекивана грешка док су у „g_io_channel_win32_poll()“ читани подаци из "
 "потпроцеса"
 
-#: glib/gstrfuncs.c:3345 glib/gstrfuncs.c:3447
+#: glib/gstrfuncs.c:3351 glib/gstrfuncs.c:3453
 msgid "Empty string is not a number"
 msgstr "Празна ниска није број"
 
-#: glib/gstrfuncs.c:3369
+#: glib/gstrfuncs.c:3375
 #, c-format
 msgid "“%s” is not a signed number"
 msgstr "„%s“ није потписан број"
 
-#: glib/gstrfuncs.c:3379 glib/gstrfuncs.c:3483
+#: glib/gstrfuncs.c:3385 glib/gstrfuncs.c:3489
 #, c-format
 msgid "Number “%s” is out of bounds [%s, %s]"
 msgstr "Број „%s“ је ван граница [%s, %s]"
 
-#: glib/gstrfuncs.c:3473
+#: glib/gstrfuncs.c:3479
 #, c-format
 msgid "“%s” is not an unsigned number"
 msgstr "„%s“ није непотписан број"
@@ -6031,168 +6089,168 @@ msgstr "Путања није апсолутна, а основна путања
 msgid "Missing ‘=’ and parameter value"
 msgstr "Недостаје „=“ и вредност параметра"
 
-#: glib/gutf8.c:817
+#: glib/gutf8.c:832
 msgid "Failed to allocate memory"
 msgstr "Нисам успео да доделим меморију"
 
-#: glib/gutf8.c:950
+#: glib/gutf8.c:965
 msgid "Character out of range for UTF-8"
 msgstr "Знак ван опсега за УТФ-8"
 
-#: glib/gutf8.c:1051 glib/gutf8.c:1060 glib/gutf8.c:1190 glib/gutf8.c:1199
-#: glib/gutf8.c:1338 glib/gutf8.c:1435
+#: glib/gutf8.c:1067 glib/gutf8.c:1076 glib/gutf8.c:1206 glib/gutf8.c:1215
+#: glib/gutf8.c:1354 glib/gutf8.c:1451
 msgid "Invalid sequence in conversion input"
 msgstr "Није исправан низ у уносу за претварање"
 
-#: glib/gutf8.c:1349 glib/gutf8.c:1446
+#: glib/gutf8.c:1365 glib/gutf8.c:1462
 msgid "Character out of range for UTF-16"
 msgstr "Знак ван опсега за УТФ-16"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2770
+#: glib/gutils.c:2849
 #, c-format
 msgid "%.1f kB"
 msgstr "%.1f kB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2772
+#: glib/gutils.c:2851
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2774
+#: glib/gutils.c:2853
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2776
+#: glib/gutils.c:2855
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2778
+#: glib/gutils.c:2857
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2780
+#: glib/gutils.c:2859
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2784
+#: glib/gutils.c:2863
 #, c-format
 msgid "%.1f KiB"
 msgstr "%.1f KiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2786
+#: glib/gutils.c:2865
 #, c-format
 msgid "%.1f MiB"
 msgstr "%.1f MiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2788
+#: glib/gutils.c:2867
 #, c-format
 msgid "%.1f GiB"
 msgstr "%.1f GiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2790
+#: glib/gutils.c:2869
 #, c-format
 msgid "%.1f TiB"
 msgstr "%.1f TiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2792
+#: glib/gutils.c:2871
 #, c-format
 msgid "%.1f PiB"
 msgstr "%.1f PiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2794
+#: glib/gutils.c:2873
 #, c-format
 msgid "%.1f EiB"
 msgstr "%.1f EiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2798
+#: glib/gutils.c:2877
 #, c-format
 msgid "%.1f kb"
 msgstr "%.1f kb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2800
+#: glib/gutils.c:2879
 #, c-format
 msgid "%.1f Mb"
 msgstr "%.1f Mb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2802
+#: glib/gutils.c:2881
 #, c-format
 msgid "%.1f Gb"
 msgstr "%.1f Gb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2804
+#: glib/gutils.c:2883
 #, c-format
 msgid "%.1f Tb"
 msgstr "%.1f Tb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2806
+#: glib/gutils.c:2885
 #, c-format
 msgid "%.1f Pb"
 msgstr "%.1f Pb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2808
+#: glib/gutils.c:2887
 #, c-format
 msgid "%.1f Eb"
 msgstr "%.1f Eb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2812
+#: glib/gutils.c:2891
 #, c-format
 msgid "%.1f Kib"
 msgstr "%.1f Kib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2814
+#: glib/gutils.c:2893
 #, c-format
 msgid "%.1f Mib"
 msgstr "%.1f Mib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2816
+#: glib/gutils.c:2895
 #, c-format
 msgid "%.1f Gib"
 msgstr "%.1f Gib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2818
+#: glib/gutils.c:2897
 #, c-format
 msgid "%.1f Tib"
 msgstr "%.1f Tib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2820
+#: glib/gutils.c:2899
 #, c-format
 msgid "%.1f Pib"
 msgstr "%.1f Pib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2822
+#: glib/gutils.c:2901
 #, c-format
 msgid "%.1f Eib"
 msgstr "%.1f Eib"
 
-#: glib/gutils.c:2856 glib/gutils.c:2973
+#: glib/gutils.c:2935 glib/gutils.c:3052
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
@@ -6201,7 +6259,7 @@ msgstr[1] "%u бајта"
 msgstr[2] "%u бајта"
 msgstr[3] "Један бајт"
 
-#: glib/gutils.c:2860
+#: glib/gutils.c:2939
 #, c-format
 msgid "%u bit"
 msgid_plural "%u bits"
@@ -6211,7 +6269,7 @@ msgstr[2] "%u битова"
 msgstr[3] "Један бит"
 
 #. Translators: the %s in "%s bytes" will always be replaced by a number.
-#: glib/gutils.c:2927
+#: glib/gutils.c:3006
 #, c-format
 msgid "%s byte"
 msgid_plural "%s bytes"
@@ -6221,7 +6279,7 @@ msgstr[2] "%s бајтова"
 msgstr[3] "Један бајт"
 
 #. Translators: the %s in "%s bits" will always be replaced by a number.
-#: glib/gutils.c:2932
+#: glib/gutils.c:3011
 #, c-format
 msgid "%s bit"
 msgid_plural "%s bits"
@@ -6235,32 +6293,32 @@ msgstr[3] "Један бит"
 #. * compatibility.  Users will not see this string unless a program is using this deprecated function.
 #. * Please translate as literally as possible.
 #.
-#: glib/gutils.c:2986
+#: glib/gutils.c:3065
 #, c-format
 msgid "%.1f KB"
 msgstr "%.1f KB"
 
-#: glib/gutils.c:2991
+#: glib/gutils.c:3070
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
-#: glib/gutils.c:2996
+#: glib/gutils.c:3075
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
-#: glib/gutils.c:3001
+#: glib/gutils.c:3080
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
-#: glib/gutils.c:3006
+#: glib/gutils.c:3085
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
-#: glib/gutils.c:3011
+#: glib/gutils.c:3090
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
@@ -6380,9 +6438,6 @@ msgstr "%.1f EB"
 #~ msgid "Association creation not supported on win32"
 #~ msgstr "Нису подржане промене придруживања за win32"
 
-#~ msgid "URIs not supported"
-#~ msgstr "Адресе нису подржане"
-
 #~ msgid "Key file does not have key '%s'"
 #~ msgstr "Датотека са кључевима нема кључ „%s“"
 
index e7ea646..e852909 100644 (file)
--- a/po/sv.po
+++ b/po/sv.po
@@ -4,13 +4,14 @@
 # Daniel Nylander <po@danielnylander.se>, 2006-2012.
 # Sebastian Rasmussen <sebras@gmail.com>, 2014, 2015.
 # Anders Jonsson <anders.jonsson@norsjovallen.se>, 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022.
+# Luna Jernberg <droidbittin@gmail.com>, 2021, 2022.
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: glib\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/glib/issues\n"
-"POT-Creation-Date: 2022-01-26 19:23+0000\n"
-"PO-Revision-Date: 2022-01-26 21:25+0100\n"
+"POT-Creation-Date: 2022-03-22 15:19+0000\n"
+"PO-Revision-Date: 2022-03-22 16:33+0100\n"
 "Last-Translator: Anders Jonsson <anders.jonsson@norsjovallen.se>\n"
 "Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
 "Language: sv\n"
@@ -20,6 +21,14 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 "X-Generator: Poedit 3.0.1\n"
 
+#: gio/gappinfo.c:333
+msgid "Setting default applications not supported yet"
+msgstr "Inställning av standardprogram stöds inte ännu"
+
+#: gio/gappinfo.c:366
+msgid "Setting application as last used for type not supported yet"
+msgstr "Inställning av program som senast använt för typ stöds inte ännu"
+
 #: gio/gapplication.c:500
 msgid "GApplication options"
 msgstr "GApplication-alternativ"
@@ -41,7 +50,7 @@ msgid "Replace the running instance"
 msgstr "Ersätt den körande instansen"
 
 #: gio/gapplication-tool.c:45 gio/gapplication-tool.c:46 gio/gio-tool.c:227
-#: gio/gresource-tool.c:494 gio/gsettings-tool.c:572
+#: gio/gresource-tool.c:494 gio/gsettings-tool.c:584
 msgid "Print help"
 msgstr "Skriv ut hjälp"
 
@@ -53,7 +62,7 @@ msgstr "[KOMMANDO]"
 msgid "Print version"
 msgstr "Skriv ut version"
 
-#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:578
+#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:590
 msgid "Print version information and exit"
 msgstr "Skriv ut versionsinformation och avsluta"
 
@@ -115,8 +124,8 @@ msgstr "Kommandot att skriva ut detaljerad hjälp för"
 msgid "Application identifier in D-Bus format (eg: org.example.viewer)"
 msgstr "Programidentifierare i D-Bus-format (t.ex: org.example.viewer)"
 
-#: gio/gapplication-tool.c:74 gio/glib-compile-resources.c:738
-#: gio/glib-compile-resources.c:744 gio/glib-compile-resources.c:772
+#: gio/gapplication-tool.c:74 gio/glib-compile-resources.c:820
+#: gio/glib-compile-resources.c:826 gio/glib-compile-resources.c:855
 #: gio/gresource-tool.c:501 gio/gresource-tool.c:567
 msgid "FILE"
 msgstr "FIL"
@@ -141,7 +150,7 @@ msgstr "PARAMETER"
 msgid "Optional parameter to the action invocation, in GVariant format"
 msgstr "Frivillig parameter till åtgärdsstarten, i GVariant-format"
 
-#: gio/gapplication-tool.c:98 gio/gresource-tool.c:532 gio/gsettings-tool.c:664
+#: gio/gapplication-tool.c:98 gio/gresource-tool.c:532 gio/gsettings-tool.c:676
 #, c-format
 msgid ""
 "Unknown command %s\n"
@@ -155,7 +164,7 @@ msgid "Usage:\n"
 msgstr "Användning:\n"
 
 #: gio/gapplication-tool.c:116 gio/gresource-tool.c:557
-#: gio/gsettings-tool.c:699
+#: gio/gsettings-tool.c:711
 msgid "Arguments:\n"
 msgstr "Argument:\n"
 
@@ -278,7 +287,7 @@ msgstr "Strömmen är redan stängd"
 msgid "Truncate not supported on base stream"
 msgstr "Kapning stöds inte på basströmmen"
 
-#: gio/gcancellable.c:319 gio/gdbusconnection.c:1873 gio/gdbusprivate.c:1416
+#: gio/gcancellable.c:319 gio/gdbusconnection.c:1857 gio/gdbusprivate.c:1418
 #: gio/gsimpleasyncresult.c:871 gio/gsimpleasyncresult.c:897
 #, c-format
 msgid "Operation was cancelled"
@@ -299,7 +308,7 @@ msgstr "Inte tillräckligt med utrymme i målet"
 #: gio/gcharsetconverter.c:342 gio/gdatainputstream.c:848
 #: gio/gdatainputstream.c:1266 glib/gconvert.c:449 glib/gconvert.c:879
 #: glib/giochannel.c:1573 glib/giochannel.c:1615 glib/giochannel.c:2470
-#: glib/gutf8.c:875 glib/gutf8.c:1328
+#: glib/gutf8.c:890 glib/gutf8.c:1344
 msgid "Invalid byte sequence in conversion input"
 msgstr "Ogiltig bytesekvens i konverteringsindata"
 
@@ -309,7 +318,7 @@ msgstr "Ogiltig bytesekvens i konverteringsindata"
 msgid "Error during conversion: %s"
 msgstr "Fel vid konvertering: %s"
 
-#: gio/gcharsetconverter.c:445 gio/gsocket.c:1143
+#: gio/gcharsetconverter.c:445 gio/gsocket.c:1147
 msgid "Cancellable initialization not supported"
 msgstr "Avbrytningsbar initiering stöds inte"
 
@@ -323,37 +332,37 @@ msgstr "Konvertering från teckentabellen ”%s” till ”%s” stöds inte"
 msgid "Could not open converter from “%s” to “%s”"
 msgstr "Kunde inte öppna konverteraren från ”%s” till ”%s”"
 
-#: gio/gcontenttype.c:454
+#: gio/gcontenttype.c:470
 #, c-format
 msgid "%s type"
 msgstr "%s-typ"
 
-#: gio/gcontenttype-win32.c:192
+#: gio/gcontenttype-win32.c:196
 msgid "Unknown type"
 msgstr "Okänd typ"
 
-#: gio/gcontenttype-win32.c:194
+#: gio/gcontenttype-win32.c:198
 #, c-format
 msgid "%s filetype"
 msgstr "%s-filtyp"
 
-#: gio/gcredentials.c:323
+#: gio/gcredentials.c:335
 msgid "GCredentials contains invalid data"
 msgstr "GCredentials innehåller ogiltiga data"
 
-#: gio/gcredentials.c:383 gio/gcredentials.c:667
+#: gio/gcredentials.c:395 gio/gcredentials.c:686
 msgid "GCredentials is not implemented on this OS"
 msgstr "GCredentials är inte implementerat för detta operativsystem"
 
-#: gio/gcredentials.c:538 gio/gcredentials.c:556
+#: gio/gcredentials.c:550 gio/gcredentials.c:568
 msgid "There is no GCredentials support for your platform"
 msgstr "Det finns inget stöd för GCredentials för din plattform"
 
-#: gio/gcredentials.c:607
+#: gio/gcredentials.c:626
 msgid "GCredentials does not contain a process ID on this OS"
 msgstr "GCredentials innehåller inte ett process-ID för detta OS"
 
-#: gio/gcredentials.c:661
+#: gio/gcredentials.c:680
 msgid "Credentials spoofing is not possible on this OS"
 msgstr "Inloggningsuppgiftsspoofning är inte möjligt i detta OS"
 
@@ -361,17 +370,17 @@ msgstr "Inloggningsuppgiftsspoofning är inte möjligt i detta OS"
 msgid "Unexpected early end-of-stream"
 msgstr "Oväntat tidig end-of-stream"
 
-#: gio/gdbusaddress.c:159 gio/gdbusaddress.c:233 gio/gdbusaddress.c:322
+#: gio/gdbusaddress.c:162 gio/gdbusaddress.c:236 gio/gdbusaddress.c:325
 #, c-format
 msgid "Unsupported key “%s” in address entry “%s”"
 msgstr "Nyckeln ”%s” stöds inte i adressposten ”%s”"
 
-#: gio/gdbusaddress.c:172
+#: gio/gdbusaddress.c:175
 #, c-format
 msgid "Meaningless key/value pair combination in address entry “%s”"
 msgstr "Betydelselös kombination av nyckel/värde-par i adressposten ”%s”"
 
-#: gio/gdbusaddress.c:181
+#: gio/gdbusaddress.c:184
 #, c-format
 msgid ""
 "Address “%s” is invalid (need exactly one of path, dir, tmpdir, or abstract "
@@ -380,28 +389,28 @@ msgstr ""
 "Adressen ”%s” är ogiltig (behöver exakt en av sökväg, katalog, "
 "temporärkatalog eller abstrakta nycklar)"
 
-#: gio/gdbusaddress.c:248 gio/gdbusaddress.c:259 gio/gdbusaddress.c:274
-#: gio/gdbusaddress.c:337 gio/gdbusaddress.c:348
+#: gio/gdbusaddress.c:251 gio/gdbusaddress.c:262 gio/gdbusaddress.c:277
+#: gio/gdbusaddress.c:340 gio/gdbusaddress.c:351
 #, c-format
 msgid "Error in address “%s” — the “%s” attribute is malformed"
 msgstr "Fel i adressen ”%s” — attributet ”%s” är felformulerat"
 
-#: gio/gdbusaddress.c:418 gio/gdbusaddress.c:682
+#: gio/gdbusaddress.c:421 gio/gdbusaddress.c:680
 #, c-format
 msgid "Unknown or unsupported transport “%s” for address “%s”"
 msgstr "Transport ”%s” är okänd eller saknar stöd för adressen ”%s”"
 
-#: gio/gdbusaddress.c:462
+#: gio/gdbusaddress.c:465
 #, c-format
 msgid "Address element “%s” does not contain a colon (:)"
 msgstr "Adresselementet ”%s” innehåller inte ett kolontecken (:)"
 
-#: gio/gdbusaddress.c:471
+#: gio/gdbusaddress.c:474
 #, c-format
 msgid "Transport name in address element “%s” must not be empty"
 msgstr "Transportnamn i adresselementet ”%s” får inte vara tomt"
 
-#: gio/gdbusaddress.c:492
+#: gio/gdbusaddress.c:495
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” does not contain an equal "
@@ -410,14 +419,14 @@ msgstr ""
 "Nyckel/Värde-par %d, ”%s”, i adresselementet ”%s” innehåller inte ett "
 "likhetstecken"
 
-#: gio/gdbusaddress.c:503
+#: gio/gdbusaddress.c:506
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” must not have an empty key"
 msgstr ""
 "Nyckel/Värde-par %d, ”%s”, i adresselementet ”%s” får inte ha en tom nyckel"
 
-#: gio/gdbusaddress.c:517
+#: gio/gdbusaddress.c:520
 #, c-format
 msgid ""
 "Error unescaping key or value in Key/Value pair %d, “%s”, in address element "
@@ -426,7 +435,7 @@ msgstr ""
 "Fel vid borttagning av escape i nyckel eller värde i Nyckel/Värde-par %d, "
 "”%s”, i adresselementet ”%s”"
 
-#: gio/gdbusaddress.c:589
+#: gio/gdbusaddress.c:588
 #, c-format
 msgid ""
 "Error in address “%s” — the unix transport requires exactly one of the keys "
@@ -435,77 +444,77 @@ msgstr ""
 "Fel i adressen ”%s” — unix-transporten kräver att exakt en av nycklarna "
 "”path” eller ”abstract” har ställts in"
 
-#: gio/gdbusaddress.c:625
+#: gio/gdbusaddress.c:623
 #, c-format
 msgid "Error in address “%s” — the host attribute is missing or malformed"
 msgstr "Fel i adressen ”%s” — värdattributet saknas eller är felformulerat"
 
-#: gio/gdbusaddress.c:639
+#: gio/gdbusaddress.c:637
 #, c-format
 msgid "Error in address “%s” — the port attribute is missing or malformed"
 msgstr "Fel i adressen ”%s” — portattributet saknas eller är felformulerat"
 
-#: gio/gdbusaddress.c:653
+#: gio/gdbusaddress.c:651
 #, c-format
 msgid "Error in address “%s” — the noncefile attribute is missing or malformed"
 msgstr ""
 "Fel i adressen ”%s” — attributet noncefile saknas eller är felformulerat"
 
-#: gio/gdbusaddress.c:674
+#: gio/gdbusaddress.c:672
 msgid "Error auto-launching: "
 msgstr "Fel vid automatisk körning: "
 
-#: gio/gdbusaddress.c:727
+#: gio/gdbusaddress.c:725
 #, c-format
 msgid "Error opening nonce file “%s”: %s"
 msgstr "Fel vid öppning av nonce-filen ”%s”: %s"
 
-#: gio/gdbusaddress.c:746
+#: gio/gdbusaddress.c:744
 #, c-format
 msgid "Error reading from nonce file “%s”: %s"
 msgstr "Fel vid läsning från nonce-filen ”%s”: %s"
 
-#: gio/gdbusaddress.c:755
+#: gio/gdbusaddress.c:753
 #, c-format
 msgid "Error reading from nonce file “%s”, expected 16 bytes, got %d"
 msgstr "Fel vid läsning från nonce-filen ”%s”, förväntade 16 byte, fick %d"
 
-#: gio/gdbusaddress.c:773
+#: gio/gdbusaddress.c:771
 #, c-format
 msgid "Error writing contents of nonce file “%s” to stream:"
 msgstr "Fel vid skrivning av innehåll i nonce-filen ”%s” till ström:"
 
-#: gio/gdbusaddress.c:988
+#: gio/gdbusaddress.c:986
 msgid "The given address is empty"
 msgstr "Angivna adressen är tom"
 
-#: gio/gdbusaddress.c:1101
+#: gio/gdbusaddress.c:1099
 #, c-format
-msgid "Cannot spawn a message bus when setuid"
-msgstr "Kan inte starta en meddelandebuss med setuid satt"
+msgid "Cannot spawn a message bus when AT_SECURE is set"
+msgstr "Kan inte starta en meddelandebuss när AT_SECURE har ställts in"
 
-#: gio/gdbusaddress.c:1108
+#: gio/gdbusaddress.c:1106
 msgid "Cannot spawn a message bus without a machine-id: "
 msgstr "Kan inte starta en meddelandebuss utan ett maskin-id: "
 
-#: gio/gdbusaddress.c:1115
+#: gio/gdbusaddress.c:1113
 #, c-format
 msgid "Cannot autolaunch D-Bus without X11 $DISPLAY"
 msgstr "Kan inte starta D-Bus automatiskt utan X11-miljövariabeln $DISPLAY"
 
-#: gio/gdbusaddress.c:1157
+#: gio/gdbusaddress.c:1155
 #, c-format
 msgid "Error spawning command line “%s”: "
 msgstr "Fel vid körning av kommandoraden ”%s”: "
 
-#: gio/gdbusaddress.c:1226
+#: gio/gdbusaddress.c:1224
 #, c-format
 msgid "Cannot determine session bus address (not implemented for this OS)"
 msgstr ""
 "Kan inte fastställa adress för sessionsbuss (inte implementerat för detta "
 "operativsystem)"
 
-#: gio/gdbusaddress.c:1375 gio/gdbusconnection.c:7334
+#: gio/gdbusaddress.c:1373 gio/gdbusconnection.c:7318
 #, c-format
 msgid ""
 "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
@@ -514,7 +523,7 @@ msgstr ""
 "Kan inte fastställa bussadressen från miljövariabeln DBUS_STARTER_BUS_TYPE — "
 "okänt värde ”%s”"
 
-#: gio/gdbusaddress.c:1384 gio/gdbusconnection.c:7343
+#: gio/gdbusaddress.c:1382 gio/gdbusconnection.c:7327
 msgid ""
 "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
 "variable is not set"
@@ -522,7 +531,7 @@ msgstr ""
 "Kan inte fastställa bussadress därför att miljövariabeln "
 "DBUS_STARTER_BUS_TYPE inte är inställd"
 
-#: gio/gdbusaddress.c:1394
+#: gio/gdbusaddress.c:1392
 #, c-format
 msgid "Unknown bus type %d"
 msgstr "Okänd busstyp %d"
@@ -551,12 +560,12 @@ msgstr "Användar-ID:n måste vara samma för motpart och server"
 msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
 msgstr "Avbröts via GDBusAuthObserver::authorize-authenticated-peer"
 
-#: gio/gdbusauthmechanismsha1.c:298
+#: gio/gdbusauthmechanismsha1.c:300
 #, c-format
 msgid "Error when getting information for directory “%s”: %s"
 msgstr "Fel vid hämtning av information för katalogen ”%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:313
+#: gio/gdbusauthmechanismsha1.c:315
 #, c-format
 msgid ""
 "Permissions on directory “%s” are malformed. Expected mode 0700, got 0%o"
@@ -564,32 +573,32 @@ msgstr ""
 "Rättigheter på katalogen ”%s” är felformulerade. Förväntade rättigheten "
 "0700, fick 0%o"
 
-#: gio/gdbusauthmechanismsha1.c:346 gio/gdbusauthmechanismsha1.c:357
+#: gio/gdbusauthmechanismsha1.c:348 gio/gdbusauthmechanismsha1.c:359
 #, c-format
 msgid "Error creating directory “%s”: %s"
 msgstr "Fel vid skapandet av katalogen ”%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:359 gio/gfile.c:1062 gio/gfile.c:1300
-#: gio/gfile.c:1438 gio/gfile.c:1676 gio/gfile.c:1731 gio/gfile.c:1789
-#: gio/gfile.c:1873 gio/gfile.c:1930 gio/gfile.c:1994 gio/gfile.c:2049
-#: gio/gfile.c:3754 gio/gfile.c:3809 gio/gfile.c:4102 gio/gfile.c:4572
-#: gio/gfile.c:4983 gio/gfile.c:5068 gio/gfile.c:5158 gio/gfile.c:5255
-#: gio/gfile.c:5342 gio/gfile.c:5443 gio/gfile.c:8153 gio/gfile.c:8243
-#: gio/gfile.c:8327 gio/win32/gwinhttpfile.c:453
+#: gio/gdbusauthmechanismsha1.c:361 gio/gfile.c:1080 gio/gfile.c:1318
+#: gio/gfile.c:1456 gio/gfile.c:1694 gio/gfile.c:1749 gio/gfile.c:1807
+#: gio/gfile.c:1891 gio/gfile.c:1948 gio/gfile.c:2012 gio/gfile.c:2067
+#: gio/gfile.c:3772 gio/gfile.c:3912 gio/gfile.c:4205 gio/gfile.c:4675
+#: gio/gfile.c:5086 gio/gfile.c:5171 gio/gfile.c:5261 gio/gfile.c:5358
+#: gio/gfile.c:5445 gio/gfile.c:5546 gio/gfile.c:8375 gio/gfile.c:8465
+#: gio/gfile.c:8549 gio/win32/gwinhttpfile.c:453
 msgid "Operation not supported"
 msgstr "Åtgärden stöds inte"
 
-#: gio/gdbusauthmechanismsha1.c:402
+#: gio/gdbusauthmechanismsha1.c:404
 #, c-format
 msgid "Error opening keyring “%s” for reading: "
 msgstr "Fel vid öppnandet av nyckelringen ”%s” för läsning: "
 
-#: gio/gdbusauthmechanismsha1.c:425 gio/gdbusauthmechanismsha1.c:747
+#: gio/gdbusauthmechanismsha1.c:427 gio/gdbusauthmechanismsha1.c:769
 #, c-format
 msgid "Line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr "Rad %d av nyckelringen vid ”%s” med innehåll ”%s” är felformulerad"
 
-#: gio/gdbusauthmechanismsha1.c:439 gio/gdbusauthmechanismsha1.c:761
+#: gio/gdbusauthmechanismsha1.c:441 gio/gdbusauthmechanismsha1.c:783
 #, c-format
 msgid ""
 "First token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -597,7 +606,7 @@ msgstr ""
 "Första token på rad %d av nyckelringen i ”%s” med innehållet ”%s” är "
 "felformulerad"
 
-#: gio/gdbusauthmechanismsha1.c:453 gio/gdbusauthmechanismsha1.c:775
+#: gio/gdbusauthmechanismsha1.c:455 gio/gdbusauthmechanismsha1.c:797
 #, c-format
 msgid ""
 "Second token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -605,57 +614,57 @@ msgstr ""
 "Andra token på rad %d av nyckelringen i ”%s” med innehållet ”%s” är "
 "felformulerad"
 
-#: gio/gdbusauthmechanismsha1.c:477
+#: gio/gdbusauthmechanismsha1.c:479
 #, c-format
 msgid "Didn’t find cookie with id %d in the keyring at “%s”"
 msgstr "Hittade inte kaka med id %d i nyckelringen vid ”%s”"
 
-#: gio/gdbusauthmechanismsha1.c:523
+#: gio/gdbusauthmechanismsha1.c:536
 #, c-format
 msgid "Error creating lock file “%s”: %s"
 msgstr "Fel vid skapandet av låsfilen ”%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:587
+#: gio/gdbusauthmechanismsha1.c:609
 #, c-format
 msgid "Error deleting stale lock file “%s”: %s"
 msgstr "Fel vid borttagning av gamla låsfilen ”%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:626
+#: gio/gdbusauthmechanismsha1.c:648
 #, c-format
 msgid "Error closing (unlinked) lock file “%s”: %s"
 msgstr "Fel vid stängning av (avlänkad) låsfil ”%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:637
+#: gio/gdbusauthmechanismsha1.c:659
 #, c-format
 msgid "Error unlinking lock file “%s”: %s"
 msgstr "Fel vid avlänkning av låsfilen ”%s”: %s"
 
-#: gio/gdbusauthmechanismsha1.c:714
+#: gio/gdbusauthmechanismsha1.c:736
 #, c-format
 msgid "Error opening keyring “%s” for writing: "
 msgstr "Fel vid öppning av nyckelringen ”%s” för skrivning: "
 
-#: gio/gdbusauthmechanismsha1.c:908
+#: gio/gdbusauthmechanismsha1.c:930
 #, c-format
 msgid "(Additionally, releasing the lock for “%s” also failed: %s) "
 msgstr "(I tillägg misslyckades även upplåsningen för ”%s”: %s) "
 
-#: gio/gdbusconnection.c:604 gio/gdbusconnection.c:2418
+#: gio/gdbusconnection.c:588 gio/gdbusconnection.c:2402
 msgid "The connection is closed"
 msgstr "Anslutningen är stängd"
 
-#: gio/gdbusconnection.c:1903
+#: gio/gdbusconnection.c:1887
 msgid "Timeout was reached"
 msgstr "Tidsgränsen uppnåddes"
 
-#: gio/gdbusconnection.c:2541
+#: gio/gdbusconnection.c:2525
 msgid ""
 "Unsupported flags encountered when constructing a client-side connection"
 msgstr ""
 "Flaggor som inte stöds påträffades vid konstruktion av en anslutning på "
 "klientsidan"
 
-#: gio/gdbusconnection.c:4269 gio/gdbusconnection.c:4623
+#: gio/gdbusconnection.c:4253 gio/gdbusconnection.c:4607
 #, c-format
 msgid ""
 "No such interface “org.freedesktop.DBus.Properties” on object at path %s"
@@ -663,104 +672,104 @@ msgstr ""
 "Inget sådant gränssnitt ”org.freedesktop.DBus.Properties” på objekt med "
 "sökvägen %s"
 
-#: gio/gdbusconnection.c:4414
+#: gio/gdbusconnection.c:4398
 #, c-format
 msgid "No such property “%s”"
 msgstr "Ingen sådan egenskap ”%s”"
 
-#: gio/gdbusconnection.c:4426
+#: gio/gdbusconnection.c:4410
 #, c-format
 msgid "Property “%s” is not readable"
 msgstr "Egenskapen ”%s” är inte läsbar"
 
-#: gio/gdbusconnection.c:4437
+#: gio/gdbusconnection.c:4421
 #, c-format
 msgid "Property “%s” is not writable"
 msgstr "Egenskapen ”%s” är inte skrivbar"
 
-#: gio/gdbusconnection.c:4457
+#: gio/gdbusconnection.c:4441
 #, c-format
 msgid "Error setting property “%s”: Expected type “%s” but got “%s”"
 msgstr ""
 "Fel vid inställning av egenskapen ”%s”: Förväntade typen ”%s” men fick ”%s”"
 
-#: gio/gdbusconnection.c:4562 gio/gdbusconnection.c:4777
-#: gio/gdbusconnection.c:6760
+#: gio/gdbusconnection.c:4546 gio/gdbusconnection.c:4761
+#: gio/gdbusconnection.c:6744
 #, c-format
 msgid "No such interface “%s”"
 msgstr "Inget sådan gränssnitt ”%s”"
 
-#: gio/gdbusconnection.c:4999 gio/gdbusconnection.c:7274
+#: gio/gdbusconnection.c:4983 gio/gdbusconnection.c:7258
 #, c-format
 msgid "No such interface “%s” on object at path %s"
 msgstr "Inget sådant gränssnitt ”%s” på objekt med sökvägen %s"
 
-#: gio/gdbusconnection.c:5100
+#: gio/gdbusconnection.c:5084
 #, c-format
 msgid "No such method “%s”"
 msgstr "Ingen sådan metod ”%s”"
 
-#: gio/gdbusconnection.c:5131
+#: gio/gdbusconnection.c:5115
 #, c-format
 msgid "Type of message, “%s”, does not match expected type “%s”"
 msgstr "Typ av meddelande, ”%s”, matchar inte förväntade typen ”%s”"
 
-#: gio/gdbusconnection.c:5334
+#: gio/gdbusconnection.c:5318
 #, c-format
 msgid "An object is already exported for the interface %s at %s"
 msgstr "Ett objekt är redan exporterat för gränssnittet %s vid %s"
 
-#: gio/gdbusconnection.c:5561
+#: gio/gdbusconnection.c:5545
 #, c-format
 msgid "Unable to retrieve property %s.%s"
 msgstr "Kunde inte hämta egenskap %s.%s"
 
-#: gio/gdbusconnection.c:5617
+#: gio/gdbusconnection.c:5601
 #, c-format
 msgid "Unable to set property %s.%s"
 msgstr "Kunde inte sätta egenskap %s.%s"
 
-#: gio/gdbusconnection.c:5796
+#: gio/gdbusconnection.c:5780
 #, c-format
 msgid "Method “%s” returned type “%s”, but expected “%s”"
 msgstr "Metoden ”%s” returnerade typen ”%s”, men förväntade ”%s”"
 
-#: gio/gdbusconnection.c:6872
+#: gio/gdbusconnection.c:6856
 #, c-format
 msgid "Method “%s” on interface “%s” with signature “%s” does not exist"
 msgstr "Metoden ”%s” på gränssnittet ”%s” med signaturen ”%s” finns inte"
 
-#: gio/gdbusconnection.c:6993
+#: gio/gdbusconnection.c:6977
 #, c-format
 msgid "A subtree is already exported for %s"
 msgstr "Ett underträd har redan exporterats för %s"
 
-#: gio/gdbusconnection.c:7282
+#: gio/gdbusconnection.c:7266
 #, c-format
 msgid "Object does not exist at path “%s”"
 msgstr "Objektet finns inte på sökvägen ”%s”"
 
-#: gio/gdbusmessage.c:1311
+#: gio/gdbusmessage.c:1301
 msgid "type is INVALID"
 msgstr "typ är OGILTIG"
 
-#: gio/gdbusmessage.c:1322
+#: gio/gdbusmessage.c:1312
 msgid "METHOD_CALL message: PATH or MEMBER header field is missing"
 msgstr "METHOD_CALL-meddelande: rubrikfältet PATH eller MEMBER saknas"
 
-#: gio/gdbusmessage.c:1333
+#: gio/gdbusmessage.c:1323
 msgid "METHOD_RETURN message: REPLY_SERIAL header field is missing"
 msgstr "METHOD_RETURN-meddelande: rubrikfältet REPLY_SERIAL saknas"
 
-#: gio/gdbusmessage.c:1345
+#: gio/gdbusmessage.c:1335
 msgid "ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing"
 msgstr "FELmeddelande: rubrikfältet REPLY_SERIAL eller ERROR_NAME saknas"
 
-#: gio/gdbusmessage.c:1358
+#: gio/gdbusmessage.c:1348
 msgid "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing"
 msgstr "SIGNAL-meddelande: rubrikfältet PATH, INTERFACE eller MEMBER saknas"
 
-#: gio/gdbusmessage.c:1366
+#: gio/gdbusmessage.c:1356
 msgid ""
 "SIGNAL message: The PATH header field is using the reserved value /org/"
 "freedesktop/DBus/Local"
@@ -768,7 +777,7 @@ msgstr ""
 "SIGNAL-meddelande: Rubrikfältet PATH använder det reserverade värdet /org/"
 "freedesktop/DBus/Local"
 
-#: gio/gdbusmessage.c:1374
+#: gio/gdbusmessage.c:1364
 msgid ""
 "SIGNAL message: The INTERFACE header field is using the reserved value org."
 "freedesktop.DBus.Local"
@@ -776,19 +785,19 @@ msgstr ""
 "SIGNAL-meddelande: Rubrikfältet INTERFACE använder det reserverade värdet "
 "org.freedesktop.DBus.Local"
 
-#: gio/gdbusmessage.c:1422 gio/gdbusmessage.c:1482
+#: gio/gdbusmessage.c:1412 gio/gdbusmessage.c:1472
 #, c-format
 msgid "Wanted to read %lu byte but only got %lu"
 msgid_plural "Wanted to read %lu bytes but only got %lu"
 msgstr[0] "Ville läsa %lu byte men fick bara %lu"
 msgstr[1] "Ville läsa %lu byte men fick bara %lu"
 
-#: gio/gdbusmessage.c:1436
+#: gio/gdbusmessage.c:1426
 #, c-format
 msgid "Expected NUL byte after the string “%s” but found byte %d"
 msgstr "Förväntade NUL-byte efter strängen ”%s” men hittade byte %d"
 
-#: gio/gdbusmessage.c:1455
+#: gio/gdbusmessage.c:1445
 #, c-format
 msgid ""
 "Expected valid UTF-8 string but found invalid bytes at byte offset %d "
@@ -798,21 +807,21 @@ msgstr ""
 "(längd av strängen är %d). Den giltiga UTF-8-strängen fram till den punkten "
 "var ”%s”"
 
-#: gio/gdbusmessage.c:1519 gio/gdbusmessage.c:1795 gio/gdbusmessage.c:2006
+#: gio/gdbusmessage.c:1509 gio/gdbusmessage.c:1785 gio/gdbusmessage.c:1996
 msgid "Value nested too deeply"
 msgstr "Värde nästlat för djupt"
 
-#: gio/gdbusmessage.c:1687
+#: gio/gdbusmessage.c:1677
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus object path"
 msgstr "Tolkat värde ”%s” är inte en giltig D-Bus-objektsökväg"
 
-#: gio/gdbusmessage.c:1711
+#: gio/gdbusmessage.c:1701
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature"
 msgstr "Tolkat värde ”%s” är inte en giltig D-Bus-signatur"
 
-#: gio/gdbusmessage.c:1762
+#: gio/gdbusmessage.c:1752
 #, c-format
 msgid ""
 "Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB)."
@@ -823,7 +832,7 @@ msgstr[0] ""
 msgstr[1] ""
 "Påträffade array med längden %u byte. Maximal längd är 2<<26 byte (64 MiB)."
 
-#: gio/gdbusmessage.c:1782
+#: gio/gdbusmessage.c:1772
 #, c-format
 msgid ""
 "Encountered array of type “a%c”, expected to have a length a multiple of %u "
@@ -832,16 +841,16 @@ msgstr ""
 "Påträffade array av typ ”a%c”, förväntad att ha en längd som är en multipel "
 "av %u byte, men visade sig vara %u byte lång"
 
-#: gio/gdbusmessage.c:1936 gio/gdbusmessage.c:2655
+#: gio/gdbusmessage.c:1926 gio/gdbusmessage.c:2645
 msgid "Empty structures (tuples) are not allowed in D-Bus"
 msgstr "Tomma strukturer (tupler) tillåts inte i D-Bus"
 
-#: gio/gdbusmessage.c:1990
+#: gio/gdbusmessage.c:1980
 #, c-format
 msgid "Parsed value “%s” for variant is not a valid D-Bus signature"
 msgstr "Tolkat värde ”%s” för variant är inte en giltig D-Bus-signatur"
 
-#: gio/gdbusmessage.c:2031
+#: gio/gdbusmessage.c:2021
 #, c-format
 msgid ""
 "Error deserializing GVariant with type string “%s” from the D-Bus wire format"
@@ -849,7 +858,7 @@ msgstr ""
 "Fel vid deserialisering av GVariant med typsträngen ”%s” från D-Bus-"
 "transportformatet"
 
-#: gio/gdbusmessage.c:2216
+#: gio/gdbusmessage.c:2206
 #, c-format
 msgid ""
 "Invalid endianness value. Expected 0x6c (“l”) or 0x42 (“B”) but found value "
@@ -858,38 +867,38 @@ msgstr ""
 "Ogiltigt värde för byteordning. Förväntade 0x6c (”l”) eller 0x42 (”B”) men "
 "hittade värdet 0x%02x"
 
-#: gio/gdbusmessage.c:2235
+#: gio/gdbusmessage.c:2225
 #, c-format
 msgid "Invalid major protocol version. Expected 1 but found %d"
 msgstr "Ogiltig större protokollversion. Förväntade 1 men hittade %d"
 
-#: gio/gdbusmessage.c:2293 gio/gdbusmessage.c:2891
+#: gio/gdbusmessage.c:2283 gio/gdbusmessage.c:2881
 msgid "Signature header found but is not of type signature"
 msgstr "Signaturrubrik hittades men är inte av typen signatur"
 
-#: gio/gdbusmessage.c:2305
+#: gio/gdbusmessage.c:2295
 #, c-format
 msgid "Signature header with signature “%s” found but message body is empty"
 msgstr ""
 "Signaturrubrik med signaturen ”%s” hittades men meddelandekroppen är tom"
 
-#: gio/gdbusmessage.c:2320
+#: gio/gdbusmessage.c:2310
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature (for body)"
 msgstr "Tolkat värde ”%s” är inte en giltig D-Bus-signatur (för kropp)"
 
-#: gio/gdbusmessage.c:2352
+#: gio/gdbusmessage.c:2342
 #, 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"
 msgstr[0] "Ingen signaturrubrik i meddelande men meddelandekroppen är %u byte"
 msgstr[1] "Ingen signaturrubrik i meddelande men meddelandekroppen är %u byte"
 
-#: gio/gdbusmessage.c:2362
+#: gio/gdbusmessage.c:2352
 msgid "Cannot deserialize message: "
 msgstr "Kan inte deserialisera meddelande: "
 
-#: gio/gdbusmessage.c:2708
+#: gio/gdbusmessage.c:2698
 #, c-format
 msgid ""
 "Error serializing GVariant with type string “%s” to the D-Bus wire format"
@@ -897,23 +906,23 @@ msgstr ""
 "Fel vid serialisering av GVariant med typsträngen ”%s” till D-Bus-"
 "transportformatet"
 
-#: gio/gdbusmessage.c:2845
+#: gio/gdbusmessage.c:2835
 #, c-format
 msgid ""
 "Number of file descriptors in message (%d) differs from header field (%d)"
 msgstr "Antal filhandtag i meddelande (%d) skiljer sig från rubrikfältet (%d)"
 
-#: gio/gdbusmessage.c:2853
+#: gio/gdbusmessage.c:2843
 msgid "Cannot serialize message: "
 msgstr "Kan inte serialisera meddelandet: "
 
-#: gio/gdbusmessage.c:2906
+#: gio/gdbusmessage.c:2896
 #, c-format
 msgid "Message body has signature “%s” but there is no signature header"
 msgstr ""
 "Meddelandekroppen har signaturen ”%s” men det finns ingen signaturrubrik"
 
-#: gio/gdbusmessage.c:2916
+#: gio/gdbusmessage.c:2906
 #, c-format
 msgid ""
 "Message body has type signature “%s” but signature in the header field is "
@@ -922,52 +931,52 @@ msgstr ""
 "Meddelandekroppen har typsignaturen ”%s” men signaturen i rubrikfältet är "
 "”%s”"
 
-#: gio/gdbusmessage.c:2932
+#: gio/gdbusmessage.c:2922
 #, c-format
 msgid "Message body is empty but signature in the header field is “(%s)”"
 msgstr "Meddelandekroppen är tom men signaturen i rubrikfältet är ”(%s)”"
 
-#: gio/gdbusmessage.c:3487
+#: gio/gdbusmessage.c:3477
 #, c-format
 msgid "Error return with body of type “%s”"
 msgstr "Fel returnerades med kropp av typen ”%s”"
 
-#: gio/gdbusmessage.c:3495
+#: gio/gdbusmessage.c:3485
 msgid "Error return with empty body"
 msgstr "Fel returnerade med tom kropp"
 
-#: gio/gdbusprivate.c:2246
+#: gio/gdbusprivate.c:2185
 #, c-format
 msgid "(Type any character to close this window)\n"
 msgstr "(Skriv vilket tecken som helst för att stänga detta fönster)\n"
 
-#: gio/gdbusprivate.c:2420
+#: gio/gdbusprivate.c:2371
 #, c-format
 msgid "Session dbus not running, and autolaunch failed"
 msgstr "Sessions-dbus kör inte, och autostart misslyckades"
 
-#: gio/gdbusprivate.c:2443
+#: gio/gdbusprivate.c:2394
 #, c-format
 msgid "Unable to get Hardware profile: %s"
 msgstr "Kunde inte hämta hårdvaruprofil: %s"
 
 #. Translators: Both placeholders are file paths
-#: gio/gdbusprivate.c:2494
+#: gio/gdbusprivate.c:2445
 #, c-format
 msgid "Unable to load %s or %s: "
 msgstr "Kunde inte läsa in %s eller %s: "
 
-#: gio/gdbusproxy.c:1569
+#: gio/gdbusproxy.c:1573
 #, c-format
 msgid "Error calling StartServiceByName for %s: "
 msgstr "Fel vid anrop av StartServiceByName för %s: "
 
-#: gio/gdbusproxy.c:1592
+#: gio/gdbusproxy.c:1596
 #, c-format
 msgid "Unexpected reply %d from StartServiceByName(\"%s\") method"
 msgstr "Oväntat svar %d från StartServiceByName(”%s”)-metod"
 
-#: gio/gdbusproxy.c:2699 gio/gdbusproxy.c:2834
+#: gio/gdbusproxy.c:2707 gio/gdbusproxy.c:2842
 #, c-format
 msgid ""
 "Cannot invoke method; proxy is for the well-known name %s without an owner, "
@@ -1022,66 +1031,66 @@ msgstr ""
 "\n"
 "Använd ”%s KOMMANDO --help” för hjälp med varje kommando.\n"
 
-#: gio/gdbus-tool.c:201 gio/gdbus-tool.c:273 gio/gdbus-tool.c:345
-#: gio/gdbus-tool.c:369 gio/gdbus-tool.c:859 gio/gdbus-tool.c:1236
-#: gio/gdbus-tool.c:1724
+#: gio/gdbus-tool.c:202 gio/gdbus-tool.c:274 gio/gdbus-tool.c:346
+#: gio/gdbus-tool.c:370 gio/gdbus-tool.c:860 gio/gdbus-tool.c:1245
+#: gio/gdbus-tool.c:1733
 #, c-format
 msgid "Error: %s\n"
 msgstr "Fel: %s\n"
 
-#: gio/gdbus-tool.c:212 gio/gdbus-tool.c:286 gio/gdbus-tool.c:1740
+#: gio/gdbus-tool.c:213 gio/gdbus-tool.c:287 gio/gdbus-tool.c:1749
 #, c-format
 msgid "Error parsing introspection XML: %s\n"
 msgstr "Fel vid tolkning av introspektions-XML: %s\n"
 
-#: gio/gdbus-tool.c:250
+#: gio/gdbus-tool.c:251
 #, c-format
 msgid "Error: %s is not a valid name\n"
 msgstr "Fel: %s är inte ett giltigt namn\n"
 
-#: gio/gdbus-tool.c:255 gio/gdbus-tool.c:745 gio/gdbus-tool.c:1060
-#: gio/gdbus-tool.c:1890 gio/gdbus-tool.c:2130
+#: gio/gdbus-tool.c:256 gio/gdbus-tool.c:746 gio/gdbus-tool.c:1064
+#: gio/gdbus-tool.c:1899 gio/gdbus-tool.c:2139
 #, c-format
 msgid "Error: %s is not a valid object path\n"
 msgstr "Fel: %s är inte en giltig objektsökväg\n"
 
-#: gio/gdbus-tool.c:403
+#: gio/gdbus-tool.c:404
 msgid "Connect to the system bus"
 msgstr "Anslut till systembussen"
 
-#: gio/gdbus-tool.c:404
+#: gio/gdbus-tool.c:405
 msgid "Connect to the session bus"
 msgstr "Anslut till sessionsbussen"
 
-#: gio/gdbus-tool.c:405
+#: gio/gdbus-tool.c:406
 msgid "Connect to given D-Bus address"
 msgstr "Anslut till angiven D-Bus-adress"
 
-#: gio/gdbus-tool.c:415
+#: gio/gdbus-tool.c:416
 msgid "Connection Endpoint Options:"
 msgstr "Flaggor för anslutningspunkt:"
 
-#: gio/gdbus-tool.c:416
+#: gio/gdbus-tool.c:417
 msgid "Options specifying the connection endpoint"
 msgstr "Flaggor som anger anslutningens ändpunkt"
 
-#: gio/gdbus-tool.c:439
+#: gio/gdbus-tool.c:440
 #, c-format
 msgid "No connection endpoint specified"
 msgstr "Ingen anslutningsändpunkt har angivits"
 
-#: gio/gdbus-tool.c:449
+#: gio/gdbus-tool.c:450
 #, c-format
 msgid "Multiple connection endpoints specified"
 msgstr "Flera anslutningsändpunkter har angivits"
 
-#: gio/gdbus-tool.c:522
+#: gio/gdbus-tool.c:523
 #, c-format
 msgid ""
 "Warning: According to introspection data, interface “%s” does not exist\n"
 msgstr "Varning: Enligt introspektionsdata finns inte gränssnittet ”%s”\n"
 
-#: gio/gdbus-tool.c:531
+#: gio/gdbus-tool.c:532
 #, c-format
 msgid ""
 "Warning: According to introspection data, method “%s” does not exist on "
@@ -1090,160 +1099,164 @@ msgstr ""
 "Varning: Enligt introspektionsdata finns inte metoden ”%s” på gränssnittet "
 "”%s”\n"
 
-#: gio/gdbus-tool.c:593
+#: gio/gdbus-tool.c:594
 msgid "Optional destination for signal (unique name)"
 msgstr "Frivilligt mål för signal (unikt namn)"
 
-#: gio/gdbus-tool.c:594
+#: gio/gdbus-tool.c:595
 msgid "Object path to emit signal on"
 msgstr "Objektsökväg att sända signalen på"
 
-#: gio/gdbus-tool.c:595
+#: gio/gdbus-tool.c:596
 msgid "Signal and interface name"
 msgstr "Signal- och gränssnittsnamn"
 
-#: gio/gdbus-tool.c:628
+#: gio/gdbus-tool.c:629
 msgid "Emit a signal."
 msgstr "Sänd en signal."
 
-#: gio/gdbus-tool.c:683 gio/gdbus-tool.c:997 gio/gdbus-tool.c:1827
-#: gio/gdbus-tool.c:2059 gio/gdbus-tool.c:2279
+#: gio/gdbus-tool.c:684 gio/gdbus-tool.c:1001 gio/gdbus-tool.c:1836
+#: gio/gdbus-tool.c:2068 gio/gdbus-tool.c:2288
 #, c-format
 msgid "Error connecting: %s\n"
 msgstr "Fel vid anslutning: %s\n"
 
-#: gio/gdbus-tool.c:703
+#: gio/gdbus-tool.c:704
 #, c-format
 msgid "Error: %s is not a valid unique bus name.\n"
 msgstr "Fel: %s är inte ett giltigt unikt bussnamn.\n"
 
-#: gio/gdbus-tool.c:722 gio/gdbus-tool.c:1040 gio/gdbus-tool.c:1870
+#: gio/gdbus-tool.c:723 gio/gdbus-tool.c:1044 gio/gdbus-tool.c:1879
 msgid "Error: Object path is not specified\n"
 msgstr "Fel: Objektsökväg har inte angivits\n"
 
-#: gio/gdbus-tool.c:765
+#: gio/gdbus-tool.c:766
 msgid "Error: Signal name is not specified\n"
 msgstr "Fel: Signalnamnet är inte angivet\n"
 
-#: gio/gdbus-tool.c:779
+#: gio/gdbus-tool.c:780
 #, c-format
 msgid "Error: Signal name “%s” is invalid\n"
 msgstr "Fel: Signalnamnet ”%s” är ogiltigt\n"
 
-#: gio/gdbus-tool.c:791
+#: gio/gdbus-tool.c:792
 #, c-format
 msgid "Error: %s is not a valid interface name\n"
 msgstr "Fel: %s är inte ett giltigt gränssnittsnamn\n"
 
-#: gio/gdbus-tool.c:797
+#: gio/gdbus-tool.c:798
 #, c-format
 msgid "Error: %s is not a valid member name\n"
 msgstr "Fel: %s är inte ett giltigt medlemsnamn\n"
 
 #. Use the original non-"parse-me-harder" error
-#: gio/gdbus-tool.c:834 gio/gdbus-tool.c:1172
+#: gio/gdbus-tool.c:835 gio/gdbus-tool.c:1176
 #, c-format
 msgid "Error parsing parameter %d: %s\n"
 msgstr "Fel vid tolkning av parameter %d: %s\n"
 
-#: gio/gdbus-tool.c:866
+#: gio/gdbus-tool.c:867
 #, c-format
 msgid "Error flushing connection: %s\n"
 msgstr "Fel vid tömning av anslutning: %s\n"
 
-#: gio/gdbus-tool.c:893
+#: gio/gdbus-tool.c:895
 msgid "Destination name to invoke method on"
 msgstr "Målnamn att anropa metod på"
 
-#: gio/gdbus-tool.c:894
+#: gio/gdbus-tool.c:896
 msgid "Object path to invoke method on"
 msgstr "Objektsökväg att anropa metod på"
 
-#: gio/gdbus-tool.c:895
+#: gio/gdbus-tool.c:897
 msgid "Method and interface name"
 msgstr "Metod- och gränssnittsnamn"
 
-#: gio/gdbus-tool.c:896
+#: gio/gdbus-tool.c:898
 msgid "Timeout in seconds"
 msgstr "Tidsgräns i sekunder"
 
-#: gio/gdbus-tool.c:942
+#: gio/gdbus-tool.c:899
+msgid "Allow interactive authorization"
+msgstr "Tillåt interaktiv auktorisering"
+
+#: gio/gdbus-tool.c:946
 msgid "Invoke a method on a remote object."
 msgstr "Anropa en metod på ett fjärrobjekt."
 
-#: gio/gdbus-tool.c:1014 gio/gdbus-tool.c:1844 gio/gdbus-tool.c:2084
+#: gio/gdbus-tool.c:1018 gio/gdbus-tool.c:1853 gio/gdbus-tool.c:2093
 msgid "Error: Destination is not specified\n"
 msgstr "Fel: Mål har inte angivits\n"
 
-#: gio/gdbus-tool.c:1025 gio/gdbus-tool.c:1861 gio/gdbus-tool.c:2095
+#: gio/gdbus-tool.c:1029 gio/gdbus-tool.c:1870 gio/gdbus-tool.c:2104
 #, c-format
 msgid "Error: %s is not a valid bus name\n"
 msgstr "Fel: %s är inte ett giltigt bussnamn\n"
 
-#: gio/gdbus-tool.c:1075
+#: gio/gdbus-tool.c:1079
 msgid "Error: Method name is not specified\n"
 msgstr "Fel: Metodnamnet är inte angivet\n"
 
-#: gio/gdbus-tool.c:1086
+#: gio/gdbus-tool.c:1090
 #, c-format
 msgid "Error: Method name “%s” is invalid\n"
 msgstr "Fel: Metodnamnet ”%s” är ogiltigt\n"
 
-#: gio/gdbus-tool.c:1164
+#: gio/gdbus-tool.c:1168
 #, c-format
 msgid "Error parsing parameter %d of type “%s”: %s\n"
 msgstr "Fel vid tolkning av parameter %d av typen ”%s”: %s\n"
 
-#: gio/gdbus-tool.c:1190
+#: gio/gdbus-tool.c:1194
 #, c-format
 msgid "Error adding handle %d: %s\n"
 msgstr "Fel vid tillägg av handtag %d: %s\n"
 
-#: gio/gdbus-tool.c:1686
+#: gio/gdbus-tool.c:1695
 msgid "Destination name to introspect"
 msgstr "Målnamn att introspektera"
 
-#: gio/gdbus-tool.c:1687
+#: gio/gdbus-tool.c:1696
 msgid "Object path to introspect"
 msgstr "Objektsökväg att introspektera"
 
-#: gio/gdbus-tool.c:1688
+#: gio/gdbus-tool.c:1697
 msgid "Print XML"
 msgstr "Skriv ut XML"
 
-#: gio/gdbus-tool.c:1689
+#: gio/gdbus-tool.c:1698
 msgid "Introspect children"
 msgstr "Introspektera barn"
 
-#: gio/gdbus-tool.c:1690
+#: gio/gdbus-tool.c:1699
 msgid "Only print properties"
 msgstr "Skriv endast ut egenskaper"
 
-#: gio/gdbus-tool.c:1779
+#: gio/gdbus-tool.c:1788
 msgid "Introspect a remote object."
 msgstr "Introspektera ett fjärrobjekt."
 
-#: gio/gdbus-tool.c:1985
+#: gio/gdbus-tool.c:1994
 msgid "Destination name to monitor"
 msgstr "Målnamn att övervaka"
 
-#: gio/gdbus-tool.c:1986
+#: gio/gdbus-tool.c:1995
 msgid "Object path to monitor"
 msgstr "Objektsökväg att övervaka"
 
-#: gio/gdbus-tool.c:2011
+#: gio/gdbus-tool.c:2020
 msgid "Monitor a remote object."
 msgstr "Övervaka ett fjärrobjekt."
 
-#: gio/gdbus-tool.c:2069
+#: gio/gdbus-tool.c:2078
 msgid "Error: can’t monitor a non-message-bus connection\n"
 msgstr "Fel: kan inte övervaka en anslutning som ej är på meddelandebuss\n"
 
-#: gio/gdbus-tool.c:2193
+#: gio/gdbus-tool.c:2202
 msgid "Service to activate before waiting for the other one (well-known name)"
 msgstr "Tjänst att aktivera innan den andra väntas på (välkänt namn)"
 
-#: gio/gdbus-tool.c:2196
+#: gio/gdbus-tool.c:2205
 msgid ""
 "Timeout to wait for before exiting with an error (seconds); 0 for no timeout "
 "(default)"
@@ -1251,63 +1264,68 @@ msgstr ""
 "Tidsgräns att vänta på innan vi avslutar med ett fel (sekunder); 0 för ingen "
 "tidsgräns (standard)"
 
-#: gio/gdbus-tool.c:2244
+#: gio/gdbus-tool.c:2253
 msgid "[OPTION…] BUS-NAME"
 msgstr "[FLAGGA…] BUSSNAMN"
 
-#: gio/gdbus-tool.c:2245
+#: gio/gdbus-tool.c:2254
 msgid "Wait for a bus name to appear."
 msgstr "Vänta på att ett bussnamn ska dyka upp."
 
-#: gio/gdbus-tool.c:2321
+#: gio/gdbus-tool.c:2330
 msgid "Error: A service to activate for must be specified.\n"
 msgstr "Fel: En tjänst att aktivera för måste anges.\n"
 
-#: gio/gdbus-tool.c:2326
+#: gio/gdbus-tool.c:2335
 msgid "Error: A service to wait for must be specified.\n"
 msgstr "Fel: En tjänst att vänta på måste anges.\n"
 
-#: gio/gdbus-tool.c:2331
+#: gio/gdbus-tool.c:2340
 msgid "Error: Too many arguments.\n"
 msgstr "Fel: För många argument.\n"
 
-#: gio/gdbus-tool.c:2339 gio/gdbus-tool.c:2346
+#: gio/gdbus-tool.c:2348 gio/gdbus-tool.c:2355
 #, c-format
 msgid "Error: %s is not a valid well-known bus name.\n"
 msgstr "Fel: %s är inte ett giltigt välkänt bussnamn.\n"
 
-#: gio/gdesktopappinfo.c:2106 gio/gdesktopappinfo.c:4935
+#: gio/gdebugcontrollerdbus.c:358
+#, c-format
+msgid "Not authorized to change debug settings"
+msgstr "Inte behörig att ändra felsökningsinställningar"
+
+#: gio/gdesktopappinfo.c:2178 gio/gdesktopappinfo.c:5105
 msgid "Unnamed"
 msgstr "Namnlös"
 
-#: gio/gdesktopappinfo.c:2516
+#: gio/gdesktopappinfo.c:2588
 msgid "Desktop file didn’t specify Exec field"
 msgstr "Desktop-filen angav inget Exec-fält"
 
-#: gio/gdesktopappinfo.c:2804
+#: gio/gdesktopappinfo.c:2896
 msgid "Unable to find terminal required for application"
 msgstr "Kunde inte hitta terminal som krävs för programmet"
 
-#: gio/gdesktopappinfo.c:3455
+#: gio/gdesktopappinfo.c:3625
 #, c-format
 msgid "Can’t create user application configuration folder %s: %s"
 msgstr "Kan inte skapa programkonfigurationsmapp för användare %s: %s"
 
-#: gio/gdesktopappinfo.c:3459
+#: gio/gdesktopappinfo.c:3629
 #, c-format
 msgid "Can’t create user MIME configuration folder %s: %s"
 msgstr "Kan inte skapa MIME-konfigurationsmapp för användare %s: %s"
 
-#: gio/gdesktopappinfo.c:3701 gio/gdesktopappinfo.c:3725
+#: gio/gdesktopappinfo.c:3871 gio/gdesktopappinfo.c:3895
 msgid "Application information lacks an identifier"
 msgstr "Programinformation saknar en identifierare"
 
-#: gio/gdesktopappinfo.c:3961
+#: gio/gdesktopappinfo.c:4131
 #, c-format
 msgid "Can’t create user desktop file %s"
 msgstr "Kan inte skapa desktop-fil %s för användare"
 
-#: gio/gdesktopappinfo.c:4097
+#: gio/gdesktopappinfo.c:4267
 #, c-format
 msgid "Custom definition for %s"
 msgstr "Anpassad definition för %s"
@@ -1335,7 +1353,7 @@ msgstr "enheten har inte implementerat start"
 msgid "drive doesn’t implement stop"
 msgstr "enheten har inte implementerat stop"
 
-#: gio/gdtlsconnection.c:1153 gio/gtlsconnection.c:920
+#: gio/gdtlsconnection.c:1186 gio/gtlsconnection.c:955
 msgid "TLS backend does not implement TLS binding retrieval"
 msgstr "TLS-bakänden implementerar inte hämtande av TLS-bindning"
 
@@ -1376,73 +1394,73 @@ msgstr "Förväntade en GEmblem för GEmblemedIcon"
 #. * trying to find the enclosing (user visible)
 #. * mount of a file, but none exists.
 #.
-#: gio/gfile.c:1561
+#: gio/gfile.c:1579
 msgid "Containing mount does not exist"
 msgstr "Innefattande montering finns inte"
 
-#: gio/gfile.c:2608 gio/glocalfile.c:2486
+#: gio/gfile.c:2626 gio/glocalfile.c:2486
 msgid "Can’t copy over directory"
 msgstr "Kan inte kopiera över katalog"
 
-#: gio/gfile.c:2668
+#: gio/gfile.c:2686
 msgid "Can’t copy directory over directory"
 msgstr "Kan inte kopiera katalog över katalog"
 
-#: gio/gfile.c:2676
+#: gio/gfile.c:2694
 msgid "Target file exists"
 msgstr "Målfilen finns"
 
-#: gio/gfile.c:2695
+#: gio/gfile.c:2713
 msgid "Can’t recursively copy directory"
 msgstr "Kan inte kopiera katalogen rekursivt"
 
-#: gio/gfile.c:2996
+#: gio/gfile.c:3014
 msgid "Splice not supported"
 msgstr "Splice stöds inte"
 
-#: gio/gfile.c:3000
+#: gio/gfile.c:3018
 #, c-format
 msgid "Error splicing file: %s"
 msgstr "Fel vid splice av fil: %s"
 
-#: gio/gfile.c:3152
+#: gio/gfile.c:3170
 msgid "Copy (reflink/clone) between mounts is not supported"
 msgstr "Kopiering (reflänk/klon) mellan monteringar stöds inte"
 
-#: gio/gfile.c:3156
+#: gio/gfile.c:3174
 msgid "Copy (reflink/clone) is not supported or invalid"
 msgstr "Kopiering (reflänk/klon) stöds inte eller är ogiltigt"
 
-#: gio/gfile.c:3161
+#: gio/gfile.c:3179
 msgid "Copy (reflink/clone) is not supported or didn’t work"
 msgstr "Kopiering (reflänk/klon) stöds inte eller fungerade inte"
 
-#: gio/gfile.c:3226
+#: gio/gfile.c:3244
 msgid "Can’t copy special file"
 msgstr "Kan inte kopiera specialfil"
 
-#: gio/gfile.c:4035
+#: gio/gfile.c:4138
 msgid "Invalid symlink value given"
 msgstr "Ogiltigt värde för symbolisk länk angivet"
 
-#: gio/gfile.c:4045 glib/gfileutils.c:2333
+#: gio/gfile.c:4148 glib/gfileutils.c:2333
 msgid "Symbolic links not supported"
 msgstr "Symboliska länkar stöds inte"
 
-#: gio/gfile.c:4213
+#: gio/gfile.c:4316
 msgid "Trash not supported"
 msgstr "Papperskorgen stöds inte"
 
-#: gio/gfile.c:4325
+#: gio/gfile.c:4428
 #, c-format
 msgid "File names cannot contain “%c”"
 msgstr "Filnamn får inte innehålla ”%c”"
 
-#: gio/gfile.c:6806 gio/gvolume.c:364
+#: gio/gfile.c:7028 gio/gvolume.c:364
 msgid "volume doesn’t implement mount"
 msgstr "volymen har inte implementerat montering"
 
-#: gio/gfile.c:6920 gio/gfile.c:6968
+#: gio/gfile.c:7142 gio/gfile.c:7190
 msgid "No application is registered as handling this file"
 msgstr "Inget program är registrerat för hantering av denna fil"
 
@@ -1487,7 +1505,7 @@ msgstr "Kapning tillåts inte på inmatningsströmmen"
 msgid "Truncate not supported on stream"
 msgstr "Kapning stöds inte på strömmen"
 
-#: gio/ghttpproxy.c:91 gio/gresolver.c:443 gio/gresolver.c:596
+#: gio/ghttpproxy.c:91 gio/gresolver.c:458 gio/gresolver.c:611
 #: glib/gconvert.c:1825
 msgid "Invalid hostname"
 msgstr "Ogiltigt värdnamn"
@@ -1574,7 +1592,7 @@ msgid "Could not parse “%s” as IP address mask"
 msgstr "Kunde inte tolka ”%s” som IP-adressmask"
 
 #: gio/ginetsocketaddress.c:203 gio/ginetsocketaddress.c:220
-#: gio/gnativesocketaddress.c:109 gio/gunixsocketaddress.c:221
+#: gio/gnativesocketaddress.c:109 gio/gunixsocketaddress.c:228
 msgid "Not enough space for socket address"
 msgstr "Inte tillräckligt med utrymme för uttagsadress"
 
@@ -2410,15 +2428,15 @@ msgstr "Fel vid komprimering av filen %s"
 msgid "text may not appear inside <%s>"
 msgstr "text får inte vara inuti <%s>"
 
-#: gio/glib-compile-resources.c:737 gio/glib-compile-schemas.c:2172
+#: gio/glib-compile-resources.c:819 gio/glib-compile-schemas.c:2172
 msgid "Show program version and exit"
 msgstr "Visa programversion och avsluta"
 
-#: gio/glib-compile-resources.c:738
+#: gio/glib-compile-resources.c:820
 msgid "Name of the output file"
 msgstr "Namn på utmatningsfilen"
 
-#: gio/glib-compile-resources.c:739
+#: gio/glib-compile-resources.c:821
 msgid ""
 "The directories to load files referenced in FILE from (default: current "
 "directory)"
@@ -2426,56 +2444,60 @@ msgstr ""
 "Katalogerna där filer som hänvisas till i FIL ska läsas från (standard: "
 "aktuell katalog)"
 
-#: gio/glib-compile-resources.c:739 gio/glib-compile-schemas.c:2173
+#: gio/glib-compile-resources.c:821 gio/glib-compile-schemas.c:2173
 #: gio/glib-compile-schemas.c:2202
 msgid "DIRECTORY"
 msgstr "KATALOG"
 
-#: gio/glib-compile-resources.c:740
+#: gio/glib-compile-resources.c:822
 msgid ""
 "Generate output in the format selected for by the target filename extension"
 msgstr "Generera utmatning i formatet valt av målfilnamnets filändelse"
 
-#: gio/glib-compile-resources.c:741
+#: gio/glib-compile-resources.c:823
 msgid "Generate source header"
 msgstr "Generera källkods-header"
 
-#: gio/glib-compile-resources.c:742
+#: gio/glib-compile-resources.c:824
 msgid "Generate source code used to link in the resource file into your code"
 msgstr "Generera källkod som används för att länka in resursfilen i din kod"
 
-#: gio/glib-compile-resources.c:743
+#: gio/glib-compile-resources.c:825
 msgid "Generate dependency list"
 msgstr "Generera beroendelista"
 
-#: gio/glib-compile-resources.c:744
+#: gio/glib-compile-resources.c:826
 msgid "Name of the dependency file to generate"
 msgstr "Namn på beroendefilen att generera"
 
-#: gio/glib-compile-resources.c:745
+#: gio/glib-compile-resources.c:827
 msgid "Include phony targets in the generated dependency file"
 msgstr "Inkludera phony-mål i den genererade beroendefilen"
 
-#: gio/glib-compile-resources.c:746
+#: gio/glib-compile-resources.c:828
 msgid "Don’t automatically create and register resource"
 msgstr "Skapa och registrera inte resursen automatiskt"
 
-#: gio/glib-compile-resources.c:747
+#: gio/glib-compile-resources.c:829
 msgid "Don’t export functions; declare them G_GNUC_INTERNAL"
 msgstr "Exportera inte funktioner; deklarera dem som G_GNUC_INTERNAL"
 
-#: gio/glib-compile-resources.c:748
+#: gio/glib-compile-resources.c:830
 msgid ""
 "Don’t embed resource data in the C file; assume it's linked externally "
 "instead"
 msgstr ""
 "Bädda inte in resursdata i C-filen; anta att de är länkade externt istället"
 
-#: gio/glib-compile-resources.c:749
+#: gio/glib-compile-resources.c:831
 msgid "C identifier name used for the generated source code"
 msgstr "C-identifierarnamn som används för den genererade källkoden"
 
-#: gio/glib-compile-resources.c:775
+#: gio/glib-compile-resources.c:832
+msgid "The target C compiler (default: the CC environment variable)"
+msgstr "Mål-C-kompilatorn (standard: CC-miljövariabeln)"
+
+#: gio/glib-compile-resources.c:858
 msgid ""
 "Compile a resource specification into a resource file.\n"
 "Resource specification files have the extension .gresource.xml,\n"
@@ -2485,7 +2507,7 @@ msgstr ""
 "Resursspecifikationsfiler har filändelsen .gresource.xml,\n"
 "och resursfilen har filändelsen .gresource."
 
-#: gio/glib-compile-resources.c:797
+#: gio/glib-compile-resources.c:880
 msgid "You should give exactly one file name\n"
 msgstr "Du bör ange exakt ett filnamn\n"
 
@@ -3275,13 +3297,13 @@ msgstr "Fel vid skapande av säkerhetskopia: %s"
 msgid "Error renaming temporary file: %s"
 msgstr "Fel vid namnbyte på temporärfil: %s"
 
-#: gio/glocalfileoutputstream.c:609 gio/glocalfileoutputstream.c:1237
+#: gio/glocalfileoutputstream.c:609 gio/glocalfileoutputstream.c:1239
 #, c-format
 msgid "Error truncating file: %s"
 msgstr "Fel vid kapning av fil: %s"
 
 #: gio/glocalfileoutputstream.c:662 gio/glocalfileoutputstream.c:907
-#: gio/glocalfileoutputstream.c:1218 gio/gsubprocess.c:226
+#: gio/glocalfileoutputstream.c:1220 gio/gsubprocess.c:229
 #, c-format
 msgid "Error opening file “%s”: %s"
 msgstr "Fel vid öppning av filen ”%s”: %s"
@@ -3303,7 +3325,7 @@ msgstr "Filen blev externt ändrad"
 msgid "Error removing old file: %s"
 msgstr "Fel vid borttagning av gammal fil: %s"
 
-#: gio/gmemoryinputstream.c:474 gio/gmemoryoutputstream.c:772
+#: gio/gmemoryinputstream.c:474 gio/gmemoryoutputstream.c:762
 msgid "Invalid GSeekType supplied"
 msgstr "Ogiltig GSeekType angavs"
 
@@ -3315,15 +3337,15 @@ msgstr "Ogiltig sökbegäran"
 msgid "Cannot truncate GMemoryInputStream"
 msgstr "Kan inte kapa av GMemoryInputStream"
 
-#: gio/gmemoryoutputstream.c:567
+#: gio/gmemoryoutputstream.c:568
 msgid "Memory output stream not resizable"
 msgstr "Storlek för minnesutmatningsström är inte ändringsbar"
 
-#: gio/gmemoryoutputstream.c:583
+#: gio/gmemoryoutputstream.c:584
 msgid "Failed to resize memory output stream"
 msgstr "Misslyckades med att ändra storlek på minnesutmatningsström"
 
-#: gio/gmemoryoutputstream.c:673
+#: gio/gmemoryoutputstream.c:663
 msgid ""
 "Amount of memory required to process the write is larger than available "
 "address space"
@@ -3331,11 +3353,11 @@ msgstr ""
 "Den mängd minne som krävs för att behandla skrivningen är större än "
 "tillgänglig adressrymd"
 
-#: gio/gmemoryoutputstream.c:782
+#: gio/gmemoryoutputstream.c:772
 msgid "Requested seek before the beginning of the stream"
 msgstr "Begärde sökning innan början av strömmen"
 
-#: gio/gmemoryoutputstream.c:797
+#: gio/gmemoryoutputstream.c:787
 msgid "Requested seek beyond the end of the stream"
 msgstr "Begärde sökning bortom slutet av strömmen"
 
@@ -3438,18 +3460,22 @@ msgstr "Summan av vektorer skickade till %s är för stor"
 msgid "Source stream is already closed"
 msgstr "Källströmmen är redan stängd"
 
-#: gio/gresolver.c:386 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
+#. Translators: the first placeholder is a domain name, the
+#. * second is an error message
+#: gio/gresolver.c:401 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
+#: gio/gthreadedresolver.c:780 gio/gthreadedresolver.c:804
+#: gio/gthreadedresolver.c:829 gio/gthreadedresolver.c:844
 #, c-format
 msgid "Error resolving “%s”: %s"
 msgstr "Fel vid uppslag av ”%s”: %s"
 
 #. Translators: The placeholder is for a function name.
-#: gio/gresolver.c:455 gio/gresolver.c:615
+#: gio/gresolver.c:470 gio/gresolver.c:630
 #, c-format
 msgid "%s not implemented"
 msgstr "%s inte implementerad"
 
-#: gio/gresolver.c:984 gio/gresolver.c:1036
+#: gio/gresolver.c:999 gio/gresolver.c:1051
 msgid "Invalid domain"
 msgstr "Ogiltig domän"
 
@@ -3564,7 +3590,7 @@ msgstr ""
 msgid "  SECTION   An (optional) elf section name\n"
 msgstr "  SEKTION   Ett (eventuellt) elf-sektionsnamn\n"
 
-#: gio/gresource-tool.c:565 gio/gsettings-tool.c:706
+#: gio/gresource-tool.c:565 gio/gsettings-tool.c:718
 msgid "  COMMAND   The (optional) command to explain\n"
 msgstr "  KOMMANDO  (Eventuellt) kommando att förklara\n"
 
@@ -3596,7 +3622,7 @@ msgstr "SÖKVÄG"
 msgid "  PATH      A resource path\n"
 msgstr "  SÖKVÄG    En resurssökväg\n"
 
-#: gio/gsettings-tool.c:49 gio/gsettings-tool.c:70 gio/gsettings-tool.c:911
+#: gio/gsettings-tool.c:49 gio/gsettings-tool.c:70 gio/gsettings-tool.c:923
 #, c-format
 msgid "No such schema “%s”\n"
 msgstr "Inget sådant schema ”%s”\n"
@@ -3627,35 +3653,35 @@ msgstr "Sökvägen måste sluta med ett snedstreck (/)\n"
 msgid "Path must not contain two adjacent slashes (//)\n"
 msgstr "Sökvägen får inte innehålla två efterföljande snedstreck (//)\n"
 
-#: gio/gsettings-tool.c:541
+#: gio/gsettings-tool.c:553
 msgid "The provided value is outside of the valid range\n"
 msgstr "Tillhandahållet värde är utanför det giltiga intervallet\n"
 
-#: gio/gsettings-tool.c:548
+#: gio/gsettings-tool.c:560
 msgid "The key is not writable\n"
 msgstr "Nyckeln är inte skrivbar\n"
 
-#: gio/gsettings-tool.c:584
+#: gio/gsettings-tool.c:596
 msgid "List the installed (non-relocatable) schemas"
 msgstr "Lista installerade (icke-flyttbara) scheman"
 
-#: gio/gsettings-tool.c:590
+#: gio/gsettings-tool.c:602
 msgid "List the installed relocatable schemas"
 msgstr "Lista installerade, flyttbara scheman"
 
-#: gio/gsettings-tool.c:596
+#: gio/gsettings-tool.c:608
 msgid "List the keys in SCHEMA"
 msgstr "Lista nycklarna i SCHEMA"
 
-#: gio/gsettings-tool.c:597 gio/gsettings-tool.c:603 gio/gsettings-tool.c:646
+#: gio/gsettings-tool.c:609 gio/gsettings-tool.c:615 gio/gsettings-tool.c:658
 msgid "SCHEMA[:PATH]"
 msgstr "SCHEMA[:SÖKVÄG]"
 
-#: gio/gsettings-tool.c:602
+#: gio/gsettings-tool.c:614
 msgid "List the children of SCHEMA"
 msgstr "Lista barnen i SCHEMA"
 
-#: gio/gsettings-tool.c:608
+#: gio/gsettings-tool.c:620
 msgid ""
 "List keys and values, recursively\n"
 "If no SCHEMA is given, list all keys\n"
@@ -3663,48 +3689,48 @@ msgstr ""
 "Lista nycklar och värden, rekursivt\n"
 "Om inget SCHEMA anges, lista alla nycklar\n"
 
-#: gio/gsettings-tool.c:610
+#: gio/gsettings-tool.c:622
 msgid "[SCHEMA[:PATH]]"
 msgstr "[SCHEMA[:SÖKVÄG]]"
 
-#: gio/gsettings-tool.c:615
+#: gio/gsettings-tool.c:627
 msgid "Get the value of KEY"
 msgstr "Få värdet för NYCKEL"
 
-#: gio/gsettings-tool.c:616 gio/gsettings-tool.c:622 gio/gsettings-tool.c:628
-#: gio/gsettings-tool.c:640 gio/gsettings-tool.c:652
+#: gio/gsettings-tool.c:628 gio/gsettings-tool.c:634 gio/gsettings-tool.c:640
+#: gio/gsettings-tool.c:652 gio/gsettings-tool.c:664
 msgid "SCHEMA[:PATH] KEY"
 msgstr "SCHEMA[:SÖKVÄG] NYCKEL"
 
-#: gio/gsettings-tool.c:621
+#: gio/gsettings-tool.c:633
 msgid "Query the range of valid values for KEY"
 msgstr "Fråga efter giltiga värden för NYCKEL"
 
-#: gio/gsettings-tool.c:627
+#: gio/gsettings-tool.c:639
 msgid "Query the description for KEY"
 msgstr "Fråga efter beskrivningen för NYCKEL"
 
-#: gio/gsettings-tool.c:633
+#: gio/gsettings-tool.c:645
 msgid "Set the value of KEY to VALUE"
 msgstr "Ställ in värdet för NYCKEL till VÄRDE"
 
-#: gio/gsettings-tool.c:634
+#: gio/gsettings-tool.c:646
 msgid "SCHEMA[:PATH] KEY VALUE"
 msgstr "SCHEMA[:SÖKVÄG] NYCKEL VÄRDE"
 
-#: gio/gsettings-tool.c:639
+#: gio/gsettings-tool.c:651
 msgid "Reset KEY to its default value"
 msgstr "Återställ NYCKEL till dess standardvärde"
 
-#: gio/gsettings-tool.c:645
+#: gio/gsettings-tool.c:657
 msgid "Reset all keys in SCHEMA to their defaults"
 msgstr "Nollställ alla nycklar i SCHEMA till sina standardvärden"
 
-#: gio/gsettings-tool.c:651
+#: gio/gsettings-tool.c:663
 msgid "Check if KEY is writable"
 msgstr "Kontrollera om NYCKEL är skrivbar"
 
-#: gio/gsettings-tool.c:657
+#: gio/gsettings-tool.c:669
 msgid ""
 "Monitor KEY for changes.\n"
 "If no KEY is specified, monitor all keys in SCHEMA.\n"
@@ -3714,11 +3740,11 @@ msgstr ""
 "Om ingen NYCKEL anges, övervaka alla nycklar i SCHEMA.\n"
 "Använd ^C för att avsluta övervakningen.\n"
 
-#: gio/gsettings-tool.c:660
+#: gio/gsettings-tool.c:672
 msgid "SCHEMA[:PATH] [KEY]"
 msgstr "SCHEMA[:SÖKVÄG] [NYCKEL]"
 
-#: gio/gsettings-tool.c:672
+#: gio/gsettings-tool.c:684
 msgid ""
 "Usage:\n"
 "  gsettings --version\n"
@@ -3766,7 +3792,7 @@ msgstr ""
 "Använd ”gsettings help KOMMANDO” för detaljerad hjälp.\n"
 "\n"
 
-#: gio/gsettings-tool.c:696
+#: gio/gsettings-tool.c:708
 #, c-format
 msgid ""
 "Usage:\n"
@@ -3781,11 +3807,11 @@ msgstr ""
 "%s\n"
 "\n"
 
-#: gio/gsettings-tool.c:702
+#: gio/gsettings-tool.c:714
 msgid "  SCHEMADIR A directory to search for additional schemas\n"
 msgstr "  SCHEMAKAT En katalog att söka i efter ytterligare scheman\n"
 
-#: gio/gsettings-tool.c:710
+#: gio/gsettings-tool.c:722
 msgid ""
 "  SCHEMA    The name of the schema\n"
 "  PATH      The path, for relocatable schemas\n"
@@ -3793,211 +3819,211 @@ msgstr ""
 "  SCHEMA    Namnet på schemat\n"
 "  SÖKVÄG    Sökvägen, för flyttbara scheman\n"
 
-#: gio/gsettings-tool.c:715
+#: gio/gsettings-tool.c:727
 msgid "  KEY       The (optional) key within the schema\n"
 msgstr "  NYCKEL    (Eventuell) nyckel inom schemat\n"
 
-#: gio/gsettings-tool.c:719
+#: gio/gsettings-tool.c:731
 msgid "  KEY       The key within the schema\n"
 msgstr "  NYCKEL    Nyckeln inom schemat\n"
 
-#: gio/gsettings-tool.c:723
+#: gio/gsettings-tool.c:735
 msgid "  VALUE     The value to set\n"
 msgstr "  VÄRDE     Värdet att ställa in\n"
 
-#: gio/gsettings-tool.c:778
+#: gio/gsettings-tool.c:790
 #, c-format
 msgid "Could not load schemas from %s: %s\n"
 msgstr "Kunde inte läsa in schema från %s: %s\n"
 
-#: gio/gsettings-tool.c:790
+#: gio/gsettings-tool.c:802
 msgid "No schemas installed\n"
 msgstr "Inga scheman installerade\n"
 
-#: gio/gsettings-tool.c:869
+#: gio/gsettings-tool.c:881
 msgid "Empty schema name given\n"
 msgstr "Tomt schemanamn angavs\n"
 
-#: gio/gsettings-tool.c:924
+#: gio/gsettings-tool.c:936
 #, c-format
 msgid "No such key “%s”\n"
 msgstr "Ingen sådan nyckel ”%s”\n"
 
-#: gio/gsocket.c:413
+#: gio/gsocket.c:417
 msgid "Invalid socket, not initialized"
 msgstr "Ogiltigt uttag, inte initierat"
 
-#: gio/gsocket.c:420
+#: gio/gsocket.c:424
 #, c-format
 msgid "Invalid socket, initialization failed due to: %s"
 msgstr "Ogiltigt uttag, initiering misslyckades på grund av: %s"
 
-#: gio/gsocket.c:428
+#: gio/gsocket.c:432
 msgid "Socket is already closed"
 msgstr "Uttaget är redan stängt"
 
-#: gio/gsocket.c:443 gio/gsocket.c:3190 gio/gsocket.c:4420 gio/gsocket.c:4478
+#: gio/gsocket.c:447 gio/gsocket.c:3194 gio/gsocket.c:4427 gio/gsocket.c:4485
 msgid "Socket I/O timed out"
 msgstr "Tidsgräns för in/ut på uttaget överstegs"
 
-#: gio/gsocket.c:578
+#: gio/gsocket.c:582
 #, c-format
 msgid "creating GSocket from fd: %s"
 msgstr "skapar GSocket från fd: %s"
 
-#: gio/gsocket.c:607 gio/gsocket.c:671 gio/gsocket.c:678
+#: gio/gsocket.c:611 gio/gsocket.c:675 gio/gsocket.c:682
 #, c-format
 msgid "Unable to create socket: %s"
 msgstr "Kunde inte skapa uttag: %s"
 
-#: gio/gsocket.c:671
+#: gio/gsocket.c:675
 msgid "Unknown family was specified"
 msgstr "Okänd familj angavs"
 
-#: gio/gsocket.c:678
+#: gio/gsocket.c:682
 msgid "Unknown protocol was specified"
 msgstr "Okänt protokoll angavs"
 
-#: gio/gsocket.c:1169
+#: gio/gsocket.c:1173
 #, c-format
 msgid "Cannot use datagram operations on a non-datagram socket."
 msgstr "Kan inte använda datagramåtgärder på ett icke-datagram-uttag."
 
-#: gio/gsocket.c:1186
+#: gio/gsocket.c:1190
 #, c-format
 msgid "Cannot use datagram operations on a socket with a timeout set."
 msgstr "Kan inte använda datagramåtgärder på ett uttag med en satt tidsgräns."
 
-#: gio/gsocket.c:1993
+#: gio/gsocket.c:1997
 #, c-format
 msgid "could not get local address: %s"
 msgstr "kunde inte få lokal adress: %s"
 
-#: gio/gsocket.c:2039
+#: gio/gsocket.c:2043
 #, c-format
 msgid "could not get remote address: %s"
 msgstr "kunde inte få fjärradress: %s"
 
-#: gio/gsocket.c:2105
+#: gio/gsocket.c:2109
 #, c-format
 msgid "could not listen: %s"
 msgstr "kunde inte lyssna: %s"
 
-#: gio/gsocket.c:2209
+#: gio/gsocket.c:2213
 #, c-format
 msgid "Error binding to address %s: %s"
 msgstr "Fel vid bindning till adressen %s: %s"
 
-#: gio/gsocket.c:2385 gio/gsocket.c:2422 gio/gsocket.c:2532 gio/gsocket.c:2557
-#: gio/gsocket.c:2620 gio/gsocket.c:2678 gio/gsocket.c:2696
+#: gio/gsocket.c:2389 gio/gsocket.c:2426 gio/gsocket.c:2536 gio/gsocket.c:2561
+#: gio/gsocket.c:2624 gio/gsocket.c:2682 gio/gsocket.c:2700
 #, c-format
 msgid "Error joining multicast group: %s"
 msgstr "Fel vid medlemskap i multicast-grupp: %s"
 
-#: gio/gsocket.c:2386 gio/gsocket.c:2423 gio/gsocket.c:2533 gio/gsocket.c:2558
-#: gio/gsocket.c:2621 gio/gsocket.c:2679 gio/gsocket.c:2697
+#: gio/gsocket.c:2390 gio/gsocket.c:2427 gio/gsocket.c:2537 gio/gsocket.c:2562
+#: gio/gsocket.c:2625 gio/gsocket.c:2683 gio/gsocket.c:2701
 #, c-format
 msgid "Error leaving multicast group: %s"
 msgstr "Fel vid lämnande av multicast-grupp: %s"
 
-#: gio/gsocket.c:2387
+#: gio/gsocket.c:2391
 msgid "No support for source-specific multicast"
 msgstr "Inget stöd för källspecifik multicast"
 
-#: gio/gsocket.c:2534
+#: gio/gsocket.c:2538
 msgid "Unsupported socket family"
 msgstr "Uttagsfamiljen stöds inte"
 
-#: gio/gsocket.c:2559
+#: gio/gsocket.c:2563
 msgid "source-specific not an IPv4 address"
 msgstr "källspecifik är inte en IPv4-adress"
 
-#: gio/gsocket.c:2583
+#: gio/gsocket.c:2587
 #, c-format
 msgid "Interface name too long"
 msgstr "Gränssnittsnamnet är för långt"
 
-#: gio/gsocket.c:2596 gio/gsocket.c:2646
+#: gio/gsocket.c:2600 gio/gsocket.c:2650
 #, c-format
 msgid "Interface not found: %s"
 msgstr "Gränssnitt hittades inte: %s"
 
-#: gio/gsocket.c:2622
+#: gio/gsocket.c:2626
 msgid "No support for IPv4 source-specific multicast"
 msgstr "Inget stöd för IPv4-källspecifik multicast"
 
-#: gio/gsocket.c:2680
+#: gio/gsocket.c:2684
 msgid "No support for IPv6 source-specific multicast"
 msgstr "Inget stöd för IPv6-källspecifik multicast"
 
-#: gio/gsocket.c:2889
+#: gio/gsocket.c:2893
 #, c-format
 msgid "Error accepting connection: %s"
 msgstr "Fel vid godkännande av anslutning: %s"
 
-#: gio/gsocket.c:3015
+#: gio/gsocket.c:3019
 msgid "Connection in progress"
 msgstr "Anslutningsförsök pågår"
 
-#: gio/gsocket.c:3066
+#: gio/gsocket.c:3070
 msgid "Unable to get pending error: "
 msgstr "Kunde inte få tag på väntande fel: "
 
-#: gio/gsocket.c:3255
+#: gio/gsocket.c:3259
 #, c-format
 msgid "Error receiving data: %s"
 msgstr "Fel vid mottagning av data: %s"
 
-#: gio/gsocket.c:3452
+#: gio/gsocket.c:3456
 #, c-format
 msgid "Error sending data: %s"
 msgstr "Fel vid sändning av data: %s"
 
-#: gio/gsocket.c:3639
+#: gio/gsocket.c:3643
 #, c-format
 msgid "Unable to shutdown socket: %s"
 msgstr "Kunde inte stänga ner uttag: %s"
 
-#: gio/gsocket.c:3720
+#: gio/gsocket.c:3724
 #, c-format
 msgid "Error closing socket: %s"
 msgstr "Fel vid stängning av uttag: %s"
 
-#: gio/gsocket.c:4413
+#: gio/gsocket.c:4420
 #, c-format
 msgid "Waiting for socket condition: %s"
 msgstr "Väntar på uttagstillstånd: %s"
 
-#: gio/gsocket.c:4804 gio/gsocket.c:4820 gio/gsocket.c:4833
+#: gio/gsocket.c:4810 gio/gsocket.c:4826 gio/gsocket.c:4839
 #, c-format
 msgid "Unable to send message: %s"
 msgstr "Kunde inte skicka meddelande: %s"
 
-#: gio/gsocket.c:4805 gio/gsocket.c:4821 gio/gsocket.c:4834
+#: gio/gsocket.c:4811 gio/gsocket.c:4827 gio/gsocket.c:4840
 msgid "Message vectors too large"
 msgstr "Meddelandevektorerna är för stora"
 
-#: gio/gsocket.c:4850 gio/gsocket.c:4852 gio/gsocket.c:4999 gio/gsocket.c:5084
-#: gio/gsocket.c:5262 gio/gsocket.c:5302 gio/gsocket.c:5304
+#: gio/gsocket.c:4856 gio/gsocket.c:4858 gio/gsocket.c:5005 gio/gsocket.c:5090
+#: gio/gsocket.c:5268 gio/gsocket.c:5308 gio/gsocket.c:5310
 #, c-format
 msgid "Error sending message: %s"
 msgstr "Fel vid sändning av meddelande: %s"
 
-#: gio/gsocket.c:5026
+#: gio/gsocket.c:5032
 msgid "GSocketControlMessage not supported on Windows"
 msgstr "GSocketControlMessage stöds inte på Windows"
 
-#: gio/gsocket.c:5495 gio/gsocket.c:5571 gio/gsocket.c:5797
+#: gio/gsocket.c:5505 gio/gsocket.c:5581 gio/gsocket.c:5807
 #, c-format
 msgid "Error receiving message: %s"
 msgstr "Fel vid mottagning av meddelande: %s"
 
-#: gio/gsocket.c:6070 gio/gsocket.c:6081 gio/gsocket.c:6127
+#: gio/gsocket.c:6090 gio/gsocket.c:6101 gio/gsocket.c:6164
 #, c-format
 msgid "Unable to read socket credentials: %s"
 msgstr "Kunde inte läsa uttagets inloggningsuppgifter: %s"
 
-#: gio/gsocket.c:6136
+#: gio/gsocket.c:6173
 msgid "g_socket_get_credentials not implemented for this OS"
 msgstr ""
 "g_socket_get_credentials har inte implementerats för detta operativsystem"
@@ -4016,11 +4042,11 @@ msgstr "Kunde inte ansluta till %s: "
 msgid "Could not connect: "
 msgstr "Kunde inte ansluta: "
 
-#: gio/gsocketclient.c:1162 gio/gsocketclient.c:1749
+#: gio/gsocketclient.c:1202 gio/gsocketclient.c:1793
 msgid "Proxying over a non-TCP connection is not supported."
 msgstr "Att skicka via proxy över en icke-TCP-anslutning stöds inte."
 
-#: gio/gsocketclient.c:1194 gio/gsocketclient.c:1778
+#: gio/gsocketclient.c:1234 gio/gsocketclient.c:1822
 #, c-format
 msgid "Proxy protocol “%s” is not supported."
 msgstr "Proxyprotokollet ”%s” stöds inte."
@@ -4120,7 +4146,7 @@ msgstr "SOCKSv5-proxyservern saknar stöd för angiven adresstyp."
 msgid "Unknown SOCKSv5 proxy error."
 msgstr "Okänt fel i SOCKSv5-proxyserver."
 
-#: gio/gtestdbus.c:612 glib/gspawn-win32.c:311
+#: gio/gtestdbus.c:612 glib/gspawn-win32.c:314
 #, c-format
 msgid "Failed to create pipe for communicating with child process (%s)"
 msgstr "Misslyckades med att skapa rör för kommunikation med barnprocess (%s)"
@@ -4144,44 +4170,66 @@ msgstr "Inga giltiga adresser hittades"
 msgid "Error reverse-resolving “%s”: %s"
 msgstr "Fel vid omvänt uppslag av ”%s”: %s"
 
-#: gio/gthreadedresolver.c:676 gio/gthreadedresolver.c:755
-#: gio/gthreadedresolver.c:853 gio/gthreadedresolver.c:903
+#. Translators: the placeholder is a DNS record type, such as ‘MX’ or ‘SRV’
+#: gio/gthreadedresolver.c:550 gio/gthreadedresolver.c:572
+#: gio/gthreadedresolver.c:610 gio/gthreadedresolver.c:657
+#: gio/gthreadedresolver.c:686 gio/gthreadedresolver.c:698
+#, c-format
+msgid "Error parsing DNS %s record: malformed DNS packet"
+msgstr "Fel vid tolkning av DNS %s-post: felformulerat DNS-paket"
+
+#: gio/gthreadedresolver.c:756 gio/gthreadedresolver.c:893
+#: gio/gthreadedresolver.c:991 gio/gthreadedresolver.c:1041
 #, c-format
 msgid "No DNS record of the requested type for “%s”"
 msgstr "Inga DNS-poster av den begärda typen för ”%s”"
 
-#: gio/gthreadedresolver.c:681 gio/gthreadedresolver.c:858
+#: gio/gthreadedresolver.c:761 gio/gthreadedresolver.c:996
 #, c-format
 msgid "Temporarily unable to resolve “%s”"
 msgstr "Kan för tillfället inte slå upp ”%s”"
 
-#: gio/gthreadedresolver.c:686 gio/gthreadedresolver.c:863
-#: gio/gthreadedresolver.c:973
+#: gio/gthreadedresolver.c:766 gio/gthreadedresolver.c:1001
+#: gio/gthreadedresolver.c:1111
 #, c-format
 msgid "Error resolving “%s”"
 msgstr "Fel vid uppslag av ”%s”"
 
-#: gio/gtlscertificate.c:431
+#: gio/gthreadedresolver.c:780 gio/gthreadedresolver.c:804
+#: gio/gthreadedresolver.c:829 gio/gthreadedresolver.c:844
+msgid "Malformed DNS packet"
+msgstr "Felformulerat DNS-paket"
+
+#: gio/gthreadedresolver.c:886
+#, c-format
+msgid "Failed to parse DNS response for “%s”: "
+msgstr "Misslyckades med att tolka DNS-svar för ”%s”: "
+
+#: gio/gtlscertificate.c:478
 msgid "No PEM-encoded private key found"
 msgstr "Ingen PEM-kodad privat nyckel hittades"
 
-#: gio/gtlscertificate.c:441
+#: gio/gtlscertificate.c:488
 msgid "Cannot decrypt PEM-encoded private key"
 msgstr "Kan inte dekryptera PEM-kodad privat nyckel"
 
-#: gio/gtlscertificate.c:452
+#: gio/gtlscertificate.c:499
 msgid "Could not parse PEM-encoded private key"
 msgstr "Kunde inte tolka PEM-kodad privat nyckel"
 
-#: gio/gtlscertificate.c:479
+#: gio/gtlscertificate.c:526
 msgid "No PEM-encoded certificate found"
 msgstr "Inget PEM-kodat certifikat hittades"
 
-#: gio/gtlscertificate.c:488
+#: gio/gtlscertificate.c:535
 msgid "Could not parse PEM-encoded certificate"
 msgstr "Kunde inte tolka PEM-kodat certifikat"
 
-#: gio/gtlscertificate.c:844
+#: gio/gtlscertificate.c:796
+msgid "The current TLS backend does not support PKCS #12"
+msgstr "Den aktuella TLS-bakänden stöder inte PKCS #12"
+
+#: gio/gtlscertificate.c:1013
 msgid "This GTlsBackend does not support creating PKCS #11 certificates"
 msgstr "Denna GTlsBackend stöder inte skapande av PKCS #11-certifikat"
 
@@ -4207,55 +4255,63 @@ msgstr ""
 msgid "The password entered is incorrect."
 msgstr "Det angivna lösenordet är felaktigt."
 
-#: gio/gunixconnection.c:166 gio/gunixconnection.c:579
+#: gio/gunixconnection.c:125
+msgid "Sending FD is not supported"
+msgstr "Sändning av FD stöds inte"
+
+#: gio/gunixconnection.c:178 gio/gunixconnection.c:596
 #, c-format
 msgid "Expecting 1 control message, got %d"
 msgid_plural "Expecting 1 control message, got %d"
 msgstr[0] "Förväntade 1 kontrollmeddelande, fick %d"
 msgstr[1] "Förväntade 1 kontrollmeddelande, fick %d"
 
-#: gio/gunixconnection.c:182 gio/gunixconnection.c:591
+#: gio/gunixconnection.c:194 gio/gunixconnection.c:608
 msgid "Unexpected type of ancillary data"
 msgstr "Oväntad typ av underordnade data"
 
-#: gio/gunixconnection.c:200
+#: gio/gunixconnection.c:212
 #, c-format
 msgid "Expecting one fd, but got %d\n"
 msgid_plural "Expecting one fd, but got %d\n"
 msgstr[0] "Förväntade en fd, men fick %d\n"
 msgstr[1] "Förväntade en fd, men fick %d\n"
 
-#: gio/gunixconnection.c:219
+#: gio/gunixconnection.c:231
 msgid "Received invalid fd"
 msgstr "Tog emot ogiltig fd"
 
-#: gio/gunixconnection.c:363
+#: gio/gunixconnection.c:238
+msgid "Receiving FD is not supported"
+msgstr "Mottagning av FD stöds inte"
+
+#: gio/gunixconnection.c:380
 msgid "Error sending credentials: "
 msgstr "Fel vid sändning av inloggningsuppgifter: "
 
-#: gio/gunixconnection.c:520
+#: gio/gunixconnection.c:537
 #, c-format
 msgid "Error checking if SO_PASSCRED is enabled for socket: %s"
 msgstr "Fel vid kontroll om SO_PASSCRED har aktiverats för uttaget: %s"
 
-#: gio/gunixconnection.c:536
+#: gio/gunixconnection.c:553
 #, c-format
 msgid "Error enabling SO_PASSCRED: %s"
 msgstr "Fel vid aktivering av SO_PASSCRED: %s"
 
-#: gio/gunixconnection.c:565
+#: gio/gunixconnection.c:582
 msgid ""
 "Expecting to read a single byte for receiving credentials but read zero bytes"
 msgstr ""
 "Förväntade att läsa ett enda byte för mottagning av inloggningsuppgifter men "
 "läste noll byte"
 
-#: gio/gunixconnection.c:605
+#: gio/gunixconnection.c:622
 #, c-format
 msgid "Not expecting control message, but got %d"
 msgstr "Förväntade inte kontrollmeddelande, men fick %d"
 
-#: gio/gunixconnection.c:630
+#: gio/gunixconnection.c:647
 #, c-format
 msgid "Error while disabling SO_PASSCRED: %s"
 msgstr "Fel vid inaktivering av SO_PASSCRED: %s"
@@ -4271,7 +4327,7 @@ msgstr "Fel vid läsning från filhandtag: %s"
 msgid "Error closing file descriptor: %s"
 msgstr "Fel vid stängning av filhandtag: %s"
 
-#: gio/gunixmounts.c:2785 gio/gunixmounts.c:2838
+#: gio/gunixmounts.c:2809 gio/gunixmounts.c:2862
 msgid "Filesystem root"
 msgstr "Filsystemsrot"
 
@@ -4282,7 +4338,7 @@ msgstr "Filsystemsrot"
 msgid "Error writing to file descriptor: %s"
 msgstr "Fel vid skrivning till filhandtag: %s"
 
-#: gio/gunixsocketaddress.c:244
+#: gio/gunixsocketaddress.c:251
 msgid "Abstract UNIX domain socket addresses not supported on this system"
 msgstr "Abstrakta UNIX-domänuttagsadresser stöds inte på detta system"
 
@@ -4432,8 +4488,8 @@ msgstr "Misslyckades med att expandera exec-raden ”%s” med URI ”%s”"
 msgid "Unrepresentable character in conversion input"
 msgstr "Tecken som ej går att uttrycka i konverteringsindata"
 
-#: glib/gconvert.c:495 glib/gutf8.c:871 glib/gutf8.c:1083 glib/gutf8.c:1220
-#: glib/gutf8.c:1324
+#: glib/gconvert.c:495 glib/gutf8.c:886 glib/gutf8.c:1099 glib/gutf8.c:1236
+#: glib/gutf8.c:1340
 msgid "Partial character sequence at end of input"
 msgstr "Ofullständig teckensekvens vid slutet av indata"
 
@@ -5005,15 +5061,15 @@ msgstr "Kanalen slutar med ett ofullständigt tecken"
 msgid "Can’t do a raw read in g_io_channel_read_to_end"
 msgstr "Kan inte göra en rå läsning i g_io_channel_read_to_end"
 
-#: glib/gkeyfile.c:791
+#: glib/gkeyfile.c:794
 msgid "Valid key file could not be found in search dirs"
 msgstr "Giltig nyckelfil kunde inte hittas i sökkatalogerna"
 
-#: glib/gkeyfile.c:828
+#: glib/gkeyfile.c:831
 msgid "Not a regular file"
 msgstr "Inte en vanlig fil"
 
-#: glib/gkeyfile.c:1283
+#: glib/gkeyfile.c:1289
 #, c-format
 msgid ""
 "Key file contains line “%s” which is not a key-value pair, group, or comment"
@@ -5021,43 +5077,43 @@ msgstr ""
 "Nyckelfilen innehåller raden ”%s” som inte är ett nyckel-värde-par, grupp "
 "eller kommentar"
 
-#: glib/gkeyfile.c:1340
+#: glib/gkeyfile.c:1346
 #, c-format
 msgid "Invalid group name: %s"
 msgstr "Ogiltigt gruppnamn: %s"
 
-#: glib/gkeyfile.c:1362
+#: glib/gkeyfile.c:1370
 msgid "Key file does not start with a group"
 msgstr "Nyckelfilen börjar inte med en grupp"
 
-#: glib/gkeyfile.c:1388
+#: glib/gkeyfile.c:1394
 #, c-format
-msgid "Invalid key name: %s"
-msgstr "Ogiltigt nyckelnamn: %s"
+msgid "Invalid key name: %.*s"
+msgstr "Ogiltigt nyckelnamn: %.*s"
 
-#: glib/gkeyfile.c:1415
+#: glib/gkeyfile.c:1422
 #, c-format
 msgid "Key file contains unsupported encoding “%s”"
 msgstr "Nyckelfilen innehåller kodningen ”%s” som inte stöds"
 
-#: glib/gkeyfile.c:1664 glib/gkeyfile.c:1837 glib/gkeyfile.c:3287
-#: glib/gkeyfile.c:3351 glib/gkeyfile.c:3481 glib/gkeyfile.c:3613
-#: glib/gkeyfile.c:3759 glib/gkeyfile.c:3994 glib/gkeyfile.c:4061
+#: glib/gkeyfile.c:1677 glib/gkeyfile.c:1850 glib/gkeyfile.c:3297
+#: glib/gkeyfile.c:3361 glib/gkeyfile.c:3491 glib/gkeyfile.c:3623
+#: glib/gkeyfile.c:3769 glib/gkeyfile.c:4004 glib/gkeyfile.c:4071
 #, c-format
 msgid "Key file does not have group “%s”"
 msgstr "Nyckelfilen har inte gruppen ”%s”"
 
-#: glib/gkeyfile.c:1792
+#: glib/gkeyfile.c:1805
 #, c-format
 msgid "Key file does not have key “%s” in group “%s”"
 msgstr "Nyckelfilen har inte nyckeln ”%s” i gruppen ”%s”"
 
-#: glib/gkeyfile.c:1954 glib/gkeyfile.c:2070
+#: glib/gkeyfile.c:1967 glib/gkeyfile.c:2083
 #, c-format
 msgid "Key file contains key “%s” with value “%s” which is not UTF-8"
 msgstr "Nyckelfilen innehåller nyckeln ”%s” med värdet ”%s” som inte är UTF-8"
 
-#: glib/gkeyfile.c:1974 glib/gkeyfile.c:2090 glib/gkeyfile.c:2529
+#: glib/gkeyfile.c:1987 glib/gkeyfile.c:2103 glib/gkeyfile.c:2542
 #, c-format
 msgid ""
 "Key file contains key “%s” which has a value that cannot be interpreted."
@@ -5065,7 +5121,7 @@ msgstr ""
 "Nyckelfilen innehåller nyckeln ”%s” som innehåller ett värde som inte kan "
 "tolkas."
 
-#: glib/gkeyfile.c:2747 glib/gkeyfile.c:3116
+#: glib/gkeyfile.c:2757 glib/gkeyfile.c:3126
 #, c-format
 msgid ""
 "Key file contains key “%s” in group “%s” which has a value that cannot be "
@@ -5074,36 +5130,36 @@ msgstr ""
 "Nyckelfilen innehåller nyckeln ”%s” i gruppen ”%s” vilken innehåller ett "
 "värde som inte kan tolkas."
 
-#: glib/gkeyfile.c:2825 glib/gkeyfile.c:2902
+#: glib/gkeyfile.c:2835 glib/gkeyfile.c:2912
 #, c-format
 msgid "Key “%s” in group “%s” has value “%s” where %s was expected"
 msgstr "Nyckeln ”%s” i gruppen ”%s” innehåller värdet ”%s” där %s förväntades"
 
-#: glib/gkeyfile.c:4304
+#: glib/gkeyfile.c:4324
 msgid "Key file contains escape character at end of line"
 msgstr "Nyckelfilen innehåller kontrolltecken i slutet på en rad"
 
-#: glib/gkeyfile.c:4326
+#: glib/gkeyfile.c:4346
 #, c-format
 msgid "Key file contains invalid escape sequence “%s”"
 msgstr "Nyckelfilen innehåller ogiltiga kontrollsekvensen ”%s”"
 
-#: glib/gkeyfile.c:4470
+#: glib/gkeyfile.c:4491
 #, c-format
 msgid "Value “%s” cannot be interpreted as a number."
 msgstr "Värdet ”%s” kan inte tolkas som ett tal."
 
-#: glib/gkeyfile.c:4484
+#: glib/gkeyfile.c:4505
 #, c-format
 msgid "Integer value “%s” out of range"
 msgstr "Heltalsvärdet ”%s” är utanför intervallet"
 
-#: glib/gkeyfile.c:4517
+#: glib/gkeyfile.c:4538
 #, c-format
 msgid "Value “%s” cannot be interpreted as a float number."
 msgstr "Värdet ”%s” kan inte tolkas som ett flyttal."
 
-#: glib/gkeyfile.c:4556
+#: glib/gkeyfile.c:4577
 #, c-format
 msgid "Value “%s” cannot be interpreted as a boolean."
 msgstr "Värdet ”%s” kan inte tolkas som ett booleskt värde."
@@ -5397,7 +5453,7 @@ msgstr "Fel vid tolkning av flaggan %s"
 msgid "Missing argument for %s"
 msgstr "Argument saknas för %s"
 
-#: glib/goption.c:2185
+#: glib/goption.c:2184
 #, c-format
 msgid "Unknown option %s"
 msgstr "Okänd flagga %s"
@@ -5800,124 +5856,133 @@ msgstr "Texten var tom (eller innehöll bara tomrum)"
 msgid "Failed to read data from child process (%s)"
 msgstr "Misslyckades med att läsa data från barnprocess (%s)"
 
-#: glib/gspawn.c:461
+#: glib/gspawn.c:462
 #, c-format
 msgid "Unexpected error in reading data from a child process (%s)"
 msgstr "Oväntat fel vid läsning av data från en barnprocess (%s)"
 
-#: glib/gspawn.c:546
+#: glib/gspawn.c:547
 #, c-format
 msgid "Unexpected error in waitpid() (%s)"
 msgstr "Oväntat fel i waitpid() (%s)"
 
-#: glib/gspawn.c:1166 glib/gspawn-win32.c:1407
+#: glib/gspawn.c:1175 glib/gspawn-win32.c:1438
 #, c-format
 msgid "Child process exited with code %ld"
 msgstr "Barnprocess avslutades med kod %ld"
 
-#: glib/gspawn.c:1174
+#: glib/gspawn.c:1183
 #, c-format
 msgid "Child process killed by signal %ld"
 msgstr "Barnprocess dödat av signal %ld"
 
-#: glib/gspawn.c:1181
+#: glib/gspawn.c:1190
 #, c-format
 msgid "Child process stopped by signal %ld"
 msgstr "Barnprocess stoppad av signal %ld"
 
-#: glib/gspawn.c:1188
+#: glib/gspawn.c:1197
 #, c-format
 msgid "Child process exited abnormally"
 msgstr "Barnprocess avslutades onormalt"
 
-#: glib/gspawn.c:1864 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
+#: glib/gspawn.c:1890 glib/gspawn-win32.c:353 glib/gspawn-win32.c:361
 #, c-format
 msgid "Failed to read from child pipe (%s)"
 msgstr "Misslyckades med att läsa från rör till barn (%s)"
 
-#: glib/gspawn.c:2166
+#: glib/gspawn.c:2253
 #, c-format
 msgid "Failed to spawn child process “%s” (%s)"
 msgstr "Misslyckades med att starta barnprocessen ”%s” (%s)"
 
-#: glib/gspawn.c:2283
+#: glib/gspawn.c:2370
 #, c-format
 msgid "Failed to fork (%s)"
 msgstr "Misslyckades med att grena (%s)"
 
-#: glib/gspawn.c:2443 glib/gspawn-win32.c:381
+#: glib/gspawn.c:2530 glib/gspawn-win32.c:384
 #, c-format
 msgid "Failed to change to directory “%s” (%s)"
 msgstr "Misslyckades med att byta till katalogen ”%s” (%s)"
 
-#: glib/gspawn.c:2453
+#: glib/gspawn.c:2540
 #, c-format
 msgid "Failed to execute child process “%s” (%s)"
 msgstr "Misslyckades med att köra barnprocessen ”%s” (%s)"
 
-#: glib/gspawn.c:2463
+#: glib/gspawn.c:2550
 #, c-format
-msgid "Failed to redirect output or input of child process (%s)"
-msgstr ""
-"Misslyckades med att dirigera om utdata eller indata från barnprocess (%s)"
+msgid "Failed to open file to remap file descriptor (%s)"
+msgstr "Misslyckades med att öppna fil för att mappa om filhandtag (%s)"
 
-#: glib/gspawn.c:2472
+#: glib/gspawn.c:2558
+#, c-format
+msgid "Failed to duplicate file descriptor for child process (%s)"
+msgstr "Misslyckades med att duplicera filhandtag för barnprocess (%s)"
+
+#: glib/gspawn.c:2567
 #, c-format
 msgid "Failed to fork child process (%s)"
 msgstr "Misslyckades med att skapa barnprocess (%s)"
 
-#: glib/gspawn.c:2480
+#: glib/gspawn.c:2575
 #, c-format
 msgid "Failed to close file descriptor for child process (%s)"
-msgstr "Misslyckades med att stänga filbeskrivare för barnprocess (%s)"
+msgstr "Misslyckades med att stänga filhandtag för barnprocess (%s)"
 
-#: glib/gspawn.c:2488
+#: glib/gspawn.c:2583
 #, c-format
 msgid "Unknown error executing child process “%s”"
 msgstr "Okänt fel vid körning av barnprocessen ”%s”"
 
-#: glib/gspawn.c:2512
+#: glib/gspawn.c:2607
 #, c-format
 msgid "Failed to read enough data from child pid pipe (%s)"
 msgstr ""
 "Misslyckades med att läsa tillräckligt med data från röret till barnets pid "
 "(%s)"
 
-#: glib/gspawn-win32.c:294
+#: glib/gspawn-win32.c:297
 msgid "Failed to read data from child process"
 msgstr "Misslyckades med att läsa data från barnprocessen"
 
-#: glib/gspawn-win32.c:387 glib/gspawn-win32.c:392 glib/gspawn-win32.c:511
+#: glib/gspawn-win32.c:390 glib/gspawn-win32.c:395 glib/gspawn-win32.c:521
 #, c-format
 msgid "Failed to execute child process (%s)"
 msgstr "Misslyckades med att köra barnprocess (%s)"
 
-#: glib/gspawn-win32.c:461
+#: glib/gspawn-win32.c:400
+#, c-format
+msgid "Failed to dup() in child process (%s)"
+msgstr "Misslyckades med att köra dup() i barnprocess (%s)"
+
+#: glib/gspawn-win32.c:471
 #, c-format
 msgid "Invalid program name: %s"
 msgstr "Ogiltigt programnamn: %s"
 
-#: glib/gspawn-win32.c:471 glib/gspawn-win32.c:779
+#: glib/gspawn-win32.c:481 glib/gspawn-win32.c:807
 #, c-format
 msgid "Invalid string in argument vector at %d: %s"
 msgstr "Ogiltig sträng i argumentvektorn vid %d: %s"
 
-#: glib/gspawn-win32.c:482 glib/gspawn-win32.c:794
+#: glib/gspawn-win32.c:492 glib/gspawn-win32.c:823
 #, c-format
 msgid "Invalid string in environment: %s"
 msgstr "Ogiltig sträng i miljön: %s"
 
-#: glib/gspawn-win32.c:775
+#: glib/gspawn-win32.c:803
 #, c-format
 msgid "Invalid working directory: %s"
 msgstr "Ogiltig arbetskatalog: %s"
 
-#: glib/gspawn-win32.c:837
+#: glib/gspawn-win32.c:868
 #, c-format
 msgid "Failed to execute helper program (%s)"
 msgstr "Misslyckades med att köra hjälparprogram (%s)"
 
-#: glib/gspawn-win32.c:1064
+#: glib/gspawn-win32.c:1096
 msgid ""
 "Unexpected error in g_io_channel_win32_poll() reading data from a child "
 "process"
@@ -5925,21 +5990,21 @@ msgstr ""
 "Oväntat fel i g_io_channel_win32_poll() vid inläsning av data från en "
 "barnprocess"
 
-#: glib/gstrfuncs.c:3345 glib/gstrfuncs.c:3447
+#: glib/gstrfuncs.c:3351 glib/gstrfuncs.c:3453
 msgid "Empty string is not a number"
 msgstr "Tom sträng är inte ett tal"
 
-#: glib/gstrfuncs.c:3369
+#: glib/gstrfuncs.c:3375
 #, c-format
 msgid "“%s” is not a signed number"
 msgstr "”%s” är inte ett tal med tecken"
 
-#: glib/gstrfuncs.c:3379 glib/gstrfuncs.c:3483
+#: glib/gstrfuncs.c:3385 glib/gstrfuncs.c:3489
 #, c-format
 msgid "Number “%s” is out of bounds [%s, %s]"
 msgstr "Talet ”%s” är utanför gränserna [%s, %s]"
 
-#: glib/gstrfuncs.c:3473
+#: glib/gstrfuncs.c:3479
 #, c-format
 msgid "“%s” is not an unsigned number"
 msgstr "”%s” är inte ett teckenlöst tal"
@@ -6000,175 +6065,175 @@ msgstr "URI är inte absolut, och ingen bas-URI angavs"
 msgid "Missing ‘=’ and parameter value"
 msgstr "Saknar ”=” och parametervärde"
 
-#: glib/gutf8.c:817
+#: glib/gutf8.c:832
 msgid "Failed to allocate memory"
 msgstr "Misslyckades med att allokera minne"
 
-#: glib/gutf8.c:950
+#: glib/gutf8.c:965
 msgid "Character out of range for UTF-8"
 msgstr "Tecknet är utanför intervallet för UTF-8"
 
-#: glib/gutf8.c:1051 glib/gutf8.c:1060 glib/gutf8.c:1190 glib/gutf8.c:1199
-#: glib/gutf8.c:1338 glib/gutf8.c:1435
+#: glib/gutf8.c:1067 glib/gutf8.c:1076 glib/gutf8.c:1206 glib/gutf8.c:1215
+#: glib/gutf8.c:1354 glib/gutf8.c:1451
 msgid "Invalid sequence in conversion input"
 msgstr "Ogiltig sekvens i konverteringsindata"
 
-#: glib/gutf8.c:1349 glib/gutf8.c:1446
+#: glib/gutf8.c:1365 glib/gutf8.c:1462
 msgid "Character out of range for UTF-16"
 msgstr "Tecknet är utanför intervallet för UTF-16"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2770
+#: glib/gutils.c:2849
 #, c-format
 msgid "%.1f kB"
 msgstr "%.1f kB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2772
+#: glib/gutils.c:2851
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2774
+#: glib/gutils.c:2853
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2776
+#: glib/gutils.c:2855
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2778
+#: glib/gutils.c:2857
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2780
+#: glib/gutils.c:2859
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2784
+#: glib/gutils.c:2863
 #, c-format
 msgid "%.1f KiB"
 msgstr "%.1f KiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2786
+#: glib/gutils.c:2865
 #, c-format
 msgid "%.1f MiB"
 msgstr "%.1f MiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2788
+#: glib/gutils.c:2867
 #, c-format
 msgid "%.1f GiB"
 msgstr "%.1f GiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2790
+#: glib/gutils.c:2869
 #, c-format
 msgid "%.1f TiB"
 msgstr "%.1f TiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2792
+#: glib/gutils.c:2871
 #, c-format
 msgid "%.1f PiB"
 msgstr "%.1f PiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2794
+#: glib/gutils.c:2873
 #, c-format
 msgid "%.1f EiB"
 msgstr "%.1f EiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2798
+#: glib/gutils.c:2877
 #, c-format
 msgid "%.1f kb"
 msgstr "%.1f kb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2800
+#: glib/gutils.c:2879
 #, c-format
 msgid "%.1f Mb"
 msgstr "%.1f Mb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2802
+#: glib/gutils.c:2881
 #, c-format
 msgid "%.1f Gb"
 msgstr "%.1f Gb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2804
+#: glib/gutils.c:2883
 #, c-format
 msgid "%.1f Tb"
 msgstr "%.1f Tb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2806
+#: glib/gutils.c:2885
 #, c-format
 msgid "%.1f Pb"
 msgstr "%.1f Pb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2808
+#: glib/gutils.c:2887
 #, c-format
 msgid "%.1f Eb"
 msgstr "%.1f Eb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2812
+#: glib/gutils.c:2891
 #, c-format
 msgid "%.1f Kib"
 msgstr "%.1f Kib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2814
+#: glib/gutils.c:2893
 #, c-format
 msgid "%.1f Mib"
 msgstr "%.1f Mib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2816
+#: glib/gutils.c:2895
 #, c-format
 msgid "%.1f Gib"
 msgstr "%.1f Gib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2818
+#: glib/gutils.c:2897
 #, c-format
 msgid "%.1f Tib"
 msgstr "%.1f Tib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2820
+#: glib/gutils.c:2899
 #, c-format
 msgid "%.1f Pib"
 msgstr "%.1f Pib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2822
+#: glib/gutils.c:2901
 #, c-format
 msgid "%.1f Eib"
 msgstr "%.1f Eib"
 
-#: glib/gutils.c:2856 glib/gutils.c:2973
+#: glib/gutils.c:2935 glib/gutils.c:3052
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
 msgstr[0] "%u byte"
 msgstr[1] "%u byte"
 
-#: glib/gutils.c:2860
+#: glib/gutils.c:2939
 #, c-format
 msgid "%u bit"
 msgid_plural "%u bits"
@@ -6176,7 +6241,7 @@ msgstr[0] "%u bit"
 msgstr[1] "%u bitar"
 
 #. Translators: the %s in "%s bytes" will always be replaced by a number.
-#: glib/gutils.c:2927
+#: glib/gutils.c:3006
 #, c-format
 msgid "%s byte"
 msgid_plural "%s bytes"
@@ -6184,7 +6249,7 @@ msgstr[0] "%s byte"
 msgstr[1] "%s byte"
 
 #. Translators: the %s in "%s bits" will always be replaced by a number.
-#: glib/gutils.c:2932
+#: glib/gutils.c:3011
 #, c-format
 msgid "%s bit"
 msgid_plural "%s bits"
@@ -6196,32 +6261,32 @@ msgstr[1] "%s bitar"
 #. * compatibility.  Users will not see this string unless a program is using this deprecated function.
 #. * Please translate as literally as possible.
 #.
-#: glib/gutils.c:2986
+#: glib/gutils.c:3065
 #, c-format
 msgid "%.1f KB"
 msgstr "%.1f KB"
 
-#: glib/gutils.c:2991
+#: glib/gutils.c:3070
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
-#: glib/gutils.c:2996
+#: glib/gutils.c:3075
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
-#: glib/gutils.c:3001
+#: glib/gutils.c:3080
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
-#: glib/gutils.c:3006
+#: glib/gutils.c:3085
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
-#: glib/gutils.c:3011
+#: glib/gutils.c:3090
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
index bf2d56f..94c6069 100644 (file)
--- a/po/tr.po
+++ b/po/tr.po
 # Kaan Özdinçer <kaanozdincer@gmail.com>, 2015.
 # Muhammet Kara <muhammetk@gmail.com>, 2011, 2014, 2015, 2016.
 # Serdar Sağlam <teknomobil@yandex.com>, 2019.
-# Emin Tufan Çetin <etcetin@gmail.com>, 2017-2022.
+# Emin Tufan Çetin <etcetin@gmail.com>, 2017, 2018, 2019, 2020, 2021, 2022.
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: glib\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/glib/issues\n"
-"POT-Creation-Date: 2022-02-19 13:43+0000\n"
-"PO-Revision-Date: 2022-02-20 18:09+0300\n"
+"POT-Creation-Date: 2022-03-22 15:19+0000\n"
+"PO-Revision-Date: 2022-03-23 11:03+0300\n"
 "Last-Translator: Emin Tufan Çetin <etcetin@gmail.com>\n"
-"Language-Team: Turkish <gnome-turk@gnome.org>\n"
+"Language-Team: Türkçe <gnome-turk@gnome.org>\n"
 "Language: tr\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Poedit 3.0.1\n"
+"X-Generator: Poedit 2.4.3\n"
 "X-POOTLE-MTIME: 1433280446.000000\n"
 
+#: gio/gappinfo.c:333
+msgid "Setting default applications not supported yet"
+msgstr "Öntanımlı uygulama belirleme henüz desteklenmiyor"
+
+#: gio/gappinfo.c:366
+msgid "Setting application as last used for type not supported yet"
+msgstr ""
+"Uygulamayı tür için son kullanılan olarak belirleme henüz desteklenmiyor"
+
 #: gio/gapplication.c:500
 msgid "GApplication options"
 msgstr "GApplication seçenekleri"
@@ -46,10 +55,10 @@ msgstr "Uygulama kimliğini çiğne"
 
 #: gio/gapplication.c:569
 msgid "Replace the running instance"
-msgstr "Çalışan örneği değiştirin"
+msgstr "Çalışan örneği değiştir"
 
 #: gio/gapplication-tool.c:45 gio/gapplication-tool.c:46 gio/gio-tool.c:227
-#: gio/gresource-tool.c:494 gio/gsettings-tool.c:572
+#: gio/gresource-tool.c:494 gio/gsettings-tool.c:584
 msgid "Print help"
 msgstr "Yardımı yazdır"
 
@@ -61,7 +70,7 @@ msgstr "[KOMUT]"
 msgid "Print version"
 msgstr "Sürüm yazdır"
 
-#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:578
+#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:590
 msgid "Print version information and exit"
 msgstr "Sürüm bilgisini yazdır ve çık"
 
@@ -80,7 +89,7 @@ msgstr "Uygulama başlat"
 
 #: gio/gapplication-tool.c:58
 msgid "Launch the application (with optional files to open)"
-msgstr "Uygulamayı başlat (açmak için isteğe bağlı dosyalarla)"
+msgstr "Uygulamayı başlat (açılacak isteğe bağlı dosyalarla)"
 
 #: gio/gapplication-tool.c:59
 msgid "APPID [FILE…]"
@@ -123,8 +132,8 @@ msgstr "Ayrıntılı yardım yazdırmak için komut"
 msgid "Application identifier in D-Bus format (eg: org.example.viewer)"
 msgstr "D-Bus biçiminde uygulama tanımlayıcı (örneğin: org.example.viewer)"
 
-#: gio/gapplication-tool.c:74 gio/glib-compile-resources.c:738
-#: gio/glib-compile-resources.c:744 gio/glib-compile-resources.c:772
+#: gio/gapplication-tool.c:74 gio/glib-compile-resources.c:820
+#: gio/glib-compile-resources.c:826 gio/glib-compile-resources.c:855
 #: gio/gresource-tool.c:501 gio/gresource-tool.c:567
 msgid "FILE"
 msgstr "DOSYA"
@@ -149,7 +158,7 @@ msgstr "PARAMETRE"
 msgid "Optional parameter to the action invocation, in GVariant format"
 msgstr "GVariant biçiminde başlatma eylemi için isteğe bağlı parametre"
 
-#: gio/gapplication-tool.c:98 gio/gresource-tool.c:532 gio/gsettings-tool.c:664
+#: gio/gapplication-tool.c:98 gio/gresource-tool.c:532 gio/gsettings-tool.c:676
 #, c-format
 msgid ""
 "Unknown command %s\n"
@@ -163,7 +172,7 @@ msgid "Usage:\n"
 msgstr "Kullanım:\n"
 
 #: gio/gapplication-tool.c:116 gio/gresource-tool.c:557
-#: gio/gsettings-tool.c:699
+#: gio/gsettings-tool.c:711
 msgid "Arguments:\n"
 msgstr "Argümanlar:\n"
 
@@ -286,7 +295,7 @@ msgstr "Akış zaten kapalı"
 msgid "Truncate not supported on base stream"
 msgstr "Taban akış üzerinde sonunun kesilmesi desteklenmiyor"
 
-#: gio/gcancellable.c:319 gio/gdbusconnection.c:1873 gio/gdbusprivate.c:1416
+#: gio/gcancellable.c:319 gio/gdbusconnection.c:1857 gio/gdbusprivate.c:1418
 #: gio/gsimpleasyncresult.c:871 gio/gsimpleasyncresult.c:897
 #, c-format
 msgid "Operation was cancelled"
@@ -307,7 +316,7 @@ msgstr "Hedefte yeterli alan yok"
 #: gio/gcharsetconverter.c:342 gio/gdatainputstream.c:848
 #: gio/gdatainputstream.c:1266 glib/gconvert.c:449 glib/gconvert.c:879
 #: glib/giochannel.c:1573 glib/giochannel.c:1615 glib/giochannel.c:2470
-#: glib/gutf8.c:875 glib/gutf8.c:1328
+#: glib/gutf8.c:890 glib/gutf8.c:1344
 msgid "Invalid byte sequence in conversion input"
 msgstr "Dönüşüm girdisinde geçersiz bayt dizisi"
 
@@ -317,7 +326,7 @@ msgstr "Dönüşüm girdisinde geçersiz bayt dizisi"
 msgid "Error during conversion: %s"
 msgstr "Dönüşüm sırasında hata oluştu: %s"
 
-#: gio/gcharsetconverter.c:445 gio/gsocket.c:1143
+#: gio/gcharsetconverter.c:445 gio/gsocket.c:1147
 msgid "Cancellable initialization not supported"
 msgstr "İptal edilebilir başlatma desteklenmiyor"
 
@@ -331,55 +340,55 @@ msgstr "“%s” karakter kümesinden “%s” karakter kümesine dönüşüm de
 msgid "Could not open converter from “%s” to “%s”"
 msgstr "“%s”den “%s”e dönüştürücü açılamıyor"
 
-#: gio/gcontenttype.c:454
+#: gio/gcontenttype.c:470
 #, c-format
 msgid "%s type"
 msgstr "%s türü"
 
-#: gio/gcontenttype-win32.c:192
+#: gio/gcontenttype-win32.c:196
 msgid "Unknown type"
 msgstr "Bilinmeyen tür"
 
-#: gio/gcontenttype-win32.c:194
+#: gio/gcontenttype-win32.c:198
 #, c-format
 msgid "%s filetype"
 msgstr "%s dosya türü"
 
-#: gio/gcredentials.c:323
+#: gio/gcredentials.c:335
 msgid "GCredentials contains invalid data"
 msgstr "GCredentials geçersiz veri içeriyor"
 
-#: gio/gcredentials.c:383 gio/gcredentials.c:667
+#: gio/gcredentials.c:395 gio/gcredentials.c:686
 msgid "GCredentials is not implemented on this OS"
 msgstr "Bu işletim sisteminde GCredentials sağlanmamış"
 
-#: gio/gcredentials.c:538 gio/gcredentials.c:556
+#: gio/gcredentials.c:550 gio/gcredentials.c:568
 msgid "There is no GCredentials support for your platform"
 msgstr "Platformunuz için GCredentials desteği yok"
 
-#: gio/gcredentials.c:607
+#: gio/gcredentials.c:626
 msgid "GCredentials does not contain a process ID on this OS"
-msgstr "Bu işletim sisteminde GCredentials bir süreç kimliği içermez"
+msgstr "GCredentials bu işletim sisteminde süreç kimliği içermez"
 
-#: gio/gcredentials.c:661
+#: gio/gcredentials.c:680
 msgid "Credentials spoofing is not possible on this OS"
-msgstr "Bu işletim sisteminde kimlik sızdırma mümkün değildir"
+msgstr "Bu işletim sisteminde kimlik sızdırma olanaksızdır"
 
 #: gio/gdatainputstream.c:304
 msgid "Unexpected early end-of-stream"
 msgstr "Beklenmeyen erken akış-sonu"
 
-#: gio/gdbusaddress.c:159 gio/gdbusaddress.c:233 gio/gdbusaddress.c:322
+#: gio/gdbusaddress.c:162 gio/gdbusaddress.c:236 gio/gdbusaddress.c:325
 #, c-format
 msgid "Unsupported key “%s” in address entry “%s”"
 msgstr "“%2$s” adres girdisinde desteklenmeyen anahtar “%1$s”"
 
-#: gio/gdbusaddress.c:172
+#: gio/gdbusaddress.c:175
 #, c-format
 msgid "Meaningless key/value pair combination in address entry “%s”"
 msgstr "“%s” adres girdisinde anlamsız anahtar/değer çifti birleşimi"
 
-#: gio/gdbusaddress.c:181
+#: gio/gdbusaddress.c:184
 #, c-format
 msgid ""
 "Address “%s” is invalid (need exactly one of path, dir, tmpdir, or abstract "
@@ -387,28 +396,28 @@ msgid ""
 msgstr ""
 "“%s” adresi geçersiz (tam bir yol, dir, tmpdir veya soyut anahtarlar gerekir)"
 
-#: gio/gdbusaddress.c:248 gio/gdbusaddress.c:259 gio/gdbusaddress.c:274
-#: gio/gdbusaddress.c:337 gio/gdbusaddress.c:348
+#: gio/gdbusaddress.c:251 gio/gdbusaddress.c:262 gio/gdbusaddress.c:277
+#: gio/gdbusaddress.c:340 gio/gdbusaddress.c:351
 #, c-format
 msgid "Error in address “%s” — the “%s” attribute is malformed"
 msgstr "“%s” adresinde hata — “%s” özniteliği hatalı oluşturulmuş"
 
-#: gio/gdbusaddress.c:418 gio/gdbusaddress.c:682
+#: gio/gdbusaddress.c:421 gio/gdbusaddress.c:680
 #, c-format
 msgid "Unknown or unsupported transport “%s” for address “%s”"
 msgstr "“%2$s” adresi için bilinmeyen ya da desteklenmeyen aktarım “%1$s”"
 
-#: gio/gdbusaddress.c:462
+#: gio/gdbusaddress.c:465
 #, c-format
 msgid "Address element “%s” does not contain a colon (:)"
 msgstr "Adres ögesi “%s” iki nokta üst üste (:) içermez"
 
-#: gio/gdbusaddress.c:471
+#: gio/gdbusaddress.c:474
 #, c-format
 msgid "Transport name in address element “%s” must not be empty"
 msgstr "“%s” adres ögesindeki aktarım adı boş olmamalı"
 
-#: gio/gdbusaddress.c:492
+#: gio/gdbusaddress.c:495
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” does not contain an equal "
@@ -417,7 +426,7 @@ msgstr ""
 "“%3$s” adres ögesi içindeki, Anahtar/Değer çifti %1$d, “%2$s” eşittir imi "
 "içermiyor"
 
-#: gio/gdbusaddress.c:503
+#: gio/gdbusaddress.c:506
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” must not have an empty key"
@@ -425,7 +434,7 @@ msgstr ""
 "“%3$s” adres ögesi içindeki, Anahtar/Değer çifti %1$d, “%2$s” boş anahtar "
 "olmamalıdır"
 
-#: gio/gdbusaddress.c:517
+#: gio/gdbusaddress.c:520
 #, c-format
 msgid ""
 "Error unescaping key or value in Key/Value pair %d, “%s”, in address element "
@@ -434,7 +443,7 @@ msgstr ""
 "“%3$s” adres ögesindeki, Anahtar/Değer çifti %1$d, “%2$s” içinde ters kaçış "
 "tuşu veya değeri hatası"
 
-#: gio/gdbusaddress.c:589
+#: gio/gdbusaddress.c:588
 #, c-format
 msgid ""
 "Error in address “%s” — the unix transport requires exactly one of the keys "
@@ -443,78 +452,78 @@ msgstr ""
 "“%s” adresinde hata — unix aktarımı, “path” veya “abstract” anahtarlarından "
 "bir tanesinin kesinlikle ayarlanmış olmasını gerektirir"
 
-#: gio/gdbusaddress.c:625
+#: gio/gdbusaddress.c:623
 #, c-format
 msgid "Error in address “%s” — the host attribute is missing or malformed"
 msgstr "“%s” adresinde hata — host özniteliği eksik ya da hatalı oluşturulmuş"
 
-#: gio/gdbusaddress.c:639
+#: gio/gdbusaddress.c:637
 #, c-format
 msgid "Error in address “%s” — the port attribute is missing or malformed"
 msgstr ""
 "“%s” adresinde hata — bağlantı noktası özniteliği eksik ya da hatalı "
 "oluşturulmuş"
 
-#: gio/gdbusaddress.c:653
+#: gio/gdbusaddress.c:651
 #, c-format
 msgid "Error in address “%s” — the noncefile attribute is missing or malformed"
 msgstr ""
 "“%s” adresinde hata — noncefile özniteliği eksik ya da hatalı oluşturulmuş"
 
-#: gio/gdbusaddress.c:674
+#: gio/gdbusaddress.c:672
 msgid "Error auto-launching: "
 msgstr "Kendiliğinden başlatmada hata: "
 
-#: gio/gdbusaddress.c:727
+#: gio/gdbusaddress.c:725
 #, c-format
 msgid "Error opening nonce file “%s”: %s"
 msgstr "Tek seferlik dosya “%s” açılırken hata: %s"
 
-#: gio/gdbusaddress.c:746
+#: gio/gdbusaddress.c:744
 #, c-format
 msgid "Error reading from nonce file “%s”: %s"
 msgstr "Tek seferlik dosya “%s” okunurken hata: %s"
 
-#: gio/gdbusaddress.c:755
+#: gio/gdbusaddress.c:753
 #, c-format
 msgid "Error reading from nonce file “%s”, expected 16 bytes, got %d"
 msgstr "Tek seferlik dosya “%s” okunurken hata, beklenen 16 bayt, alınan %d"
 
-#: gio/gdbusaddress.c:773
+#: gio/gdbusaddress.c:771
 #, c-format
 msgid "Error writing contents of nonce file “%s” to stream:"
 msgstr "“%s” tek seferlik dosyasının akış için içeriklerini yazmada hata:"
 
-#: gio/gdbusaddress.c:988
+#: gio/gdbusaddress.c:986
 msgid "The given address is empty"
 msgstr "Verilen adres boş"
 
-#: gio/gdbusaddress.c:1101
+#: gio/gdbusaddress.c:1099
 #, c-format
-msgid "Cannot spawn a message bus when setuid"
-msgstr "setuid gerektiğinde ileti veri yolu oluşturulamıyor"
+msgid "Cannot spawn a message bus when AT_SECURE is set"
+msgstr "AT_SECURE belirtildiğinde ileti veri yolu oluşturulamaz"
 
-#: gio/gdbusaddress.c:1108
+#: gio/gdbusaddress.c:1106
 msgid "Cannot spawn a message bus without a machine-id: "
 msgstr "machine-id olmadan ileti veri yolu oluşturulamıyor: "
 
-#: gio/gdbusaddress.c:1115
+#: gio/gdbusaddress.c:1113
 #, c-format
 msgid "Cannot autolaunch D-Bus without X11 $DISPLAY"
 msgstr "X11 $DISPLAY olmadan D-BUS kendiliğinden başlatılamaz"
 
-#: gio/gdbusaddress.c:1157
+#: gio/gdbusaddress.c:1155
 #, c-format
 msgid "Error spawning command line “%s”: "
 msgstr "“%s” komut satırı oluşturulurken hata: "
 
-#: gio/gdbusaddress.c:1226
+#: gio/gdbusaddress.c:1224
 #, c-format
 msgid "Cannot determine session bus address (not implemented for this OS)"
 msgstr ""
 "Oturum veri yolu adresi saptanamıyor (bu işletim sistemi için uygulanmadı)"
 
-#: gio/gdbusaddress.c:1375 gio/gdbusconnection.c:7334
+#: gio/gdbusaddress.c:1373 gio/gdbusconnection.c:7318
 #, c-format
 msgid ""
 "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
@@ -523,7 +532,7 @@ msgstr ""
 "DBUS_STARTER_BUS_TYPE ortam değişkeninden veri yolu adresi saptanamıyor — "
 "bilinmeyen değer “%s”"
 
-#: gio/gdbusaddress.c:1384 gio/gdbusconnection.c:7343
+#: gio/gdbusaddress.c:1382 gio/gdbusconnection.c:7327
 msgid ""
 "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
 "variable is not set"
@@ -531,7 +540,7 @@ msgstr ""
 "DBUS_STARTER_BUS_TYPE ortam değişkenine değer atanmadığından dolayı veri "
 "yolu adresi belirlenemiyor"
 
-#: gio/gdbusaddress.c:1394
+#: gio/gdbusaddress.c:1392
 #, c-format
 msgid "Unknown bus type %d"
 msgstr "Bilinmeyen veriyolu türü %d"
@@ -560,12 +569,12 @@ msgstr "Kullanıcı kimlikleri eş ve sunucu için aynı olmalıdır"
 msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
 msgstr "GDBusAuthObserver::authorize-authenticated-peer yolu ile iptal edildi"
 
-#: gio/gdbusauthmechanismsha1.c:298
+#: gio/gdbusauthmechanismsha1.c:300
 #, c-format
 msgid "Error when getting information for directory “%s”: %s"
 msgstr "“%s” dizini için bilgi alınırken hata: %s"
 
-#: gio/gdbusauthmechanismsha1.c:313
+#: gio/gdbusauthmechanismsha1.c:315
 #, c-format
 msgid ""
 "Permissions on directory “%s” are malformed. Expected mode 0700, got 0%o"
@@ -573,32 +582,32 @@ msgstr ""
 "“%s” dizini üzerindeki izinler bozulmuştur. 0700 kipi beklenmiştir, ama 0%o "
 "alınmıştır"
 
-#: gio/gdbusauthmechanismsha1.c:346 gio/gdbusauthmechanismsha1.c:357
+#: gio/gdbusauthmechanismsha1.c:348 gio/gdbusauthmechanismsha1.c:359
 #, c-format
 msgid "Error creating directory “%s”: %s"
 msgstr "“%s” dizini oluşturulurken hata: %s"
 
-#: gio/gdbusauthmechanismsha1.c:359 gio/gfile.c:1062 gio/gfile.c:1300
-#: gio/gfile.c:1438 gio/gfile.c:1676 gio/gfile.c:1731 gio/gfile.c:1789
-#: gio/gfile.c:1873 gio/gfile.c:1930 gio/gfile.c:1994 gio/gfile.c:2049
-#: gio/gfile.c:3754 gio/gfile.c:3809 gio/gfile.c:4102 gio/gfile.c:4572
-#: gio/gfile.c:4983 gio/gfile.c:5068 gio/gfile.c:5158 gio/gfile.c:5255
-#: gio/gfile.c:5342 gio/gfile.c:5443 gio/gfile.c:8153 gio/gfile.c:8243
-#: gio/gfile.c:8327 gio/win32/gwinhttpfile.c:453
+#: gio/gdbusauthmechanismsha1.c:361 gio/gfile.c:1080 gio/gfile.c:1318
+#: gio/gfile.c:1456 gio/gfile.c:1694 gio/gfile.c:1749 gio/gfile.c:1807
+#: gio/gfile.c:1891 gio/gfile.c:1948 gio/gfile.c:2012 gio/gfile.c:2067
+#: gio/gfile.c:3772 gio/gfile.c:3912 gio/gfile.c:4205 gio/gfile.c:4675
+#: gio/gfile.c:5086 gio/gfile.c:5171 gio/gfile.c:5261 gio/gfile.c:5358
+#: gio/gfile.c:5445 gio/gfile.c:5546 gio/gfile.c:8375 gio/gfile.c:8465
+#: gio/gfile.c:8549 gio/win32/gwinhttpfile.c:453
 msgid "Operation not supported"
 msgstr "İşlem desteklenmiyor"
 
-#: gio/gdbusauthmechanismsha1.c:402
+#: gio/gdbusauthmechanismsha1.c:404
 #, c-format
 msgid "Error opening keyring “%s” for reading: "
 msgstr "Okumak için “%s” anahtarlığı açılırken hata: "
 
-#: gio/gdbusauthmechanismsha1.c:425 gio/gdbusauthmechanismsha1.c:747
+#: gio/gdbusauthmechanismsha1.c:427 gio/gdbusauthmechanismsha1.c:769
 #, c-format
 msgid "Line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr "“%3$s” içerikli “%2$s” konumundaki anahtarlığın %1$d. satırı bozulmuş"
 
-#: gio/gdbusauthmechanismsha1.c:439 gio/gdbusauthmechanismsha1.c:761
+#: gio/gdbusauthmechanismsha1.c:441 gio/gdbusauthmechanismsha1.c:783
 #, c-format
 msgid ""
 "First token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -606,7 +615,7 @@ msgstr ""
 "“%3$s” içerikli “%2$s” konumundaki anahtarlığın %1$d. satırının ilk "
 "belirteci bozulmuş"
 
-#: gio/gdbusauthmechanismsha1.c:453 gio/gdbusauthmechanismsha1.c:775
+#: gio/gdbusauthmechanismsha1.c:455 gio/gdbusauthmechanismsha1.c:797
 #, c-format
 msgid ""
 "Second token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -614,159 +623,159 @@ msgstr ""
 "“%3$s” içerikli “%2$s” konumundaki anahtarlığın %1$d. satırının ikinci "
 "belirteci bozulmuş"
 
-#: gio/gdbusauthmechanismsha1.c:477
+#: gio/gdbusauthmechanismsha1.c:479
 #, c-format
 msgid "Didn’t find cookie with id %d in the keyring at “%s”"
 msgstr "“%2$s” konumundaki anahtarlıkta %1$d kimlikli çerez bulunamadı"
 
-#: gio/gdbusauthmechanismsha1.c:523
+#: gio/gdbusauthmechanismsha1.c:536
 #, c-format
 msgid "Error creating lock file “%s”: %s"
 msgstr "Kilit dosyası “%s” oluşturulurken hata: %s"
 
-#: gio/gdbusauthmechanismsha1.c:587
+#: gio/gdbusauthmechanismsha1.c:609
 #, c-format
 msgid "Error deleting stale lock file “%s”: %s"
 msgstr "Eski kilit dosyası “%s” silinirken hata: %s"
 
-#: gio/gdbusauthmechanismsha1.c:626
+#: gio/gdbusauthmechanismsha1.c:648
 #, c-format
 msgid "Error closing (unlinked) lock file “%s”: %s"
 msgstr "(Bağlantısı olmayan) kilit dosyası “%s” kapatılırken hata: %s"
 
-#: gio/gdbusauthmechanismsha1.c:637
+#: gio/gdbusauthmechanismsha1.c:659
 #, c-format
 msgid "Error unlinking lock file “%s”: %s"
 msgstr "“%s” kilit dosyasının bağlantısı kaldırılırken hata: %s"
 
-#: gio/gdbusauthmechanismsha1.c:714
+#: gio/gdbusauthmechanismsha1.c:736
 #, c-format
 msgid "Error opening keyring “%s” for writing: "
 msgstr "“%s” anahtarlığını yazma için açarken hata: "
 
-#: gio/gdbusauthmechanismsha1.c:908
+#: gio/gdbusauthmechanismsha1.c:930
 #, c-format
 msgid "(Additionally, releasing the lock for “%s” also failed: %s) "
 msgstr "(Ayrıca, “%s” için kilidi açma başarısız oldu: %s) "
 
-#: gio/gdbusconnection.c:604 gio/gdbusconnection.c:2418
+#: gio/gdbusconnection.c:588 gio/gdbusconnection.c:2402
 msgid "The connection is closed"
 msgstr "Bağlantı kapalı"
 
-#: gio/gdbusconnection.c:1903
+#: gio/gdbusconnection.c:1887
 msgid "Timeout was reached"
 msgstr "Zaman aşımı gerçekleşti"
 
-#: gio/gdbusconnection.c:2541
+#: gio/gdbusconnection.c:2525
 msgid ""
 "Unsupported flags encountered when constructing a client-side connection"
 msgstr ""
 "İstemci taraflı bağlantı kurulurken desteklenmeyen etiketlerle karşılaşıldı"
 
-#: gio/gdbusconnection.c:4269 gio/gdbusconnection.c:4623
+#: gio/gdbusconnection.c:4253 gio/gdbusconnection.c:4607
 #, c-format
 msgid ""
 "No such interface “org.freedesktop.DBus.Properties” on object at path %s"
 msgstr ""
 "%s yolundaki nesnede “org.freedesktop.DBus.Properties” gibi bir arayüz yok"
 
-#: gio/gdbusconnection.c:4414
+#: gio/gdbusconnection.c:4398
 #, c-format
 msgid "No such property “%s”"
 msgstr "“%s” gibi bir özellik yok"
 
-#: gio/gdbusconnection.c:4426
+#: gio/gdbusconnection.c:4410
 #, c-format
 msgid "Property “%s” is not readable"
 msgstr "“%s” özelliği okunabilir değil"
 
-#: gio/gdbusconnection.c:4437
+#: gio/gdbusconnection.c:4421
 #, c-format
 msgid "Property “%s” is not writable"
 msgstr "“%s” özelliği yazılabilir değil"
 
-#: gio/gdbusconnection.c:4457
+#: gio/gdbusconnection.c:4441
 #, c-format
 msgid "Error setting property “%s”: Expected type “%s” but got “%s”"
 msgstr "“%s” özelliği ayarlanırken hata: “%s” türü beklendi, “%s” elde edildi"
 
-#: gio/gdbusconnection.c:4562 gio/gdbusconnection.c:4777
-#: gio/gdbusconnection.c:6760
+#: gio/gdbusconnection.c:4546 gio/gdbusconnection.c:4761
+#: gio/gdbusconnection.c:6744
 #, c-format
 msgid "No such interface “%s”"
 msgstr "“%s” gibi bir arabirim yok"
 
-#: gio/gdbusconnection.c:4999 gio/gdbusconnection.c:7274
+#: gio/gdbusconnection.c:4983 gio/gdbusconnection.c:7258
 #, c-format
 msgid "No such interface “%s” on object at path %s"
 msgstr "%2$s yolundaki nesnede “%1$s” gibi bir arayüz yok"
 
-#: gio/gdbusconnection.c:5100
+#: gio/gdbusconnection.c:5084
 #, c-format
 msgid "No such method “%s”"
 msgstr "“%s” gibi bir anahtar yok"
 
-#: gio/gdbusconnection.c:5131
+#: gio/gdbusconnection.c:5115
 #, c-format
 msgid "Type of message, “%s”, does not match expected type “%s”"
 msgstr "“%s” iletisinin türü, beklenen “%s” türü ile örtüşmüyor"
 
-#: gio/gdbusconnection.c:5334
+#: gio/gdbusconnection.c:5318
 #, c-format
 msgid "An object is already exported for the interface %s at %s"
 msgstr "%2$s konumundaki %1$s arayüzü için bir nesne zaten dışa aktarıldı"
 
-#: gio/gdbusconnection.c:5561
+#: gio/gdbusconnection.c:5545
 #, c-format
 msgid "Unable to retrieve property %s.%s"
 msgstr "%s.%s özelliği alınamadı"
 
-#: gio/gdbusconnection.c:5617
+#: gio/gdbusconnection.c:5601
 #, c-format
 msgid "Unable to set property %s.%s"
 msgstr "%s.%s özelliği ayarlanamadı"
 
-#: gio/gdbusconnection.c:5796
+#: gio/gdbusconnection.c:5780
 #, c-format
 msgid "Method “%s” returned type “%s”, but expected “%s”"
 msgstr "“%s” yöntemi “%s” türü döndürdü, ancak “%s” bekleniyordu"
 
-#: gio/gdbusconnection.c:6872
+#: gio/gdbusconnection.c:6856
 #, c-format
 msgid "Method “%s” on interface “%s” with signature “%s” does not exist"
 msgstr "“%3$s” imzalı “%2$s” arayüzü üzerinde “%1$s” yöntemi yok"
 
-#: gio/gdbusconnection.c:6993
+#: gio/gdbusconnection.c:6977
 #, c-format
 msgid "A subtree is already exported for %s"
 msgstr "%s için bir alt ağaç zaten dışa aktarılmış"
 
-#: gio/gdbusconnection.c:7282
+#: gio/gdbusconnection.c:7266
 #, c-format
 msgid "Object does not exist at path “%s”"
 msgstr "Nesne, “%s” yolunda yok"
 
-#: gio/gdbusmessage.c:1311
+#: gio/gdbusmessage.c:1301
 msgid "type is INVALID"
 msgstr "tür GEÇERSİZ"
 
-#: gio/gdbusmessage.c:1322
+#: gio/gdbusmessage.c:1312
 msgid "METHOD_CALL message: PATH or MEMBER header field is missing"
 msgstr "METHOD_CALL iletisi:  PATH ya da MEMBER başlık alanı eksik"
 
-#: gio/gdbusmessage.c:1333
+#: gio/gdbusmessage.c:1323
 msgid "METHOD_RETURN message: REPLY_SERIAL header field is missing"
 msgstr "METHOD_RETURN iletisi: REPLY_SERIAL başlık alanı eksik"
 
-#: gio/gdbusmessage.c:1345
+#: gio/gdbusmessage.c:1335
 msgid "ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing"
 msgstr "ERROR iletisi: REPLY_SERIAL ya da ERROR_NAME başlık alanı eksik"
 
-#: gio/gdbusmessage.c:1358
+#: gio/gdbusmessage.c:1348
 msgid "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing"
 msgstr "SIGNAL iletisi: PATH, INTERFACE ya da MEMBER başlık alanı eksik"
 
-#: gio/gdbusmessage.c:1366
+#: gio/gdbusmessage.c:1356
 msgid ""
 "SIGNAL message: The PATH header field is using the reserved value /org/"
 "freedesktop/DBus/Local"
@@ -774,7 +783,7 @@ msgstr ""
 "SIGNAL iletisi: PATH başlık alanı, ayrılmış olan /org/freedesktop/DBus/Local "
 "değerini kullanıyor"
 
-#: gio/gdbusmessage.c:1374
+#: gio/gdbusmessage.c:1364
 msgid ""
 "SIGNAL message: The INTERFACE header field is using the reserved value org."
 "freedesktop.DBus.Local"
@@ -782,18 +791,18 @@ msgstr ""
 "SIGNAL iletisi: INTERFACE başlık alanı, ayrılmış olan org.freedesktop.DBus."
 "Local değerini kullanıyor"
 
-#: gio/gdbusmessage.c:1422 gio/gdbusmessage.c:1482
+#: gio/gdbusmessage.c:1412 gio/gdbusmessage.c:1472
 #, c-format
 msgid "Wanted to read %lu byte but only got %lu"
 msgid_plural "Wanted to read %lu bytes but only got %lu"
 msgstr[0] "%lu bayt okumak istendi ancak yalnızca %lu var"
 
-#: gio/gdbusmessage.c:1436
+#: gio/gdbusmessage.c:1426
 #, c-format
 msgid "Expected NUL byte after the string “%s” but found byte %d"
 msgstr "“%s” dizgesinden sonra NUL baytı beklendi, ama %d baytı bulundu"
 
-#: gio/gdbusmessage.c:1455
+#: gio/gdbusmessage.c:1445
 #, c-format
 msgid ""
 "Expected valid UTF-8 string but found invalid bytes at byte offset %d "
@@ -802,21 +811,21 @@ msgstr ""
 "Geçerli bir UTF-8 dizgesi beklendi ama %d bayt konumunda geçersiz baytlar "
 "bulundu (dizge uzunluğu %d). Bu noktaya kadar geçerli olan dizge şudur: “%s”"
 
-#: gio/gdbusmessage.c:1519 gio/gdbusmessage.c:1795 gio/gdbusmessage.c:2006
+#: gio/gdbusmessage.c:1509 gio/gdbusmessage.c:1785 gio/gdbusmessage.c:1996
 msgid "Value nested too deeply"
 msgstr "Değer çok derine yuvalanmış"
 
-#: gio/gdbusmessage.c:1687
+#: gio/gdbusmessage.c:1677
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus object path"
 msgstr "Ayrıştırılan değer “%s”, geçerli bir D-Bus nesne yolu değil"
 
-#: gio/gdbusmessage.c:1711
+#: gio/gdbusmessage.c:1701
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature"
 msgstr "Ayrıştırılan değer “%s”, geçerli bir D-Bus imzası değil"
 
-#: gio/gdbusmessage.c:1762
+#: gio/gdbusmessage.c:1752
 #, c-format
 msgid ""
 "Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB)."
@@ -826,7 +835,7 @@ msgstr[0] ""
 "%u bayt uzunluğunda dizi ile karşılaşıldı. Olabilecek en çok uzunluk 2<<26 "
 "bayt (64 MiB)."
 
-#: gio/gdbusmessage.c:1782
+#: gio/gdbusmessage.c:1772
 #, c-format
 msgid ""
 "Encountered array of type “a%c”, expected to have a length a multiple of %u "
@@ -835,23 +844,23 @@ msgstr ""
 "“a%c” türünde dizi ile karşılaşıldı, birden çok %u bayt uzunluğu "
 "beklenmektedir ancak %u bayt uzunluk bulundu"
 
-#: gio/gdbusmessage.c:1936 gio/gdbusmessage.c:2655
+#: gio/gdbusmessage.c:1926 gio/gdbusmessage.c:2645
 msgid "Empty structures (tuples) are not allowed in D-Bus"
 msgstr "D-Bus’ta boş yapılara (demetler) izin verilmez"
 
-#: gio/gdbusmessage.c:1990
+#: gio/gdbusmessage.c:1980
 #, c-format
 msgid "Parsed value “%s” for variant is not a valid D-Bus signature"
 msgstr "Varyant için ayrıştırılmış “%s” değeri geçeriz bir D-Bus imzasıdır"
 
-#: gio/gdbusmessage.c:2031
+#: gio/gdbusmessage.c:2021
 #, c-format
 msgid ""
 "Error deserializing GVariant with type string “%s” from the D-Bus wire format"
 msgstr ""
 "GVariant, D-Bus tel biçiminden “%s” dizge türüyle geri dönüştürülürken hata"
 
-#: gio/gdbusmessage.c:2216
+#: gio/gdbusmessage.c:2206
 #, c-format
 msgid ""
 "Invalid endianness value. Expected 0x6c (“l”) or 0x42 (“B”) but found value "
@@ -860,57 +869,57 @@ msgstr ""
 "Geçersiz endian değeri. 0x6c (“l”) veya 0x42 (“B”) bekleniyordu ancak 0x%02x "
 "değeri bulundu"
 
-#: gio/gdbusmessage.c:2235
+#: gio/gdbusmessage.c:2225
 #, c-format
 msgid "Invalid major protocol version. Expected 1 but found %d"
 msgstr "Geçersiz önemli iletişim kuralı sürümü. 1 beklendi, %d bulundu"
 
-#: gio/gdbusmessage.c:2293 gio/gdbusmessage.c:2891
+#: gio/gdbusmessage.c:2283 gio/gdbusmessage.c:2881
 msgid "Signature header found but is not of type signature"
 msgstr "İmza başlığı bulundu, ancak tür imzası değil"
 
-#: gio/gdbusmessage.c:2305
+#: gio/gdbusmessage.c:2295
 #, c-format
 msgid "Signature header with signature “%s” found but message body is empty"
 msgstr "“%s” imzalı bir imza başlığı bulundu ama ileti gövdesi boş"
 
-#: gio/gdbusmessage.c:2320
+#: gio/gdbusmessage.c:2310
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature (for body)"
 msgstr "Ayrıştırılan değer “%s” geçerli bir D-Bus imzası değil (gövde için)"
 
-#: gio/gdbusmessage.c:2352
+#: gio/gdbusmessage.c:2342
 #, 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"
 msgstr[0] "İletide imza başlığı yok ancak ileti gövdesi %u bayt"
 
-#: gio/gdbusmessage.c:2362
+#: gio/gdbusmessage.c:2352
 msgid "Cannot deserialize message: "
 msgstr "İleti geri dönüştürülemiyor: "
 
-#: gio/gdbusmessage.c:2708
+#: gio/gdbusmessage.c:2698
 #, c-format
 msgid ""
 "Error serializing GVariant with type string “%s” to the D-Bus wire format"
 msgstr "GVariant, D-Bus tel biçimine “%s” dizge türüyle dönüştürülürken hata"
 
-#: gio/gdbusmessage.c:2845
+#: gio/gdbusmessage.c:2835
 #, c-format
 msgid ""
 "Number of file descriptors in message (%d) differs from header field (%d)"
 msgstr "İletideki dosya açıklayıcı sayısı (%d) başlık alanından (%d) farklı"
 
-#: gio/gdbusmessage.c:2853
+#: gio/gdbusmessage.c:2843
 msgid "Cannot serialize message: "
 msgstr "İleti dönüştürülemiyor: "
 
-#: gio/gdbusmessage.c:2906
+#: gio/gdbusmessage.c:2896
 #, c-format
 msgid "Message body has signature “%s” but there is no signature header"
 msgstr "İleti gövdesi “%s” imzasına sahip ancak imza başlığı yok"
 
-#: gio/gdbusmessage.c:2916
+#: gio/gdbusmessage.c:2906
 #, c-format
 msgid ""
 "Message body has type signature “%s” but signature in the header field is "
@@ -918,52 +927,52 @@ msgid ""
 msgstr ""
 "İleti gövdesi “%s” tür imzasına sahip ancak başlık alanındaki imza “%s”"
 
-#: gio/gdbusmessage.c:2932
+#: gio/gdbusmessage.c:2922
 #, c-format
 msgid "Message body is empty but signature in the header field is “(%s)”"
 msgstr "İleti gövdesi boş, ancak başlık alanındaki imza “(%s)”"
 
-#: gio/gdbusmessage.c:3487
+#: gio/gdbusmessage.c:3477
 #, c-format
 msgid "Error return with body of type “%s”"
 msgstr "“%s” türünden bir gövdeyle dönüş hatası"
 
-#: gio/gdbusmessage.c:3495
+#: gio/gdbusmessage.c:3485
 msgid "Error return with empty body"
 msgstr "Boş gövdeyle dönüş hatası"
 
-#: gio/gdbusprivate.c:2246
+#: gio/gdbusprivate.c:2185
 #, c-format
 msgid "(Type any character to close this window)\n"
 msgstr "(Pencereyi kapatmak için herhangi bir karakter girin)\n"
 
-#: gio/gdbusprivate.c:2420
+#: gio/gdbusprivate.c:2371
 #, c-format
 msgid "Session dbus not running, and autolaunch failed"
 msgstr "Dbus oturumu çalışmıyor ve kendiliğinden başlatma başarısız oldu"
 
-#: gio/gdbusprivate.c:2443
+#: gio/gdbusprivate.c:2394
 #, c-format
 msgid "Unable to get Hardware profile: %s"
 msgstr "Donanım profili alınamıyor: %s"
 
 #. Translators: Both placeholders are file paths
-#: gio/gdbusprivate.c:2494
+#: gio/gdbusprivate.c:2445
 #, c-format
 msgid "Unable to load %s or %s: "
 msgstr "%s ya da %s yüklenemedi: "
 
-#: gio/gdbusproxy.c:1569
+#: gio/gdbusproxy.c:1573
 #, c-format
 msgid "Error calling StartServiceByName for %s: "
 msgstr "%s için StartServiceByName çağrısında hata: "
 
-#: gio/gdbusproxy.c:1592
+#: gio/gdbusproxy.c:1596
 #, c-format
 msgid "Unexpected reply %d from StartServiceByName(\"%s\") method"
 msgstr "StartServiceByName %d yönteminden beklenmeyen yanıt (\"%s\")"
 
-#: gio/gdbusproxy.c:2699 gio/gdbusproxy.c:2834
+#: gio/gdbusproxy.c:2707 gio/gdbusproxy.c:2842
 #, c-format
 msgid ""
 "Cannot invoke method; proxy is for the well-known name %s without an owner, "
@@ -1010,234 +1019,238 @@ msgid ""
 msgstr ""
 "Komutlar:\n"
 "  help         Bu bilgiyi gösterir\n"
-"  introspect   Bir uzak nesyene içgözlem yap\n"
-"  monitor      Bir uzak nesneyi gözlemle\n"
-"  call         Bir uzak nesne üzerinde yöntem çağır\n"
-"  emit         Bir sinyal yay\n"
+"  introspect   Uzak nesneye iç gözlem yap\n"
+"  monitor      Uzak nesneyi gözlemle\n"
+"  call         Uzak nesne üzerinde yöntem çağır\n"
+"  emit         Sinyal yay\n"
 "  wait         Veri yolu adının belirmesini bekle\n"
 "\n"
-"Her bir komut hakkında yardım almak için “%s KOMUT --help” kullanın.\n"
+"Her komutla ilgili yardım almak için “%s KOMUT --help” kullan.\n"
 
-#: gio/gdbus-tool.c:201 gio/gdbus-tool.c:273 gio/gdbus-tool.c:345
-#: gio/gdbus-tool.c:369 gio/gdbus-tool.c:859 gio/gdbus-tool.c:1236
-#: gio/gdbus-tool.c:1724
+#: gio/gdbus-tool.c:202 gio/gdbus-tool.c:274 gio/gdbus-tool.c:346
+#: gio/gdbus-tool.c:370 gio/gdbus-tool.c:860 gio/gdbus-tool.c:1245
+#: gio/gdbus-tool.c:1733
 #, c-format
 msgid "Error: %s\n"
 msgstr "Hata: %s\n"
 
-#: gio/gdbus-tool.c:212 gio/gdbus-tool.c:286 gio/gdbus-tool.c:1740
+#: gio/gdbus-tool.c:213 gio/gdbus-tool.c:287 gio/gdbus-tool.c:1749
 #, c-format
 msgid "Error parsing introspection XML: %s\n"
-msgstr "İçgözlem XML’ini ayrıştırmada hata: %s\n"
+msgstr "İç gözlem XML’ini ayrıştırmada hata: %s\n"
 
-#: gio/gdbus-tool.c:250
+#: gio/gdbus-tool.c:251
 #, c-format
 msgid "Error: %s is not a valid name\n"
 msgstr "Hata: %s geçerli bir ad değil\n"
 
-#: gio/gdbus-tool.c:255 gio/gdbus-tool.c:745 gio/gdbus-tool.c:1060
-#: gio/gdbus-tool.c:1890 gio/gdbus-tool.c:2130
+#: gio/gdbus-tool.c:256 gio/gdbus-tool.c:746 gio/gdbus-tool.c:1064
+#: gio/gdbus-tool.c:1899 gio/gdbus-tool.c:2139
 #, c-format
 msgid "Error: %s is not a valid object path\n"
 msgstr "Hata: %s geçerli bir nesne yolu değil\n"
 
-#: gio/gdbus-tool.c:403
+#: gio/gdbus-tool.c:404
 msgid "Connect to the system bus"
 msgstr "Sistem veriyoluna bağlan"
 
-#: gio/gdbus-tool.c:404
+#: gio/gdbus-tool.c:405
 msgid "Connect to the session bus"
 msgstr "Oturum veriyoluna bağlan"
 
-#: gio/gdbus-tool.c:405
+#: gio/gdbus-tool.c:406
 msgid "Connect to given D-Bus address"
 msgstr "Verilen D-Bus adresine bağlan"
 
-#: gio/gdbus-tool.c:415
+#: gio/gdbus-tool.c:416
 msgid "Connection Endpoint Options:"
 msgstr "Bağlantı Uç Noktası Seçenekleri:"
 
-#: gio/gdbus-tool.c:416
+#: gio/gdbus-tool.c:417
 msgid "Options specifying the connection endpoint"
 msgstr "Bağlantı uç noktasını belirleyen seçenekler"
 
-#: gio/gdbus-tool.c:439
+#: gio/gdbus-tool.c:440
 #, c-format
 msgid "No connection endpoint specified"
 msgstr "Bağlantı uç noktası belirtilmedi"
 
-#: gio/gdbus-tool.c:449
+#: gio/gdbus-tool.c:450
 #, c-format
 msgid "Multiple connection endpoints specified"
 msgstr "Birden çok bağlantı uç noktası belirtildi"
 
-#: gio/gdbus-tool.c:522
+#: gio/gdbus-tool.c:523
 #, c-format
 msgid ""
 "Warning: According to introspection data, interface “%s” does not exist\n"
-msgstr "Uyarı: İçgözlem verilerine göre, “%s” arayüzü yok\n"
+msgstr "Uyarı: İç gözlem verilerine göre, “%s” arayüzü yok\n"
 
-#: gio/gdbus-tool.c:531
+#: gio/gdbus-tool.c:532
 #, c-format
 msgid ""
 "Warning: According to introspection data, method “%s” does not exist on "
 "interface “%s”\n"
-msgstr "Uyarı: İçgözlem verilerine göre, “%s” yöntemi “%s” arayüzünde yok\n"
+msgstr "Uyarı: İç gözlem verilerine göre, “%s” yöntemi “%s” arayüzünde yok\n"
 
-#: gio/gdbus-tool.c:593
+#: gio/gdbus-tool.c:594
 msgid "Optional destination for signal (unique name)"
 msgstr "Sinyal için isteğe bağlı hedef nokta (eşsiz ad)"
 
-#: gio/gdbus-tool.c:594
+#: gio/gdbus-tool.c:595
 msgid "Object path to emit signal on"
 msgstr "Üzerinde sinyal yaymak için nesne yolu"
 
-#: gio/gdbus-tool.c:595
+#: gio/gdbus-tool.c:596
 msgid "Signal and interface name"
 msgstr "Sinyal ve arayüz adı"
 
-#: gio/gdbus-tool.c:628
+#: gio/gdbus-tool.c:629
 msgid "Emit a signal."
 msgstr "Bir sinyal yayınla."
 
-#: gio/gdbus-tool.c:683 gio/gdbus-tool.c:997 gio/gdbus-tool.c:1827
-#: gio/gdbus-tool.c:2059 gio/gdbus-tool.c:2279
+#: gio/gdbus-tool.c:684 gio/gdbus-tool.c:1001 gio/gdbus-tool.c:1836
+#: gio/gdbus-tool.c:2068 gio/gdbus-tool.c:2288
 #, c-format
 msgid "Error connecting: %s\n"
 msgstr "Bağlanırken hata: %s\n"
 
-#: gio/gdbus-tool.c:703
+#: gio/gdbus-tool.c:704
 #, c-format
 msgid "Error: %s is not a valid unique bus name.\n"
 msgstr "Hata: %s geçerli bir özgün veriyolu adı değil\n"
 
-#: gio/gdbus-tool.c:722 gio/gdbus-tool.c:1040 gio/gdbus-tool.c:1870
+#: gio/gdbus-tool.c:723 gio/gdbus-tool.c:1044 gio/gdbus-tool.c:1879
 msgid "Error: Object path is not specified\n"
 msgstr "Hata: Nesne yolu belirtilmedi\n"
 
-#: gio/gdbus-tool.c:765
+#: gio/gdbus-tool.c:766
 msgid "Error: Signal name is not specified\n"
 msgstr "Hata: Sinyal adı belirtilmedi\n"
 
-#: gio/gdbus-tool.c:779
+#: gio/gdbus-tool.c:780
 #, c-format
 msgid "Error: Signal name “%s” is invalid\n"
 msgstr "Hata: Sinyal adı “%s” geçersiz\n"
 
-#: gio/gdbus-tool.c:791
+#: gio/gdbus-tool.c:792
 #, c-format
 msgid "Error: %s is not a valid interface name\n"
 msgstr "Hata: %s geçerli bir arayüz adı değil\n"
 
-#: gio/gdbus-tool.c:797
+#: gio/gdbus-tool.c:798
 #, c-format
 msgid "Error: %s is not a valid member name\n"
 msgstr "Hata: %s geçerli bir üye adı değil\n"
 
 #. Use the original non-"parse-me-harder" error
-#: gio/gdbus-tool.c:834 gio/gdbus-tool.c:1172
+#: gio/gdbus-tool.c:835 gio/gdbus-tool.c:1176
 #, c-format
 msgid "Error parsing parameter %d: %s\n"
 msgstr "%d parametresini ayrıştırırken hata oluştu: %s\n"
 
-#: gio/gdbus-tool.c:866
+#: gio/gdbus-tool.c:867
 #, c-format
 msgid "Error flushing connection: %s\n"
 msgstr "Bağlantı boşaltılırken hata: %s\n"
 
-#: gio/gdbus-tool.c:893
+#: gio/gdbus-tool.c:895
 msgid "Destination name to invoke method on"
 msgstr "Üzerinde yöntem çalıştırılacak hedef nokta adı"
 
-#: gio/gdbus-tool.c:894
+#: gio/gdbus-tool.c:896
 msgid "Object path to invoke method on"
 msgstr "Yöntemin üzerinde çalıştırılacağı nesne yolu"
 
-#: gio/gdbus-tool.c:895
+#: gio/gdbus-tool.c:897
 msgid "Method and interface name"
 msgstr "Yöntem ve arayüz adı"
 
-#: gio/gdbus-tool.c:896
+#: gio/gdbus-tool.c:898
 msgid "Timeout in seconds"
 msgstr "Saniye cinsinden zaman aşımı"
 
-#: gio/gdbus-tool.c:942
+#: gio/gdbus-tool.c:899
+msgid "Allow interactive authorization"
+msgstr "Etkileşimli yetkilendirmeye izin ver"
+
+#: gio/gdbus-tool.c:946
 msgid "Invoke a method on a remote object."
 msgstr "Uzak bir nesne üzerinde yöntem çalıştır."
 
-#: gio/gdbus-tool.c:1014 gio/gdbus-tool.c:1844 gio/gdbus-tool.c:2084
+#: gio/gdbus-tool.c:1018 gio/gdbus-tool.c:1853 gio/gdbus-tool.c:2093
 msgid "Error: Destination is not specified\n"
 msgstr "Hata: Hedef belirtilmedi\n"
 
-#: gio/gdbus-tool.c:1025 gio/gdbus-tool.c:1861 gio/gdbus-tool.c:2095
+#: gio/gdbus-tool.c:1029 gio/gdbus-tool.c:1870 gio/gdbus-tool.c:2104
 #, c-format
 msgid "Error: %s is not a valid bus name\n"
 msgstr "Hata: %s geçerli bir veri yolu adı değil\n"
 
-#: gio/gdbus-tool.c:1075
+#: gio/gdbus-tool.c:1079
 msgid "Error: Method name is not specified\n"
 msgstr "Hata: Yöntem adı belirtilmedi\n"
 
-#: gio/gdbus-tool.c:1086
+#: gio/gdbus-tool.c:1090
 #, c-format
 msgid "Error: Method name “%s” is invalid\n"
 msgstr "Hata: Yöntem adı “%s” geçersiz\n"
 
-#: gio/gdbus-tool.c:1164
+#: gio/gdbus-tool.c:1168
 #, c-format
 msgid "Error parsing parameter %d of type “%s”: %s\n"
 msgstr "“%2$s” türünün %1$d parametresi ayrıştırılırken hata: %3$s\n"
 
-#: gio/gdbus-tool.c:1190
+#: gio/gdbus-tool.c:1194
 #, c-format
 msgid "Error adding handle %d: %s\n"
 msgstr "%d işleyici eklenemedi: %s\n"
 
-#: gio/gdbus-tool.c:1686
+#: gio/gdbus-tool.c:1695
 msgid "Destination name to introspect"
-msgstr "İçgözlem için hedef nokta adı"
+msgstr "İç gözlem için hedef nokta adı"
 
-#: gio/gdbus-tool.c:1687
+#: gio/gdbus-tool.c:1696
 msgid "Object path to introspect"
-msgstr "İçgözlem yapmak için nesne yolu"
+msgstr "İç gözlem yapılacak nesne yolu"
 
-#: gio/gdbus-tool.c:1688
+#: gio/gdbus-tool.c:1697
 msgid "Print XML"
 msgstr "XML yazdır"
 
-#: gio/gdbus-tool.c:1689
+#: gio/gdbus-tool.c:1698
 msgid "Introspect children"
 msgstr "Alt iç gözlemi"
 
-#: gio/gdbus-tool.c:1690
+#: gio/gdbus-tool.c:1699
 msgid "Only print properties"
 msgstr "Yalnızca özellikleri yazdır"
 
-#: gio/gdbus-tool.c:1779
+#: gio/gdbus-tool.c:1788
 msgid "Introspect a remote object."
-msgstr "Uzak nesneye içgözlem yap."
+msgstr "Uzak nesneye iç gözlem yap."
 
-#: gio/gdbus-tool.c:1985
+#: gio/gdbus-tool.c:1994
 msgid "Destination name to monitor"
 msgstr "Gözlemlenecek hedefin adı"
 
-#: gio/gdbus-tool.c:1986
+#: gio/gdbus-tool.c:1995
 msgid "Object path to monitor"
 msgstr "Gözlemlenecek nesne yolu"
 
-#: gio/gdbus-tool.c:2011
+#: gio/gdbus-tool.c:2020
 msgid "Monitor a remote object."
 msgstr "Uzak nesneyi gözlemle."
 
-#: gio/gdbus-tool.c:2069
+#: gio/gdbus-tool.c:2078
 msgid "Error: can’t monitor a non-message-bus connection\n"
 msgstr "Hata: non-message-bus gözlemlenemiyor\n"
 
-#: gio/gdbus-tool.c:2193
+#: gio/gdbus-tool.c:2202
 msgid "Service to activate before waiting for the other one (well-known name)"
 msgstr "Bir diğeri (tanınmış ad) için beklemeden önce aktifleştirilecek hizmet"
 
-#: gio/gdbus-tool.c:2196
+#: gio/gdbus-tool.c:2205
 msgid ""
 "Timeout to wait for before exiting with an error (seconds); 0 for no timeout "
 "(default)"
@@ -1245,63 +1258,68 @@ msgstr ""
 "Bir hatayla çıkılmadan önce beklenecek zaman aşımı süresi (saniye); zaman "
 "aşımı olmaması için 0 (öntanımlı)"
 
-#: gio/gdbus-tool.c:2244
+#: gio/gdbus-tool.c:2253
 msgid "[OPTION…] BUS-NAME"
 msgstr "[SEÇENEK…] VERİYOLU-ADI"
 
-#: gio/gdbus-tool.c:2245
+#: gio/gdbus-tool.c:2254
 msgid "Wait for a bus name to appear."
 msgstr "Veri yolu adının belirmesini bekle."
 
-#: gio/gdbus-tool.c:2321
+#: gio/gdbus-tool.c:2330
 msgid "Error: A service to activate for must be specified.\n"
-msgstr "Hata: Aktifleştirilecek bir hizmet belirtilmelidir.\n"
+msgstr "Hata: Aktifleştirilecek hizmet belirtilmelidir.\n"
 
-#: gio/gdbus-tool.c:2326
+#: gio/gdbus-tool.c:2335
 msgid "Error: A service to wait for must be specified.\n"
-msgstr "Hata: Beklenecek bir hizmet belirtilmelidir.\n"
+msgstr "Hata: Beklenecek hizmet belirtilmelidir.\n"
 
-#: gio/gdbus-tool.c:2331
+#: gio/gdbus-tool.c:2340
 msgid "Error: Too many arguments.\n"
 msgstr "Hata: Çok fazla argüman.\n"
 
-#: gio/gdbus-tool.c:2339 gio/gdbus-tool.c:2346
+#: gio/gdbus-tool.c:2348 gio/gdbus-tool.c:2355
 #, c-format
 msgid "Error: %s is not a valid well-known bus name.\n"
-msgstr "Hata: %s geçerli bilinen bir veri yolu adı değil\n"
+msgstr "Hata: %s geçerli bilinen bir veri yolu adı değil.\n"
+
+#: gio/gdebugcontrollerdbus.c:358
+#, c-format
+msgid "Not authorized to change debug settings"
+msgstr "Hata ayıklama ayarlarını değiştirmeye yetkili değil"
 
-#: gio/gdesktopappinfo.c:2106 gio/gdesktopappinfo.c:4935
+#: gio/gdesktopappinfo.c:2178 gio/gdesktopappinfo.c:5105
 msgid "Unnamed"
 msgstr "Adlandırılmamış"
 
-#: gio/gdesktopappinfo.c:2516
+#: gio/gdesktopappinfo.c:2588
 msgid "Desktop file didn’t specify Exec field"
 msgstr "Desktop dosyası Exec alanı belirtmemiş"
 
-#: gio/gdesktopappinfo.c:2804
+#: gio/gdesktopappinfo.c:2896
 msgid "Unable to find terminal required for application"
 msgstr "Uygulama için gerekli uçbirim bulunamadı"
 
-#: gio/gdesktopappinfo.c:3455
+#: gio/gdesktopappinfo.c:3625
 #, c-format
 msgid "Can’t create user application configuration folder %s: %s"
 msgstr "Kullanıcı uygulaması yapılandırma klasörü %s oluşturulamıyor: %s"
 
-#: gio/gdesktopappinfo.c:3459
+#: gio/gdesktopappinfo.c:3629
 #, c-format
 msgid "Can’t create user MIME configuration folder %s: %s"
 msgstr "Kullanıcı MIME yapılandırma klasörü %s oluşturulamıyor: %s"
 
-#: gio/gdesktopappinfo.c:3701 gio/gdesktopappinfo.c:3725
+#: gio/gdesktopappinfo.c:3871 gio/gdesktopappinfo.c:3895
 msgid "Application information lacks an identifier"
-msgstr "Uygulama bilgisi bir tanımlayıcıya sahip değildir"
+msgstr "Uygulama bilgisinde tanımlayıcı eksik"
 
-#: gio/gdesktopappinfo.c:3961
+#: gio/gdesktopappinfo.c:4131
 #, c-format
 msgid "Can’t create user desktop file %s"
 msgstr "Kullanıcı masaüstü dosyası %s oluşturulamıyor"
 
-#: gio/gdesktopappinfo.c:4097
+#: gio/gdesktopappinfo.c:4267
 #, c-format
 msgid "Custom definition for %s"
 msgstr "%s için özel tanım"
@@ -1329,7 +1347,7 @@ msgstr "sürücü start uygulamıyor"
 msgid "drive doesn’t implement stop"
 msgstr "sürücü stop uygulamıyor"
 
-#: gio/gdtlsconnection.c:1153 gio/gtlsconnection.c:920
+#: gio/gdtlsconnection.c:1186 gio/gtlsconnection.c:955
 msgid "TLS backend does not implement TLS binding retrieval"
 msgstr "TLS arka yüzü, TLS bağlanım geri alımı gerçeklemiyor"
 
@@ -1350,7 +1368,7 @@ msgstr "GEmblem kodlamasının %d sürümü işlenemiyor"
 #: gio/gemblem.c:333
 #, c-format
 msgid "Malformed number of tokens (%d) in GEmblem encoding"
-msgstr "GEmblem kodlaması içerisinde bozuk sayıda token (%d)"
+msgstr "GEmblem kodlaması içerisinde bozuk belirteç sayısı (%d)"
 
 #: gio/gemblemedicon.c:362
 #, c-format
@@ -1360,7 +1378,7 @@ msgstr "GEmblemedIcon kodlamasının %d sürümü işlenemiyor"
 #: gio/gemblemedicon.c:372
 #, c-format
 msgid "Malformed number of tokens (%d) in GEmblemedIcon encoding"
-msgstr "GEmblemedIcon kodlaması içerisinde bozuk sayıda token (%d)"
+msgstr "GEmblemedIcon kodlaması içerisinde bozuk belirteç sayısı (%d)"
 
 #: gio/gemblemedicon.c:395
 msgid "Expected a GEmblem for GEmblemedIcon"
@@ -1370,77 +1388,77 @@ msgstr "GEmblemedIcon için bir Gemblem beklendi"
 #. * trying to find the enclosing (user visible)
 #. * mount of a file, but none exists.
 #.
-#: gio/gfile.c:1561
+#: gio/gfile.c:1579
 msgid "Containing mount does not exist"
 msgstr "Bağlama yok"
 
-#: gio/gfile.c:2608 gio/glocalfile.c:2486
+#: gio/gfile.c:2626 gio/glocalfile.c:2486
 msgid "Can’t copy over directory"
 msgstr "Dizin üzerine kopyalanamıyor"
 
-#: gio/gfile.c:2668
+#: gio/gfile.c:2686
 msgid "Can’t copy directory over directory"
 msgstr "Dizin dizin üzerine kopyalanamıyor"
 
-#: gio/gfile.c:2676
+#: gio/gfile.c:2694
 msgid "Target file exists"
 msgstr "Hedef dosya var"
 
-#: gio/gfile.c:2695
+#: gio/gfile.c:2713
 msgid "Can’t recursively copy directory"
 msgstr "Dizin iç içe kopyalanamıyor"
 
-#: gio/gfile.c:2996
+#: gio/gfile.c:3014
 msgid "Splice not supported"
 msgstr "Splice desteklenmiyor"
 
-#: gio/gfile.c:3000
+#: gio/gfile.c:3018
 #, c-format
 msgid "Error splicing file: %s"
 msgstr "Dosya uç uca eklenirken hata: %s"
 
-#: gio/gfile.c:3152
+#: gio/gfile.c:3170
 msgid "Copy (reflink/clone) between mounts is not supported"
 msgstr ""
 "Bağlı sistemler arasında kopyalama (referans bağlantı/çoğaltmak) "
 "desteklenmiyor"
 
-#: gio/gfile.c:3156
+#: gio/gfile.c:3174
 msgid "Copy (reflink/clone) is not supported or invalid"
 msgstr "Kopyalama desteklenmiyor ya da geçersiz"
 
-#: gio/gfile.c:3161
+#: gio/gfile.c:3179
 msgid "Copy (reflink/clone) is not supported or didn’t work"
 msgstr "Kopyalama (bağlama/klonlama) destenlenmiyor ya da çalışmadı"
 
-#: gio/gfile.c:3226
+#: gio/gfile.c:3244
 msgid "Can’t copy special file"
 msgstr "Özel dosya kopyalanamıyor"
 
-#: gio/gfile.c:4035
+#: gio/gfile.c:4138
 msgid "Invalid symlink value given"
 msgstr "Geçersiz simgesel bağ değeri verildi"
 
-#: gio/gfile.c:4045 glib/gfileutils.c:2333
+#: gio/gfile.c:4148 glib/gfileutils.c:2333
 msgid "Symbolic links not supported"
 msgstr "Simgesel bağlar desteklenmiyor"
 
-#: gio/gfile.c:4213
+#: gio/gfile.c:4316
 msgid "Trash not supported"
 msgstr "Çöp desteklenmiyor"
 
-#: gio/gfile.c:4325
+#: gio/gfile.c:4428
 #, c-format
 msgid "File names cannot contain “%c”"
 msgstr "Dosya adları “%c” içeremez"
 
-#: gio/gfile.c:6806 gio/gvolume.c:364
+#: gio/gfile.c:7028 gio/gvolume.c:364
 msgid "volume doesn’t implement mount"
 msgstr "bölüm, bağlamayı yerine getirmiyor"
 
-#: gio/gfile.c:6920 gio/gfile.c:6968
+#: gio/gfile.c:7142 gio/gfile.c:7190
 msgid "No application is registered as handling this file"
-msgstr "Bu dosyayı işlemek için hiçbir uygulama kayıtlı değil"
+msgstr "Bu dosyayı işleme amacıyla kayıtlı uygulama yok"
 
 #: gio/gfileenumerator.c:212
 msgid "Enumerator is closed"
@@ -1449,7 +1467,7 @@ msgstr "Enumerator kapalı"
 #: gio/gfileenumerator.c:219 gio/gfileenumerator.c:278
 #: gio/gfileenumerator.c:377 gio/gfileenumerator.c:476
 msgid "File enumerator has outstanding operation"
-msgstr "Dosya numaralandırıcı sıradışı işleme sahip"
+msgstr "Dosya numaralandırıcı sıra dışı işleme sahip"
 
 #: gio/gfileenumerator.c:368 gio/gfileenumerator.c:467
 msgid "File enumerator is already closed"
@@ -1483,7 +1501,7 @@ msgstr "Sonunu kesmeye giriş akışında izin verilmiyor"
 msgid "Truncate not supported on stream"
 msgstr "Akış üzerinde sonunun kesilmesi desteklenmiyor"
 
-#: gio/ghttpproxy.c:91 gio/gresolver.c:443 gio/gresolver.c:596
+#: gio/ghttpproxy.c:91 gio/gresolver.c:458 gio/gresolver.c:611
 #: glib/gconvert.c:1825
 msgid "Invalid hostname"
 msgstr "Geçersiz makine adı"
@@ -1520,7 +1538,7 @@ msgstr "HTTP vekil sunucusu bağlantıyı beklenmedik biçimde kesti."
 #: gio/gicon.c:298
 #, c-format
 msgid "Wrong number of tokens (%d)"
-msgstr "Yanlış sayıda token (%d)"
+msgstr "Yanlış belirteç sayısı (%d)"
 
 #: gio/gicon.c:318
 #, c-format
@@ -1570,7 +1588,7 @@ msgid "Could not parse “%s” as IP address mask"
 msgstr "“%s”, IP adresi maskesi olarak ayrıştırılamadı"
 
 #: gio/ginetsocketaddress.c:203 gio/ginetsocketaddress.c:220
-#: gio/gnativesocketaddress.c:109 gio/gunixsocketaddress.c:221
+#: gio/gnativesocketaddress.c:109 gio/gunixsocketaddress.c:228
 msgid "Not enough space for socket address"
 msgstr "Yuva adresi için yeterli alan yok"
 
@@ -1590,7 +1608,7 @@ msgstr "Giriş akımı okumayı uygulamıyor"
 #. * you try to start one
 #: gio/ginputstream.c:1249 gio/giostream.c:310 gio/goutputstream.c:2208
 msgid "Stream has outstanding operation"
-msgstr "Akışın sıradışı işlemi var"
+msgstr "Akışın sıra dışı işlemi var"
 
 #: gio/gio-tool.c:160
 msgid "Copy with file"
@@ -1662,7 +1680,7 @@ msgstr "Dosyaları öntanımlı uygulamayla aç"
 
 #: gio/gio-tool.c:240
 msgid "Rename a file"
-msgstr "Bir dosyayı yeniden adlandır"
+msgstr "Dosyayı yeniden adlandır"
 
 #: gio/gio-tool.c:241
 msgid "Delete one or more files"
@@ -1674,7 +1692,7 @@ msgstr "Standart girdiden oku ve kaydet"
 
 #: gio/gio-tool.c:243
 msgid "Set a file attribute"
-msgstr "Bir dosya özniteliği belirle"
+msgstr "Dosya özniteliği belirle"
 
 #: gio/gio-tool.c:244
 msgid "Move files or directories to the trash"
@@ -1682,7 +1700,7 @@ msgstr "Dosyaları veya dizinleri çöpe taşı"
 
 #: gio/gio-tool.c:245
 msgid "Lists the contents of locations in a tree"
-msgstr "Konumların içeriklerini bir ağaçta listele"
+msgstr "Konumların içeriklerini ağaçta listele"
 
 #: gio/gio-tool.c:247
 #, c-format
@@ -1714,7 +1732,7 @@ msgid ""
 "like smb://server/resource/file.txt as location."
 msgstr ""
 "gio cat geleneksel cat aracı gibi çalışır, ancak yerel dosyalar\n"
-"yerine GIO konumlarını kullanır: örneğin, smb://server/resource/file.txt\n"
+"yerine GIO konumlarını kullanır: örneğin, smb://sunucu/kaynak/dosya.txt\n"
 "gibi bir şeyi konum olarak kullanabilirsiniz."
 
 #: gio/gio-tool-cat.c:162 gio/gio-tool-info.c:371 gio/gio-tool-mkdir.c:76
@@ -1777,7 +1795,7 @@ msgid ""
 "like smb://server/resource/file.txt as location."
 msgstr ""
 "gio copy geleneksel cp aracı gibi çalışır, ancak yerel dosyalar\n"
-"yerine GIO konumlarını kullanır: örneğin, smb://server/resource/file.txt\n"
+"yerine GIO konumlarını kullanır: örneğin, smb://sunucu/kaynak/dosya.txt\n"
 "gibi bir şeyi konum olarak kullanabilirsiniz."
 
 #: gio/gio-tool-copy.c:149
@@ -1880,7 +1898,7 @@ msgid ""
 "namespace, e.g. unix, or by “*”, which matches all attributes"
 msgstr ""
 "gio info geleneksel ls aracı gibi çalışır, ancak yerel dosyalar\n"
-"yerine GIO konumlarını kullanır: örneğin, smb://server/resource/file.txt\n"
+"yerine GIO konumlarını kullanır: örneğin, smb://sunucu/kaynak/dosya.txt\n"
 "gibi bir şeyi konum olarak kullanabilirsiniz. Dosya öznitelikleri\n"
 "GIO adıyla birlikte belirtilebilir, örneğin standard::icon; veya yalnızca\n"
 "ad boşluğu, örneğin unix; veya tüm öznitelikleri eşleyen “*” gibi"
@@ -1949,7 +1967,7 @@ msgid ""
 "be specified with their GIO name, e.g. standard::icon"
 msgstr ""
 "gio list geleneksel ls aracı gibi çalışır, ancak yerel dosyalar\n"
-"yerine GIO konumlarını kullanır: örneğin, smb://server/resource/file.txt\n"
+"yerine GIO konumlarını kullanır: örneğin, smb://sunucu/kaynak/dosya.txt\n"
 "gibi bir şeyi konum olarak kullanabilirsiniz. Dosya öznitelikleri\n"
 "GIO adıyla birlikte belirtilebilir, örneğin standard::icon"
 
@@ -2031,7 +2049,7 @@ msgid ""
 "like smb://server/resource/mydir as location."
 msgstr ""
 "gio mkdir geleneksel mkdir aracı gibi çalışır, ancak yerel dosyalar\n"
-"yerine GIO konumlarını kullanır: örneğin, smb://server/resource/mydir\n"
+"yerine GIO konumlarını kullanır: örneğin, smb://sunucu/kaynak/dizinim\n"
 "gibi bir şeyi konum olarak kullanabilirsiniz."
 
 #: gio/gio-tool-monitor.c:37
@@ -2170,7 +2188,7 @@ msgid ""
 "like smb://server/resource/file.txt as location"
 msgstr ""
 "gio move geleneksel mv aracı gibi çalışır, ancak yerel dosyalar\n"
-"yerine GIO konumlarını kullanır: örneğin, smb://server/resource/file.txt\n"
+"yerine GIO konumlarını kullanır: örneğin, smb://sunucu/kaynak/dosya.txt\n"
 "gibi bir şeyi konum olarak kullanabilirsiniz"
 
 #: gio/gio-tool-move.c:143
@@ -2406,62 +2424,63 @@ msgstr "%s dosyası sıkıştırma hatası"
 msgid "text may not appear inside <%s>"
 msgstr "<%s> içinde metin bulunamaz"
 
-#: gio/glib-compile-resources.c:737 gio/glib-compile-schemas.c:2172
+#: gio/glib-compile-resources.c:819 gio/glib-compile-schemas.c:2172
 msgid "Show program version and exit"
 msgstr "Programın sürümünü göster ve çık"
 
-#: gio/glib-compile-resources.c:738
+#: gio/glib-compile-resources.c:820
 msgid "Name of the output file"
 msgstr "Çıktı dosyasının adı"
 
-#: gio/glib-compile-resources.c:739
+#: gio/glib-compile-resources.c:821
 msgid ""
 "The directories to load files referenced in FILE from (default: current "
 "directory)"
 msgstr ""
-"FILEʼda belirtilen dosyaların yükleneceği dizinler (öntanımlı: geçerli dizin)"
+"DOSYAʼda belirtilen dosyaların yükleneceği dizinler (öntanımlı: geçerli "
+"dizin)"
 
-#: gio/glib-compile-resources.c:739 gio/glib-compile-schemas.c:2173
+#: gio/glib-compile-resources.c:821 gio/glib-compile-schemas.c:2173
 #: gio/glib-compile-schemas.c:2202
 msgid "DIRECTORY"
 msgstr "DİZİN"
 
-#: gio/glib-compile-resources.c:740
+#: gio/glib-compile-resources.c:822
 msgid ""
 "Generate output in the format selected for by the target filename extension"
 msgstr "Hedef dosya adı uzantısı tarafından seçilen biçimde çıktı oluştur"
 
-#: gio/glib-compile-resources.c:741
+#: gio/glib-compile-resources.c:823
 msgid "Generate source header"
 msgstr "Kaynak başlığı oluştur"
 
-#: gio/glib-compile-resources.c:742
+#: gio/glib-compile-resources.c:824
 msgid "Generate source code used to link in the resource file into your code"
 msgstr ""
 "Kodunuz içinde kaynak dosyasına bağlanmak için kullanılacak kaynak kodu "
 "oluşturun"
 
-#: gio/glib-compile-resources.c:743
+#: gio/glib-compile-resources.c:825
 msgid "Generate dependency list"
 msgstr "Bağımlılık listesi oluştur"
 
-#: gio/glib-compile-resources.c:744
+#: gio/glib-compile-resources.c:826
 msgid "Name of the dependency file to generate"
 msgstr "Oluşturulacak bağımlılık dosyasının adı"
 
-#: gio/glib-compile-resources.c:745
+#: gio/glib-compile-resources.c:827
 msgid "Include phony targets in the generated dependency file"
 msgstr "Oluşturulan bağımlılık dosyasında sahte hedefleri içer"
 
-#: gio/glib-compile-resources.c:746
+#: gio/glib-compile-resources.c:828
 msgid "Don’t automatically create and register resource"
 msgstr "Kaynağı kendiliğinden oluşturma ve kaydetme"
 
-#: gio/glib-compile-resources.c:747
+#: gio/glib-compile-resources.c:829
 msgid "Don’t export functions; declare them G_GNUC_INTERNAL"
 msgstr "İşlevleri dışarı aktarma; onları G_GNUC_INTERNAL beyan et"
 
-#: gio/glib-compile-resources.c:748
+#: gio/glib-compile-resources.c:830
 msgid ""
 "Don’t embed resource data in the C file; assume it's linked externally "
 "instead"
@@ -2469,11 +2488,15 @@ msgstr ""
 "Kaynak verileri C dosyasına gömme; bunun yerine harici olarak bağlandığını "
 "varsay"
 
-#: gio/glib-compile-resources.c:749
+#: gio/glib-compile-resources.c:831
 msgid "C identifier name used for the generated source code"
 msgstr "C oluşturulan kaynak kod için kullanılan tanımlayıcı ad"
 
-#: gio/glib-compile-resources.c:775
+#: gio/glib-compile-resources.c:832
+msgid "The target C compiler (default: the CC environment variable)"
+msgstr "Hedef C derleyici (öntanımlı: CC ortam değişkeni)"
+
+#: gio/glib-compile-resources.c:858
 msgid ""
 "Compile a resource specification into a resource file.\n"
 "Resource specification files have the extension .gresource.xml,\n"
@@ -2483,7 +2506,7 @@ msgstr ""
 "Kaynak özellikleri dosyaları .gresource.xml uzantısına sahiptir\n"
 "ve kaynak dosyaları uzantısı .gresource."
 
-#: gio/glib-compile-resources.c:797
+#: gio/glib-compile-resources.c:880
 msgid "You should give exactly one file name\n"
 msgstr "Tam olarak bir adet dosya adı vermelisiniz\n"
 
@@ -3275,13 +3298,13 @@ msgstr "Yedek kopyası oluşturulurken hata: %s"
 msgid "Error renaming temporary file: %s"
 msgstr "Geçici dosya yeniden adlandırılırken hata: %s"
 
-#: gio/glocalfileoutputstream.c:609 gio/glocalfileoutputstream.c:1237
+#: gio/glocalfileoutputstream.c:609 gio/glocalfileoutputstream.c:1239
 #, c-format
 msgid "Error truncating file: %s"
 msgstr "Dosyanın sonu kesilirken hata: %s"
 
 #: gio/glocalfileoutputstream.c:662 gio/glocalfileoutputstream.c:907
-#: gio/glocalfileoutputstream.c:1218 gio/gsubprocess.c:226
+#: gio/glocalfileoutputstream.c:1220 gio/gsubprocess.c:229
 #, c-format
 msgid "Error opening file “%s”: %s"
 msgstr "“%s” dosyası açılırken hata: %s"
@@ -3303,7 +3326,7 @@ msgstr "Dosya dışarıdan değiştirilmiş"
 msgid "Error removing old file: %s"
 msgstr "Eski dosya silinirken hata: %s"
 
-#: gio/gmemoryinputstream.c:474 gio/gmemoryoutputstream.c:772
+#: gio/gmemoryinputstream.c:474 gio/gmemoryoutputstream.c:762
 msgid "Invalid GSeekType supplied"
 msgstr "Geçersiz GSeekType sağlandı"
 
@@ -3315,15 +3338,15 @@ msgstr "Geçersiz atlama isteği"
 msgid "Cannot truncate GMemoryInputStream"
 msgstr "GMemoryInputStream sonu silinemiyor"
 
-#: gio/gmemoryoutputstream.c:567
+#: gio/gmemoryoutputstream.c:568
 msgid "Memory output stream not resizable"
 msgstr "Bellek çıktı akışı yeniden boyutlandırılamaz"
 
-#: gio/gmemoryoutputstream.c:583
+#: gio/gmemoryoutputstream.c:584
 msgid "Failed to resize memory output stream"
 msgstr "Hafız çıktı açışı yeniden boyutlandırma başarısız oldu"
 
-#: gio/gmemoryoutputstream.c:673
+#: gio/gmemoryoutputstream.c:663
 msgid ""
 "Amount of memory required to process the write is larger than available "
 "address space"
@@ -3331,11 +3354,11 @@ msgstr ""
 "Yazma işlemi için gereken bellek miktarı, kullanılabilir adres uzayından "
 "daha büyük"
 
-#: gio/gmemoryoutputstream.c:782
+#: gio/gmemoryoutputstream.c:772
 msgid "Requested seek before the beginning of the stream"
 msgstr "Akış başlamadan önce arama istendi"
 
-#: gio/gmemoryoutputstream.c:797
+#: gio/gmemoryoutputstream.c:787
 msgid "Requested seek beyond the end of the stream"
 msgstr "Akışın sonu dışında arama istendi"
 
@@ -3440,18 +3463,22 @@ msgstr "%s için geçilen vektörlerin toplamı çok büyük"
 msgid "Source stream is already closed"
 msgstr "Kaynak akışı zaten kapalı"
 
-#: gio/gresolver.c:386 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
+#. Translators: the first placeholder is a domain name, the
+#. * second is an error message
+#: gio/gresolver.c:401 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
+#: gio/gthreadedresolver.c:780 gio/gthreadedresolver.c:804
+#: gio/gthreadedresolver.c:829 gio/gthreadedresolver.c:844
 #, c-format
 msgid "Error resolving “%s”: %s"
 msgstr "“%s” çözülürken hata: %s"
 
 #. Translators: The placeholder is for a function name.
-#: gio/gresolver.c:455 gio/gresolver.c:615
+#: gio/gresolver.c:470 gio/gresolver.c:630
 #, c-format
 msgid "%s not implemented"
 msgstr "%s uygulanmadı"
 
-#: gio/gresolver.c:984 gio/gresolver.c:1036
+#: gio/gresolver.c:999 gio/gresolver.c:1051
 msgid "Invalid domain"
 msgstr "Geçersiz alan adı"
 
@@ -3566,7 +3593,7 @@ msgstr ""
 msgid "  SECTION   An (optional) elf section name\n"
 msgstr "  BÖLÜM   (İsteğe Bağlı) Bir elf bölüm adı\n"
 
-#: gio/gresource-tool.c:565 gio/gsettings-tool.c:706
+#: gio/gresource-tool.c:565 gio/gsettings-tool.c:718
 msgid "  COMMAND   The (optional) command to explain\n"
 msgstr "  KOMUT   (İsteğe Bağlı) Açıklanacak komut\n"
 
@@ -3598,7 +3625,7 @@ msgstr "YOL"
 msgid "  PATH      A resource path\n"
 msgstr "  YOL      Kaynak yolu\n"
 
-#: gio/gsettings-tool.c:49 gio/gsettings-tool.c:70 gio/gsettings-tool.c:911
+#: gio/gsettings-tool.c:49 gio/gsettings-tool.c:70 gio/gsettings-tool.c:923
 #, c-format
 msgid "No such schema “%s”\n"
 msgstr "“%s” gibi bir şema yok\n"
@@ -3631,35 +3658,35 @@ msgstr "Yol, mutlaka bir taksim (/) ile bitmelidir\n"
 msgid "Path must not contain two adjacent slashes (//)\n"
 msgstr "Yol, ardışık olan iki taksim (//) içeremez\n"
 
-#: gio/gsettings-tool.c:541
+#: gio/gsettings-tool.c:553
 msgid "The provided value is outside of the valid range\n"
 msgstr "Sağlanan değer, geçerli aralığın dışında\n"
 
-#: gio/gsettings-tool.c:548
+#: gio/gsettings-tool.c:560
 msgid "The key is not writable\n"
 msgstr "Anahtar yazılabilir değildir\n"
 
-#: gio/gsettings-tool.c:584
+#: gio/gsettings-tool.c:596
 msgid "List the installed (non-relocatable) schemas"
 msgstr "Yüklü (yeniden konumlandırılamaz) şemaları listele"
 
-#: gio/gsettings-tool.c:590
+#: gio/gsettings-tool.c:602
 msgid "List the installed relocatable schemas"
 msgstr "Yeniden yer değiştirebilir şemaları listele"
 
-#: gio/gsettings-tool.c:596
+#: gio/gsettings-tool.c:608
 msgid "List the keys in SCHEMA"
 msgstr "ŞEMA içindeki anahtarları listele"
 
-#: gio/gsettings-tool.c:597 gio/gsettings-tool.c:603 gio/gsettings-tool.c:646
+#: gio/gsettings-tool.c:609 gio/gsettings-tool.c:615 gio/gsettings-tool.c:658
 msgid "SCHEMA[:PATH]"
 msgstr "ŞEMA[:YOL]"
 
-#: gio/gsettings-tool.c:602
+#: gio/gsettings-tool.c:614
 msgid "List the children of SCHEMA"
 msgstr "Alt ŞEMALARI listele"
 
-#: gio/gsettings-tool.c:608
+#: gio/gsettings-tool.c:620
 msgid ""
 "List keys and values, recursively\n"
 "If no SCHEMA is given, list all keys\n"
@@ -3667,48 +3694,48 @@ msgstr ""
 "Özyinelemeli biçimde anahtar ve değerleri listele\n"
 "Eğer hiçbir ŞEMA verilmediyse, tüm anahtarları listele\n"
 
-#: gio/gsettings-tool.c:610
+#: gio/gsettings-tool.c:622
 msgid "[SCHEMA[:PATH]]"
 msgstr "[ŞEMA[:YOL]]"
 
-#: gio/gsettings-tool.c:615
+#: gio/gsettings-tool.c:627
 msgid "Get the value of KEY"
 msgstr "ANAHTAR değerini al"
 
-#: gio/gsettings-tool.c:616 gio/gsettings-tool.c:622 gio/gsettings-tool.c:628
-#: gio/gsettings-tool.c:640 gio/gsettings-tool.c:652
+#: gio/gsettings-tool.c:628 gio/gsettings-tool.c:634 gio/gsettings-tool.c:640
+#: gio/gsettings-tool.c:652 gio/gsettings-tool.c:664
 msgid "SCHEMA[:PATH] KEY"
 msgstr "ŞEMA[:YOL] ANAHTAR"
 
-#: gio/gsettings-tool.c:621
+#: gio/gsettings-tool.c:633
 msgid "Query the range of valid values for KEY"
 msgstr "ANAHTAR için geçerli değerler aralığını sorgula"
 
-#: gio/gsettings-tool.c:627
+#: gio/gsettings-tool.c:639
 msgid "Query the description for KEY"
 msgstr "ANAHTAR için açıklamayı sorgula"
 
-#: gio/gsettings-tool.c:633
+#: gio/gsettings-tool.c:645
 msgid "Set the value of KEY to VALUE"
 msgstr "ANAHTAR’ın değerini DEĞER’e ata"
 
-#: gio/gsettings-tool.c:634
+#: gio/gsettings-tool.c:646
 msgid "SCHEMA[:PATH] KEY VALUE"
 msgstr "ŞEMA[:YOL] ANAHTAR DEĞER"
 
-#: gio/gsettings-tool.c:639
+#: gio/gsettings-tool.c:651
 msgid "Reset KEY to its default value"
 msgstr "ANAHTAR’ı öntanımlı değerine döndür"
 
-#: gio/gsettings-tool.c:645
+#: gio/gsettings-tool.c:657
 msgid "Reset all keys in SCHEMA to their defaults"
 msgstr "ŞEMA içindeki tüm anahtarları öntanımlı değerlerine döndür"
 
-#: gio/gsettings-tool.c:651
+#: gio/gsettings-tool.c:663
 msgid "Check if KEY is writable"
 msgstr "ANAHTAR’ın yazılabilir olup olmadığını denetle"
 
-#: gio/gsettings-tool.c:657
+#: gio/gsettings-tool.c:669
 msgid ""
 "Monitor KEY for changes.\n"
 "If no KEY is specified, monitor all keys in SCHEMA.\n"
@@ -3718,11 +3745,11 @@ msgstr ""
 "Eğer hiçbir ANAHTAR belirtilmemişse, ŞEMA’daki tüm anahtarları izleyin.\n"
 "İzlemeyi durdurmak için ^C kullanın.\n"
 
-#: gio/gsettings-tool.c:660
+#: gio/gsettings-tool.c:672
 msgid "SCHEMA[:PATH] [KEY]"
 msgstr "ŞEMA[:YOL] [ANAHTAR]"
 
-#: gio/gsettings-tool.c:672
+#: gio/gsettings-tool.c:684
 msgid ""
 "Usage:\n"
 "  gsettings --version\n"
@@ -3770,7 +3797,7 @@ msgstr ""
 "Ayrıntılı yardım için “gsettings help KOMUT” komutunu çalıştırın.\n"
 "\n"
 
-#: gio/gsettings-tool.c:696
+#: gio/gsettings-tool.c:708
 #, c-format
 msgid ""
 "Usage:\n"
@@ -3785,11 +3812,11 @@ msgstr ""
 "%s\n"
 "\n"
 
-#: gio/gsettings-tool.c:702
+#: gio/gsettings-tool.c:714
 msgid "  SCHEMADIR A directory to search for additional schemas\n"
 msgstr "  ŞEMADİZİNİ Ek şemaları aramak için bir dizin\n"
 
-#: gio/gsettings-tool.c:710
+#: gio/gsettings-tool.c:722
 msgid ""
 "  SCHEMA    The name of the schema\n"
 "  PATH      The path, for relocatable schemas\n"
@@ -3797,212 +3824,212 @@ msgstr ""
 "  ŞEMA    Şemanın adı\n"
 "  YOL     Yol, yeniden konumlandırılabilir şemalar için\n"
 
-#: gio/gsettings-tool.c:715
+#: gio/gsettings-tool.c:727
 msgid "  KEY       The (optional) key within the schema\n"
 msgstr "  ANAHTAR       Şema içinde (isteğe bağlı) anahtar\n"
 
-#: gio/gsettings-tool.c:719
+#: gio/gsettings-tool.c:731
 msgid "  KEY       The key within the schema\n"
 msgstr "  ANAHTAR       Şema içindeki anahtar\n"
 
-#: gio/gsettings-tool.c:723
+#: gio/gsettings-tool.c:735
 msgid "  VALUE     The value to set\n"
 msgstr "  DEĞER     Ayarlanacak değer\n"
 
-#: gio/gsettings-tool.c:778
+#: gio/gsettings-tool.c:790
 #, c-format
 msgid "Could not load schemas from %s: %s\n"
 msgstr "%s’den şemalar yüklenemedi: %s\n"
 
-#: gio/gsettings-tool.c:790
+#: gio/gsettings-tool.c:802
 msgid "No schemas installed\n"
 msgstr "Hiçbir şema kurulmadı\n"
 
-#: gio/gsettings-tool.c:869
+#: gio/gsettings-tool.c:881
 msgid "Empty schema name given\n"
 msgstr "Boş şema adı verildi\n"
 
-#: gio/gsettings-tool.c:924
+#: gio/gsettings-tool.c:936
 #, c-format
 msgid "No such key “%s”\n"
 msgstr "“%s” gibi bir anahtar yok\n"
 
-#: gio/gsocket.c:413
+#: gio/gsocket.c:417
 msgid "Invalid socket, not initialized"
 msgstr "Geçersiz yuva, başlatılmadı"
 
-#: gio/gsocket.c:420
+#: gio/gsocket.c:424
 #, c-format
 msgid "Invalid socket, initialization failed due to: %s"
 msgstr "Geçersiz yuva, başlatma başarısız oldu: %s"
 
-#: gio/gsocket.c:428
+#: gio/gsocket.c:432
 msgid "Socket is already closed"
 msgstr "Yuva zaten kapalı"
 
-#: gio/gsocket.c:443 gio/gsocket.c:3190 gio/gsocket.c:4420 gio/gsocket.c:4478
+#: gio/gsocket.c:447 gio/gsocket.c:3194 gio/gsocket.c:4427 gio/gsocket.c:4485
 msgid "Socket I/O timed out"
 msgstr "Yuva G/Ç zaman aşımı"
 
-#: gio/gsocket.c:578
+#: gio/gsocket.c:582
 #, c-format
 msgid "creating GSocket from fd: %s"
 msgstr "fd’den GSocket oluşturuluyor: %s"
 
-#: gio/gsocket.c:607 gio/gsocket.c:671 gio/gsocket.c:678
+#: gio/gsocket.c:611 gio/gsocket.c:675 gio/gsocket.c:682
 #, c-format
 msgid "Unable to create socket: %s"
 msgstr "Yuva oluşturulamadı: %s"
 
-#: gio/gsocket.c:671
+#: gio/gsocket.c:675
 msgid "Unknown family was specified"
 msgstr "Bilinmeyen küme belirtildi"
 
-#: gio/gsocket.c:678
+#: gio/gsocket.c:682
 msgid "Unknown protocol was specified"
 msgstr "Bilinmeyen iletişim kuralı belirtildi"
 
-#: gio/gsocket.c:1169
+#: gio/gsocket.c:1173
 #, c-format
 msgid "Cannot use datagram operations on a non-datagram socket."
 msgstr "Datagram olmayan bir yuva üzerinde datagram işlemleri kullanılamaz."
 
-#: gio/gsocket.c:1186
+#: gio/gsocket.c:1190
 #, c-format
 msgid "Cannot use datagram operations on a socket with a timeout set."
 msgstr ""
 "Zamanaşımı ayarlanmış bir yuva üzerinde datagram işlemleri kullanılamaz."
 
-#: gio/gsocket.c:1993
+#: gio/gsocket.c:1997
 #, c-format
 msgid "could not get local address: %s"
 msgstr "yerel adres alınamadı: %s"
 
-#: gio/gsocket.c:2039
+#: gio/gsocket.c:2043
 #, c-format
 msgid "could not get remote address: %s"
 msgstr "uzaktaki adres alınamadı: %s"
 
-#: gio/gsocket.c:2105
+#: gio/gsocket.c:2109
 #, c-format
 msgid "could not listen: %s"
 msgstr "dinlenemedi: %s"
 
-#: gio/gsocket.c:2209
+#: gio/gsocket.c:2213
 #, c-format
 msgid "Error binding to address %s: %s"
 msgstr "%s adresine bağlanırken hata: %s"
 
-#: gio/gsocket.c:2385 gio/gsocket.c:2422 gio/gsocket.c:2532 gio/gsocket.c:2557
-#: gio/gsocket.c:2620 gio/gsocket.c:2678 gio/gsocket.c:2696
+#: gio/gsocket.c:2389 gio/gsocket.c:2426 gio/gsocket.c:2536 gio/gsocket.c:2561
+#: gio/gsocket.c:2624 gio/gsocket.c:2682 gio/gsocket.c:2700
 #, c-format
 msgid "Error joining multicast group: %s"
 msgstr "Çok yöne yayın kümesine katılırken hata: %s"
 
-#: gio/gsocket.c:2386 gio/gsocket.c:2423 gio/gsocket.c:2533 gio/gsocket.c:2558
-#: gio/gsocket.c:2621 gio/gsocket.c:2679 gio/gsocket.c:2697
+#: gio/gsocket.c:2390 gio/gsocket.c:2427 gio/gsocket.c:2537 gio/gsocket.c:2562
+#: gio/gsocket.c:2625 gio/gsocket.c:2683 gio/gsocket.c:2701
 #, c-format
 msgid "Error leaving multicast group: %s"
 msgstr "Çok yöne yayın kümesinden ayrılırken hata: %s"
 
-#: gio/gsocket.c:2387
+#: gio/gsocket.c:2391
 msgid "No support for source-specific multicast"
 msgstr "Kaynağa-özgü çok yöne yayın desteklenmiyor"
 
-#: gio/gsocket.c:2534
+#: gio/gsocket.c:2538
 msgid "Unsupported socket family"
 msgstr "Desteklenmeyen yuva ailesi"
 
-#: gio/gsocket.c:2559
+#: gio/gsocket.c:2563
 msgid "source-specific not an IPv4 address"
 msgstr "kaynağa-özgü bir IPv4 adresi değil"
 
-#: gio/gsocket.c:2583
+#: gio/gsocket.c:2587
 #, c-format
 msgid "Interface name too long"
 msgstr "Arayüz adı çok uzun"
 
-#: gio/gsocket.c:2596 gio/gsocket.c:2646
+#: gio/gsocket.c:2600 gio/gsocket.c:2650
 #, c-format
 msgid "Interface not found: %s"
 msgstr "Arayüz bulunamadı: %s"
 
-#: gio/gsocket.c:2622
+#: gio/gsocket.c:2626
 msgid "No support for IPv4 source-specific multicast"
 msgstr "IPv4 kaynağa-özgü çok yöne yayın desteklenmiyor"
 
-#: gio/gsocket.c:2680
+#: gio/gsocket.c:2684
 msgid "No support for IPv6 source-specific multicast"
 msgstr "IPv6 kaynağa-özgü çok yöne yayın desteklenmiyor"
 
-#: gio/gsocket.c:2889
+#: gio/gsocket.c:2893
 #, c-format
 msgid "Error accepting connection: %s"
 msgstr "Bağlantı kabul edilirken hata: %s"
 
-#: gio/gsocket.c:3015
+#: gio/gsocket.c:3019
 msgid "Connection in progress"
 msgstr "Bağlantı devam ediyor"
 
-#: gio/gsocket.c:3066
+#: gio/gsocket.c:3070
 msgid "Unable to get pending error: "
 msgstr "Bekleyen hata alınamadı: "
 
-#: gio/gsocket.c:3255
+#: gio/gsocket.c:3259
 #, c-format
 msgid "Error receiving data: %s"
 msgstr "Veri alırken hata: %s"
 
-#: gio/gsocket.c:3452
+#: gio/gsocket.c:3456
 #, c-format
 msgid "Error sending data: %s"
 msgstr "Veri gönderirken hata: %s"
 
-#: gio/gsocket.c:3639
+#: gio/gsocket.c:3643
 #, c-format
 msgid "Unable to shutdown socket: %s"
 msgstr "Yuva kapatılamadı: %s"
 
-#: gio/gsocket.c:3720
+#: gio/gsocket.c:3724
 #, c-format
 msgid "Error closing socket: %s"
 msgstr "Yuva kapatılırken hata: %s"
 
-#: gio/gsocket.c:4413
+#: gio/gsocket.c:4420
 #, c-format
 msgid "Waiting for socket condition: %s"
 msgstr "Yuva durumu bekleniyor: %s"
 
-#: gio/gsocket.c:4804 gio/gsocket.c:4820 gio/gsocket.c:4833
+#: gio/gsocket.c:4810 gio/gsocket.c:4826 gio/gsocket.c:4839
 #, c-format
 msgid "Unable to send message: %s"
 msgstr "İleti gönderilemedi: %s"
 
-#: gio/gsocket.c:4805 gio/gsocket.c:4821 gio/gsocket.c:4834
+#: gio/gsocket.c:4811 gio/gsocket.c:4827 gio/gsocket.c:4840
 msgid "Message vectors too large"
 msgstr "İleti vektörleri çok geniş"
 
-#: gio/gsocket.c:4850 gio/gsocket.c:4852 gio/gsocket.c:4999 gio/gsocket.c:5084
-#: gio/gsocket.c:5262 gio/gsocket.c:5302 gio/gsocket.c:5304
+#: gio/gsocket.c:4856 gio/gsocket.c:4858 gio/gsocket.c:5005 gio/gsocket.c:5090
+#: gio/gsocket.c:5268 gio/gsocket.c:5308 gio/gsocket.c:5310
 #, c-format
 msgid "Error sending message: %s"
 msgstr "İleti gönderme hatası: %s"
 
-#: gio/gsocket.c:5026
+#: gio/gsocket.c:5032
 msgid "GSocketControlMessage not supported on Windows"
 msgstr "GSocketControlMessage Windows işletim sisteminde desteklenmiyor"
 
-#: gio/gsocket.c:5495 gio/gsocket.c:5571 gio/gsocket.c:5797
+#: gio/gsocket.c:5505 gio/gsocket.c:5581 gio/gsocket.c:5807
 #, c-format
 msgid "Error receiving message: %s"
 msgstr "İleti alma hatası: %s"
 
-#: gio/gsocket.c:6070 gio/gsocket.c:6081 gio/gsocket.c:6127
+#: gio/gsocket.c:6090 gio/gsocket.c:6101 gio/gsocket.c:6164
 #, c-format
 msgid "Unable to read socket credentials: %s"
 msgstr "Yuva kimliği okunamadı : %s"
 
-#: gio/gsocket.c:6136
+#: gio/gsocket.c:6173
 msgid "g_socket_get_credentials not implemented for this OS"
 msgstr "bu işletim sistemi için g_socket_get_credentials uygulanmadı"
 
@@ -4020,11 +4047,11 @@ msgstr "%s bağlantısı gerçekleştirilemedi:  "
 msgid "Could not connect: "
 msgstr "Bağlanılamadı: "
 
-#: gio/gsocketclient.c:1162 gio/gsocketclient.c:1749
+#: gio/gsocketclient.c:1202 gio/gsocketclient.c:1793
 msgid "Proxying over a non-TCP connection is not supported."
 msgstr "TCP olmayan bağlantılar üzerinden vekil sunucusu desteklenmiyor."
 
-#: gio/gsocketclient.c:1194 gio/gsocketclient.c:1778
+#: gio/gsocketclient.c:1234 gio/gsocketclient.c:1822
 #, c-format
 msgid "Proxy protocol “%s” is not supported."
 msgstr "“%s” vekil iletişim kuralı desteklenmiyor."
@@ -4126,7 +4153,7 @@ msgstr "SOCKSv5 vekil sunucusu verilen adres türünü desteklemiyor."
 msgid "Unknown SOCKSv5 proxy error."
 msgstr "Bilinmeyen SOCKSv5 vekil hatası."
 
-#: gio/gtestdbus.c:612 glib/gspawn-win32.c:311
+#: gio/gtestdbus.c:612 glib/gspawn-win32.c:314
 #, c-format
 msgid "Failed to create pipe for communicating with child process (%s)"
 msgstr "Alt süreçle haberleşme için boru yaratılamadı (%s)"
@@ -4134,7 +4161,7 @@ msgstr "Alt süreçle haberleşme için boru yaratılamadı (%s)"
 #: gio/gtestdbus.c:619
 #, c-format
 msgid "Pipes are not supported in this platform"
-msgstr "Bu platformda borular desteklenmiyor"
+msgstr "Borular bu platformda desteklenmiyor"
 
 #: gio/gthemedicon.c:595
 #, c-format
@@ -4150,44 +4177,66 @@ msgstr "Geçersiz adresler bulundu"
 msgid "Error reverse-resolving “%s”: %s"
 msgstr "“%s” tersine çözülürken hata: %s"
 
-#: gio/gthreadedresolver.c:676 gio/gthreadedresolver.c:755
-#: gio/gthreadedresolver.c:853 gio/gthreadedresolver.c:903
+#. Translators: the placeholder is a DNS record type, such as ‘MX’ or ‘SRV’
+#: gio/gthreadedresolver.c:550 gio/gthreadedresolver.c:572
+#: gio/gthreadedresolver.c:610 gio/gthreadedresolver.c:657
+#: gio/gthreadedresolver.c:686 gio/gthreadedresolver.c:698
+#, c-format
+msgid "Error parsing DNS %s record: malformed DNS packet"
+msgstr "DNS %s kaydı ayrıştırılamadı: kusurlu DNS paketi"
+
+#: gio/gthreadedresolver.c:756 gio/gthreadedresolver.c:893
+#: gio/gthreadedresolver.c:991 gio/gthreadedresolver.c:1041
 #, c-format
 msgid "No DNS record of the requested type for “%s”"
 msgstr "“%s” için istenen türün DNS kaydı yok"
 
-#: gio/gthreadedresolver.c:681 gio/gthreadedresolver.c:858
+#: gio/gthreadedresolver.c:761 gio/gthreadedresolver.c:996
 #, c-format
 msgid "Temporarily unable to resolve “%s”"
 msgstr "Geçici olarak “%s” çözülemiyor"
 
-#: gio/gthreadedresolver.c:686 gio/gthreadedresolver.c:863
-#: gio/gthreadedresolver.c:973
+#: gio/gthreadedresolver.c:766 gio/gthreadedresolver.c:1001
+#: gio/gthreadedresolver.c:1111
 #, c-format
 msgid "Error resolving “%s”"
 msgstr "“%s” çözerken hata"
 
-#: gio/gtlscertificate.c:431
+#: gio/gthreadedresolver.c:780 gio/gthreadedresolver.c:804
+#: gio/gthreadedresolver.c:829 gio/gthreadedresolver.c:844
+msgid "Malformed DNS packet"
+msgstr "Kusurlu DNS paketi"
+
+#: gio/gthreadedresolver.c:886
+#, c-format
+msgid "Failed to parse DNS response for “%s”: "
+msgstr "“%s” için DNS yanıtı ayrıştırılamadı: "
+
+#: gio/gtlscertificate.c:478
 msgid "No PEM-encoded private key found"
 msgstr "Hiçbir PEM-kodlamalı özel anahtar bulunamadı"
 
-#: gio/gtlscertificate.c:441
+#: gio/gtlscertificate.c:488
 msgid "Cannot decrypt PEM-encoded private key"
 msgstr "PEM-kodlamalı özel anahtar şifresi çözülemiyor"
 
-#: gio/gtlscertificate.c:452
+#: gio/gtlscertificate.c:499
 msgid "Could not parse PEM-encoded private key"
 msgstr "PEM-kodlamalı özel anahtar ayrıştırılamadı"
 
-#: gio/gtlscertificate.c:479
+#: gio/gtlscertificate.c:526
 msgid "No PEM-encoded certificate found"
 msgstr "PEM-kodlamalı sertifika bulunamadı"
 
-#: gio/gtlscertificate.c:488
+#: gio/gtlscertificate.c:535
 msgid "Could not parse PEM-encoded certificate"
 msgstr "PEM-kodlamalı sertifika ayrıştırılamadı"
 
-#: gio/gtlscertificate.c:844
+#: gio/gtlscertificate.c:796
+msgid "The current TLS backend does not support PKCS #12"
+msgstr "Var olan TLS arka ucu PKCS #12 desteklemiyor"
+
+#: gio/gtlscertificate.c:1013
 msgid "This GTlsBackend does not support creating PKCS #11 certificates"
 msgstr "GTlsBackend, PKCS #11 sertifikası yaratmayı desteklemiyor"
 
@@ -4212,52 +4261,60 @@ msgstr ""
 msgid "The password entered is incorrect."
 msgstr "Girilen parola hatalı."
 
-#: gio/gunixconnection.c:166 gio/gunixconnection.c:579
+#: gio/gunixconnection.c:125
+msgid "Sending FD is not supported"
+msgstr "FD gönderimi desteklenmiyor"
+
+#: gio/gunixconnection.c:178 gio/gunixconnection.c:596
 #, c-format
 msgid "Expecting 1 control message, got %d"
 msgid_plural "Expecting 1 control message, got %d"
 msgstr[0] "Beklenen 1 denetim iletisi, alınan %d"
 
-#: gio/gunixconnection.c:182 gio/gunixconnection.c:591
+#: gio/gunixconnection.c:194 gio/gunixconnection.c:608
 msgid "Unexpected type of ancillary data"
 msgstr "Yardımcı verinin beklenmeyen türü"
 
-#: gio/gunixconnection.c:200
+#: gio/gunixconnection.c:212
 #, c-format
 msgid "Expecting one fd, but got %d\n"
 msgid_plural "Expecting one fd, but got %d\n"
 msgstr[0] "Beklenen bir fd, ancak alınan %d\n"
 
-#: gio/gunixconnection.c:219
+#: gio/gunixconnection.c:231
 msgid "Received invalid fd"
 msgstr "Geçersiz fd alındı"
 
-#: gio/gunixconnection.c:363
+#: gio/gunixconnection.c:238
+msgid "Receiving FD is not supported"
+msgstr "FD alımı desteklenmiyor"
+
+#: gio/gunixconnection.c:380
 msgid "Error sending credentials: "
 msgstr "Kimlik bilgileri gönderilirken hata oluştu: "
 
-#: gio/gunixconnection.c:520
+#: gio/gunixconnection.c:537
 #, c-format
 msgid "Error checking if SO_PASSCRED is enabled for socket: %s"
 msgstr "Yuva için SO_PASSCRED’in etkin olup olmadığını denetleme hatası: %s"
 
-#: gio/gunixconnection.c:536
+#: gio/gunixconnection.c:553
 #, c-format
 msgid "Error enabling SO_PASSCRED: %s"
 msgstr "SO_PASSCRED etkinleştirmede hata: %s"
 
-#: gio/gunixconnection.c:565
+#: gio/gunixconnection.c:582
 msgid ""
 "Expecting to read a single byte for receiving credentials but read zero bytes"
 msgstr ""
 "Kimlik bilgileri almak için bir bayt okunması bekleniyordu, sıfır bayt okundu"
 
-#: gio/gunixconnection.c:605
+#: gio/gunixconnection.c:622
 #, c-format
 msgid "Not expecting control message, but got %d"
 msgstr "Beklenen denetim iletisi yok ancak %d alındı"
 
-#: gio/gunixconnection.c:630
+#: gio/gunixconnection.c:647
 #, c-format
 msgid "Error while disabling SO_PASSCRED: %s"
 msgstr "SO_PASSCRED devre dışı bırakılırken hata: %s"
@@ -4273,7 +4330,7 @@ msgstr "Dosya tanımlayıcıdan okuma hatası: %s"
 msgid "Error closing file descriptor: %s"
 msgstr "Dosya tanımlayıcı kapatılırken hata: %s"
 
-#: gio/gunixmounts.c:2785 gio/gunixmounts.c:2838
+#: gio/gunixmounts.c:2809 gio/gunixmounts.c:2862
 msgid "Filesystem root"
 msgstr "Dosya sistemi kök dizini"
 
@@ -4284,7 +4341,7 @@ msgstr "Dosya sistemi kök dizini"
 msgid "Error writing to file descriptor: %s"
 msgstr "Dosya tanımlayıcıya yazmada hata: %s"
 
-#: gio/gunixsocketaddress.c:244
+#: gio/gunixsocketaddress.c:251
 msgid "Abstract UNIX domain socket addresses not supported on this system"
 msgstr "Soyut UNIX alan yuvası adresleri bu sistemde desteklenmiyor"
 
@@ -4434,8 +4491,8 @@ msgstr "Exec satırı “%s”, “%s” URI’si ile genişletilirken başarıs
 msgid "Unrepresentable character in conversion input"
 msgstr "Dönüşüm girdisi içinde temsil edilemez karakter"
 
-#: glib/gconvert.c:495 glib/gutf8.c:871 glib/gutf8.c:1083 glib/gutf8.c:1220
-#: glib/gutf8.c:1324
+#: glib/gconvert.c:495 glib/gutf8.c:886 glib/gutf8.c:1099 glib/gutf8.c:1236
+#: glib/gutf8.c:1340
 msgid "Partial character sequence at end of input"
 msgstr "Girdinin sonunda parçalı karakter dizisi"
 
@@ -5001,15 +5058,15 @@ msgstr "Kanal kısmi bir karakterde sonlanıyor"
 msgid "Can’t do a raw read in g_io_channel_read_to_end"
 msgstr "g_io_channel_read_to_end içinde ham okuma başarısız"
 
-#: glib/gkeyfile.c:791
+#: glib/gkeyfile.c:794
 msgid "Valid key file could not be found in search dirs"
 msgstr "Arama dizinlerinde geçerli anahtar dosyası bulunamadı"
 
-#: glib/gkeyfile.c:828
+#: glib/gkeyfile.c:831
 msgid "Not a regular file"
 msgstr "Normal dosya değil"
 
-#: glib/gkeyfile.c:1283
+#: glib/gkeyfile.c:1289
 #, c-format
 msgid ""
 "Key file contains line “%s” which is not a key-value pair, group, or comment"
@@ -5017,50 +5074,50 @@ msgstr ""
 "Anahtar dosyası; anahtar-değer çifti, küme veya yorum olmayan “%s” satırını "
 "içeriyor"
 
-#: glib/gkeyfile.c:1340
+#: glib/gkeyfile.c:1346
 #, c-format
 msgid "Invalid group name: %s"
 msgstr "Geçersiz küme adı: %s"
 
-#: glib/gkeyfile.c:1362
+#: glib/gkeyfile.c:1370
 msgid "Key file does not start with a group"
 msgstr "Anahtar dosyası kümeyle başlamıyor"
 
-#: glib/gkeyfile.c:1388
+#: glib/gkeyfile.c:1394
 #, c-format
-msgid "Invalid key name: %s"
-msgstr "Geçersiz anahtar adı: %s"
+msgid "Invalid key name: %.*s"
+msgstr "Geçersiz anahtar adı: %.*s"
 
-#: glib/gkeyfile.c:1415
+#: glib/gkeyfile.c:1422
 #, c-format
 msgid "Key file contains unsupported encoding “%s”"
 msgstr "Anahtar dosya desteklenmeyen “%s” kodlamasını içeriyor"
 
-#: glib/gkeyfile.c:1664 glib/gkeyfile.c:1837 glib/gkeyfile.c:3287
-#: glib/gkeyfile.c:3351 glib/gkeyfile.c:3481 glib/gkeyfile.c:3613
-#: glib/gkeyfile.c:3759 glib/gkeyfile.c:3994 glib/gkeyfile.c:4061
+#: glib/gkeyfile.c:1677 glib/gkeyfile.c:1850 glib/gkeyfile.c:3297
+#: glib/gkeyfile.c:3361 glib/gkeyfile.c:3491 glib/gkeyfile.c:3623
+#: glib/gkeyfile.c:3769 glib/gkeyfile.c:4004 glib/gkeyfile.c:4071
 #, c-format
 msgid "Key file does not have group “%s”"
 msgstr "Anahtar dosyasında “%s” kümesi yok"
 
-#: glib/gkeyfile.c:1792
+#: glib/gkeyfile.c:1805
 #, c-format
 msgid "Key file does not have key “%s” in group “%s”"
 msgstr "Anahtar dosyası, “%2$s” kümesinde “%1$s” anahtarı içermiyor"
 
-#: glib/gkeyfile.c:1954 glib/gkeyfile.c:2070
+#: glib/gkeyfile.c:1967 glib/gkeyfile.c:2083
 #, c-format
 msgid "Key file contains key “%s” with value “%s” which is not UTF-8"
 msgstr "Anahtar dosyası, UTF-8 olmayan “%s” anahtarını “%s” değeriyle içeriyor"
 
-#: glib/gkeyfile.c:1974 glib/gkeyfile.c:2090 glib/gkeyfile.c:2529
+#: glib/gkeyfile.c:1987 glib/gkeyfile.c:2103 glib/gkeyfile.c:2542
 #, c-format
 msgid ""
 "Key file contains key “%s” which has a value that cannot be interpreted."
 msgstr ""
 "Anahtar dosyası yorumlanamayan bir değere sahip olan “%s” anahtarını içerir."
 
-#: glib/gkeyfile.c:2747 glib/gkeyfile.c:3116
+#: glib/gkeyfile.c:2757 glib/gkeyfile.c:3126
 #, c-format
 msgid ""
 "Key file contains key “%s” in group “%s” which has a value that cannot be "
@@ -5069,38 +5126,38 @@ msgstr ""
 "“%2$s” kümesindeki anahtar dosyası, yorumlanamayan “%1$s” anahtarını "
 "içeriyor."
 
-#: glib/gkeyfile.c:2825 glib/gkeyfile.c:2902
+#: glib/gkeyfile.c:2835 glib/gkeyfile.c:2912
 #, c-format
 msgid "Key “%s” in group “%s” has value “%s” where %s was expected"
 msgstr ""
 "“%2$s” kümesindeki “%1$s” anahtarı “%4$s” değerine sahip olması beklenirken "
 "“%3$s” değerine sahip"
 
-#: glib/gkeyfile.c:4304
+#: glib/gkeyfile.c:4324
 msgid "Key file contains escape character at end of line"
 msgstr "Anahtar dosyası satır sonunda çıkış karakteri içeriyor"
 
-#: glib/gkeyfile.c:4326
+#: glib/gkeyfile.c:4346
 #, c-format
 msgid "Key file contains invalid escape sequence “%s”"
 msgstr "“%s” anahtar dosyası geçersiz çıkış dizisi içeriyor"
 
-#: glib/gkeyfile.c:4470
+#: glib/gkeyfile.c:4491
 #, c-format
 msgid "Value “%s” cannot be interpreted as a number."
 msgstr "“%s” değeri bir sayı olarak yorumlanamıyor."
 
-#: glib/gkeyfile.c:4484
+#: glib/gkeyfile.c:4505
 #, c-format
 msgid "Integer value “%s” out of range"
 msgstr "“%s”, tamsayı değeri aralık dışında"
 
-#: glib/gkeyfile.c:4517
+#: glib/gkeyfile.c:4538
 #, c-format
 msgid "Value “%s” cannot be interpreted as a float number."
 msgstr "“%s” değeri bir gerçel sayı olarak yorumlanamıyor."
 
-#: glib/gkeyfile.c:4556
+#: glib/gkeyfile.c:4577
 #, c-format
 msgid "Value “%s” cannot be interpreted as a boolean."
 msgstr "“%s” değeri mantıksal değer olarak yorumlanamıyor."
@@ -5396,7 +5453,7 @@ msgstr "%s seçeneği işlenirken hata"
 msgid "Missing argument for %s"
 msgstr "%s için argüman eksik"
 
-#: glib/goption.c:2185
+#: glib/goption.c:2184
 #, c-format
 msgid "Unknown option %s"
 msgstr "Bilinmeyen seçenek %s"
@@ -5798,121 +5855,131 @@ msgstr "Metin boştu (veya yalnızca boşluk içeriyordu)"
 msgid "Failed to read data from child process (%s)"
 msgstr "Alt süreçten bilgi okuma başarısızlığı (%s)"
 
-#: glib/gspawn.c:461
+#: glib/gspawn.c:462
 #, c-format
 msgid "Unexpected error in reading data from a child process (%s)"
 msgstr "Alt süreçten bilgi okurken beklenmeyen hata oluştu (%s)"
 
-#: glib/gspawn.c:546
+#: glib/gspawn.c:547
 #, c-format
 msgid "Unexpected error in waitpid() (%s)"
 msgstr "waitpid() (%s) içinde beklenmeyen hata"
 
-#: glib/gspawn.c:1166 glib/gspawn-win32.c:1407
+#: glib/gspawn.c:1175 glib/gspawn-win32.c:1438
 #, c-format
 msgid "Child process exited with code %ld"
 msgstr "Alt işlem %ld kodu ile sonlandı"
 
-#: glib/gspawn.c:1174
+#: glib/gspawn.c:1183
 #, c-format
 msgid "Child process killed by signal %ld"
 msgstr "Alt işlem, %ld sinyali ile sonlandı"
 
-#: glib/gspawn.c:1181
+#: glib/gspawn.c:1190
 #, c-format
 msgid "Child process stopped by signal %ld"
 msgstr "Alt işlem %ld sinyali ile durduruldu"
 
-#: glib/gspawn.c:1188
+#: glib/gspawn.c:1197
 #, c-format
 msgid "Child process exited abnormally"
 msgstr "Alt işlem anormal bir biçimde sonlandı"
 
-#: glib/gspawn.c:1864 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
+#: glib/gspawn.c:1890 glib/gspawn-win32.c:353 glib/gspawn-win32.c:361
 #, c-format
 msgid "Failed to read from child pipe (%s)"
 msgstr "Alt süreç borusundan okuma başarısızlığı (%s)"
 
-#: glib/gspawn.c:2166
+#: glib/gspawn.c:2253
 #, c-format
 msgid "Failed to spawn child process “%s” (%s)"
 msgstr "“%s” alt süreci üretme başarısız (%s)"
 
-#: glib/gspawn.c:2283
+#: glib/gspawn.c:2370
 #, c-format
 msgid "Failed to fork (%s)"
 msgstr "Çatallama başarısızlığı (%s)"
 
-#: glib/gspawn.c:2443 glib/gspawn-win32.c:381
+#: glib/gspawn.c:2530 glib/gspawn-win32.c:384
 #, c-format
 msgid "Failed to change to directory “%s” (%s)"
 msgstr "“%s” dizinine değiştirme başarısızlığı (%s)"
 
-#: glib/gspawn.c:2453
+#: glib/gspawn.c:2540
 #, c-format
 msgid "Failed to execute child process “%s” (%s)"
 msgstr "“%s” alt süreci çalıştırılırken hata oluştu (%s)"
 
-#: glib/gspawn.c:2463
+#: glib/gspawn.c:2550
+#, c-format
+msgid "Failed to open file to remap file descriptor (%s)"
+msgstr "Dosya tanımlayıcıyı yeniden eşlemek için dosya açılamadı (%s)"
+
+#: glib/gspawn.c:2558
 #, c-format
-msgid "Failed to redirect output or input of child process (%s)"
-msgstr "Alt sürecin girdisi veya çıktısı yönlendirilemedi (%s)"
+msgid "Failed to duplicate file descriptor for child process (%s)"
+msgstr "Alt süreç için dosya tanımlayıcı çoğaltılamadı (%s)"
 
-#: glib/gspawn.c:2472
+#: glib/gspawn.c:2567
 #, c-format
 msgid "Failed to fork child process (%s)"
 msgstr "Alt süreç çatallanamadı (%s)"
 
-#: glib/gspawn.c:2480
+#: glib/gspawn.c:2575
 #, c-format
 msgid "Failed to close file descriptor for child process (%s)"
 msgstr "Alt süreç için dosya tanımlayıcının kapatılması başarısız (%s)"
 
-#: glib/gspawn.c:2488
+#: glib/gspawn.c:2583
 #, c-format
 msgid "Unknown error executing child process “%s”"
 msgstr "Alt süreç “%s” çalıştırılırken bilinmeyen hata oluştu"
 
-#: glib/gspawn.c:2512
+#: glib/gspawn.c:2607
 #, c-format
 msgid "Failed to read enough data from child pid pipe (%s)"
 msgstr "Alt süreç borusundan yeterli bilgi okunamadı (%s)"
 
-#: glib/gspawn-win32.c:294
+#: glib/gspawn-win32.c:297
 msgid "Failed to read data from child process"
 msgstr "Alt süreçten bilgi okuma başarısızlığı"
 
-#: glib/gspawn-win32.c:387 glib/gspawn-win32.c:392 glib/gspawn-win32.c:511
+#: glib/gspawn-win32.c:390 glib/gspawn-win32.c:395 glib/gspawn-win32.c:521
 #, c-format
 msgid "Failed to execute child process (%s)"
 msgstr "Alt süreç yürütme başarısızlığı (%s)"
 
-#: glib/gspawn-win32.c:461
+#: glib/gspawn-win32.c:400
+#, c-format
+msgid "Failed to dup() in child process (%s)"
+msgstr "Alt süreç dup() yapılamadı (%s)"
+
+#: glib/gspawn-win32.c:471
 #, c-format
 msgid "Invalid program name: %s"
 msgstr "Geçersiz program adı: %s"
 
-#: glib/gspawn-win32.c:471 glib/gspawn-win32.c:779
+#: glib/gspawn-win32.c:481 glib/gspawn-win32.c:807
 #, c-format
 msgid "Invalid string in argument vector at %d: %s"
 msgstr "%d konumunda argüman vektörü içinde geçersiz dizgi: %s"
 
-#: glib/gspawn-win32.c:482 glib/gspawn-win32.c:794
+#: glib/gspawn-win32.c:492 glib/gspawn-win32.c:823
 #, c-format
 msgid "Invalid string in environment: %s"
 msgstr "Çevre içinde geçersiz dizgi: %s"
 
-#: glib/gspawn-win32.c:775
+#: glib/gspawn-win32.c:803
 #, c-format
 msgid "Invalid working directory: %s"
 msgstr "Geçersiz çalışma dizini: %s"
 
-#: glib/gspawn-win32.c:837
+#: glib/gspawn-win32.c:868
 #, c-format
 msgid "Failed to execute helper program (%s)"
 msgstr "Yardımcı program (%s) çalıştırılamadı"
 
-#: glib/gspawn-win32.c:1064
+#: glib/gspawn-win32.c:1096
 msgid ""
 "Unexpected error in g_io_channel_win32_poll() reading data from a child "
 "process"
@@ -5920,21 +5987,21 @@ msgstr ""
 "Alt süreçten bilgi okurken g_io_channel_win32_poll() işleminde beklenmeyen "
 "hata"
 
-#: glib/gstrfuncs.c:3345 glib/gstrfuncs.c:3447
+#: glib/gstrfuncs.c:3351 glib/gstrfuncs.c:3453
 msgid "Empty string is not a number"
 msgstr "Boş dizge bir sayı değildir"
 
-#: glib/gstrfuncs.c:3369
+#: glib/gstrfuncs.c:3375
 #, c-format
 msgid "“%s” is not a signed number"
 msgstr "“%s” işaretli bir sayı değil"
 
-#: glib/gstrfuncs.c:3379 glib/gstrfuncs.c:3483
+#: glib/gstrfuncs.c:3385 glib/gstrfuncs.c:3489
 #, c-format
 msgid "Number “%s” is out of bounds [%s, %s]"
 msgstr "“%s” sayısı sınırların dışındadır [%s, %s]"
 
-#: glib/gstrfuncs.c:3473
+#: glib/gstrfuncs.c:3479
 #, c-format
 msgid "“%s” is not an unsigned number"
 msgstr "“%s” işaretsiz bir sayı değil"
@@ -5995,188 +6062,188 @@ msgstr "URI mutlak değil ve temel URI sağlanmamış"
 msgid "Missing ‘=’ and parameter value"
 msgstr "‘=’ ve parametre değeri eksik"
 
-#: glib/gutf8.c:817
+#: glib/gutf8.c:832
 msgid "Failed to allocate memory"
 msgstr "Bellek ayrılamadı"
 
-#: glib/gutf8.c:950
+#: glib/gutf8.c:965
 msgid "Character out of range for UTF-8"
 msgstr "Karakter UTF-8 için sınırlarının dışında"
 
-#: glib/gutf8.c:1051 glib/gutf8.c:1060 glib/gutf8.c:1190 glib/gutf8.c:1199
-#: glib/gutf8.c:1338 glib/gutf8.c:1435
+#: glib/gutf8.c:1067 glib/gutf8.c:1076 glib/gutf8.c:1206 glib/gutf8.c:1215
+#: glib/gutf8.c:1354 glib/gutf8.c:1451
 msgid "Invalid sequence in conversion input"
 msgstr "Dönüşüm girdisi içinde geçersiz dizi"
 
-#: glib/gutf8.c:1349 glib/gutf8.c:1446
+#: glib/gutf8.c:1365 glib/gutf8.c:1462
 msgid "Character out of range for UTF-16"
 msgstr "Karakter UTF-16 sınırlarının dışında"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2770
+#: glib/gutils.c:2849
 #, c-format
 msgid "%.1f kB"
 msgstr "%.1f kB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2772
+#: glib/gutils.c:2851
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2774
+#: glib/gutils.c:2853
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2776
+#: glib/gutils.c:2855
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2778
+#: glib/gutils.c:2857
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2780
+#: glib/gutils.c:2859
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2784
+#: glib/gutils.c:2863
 #, c-format
 msgid "%.1f KiB"
 msgstr "%.1f KiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2786
+#: glib/gutils.c:2865
 #, c-format
 msgid "%.1f MiB"
 msgstr "%.1f MiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2788
+#: glib/gutils.c:2867
 #, c-format
 msgid "%.1f GiB"
 msgstr "%.1f GiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2790
+#: glib/gutils.c:2869
 #, c-format
 msgid "%.1f TiB"
 msgstr "%.1f TiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2792
+#: glib/gutils.c:2871
 #, c-format
 msgid "%.1f PiB"
 msgstr "%.1f PiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2794
+#: glib/gutils.c:2873
 #, c-format
 msgid "%.1f EiB"
 msgstr "%.1f EiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2798
+#: glib/gutils.c:2877
 #, c-format
 msgid "%.1f kb"
 msgstr "%.1f kb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2800
+#: glib/gutils.c:2879
 #, c-format
 msgid "%.1f Mb"
 msgstr "%.1f Mb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2802
+#: glib/gutils.c:2881
 #, c-format
 msgid "%.1f Gb"
 msgstr "%.1f Gb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2804
+#: glib/gutils.c:2883
 #, c-format
 msgid "%.1f Tb"
 msgstr "%.1f Tb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2806
+#: glib/gutils.c:2885
 #, c-format
 msgid "%.1f Pb"
 msgstr "%.1f Pb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2808
+#: glib/gutils.c:2887
 #, c-format
 msgid "%.1f Eb"
 msgstr "%.1f Eb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2812
+#: glib/gutils.c:2891
 #, c-format
 msgid "%.1f Kib"
 msgstr "%.1f Kib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2814
+#: glib/gutils.c:2893
 #, c-format
 msgid "%.1f Mib"
 msgstr "%.1f Mib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2816
+#: glib/gutils.c:2895
 #, c-format
 msgid "%.1f Gib"
 msgstr "%.1f Gib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2818
+#: glib/gutils.c:2897
 #, c-format
 msgid "%.1f Tib"
 msgstr "%.1f Tib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2820
+#: glib/gutils.c:2899
 #, c-format
 msgid "%.1f Pib"
 msgstr "%.1f Pib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2822
+#: glib/gutils.c:2901
 #, c-format
 msgid "%.1f Eib"
 msgstr "%.1f Eib"
 
-#: glib/gutils.c:2856 glib/gutils.c:2973
+#: glib/gutils.c:2935 glib/gutils.c:3052
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
 msgstr[0] "%u bayt"
 
-#: glib/gutils.c:2860
+#: glib/gutils.c:2939
 #, c-format
 msgid "%u bit"
 msgid_plural "%u bits"
 msgstr[0] "%u bit"
 
 #. Translators: the %s in "%s bytes" will always be replaced by a number.
-#: glib/gutils.c:2927
+#: glib/gutils.c:3006
 #, c-format
 msgid "%s byte"
 msgid_plural "%s bytes"
 msgstr[0] "%s bayt"
 
 #. Translators: the %s in "%s bits" will always be replaced by a number.
-#: glib/gutils.c:2932
+#: glib/gutils.c:3011
 #, c-format
 msgid "%s bit"
 msgid_plural "%s bits"
@@ -6187,32 +6254,32 @@ msgstr[0] "%s bit"
 #. * compatibility.  Users will not see this string unless a program is using this deprecated function.
 #. * Please translate as literally as possible.
 #.
-#: glib/gutils.c:2986
+#: glib/gutils.c:3065
 #, c-format
 msgid "%.1f KB"
 msgstr "%.1f KB"
 
-#: glib/gutils.c:2991
+#: glib/gutils.c:3070
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
-#: glib/gutils.c:2996
+#: glib/gutils.c:3075
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
-#: glib/gutils.c:3001
+#: glib/gutils.c:3080
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
-#: glib/gutils.c:3006
+#: glib/gutils.c:3085
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
-#: glib/gutils.c:3011
+#: glib/gutils.c:3090
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
@@ -6334,9 +6401,6 @@ msgstr "%.1f EB"
 #~ msgid "Unable to find default local directory monitor type"
 #~ msgstr "Öntanımlı yerel dizin izleme tipi bulunamadı"
 
-#~ msgid "URIs not supported"
-#~ msgstr "URI'ler desteklenmiyor"
-
 #~ msgid "Key file does not have key '%s'"
 #~ msgstr "Anahtar dosyasında '%s' anahtarı yok"
 
index 92b2600..548c0e9 100644 (file)
--- a/po/uk.po
+++ b/po/uk.po
@@ -10,17 +10,28 @@ msgid ""
 msgstr ""
 "Project-Id-Version: glib\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/glib/issues\n"
-"POT-Creation-Date: 2022-01-27 11:15+0000\n"
-"PO-Revision-Date: 2022-01-27 16:36+0200\n"
+"POT-Creation-Date: 2022-03-22 15:19+0000\n"
+"PO-Revision-Date: 2022-03-22 17:45+0200\n"
 "Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
 "Language-Team: Ukrainian <trans-uk@lists.fedoraproject.org>\n"
 "Language: uk\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<"
+"=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
 "X-Generator: Lokalize 20.12.0\n"
 
+#: gio/gappinfo.c:333
+msgid "Setting default applications not supported yet"
+msgstr "Підтримки встановлення типової програми ще не передбачено"
+
+#: gio/gappinfo.c:366
+msgid "Setting application as last used for type not supported yet"
+msgstr ""
+"Підтримки встановлення програми, як останньої використаної для типу, ще не "
+"передбачено"
+
 #: gio/gapplication.c:500
 msgid "GApplication options"
 msgstr "Параметри GApplication"
@@ -44,7 +55,7 @@ msgid "Replace the running instance"
 msgstr "Замінити запущений екземпляр"
 
 #: gio/gapplication-tool.c:45 gio/gapplication-tool.c:46 gio/gio-tool.c:227
-#: gio/gresource-tool.c:494 gio/gsettings-tool.c:572
+#: gio/gresource-tool.c:494 gio/gsettings-tool.c:584
 msgid "Print help"
 msgstr "Надрукувати довідку"
 
@@ -56,7 +67,7 @@ msgstr "[КОМАНДА]"
 msgid "Print version"
 msgstr "Вивести номер версії"
 
-#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:578
+#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:590
 msgid "Print version information and exit"
 msgstr "Вивести інформацію про версію і вийти"
 
@@ -119,8 +130,8 @@ msgstr "Команда, за якою виводиться детальна до
 msgid "Application identifier in D-Bus format (eg: org.example.viewer)"
 msgstr "Ідентифікатор програми у форматі D-Bus (напр.: org.example.viewer)"
 
-#: gio/gapplication-tool.c:74 gio/glib-compile-resources.c:738
-#: gio/glib-compile-resources.c:744 gio/glib-compile-resources.c:772
+#: gio/gapplication-tool.c:74 gio/glib-compile-resources.c:820
+#: gio/glib-compile-resources.c:826 gio/glib-compile-resources.c:855
 #: gio/gresource-tool.c:501 gio/gresource-tool.c:567
 msgid "FILE"
 msgstr "ФАЙЛ"
@@ -147,7 +158,7 @@ msgstr "ПАРАМЕТР"
 msgid "Optional parameter to the action invocation, in GVariant format"
 msgstr "Необов'язковий параметр для виклику дії у форматі GVariant"
 
-#: gio/gapplication-tool.c:98 gio/gresource-tool.c:532 gio/gsettings-tool.c:664
+#: gio/gapplication-tool.c:98 gio/gresource-tool.c:532 gio/gsettings-tool.c:676
 #, c-format
 msgid ""
 "Unknown command %s\n"
@@ -161,7 +172,7 @@ msgid "Usage:\n"
 msgstr "Використання:\n"
 
 #: gio/gapplication-tool.c:116 gio/gresource-tool.c:557
-#: gio/gsettings-tool.c:699
+#: gio/gsettings-tool.c:711
 msgid "Arguments:\n"
 msgstr "Аргументи:\n"
 
@@ -284,7 +295,7 @@ msgstr "Потік вже закрито"
 msgid "Truncate not supported on base stream"
 msgstr "Урізання не підтримується у базовому потоці"
 
-#: gio/gcancellable.c:319 gio/gdbusconnection.c:1873 gio/gdbusprivate.c:1416
+#: gio/gcancellable.c:319 gio/gdbusconnection.c:1857 gio/gdbusprivate.c:1418
 #: gio/gsimpleasyncresult.c:871 gio/gsimpleasyncresult.c:897
 #, c-format
 msgid "Operation was cancelled"
@@ -305,7 +316,7 @@ msgstr "Бракує простору для результату"
 #: gio/gcharsetconverter.c:342 gio/gdatainputstream.c:848
 #: gio/gdatainputstream.c:1266 glib/gconvert.c:449 glib/gconvert.c:879
 #: glib/giochannel.c:1573 glib/giochannel.c:1615 glib/giochannel.c:2470
-#: glib/gutf8.c:875 glib/gutf8.c:1328
+#: glib/gutf8.c:890 glib/gutf8.c:1344
 msgid "Invalid byte sequence in conversion input"
 msgstr "Неправильна послідовність байтів у перетворюваних вхідних даних"
 
@@ -315,7 +326,7 @@ msgstr "Неправильна послідовність байтів у пер
 msgid "Error during conversion: %s"
 msgstr "Помилка під час перетворення: %s"
 
-#: gio/gcharsetconverter.c:445 gio/gsocket.c:1143
+#: gio/gcharsetconverter.c:445 gio/gsocket.c:1147
 msgid "Cancellable initialization not supported"
 msgstr "Ініціалізація з можливістю скасування не підтримується"
 
@@ -329,37 +340,37 @@ msgstr "Підтримки перетворення з набору символ
 msgid "Could not open converter from “%s” to “%s”"
 msgstr "Не вдалося відкрити модуль перетворення з «%s» у «%s»"
 
-#: gio/gcontenttype.c:454
+#: gio/gcontenttype.c:470
 #, c-format
 msgid "%s type"
 msgstr "тип %s"
 
-#: gio/gcontenttype-win32.c:192
+#: gio/gcontenttype-win32.c:196
 msgid "Unknown type"
 msgstr "Невідомий тип"
 
-#: gio/gcontenttype-win32.c:194
+#: gio/gcontenttype-win32.c:198
 #, c-format
 msgid "%s filetype"
 msgstr "тип файлів %s"
 
-#: gio/gcredentials.c:323
+#: gio/gcredentials.c:335
 msgid "GCredentials contains invalid data"
 msgstr "У GCredentials містяться некоректні дані"
 
-#: gio/gcredentials.c:383 gio/gcredentials.c:667
+#: gio/gcredentials.c:395 gio/gcredentials.c:686
 msgid "GCredentials is not implemented on this OS"
 msgstr "Тип GCredentials не реалізовано для цієї ОС"
 
-#: gio/gcredentials.c:538 gio/gcredentials.c:556
+#: gio/gcredentials.c:550 gio/gcredentials.c:568
 msgid "There is no GCredentials support for your platform"
 msgstr "Підтримки GCredentials для вашої платформи не передбачено"
 
-#: gio/gcredentials.c:607
+#: gio/gcredentials.c:626
 msgid "GCredentials does not contain a process ID on this OS"
 msgstr "Тип GCredentials не містить ідентифікатора процесу для цієї ОС"
 
-#: gio/gcredentials.c:661
+#: gio/gcredentials.c:680
 msgid "Credentials spoofing is not possible on this OS"
 msgstr "Спуфінг облікових даних неможливий у цій ОС"
 
@@ -367,17 +378,17 @@ msgstr "Спуфінг облікових даних неможливий у ц
 msgid "Unexpected early end-of-stream"
 msgstr "Неочікуваний передчасний кінець потоку"
 
-#: gio/gdbusaddress.c:159 gio/gdbusaddress.c:233 gio/gdbusaddress.c:322
+#: gio/gdbusaddress.c:162 gio/gdbusaddress.c:236 gio/gdbusaddress.c:325
 #, c-format
 msgid "Unsupported key “%s” in address entry “%s”"
 msgstr "Непідтримуваний ключ «%s» у елементі адреси «%s»"
 
-#: gio/gdbusaddress.c:172
+#: gio/gdbusaddress.c:175
 #, c-format
 msgid "Meaningless key/value pair combination in address entry “%s”"
 msgstr "Беззмістовна комбінація ключ/значення у елементі адреси «%s»"
 
-#: gio/gdbusaddress.c:181
+#: gio/gdbusaddress.c:184
 #, c-format
 msgid ""
 "Address “%s” is invalid (need exactly one of path, dir, tmpdir, or abstract "
@@ -386,28 +397,28 @@ msgstr ""
 "Неправильна адреса «%s» (потрібен шлях, каталог, тимчасовий каталог або один "
 "з абстрактних ключів)"
 
-#: gio/gdbusaddress.c:248 gio/gdbusaddress.c:259 gio/gdbusaddress.c:274
-#: gio/gdbusaddress.c:337 gio/gdbusaddress.c:348
+#: gio/gdbusaddress.c:251 gio/gdbusaddress.c:262 gio/gdbusaddress.c:277
+#: gio/gdbusaddress.c:340 gio/gdbusaddress.c:351
 #, c-format
 msgid "Error in address “%s” — the “%s” attribute is malformed"
 msgstr "Помилка в адресі «%s» — неправильне форматування атрибута «%s»"
 
-#: gio/gdbusaddress.c:418 gio/gdbusaddress.c:682
+#: gio/gdbusaddress.c:421 gio/gdbusaddress.c:680
 #, c-format
 msgid "Unknown or unsupported transport “%s” for address “%s”"
 msgstr "Невідомий або непідтримуваний канал передавання «%s» для адреси «%s»"
 
-#: gio/gdbusaddress.c:462
+#: gio/gdbusaddress.c:465
 #, c-format
 msgid "Address element “%s” does not contain a colon (:)"
 msgstr "У елементі адреси «%s» немає двокрапки (:)"
 
-#: gio/gdbusaddress.c:471
+#: gio/gdbusaddress.c:474
 #, c-format
 msgid "Transport name in address element “%s” must not be empty"
 msgstr "Назва каналу передавання у елементі адреси «%s» має бути непорожньою"
 
-#: gio/gdbusaddress.c:492
+#: gio/gdbusaddress.c:495
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” does not contain an equal "
@@ -415,7 +426,7 @@ msgid ""
 msgstr ""
 "Пара ключ/значення %d, «%s», у елементі адреси «%s» не містить знака рівності"
 
-#: gio/gdbusaddress.c:503
+#: gio/gdbusaddress.c:506
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” must not have an empty key"
@@ -423,7 +434,7 @@ msgstr ""
 "Пара ключ/значення %d, «%s», у елементі адреси «%s» має містити непорожній "
 "ключ"
 
-#: gio/gdbusaddress.c:517
+#: gio/gdbusaddress.c:520
 #, c-format
 msgid ""
 "Error unescaping key or value in Key/Value pair %d, “%s”, in address element "
@@ -432,7 +443,7 @@ msgstr ""
 "Помилка зняття екранування ключа або значення у парі ключ/значення %d, «%s», "
 "у елементі адреси «%s»"
 
-#: gio/gdbusaddress.c:589
+#: gio/gdbusaddress.c:588
 #, c-format
 msgid ""
 "Error in address “%s” — the unix transport requires exactly one of the keys "
@@ -441,84 +452,83 @@ msgstr ""
 "Помилка у адресі «%s» — для транспорту unix потрібен лише один встановлений "
 "ключ «path» або «abstract»"
 
-#: gio/gdbusaddress.c:625
+#: gio/gdbusaddress.c:623
 #, c-format
 msgid "Error in address “%s” — the host attribute is missing or malformed"
 msgstr ""
 "Помилка у адресі «%s» — немає атрибута вузла або вказано значення у "
 "помилковому форматі"
 
-#: gio/gdbusaddress.c:639
+#: gio/gdbusaddress.c:637
 #, c-format
 msgid "Error in address “%s” — the port attribute is missing or malformed"
 msgstr ""
 "Помилка в адресі «%s» — атрибут не вказано атрибут порту або помилкове "
 "форматування атрибута"
 
-#: gio/gdbusaddress.c:653
+#: gio/gdbusaddress.c:651
 #, c-format
 msgid "Error in address “%s” — the noncefile attribute is missing or malformed"
 msgstr ""
 "Помилка в адресі «%s» — атрибут не вказано атрибут noncefile або помилкове "
 "форматування атрибута"
 
-#: gio/gdbusaddress.c:674
+#: gio/gdbusaddress.c:672
 msgid "Error auto-launching: "
 msgstr "Помилка автоматичного запуску: "
 
-#: gio/gdbusaddress.c:727
+#: gio/gdbusaddress.c:725
 #, c-format
 msgid "Error opening nonce file “%s”: %s"
 msgstr "Сталася помилка при відкриванні nonce-файла «%s»: %s"
 
-#: gio/gdbusaddress.c:746
+#: gio/gdbusaddress.c:744
 #, c-format
 msgid "Error reading from nonce file “%s”: %s"
 msgstr "Сталася помилка при читанні nonce-файла «%s»: %s"
 
-#: gio/gdbusaddress.c:755
+#: gio/gdbusaddress.c:753
 #, c-format
 msgid "Error reading from nonce file “%s”, expected 16 bytes, got %d"
 msgstr ""
 "Сталася помилка при читанні nonce-файла «%s», очікувалося 16 байтів, "
 "отримано %d"
 
-#: gio/gdbusaddress.c:773
+#: gio/gdbusaddress.c:771
 #, c-format
 msgid "Error writing contents of nonce file “%s” to stream:"
 msgstr "Сталася помилка запису вмісту nonce-файла «%s» до потоку:"
 
-#: gio/gdbusaddress.c:988
+#: gio/gdbusaddress.c:986
 msgid "The given address is empty"
 msgstr "Вказана адреса порожня"
 
-#: gio/gdbusaddress.c:1101
+#: gio/gdbusaddress.c:1099
 #, c-format
-msgid "Cannot spawn a message bus when setuid"
-msgstr ""
-"Неможливо породити процес шини повідомлень, якщо встановлений атрибут setuid"
+msgid "Cannot spawn a message bus when AT_SECURE is set"
+msgstr "Неможливо породити процес шини повідомлень, якщо встановлено AT_SECURE"
 
-#: gio/gdbusaddress.c:1108
+#: gio/gdbusaddress.c:1106
 msgid "Cannot spawn a message bus without a machine-id: "
 msgstr "Неможливо породити процес шини повідомлень без ідентифікатора машини:"
 
-#: gio/gdbusaddress.c:1115
+#: gio/gdbusaddress.c:1113
 #, c-format
 msgid "Cannot autolaunch D-Bus without X11 $DISPLAY"
 msgstr "Неможливо автоматично запускати D-Bus без $DISPLAY у X11"
 
-#: gio/gdbusaddress.c:1157
+#: gio/gdbusaddress.c:1155
 #, c-format
 msgid "Error spawning command line “%s”: "
 msgstr "Помилка запуску рядка команди «%s»: "
 
-#: gio/gdbusaddress.c:1226
+#: gio/gdbusaddress.c:1224
 #, c-format
 msgid "Cannot determine session bus address (not implemented for this OS)"
 msgstr ""
 "Не вдалося визначити адресу сеансової шини (не реалізовано для цієї ОС)"
 
-#: gio/gdbusaddress.c:1375 gio/gdbusconnection.c:7334
+#: gio/gdbusaddress.c:1373 gio/gdbusconnection.c:7318
 #, c-format
 msgid ""
 "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
@@ -527,7 +537,7 @@ msgstr ""
 "Не вдалося визначити адресу шини зі значення змінної середовища "
 "DBUS_STARTER_BUS_TYPE — невідоме значення «%s»"
 
-#: gio/gdbusaddress.c:1384 gio/gdbusconnection.c:7343
+#: gio/gdbusaddress.c:1382 gio/gdbusconnection.c:7327
 msgid ""
 "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
 "variable is not set"
@@ -535,7 +545,7 @@ msgstr ""
 "Не вдалося визначити адресу шини, оскільки значення змінної середовища "
 "DBUS_STARTER_BUS_TYPE не встановлено"
 
-#: gio/gdbusaddress.c:1394
+#: gio/gdbusaddress.c:1392
 #, c-format
 msgid "Unknown bus type %d"
 msgstr "Невідомий тип шини %d"
@@ -564,44 +574,44 @@ msgstr "Ідентифікатори користувача для вузла і
 msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
 msgstr "Скасовано через GDBusAuthObserver::authorize-authenticated-peer"
 
-#: gio/gdbusauthmechanismsha1.c:298
+#: gio/gdbusauthmechanismsha1.c:300
 #, c-format
 msgid "Error when getting information for directory “%s”: %s"
 msgstr "Помилка при отриманні відомостей для каталогу «%s»: %s"
 
-#: gio/gdbusauthmechanismsha1.c:313
+#: gio/gdbusauthmechanismsha1.c:315
 #, c-format
 msgid ""
 "Permissions on directory “%s” are malformed. Expected mode 0700, got 0%o"
 msgstr "Помилкові права на каталог «%s». Очікуваний режим — 0700, отримано 0%o"
 
-#: gio/gdbusauthmechanismsha1.c:346 gio/gdbusauthmechanismsha1.c:357
+#: gio/gdbusauthmechanismsha1.c:348 gio/gdbusauthmechanismsha1.c:359
 #, c-format
 msgid "Error creating directory “%s”: %s"
 msgstr "Сталася помилка при створенні каталогу «%s»: %s"
 
-#: gio/gdbusauthmechanismsha1.c:359 gio/gfile.c:1062 gio/gfile.c:1300
-#: gio/gfile.c:1438 gio/gfile.c:1676 gio/gfile.c:1731 gio/gfile.c:1789
-#: gio/gfile.c:1873 gio/gfile.c:1930 gio/gfile.c:1994 gio/gfile.c:2049
-#: gio/gfile.c:3754 gio/gfile.c:3809 gio/gfile.c:4102 gio/gfile.c:4572
-#: gio/gfile.c:4983 gio/gfile.c:5068 gio/gfile.c:5158 gio/gfile.c:5255
-#: gio/gfile.c:5342 gio/gfile.c:5443 gio/gfile.c:8153 gio/gfile.c:8243
-#: gio/gfile.c:8327 gio/win32/gwinhttpfile.c:453
+#: gio/gdbusauthmechanismsha1.c:361 gio/gfile.c:1080 gio/gfile.c:1318
+#: gio/gfile.c:1456 gio/gfile.c:1694 gio/gfile.c:1749 gio/gfile.c:1807
+#: gio/gfile.c:1891 gio/gfile.c:1948 gio/gfile.c:2012 gio/gfile.c:2067
+#: gio/gfile.c:3772 gio/gfile.c:3912 gio/gfile.c:4205 gio/gfile.c:4675
+#: gio/gfile.c:5086 gio/gfile.c:5171 gio/gfile.c:5261 gio/gfile.c:5358
+#: gio/gfile.c:5445 gio/gfile.c:5546 gio/gfile.c:8375 gio/gfile.c:8465
+#: gio/gfile.c:8549 gio/win32/gwinhttpfile.c:453
 msgid "Operation not supported"
 msgstr "Операція не підтримується"
 
-#: gio/gdbusauthmechanismsha1.c:402
+#: gio/gdbusauthmechanismsha1.c:404
 #, c-format
 msgid "Error opening keyring “%s” for reading: "
 msgstr "Сталася помилка при відкриванні зв'язки ключів «%s» на читання: "
 
-#: gio/gdbusauthmechanismsha1.c:425 gio/gdbusauthmechanismsha1.c:747
+#: gio/gdbusauthmechanismsha1.c:427 gio/gdbusauthmechanismsha1.c:769
 #, c-format
 msgid "Line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr ""
 "Некоректне форматування у рядку %d у зв'язці ключів у «%s» з вмістом «%s»"
 
-#: gio/gdbusauthmechanismsha1.c:439 gio/gdbusauthmechanismsha1.c:761
+#: gio/gdbusauthmechanismsha1.c:441 gio/gdbusauthmechanismsha1.c:783
 #, c-format
 msgid ""
 "First token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -609,7 +619,7 @@ msgstr ""
 "Некоректне форматування першої лексеми у рядку %d у зв'язці ключів у «%s» з "
 "вмістом «%s»"
 
-#: gio/gdbusauthmechanismsha1.c:453 gio/gdbusauthmechanismsha1.c:775
+#: gio/gdbusauthmechanismsha1.c:455 gio/gdbusauthmechanismsha1.c:797
 #, c-format
 msgid ""
 "Second token of line %d of the keyring at “%s” with content “%s” is malformed"
@@ -617,161 +627,161 @@ msgstr ""
 "Некоректне форматування другої лексеми у рядку %d у зв'язці ключів у «%s» з "
 "вмістом «%s»"
 
-#: gio/gdbusauthmechanismsha1.c:477
+#: gio/gdbusauthmechanismsha1.c:479
 #, c-format
 msgid "Didn’t find cookie with id %d in the keyring at “%s”"
 msgstr "Не вдалося знайти куки з ідентифікатором %d у зв'язці ключів «%s»"
 
-#: gio/gdbusauthmechanismsha1.c:523
+#: gio/gdbusauthmechanismsha1.c:536
 #, c-format
 msgid "Error creating lock file “%s”: %s"
 msgstr "Сталася помилка при створенні файла блокування «%s»: %s"
 
-#: gio/gdbusauthmechanismsha1.c:587
+#: gio/gdbusauthmechanismsha1.c:609
 #, c-format
 msgid "Error deleting stale lock file “%s”: %s"
 msgstr "Сталася помилка при вилученні застарілого файла блокування «%s»: %s"
 
-#: gio/gdbusauthmechanismsha1.c:626
+#: gio/gdbusauthmechanismsha1.c:648
 #, c-format
 msgid "Error closing (unlinked) lock file “%s”: %s"
 msgstr ""
 "Сталася помилка при закриванні (від'єднаного) файла блокування «%s»: %s"
 
-#: gio/gdbusauthmechanismsha1.c:637
+#: gio/gdbusauthmechanismsha1.c:659
 #, c-format
 msgid "Error unlinking lock file “%s”: %s"
 msgstr "Сталася помилка при вилученні файла блокування «%s»: %s"
 
-#: gio/gdbusauthmechanismsha1.c:714
+#: gio/gdbusauthmechanismsha1.c:736
 #, c-format
 msgid "Error opening keyring “%s” for writing: "
 msgstr "Сталася помилка при відкриванні зв'язки ключів «%s» для запису: "
 
-#: gio/gdbusauthmechanismsha1.c:908
+#: gio/gdbusauthmechanismsha1.c:930
 #, c-format
 msgid "(Additionally, releasing the lock for “%s” also failed: %s) "
 msgstr "(Також, не вдалося вивільнити блокування «%s»: %s) "
 
-#: gio/gdbusconnection.c:604 gio/gdbusconnection.c:2418
+#: gio/gdbusconnection.c:588 gio/gdbusconnection.c:2402
 msgid "The connection is closed"
 msgstr "З'єднання закрито"
 
-#: gio/gdbusconnection.c:1903
+#: gio/gdbusconnection.c:1887
 msgid "Timeout was reached"
 msgstr "Час очікування вичерпано"
 
-#: gio/gdbusconnection.c:2541
+#: gio/gdbusconnection.c:2525
 msgid ""
 "Unsupported flags encountered when constructing a client-side connection"
 msgstr "При створенні клієнтського з'єднання виявлено непідтримувані прапорці"
 
-#: gio/gdbusconnection.c:4269 gio/gdbusconnection.c:4623
+#: gio/gdbusconnection.c:4253 gio/gdbusconnection.c:4607
 #, c-format
 msgid ""
 "No such interface “org.freedesktop.DBus.Properties” on object at path %s"
 msgstr ""
 "Інтерфейс «org.freedesktop.DBus.Properties» для шляху об'єкта %s не знайдено"
 
-#: gio/gdbusconnection.c:4414
+#: gio/gdbusconnection.c:4398
 #, c-format
 msgid "No such property “%s”"
 msgstr "Немає властивості «%s»"
 
-#: gio/gdbusconnection.c:4426
+#: gio/gdbusconnection.c:4410
 #, c-format
 msgid "Property “%s” is not readable"
 msgstr "Властивість «%s» недоступна для читання"
 
-#: gio/gdbusconnection.c:4437
+#: gio/gdbusconnection.c:4421
 #, c-format
 msgid "Property “%s” is not writable"
 msgstr "Властивість «%s» недоступна для запису"
 
-#: gio/gdbusconnection.c:4457
+#: gio/gdbusconnection.c:4441
 #, c-format
 msgid "Error setting property “%s”: Expected type “%s” but got “%s”"
 msgstr ""
 "Помилка встановлення властивості «%s». Мало бути використано тип «%s», але "
 "отримано «%s»"
 
-#: gio/gdbusconnection.c:4562 gio/gdbusconnection.c:4777
-#: gio/gdbusconnection.c:6760
+#: gio/gdbusconnection.c:4546 gio/gdbusconnection.c:4761
+#: gio/gdbusconnection.c:6744
 #, c-format
 msgid "No such interface “%s”"
 msgstr "Немає інтерфейсу «%s»"
 
-#: gio/gdbusconnection.c:4999 gio/gdbusconnection.c:7274
+#: gio/gdbusconnection.c:4983 gio/gdbusconnection.c:7258
 #, c-format
 msgid "No such interface “%s” on object at path %s"
 msgstr "Немає інтерфейсу «%s» на об'єкті зі шляхом %s"
 
-#: gio/gdbusconnection.c:5100
+#: gio/gdbusconnection.c:5084
 #, c-format
 msgid "No such method “%s”"
 msgstr "Немає методу «%s»"
 
-#: gio/gdbusconnection.c:5131
+#: gio/gdbusconnection.c:5115
 #, c-format
 msgid "Type of message, “%s”, does not match expected type “%s”"
 msgstr "Тип повідомлення «%s» не збігається з очікуваним типом «%s»"
 
-#: gio/gdbusconnection.c:5334
+#: gio/gdbusconnection.c:5318
 #, c-format
 msgid "An object is already exported for the interface %s at %s"
 msgstr "Об'єкт інтерфейсу %s вже експортовано як %s"
 
-#: gio/gdbusconnection.c:5561
+#: gio/gdbusconnection.c:5545
 #, c-format
 msgid "Unable to retrieve property %s.%s"
 msgstr "Не вдалося отримати властивість %s.%s"
 
-#: gio/gdbusconnection.c:5617
+#: gio/gdbusconnection.c:5601
 #, c-format
 msgid "Unable to set property %s.%s"
 msgstr "Не вдалося встановити значення властивості %s.%s"
 
-#: gio/gdbusconnection.c:5796
+#: gio/gdbusconnection.c:5780
 #, c-format
 msgid "Method “%s” returned type “%s”, but expected “%s”"
 msgstr "Метод «%s» повернув тип «%s», але очікувалося «%s»"
 
-#: gio/gdbusconnection.c:6872
+#: gio/gdbusconnection.c:6856
 #, c-format
 msgid "Method “%s” on interface “%s” with signature “%s” does not exist"
 msgstr "Методу «%s» інтерфейсу «%s» з підписом «%s» не існує"
 
-#: gio/gdbusconnection.c:6993
+#: gio/gdbusconnection.c:6977
 #, c-format
 msgid "A subtree is already exported for %s"
 msgstr "Піддерево вже експортовано для %s"
 
-#: gio/gdbusconnection.c:7282
+#: gio/gdbusconnection.c:7266
 #, c-format
 msgid "Object does not exist at path “%s”"
 msgstr "Об'єкта зі шляхом «%s» не існує"
 
-#: gio/gdbusmessage.c:1311
+#: gio/gdbusmessage.c:1301
 msgid "type is INVALID"
 msgstr "НЕПРАВИЛЬНИЙ тип"
 
-#: gio/gdbusmessage.c:1322
+#: gio/gdbusmessage.c:1312
 msgid "METHOD_CALL message: PATH or MEMBER header field is missing"
 msgstr "Повідомлення METHOD_CALL: немає поля заголовка PATH або MEMBER"
 
-#: gio/gdbusmessage.c:1333
+#: gio/gdbusmessage.c:1323
 msgid "METHOD_RETURN message: REPLY_SERIAL header field is missing"
 msgstr "Повідомлення METHOD_RETURN: немає поля заголовка REPLY_SERIAL"
 
-#: gio/gdbusmessage.c:1345
+#: gio/gdbusmessage.c:1335
 msgid "ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing"
 msgstr "Повідомлення ERROR: немає поля заголовка REPLY_SERIAL або ERROR_NAME"
 
-#: gio/gdbusmessage.c:1358
+#: gio/gdbusmessage.c:1348
 msgid "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing"
 msgstr "Повідомлення SIGNAL: немає поля заголовка PATH, INTERFACE або MEMBER"
 
-#: gio/gdbusmessage.c:1366
+#: gio/gdbusmessage.c:1356
 msgid ""
 "SIGNAL message: The PATH header field is using the reserved value /org/"
 "freedesktop/DBus/Local"
@@ -779,7 +789,7 @@ msgstr ""
 "Повідомлення SIGNAL: поле заголовка PATH використовує зарезервоване "
 "значення /org/freedesktop/DBus/Local"
 
-#: gio/gdbusmessage.c:1374
+#: gio/gdbusmessage.c:1364
 msgid ""
 "SIGNAL message: The INTERFACE header field is using the reserved value org."
 "freedesktop.DBus.Local"
@@ -787,7 +797,7 @@ msgstr ""
 "Повідомлення SIGNAL: поле заголовка INTERFACE використовує зарезервоване "
 "значення org.freedesktop.DBus.Local"
 
-#: gio/gdbusmessage.c:1422 gio/gdbusmessage.c:1482
+#: gio/gdbusmessage.c:1412 gio/gdbusmessage.c:1472
 #, c-format
 msgid "Wanted to read %lu byte but only got %lu"
 msgid_plural "Wanted to read %lu bytes but only got %lu"
@@ -795,12 +805,12 @@ msgstr[0] "Потрібно було прочитати %lu байт, але п
 msgstr[1] "Потрібно було прочитати %lu байти, але прочитано лише %lu"
 msgstr[2] "Потрібно було прочитати %lu байтів, але прочитано лише %lu"
 
-#: gio/gdbusmessage.c:1436
+#: gio/gdbusmessage.c:1426
 #, c-format
 msgid "Expected NUL byte after the string “%s” but found byte %d"
 msgstr "Мало бути використано байт NUL після рядка «%s», але знайдено байт %d"
 
-#: gio/gdbusmessage.c:1455
+#: gio/gdbusmessage.c:1445
 #, c-format
 msgid ""
 "Expected valid UTF-8 string but found invalid bytes at byte offset %d "
@@ -810,21 +820,21 @@ msgstr ""
 "(зміщення %d, довжина рядка %d). Коректний рядок UTF-8 аж до цієї миті був "
 "таким: «%s»"
 
-#: gio/gdbusmessage.c:1519 gio/gdbusmessage.c:1795 gio/gdbusmessage.c:2006
+#: gio/gdbusmessage.c:1509 gio/gdbusmessage.c:1785 gio/gdbusmessage.c:1996
 msgid "Value nested too deeply"
 msgstr "Рівень вкладеності значення є надто високим"
 
-#: gio/gdbusmessage.c:1687
+#: gio/gdbusmessage.c:1677
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus object path"
 msgstr "Оброблене значення «%s» не є припустимим шляхом до об'єкта D-Bus"
 
-#: gio/gdbusmessage.c:1711
+#: gio/gdbusmessage.c:1701
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature"
 msgstr "Оброблене значення «%s» не є припустимим підписом D-Bus"
 
-#: gio/gdbusmessage.c:1762
+#: gio/gdbusmessage.c:1752
 #, c-format
 msgid ""
 "Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB)."
@@ -840,7 +850,7 @@ msgstr[2] ""
 "Виявлено масив довжиною %u байтів. Максимальна довжина дорівнює 2<<26 байт "
 "(64 МіБ)."
 
-#: gio/gdbusmessage.c:1782
+#: gio/gdbusmessage.c:1772
 #, c-format
 msgid ""
 "Encountered array of type “a%c”, expected to have a length a multiple of %u "
@@ -849,24 +859,23 @@ msgstr ""
 "Виявлено масив типу «a%c». Очікувалося, що довжина буде кратною до %u "
 "байтів, втім, виявлено довжину %u байтів"
 
-#: gio/gdbusmessage.c:1936 gio/gdbusmessage.c:2655
+#: gio/gdbusmessage.c:1926 gio/gdbusmessage.c:2645
 msgid "Empty structures (tuples) are not allowed in D-Bus"
-msgstr ""
-"Не можна використовувати порожні структури (кортежі) у D-Bus"
+msgstr "Не можна використовувати порожні структури (кортежі) у D-Bus"
 
-#: gio/gdbusmessage.c:1990
+#: gio/gdbusmessage.c:1980
 #, c-format
 msgid "Parsed value “%s” for variant is not a valid D-Bus signature"
 msgstr "Оброблене значення «%s» для варіанта не є припустимим підписом D-Bus"
 
-#: gio/gdbusmessage.c:2031
+#: gio/gdbusmessage.c:2021
 #, c-format
 msgid ""
 "Error deserializing GVariant with type string “%s” from the D-Bus wire format"
 msgstr ""
 "Помилка десеріалізації GVariant з типом рядка «%s» з формату D-Bus wire"
 
-#: gio/gdbusmessage.c:2216
+#: gio/gdbusmessage.c:2206
 #, c-format
 msgid ""
 "Invalid endianness value. Expected 0x6c (“l”) or 0x42 (“B”) but found value "
@@ -875,29 +884,29 @@ msgstr ""
 "Неправильний порядок байтів у значенні. Мало бути 0x6c («l») або 0x42 («B»), "
 "але знайдено значення 0x%02x"
 
-#: gio/gdbusmessage.c:2235
+#: gio/gdbusmessage.c:2225
 #, c-format
 msgid "Invalid major protocol version. Expected 1 but found %d"
 msgstr ""
 "Неправильний старший номер версії протоколу. Очікувався 1, але знайдено %d"
 
-#: gio/gdbusmessage.c:2293 gio/gdbusmessage.c:2891
+#: gio/gdbusmessage.c:2283 gio/gdbusmessage.c:2881
 msgid "Signature header found but is not of type signature"
 msgstr ""
 "Виявлено заголовок підпису, але цей заголовок не належить до типу підписів"
 
-#: gio/gdbusmessage.c:2305
+#: gio/gdbusmessage.c:2295
 #, c-format
 msgid "Signature header with signature “%s” found but message body is empty"
 msgstr ""
 "Знайдено заголовок підпису з підписом «%s», але вміст повідомлення є порожнім"
 
-#: gio/gdbusmessage.c:2320
+#: gio/gdbusmessage.c:2310
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature (for body)"
 msgstr "Оброблене значення «%s» не є припустимим підписом D-Bus (для вмісту)"
 
-#: gio/gdbusmessage.c:2352
+#: gio/gdbusmessage.c:2342
 #, 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"
@@ -911,17 +920,17 @@ msgstr[2] ""
 "Відсутній заголовок підпису у повідомленні, але тіло повідомлення займає %u "
 "байтів"
 
-#: gio/gdbusmessage.c:2362
+#: gio/gdbusmessage.c:2352
 msgid "Cannot deserialize message: "
 msgstr "Не вдалося виконати десеріалізацію повідомлення:"
 
-#: gio/gdbusmessage.c:2708
+#: gio/gdbusmessage.c:2698
 #, c-format
 msgid ""
 "Error serializing GVariant with type string “%s” to the D-Bus wire format"
 msgstr "Помилка серіалізації GVariant з типом рядка «%s» у формат D-Bus wire"
 
-#: gio/gdbusmessage.c:2845
+#: gio/gdbusmessage.c:2835
 #, c-format
 msgid ""
 "Number of file descriptors in message (%d) differs from header field (%d)"
@@ -929,16 +938,16 @@ msgstr ""
 "Кількість дескрипторів файлів у повідомленні (%d) відрізняється від значення "
 "у полі заголовка (%d)"
 
-#: gio/gdbusmessage.c:2853
+#: gio/gdbusmessage.c:2843
 msgid "Cannot serialize message: "
 msgstr "Не вдалося серіалізувати повідомлення: "
 
-#: gio/gdbusmessage.c:2906
+#: gio/gdbusmessage.c:2896
 #, c-format
 msgid "Message body has signature “%s” but there is no signature header"
 msgstr "Вміст повідомлення має підпис «%s», але немає заголовка підпису"
 
-#: gio/gdbusmessage.c:2916
+#: gio/gdbusmessage.c:2906
 #, c-format
 msgid ""
 "Message body has type signature “%s” but signature in the header field is "
@@ -947,54 +956,54 @@ msgstr ""
 "Вміст повідомлення має тип підпису «%s», але значення підпису у полі "
 "заголовка дорівнює «%s»"
 
-#: gio/gdbusmessage.c:2932
+#: gio/gdbusmessage.c:2922
 #, c-format
 msgid "Message body is empty but signature in the header field is “(%s)”"
 msgstr ""
 "Вміст повідомлення порожній, але значення підпису у полі заголовка дорівнює "
 "«(%s)»"
 
-#: gio/gdbusmessage.c:3487
+#: gio/gdbusmessage.c:3477
 #, c-format
 msgid "Error return with body of type “%s”"
 msgstr "Повернуто помилку для вмісту типу «%s»"
 
-#: gio/gdbusmessage.c:3495
+#: gio/gdbusmessage.c:3485
 msgid "Error return with empty body"
 msgstr "Повернена помилка з порожнім тілом"
 
-#: gio/gdbusprivate.c:2246
+#: gio/gdbusprivate.c:2185
 #, c-format
 msgid "(Type any character to close this window)\n"
 msgstr "(Щоб закрити це вікно, уведіть будь-який символ)\n"
 
-#: gio/gdbusprivate.c:2420
+#: gio/gdbusprivate.c:2371
 #, c-format
 msgid "Session dbus not running, and autolaunch failed"
 msgstr "Сеанс dbus не запущений, і автозапуск не виконався"
 
-#: gio/gdbusprivate.c:2443
+#: gio/gdbusprivate.c:2394
 #, c-format
 msgid "Unable to get Hardware profile: %s"
 msgstr "Не вдалося отримати профіль апаратури: %s"
 
 #. Translators: Both placeholders are file paths
-#: gio/gdbusprivate.c:2494
+#: gio/gdbusprivate.c:2445
 #, c-format
 msgid "Unable to load %s or %s: "
 msgstr "Не вдалося завантажити %s або %s: "
 
-#: gio/gdbusproxy.c:1569
+#: gio/gdbusproxy.c:1573
 #, c-format
 msgid "Error calling StartServiceByName for %s: "
 msgstr "Помилка виклику StartServiceByName для %s: "
 
-#: gio/gdbusproxy.c:1592
+#: gio/gdbusproxy.c:1596
 #, c-format
 msgid "Unexpected reply %d from StartServiceByName(\"%s\") method"
 msgstr "Неочікувана відповідь %d з методу StartServiceByName(«%s»)"
 
-#: gio/gdbusproxy.c:2699 gio/gdbusproxy.c:2834
+#: gio/gdbusproxy.c:2707 gio/gdbusproxy.c:2842
 #, c-format
 msgid ""
 "Cannot invoke method; proxy is for the well-known name %s without an owner, "
@@ -1050,66 +1059,66 @@ msgstr ""
 "\n"
 "Для отримання довідки за командою використовуйте «%s КОМАНДА --help».\n"
 
-#: gio/gdbus-tool.c:201 gio/gdbus-tool.c:273 gio/gdbus-tool.c:345
-#: gio/gdbus-tool.c:369 gio/gdbus-tool.c:859 gio/gdbus-tool.c:1236
-#: gio/gdbus-tool.c:1724
+#: gio/gdbus-tool.c:202 gio/gdbus-tool.c:274 gio/gdbus-tool.c:346
+#: gio/gdbus-tool.c:370 gio/gdbus-tool.c:860 gio/gdbus-tool.c:1245
+#: gio/gdbus-tool.c:1733
 #, c-format
 msgid "Error: %s\n"
 msgstr "Помилка: %s\n"
 
-#: gio/gdbus-tool.c:212 gio/gdbus-tool.c:286 gio/gdbus-tool.c:1740
+#: gio/gdbus-tool.c:213 gio/gdbus-tool.c:287 gio/gdbus-tool.c:1749
 #, c-format
 msgid "Error parsing introspection XML: %s\n"
 msgstr "Сталася помилка під час обробки інтроспекції XML: %s\n"
 
-#: gio/gdbus-tool.c:250
+#: gio/gdbus-tool.c:251
 #, c-format
 msgid "Error: %s is not a valid name\n"
 msgstr "Помилка: %s не є припустимою назвою\n"
 
-#: gio/gdbus-tool.c:255 gio/gdbus-tool.c:745 gio/gdbus-tool.c:1060
-#: gio/gdbus-tool.c:1890 gio/gdbus-tool.c:2130
+#: gio/gdbus-tool.c:256 gio/gdbus-tool.c:746 gio/gdbus-tool.c:1064
+#: gio/gdbus-tool.c:1899 gio/gdbus-tool.c:2139
 #, c-format
 msgid "Error: %s is not a valid object path\n"
 msgstr "Помилка: %s не є припустимим об'єктним шляхом\n"
 
-#: gio/gdbus-tool.c:403
+#: gio/gdbus-tool.c:404
 msgid "Connect to the system bus"
 msgstr "Під'єднатися до системної шини"
 
-#: gio/gdbus-tool.c:404
+#: gio/gdbus-tool.c:405
 msgid "Connect to the session bus"
 msgstr "Під'єднатися до користувацької шини"
 
-#: gio/gdbus-tool.c:405
+#: gio/gdbus-tool.c:406
 msgid "Connect to given D-Bus address"
 msgstr "Під'єднатися до вказаної адреси D-Bus"
 
-#: gio/gdbus-tool.c:415
+#: gio/gdbus-tool.c:416
 msgid "Connection Endpoint Options:"
 msgstr "Параметри кінцевої точки з'єднання:"
 
-#: gio/gdbus-tool.c:416
+#: gio/gdbus-tool.c:417
 msgid "Options specifying the connection endpoint"
 msgstr "Параметри, що визначають кінцеву точку з'єднання"
 
-#: gio/gdbus-tool.c:439
+#: gio/gdbus-tool.c:440
 #, c-format
 msgid "No connection endpoint specified"
 msgstr "Кінцева точка з'єднання не вказана"
 
-#: gio/gdbus-tool.c:449
+#: gio/gdbus-tool.c:450
 #, c-format
 msgid "Multiple connection endpoints specified"
 msgstr "Вказано декілька кінцевих точок з'єднання"
 
-#: gio/gdbus-tool.c:522
+#: gio/gdbus-tool.c:523
 #, c-format
 msgid ""
 "Warning: According to introspection data, interface “%s” does not exist\n"
 msgstr "Попередження: згідно з даними інтроспекції, інтерфейсу «%s» не існує\n"
 
-#: gio/gdbus-tool.c:531
+#: gio/gdbus-tool.c:532
 #, c-format
 msgid ""
 "Warning: According to introspection data, method “%s” does not exist on "
@@ -1118,163 +1127,167 @@ msgstr ""
 "Попередження: згідно з даними інтроспекції, методу «%s» в інтерфейсі «%s» не "
 "існує\n"
 
-#: gio/gdbus-tool.c:593
+#: gio/gdbus-tool.c:594
 msgid "Optional destination for signal (unique name)"
 msgstr "Необов'язковий отримувач сигналу (унікальна назва)"
 
-#: gio/gdbus-tool.c:594
+#: gio/gdbus-tool.c:595
 msgid "Object path to emit signal on"
 msgstr "Об'єктний шлях, для випуску сигналу"
 
-#: gio/gdbus-tool.c:595
+#: gio/gdbus-tool.c:596
 msgid "Signal and interface name"
 msgstr "Назва сигналу і інтерфейсу"
 
-#: gio/gdbus-tool.c:628
+#: gio/gdbus-tool.c:629
 msgid "Emit a signal."
 msgstr "Послати сигнал."
 
-#: gio/gdbus-tool.c:683 gio/gdbus-tool.c:997 gio/gdbus-tool.c:1827
-#: gio/gdbus-tool.c:2059 gio/gdbus-tool.c:2279
+#: gio/gdbus-tool.c:684 gio/gdbus-tool.c:1001 gio/gdbus-tool.c:1836
+#: gio/gdbus-tool.c:2068 gio/gdbus-tool.c:2288
 #, c-format
 msgid "Error connecting: %s\n"
 msgstr "Сталася помилка при з'єднанні: %s\n"
 
-#: gio/gdbus-tool.c:703
+#: gio/gdbus-tool.c:704
 #, c-format
 msgid "Error: %s is not a valid unique bus name.\n"
 msgstr "Помилка: %s не є припустимою унікальною назвою шини.\n"
 
-#: gio/gdbus-tool.c:722 gio/gdbus-tool.c:1040 gio/gdbus-tool.c:1870
+#: gio/gdbus-tool.c:723 gio/gdbus-tool.c:1044 gio/gdbus-tool.c:1879
 msgid "Error: Object path is not specified\n"
 msgstr "Помилка: не вказано об'єктний шлях\n"
 
-#: gio/gdbus-tool.c:765
+#: gio/gdbus-tool.c:766
 msgid "Error: Signal name is not specified\n"
 msgstr "Помилка: не вказано назви сигналу\n"
 
-#: gio/gdbus-tool.c:779
+#: gio/gdbus-tool.c:780
 #, c-format
 msgid "Error: Signal name “%s” is invalid\n"
 msgstr "Помилка: некоректна назва сигналу «%s»\n"
 
-#: gio/gdbus-tool.c:791
+#: gio/gdbus-tool.c:792
 #, c-format
 msgid "Error: %s is not a valid interface name\n"
 msgstr "Помилка: %s не є припустимою назвою інтерфейсу\n"
 
-#: gio/gdbus-tool.c:797
+#: gio/gdbus-tool.c:798
 #, c-format
 msgid "Error: %s is not a valid member name\n"
 msgstr "Помилка: %s не є припустимою назвою члену\n"
 
 #. Use the original non-"parse-me-harder" error
-#: gio/gdbus-tool.c:834 gio/gdbus-tool.c:1172
+#: gio/gdbus-tool.c:835 gio/gdbus-tool.c:1176
 #, c-format
 msgid "Error parsing parameter %d: %s\n"
 msgstr "Сталася помилка під час обробки параметра %d: %s\n"
 
-#: gio/gdbus-tool.c:866
+#: gio/gdbus-tool.c:867
 #, c-format
 msgid "Error flushing connection: %s\n"
 msgstr "Сталася помилка при скиданні під'єднання: %s\n"
 
-#: gio/gdbus-tool.c:893
+#: gio/gdbus-tool.c:895
 msgid "Destination name to invoke method on"
 msgstr "Назва призначення, для якого викликається метод"
 
-#: gio/gdbus-tool.c:894
+#: gio/gdbus-tool.c:896
 msgid "Object path to invoke method on"
 msgstr "Об'єктний шлях, для якого викликається метод"
 
-#: gio/gdbus-tool.c:895
+#: gio/gdbus-tool.c:897
 msgid "Method and interface name"
 msgstr "Назва методу або інтерфейсу"
 
-#: gio/gdbus-tool.c:896
+#: gio/gdbus-tool.c:898
 msgid "Timeout in seconds"
 msgstr "Час очікування у секундах"
 
-#: gio/gdbus-tool.c:942
+#: gio/gdbus-tool.c:899
+msgid "Allow interactive authorization"
+msgstr "Дозволити інтерактивне уповноваження"
+
+#: gio/gdbus-tool.c:946
 msgid "Invoke a method on a remote object."
 msgstr "Викликає метод на віддаленому об'єкті."
 
-#: gio/gdbus-tool.c:1014 gio/gdbus-tool.c:1844 gio/gdbus-tool.c:2084
+#: gio/gdbus-tool.c:1018 gio/gdbus-tool.c:1853 gio/gdbus-tool.c:2093
 msgid "Error: Destination is not specified\n"
 msgstr "Помилка: не вказано призначення\n"
 
-#: gio/gdbus-tool.c:1025 gio/gdbus-tool.c:1861 gio/gdbus-tool.c:2095
+#: gio/gdbus-tool.c:1029 gio/gdbus-tool.c:1870 gio/gdbus-tool.c:2104
 #, c-format
 msgid "Error: %s is not a valid bus name\n"
 msgstr "Помилка: %s не є припустимою назвою шини\n"
 
-#: gio/gdbus-tool.c:1075
+#: gio/gdbus-tool.c:1079
 msgid "Error: Method name is not specified\n"
 msgstr "Помилка: не вказано назви методу\n"
 
-#: gio/gdbus-tool.c:1086
+#: gio/gdbus-tool.c:1090
 #, c-format
 msgid "Error: Method name “%s” is invalid\n"
 msgstr "Помилка: некоректна назва методу «%s»\n"
 
-#: gio/gdbus-tool.c:1164
+#: gio/gdbus-tool.c:1168
 #, c-format
 msgid "Error parsing parameter %d of type “%s”: %s\n"
 msgstr "Сталася помилка під час обробки параметра %d типу «%s»: %s\n"
 
-#: gio/gdbus-tool.c:1190
+#: gio/gdbus-tool.c:1194
 #, c-format
 msgid "Error adding handle %d: %s\n"
 msgstr "Помилка під час додавання елемента керування %d: %s\n"
 
-#: gio/gdbus-tool.c:1686
+#: gio/gdbus-tool.c:1695
 msgid "Destination name to introspect"
 msgstr "Назва призначення для інтроспекції"
 
-#: gio/gdbus-tool.c:1687
+#: gio/gdbus-tool.c:1696
 msgid "Object path to introspect"
 msgstr "Об'єктний шлях для інтроспекції"
 
-#: gio/gdbus-tool.c:1688
+#: gio/gdbus-tool.c:1697
 msgid "Print XML"
 msgstr "Надрукувати XML"
 
-#: gio/gdbus-tool.c:1689
+#: gio/gdbus-tool.c:1698
 msgid "Introspect children"
 msgstr "Інтроспекція нащадка"
 
-#: gio/gdbus-tool.c:1690
+#: gio/gdbus-tool.c:1699
 msgid "Only print properties"
 msgstr "Лише властивості друку"
 
-#: gio/gdbus-tool.c:1779
+#: gio/gdbus-tool.c:1788
 msgid "Introspect a remote object."
 msgstr "Виконати інтроспекцію віддаленого об'єкту."
 
-#: gio/gdbus-tool.c:1985
+#: gio/gdbus-tool.c:1994
 msgid "Destination name to monitor"
 msgstr "Назва призначення для спостерігання"
 
-#: gio/gdbus-tool.c:1986
+#: gio/gdbus-tool.c:1995
 msgid "Object path to monitor"
 msgstr "Об'єктний шлях для спостерігання"
 
-#: gio/gdbus-tool.c:2011
+#: gio/gdbus-tool.c:2020
 msgid "Monitor a remote object."
 msgstr "Спостерігати за віддаленим об'єктом."
 
-#: gio/gdbus-tool.c:2069
+#: gio/gdbus-tool.c:2078
 msgid "Error: can’t monitor a non-message-bus connection\n"
 msgstr ""
 "Помилка: спостереження за з'єднанням, яке не належить до типу message-bus, є "
 "неможливим\n"
 
-#: gio/gdbus-tool.c:2193
+#: gio/gdbus-tool.c:2202
 msgid "Service to activate before waiting for the other one (well-known name)"
 msgstr ""
 "Служба, яку слід активувати, перш ніж очікувати на іншу (добре відома назва)"
 
-#: gio/gdbus-tool.c:2196
+#: gio/gdbus-tool.c:2205
 msgid ""
 "Timeout to wait for before exiting with an error (seconds); 0 for no timeout "
 "(default)"
@@ -1282,63 +1295,68 @@ msgstr ""
 "Час очікування до виходу із станом помилки (у секундах); 0 — не очікувати "
 "(типова поведінка)"
 
-#: gio/gdbus-tool.c:2244
+#: gio/gdbus-tool.c:2253
 msgid "[OPTION…] BUS-NAME"
 msgstr "[ПАРАМЕТР…] НАЗВА-ШИНИ"
 
-#: gio/gdbus-tool.c:2245
+#: gio/gdbus-tool.c:2254
 msgid "Wait for a bus name to appear."
 msgstr "Очікувати на появу назви шини."
 
-#: gio/gdbus-tool.c:2321
+#: gio/gdbus-tool.c:2330
 msgid "Error: A service to activate for must be specified.\n"
 msgstr "Помилка: має бути вказано службу для активації.\n"
 
-#: gio/gdbus-tool.c:2326
+#: gio/gdbus-tool.c:2335
 msgid "Error: A service to wait for must be specified.\n"
 msgstr "Помилка: має бути вказано службу для очікування.\n"
 
-#: gio/gdbus-tool.c:2331
+#: gio/gdbus-tool.c:2340
 msgid "Error: Too many arguments.\n"
 msgstr "Помилка: забагато аргументів.\n"
 
-#: gio/gdbus-tool.c:2339 gio/gdbus-tool.c:2346
+#: gio/gdbus-tool.c:2348 gio/gdbus-tool.c:2355
 #, c-format
 msgid "Error: %s is not a valid well-known bus name.\n"
 msgstr "Помилка: %s не є припустимим добре відомою назвою шини.\n"
 
-#: gio/gdesktopappinfo.c:2106 gio/gdesktopappinfo.c:4935
+#: gio/gdebugcontrollerdbus.c:358
+#, c-format
+msgid "Not authorized to change debug settings"
+msgstr "Не уповноважено змінювати параметри діагностики"
+
+#: gio/gdesktopappinfo.c:2178 gio/gdesktopappinfo.c:5105
 msgid "Unnamed"
 msgstr "Без назви"
 
-#: gio/gdesktopappinfo.c:2516
+#: gio/gdesktopappinfo.c:2588
 msgid "Desktop file didn’t specify Exec field"
 msgstr "У desktop-файлі не визначено поля Exec"
 
-#: gio/gdesktopappinfo.c:2804
+#: gio/gdesktopappinfo.c:2896
 msgid "Unable to find terminal required for application"
 msgstr "Неможливо знайти термінал, що потрібен програмі"
 
-#: gio/gdesktopappinfo.c:3455
+#: gio/gdesktopappinfo.c:3625
 #, c-format
 msgid "Can’t create user application configuration folder %s: %s"
 msgstr "Не вдалося створити теку параметрів програми %s: %s"
 
-#: gio/gdesktopappinfo.c:3459
+#: gio/gdesktopappinfo.c:3629
 #, c-format
 msgid "Can’t create user MIME configuration folder %s: %s"
 msgstr "Не вдалося створити теку параметрів MIME %s: %s"
 
-#: gio/gdesktopappinfo.c:3701 gio/gdesktopappinfo.c:3725
+#: gio/gdesktopappinfo.c:3871 gio/gdesktopappinfo.c:3895
 msgid "Application information lacks an identifier"
 msgstr "У інформації про програму не вказано ідентифікатор"
 
-#: gio/gdesktopappinfo.c:3961
+#: gio/gdesktopappinfo.c:4131
 #, c-format
 msgid "Can’t create user desktop file %s"
 msgstr "Не вдалося створити для користувача desktop-файл %s"
 
-#: gio/gdesktopappinfo.c:4097
+#: gio/gdesktopappinfo.c:4267
 #, c-format
 msgid "Custom definition for %s"
 msgstr "Власне визначення %s"
@@ -1366,7 +1384,7 @@ msgstr "для диска не реалізовано функцію запус
 msgid "drive doesn’t implement stop"
 msgstr "для диска не реалізовано функції зупинки"
 
-#: gio/gdtlsconnection.c:1153 gio/gtlsconnection.c:920
+#: gio/gdtlsconnection.c:1186 gio/gtlsconnection.c:955
 msgid "TLS backend does not implement TLS binding retrieval"
 msgstr "У модулі TLS не реалізовано отримання прив'язки TLS"
 
@@ -1407,74 +1425,74 @@ msgstr "Очікується GEmblem для GEmblemedIcon"
 #. * trying to find the enclosing (user visible)
 #. * mount of a file, but none exists.
 #.
-#: gio/gfile.c:1561
+#: gio/gfile.c:1579
 msgid "Containing mount does not exist"
 msgstr "Вкладена точка монтування не існує"
 
-#: gio/gfile.c:2608 gio/glocalfile.c:2486
+#: gio/gfile.c:2626 gio/glocalfile.c:2486
 msgid "Can’t copy over directory"
 msgstr "Не можна копіювати із заміною каталогу"
 
-#: gio/gfile.c:2668
+#: gio/gfile.c:2686
 msgid "Can’t copy directory over directory"
 msgstr "Не можна копіювати каталог поверх іншого каталогу"
 
-#: gio/gfile.c:2676
+#: gio/gfile.c:2694
 msgid "Target file exists"
 msgstr "Цільовий файл існує"
 
-#: gio/gfile.c:2695
+#: gio/gfile.c:2713
 msgid "Can’t recursively copy directory"
 msgstr "Не вдалося скопіювати каталог рекурсивно"
 
-#: gio/gfile.c:2996
+#: gio/gfile.c:3014
 msgid "Splice not supported"
 msgstr "З'єднання не підтримується"
 
-#: gio/gfile.c:3000
+#: gio/gfile.c:3018
 #, c-format
 msgid "Error splicing file: %s"
 msgstr "Помилка при розрізанні файла: %s"
 
-#: gio/gfile.c:3152
+#: gio/gfile.c:3170
 msgid "Copy (reflink/clone) between mounts is not supported"
 msgstr "Копіювання (reflink/clone) між точками монтування не підтримується"
 
-#: gio/gfile.c:3156
+#: gio/gfile.c:3174
 msgid "Copy (reflink/clone) is not supported or invalid"
 msgstr "Копіювання (reflink/clone) не підтримується або некоректне"
 
-#: gio/gfile.c:3161
+#: gio/gfile.c:3179
 msgid "Copy (reflink/clone) is not supported or didn’t work"
 msgstr ""
 "Підтримки копіювання (reflink/clone) не передбачено або копіювання не працює"
 
-#: gio/gfile.c:3226
+#: gio/gfile.c:3244
 msgid "Can’t copy special file"
 msgstr "Не вдалося скопіювати спеціальний файл"
 
-#: gio/gfile.c:4035
+#: gio/gfile.c:4138
 msgid "Invalid symlink value given"
 msgstr "Неправильне значення символьного посилання"
 
-#: gio/gfile.c:4045 glib/gfileutils.c:2333
+#: gio/gfile.c:4148 glib/gfileutils.c:2333
 msgid "Symbolic links not supported"
 msgstr "Символічні посилання не підтримуються"
 
-#: gio/gfile.c:4213
+#: gio/gfile.c:4316
 msgid "Trash not supported"
 msgstr "Смітник не підтримується"
 
-#: gio/gfile.c:4325
+#: gio/gfile.c:4428
 #, c-format
 msgid "File names cannot contain “%c”"
 msgstr "Назви файлів не можуть містити символу «%c»"
 
-#: gio/gfile.c:6806 gio/gvolume.c:364
+#: gio/gfile.c:7028 gio/gvolume.c:364
 msgid "volume doesn’t implement mount"
 msgstr "для тому не реалізовано операцію монтування"
 
-#: gio/gfile.c:6920 gio/gfile.c:6968
+#: gio/gfile.c:7142 gio/gfile.c:7190
 msgid "No application is registered as handling this file"
 msgstr "Програм для обробки таких файлів не зареєстровано"
 
@@ -1519,7 +1537,7 @@ msgstr "Операція урізання не підтримується для
 msgid "Truncate not supported on stream"
 msgstr "Операція урізання не підтримується для потоку"
 
-#: gio/ghttpproxy.c:91 gio/gresolver.c:443 gio/gresolver.c:596
+#: gio/ghttpproxy.c:91 gio/gresolver.c:458 gio/gresolver.c:611
 #: glib/gconvert.c:1825
 msgid "Invalid hostname"
 msgstr "Неправильна назва вузла"
@@ -1606,7 +1624,7 @@ msgid "Could not parse “%s” as IP address mask"
 msgstr "Не вдалося обробити «%s» як маску IP-адрес"
 
 #: gio/ginetsocketaddress.c:203 gio/ginetsocketaddress.c:220
-#: gio/gnativesocketaddress.c:109 gio/gunixsocketaddress.c:221
+#: gio/gnativesocketaddress.c:109 gio/gunixsocketaddress.c:228
 msgid "Not enough space for socket address"
 msgstr "Бракує простору для адреси сокету"
 
@@ -2452,15 +2470,15 @@ msgstr "Помилка при стисненні файла %s"
 msgid "text may not appear inside <%s>"
 msgstr "текст не може бути всередині <%s>"
 
-#: gio/glib-compile-resources.c:737 gio/glib-compile-schemas.c:2172
+#: gio/glib-compile-resources.c:819 gio/glib-compile-schemas.c:2172
 msgid "Show program version and exit"
 msgstr "Вивести дані щодо версії програми і завершити роботу"
 
-#: gio/glib-compile-resources.c:738
+#: gio/glib-compile-resources.c:820
 msgid "Name of the output file"
 msgstr "Назва вихідного файла"
 
-#: gio/glib-compile-resources.c:739
+#: gio/glib-compile-resources.c:821
 msgid ""
 "The directories to load files referenced in FILE from (default: current "
 "directory)"
@@ -2468,49 +2486,49 @@ msgstr ""
 "Каталоги для завантаження файлів, на які посилається ФАЙЛ (типово поточний "
 "каталог)"
 
-#: gio/glib-compile-resources.c:739 gio/glib-compile-schemas.c:2173
+#: gio/glib-compile-resources.c:821 gio/glib-compile-schemas.c:2173
 #: gio/glib-compile-schemas.c:2202
 msgid "DIRECTORY"
 msgstr "КАТАЛОГ"
 
-#: gio/glib-compile-resources.c:740
+#: gio/glib-compile-resources.c:822
 msgid ""
 "Generate output in the format selected for by the target filename extension"
 msgstr ""
 "Генерувати результат у форматі, який відповідає суфіксу назви файла "
 "призначення"
 
-#: gio/glib-compile-resources.c:741
+#: gio/glib-compile-resources.c:823
 msgid "Generate source header"
 msgstr "Генерувати джерельний заголовок"
 
-#: gio/glib-compile-resources.c:742
+#: gio/glib-compile-resources.c:824
 msgid "Generate source code used to link in the resource file into your code"
 msgstr ""
 "Генерувати початковий код, який використовується для зв'язку з файлом "
 "ресурсів вашого коду"
 
-#: gio/glib-compile-resources.c:743
+#: gio/glib-compile-resources.c:825
 msgid "Generate dependency list"
 msgstr "Генерувати перелік залежностей"
 
-#: gio/glib-compile-resources.c:744
+#: gio/glib-compile-resources.c:826
 msgid "Name of the dependency file to generate"
 msgstr "Назва файла залежностей, який слід створити"
 
-#: gio/glib-compile-resources.c:745
+#: gio/glib-compile-resources.c:827
 msgid "Include phony targets in the generated dependency file"
 msgstr "Включити фіктивні призначення у створений файл залежностей"
 
-#: gio/glib-compile-resources.c:746
+#: gio/glib-compile-resources.c:828
 msgid "Don’t automatically create and register resource"
 msgstr "Не створювати або реєструвати ресурс автоматично"
 
-#: gio/glib-compile-resources.c:747
+#: gio/glib-compile-resources.c:829
 msgid "Don’t export functions; declare them G_GNUC_INTERNAL"
 msgstr "Не експортувати функції; оголосити їх як G_GNUC_INTERNAL"
 
-#: gio/glib-compile-resources.c:748
+#: gio/glib-compile-resources.c:830
 msgid ""
 "Don’t embed resource data in the C file; assume it's linked externally "
 "instead"
@@ -2518,13 +2536,18 @@ msgstr ""
 "Не вбудовувати дані ресурсу до файла Сі; припускати його зовнішнє "
 "компонування"
 
-#: gio/glib-compile-resources.c:749
+#: gio/glib-compile-resources.c:831
 msgid "C identifier name used for the generated source code"
 msgstr ""
 "Назва C-ідентифікатора, який використовуватиметься для породження "
 "початкового коду"
 
-#: gio/glib-compile-resources.c:775
+#: gio/glib-compile-resources.c:832
+msgid "The target C compiler (default: the CC environment variable)"
+msgstr ""
+"Компілятор C призначення (типове значення: вміст змінної середовища CC)"
+
+#: gio/glib-compile-resources.c:858
 msgid ""
 "Compile a resource specification into a resource file.\n"
 "Resource specification files have the extension .gresource.xml,\n"
@@ -2534,7 +2557,7 @@ msgstr ""
 "Файли специфікації ресурсів мають розширення .gresource.xml,\n"
 "а файл ресурсу має розширення .gresource."
 
-#: gio/glib-compile-resources.c:797
+#: gio/glib-compile-resources.c:880
 msgid "You should give exactly one file name\n"
 msgstr "Вам слід вказати точно одну назву файла\n"
 
@@ -3328,13 +3351,13 @@ msgstr "Помилка при створенні резервної копії:
 msgid "Error renaming temporary file: %s"
 msgstr "Помилка при перейменуванні тимчасового файла: %s"
 
-#: gio/glocalfileoutputstream.c:609 gio/glocalfileoutputstream.c:1237
+#: gio/glocalfileoutputstream.c:609 gio/glocalfileoutputstream.c:1239
 #, c-format
 msgid "Error truncating file: %s"
 msgstr "Помилка при обрізанні файла: %s"
 
 #: gio/glocalfileoutputstream.c:662 gio/glocalfileoutputstream.c:907
-#: gio/glocalfileoutputstream.c:1218 gio/gsubprocess.c:226
+#: gio/glocalfileoutputstream.c:1220 gio/gsubprocess.c:229
 #, c-format
 msgid "Error opening file “%s”: %s"
 msgstr "Помилка при відкритті файла «%s»: %s"
@@ -3356,7 +3379,7 @@ msgstr "Файл був змінений іншою програмою"
 msgid "Error removing old file: %s"
 msgstr "Помилка при видаленні старого файла: %s"
 
-#: gio/gmemoryinputstream.c:474 gio/gmemoryoutputstream.c:772
+#: gio/gmemoryinputstream.c:474 gio/gmemoryoutputstream.c:762
 msgid "Invalid GSeekType supplied"
 msgstr "Вказано неправильний GSeekType"
 
@@ -3368,15 +3391,15 @@ msgstr "Неправильний тип операції зміни позиці
 msgid "Cannot truncate GMemoryInputStream"
 msgstr "Не можна усікати GMemoryInputStream"
 
-#: gio/gmemoryoutputstream.c:567
+#: gio/gmemoryoutputstream.c:568
 msgid "Memory output stream not resizable"
 msgstr "Не можна змінювати розмір потоку виводу у пам'ять"
 
-#: gio/gmemoryoutputstream.c:583
+#: gio/gmemoryoutputstream.c:584
 msgid "Failed to resize memory output stream"
 msgstr "Помилка при зміні розміру потоку виводу у пам'ять"
 
-#: gio/gmemoryoutputstream.c:673
+#: gio/gmemoryoutputstream.c:663
 msgid ""
 "Amount of memory required to process the write is larger than available "
 "address space"
@@ -3384,11 +3407,11 @@ msgstr ""
 "Кількість пам'яті, потрібна для процесу запису, більша ніж доступний "
 "адресний простір"
 
-#: gio/gmemoryoutputstream.c:782
+#: gio/gmemoryoutputstream.c:772
 msgid "Requested seek before the beginning of the stream"
 msgstr "Виконувати переміщення на початок потоку"
 
-#: gio/gmemoryoutputstream.c:797
+#: gio/gmemoryoutputstream.c:787
 msgid "Requested seek beyond the end of the stream"
 msgstr "Виконувати переміщення на кінець потоку"
 
@@ -3496,18 +3519,22 @@ msgstr "Сума векторів, яку передано до %s, є надт
 msgid "Source stream is already closed"
 msgstr "Вхідний потік вже закритий"
 
-#: gio/gresolver.c:386 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
+#. Translators: the first placeholder is a domain name, the
+#. * second is an error message
+#: gio/gresolver.c:401 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
+#: gio/gthreadedresolver.c:780 gio/gthreadedresolver.c:804
+#: gio/gthreadedresolver.c:829 gio/gthreadedresolver.c:844
 #, c-format
 msgid "Error resolving “%s”: %s"
 msgstr "Помилка перетворення назви на адресу «%s»: %s"
 
 #. Translators: The placeholder is for a function name.
-#: gio/gresolver.c:455 gio/gresolver.c:615
+#: gio/gresolver.c:470 gio/gresolver.c:630
 #, c-format
 msgid "%s not implemented"
 msgstr "%s не реалізовано"
 
-#: gio/gresolver.c:984 gio/gresolver.c:1036
+#: gio/gresolver.c:999 gio/gresolver.c:1051
 msgid "Invalid domain"
 msgstr "Некоректний домен"
 
@@ -3622,7 +3649,7 @@ msgstr ""
 msgid "  SECTION   An (optional) elf section name\n"
 msgstr "  РОЗДІЛ    Назва розділу elf (необов'язкова)\n"
 
-#: gio/gresource-tool.c:565 gio/gsettings-tool.c:706
+#: gio/gresource-tool.c:565 gio/gsettings-tool.c:718
 msgid "  COMMAND   The (optional) command to explain\n"
 msgstr "  КОМАНДА   Команда для пояснення (необов'язковий)\n"
 
@@ -3655,7 +3682,7 @@ msgstr "ШЛЯХ"
 msgid "  PATH      A resource path\n"
 msgstr "  ШЛЯХ      Шлях ресурсу\n"
 
-#: gio/gsettings-tool.c:49 gio/gsettings-tool.c:70 gio/gsettings-tool.c:911
+#: gio/gsettings-tool.c:49 gio/gsettings-tool.c:70 gio/gsettings-tool.c:923
 #, c-format
 msgid "No such schema “%s”\n"
 msgstr "Немає схеми «%s»\n"
@@ -3686,35 +3713,35 @@ msgstr "Шлях повинен закінчуватися символом ко
 msgid "Path must not contain two adjacent slashes (//)\n"
 msgstr "У шляху не повинно бути дві стоячих поряд косих рисок (//)\n"
 
-#: gio/gsettings-tool.c:541
+#: gio/gsettings-tool.c:553
 msgid "The provided value is outside of the valid range\n"
 msgstr "Надана величина лежить поза діапазоном припустимих значень\n"
 
-#: gio/gsettings-tool.c:548
+#: gio/gsettings-tool.c:560
 msgid "The key is not writable\n"
 msgstr "Ключ недоступний для запису\n"
 
-#: gio/gsettings-tool.c:584
+#: gio/gsettings-tool.c:596
 msgid "List the installed (non-relocatable) schemas"
 msgstr "Перелік встановлених (непереміщуваних) схем"
 
-#: gio/gsettings-tool.c:590
+#: gio/gsettings-tool.c:602
 msgid "List the installed relocatable schemas"
 msgstr "Перелік встановлених переміщуваних схем"
 
-#: gio/gsettings-tool.c:596
+#: gio/gsettings-tool.c:608
 msgid "List the keys in SCHEMA"
 msgstr "Перелік ключів у СХЕМІ"
 
-#: gio/gsettings-tool.c:597 gio/gsettings-tool.c:603 gio/gsettings-tool.c:646
+#: gio/gsettings-tool.c:609 gio/gsettings-tool.c:615 gio/gsettings-tool.c:658
 msgid "SCHEMA[:PATH]"
 msgstr "СХЕМА[:ШЛЯХ]"
 
-#: gio/gsettings-tool.c:602
+#: gio/gsettings-tool.c:614
 msgid "List the children of SCHEMA"
 msgstr "Перелік нащадків СХЕМИ"
 
-#: gio/gsettings-tool.c:608
+#: gio/gsettings-tool.c:620
 msgid ""
 "List keys and values, recursively\n"
 "If no SCHEMA is given, list all keys\n"
@@ -3722,48 +3749,48 @@ msgstr ""
 "Перерахувати ключі і значення рекурсивно\n"
 "Якщо вказана СХЕМА, то перерахувати усі ключі\n"
 
-#: gio/gsettings-tool.c:610
+#: gio/gsettings-tool.c:622
 msgid "[SCHEMA[:PATH]]"
 msgstr "[СХЕМА[:ШЛЯХ]]"
 
-#: gio/gsettings-tool.c:615
+#: gio/gsettings-tool.c:627
 msgid "Get the value of KEY"
 msgstr "Отримати значення КЛЮЧА"
 
-#: gio/gsettings-tool.c:616 gio/gsettings-tool.c:622 gio/gsettings-tool.c:628
-#: gio/gsettings-tool.c:640 gio/gsettings-tool.c:652
+#: gio/gsettings-tool.c:628 gio/gsettings-tool.c:634 gio/gsettings-tool.c:640
+#: gio/gsettings-tool.c:652 gio/gsettings-tool.c:664
 msgid "SCHEMA[:PATH] KEY"
 msgstr "СХЕМА[:ШЛЯХ] КЛЮЧ"
 
-#: gio/gsettings-tool.c:621
+#: gio/gsettings-tool.c:633
 msgid "Query the range of valid values for KEY"
 msgstr "Запитати діапазон припустимих значень КЛЮЧА"
 
-#: gio/gsettings-tool.c:627
+#: gio/gsettings-tool.c:639
 msgid "Query the description for KEY"
 msgstr "Запитати опис ключа КЛЮЧ"
 
-#: gio/gsettings-tool.c:633
+#: gio/gsettings-tool.c:645
 msgid "Set the value of KEY to VALUE"
 msgstr "Привласнити величину ЗНАЧЕННЯ КЛЮЧУ"
 
-#: gio/gsettings-tool.c:634
+#: gio/gsettings-tool.c:646
 msgid "SCHEMA[:PATH] KEY VALUE"
 msgstr "СХЕМА[:ШЛЯХ] КЛЮЧ ЗНАЧЕННЯ"
 
-#: gio/gsettings-tool.c:639
+#: gio/gsettings-tool.c:651
 msgid "Reset KEY to its default value"
 msgstr "Призначити КЛЮЧУ його типове значення"
 
-#: gio/gsettings-tool.c:645
+#: gio/gsettings-tool.c:657
 msgid "Reset all keys in SCHEMA to their defaults"
 msgstr "Скинути усі ключі у СХЕМІ у їх типові значення"
 
-#: gio/gsettings-tool.c:651
+#: gio/gsettings-tool.c:663
 msgid "Check if KEY is writable"
 msgstr "Перевірити, що КЛЮЧ доступний для запису"
 
-#: gio/gsettings-tool.c:657
+#: gio/gsettings-tool.c:669
 msgid ""
 "Monitor KEY for changes.\n"
 "If no KEY is specified, monitor all keys in SCHEMA.\n"
@@ -3773,11 +3800,11 @@ msgstr ""
 "Якщо КЛЮЧ не вказано, то стежити за усіма ключами СХЕМИ.\n"
 "Для зупинки стеження використовуйте ^C.\n"
 
-#: gio/gsettings-tool.c:660
+#: gio/gsettings-tool.c:672
 msgid "SCHEMA[:PATH] [KEY]"
 msgstr "СХЕМА[:ШЛЯХ] [КЛЮЧ]"
 
-#: gio/gsettings-tool.c:672
+#: gio/gsettings-tool.c:684
 msgid ""
 "Usage:\n"
 "  gsettings --version\n"
@@ -3826,7 +3853,7 @@ msgstr ""
 "КОМАНДА».\n"
 "\n"
 
-#: gio/gsettings-tool.c:696
+#: gio/gsettings-tool.c:708
 #, c-format
 msgid ""
 "Usage:\n"
@@ -3841,11 +3868,11 @@ msgstr ""
 "%s\n"
 "\n"
 
-#: gio/gsettings-tool.c:702
+#: gio/gsettings-tool.c:714
 msgid "  SCHEMADIR A directory to search for additional schemas\n"
 msgstr "  КАТ_СХЕМ  Каталог для пошуку додаткових схем\n"
 
-#: gio/gsettings-tool.c:710
+#: gio/gsettings-tool.c:722
 msgid ""
 "  SCHEMA    The name of the schema\n"
 "  PATH      The path, for relocatable schemas\n"
@@ -3853,218 +3880,218 @@ msgstr ""
 "  СХЕМА     Ідентифікатор схеми\n"
 "  ШЛЯХ      Шлях, для переміщуваних схем\n"
 
-#: gio/gsettings-tool.c:715
+#: gio/gsettings-tool.c:727
 msgid "  KEY       The (optional) key within the schema\n"
 msgstr "  КЛЮЧ      (Необов'язковий) ключ схеми\n"
 
-#: gio/gsettings-tool.c:719
+#: gio/gsettings-tool.c:731
 msgid "  KEY       The key within the schema\n"
 msgstr "  КЛЮЧ      Ключ схеми\n"
 
-#: gio/gsettings-tool.c:723
+#: gio/gsettings-tool.c:735
 msgid "  VALUE     The value to set\n"
 msgstr "  ЗНАЧЕННЯ  Значення, що привласнюється\n"
 
-#: gio/gsettings-tool.c:778
+#: gio/gsettings-tool.c:790
 #, c-format
 msgid "Could not load schemas from %s: %s\n"
 msgstr "Не вдалося завантажити схеми з «%s»: %s\n"
 
-#: gio/gsettings-tool.c:790
+#: gio/gsettings-tool.c:802
 msgid "No schemas installed\n"
 msgstr "Схем не встановлено\n"
 
-#: gio/gsettings-tool.c:869
+#: gio/gsettings-tool.c:881
 msgid "Empty schema name given\n"
 msgstr "Вказано порожню назву схеми\n"
 
-#: gio/gsettings-tool.c:924
+#: gio/gsettings-tool.c:936
 #, c-format
 msgid "No such key “%s”\n"
 msgstr "Немає ключа «%s»\n"
 
-#: gio/gsocket.c:413
+#: gio/gsocket.c:417
 msgid "Invalid socket, not initialized"
 msgstr "Неправильний сокет, не ініціалізований"
 
-#: gio/gsocket.c:420
+#: gio/gsocket.c:424
 #, c-format
 msgid "Invalid socket, initialization failed due to: %s"
 msgstr "Неправильний сокет, помилка ініціалізації через : %s"
 
-#: gio/gsocket.c:428
+#: gio/gsocket.c:432
 msgid "Socket is already closed"
 msgstr "Сокет вже закритий"
 
-#: gio/gsocket.c:443 gio/gsocket.c:3190 gio/gsocket.c:4420 gio/gsocket.c:4478
+#: gio/gsocket.c:447 gio/gsocket.c:3194 gio/gsocket.c:4427 gio/gsocket.c:4485
 msgid "Socket I/O timed out"
 msgstr "Перевищено час очікування вводу-виводу сокета"
 
-#: gio/gsocket.c:578
+#: gio/gsocket.c:582
 #, c-format
 msgid "creating GSocket from fd: %s"
 msgstr "створення GSocket з fd: %s"
 
-#: gio/gsocket.c:607 gio/gsocket.c:671 gio/gsocket.c:678
+#: gio/gsocket.c:611 gio/gsocket.c:675 gio/gsocket.c:682
 #, c-format
 msgid "Unable to create socket: %s"
 msgstr "Не вдалося створити сокет: %s"
 
-#: gio/gsocket.c:671
+#: gio/gsocket.c:675
 msgid "Unknown family was specified"
 msgstr "Вказано невідому родину"
 
-#: gio/gsocket.c:678
+#: gio/gsocket.c:682
 msgid "Unknown protocol was specified"
 msgstr "Вказано невідомий протокол"
 
-#: gio/gsocket.c:1169
+#: gio/gsocket.c:1173
 #, c-format
 msgid "Cannot use datagram operations on a non-datagram socket."
 msgstr ""
 "Неможливо скористатися операціями із датаграмами на сокеті без датаграм."
 
-#: gio/gsocket.c:1186
+#: gio/gsocket.c:1190
 #, c-format
 msgid "Cannot use datagram operations on a socket with a timeout set."
 msgstr ""
 "Неможливо скористатися операціями із датаграмами на сокеті із встановленим "
 "часом очікування."
 
-#: gio/gsocket.c:1993
+#: gio/gsocket.c:1997
 #, c-format
 msgid "could not get local address: %s"
 msgstr "не вдається отримати локальну адресу: %s"
 
-#: gio/gsocket.c:2039
+#: gio/gsocket.c:2043
 #, c-format
 msgid "could not get remote address: %s"
 msgstr "не вдається отримати віддалену адресу: %s"
 
-#: gio/gsocket.c:2105
+#: gio/gsocket.c:2109
 #, c-format
 msgid "could not listen: %s"
 msgstr "не вдається прослухати: %s"
 
-#: gio/gsocket.c:2209
+#: gio/gsocket.c:2213
 #, c-format
 msgid "Error binding to address %s: %s"
 msgstr "Помилка прив'язування до адреси %s: %s"
 
-#: gio/gsocket.c:2385 gio/gsocket.c:2422 gio/gsocket.c:2532 gio/gsocket.c:2557
-#: gio/gsocket.c:2620 gio/gsocket.c:2678 gio/gsocket.c:2696
+#: gio/gsocket.c:2389 gio/gsocket.c:2426 gio/gsocket.c:2536 gio/gsocket.c:2561
+#: gio/gsocket.c:2624 gio/gsocket.c:2682 gio/gsocket.c:2700
 #, c-format
 msgid "Error joining multicast group: %s"
 msgstr "Помилка при вступі до мультикастової групи: %s"
 
-#: gio/gsocket.c:2386 gio/gsocket.c:2423 gio/gsocket.c:2533 gio/gsocket.c:2558
-#: gio/gsocket.c:2621 gio/gsocket.c:2679 gio/gsocket.c:2697
+#: gio/gsocket.c:2390 gio/gsocket.c:2427 gio/gsocket.c:2537 gio/gsocket.c:2562
+#: gio/gsocket.c:2625 gio/gsocket.c:2683 gio/gsocket.c:2701
 #, c-format
 msgid "Error leaving multicast group: %s"
 msgstr "Помилка при виході з мультикастової групи: %s"
 
-#: gio/gsocket.c:2387
+#: gio/gsocket.c:2391
 msgid "No support for source-specific multicast"
 msgstr "Відсутня підтримка мультикаста по джерелу"
 
-#: gio/gsocket.c:2534
+#: gio/gsocket.c:2538
 msgid "Unsupported socket family"
 msgstr "Непідтримуване сімейство сокетів"
 
-#: gio/gsocket.c:2559
+#: gio/gsocket.c:2563
 msgid "source-specific not an IPv4 address"
 msgstr "source-specific не є адресою IPv4"
 
-#: gio/gsocket.c:2583
+#: gio/gsocket.c:2587
 #, c-format
 msgid "Interface name too long"
 msgstr "Назва інтерфейсу є надто довгою"
 
-#: gio/gsocket.c:2596 gio/gsocket.c:2646
+#: gio/gsocket.c:2600 gio/gsocket.c:2650
 #, c-format
 msgid "Interface not found: %s"
 msgstr "Не знайдено інтерфейсу: %s"
 
-#: gio/gsocket.c:2622
+#: gio/gsocket.c:2626
 msgid "No support for IPv4 source-specific multicast"
 msgstr ""
 "Підтримки специфічної для джерела неспрямованої трансляції для IPv4 не "
 "передбачено"
 
-#: gio/gsocket.c:2680
+#: gio/gsocket.c:2684
 msgid "No support for IPv6 source-specific multicast"
 msgstr ""
 "Підтримки специфічної для джерела неспрямованої трансляції для IPv6 не "
 "передбачено"
 
-#: gio/gsocket.c:2889
+#: gio/gsocket.c:2893
 #, c-format
 msgid "Error accepting connection: %s"
 msgstr "Помилка при прийнятті з'єднання: %s"
 
-#: gio/gsocket.c:3015
+#: gio/gsocket.c:3019
 msgid "Connection in progress"
 msgstr "З'єднання триває"
 
-#: gio/gsocket.c:3066
+#: gio/gsocket.c:3070
 msgid "Unable to get pending error: "
 msgstr "Не вдалося отримати помилку очікування: "
 
-#: gio/gsocket.c:3255
+#: gio/gsocket.c:3259
 #, c-format
 msgid "Error receiving data: %s"
 msgstr "Помилка при отриманні даних: %s"
 
-#: gio/gsocket.c:3452
+#: gio/gsocket.c:3456
 #, c-format
 msgid "Error sending data: %s"
 msgstr "Помилка при надсиланні даних: %s"
 
-#: gio/gsocket.c:3639
+#: gio/gsocket.c:3643
 #, c-format
 msgid "Unable to shutdown socket: %s"
 msgstr "Не вдалося вимкнути сокет: %s"
 
-#: gio/gsocket.c:3720
+#: gio/gsocket.c:3724
 #, c-format
 msgid "Error closing socket: %s"
 msgstr "Помилка при закриванні сокету: %s"
 
-#: gio/gsocket.c:4413
+#: gio/gsocket.c:4420
 #, c-format
 msgid "Waiting for socket condition: %s"
 msgstr "Очікується умова сокету: %s"
 
-#: gio/gsocket.c:4804 gio/gsocket.c:4820 gio/gsocket.c:4833
+#: gio/gsocket.c:4810 gio/gsocket.c:4826 gio/gsocket.c:4839
 #, c-format
 msgid "Unable to send message: %s"
 msgstr "Не вдалося надіслати повідомлення: %s"
 
-#: gio/gsocket.c:4805 gio/gsocket.c:4821 gio/gsocket.c:4834
+#: gio/gsocket.c:4811 gio/gsocket.c:4827 gio/gsocket.c:4840
 msgid "Message vectors too large"
 msgstr "Вектори повідомлення є надто великими"
 
-#: gio/gsocket.c:4850 gio/gsocket.c:4852 gio/gsocket.c:4999 gio/gsocket.c:5084
-#: gio/gsocket.c:5262 gio/gsocket.c:5302 gio/gsocket.c:5304
+#: gio/gsocket.c:4856 gio/gsocket.c:4858 gio/gsocket.c:5005 gio/gsocket.c:5090
+#: gio/gsocket.c:5268 gio/gsocket.c:5308 gio/gsocket.c:5310
 #, c-format
 msgid "Error sending message: %s"
 msgstr "Помилка при надсиланні повідомлення: %s"
 
-#: gio/gsocket.c:5026
+#: gio/gsocket.c:5032
 msgid "GSocketControlMessage not supported on Windows"
 msgstr "GSocketControlMessage не підтримується у windows"
 
-#: gio/gsocket.c:5495 gio/gsocket.c:5571 gio/gsocket.c:5797
+#: gio/gsocket.c:5505 gio/gsocket.c:5581 gio/gsocket.c:5807
 #, c-format
 msgid "Error receiving message: %s"
 msgstr "Помилка при отриманні повідомлення: %s"
 
-#: gio/gsocket.c:6070 gio/gsocket.c:6081 gio/gsocket.c:6127
+#: gio/gsocket.c:6090 gio/gsocket.c:6101 gio/gsocket.c:6164
 #, c-format
 msgid "Unable to read socket credentials: %s"
 msgstr "Не вдалося прочитати повноваження сокета: %s"
 
-#: gio/gsocket.c:6136
+#: gio/gsocket.c:6173
 msgid "g_socket_get_credentials not implemented for this OS"
 msgstr "Функція g_socket_get_credentials не реалізована у цій ОС"
 
@@ -4082,13 +4109,13 @@ msgstr "Не вдалося під'єднатися до %s: "
 msgid "Could not connect: "
 msgstr "Не вдалося під'єднатися до: "
 
-#: gio/gsocketclient.c:1162 gio/gsocketclient.c:1749
+#: gio/gsocketclient.c:1202 gio/gsocketclient.c:1793
 msgid "Proxying over a non-TCP connection is not supported."
 msgstr ""
 "Підтримки передавання даних за допомогою проксі-сервера через не-TCP "
 "з'єднання не передбачено."
 
-#: gio/gsocketclient.c:1194 gio/gsocketclient.c:1778
+#: gio/gsocketclient.c:1234 gio/gsocketclient.c:1822
 #, c-format
 msgid "Proxy protocol “%s” is not supported."
 msgstr "Підтримки протоколу проксі «%s» не передбачено."
@@ -4190,7 +4217,7 @@ msgstr "Проксі SOCKSv5 не підтримує пропонований т
 msgid "Unknown SOCKSv5 proxy error."
 msgstr "Невідома помилка проксі SOCKSv5."
 
-#: gio/gtestdbus.c:612 glib/gspawn-win32.c:311
+#: gio/gtestdbus.c:612 glib/gspawn-win32.c:314
 #, c-format
 msgid "Failed to create pipe for communicating with child process (%s)"
 msgstr "Помилка створення каналу для обміну з дочірнім процесом (%s)"
@@ -4214,44 +4241,69 @@ msgstr "Не знайдено коректних адрес"
 msgid "Error reverse-resolving “%s”: %s"
 msgstr "Помилка зворотного визначення назви за адресою «%s»: %s"
 
-#: gio/gthreadedresolver.c:676 gio/gthreadedresolver.c:755
-#: gio/gthreadedresolver.c:853 gio/gthreadedresolver.c:903
+#. Translators: the placeholder is a DNS record type, such as ‘MX’ or ‘SRV’
+#: gio/gthreadedresolver.c:550 gio/gthreadedresolver.c:572
+#: gio/gthreadedresolver.c:610 gio/gthreadedresolver.c:657
+#: gio/gthreadedresolver.c:686 gio/gthreadedresolver.c:698
+#, c-format
+msgid "Error parsing DNS %s record: malformed DNS packet"
+msgstr ""
+"Помилка під час спроби обробити запис DNS %s: помилкове форматування пакета"
+" DNS"
+
+#: gio/gthreadedresolver.c:756 gio/gthreadedresolver.c:893
+#: gio/gthreadedresolver.c:991 gio/gthreadedresolver.c:1041
 #, c-format
 msgid "No DNS record of the requested type for “%s”"
 msgstr "Немає запису DNS з запитуваним типом «%s»"
 
-#: gio/gthreadedresolver.c:681 gio/gthreadedresolver.c:858
+#: gio/gthreadedresolver.c:761 gio/gthreadedresolver.c:996
 #, c-format
 msgid "Temporarily unable to resolve “%s”"
 msgstr "Тимчасово неможливо розв'язати «%s»"
 
-#: gio/gthreadedresolver.c:686 gio/gthreadedresolver.c:863
-#: gio/gthreadedresolver.c:973
+#: gio/gthreadedresolver.c:766 gio/gthreadedresolver.c:1001
+#: gio/gthreadedresolver.c:1111
 #, c-format
 msgid "Error resolving “%s”"
 msgstr "Помилка при розв'язанні імені «%s»"
 
-#: gio/gtlscertificate.c:431
+#: gio/gthreadedresolver.c:780 gio/gthreadedresolver.c:804
+#: gio/gthreadedresolver.c:829 gio/gthreadedresolver.c:844
+msgid "Malformed DNS packet"
+msgstr "Помилкове форматування пакета DNS"
+
+#: gio/gthreadedresolver.c:886
+#, c-format
+#| msgid "Failed to read from file “%s”: %s"
+msgid "Failed to parse DNS response for “%s”: "
+msgstr "Не вдалося обробити відповідь DNS для «%s»: "
+
+#: gio/gtlscertificate.c:478
 msgid "No PEM-encoded private key found"
 msgstr "Не знайдено секретний ключ у форматі PEM"
 
-#: gio/gtlscertificate.c:441
+#: gio/gtlscertificate.c:488
 msgid "Cannot decrypt PEM-encoded private key"
 msgstr "Не вдалося розшифрувати секретний ключ у форматі PEM"
 
-#: gio/gtlscertificate.c:452
+#: gio/gtlscertificate.c:499
 msgid "Could not parse PEM-encoded private key"
 msgstr "Не вдалося розібрати секретний ключ у форматі PEM"
 
-#: gio/gtlscertificate.c:479
+#: gio/gtlscertificate.c:526
 msgid "No PEM-encoded certificate found"
 msgstr "Не знайдено сертифікат у форматі PEM"
 
-#: gio/gtlscertificate.c:488
+#: gio/gtlscertificate.c:535
 msgid "Could not parse PEM-encoded certificate"
 msgstr "Не вдалося розібрати сертифікат у форматі PEM"
 
-#: gio/gtlscertificate.c:844
+#: gio/gtlscertificate.c:796
+msgid "The current TLS backend does not support PKCS #12"
+msgstr "У поточному модулі обробки TLS не передбачено підтримки PKCS #12"
+
+#: gio/gtlscertificate.c:1013
 msgid "This GTlsBackend does not support creating PKCS #11 certificates"
 msgstr ""
 "У цьому GTlsBackend не передбачено підтримки створення сертифікатів PKCS #11"
@@ -4278,8 +4330,12 @@ msgstr ""
 msgid "The password entered is incorrect."
 msgstr "Уведено неправильний пароль."
 
+#: gio/gunixconnection.c:125
+msgid "Sending FD is not supported"
+msgstr "Підтримки надсилання дескриптора файла не передбачено"
+
 # c-format
-#: gio/gunixconnection.c:166 gio/gunixconnection.c:579
+#: gio/gunixconnection.c:178 gio/gunixconnection.c:596
 #, c-format
 msgid "Expecting 1 control message, got %d"
 msgid_plural "Expecting 1 control message, got %d"
@@ -4287,11 +4343,11 @@ msgstr[0] "Очікується 1 контрольне повідомлення,
 msgstr[1] "Очікується 1 контрольне повідомлення, отримано %d"
 msgstr[2] "Очікується 1 контрольне повідомлення, отримано %d"
 
-#: gio/gunixconnection.c:182 gio/gunixconnection.c:591
+#: gio/gunixconnection.c:194 gio/gunixconnection.c:608
 msgid "Unexpected type of ancillary data"
 msgstr "Неочікуваний тип допоміжних даних"
 
-#: gio/gunixconnection.c:200
+#: gio/gunixconnection.c:212
 #, c-format
 msgid "Expecting one fd, but got %d\n"
 msgid_plural "Expecting one fd, but got %d\n"
@@ -4299,37 +4355,41 @@ msgstr[0] "Очікується один файловий дескриптор 
 msgstr[1] "Очікується один файловий дескриптор але отримано %d\n"
 msgstr[2] "Очікується один файловий дескриптор але отримано %d\n"
 
-#: gio/gunixconnection.c:219
+#: gio/gunixconnection.c:231
 msgid "Received invalid fd"
 msgstr "Отримано неправильний fd"
 
-#: gio/gunixconnection.c:363
+#: gio/gunixconnection.c:238
+msgid "Receiving FD is not supported"
+msgstr "Підтримки отримання дескриптора файла не передбачено"
+
+#: gio/gunixconnection.c:380
 msgid "Error sending credentials: "
 msgstr "Сталася помилка при відправленні мандату:"
 
-#: gio/gunixconnection.c:520
+#: gio/gunixconnection.c:537
 #, c-format
 msgid "Error checking if SO_PASSCRED is enabled for socket: %s"
 msgstr "Сталася помилка при перевірці вмикання SO_PASSCRED для сокета: %s"
 
-#: gio/gunixconnection.c:536
+#: gio/gunixconnection.c:553
 #, c-format
 msgid "Error enabling SO_PASSCRED: %s"
 msgstr "Сталася помилка при вмиканні SO_PASSCRED: %s"
 
-#: gio/gunixconnection.c:565
+#: gio/gunixconnection.c:582
 msgid ""
 "Expecting to read a single byte for receiving credentials but read zero bytes"
 msgstr ""
 "Очікувалося прочитати один байт ідентифікаційної інформації (credentials), "
 "але не прочитано жодного байту"
 
-#: gio/gunixconnection.c:605
+#: gio/gunixconnection.c:622
 #, c-format
 msgid "Not expecting control message, but got %d"
 msgstr "Контрольне повідомлення не очікувалося, але отримано %d"
 
-#: gio/gunixconnection.c:630
+#: gio/gunixconnection.c:647
 #, c-format
 msgid "Error while disabling SO_PASSCRED: %s"
 msgstr "Сталася помилка при вимкненні SO_PASSCRED: %s"
@@ -4345,7 +4405,7 @@ msgstr "Помилка при читанні з файлового дескри
 msgid "Error closing file descriptor: %s"
 msgstr "Помилка при закритті файлового дескриптора: %s"
 
-#: gio/gunixmounts.c:2785 gio/gunixmounts.c:2838
+#: gio/gunixmounts.c:2809 gio/gunixmounts.c:2862
 msgid "Filesystem root"
 msgstr "Корінь файлової системи"
 
@@ -4356,7 +4416,7 @@ msgstr "Корінь файлової системи"
 msgid "Error writing to file descriptor: %s"
 msgstr "Помилка при запису у файловий дескриптор: %s"
 
-#: gio/gunixsocketaddress.c:244
+#: gio/gunixsocketaddress.c:251
 msgid "Abstract UNIX domain socket addresses not supported on this system"
 msgstr ""
 "Абстрактні адреси доменних сокетів UNIX не підтримуються на цій системі"
@@ -4509,8 +4569,8 @@ msgstr "Помилка розгортання рядка виконуваног
 msgid "Unrepresentable character in conversion input"
 msgstr "Невідтворюваний символ у вхідних даних перетворення"
 
-#: glib/gconvert.c:495 glib/gutf8.c:871 glib/gutf8.c:1083 glib/gutf8.c:1220
-#: glib/gutf8.c:1324
+#: glib/gconvert.c:495 glib/gutf8.c:886 glib/gutf8.c:1099 glib/gutf8.c:1236
+#: glib/gutf8.c:1340
 msgid "Partial character sequence at end of input"
 msgstr "Незавершена символьна послідовність на кінці вводу"
 
@@ -5078,15 +5138,15 @@ msgstr ""
 "Не можна виконувати безпосереднє зчитування у функції "
 "g_io_channel_read_to_end"
 
-#: glib/gkeyfile.c:791
+#: glib/gkeyfile.c:794
 msgid "Valid key file could not be found in search dirs"
 msgstr "Не вдалося знайти правильний ключовий файл у каталогах ключів"
 
-#: glib/gkeyfile.c:828
+#: glib/gkeyfile.c:831
 msgid "Not a regular file"
 msgstr "Не є звичайним файлом"
 
-#: glib/gkeyfile.c:1283
+#: glib/gkeyfile.c:1289
 #, c-format
 msgid ""
 "Key file contains line “%s” which is not a key-value pair, group, or comment"
@@ -5094,52 +5154,52 @@ msgstr ""
 "Файл ключа містить рядок «%s», який не є парою ключ-значення, групою або "
 "коментарем"
 
-#: glib/gkeyfile.c:1340
+#: glib/gkeyfile.c:1346
 #, c-format
 msgid "Invalid group name: %s"
 msgstr "Неправильна назва групи: %s"
 
-#: glib/gkeyfile.c:1362
+#: glib/gkeyfile.c:1370
 msgid "Key file does not start with a group"
 msgstr "Ключовий файл не починається з групи"
 
-#: glib/gkeyfile.c:1388
+#: glib/gkeyfile.c:1394
 #, c-format
-msgid "Invalid key name: %s"
-msgstr "Неправильна назва ключа: %s"
+msgid "Invalid key name: %.*s"
+msgstr "Неправильна назва ключа: %.*s"
 
-#: glib/gkeyfile.c:1415
+#: glib/gkeyfile.c:1422
 #, c-format
 msgid "Key file contains unsupported encoding “%s”"
 msgstr "Файл ключа містить кодування, підтримки якого не передбачено — «%s»"
 
-#: glib/gkeyfile.c:1664 glib/gkeyfile.c:1837 glib/gkeyfile.c:3287
-#: glib/gkeyfile.c:3351 glib/gkeyfile.c:3481 glib/gkeyfile.c:3613
-#: glib/gkeyfile.c:3759 glib/gkeyfile.c:3994 glib/gkeyfile.c:4061
+#: glib/gkeyfile.c:1677 glib/gkeyfile.c:1850 glib/gkeyfile.c:3297
+#: glib/gkeyfile.c:3361 glib/gkeyfile.c:3491 glib/gkeyfile.c:3623
+#: glib/gkeyfile.c:3769 glib/gkeyfile.c:4004 glib/gkeyfile.c:4071
 #, c-format
 msgid "Key file does not have group “%s”"
 msgstr "Файл ключа не містить групи «%s»"
 
-#: glib/gkeyfile.c:1792
+#: glib/gkeyfile.c:1805
 #, c-format
 msgid "Key file does not have key “%s” in group “%s”"
 msgstr "Файл ключа не містить ключ «%s» у групі «%s»"
 
-#: glib/gkeyfile.c:1954 glib/gkeyfile.c:2070
+#: glib/gkeyfile.c:1967 glib/gkeyfile.c:2083
 #, c-format
 msgid "Key file contains key “%s” with value “%s” which is not UTF-8"
 msgstr ""
 "Файл ключа містить ключ «%s» зі значенням «%s», кодування якого не є "
 "кодуванням UTF-8"
 
-#: glib/gkeyfile.c:1974 glib/gkeyfile.c:2090 glib/gkeyfile.c:2529
+#: glib/gkeyfile.c:1987 glib/gkeyfile.c:2103 glib/gkeyfile.c:2542
 #, c-format
 msgid ""
 "Key file contains key “%s” which has a value that cannot be interpreted."
 msgstr ""
 "Ключ «%s» з файла ключів містить значення, яке не вдається проаналізувати."
 
-#: glib/gkeyfile.c:2747 glib/gkeyfile.c:3116
+#: glib/gkeyfile.c:2757 glib/gkeyfile.c:3126
 #, c-format
 msgid ""
 "Key file contains key “%s” in group “%s” which has a value that cannot be "
@@ -5148,36 +5208,36 @@ msgstr ""
 "Файл ключів містить ключ «%s» у групі «%s», значення якого не вдалося "
 "розпізнати."
 
-#: glib/gkeyfile.c:2825 glib/gkeyfile.c:2902
+#: glib/gkeyfile.c:2835 glib/gkeyfile.c:2912
 #, c-format
 msgid "Key “%s” in group “%s” has value “%s” where %s was expected"
 msgstr "Значення ключа «%s» у групі «%s» дорівнює «%s», але очікувалося «%s»"
 
-#: glib/gkeyfile.c:4304
+#: glib/gkeyfile.c:4324
 msgid "Key file contains escape character at end of line"
 msgstr "Ключовий файл містить escape-символ наприкінці рядка"
 
-#: glib/gkeyfile.c:4326
+#: glib/gkeyfile.c:4346
 #, c-format
 msgid "Key file contains invalid escape sequence “%s”"
 msgstr "Файл ключа містить неправильну послідовність екранування «%s»"
 
-#: glib/gkeyfile.c:4470
+#: glib/gkeyfile.c:4491
 #, c-format
 msgid "Value “%s” cannot be interpreted as a number."
 msgstr "Не вдалося розібрати значення «%s» як число."
 
-#: glib/gkeyfile.c:4484
+#: glib/gkeyfile.c:4505
 #, c-format
 msgid "Integer value “%s” out of range"
 msgstr "Числове ціле значення «%s» поза межами діапазону"
 
-#: glib/gkeyfile.c:4517
+#: glib/gkeyfile.c:4538
 #, c-format
 msgid "Value “%s” cannot be interpreted as a float number."
 msgstr "Значення «%s» не вдалося перетворити на число з рухомою комою."
 
-#: glib/gkeyfile.c:4556
+#: glib/gkeyfile.c:4577
 #, c-format
 msgid "Value “%s” cannot be interpreted as a boolean."
 msgstr "Не вдалося обробити значення «%s» як логічне значення."
@@ -5467,7 +5527,7 @@ msgstr "Помилка розбору параметра %s"
 msgid "Missing argument for %s"
 msgstr "Відсутній аргумент %s"
 
-#: glib/goption.c:2185
+#: glib/goption.c:2184
 #, c-format
 msgid "Unknown option %s"
 msgstr "Невідомий параметр %s"
@@ -5876,121 +5936,131 @@ msgstr "Текст порожній (чи містить лише пропуск
 msgid "Failed to read data from child process (%s)"
 msgstr "Помилка зчитування даних з дочірнього процесу (%s)"
 
-#: glib/gspawn.c:461
+#: glib/gspawn.c:462
 #, c-format
 msgid "Unexpected error in reading data from a child process (%s)"
 msgstr "Неочікувана помилка під час читання даних з дочірнього процесу (%s)"
 
-#: glib/gspawn.c:546
+#: glib/gspawn.c:547
 #, c-format
 msgid "Unexpected error in waitpid() (%s)"
 msgstr "Неочікувана помилка у waitpid() (%s)"
 
-#: glib/gspawn.c:1166 glib/gspawn-win32.c:1407
+#: glib/gspawn.c:1175 glib/gspawn-win32.c:1438
 #, c-format
 msgid "Child process exited with code %ld"
 msgstr "Дочірній процес закінчився з кодом %ld"
 
-#: glib/gspawn.c:1174
+#: glib/gspawn.c:1183
 #, c-format
 msgid "Child process killed by signal %ld"
 msgstr "Дочірній процес вбитий за сигналом %ld"
 
-#: glib/gspawn.c:1181
+#: glib/gspawn.c:1190
 #, c-format
 msgid "Child process stopped by signal %ld"
 msgstr "Дочірній процес зупинений за сигналом %ld"
 
-#: glib/gspawn.c:1188
+#: glib/gspawn.c:1197
 #, c-format
 msgid "Child process exited abnormally"
 msgstr "Дочірній процес аварійно закінчив роботу"
 
-#: glib/gspawn.c:1864 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
+#: glib/gspawn.c:1890 glib/gspawn-win32.c:353 glib/gspawn-win32.c:361
 #, c-format
 msgid "Failed to read from child pipe (%s)"
 msgstr "Помилка зчитування з дочірнього каналу (%s)"
 
-#: glib/gspawn.c:2166
+#: glib/gspawn.c:2253
 #, c-format
 msgid "Failed to spawn child process “%s” (%s)"
 msgstr "Не вдалося запустити дочірній процес «%s» (%s)"
 
-#: glib/gspawn.c:2283
+#: glib/gspawn.c:2370
 #, c-format
 msgid "Failed to fork (%s)"
 msgstr "Помилка створення процесу (%s)"
 
-#: glib/gspawn.c:2443 glib/gspawn-win32.c:381
+#: glib/gspawn.c:2530 glib/gspawn-win32.c:384
 #, c-format
 msgid "Failed to change to directory “%s” (%s)"
 msgstr "Не вдалося змінити каталог на «%s» (%s)"
 
-#: glib/gspawn.c:2453
+#: glib/gspawn.c:2540
 #, c-format
 msgid "Failed to execute child process “%s” (%s)"
 msgstr "Не вдалося виконати дочірній процес «%s» (%s)"
 
-#: glib/gspawn.c:2463
+#: glib/gspawn.c:2550
 #, c-format
-msgid "Failed to redirect output or input of child process (%s)"
-msgstr "Ð\9fомилка Ð¿ÐµÑ\80енапÑ\80авленнÑ\8f Ð²Ð¸Ð²Ð¾Ð´Ñ\83 Ñ\87и Ð²Ð²Ð¾Ð´Ñ\83 Ð´Ð¾Ñ\87Ñ\96Ñ\80нÑ\8cого Ð¿Ñ\80оÑ\86еÑ\81Ñ\83 (%s)"
+msgid "Failed to open file to remap file descriptor (%s)"
+msgstr "Ð\9dе Ð²Ð´Ð°Ð»Ð¾Ñ\81Ñ\8f Ð²Ñ\96дкÑ\80иÑ\82и Ñ\84айл Ð´Ð»Ñ\8f Ð·Ð¼Ñ\96ни Ð¿Ñ\80ив'Ñ\8fзки Ð´ÐµÑ\81кÑ\80ипÑ\82оÑ\80а Ñ\84айла (%s)"
 
-#: glib/gspawn.c:2472
+#: glib/gspawn.c:2558
+#, c-format
+msgid "Failed to duplicate file descriptor for child process (%s)"
+msgstr "Не вдалося здублювати дескриптор файла для дочірнього процесу (%s)"
+
+#: glib/gspawn.c:2567
 #, c-format
 msgid "Failed to fork child process (%s)"
 msgstr "Помилка запуску дочірнього процесу (%s)"
 
-#: glib/gspawn.c:2480
+#: glib/gspawn.c:2575
 #, c-format
 msgid "Failed to close file descriptor for child process (%s)"
 msgstr "Не вдалося закрити дескриптор файла для дочірнього процесу (%s)"
 
-#: glib/gspawn.c:2488
+#: glib/gspawn.c:2583
 #, c-format
 msgid "Unknown error executing child process “%s”"
 msgstr "Невідома помилка виконання дочірнього процесу «%s»"
 
-#: glib/gspawn.c:2512
+#: glib/gspawn.c:2607
 #, c-format
 msgid "Failed to read enough data from child pid pipe (%s)"
 msgstr "Не вдалося зчитати достатню кількість даних з дочірнього каналу (%s)"
 
-#: glib/gspawn-win32.c:294
+#: glib/gspawn-win32.c:297
 msgid "Failed to read data from child process"
 msgstr "Помилка зчитування даних з дочірнього процесу"
 
-#: glib/gspawn-win32.c:387 glib/gspawn-win32.c:392 glib/gspawn-win32.c:511
+#: glib/gspawn-win32.c:390 glib/gspawn-win32.c:395 glib/gspawn-win32.c:521
 #, c-format
 msgid "Failed to execute child process (%s)"
 msgstr "Помилка виконання дочірнього процесу (%s)"
 
-#: glib/gspawn-win32.c:461
+#: glib/gspawn-win32.c:400
+#, c-format
+msgid "Failed to dup() in child process (%s)"
+msgstr "Не вдалося виконати dup() у дочірньому процесі (%s)"
+
+#: glib/gspawn-win32.c:471
 #, c-format
 msgid "Invalid program name: %s"
 msgstr "Неправильна назва програми: %s"
 
-#: glib/gspawn-win32.c:471 glib/gspawn-win32.c:779
+#: glib/gspawn-win32.c:481 glib/gspawn-win32.c:807
 #, c-format
 msgid "Invalid string in argument vector at %d: %s"
 msgstr "Неправильний рядок у векторі аргументів %d: %s"
 
-#: glib/gspawn-win32.c:482 glib/gspawn-win32.c:794
+#: glib/gspawn-win32.c:492 glib/gspawn-win32.c:823
 #, c-format
 msgid "Invalid string in environment: %s"
 msgstr "Неправильний рядок у середовищі: %s"
 
-#: glib/gspawn-win32.c:775
+#: glib/gspawn-win32.c:803
 #, c-format
 msgid "Invalid working directory: %s"
 msgstr "Неправильний робочий каталог: %s"
 
-#: glib/gspawn-win32.c:837
+#: glib/gspawn-win32.c:868
 #, c-format
 msgid "Failed to execute helper program (%s)"
 msgstr "Не вдалося виконати допоміжну програму (%s)"
 
-#: glib/gspawn-win32.c:1064
+#: glib/gspawn-win32.c:1096
 msgid ""
 "Unexpected error in g_io_channel_win32_poll() reading data from a child "
 "process"
@@ -5998,21 +6068,21 @@ msgstr ""
 "Неочікувана помилка в зчитуванні даних з дочірнього процесу через "
 "g_io_channel_win32_poll() "
 
-#: glib/gstrfuncs.c:3345 glib/gstrfuncs.c:3447
+#: glib/gstrfuncs.c:3351 glib/gstrfuncs.c:3453
 msgid "Empty string is not a number"
 msgstr "Порожній рядок не є числом"
 
-#: glib/gstrfuncs.c:3369
+#: glib/gstrfuncs.c:3375
 #, c-format
 msgid "“%s” is not a signed number"
 msgstr "«%s» не є числом зі знаком"
 
-#: glib/gstrfuncs.c:3379 glib/gstrfuncs.c:3483
+#: glib/gstrfuncs.c:3385 glib/gstrfuncs.c:3489
 #, c-format
 msgid "Number “%s” is out of bounds [%s, %s]"
 msgstr "Число «%s» не належить до діапазону [%s, %s]"
 
-#: glib/gstrfuncs.c:3473
+#: glib/gstrfuncs.c:3479
 #, c-format
 msgid "“%s” is not an unsigned number"
 msgstr "«%s» не є числом без знаку"
@@ -6073,168 +6143,168 @@ msgstr "Адреса не є абсолютною, і не вказано баз
 msgid "Missing ‘=’ and parameter value"
 msgstr "Пропущено «=» і значення параметра"
 
-#: glib/gutf8.c:817
+#: glib/gutf8.c:832
 msgid "Failed to allocate memory"
 msgstr "Не вдалося виділити пам'ять"
 
-#: glib/gutf8.c:950
+#: glib/gutf8.c:965
 msgid "Character out of range for UTF-8"
 msgstr "Символ не входить в набір UTF-8"
 
-#: glib/gutf8.c:1051 glib/gutf8.c:1060 glib/gutf8.c:1190 glib/gutf8.c:1199
-#: glib/gutf8.c:1338 glib/gutf8.c:1435
+#: glib/gutf8.c:1067 glib/gutf8.c:1076 glib/gutf8.c:1206 glib/gutf8.c:1215
+#: glib/gutf8.c:1354 glib/gutf8.c:1451
 msgid "Invalid sequence in conversion input"
 msgstr "Неправильна послідовність у перетворюваному вводі"
 
-#: glib/gutf8.c:1349 glib/gutf8.c:1446
+#: glib/gutf8.c:1365 glib/gutf8.c:1462
 msgid "Character out of range for UTF-16"
 msgstr "Символ не входить в набір UTF-16"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2770
+#: glib/gutils.c:2849
 #, c-format
 msgid "%.1f kB"
 msgstr "%.1f кБ"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2772
+#: glib/gutils.c:2851
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f МБ"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2774
+#: glib/gutils.c:2853
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f ГБ"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2776
+#: glib/gutils.c:2855
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f ТБ"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2778
+#: glib/gutils.c:2857
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f ПБ"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2780
+#: glib/gutils.c:2859
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f ЕБ"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2784
+#: glib/gutils.c:2863
 #, c-format
 msgid "%.1f KiB"
 msgstr "%.1f КіБ"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2786
+#: glib/gutils.c:2865
 #, c-format
 msgid "%.1f MiB"
 msgstr "%.1f МіБ"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2788
+#: glib/gutils.c:2867
 #, c-format
 msgid "%.1f GiB"
 msgstr "%.1f ГіБ"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2790
+#: glib/gutils.c:2869
 #, c-format
 msgid "%.1f TiB"
 msgstr "%.1f ТіБ"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2792
+#: glib/gutils.c:2871
 #, c-format
 msgid "%.1f PiB"
 msgstr "%.1f ПіБ"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2794
+#: glib/gutils.c:2873
 #, c-format
 msgid "%.1f EiB"
 msgstr "%.1f ЕіБ"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2798
+#: glib/gutils.c:2877
 #, c-format
 msgid "%.1f kb"
 msgstr "%.1f кбіт"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2800
+#: glib/gutils.c:2879
 #, c-format
 msgid "%.1f Mb"
 msgstr "%.1f Мбіт"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2802
+#: glib/gutils.c:2881
 #, c-format
 msgid "%.1f Gb"
 msgstr "%.1f Гбіт"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2804
+#: glib/gutils.c:2883
 #, c-format
 msgid "%.1f Tb"
 msgstr "%.1f Тбіт"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2806
+#: glib/gutils.c:2885
 #, c-format
 msgid "%.1f Pb"
 msgstr "%.1f Пбіт"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2808
+#: glib/gutils.c:2887
 #, c-format
 msgid "%.1f Eb"
 msgstr "%.1f Ебіт"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2812
+#: glib/gutils.c:2891
 #, c-format
 msgid "%.1f Kib"
 msgstr "%.1f Кібіт"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2814
+#: glib/gutils.c:2893
 #, c-format
 msgid "%.1f Mib"
 msgstr "%.1f Мібіт"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2816
+#: glib/gutils.c:2895
 #, c-format
 msgid "%.1f Gib"
 msgstr "%.1f Гібіт"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2818
+#: glib/gutils.c:2897
 #, c-format
 msgid "%.1f Tib"
 msgstr "%.1f Тібіт"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2820
+#: glib/gutils.c:2899
 #, c-format
 msgid "%.1f Pib"
 msgstr "%.1f Пібіт"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2822
+#: glib/gutils.c:2901
 #, c-format
 msgid "%.1f Eib"
 msgstr "%.1f Еібіт"
 
-#: glib/gutils.c:2856 glib/gutils.c:2973
+#: glib/gutils.c:2935 glib/gutils.c:3052
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
@@ -6242,7 +6312,7 @@ msgstr[0] "%u байт"
 msgstr[1] "%u байти"
 msgstr[2] "%u байтів"
 
-#: glib/gutils.c:2860
+#: glib/gutils.c:2939
 #, c-format
 msgid "%u bit"
 msgid_plural "%u bits"
@@ -6251,7 +6321,7 @@ msgstr[1] "%u бітів"
 msgstr[2] "%u байтів"
 
 #. Translators: the %s in "%s bytes" will always be replaced by a number.
-#: glib/gutils.c:2927
+#: glib/gutils.c:3006
 #, c-format
 msgid "%s byte"
 msgid_plural "%s bytes"
@@ -6260,7 +6330,7 @@ msgstr[1] "%s байти"
 msgstr[2] "%s байтів"
 
 #. Translators: the %s in "%s bits" will always be replaced by a number.
-#: glib/gutils.c:2932
+#: glib/gutils.c:3011
 #, c-format
 msgid "%s bit"
 msgid_plural "%s bits"
@@ -6273,32 +6343,32 @@ msgstr[2] "%s бітів"
 #. * compatibility.  Users will not see this string unless a program is using this deprecated function.
 #. * Please translate as literally as possible.
 #.
-#: glib/gutils.c:2986
+#: glib/gutils.c:3065
 #, c-format
 msgid "%.1f KB"
 msgstr "%.1f КБ"
 
-#: glib/gutils.c:2991
+#: glib/gutils.c:3070
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f МБ"
 
-#: glib/gutils.c:2996
+#: glib/gutils.c:3075
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f ГБ"
 
-#: glib/gutils.c:3001
+#: glib/gutils.c:3080
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f ТБ"
 
-#: glib/gutils.c:3006
+#: glib/gutils.c:3085
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f ПБ"
 
-#: glib/gutils.c:3011
+#: glib/gutils.c:3090
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f ЕБ"
index 0e63875..4fc0b68 100644 (file)
 # Mingye Wang <arthur2e5@aosc.xyz>, 2015, 2016.
 # Mingcong Bai <jeffbai@aosc.xyz>, 2015, 2016, 2018.
 # Dingzhong Chen <wsxy162@gmail.com>, 2018-2021.
+# lumingzh <lumingzh@qq.com>, 2022.
 #
 msgid ""
 msgstr ""
 "Project-Id-Version: glib master\n"
 "Report-Msgid-Bugs-To: https://gitlab.gnome.org/GNOME/glib/issues\n"
-"POT-Creation-Date: 2021-08-21 08:44+0000\n"
-"PO-Revision-Date: 2021-09-04 13:08-0400\n"
-"Last-Translator: Dingzhong Chen <wsxy162@gmail.com>\n"
+"POT-Creation-Date: 2022-02-14 13:48+0000\n"
+"PO-Revision-Date: 2022-02-15 19:09+0800\n"
+"Last-Translator: lumingzh <lumingzh@qq.com>\n"
 "Language-Team: Chinese - China <i18n-zh@googlegroups.com>\n"
 "Language: zh_CN\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=1; plural=0;\n"
-"X-Generator: Poedit 3.0\n"
+"Plural-Forms: nplurals=1; plural=0\n"
+"X-Generator: Gtranslator 41.0\n"
 
-#: gio/gapplication.c:500
+#: gio/gappinfo.c:333
+msgid "Setting default applications not supported yet"
+msgstr "暂不支持设置默认应用程序"
+
+#: gio/gappinfo.c:366
+msgid "Setting application as last used for type not supported yet"
+msgstr "暂不支持设置上次用来打开文件类型的应用程序"
+
+#: gio/gapplication.c:497
 msgid "GApplication options"
 msgstr "GApplication 选项"
 
-#: gio/gapplication.c:500
+#: gio/gapplication.c:497
 msgid "Show GApplication options"
 msgstr "显示 GApplication 选项"
 
-#: gio/gapplication.c:545
+#: gio/gapplication.c:542
 msgid "Enter GApplication service mode (use from D-Bus service files)"
 msgstr "进入 GApplication 服务模式(从 D-Bus 服务文件中调用)"
 
-#: gio/gapplication.c:557
+#: gio/gapplication.c:554
 msgid "Override the application’s ID"
 msgstr "覆盖应用程序 ID"
 
-#: gio/gapplication.c:569
+#: gio/gapplication.c:566
 msgid "Replace the running instance"
 msgstr "替代运行中的实例"
 
 #: gio/gapplication-tool.c:45 gio/gapplication-tool.c:46 gio/gio-tool.c:227
-#: gio/gresource-tool.c:494 gio/gsettings-tool.c:572
+#: gio/gresource-tool.c:494 gio/gsettings-tool.c:584
 msgid "Print help"
 msgstr "打印帮助"
 
@@ -66,7 +75,7 @@ msgstr "[命令]"
 msgid "Print version"
 msgstr "打印版本"
 
-#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:578
+#: gio/gapplication-tool.c:50 gio/gsettings-tool.c:590
 msgid "Print version information and exit"
 msgstr "打印版本信息并退出"
 
@@ -127,8 +136,8 @@ msgstr "要打印其详细帮助的命令"
 msgid "Application identifier in D-Bus format (eg: org.example.viewer)"
 msgstr "D-Bus 格式的应用程序标识符(比如:org.example.viewer)"
 
-#: gio/gapplication-tool.c:74 gio/glib-compile-resources.c:738
-#: gio/glib-compile-resources.c:744 gio/glib-compile-resources.c:772
+#: gio/gapplication-tool.c:74 gio/glib-compile-resources.c:820
+#: gio/glib-compile-resources.c:826 gio/glib-compile-resources.c:855
 #: gio/gresource-tool.c:501 gio/gresource-tool.c:567
 msgid "FILE"
 msgstr "文件"
@@ -153,7 +162,7 @@ msgstr "参数"
 msgid "Optional parameter to the action invocation, in GVariant format"
 msgstr "可选的操作调用参数,GVariant 格式"
 
-#: gio/gapplication-tool.c:98 gio/gresource-tool.c:532 gio/gsettings-tool.c:664
+#: gio/gapplication-tool.c:98 gio/gresource-tool.c:532 gio/gsettings-tool.c:676
 #, c-format
 msgid ""
 "Unknown command %s\n"
@@ -167,7 +176,7 @@ msgid "Usage:\n"
 msgstr "用法:\n"
 
 #: gio/gapplication-tool.c:116 gio/gresource-tool.c:557
-#: gio/gsettings-tool.c:699
+#: gio/gsettings-tool.c:711
 msgid "Arguments:\n"
 msgstr "参数:\n"
 
@@ -290,7 +299,7 @@ msgstr "流已经关闭"
 msgid "Truncate not supported on base stream"
 msgstr "基流不支持截断"
 
-#: gio/gcancellable.c:319 gio/gdbusconnection.c:1872 gio/gdbusprivate.c:1416
+#: gio/gcancellable.c:319 gio/gdbusconnection.c:1873 gio/gdbusprivate.c:1418
 #: gio/gsimpleasyncresult.c:871 gio/gsimpleasyncresult.c:897
 #, c-format
 msgid "Operation was cancelled"
@@ -311,7 +320,7 @@ msgstr "目标位置没有足够的空间"
 #: gio/gcharsetconverter.c:342 gio/gdatainputstream.c:848
 #: gio/gdatainputstream.c:1266 glib/gconvert.c:449 glib/gconvert.c:879
 #: glib/giochannel.c:1573 glib/giochannel.c:1615 glib/giochannel.c:2470
-#: glib/gutf8.c:875 glib/gutf8.c:1328
+#: glib/gutf8.c:890 glib/gutf8.c:1344
 msgid "Invalid byte sequence in conversion input"
 msgstr "转换输入中有无效的字符序列"
 
@@ -321,7 +330,7 @@ msgstr "转换输入中有无效的字符序列"
 msgid "Error during conversion: %s"
 msgstr "转换过程中出错:%s"
 
-#: gio/gcharsetconverter.c:445 gio/gsocket.c:1143
+#: gio/gcharsetconverter.c:445 gio/gsocket.c:1147
 msgid "Cancellable initialization not supported"
 msgstr "不支持可撤销的初始化"
 
@@ -335,7 +344,7 @@ msgstr "不支持从字符集“%s”到“%s”的转换"
 msgid "Could not open converter from “%s” to “%s”"
 msgstr "无法打开从“%s”到“%s”的转换器"
 
-#: gio/gcontenttype.c:454
+#: gio/gcontenttype.c:470
 #, c-format
 msgid "%s type"
 msgstr "%s 类型"
@@ -349,23 +358,23 @@ msgstr "未知类型"
 msgid "%s filetype"
 msgstr "%s 文件类型"
 
-#: gio/gcredentials.c:323
+#: gio/gcredentials.c:335
 msgid "GCredentials contains invalid data"
 msgstr "GCredentials 包含无效数据"
 
-#: gio/gcredentials.c:383 gio/gcredentials.c:667
+#: gio/gcredentials.c:395 gio/gcredentials.c:686
 msgid "GCredentials is not implemented on this OS"
 msgstr "此操作系统上没有实现 GCredentials"
 
-#: gio/gcredentials.c:538 gio/gcredentials.c:556
+#: gio/gcredentials.c:550 gio/gcredentials.c:568
 msgid "There is no GCredentials support for your platform"
 msgstr "您的平台尚不支持 GCredentials"
 
-#: gio/gcredentials.c:607
+#: gio/gcredentials.c:626
 msgid "GCredentials does not contain a process ID on this OS"
 msgstr "此操作系统上的 GCredentials 未包含一个进程 ID"
 
-#: gio/gcredentials.c:661
+#: gio/gcredentials.c:680
 msgid "Credentials spoofing is not possible on this OS"
 msgstr "此操作系统上无法进行证书欺骗"
 
@@ -373,153 +382,153 @@ msgstr "此操作系统上无法进行证书欺骗"
 msgid "Unexpected early end-of-stream"
 msgstr "非预期的过早的流结束符"
 
-#: gio/gdbusaddress.c:159 gio/gdbusaddress.c:233 gio/gdbusaddress.c:322
+#: gio/gdbusaddress.c:162 gio/gdbusaddress.c:236 gio/gdbusaddress.c:325
 #, c-format
 msgid "Unsupported key “%s” in address entry “%s”"
 msgstr "地址条目“%2$s”中有未支持的键“%1$s”"
 
-#: gio/gdbusaddress.c:172
+#: gio/gdbusaddress.c:175
 #, c-format
 msgid "Meaningless key/value pair combination in address entry “%s”"
 msgstr "地址条目“%s”中有无意义的键/值对组合"
 
-#: gio/gdbusaddress.c:181
+#: gio/gdbusaddress.c:184
 #, c-format
 msgid ""
 "Address “%s” is invalid (need exactly one of path, dir, tmpdir, or abstract "
 "keys)"
 msgstr "地址“%s”无效(需要指定一个且仅一个的路径、目录、临时目录或抽象键)"
 
-#: gio/gdbusaddress.c:248 gio/gdbusaddress.c:259 gio/gdbusaddress.c:274
-#: gio/gdbusaddress.c:337 gio/gdbusaddress.c:348
+#: gio/gdbusaddress.c:251 gio/gdbusaddress.c:262 gio/gdbusaddress.c:277
+#: gio/gdbusaddress.c:340 gio/gdbusaddress.c:351
 #, c-format
 msgid "Error in address “%s” — the “%s” attribute is malformed"
 msgstr "地址“%s”中有错误——\"%s\"属性格式错误"
 
-#: gio/gdbusaddress.c:418 gio/gdbusaddress.c:682
+#: gio/gdbusaddress.c:421 gio/gdbusaddress.c:680
 #, c-format
 msgid "Unknown or unsupported transport “%s” for address “%s”"
 msgstr "传输“%s”对于地址“%s”未知或不支持"
 
-#: gio/gdbusaddress.c:462
+#: gio/gdbusaddress.c:465
 #, c-format
 msgid "Address element “%s” does not contain a colon (:)"
 msgstr "地址元素“%s”未包含冒号(:)"
 
-#: gio/gdbusaddress.c:471
+#: gio/gdbusaddress.c:474
 #, c-format
 msgid "Transport name in address element “%s” must not be empty"
 msgstr "地址元素“%s”中的传输名称不能为空"
 
-#: gio/gdbusaddress.c:492
+#: gio/gdbusaddress.c:495
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” does not contain an equal "
 "sign"
 msgstr "地址元素“%3$s”中的第 %1$d 个键/值对 “%2$s”未包含等号"
 
-#: gio/gdbusaddress.c:503
+#: gio/gdbusaddress.c:506
 #, c-format
 msgid ""
 "Key/Value pair %d, “%s”, in address element “%s” must not have an empty key"
 msgstr "地址元素“%3$s”中的第 %1$d 个键/值对 “%2$s”不能有空的键"
 
 # 改掉顿号,因其不是并列关系
-#: gio/gdbusaddress.c:517
+#: gio/gdbusaddress.c:520
 #, c-format
 msgid ""
 "Error unescaping key or value in Key/Value pair %d, “%s”, in address element "
 "“%s”"
 msgstr "在地址元素“%3$s”中,对键/值对 %1$d,“%2$s”取消转义键或值时出错"
 
-#: gio/gdbusaddress.c:589
+#: gio/gdbusaddress.c:588
 #, c-format
 msgid ""
 "Error in address “%s” — the unix transport requires exactly one of the keys "
 "“path” or “abstract” to be set"
 msgstr "地址“%s”中有错误——UNIX 传输需要“path”或“abstract”之一的键被设置"
 
-#: gio/gdbusaddress.c:625
+#: gio/gdbusaddress.c:623
 #, c-format
 msgid "Error in address “%s” — the host attribute is missing or malformed"
 msgstr "地址“%s”中有错误——主机属性丢失或格式错误"
 
-#: gio/gdbusaddress.c:639
+#: gio/gdbusaddress.c:637
 #, c-format
 msgid "Error in address “%s” — the port attribute is missing or malformed"
 msgstr "地址“%s”中有错误——端口属性丢失或格式错误"
 
-#: gio/gdbusaddress.c:653
+#: gio/gdbusaddress.c:651
 #, c-format
 msgid "Error in address “%s” — the noncefile attribute is missing or malformed"
 msgstr "地址“%s”中有错误——临时文件属性丢失或格式错误"
 
-#: gio/gdbusaddress.c:674
+#: gio/gdbusaddress.c:672
 msgid "Error auto-launching: "
 msgstr "自动启动出错:"
 
-#: gio/gdbusaddress.c:727
+#: gio/gdbusaddress.c:725
 #, c-format
 msgid "Error opening nonce file “%s”: %s"
 msgstr "打开临时文件“%s”时出错:%s"
 
-#: gio/gdbusaddress.c:746
+#: gio/gdbusaddress.c:744
 #, c-format
 msgid "Error reading from nonce file “%s”: %s"
 msgstr "读取临时文件“%s”时出错:%s"
 
-#: gio/gdbusaddress.c:755
+#: gio/gdbusaddress.c:753
 #, c-format
 msgid "Error reading from nonce file “%s”, expected 16 bytes, got %d"
 msgstr "读取临时文件“%s”时出错,预计 16 个字节,得到 %d 个"
 
-#: gio/gdbusaddress.c:773
+#: gio/gdbusaddress.c:771
 #, c-format
 msgid "Error writing contents of nonce file “%s” to stream:"
 msgstr "写入临时文件“%s”的内容到流时出错:"
 
-#: gio/gdbusaddress.c:988
+#: gio/gdbusaddress.c:986
 msgid "The given address is empty"
 msgstr "给定的地址为空"
 
-#: gio/gdbusaddress.c:1101
+#: gio/gdbusaddress.c:1099
 #, c-format
-msgid "Cannot spawn a message bus when setuid"
-msgstr "无法在 setuid 时启动一条消息总线"
+msgid "Cannot spawn a message bus when AT_SECURE is set"
+msgstr "无法在已设置 AT_SECURE 时启动一条消息总线"
 
-#: gio/gdbusaddress.c:1108
+#: gio/gdbusaddress.c:1106
 msgid "Cannot spawn a message bus without a machine-id: "
 msgstr "无法在无机器 ID 时生成一条消息总线:"
 
-#: gio/gdbusaddress.c:1115
+#: gio/gdbusaddress.c:1113
 #, c-format
 msgid "Cannot autolaunch D-Bus without X11 $DISPLAY"
 msgstr "无法在没有 X11 $DISPLAY 的情况下自动启动 D-Bus"
 
-#: gio/gdbusaddress.c:1157
+#: gio/gdbusaddress.c:1155
 #, c-format
 msgid "Error spawning command line “%s”: "
 msgstr "生成并运行命令行“%s”时出错:"
 
-#: gio/gdbusaddress.c:1226
+#: gio/gdbusaddress.c:1224
 #, c-format
 msgid "Cannot determine session bus address (not implemented for this OS)"
 msgstr "无法确定会话总线地址(尚未在此操作系统上实现)"
 
-#: gio/gdbusaddress.c:1375 gio/gdbusconnection.c:7261
+#: gio/gdbusaddress.c:1373 gio/gdbusconnection.c:7334
 #, c-format
 msgid ""
 "Cannot determine bus address from DBUS_STARTER_BUS_TYPE environment variable "
 "— unknown value “%s”"
 msgstr "无法从 DBUS_STARTER_BUS_TYPE 环境变量确定总线地址——未知的值“%s”"
 
-#: gio/gdbusaddress.c:1384 gio/gdbusconnection.c:7270
+#: gio/gdbusaddress.c:1382 gio/gdbusconnection.c:7343
 msgid ""
 "Cannot determine bus address because the DBUS_STARTER_BUS_TYPE environment "
 "variable is not set"
 msgstr "无法确定总线地址,因为环境变量 DBUS_STARTER_BUS_TYPE 未设置"
 
-#: gio/gdbusaddress.c:1394
+#: gio/gdbusaddress.c:1392
 #, c-format
 msgid "Unknown bus type %d"
 msgstr "未知的总线类型 %d"
@@ -546,228 +555,228 @@ msgstr "对等端和服务器端的用户 ID 必须相同"
 msgid "Cancelled via GDBusAuthObserver::authorize-authenticated-peer"
 msgstr "通过 GDBusAuthObserver::authorize-authenticated-peer 取消"
 
-#: gio/gdbusauthmechanismsha1.c:298
+#: gio/gdbusauthmechanismsha1.c:299
 #, c-format
 msgid "Error when getting information for directory “%s”: %s"
 msgstr "获取目录“%s”信息时发生错误:%s"
 
-#: gio/gdbusauthmechanismsha1.c:313
+#: gio/gdbusauthmechanismsha1.c:314
 #, c-format
 msgid ""
 "Permissions on directory “%s” are malformed. Expected mode 0700, got 0%o"
 msgstr "目录“%s”权限错误。期望 0700,得到 0%o"
 
-#: gio/gdbusauthmechanismsha1.c:346 gio/gdbusauthmechanismsha1.c:357
+#: gio/gdbusauthmechanismsha1.c:347 gio/gdbusauthmechanismsha1.c:358
 #, c-format
 msgid "Error creating directory “%s”: %s"
 msgstr "创建目录“%s”时出错:%s"
 
-#: gio/gdbusauthmechanismsha1.c:359 gio/gfile.c:1062 gio/gfile.c:1300
-#: gio/gfile.c:1438 gio/gfile.c:1676 gio/gfile.c:1731 gio/gfile.c:1789
-#: gio/gfile.c:1873 gio/gfile.c:1930 gio/gfile.c:1994 gio/gfile.c:2049
-#: gio/gfile.c:3754 gio/gfile.c:3809 gio/gfile.c:4102 gio/gfile.c:4572
-#: gio/gfile.c:4983 gio/gfile.c:5068 gio/gfile.c:5158 gio/gfile.c:5255
-#: gio/gfile.c:5342 gio/gfile.c:5443 gio/gfile.c:8153 gio/gfile.c:8243
-#: gio/gfile.c:8327 gio/win32/gwinhttpfile.c:453
+#: gio/gdbusauthmechanismsha1.c:360 gio/gfile.c:1080 gio/gfile.c:1318
+#: gio/gfile.c:1456 gio/gfile.c:1694 gio/gfile.c:1749 gio/gfile.c:1807
+#: gio/gfile.c:1891 gio/gfile.c:1948 gio/gfile.c:2012 gio/gfile.c:2067
+#: gio/gfile.c:3772 gio/gfile.c:3912 gio/gfile.c:4205 gio/gfile.c:4675
+#: gio/gfile.c:5086 gio/gfile.c:5171 gio/gfile.c:5261 gio/gfile.c:5358
+#: gio/gfile.c:5445 gio/gfile.c:5546 gio/gfile.c:8375 gio/gfile.c:8465
+#: gio/gfile.c:8549 gio/win32/gwinhttpfile.c:453
 msgid "Operation not supported"
 msgstr "不支持该操作"
 
-#: gio/gdbusauthmechanismsha1.c:402
+#: gio/gdbusauthmechanismsha1.c:403
 #, c-format
 msgid "Error opening keyring “%s” for reading: "
 msgstr "打开密钥环“%s”以读取时出错:"
 
-#: gio/gdbusauthmechanismsha1.c:425 gio/gdbusauthmechanismsha1.c:747
+#: gio/gdbusauthmechanismsha1.c:426 gio/gdbusauthmechanismsha1.c:748
 #, c-format
 msgid "Line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr "“%2$s”处的密钥环第 %1$d 行有不符合格式的内容“%3$s”"
 
-#: gio/gdbusauthmechanismsha1.c:439 gio/gdbusauthmechanismsha1.c:761
+#: gio/gdbusauthmechanismsha1.c:440 gio/gdbusauthmechanismsha1.c:762
 #, c-format
 msgid ""
 "First token of line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr "“%2$s”处的密钥环第 %1$d 行第一个令牌有不符合格式的内容“%3$s”"
 
-#: gio/gdbusauthmechanismsha1.c:453 gio/gdbusauthmechanismsha1.c:775
+#: gio/gdbusauthmechanismsha1.c:454 gio/gdbusauthmechanismsha1.c:776
 #, c-format
 msgid ""
 "Second token of line %d of the keyring at “%s” with content “%s” is malformed"
 msgstr "“%2$s”处的密钥环第 %1$d 行第二个令牌有不符合格式的内容“%3$s”"
 
-#: gio/gdbusauthmechanismsha1.c:477
+#: gio/gdbusauthmechanismsha1.c:478
 #, c-format
 msgid "Didn’t find cookie with id %d in the keyring at “%s”"
 msgstr "未在“%2$s”处的密钥环中找到 ID 为 %1$d 的 cookie"
 
-#: gio/gdbusauthmechanismsha1.c:523
+#: gio/gdbusauthmechanismsha1.c:524
 #, c-format
 msgid "Error creating lock file “%s”: %s"
 msgstr "创建锁文件“%s”时出错:%s"
 
-#: gio/gdbusauthmechanismsha1.c:587
+#: gio/gdbusauthmechanismsha1.c:588
 #, c-format
 msgid "Error deleting stale lock file “%s”: %s"
 msgstr "删除过时的锁文件“%s”时出错:%s"
 
-#: gio/gdbusauthmechanismsha1.c:626
+#: gio/gdbusauthmechanismsha1.c:627
 #, c-format
 msgid "Error closing (unlinked) lock file “%s”: %s"
 msgstr "关闭(未链接的)锁文件“%s”时出错:%s"
 
-#: gio/gdbusauthmechanismsha1.c:637
+#: gio/gdbusauthmechanismsha1.c:638
 #, c-format
 msgid "Error unlinking lock file “%s”: %s"
 msgstr "删除(unlink)锁文件“%s”时出错:%s"
 
-#: gio/gdbusauthmechanismsha1.c:714
+#: gio/gdbusauthmechanismsha1.c:715
 #, c-format
 msgid "Error opening keyring “%s” for writing: "
 msgstr "打开钥匙环“%s”以写入时出错:"
 
-#: gio/gdbusauthmechanismsha1.c:908
+#: gio/gdbusauthmechanismsha1.c:909
 #, c-format
 msgid "(Additionally, releasing the lock for “%s” also failed: %s) "
 msgstr "(此外,解除“%s”的锁定也失败了:%s) "
 
-#: gio/gdbusconnection.c:603 gio/gdbusconnection.c:2417
+#: gio/gdbusconnection.c:604 gio/gdbusconnection.c:2418
 msgid "The connection is closed"
 msgstr "连接已关闭"
 
-#: gio/gdbusconnection.c:1902
+#: gio/gdbusconnection.c:1903
 msgid "Timeout was reached"
 msgstr "已到超时限制"
 
-#: gio/gdbusconnection.c:2540
+#: gio/gdbusconnection.c:2541
 msgid ""
 "Unsupported flags encountered when constructing a client-side connection"
 msgstr "构建客户端连接时遇到不支持的标志"
 
-#: gio/gdbusconnection.c:4189 gio/gdbusconnection.c:4536
+#: gio/gdbusconnection.c:4269 gio/gdbusconnection.c:4623
 #, c-format
 msgid ""
 "No such interface “org.freedesktop.DBus.Properties” on object at path %s"
 msgstr "路径 %s 的对象上没有“org.freedesktop.DBus.Properties”接口"
 
-#: gio/gdbusconnection.c:4331
+#: gio/gdbusconnection.c:4414
 #, c-format
 msgid "No such property “%s”"
 msgstr "无此属性“%s”"
 
-#: gio/gdbusconnection.c:4343
+#: gio/gdbusconnection.c:4426
 #, c-format
 msgid "Property “%s” is not readable"
 msgstr "属性“%s”不可读"
 
-#: gio/gdbusconnection.c:4354
+#: gio/gdbusconnection.c:4437
 #, c-format
 msgid "Property “%s” is not writable"
 msgstr "属性“%s”不可写"
 
-#: gio/gdbusconnection.c:4374
+#: gio/gdbusconnection.c:4457
 #, c-format
 msgid "Error setting property “%s”: Expected type “%s” but got “%s”"
 msgstr "设置属性“%s”时出错:期望“%s”类型但得到了“%s”类型"
 
-#: gio/gdbusconnection.c:4479 gio/gdbusconnection.c:4687
-#: gio/gdbusconnection.c:6689
+#: gio/gdbusconnection.c:4562 gio/gdbusconnection.c:4777
+#: gio/gdbusconnection.c:6760
 #, c-format
 msgid "No such interface “%s”"
 msgstr "无此接口“%s”"
 
-#: gio/gdbusconnection.c:4905 gio/gdbusconnection.c:7201
+#: gio/gdbusconnection.c:4999 gio/gdbusconnection.c:7274
 #, c-format
 msgid "No such interface “%s” on object at path %s"
 msgstr "在路径 %s 的对象上没有“%s”接口"
 
-#: gio/gdbusconnection.c:5003
+#: gio/gdbusconnection.c:5100
 #, c-format
 msgid "No such method “%s”"
 msgstr "没有“%s”这个方法"
 
-#: gio/gdbusconnection.c:5034
+#: gio/gdbusconnection.c:5131
 #, c-format
 msgid "Type of message, “%s”, does not match expected type “%s”"
 msgstr "消息的类型“%s”,与预期的类型“%s”不匹配"
 
-#: gio/gdbusconnection.c:5237
+#: gio/gdbusconnection.c:5334
 #, c-format
 msgid "An object is already exported for the interface %s at %s"
 msgstr "已为 %2$s 处的接口 %1$s 导出了一个对象"
 
-#: gio/gdbusconnection.c:5463
+#: gio/gdbusconnection.c:5561
 #, c-format
 msgid "Unable to retrieve property %s.%s"
 msgstr "无法检索属性 %s.%s"
 
-#: gio/gdbusconnection.c:5519
+#: gio/gdbusconnection.c:5617
 #, c-format
 msgid "Unable to set property %s.%s"
 msgstr "无法设置属性 %s.%s"
 
-#: gio/gdbusconnection.c:5698
+#: gio/gdbusconnection.c:5796
 #, c-format
 msgid "Method “%s” returned type “%s”, but expected “%s”"
 msgstr "方法“%s”返回类型“%s”,但预期的是“%s”"
 
-#: gio/gdbusconnection.c:6800
+#: gio/gdbusconnection.c:6872
 #, c-format
 msgid "Method “%s” on interface “%s” with signature “%s” does not exist"
 msgstr "带有“%3$s”签名的接口“%2$s”上不存在“%1$s”方法"
 
-#: gio/gdbusconnection.c:6921
+#: gio/gdbusconnection.c:6993
 #, c-format
 msgid "A subtree is already exported for %s"
 msgstr "已经为 %s 导出一个子树"
 
-#: gio/gdbusconnection.c:7209
+#: gio/gdbusconnection.c:7282
 #, c-format
 msgid "Object does not exist at path “%s”"
 msgstr "对象在路径“%s”处不存在"
 
-#: gio/gdbusmessage.c:1266
+#: gio/gdbusmessage.c:1301
 msgid "type is INVALID"
 msgstr "类型无效"
 
-#: gio/gdbusmessage.c:1277
+#: gio/gdbusmessage.c:1312
 msgid "METHOD_CALL message: PATH or MEMBER header field is missing"
 msgstr "METHOD_CALL 消息:PATH 或 MEMBER 首部字段缺失"
 
-#: gio/gdbusmessage.c:1288
+#: gio/gdbusmessage.c:1323
 msgid "METHOD_RETURN message: REPLY_SERIAL header field is missing"
 msgstr "METHOD_RETURN 消息:REPLY_SERIAL 首部字段缺失"
 
-#: gio/gdbusmessage.c:1300
+#: gio/gdbusmessage.c:1335
 msgid "ERROR message: REPLY_SERIAL or ERROR_NAME header field is missing"
 msgstr "错误消息:REPLY_SERIAL 或 ERROR_NAME 首部字段缺失"
 
-#: gio/gdbusmessage.c:1313
+#: gio/gdbusmessage.c:1348
 msgid "SIGNAL message: PATH, INTERFACE or MEMBER header field is missing"
 msgstr "信号消息:PATH、INTERFACE 或 MEMBER METHOD_RETURN缺失"
 
-#: gio/gdbusmessage.c:1321
+#: gio/gdbusmessage.c:1356
 msgid ""
 "SIGNAL message: The PATH header field is using the reserved value /org/"
 "freedesktop/DBus/Local"
 msgstr "信号消息:PATH 首部字段正在使用保留值 /org/freedesktop/DBus/Local"
 
-#: gio/gdbusmessage.c:1329
+#: gio/gdbusmessage.c:1364
 msgid ""
 "SIGNAL message: The INTERFACE header field is using the reserved value org."
 "freedesktop.DBus.Local"
 msgstr "信号消息:INTERFACE 首部字段正在使用保留值 org.freedesktop.DBus.Local"
 
-#: gio/gdbusmessage.c:1377 gio/gdbusmessage.c:1437
+#: gio/gdbusmessage.c:1412 gio/gdbusmessage.c:1472
 #, c-format
 msgid "Wanted to read %lu byte but only got %lu"
 msgid_plural "Wanted to read %lu bytes but only got %lu"
 msgstr[0] "期望读取 %lu 个字节但只得到 %lu 个"
 
-#: gio/gdbusmessage.c:1391
+#: gio/gdbusmessage.c:1426
 #, c-format
 msgid "Expected NUL byte after the string “%s” but found byte %d"
 msgstr "期望“%s”后为 NUL 字节但找到了字节 %d"
 
-#: gio/gdbusmessage.c:1410
+#: gio/gdbusmessage.c:1445
 #, c-format
 msgid ""
 "Expected valid UTF-8 string but found invalid bytes at byte offset %d "
@@ -776,21 +785,21 @@ msgstr ""
 "期望得到有效的 UTF-8 字符串,但在字节偏移 %d 处(字符串长度为 %d)找到了无效"
 "的字节。该点的有效 UTF-8 字符串曾是“%s”"
 
-#: gio/gdbusmessage.c:1474 gio/gdbusmessage.c:1722 gio/gdbusmessage.c:1911
+#: gio/gdbusmessage.c:1509 gio/gdbusmessage.c:1785 gio/gdbusmessage.c:1996
 msgid "Value nested too deeply"
 msgstr "值嵌套过深"
 
-#: gio/gdbusmessage.c:1620
+#: gio/gdbusmessage.c:1677
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus object path"
 msgstr "已解析的值“%s”不是有效的 D-Bus 对象路径"
 
-#: gio/gdbusmessage.c:1642
+#: gio/gdbusmessage.c:1701
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature"
 msgstr "已解析的值“%s”不是有效的 D-Bus 签名"
 
-#: gio/gdbusmessage.c:1689
+#: gio/gdbusmessage.c:1752
 #, c-format
 msgid ""
 "Encountered array of length %u byte. Maximum length is 2<<26 bytes (64 MiB)."
@@ -798,7 +807,7 @@ msgid_plural ""
 "Encountered array of length %u bytes. Maximum length is 2<<26 bytes (64 MiB)."
 msgstr[0] "遇到长度为 %u 字节的数组。最大长度应为 2<<26 字节(64 MiB)。"
 
-#: gio/gdbusmessage.c:1709
+#: gio/gdbusmessage.c:1772
 #, c-format
 msgid ""
 "Encountered array of type “a%c”, expected to have a length a multiple of %u "
@@ -806,127 +815,131 @@ msgid ""
 msgstr ""
 "遇到类型为“a%c”的数组,需要长度为 %u 字节的倍数,但是找到的长度为 %u 字节"
 
-#: gio/gdbusmessage.c:1895
+#: gio/gdbusmessage.c:1926 gio/gdbusmessage.c:2645
+msgid "Empty structures (tuples) are not allowed in D-Bus"
+msgstr "D-Bus 中不允许空结构(tuples)"
+
+#: gio/gdbusmessage.c:1980
 #, c-format
 msgid "Parsed value “%s” for variant is not a valid D-Bus signature"
 msgstr "变量的已解析值“%s”不是有效的 D-Bus 签名"
 
-#: gio/gdbusmessage.c:1936
+#: gio/gdbusmessage.c:2021
 #, c-format
 msgid ""
 "Error deserializing GVariant with type string “%s” from the D-Bus wire format"
 msgstr "从 D-Bus 线格式以类型字符串“%s”反序列化 GVariant 时发生错误"
 
-#: gio/gdbusmessage.c:2121
+#: gio/gdbusmessage.c:2206
 #, c-format
 msgid ""
 "Invalid endianness value. Expected 0x6c (“l”) or 0x42 (“B”) but found value "
 "0x%02x"
 msgstr "无效的字节序值。期望为 0x6c(“l”)或 0x42(“B”)但找到值 0x%02x"
 
-#: gio/gdbusmessage.c:2134
+#: gio/gdbusmessage.c:2225
 #, c-format
 msgid "Invalid major protocol version. Expected 1 but found %d"
 msgstr "无效的主协议版本。期望 1,但是找到了 %d"
 
-#: gio/gdbusmessage.c:2188 gio/gdbusmessage.c:2784
+#: gio/gdbusmessage.c:2283 gio/gdbusmessage.c:2881
 msgid "Signature header found but is not of type signature"
 msgstr "找到了签名首部但不属于类型签名"
 
-#: gio/gdbusmessage.c:2200
+#: gio/gdbusmessage.c:2295
 #, c-format
 msgid "Signature header with signature “%s” found but message body is empty"
 msgstr "发现签名“%s”的签名首部,但消息主体为空"
 
-#: gio/gdbusmessage.c:2215
+#: gio/gdbusmessage.c:2310
 #, c-format
 msgid "Parsed value “%s” is not a valid D-Bus signature (for body)"
 msgstr "已解析的值“%s”不是有效的 D-Bus 签名(针对消息主体)"
 
-#: gio/gdbusmessage.c:2247
+#: gio/gdbusmessage.c:2342
 #, 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"
 msgstr[0] "消息中没有签名首部,但消息主体为 %u 字节"
 
-#: gio/gdbusmessage.c:2257
+#: gio/gdbusmessage.c:2352
 msgid "Cannot deserialize message: "
 msgstr "无法反序列化消息:"
 
-#: gio/gdbusmessage.c:2601
+#: gio/gdbusmessage.c:2698
 #, c-format
 msgid ""
 "Error serializing GVariant with type string “%s” to the D-Bus wire format"
 msgstr "以类型字符串“%s”序列化 GVariant 到 D-Bus 线格式时发生错误"
 
-#: gio/gdbusmessage.c:2738
+#: gio/gdbusmessage.c:2835
 #, c-format
 msgid ""
 "Number of file descriptors in message (%d) differs from header field (%d)"
 msgstr "消息中的文件描述符数量(%d)与首部字段中的(%d)不同"
 
-#: gio/gdbusmessage.c:2746
+#: gio/gdbusmessage.c:2843
 msgid "Cannot serialize message: "
 msgstr "无法序列化消息:"
 
-#: gio/gdbusmessage.c:2799
+#: gio/gdbusmessage.c:2896
 #, c-format
 msgid "Message body has signature “%s” but there is no signature header"
 msgstr "消息主体有签名“%s”但是没有签名首部"
 
-#: gio/gdbusmessage.c:2809
+#: gio/gdbusmessage.c:2906
 #, c-format
 msgid ""
 "Message body has type signature “%s” but signature in the header field is "
 "“%s”"
 msgstr "消息主体有类型签名“%s”但首部字段的签名为“%s”"
 
-#: gio/gdbusmessage.c:2825
+#: gio/gdbusmessage.c:2922
 #, c-format
 msgid "Message body is empty but signature in the header field is “(%s)”"
 msgstr "消息主体为空,但首部字段的签名为“(%s)”"
 
-#: gio/gdbusmessage.c:3380
+#: gio/gdbusmessage.c:3477
 #, c-format
 msgid "Error return with body of type “%s”"
 msgstr "出错,返回了“%s”类型的主体"
 
-#: gio/gdbusmessage.c:3388
+#: gio/gdbusmessage.c:3485
 msgid "Error return with empty body"
 msgstr "出错,返回了空的主体"
 
-#: gio/gdbusprivate.c:2246
+#: gio/gdbusprivate.c:2185
 #, c-format
 msgid "(Type any character to close this window)\n"
 msgstr "(按任意键关闭本窗口)\n"
 
-#: gio/gdbusprivate.c:2420
+#: gio/gdbusprivate.c:2371
 #, c-format
 msgid "Session dbus not running, and autolaunch failed"
 msgstr "dbus 会话未运行,自动启动失败"
 
-#: gio/gdbusprivate.c:2443
+#: gio/gdbusprivate.c:2394
 #, c-format
 msgid "Unable to get Hardware profile: %s"
 msgstr "无法获取硬件配置文件:%s"
 
 #. Translators: Both placeholders are file paths
-#: gio/gdbusprivate.c:2494
+#: gio/gdbusprivate.c:2445
 #, c-format
 msgid "Unable to load %s or %s: "
 msgstr "无法载入 %s 或 %s:"
 
-#: gio/gdbusproxy.c:1569
+#: gio/gdbusproxy.c:1573
 #, c-format
 msgid "Error calling StartServiceByName for %s: "
 msgstr "为 %s 调用 StartServiceByName 时出错:"
 
-#: gio/gdbusproxy.c:1592
+#: gio/gdbusproxy.c:1596
 #, c-format
 msgid "Unexpected reply %d from StartServiceByName(\"%s\") method"
 msgstr "从 StartServiceByName(\"%2$s\") 方法获得意外回复 %1$d"
 
-#: gio/gdbusproxy.c:2699 gio/gdbusproxy.c:2834
+#: gio/gdbusproxy.c:2707 gio/gdbusproxy.c:2842
 #, c-format
 msgid ""
 "Cannot invoke method; proxy is for the well-known name %s without an owner, "
@@ -983,13 +996,13 @@ msgstr ""
 "使用“%s 命令 --help”以获得每一个命令的帮助。\n"
 
 #: gio/gdbus-tool.c:201 gio/gdbus-tool.c:273 gio/gdbus-tool.c:345
-#: gio/gdbus-tool.c:369 gio/gdbus-tool.c:859 gio/gdbus-tool.c:1236
-#: gio/gdbus-tool.c:1724
+#: gio/gdbus-tool.c:369 gio/gdbus-tool.c:859 gio/gdbus-tool.c:1244
+#: gio/gdbus-tool.c:1732
 #, c-format
 msgid "Error: %s\n"
 msgstr "错误:%s\n"
 
-#: gio/gdbus-tool.c:212 gio/gdbus-tool.c:286 gio/gdbus-tool.c:1740
+#: gio/gdbus-tool.c:212 gio/gdbus-tool.c:286 gio/gdbus-tool.c:1748
 #, c-format
 msgid "Error parsing introspection XML: %s\n"
 msgstr "解析 Introspection XML 时出错:%s\n"
@@ -999,8 +1012,8 @@ msgstr "解析 Introspection XML 时出错:%s\n"
 msgid "Error: %s is not a valid name\n"
 msgstr "错误:%s 不是有效的名称\n"
 
-#: gio/gdbus-tool.c:255 gio/gdbus-tool.c:745 gio/gdbus-tool.c:1060
-#: gio/gdbus-tool.c:1890 gio/gdbus-tool.c:2130
+#: gio/gdbus-tool.c:255 gio/gdbus-tool.c:745 gio/gdbus-tool.c:1063
+#: gio/gdbus-tool.c:1898 gio/gdbus-tool.c:2138
 #, c-format
 msgid "Error: %s is not a valid object path\n"
 msgstr "错误:%s 不是有效的对象路径\n"
@@ -1065,8 +1078,8 @@ msgstr "信号和接口名称"
 msgid "Emit a signal."
 msgstr "发射信号。"
 
-#: gio/gdbus-tool.c:683 gio/gdbus-tool.c:997 gio/gdbus-tool.c:1827
-#: gio/gdbus-tool.c:2059 gio/gdbus-tool.c:2279
+#: gio/gdbus-tool.c:683 gio/gdbus-tool.c:1000 gio/gdbus-tool.c:1835
+#: gio/gdbus-tool.c:2067 gio/gdbus-tool.c:2287
 #, c-format
 msgid "Error connecting: %s\n"
 msgstr "连接时出错:%s\n"
@@ -1076,7 +1089,7 @@ msgstr "连接时出错:%s\n"
 msgid "Error: %s is not a valid unique bus name.\n"
 msgstr "错误:%s 不是有效的唯一总线名。\n"
 
-#: gio/gdbus-tool.c:722 gio/gdbus-tool.c:1040 gio/gdbus-tool.c:1870
+#: gio/gdbus-tool.c:722 gio/gdbus-tool.c:1043 gio/gdbus-tool.c:1878
 msgid "Error: Object path is not specified\n"
 msgstr "错误:未指定对象路径\n"
 
@@ -1100,7 +1113,7 @@ msgid "Error: %s is not a valid member name\n"
 msgstr "错误:%s 不是有效的成员名称。\n"
 
 #. Use the original non-"parse-me-harder" error
-#: gio/gdbus-tool.c:834 gio/gdbus-tool.c:1172
+#: gio/gdbus-tool.c:834 gio/gdbus-tool.c:1175
 #, c-format
 msgid "Error parsing parameter %d: %s\n"
 msgstr "解析第 %d 个选项时出错:%s\n"
@@ -1110,162 +1123,171 @@ msgstr "解析第 %d 个选项时出错:%s\n"
 msgid "Error flushing connection: %s\n"
 msgstr "刷新连接时出错:%s\n"
 
-#: gio/gdbus-tool.c:893
+#: gio/gdbus-tool.c:894
 msgid "Destination name to invoke method on"
 msgstr "调用方法的目标位置名称"
 
-#: gio/gdbus-tool.c:894
+#: gio/gdbus-tool.c:895
 msgid "Object path to invoke method on"
 msgstr "调用方法的对象路径"
 
-#: gio/gdbus-tool.c:895
+#: gio/gdbus-tool.c:896
 msgid "Method and interface name"
 msgstr "方法和接口名称"
 
-#: gio/gdbus-tool.c:896
+#: gio/gdbus-tool.c:897
 msgid "Timeout in seconds"
 msgstr "超时(以秒计)"
 
-#: gio/gdbus-tool.c:942
+#: gio/gdbus-tool.c:898
+msgid "Allow interactive authorization"
+msgstr "允许交互式授权"
+
+#: gio/gdbus-tool.c:945
 msgid "Invoke a method on a remote object."
 msgstr "在远程对象上调用一个方法。"
 
-#: gio/gdbus-tool.c:1014 gio/gdbus-tool.c:1844 gio/gdbus-tool.c:2084
+#: gio/gdbus-tool.c:1017 gio/gdbus-tool.c:1852 gio/gdbus-tool.c:2092
 msgid "Error: Destination is not specified\n"
 msgstr "错误:未指定目标位置名称\n"
 
-#: gio/gdbus-tool.c:1025 gio/gdbus-tool.c:1861 gio/gdbus-tool.c:2095
+#: gio/gdbus-tool.c:1028 gio/gdbus-tool.c:1869 gio/gdbus-tool.c:2103
 #, c-format
 msgid "Error: %s is not a valid bus name\n"
 msgstr "错误:%s 不是有效的总线名称\n"
 
-#: gio/gdbus-tool.c:1075
+#: gio/gdbus-tool.c:1078
 msgid "Error: Method name is not specified\n"
 msgstr "错误:方法名没有指定\n"
 
-#: gio/gdbus-tool.c:1086
+#: gio/gdbus-tool.c:1089
 #, c-format
 msgid "Error: Method name “%s” is invalid\n"
 msgstr "错误:方法名“%s”无效\n"
 
-#: gio/gdbus-tool.c:1164
+#: gio/gdbus-tool.c:1167
 #, c-format
 msgid "Error parsing parameter %d of type “%s”: %s\n"
 msgstr "解析\"%2$s\"类型的第 %1$d 个参数时发生错误:%3$s\n"
 
-#: gio/gdbus-tool.c:1190
+#: gio/gdbus-tool.c:1193
 #, c-format
 msgid "Error adding handle %d: %s\n"
 msgstr "添加句柄 %d 时出错:%s\n"
 
-#: gio/gdbus-tool.c:1686
+#: gio/gdbus-tool.c:1694
 msgid "Destination name to introspect"
 msgstr "要 Introspect 的目标位置名称"
 
-#: gio/gdbus-tool.c:1687
+#: gio/gdbus-tool.c:1695
 msgid "Object path to introspect"
 msgstr "要 Introspect 的对象路径"
 
-#: gio/gdbus-tool.c:1688
+#: gio/gdbus-tool.c:1696
 msgid "Print XML"
 msgstr "输出 XML"
 
-#: gio/gdbus-tool.c:1689
+#: gio/gdbus-tool.c:1697
 msgid "Introspect children"
 msgstr "Introspect 子对象"
 
-#: gio/gdbus-tool.c:1690
+#: gio/gdbus-tool.c:1698
 msgid "Only print properties"
 msgstr "只打印属性"
 
 # 跟命令行里的统一翻译
-#: gio/gdbus-tool.c:1779
+#: gio/gdbus-tool.c:1787
 msgid "Introspect a remote object."
 msgstr "Introspect 一个远程对象。"
 
-#: gio/gdbus-tool.c:1985
+#: gio/gdbus-tool.c:1993
 msgid "Destination name to monitor"
 msgstr "要监视的目标位置名称"
 
-#: gio/gdbus-tool.c:1986
+#: gio/gdbus-tool.c:1994
 msgid "Object path to monitor"
 msgstr "要监视的对象路径"
 
-#: gio/gdbus-tool.c:2011
+#: gio/gdbus-tool.c:2019
 msgid "Monitor a remote object."
 msgstr "监视一个远程对象。"
 
-#: gio/gdbus-tool.c:2069
+#: gio/gdbus-tool.c:2077
 msgid "Error: can’t monitor a non-message-bus connection\n"
 msgstr "错误:无法监视 non-message-bus 连接\n"
 
-#: gio/gdbus-tool.c:2193
+#: gio/gdbus-tool.c:2201
 msgid "Service to activate before waiting for the other one (well-known name)"
 msgstr "在等待另一服务前要激活的服务(常见名称)"
 
-#: gio/gdbus-tool.c:2196
+#: gio/gdbus-tool.c:2204
 msgid ""
 "Timeout to wait for before exiting with an error (seconds); 0 for no timeout "
 "(default)"
 msgstr "出现错误退出前的超时(秒); 0 为无超时(默认)"
 
-#: gio/gdbus-tool.c:2244
+#: gio/gdbus-tool.c:2252
 msgid "[OPTION…] BUS-NAME"
 msgstr "[选项…] 总线名称"
 
-#: gio/gdbus-tool.c:2245
+#: gio/gdbus-tool.c:2253
 msgid "Wait for a bus name to appear."
 msgstr "等待总线名称出现。"
 
-#: gio/gdbus-tool.c:2321
+#: gio/gdbus-tool.c:2329
 msgid "Error: A service to activate for must be specified.\n"
 msgstr "错误:未指定需要激活的服务名称。\n"
 
-#: gio/gdbus-tool.c:2326
+#: gio/gdbus-tool.c:2334
 msgid "Error: A service to wait for must be specified.\n"
 msgstr "错误:未指定需要等待的服务名称。\n"
 
-#: gio/gdbus-tool.c:2331
+#: gio/gdbus-tool.c:2339
 msgid "Error: Too many arguments.\n"
 msgstr "错误:参数过多。\n"
 
-#: gio/gdbus-tool.c:2339 gio/gdbus-tool.c:2346
+#: gio/gdbus-tool.c:2347 gio/gdbus-tool.c:2354
 #, c-format
 msgid "Error: %s is not a valid well-known bus name.\n"
 msgstr "错误:%s 不是有效的总线名称。\n"
 
-#: gio/gdesktopappinfo.c:2106 gio/gdesktopappinfo.c:4932
+#: gio/gdebugcontrollerdbus.c:203
+#, c-format
+msgid "Not authorized to change debug settings"
+msgstr "未获认证以更改调试设置"
+
+#: gio/gdesktopappinfo.c:2174 gio/gdesktopappinfo.c:5099
 msgid "Unnamed"
 msgstr "未命名"
 
-#: gio/gdesktopappinfo.c:2516
+#: gio/gdesktopappinfo.c:2584
 msgid "Desktop file didn’t specify Exec field"
 msgstr "桌面文件未指定 Exec 字段"
 
-#: gio/gdesktopappinfo.c:2801
+#: gio/gdesktopappinfo.c:2892
 msgid "Unable to find terminal required for application"
 msgstr "无法找到应用程序需要的终端"
 
-#: gio/gdesktopappinfo.c:3452
+#: gio/gdesktopappinfo.c:3619
 #, c-format
 msgid "Can’t create user application configuration folder %s: %s"
 msgstr "无法创建用户应用程序配置文件夹 %s:%s"
 
-#: gio/gdesktopappinfo.c:3456
+#: gio/gdesktopappinfo.c:3623
 #, c-format
 msgid "Can’t create user MIME configuration folder %s: %s"
 msgstr "无法创建用户 MIME 配置文件夹 %s:%s"
 
-#: gio/gdesktopappinfo.c:3698 gio/gdesktopappinfo.c:3722
+#: gio/gdesktopappinfo.c:3865 gio/gdesktopappinfo.c:3889
 msgid "Application information lacks an identifier"
 msgstr "应用程序信息缺少标志符"
 
-#: gio/gdesktopappinfo.c:3958
+#: gio/gdesktopappinfo.c:4125
 #, c-format
 msgid "Can’t create user desktop file %s"
 msgstr "无法创建用户桌面文件 %s"
 
-#: gio/gdesktopappinfo.c:4094
+#: gio/gdesktopappinfo.c:4261
 #, c-format
 msgid "Custom definition for %s"
 msgstr "%s 的自定义"
@@ -1293,7 +1315,7 @@ msgstr "驱动器未实现启动"
 msgid "drive doesn’t implement stop"
 msgstr "驱动器未实现停止"
 
-#: gio/gdtlsconnection.c:1153 gio/gtlsconnection.c:920
+#: gio/gdtlsconnection.c:1186 gio/gtlsconnection.c:955
 msgid "TLS backend does not implement TLS binding retrieval"
 msgstr "TLS 后端没有实现 TLS 绑定获取"
 
@@ -1334,73 +1356,73 @@ msgstr "GEmblemedIcon 中应为 GEmblem"
 #. * trying to find the enclosing (user visible)
 #. * mount of a file, but none exists.
 #.
-#: gio/gfile.c:1561
+#: gio/gfile.c:1579
 msgid "Containing mount does not exist"
 msgstr "包含的挂载不存在"
 
-#: gio/gfile.c:2608 gio/glocalfile.c:2477
+#: gio/gfile.c:2626 gio/glocalfile.c:2486
 msgid "Can’t copy over directory"
 msgstr "无法跨目录复制"
 
-#: gio/gfile.c:2668
+#: gio/gfile.c:2686
 msgid "Can’t copy directory over directory"
 msgstr "无法跨目录复制到目录"
 
-#: gio/gfile.c:2676
+#: gio/gfile.c:2694
 msgid "Target file exists"
 msgstr "目标文件已存在"
 
-#: gio/gfile.c:2695
+#: gio/gfile.c:2713
 msgid "Can’t recursively copy directory"
 msgstr "无法递归复制目录"
 
-#: gio/gfile.c:2996
+#: gio/gfile.c:3014
 msgid "Splice not supported"
 msgstr "不支持拼接"
 
-#: gio/gfile.c:3000
+#: gio/gfile.c:3018
 #, c-format
 msgid "Error splicing file: %s"
 msgstr "拼接文件时出错:%s"
 
-#: gio/gfile.c:3152
+#: gio/gfile.c:3170
 msgid "Copy (reflink/clone) between mounts is not supported"
 msgstr "不支持在挂载之间复制(reflink/clone)"
 
-#: gio/gfile.c:3156
+#: gio/gfile.c:3174
 msgid "Copy (reflink/clone) is not supported or invalid"
 msgstr "复制(reflink/clone)操作不支持或无效"
 
-#: gio/gfile.c:3161
+#: gio/gfile.c:3179
 msgid "Copy (reflink/clone) is not supported or didn’t work"
 msgstr "复制(reflink/clone)操作不支持或者失败"
 
-#: gio/gfile.c:3226
+#: gio/gfile.c:3244
 msgid "Can’t copy special file"
 msgstr "无法复制特殊文件"
 
-#: gio/gfile.c:4035
+#: gio/gfile.c:4138
 msgid "Invalid symlink value given"
 msgstr "给定的符号链接值无效"
 
-#: gio/gfile.c:4045 glib/gfileutils.c:2355
+#: gio/gfile.c:4148 glib/gfileutils.c:2333
 msgid "Symbolic links not supported"
 msgstr "不支持符号链接"
 
-#: gio/gfile.c:4213
+#: gio/gfile.c:4316
 msgid "Trash not supported"
 msgstr "不支持回收站"
 
-#: gio/gfile.c:4325
+#: gio/gfile.c:4428
 #, c-format
 msgid "File names cannot contain “%c”"
 msgstr "文件名不能包含“%c”"
 
-#: gio/gfile.c:6806 gio/gvolume.c:364
+#: gio/gfile.c:7028 gio/gvolume.c:364
 msgid "volume doesn’t implement mount"
 msgstr "卷未实现挂载"
 
-#: gio/gfile.c:6920 gio/gfile.c:6968
+#: gio/gfile.c:7142 gio/gfile.c:7190
 msgid "No application is registered as handling this file"
 msgstr "没有应用程序注册为处理此文件的"
 
@@ -1445,7 +1467,7 @@ msgstr "输入流不允许截断"
 msgid "Truncate not supported on stream"
 msgstr "流不支持截断"
 
-#: gio/ghttpproxy.c:91 gio/gresolver.c:443 gio/gresolver.c:596
+#: gio/ghttpproxy.c:91 gio/gresolver.c:458 gio/gresolver.c:611
 #: glib/gconvert.c:1825
 msgid "Invalid hostname"
 msgstr "无效的主机名"
@@ -1532,7 +1554,7 @@ msgid "Could not parse “%s” as IP address mask"
 msgstr "不能将“%s”解析为 IP 地址掩码"
 
 #: gio/ginetsocketaddress.c:203 gio/ginetsocketaddress.c:220
-#: gio/gnativesocketaddress.c:109 gio/gunixsocketaddress.c:221
+#: gio/gnativesocketaddress.c:109 gio/gunixsocketaddress.c:228
 msgid "Not enough space for socket address"
 msgstr "没有足够的空间用于套接字地址"
 
@@ -2354,69 +2376,73 @@ msgstr "压缩文件时出错:%s"
 msgid "text may not appear inside <%s>"
 msgstr "<%s> 内不应出现文本"
 
-#: gio/glib-compile-resources.c:737 gio/glib-compile-schemas.c:2172
+#: gio/glib-compile-resources.c:819 gio/glib-compile-schemas.c:2172
 msgid "Show program version and exit"
 msgstr "显示程序版本并退出"
 
-#: gio/glib-compile-resources.c:738
+#: gio/glib-compile-resources.c:820
 msgid "Name of the output file"
 msgstr "输出文件的名称"
 
-#: gio/glib-compile-resources.c:739
+#: gio/glib-compile-resources.c:821
 msgid ""
 "The directories to load files referenced in FILE from (default: current "
 "directory)"
 msgstr "FILE 中引用的要从其中载入文件的目录(默认为当前目录)"
 
-#: gio/glib-compile-resources.c:739 gio/glib-compile-schemas.c:2173
+#: gio/glib-compile-resources.c:821 gio/glib-compile-schemas.c:2173
 #: gio/glib-compile-schemas.c:2202
 msgid "DIRECTORY"
 msgstr "目录"
 
-#: gio/glib-compile-resources.c:740
+#: gio/glib-compile-resources.c:822
 msgid ""
 "Generate output in the format selected for by the target filename extension"
 msgstr "以目标文件扩展名所选择的格式生成输出"
 
-#: gio/glib-compile-resources.c:741
+#: gio/glib-compile-resources.c:823
 msgid "Generate source header"
 msgstr "生成源码头文件"
 
-#: gio/glib-compile-resources.c:742
+#: gio/glib-compile-resources.c:824
 msgid "Generate source code used to link in the resource file into your code"
 msgstr "生成用于将资源文件链接到您代码的源代码"
 
-#: gio/glib-compile-resources.c:743
+#: gio/glib-compile-resources.c:825
 msgid "Generate dependency list"
 msgstr "生成依赖关系列表"
 
-#: gio/glib-compile-resources.c:744
+#: gio/glib-compile-resources.c:826
 msgid "Name of the dependency file to generate"
 msgstr "要生成的依赖文件名称"
 
-#: gio/glib-compile-resources.c:745
+#: gio/glib-compile-resources.c:827
 msgid "Include phony targets in the generated dependency file"
 msgstr "在生成的依赖关系文件中包含伪目标"
 
-#: gio/glib-compile-resources.c:746
+#: gio/glib-compile-resources.c:828
 msgid "Don’t automatically create and register resource"
 msgstr "不要自动创建和注册资源"
 
-#: gio/glib-compile-resources.c:747
+#: gio/glib-compile-resources.c:829
 msgid "Don’t export functions; declare them G_GNUC_INTERNAL"
 msgstr "不要导出函数;请将它们声明为 G_GNUC_INTERNAL"
 
-#: gio/glib-compile-resources.c:748
+#: gio/glib-compile-resources.c:830
 msgid ""
 "Don’t embed resource data in the C file; assume it's linked externally "
 "instead"
 msgstr "不要在 C 文件里嵌入资源数据;而假定它是以外部连接的"
 
-#: gio/glib-compile-resources.c:749
+#: gio/glib-compile-resources.c:831
 msgid "C identifier name used for the generated source code"
 msgstr "用于生成的源代码的 C 标识符名称"
 
-#: gio/glib-compile-resources.c:775
+#: gio/glib-compile-resources.c:832
+msgid "The target C compiler (default: the CC environment variable)"
+msgstr "目标 C 编译器(默认:CC 环境变量)"
+
+#: gio/glib-compile-resources.c:858
 msgid ""
 "Compile a resource specification into a resource file.\n"
 "Resource specification files have the extension .gresource.xml,\n"
@@ -2426,7 +2452,7 @@ msgstr ""
 "资源规格文件以 .gresource.xml 为扩展名,\n"
 "资源文件以 .gresource 为扩展名。"
 
-#: gio/glib-compile-resources.c:797
+#: gio/glib-compile-resources.c:880
 msgid "You should give exactly one file name\n"
 msgstr "您应该给定一个且只能一个文件名\n"
 
@@ -2921,8 +2947,8 @@ msgstr "重命名文件 %s 时出错:%s"
 msgid "Can’t rename file, filename already exists"
 msgstr "无法重命名文件,该文件名已存在"
 
-#: gio/glocalfile.c:1184 gio/glocalfile.c:2371 gio/glocalfile.c:2399
-#: gio/glocalfile.c:2538 gio/glocalfileoutputstream.c:656
+#: gio/glocalfile.c:1184 gio/glocalfile.c:2380 gio/glocalfile.c:2408
+#: gio/glocalfile.c:2547 gio/glocalfileoutputstream.c:656
 msgid "Invalid filename"
 msgstr "无效的文件名"
 
@@ -2936,91 +2962,91 @@ msgstr "打开文件 %s 时出错:%s"
 msgid "Error removing file %s: %s"
 msgstr "删除文件 %s 时出错:%s"
 
-#: gio/glocalfile.c:1982 gio/glocalfile.c:1993
+#: gio/glocalfile.c:1982 gio/glocalfile.c:1993 gio/glocalfile.c:2020
 #, c-format
 msgid "Error trashing file %s: %s"
 msgstr "将文件 %s 丢到回收站时出错:%s"
 
-#: gio/glocalfile.c:2031
+#: gio/glocalfile.c:2040
 #, c-format
 msgid "Unable to create trash directory %s: %s"
 msgstr "无法创建回收站目录 %s:%s"
 
-#: gio/glocalfile.c:2052
+#: gio/glocalfile.c:2061
 #, c-format
 msgid "Unable to find toplevel directory to trash %s"
 msgstr "找不到回收站 %s 的顶级目录"
 
-#: gio/glocalfile.c:2060
+#: gio/glocalfile.c:2069
 #, c-format
 msgid "Trashing on system internal mounts is not supported"
 msgstr "不支持在系统内部挂载上的丢弃到回收站操作"
 
-#: gio/glocalfile.c:2146 gio/glocalfile.c:2174
+#: gio/glocalfile.c:2155 gio/glocalfile.c:2183
 #, c-format
 msgid "Unable to find or create trash directory %s to trash %s"
 msgstr "无法找到或创建回收站目录 %s 来丢弃 %s"
 
-#: gio/glocalfile.c:2220
+#: gio/glocalfile.c:2229
 #, c-format
 msgid "Unable to create trashing info file for %s: %s"
 msgstr "为 %s 创建回收站信息文件失败:%s"
 
-#: gio/glocalfile.c:2282
+#: gio/glocalfile.c:2291
 #, c-format
 msgid "Unable to trash file %s across filesystem boundaries"
 msgstr "无法跨越文件系统边界将文件 %s 丢到回收站"
 
-#: gio/glocalfile.c:2286 gio/glocalfile.c:2342
+#: gio/glocalfile.c:2295 gio/glocalfile.c:2351
 #, c-format
 msgid "Unable to trash file %s: %s"
 msgstr "无法将文件 %s 丢到回收站:%s"
 
-#: gio/glocalfile.c:2348
+#: gio/glocalfile.c:2357
 #, c-format
 msgid "Unable to trash file %s"
 msgstr "无法将文件 %s 丢到回收站"
 
-#: gio/glocalfile.c:2374
+#: gio/glocalfile.c:2383
 #, c-format
 msgid "Error creating directory %s: %s"
 msgstr "创建目录 %s 时出错:%s"
 
-#: gio/glocalfile.c:2403
+#: gio/glocalfile.c:2412
 #, c-format
 msgid "Filesystem does not support symbolic links"
 msgstr "文件系统不支持符号链接"
 
-#: gio/glocalfile.c:2406
+#: gio/glocalfile.c:2415
 #, c-format
 msgid "Error making symbolic link %s: %s"
 msgstr "创建符号链接 %s 时出错:%s"
 
-#: gio/glocalfile.c:2449 gio/glocalfile.c:2484 gio/glocalfile.c:2541
+#: gio/glocalfile.c:2458 gio/glocalfile.c:2493 gio/glocalfile.c:2550
 #, c-format
 msgid "Error moving file %s: %s"
 msgstr "移动文件 %s 时出错:%s"
 
-#: gio/glocalfile.c:2472
+#: gio/glocalfile.c:2481
 msgid "Can’t move directory over directory"
 msgstr "无法将目录移动到目录"
 
-#: gio/glocalfile.c:2498 gio/glocalfileoutputstream.c:1108
+#: gio/glocalfile.c:2507 gio/glocalfileoutputstream.c:1108
 #: gio/glocalfileoutputstream.c:1122 gio/glocalfileoutputstream.c:1137
 #: gio/glocalfileoutputstream.c:1154 gio/glocalfileoutputstream.c:1168
 msgid "Backup file creation failed"
 msgstr "备份文件创建失败"
 
-#: gio/glocalfile.c:2517
+#: gio/glocalfile.c:2526
 #, c-format
 msgid "Error removing target file: %s"
 msgstr "移除目标文件出错:%s"
 
-#: gio/glocalfile.c:2531
+#: gio/glocalfile.c:2540
 msgid "Move between mounts not supported"
 msgstr "不支持在挂载之间移动"
 
-#: gio/glocalfile.c:2705
+#: gio/glocalfile.c:2714
 #, c-format
 msgid "Could not determine the disk usage of %s: %s"
 msgstr "无法确定 %s 的磁盘使用情况:%s"
@@ -3203,7 +3229,7 @@ msgid "Error truncating file: %s"
 msgstr "截断文件出错:%s"
 
 #: gio/glocalfileoutputstream.c:662 gio/glocalfileoutputstream.c:907
-#: gio/glocalfileoutputstream.c:1218 gio/gsubprocess.c:226
+#: gio/glocalfileoutputstream.c:1218 gio/gsubprocess.c:229
 #, c-format
 msgid "Error opening file “%s”: %s"
 msgstr "打开文件“%s”出错:%s"
@@ -3225,7 +3251,7 @@ msgstr "文件已经被其他程序修改"
 msgid "Error removing old file: %s"
 msgstr "移除旧文件出错:%s"
 
-#: gio/gmemoryinputstream.c:474 gio/gmemoryoutputstream.c:772
+#: gio/gmemoryinputstream.c:474 gio/gmemoryoutputstream.c:762
 msgid "Invalid GSeekType supplied"
 msgstr "提供的 GSeekType 无效"
 
@@ -3237,25 +3263,25 @@ msgstr "无效的搜寻请求"
 msgid "Cannot truncate GMemoryInputStream"
 msgstr "无法截断 GMemoryInputStream"
 
-#: gio/gmemoryoutputstream.c:567
+#: gio/gmemoryoutputstream.c:568
 msgid "Memory output stream not resizable"
 msgstr "内存输出流无法改变大小"
 
-#: gio/gmemoryoutputstream.c:583
+#: gio/gmemoryoutputstream.c:584
 msgid "Failed to resize memory output stream"
 msgstr "改变内存输出流大小失败"
 
-#: gio/gmemoryoutputstream.c:673
+#: gio/gmemoryoutputstream.c:663
 msgid ""
 "Amount of memory required to process the write is larger than available "
 "address space"
 msgstr "处理写入所需要的内存超过了可用的空间"
 
-#: gio/gmemoryoutputstream.c:782
+#: gio/gmemoryoutputstream.c:772
 msgid "Requested seek before the beginning of the stream"
 msgstr "请求的定位值在流的开始之前"
 
-#: gio/gmemoryoutputstream.c:797
+#: gio/gmemoryoutputstream.c:787
 msgid "Requested seek beyond the end of the stream"
 msgstr "请求的定位值在流的结束之后"
 
@@ -3335,12 +3361,12 @@ msgstr "无法创建网络监视器:"
 msgid "Could not get network status: "
 msgstr "无法获取网络状态:"
 
-#: gio/gnetworkmonitornm.c:348
+#: gio/gnetworkmonitornm.c:311
 #, c-format
 msgid "NetworkManager not running"
 msgstr "NetworkManager 未在运行"
 
-#: gio/gnetworkmonitornm.c:359
+#: gio/gnetworkmonitornm.c:322
 #, c-format
 msgid "NetworkManager version too old"
 msgstr "NetworkManager 版本太老"
@@ -3358,18 +3384,18 @@ msgstr "传递给 %s 的向量和太大"
 msgid "Source stream is already closed"
 msgstr "源流已经关闭"
 
-#: gio/gresolver.c:386 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
+#: gio/gresolver.c:401 gio/gthreadedresolver.c:150 gio/gthreadedresolver.c:168
 #, c-format
 msgid "Error resolving “%s”: %s"
 msgstr "解析“%s”时出错:%s"
 
 #. Translators: The placeholder is for a function name.
-#: gio/gresolver.c:455 gio/gresolver.c:615
+#: gio/gresolver.c:470 gio/gresolver.c:630
 #, c-format
 msgid "%s not implemented"
 msgstr "%s 尚未实现"
 
-#: gio/gresolver.c:984 gio/gresolver.c:1036
+#: gio/gresolver.c:999 gio/gresolver.c:1051
 msgid "Invalid domain"
 msgstr "无效的域"
 
@@ -3484,7 +3510,7 @@ msgstr ""
 msgid "  SECTION   An (optional) elf section name\n"
 msgstr "  段        一个 elf 段名(可选)\n"
 
-#: gio/gresource-tool.c:565 gio/gsettings-tool.c:706
+#: gio/gresource-tool.c:565 gio/gsettings-tool.c:718
 msgid "  COMMAND   The (optional) command to explain\n"
 msgstr "  命令      要解释的命令(可选)\n"
 
@@ -3516,7 +3542,7 @@ msgstr "路径"
 msgid "  PATH      A resource path\n"
 msgstr "  路径      一个资源路径\n"
 
-#: gio/gsettings-tool.c:49 gio/gsettings-tool.c:70 gio/gsettings-tool.c:911
+#: gio/gsettings-tool.c:49 gio/gsettings-tool.c:70 gio/gsettings-tool.c:923
 #, c-format
 msgid "No such schema “%s”\n"
 msgstr "没有“%s”这个架构\n"
@@ -3547,35 +3573,35 @@ msgstr "路径必须以斜杠结束(/)\n"
 msgid "Path must not contain two adjacent slashes (//)\n"
 msgstr "路径中不能包含连续两个斜杠(//)\n"
 
-#: gio/gsettings-tool.c:541
+#: gio/gsettings-tool.c:553
 msgid "The provided value is outside of the valid range\n"
 msgstr "提供的值不在有效范围内\n"
 
-#: gio/gsettings-tool.c:548
+#: gio/gsettings-tool.c:560
 msgid "The key is not writable\n"
 msgstr "键不可写\n"
 
-#: gio/gsettings-tool.c:584
+#: gio/gsettings-tool.c:596
 msgid "List the installed (non-relocatable) schemas"
 msgstr "列出已安装的(不可重定位的)架构"
 
-#: gio/gsettings-tool.c:590
+#: gio/gsettings-tool.c:602
 msgid "List the installed relocatable schemas"
 msgstr "列出安装的可重定位的架构"
 
-#: gio/gsettings-tool.c:596
+#: gio/gsettings-tool.c:608
 msgid "List the keys in SCHEMA"
 msgstr "列出架构中的键"
 
-#: gio/gsettings-tool.c:597 gio/gsettings-tool.c:603 gio/gsettings-tool.c:646
+#: gio/gsettings-tool.c:609 gio/gsettings-tool.c:615 gio/gsettings-tool.c:658
 msgid "SCHEMA[:PATH]"
 msgstr "架构[:路径]"
 
-#: gio/gsettings-tool.c:602
+#: gio/gsettings-tool.c:614
 msgid "List the children of SCHEMA"
 msgstr "列出架构的子对象"
 
-#: gio/gsettings-tool.c:608
+#: gio/gsettings-tool.c:620
 msgid ""
 "List keys and values, recursively\n"
 "If no SCHEMA is given, list all keys\n"
@@ -3583,48 +3609,48 @@ msgstr ""
 "递归列出键和值\n"
 "如果没有给出架构,列出所有键\n"
 
-#: gio/gsettings-tool.c:610
+#: gio/gsettings-tool.c:622
 msgid "[SCHEMA[:PATH]]"
 msgstr "架构[:路径]"
 
-#: gio/gsettings-tool.c:615
+#: gio/gsettings-tool.c:627
 msgid "Get the value of KEY"
 msgstr "获取键的值"
 
-#: gio/gsettings-tool.c:616 gio/gsettings-tool.c:622 gio/gsettings-tool.c:628
-#: gio/gsettings-tool.c:640 gio/gsettings-tool.c:652
+#: gio/gsettings-tool.c:628 gio/gsettings-tool.c:634 gio/gsettings-tool.c:640
+#: gio/gsettings-tool.c:652 gio/gsettings-tool.c:664
 msgid "SCHEMA[:PATH] KEY"
 msgstr "架构[:路径] 键"
 
-#: gio/gsettings-tool.c:621
+#: gio/gsettings-tool.c:633
 msgid "Query the range of valid values for KEY"
 msgstr "查询键的有效值范围"
 
-#: gio/gsettings-tool.c:627
+#: gio/gsettings-tool.c:639
 msgid "Query the description for KEY"
 msgstr "查询键的描述"
 
-#: gio/gsettings-tool.c:633
+#: gio/gsettings-tool.c:645
 msgid "Set the value of KEY to VALUE"
 msgstr "将键的值设为给定的键值"
 
-#: gio/gsettings-tool.c:634
+#: gio/gsettings-tool.c:646
 msgid "SCHEMA[:PATH] KEY VALUE"
 msgstr "架构[:路径] 键 键值"
 
-#: gio/gsettings-tool.c:639
+#: gio/gsettings-tool.c:651
 msgid "Reset KEY to its default value"
 msgstr "将键重设为默认值"
 
-#: gio/gsettings-tool.c:645
+#: gio/gsettings-tool.c:657
 msgid "Reset all keys in SCHEMA to their defaults"
 msgstr "重置架构中所有键为默认值"
 
-#: gio/gsettings-tool.c:651
+#: gio/gsettings-tool.c:663
 msgid "Check if KEY is writable"
 msgstr "查看键是否可写"
 
-#: gio/gsettings-tool.c:657
+#: gio/gsettings-tool.c:669
 msgid ""
 "Monitor KEY for changes.\n"
 "If no KEY is specified, monitor all keys in SCHEMA.\n"
@@ -3634,11 +3660,11 @@ msgstr ""
 "如果没有指定键,则监视架构中的所有键。\n"
 "使用 ^C 停止监视。\n"
 
-#: gio/gsettings-tool.c:660
+#: gio/gsettings-tool.c:672
 msgid "SCHEMA[:PATH] [KEY]"
 msgstr "架构[:路径] [键]"
 
-#: gio/gsettings-tool.c:672
+#: gio/gsettings-tool.c:684
 msgid ""
 "Usage:\n"
 "  gsettings --version\n"
@@ -3686,7 +3712,7 @@ msgstr ""
 "使用“gsettings help 命令”查看详细的帮助。\n"
 "\n"
 
-#: gio/gsettings-tool.c:696
+#: gio/gsettings-tool.c:708
 #, c-format
 msgid ""
 "Usage:\n"
@@ -3701,11 +3727,11 @@ msgstr ""
 "%s\n"
 "\n"
 
-#: gio/gsettings-tool.c:702
+#: gio/gsettings-tool.c:714
 msgid "  SCHEMADIR A directory to search for additional schemas\n"
 msgstr "  架构目录  一个用于搜索附加架构的目录\n"
 
-#: gio/gsettings-tool.c:710
+#: gio/gsettings-tool.c:722
 msgid ""
 "  SCHEMA    The name of the schema\n"
 "  PATH      The path, for relocatable schemas\n"
@@ -3713,212 +3739,212 @@ msgstr ""
 "  架构      架构的名称\n"
 "  路径      可重定位架构的路径\n"
 
-#: gio/gsettings-tool.c:715
+#: gio/gsettings-tool.c:727
 msgid "  KEY       The (optional) key within the schema\n"
 msgstr "  键        架构中(可选)的键\n"
 
-#: gio/gsettings-tool.c:719
+#: gio/gsettings-tool.c:731
 msgid "  KEY       The key within the schema\n"
 msgstr "  键        架构中的键\n"
 
-#: gio/gsettings-tool.c:723
+#: gio/gsettings-tool.c:735
 msgid "  VALUE     The value to set\n"
 msgstr "  键值      要设的值\n"
 
-#: gio/gsettings-tool.c:778
+#: gio/gsettings-tool.c:790
 #, c-format
 msgid "Could not load schemas from %s: %s\n"
 msgstr "无法从 %s 加载架构:%s\n"
 
-#: gio/gsettings-tool.c:790
+#: gio/gsettings-tool.c:802
 msgid "No schemas installed\n"
 msgstr "没有安装架构\n"
 
-#: gio/gsettings-tool.c:869
+#: gio/gsettings-tool.c:881
 msgid "Empty schema name given\n"
 msgstr "给定了空的架构名称\n"
 
-#: gio/gsettings-tool.c:924
+#: gio/gsettings-tool.c:936
 #, c-format
 msgid "No such key “%s”\n"
 msgstr "没有“%s”这个键\n"
 
-#: gio/gsocket.c:413
+#: gio/gsocket.c:417
 msgid "Invalid socket, not initialized"
 msgstr "无效的套接字,尚未初始化"
 
-#: gio/gsocket.c:420
+#: gio/gsocket.c:424
 #, c-format
 msgid "Invalid socket, initialization failed due to: %s"
 msgstr "无效的套接字,初始化失败的原因是:%s"
 
-#: gio/gsocket.c:428
+#: gio/gsocket.c:432
 msgid "Socket is already closed"
 msgstr "套接字已经关闭"
 
-#: gio/gsocket.c:443 gio/gsocket.c:3190 gio/gsocket.c:4420 gio/gsocket.c:4478
+#: gio/gsocket.c:447 gio/gsocket.c:3194 gio/gsocket.c:4427 gio/gsocket.c:4485
 msgid "Socket I/O timed out"
 msgstr "套接字 I/O 超时"
 
 # "fd" is abbr. of "File Descriptor", 文件描述符
-#: gio/gsocket.c:578
+#: gio/gsocket.c:582
 #, c-format
 msgid "creating GSocket from fd: %s"
 msgstr "正在从文件描述符创建 GSocket:%s"
 
-#: gio/gsocket.c:607 gio/gsocket.c:671 gio/gsocket.c:678
+#: gio/gsocket.c:611 gio/gsocket.c:675 gio/gsocket.c:682
 #, c-format
 msgid "Unable to create socket: %s"
 msgstr "无法创建套接字:%s"
 
-#: gio/gsocket.c:671
+#: gio/gsocket.c:675
 msgid "Unknown family was specified"
 msgstr "指定了未知协议族"
 
-#: gio/gsocket.c:678
+#: gio/gsocket.c:682
 msgid "Unknown protocol was specified"
 msgstr "指定了未知协议"
 
-#: gio/gsocket.c:1169
+#: gio/gsocket.c:1173
 #, c-format
 msgid "Cannot use datagram operations on a non-datagram socket."
 msgstr "无法在非数据报套接字上使用数据报操作。"
 
-#: gio/gsocket.c:1186
+#: gio/gsocket.c:1190
 #, c-format
 msgid "Cannot use datagram operations on a socket with a timeout set."
 msgstr "无法在已设置超时的套接字上使用数据报操作。"
 
-#: gio/gsocket.c:1993
+#: gio/gsocket.c:1997
 #, c-format
 msgid "could not get local address: %s"
 msgstr "无法获取本地地址:%s"
 
-#: gio/gsocket.c:2039
+#: gio/gsocket.c:2043
 #, c-format
 msgid "could not get remote address: %s"
 msgstr "无法获取远程地址: %s"
 
-#: gio/gsocket.c:2105
+#: gio/gsocket.c:2109
 #, c-format
 msgid "could not listen: %s"
 msgstr "无法监听:%s"
 
-#: gio/gsocket.c:2209
+#: gio/gsocket.c:2213
 #, c-format
 msgid "Error binding to address %s: %s"
 msgstr "绑定地址时出错:%s: %s"
 
-#: gio/gsocket.c:2385 gio/gsocket.c:2422 gio/gsocket.c:2532 gio/gsocket.c:2557
-#: gio/gsocket.c:2620 gio/gsocket.c:2678 gio/gsocket.c:2696
+#: gio/gsocket.c:2389 gio/gsocket.c:2426 gio/gsocket.c:2536 gio/gsocket.c:2561
+#: gio/gsocket.c:2624 gio/gsocket.c:2682 gio/gsocket.c:2700
 #, c-format
 msgid "Error joining multicast group: %s"
 msgstr "加入多播组时出错:%s"
 
-#: gio/gsocket.c:2386 gio/gsocket.c:2423 gio/gsocket.c:2533 gio/gsocket.c:2558
-#: gio/gsocket.c:2621 gio/gsocket.c:2679 gio/gsocket.c:2697
+#: gio/gsocket.c:2390 gio/gsocket.c:2427 gio/gsocket.c:2537 gio/gsocket.c:2562
+#: gio/gsocket.c:2625 gio/gsocket.c:2683 gio/gsocket.c:2701
 #, c-format
 msgid "Error leaving multicast group: %s"
 msgstr "退出多播组时出错:%s"
 
-#: gio/gsocket.c:2387
+#: gio/gsocket.c:2391
 msgid "No support for source-specific multicast"
 msgstr "不支持指定源的多播"
 
-#: gio/gsocket.c:2534
+#: gio/gsocket.c:2538
 msgid "Unsupported socket family"
 msgstr "不支持的套接字家族"
 
-#: gio/gsocket.c:2559
+#: gio/gsocket.c:2563
 msgid "source-specific not an IPv4 address"
 msgstr "指定源不是 IPv4 地址"
 
-#: gio/gsocket.c:2583
+#: gio/gsocket.c:2587
 #, c-format
 msgid "Interface name too long"
 msgstr "接口名太长"
 
-#: gio/gsocket.c:2596 gio/gsocket.c:2646
+#: gio/gsocket.c:2600 gio/gsocket.c:2650
 #, c-format
 msgid "Interface not found: %s"
 msgstr "未找到接口:%s"
 
-#: gio/gsocket.c:2622
+#: gio/gsocket.c:2626
 msgid "No support for IPv4 source-specific multicast"
 msgstr "不支持 IPv4 指定源的多播"
 
-#: gio/gsocket.c:2680
+#: gio/gsocket.c:2684
 msgid "No support for IPv6 source-specific multicast"
 msgstr "不支持 IPv6 指定源的多播"
 
-#: gio/gsocket.c:2889
+#: gio/gsocket.c:2893
 #, c-format
 msgid "Error accepting connection: %s"
 msgstr "接受连接时出错:%s"
 
-#: gio/gsocket.c:3015
+#: gio/gsocket.c:3019
 msgid "Connection in progress"
 msgstr "连接进行中"
 
-#: gio/gsocket.c:3066
+#: gio/gsocket.c:3070
 msgid "Unable to get pending error: "
 msgstr "无法获取未决的错误:"
 
-#: gio/gsocket.c:3255
+#: gio/gsocket.c:3259
 #, c-format
 msgid "Error receiving data: %s"
 msgstr "接收数据时出错:%s"
 
-#: gio/gsocket.c:3452
+#: gio/gsocket.c:3456
 #, c-format
 msgid "Error sending data: %s"
 msgstr "发送数据时出错:%s"
 
-#: gio/gsocket.c:3639
+#: gio/gsocket.c:3643
 #, c-format
 msgid "Unable to shutdown socket: %s"
 msgstr "无法关闭套接字:%s"
 
-#: gio/gsocket.c:3720
+#: gio/gsocket.c:3724
 #, c-format
 msgid "Error closing socket: %s"
 msgstr "关闭套接字时出错:%s"
 
-#: gio/gsocket.c:4413
+#: gio/gsocket.c:4420
 #, c-format
 msgid "Waiting for socket condition: %s"
 msgstr "等待套接字状态:%s"
 
-#: gio/gsocket.c:4804 gio/gsocket.c:4820 gio/gsocket.c:4833
+#: gio/gsocket.c:4810 gio/gsocket.c:4826 gio/gsocket.c:4839
 #, c-format
 msgid "Unable to send message: %s"
 msgstr "无法发送信息:%s"
 
-#: gio/gsocket.c:4805 gio/gsocket.c:4821 gio/gsocket.c:4834
+#: gio/gsocket.c:4811 gio/gsocket.c:4827 gio/gsocket.c:4840
 msgid "Message vectors too large"
 msgstr "信息向量过大"
 
-#: gio/gsocket.c:4850 gio/gsocket.c:4852 gio/gsocket.c:4999 gio/gsocket.c:5084
-#: gio/gsocket.c:5262 gio/gsocket.c:5302 gio/gsocket.c:5304
+#: gio/gsocket.c:4856 gio/gsocket.c:4858 gio/gsocket.c:5005 gio/gsocket.c:5090
+#: gio/gsocket.c:5268 gio/gsocket.c:5308 gio/gsocket.c:5310
 #, c-format
 msgid "Error sending message: %s"
 msgstr "发送信息时出错:%s"
 
-#: gio/gsocket.c:5026
+#: gio/gsocket.c:5032
 msgid "GSocketControlMessage not supported on Windows"
 msgstr "Windows 不支持 GSocketControlMessage"
 
-#: gio/gsocket.c:5495 gio/gsocket.c:5571 gio/gsocket.c:5797
+#: gio/gsocket.c:5505 gio/gsocket.c:5581 gio/gsocket.c:5807
 #, c-format
 msgid "Error receiving message: %s"
 msgstr "接受信息时出错:%s"
 
-#: gio/gsocket.c:6070 gio/gsocket.c:6081 gio/gsocket.c:6127
+#: gio/gsocket.c:6090 gio/gsocket.c:6101 gio/gsocket.c:6164
 #, c-format
 msgid "Unable to read socket credentials: %s"
 msgstr "无法读取套接字认证信息:%s"
 
-#: gio/gsocket.c:6136
+#: gio/gsocket.c:6173
 msgid "g_socket_get_credentials not implemented for this OS"
 msgstr "此操作系统上没有实现 g_socket_get_credentials"
 
@@ -3936,11 +3962,11 @@ msgstr "无法连接到 %s:"
 msgid "Could not connect: "
 msgstr "无法连接:"
 
-#: gio/gsocketclient.c:1162 gio/gsocketclient.c:1749
+#: gio/gsocketclient.c:1202 gio/gsocketclient.c:1793
 msgid "Proxying over a non-TCP connection is not supported."
 msgstr "不支持通过非 TCP 连接的代理。"
 
-#: gio/gsocketclient.c:1194 gio/gsocketclient.c:1778
+#: gio/gsocketclient.c:1234 gio/gsocketclient.c:1822
 #, c-format
 msgid "Proxy protocol “%s” is not supported."
 msgstr "不支持代理协议“%s”。"
@@ -4038,6 +4064,16 @@ msgstr "SOCKSv5 代理不支持提供的地址类型。"
 msgid "Unknown SOCKSv5 proxy error."
 msgstr "未知 SOCKSv5 代理错误。"
 
+#: gio/gtestdbus.c:612 glib/gspawn-win32.c:314
+#, c-format
+msgid "Failed to create pipe for communicating with child process (%s)"
+msgstr "创建与子进程通讯的管道失败(%s)"
+
+#: gio/gtestdbus.c:619
+#, c-format
+msgid "Pipes are not supported in this platform"
+msgstr "此平台不支持管道(pipe)"
+
 #: gio/gthemedicon.c:595
 #, c-format
 msgid "Can’t handle version %d of GThemedIcon encoding"
@@ -4069,27 +4105,31 @@ msgstr "暂时无法解析“%s”"
 msgid "Error resolving “%s”"
 msgstr "解析“%s”时出错"
 
-#: gio/gtlscertificate.c:431
+#: gio/gtlscertificate.c:478
 msgid "No PEM-encoded private key found"
 msgstr "未找到 PEM 加密的私钥"
 
-#: gio/gtlscertificate.c:441
+#: gio/gtlscertificate.c:488
 msgid "Cannot decrypt PEM-encoded private key"
 msgstr "无法解密 PEM 加密的私钥"
 
-#: gio/gtlscertificate.c:452
+#: gio/gtlscertificate.c:499
 msgid "Could not parse PEM-encoded private key"
 msgstr "无法解析 PEM 加密的私钥"
 
-#: gio/gtlscertificate.c:479
+#: gio/gtlscertificate.c:526
 msgid "No PEM-encoded certificate found"
 msgstr "未找到 PEM 加密的证书"
 
-#: gio/gtlscertificate.c:488
+#: gio/gtlscertificate.c:535
 msgid "Could not parse PEM-encoded certificate"
 msgstr "无法解析 PEM 加密的证书"
 
-#: gio/gtlscertificate.c:844
+#: gio/gtlscertificate.c:796
+msgid "The current TLS backend does not support PKCS #12"
+msgstr "当前的 TLS 后端不支持 PKCS #12"
+
+#: gio/gtlscertificate.c:1013
 msgid "This GTlsBackend does not support creating PKCS #11 certificates"
 msgstr "本 GTlsBackend 不支持创建 PKCS #11 证书"
 
@@ -4111,51 +4151,59 @@ msgstr "密码多次输入错误,您的访问将在数次错误输入后锁定
 msgid "The password entered is incorrect."
 msgstr "输入的密码不正确。"
 
-#: gio/gunixconnection.c:166 gio/gunixconnection.c:579
+#: gio/gunixconnection.c:125
+msgid "Sending FD is not supported"
+msgstr "不支持发送 FD"
+
+#: gio/gunixconnection.c:178 gio/gunixconnection.c:596
 #, c-format
 msgid "Expecting 1 control message, got %d"
 msgid_plural "Expecting 1 control message, got %d"
 msgstr[0] "应为 1 个控件消息,却得到 %d 个"
 
-#: gio/gunixconnection.c:182 gio/gunixconnection.c:591
+#: gio/gunixconnection.c:194 gio/gunixconnection.c:608
 msgid "Unexpected type of ancillary data"
 msgstr "非预期的辅助数据类型"
 
-#: gio/gunixconnection.c:200
+#: gio/gunixconnection.c:212
 #, c-format
 msgid "Expecting one fd, but got %d\n"
 msgid_plural "Expecting one fd, but got %d\n"
 msgstr[0] "应为 1 个文件描述符,却得到 %d 个\n"
 
-#: gio/gunixconnection.c:219
+#: gio/gunixconnection.c:231
 msgid "Received invalid fd"
 msgstr "收到无效文件描述符"
 
-#: gio/gunixconnection.c:363
+#: gio/gunixconnection.c:238
+msgid "Receiving FD is not supported"
+msgstr "不支持接收 FD"
+
+#: gio/gunixconnection.c:380
 msgid "Error sending credentials: "
 msgstr "发送凭据时出错:"
 
-#: gio/gunixconnection.c:520
+#: gio/gunixconnection.c:537
 #, c-format
 msgid "Error checking if SO_PASSCRED is enabled for socket: %s"
 msgstr "检查套接字是否启用 SO_PASSCRED 时出错:%s"
 
-#: gio/gunixconnection.c:536
+#: gio/gunixconnection.c:553
 #, c-format
 msgid "Error enabling SO_PASSCRED: %s"
 msgstr "启用 SO_PASSCRED 时出错:%s"
 
-#: gio/gunixconnection.c:565
+#: gio/gunixconnection.c:582
 msgid ""
 "Expecting to read a single byte for receiving credentials but read zero bytes"
 msgstr "期望为接收证书读到单个字节但是只读到了 0 字节"
 
-#: gio/gunixconnection.c:605
+#: gio/gunixconnection.c:622
 #, c-format
 msgid "Not expecting control message, but got %d"
 msgstr "未期望控制信息,却得到 %d 个"
 
-#: gio/gunixconnection.c:630
+#: gio/gunixconnection.c:647
 #, c-format
 msgid "Error while disabling SO_PASSCRED: %s"
 msgstr "禁用 SO_PASSCRED 时出错:%s"
@@ -4171,7 +4219,7 @@ msgstr "从文件描述符读取时出错:%s"
 msgid "Error closing file descriptor: %s"
 msgstr "关闭文件描述符时出错:%s"
 
-#: gio/gunixmounts.c:2785 gio/gunixmounts.c:2838
+#: gio/gunixmounts.c:2782 gio/gunixmounts.c:2835
 msgid "Filesystem root"
 msgstr "文件系统根目录"
 
@@ -4182,7 +4230,7 @@ msgstr "文件系统根目录"
 msgid "Error writing to file descriptor: %s"
 msgstr "写入文件描述符时出错:%s"
 
-#: gio/gunixsocketaddress.c:244
+#: gio/gunixsocketaddress.c:251
 msgid "Abstract UNIX domain socket addresses not supported on this system"
 msgstr "本系统不支持抽象 Unix 域套接字地址"
 
@@ -4332,8 +4380,8 @@ msgstr "用 URI“%2$s”展开 exec 行“%1$s”失败"
 msgid "Unrepresentable character in conversion input"
 msgstr "转换输入中出现无法表达的字符"
 
-#: glib/gconvert.c:495 glib/gutf8.c:871 glib/gutf8.c:1083 glib/gutf8.c:1220
-#: glib/gutf8.c:1324
+#: glib/gconvert.c:495 glib/gutf8.c:886 glib/gutf8.c:1099 glib/gutf8.c:1236
+#: glib/gutf8.c:1340
 msgid "Partial character sequence at end of input"
 msgstr "输入末尾出现未尽字符序列"
 
@@ -4802,78 +4850,78 @@ msgstr "下午"
 msgid "Error opening directory “%s”: %s"
 msgstr "打开目录“%s”时出错:%s"
 
-#: glib/gfileutils.c:738 glib/gfileutils.c:830
+#: glib/gfileutils.c:733 glib/gfileutils.c:825
 #, c-format
 msgid "Could not allocate %lu byte to read file “%s”"
 msgid_plural "Could not allocate %lu bytes to read file “%s”"
 msgstr[0] "无法分配 %lu 字节以读取文件“%s”"
 
-#: glib/gfileutils.c:755
+#: glib/gfileutils.c:750
 #, c-format
 msgid "Error reading file “%s”: %s"
 msgstr "读取文件“%s”时出错:%s"
 
-#: glib/gfileutils.c:791
+#: glib/gfileutils.c:786
 #, c-format
 msgid "File “%s” is too large"
 msgstr "文件“%s”过大"
 
-#: glib/gfileutils.c:855
+#: glib/gfileutils.c:850
 #, c-format
 msgid "Failed to read from file “%s”: %s"
 msgstr "读取文件“%s”失败:%s"
 
-#: glib/gfileutils.c:905 glib/gfileutils.c:980 glib/gfileutils.c:1469
+#: glib/gfileutils.c:900 glib/gfileutils.c:975 glib/gfileutils.c:1447
 #, c-format
 msgid "Failed to open file “%s”: %s"
 msgstr "打开文件“%s”失败:%s"
 
-#: glib/gfileutils.c:918
+#: glib/gfileutils.c:913
 #, c-format
 msgid "Failed to get attributes of file “%s”: fstat() failed: %s"
 msgstr "获得文件“%s”的属性失败:fstat() 失败:%s"
 
-#: glib/gfileutils.c:949
+#: glib/gfileutils.c:944
 #, c-format
 msgid "Failed to open file “%s”: fdopen() failed: %s"
 msgstr "打开文件“%s”失败:fdopen() 失败:%s"
 
-#: glib/gfileutils.c:1050
+#: glib/gfileutils.c:1045
 #, c-format
 msgid "Failed to rename file “%s” to “%s”: g_rename() failed: %s"
 msgstr "将文件“%s”重命名为“%s”失败:g_rename() 失败:%s"
 
-#: glib/gfileutils.c:1176
+#: glib/gfileutils.c:1154
 #, c-format
 msgid "Failed to write file “%s”: write() failed: %s"
 msgstr "写入文件“%s”失败:write() 失败:%s"
 
-#: glib/gfileutils.c:1197
+#: glib/gfileutils.c:1175
 #, c-format
 msgid "Failed to write file “%s”: fsync() failed: %s"
 msgstr "写入文件“%s”失败:fsync() 失败:%s"
 
-#: glib/gfileutils.c:1358 glib/gfileutils.c:1773
+#: glib/gfileutils.c:1336 glib/gfileutils.c:1751
 #, c-format
 msgid "Failed to create file “%s”: %s"
 msgstr "创建文件“%s”失败:%s"
 
-#: glib/gfileutils.c:1403
+#: glib/gfileutils.c:1381
 #, c-format
 msgid "Existing file “%s” could not be removed: g_unlink() failed: %s"
 msgstr "无法删除已有文件“%s”:g_unlink() 失败:%s"
 
-#: glib/gfileutils.c:1738
+#: glib/gfileutils.c:1716
 #, c-format
 msgid "Template “%s” invalid, should not contain a “%s”"
 msgstr "模板“%s”无效,不应该包含“%s”"
 
-#: glib/gfileutils.c:1751
+#: glib/gfileutils.c:1729
 #, c-format
 msgid "Template “%s” doesn’t contain XXXXXX"
 msgstr "模板“%s”不包含 XXXXXX"
 
-#: glib/gfileutils.c:2311 glib/gfileutils.c:2340
+#: glib/gfileutils.c:2289 glib/gfileutils.c:2318
 #, c-format
 msgid "Failed to read the symbolic link “%s”: %s"
 msgstr "读取符号链接“%s”失败:%s"
@@ -4899,99 +4947,99 @@ msgstr "通道终止于未尽字符"
 msgid "Can’t do a raw read in g_io_channel_read_to_end"
 msgstr "g_io_channel_read_to_end 函数无法进行原始读取"
 
-#: glib/gkeyfile.c:791
+#: glib/gkeyfile.c:794
 msgid "Valid key file could not be found in search dirs"
 msgstr "在搜索目录中无法找到有效的键文件"
 
-#: glib/gkeyfile.c:828
+#: glib/gkeyfile.c:831
 msgid "Not a regular file"
 msgstr "不是普通文件"
 
-#: glib/gkeyfile.c:1283
+#: glib/gkeyfile.c:1289
 #, c-format
 msgid ""
 "Key file contains line “%s” which is not a key-value pair, group, or comment"
 msgstr "键文件包含不是键-值对、组或注释的行“%s”"
 
-#: glib/gkeyfile.c:1340
+#: glib/gkeyfile.c:1346
 #, c-format
 msgid "Invalid group name: %s"
 msgstr "无效的组名:%s"
 
-#: glib/gkeyfile.c:1362
+#: glib/gkeyfile.c:1370
 msgid "Key file does not start with a group"
 msgstr "键文件不以组开始"
 
-#: glib/gkeyfile.c:1388
+#: glib/gkeyfile.c:1394
 #, c-format
-msgid "Invalid key name: %s"
-msgstr "无效的键名:%s"
+msgid "Invalid key name: %.*s"
+msgstr "无效的键名:%.*s"
 
-#: glib/gkeyfile.c:1415
+#: glib/gkeyfile.c:1422
 #, c-format
 msgid "Key file contains unsupported encoding “%s”"
 msgstr "键文件包含不支持的编码“%s”"
 
-#: glib/gkeyfile.c:1664 glib/gkeyfile.c:1837 glib/gkeyfile.c:3290
-#: glib/gkeyfile.c:3354 glib/gkeyfile.c:3484 glib/gkeyfile.c:3616
-#: glib/gkeyfile.c:3762 glib/gkeyfile.c:3997 glib/gkeyfile.c:4064
+#: glib/gkeyfile.c:1677 glib/gkeyfile.c:1850 glib/gkeyfile.c:3297
+#: glib/gkeyfile.c:3361 glib/gkeyfile.c:3491 glib/gkeyfile.c:3623
+#: glib/gkeyfile.c:3769 glib/gkeyfile.c:4004 glib/gkeyfile.c:4071
 #, c-format
 msgid "Key file does not have group “%s”"
 msgstr "键文件没有组“%s”"
 
-#: glib/gkeyfile.c:1792
+#: glib/gkeyfile.c:1805
 #, c-format
 msgid "Key file does not have key “%s” in group “%s”"
 msgstr "键文件在组“%2$s”中没有键“%1$s”"
 
-#: glib/gkeyfile.c:1954 glib/gkeyfile.c:2070
+#: glib/gkeyfile.c:1967 glib/gkeyfile.c:2083
 #, c-format
 msgid "Key file contains key “%s” with value “%s” which is not UTF-8"
 msgstr "键文件包含键“%s”,其值“%s”不是 UTF-8"
 
-#: glib/gkeyfile.c:1974 glib/gkeyfile.c:2090 glib/gkeyfile.c:2532
+#: glib/gkeyfile.c:1987 glib/gkeyfile.c:2103 glib/gkeyfile.c:2542
 #, c-format
 msgid ""
 "Key file contains key “%s” which has a value that cannot be interpreted."
 msgstr "键文件包含键“%s”,其值无法解析。"
 
-#: glib/gkeyfile.c:2750 glib/gkeyfile.c:3119
+#: glib/gkeyfile.c:2757 glib/gkeyfile.c:3126
 #, c-format
 msgid ""
 "Key file contains key “%s” in group “%s” which has a value that cannot be "
 "interpreted."
 msgstr "键文件包含组“%2$s”中的键“%1$s”,其值无法解释。"
 
-#: glib/gkeyfile.c:2828 glib/gkeyfile.c:2905
+#: glib/gkeyfile.c:2835 glib/gkeyfile.c:2912
 #, c-format
 msgid "Key “%s” in group “%s” has value “%s” where %s was expected"
 msgstr "组“%2$s”中的键“%1$s”的值为“%3$s”,应为 %4$s"
 
-#: glib/gkeyfile.c:4307
+#: glib/gkeyfile.c:4324
 msgid "Key file contains escape character at end of line"
 msgstr "键文件在行尾含有转义字符"
 
-#: glib/gkeyfile.c:4329
+#: glib/gkeyfile.c:4346
 #, c-format
 msgid "Key file contains invalid escape sequence “%s”"
 msgstr "键文件中包含无效的转义序列“%s”"
 
-#: glib/gkeyfile.c:4473
+#: glib/gkeyfile.c:4491
 #, c-format
 msgid "Value “%s” cannot be interpreted as a number."
 msgstr "无法将值“%s”解释为数值。"
 
-#: glib/gkeyfile.c:4487
+#: glib/gkeyfile.c:4505
 #, c-format
 msgid "Integer value “%s” out of range"
 msgstr "整数值“%s”超出范围"
 
-#: glib/gkeyfile.c:4520
+#: glib/gkeyfile.c:4538
 #, c-format
 msgid "Value “%s” cannot be interpreted as a float number."
 msgstr "无法将值“%s”解释为浮点数。"
 
-#: glib/gkeyfile.c:4559
+#: glib/gkeyfile.c:4577
 #, c-format
 msgid "Value “%s” cannot be interpreted as a boolean."
 msgstr "无法将值“%s”解释为布尔值。"
@@ -5258,7 +5306,7 @@ msgstr "解析选项 %s 时出错"
 msgid "Missing argument for %s"
 msgstr "缺少 %s 的参数"
 
-#: glib/goption.c:2185
+#: glib/goption.c:2184
 #, c-format
 msgid "Unknown option %s"
 msgstr "未知选项 %s"
@@ -5665,131 +5713,141 @@ msgstr "在从子进程中读取数据时出现异常错误(%s)"
 msgid "Unexpected error in waitpid() (%s)"
 msgstr "waitpid() 出现异常错误(%s)"
 
-#: glib/gspawn.c:1166 glib/gspawn-win32.c:1407
+#: glib/gspawn.c:1168 glib/gspawn-win32.c:1426
 #, c-format
 msgid "Child process exited with code %ld"
 msgstr "子进程已退出,代码 %ld"
 
-#: glib/gspawn.c:1174
+#: glib/gspawn.c:1176
 #, c-format
 msgid "Child process killed by signal %ld"
 msgstr "子进程已由信号 %ld 杀死"
 
-#: glib/gspawn.c:1181
+#: glib/gspawn.c:1183
 #, c-format
 msgid "Child process stopped by signal %ld"
 msgstr "子进程已由信号 %ld 停止"
 
-#: glib/gspawn.c:1188
+#: glib/gspawn.c:1190
 #, c-format
 msgid "Child process exited abnormally"
 msgstr "子进程异常中止"
 
-#: glib/gspawn.c:1855 glib/gspawn-win32.c:350 glib/gspawn-win32.c:358
+#: glib/gspawn.c:1881 glib/gspawn-win32.c:353 glib/gspawn-win32.c:361
 #, c-format
 msgid "Failed to read from child pipe (%s)"
 msgstr "从子管道中读取失败(%s)"
 
-#: glib/gspawn.c:2157
+#: glib/gspawn.c:2241
 #, c-format
 msgid "Failed to spawn child process “%s” (%s)"
 msgstr "生成子进程“%s”失败(%s)"
 
-#: glib/gspawn.c:2274
+#: glib/gspawn.c:2358
 #, c-format
 msgid "Failed to fork (%s)"
 msgstr "fork 失败(%s)"
 
-#: glib/gspawn.c:2434 glib/gspawn-win32.c:381
+#: glib/gspawn.c:2518 glib/gspawn-win32.c:384
 #, c-format
 msgid "Failed to change to directory “%s” (%s)"
 msgstr "切换到目录“%s”失败(%s)"
 
-#: glib/gspawn.c:2444
+#: glib/gspawn.c:2528
 #, c-format
 msgid "Failed to execute child process “%s” (%s)"
 msgstr "执行子进程“%s”失败(%s)"
 
-#: glib/gspawn.c:2454
+#: glib/gspawn.c:2538
 #, c-format
-msgid "Failed to redirect output or input of child process (%s)"
-msgstr "重定位子进程(%s)的输入或输出失败"
+msgid "Failed to open file to remap file descriptor (%s)"
+msgstr "打开文件以重新映射文件描述符失败(%s)"
 
-#: glib/gspawn.c:2463
+#: glib/gspawn.c:2546
+#, c-format
+msgid "Failed to duplicate file descriptor for child process (%s)"
+msgstr "为子进程复制文件描述符失败(%s)"
+
+#: glib/gspawn.c:2555
 #, c-format
 msgid "Failed to fork child process (%s)"
 msgstr "fork 子进程失败(%s)"
 
-#: glib/gspawn.c:2471
+#: glib/gspawn.c:2563
+#, c-format
+msgid "Failed to close file descriptor for child process (%s)"
+msgstr "为子进程关闭文件描述符失败(%s)"
+
+#: glib/gspawn.c:2571
 #, c-format
 msgid "Unknown error executing child process “%s”"
 msgstr "执行子进程“%s”时出现未知错误"
 
-#: glib/gspawn.c:2495
+#: glib/gspawn.c:2595
 #, c-format
 msgid "Failed to read enough data from child pid pipe (%s)"
 msgstr "从子进程管道中读取足够的数据失败(%s)"
 
-#: glib/gspawn-win32.c:294
+#: glib/gspawn-win32.c:297
 msgid "Failed to read data from child process"
 msgstr "从子进程中读取数据失败"
 
-#: glib/gspawn-win32.c:311
-#, c-format
-msgid "Failed to create pipe for communicating with child process (%s)"
-msgstr "创建与子进程通讯的管道失败(%s)"
-
-#: glib/gspawn-win32.c:387 glib/gspawn-win32.c:392 glib/gspawn-win32.c:511
+#: glib/gspawn-win32.c:390 glib/gspawn-win32.c:395 glib/gspawn-win32.c:519
 #, c-format
 msgid "Failed to execute child process (%s)"
 msgstr "执行子进程失败(%s)"
 
-#: glib/gspawn-win32.c:461
+#: glib/gspawn-win32.c:400
+#, c-format
+msgid "Failed to dup() in child process (%s)"
+msgstr "在子进程中 dup() 失败(%s)"
+
+#: glib/gspawn-win32.c:469
 #, c-format
 msgid "Invalid program name: %s"
 msgstr "无效的程序名:%s"
 
-#: glib/gspawn-win32.c:471 glib/gspawn-win32.c:779
+#: glib/gspawn-win32.c:479 glib/gspawn-win32.c:797
 #, c-format
 msgid "Invalid string in argument vector at %d: %s"
 msgstr "%d 处的参数向量中有无效的字符串:%s"
 
-#: glib/gspawn-win32.c:482 glib/gspawn-win32.c:794
+#: glib/gspawn-win32.c:490 glib/gspawn-win32.c:813
 #, c-format
 msgid "Invalid string in environment: %s"
 msgstr "环境中有无效的字符串:%s"
 
-#: glib/gspawn-win32.c:775
+#: glib/gspawn-win32.c:793
 #, c-format
 msgid "Invalid working directory: %s"
 msgstr "无效的工作目录:%s"
 
-#: glib/gspawn-win32.c:837
+#: glib/gspawn-win32.c:858
 #, c-format
 msgid "Failed to execute helper program (%s)"
 msgstr "执行助手程序(%s)失败"
 
-#: glib/gspawn-win32.c:1064
+#: glib/gspawn-win32.c:1086
 msgid ""
 "Unexpected error in g_io_channel_win32_poll() reading data from a child "
 "process"
 msgstr "g_io_channel_win32_poll() 从子进程中读取数据时出现异常错误"
 
-#: glib/gstrfuncs.c:3345 glib/gstrfuncs.c:3447
+#: glib/gstrfuncs.c:3351 glib/gstrfuncs.c:3453
 msgid "Empty string is not a number"
 msgstr "空字符串不是数字"
 
-#: glib/gstrfuncs.c:3369
+#: glib/gstrfuncs.c:3375
 #, c-format
 msgid "“%s” is not a signed number"
 msgstr "“%s”不是有效的有符号数值"
 
-#: glib/gstrfuncs.c:3379 glib/gstrfuncs.c:3483
+#: glib/gstrfuncs.c:3385 glib/gstrfuncs.c:3489
 #, c-format
 msgid "Number “%s” is out of bounds [%s, %s]"
 msgstr "数字“%s”越界 [%s, %s]"
 
-#: glib/gstrfuncs.c:3473
+#: glib/gstrfuncs.c:3479
 #, c-format
 msgid "“%s” is not an unsigned number"
 msgstr "“%s”不是有效的无符号数值"
@@ -5842,196 +5900,196 @@ msgstr "URI“%s”不是绝对 URI"
 msgid "URI ‘%s’ has no host component"
 msgstr "URI“%s”没有主机部分"
 
-#: glib/guri.c:1435
+#: glib/guri.c:1460
 msgid "URI is not absolute, and no base URI was provided"
 msgstr "URI 不是绝对的,且未提供 base URI"
 
-#: glib/guri.c:2213
+#: glib/guri.c:2238
 msgid "Missing ‘=’ and parameter value"
 msgstr "缺少“=”和参数值"
 
-#: glib/gutf8.c:817
+#: glib/gutf8.c:832
 msgid "Failed to allocate memory"
 msgstr "分配内存失败"
 
-#: glib/gutf8.c:950
+#: glib/gutf8.c:965
 msgid "Character out of range for UTF-8"
 msgstr "字符超出 UTF-8 范围"
 
-#: glib/gutf8.c:1051 glib/gutf8.c:1060 glib/gutf8.c:1190 glib/gutf8.c:1199
-#: glib/gutf8.c:1338 glib/gutf8.c:1435
+#: glib/gutf8.c:1067 glib/gutf8.c:1076 glib/gutf8.c:1206 glib/gutf8.c:1215
+#: glib/gutf8.c:1354 glib/gutf8.c:1451
 msgid "Invalid sequence in conversion input"
 msgstr "转换输入中出现无效序列"
 
-#: glib/gutf8.c:1349 glib/gutf8.c:1446
+#: glib/gutf8.c:1365 glib/gutf8.c:1462
 msgid "Character out of range for UTF-16"
 msgstr "字符超出 UTF-16 范围"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2727
+#: glib/gutils.c:2849
 #, c-format
 msgid "%.1f kB"
 msgstr "%.1f kB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2729
+#: glib/gutils.c:2851
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2731
+#: glib/gutils.c:2853
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2733
+#: glib/gutils.c:2855
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2735
+#: glib/gutils.c:2857
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2737
+#: glib/gutils.c:2859
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2741
+#: glib/gutils.c:2863
 #, c-format
 msgid "%.1f KiB"
 msgstr "%.1f KiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2743
+#: glib/gutils.c:2865
 #, c-format
 msgid "%.1f MiB"
 msgstr "%.1f MiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2745
+#: glib/gutils.c:2867
 #, c-format
 msgid "%.1f GiB"
 msgstr "%.1f GiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2747
+#: glib/gutils.c:2869
 #, c-format
 msgid "%.1f TiB"
 msgstr "%.1f TiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2749
+#: glib/gutils.c:2871
 #, c-format
 msgid "%.1f PiB"
 msgstr "%.1f PiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2751
+#: glib/gutils.c:2873
 #, c-format
 msgid "%.1f EiB"
 msgstr "%.1f EiB"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2755
+#: glib/gutils.c:2877
 #, c-format
 msgid "%.1f kb"
 msgstr "%.1f kb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2757
+#: glib/gutils.c:2879
 #, c-format
 msgid "%.1f Mb"
 msgstr "%.1f Mb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2759
+#: glib/gutils.c:2881
 #, c-format
 msgid "%.1f Gb"
 msgstr "%.1f Gb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2761
+#: glib/gutils.c:2883
 #, c-format
 msgid "%.1f Tb"
 msgstr "%.1f Tb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2763
+#: glib/gutils.c:2885
 #, c-format
 msgid "%.1f Pb"
 msgstr "%.1f Pb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2765
+#: glib/gutils.c:2887
 #, c-format
 msgid "%.1f Eb"
 msgstr "%.1f Eb"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2769
+#: glib/gutils.c:2891
 #, c-format
 msgid "%.1f Kib"
 msgstr "%.1f Kib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2771
+#: glib/gutils.c:2893
 #, c-format
 msgid "%.1f Mib"
 msgstr "%.1f Mib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2773
+#: glib/gutils.c:2895
 #, c-format
 msgid "%.1f Gib"
 msgstr "%.1f Gib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2775
+#: glib/gutils.c:2897
 #, c-format
 msgid "%.1f Tib"
 msgstr "%.1f Tib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2777
+#: glib/gutils.c:2899
 #, c-format
 msgid "%.1f Pib"
 msgstr "%.1f Pib"
 
 #. Translators: Keep the no-break space between %.1f and the unit symbol
-#: glib/gutils.c:2779
+#: glib/gutils.c:2901
 #, c-format
 msgid "%.1f Eib"
 msgstr "%.1f Eib"
 
-#: glib/gutils.c:2813 glib/gutils.c:2930
+#: glib/gutils.c:2935 glib/gutils.c:3052
 #, c-format
 msgid "%u byte"
 msgid_plural "%u bytes"
 msgstr[0] "%u 字节"
 
-#: glib/gutils.c:2817
+#: glib/gutils.c:2939
 #, c-format
 msgid "%u bit"
 msgid_plural "%u bits"
 msgstr[0] "%u 位"
 
 #. Translators: the %s in "%s bytes" will always be replaced by a number.
-#: glib/gutils.c:2884
+#: glib/gutils.c:3006
 #, c-format
 msgid "%s byte"
 msgid_plural "%s bytes"
 msgstr[0] "%s 字节"
 
 #. Translators: the %s in "%s bits" will always be replaced by a number.
-#: glib/gutils.c:2889
+#: glib/gutils.c:3011
 #, c-format
 msgid "%s bit"
 msgid_plural "%s bits"
@@ -6042,32 +6100,32 @@ msgstr[0] "%s 位"
 #. * compatibility.  Users will not see this string unless a program is using this deprecated function.
 #. * Please translate as literally as possible.
 #.
-#: glib/gutils.c:2943
+#: glib/gutils.c:3065
 #, c-format
 msgid "%.1f KB"
 msgstr "%.1f KB"
 
-#: glib/gutils.c:2948
+#: glib/gutils.c:3070
 #, c-format
 msgid "%.1f MB"
 msgstr "%.1f MB"
 
-#: glib/gutils.c:2953
+#: glib/gutils.c:3075
 #, c-format
 msgid "%.1f GB"
 msgstr "%.1f GB"
 
-#: glib/gutils.c:2958
+#: glib/gutils.c:3080
 #, c-format
 msgid "%.1f TB"
 msgstr "%.1f TB"
 
-#: glib/gutils.c:2963
+#: glib/gutils.c:3085
 #, c-format
 msgid "%.1f PB"
 msgstr "%.1f PB"
 
-#: glib/gutils.c:2968
+#: glib/gutils.c:3090
 #, c-format
 msgid "%.1f EB"
 msgstr "%.1f EB"
@@ -6200,9 +6258,6 @@ msgstr "%.1f EB"
 #~ msgid "Unable to find default local directory monitor type"
 #~ msgstr "无法找到默认的本地目录监视器类型"
 
-#~ msgid "URIs not supported"
-#~ msgstr "不支持 URI"
-
 #~ msgid "association changes not supported on win32"
 #~ msgstr "win32 不支持关联的修改"
 
index 065d222..a6b07b9 100644 (file)
@@ -3,10 +3,9 @@ directory = pcre-8.37
 source_url = https://sourceforge.net/projects/pcre/files/pcre/8.37/pcre-8.37.tar.bz2
 source_filename = pcre-8.37.tar.bz2
 source_hash = 51679ea8006ce31379fb0860e46dd86665d864b5020fc9cd19e71260eef4789d
-patch_filename = pcre_8.37-2_patch.zip
-patch_url = https://wrapdb.mesonbuild.com/v2/pcre_8.37-2/get_patch
-patch_hash = 6b80f72385e1bf06721e26fbc83aced576e9c0d3182d86a55dd173a04050fe26
+patch_filename = pcre_8.37-4_patch.zip
+patch_url = https://wrapdb.mesonbuild.com/v2/pcre_8.37-4/get_patch
+patch_hash = c957f42da6f6378300eb8a18f4a5cccdb8e2aada51a703cac842982f9f785399
 
 [provide]
 libpcre = pcre_dep
-
index 3523a50..0e6c852 100644 (file)
@@ -1,5 +1,5 @@
 [wrap-git]
 directory=proxy-libintl
 url=https://github.com/frida/proxy-libintl.git
-revision=0.2
+revision=c03e1a74b17fa7ec467e110130775409e4828a4c
 depth=1
index ff9ab66..c49c1d9 100644 (file)
@@ -1,10 +1,11 @@
 [wrap-file]
 directory = zlib-1.2.11
-
 source_url = https://zlib.net/fossils/zlib-1.2.11.tar.gz
 source_filename = zlib-1.2.11.tar.gz
 source_hash = c3e5e9fdd5004dcb542feda5ee4f0ff0744628baf8ed2dd5d66f8ca1197cb1a1
+patch_filename = zlib_1.2.11-6_patch.zip
+patch_url = https://wrapdb.mesonbuild.com/v2/zlib_1.2.11-6/get_patch
+patch_hash = f7c24c5698ce787294910ad431f94088102d35ddaf88542d04add1e54afa9212
 
-patch_url = https://github.com/mesonbuild/zlib/releases/download/1.2.11-3/zlib.zip
-patch_filename = zlib-1.2.11-3-wrap.zip
-patch_hash = f07dc491ab3d05daf00632a0591e2ae61b470615b5b73bcf9b3f061fff65cff0
+[provide]
+zlib = zlib_dep
diff --git a/tests/asyncqueue-test.c b/tests/asyncqueue-test.c
deleted file mode 100644 (file)
index 2dd8563..0000000
+++ /dev/null
@@ -1,244 +0,0 @@
-#undef G_DISABLE_ASSERT
-#undef G_LOG_DOMAIN
-
-#include <time.h>
-#include <stdlib.h>
-
-#include <glib.h>
-
-#define DEBUG_MSG(args)
-/* #define DEBUG_MSG(args) g_printerr args ; g_printerr ("\n");  */
-#define PRINT_MSG(args)
-/* #define PRINT_MSG(args) g_printerr args ; g_printerr ("\n"); */
-
-#define MAX_THREADS            50
-#define MAX_SORTS              5    /* only applies if
-                                      ASYC_QUEUE_DO_SORT is set to 1 */ 
-#define MAX_TIME               20   /* seconds */
-#define MIN_TIME               5    /* seconds */
-
-#define SORT_QUEUE_AFTER       1
-#define SORT_QUEUE_ON_PUSH     1    /* if this is done, the
-                                      SORT_QUEUE_AFTER is ignored */
-#define QUIT_WHEN_DONE         1
-
-
-#if SORT_QUEUE_ON_PUSH == 1
-#  undef SORT_QUEUE_AFTER
-#  define SORT_QUEUE_AFTER     0
-#endif
-
-
-static GMainLoop   *main_loop = NULL;
-static GThreadPool *thread_pool = NULL;
-static GAsyncQueue *async_queue = NULL;
-
-
-static gint
-sort_compare (gconstpointer p1, gconstpointer p2, gpointer user_data)
-{
-  gint32 id1;
-  gint32 id2;
-
-  id1 = GPOINTER_TO_INT (p1);
-  id2 = GPOINTER_TO_INT (p2);
-
-  DEBUG_MSG (("comparing #1:%d and #2:%d, returning %d", 
-            id1, id2, (id1 > id2 ? +1 : id1 == id2 ? 0 : -1)));
-
-  return (id1 > id2 ? +1 : id1 == id2 ? 0 : -1);
-}
-
-static gboolean
-sort_queue (gpointer user_data)
-{
-  static gint     sorts = 0;
-  static gpointer last_p = NULL;
-  gpointer        p;
-  gboolean        can_quit = FALSE;
-  gint            sort_multiplier;
-  gint            len;
-  gint            i;
-
-  sort_multiplier = GPOINTER_TO_INT (user_data);
-
-  if (SORT_QUEUE_AFTER) {
-    PRINT_MSG (("sorting async queue...")); 
-    g_async_queue_sort (async_queue, sort_compare, NULL);
-
-    sorts++;
-
-    if (sorts >= sort_multiplier) {
-      can_quit = TRUE;
-    }
-    
-    g_async_queue_sort (async_queue, sort_compare, NULL);
-    len = g_async_queue_length (async_queue);
-
-    PRINT_MSG (("sorted queue (for %d/%d times, size:%d)...", sorts, MAX_SORTS, len)); 
-  } else {
-    can_quit = TRUE;
-    len = g_async_queue_length (async_queue);
-    DEBUG_MSG (("printing queue (size:%d)...", len)); 
-  }
-
-  for (i = 0, last_p = NULL; i < len; i++) {
-    p = g_async_queue_pop (async_queue);
-    DEBUG_MSG (("item %d ---> %d", i, GPOINTER_TO_INT (p))); 
-
-    if (last_p) {
-      g_assert (GPOINTER_TO_INT (last_p) <= GPOINTER_TO_INT (p));
-    }
-
-    last_p = p;
-  }
-  
-  if (can_quit && QUIT_WHEN_DONE) {
-    g_main_loop_quit (main_loop);
-  }
-
-  return !can_quit;
-}
-
-static void
-enter_thread (gpointer data, gpointer user_data)
-{
-  gint   len G_GNUC_UNUSED;
-  gint   id;
-  gulong ms;
-
-  id = GPOINTER_TO_INT (data);
-  
-  ms = g_random_int_range (MIN_TIME * 1000, MAX_TIME * 1000);
-  DEBUG_MSG (("entered thread with id:%d, adding to queue in:%ld ms", id, ms));
-
-  g_usleep (ms * 1000);
-
-  if (SORT_QUEUE_ON_PUSH) {
-    g_async_queue_push_sorted (async_queue, GINT_TO_POINTER (id), sort_compare, NULL);
-  } else {
-    g_async_queue_push (async_queue, GINT_TO_POINTER (id));
-  }
-
-  len = g_async_queue_length (async_queue);
-
-  DEBUG_MSG (("thread id:%d added to async queue (size:%d)", 
-            id, len));
-}
-
-static gint destroy_count = 0;
-
-static void
-counting_destroy (gpointer item)
-{
-  destroy_count++;
-}
-
-static void
-basic_tests (void)
-{
-  GAsyncQueue *q;
-  gpointer item;
-
-  destroy_count = 0;
-
-  q = g_async_queue_new_full (counting_destroy);
-  g_async_queue_lock (q);
-  g_async_queue_ref (q);
-  g_async_queue_unlock (q);
-  g_async_queue_lock (q);
-  g_async_queue_ref_unlocked (q);
-  g_async_queue_unref_and_unlock (q);
-
-  item = g_async_queue_try_pop (q);
-  g_assert (item == NULL);
-
-  g_async_queue_lock (q);
-  item = g_async_queue_try_pop_unlocked (q);
-  g_async_queue_unlock (q);
-  g_assert (item == NULL);
-
-  g_async_queue_push (q, GINT_TO_POINTER (1));
-  g_async_queue_push (q, GINT_TO_POINTER (2));
-  g_async_queue_push (q, GINT_TO_POINTER (3));
-  g_assert_cmpint (destroy_count, ==, 0);
-
-  g_async_queue_unref (q);
-  g_assert_cmpint (destroy_count, ==, 0);
-
-  item = g_async_queue_pop (q);
-  g_assert_cmpint (GPOINTER_TO_INT (item), ==, 1);
-  g_assert_cmpint (destroy_count, ==, 0);
-
-  g_async_queue_unref (q);
-  g_assert_cmpint (destroy_count, ==, 2);
-}
-
-int 
-main (int argc, char *argv[])
-{
-  gint   i;
-  gint   max_threads = MAX_THREADS;
-  gint   max_unused_threads = MAX_THREADS;
-  gint   sort_multiplier = MAX_SORTS;
-  gint   sort_interval;
-  gchar *msg G_GNUC_UNUSED;
-
-  basic_tests ();
-
-  PRINT_MSG (("creating async queue..."));
-  async_queue = g_async_queue_new ();
-
-  g_return_val_if_fail (async_queue != NULL, EXIT_FAILURE);
-
-  PRINT_MSG (("creating thread pool with max threads:%d, max unused threads:%d...",
-            max_threads, max_unused_threads));
-  thread_pool = g_thread_pool_new (enter_thread,
-                                  async_queue,
-                                  max_threads,
-                                  FALSE,
-                                  NULL);
-
-  g_return_val_if_fail (thread_pool != NULL, EXIT_FAILURE);
-
-  g_thread_pool_set_max_unused_threads (max_unused_threads);
-
-  PRINT_MSG (("creating threads..."));
-  for (i = 1; i <= max_threads; i++) {
-    GError *error = NULL;
-  
-    g_thread_pool_push (thread_pool, GINT_TO_POINTER (i), &error);
-    
-    g_assert_no_error (error);
-  }
-
-  if (!SORT_QUEUE_AFTER) {
-    sort_multiplier = 1;
-  }
-  
-  sort_interval = ((MAX_TIME / sort_multiplier) + 2)  * 1000;
-  g_timeout_add (sort_interval, sort_queue, GINT_TO_POINTER (sort_multiplier));
-
-  if (SORT_QUEUE_ON_PUSH) {
-    msg = "sorting when pushing into the queue, checking queue is sorted";
-  } else {
-    msg = "sorting";
-  }
-
-  PRINT_MSG (("%s %d %s %d ms",
-             msg,
-             sort_multiplier, 
-             sort_multiplier == 1 ? "time in" : "times, once every",
-             sort_interval));
-
-  DEBUG_MSG (("entering main event loop"));
-
-  main_loop = g_main_loop_new (NULL, FALSE);
-  g_main_loop_run (main_loop);
-
-  g_main_loop_unref (main_loop);
-  g_thread_pool_free (thread_pool, TRUE, TRUE);
-  g_async_queue_unref (async_queue);
-
-  return EXIT_SUCCESS;
-}
diff --git a/tests/bit-test.c b/tests/bit-test.c
deleted file mode 100644 (file)
index 173a09b..0000000
+++ /dev/null
@@ -1,145 +0,0 @@
-#include <glib.h>
-
-#if defined(__GNUC__) && (__GNUC__ >= 4)
-# define TEST_BUILTINS 1
-#else
-# define TEST_BUILTINS 0
-#endif
-
-#if TEST_BUILTINS
-static gint
-builtin_bit_nth_lsf1 (gulong mask, gint nth_bit)
-{
-  if (nth_bit >= 0)
-    {
-      if (G_LIKELY (nth_bit < GLIB_SIZEOF_LONG * 8 - 1))
-       mask &= -(1UL<<(nth_bit+1));
-      else
-       mask = 0;
-    }
-  return __builtin_ffsl(mask) - 1;
-}
-
-static gint
-builtin_bit_nth_lsf2 (gulong mask, gint nth_bit)
-{
-  if (nth_bit >= 0)
-    {
-      if (G_LIKELY (nth_bit < GLIB_SIZEOF_LONG * 8 - 1))
-       mask &= -(1UL<<(nth_bit+1));
-      else
-       mask = 0;
-    }
-  return mask ? __builtin_ctzl(mask) : -1;
-}
-
-static gint
-builtin_bit_nth_msf (gulong mask, gint nth_bit)
-{
-  if (nth_bit >= 0 && nth_bit < GLIB_SIZEOF_LONG * 8)
-    mask &= (1UL<<nth_bit)-1;
-  return mask ? GLIB_SIZEOF_LONG * 8 - 1 - __builtin_clzl(mask) : -1;
-}
-
-
-static guint
-builtin_bit_storage (gulong number)
-{
-  return number ? GLIB_SIZEOF_LONG * 8 - __builtin_clzl(number) : 1;
-}
-#endif
-
-
-static gint
-naive_bit_nth_lsf (gulong mask, gint   nth_bit)
-{
-  if (G_UNLIKELY (nth_bit < -1))
-    nth_bit = -1;
-  while (nth_bit < ((GLIB_SIZEOF_LONG * 8) - 1))
-    {
-      nth_bit++;
-      if (mask & (1UL << nth_bit))
-       return nth_bit;
-    }
-  return -1;
-}
-
-static gint
-naive_bit_nth_msf (gulong mask, gint   nth_bit)
-{
-  if (nth_bit < 0 || G_UNLIKELY (nth_bit > GLIB_SIZEOF_LONG * 8))
-    nth_bit = GLIB_SIZEOF_LONG * 8;
-  while (nth_bit > 0)
-    {
-      nth_bit--;
-      if (mask & (1UL << nth_bit))
-       return nth_bit;
-    }
-  return -1;
-}
-
-static guint
-naive_bit_storage (gulong number)
-{
-  guint n_bits = 0;
-  
-  do
-    {
-      n_bits++;
-      number >>= 1;
-    }
-  while (number);
-  return n_bits;
-}
-
-
-
-#define TEST(f1, f2, i) \
-       if (f1 (i) != f2 (i)) { \
-               g_error (G_STRINGIFY (f1) " (%lu) = %d; " \
-                        G_STRINGIFY (f2) " (%lu) = %d; ", \
-                        i, f1 (i), \
-                        i, f2 (i)); \
-               return 1; \
-       }
-#define TEST2(f1, f2, i, n) \
-       if (f1 (i, n) != f2 (i, n)) { \
-               g_error (G_STRINGIFY (f1) " (%lu, %d) = %d; " \
-                        G_STRINGIFY (f2) " (%lu, %d) = %d; ", \
-                        i, n, f1 (i, n), \
-                        i, n, f2 (i, n)); \
-               return 1; \
-       }
-
-int
-main (void)
-{
-  gulong i;
-  gint nth_bit;
-
-  /* we loop like this: 0, -1, 1, -2, 2, -3, 3, ... */
-  for (i = 0; (glong)i < 1500 ; i = -(i+((glong)i>=0))) {
-
-#if TEST_BUILTINS
-    TEST (naive_bit_storage, builtin_bit_storage, i);
-#endif
-    TEST (naive_bit_storage, g_bit_storage, i);
-
-    for (nth_bit = -3; nth_bit <= 2 + GLIB_SIZEOF_LONG * 8; nth_bit++) {
-
-#if TEST_BUILTINS
-      TEST2 (naive_bit_nth_lsf, builtin_bit_nth_lsf1, i, nth_bit);
-      TEST2 (naive_bit_nth_lsf, builtin_bit_nth_lsf2, i, nth_bit);
-#endif
-      TEST2 (naive_bit_nth_lsf, g_bit_nth_lsf, i, nth_bit);
-
-#if TEST_BUILTINS
-      TEST2 (naive_bit_nth_msf, builtin_bit_nth_msf, i, nth_bit);
-#endif
-      TEST2 (naive_bit_nth_msf, g_bit_nth_msf, i, nth_bit);
-
-    }
-  }
-
-  return 0;
-}
diff --git a/tests/child-test.c b/tests/child-test.c
deleted file mode 100644 (file)
index 24a0bf2..0000000
+++ /dev/null
@@ -1,198 +0,0 @@
-/* GLIB - Library of useful routines for C programming
- * Copyright (C) 1995-1997  Peter Mattis, Spencer Kimball and Josh MacDonald
- *
- * This library 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 library 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/>.
- */
-
-/*
- * Modified by the GLib Team and others 1997-2000.  See the AUTHORS
- * file for a list of people on the GLib Team.  See the ChangeLog
- * files for a list of changes.  These files are distributed with
- * GLib at ftp://ftp.gtk.org/pub/gtk/. 
- */
-
-#include <sys/types.h>
-#include <stdlib.h>
-
-#include <glib.h>
-
-#ifdef G_OS_UNIX
-#include <unistd.h>
-#endif
-
-#ifdef G_OS_WIN32
-#include <windows.h>
-#endif
-
-#ifdef G_OS_WIN32
-#define GPID_FORMAT "%p"
-#else
-#define GPID_FORMAT "%d"
-#endif
-
-GMainLoop *main_loop;
-gint alive;
-
-#ifdef G_OS_WIN32
-char *argv0;
-#endif
-
-static GPid
-get_a_child (gint ttl)
-{
-  GPid pid;
-
-#ifdef G_OS_WIN32
-  STARTUPINFO si;
-  PROCESS_INFORMATION pi;
-  gchar *cmdline;
-
-  memset (&si, 0, sizeof (si));
-  si.cb = sizeof (&si);
-  memset (&pi, 0, sizeof (pi));
-
-  cmdline = g_strdup_printf( "child-test -c%d", ttl);
-
-  if (!CreateProcess (argv0, cmdline, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi))
-    g_error ("CreateProcess failed: %s", g_win32_error_message (GetLastError ()));
-
-  g_free(cmdline);
-
-  CloseHandle (pi.hThread);
-  pid = pi.hProcess;
-
-  return pid;
-#else
-  pid = fork ();
-  if (pid < 0)
-    exit (1);
-
-  if (pid > 0)
-    return pid;
-
-  sleep (ttl);
-  _exit (0);
-#endif /* G_OS_WIN32 */
-}
-
-static gboolean
-child_watch_callback (GPid pid, gint status, gpointer data)
-{
-#ifdef VERBOSE
-  gint ttl = GPOINTER_TO_INT (data);
-
-  g_print ("child " GPID_FORMAT " (ttl %d) exited, status %d\n", pid, ttl, status);
-#endif
-
-  g_spawn_close_pid (pid);
-
-  if (--alive == 0)
-    g_main_loop_quit (main_loop);
-
-  return TRUE;
-}
-
-static gboolean
-quit_loop (gpointer data)
-{
-  GMainLoop *main_loop = data;
-
-  g_main_loop_quit (main_loop);
-
-  return TRUE;
-}
-
-#ifdef TEST_THREAD
-static gpointer
-test_thread (gpointer data)
-{
-  GMainLoop *new_main_loop;
-  GSource *source;
-  GPid pid;
-  gint ttl = GPOINTER_TO_INT (data);
-
-  new_main_loop = g_main_loop_new (NULL, FALSE);
-
-  pid = get_a_child (ttl);
-  source = g_child_watch_source_new (pid);
-  g_source_set_callback (source, (GSourceFunc) child_watch_callback, data, NULL);
-  g_source_attach (source, g_main_loop_get_context (new_main_loop));
-  g_source_unref (source);
-
-#ifdef VERBOSE
-  g_print ("whee! created pid: " GPID_FORMAT " (ttl %d)\n", pid, ttl);
-#endif
-
-  g_main_loop_run (new_main_loop);
-
-  return NULL;
-}
-#endif
-
-int
-main (int argc, char *argv[])
-{
-#ifndef TEST_THREAD
-  GPid pid;
-#endif
-#ifdef G_OS_WIN32
-  argv0 = argv[0];
-  if (argc > 1 && argv[1][0] == '-' && argv[1][1] == 'c')
-    {
-      int ttl = atoi (argv[1] + 2);
-      Sleep (ttl * 1000);
-      /* Exit on purpose with STILL_ACTIVE (which isn't a very common
-       * exit status) to verify that g_child_watch_check() in gmain.c
-       * doesn't believe a child still to be active if it happens to
-       * exit with that status.
-       */
-      exit (STILL_ACTIVE);
-    }
-#endif
-
-  main_loop = g_main_loop_new (NULL, FALSE);
-
-#ifdef G_OS_WIN32
-  system ("ipconfig /all");
-#else
-  system ("true");
-#endif
-
-  alive = 2;
-  g_timeout_add_seconds (30, quit_loop, main_loop);
-
-#ifdef TEST_THREAD
-  g_thread_create (test_thread, GINT_TO_POINTER (10), FALSE, NULL);
-  g_thread_create (test_thread, GINT_TO_POINTER (20), FALSE, NULL);
-#else
-  pid = get_a_child (10);
-  g_child_watch_add (pid, (GChildWatchFunc) child_watch_callback,
-                    GINT_TO_POINTER (10));
-  pid = get_a_child (20);
-  g_child_watch_add (pid, (GChildWatchFunc) child_watch_callback,
-                    GINT_TO_POINTER (20));
-#endif
-  
-  g_main_loop_run (main_loop);
-
-  g_main_loop_unref (main_loop);
-
-  if (alive > 0)
-    {
-      g_warning ("%d children still alive", alive);
-      return 1;
-    }
-    
-   return 0;
-}
diff --git a/tests/cxx-test.cpp b/tests/cxx-test.cpp
deleted file mode 100644 (file)
index c076e88..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-#include <glib.h>
-#include <gmodule.h>
-#include <glib-object.h>
-#include <gio/gio.h>
-
-int
-main ()
-{
-  return 0;
-}
diff --git a/tests/datetime.c b/tests/datetime.c
deleted file mode 100644 (file)
index ae46bba..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (C) 2011 Red Hat, Inc.
- *
- * This library 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
- * licence, 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 <locale.h>
-#include <glib/glib.h>
-
-int
-main (int argc, char *argv[])
-{
-  gchar *fmt;
-  GDateTime *dt;
-  gchar *str;
-
-  setlocale (LC_ALL, "");
-
-  if (argc > 1)
-    fmt = argv[1];
-  else
-    fmt = "%x %X";
-
-  dt = g_date_time_new_now_local ();
-  str = g_date_time_format (dt, fmt);
-  g_print ("%s\n", str);
-  g_free (str);
-  g_date_time_unref (dt);
-
-  return 0;
-}
diff --git a/tests/dirname-test.c b/tests/dirname-test.c
deleted file mode 100644 (file)
index 81c55d5..0000000
+++ /dev/null
@@ -1,117 +0,0 @@
-/* GLIB - Library of useful routines for C programming
- * Copyright (C) 1995-1997  Peter Mattis, Spencer Kimball and Josh MacDonald
- *
- * This library 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 library 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/>.
- */
-
-/*
- * Modified by the GLib Team and others 1997-2000.  See the AUTHORS
- * file for a list of people on the GLib Team.  See the ChangeLog
- * files for a list of changes.  These files are distributed with
- * GLib at ftp://ftp.gtk.org/pub/gtk/. 
- */
-
-#undef G_DISABLE_ASSERT
-#undef G_LOG_DOMAIN
-
-#include <stdio.h>
-#include <string.h>
-#include "glib.h"
-
-int array[10000];
-gboolean failed = FALSE;
-
-#define        TEST(m,cond)    G_STMT_START { failed = !(cond); \
-if (failed) \
-  { if (!m) \
-      g_print ("\n(%s:%d) failed for: %s\n", __FILE__, __LINE__, ( # cond )); \
-    else \
-      g_print ("\n(%s:%d) failed for: %s: (%s)\n", __FILE__, __LINE__, ( # cond ), (gchar*)m); \
-  } \
-else \
-  g_print ("."); fflush (stdout); \
-} G_STMT_END
-
-#define        C2P(c)          ((gpointer) ((long) (c)))
-#define        P2C(p)          ((gchar) ((long) (p)))
-
-#define GLIB_TEST_STRING "el dorado "
-#define GLIB_TEST_STRING_5 "el do"
-
-int
-main (int   argc,
-      char *argv[])
-{
-  gsize i;
-  struct {
-    gchar *filename;
-    gchar *dirname;
-  } dirname_checks[] = {
-    { "/", "/" },
-    { "////", "/" },
-    { ".////", "." },
-    { ".", "." },
-    { "..", "." },
-    { "../", ".." },
-    { "..////", ".." },
-    { "", "." },
-    { "a/b", "a" },
-    { "a/b/", "a/b" },
-    { "c///", "c" },
-    { "/a/b", "/a" },
-    { "/a/b/", "/a/b" },
-#ifdef G_OS_WIN32
-    { "\\", "\\" },
-    { ".\\\\\\\\", "." },
-    { ".\\/\\/", "." },
-    { ".", "." },
-    { "..", "." },
-    { "..\\", ".." },
-    { "..\\\\\\\\", ".." },
-    { "..\\//\\", ".." },
-    { "", "." },
-    { "a\\b", "a" },
-    { "a\\b\\", "a\\b" },
-    { "\\a\\b", "\\a" },
-    { "\\a\\b\\", "\\a\\b" },
-    { "c\\\\\\", "c" },
-    { "c/\\\\", "c" },
-    { "a:", "a:." },
-    { "a:foo", "a:." },
-    { "a:foo\\bar", "a:foo" },
-    { "a:/foo", "a:/" },
-    { "a:/foo/bar", "a:/foo" },
-    { "a:/", "a:/" },
-    { "a://", "a:/" },
-    { "a:\\foo", "a:\\" },
-    { "a:\\", "a:\\" },
-    { "a:\\\\", "a:\\" },
-    { "a:\\/", "a:\\" },
-#endif
-  };
-
-  for (i = 0; i < G_N_ELEMENTS (dirname_checks); i++)
-    {
-      gchar *dirname;
-
-      dirname = g_path_get_dirname (dirname_checks[i].filename);
-      if (strcmp (dirname, dirname_checks[i].dirname) != 0)
-       g_error ("%s returned %s, should return %s",
-                dirname_checks[i].filename, dirname,
-                dirname_checks[i].dirname);
-      g_free (dirname);
-    }
-
-  return 0;
-}
diff --git a/tests/env-test.c b/tests/env-test.c
deleted file mode 100644 (file)
index edf7edd..0000000
+++ /dev/null
@@ -1,109 +0,0 @@
-/* GLIB - Library of useful routines for C programming
- * Copyright (C) 1995-1997  Peter Mattis, Spencer Kimball and Josh MacDonald
- *
- * This library 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 library 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/>.
- */
-
-/*
- * Modified by the GLib Team and others 1997-2000.  See the AUTHORS
- * file for a list of people on the GLib Team.  See the ChangeLog
- * files for a list of changes.  These files are distributed with
- * GLib at ftp://ftp.gtk.org/pub/gtk/. 
- */
-
-#undef G_DISABLE_ASSERT
-#undef G_LOG_DOMAIN
-
-#ifdef GLIB_COMPILATION
-#undef GLIB_COMPILATION
-#endif
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <glib.h>
-
-int 
-main (int argc, char *argv[])
-{
-  gboolean result;
-  const gchar *data;
-  gchar *variable = "TEST_G_SETENV";
-  gchar *value1 = "works";
-  gchar *value2 = "again";
-
-  data = g_getenv (variable);
-  g_assert (data == NULL && "TEST_G_SETENV already set");
-  
-  result = g_setenv (variable, value1, TRUE);
-  g_assert (result && "g_setenv() failed");
-  
-  data = g_getenv (variable);
-  g_assert (data != NULL && "g_getenv() returns NULL");
-  g_assert (strcmp (data, value1) == 0 && "g_getenv() returns wrong value");
-
-  result = g_setenv (variable, value2, FALSE);
-  g_assert (result && "g_setenv() failed");
-  
-  data = g_getenv (variable);
-  g_assert (data != NULL && "g_getenv() returns NULL");
-  g_assert (strcmp (data, value2) != 0 && "g_setenv() always overwrites");
-  g_assert (strcmp (data, value1) == 0 && "g_getenv() returns wrong value");
-
-  result = g_setenv (variable, value2, TRUE);
-  g_assert (result && "g_setenv() failed");
-  
-  data = g_getenv (variable);
-  g_assert (data != NULL && "g_getenv() returns NULL");
-  g_assert (strcmp (data, value1) != 0 && "g_setenv() doesn't overwrite");
-  g_assert (strcmp (data, value2) == 0 && "g_getenv() returns wrong value");
-
-  g_unsetenv (variable);
-  data = g_getenv (variable);
-  g_assert (data == NULL && "g_unsetenv() doesn't work");
-
-#if 0
-  /* We can't test this, because it's an illegal argument that
-   * we g_return_if_fail for.
-   */
-  result = g_setenv ("foo=bar", "baz", TRUE);
-  g_assert (!result && "g_setenv() accepts '=' in names");
-#endif  
-
-  result = g_setenv ("foo", "bar=baz", TRUE);
-  g_assert (result && "g_setenv() doesn't accept '=' in values");
-#if 0
-  /* While glibc supports '=' in names in getenv(), SUS doesn't say anything about it,
-   * and Solaris doesn't support it.
-   */
-  data = g_getenv ("foo=bar");
-  g_assert (strcmp (data, "baz") == 0 && "g_getenv() doesn't support '=' in names");
-#endif
-  data = g_getenv ("foo");
-  g_assert (strcmp (data, "bar=baz") == 0 && "g_getenv() doesn't support '=' in values");
-
-#if 0  
-  /* We can't test this, because it's an illegal argument that
-   * we g_return_if_fail for. Plus how would we check for failure,
-   * since we can't set the value...
-   */
-  g_unsetenv ("foo=bar");
-#endif  
-  g_unsetenv ("foo");
-  data = g_getenv ("foo");
-  g_assert (data == NULL && "g_unsetenv() doesn't support '=' in values");
-
-  return 0;
-}
diff --git a/tests/file-test.c b/tests/file-test.c
deleted file mode 100644 (file)
index 67e7e87..0000000
+++ /dev/null
@@ -1,233 +0,0 @@
-/* GLIB - Library of useful routines for C programming
- * Copyright (C) 1995-1997  Peter Mattis, Spencer Kimball and Josh MacDonald
- *
- * This library 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 library 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/>.
- */
-
-/*
- * Modified by the GLib Team and others 1997-2000.  See the AUTHORS
- * file for a list of people on the GLib Team.  See the ChangeLog
- * files for a list of changes.  These files are distributed with
- * GLib at ftp://ftp.gtk.org/pub/gtk/. 
- */
-
-#undef G_DISABLE_ASSERT
-#undef G_LOG_DOMAIN
-
-#ifdef GLIB_COMPILATION
-#undef GLIB_COMPILATION
-#endif
-
-#include <string.h>
-
-#include <glib.h>
-
-#include <gstdio.h>
-
-#include <fcntl.h>             /* For open() */
-
-#ifdef G_OS_UNIX
-#include <unistd.h>
-#endif
-#ifdef G_OS_WIN32
-#include <io.h>                        /* For read(), write() etc */
-#endif
-
-static void
-test_mkstemp (void)
-{
-  char template[32];
-  int fd;
-  int i;
-  const char hello[] = "Hello, World";
-  const int hellolen = sizeof (hello) - 1;
-  char chars[62];
-
-  strcpy (template, "foobar");
-  fd = g_mkstemp (template);
-  if (fd != -1)
-    {
-      g_warning ("g_mkstemp works even if template doesn't contain XXXXXX");
-      close (fd);
-    }
-
-  strcpy (template, "foobarXXX");
-  fd = g_mkstemp (template);
-  if (fd != -1)
-    {
-      g_warning ("g_mkstemp works even if template contains less than six X");
-      close (fd);
-    }
-
-  strcpy (template, "fooXXXXXX");
-  fd = g_mkstemp (template);
-  g_assert (fd != -1 && "g_mkstemp didn't work for template fooXXXXXX");
-  i = write (fd, hello, hellolen);
-  g_assert (i != -1 && "write() failed");
-  g_assert (i == hellolen && "write() has written too few bytes");
-
-  lseek (fd, 0, 0);
-  i = read (fd, chars, sizeof (chars));
-  g_assert (i != -1 && "read() failed: %s");
-  g_assert (i == hellolen && "read() has got wrong number of bytes");
-
-  chars[i] = 0;
-  g_assert (strcmp (chars, hello) == 0 && "read() didn't get same string back");
-
-  close (fd);
-  remove (template);
-
-  strcpy (template, "fooXXXXXX.pdf");
-  fd = g_mkstemp (template);
-  g_assert (fd != -1 && "g_mkstemp didn't work for template fooXXXXXX.pdf");
-
-  close (fd);
-  remove (template);
-}
-
-static void
-test_mkdtemp (void)
-{
-  char template[32], *retval;
-  int fd;
-  int i;
-
-  strcpy (template, "foodir");
-  retval = g_mkdtemp (template);
-  if (retval != NULL)
-    {
-      g_warning ("g_mkdtemp works even if template doesn't contain XXXXXX");
-      g_rmdir (retval);
-    }
-
-  strcpy (template, "foodir");
-  retval = g_mkdtemp (template);
-  if (retval != NULL)
-    {
-      g_warning ("g_mkdtemp works even if template contains less than six X");
-      g_rmdir (retval);
-    }
-
-  strcpy (template, "fooXXXXXX");
-  retval = g_mkdtemp (template);
-  g_assert (retval != NULL && "g_mkdtemp didn't work for template fooXXXXXX");
-  g_assert (retval == template && "g_mkdtemp allocated the resulting string?");
-  g_assert (!g_file_test (template, G_FILE_TEST_IS_REGULAR));
-  g_assert (g_file_test (template, G_FILE_TEST_IS_DIR));
-
-  strcat (template, "/abc");
-  fd = g_open (template, O_WRONLY | O_CREAT, 0600);
-  g_assert (fd != -1 && "couldn't open file in temporary directory");
-  close (fd);
-  g_assert (g_file_test (template, G_FILE_TEST_IS_REGULAR));
-  i = g_unlink (template);
-  g_assert (i != -1 && "couldn't unlink file in temporary directory");
-
-  template[9] = '\0';
-  i = g_rmdir (template);
-  g_assert (i != -1 && "couldn't remove temporary directory");
-
-  strcpy (template, "fooXXXXXX.dir");
-  retval = g_mkdtemp (template);
-  g_assert (retval != NULL && "g_mkdtemp didn't work for template fooXXXXXX.dir");
-  g_assert (g_file_test (template, G_FILE_TEST_IS_DIR));
-  g_rmdir (template);
-}
-
-static void
-test_readlink (void)
-{
-#ifdef HAVE_SYMLINK
-  FILE *file;
-  int result;
-  char *filename = "file-test-data";
-  char *link1 = "file-test-link1";
-  char *link2 = "file-test-link2";
-  char *link3 = "file-test-link3";
-  char *data;
-  GError *error;
-
-  file = fopen (filename, "w");
-  g_assert (file != NULL && "fopen() failed");
-  fclose (file);
-
-  result = symlink (filename, link1);
-  g_assert (result == 0 && "symlink() failed");
-  result = symlink (link1, link2);
-  g_assert (result == 0 && "symlink() failed");
-  
-  error = NULL;
-  data = g_file_read_link (link1, &error);
-  g_assert (data != NULL && "couldn't read link1");
-  g_assert (strcmp (data, filename) == 0 && "link1 contains wrong data");
-  g_free (data);
-  
-  error = NULL;
-  data = g_file_read_link (link2, &error);
-  g_assert (data != NULL && "couldn't read link2");
-  g_assert (strcmp (data, link1) == 0 && "link2 contains wrong data");
-  g_free (data);
-  
-  error = NULL;
-  data = g_file_read_link (link3, &error);
-  g_assert (data == NULL && "could read link3");
-  g_assert_error (error, G_FILE_ERROR, G_FILE_ERROR_NOENT);
-  g_error_free (error);
-
-  error = NULL;
-  data = g_file_read_link (filename, &error);
-  g_assert (data == NULL && "could read regular file as link");
-  g_assert_error (error, G_FILE_ERROR, G_FILE_ERROR_INVAL);
-  g_error_free (error);
-
-  remove (filename);
-  remove (link1);
-  remove (link2);
-#endif
-}
-
-static void
-test_get_contents (void)
-{
-  const gchar *text = "abcdefghijklmnopqrstuvwxyz";
-  const gchar *filename = "file-test-get-contents";
-  gchar *contents;
-  gsize len;
-  FILE *f;
-  GError *error = NULL;
-
-  f = g_fopen (filename, "w");
-  fwrite (text, 1, strlen (text), f);
-  fclose (f);
-
-  g_assert (g_file_test (filename, G_FILE_TEST_IS_REGULAR));
-
-  if (! g_file_get_contents (filename, &contents, &len, &error))
-    g_error ("g_file_get_contents() failed: %s", error->message);
-
-  g_assert (strcmp (text, contents) == 0 && "content mismatch");
-
-  g_free (contents);
-}
-
-int 
-main (int argc, char *argv[])
-{
-  test_mkstemp ();
-  test_mkdtemp ();
-  test_readlink ();
-  test_get_contents ();
-
-  return 0;
-}
index 6c40632..d203d0b 100644 (file)
@@ -128,7 +128,7 @@ recv_message (GIOChannel  *channel,
   if (cond & G_IO_IN)
     {
       char buf[BUFSIZE];
-      guint nbytes;
+      guint nbytes = 0;
       guint nb;
       guint j;
       int i, seq;
@@ -297,7 +297,7 @@ main (int    argc,
          exit (1);
        }
 
-      windows_messages_channel = g_io_channel_win32_new_messages ((guint)hwnd);
+      windows_messages_channel = g_io_channel_win32_new_messages ((guint) (guintptr) hwnd);
       g_io_add_watch (windows_messages_channel, G_IO_IN, recv_windows_message, 0);
 #endif
 
diff --git a/tests/gobject/gvalue-test.c b/tests/gobject/gvalue-test.c
deleted file mode 100644 (file)
index b73fe31..0000000
+++ /dev/null
@@ -1,398 +0,0 @@
-/* GLIB - Library of useful routines for C programming
- * Copyright (C) 1995-1997  Peter Mattis, Spencer Kimball and Josh MacDonald
- *
- * This library 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 library 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/>.
- */
-
-/*
- * Modified by the GLib Team and others 1997-2000.  See the AUTHORS
- * file for a list of people on the GLib Team.  See the ChangeLog
- * files for a list of changes.  These files are distributed with
- * GLib at ftp://ftp.gtk.org/pub/gtk/. 
- */
-
-#undef G_DISABLE_ASSERT
-#undef G_LOG_DOMAIN
-
-#include <string.h>
-
-#include <glib.h>
-#include <glib-object.h>
-#include "gobject/gvaluecollector.h"
-
-static void
-test_enum_transformation (void)
-{ 
-  GType type; 
-  GValue orig = G_VALUE_INIT;
-  GValue xform = G_VALUE_INIT;
-  GEnumValue values[] = { {0,"0","0"}, {1,"1","1"}}; 
-  
- type = g_enum_register_static ("TestEnum", values); 
-  
- g_value_init (&orig, type); 
- g_value_set_enum (&orig, 1); 
-
- memset (&xform, 0, sizeof (GValue));
- g_value_init (&xform, G_TYPE_CHAR); 
- g_value_transform (&orig, &xform); 
- g_assert (g_value_get_char (&xform) == 1);
- g_assert (g_value_get_schar (&xform) == 1);
-
- memset (&xform, 0, sizeof (GValue));
- g_value_init (&xform, G_TYPE_UCHAR); 
- g_value_transform (&orig, &xform); 
- g_assert (g_value_get_uchar (&xform) == 1);
-
- memset (&xform, 0, sizeof (GValue));
- g_value_init (&xform, G_TYPE_INT); 
- g_value_transform (&orig, &xform); 
- g_assert (g_value_get_int (&xform) == 1);
-
- memset (&xform, 0, sizeof (GValue));
- g_value_init (&xform, G_TYPE_UINT); 
- g_value_transform (&orig, &xform); 
- g_assert (g_value_get_uint (&xform) == 1);
-
- memset (&xform, 0, sizeof (GValue));
- g_value_init (&xform, G_TYPE_LONG); 
- g_value_transform (&orig, &xform); 
- g_assert (g_value_get_long (&xform) == 1);
-
- memset (&xform, 0, sizeof (GValue));
- g_value_init (&xform, G_TYPE_ULONG); 
- g_value_transform (&orig, &xform); 
- g_assert (g_value_get_ulong (&xform) == 1);
-
- memset (&xform, 0, sizeof (GValue));
- g_value_init (&xform, G_TYPE_INT64); 
- g_value_transform (&orig, &xform); 
- g_assert (g_value_get_int64 (&xform) == 1);
-
- memset (&xform, 0, sizeof (GValue));
- g_value_init (&xform, G_TYPE_UINT64); 
- g_value_transform (&orig, &xform); 
- g_assert (g_value_get_uint64 (&xform) == 1);
-}
-
-
-static void
-test_gtype_value (void)
-{
-  GType type;
-  GValue value = G_VALUE_INIT;
-  GValue copy = G_VALUE_INIT;
-
-  g_value_init (&value, G_TYPE_GTYPE);
-
-  g_value_set_gtype (&value, G_TYPE_BOXED);
-  type = g_value_get_gtype (&value);
-  g_assert (type == G_TYPE_BOXED);
-
-  g_value_init (&copy, G_TYPE_GTYPE);
-  g_value_copy (&value, &copy);
-  type = g_value_get_gtype (&copy);
-  g_assert (type == G_TYPE_BOXED);
-}
-
-static gchar *
-collect (GValue *value, ...)
-{
-  gchar *error;
-  va_list var_args;
-
-  error = NULL;
-
-  va_start (var_args, value);
-  G_VALUE_COLLECT (value, var_args, 0, &error);
-  va_end (var_args);
-
-  return error;
-}       
-
-static gchar *
-lcopy (GValue *value, ...)
-{
-  gchar *error;
-  va_list var_args;
-
-  error = NULL;
-
-  va_start (var_args, value);
-  G_VALUE_LCOPY (value, var_args, 0, &error);
-  va_end (var_args);
-
-  return error;
-}       
-
-static void
-test_collection (void)
-{
-  GValue value = G_VALUE_INIT;
-  gchar *error;
-  
-  g_value_init (&value, G_TYPE_CHAR);
-  error = collect (&value, 'c');
-  g_assert (error == NULL);
-  g_assert (g_value_get_char (&value) == 'c');
-  
-  g_value_unset (&value);
-  g_value_init (&value, G_TYPE_UCHAR);
-  error = collect (&value, 129);
-  g_assert (error == NULL);
-  g_assert (g_value_get_uchar (&value) == 129);
-  
-  g_value_unset (&value);
-  g_value_init (&value, G_TYPE_BOOLEAN);
-  error = collect (&value, TRUE);
-  g_assert (error == NULL);
-  g_assert (g_value_get_boolean (&value) == TRUE);
-  
-  g_value_unset (&value);
-  g_value_init (&value, G_TYPE_INT);
-  error = collect (&value, G_MAXINT);
-  g_assert (error == NULL);
-  g_assert (g_value_get_int (&value) == G_MAXINT);
-  
-  g_value_unset (&value);
-  g_value_init (&value, G_TYPE_UINT);
-  error = collect (&value, G_MAXUINT);
-  g_assert (error == NULL);
-  g_assert (g_value_get_uint (&value) == G_MAXUINT);
-  
-  g_value_unset (&value);  
-  g_value_init (&value, G_TYPE_LONG);
-  error = collect (&value, G_MAXLONG);
-  g_assert (error == NULL);
-  g_assert (g_value_get_long (&value) == G_MAXLONG);
-  
-  g_value_unset (&value);
-  g_value_init (&value, G_TYPE_ULONG);
-  error = collect (&value, G_MAXULONG);
-  g_assert (error == NULL);
-  g_assert (g_value_get_ulong (&value) == G_MAXULONG);
-  
-  g_value_unset (&value);  
-  g_value_init (&value, G_TYPE_INT64);
-  error = collect (&value, G_MAXINT64);
-  g_assert (error == NULL);
-  g_assert (g_value_get_int64 (&value) == G_MAXINT64);
-  
-  g_value_unset (&value);
-  g_value_init (&value, G_TYPE_UINT64);
-  error = collect (&value, G_MAXUINT64);
-  g_assert (error == NULL);
-  g_assert (g_value_get_uint64 (&value) == G_MAXUINT64);
-  
-  g_value_unset (&value);
-  g_value_init (&value, G_TYPE_FLOAT);
-  error = collect (&value, G_MAXFLOAT);
-  g_assert (error == NULL);
-  g_assert (g_value_get_float (&value) == G_MAXFLOAT);
-  
-  g_value_unset (&value);
-  g_value_init (&value, G_TYPE_DOUBLE);
-  error = collect (&value, G_MAXDOUBLE);
-  g_assert (error == NULL);
-  g_assert (g_value_get_double (&value) == G_MAXDOUBLE);
-  
-  g_value_unset (&value);
-  g_value_init (&value, G_TYPE_STRING);
-  error = collect (&value, "string ?");
-  g_assert (error == NULL);
-  g_assert (strcmp (g_value_get_string (&value), "string ?") == 0);
-  
-  g_value_unset (&value);
-  g_value_init (&value, G_TYPE_GTYPE);
-  error = collect (&value, G_TYPE_BOXED);
-  g_assert (error == NULL);
-  g_assert (g_value_get_gtype (&value) == G_TYPE_BOXED);
-
-  g_value_unset (&value);
-  g_value_init (&value, G_TYPE_VARIANT);
-  error = collect (&value, g_variant_new_uint32 (42));
-  g_assert (error == NULL);
-  g_assert (g_variant_is_of_type (g_value_get_variant (&value), G_VARIANT_TYPE ("u")));
-  g_assert_cmpuint (g_variant_get_uint32 (g_value_get_variant (&value)), ==, 42);
-
-  g_value_unset (&value);
-}
-
-static void
-test_copying (void)
-{
-  GValue value = G_VALUE_INIT;
-  gchar *error;
-
-  {
-    gchar c = 0;
-
-    g_value_init (&value, G_TYPE_CHAR);
-    g_value_set_char (&value, 'c');
-    error = lcopy (&value, &c);
-    g_assert (error == NULL);
-    g_assert (c == 'c');
-  }  
-
-  {
-    guchar c = 0;
-
-    g_value_unset (&value);
-    g_value_init (&value, G_TYPE_UCHAR);
-    g_value_set_uchar (&value, 129);
-    error = lcopy (&value, &c);
-    g_assert (error == NULL);
-    g_assert (c == 129);
-  }  
-
-  {
-    gint c = 0;
-
-    g_value_unset (&value);
-    g_value_init (&value, G_TYPE_INT);
-    g_value_set_int (&value, G_MAXINT);
-    error = lcopy (&value, &c);
-    g_assert (error == NULL);
-    g_assert (c == G_MAXINT);
-  }  
-
-  {
-    guint c = 0;
-
-    g_value_unset (&value);
-    g_value_init (&value, G_TYPE_UINT);
-    g_value_set_uint (&value, G_MAXUINT);
-    error = lcopy (&value, &c);
-    g_assert (error == NULL);
-    g_assert (c == G_MAXUINT);
-  }  
-
-  {
-    glong c = 0;
-
-    g_value_unset (&value);
-    g_value_init (&value, G_TYPE_LONG);
-    g_value_set_long (&value, G_MAXLONG);
-    error = lcopy (&value, &c);
-    g_assert (error == NULL);
-    g_assert (c == G_MAXLONG);
-  }  
-
-  {
-    gulong c = 0;
-
-    g_value_unset (&value);
-    g_value_init (&value, G_TYPE_ULONG);
-    g_value_set_ulong (&value, G_MAXULONG);
-    error = lcopy (&value, &c);
-    g_assert (error == NULL);
-    g_assert (c == G_MAXULONG);
-  }  
-
-  {
-    gint64 c = 0;
-
-    g_value_unset (&value);
-    g_value_init (&value, G_TYPE_INT64);
-    g_value_set_int64 (&value, G_MAXINT64);
-    error = lcopy (&value, &c);
-    g_assert (error == NULL);
-    g_assert (c == G_MAXINT64);
-  }  
-
-  {
-    guint64 c = 0;
-
-    g_value_unset (&value);
-    g_value_init (&value, G_TYPE_UINT64);
-    g_value_set_uint64 (&value, G_MAXUINT64);
-    error = lcopy (&value, &c);
-    g_assert (error == NULL);
-    g_assert (c == G_MAXUINT64);
-  }  
-
-  {
-    gfloat c = 0;
-
-    g_value_unset (&value);
-    g_value_init (&value, G_TYPE_FLOAT);
-    g_value_set_float (&value, G_MAXFLOAT);
-    error = lcopy (&value, &c);
-    g_assert (error == NULL);
-    g_assert (c == G_MAXFLOAT);
-  }  
-
-  {
-    gdouble c = 0;
-
-    g_value_unset (&value);
-    g_value_init (&value, G_TYPE_DOUBLE);
-    g_value_set_double (&value, G_MAXDOUBLE);
-    error = lcopy (&value, &c);
-    g_assert (error == NULL);
-    g_assert (c == G_MAXDOUBLE);
-  }  
-
-  {
-    gchar *c = NULL;
-
-    g_value_unset (&value);
-    g_value_init (&value, G_TYPE_STRING);
-    g_value_set_string (&value, "string ?");
-    error = lcopy (&value, &c);
-    g_assert (error == NULL);
-    g_assert (strcmp (c, "string ?") == 0);
-    g_free (c);
-  }  
-
-  {
-    GType c = G_TYPE_NONE;
-
-    g_value_unset (&value);
-    g_value_init (&value, G_TYPE_GTYPE);
-    g_value_set_gtype (&value, G_TYPE_BOXED);
-    error = lcopy (&value, &c);
-    g_assert (error == NULL);
-    g_assert (c == G_TYPE_BOXED);
-  }  
-
-  {
-    GVariant *c = NULL;
-
-    g_value_unset (&value);
-    g_value_init (&value, G_TYPE_VARIANT);
-    g_value_set_variant (&value, g_variant_new_uint32 (42));
-    error = lcopy (&value, &c);
-    g_assert (error == NULL);
-    g_assert (c != NULL);
-    g_assert (g_variant_is_of_type (c, G_VARIANT_TYPE ("u")));
-    g_assert_cmpuint (g_variant_get_uint32 (c), ==, 42);
-    g_variant_unref (c);
-    g_value_unset (&value);
-  }
-}
-
-
-int
-main (int argc, char *argv[])
-{
-  g_test_init (&argc, &argv, NULL);
-
-  g_test_add_func ("/gvalue/enum-transformation", test_enum_transformation);
-  g_test_add_func ("/gvalue/gtype", test_gtype_value);
-  g_test_add_func ("/gvalue/collection", test_collection);
-  g_test_add_func ("/gvalue/copying", test_copying);
-
-  return g_test_run ();
-}
index 24ceda0..a02480e 100644 (file)
@@ -27,8 +27,6 @@ testmarshal_c = custom_target('testmarshal_c',
 )
 
 gobject_tests = {
-  'gvalue-test' : {'tap' : true},
-  'paramspec-test' : {'tap' : true},
   'deftype' : {},
   'defaultiface' : {
     'extra_sources' : ['testmodule.c'],
diff --git a/tests/gobject/paramspec-test.c b/tests/gobject/paramspec-test.c
deleted file mode 100644 (file)
index a794df3..0000000
+++ /dev/null
@@ -1,366 +0,0 @@
-/* GLIB - Library of useful routines for C programming
- * Copyright (C) 1995-1997  Peter Mattis, Spencer Kimball and Josh MacDonald
- *
- * This library 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 library 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/>.
- */
-
-/*
- * Modified by the GLib Team and others 1997-2000.  See the AUTHORS
- * file for a list of people on the GLib Team.  See the ChangeLog
- * files for a list of changes.  These files are distributed with
- * GLib at ftp://ftp.gtk.org/pub/gtk/. 
- */
-
-#undef G_DISABLE_ASSERT
-#undef G_LOG_DOMAIN
-
-#include <string.h>
-
-#include <glib.h>
-#include <glib-object.h>
-
-static void
-test_param_spec_char (void)
-{
-  GParamSpec *pspec;
-  GValue value = G_VALUE_INIT;
-  gboolean modified;
-  pspec = g_param_spec_char ("char", "nick", "blurb",
-                            20, 40, 30, G_PARAM_READWRITE);
-
-  g_assert (strcmp (g_param_spec_get_name (pspec), "char") == 0);
-  g_assert (strcmp (g_param_spec_get_nick (pspec), "nick") == 0);
-  g_assert (strcmp (g_param_spec_get_blurb (pspec), "blurb") == 0);
-
-  g_value_init (&value, G_TYPE_CHAR);
-  g_value_set_char (&value, 30);
-
-  g_assert (g_param_value_defaults (pspec, &value));
-  
-  g_value_set_char (&value, 0);
-  modified = g_param_value_validate (pspec, &value);
-  g_assert (modified && g_value_get_char (&value) == 20);
-
-  g_value_set_char (&value, 20);
-  modified = g_param_value_validate (pspec, &value);
-  g_assert (!modified && g_value_get_char (&value) == 20);
-
-  g_value_set_char (&value, 40);
-  modified = g_param_value_validate (pspec, &value);
-  g_assert (!modified && g_value_get_char (&value) == 40);
-
-  g_value_set_char (&value, 60);
-  modified = g_param_value_validate (pspec, &value);
-  g_assert (modified && g_value_get_char (&value) == 40);
-
-  g_value_set_schar (&value, 0);
-  modified = g_param_value_validate (pspec, &value);
-  g_assert (modified && g_value_get_schar (&value) == 20);
-
-  g_value_set_schar (&value, 20);
-  modified = g_param_value_validate (pspec, &value);
-  g_assert (!modified && g_value_get_schar (&value) == 20);
-
-  g_value_set_schar (&value, 40);
-  modified = g_param_value_validate (pspec, &value);
-  g_assert (!modified && g_value_get_schar (&value) == 40);
-
-  g_value_set_schar (&value, 60);
-  modified = g_param_value_validate (pspec, &value);
-  g_assert (modified && g_value_get_schar (&value) == 40);
-
-  g_param_spec_unref (pspec);
-}
-
-static void
-test_param_spec_string (void)
-{
-  GParamSpec *pspec;
-  GValue value = G_VALUE_INIT;
-  gboolean modified;
-
-  pspec = g_param_spec_string ("string", "nick", "blurb",
-                               NULL, G_PARAM_READWRITE);
-  g_value_init (&value, G_TYPE_STRING);
-
-  g_value_set_string (&value, "foobar");
-  modified = g_param_value_validate (pspec, &value);
-  g_assert (!modified);
-
-  g_value_set_string (&value, "");
-  modified = g_param_value_validate (pspec, &value);
-  g_assert (!modified && g_value_get_string (&value) != NULL);
-
-  /* test ensure_non_null */
-
-  G_PARAM_SPEC_STRING (pspec)->ensure_non_null = TRUE;
-
-  g_value_set_string (&value, NULL);
-  modified = g_param_value_validate (pspec, &value);
-  g_assert (modified && g_value_get_string (&value) != NULL);
-
-  G_PARAM_SPEC_STRING (pspec)->ensure_non_null = FALSE;
-
-  /* test null_fold_if_empty */
-
-  G_PARAM_SPEC_STRING (pspec)->null_fold_if_empty = TRUE;
-
-  g_value_set_string (&value, "");
-  modified = g_param_value_validate (pspec, &value);
-  g_assert (modified && g_value_get_string (&value) == NULL);
-
-  g_value_set_static_string (&value, "");
-  modified = g_param_value_validate (pspec, &value);
-  g_assert (modified && g_value_get_string (&value) == NULL);
-
-  G_PARAM_SPEC_STRING (pspec)->null_fold_if_empty = FALSE;
-
-  /* test cset_first */
-
-  G_PARAM_SPEC_STRING (pspec)->cset_first = g_strdup ("abc");
-  G_PARAM_SPEC_STRING (pspec)->substitutor = '-';
-
-  g_value_set_string (&value, "ABC");
-  modified = g_param_value_validate (pspec, &value);
-  g_assert (modified && g_value_get_string (&value)[0] == '-');
-
-  g_value_set_static_string (&value, "ABC");
-  modified = g_param_value_validate (pspec, &value);
-  g_assert (modified && g_value_get_string (&value)[0] == '-');
-
-  /* test cset_nth */
-
-  G_PARAM_SPEC_STRING (pspec)->cset_nth = g_strdup ("abc");
-
-  g_value_set_string (&value, "aBC");
-  modified = g_param_value_validate (pspec, &value);
-  g_assert (modified && g_value_get_string (&value)[1] == '-');
-
-  g_value_set_static_string (&value, "aBC");
-  modified = g_param_value_validate (pspec, &value);
-  g_assert (modified && g_value_get_string (&value)[1] == '-');
-
-  g_value_unset (&value);
-  g_param_spec_unref (pspec);
-}
-
-static void
-test_param_spec_override (void)
-{
-  GParamSpec *ospec, *pspec;
-  GValue value = G_VALUE_INIT;
-  gboolean modified;
-  ospec = g_param_spec_char ("char", "nick", "blurb",
-                            20, 40, 30, G_PARAM_READWRITE);
-
-  pspec = g_param_spec_override ("override", ospec);
-
-  g_assert (strcmp (g_param_spec_get_name (pspec), "override") == 0);
-  g_assert (strcmp (g_param_spec_get_nick (pspec), "nick") == 0);
-  g_assert (strcmp (g_param_spec_get_blurb (pspec), "blurb") == 0);
-
-  g_value_init (&value, G_TYPE_CHAR);
-  g_value_set_char (&value, 30);
-
-  g_assert (g_param_value_defaults (pspec, &value));
-  
-  g_value_set_char (&value, 0);
-  modified = g_param_value_validate (pspec, &value);
-  g_assert (modified && g_value_get_char (&value) == 20);
-
-  g_value_set_char (&value, 20);
-  modified = g_param_value_validate (pspec, &value);
-  g_assert (!modified && g_value_get_char (&value) == 20);
-
-  g_value_set_char (&value, 40);
-  modified = g_param_value_validate (pspec, &value);
-  g_assert (!modified && g_value_get_char (&value) == 40);
-
-  g_value_set_char (&value, 60);
-  modified = g_param_value_validate (pspec, &value);
-  g_assert (modified && g_value_get_char (&value) == 40);
-
-  g_param_spec_unref (pspec);
-  g_param_spec_unref (ospec);
-}
-
-static void
-test_param_spec_gtype (void)
-{
-  GParamSpec *pspec;
-  GValue value = G_VALUE_INIT;
-  gboolean modified;
-  
-  pspec = g_param_spec_gtype ("gtype", "nick", "blurb",
-                             G_TYPE_PARAM, G_PARAM_READWRITE);
-  
-  g_value_init (&value, G_TYPE_GTYPE);
-  g_value_set_gtype (&value, G_TYPE_PARAM);
-
-  g_assert (g_param_value_defaults (pspec, &value));
-  
-  g_value_set_gtype (&value, G_TYPE_INT);
-  modified = g_param_value_validate (pspec, &value);
-  g_assert (modified && g_value_get_gtype (&value) == G_TYPE_PARAM);
-
-  g_value_set_gtype (&value, G_TYPE_PARAM_INT);
-  modified = g_param_value_validate (pspec, &value);
-  g_assert (!modified && g_value_get_gtype (&value) == G_TYPE_PARAM_INT);
-
-  g_param_spec_unref (pspec);
-}
-
-static void
-test_param_spec_variant (void)
-{
-  GParamSpec *pspec;
-  GValue value = G_VALUE_INIT;
-  GValue value2 = G_VALUE_INIT;
-  GValue value3 = G_VALUE_INIT;
-  GValue value4 = G_VALUE_INIT;
-  GValue value5 = G_VALUE_INIT;
-  gboolean modified;
-
-  pspec = g_param_spec_variant ("variant", "nick", "blurb",
-                                G_VARIANT_TYPE ("i"),
-                                g_variant_new_int32 (42),
-                                G_PARAM_READWRITE);
-
-  g_value_init (&value, G_TYPE_VARIANT);
-  g_value_set_variant (&value, g_variant_new_int32 (42));
-
-  g_value_init (&value2, G_TYPE_VARIANT);
-  g_value_set_variant (&value2, g_variant_new_int32 (43));
-
-  g_value_init (&value3, G_TYPE_VARIANT);
-  g_value_set_variant (&value3, g_variant_new_int16 (42));
-
-  g_value_init (&value4, G_TYPE_VARIANT);
-  g_value_set_variant (&value4, g_variant_new_parsed ("[@u 15, @u 10]"));
-
-  g_value_init (&value5, G_TYPE_VARIANT);
-  g_value_set_variant (&value5, NULL);
-
-  g_assert_true (g_param_value_defaults (pspec, &value));
-  g_assert_false (g_param_value_defaults (pspec, &value2));
-  g_assert_false (g_param_value_defaults (pspec, &value3));
-  g_assert_false (g_param_value_defaults (pspec, &value4));
-  g_assert_false (g_param_value_defaults (pspec, &value5));
-
-  modified = g_param_value_validate (pspec, &value);
-  g_assert_false (modified);
-
-  g_value_reset (&value);
-  g_value_set_variant (&value, g_variant_new_uint32 (41));
-  modified = g_param_value_validate (pspec, &value);
-  g_assert_true (modified);
-  g_assert_cmpint (g_variant_get_int32 (g_value_get_variant (&value)), ==, 42);
-  g_value_unset (&value);
-
-  g_value_unset (&value5);
-  g_value_unset (&value4);
-  g_value_unset (&value3);
-  g_value_unset (&value2);
-
-  g_param_spec_unref (pspec);
-}
-
-/* Test g_param_values_cmp() for #GParamSpecVariant. */
-static void
-test_param_spec_variant_cmp (void)
-{
-  const struct
-    {
-      const GVariantType *pspec_type;
-      const gchar *v1;
-      enum
-        {
-          LESS_THAN = -1,
-          EQUAL = 0,
-          GREATER_THAN = 1,
-          NOT_EQUAL,
-        } expected_result;
-      const gchar *v2;
-    }
-  vectors[] =
-    {
-      { G_VARIANT_TYPE ("i"), "@i 1", LESS_THAN, "@i 2" },
-      { G_VARIANT_TYPE ("i"), "@i 2", EQUAL, "@i 2" },
-      { G_VARIANT_TYPE ("i"), "@i 3", GREATER_THAN, "@i 2" },
-      { G_VARIANT_TYPE ("i"), NULL, LESS_THAN, "@i 2" },
-      { G_VARIANT_TYPE ("i"), NULL, EQUAL, NULL },
-      { G_VARIANT_TYPE ("i"), "@i 1", GREATER_THAN, NULL },
-      { G_VARIANT_TYPE ("i"), "@u 1", LESS_THAN, "@u 2" },
-      { G_VARIANT_TYPE ("i"), "@as ['hi']", NOT_EQUAL, "@u 2" },
-      { G_VARIANT_TYPE ("i"), "@as ['hi']", NOT_EQUAL, "@as ['there']" },
-      { G_VARIANT_TYPE ("i"), "@as ['hi']", EQUAL, "@as ['hi']" },
-    };
-  gsize i;
-
-  for (i = 0; i < G_N_ELEMENTS (vectors); i++)
-    {
-      GParamSpec *pspec;
-      GValue v1 = G_VALUE_INIT;
-      GValue v2 = G_VALUE_INIT;
-      gint cmp;
-
-      pspec = g_param_spec_variant ("variant", "nick", "blurb",
-                                    vectors[i].pspec_type,
-                                    NULL,
-                                    G_PARAM_READWRITE);
-
-      g_value_init (&v1, G_TYPE_VARIANT);
-      g_value_set_variant (&v1, (vectors[i].v1 != NULL) ? g_variant_new_parsed (vectors[i].v1) : NULL);
-
-      g_value_init (&v2, G_TYPE_VARIANT);
-      g_value_set_variant (&v2, (vectors[i].v2 != NULL) ? g_variant_new_parsed (vectors[i].v2) : NULL);
-
-      cmp = g_param_values_cmp (pspec, &v1, &v2);
-
-      switch (vectors[i].expected_result)
-        {
-        case LESS_THAN:
-        case EQUAL:
-        case GREATER_THAN:
-          g_assert_cmpint (cmp, ==, vectors[i].expected_result);
-          break;
-        case NOT_EQUAL:
-          g_assert_cmpint (cmp, !=, 0);
-          break;
-        default:
-          g_assert_not_reached ();
-        }
-
-      g_value_unset (&v2);
-      g_value_unset (&v1);
-      g_param_spec_unref (pspec);
-    }
-}
-
-int
-main (int argc, char *argv[])
-{
-  g_test_init (&argc, &argv, NULL);
-
-  g_test_add_func ("/paramspec/char", test_param_spec_char);
-  g_test_add_func ("/paramspec/string", test_param_spec_string);
-  g_test_add_func ("/paramspec/override", test_param_spec_override);
-  g_test_add_func ("/paramspec/gtype", test_param_spec_gtype);
-  g_test_add_func ("/paramspec/variant", test_param_spec_variant);
-  g_test_add_func ("/paramspec/variant/cmp", test_param_spec_variant_cmp);
-
-  return g_test_run ();
-}
diff --git a/tests/iochannel-test.c b/tests/iochannel-test.c
deleted file mode 100644 (file)
index 06a85e5..0000000
+++ /dev/null
@@ -1,172 +0,0 @@
-#undef G_DISABLE_ASSERT
-#undef G_LOG_DOMAIN
-
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <fcntl.h>
-#include <glib.h>
-#include <string.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-#define BUFFER_SIZE 1024
-
-static void
-test_small_writes (void)
-{
-  GIOChannel *io;
-  GIOStatus status = G_IO_STATUS_ERROR;
-  guint cnt; 
-  gchar tmp;
-  GError *error = NULL;
-
-  io = g_io_channel_new_file ("iochannel-test-outfile", "w", &error);
-  if (error)
-    {
-      g_warning ("Unable to open file %s: %s", 
-                "iochannel-test-outfile", 
-                error->message);
-      g_clear_error (&error);
-      
-      exit (1);
-    }
-
-  g_io_channel_set_encoding (io, NULL, NULL);
-  g_io_channel_set_buffer_size (io, 1022);
-
-  cnt = 2 * g_io_channel_get_buffer_size (io);
-  tmp = 0;
-  while (cnt)
-    {
-      status = g_io_channel_write_chars (io, &tmp, 1, NULL, NULL);
-      if (status == G_IO_STATUS_ERROR)
-       break;
-      if (status == G_IO_STATUS_NORMAL)
-       cnt--;
-    }
-
-  g_assert (status == G_IO_STATUS_NORMAL);
-
-  g_io_channel_unref (io);
-}
-
-
-gint main (gint argc, gchar * argv[])
-{
-    GIOChannel *gio_r, *gio_w ;
-    GError *gerr = NULL;
-    GString *buffer;
-    char *filename;
-    gint rlength = 0;
-    glong wlength = 0;
-    gsize length_out;
-    const gchar encoding[] = "EUC-JP";
-    GIOStatus status;
-
-    g_test_init (&argc, &argv, NULL);
-
-    filename = g_test_build_filename (G_TEST_DIST, "iochannel-test-infile", NULL);
-
-    setbuf (stdout, NULL); /* For debugging */
-
-    gio_r = g_io_channel_new_file (filename, "r", &gerr);
-    if (gerr)
-      {
-        g_warning ("Unable to open file %s: %s", filename, gerr->message);
-        g_clear_error (&gerr);
-        return 1;
-      }
-    gio_w = g_io_channel_new_file ("iochannel-test-outfile", "w", &gerr);
-    if (gerr)
-      {
-        g_warning ("Unable to open file %s: %s", "iochannel-test-outfile", gerr->message);
-        g_clear_error (&gerr);
-        return 1;
-      }
-
-    g_io_channel_set_encoding (gio_r, encoding, &gerr);
-    if (gerr)
-      {
-        g_warning ("%s", gerr->message);
-        /* Keep going if this is just a case of iconv not supporting EUC-JP, see bug 428048 */
-        if (gerr->code != G_CONVERT_ERROR_NO_CONVERSION)
-          return 1;
-        g_clear_error (&gerr);
-      }
-    
-    g_io_channel_set_buffer_size (gio_r, BUFFER_SIZE);
-
-    status = g_io_channel_set_flags (gio_r, G_IO_FLAG_NONBLOCK, &gerr);
-    if (status == G_IO_STATUS_ERROR)
-      {
-        g_warning ("%s", gerr->message);
-        g_clear_error (&gerr);
-      }
-    buffer = g_string_sized_new (BUFFER_SIZE);
-
-    while (TRUE)
-    {
-        do
-          status = g_io_channel_read_line_string (gio_r, buffer, NULL, &gerr);
-        while (status == G_IO_STATUS_AGAIN);
-        if (status != G_IO_STATUS_NORMAL)
-          break;
-
-        rlength += buffer->len;
-
-        do
-          status = g_io_channel_write_chars (gio_w, buffer->str, buffer->len,
-            &length_out, &gerr);
-        while (status == G_IO_STATUS_AGAIN);
-        if (status != G_IO_STATUS_NORMAL)
-          break;
-
-        wlength += length_out;
-
-        if (length_out < buffer->len)
-          g_warning ("Only wrote part of the line.");
-
-#ifdef VERBOSE
-        g_print ("%s", buffer->str);
-#endif
-        g_string_truncate (buffer, 0);
-    }
-
-    switch (status)
-      {
-        case G_IO_STATUS_EOF:
-          break;
-        case G_IO_STATUS_ERROR:
-          g_warning ("%s", gerr->message);
-          g_clear_error (&gerr);
-          break;
-        default:
-          g_warning ("Abnormal exit from write loop.");
-          break;
-      }
-
-    do
-      status = g_io_channel_flush (gio_w, &gerr);
-    while (status == G_IO_STATUS_AGAIN);
-
-    if (status == G_IO_STATUS_ERROR)
-      {
-        g_warning ("%s", gerr->message);
-        g_clear_error (&gerr);
-      }
-
-#ifdef VERBOSE
-    g_print ("read %d bytes, wrote %ld bytes\n", rlength, wlength);
-#endif
-
-    g_io_channel_unref(gio_r);
-    g_io_channel_unref(gio_w);
-
-    test_small_writes ();
-
-    g_free (filename);
-    g_string_free (buffer, TRUE);
-
-    return 0;
-}
index ad776fa..d4547de 100644 (file)
@@ -29,7 +29,7 @@
 #include <process.h>
 #endif
 
-static gchar *dir, *filename, *displayname, *childname;
+static gchar *dir, *global_filename, *global_displayname, *childname;
 
 static gboolean stop = FALSE;
 
@@ -113,7 +113,7 @@ child_main (int argc, char *argv[])
   GMainLoop *loop;
 
   parent_pid = atoi (argv[2]);
-  map = map_or_die (filename, FALSE);
+  map = map_or_die (global_filename, FALSE);
 
 #ifndef G_OS_WIN32
   signal (SIGUSR1, handle_usr1);
@@ -139,13 +139,13 @@ test_mapping (void)
 {
   GMappedFile *map;
 
-  write_or_die (filename, "ABC", -1);
+  write_or_die (global_filename, "ABC", -1);
 
-  map = map_or_die (filename, FALSE);
+  map = map_or_die (global_filename, FALSE);
   g_assert (g_mapped_file_get_length (map) == 3);
   g_mapped_file_free (map);
 
-  map = map_or_die (filename, TRUE);
+  map = map_or_die (global_filename, TRUE);
   g_assert (g_mapped_file_get_length (map) == 3);
   g_mapped_file_free (map);
   g_message ("test_mapping: ok");
@@ -159,8 +159,8 @@ test_private (void)
   gchar *buffer;
   gsize len;
 
-  write_or_die (filename, "ABC", -1);
-  map = map_or_die (filename, TRUE);
+  write_or_die (global_filename, "ABC", -1);
+  map = map_or_die (global_filename, TRUE);
 
   buffer = (gchar *)g_mapped_file_get_contents (map);
   buffer[0] = '1';
@@ -168,10 +168,10 @@ test_private (void)
   buffer[2] = '3';
   g_mapped_file_free (map);
 
-  if (!g_file_get_contents (filename, &buffer, &len, &error))
+  if (!g_file_get_contents (global_filename, &buffer, &len, &error))
     {
-      g_print ("failed to read '%s': %s\n", 
-              displayname, error->message);
+      g_print ("failed to read '%s': %s\n",
+               global_displayname, error->message);
       exit (1);
       
     }
@@ -201,8 +201,8 @@ test_child_private (gchar *argv0)
   g_assert (!g_file_test ("STOP", G_FILE_TEST_EXISTS));
 #endif
 
-  write_or_die (filename, "ABC", -1);
-  map = map_or_die (filename, TRUE);
+  write_or_die (global_filename, "ABC", -1);
+  map = map_or_die (global_filename, TRUE);
 
 #ifndef G_OS_WIN32
   signal (SIGUSR1, handle_usr1);
@@ -303,8 +303,8 @@ main (int argc,
 #endif
 
   dir = g_get_current_dir ();
-  filename = g_build_filename (dir, "maptest", NULL);
-  displayname = g_filename_display_name (filename);
+  global_filename = g_build_filename (dir, "maptest", NULL);
+  global_displayname = g_filename_display_name (global_filename);
   childname = g_build_filename (dir, "mapchild", NULL);
 
   if (argc > 1)
@@ -313,8 +313,8 @@ main (int argc,
     ret = parent_main (argc, argv);
 
   g_free (childname);
-  g_free (filename);
-  g_free (displayname);
+  g_free (global_filename);
+  g_free (global_displayname);
   g_free (dir);
 
   return ret;
index 6741f8f..c95fa1d 100644 (file)
@@ -16,32 +16,16 @@ subdir('gobject')
 subdir('refcount')
 
 tests = {
-  'testglib' : {'tap' : true},
-  'testgdate' : {},
-  'datetime' : {},
-  'bit-test' : {},
-  'child-test' : {},
-  'completion-test' : {},
-  'dirname-test' : {},
-  'file-test' : {},
-  'env-test' : {},
   'gio-test' : {},
   'mainloop-test' : {},
   'mapping-test' : {},
   'onceinit' : {},
-  'asyncqueue-test' : {},
-  'qsort-test' : {},
-  'relation-test' : {},
-  'slice-concurrent' : {},
   'slice-threadinit' : {
     'dependencies' : [libgthread_dep],
   },
-  'sources' : {},
   'spawn-test' : {},
   'thread-test' : {},
   'threadpool-test' : {'suite' : ['slow']},
-  'type-test' : {},
-  'unicode-caseconv' : {},
   'unicode-encoding' : {},
   'module-test-library' : {
     'dependencies' : [libgmodule_dep],
@@ -55,28 +39,18 @@ tests = {
     'source': 'module-test.c',
     'c_args': ['-DMODULE_TYPE="plugin"'],
   },
-  'cxx-test' : {
-    'source' : 'cxx-test.cpp',
-    'include_directories' : gmoduleinc,
-    'dependencies' : [libgio_dep],
-  },
 }
 
 test_extra_programs = {
   'slice-test' : {
     'extra_sources' : ['memchunks.c'],
   },
-  'slice-color' : {
-    'extra_sources' : ['memchunks.c'],
-  },
   'assert-msg-test' : {},
-  'unicode-collate' : {},
 }
 
 if host_machine.system() != 'windows'
   tests += {
     'timeloop' : {},
-    'iochannel-test' : {},
   }
 else
   test_extra_programs += {
@@ -86,9 +60,6 @@ endif
 
 if installed_tests_enabled
   install_data(
-    'iochannel-test-infile',
-    'casemap.txt',
-    'casefold.txt',
     'utf8.txt',
     install_dir : installed_tests_execdir,
   )
index 62473d2..a74bc74 100644 (file)
@@ -101,8 +101,12 @@ main (int    argc,
   if (!module_self)
     g_error ("error: %s", g_module_error ());
 
+    /* On Windows static compilation mode, glib API symbols are not
+     * exported dynamically by definition. */
+#if !defined(G_PLATFORM_WIN32) || !defined(GLIB_STATIC_COMPILATION)
   if (!g_module_symbol (module_self, "g_module_close", (gpointer *) &f_self))
     g_error ("error: %s", g_module_error ());
+#endif
 
   module_a = g_module_open_full (plugin_a, G_MODULE_BIND_LAZY, &error);
   g_assert_no_error (error);
diff --git a/tests/qsort-test.c b/tests/qsort-test.c
deleted file mode 100644 (file)
index 67abb23..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-#undef G_DISABLE_ASSERT
-#undef G_LOG_DOMAIN
-
-#include <glib.h>
-
-#define SIZE 100000
-
-guint32 array[SIZE];
-
-static gint
-sort (gconstpointer a, gconstpointer b, gpointer user_data)
-{
-  return *(guint32*)a < *(guint32*)b ? -1 : 1;
-}
-
-int
-main (int argc, char **argv)
-{
-  int i;
-
-  for (i = 0; i < SIZE; i++)
-    array[i] = g_random_int ();
-
-  g_qsort_with_data (array, SIZE, sizeof (guint32), sort, NULL);
-
-  for (i = 0; i < SIZE - 1; i++)
-    g_assert (array[i] <= array[i+1]);
-
-  /* 0 elements is a valid case */
-  g_qsort_with_data (array, 0, sizeof (guint32), sort, NULL);
-
-  return 0;
-}
diff --git a/tests/run-collate-tests.sh b/tests/run-collate-tests.sh
deleted file mode 100755 (executable)
index fe6f020..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-#! /bin/sh
-
-fail ()
-{
-  echo "Test failed: $*"
-  exit 1
-}
-
-echo_v ()
-{
-  if [ "$verbose" = "1" ]; then
-    echo "$*"
-  fi
-}
-
-if [ "$1" = "-v" ]; then
-  verbose=1
-fi  
-for I in "${srcdir:-.}"/collate/*.in; do
-  echo_v "Sorting $I"
-  name=$(basename "${I}" .in)
-  ./unicode-collate "${I}" > collate.out
-  if [ $? -eq 2 ]; then
-    exit 0
-  fi   
-  diff collate.out "${srcdir:-.}/collate/$name.unicode" ||
-    fail "unexpected error when using g_utf8_collate() on $I"
-  ./unicode-collate --key "${I}" > collate.out
-  diff collate.out "${srcdir:-.}/collate/$name.unicode" ||
-    fail "unexpected error when using g_utf8_collate_key() on $I"
-  ./unicode-collate --file "${I}" > collate.out
-  diff collate.out "${srcdir:-.}/collate/$name.file" ||
-    fail "unexpected error when using g_utf8_collate_key_for_filename() on $I"
-done
-
-echo_v "All tests passed."
diff --git a/tests/slice-color.c b/tests/slice-color.c
deleted file mode 100644 (file)
index bcbb970..0000000
+++ /dev/null
@@ -1,177 +0,0 @@
-/* GLIB sliced memory - fast threaded memory chunk allocator
- * Copyright (C) 2005 Tim Janik
- *
- * This library 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 library 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 <string.h>
-
-#define ALIGN(size, base)       ((base) * (gsize) (((size) + (base) - 1) / (base)))
-
-static gdouble parse_memsize (const gchar *cstring);
-static void    usage         (void);
-
-static void
-fill_memory (guint **mem,
-             guint   n,
-             guint   val)
-{
-  guint j, o = 0;
-  for (j = 0; j < n; j++)
-    mem[j][o] = val;
-}
-
-static guint64
-access_memory3 (guint  **mema,
-                guint  **memb,
-                guint  **memd,
-                guint    n,
-                guint64  repeats)
-{
-  guint64 accu = 0, i, j;
-  const guint o = 0;
-  for (i = 0; i < repeats; i++)
-    {
-      for (j = 1; j < n; j += 2)
-        memd[j][o] = mema[j][o] + memb[j][o];
-    }
-  for (i = 0; i < repeats; i++)
-    for (j = 0; j < n; j++)
-      accu += memd[j][o];
-  return accu;
-}
-
-static void
-touch_mem (guint64 block_size,
-           guint64 n_blocks,
-           guint64 repeats)
-{
-  guint64 j, accu, n = n_blocks;
-  GTimer *timer;
-  guint **memc;
-  guint **memb;
-  guint **mema = g_new (guint*, n);
-  for (j = 0; j < n; j++)
-    mema[j] = g_slice_alloc (block_size);
-  memb = g_new (guint*, n);
-  for (j = 0; j < n; j++)
-    memb[j] = g_slice_alloc (block_size);
-  memc = g_new (guint*, n);
-  for (j = 0; j < n; j++)
-    memc[j] = g_slice_alloc (block_size);
-
-  timer = g_timer_new();
-  fill_memory (mema, n, 2);
-  fill_memory (memb, n, 3);
-  fill_memory (memc, n, 4);
-  access_memory3 (mema, memb, memc, n, 3);
-  g_timer_start (timer);
-  accu = access_memory3 (mema, memb, memc, n, repeats);
-  g_timer_stop (timer);
-
-  g_print ("Access-time = %fs\n", g_timer_elapsed (timer, NULL));
-  g_assert (accu / repeats == (2 + 3) * n / 2 + 4 * n / 2);
-
-  for (j = 0; j < n; j++)
-    {
-      g_slice_free1 (block_size, mema[j]);
-      g_slice_free1 (block_size, memb[j]);
-      g_slice_free1 (block_size, memc[j]);
-    }
-  g_timer_destroy (timer);
-  g_free (mema);
-  g_free (memb);
-  g_free (memc);
-}
-
-static void
-usage (void)
-{
-  g_print ("Usage: slice-color <block-size> [memory-size] [repeats] [colorization]\n");
-}
-
-int
-main (int   argc,
-      char *argv[])
-{
-  guint64 block_size = 512, area_size = 1024 * 1024, n_blocks, repeats = 1000000;
-
-  if (argc > 1)
-    block_size = parse_memsize (argv[1]);
-  else
-    {
-      usage();
-      block_size = 512;
-    }
-  if (argc > 2)
-    area_size = parse_memsize (argv[2]);
-  if (argc > 3)
-    repeats = parse_memsize (argv[3]);
-  if (argc > 4)
-    g_slice_set_config (G_SLICE_CONFIG_COLOR_INCREMENT, parse_memsize (argv[4]));
-
-  /* figure number of blocks from block and area size.
-   * divide area by 3 because touch_mem() allocates 3 areas
-   */
-  n_blocks = area_size / 3 / ALIGN (block_size, sizeof (gsize) * 2);
-
-  /* basic sanity checks */
-  if (!block_size || !n_blocks || block_size >= area_size)
-    {
-      g_printerr ("Invalid arguments: block-size=%" G_GUINT64_FORMAT " memory-size=%" G_GUINT64_FORMAT "\n", block_size, area_size);
-      usage();
-      return 1;
-    }
-
-  g_printerr ("Will allocate and touch %" G_GUINT64_FORMAT " blocks of %" G_GUINT64_FORMAT " bytes (= %" G_GUINT64_FORMAT " bytes) %" G_GUINT64_FORMAT " times with color increment: 0x%08" G_GINT64_MODIFIER "x\n",
-              n_blocks, block_size, n_blocks * block_size, repeats,
-             (guint64)g_slice_get_config (G_SLICE_CONFIG_COLOR_INCREMENT));
-
-  touch_mem (block_size, n_blocks, repeats);
-  
-  return 0;
-}
-
-static gdouble
-parse_memsize (const gchar *cstring)
-{
-  gchar *mem = g_strdup (cstring);
-  gchar *string = g_strstrip (mem);
-  guint l = strlen (string);
-  gdouble f = 0;
-  gchar *derr = NULL;
-  gdouble msize;
-
-  switch (l ? string[l - 1] : 0)
-    {
-    case 'k':   f = 1000;               break;
-    case 'K':   f = 1024;               break;
-    case 'm':   f = 1000000;            break;
-    case 'M':   f = 1024 * 1024;        break;
-    case 'g':   f = 1000000000;         break;
-    case 'G':   f = 1024 * 1024 * 1024; break;
-    }
-  if (f)
-    string[l - 1] = 0;
-  msize = g_ascii_strtod (string, &derr);
-  g_free (mem);
-  if (derr && *derr)
-    {
-      g_printerr ("failed to parse number at: %s\n", derr);
-      msize = 0;
-    }
-  if (f)
-    msize *= f;
-  return msize;
-}
index 055adba..b2cd77f 100644 (file)
@@ -28,7 +28,7 @@ static gboolean want_corruption = FALSE;
 
 /* --- old memchunk prototypes (memchunks.c) --- */
 GMemChunk*      old_mem_chunk_new       (const gchar  *name,
-                                         gint          atom_size,
+                                         gulong        atom_size,
                                          gulong        area_size,
                                          gint          type);
 void            old_mem_chunk_destroy   (GMemChunk *mem_chunk);
@@ -95,8 +95,7 @@ test_memchunk_thread (gpointer data)
     }
 
   /* prepare for memchunk creation */
-  memchunks = g_alloca (sizeof (memchunks[0]) * prime_size);
-  memset (memchunks, 0, sizeof (memchunks[0]) * prime_size);
+  memchunks = g_newa0 (GMemChunk*, prime_size);
 
   ps = g_new (guint8*, number_of_blocks);
   ss = g_new (guint, number_of_blocks);
diff --git a/tests/sources.c b/tests/sources.c
deleted file mode 100644 (file)
index e9a8407..0000000
+++ /dev/null
@@ -1,185 +0,0 @@
-/* This library 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 library 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/>.
- *
- * Copyright 2012 Red Hat, Inc
- */
-
-#undef G_DISABLE_ASSERT
-#undef G_LOG_DOMAIN
-
-#include <glib.h>
-
-#define NSOURCES 50000
-
-static gboolean
-callback (gpointer user_data)
-{
-  g_assert_not_reached ();
-  return FALSE;
-}
-
-static void
-shuffle (GSource **sources, int num)
-{
-  int i, a, b;
-  GSource *tmp;
-
-  for (i = 0; i < num * 10; i++)
-    {
-      a = g_random_int_range (0, num);
-      b = g_random_int_range (0, num);
-      tmp = sources[a];
-      sources[a] = sources[b];
-      sources[b] = tmp;
-    }
-}
-
-static void
-thread_pool_attach_func (gpointer data,
-                         gpointer user_data)
-{
-  GMainContext *context = user_data;
-  GSource *source = data;
-
-  g_source_attach (source, context);
-  g_source_unref (source);
-}
-
-static void
-thread_pool_destroy_func (gpointer data,
-                          gpointer user_data)
-{
-  GSource *source = data;
-
-  g_source_destroy (source);
-}
-
-int
-main (int argc, char **argv)
-{
-  int i;
-  gint64 start;
-  gint64 end;
-  GMainContext *context;
-  GSource **sources;
-  GThreadPool *pool;
-  GError *error = NULL;
-
-  context = g_main_context_default ();
-  sources = g_new0 (GSource *, NSOURCES);
-
-  start = g_get_monotonic_time ();
-  for (i = 0; i < NSOURCES; i++)
-    {
-      sources[i] = g_idle_source_new ();
-      g_source_set_callback (sources[i], callback, NULL, NULL);
-      g_source_attach (sources[i], context);
-    }
-  end = g_get_monotonic_time ();
-  g_print ("Add same-priority sources: %" G_GINT64_FORMAT "\n",
-           (end - start) / 1000);
-
-#ifdef SLOW
-  start = g_get_monotonic_time ();
-  for (i = 0; i < NSOURCES; i++)
-    g_assert (sources[i] == g_main_context_find_source_by_id (context, g_source_get_id (sources[i])));
-  end = g_get_monotonic_time ();
-  g_print ("Find each source: %" G_GINT64_FORMAT "\n",
-           (end - start) / 1000);
-#endif
-
-  shuffle (sources, NSOURCES);
-
-  start = g_get_monotonic_time ();
-  for (i = 0; i < NSOURCES; i++)
-    {
-      g_source_destroy (sources[i]);
-      g_source_unref (sources[i]);
-    }
-  end = g_get_monotonic_time ();
-  g_print ("Remove in random order: %" G_GINT64_FORMAT "\n",
-           (end - start) / 1000);
-
-  /* Make sure they really did get removed */
-  g_main_context_iteration (context, FALSE);
-
-  start = g_get_monotonic_time ();
-  for (i = 0; i < NSOURCES; i++)
-    {
-      sources[i] = g_idle_source_new ();
-      g_source_set_callback (sources[i], callback, NULL, NULL);
-      g_source_set_priority (sources[i], i % 100);
-      g_source_attach (sources[i], context);
-    }
-  end = g_get_monotonic_time ();
-  g_print ("Add different-priority sources: %" G_GINT64_FORMAT "\n",
-           (end - start) / 1000);
-
-#ifdef SLOW
-  start = g_get_monotonic_time ();
-  for (i = 0; i < NSOURCES; i++)
-    g_assert (sources[i] == g_main_context_find_source_by_id (context, g_source_get_id (sources[i])));
-  end = g_get_monotonic_time ();
-  g_print ("Find each source: %" G_GINT64_FORMAT "\n",
-           (end - start) / 1000);
-#endif
-
-  shuffle (sources, NSOURCES);
-
-  start = g_get_monotonic_time ();
-  for (i = 0; i < NSOURCES; i++)
-    {
-      g_source_destroy (sources[i]);
-      g_source_unref (sources[i]);
-    }
-  end = g_get_monotonic_time ();
-  g_print ("Remove in random order: %" G_GINT64_FORMAT "\n",
-           (end - start) / 1000);
-
-  /* Make sure they really did get removed */
-  g_main_context_iteration (context, FALSE);
-
-  pool = g_thread_pool_new (thread_pool_attach_func, context,
-                            20, TRUE, NULL);
-  start = g_get_monotonic_time ();
-  for (i = 0; i < NSOURCES; i++)
-    {
-      sources[i] = g_idle_source_new ();
-      g_source_set_callback (sources[i], callback, NULL, NULL);
-      g_thread_pool_push (pool, sources[i], &error);
-      g_assert_no_error (error);
-    }
-  g_thread_pool_free (pool, FALSE, TRUE);
-  end = g_get_monotonic_time ();
-  g_print ("Add sources from threads: %" G_GINT64_FORMAT "\n",
-           (end - start) / 1000);
-
-  pool = g_thread_pool_new (thread_pool_destroy_func, context,
-                            20, TRUE, NULL);
-  start = g_get_monotonic_time ();
-  for (i = 0; i < NSOURCES; i++)
-    {
-      g_thread_pool_push (pool, sources[i], &error);
-      g_assert_no_error (error);
-    }
-  g_thread_pool_free (pool, FALSE, TRUE);
-  end = g_get_monotonic_time ();
-  g_print ("Remove sources from threads: %" G_GINT64_FORMAT "\n",
-           (end - start) / 1000);
-
-  /* Make sure they really did get removed */
-  g_main_context_iteration (context, FALSE);
-
-  g_free (sources);
-  return 0;
-}
diff --git a/tests/testgdate.c b/tests/testgdate.c
deleted file mode 100644 (file)
index 371d8ad..0000000
+++ /dev/null
@@ -1,513 +0,0 @@
-#undef G_DISABLE_ASSERT
-#undef G_LOG_DOMAIN
-
-#ifdef GLIB_COMPILATION
-#undef GLIB_COMPILATION
-#endif
-
-#include "glib.h"
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <locale.h>
-#include <time.h>
-
-gboolean failed = FALSE;
-guint32 passed = 0;
-guint32 notpassed = 0;
-
-#define        TEST(m,cond)    G_STMT_START { failed = !(cond); \
-if (failed) \
-  { ++notpassed; \
-    if (!m) \
-      g_print ("\n(%s:%d) failed for: %s\n", __FILE__, __LINE__, ( # cond )); \
-    else \
-      g_print ("\n(%s:%d) failed for: %s: (%s)\n", __FILE__, __LINE__, ( # cond ), (gchar*)m); \
-  } \
-else \
-  ++passed;    \
-if ((passed+notpassed) % 10000 == 0) \
-  g_print ("."); \
-fflush (stdout); \
-} G_STMT_END
-
-static void
-g_date_debug_print (GDate* d)
-{
-  if (!d) g_print("NULL!\n");
-  else 
-    g_print("julian: %u (%s) DMY: %u %u %u (%s)\n",
-           d->julian_days, 
-           d->julian ? "valid" : "invalid",
-           d->day,
-           d->month,
-           d->year,
-           d->dmy ? "valid" : "invalid");
-  
-  fflush(stdout);
-}
-
-int main(int argc, char** argv)
-{
-  GDate* d;
-  guint32 j;
-  GDateMonth m;
-  GDateYear y, prev_y;
-  GDateDay day;
-  gchar buf[101];
-  gchar* loc;
-  /* Try to get all the leap year cases. */
-  GDateYear check_years[] = { 
-    1, 2, 3, 4, 5, 6, 7, 8, 9, 10,
-    11, 12, 13, 14, 98, 99, 100, 101, 102, 103, 397, 
-    398, 399, 400, 401, 402, 403, 404, 405, 406,
-    1598, 1599, 1600, 1601, 1602, 1650, 1651,
-    1897, 1898, 1899, 1900, 1901, 1902, 1903, 
-    1961, 1962, 1963, 1964, 1965, 1967,
-    1968, 1969, 1970, 1971, 1972, 1973, 1974, 1975, 1976,
-    1977, 1978, 1979, 1980, 1981, 1982, 1983, 1984, 1985, 
-    1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 
-    1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 
-    2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012,
-    3000, 3001, 3002, 3998, 3999, 4000, 4001, 4002, 4003
-  };
-  guint n_check_years = sizeof(check_years)/sizeof(GDateYear);
-  guint i, k;
-  gboolean discontinuity;
-
-  g_print("checking GDate...");
-  
-  TEST("sizeof(GDate) is not more than 8 bytes on this platform", sizeof(GDate) < 9);
-
-  d = g_date_new();
-
-  TEST("Empty constructor produces invalid date", !g_date_valid(d));
-
-  g_date_free(d);
-
-  d = g_date_new_dmy(1,1,1);
-
-  TEST("January 1, Year 1 created and valid", g_date_valid(d));
-
-  j = g_date_get_julian(d);
-  
-  TEST("January 1, Year 1 is Julian date 1", j == 1);
-
-  TEST("Returned month is January", g_date_get_month(d) == G_DATE_JANUARY);
-  TEST("Returned day is 1", g_date_get_day(d) == 1);
-  TEST("Returned year is 1", g_date_get_year(d) == 1);
-
-  TEST("Bad month is invalid", !g_date_valid_month(G_DATE_BAD_MONTH));
-  TEST("Month 13 is invalid",  !g_date_valid_month(13));
-  TEST("Bad day is invalid",   !g_date_valid_day(G_DATE_BAD_DAY));
-  TEST("Day 32 is invalid",     !g_date_valid_day(32));
-  TEST("Bad year is invalid",  !g_date_valid_year(G_DATE_BAD_YEAR));
-  TEST("Bad julian is invalid", !g_date_valid_julian(G_DATE_BAD_JULIAN));
-  TEST("Bad weekday is invalid", !g_date_valid_weekday(G_DATE_BAD_WEEKDAY));
-  TEST("Year 2000 is a leap year", g_date_is_leap_year(2000));
-  TEST("Year 1999 is not a leap year", !g_date_is_leap_year(1999));
-  TEST("Year 1996 is a leap year", g_date_is_leap_year(1996));
-  TEST("Year 1600 is a leap year", g_date_is_leap_year(1600));
-  TEST("Year 2100 is not a leap year", !g_date_is_leap_year(2100));
-  TEST("Year 1800 is not a leap year", !g_date_is_leap_year(1800));
-
-  g_date_free(d);
-  
-  loc = setlocale(LC_ALL,"");
-  if (loc) 
-    g_print("\nLocale set to %s\n", loc);
-  else 
-    g_print("\nLocale unchanged\n");
-
-  d = g_date_new();
-  g_date_set_time(d, time(NULL));
-  TEST("Today is valid", g_date_valid(d));
-
-  g_date_strftime(buf,100,"Today is a %A, %x\n", d);
-  g_print("%s", buf);
-
-  g_date_set_time(d, 1);
-  TEST("Beginning of Unix epoch is valid", g_date_valid(d));
-
-  g_date_strftime(buf,100,"1 second into the Unix epoch it was a %A, in the month of %B, %x\n", d);
-  g_print("%s", buf);
-
-  g_date_set_julian(d, 1);
-  TEST("GDate's \"Julian\" epoch's first day is valid", g_date_valid(d));
-
-#ifndef G_OS_WIN32
-  g_date_strftime(buf,100,"Our \"Julian\" epoch begins on a %A, in the month of %B, %x\n",
-                 d);
-  g_print("%s", buf);
-#else
-  g_print ("But Windows FILETIME does not support dates before Jan 1 1601, so we can't strftime() the beginning of the \"Julian\" epoch.\n");
-#endif
-  g_date_set_dmy(d, 10, 1, 2000);
-
-  g_date_strftime(buf,100,"%x", d);
-
-  g_date_set_parse(d, buf);
-  /* Note: this test will hopefully work, but no promises. */
-  TEST("Successfully parsed a %x-formatted string", 
-       g_date_valid(d) && 
-       g_date_get_month(d) == 1 && 
-       g_date_get_day(d) == 10 && 
-       g_date_get_year(d) == 2000);
-  if (failed)
-    g_date_debug_print(d);
-  
-  g_date_free(d);
-
-  j = G_DATE_BAD_JULIAN;
-
-  i = 0;
-  discontinuity = TRUE;
-  y      = check_years[0];
-  prev_y = G_DATE_BAD_YEAR;
-g_print ("testing %d years\n", n_check_years);
-  while (i < n_check_years)
-    {
-      guint32 first_day_of_year = G_DATE_BAD_JULIAN;
-      guint16 days_in_year = g_date_is_leap_year(y) ? 366 : 365;
-      guint   sunday_week_of_year = 0;
-      guint   sunday_weeks_in_year = g_date_get_sunday_weeks_in_year(y);
-      guint   monday_week_of_year = 0;
-      guint   monday_weeks_in_year = g_date_get_monday_weeks_in_year(y);
-      guint   iso8601_week_of_year = 0;
-
-      if (discontinuity)
-        g_print(" (Break in sequence of requested years to check)\n");
-
-      g_print("Checking year %u", y);
-
-      TEST("Year is valid", g_date_valid_year(y));
-
-      TEST("Number of Sunday weeks in year is 52 or 53", 
-          sunday_weeks_in_year == 52 || sunday_weeks_in_year == 53);
-      
-      TEST("Number of Monday weeks in year is 52 or 53", 
-          monday_weeks_in_year == 52 || monday_weeks_in_year == 53);
-          
-      m = 1;
-      while (m < 13) 
-       {
-         guint8 dim = g_date_get_days_in_month(m,y);
-         GDate days[31];         /* This is the fast way, no allocation */
-
-         TEST("Sensible number of days in month", (dim > 0 && dim < 32));
-
-         TEST("Month between 1 and 12 is valid", g_date_valid_month(m));
-
-         day = 1;
-
-         g_date_clear(days, 31);
-
-         while (day <= dim) 
-           {
-              GDate tmp;
-
-             TEST("DMY triplet is valid", g_date_valid_dmy(day,m,y));
-
-             /* Create GDate with triplet */
-             
-             d = &days[day-1];
-
-             TEST("Cleared day is invalid", !g_date_valid(d));
-
-             g_date_set_dmy(d,day,m,y);
-
-             TEST("Set day is valid", g_date_valid(d));
-
-             if (m == G_DATE_JANUARY && day == 1) 
-               {
-                 first_day_of_year = g_date_get_julian(d);
-               }
-
-             g_assert(first_day_of_year != G_DATE_BAD_JULIAN);
-
-             TEST("Date with DMY triplet is valid", g_date_valid(d));
-             TEST("Month accessor works", g_date_get_month(d) == m);
-             TEST("Year accessor works", g_date_get_year(d) == y);
-             TEST("Day of month accessor works", g_date_get_day(d) == day);
-
-             TEST("Day of year is consistent with Julian dates",
-                  ((g_date_get_julian(d) + 1 - first_day_of_year) ==
-                   (g_date_get_day_of_year(d))));
-
-             if (failed) 
-               {
-                 g_print("first day: %u this day: %u day of year: %u\n", 
-                         first_day_of_year, 
-                         g_date_get_julian(d),
-                         g_date_get_day_of_year(d));
-               }
-             
-             if (m == G_DATE_DECEMBER && day == 31) 
-               {
-                 TEST("Last day of year equals number of days in year", 
-                      g_date_get_day_of_year(d) == days_in_year);
-                 if (failed) 
-                   {
-                     g_print("last day: %u days in year: %u\n", 
-                             g_date_get_day_of_year(d), days_in_year);
-                   }
-               }
-
-             TEST("Day of year is not more than number of days in the year",
-                  g_date_get_day_of_year(d) <= days_in_year);
-
-             TEST("Monday week of year is not more than number of weeks in the year",
-                  g_date_get_monday_week_of_year(d) <= monday_weeks_in_year);
-             if (failed)
-               {
-                 g_print("Weeks in year: %u\n", monday_weeks_in_year);
-                 g_date_debug_print(d);
-               }
-             TEST("Monday week of year is >= than last week of year",
-                  g_date_get_monday_week_of_year(d) >= monday_week_of_year);
-
-             if (g_date_get_weekday(d) == G_DATE_MONDAY) 
-               {
-                 
-                 TEST("Monday week of year on Monday 1 more than previous day's week of year",
-                      (g_date_get_monday_week_of_year(d) - monday_week_of_year) == 1);
-                 if ((m == G_DATE_JANUARY && day <= 4) ||
-                     (m == G_DATE_DECEMBER && day >= 29)) {
-                   TEST("ISO 8601 week of year on Monday Dec 29 - Jan 4 is 1",
-                        (g_date_get_iso8601_week_of_year(d) == 1));
-                 } else {
-                   TEST("ISO 8601 week of year on Monday 1 more than previous day's week of year",
-                        (g_date_get_iso8601_week_of_year(d) - iso8601_week_of_year) == 1);
-                 }
-               }
-             else 
-               {
-                 TEST("Monday week of year on non-Monday 0 more than previous day's week of year",
-                      (g_date_get_monday_week_of_year(d) - monday_week_of_year) == 0);
-                 if (!(day == 1 && m == G_DATE_JANUARY)) {
-                   TEST("ISO 8601 week of year on non-Monday 0 more than previous day's week of year (",
-                        (g_date_get_iso8601_week_of_year(d) - iso8601_week_of_year) == 0);
-                 }
-               }
-
-
-             monday_week_of_year = g_date_get_monday_week_of_year(d);
-             iso8601_week_of_year = g_date_get_iso8601_week_of_year(d);
-
-
-             TEST("Sunday week of year is not more than number of weeks in the year",
-                  g_date_get_sunday_week_of_year(d) <= sunday_weeks_in_year);
-             if (failed)
-               {
-                 g_date_debug_print(d);
-               }
-             TEST("Sunday week of year is >= than last week of year",
-                  g_date_get_sunday_week_of_year(d) >= sunday_week_of_year);
-
-             if (g_date_get_weekday(d) == G_DATE_SUNDAY) 
-               {
-                 TEST("Sunday week of year on Sunday 1 more than previous day's week of year",
-                      (g_date_get_sunday_week_of_year(d) - sunday_week_of_year) == 1);
-               }
-             else 
-               {
-                 TEST("Sunday week of year on non-Sunday 0 more than previous day's week of year",
-                      (g_date_get_sunday_week_of_year(d) - sunday_week_of_year) == 0);
-               }
-
-             sunday_week_of_year = g_date_get_sunday_week_of_year(d);
-
-             TEST("Date is equal to itself",
-                  g_date_compare(d,d) == 0);
-
-
-             /*************** Increments ***********/
-
-              k = 1;
-              while (k < 402) /* Need to get 400 year increments in */ 
-                {
-             
-                  /***** Days ******/
-                  tmp = *d;
-                  g_date_add_days(d, k);
-
-                  TEST("Adding days gives a value greater than previous",
-                       g_date_compare(d, &tmp) > 0);
-
-                  g_date_subtract_days(d, k);
-                  TEST("Forward days then backward days returns us to current day",
-                       g_date_get_day(d) == day);
-
-                  if (failed) 
-                    {
-                      g_print("  (increment %u, dmy %u %u %u) ", k, day, m, y);
-                      g_date_debug_print(d);
-                    }
-
-                  TEST("Forward days then backward days returns us to current month",
-                       g_date_get_month(d) == m);
-
-                  if (failed) 
-                    {
-                      g_print("  (increment %u, dmy %u %u %u) ", k, day, m, y);
-                      g_date_debug_print(d);
-                    }
-
-                  TEST("Forward days then backward days returns us to current year",
-                       g_date_get_year(d) == y);
-
-                  if (failed) 
-                    {
-                      g_print("  (increment %u, dmy %u %u %u) ", k, day, m, y);
-                      g_date_debug_print(d);
-                    }
-
-                  /******* Months ********/
-
-                  tmp = *d;
-                  g_date_add_months(d, k);
-                  TEST("Adding months gives a larger value",
-                       g_date_compare(d, &tmp) > 0);
-                  g_date_subtract_months(d, k);
-
-                  TEST("Forward months then backward months returns us to current month",
-                       g_date_get_month(d) == m);
-
-                  if (failed) 
-                    {
-                      g_print("  (increment %u, dmy %u %u %u) ", k, day, m, y);
-                      g_date_debug_print(d);
-                    }
-
-                  TEST("Forward months then backward months returns us to current year",
-                       g_date_get_year(d) == y);
-
-                  if (failed) 
-                    {
-                      g_print("  (increment %u, dmy %u %u %u) ", k, day, m, y);
-                      g_date_debug_print(d);
-                    }
-
-                 
-                  if (day < 29) 
-                    {
-                      /* Day should be unchanged */
-                     
-                      TEST("Forward months then backward months returns us to current day",
-                           g_date_get_day(d) == day);
-                     
-                      if (failed) 
-                        {
-                          g_print("  (increment %u, dmy %u %u %u) ", k, day, m, y);
-                          g_date_debug_print(d);
-                        }
-                    }
-                  else 
-                    {
-                      /* reset the day for later tests */
-                      g_date_set_day(d, day);
-                    }
-
-                  /******* Years ********/
-
-                  tmp = *d;
-                  g_date_add_years(d, k);
-
-                  TEST("Adding years gives a larger value",
-                       g_date_compare(d,&tmp) > 0);
-                     
-                  g_date_subtract_years(d, k);
-
-                  TEST("Forward years then backward years returns us to current month",
-                       g_date_get_month(d) == m);
-
-                  if (failed) 
-                    {
-                      g_print("  (increment %u, dmy %u %u %u) ", k, day, m, y);
-                      g_date_debug_print(d);
-                    }
-
-                  TEST("Forward years then backward years returns us to current year",
-                       g_date_get_year(d) == y);
-
-                  if (failed) 
-                    {
-                      g_print("  (increment %u, dmy %u %u %u) ", k, day, m, y);
-                      g_date_debug_print(d);
-                    }
-
-                  if (m != 2 && day != 29) 
-                    {
-                      TEST("Forward years then backward years returns us to current day",
-                           g_date_get_day(d) == day);
-                     
-                      if (failed) 
-                        {
-                          g_print("  (increment %u, dmy %u %u %u) ", k, day, m, y);
-                          g_date_debug_print(d);
-                        }
-                    }
-                  else 
-                    {
-                      g_date_set_day(d, day); /* reset */
-                    }
-
-                  k += 10;
-                }
-
-             /*****  increment test relative to our local Julian count */
-
-              if (!discontinuity) {
-
-                /* We can only run sequence tests between sequential years */
-                
-                TEST("Julians are sequential with increment 1",
-                     j+1 == g_date_get_julian(d));
-                if (failed) 
-                  {
-                    g_print("Out of sequence, prev: %u expected: %u got: %u\n",
-                            j, j+1, g_date_get_julian(d));
-                  }
-
-                g_date_add_days(d,1);
-                TEST("Next day has julian 1 higher",
-                     g_date_get_julian(d) == j + 2);
-                g_date_subtract_days(d, 1);
-                
-                if (j != G_DATE_BAD_JULIAN) 
-                  {
-                    g_date_subtract_days(d, 1);
-                    
-                    TEST("Previous day has julian 1 lower",
-                         g_date_get_julian(d) == j);
-                    
-                    g_date_add_days(d, 1); /* back to original */
-                  }
-              }    
-              discontinuity = FALSE; /* goes away now */            
-
-              fflush(stdout);
-              fflush(stderr);
-
-             j = g_date_get_julian(d); /* inc current julian */
-
-             ++day;
-           } 
-         ++m;
-       }
-      g_print(" done\n");
-      ++i;
-      if (i == n_check_years)
-        break;
-      prev_y = y;
-      y = check_years[i];
-      if (prev_y == G_DATE_BAD_YEAR || 
-          (prev_y + 1) != y) discontinuity = TRUE;
-    }
-  
-  
-  g_print("\n%u tests passed, %u failed\n",passed, notpassed);
-
-  return (notpassed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
-}
diff --git a/tests/testgdateparser.c b/tests/testgdateparser.c
deleted file mode 100644 (file)
index 81cbadb..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-#undef G_DISABLE_ASSERT
-#undef G_LOG_DOMAIN
-
-#ifdef GLIB_COMPILATION
-#undef GLIB_COMPILATION
-#endif
-
-#include "glib.h"
-
-#include <stdio.h>
-#include <string.h>
-#include <locale.h>
-
-/* These only work in the POSIX locale, maybe C too - 
- * type POSIX into the program to check them
- */
-char* posix_tests [] = {
-  "19981024",
-  "981024",
-  "October 1998",
-  "October 98",
-  "oCT 98",
-  "10/24/98",
-  "10 -- 24 -- 98",
-  "10/24/1998",
-  "October 24, 1998",
-  NULL
-};
-
-int main(int argc, char** argv)
-{
-  GDate* d;
-  gchar* loc;
-  gchar input[1024];
-
-  loc = setlocale(LC_ALL,"");
-  if (loc) 
-    g_print("\nLocale set to %s\n", loc);
-  else 
-    g_print("\nLocale unchanged\n");
-
-  d = g_date_new();
-
-  while (fgets(input, 1023, stdin))
-    {
-      if (input[0] == '\n') 
-        {
-          g_print("Enter a date to parse and press enter, or type 'POSIX':\n");
-          continue;
-        }
-
-      if (strcmp(input,"POSIX\n") == 0) 
-        {
-          char** s = posix_tests;
-          while (*s) {
-            g_date_set_parse(d, *s);
-            
-            g_print("POSIXy parse test '%s' ...", *s);
-
-            if (!g_date_valid(d))
-              {
-                g_print(" failed.\n");
-              }
-            else 
-              {
-                gchar buf[256];
-                
-                g_date_strftime(buf,100," parsed '%x' (%B %d %Y)\n",
-                                d);
-                g_print("%s", buf);
-              }
-
-            ++s;
-          }
-        }
-      else 
-        {
-          g_date_set_parse(d, input);
-          
-          if (!g_date_valid(d))
-            {
-              g_print("Parse failed.\n");
-            }
-          else 
-            {
-              gchar buf[256];
-              
-              g_date_strftime(buf,100,"Parsed: '%x' (%B %d %Y)\n",
-                              d);
-              g_print("%s", buf);
-            }
-        }
-    }
-
-  g_date_free(d);
-
-  return 0;
-}
diff --git a/tests/testglib.c b/tests/testglib.c
deleted file mode 100644 (file)
index 48cd74a..0000000
+++ /dev/null
@@ -1,1923 +0,0 @@
-/* GLIB - Library of useful routines for C programming
- * Copyright (C) 1995-1997  Peter Mattis, Spencer Kimball and Josh MacDonald
- *
- * This library 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 library 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/>.
- */
-
-/*
- * Modified by the GLib Team and others 1997-2000.  See the AUTHORS
- * file for a list of people on the GLib Team.  See the ChangeLog
- * files for a list of changes.  These files are distributed with
- * GLib at ftp://ftp.gtk.org/pub/gtk/. 
- */
-
-#undef GLIB_COMPILATION
-
-#include <stdio.h>
-#include <string.h>
-#include <errno.h>
-
-#include "glib.h"
-#include <glib/gstdio.h>
-
-#include <stdlib.h>
-
-#ifdef G_OS_UNIX
-#include <unistd.h>
-#endif
-
-#ifdef G_OS_WIN32
-#include <io.h>                        /* For read(), write() etc */
-#endif
-
-
-#define GLIB_TEST_STRING "el dorado "
-#define GLIB_TEST_STRING_5 "el do"
-
-
-/* --- variables --- */
-static gint test_nums[10] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
-static gint more_nums[10] = { 8, 9, 7, 0, 3, 2, 5, 1, 4, 6};
-
-/* --- functions --- */
-static gint
-my_list_compare_one (gconstpointer a, gconstpointer b)
-{
-  gint one = *((const gint*)a);
-  gint two = *((const gint*)b);
-  return one-two;
-}
-
-static gint
-my_list_compare_two (gconstpointer a, gconstpointer b)
-{
-  gint one = *((const gint*)a);
-  gint two = *((const gint*)b);
-  return two-one;
-}
-
-/* static void
-my_list_print (gpointer a, gpointer b)
-{
-  gint three = *((gint*)a);
-  g_printerr ("%d", three);
-}; */
-
-static void
-glist_test (void)
-{
-  GList *list = NULL;
-  gint i;
-
-  for (i = 0; i < 10; i++)
-    list = g_list_append (list, &test_nums[i]);
-  list = g_list_reverse (list);
-
-  for (i = 0; i < 10; i++)
-    {
-      GList *t = g_list_nth (list, i);
-      if (*((gint*) t->data) != (9 - i))
-       g_error ("Regular insert failed");
-    }
-
-  for (i = 0; i < 10; i++)
-    if (g_list_position (list, g_list_nth (list, i)) != i)
-      g_error ("g_list_position does not seem to be the inverse of g_list_nth");
-
-  g_list_free (list);
-  list = NULL;
-
-  for (i = 0; i < 10; i++)
-    list = g_list_insert_sorted (list, &more_nums[i], my_list_compare_one);
-
-  /*
-  g_printerr ("\n");
-  g_list_foreach (list, my_list_print, NULL);
-  */
-
-  for (i = 0; i < 10; i++)
-    {
-      GList *t = g_list_nth (list, i);
-      if (*((gint*) t->data) != i)
-         g_error ("Sorted insert failed");
-    }
-
-  g_list_free (list);
-  list = NULL;
-
-  for (i = 0; i < 10; i++)
-    list = g_list_insert_sorted (list, &more_nums[i], my_list_compare_two);
-
-  /*
-  g_printerr ("\n");
-  g_list_foreach (list, my_list_print, NULL);
-  */
-
-  for (i = 0; i < 10; i++)
-    {
-      GList *t = g_list_nth (list, i);
-      if (*((gint*) t->data) != (9 - i))
-         g_error ("Sorted insert failed");
-    }
-
-  g_list_free (list);
-  list = NULL;
-
-  for (i = 0; i < 10; i++)
-    list = g_list_prepend (list, &more_nums[i]);
-
-  list = g_list_sort (list, my_list_compare_two);
-
-  /*
-  g_printerr ("\n");
-  g_list_foreach (list, my_list_print, NULL);
-  */
-
-  for (i = 0; i < 10; i++)
-    {
-      GList *t = g_list_nth (list, i);
-      if (*((gint*) t->data) != (9 - i))
-         g_error ("Merge sort failed");
-    }
-
-  g_list_free (list);
-}
-
-static void
-gslist_test (void)
-{
-  GSList *slist = NULL;
-  gint i;
-
-  for (i = 0; i < 10; i++)
-    slist = g_slist_append (slist, &test_nums[i]);
-  slist = g_slist_reverse (slist);
-
-  for (i = 0; i < 10; i++)
-    {
-      GSList *st = g_slist_nth (slist, i);
-      if (*((gint*) st->data) != (9 - i))
-       g_error ("failed");
-    }
-
-  g_slist_free (slist);
-  slist = NULL;
-
-  for (i = 0; i < 10; i++)
-    slist = g_slist_insert_sorted (slist, &more_nums[i], my_list_compare_one);
-
-  /*
-  g_printerr ("\n");
-  g_slist_foreach (slist, my_list_print, NULL);
-  */
-
-  for (i = 0; i < 10; i++)
-    {
-      GSList *st = g_slist_nth (slist, i);
-      if (*((gint*) st->data) != i)
-        g_error ("Sorted insert failed");
-    }
-
-  g_slist_free (slist);
-  slist = NULL;
-
-  for (i = 0; i < 10; i++)
-    slist = g_slist_insert_sorted (slist, &more_nums[i], my_list_compare_two);
-
-  /*
-  g_printerr ("\n");
-  g_slist_foreach (slist, my_list_print, NULL);
-  */
-
-  for (i = 0; i < 10; i++)
-    {
-      GSList *st = g_slist_nth (slist, i);
-      if (*((gint*) st->data) != (9 - i))
-        g_error("Sorted insert failed");
-    }
-
-  g_slist_free(slist);
-  slist = NULL;
-
-  for (i = 0; i < 10; i++)
-    slist = g_slist_prepend (slist, &more_nums[i]);
-
-  slist = g_slist_sort (slist, my_list_compare_two);
-
-  /*
-  g_printerr ("\n");
-  g_slist_foreach (slist, my_list_print, NULL);
-  */
-
-  for (i = 0; i < 10; i++)
-    {
-      GSList *st = g_slist_nth (slist, i);
-      if (*((gint*) st->data) != (9 - i))
-        g_error("Sorted insert failed");
-    }
-
-  g_slist_free(slist);
-}
-
-static gboolean
-node_build_string (GNode    *node,
-                  gpointer  data)
-{
-  gchar **p = data;
-  gchar *string;
-  gchar c[2] = "_";
-
-  c[0] = ((gchar) ((gintptr) (node->data)));
-
-  string = g_strconcat (*p ? *p : "", c, NULL);
-  g_free (*p);
-  *p = string;
-
-  return FALSE;
-}
-
-static void
-gnode_test (void)
-{
-#define        C2P(c)          ((gpointer) ((long) (c)))
-#define        P2C(p)          ((gchar) ((gintptr) (p)))
-  GNode *root;
-  GNode *node;
-  GNode *node_B;
-  GNode *node_F;
-  GNode *node_G;
-  GNode *node_J;
-  guint i;
-  gchar *tstring, *cstring;
-
-  root = g_node_new (C2P ('A'));
-  g_assert (g_node_depth (root) == 1 && g_node_max_height (root) == 1);
-
-  node_B = g_node_new (C2P ('B'));
-  g_node_append (root, node_B);
-  g_assert (root->children == node_B);
-
-  g_node_append_data (node_B, C2P ('E'));
-  g_node_prepend_data (node_B, C2P ('C'));
-  g_node_insert (node_B, 1, g_node_new (C2P ('D')));
-
-  node_F = g_node_new (C2P ('F'));
-  g_node_append (root, node_F);
-  g_assert (root->children->next == node_F);
-
-  node_G = g_node_new (C2P ('G'));
-  g_node_append (node_F, node_G);
-  node_J = g_node_new (C2P ('J'));
-  g_node_prepend (node_G, node_J);
-  g_node_insert (node_G, 42, g_node_new (C2P ('K')));
-  g_node_insert_data (node_G, 0, C2P ('H'));
-  g_node_insert (node_G, 1, g_node_new (C2P ('I')));
-
-  g_assert (g_node_depth (root) == 1);
-  g_assert (g_node_max_height (root) == 4);
-  g_assert (g_node_depth (node_G->children->next) == 4);
-  g_assert (g_node_n_nodes (root, G_TRAVERSE_LEAFS) == 7);
-  g_assert (g_node_n_nodes (root, G_TRAVERSE_NON_LEAFS) == 4);
-  g_assert (g_node_n_nodes (root, G_TRAVERSE_ALL) == 11);
-  g_assert (g_node_max_height (node_F) == 3);
-  g_assert (g_node_n_children (node_G) == 4);
-  g_assert (g_node_find_child (root, G_TRAVERSE_ALL, C2P ('F')) == node_F);
-  g_assert (g_node_find (root, G_LEVEL_ORDER, G_TRAVERSE_NON_LEAFS, C2P ('I')) == NULL);
-  g_assert (g_node_find (root, G_IN_ORDER, G_TRAVERSE_LEAFS, C2P ('J')) == node_J);
-
-  for (i = 0; i < g_node_n_children (node_B); i++)
-    {
-      node = g_node_nth_child (node_B, i);
-      g_assert (P2C (node->data) == (gchar) ('C' + i));
-    }
-  
-  for (i = 0; i < g_node_n_children (node_G); i++)
-    g_assert (g_node_child_position (node_G, g_node_nth_child (node_G, i)) == (gint) i);
-
-  /* we have built:                    A
-   *                                 /   \
-   *                               B       F
-   *                             / | \       \
-   *                           C   D   E       G
-   *                                         / /\ \
-   *                                       H  I  J  K
-   *
-   * for in-order traversal, 'G' is considered to be the "left"
-   * child of 'F', which will cause 'F' to be the last node visited.
-   */
-
-  tstring = NULL;
-  g_node_traverse (root, G_PRE_ORDER, G_TRAVERSE_ALL, -1, node_build_string, &tstring);
-  g_assert_cmpstr (tstring, ==, "ABCDEFGHIJK");
-  g_free (tstring); tstring = NULL;
-  g_node_traverse (root, G_POST_ORDER, G_TRAVERSE_ALL, -1, node_build_string, &tstring);
-  g_assert_cmpstr (tstring, ==, "CDEBHIJKGFA");
-  g_free (tstring); tstring = NULL;
-  g_node_traverse (root, G_IN_ORDER, G_TRAVERSE_ALL, -1, node_build_string, &tstring);
-  g_assert_cmpstr (tstring, ==, "CBDEAHGIJKF");
-  g_free (tstring); tstring = NULL;
-  g_node_traverse (root, G_LEVEL_ORDER, G_TRAVERSE_ALL, -1, node_build_string, &tstring);
-  g_assert_cmpstr (tstring, ==, "ABFCDEGHIJK");
-  g_free (tstring); tstring = NULL;
-  
-  g_node_traverse (root, G_LEVEL_ORDER, G_TRAVERSE_LEAFS, -1, node_build_string, &tstring);
-  g_assert_cmpstr (tstring, ==, "CDEHIJK");
-  g_free (tstring); tstring = NULL;
-  g_node_traverse (root, G_PRE_ORDER, G_TRAVERSE_NON_LEAFS, -1, node_build_string, &tstring);
-  g_assert_cmpstr (tstring, ==, "ABFG");
-  g_free (tstring); tstring = NULL;
-
-  g_node_reverse_children (node_B);
-  g_node_reverse_children (node_G);
-
-  g_node_traverse (root, G_LEVEL_ORDER, G_TRAVERSE_ALL, -1, node_build_string, &tstring);
-  g_assert_cmpstr (tstring, ==, "ABFEDCGKJIH");
-  g_free (tstring); tstring = NULL;
-
-  cstring = NULL;
-  node = g_node_copy (root);
-  g_assert (g_node_n_nodes (root, G_TRAVERSE_ALL) == g_node_n_nodes (node, G_TRAVERSE_ALL));
-  g_assert (g_node_max_height (root) == g_node_max_height (node));
-  g_node_traverse (root, G_IN_ORDER, G_TRAVERSE_ALL, -1, node_build_string, &tstring);
-  g_node_traverse (node, G_IN_ORDER, G_TRAVERSE_ALL, -1, node_build_string, &cstring);
-  g_assert_cmpstr (tstring, ==, cstring);
-  g_free (tstring); tstring = NULL;
-  g_free (cstring); cstring = NULL;
-  g_node_destroy (node);
-
-  g_node_destroy (root);
-
-  /* allocation tests */
-
-  root = g_node_new (NULL);
-  node = root;
-
-  for (i = 0; i < 2048; i++)
-    {
-      g_node_append (node, g_node_new (NULL));
-      if ((i%5) == 4)
-       node = node->children->next;
-    }
-  g_assert (g_node_max_height (root) > 100);
-  g_assert (g_node_n_nodes (root, G_TRAVERSE_ALL) == 1 + 2048);
-
-  g_node_destroy (root);
-#undef C2P
-#undef P2C
-}
-
-static gint
-my_compare (gconstpointer a,
-           gconstpointer b)
-{
-  const char *cha = a;
-  const char *chb = b;
-
-  return *cha - *chb;
-}
-
-static gint
-my_traverse (gpointer key,
-            gpointer value,
-            gpointer data)
-{
-  char *ch = key;
-  g_printerr ("%c ", *ch);
-  return FALSE;
-}
-
-static void
-binary_tree_bound (GTree *tree,
-                   char   c,
-                   char   expected,
-                   int    lower)
-{
-  GTreeNode *node;
-
-  if (lower)
-    node = g_tree_lower_bound (tree, &c);
-  else
-    node = g_tree_upper_bound (tree, &c);
-
-  if (g_test_verbose ())
-    g_printerr ("%c %s: ", c, lower ? "lower" : "upper");
-
-  if (!node)
-    {
-      if (!g_tree_nnodes (tree))
-        {
-          if (g_test_verbose ())
-            g_printerr ("empty tree");
-        }
-      else
-        {
-          GTreeNode *last = g_tree_node_last (tree);
-
-          g_assert (last);
-          if (g_test_verbose ())
-            g_printerr ("past end last %c",
-                        *(char *) g_tree_node_key (last));
-        }
-      g_assert (expected == '\x00');
-    }
-  else
-    {
-      GTreeNode *begin = g_tree_node_first (tree);
-      GTreeNode *last = g_tree_node_last (tree);
-      GTreeNode *prev = g_tree_node_previous (node);
-      GTreeNode *next = g_tree_node_next (node);
-
-      g_assert (expected != '\x00');
-      g_assert (expected == *(char *) g_tree_node_key (node));
-
-      if (g_test_verbose ())
-        g_printerr ("%c", *(char *) g_tree_node_key (node));
-
-      if (node != begin)
-        {
-          g_assert (prev);
-          if (g_test_verbose ())
-            g_printerr (" prev %c", *(char *) g_tree_node_key (prev));
-        }
-      else
-        {
-          g_assert (!prev);
-          if (g_test_verbose ())
-            g_printerr (" no prev, it's the first one");
-        }
-
-      if (node != last)
-        {
-          g_assert (next);
-          if (g_test_verbose ())
-            g_printerr (" next %c", *(char *) g_tree_node_key (next));
-        }
-      else
-        {
-          g_assert (!next);
-          if (g_test_verbose ())
-            g_printerr (" no next, it's the last one");
-        }
-    }
-
-  if (g_test_verbose ())
-    g_printerr ("\n");
-}
-
-static void
-binary_tree_bounds (GTree *tree,
-                    char   c,
-                    int    mode)
-{
-  char expectedl, expectedu;
-  char first = mode == 0 ? '0' : mode == 1 ? 'A' : 'z';
-
-  g_assert (mode >= 0 && mode <= 3);
-
-  if (c < first)
-    expectedl = first;
-  else if (c > 'z')
-    expectedl = '\x00';
-  else
-    expectedl = c;
-
-  if (c < first)
-    expectedu = first;
-  else if (c >= 'z')
-    expectedu = '\x00';
-  else
-    expectedu = c == '9' ? 'A' : c == 'Z' ? 'a' : c + 1;
-
-  if (mode == 3)
-    {
-      expectedl = '\x00';
-      expectedu = '\x00';
-    }
-
-  binary_tree_bound (tree, c, expectedl, 1);
-  binary_tree_bound (tree, c, expectedu, 0);
-}
-
-static void
-binary_tree_bounds_test (GTree *tree,
-                         int    mode)
-{
-  binary_tree_bounds (tree, 'a', mode);
-  binary_tree_bounds (tree, 'A', mode);
-  binary_tree_bounds (tree, 'z', mode);
-  binary_tree_bounds (tree, 'Z', mode);
-  binary_tree_bounds (tree, 'Y', mode);
-  binary_tree_bounds (tree, '0', mode);
-  binary_tree_bounds (tree, '9', mode);
-  binary_tree_bounds (tree, '0' - 1, mode);
-  binary_tree_bounds (tree, 'z' + 1, mode);
-  binary_tree_bounds (tree, '0' - 2, mode);
-  binary_tree_bounds (tree, 'z' + 2, mode);
-}
-
-static void
-binary_tree_test (void)
-{
-  GQueue queue = G_QUEUE_INIT;
-  GTree *tree;
-  char chars[62];
-  guint i, j;
-
-  tree = g_tree_new (my_compare);
-  i = 0;
-  for (j = 0; j < 10; j++, i++)
-    {
-      chars[i] = '0' + j;
-      g_queue_push_tail (&queue, &chars[i]);
-    }
-  for (j = 0; j < 26; j++, i++)
-    {
-      chars[i] = 'A' + j;
-      g_queue_push_tail (&queue, &chars[i]);
-    }
-  for (j = 0; j < 26; j++, i++)
-    {
-      chars[i] = 'a' + j;
-      g_queue_push_tail (&queue, &chars[i]);
-    }
-
-  if (g_test_verbose ())
-    g_printerr ("tree insert: ");
-  while (!g_queue_is_empty (&queue))
-    {
-      gint32 which = g_random_int_range (0, g_queue_get_length (&queue));
-      gpointer elem = g_queue_pop_nth (&queue, which);
-      GTreeNode *node;
-
-      if (g_test_verbose ())
-        g_printerr ("%c ", *(char *) elem);
-
-      node = g_tree_insert_node (tree, elem, elem);
-      g_assert (g_tree_node_key (node) == elem);
-      g_assert (g_tree_node_value (node) == elem);
-    }
-  if (g_test_verbose ())
-    g_printerr ("\n");
-
-  g_assert_cmpint (g_tree_nnodes (tree), ==, 10 + 26 + 26);
-  g_assert_cmpint (g_tree_height (tree), >=, 6);
-  g_assert_cmpint (g_tree_height (tree), <=, 8);
-
-  if (g_test_verbose ())
-    {
-      g_printerr ("tree: ");
-      g_tree_foreach (tree, my_traverse, NULL);
-      g_printerr ("\n");
-    }
-
-  binary_tree_bounds_test (tree, 0);
-
-  for (i = 0; i < 10; i++)
-    g_tree_remove (tree, &chars[i]);
-
-  g_assert_cmpint (g_tree_nnodes (tree), ==, 26 + 26);
-  g_assert_cmpint (g_tree_height (tree), >=, 6);
-  g_assert_cmpint (g_tree_height (tree), <=, 8);
-
-  if (g_test_verbose ())
-    {
-      g_printerr ("tree: ");
-      g_tree_foreach (tree, my_traverse, NULL);
-      g_printerr ("\n");
-    }
-
-  binary_tree_bounds_test (tree, 1);
-
-  for (i = 10; i < 10 + 26 + 26 - 1; i++)
-    g_tree_remove (tree, &chars[i]);
-
-  if (g_test_verbose ())
-    {
-      g_printerr ("tree: ");
-      g_tree_foreach (tree, my_traverse, NULL);
-      g_printerr ("\n");
-    }
-
-  binary_tree_bounds_test (tree, 2);
-
-  g_tree_remove (tree, &chars[10 + 26 + 26 - 1]);
-
-  if (g_test_verbose ())
-    g_printerr ("empty tree\n");
-
-  binary_tree_bounds_test (tree, 3);
-
-  g_tree_unref (tree);
-}
-
-static gboolean
-my_hash_callback_remove (gpointer key,
-                        gpointer value,
-                        gpointer user_data)
-{
-  int *d = value;
-
-  if ((*d) % 2)
-    return TRUE;
-
-  return FALSE;
-}
-
-static void
-my_hash_callback_remove_test (gpointer key,
-                             gpointer value,
-                             gpointer user_data)
-{
-  int *d = value;
-
-  if ((*d) % 2)
-    g_error ("hash table entry %d should have been removed already", *d);
-}
-
-static void
-my_hash_callback (gpointer key,
-                 gpointer value,
-                 gpointer user_data)
-{
-  int *d = value;
-  *d = 1;
-}
-
-static guint
-my_hash (gconstpointer key)
-{
-  return (guint) *((const gint*) key);
-}
-
-static gboolean
-my_hash_equal (gconstpointer a,
-              gconstpointer b)
-{
-  return *((const gint*) a) == *((const gint*) b);
-}
-
-static gboolean 
-find_first_that(gpointer key, 
-               gpointer value, 
-               gpointer user_data)
-{
-  gint *v = value;
-  gint *test = user_data;
-  return (*v == *test);
-}
-
-static void
-test_g_parse_debug_string (void)
-{
-  GDebugKey keys[] = { 
-    { "foo", 1 },
-    { "bar", 2 },
-    { "baz", 4 },
-    { "weird", 8 },
-  };
-  guint n_keys = G_N_ELEMENTS (keys);
-  guint result;
-  
-  result = g_parse_debug_string ("bar:foo:blubb", keys, n_keys);
-  g_assert (result == 3);
-
-  result = g_parse_debug_string (":baz::_E@~!_::", keys, n_keys);
-  g_assert (result == 4);
-
-  result = g_parse_debug_string ("", keys, n_keys);
-  g_assert (result == 0);
-
-  result = g_parse_debug_string (" : ", keys, n_keys);
-  g_assert (result == 0);
-
-  result = g_parse_debug_string ("all", keys, n_keys);
-  g_assert_cmpuint (result, ==, (1 << n_keys) - 1);
-
-  /* Test subtracting debug flags from "all" */
-  result = g_parse_debug_string ("all:foo", keys, n_keys);
-  g_assert_cmpuint (result, ==, 2 | 4 | 8);
-
-  result = g_parse_debug_string ("foo baz,all", keys, n_keys);
-  g_assert_cmpuint (result, ==, 2 | 8);
-
-  result = g_parse_debug_string ("all,fooo,baz", keys, n_keys);
-  g_assert_cmpuint (result, ==, 1 | 2 | 8);
-
-  result = g_parse_debug_string ("all:weird", keys, n_keys);
-  g_assert_cmpuint (result, ==, 1 | 2 | 4);
-}
-
-static void
-log_warning_error_tests (void)
-{
-  g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_MESSAGE,
-                         "*is a g_message test*");
-  g_message ("this is a g_message test.");
-  g_test_assert_expected_messages ();
-
-  g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_MESSAGE,
-                         "*non-printable UTF-8*");
-  g_message ("non-printable UTF-8: \"\xc3\xa4\xda\x85\"");
-  g_test_assert_expected_messages ();
-
-  g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_MESSAGE,
-                         "*unsafe chars*");
-  g_message ("unsafe chars: \"\x10\x11\x12\n\t\x7f\x81\x82\x83\"");
-  g_test_assert_expected_messages ();
-
-  g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING,
-                         "*harmless warning*");
-  g_warning ("harmless warning with parameters: %d %s %#x", 42, "Boo", 12345);
-  g_test_assert_expected_messages ();
-
-  g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_CRITICAL,
-                         "*g_print*assertion*failed*");
-  g_print (NULL);
-  g_test_assert_expected_messages ();
-}
-
-static void
-log_warning_rate_limited_tests (void)
-{
-#if defined(G_HAVE_ISO_VARARGS) || defined(G_HAVE_GNUC_VARARGS)
-  int i;
-
-  g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING,
-                         "*harmless single warning 1*");
-  g_test_expect_message (G_LOG_DOMAIN, G_LOG_LEVEL_WARNING,
-                         "*harmless single warning 2*");
-  for (i = 0; i < 10; i++)
-    g_warning_once ("harmless single warning 1");
-  for (i = 0; i < 10; i++)
-    g_warning_once ("harmless single warning 2");
-  g_test_assert_expected_messages ();
-#else
-  g_test_skip ("Variadic macro support not available");
-#endif
-}
-
-static void
-timer_tests (void)
-{
-  GTimer *timer, *timer2;
-  gdouble elapsed;
-
-  /* basic testing */
-  timer = g_timer_new ();
-  g_timer_start (timer);
-  elapsed = g_timer_elapsed (timer, NULL);
-  g_timer_stop (timer);
-  g_assert_cmpfloat (elapsed, <=, g_timer_elapsed (timer, NULL));
-  g_timer_destroy (timer);
-
-  if (g_test_slow())
-    {
-      if (g_test_verbose())
-        g_printerr ("checking timers...\n");
-      timer = g_timer_new ();
-      if (g_test_verbose())
-        g_printerr ("  spinning for 3 seconds...\n");
-      g_timer_start (timer);
-      while (g_timer_elapsed (timer, NULL) < 3)
-        ;
-      g_timer_stop (timer);
-      g_timer_destroy (timer);
-      if (g_test_verbose())
-        g_printerr ("ok\n");
-    }
-
-  if (g_test_slow())
-    {
-      gulong elapsed_usecs;
-      if (g_test_verbose())
-        g_printerr ("checking g_timer_continue...\n");
-      timer2 = g_timer_new ();
-      if (g_test_verbose())
-        g_printerr ("\trun for 1 second...\n");
-      timer = g_timer_new();
-      g_usleep (G_USEC_PER_SEC); /* run timer for 1 second */
-      g_timer_stop (timer);
-      if (g_test_verbose())
-        g_printerr ("\tstop for 1 second...\n");
-      g_usleep (G_USEC_PER_SEC); /* wait for 1 second */
-      if (g_test_verbose())
-        g_printerr ("\trun for 2 seconds...\n");
-      g_timer_continue (timer);
-      g_usleep (2 * G_USEC_PER_SEC); /* run timer for 2 seconds */
-      g_timer_stop(timer);
-      if (g_test_verbose())
-        g_printerr ("\tstop for 1.5 seconds...\n");
-      g_usleep ((3 * G_USEC_PER_SEC) / 2); /* wait for 1.5 seconds */
-      if (g_test_verbose())
-        g_printerr ("\trun for 0.2 seconds...\n");
-      g_timer_continue (timer);
-      g_usleep (G_USEC_PER_SEC / 5); /* run timer for 0.2 seconds */
-      g_timer_stop (timer);
-      if (g_test_verbose())
-        g_printerr ("\tstop for 4 seconds...\n");
-      g_usleep (4 * G_USEC_PER_SEC); /* wait for 4 seconds */
-      if (g_test_verbose())
-        g_printerr ("\trun for 5.8 seconds...\n");
-      g_timer_continue (timer);
-      g_usleep ((29 * G_USEC_PER_SEC) / 5); /* run timer for 5.8 seconds */
-      g_timer_stop(timer);
-      elapsed = g_timer_elapsed (timer, &elapsed_usecs);
-      if (g_test_verbose())
-        g_printerr ("\t=> timer = %.6f = %d.%06ld (should be: 9.000000) (%.6f off)\n", elapsed, (int) elapsed, elapsed_usecs, ABS (elapsed - 9.));
-      g_assert_cmpfloat (elapsed, >, 8.8);
-      g_assert_cmpfloat (elapsed, <, 9.2);
-      if (g_test_verbose())
-        g_printerr ("g_timer_continue ... ok\n\n");
-      g_timer_stop (timer2);
-      elapsed = g_timer_elapsed (timer2, &elapsed_usecs);
-      if (g_test_verbose())
-        g_printerr ("\t=> timer2 = %.6f = %d.%06ld (should be: %.6f) (%.6f off)\n\n", elapsed, (int) elapsed, elapsed_usecs, 9.+6.5, ABS (elapsed - (9.+6.5)));
-      g_assert_cmpfloat (elapsed, >, 8.8 + 6.5);
-      g_assert_cmpfloat (elapsed, <, 9.2 + 6.5);
-      if (g_test_verbose())
-        g_printerr ("timer2 ... ok\n\n");
-      g_timer_destroy (timer);
-      g_timer_destroy (timer2);
-    }
-}
-
-static void
-type_sizes (void)
-{
-  guint16 gu16t1 = 0x44afU, gu16t2 = 0xaf44U;
-  guint32 gu32t1 = 0x02a7f109U, gu32t2 = 0x09f1a702U;
-  guint64 gu64t1 = G_GINT64_CONSTANT(0x1d636b02300a7aa7U),
-         gu64t2 = G_GINT64_CONSTANT(0xa77a0a30026b631dU);
-  /* type sizes */
-  g_assert_cmpint (sizeof (gint8), ==, 1);
-  g_assert_cmpint (sizeof (gint16), ==, 2);
-  g_assert_cmpint (sizeof (gint32), ==, 4);
-  g_assert_cmpint (sizeof (gint64), ==, 8);
-  /* endian macros */
-  if (g_test_verbose())
-    g_printerr ("checking endian macros (host is %s)...\n",
-             G_BYTE_ORDER == G_BIG_ENDIAN ? "big endian" : "little endian");
-  g_assert (GUINT16_SWAP_LE_BE (gu16t1) == gu16t2);
-  g_assert (GUINT32_SWAP_LE_BE (gu32t1) == gu32t2);
-  g_assert (GUINT64_SWAP_LE_BE (gu64t1) == gu64t2);
-}
-
-static void
-test_info (void)
-{
-  const gchar *un, *rn, *hn;
-  const gchar *tmpdir, *homedir, *userdatadir, *uconfdir, *ucachedir;
-  const gchar *uddesktop, *udddocs, *uddpubshare, *uruntimedir;
-  gchar **sv, *cwd, *sdatadirs, *sconfdirs, *langnames;
-  const gchar *charset;
-  gboolean charset_is_utf8;
-  if (g_test_verbose())
-    g_printerr ("TestGLib v%u.%u.%u (i:%u b:%u)\n",
-             glib_major_version,
-             glib_minor_version,
-             glib_micro_version,
-             glib_interface_age,
-             glib_binary_age);
-
-  cwd = g_get_current_dir ();
-  un = g_get_user_name();
-  rn = g_get_real_name();
-  hn = g_get_host_name();
-  if (g_test_verbose())
-    {
-      g_printerr ("cwd: %s\n", cwd);
-      g_printerr ("user: %s\n", un);
-      g_printerr ("real: %s\n", rn);
-      g_printerr ("host: %s\n", hn);
-    }
-  g_free (cwd);
-
-  /* reload, just for fun */
-  g_reload_user_special_dirs_cache ();
-  g_reload_user_special_dirs_cache ();
-
-  tmpdir = g_get_tmp_dir();
-  g_assert (tmpdir != NULL);
-  homedir = g_get_home_dir ();
-  g_assert (homedir != NULL);
-  userdatadir = g_get_user_data_dir ();
-  g_assert (userdatadir != NULL);
-  uconfdir = g_get_user_config_dir ();
-  g_assert (uconfdir != NULL);
-  ucachedir = g_get_user_cache_dir ();
-  g_assert (ucachedir != NULL);
-
-  uddesktop = g_get_user_special_dir (G_USER_DIRECTORY_DESKTOP);
-  g_assert (uddesktop != NULL);
-  udddocs = g_get_user_special_dir (G_USER_DIRECTORY_DOCUMENTS);
-  uddpubshare = g_get_user_special_dir (G_USER_DIRECTORY_PUBLIC_SHARE);
-  uruntimedir = g_get_user_runtime_dir ();
-  g_assert (uruntimedir != NULL);
-
-  sv = (gchar **) g_get_system_data_dirs ();
-  sdatadirs = g_strjoinv (G_SEARCHPATH_SEPARATOR_S, sv);
-  sv = (gchar **) g_get_system_config_dirs ();
-  sconfdirs = g_strjoinv (G_SEARCHPATH_SEPARATOR_S, sv);
-  sv = (gchar **) g_get_language_names ();
-  langnames = g_strjoinv (":", sv);
-
-  if (g_test_verbose())
-    {
-      g_printerr ("tmp-dir: %s\n", tmpdir);
-      g_printerr ("home: %s\n", homedir);
-      g_printerr ("user_data: %s\n", userdatadir);
-      g_printerr ("user_config: %s\n", uconfdir);
-      g_printerr ("user_cache: %s\n", ucachedir);
-      g_printerr ("user_runtime: %s\n", uruntimedir);
-      g_printerr ("system_data: %s\n", sdatadirs);
-      g_printerr ("system_config: %s\n", sconfdirs);
-      g_printerr ("languages: %s\n", langnames);
-      g_printerr ("user_special[DESKTOP]: %s\n", uddesktop);
-      g_printerr ("user_special[DOCUMENTS]: %s\n", udddocs);
-      g_printerr ("user_special[PUBLIC_SHARE]: %s\n", uddpubshare);
-    }
-  g_free (sdatadirs);
-  g_free (sconfdirs);
-  g_free (langnames);
-
-  charset_is_utf8 = g_get_charset ((const char**)&charset);
-
-  if (g_test_verbose())
-    {
-      if (charset_is_utf8)
-        g_printerr ("current charset is UTF-8: %s\n", charset);
-      else
-        g_printerr ("current charset is not UTF-8: %s\n", charset);
-    }
-
-  if (g_test_verbose())
-    {
-#ifdef G_PLATFORM_WIN32
-      g_printerr ("current locale: %s\n", g_win32_getlocale ());
-
-      g_printerr ("found more.com as %s\n", g_find_program_in_path ("more.com"));
-      g_printerr ("found regedit as %s\n", g_find_program_in_path ("regedit"));
-
-      g_printerr ("a Win32 error message: %s\n", g_win32_error_message (2));
-#endif
-    }
-}
-
-static void
-test_paths (void)
-{
-  struct {
-    gchar *filename;
-    gchar *dirname;
-  } dirname_checks[] = {
-    { "/", "/" },
-    { "////", "/" },
-    { ".////", "." },
-    { "../", ".." },
-    { "..////", ".." },
-    { "a/b", "a" },
-    { "a/b/", "a/b" },
-    { "c///", "c" },
-#ifdef G_OS_WIN32
-    { "\\", "\\" },
-    { ".\\\\\\\\", "." },
-    { "..\\", ".." },
-    { "..\\\\\\\\", ".." },
-    { "a\\b", "a" },
-    { "a\\b/", "a\\b" },
-    { "a/b\\", "a/b" },
-    { "c\\\\/", "c" },
-    { "//\\", "/" },
-#endif
-#ifdef G_WITH_CYGWIN
-    { "//server/share///x", "//server/share" },
-#endif
-    { ".", "." },
-    { "..", "." },
-    { "", "." },
-  };
-  const guint n_dirname_checks = G_N_ELEMENTS (dirname_checks);
-  struct {
-    gchar *filename;
-    gchar *without_root;
-  } skip_root_checks[] = {
-    { "/", "" },
-    { "//", "" },
-    { "/foo", "foo" },
-    { "//foo", "foo" },
-    { "a/b", NULL },
-#ifdef G_OS_WIN32
-    { "\\", "" },
-    { "\\foo", "foo" },
-    { "\\\\server\\foo", "" },
-    { "\\\\server\\foo\\bar", "bar" },
-    { "a\\b", NULL },
-#endif
-#ifdef G_WITH_CYGWIN
-    { "//server/share///x", "//x" },
-#endif
-    { ".", NULL },
-    { "", NULL },
-  };
-  const guint n_skip_root_checks = G_N_ELEMENTS (skip_root_checks);
-  struct {
-    gchar *cwd;
-    gchar *relative_path;
-    gchar *canonical_path;
-  } canonicalize_filename_checks[] = {
-#ifndef G_OS_WIN32
-    { "/etc", "../usr/share", "/usr/share" },
-    { "/", "/foo/bar", "/foo/bar" },
-    { "/usr/bin", "../../foo/bar", "/foo/bar" },
-    { "/", "../../foo/bar", "/foo/bar" },
-    { "/double//dash", "../../foo/bar", "/foo/bar" },
-    { "/usr/share/foo", ".././././bar", "/usr/share/bar" },
-    { "/foo/bar", "../bar/./.././bar", "/foo/bar" },
-    { "/test///dir", "../../././foo/bar", "/foo/bar" },
-    { "/test///dir", "../../././/foo///bar", "/foo/bar" },
-    { "/etc", "///triple/slash", "/triple/slash" },
-    { "/etc", "//double/slash", "//double/slash" },
-    { "///triple/slash", ".", "/triple/slash" },
-    { "//double/slash", ".", "//double/slash" },
-    { "/cwd/../with/./complexities/", "./hello", "/with/complexities/hello" },
-    { "/", ".dot-dir", "/.dot-dir" },
-    { "/cwd", "..", "/" },
-    { "/etc", "hello/..", "/etc" },
-    { "/etc", "hello/../", "/etc" },
-    { "/", "..", "/" },
-    { "/", "../", "/" },
-    { "/", "/..", "/" },
-    { "/", "/../", "/" },
-    { "/", ".", "/" },
-    { "/", "./", "/" },
-    { "/", "/.", "/" },
-    { "/", "/./", "/" },
-    { "/", "///usr/../usr", "/usr" },
-#else
-    { "/etc", "../usr/share", "\\usr\\share" },
-    { "/", "/foo/bar", "\\foo\\bar" },
-    { "/usr/bin", "../../foo/bar", "\\foo\\bar" },
-    { "/", "../../foo/bar", "\\foo\\bar" },
-    { "/double//dash", "../../foo/bar", "\\foo\\bar" },
-    { "/usr/share/foo", ".././././bar", "\\usr\\share\\bar" },
-    { "/foo/bar", "../bar/./.././bar", "\\foo\\bar" },
-    { "/test///dir", "../../././foo/bar", "\\foo\\bar" },
-    { "/test///dir", "../../././/foo///bar", "\\foo\\bar" },
-    { "/etc", "///triple/slash", "\\triple\\slash" },
-    { "/etc", "//double/slash", "//double/slash" },
-    { "///triple/slash", ".", "\\triple\\slash" },
-    { "//double/slash", ".", "//double/slash\\" },
-    { "/cwd/../with/./complexities/", "./hello", "\\with\\complexities\\hello" },
-    { "/", ".dot-dir", "/.dot-dir" },
-    { "/cwd", "..", "/" },
-    { "/etc", "hello/..", "/etc" },
-    { "/etc", "hello/../", "/etc" },
-    { "/", "..", "/" },
-    { "/", "../", "/" },
-    { "/", "/..", "/" },
-    { "/", "/../", "/" },
-    { "/", ".", "/" },
-    { "/", "./", "/" },
-    { "/", "/.", "/" },
-    { "/", "/./", "/" },
-    { "/", "///usr/../usr", "/usr" },
-
-    { "\\etc", "..\\usr\\share", "\\usr\\share" },
-    { "\\", "\\foo\\bar", "\\foo\\bar" },
-    { "\\usr\\bin", "..\\..\\foo\\bar", "\\foo\\bar" },
-    { "\\", "..\\..\\foo\\bar", "\\foo\\bar" },
-    { "\\double\\\\dash", "..\\..\\foo\\bar", "\\foo\\bar" },
-    { "\\usr\\share\\foo", "..\\.\\.\\.\\bar", "\\usr\\share\\bar" },
-    { "\\foo\\bar", "..\\bar\\.\\..\\.\\bar", "\\foo\\bar" },
-    { "\\test\\\\\\dir", "..\\..\\.\\.\\foo\\bar", "\\foo\\bar" },
-    { "\\test\\\\\\dir", "..\\..\\.\\.\\\\foo\\\\\\bar", "\\foo\\bar" },
-    { "\\etc", "\\\\\\triple\\slash", "\\triple\\slash" },
-    { "\\etc", "\\\\double\\slash", "\\\\double\\slash" },
-    { "\\\\\\triple\\slash", ".", "\\triple\\slash" },
-    { "\\\\double\\slash", ".", "\\\\double\\slash\\" },
-    { "\\cwd\\..\\with\\.\\complexities\\", ".\\hello", "\\with\\complexities\\hello" },
-    { "\\", ".dot-dir", "\\.dot-dir" },
-    { "\\cwd", "..", "\\" },
-    { "\\etc", "hello\\..", "\\etc" },
-    { "\\etc", "hello\\..\\", "\\etc" },
-    { "\\", "..", "\\" },
-    { "\\", "..\\", "\\" },
-    { "\\", "\\..", "\\" },
-    { "\\", "\\..\\", "\\" },
-    { "\\", ".", "\\" },
-    { "\\", ".\\", "\\" },
-    { "\\", "\\.", "\\" },
-    { "\\", "\\.\\", "\\" },
-    { "\\", "\\\\\\usr\\..\\usr", "\\usr" },
-#endif
-  };
-  const guint n_canonicalize_filename_checks = G_N_ELEMENTS (canonicalize_filename_checks);
-  gchar *string;
-  guint i;
-  if (g_test_verbose())
-    g_printerr ("checking g_path_get_basename()...");
-  string = g_path_get_basename (G_DIR_SEPARATOR_S "foo" G_DIR_SEPARATOR_S "dir" G_DIR_SEPARATOR_S);
-  g_assert (strcmp (string, "dir") == 0);
-  g_free (string);
-  string = g_path_get_basename (G_DIR_SEPARATOR_S "foo" G_DIR_SEPARATOR_S "file");
-  g_assert (strcmp (string, "file") == 0);
-  g_free (string);
-  if (g_test_verbose())
-    g_printerr ("ok\n");
-
-#ifdef G_OS_WIN32
-  string = g_path_get_basename ("/foo/dir/");
-  g_assert (strcmp (string, "dir") == 0);
-  g_free (string);
-  string = g_path_get_basename ("/foo/file");
-  g_assert (strcmp (string, "file") == 0);
-  g_free (string);
-#endif
-
-  if (g_test_verbose())
-    g_printerr ("checking g_path_get_dirname()...");
-  for (i = 0; i < n_dirname_checks; i++)
-    {
-      gchar *dirname = g_path_get_dirname (dirname_checks[i].filename);
-      if (strcmp (dirname, dirname_checks[i].dirname) != 0)
-       {
-         g_error ("failed for \"%s\"==\"%s\" (returned: \"%s\")",
-                  dirname_checks[i].filename,
-                  dirname_checks[i].dirname,
-                  dirname);
-       }
-      g_free (dirname);
-    }
-  if (g_test_verbose())
-    g_printerr ("ok\n");
-
-  if (g_test_verbose())
-    g_printerr ("checking g_path_skip_root()...");
-  for (i = 0; i < n_skip_root_checks; i++)
-    {
-      const gchar *skipped = g_path_skip_root (skip_root_checks[i].filename);
-      if ((skipped && !skip_root_checks[i].without_root) ||
-         (!skipped && skip_root_checks[i].without_root) ||
-         ((skipped && skip_root_checks[i].without_root) &&
-          strcmp (skipped, skip_root_checks[i].without_root)))
-       {
-         g_error ("failed for \"%s\"==\"%s\" (returned: \"%s\")",
-                  skip_root_checks[i].filename,
-                  (skip_root_checks[i].without_root ?
-                   skip_root_checks[i].without_root : "<NULL>"),
-                  (skipped ? skipped : "<NULL>"));
-       }
-    }
-  if (g_test_verbose())
-    g_printerr ("ok\n");
-
-  if (g_test_verbose ())
-    g_printerr ("checking g_canonicalize_filename()...");
-  for (i = 0; i < n_canonicalize_filename_checks; i++)
-    {
-      gchar *canonical_path = g_canonicalize_filename (canonicalize_filename_checks[i].relative_path,
-                                                       canonicalize_filename_checks[i].cwd);
-      if (g_strcmp0 (canonical_path, canonicalize_filename_checks[i].canonical_path) != 0)
-        {
-          g_error ("\nfailed for \"%s\"==\"%s\" (returned: \"%s\")\n",
-                   canonicalize_filename_checks[i].relative_path,
-                   canonicalize_filename_checks[i].canonical_path,
-                   canonical_path);
-        }
-      g_free (canonical_path);
-    }
-  if (g_test_verbose ())
-    g_printerr ("ok\n");
-
-  if (g_test_verbose ())
-    g_printerr ("checking g_canonicalize_filename() supports NULL...");
-
-  {
-    const gchar *relative_path = "./";
-    gchar *canonical_path = g_canonicalize_filename (relative_path, NULL);
-    gchar *cwd = g_get_current_dir ();
-    if (g_strcmp0 (canonical_path, cwd) != 0)
-      {
-        g_error ("\nfailed for \"%s\"==\"%s\" (returned: \"%s\")\n",
-                 relative_path, cwd, canonical_path);
-      }
-    g_free (cwd);
-    g_free (canonical_path);
-  }
-
-  if (g_test_verbose ())
-    g_printerr ("ok\n");
-}
-
-static void
-test_file_functions (void)
-{
-  const char hello[] = "Hello, World";
-  const int hellolen = sizeof (hello) - 1;
-  GError *error;
-  char template[32];
-  char *name_used, chars[62];
-  gint fd, n;
-  int errsv;
-  
-  strcpy (template, "foobar");
-  fd = g_mkstemp (template);
-  if (g_test_verbose() && fd != -1)
-    g_printerr ("g_mkstemp works even if template doesn't end in XXXXXX\n");
-  if (fd != -1)
-    close (fd);
-  strcpy (template, "fooXXXXXX");
-  fd = g_mkstemp (template);
-  if (fd == -1)
-    g_error ("g_mkstemp didn't work for template %s", template);
-  n = write (fd, hello, hellolen);
-  errsv = errno;
-  if (n == -1)
-    g_error ("write() failed: %s", g_strerror (errsv));
-  else if (n != hellolen)
-    g_error ("write() should have written %d bytes, wrote %d", hellolen, n);
-
-  lseek (fd, 0, 0);
-  n = read (fd, chars, sizeof (chars));
-  errsv = errno;
-  if (n == -1)
-    g_error ("read() failed: %s", g_strerror (errsv));
-  else if (n != hellolen)
-    g_error ("read() should have read %d bytes, got %d", hellolen, n);
-
-  chars[n] = 0;
-  if (strcmp (chars, hello) != 0)
-    g_error ("wrote '%s', but got '%s'", hello, chars);
-  if (fd != -1)
-    close (fd);
-  remove (template);
-
-  error = NULL;
-  name_used = NULL;
-  strcpy (template, "zap" G_DIR_SEPARATOR_S "barXXXXXX");
-  fd = g_file_open_tmp (template, &name_used, &error);
-  if (g_test_verbose())
-    {
-      if (fd != -1)
-        g_printerr ("g_file_open_tmp works even if template contains '%s'\n", G_DIR_SEPARATOR_S);
-      else
-        g_printerr ("g_file_open_tmp correctly returns error: %s\n", error->message);
-    }
-  if (fd != -1)
-    close (fd);
-  g_clear_error (&error);
-  g_free (name_used);
-
-#ifdef G_OS_WIN32
-  name_used = NULL;
-  strcpy (template, "zap/barXXXXXX");
-  fd = g_file_open_tmp (template, &name_used, &error);
-  if (g_test_verbose())
-    {
-      if (fd != -1)
-        g_printerr ("g_file_open_tmp works even if template contains '/'\n");
-      else
-        g_printerr ("g_file_open_tmp correctly returns error: %s\n", error->message);
-    }
-  if (fd != -1)
-    close (fd);
-  g_clear_error (&error);
-  g_free (name_used);
-#endif
-
-  strcpy (template, "zapXXXXXX");
-  name_used = NULL;
-  fd = g_file_open_tmp (template, &name_used, &error);
-  if (fd == -1)
-    g_error ("g_file_open_tmp didn't work for template '%s': %s", template, error->message);
-  else if (g_test_verbose())
-    g_printerr ("g_file_open_tmp for template '%s' used name '%s'\n", template, name_used);
-  if (fd != -1)
-    close (fd);
-  g_clear_error (&error);
-  remove (name_used);
-  g_free (name_used);
-
-  name_used = NULL;
-  fd = g_file_open_tmp (NULL, &name_used, &error);
-  if (fd == -1)
-    g_error ("g_file_open_tmp didn't work for a NULL template: %s", error->message);
-  else
-    close (fd);
-  g_clear_error (&error);
-  remove (name_used);
-  g_free (name_used);
-}
-
-static void
-test_arrays (void)
-{
-  GByteArray *gbarray;
-  GPtrArray *gparray;
-  GArray *garray;
-  guint i;
-
-  gparray = g_ptr_array_new ();
-  for (i = 0; i < 10000; i++)
-    g_ptr_array_add (gparray, GINT_TO_POINTER (i));
-  for (i = 0; i < 10000; i++)
-    if (g_ptr_array_index (gparray, i) != GINT_TO_POINTER (i))
-      g_error ("array fails: %p ( %p )", g_ptr_array_index (gparray, i), GINT_TO_POINTER (i));
-  g_ptr_array_free (gparray, TRUE);
-
-  gbarray = g_byte_array_new ();
-  for (i = 0; i < 10000; i++)
-    g_byte_array_append (gbarray, (guint8*) "abcd", 4);
-  for (i = 0; i < 10000; i++)
-    {
-      g_assert (gbarray->data[4*i] == 'a');
-      g_assert (gbarray->data[4*i+1] == 'b');
-      g_assert (gbarray->data[4*i+2] == 'c');
-      g_assert (gbarray->data[4*i+3] == 'd');
-    }
-  g_byte_array_free (gbarray, TRUE);
-
-  garray = g_array_new (FALSE, FALSE, sizeof (gint));
-  for (i = 0; i < 10000; i++)
-    g_array_append_val (garray, i);
-  for (i = 0; i < 10000; i++)
-    if (g_array_index (garray, gint, i) != (gint) i)
-      g_error ("failure: %d ( %d )", g_array_index (garray, gint, i), i);
-  g_array_free (garray, TRUE);
-
-  garray = g_array_new (FALSE, FALSE, sizeof (gint));
-  for (i = 0; i < 100; i++)
-    g_array_prepend_val (garray, i);
-  for (i = 0; i < 100; i++)
-    if (g_array_index (garray, gint, i) != (gint) (100 - i - 1))
-      g_error ("failure: %d ( %d )", g_array_index (garray, gint, i), 100 - i - 1);
-  g_array_free (garray, TRUE);
-}
-
-static void
-hash_table_tests (void)
-{
-  GHashTable *hash_table;
-  int array[10000];
-  gint *pvalue = NULL;
-  gint value = 120;
-  guint i;
-
-  hash_table = g_hash_table_new (my_hash, my_hash_equal);
-  for (i = 0; i < 10000; i++)
-    {
-      array[i] = i;
-      g_hash_table_insert (hash_table, &array[i], &array[i]);
-    }
-  pvalue = g_hash_table_find (hash_table, find_first_that, &value);
-  if (*pvalue != value)
-    g_error ("g_hash_table_find failed");
-  g_hash_table_foreach (hash_table, my_hash_callback, NULL);
-  for (i = 0; i < 10000; i++)
-    if (array[i] == 0)
-      g_error ("hashtable-test: wrong value: %d", i);
-  for (i = 0; i < 10000; i++)
-    g_hash_table_remove (hash_table, &array[i]);
-  for (i = 0; i < 10000; i++)
-    {
-      array[i] = i;
-      g_hash_table_insert (hash_table, &array[i], &array[i]);
-    }
-  if (g_hash_table_foreach_remove (hash_table, my_hash_callback_remove, NULL) != 5000 ||
-      g_hash_table_size (hash_table) != 5000)
-    g_error ("hashtable removal failed");
-  g_hash_table_foreach (hash_table, my_hash_callback_remove_test, NULL);
-  g_hash_table_destroy (hash_table);
-}
-
-static void
-relation_test (void)
-{
-  G_GNUC_BEGIN_IGNORE_DEPRECATIONS
-
-  GRelation *relation = g_relation_new (2);
-  GTuples *tuples;
-  gint data [1024];
-  guint i;
-
-  g_relation_index (relation, 0, g_int_hash, g_int_equal);
-  g_relation_index (relation, 1, g_int_hash, g_int_equal);
-
-  for (i = 0; i < 1024; i += 1)
-    data[i] = i;
-
-  for (i = 1; i < 1023; i += 1)
-    {
-      g_relation_insert (relation, data + i, data + i + 1);
-      g_relation_insert (relation, data + i, data + i - 1);
-    }
-
-  for (i = 2; i < 1022; i += 1)
-    {
-      g_assert (! g_relation_exists (relation, data + i, data + i));
-      g_assert (! g_relation_exists (relation, data + i, data + i + 2));
-      g_assert (! g_relation_exists (relation, data + i, data + i - 2));
-    }
-
-  for (i = 1; i < 1023; i += 1)
-    {
-      g_assert (g_relation_exists (relation, data + i, data + i + 1));
-      g_assert (g_relation_exists (relation, data + i, data + i - 1));
-    }
-
-  for (i = 2; i < 1022; i += 1)
-    {
-      g_assert (g_relation_count (relation, data + i, 0) == 2);
-      g_assert (g_relation_count (relation, data + i, 1) == 2);
-    }
-
-  g_assert (g_relation_count (relation, data, 0) == 0);
-
-  g_assert (g_relation_count (relation, data + 42, 0) == 2);
-  g_assert (g_relation_count (relation, data + 43, 1) == 2);
-  g_assert (g_relation_count (relation, data + 41, 1) == 2);
-  g_relation_delete (relation, data + 42, 0);
-  g_assert (g_relation_count (relation, data + 42, 0) == 0);
-  g_assert (g_relation_count (relation, data + 43, 1) == 1);
-  g_assert (g_relation_count (relation, data + 41, 1) == 1);
-
-  tuples = g_relation_select (relation, data + 200, 0);
-
-  g_assert (tuples->len == 2);
-
-#if 0
-  for (i = 0; i < tuples->len; i += 1)
-    {
-      printf ("%d %d\n",
-             *(gint*) g_tuples_index (tuples, i, 0),
-             *(gint*) g_tuples_index (tuples, i, 1));
-    }
-#endif
-
-  g_assert (g_relation_exists (relation, data + 300, data + 301));
-  g_relation_delete (relation, data + 300, 0);
-  g_assert (!g_relation_exists (relation, data + 300, data + 301));
-
-  g_tuples_destroy (tuples);
-
-  g_relation_destroy (relation);
-
-  relation = NULL;
-
-  G_GNUC_END_IGNORE_DEPRECATIONS
-}
-
-static void
-gstring_tests (void)
-{
-  GString *string1, *string2;
-  guint i;
-
-  if (g_test_verbose())
-    g_printerr ("test GString basics\n");
-
-  string1 = g_string_new ("hi pete!");
-  string2 = g_string_new ("");
-
-  g_assert (strcmp ("hi pete!", string1->str) == 0);
-
-  for (i = 0; i < 10000; i++)
-    g_string_append_c (string1, 'a'+(i%26));
-
-#ifndef G_OS_WIN32
-  /* MSVC, mingw32 and LCC use the same run-time C library, which doesn't like
-     the %10000.10000f format... */
-  g_string_printf (string2, "%s|%0100d|%s|%s|%0*d|%*.*f|%10000.10000f",
-                  "this pete guy sure is a wuss, like he's the number ",
-                  1,
-                  " wuss.  everyone agrees.\n",
-                  string1->str,
-                  10, 666, 15, 15, 666.666666666, 666.666666666);
-#else
-  g_string_printf (string2, "%s|%0100d|%s|%s|%0*d|%*.*f|%100.100f",
-                  "this pete guy sure is a wuss, like he's the number ",
-                  1,
-                  " wuss.  everyone agrees.\n",
-                  string1->str,
-                  10, 666, 15, 15, 666.666666666, 666.666666666);
-#endif
-
-  if (g_test_verbose())
-    g_printerr ("string2 length = %lu...\n", (gulong)string2->len);
-  string2->str[70] = '\0';
-  if (g_test_verbose())
-    g_printerr ("first 70 chars:\n%s\n", string2->str);
-  string2->str[141] = '\0';
-  if (g_test_verbose())
-    g_printerr ("next 70 chars:\n%s\n", string2->str+71);
-  string2->str[212] = '\0';
-  if (g_test_verbose())
-    g_printerr ("and next 70:\n%s\n", string2->str+142);
-  if (g_test_verbose())
-    g_printerr ("last 70 chars:\n%s\n", string2->str+string2->len - 70);
-
-  g_string_free (string1, TRUE);
-  g_string_free (string2, TRUE);
-
-  /* append */
-  string1 = g_string_new ("firsthalf");
-  g_string_append (string1, "lasthalf");
-  g_assert (strcmp (string1->str, "firsthalflasthalf") == 0);
-  g_string_free (string1, TRUE);
-
-  /* append_len */
-  string1 = g_string_new ("firsthalf");
-  g_string_append_len (string1, "lasthalfjunkjunk", strlen ("lasthalf"));
-  g_assert (strcmp (string1->str, "firsthalflasthalf") == 0);
-  g_string_free (string1, TRUE);
-
-  /* prepend */
-  string1 = g_string_new ("lasthalf");
-  g_string_prepend (string1, "firsthalf");
-  g_assert (strcmp (string1->str, "firsthalflasthalf") == 0);
-  g_string_free (string1, TRUE);
-
-  /* prepend_len */
-  string1 = g_string_new ("lasthalf");
-  g_string_prepend_len (string1, "firsthalfjunkjunk", strlen ("firsthalf"));
-  g_assert (strcmp (string1->str, "firsthalflasthalf") == 0);
-  g_string_free (string1, TRUE);
-
-  /* insert */
-  string1 = g_string_new ("firstlast");
-  g_string_insert (string1, 5, "middle");
-  g_assert (strcmp (string1->str, "firstmiddlelast") == 0);
-  g_string_free (string1, TRUE);
-
-  /* insert with pos == end of the string */
-  string1 = g_string_new ("firstmiddle");
-  g_string_insert (string1, strlen ("firstmiddle"), "last");
-  g_assert (strcmp (string1->str, "firstmiddlelast") == 0);
-  g_string_free (string1, TRUE);
-
-  /* insert_len */
-  string1 = g_string_new ("firstlast");
-  g_string_insert_len (string1, 5, "middlejunkjunk", strlen ("middle"));
-  g_assert (strcmp (string1->str, "firstmiddlelast") == 0);
-  g_string_free (string1, TRUE);
-
-  /* insert_len with magic -1 pos for append */
-  string1 = g_string_new ("first");
-  g_string_insert_len (string1, -1, "lastjunkjunk", strlen ("last"));
-  g_assert (strcmp (string1->str, "firstlast") == 0);
-  g_string_free (string1, TRUE);
-
-  /* insert_len with magic -1 len for strlen-the-string */
-  string1 = g_string_new ("first");
-  g_string_insert_len (string1, 5, "last", -1);
-  g_assert (strcmp (string1->str, "firstlast") == 0);
-  g_string_free (string1, TRUE);
-
-  /* g_string_equal */
-  string1 = g_string_new ("test");
-  string2 = g_string_new ("te");
-  g_assert (! g_string_equal(string1, string2));
-  g_string_append (string2, "st");
-  g_assert (g_string_equal(string1, string2));
-  g_string_free (string1, TRUE);
-  g_string_free (string2, TRUE);
-
-  /* Check handling of embedded ASCII 0 (NUL) characters in GString. */
-  if (g_test_verbose())
-    g_printerr ("test embedded ASCII 0 (NUL) characters in GString\n");
-  string1 = g_string_new ("fiddle");
-  string2 = g_string_new ("fiddle");
-  g_assert (g_string_equal(string1, string2));
-  g_string_append_c(string1, '\0');
-  g_assert (! g_string_equal(string1, string2));
-  g_string_append_c(string2, '\0');
-  g_assert (g_string_equal(string1, string2));
-  g_string_append_c(string1, 'x');
-  g_string_append_c(string2, 'y');
-  g_assert (! g_string_equal(string1, string2));
-  g_assert (string1->len == 8);
-  g_string_append(string1, "yzzy");
-  g_assert (string1->len == 12);
-  g_assert ( memcmp(string1->str, "fiddle\0xyzzy", 13) == 0);
-  g_string_insert(string1, 1, "QED");
-  g_assert ( memcmp(string1->str, "fQEDiddle\0xyzzy", 16) == 0);
-  g_string_free (string1, TRUE);
-  g_string_free (string2, TRUE);
-}
-
-static void
-various_string_tests (void)
-{
-  GStringChunk *string_chunk;
-  GTimeVal ref_date, date;
-  gchar *tmp_string = NULL, *tmp_string_2, *string, *date_str;
-  guint i;
-  const gchar *tz;
-
-  if (g_test_verbose())
-    g_printerr ("checking string chunks...");
-  string_chunk = g_string_chunk_new (1024);
-  for (i = 0; i < 100000; i ++)
-    {
-      tmp_string = g_string_chunk_insert (string_chunk, "hi pete");
-      if (strcmp ("hi pete", tmp_string) != 0)
-       g_error ("string chunks are broken.");
-    }
-  tmp_string_2 = g_string_chunk_insert_const (string_chunk, tmp_string);
-  g_assert (tmp_string_2 != tmp_string && strcmp (tmp_string_2, tmp_string) == 0);
-  tmp_string = g_string_chunk_insert_const (string_chunk, tmp_string);
-  g_assert (tmp_string_2 == tmp_string);
-  g_string_chunk_free (string_chunk);
-
-  if (g_test_verbose())
-    g_printerr ("test positional printf formats (not supported):");
-  string = g_strdup_printf ("%.*s%s", 5, "a", "b");
-  tmp_string = g_strdup_printf ("%2$*1$s", 5, "c");
-  if (g_test_verbose())
-    g_printerr ("%s%s\n", string, tmp_string);
-  g_free (tmp_string);
-  g_free (string);
-
-#define REF_INVALID1      "Wed Dec 19 17:20:20 GMT 2007"
-#define REF_INVALID2      "1980-02-22T10:36:00Zulu"
-#define REF_INVALID3      "1980-02-22T"
-#define REF_SEC_UTC       320063760
-#define REF_STR_UTC       "1980-02-22T10:36:00Z"
-#define REF_STR_LOCAL     "1980-02-22T13:36:00"
-#define REF_STR_CEST      "1980-02-22T12:36:00+02:00"
-#define REF_STR_EST       "19800222T053600-0500"
-#define REF_STR_NST       "1980-02-22T07:06:00-03:30"
-#define REF_USEC_UTC      50000
-#define REF_STR_USEC_UTC  "1980-02-22T10:36:00.050000Z"
-#define REF_STR_USEC_CEST "19800222T123600.050000000+0200"
-#define REF_STR_USEC_EST  "1980-02-22T05:36:00,05-05:00"
-#define REF_STR_USEC_NST  "19800222T070600,0500-0330"
-#define REF_STR_DATE_ONLY "1980-02-22"
-
-  if (g_test_verbose())
-    g_printerr ("checking g_time_val_from_iso8601...\n");
-  ref_date.tv_sec = REF_SEC_UTC;
-  ref_date.tv_usec = 0;
-  g_assert (g_time_val_from_iso8601 (REF_INVALID1, &date) == FALSE);
-  g_assert (g_time_val_from_iso8601 (REF_INVALID2, &date) == FALSE);
-  g_assert (g_time_val_from_iso8601 (REF_INVALID3, &date) == FALSE);
-  g_assert (g_time_val_from_iso8601 (REF_STR_DATE_ONLY, &date) == FALSE);
-  g_assert (g_time_val_from_iso8601 (REF_STR_UTC, &date) != FALSE);
-  if (g_test_verbose())
-    g_printerr ("\t=> UTC stamp = %ld.%06ld (should be: %ld.%06ld) (%ld.%06ld off)\n",
-             date.tv_sec, date.tv_usec, ref_date.tv_sec, ref_date.tv_usec,
-             date.tv_sec - ref_date.tv_sec, date.tv_usec - ref_date.tv_usec);
-  g_assert (date.tv_sec == ref_date.tv_sec && date.tv_usec == ref_date.tv_usec);
-
-  /* predefine time zone */
-  tz = g_getenv("TZ");
-  g_setenv("TZ", "UTC-03:00", 1);
-  tzset();
-
-  g_assert (g_time_val_from_iso8601 (REF_STR_LOCAL, &date) != FALSE);
-  if (g_test_verbose())
-    g_printerr ("\t=> LOCAL stamp = %ld.%06ld (should be: %ld.%06ld) (%ld.%06ld off)\n",
-             date.tv_sec, date.tv_usec, ref_date.tv_sec, ref_date.tv_usec,
-             date.tv_sec - ref_date.tv_sec, date.tv_usec - ref_date.tv_usec);
-  g_assert (date.tv_sec == ref_date.tv_sec && date.tv_usec == ref_date.tv_usec);
-
-  /* revert back user defined time zone */
-  if (tz)
-    g_setenv("TZ", tz, TRUE);
-  else
-    g_unsetenv("TZ");
-  tzset();
-
-  g_assert (g_time_val_from_iso8601 (REF_STR_CEST, &date) != FALSE);
-  if (g_test_verbose())
-    g_printerr ("\t=> CEST stamp = %ld.%06ld (should be: %ld.%06ld) (%ld.%06ld off)\n",
-             date.tv_sec, date.tv_usec, ref_date.tv_sec, ref_date.tv_usec,
-             date.tv_sec - ref_date.tv_sec, date.tv_usec - ref_date.tv_usec);
-  g_assert (date.tv_sec == ref_date.tv_sec && date.tv_usec == ref_date.tv_usec);
-
-  g_assert (g_time_val_from_iso8601 (REF_STR_EST, &date) != FALSE);
-  if (g_test_verbose())
-    g_printerr ("\t=> EST stamp = %ld.%06ld (should be: %ld.%06ld) (%ld.%06ld off)\n",
-             date.tv_sec, date.tv_usec, ref_date.tv_sec, ref_date.tv_usec,
-             date.tv_sec - ref_date.tv_sec, date.tv_usec - ref_date.tv_usec);
-  g_assert (date.tv_sec == ref_date.tv_sec && date.tv_usec == ref_date.tv_usec);
-
-  g_assert (g_time_val_from_iso8601 (REF_STR_NST, &date) != FALSE);
-  if (g_test_verbose())
-    g_printerr ("\t=> NST stamp = %ld.%06ld (should be: %ld.%06ld) (%ld.%06ld off)\n",
-             date.tv_sec, date.tv_usec, ref_date.tv_sec, ref_date.tv_usec,
-             date.tv_sec - ref_date.tv_sec, date.tv_usec - ref_date.tv_usec);
-  g_assert (date.tv_sec == ref_date.tv_sec && date.tv_usec == ref_date.tv_usec);
-
-  ref_date.tv_usec = REF_USEC_UTC;
-  g_assert (g_time_val_from_iso8601 (REF_STR_USEC_UTC, &date) != FALSE);
-  if (g_test_verbose())
-    g_printerr ("\t=> UTC stamp = %ld.%06ld (should be: %ld.%06ld) (%ld.%06ld off)\n",
-             date.tv_sec, date.tv_usec, ref_date.tv_sec, ref_date.tv_usec,
-             date.tv_sec - ref_date.tv_sec, date.tv_usec - ref_date.tv_usec);
-  g_assert (date.tv_sec == ref_date.tv_sec && date.tv_usec == ref_date.tv_usec);
-
-  g_assert (g_time_val_from_iso8601 (REF_STR_USEC_CEST, &date) != FALSE);
-  if (g_test_verbose())
-    g_printerr ("\t=> CEST stamp = %ld.%06ld (should be: %ld.%06ld) (%ld.%06ld off)\n",
-             date.tv_sec, date.tv_usec, ref_date.tv_sec, ref_date.tv_usec,
-             date.tv_sec - ref_date.tv_sec, date.tv_usec - ref_date.tv_usec);
-  g_assert (date.tv_sec == ref_date.tv_sec && date.tv_usec == ref_date.tv_usec);
-
-  g_assert (g_time_val_from_iso8601 (REF_STR_USEC_EST, &date) != FALSE);
-  if (g_test_verbose())
-    g_printerr ("\t=> EST stamp = %ld.%06ld (should be: %ld.%06ld) (%ld.%06ld off)\n",
-             date.tv_sec, date.tv_usec, ref_date.tv_sec, ref_date.tv_usec,
-             date.tv_sec - ref_date.tv_sec, date.tv_usec - ref_date.tv_usec);
-  g_assert (date.tv_sec == ref_date.tv_sec && date.tv_usec == ref_date.tv_usec);
-
-  g_assert (g_time_val_from_iso8601 (REF_STR_USEC_NST, &date) != FALSE);
-  if (g_test_verbose())
-    g_printerr ("\t=> NST stamp = %ld.%06ld (should be: %ld.%06ld) (%ld.%06ld off)\n",
-             date.tv_sec, date.tv_usec, ref_date.tv_sec, ref_date.tv_usec,
-             date.tv_sec - ref_date.tv_sec, date.tv_usec - ref_date.tv_usec);
-  g_assert (date.tv_sec == ref_date.tv_sec && date.tv_usec == ref_date.tv_usec);
-
-  if (g_test_verbose())
-    g_printerr ("checking g_time_val_to_iso8601...\n");
-  ref_date.tv_sec = REF_SEC_UTC;
-  ref_date.tv_usec = 0;
-  date_str = g_time_val_to_iso8601 (&ref_date);
-  g_assert (date_str != NULL);
-  if (g_test_verbose())
-    g_printerr ("\t=> date string = %s (should be: %s)\n", date_str, REF_STR_UTC);
-  g_assert (strcmp (date_str, REF_STR_UTC) == 0);
-  g_free (date_str);
-
-  ref_date.tv_usec = REF_USEC_UTC;
-  date_str = g_time_val_to_iso8601 (&ref_date);
-  g_assert (date_str != NULL);
-  if (g_test_verbose())
-    g_printerr ("\t=> date string = %s (should be: %s)\n", date_str, REF_STR_USEC_UTC);
-  g_assert (strcmp (date_str, REF_STR_USEC_UTC) == 0);
-  g_free (date_str);
-
-  if (g_test_verbose())
-    g_printerr ("checking g_ascii_strcasecmp...");
-  g_assert (g_ascii_strcasecmp ("FroboZZ", "frobozz") == 0);
-  g_assert (g_ascii_strcasecmp ("frobozz", "frobozz") == 0);
-  g_assert (g_ascii_strcasecmp ("frobozz", "FROBOZZ") == 0);
-  g_assert (g_ascii_strcasecmp ("FROBOZZ", "froboz") > 0);
-  g_assert (g_ascii_strcasecmp ("", "") == 0);
-  g_assert (g_ascii_strcasecmp ("!#%&/()", "!#%&/()") == 0);
-  g_assert (g_ascii_strcasecmp ("a", "b") < 0);
-  g_assert (g_ascii_strcasecmp ("a", "B") < 0);
-  g_assert (g_ascii_strcasecmp ("A", "b") < 0);
-  g_assert (g_ascii_strcasecmp ("A", "B") < 0);
-  g_assert (g_ascii_strcasecmp ("b", "a") > 0);
-  g_assert (g_ascii_strcasecmp ("b", "A") > 0);
-  g_assert (g_ascii_strcasecmp ("B", "a") > 0);
-  g_assert (g_ascii_strcasecmp ("B", "A") > 0);
-
-  if (g_test_verbose())
-    g_printerr ("checking g_strdup...\n");
-  g_assert (g_strdup (NULL) == NULL);
-  string = g_strdup (GLIB_TEST_STRING);
-  g_assert (string != NULL);
-  g_assert (strcmp(string, GLIB_TEST_STRING) == 0);
-  g_free (string);
-
-  if (g_test_verbose())
-    g_printerr ("checking g_strconcat...\n");
-  string = g_strconcat (GLIB_TEST_STRING, NULL);
-  g_assert (string != NULL);
-  g_assert (strcmp (string, GLIB_TEST_STRING) == 0);
-  g_free (string);
-  string = g_strconcat (GLIB_TEST_STRING, GLIB_TEST_STRING, 
-                        GLIB_TEST_STRING, NULL);
-  g_assert (string != NULL);
-  g_assert (strcmp (string, GLIB_TEST_STRING GLIB_TEST_STRING
-                    GLIB_TEST_STRING) == 0);
-  g_free (string);
-
-  if (g_test_verbose())
-    g_printerr ("checking g_strlcpy/g_strlcat...");
-  /* The following is a torture test for strlcpy/strlcat, with lots of
-   * checking; normal users wouldn't use them this way!
-   */
-  string = g_malloc (6);
-  *(string + 5) = 'Z'; /* guard value, shouldn't change during test */
-  *string = 'q';
-  g_assert (g_strlcpy(string, "" , 5) == 0);
-  g_assert ( *string == '\0' );
-  *string = 'q';
-  g_assert (g_strlcpy(string, "abc" , 5) == 3);
-  g_assert ( *(string + 3) == '\0' );
-  g_assert (g_str_equal(string, "abc"));
-  g_assert (g_strlcpy(string, "abcd" , 5) == 4);
-  g_assert ( *(string + 4) == '\0' );
-  g_assert ( *(string + 5) == 'Z' );
-  g_assert (g_str_equal(string, "abcd"));
-  g_assert (g_strlcpy(string, "abcde" , 5) == 5);
-  g_assert ( *(string + 4) == '\0' );
-  g_assert ( *(string + 5) == 'Z' );
-  g_assert (g_str_equal(string, "abcd"));
-  g_assert (g_strlcpy(string, "abcdef" , 5) == 6);
-  g_assert ( *(string + 4) == '\0' );
-  g_assert ( *(string + 5) == 'Z' );
-  g_assert (g_str_equal(string, "abcd"));
-  *string = 'Y';
-  *(string + 1)= '\0';
-  g_assert (g_strlcpy(string, "Hello" , 0) == 5);
-  g_assert (*string == 'Y');
-  *string = '\0';
-  g_assert (g_strlcat(string, "123" , 5) == 3);
-  g_assert ( *(string + 3) == '\0' );
-  g_assert (g_str_equal(string, "123"));
-  g_assert (g_strlcat(string, "" , 5) == 3);
-  g_assert ( *(string + 3) == '\0' );
-  g_assert (g_str_equal(string, "123"));
-  g_assert (g_strlcat(string, "4", 5) == 4);
-  g_assert (g_str_equal(string, "1234"));
-  g_assert (g_strlcat(string, "5", 5) == 5);
-  g_assert ( *(string + 4) == '\0' );
-  g_assert (g_str_equal(string, "1234"));
-  g_assert ( *(string + 5) == 'Z' );
-  *string = 'Y';
-  *(string + 1)= '\0';
-  g_assert (g_strlcat(string, "123" , 0) == 3);
-  g_assert (*string == 'Y');
-
-  /* A few more tests, demonstrating more "normal" use  */
-  g_assert (g_strlcpy(string, "hi", 5) == 2);
-  g_assert (g_str_equal(string, "hi"));
-  g_assert (g_strlcat(string, "t", 5) == 3);
-  g_assert (g_str_equal(string, "hit"));
-  g_free(string);
-
-  if (g_test_verbose())
-    g_printerr ("checking g_strdup_printf...\n");
-  string = g_strdup_printf ("%05d %-5s", 21, "test");
-  g_assert (string != NULL);
-  g_assert (strcmp(string, "00021 test ") == 0);
-  g_free (string);
-
-  /* g_debug (argv[0]); */
-}
-
-static void
-test_mem_chunks (void)
-{
-  G_GNUC_BEGIN_IGNORE_DEPRECATIONS
-
-  GMemChunk *mem_chunk = g_mem_chunk_new ("test mem chunk", 50, 100, G_ALLOC_AND_FREE);
-  gchar *mem[10000];
-  guint i;
-  for (i = 0; i < 10000; i++)
-    {
-      guint j;
-      mem[i] = g_chunk_new (gchar, mem_chunk);
-      for (j = 0; j < 50; j++)
-       mem[i][j] = i * j;
-    }
-  for (i = 0; i < 10000; i++)
-    g_mem_chunk_free (mem_chunk, mem[i]);
-
-  g_mem_chunk_destroy (mem_chunk);
-
-  G_GNUC_END_IGNORE_DEPRECATIONS
-}
-
-int
-main (int   argc,
-      char *argv[])
-{
-  g_test_init (&argc, &argv, NULL);
-
-  g_test_add_func ("/testglib/Infos", test_info);
-  g_test_add_func ("/testglib/Types Sizes", type_sizes);
-  g_test_add_func ("/testglib/GStrings", gstring_tests);
-  g_test_add_func ("/testglib/Various Strings", various_string_tests);
-  g_test_add_func ("/testglib/GList", glist_test);
-  g_test_add_func ("/testglib/GSList", gslist_test);
-  g_test_add_func ("/testglib/GNode", gnode_test);
-  g_test_add_func ("/testglib/GTree", binary_tree_test);
-  g_test_add_func ("/testglib/Arrays", test_arrays);
-  g_test_add_func ("/testglib/GHashTable", hash_table_tests);
-  g_test_add_func ("/testglib/Relation (deprecated)", relation_test);
-  g_test_add_func ("/testglib/File Paths", test_paths);
-  g_test_add_func ("/testglib/File Functions", test_file_functions);
-  g_test_add_func ("/testglib/Parse Debug Strings", test_g_parse_debug_string);
-  g_test_add_func ("/testglib/GMemChunk (deprecated)", test_mem_chunks);
-  g_test_add_func ("/testglib/Warnings & Errors", log_warning_error_tests);
-  g_test_add_func ("/testglib/Warnings (rate limited)", log_warning_rate_limited_tests);
-  g_test_add_func ("/testglib/Timers (slow)", timer_tests);
-
-  return g_test_run();
-}
diff --git a/tests/unicode-caseconv.c b/tests/unicode-caseconv.c
deleted file mode 100644 (file)
index c124633..0000000
+++ /dev/null
@@ -1,131 +0,0 @@
-#undef G_DISABLE_ASSERT
-#undef G_LOG_DOMAIN
-
-#include <locale.h>
-#include <stdlib.h>
-#include <stdio.h>
-#include <glib.h>
-#include <string.h>
-
-int main (int argc, char **argv)
-{
-  FILE *infile;
-  char buffer[1024];
-  char **strings;
-  char *filename;
-  const char *locale;
-  const char *test;
-  const char *expected;
-  char *convert;
-  char *current_locale = setlocale (LC_CTYPE, NULL);
-  gint result = 0;
-
-  g_test_init (&argc, &argv, NULL);
-
-  filename = g_test_build_filename (G_TEST_DIST, "casemap.txt", NULL);
-
-  infile = fopen (filename, "r");
-  if (!infile)
-    {
-      fprintf (stderr, "Failed to open %s\n", filename );
-      exit (1);
-    }
-  
-  while (fgets (buffer, sizeof(buffer), infile))
-    {
-      if (buffer[0] == '#')
-       continue;
-
-      strings = g_strsplit (buffer, "\t", -1);
-
-      locale = strings[0];
-
-      if (!locale[0])
-       locale = "C";
-       
-      if (strcmp (locale, current_locale) != 0)
-       {
-         setlocale (LC_CTYPE, locale);
-         current_locale = setlocale (LC_CTYPE, NULL);
-
-         if (strncmp (current_locale, locale, 2) != 0)
-           {
-             fprintf (stderr, "Cannot set locale to %s, skipping\n", locale);
-             goto next;
-           }
-       }
-      
-      test = strings[1];
-
-      /* gen-casemap-txt.py uses an empty string when a single character
-       * doesn't have an equivalent in a particular case; since that behavior
-       * is nonsense for multicharacter strings, it would make more sense
-       * to put the expected result .. the original character unchanged. But 
-       * for now, we just work around it here and take the empty string to mean
-       * "same as original"
-       */
-
-      convert = g_utf8_strup (test, -1);
-      expected = strings[4][0] ? strings[4] : test;
-      if (strcmp (convert, expected) != 0)
-       {
-         fprintf (stderr, "Failure: toupper(%s) == %s, should have been %s\n",
-                  test, convert, expected);
-         result = 1;
-       }
-      g_free (convert);
-
-      convert = g_utf8_strdown (test, -1);
-      expected = strings[2][0] ? strings[2] : test;
-      if (strcmp (convert, expected) != 0)
-       {
-         fprintf (stderr, "Failure: tolower(%s) == %s, should have been %s\n",
-                  test, convert, expected);
-         result = 1;
-       }
-      g_free (convert);
-
-    next:
-      g_strfreev (strings);
-    }
-
-  fclose (infile);
-
-  g_free (filename);
-  filename = g_test_build_filename (G_TEST_DIST, "casefold.txt", NULL);
-  
-  infile = fopen (filename, "r");
-  if (!infile)
-    {
-      fprintf (stderr, "Failed to open %s\n", filename );
-      g_free (filename);
-      exit (1);
-    }
-  
-  while (fgets (buffer, sizeof(buffer), infile))
-    {
-      if (buffer[0] == '#')
-       continue;
-
-      buffer[strlen(buffer) - 1] = '\0';
-      strings = g_strsplit (buffer, "\t", -1);
-
-      test = strings[0];
-
-      convert = g_utf8_casefold (test, -1);
-      if (strcmp (convert, strings[1]) != 0)
-       {
-         fprintf (stderr, "Failure: casefold(%s) == '%s', should have been '%s'\n",
-                  test, convert, strings[1]);
-         result = 1;
-       }
-      g_free (convert);
-
-      g_strfreev (strings);
-    }
-
-  fclose (infile);
-  g_free (filename);
-
-  return result;
-}
diff --git a/tests/unicode-collate.c b/tests/unicode-collate.c
deleted file mode 100644 (file)
index 8de3f60..0000000
+++ /dev/null
@@ -1,124 +0,0 @@
-#undef G_DISABLE_ASSERT
-#undef G_LOG_DOMAIN
-
-#include <glib.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <locale.h>
-
-typedef struct {
-  const char *key;
-  const char *str;
-} Line;
-  
-
-static int 
-compare_collate (const void *a, const void *b)
-{
-  const Line *line_a = a;
-  const Line *line_b = b;
-
-  return g_utf8_collate (line_a->str, line_b->str);
-}
-
-static int 
-compare_key (const void *a, const void *b)
-{
-  const Line *line_a = a;
-  const Line *line_b = b;
-
-  return strcmp (line_a->key, line_b->key);
-}
-
-int main (int argc, char **argv)
-{
-  GIOChannel *in;
-  GError *error = NULL;
-  GArray *line_array = g_array_new (FALSE, FALSE, sizeof(Line));
-  guint i;
-  gboolean do_key = FALSE;
-  gboolean do_file = FALSE;
-  gchar *locale;
-
-  /* FIXME: need to modify environment here,
-   * since g_utf8_collate_key calls setlocal (LC_COLLATE, "")
-   */
-  g_setenv ("LC_ALL", "en_US", TRUE);
-  locale = setlocale (LC_ALL, "");
-  if (locale == NULL || strcmp (locale, "en_US") != 0)
-    {
-      fprintf (stderr, "No suitable locale, skipping test\n"); 
-      return 2;
-    }
-
-  if (argc != 1 && argc != 2 && argc != 3)
-    {
-      fprintf (stderr, "Usage: unicode-collate [--key|--file] [FILE]\n");
-      return 1;
-    }
-
-  i = 1;
-  if (argc > 1)
-    {
-      if (strcmp (argv[1], "--key") == 0)
-        {
-          do_key = TRUE;
-         i = 2;
-        }
-      else if (strcmp (argv[1], "--file") == 0)
-        {
-          do_key = TRUE;
-          do_file = TRUE;
-         i = 2;
-        }
-    }
-
-  if (argc > (gint) i)
-    {
-      in = g_io_channel_new_file (argv[i], "r", &error);
-      if (!in)
-       {
-         fprintf (stderr, "Cannot open %s: %s\n", argv[i], error->message);
-         return 1;
-       }
-    }
-  else
-    {
-      in = g_io_channel_unix_new (fileno (stdin));
-    }
-
-  while (TRUE)
-    {
-      gsize term_pos;
-      gchar *str;
-      Line line;
-
-      if (g_io_channel_read_line (in, &str, NULL, &term_pos, &error) != G_IO_STATUS_NORMAL)
-       break;
-
-      str[term_pos] = '\0';
-
-      if (do_file)
-       line.key = g_utf8_collate_key_for_filename (str, -1);
-      else
-       line.key = g_utf8_collate_key (str, -1);
-      line.str = str;
-
-      g_array_append_val (line_array, line);
-    }
-
-  if (error)
-    {
-      fprintf (stderr, "Error reading test file, %s\n", error->message);
-      return 1;
-    }
-
-  qsort (line_array->data, line_array->len, sizeof (Line), do_key ? compare_key : compare_collate);
-  for (i = 0; i < line_array->len; i++)
-    printf ("%s\n", g_array_index (line_array, Line, i).str);
-
-  g_io_channel_unref (in);
-
-  return 0;
-}